onHacks
在 “谁在入侵我的系统?” 裡,我讲述了如何用 Nmap 地简单检测出一个蜜罐,在上一篇亦简单的交待了,
为甚麽检测方法能检测出蜜罐呢?
首先,问自己:
如何分辩人和电脑?
图片文字 (CAPTCHA) 的答桉是:让目标去认出一些文字。若能认出,大概是人,否则就是电脑。其中的概念为电脑不能有效地认出图篇中的文字。
抽像少许,我们要求目标去做一些人类能轻易做到的事,但电脑则不能。利用这点,若果过关了,就是人类,否则不是。
CAPTCHA 可以用来分辩电脑和人类。那麽怎样分辩出真的服务和模拟服务?
同理,技术层面上,模拟服务和真的服务有不同之处,这不同之处正是用来区分两者的要诀。利用这一点,就能分辩出两者了。
以一个实际例子说明吧。有些人很喜欢问:
如何分析一段不在虚拟机运行的恶意代码?我的 VMware 不行,难道要用实体机?
等等!但它会在 VirtualBox 裡运行!Eh?
去找一个 SdBot 。它们大多数有 能测出虚拟机 的能力,至使在虚拟机中不会运行。你在 VMware 裡头试试下,是 VMware,检测虚机和蜜罐方法的概念》(https://www.unjs.com)。之后,用 VirtualBox 再试试。不过,我已测过了,信我的结果的话,能可以省省时间看下去了。
所以,他们问错问题了!应该问:
为甚麽 SdBot 能区分虚拟机和实体机?
它能够做到是因为在技术性层面上,虚拟机和实体机有不同之处。这是和真的服务和虚拟服务同出一辙的。当我说的技术性层面的不同之处,就是说实现方法不同。
准确来说,SdBot 能在 VirtualBox 但不能在 VMware 裡运行意味着 SdBot 是能检测 VMware,但并不是防所有虚拟机的。
看看:
同一个动作,VMware 可能会使用寄存器 (register) 但实体机不会。
VMware 有一个 dhcpd 来分派 IP 给虚拟机,这是实体机大多数没有的。
有些处理器命令 VMware 没有支持。
和之前讲述的一样道理。
所以,所谓的不会在虚拟机运行的恶意代码,正确来说是不在某种虚拟机下运行而已。在其他没能检测出的虚拟机 (VirtualBox, Xen, etc) 等就会运行了。当然,那检测方法可能一次过能检测出多种虚拟机。
总结就是,如果要在虚拟机下运行 SdBot 的话,你不用用实体机这麽麻烦,只要找出一个不被检出的环境或关掉它的检测方法就好了。这就是箇中道理了,这亦是如何检测出其他蜜罐的概念。努力找蜜罐吧!