Security 内联运行简短的asm脚本进行动态分析
有什么好的理由不直接在我的笔记本电脑上运行usermode c程序内联的未知(30行)汇编脚本进行动态分析吗 只有一个对time的系统调用,此时我可以看出它是一个函数,它接受一个c字符串和它的长度,并在循环中对它执行某种加密,只要length参数告诉它,它就只遍历字符串 我知道这个脚本(应该是)来自一段恶意代码,但就我的一生而言,我想不出任何方法可以阻止我的计算机出现某种硬件错误(这似乎不太可能,因为循环大约有7条指令长,整个脚本中最奇怪的指令是shr)Security 内联运行简短的asm脚本进行动态分析,security,assembly,x86,reverse-engineering,malware,Security,Assembly,X86,Reverse Engineering,Malware,有什么好的理由不直接在我的笔记本电脑上运行usermode c程序内联的未知(30行)汇编脚本进行动态分析吗 只有一个对time的系统调用,此时我可以看出它是一个函数,它接受一个c字符串和它的长度,并在循环中对它执行某种加密,只要length参数告诉它,它就只遍历字符串 我知道这个脚本(应该是)来自一段恶意代码,但就我的一生而言,我想不出任何方法可以阻止我的计算机出现某种硬件错误(这似乎不太可能,因为循环大约有7条指令长,整个脚本中最奇怪的指令是shr) 我知道直接在金属上运行一段未知的汇编代码
我知道直接在金属上运行一段未知的汇编代码听起来很糟糕,但考虑到目前为止我的分析,我想不出有什么办法可以让它咬我或逃脱。您可以使用它轻松地模拟CPU(如果支持该体系结构),并在没有任何风险的情况下使用外壳代码。是的,你可以,但我不推荐。
问题不在于这次代码有多危险(假设您真的理解所有代码,并且可以预测任何系统调用的结果),问题在于这是一个滑坡,考虑到风险,不值得这么做 我已经做了很多恶意软件分析,很少有一段代码让我措手不及,但它确实发生了。
幸运的是,我在一个隔离网络中的虚拟机上工作:我刚刚恢复了最后一个快照,并更仔细地处理了代码。
如果你在你真正的机器上做这个分析,你可能会养成这个习惯,总有一天它会反过来咬你。
使用虚拟机虽然不如使用操作系统本机GUI那么舒适,但这是一条可行之路 运行7行汇编代码段会出现什么问题?
我不知道,这取决于代码,但有几件事需要注意:
我认为这不值得
出于普遍性的考虑,我不得不提出这个前提,但我们都犯了一些罪,不是吗?
我从来没有在我的机器上运行过恶意软件,但我已经通过直接连接到公司网络上的虚拟机运行过一些。
这是一次有控制的行动,没有发生任何事情,有能力的人员得到了建议,这是一个圆满的结局。
这很可能就是你的情况:它可能只是一个解密算法,而不是别的。
但是,只有您才有最终责任判断是否可以运行该段代码。
正如我在上面所说的,一般来说,这不是一个好主意,它假定您真正理解代码(这是一件很难做到并且很诚实的事情)。
如果你认为这些先决条件都满足了,那就去做吧 在此之前,我会:
subst
一个文件夹并将恶意软件放在那里,以便虚拟路径遍历在该文件夹中停止,这可能会有所帮助
难道没有更好的解决方案吗?
我喜欢将虚拟机用于快照功能,尽管您可能会遇到反虚拟机检查(但它们实际上是愚蠢的检查,因此很容易跳过它们) 对于7行程序集,我只需将其重写为JS函数,并直接在浏览器控制台中运行它。
您只需转换变量中的每个寄存器并转录代码,无需全局理解,只需局部理解(即每条指令)。
如果您不需要处理64位的数量,那么JS非常方便,因为您面前有一个解释器:)
或者,我使用我手头的任何编程语言(有一次甚至自行组装,这似乎很矛盾,但由于一个卑鄙的伎俩,我不得不将64位代码转换为32位代码,并用它修补恶意软件)