进程注入分析实战——通过process explorer可以看到lab12-01.dll在运行时加载了, 要查看dll被哪个进程所使用,可以在process explorer里搜索!

 要查看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函数,有点可疑的字符串

image-20211022165320118

这里看到了导入表没有的LoadLibraryA函数,这里大概率是个DLL注入

  1. 在你运行恶意代码时,发生了什么?

    无限弹窗:一关掉就弹出来,无穷无尽

    image-20211023154332075

  2. 哪个进程会被注入?

    explorer.exe进程会被注入

    image-20211023161705616

    静态分析:exe程序首先动态获取几个函数地址:

    image-20211023161749171

    然后进入for循环进行遍历获取到的进程句柄:

    image-20211023161818028

    这里对每个进程句柄都调用了一下sub_401000函数:这个函数的功能是打开进程遍历模块看有没有名字是explorer.exe的模块在,如果有就返回1,然后主程序就会打开进程,跳出循环进入下一步:

    image-20211023161951601

    经典的DLL注入流程

  3. 你如何能够让恶意代码停止弹出窗口?

    重启该进程即可,重启电脑也行。

  4. 这个恶意代码样本时如何工作的?

    dllmain函数里直接创建了线程:

    image-20211023162527429

    线程里是个死循环:不断执行弹窗函数

    image-20211023162540021

 

posted @ 2022-04-07 18:05  bonelee  阅读(906)  评论(0编辑  收藏  举报