【微步在线报告】Metaploit的payload特征
获取函数地址
Windows系统下采用的方式是PEB寻址原理,Linux下是采用SysCall 系统调用号,这里阐释Windows的方式。
在NT内核系统中fs寄存器指向TEB结构,TEB+0x30处指向PEB结构,PEB+0x0c处指向PEB_LDR_DATA结构,PEB_LDR_DATA结构中包含本程序调用的dll链表,遍历链表,逐个遍历dll导出表的函数名称,算出其hash,对比传入的hash相等即获取到函数地址。
常见的函数Hash
Dll名称 | 函数名称 | Hash | 二进制(小尾) |
---|---|---|---|
kernel32.dll | LoadLibraryA | 0726774C | 4C 77 26 07 |
Virtualalloc | E553A458 | 58 A4 53 E5 | |
Sleep | E035F044 | 44 F0 35 E0 | |
VirtualFree | 300F2F0B | C2 DB 37 67 | |
CreateFileA | 4FDAF6DA | DA F6 DA 4F | |
ReadFile | BB5F9EAD | AD 9E 5F BB | |
InternetOpenA | A779563A | 3A 56 79 A7 | |
InternetConnectA | C69F8957 | 57 89 9F C6 | |
wininet.dll | HttpOpenRequestA | 3B2E55EB | EB 55 2E 3B |
HttpSendRequestA | 7B18062D | 2D 06 18 7B | |
InternetReadFile | E2899612 | 12 96 89 E2 | |
InternetSetOptionA | 869E4675 | 75 46 9E 86 | |
crypt32.dll | CertGetCertificateContextProperty | C3A96E2D | 2D 6E A9 C3 |
ws2_32 | WSAStartup | 006B8029 | 29 80 6B 00 |
WSASocketA | E0DF0FEA | EA 0F DF E0 | |
connect | 6174A599 | 99 A5 74 61 | |
recv | 5FC8D902 | 02 D9 C8 5F | |
bind | 6737DBC2 | C2 DB 37 67 | |
closesocket | 614D6E75 | 75 6E 4D 61 | |
send | 5F38EBC2 | C2 EB 38 5F | |
gethostbyname | 803428A9 | A9 28 34 80 | |
winhttp.dll | WinHttpOpen | BB9D1F04 | 04 1F 9D BB |
WinHttpConnect | C21E9B46 | 46 9B 1E C2 | |
WinHttpOpenRequest | 5BB31098 | 98 10 B3 5B | |
WinHttpSendRequest | 91BB5895 | 95 58 BB 91 | |
WinHttpGetIEProxyConfigForCurrentUser | 600BA721 | 21 A7 0B 60 | |
WinHttpReadData | 7E24296C | 6C 29 24 7E | |
WinHttpSetCredentials | CEA829DD | DD 29 A8 CE | |
WinHttpQueryOption | 272F0478 | 78 04 2F 27 | |
WinHttpReceiveResponse | 709D8805 | 05 88 9D 70 | |
WinHttpGetProxyForUrl | 49EADDDA | DA DD EA 49 | |
WinHttpSetOption | CE9D58D3 | D3 58 9D CE |