April 26, 2022

Sandboxs Tricks

虽然沙盒已经听了很多次了,这还是第一次了解,这篇文章主要记录,加快逆向工程的沙盒技巧

一:沙盒是什么,它是怎么工作的

当一个二进制文件打包后,还进行了加密,我们并不是很容易的对此进行调试或者反汇编

但有一个奇妙的点,就是API调用

  1. 每次想与windows进行交互的Malware,它都需要通过一组API!

  2. 不管怎么样,想创建文件或者网络流量,都必须经过API!

  3. 而在沙盒里可以监控这所有的API并把它打包到一个容器,然后报告沙盒流量等

整个二进制的代码,我们并不关心,关心的是所调用的API所干的所有操作,再整理发送报告,这就是沙盒!

开源沙盒cuckoo

image-20220426114557539

沙盒的DLL或钩子注入到了Malware的进程空间去,设置钩子,检测操作等

当然Malware也会有一些反检测的东西,钩子加DLL是沙盒大部分的操作,其他的都是些报告细节等

每当Malware调用这些API时,沙盒就会截取信息,然后再继续传给系统让Malware继续操作

image-20220426115619876

二:沙盒的样品报告

一个简单创建文件的操作,丢进HYBRIO的样品报告

点Input Simples,可以出现很详细的报告和所有操作

image-20220426121231345

三:加快在IDA中的逆向工程

在创建一个文件时,会调用

  1. kernel32的CreateFileW
  2. 而在kernel32内部还要调用NtCreateFile

而Ntdll创建文件已经是用户在进入内核前最底层的调用了

所以在Ntdll上创建一个钩子,可以钩住所有文件的调用,而钩子挂高了些就会要钩一堆dll

在调用CreateFile,第一个参数是我们的文件名

image-20220426122021624

在NtCreateFile中我们关心的是对象属性,ObjectAttributes

image-20220426121633305

什么是对象属性?

image-20220426122418334

现在通过IDA来查找NtCreateFile的细节!

目前还不知道这个功能干嘛,好像是让界面更全面一点

image-20220426123848212

然后在moudles里打开Ntdll,再搜索CreateFile

image-20220426123935183

再首地址下个断点,直接可以跳过去,根据函数原型,我们可以看堆栈可以得知第三个就是对象属性

image-20220426124039970

跳到指定地址后,可以找到我们的ObjectName,再跳过去看结构体

image-20220426124151469

前两个是我们的short长度,第三个就是我们的文件路径了

image-20220426124225230

这就是沙箱识别二进制文件的方式!(好饿好饿,吃午餐去了–4.26 AM:12:59

DASCTF X SU
🍬
HFCTF2022
🍪

About this Post

This post is written by P.Z, licensed under CC BY-NC 4.0.