ChatGPT编写Todesk溯源自动化脚本

VSole2023-04-03 09:10:26

前言

在攻防演练中,通常会出现溯源反制的场景,我们这里假设已经连上了黑客的服务器,并且发现黑客的电脑中使用 了ToDesk的远程桌面软件,如果你自己的电脑中也安装了ToDesk,可以看到在ToDesk目录下会有一个config.ini文件

该文件中记录了很多有趣的信息,其中包含


downloadtimes 下载Todesk的时间updatePassTime 最近一次使用时间Version Todesk版本号clientid 客户端IDLoginPhone 手机号LoginEmail 邮箱账户

使用ChatGPT编写自动化脚本

Python脚本

我们可以使用ChatGPT,帮助我们提取上述关键信息

然后看看ChatGPT的杰作吧

ToDesk.py代码如下:

# -*- coding: utf-8 -*-import configparser
config_file = "C:/Program Files/ToDesk/config.ini"
config = configparser.ConfigParser()config.read(config_file)
# 提取需要的配置项download_times = config.get("ConfigInfo", "downloadtimes")version = config.get("ConfigInfo", "Version")client_id = config.get("ConfigInfo", "clientId")temp_auth_pass_ex = config.get("ConfigInfo", "tempAuthPassEx")resolution = config.get("ConfigInfo", "Resolution")update_pass_time = config.get("ConfigInfo", "updatePassTime")private_data = config.get("ConfigInfo", "PrivateData")login_phone = config.get("ConfigInfo", "LoginPhone")login_email = config.get("ConfigInfo", "LoginEmail")
# 输出结果print("*********** Todesk溯源小助手 ***********")print(f"电子邮件账户:{login_email}")print(f"手机号:{login_phone}")print(f"下载时间:{download_times}")print(f"最近一次使用ToDesk时间:{update_pass_time}")print(f"当前屏幕尺寸:{resolution}")print(f"Todesk版本号:{version}")print(f"客户端ID:{client_id}")print(f"私密数据:{private_data}")print(f"临时认证密钥:{temp_auth_pass_ex}")print("*********** 公众号:猪猪安全 ***********")


运行效果如下

bat脚本

Todesk.bat代码如下:

@echo off
set "config_file=C:\Program Files\ToDesk\config.ini"
for /f "tokens=1,2 delims==" %%a in ('findstr /i /c:"downloadtimes=" /c:"Version=" /c:"clientId=" /c:"tempAuthPassEx=" /c:"Resolution=" /c:"updatePassTime=" /c:"PrivateData=" /c:"LoginPhone=" /c:"LoginEmail=" "%config_file%"') do (    if "%%a" == "downloadtimes" set "download_times=%%b"    if "%%a" == "Version" set "version=%%b"    if "%%a" == "clientId" set "client_id=%%b"    if "%%a" == "tempAuthPassEx" set "temp_auth_pass_ex=%%b"    if "%%a" == "Resolution" set "resolution=%%b"    if "%%a" == "updatePassTime" set "update_pass_time=%%b"    if "%%a" == "PrivateData" set "private_data=%%b"    if "%%a" == "LoginPhone" set "login_phone=%%b"    if "%%a" == "LoginEmail" set "login_email=%%b")
echo *********** Todesk溯源小助手 ***********echo 电子邮件账户:%login_email%echo 手机号:%login_phone%echo 下载时间:%download_times%echo 最近一次使用ToDesk时间:%update_pass_time%echo 当前屏幕尺寸:%resolution%echo Todesk版本号:%version%echo 客户端ID:%client_id%echo 私密数据:%private_data%echo 临时认证密钥:%temp_auth_pass_ex%echo *********** 公众号:猪猪安全 ***********
pause


在cmd中运行或者直接打开都可以

优化代码

但是上面的代码,我们可以发现一个问题,那就是config.ini文件路径是写死的,那如果不是在系统默认C盘路径下,则代码无法进行自动化收集相关资料,因此,我们需要进一步优化,添加搜索的功能,在搜索到之后在进行自动化信息收集。

Python代码

我们继续询问ChatGPT

我们这里粘贴完整的代码

ToDesk.py

# -*- coding: utf-8 -*-import osimport configparser
target_filename = 'config.ini'target_strings = ['ToDesk']
# 定义需要搜索的盘符drive_letters = ['C', 'D', 'E', 'F', 'G']
for drive_letter in drive_letters:    drive_path = f"{drive_letter}:\\"    for dirpath, dirnames, filenames in os.walk(drive_path):        if target_filename in filenames and all(s in dirpath for s in target_strings):            config_path = os.path.join(dirpath, target_filename)            # 找到 config.ini 文件            print(f"找到配置文件:{config_path}")
            # 使用 ConfigParser 解析配置文件            config = configparser.ConfigParser()            config.read(config_path)
            # 提取相关信息            download_times = config.get('ConfigInfo', 'downloadtimes')            version = config.get('ConfigInfo', 'Version')            client_id = config.get('ConfigInfo', 'clientId')            temp_auth_pass = config.get('ConfigInfo', 'tempAuthPassEx')            resolution = config.get('ConfigInfo', 'Resolution')            update_pass_time = config.get('ConfigInfo', 'updatePassTime')            private_data = config.get('ConfigInfo', 'PrivateData')            login_phone = config.get('ConfigInfo', 'LoginPhone')            login_email = config.get('ConfigInfo', 'LoginEmail')
            # 输出提取的信息            print("*********** Todesk溯源小助手 ***********")            print(f"电子邮件账户:{login_email}")            print(f"手机号:{login_phone}")            print(f"下载时间:{download_times}")            print(f"最近一次使用ToDesk时间:{update_pass_time}")            print(f"当前屏幕尺寸:{resolution}")            print(f"Todesk版本号:{version}")            print(f"客户端ID:{client_id}")            print(f"私密数据:{private_data}")            print(f"临时认证密钥:{temp_auth_pass}")            print("*********** 公众号:猪猪安全 ***********")
            # 找到配置文件后退出搜索            quit()


可以发现已经自动搜索配置文件的路径,并且在搜索到配置文件后再进行提取!

bat代码

ToDesk.bat

@echo offsetlocal EnableDelayedExpansion
set SEARCH_DRIVE=C D E F Gset SEARCH_PATH=Program Files
set VERSION=set CLIENT_ID=set AUTH_PASS=set RESOLUTION=set UPDATE_TIME=set PRIVATE_DATA=set EMAIL=set PHONE=set DOWNLOAD_TIME=
set "INI_FILE=config.ini"
echo Searching for ToDesk configuration file...
for %%d in (%SEARCH_DRIVE%) do (    for /f "tokens=*" %%p in ('dir /s /b "%%d:\%SEARCH_PATH%" 2^>nul ^| findstr /i /c:"ToDesk"') do (        if exist "%%p\%INI_FILE%" (            echo Found ToDesk configuration file at: "%%p\%INI_FILE%"
            set "CONFIG_FILE=%%p\%INI_FILE%"
            for /f "tokens=1* delims==" %%i in ('type "!CONFIG_FILE!" ^| findstr /i /c:"version="') do set "VERSION=%%j"            for /f "tokens=1* delims==" %%i in ('type "!CONFIG_FILE!" ^| findstr /i /c:"clientId="') do set "CLIENT_ID=%%j"            for /f "tokens=1* delims==" %%i in ('type "!CONFIG_FILE!" ^| findstr /i /c:"tempAuthPassEx="') do set "AUTH_PASS=%%j"            for /f "tokens=1* delims==" %%i in ('type "!CONFIG_FILE!" ^| findstr /i /c:"Resolution="') do set "RESOLUTION=%%j"            for /f "tokens=1* delims==" %%i in ('type "!CONFIG_FILE!" ^| findstr /i /c:"updatePassTime="') do set "UPDATE_TIME=%%j"            for /f "tokens=1* delims==" %%i in ('type "!CONFIG_FILE!" ^| findstr /i /c:"PrivateData="') do set "PRIVATE_DATA=%%j"            for /f "tokens=1* delims==" %%i in ('type "!CONFIG_FILE!" ^| findstr /i /c:"LoginEmail="') do set "EMAIL=%%j"            for /f "tokens=1* delims==" %%i in ('type "!CONFIG_FILE!" ^| findstr /i /c:"LoginPhone="') do set "PHONE=%%j"            for /f "tokens=1* delims==" %%i in ('type "!CONFIG_FILE!" ^| findstr /i /c:"downloadtimes="') do set "DOWNLOAD_TIME=%%j"
            goto :info_found        )    ))
echo ToDesk configuration file not found.goto :end
:info_foundecho.echo *********** Todesk溯源小助手 ***********echo 电子邮件账户:%EMAIL%echo 手机号:%PHONE%echo 下载时间:%DOWNLOAD_TIME%echo 最近一次使用ToDesk时间:%UPDATE_TIME%echo 当前屏幕尺寸:%RESOLUTION%echo Todesk版本号:%VERSION%echo 客户端ID:%CLIENT_ID%echo 私密数据:%PRIVATE_DATA%echo 临时认证密钥:%AUTH_PASS%echo *********** 公众号:猪猪安全 ***********
pause

config
本作品采用《CC 协议》,转载必须注明作者和本文链接
漏洞信息`Apache Commons Configuration` 执行变量插值,允许动态评估和扩展属性。从 `2.4` 版开始到 `2.7` 版,默认的 `Lookup` 实例集包括可能导致任意代码执行或与远程服务器联系的插值器。
raspi-config是一个用户空间工具,它允许我们配置树莓派的各个方面,其中之一是启用各种外部接口。我们将使用raspi-config来启用UART接口,首先启动工具,如下所示: sudo raspi-config 这将导致出现以下结果:
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,主要作用就是给内部网或网络服务供应商自动分配IP地址。当一个客户端需要获取一个IP地址时,将会向DHCP服务器发送广播包,收到请求的服务器会提供一个可用的IP地址给客户端,所以可以监听该协议的包。本文介绍实施DHCP被动扫描的方法。
前言最近注意到了Apache Commons Configuration 在2.7版本已经不安全了,能够直接影响该组件,来分析学一下漏洞原理漏洞分析前置Commons Configuration是一个java应用程序的配置管理类库。可以从properties或者xml文件中加载软件的配置信息,用来构建支撑软件运行的基础环境。在一些配置文件较多较的复杂的情况下,使用该配置工具比较可以简化配置文件的解析和管理。也提高了开发效率和软件的可维护性。同样可以使用这种变量插值影响范围2.4 ~ 2.7漏洞首先引入Commons-Configuration的依赖
在DHCP Client和DHCP Server之间建立一道防火墙,以抵御网络中针对DHCP的各种攻击。DHCP Client将无法获取正确的IP地址和相关信息,导致合法客户无法正常访问网络或信息安全受到严重威胁。将与合法DHCP服务器直接或间接连接的接口设置为信任接口,其他接口设置为非信任接口。
0X00 原理原理就是,读取本地微信文件夹中的config目录下的AccInfo.dat文件AccInfo.dat文件内容如下图这个Dat文件中包含了手机号,微信ID,微信号,昵称和城市,绑定邮箱等信息0X01?福州,龙岩,南平,宁德,莆田,泉州,三明,厦门,漳州。白山,白城,长春,吉林,辽源,四平,松原,通化。抚州,赣州,景德镇,九江,吉安,南昌,萍乡,上饶,新余,鹰潭,宜春。鞍山,本溪,朝阳,大连,丹东,抚顺,阜新,葫芦岛,锦州,辽阳,盘锦(PanJi
DHCP于1993年10月成为标准协议,其前身是BOOTP协议。DHCP使网络管理员能从中心结点监控和分配IP地址。当某台计算机移到网络中的其它位置时,能自动收到新的IP地址。
Apache Solr发布公告,修复了ConfigSet API中存在的未授权上传漏洞风险,该漏洞被利用可导致RCE(远程代码执行)。
Todesk在安装目录下会生成一个config.ini配置文件,存储的有设备代码、临时密码、安全密码以及登录用户和密码等重要敏感信息,但密码都经过Todesk特有的加密算法加密,所以不能通过解密得到明文密码,只需要去替换这个配置文件,然后重启服务即可。
VSole
网络安全专家