抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

ShellCode加载器

进程镂空(傀儡进程)

进程镂空(Process Hollowing), 又称傀儡进程, 是一种恶意软件(malware)利用的代码注入技术。它主要用于恶意代码注入到合法进程中, 以规避安全检测、提高恶意代码执行的隐蔽性和稳定性;

Shellcode原理及编写

基于对Windows TEB/PEB的分析, 可以做一些免杀中的应用

TEB

TEB(Thread Environment Block), 线程环境变量块, TEB中包含了线程的堆栈指针、TLS(线程本地存储)指针、异常处理链表指针、用户模式分页表指针等信息。TEB中fs寄存器通常被设置为fs:[0](32位), 指向当前线程的的TEB结构体。其他线程可以通过访问自己的TEB结构体来获取自己的状态和信息。

PEB

PEB(Process Environment Block), 进程环境变量块, PEB中包含了进程的代码、数据段指针、进程的环境变量、进程启动参数信息以及加载的dll信息等。PEB结构体中的fs段寄存器通常被设置为0x30(32位), 指向当前进程的PEB结构体。

IAT Hook

  • IMAGE_IMPORT_DESCRIPTOR中两个IMAGE_THUNK_DATA结构体,第一个位导入名称表(INT),第二个位导入地址表(IAT)。两个结构在磁盘文件中时是没有差别的,但是当PE文件被装载到内存中后,FirstThunk字段指向的IMAGE_THUNK_DATA的值会被Windows进行填充。该值为一个RVA,该RVA加上映像基址后,虚拟地址就保存了真正的导入函数的入口地址
  • IAT Hook步骤
    1. 获取欲Hook的函数地址
    2. 找到该函数的所保存的IAT地址
    3. 把IAT中该函数的地址修改为Hook函数的地址

Inline Hook(内联钩子注入)流程

  1. 构造跳转指令[JMP后的偏移量 = 目标地址 - 原地址 - jcc的指令长度]
  2. 在内存中找到欲HOOK函数地址,并保存欲HOOK位置处的前5个字节
  3. 将构造的跳转指令写入需HOOK的位置处
  4. 当被HOOK位置被执行时会转到自己的流程执行
  5. 如果要执行原来的流程,取消HOOK,还原被修改的字节
  6. 执行原来的流程
  7. 继续HOOK住原来的位置

  • 远程线程注入是指一个进程在另一个进程中创建线程的技术。是一种病毒木马所青睐的注入技术。