导语:用AutoHotKey写的凭证窃取器恶意软件,伪装为KASPERSKY反病毒软件,通过感染USB设备传播。
攻击者在不断地寻找新的方式来在Windows系统上执行文件。其中一个技巧将是使用AutoIT或者AutoHotKey。比如,AutoHotKey (AHK)允许用户在写入与Windows交互的代码,从Windows中读取代码,发送键盘中断消息给其他应用。AHK还允许用户创建含有原来代码的编译过的exe文件。
所以对黑客来说,AHK是一个很好的工具,可以用来写一些简单高效的证书窃取工具。研究人员发现了伪装为Kaspersky反病毒软件的用AHK编写的密码窃取器,并通过感染USB驱动传播。研究人员将其命名为Fauxpersky。
研究人员在用户环境中发现了4个释放的文件。每个文件都与Windows系统文件类似:
用户环境中的可疑文件
EXPLORERS.EXE:自复制和驻留
AHK keylogger直接使用自复制的方法来传播。在刚开始执行之后,keylogger会收集机器上的驱动列表,然后开始自复制。下面是具体的过程。
收集可移除的驱动
重命名
复制文件来可移除驱动
这可以让keylogger从主机传播到任意外联的设备。如果keylogger自复制到外部驱动,将会重命名驱动来匹配命名方案。比如,如果一个8GB的USB设备驱动叫做Pendrive,当自复制完成后就会匹配命名方案。USB驱动的新名字叫会变成Pendrive 8GB(Secured by Kaspersky Internet Security 2017)。这是一个在野的IOC。
恶意软件还会创建一个指向下面内容的batch脚本的autorun.inf文件。
start /d ".\System Volume In表单ation\Kaspersky Internet Security 2017" taskhosts.exe
恶意软件的EXPLORERS.EXE组件使用的驻留方法分析
在explorers.exe中含有一个CheckRPath()函数,keylogger可以用该函数来创建explorers.exe文件。这些文件是根据传递的路径用FileSetAttrib() AHK函数来设定属性S(system)和H(hidden)。Keylogger会用传递RSH,Read-Only, system, hidden参数同样的方法来创建必要的目录。在打破代码区块后,将可以知道这个过程是怎么完成的。
在创建组件文件(HideRFiles())进程后,研究人员首先开始一个loop。Loop会让keylogger以结构化的方式去重复地将不同的输出文件写入硬盘中。可以看到每个盘会创建开启时的链接,文本文件和批处理文件。一旦文件存在,传给函数的值递增来允许创建的目录整体迁移。这是一种基本的方式来确保当整个目录迁移到另一个文件下时,所有的文件都迁移过去了。
这4个文件中目录Kaspersky Internet Security 2017中。除了可执行文件后,还有两个不是可执行文件。一个是叫做logo.png的图片:
另一个是含有下面指令的readme.txt文件。
如果不能正确得加载文件或文件夹,请关闭反病毒软件。
受感染的设备登录进Windows后在屏幕上显示logo.png等,这会欺骗用户认为Kaspersky已经安装和运行了。Readme.txt文件中的说明是一个与Kaspersky Internet Security 2017不兼容的安全产品列表,该列表中包含Kaspersky Internet Security。
这些文件是64位的Windows PE文件,用IDA Pro来检查该文件发现这些文件几乎是相同的。通过检查mutex创建路径可以发现一些相同点。
explorers.exe中的引用的CreateMutexW()
svhost.exe中的引用的CreateMutexW()
创建的mutex叫做“AHK Keybd”,Google搜索结果显示这是标准的AHK编译文件,真实的AHK语言代码是在每个PE的资源区的RCDATA资源中。
为了提取exe文件中的AHK代码,研究人员写了一个叫做ahk-dumper的工具,该工具可以将PE中的RCDATA资源按照标准输出打印。PE文件的作用:
分析AHK代码的关键部分
SVHOST.EXE – KEYLOGGING:
文件中的代码非常简单。Svhost.exe文件监控当前活动窗口,通过AHK WinGetActiveTitle() 函数和AHK input() 函数,input()函数监控用户的输入。每个keystroke加入到log.txt文件中,而Log.txt文件会保存在%APPDATA%\Kaspersky Internet Security 2017文件夹中。
Keylogged的数据形式如下:
TASKHOST.EXE:驻留
这段代码负责处理驻留。第一步是改变恶意软件的CWD为%APPDATA%,然后创建硬编码的目录Kaspersky Internet Security 2017。
该文件还有一个路径,CheckLCore检查文件是否已在%APPDATA%中创建:
如果文件没有被拷贝,恶意软件会用FileCopy()函数拷贝文件,随后用 FileSetAttrib() 函数设定文件属性。第一个传递的参数是“+RSH”, 意思是Readonly只读、System系统、和Hidden隐藏。
SPOOLSVC.EXE:数据泄露,看门狗和驻留
Spoolsvc内部有很多的路径可以通过注册表改变Hidden和SuperHidden文件的属性:
如图所示,恶意软件会改变注册表路径HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced registry path中的2个key:
· Hidden – 该值会被改变成2,意思是让系统不要显示隐藏文件。
· SuperHidden – 该值会被改为0,系统会隐藏系统文件。
注册表的值被修改后,恶意软件会检查explorers.exe文件是否运行。如果没有运行就执行它。看门狗的作用是确保恶意软件的驻留执行。
CheckLProcess()负责检查恶意软件的所有组件的执行。如果没有,调用Run() AHK函数和Loop/Parsecall将可以执行。
为了获取驻留,恶意软件会在开始菜单的启动目录下创建自己的快捷方式。
该文件的另一个部分是log.txt文件中的keylogged的数据泄漏到Google表单。
下面是攻击流图:
泄漏数据到Google表单是一种非常简单和聪明的方式来克服数据泄漏中的一些逻辑。用这种技术意味着没有必要去维护一个匿名的C&C服务器,因为到docs.google.com的数据是加密的,而且在传统的流量监控解决方案中也不会怀疑。
Google 表单被用于数据泄漏
数据是通过文件中下面的代码块来提交给表单的。该文件会被读入缓存中然后从磁盘中删除。缓存会被发送给Google表单。
结论
该恶意软件并不高级,甚至不静默。开发者甚至没有改变文件中AHK的图标。但是恶意软件在感染USB设备,从keylogger中收集数据,通过Google表单泄漏数据并将泄漏的数据存储到攻击者的收件箱中。截止目前,感染的设备数量还不清楚。
缓解措施
研究人员联系了Google团队并报告了恶意表单事件。如果有用户感染了该恶意软件,那么首先回到%appdata%\Roaming\目录下,然后移除Kaspersky Internet Security 2017\ 目录,还需要删除开始菜单中的相关文件。