另类的"免杀"绕过-远程工具
2023-10-18 14:32:41 Author: mp.weixin.qq.com(查看原文) 阅读量:15 收藏

STATEMENT

声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

前言

每当进入内网,面对一堆杀软拦截自闭,各种木马、CS无法上线的情况下,我们可以考虑一些运维远程工具,例如todesk、向日葵、TeamViewer等远程工具直接远程被控主机桌面,实现手动杀软下线。

在内网环境下,大体上我们会碰到两种情况:

 1、本身存在远控软件

  • 覆盖目标主机原配置,但需要重启软件才行

  • 不修改原配置,使用原密码(需要能破解加密的验证码)

  • 不修改原配置。在本机安装同软件,将目标配置文件覆盖到本机配置文件进行读取。

2、本身没有远控软件,自行上传免安装绿色版远控软件实现免杀绕过

以及在选取工具通常需要考虑的几个点:

  • 远控工具本身是否会触发杀毒软件告警

  • 普通用户是否可以运行软件

  • 是否可以后台静默运行,不被发现

  • 是否正常免安装,直接运行

  • 是否支持内网

以下列举几个不错的运维工具利用手法

AnyDesk

基本描述

优势:无需安装,上传exe和配置文件即可远程控制。

缺点:运行时候会弹窗

下载地址:https://anydesk.com/

连接方式:被控端和控制端为同一个

连接密码获取情况:自行上传连接密码配置文件

利用过程

在本地打开anydesk,首页就是连接的id号(记住这串id)

为了隐藏连接身份建议在设置项中-隐私-用户名称,设置为自定义的账号,避免连接时泄露自己的地址。同时可以配置一下设置-安全,添加一个连接密码。

设置完相关信息退出后,退出的时候选择不安装anydesk,其配置文件会保存在 %appdata%\AnyDesk也就是 C:\Users\用户名\AppData\Roaming\AnyDesk

将这四个配置文件和AnyDesk.exe打包上传到目标主机的 C:\Users\用户名\AppData\Roaming\AnyDesk 目录下就可以远程控制了。

需要注意的是传上去之后一定要把这四个配置文件在本机删掉,因为只有这样Anydesk才会重新分配一个新的ID给到本机,必须与原ID不一样才可以连接目标机器。

GoToHTTP

基本描述

优势:使用B2C模式,流量走的是HTTP协议,只要目标开放443端口出口就可以进行通信。(通过浏览器访问控制)。

缺点:不支持纯内网使用,一些行为(网络唤醒远程主机)需要加载驱动,会被360拦截,会记录连接的IP地址。

下载地址:http://gotohttp.com/goto/download.12x

连接方式:

网页端 http://gotohttp.com/goto/download.12x

连接密码获取情况:运行exe在目录下就会生成密码连接配置文件

利用过程

上传GotoHTTP_x64.exe并运行。

运行界面

会在其目录下生成一个gotohttp.ini文件

其连接密码和保存在gotohttp.ini文件中

网页端远程连接

RustDesk

基本描述

优势:开源工具,支持通过IP访问(纯内网环境),内网IP点对点访问,普通用户也可以运行。

缺点:会有360拦截,不过默认是允许操作,需要等30s。

下载地址:https://rustdesk.com/zh/(portable版本免安装)

连接方式:控制端和被控制端为同一个应用

连接方式:运行程序后会在 C:\Users\用户名\AppData\Roaming\RustDesk\目录下生成配置文件

利用过程:

将exe上传至被控主机

运行后会在 C:\Users\用户名\AppData\Roaming\RustDesk\目录下生成配置文件

PS:可能是RustDesk出于安全考虑,在第一次运行后,配置文件不会保存密码(需要点击眼睛查看过密码才会保存)。因此需要我们自己修改配置文件,修改文件,password字段自定义一个密码即可。

先结束RustDesk.exe进程。通过 tasklist|findstr rust 获取进程。杀死进程 taskkill/pid xxx-f 。修改配置文件内容,自己设置一个password值。

重新启动RustDesk.exe,连接成功。

rustDesk默认不支持IP直接访问

如果想要内网纯IP连接,需要修改 RustDesk2.toml文件内容,添加配置 direct-server='Y'

通过IP+端口的地址形式连接(默认端口21118)如果需要修改端口,添加配置 direct-access-port='8443' 部分场景下的被控端防火墙会做入站规则的端口限制。

如果是默认端口直接输入IP,如果是自定义端口输入IP:PORT格式,然后输入密码即可远控。

但测试过程发现连不上,使用nmap检查端口结果是filtered,应该是被防火墙拦了

因为是个人实验,直接上虚拟机查看防火墙出入站情况,发现确实是拦截规则了

执行exe网络访问默认会被windows防火墙拦截

如果不允许,防火墙的入站规则默认禁止,这时候因为不联网的问题(纯内网环境下),RustDesk就无法远程连接(当然我们也不可能让它允许访问)

问一下chatGPT童鞋

换个提问,看来提示词才是关键啊

知道了方法再来重新走一轮

先命令行执行rustdesk-1.1.9.exe。这时候被控主机启动rustdesk,并询问是否允许网络访问,无法选择允许,默认入站规则里rustdesk-1.1.9.exe被禁止。

查看当前服务器策略(默认是以程序名字命名)

netsh advfirewall firewall show rule name=rustdesk-1.1.9.exe

这里可以使用多种方案:

方案一:将当前的规则改为允许

netsh advfirewall firewall set rule name="rustdesk-1.1.9.exe" new action=allow

方案二:添加一条新规则,其设置模式为允许替换(覆盖其他两条规则)

netsh advfirewall firewall add rule name="xxxxxxx" dir=in action=allow program="xxxxpath” replace=yes (替换字段改为是,这时候测试过程发现实际上配置生效不会被大小写影响)

方案三:直接删除当前的禁止规则,重新添加一条允许规则

netsh advfirewall firewall delete rule name="xxx”

不知道为啥windows的防火墙规则有点bug,对大小写敏感,稍微错了个字符不易发现,同时当windows已存在完全相同的规则时,会创建重复规则。可能导致规则重复匹配并产生意外的行为。因此在不影响其服务器正常运行的情况下优先选择 1=3>2,推荐直接方案一了,不过使用修改防火墙配置的权限至少要管理员用户了,如果碰到普通用户的权限还是有局限性的。

这里使用案例一,将规则改为允许

通过IP连接成功,当前为纯内网环境,无互联网连接

Todesk

基本描述

优势:运维常用工具,经常能碰到一些被控主机已经安装了

缺点:如果是没安装,安装过程会有弹窗显示,需要管理员权限运行,

下载地址:

  • 全功能版(最新版需登录):https://dl.todesk.com/irrigation/ToDesk_4.7.0.2.exe

  • 全功能版(无需登录):https://dl.todesk.com/irrigation/ToDesk_4.3.2.1.exe

  • 精简版(无需安装):https://dl.todesk.com/windows/ToDesk_Lite.exe

连接方式:建议使用全功能版-无需登录版本进行发起连接,使用精简版(无需安装)版本上传被控主机

读取配置文件config.ini,其内容clientld=设备代码 tempAuthPassEx=临时密码

配置文件:

C:/ProgramData/ToDesk_Lite/

C:/Users/用户名/AppData/Local/ToDesk_Lite/

C:/Program Files/ToDesk/config.ini

或安装目录

配置文件:C:/ProgramData/ToDesk_Lite/C:/Users/用户名/AppData/Local/ToDesk_Lite/C:/Program Files/ToDesk/config.ini或安装目录

利用过程

连接遇到被控主机已经安装todesk的场景还是挺多的,因此对于todesk这类分利用场景说:

(1)场景一:未安装todesk

官方提供了两种版本的todesk:全功能版(ToDesk_4.x.x.1.exe)和精简版(ToDesk_Lite.exe)

1、精简版

精简版是免安装直接命令行 ToDesk_Lite.exe 运行即可,运行后效果如下

其生成的配置文件在C:/ProgramData/ToDesk_Lite/ 和 C:/Users/用户名/AppData/Local/ToDesk_Lite/ 目录下

这时候我们需要获取其设备代码和临时密码,其存储在C:/ProgramData/ToDesk_Lite/config.ini

clientld=设备代码 tempAuthPassEx=临时密码

但临时密码是加密的,对于加密的密码可以将其复制到本地的todesk配置文件里,替换我们本地todesk的密码,然后重新打开todesk,这时我们可以发现临时密码就是被控机器的密码了

进行连接,可以成功连接。不过这里发现了个问题:连接后会有连接弹窗,有连接人的手机号和设备代码

同时这两个日志下也会记录我们自己的设备ID号

对于隐藏手机号方法:

查了一下发现todesk从4.3.3.0版本开始要求注册后才能远程别人,对于需要免登录的可以下载4.3.2.1版本。https://dl.todesk.com/irrigation/ToDesk_4.3.2.1.exe。但对于隐藏或者修改设备ID的方法没找到,如果有大佬了解,求教教。

2、全功能版

执行 Todesk_setup.exe/S 加参数(注意是大写S)进行静默安装。虽然是安装成功,不过还是会有弹窗显示,容易被发现。

对于全功能版,可以通过命令行形式设置安全密码 Todesk.exe-setpasswd123456

安装后的todesk文件路径 C:/Program Files/ToDesk/ToDesk.exe

配置文件 C:/Program Files/ToDesk/config.ini

通过读取配置文件也可以获取设备代码(clientid)和临时密码,跟精简版获取方式一样。

PS:可能会出现安装成功但无法设置安全密码的问题,或者读出来的密码不是正常的6位,可以先kill掉ToDesk_Service.exe进程,再修改被控主机的config文件内容,将我们本地的连接配置替换过去,重新todesk进行连接

(2)场景二:已安装todesk

利用手法一:获取连接密码信息

这种情况下,直接找todesk的安装目录,并查看其config.ini配置信息即可。配置中的密码默认是加密的无法直接获取。设备代码是明文,临时密码是加密过的,不需要直接去破解(利用手法与上面提到的一样)。通过-status可以获取todesk信息

利用手法二:获取历史连接记录

除了远控主机,还可以看看有没有被控主机有没有远控过其他设备,当安全设置中-设置了保存历史连接密码,每次连接后会将身份保存在文件中(Todesk安装目录下的 userInfo.json文件)

虽然密码是加密的。只需要将被控主机的该文件内容覆盖我们自己本地的配置文件即可配置文件内容案例:

{   "UserInfo" : [      {         "AutoFrameRateState" : 0,         "BandWidth" : 0,         "Cam_Bright" : -1,         "Cam_Height" : 0,         "Cam_Quality" : 0,         "Cam_Voice" : 0,         "Cam_Width" : 0,         "Clipboard" : 1,         "CurPathList" : null,         "DecodeType" : 0,         "EncodeFormat" : 0,         "EncodeType" : 0,         "Fps" : 0,         "HD" : 1,         "Height" : 824,         "LastLocalPath" : "",         "LastRemotePath" : "",         "PassEx" : "2340cbd***************c5fb9f2fdeab2fc3627c17e366a39afdafa",         "PrivacyScreen" : 0,         "Quality" : 2,         "ResolutionX" : 0,         "ResolutionY" : 0,         "ScreenId" : 0,         "ScreenMode" : 0,         "ShowCursor" : 0,         "UserId" : "9*****123",         "UserImage" : "",         "UserName" : "DESKTOP-KGCQ7AD",         "Voice" : 0,         "Width" : 1452      }   ]}

一些配置信息情况:建议设置:autoLockScreen=0

autoStart=0-开机不自启动    autoStart=1-开机自启动 autoupdate=0-不自动更新    autoupdate=1-自动更新 autoLockScreen=0-不自动锁定屏幕    autoLockScreen=1-自动锁定屏幕 saveHistory=0-不保存历史连接密码    saveHistory=1-保存历史连接密码 showpass=0-临时密码不显示    showpass=1-临时密码不显示 loginlock=0-启动时不自动锁定   loginlock=1-启动时自动锁定 minsizelock=0-最小化不自动锁定    minsizelock=1-最小化自动锁定 filetranstip=0-文件传输不提醒    filetranstip=1-文件传输提醒 delWallpaper=0-远程不删除墙纸    delWallpaper=1-远程删除墙纸 passUpdate=0-手动更新临时密码 passUpdate=1-每日更新临时密码 passUpdate=2-每次远控后更新临时密码 autoLockScreen=0-远控结束后不自动锁定本机   autoLockScreen=1-远控结束后自动锁定本机 ProxyIp=IP-代理IPProxyPort=port-端口ProxyUser=username-用户 ProxyPassEx=加密后的密码-密码ProxyConn=1-当前代理开启ProxyConn=0-当前代理不开启

向日葵

基本描述

优势:运维常用工具,经常能碰到一些被控主机已经安装了缺点:如果是没安装,安装过程会有弹窗显示,需要管理员权限运行,

下载地址:基础版 https://sunlogin.oray.com/download?categ=ent其中建议下企业-免安装简约版SOS https://down.oray.com/sunlogin/windows/SunloginClientSOS_1.2.1.56005_x64.exe

连接方式:建议使用全功能版-无需登录版本进行发起连接,使用免安装简约版SOS上传被控主机

配置文件的主要内容:

  • encry_pwd 本机验证码,为密文,不可解密

  • fastcode 本机识别码,明文

  • fastcodehistory:本机识别码历史,为密文,用 base64 解密即可,如果向日葵没有连接过别的主机,fastcodehistory为空

不过各自版本的迭代,获取方式不太一样。老版本主要是通过配置文件config.ini获取,新版本需要通过查询注册表查询来获取,具体从哪个版本开始就不去细究了

通过配置文件获取:安装版:C:\Program Files\Oray\SunLogin\SunloginClient\config.ini便携版(绿色版):C:\ProgramData\Oray\SunloginClient\config.ini简约版(绿色版):C:\ProgramData\Oray\SunloginClientLite\config.ini
注册表查询:reg query HKEY_USERS\.DEFAULT\Software\Oray\SunLogin\SunloginClient\SunloginInforeg query HKEY_USERS\.DEFAULT\Software\Oray\SunLogin\SunloginClient\SunloginGreenInforeg query HKEY_USERS\.DEFAULT\Software\Oray\SunLogin\SunloginClient\SunloginLiteInfo

利用过程

1、免安装简约版

这里用的是一个以前的老版本了SunloginClient_12.0.1.40571.exe,本来以为密码直接存在本地配置里的,但后来发现是存在注册表内的。

界面:

通过读取注册表获取配置

可以像todesk利用手法一样通过覆盖配置文件获取密码,不过向日葵网上写了挺多脚本工具的,直接解密也行(https://github.com/wafinfo/Sunflower_get_Password)

连接成功,上线看了一下防火墙入站规则是阻止的,于是开始郁闷了,这怎么又能连接成功,之前那个为什么又不行。后来经过测试,在入站规则处添加策略才会禁止其使用(猜测可能使用特定的域名进行连接,具体为啥也不去深入研究了,这种情况能用即可)

2、企业-免安装SOS版

这个目前可以直接在官网下,免安装版,用于上传到被控主机端

界面:

上传exe文件到服务器,并执行

会在C:\ProgramData\Oray\SunloginClientLite\ 目录下生成配置文件

使用脚本获取对密码进行解密

连接成功

不过需要注意的是向日葵的每一次登录都会有记录,所以使用向日葵登录的时候也会有痕迹,也和进内网一样需要做痕迹 清除,向日葵可能需要清除痕迹的地方可能有以下几处:

@echo offtaskkill /f /im SunloginClient.exedel /s /q C:\Windows\Prefetch\SUNLOGINCLIENT*.pfdel /s /q %userprofile%\AppData\Roaming\Microsoft\Windows\Recent\SunloginClient*.lnkrmdir /s /q C:\ProgramData\Oray\SunloginClientrmdir /s /q %userprofile%\AppData\Roaming\Oray\SunloginClientreg delete "HKCU\Software\Oray\SunLogin\SunloginClient" /freg delete "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run" /v SunloginClient /fdel /s /q SunloginClient.exe

小结

大部分工具的使用手法都差不多(例如加密密码都可以通过覆盖本地配置文件来获取),各有各的优劣性。但这类远控工具也不是百分百能用,部分单位本身就禁用了远控工具,列举的多款远程工具,总有一款适合你,主要还是图形化界面操作方便多了。

另外几个点需要注意下:

  • 能使用免安装尽量使用免安装工具。(这些工具中除了向日葵没找到不需要登录账号的版本,其他都可以)

  • 部分远控工具连接都会有记录(有的会记录登录手机号、有的会记录出口IP地址,连接完记得清理就行)

  • 部分远控工具本身存在漏洞,别被反制RCE了。比如向日葵远程命令执行漏洞(CNVD-2022-10270) ,个人版 for Windows<11.1.1.38222

  • 防火墙默认禁止软件连接网络的问题也需要注意一下。部分软件的功能会被影响。

安恒信息

杭州亚运会网络安全服务官方合作伙伴

成都大运会网络信息安全类官方赞助商

武汉军运会、北京一带一路峰会

青岛上合峰会、上海进博会

厦门金砖峰会、G20杭州峰会

支撑单位北京奥运会等近百场国家级

重大活动网络安保支撑单位

END

长按识别二维码关注我们


文章来源: https://mp.weixin.qq.com/s?__biz=MzI0NzEwOTM0MA==&mid=2652502525&idx=1&sn=6ab1a87254637e8bdb2d189a5cde90ea&chksm=f2585a4ec52fd358bc75e80381c087fb5fb6e3b116a60fb34668d967e03cbd6badaf1882a706&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh