CS-exe木马分析
2023-2-4 18:1:28 Author: 看雪学苑(查看原文) 阅读量:16 收藏


本文为看雪论坛优秀文章

看雪论坛作者ID:pyikaaaa

Cobalt Strike是渗透测试工具,可以通过exe木马实现远程控制。


生成exe

Windows Executable 生成可执行exe木马;payload分段。

Windows Executable(S) 生成无状态的可执行exe木马,payload不分段。


分析Windows Executable 生成的artifact.exe

查壳:无壳

具体分析

401840关键函数:获取系统时间戳,通过sprintf拼接管道名,创建线程,写加密数据到创建的管道内,最后解密执行。

线程函数:

[

跟进线程函数,创建命名管道,将加密数据写进管道内。

加密的数据:

加密数据crypt_data1写入管道内

读取管道内的数据,解密数据,跳转执行。

decodeandcall:解密数据,修改内存属性,跳转执行。

用于解密的数组:

申请的内存地址20000。

跳转到eax:20000执行shellcode。

shellcode分析:

1.loadlibrary加载wininet.dll

InternetOpen函数:在进行HTTP、FTP和服务器通信前初始化 WinInet.dll 。简单的说通过 InternetOpen 函数创建位于根部的 Hinternet 句柄。

InternetConnect 连接:192.168.99.8

HttpOpenRequestA 创建 HTTP 请求句柄。

HttpSendRequestA发送HTTP请求到指定的服务器。

virtualalloc 申请内存:

不断internetreadfile 读数据到申请的内存。

读到的数据:

读完数据后继续跟。

跳转到申请的内存处,解密出dll。

解密出的pe文件。

后面继续跟就是反射dll注入。

7CB2+7为 ReflectiveLoader函数的偏移,call ebx调用ReflectiveLoader函数反射注入dll,压入参数call eax 调用dllmain。

dec ebp             ; Mpop edx             ; Zcall 0              ; 将下一条指令地址压到栈里pop ebx             ; 将压到栈里的地址弹到ebxpush edx            ;inc ebp             ;push ebp            ; 保存ebpmov ebp, esp        ; 切换堆栈add ebx,0x???       ; ebx+ReflectiveLoader函数偏移-7(ebx相起始偏移7)call ebx            ; call ReflectiveLoader

看雪ID:pyikaaaa

https://bbs.kanxue.com/user-home-921642.htm

*本文由看雪论坛 pyikaaaa 原创,转载请注明来自看雪社区

# 往期推荐

1.CVE-2022-21882提权漏洞学习笔记

2.wibu证书 - 初探

3.win10 1909逆向之APIC中断和实验

4.EMET下EAF机制分析以及模拟实现

5.sql注入学习分享

6.V8 Array.prototype.concat函数出现过的issues和他们的POC们

球分享

球点赞

球在看

点击“阅读原文”,了解更多!


文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458493899&idx=1&sn=d0eaba9b79817afa05d81b743d847e1d&chksm=b18e934186f91a57e784da6765c80488411bb52e9670b2a9b5bc85c1c2bd70334c29e952f679#rd
如有侵权请联系:admin#unsafe.sh