要查看dll被哪个进程所使用,可以在process explorer里搜索!
这个技巧在分析恶意DLL加载时候非常有用!!!
笔记
可以通过process explorer查看进程注入的dll,比如注入后可以看到lab12-01.dll在注入的运行进程里。
启动器 Launcher
用来加载恶意代码使用,通常在资源中包含一个exe或dll,在运行的时候,把PE文件从资源中取出来,然后执行,常见API:FindResource、LoadResource、SizeOfResource等
恶意代码启动器通常需要管理员权限运行,或提权来得到权限,恶意代码启动器可能会包含一些提权代码
进程注入 Process Injector
把恶意代码注入到别的进程中去执行,常用API:VirtualAllocEx,WriteProcessMemory函数等 ==》如果可以反编译,那么可以看这些API的使用!
- DLL注入:写一个DLL加载到目标进程中会自动执行dllmain函数
- 代码注入:注入shellcode
进程替换 Puppet process
创建一个合法进程,然后在其内存空间写入恶意程序,最后通过SetThreadContext函数来让入口点指向恶意代码进行执行,也叫傀儡进程
Hook注入 Hook Injector
使用SetWindowsHookEx来设置消息Hook
APC注入 APC Injector
每个线程都有一个附加的APC队列,在线程处于可警告状态的时候被处理,在这个状态的时候会一次调用APC队列中的所有函数,可通过编写代码用APC抢占可警告状态的线程
用户模式的APC使用API:QueueUserAPC,一般会注入目标进程的所有线程,以确保APC很快会被执行
内核模式的APC使用API:KeInitializeAPC,KeInsertQueueApc,一般来注入用户层shellcode到用户空间去执行
作业
Lab 12-1
分析目标:Lab12-01.exe,Lab12-01.dll
查看程序:无壳,导入表导入了CreateRemoteThread函数,有点可疑的字符串:
这里看到了导入表没有的LoadLibraryA函数,这里大概率是个DLL注入
- 在你运行恶意代码时,发生了什么?
无限弹窗:一关掉就弹出来,无穷无尽 - 哪个进程会被注入?
explorer.exe进程会被注入:
静态分析:exe程序首先动态获取几个函数地址:
然后进入for循环进行遍历获取到的进程句柄:
这里对每个进程句柄都调用了一下sub_401000函数:这个函数的功能是打开进程遍历模块看有没有名字是explorer.exe的模块在,如果有就返回1,然后主程序就会打开进程,跳出循环进入下一步:
经典的DLL注入流程 - 你如何能够让恶意代码停止弹出窗口?
重启该进程即可,重启电脑也行。 - 这个恶意代码样本时如何工作的?
dllmain函数里直接创建了线程:
线程里是个死循环:不断执行弹窗函数