Kali Linuxに(自分が)追加したいペネトレーションツール
先日、VMware上で動かしていたKali Linuxが突然エラーで起動できなくなりました。
コマンドラインだけならログインできるんですが、GUI操作ができず復旧が絶望的なので一からKali LinuxをInstallし直すことにしました。
その際、せっかくなので自分がVulnhubやHTBを攻略するうえで便利だと思って使っていて、かつKali Linuxにデフォルトで入っていないけど有用なツールをまとめたいと思います。
完全に個人の意見なので、参考までにどうぞ!
ちなみに、nikto
やgobuster
といったツールはめちゃくちゃ使いますがデフォルトでInstallされているため省略します。
- Information Gatering
- Information Gatering Brute Force
- Exploit
- Privilege Escalation IG (linux)
- Privilege Escalation IG (windows)
- Privilege Escalation exploit (linux)
- Privilege Escalation exploit (windows)
- おすすめ
- 最後に
Information Gatering
AutoRecon
自分がHTBとか解くときはまず絶対にこれを実行します。
python3 autorecon.py 10.1.1.1
みたいに特にオプションはつけずにデフォルトで実行します。
AutoReconは、まずTCPのデフォルト1000ポートスキャンのNmapScanを実行して、そこで見つかったサービスに対して、個別にNmapのVulnスクリプトやNikto、enum4linuxなどを実行してくれます。
それと同時並行でTCP fullNmapScanも実行し、そこで新たに見つかったサービスに対してもさらにNmapなどを実行してくれます。
こう聞くと、AutoReconだけで良いのでは?と思えますがAutoReconにも注意する点はあります。
まずNmapを使っているのでhost seems down
みたいにScanが正常に実行できなかったり誤検知(httpをwinrmと誤検知など)、空いているポートを逃したり。
実際に結構な頻度でこういうことが起こりえます。
なので自分はAutoReconとは別に手動でnmap 1000ポート、Fullポートスキャンを必ず行います。
この時、nmap -p- ipaddr --open
みたいな感じでバージョンまでは調べません。
とりあえず、空いているポートを見逃すということが怖いのでそれさえしなければOK。
scan結果は/results/scan
に出力されます。それ以外の/report
なども作成されますがここはOSCPのラボレポートの作成用に作者の方が用意したものなので自分は使ってません。(CherryTreeにメモを取るので)
github.com
onetwopunch
AutoReconを実行したあとに次に実行するコマンドです。
NmapでFull PortScanした後に、Nmapとは別の方法でバージョンスキャンを行います。
このツールの特徴はNmapより速いことです。
nmapで-sV
するよりもかなり早くFull PortScanできます。
自分は手動でNmapでtcp1000,fullポートスキャン、AutoReconでtcp quick,Fullポートスキャン、onetwopunchでtcp full,udp fullポートスキャンの三重でポートスキャンを行います。
ここまですればさすがに一回くらいポートを見逃しても他二回で検出できる、という作戦です。
実際、ここまでして見逃したことは今のところはないです。
github.com
Parsero
robots.txt
が存在するかどうかを確認します。
手動で確認してもいいかもだけど、タイプミスとか怖いのでこれを使ってます。
でもAutoReconがrobots.txtもチャックしてくれるので、これを使うのはAutoReconがhttpを検出できなかった時です。
実際、そういう場面は結構ある気がします。
smbver.sh
139,445ポートで動作しているSambaサーバーのバージョンを読み取るためのスクリプト。
enum4linux
でも同様のことができるが、ある一定以上のバージョンだとバージョンが検出できなくなっているらしい。
実際自分の環境だとenum4linuxが正しく動作しなかったので、その時はこれを使います。
Metasploitのモジュールでもバージョンを検出できる。
FindSMB2UPTime.py
MS14-068(Microsoft Windows Kerberos - Privilege Escalation (MS14-068))を確認する。
これはADにログインできるドメインユーザーの権限をSYSTEMに昇格させるPrivilegeEscalation。
ドメインユーザーのUser名、Password、SIDが必要。
github.com
impacket
通信などのややこしい設定をする必要なく、pythonスクリプトでそれが可能なスクリプト群。
mssqlclient.py
,wmiexec.py
,smbserver.py
,smbexec.py
などを特に使う。
oracle(sqlplus)
sqlplus
コマンドでOracleサーバーと対話する。
github.com
Information Gatering Brute Force
bruteforce-http-auth
hydra
がなんかうまく動かなかったので、動作がわかりやすい以下のスクリプトを使っている。
Basic, Digest認証のときに使っている。
github.com
SMBrute
SMBのブルートフォース。
windowsに登録されているユーザーをクラックする。
ただしクラックできる程度の弱いパスワードのマシンなんてほぼ無いのでは?と思ってる。でも一応は実行しておく。
github.com
smtp-user-enum
デフォルトでこのコマンドが入っていたが、動作がイマイチだったのでこっちを使ってます。
こっちなら、-v
オプションでより詳細なデバッグが可能。
個人的にこっちの方が使いやすかった。
github.com
wp_xmlrpc_brute_force.rb
XMLRPCを使ってログインブルートフォース。
wpscan
にこの機能があると思ったら意外とまだない様子。
Wordpressに対して行う。
Wpscanでwp-login.php
にブルートフォースでも結果は同じだが、wp-login.php
の方だと複数回のログイン試行を検出したらそのIPからの接続を拒否する、みたいな設定の場合にブルートフォースできなくなってしまう。
WordPress XML-RPC Password Brute Force · GitHub
debian-ssh
あるバージョンのdebian上で作成されたSSHの秘密鍵が予測可能な脆弱性がある。
crowbar
と組み合わせてSSHの秘密鍵ブルートフォースができる。
ただしめっちゃ時間はかかる。
github.com
massh-enum
OpenSSH の2.3 ~ 7.4 に Username Enumeration (CVE-2018-15473)の脆弱性。
他にもいくつか同じExploitのスクリプトはあったが、これが動いていたのでこれを使っている。
github.com
Exploit
Kadimus
NoSQLMap
NoSQL Injectionのペイロードを自動で試してくれる。
sqlmapと似ているが使い方は結構違う。
Powercat.ps1
PowershellのReverse shellPayload。
wget.vbs
winodws用のwgetみたいなもの。
Webshellは設置できたが、nc.exeがなくてインタラクティブなリバースシェルが欲しいときに、echoでwget.vbsを作成して、これでnc.exeをアップしたりする。
MS17-010
よく見る脆弱性。
個人的に以下のスクリプトが安定して動いている気がする。
named pipeが見つかる場合、見つからない場合、認証が必要な場合などで使い分ける。
github.com
github.com
github.com
Exiftool
画像ファイル(jpeg)にPHPコードを挿入したいときに使う。
PHPコードを含む画像ファイルをUploadしたら、LFIなどと組み合わせてPHPとして実行する必要がある。
そのままWeb上でアクセスしても画像ファイルとして認識されてしまい、PHPとして実行できないので。
Privilege Escalation IG (linux)
privilege-escalation-awesome-scripts-suite(linpeas.sh)
linpeas.shがカラフルで重要なとこの色が強調されるので一番使う。
kernel exploitを探すスクリプト以外の中では一番使いやすいと個人的に思っている。
他のLinEnum.shやlinuxprivchecker.pyにも同じ動作は多々あるが、色分けしてくれるのでこれをよく使います。
また、大体の環境でも動作してくれる。
pythonが入っていない環境とかも普通にあるので。
linux-smart-enumeration(lse.sh)
カラフルに色分けしてくれるので見やすい。
linpeas.shでの調査では不十分と感じたら実行している。
LinEnum.sh
こっちも色分けはしてくれるが、linpeas.shほどカラフルではない。
とはいえ、動作自体は優秀。
pspy
実行しているプロセスをダンプしてくれる。
linpeas.shなどでps aux
だけでは確認できないものも確認できる。
超優秀。自分はlinpeas.shとpspyだけは毎回必ず実行する。
実行されているプロセスを確認するのはめちゃくちゃ大事だと個人的に思っている。
見たことのないプロセスが動いていたら取りあえずチェックしている。
linuxprivchecker.py
LinEnum.shなどと同様の列挙スクリプト。
ただし、これは色分けがない。
linuxprivchecker.pyはLinEnum.shやlinpeas.shと違って、最後の方にKernel Exploitの予想をしてくれる。
ただし、それが当たっていたことはあんまりない気がする…。
pythonがない環境だと動作しない。
uptux.py
よくわかってない。
vuln_pkg_lookup.sh
よくわかってない。
SUID3NUM
デフォルトでSUIDがつくバイナリとそうでないバイナリをチェックしてくれる。
SUIDを用いたPrivilegeEscalationを確認する場合に使う。
ただし慣れてくるとlinpeas.shだったりで見慣れているバイナリは覚えてしまうので、変なバイナリはlinpeas.shだけでも見つけられる気がする。
BeRoot
pythonのKernel Exploitの列挙スクリプト。
一つのファイルじゃなくて全体をダウンロードしないといけないので一度ZIPにしてからダウンロードして、展開している。
ファイルサイズが大きいものをwgetするのは時間かかるし、あんまり使わない。
後述するKernel Exploit列挙スクリプトで全然列挙できてないときとかに非常用で使うつもりでいる(そういう状況にはなったことはない)
kernelpop
Kernel Exploitを列挙するスクリプト。
python3がないと動作しない(気がする)。そのため出番はあんまりない。
ディレクトリを丸ごとダウンロードする必要がある。
linux-exploit-suggester2.pl
色分けしてくれるので見やすい。
大体10~15個くらい列挙してくれるが、だいぶ誤検知も含まれている。
ただその中でもよく見るExploit(dirtycow, sock_sendpage, pipe, rdsなど)が検出されると優先度高めでリストに追加する。
Linux_Exploit_Suggester.pl
linux-exploit-suggester2.plの色分けのないバージョンだと思っている。
検出されるExploitもほぼ同じ。
linux-exploit-suggester.sh
linux-exploit-suggester2.plはただ列挙するだけだが、これはhighly probable
,probable
,less probable
の3段階でExploitを列挙してくれる。
less probable
以外は重要なのでリストに追加する。
たまにbashのバージョンが低すぎる、というエラーで実行できないことがある。
自分はlinux-exploit-suggester.shとlinux-exploit-suggester2.plは必ず実行している。
Privilege Escalation IG (windows)
Empire
powershellが使えるWindowsのPEに重宝する。
自分はEmpireが使えるかどうか(powershellが入っているかどうか)で作戦を変えています。
Empireが使えるなら、セッションを2個作成して、万が一リバースシェルがフリーズしてCtrl+Cしなければならなくなった時に、Empireからリバースシェルペイロードを実行するだけでまだリバースシェルを得られるようにしておく。
Empireからでもコマンド操作はできるっちゃできるけど、レスポンスが遅いので、Empireからコマンド操作をするときはこういう非常事態の時にしています。
あと、file uploaderとして非常に優秀だと思ってます。
certutilやtftpなどの長いコマンドを打つのではなくTab補完の利くEmpireからKaliの任意の場所のファイルをUploadできるので、ストレスを感じなくて済む。
あとは、PowerUp.ps1などを実行したりする。
PowerSploit
powershellが使える際に、ここのスクリプトを使うことができる。
とても便利だけど、スクリプトの数がめちゃくちゃ多いので使いこますのが難しい。
PowerUp.ps1, Get-System.ps1, Invoke-Mimikatz.ps1とかをよく使う気がする。
いまだによくわかっていない。
EmpireからPowerSploitのスクリプトをロードして、使用することができる。
長文のワンライナーでリバースシェル上でPowershellスクリプトを実行しなくても、Empire上からTab補完付きで簡単にPowershellスクリプトを実行できるのもEmpireの強みな気がする。とにかく便利。
Powerless.bat
windowsの情報収集系のスクリプトの中で個人的に一番!
他のEnumスクリプトは、Windowsのバージョンによって動作しないことが結構ある(ps1はXPなどでは動作しない)が、これはほぼすべてのバージョンで動作してくれる。
しかも個人的にチェックしてほしいところは大体チェックしてくれる。
Empireが使えるときもPowerless.batは実行する。
基本的にこれを実行して、追加の情報をほかのスクリプトで補っている。
jaws-enum.ps1
PowerUp.ps1などと同様に実行しておきたいツール。
動作は基本的にPowerless.batと同じだが、出力が綺麗で見やすいので実行できるならする。
windows-privesc-check
使った記憶があんまりないです……
でも便利そう。
github.com
Ghostpack-CompiledBinaries(SharpUp.exe Seatbelt.exe)
SharpUp.exe Seatbelt.exeを使う。
Powerless.batの追加として使っている。
Seatbelt.exeからは結構有用な情報が得られるので何をチェックしてくれるのかは把握しておくとよさそう?
wmic_info.bat
wmicコマンドで収集した情報をhtmlファイルに保存。
なので、レイアウトが綺麗で見やすい。
github.com
WindowsEnum.ps1
コンパクトに列挙してくれる。
これだけでは情報不足なのでほかのスクリプトと合わせて使いたい。
github.com
SessionGopher.ps1
セッション情報の中にあるクレデンシャル情報を抽出してくれる。
必ず実行するスクリプトの中のうちの一つ。
AccessChk
サービスの書き込み権限を確認したりするのに便利。
あと、Powerless.batがAccessChk.exeをアップしてから実行するとより情報を表示してくれるので自分は毎回Uploadしている。
Autorunsc
自動起動するようなサービスがないかをチェックする。
これも必ずアップしてチェックしている。
docs.microsoft.com
IKEEXT
IKEEXTというサービスにDLL Hijackできるかどうかチェックするps1スクリプト。
windows 7 なら確認している。
windows-exploit-suggester.py
windowsでKernel Exploitを列挙するためのスクリプト。
systeminfo
コマンドの出力結果をKali上にコピーして、Kali上で実行する。
とても有用!
毎回必ず確認。
Patchが適応されているかをチェックするのでPrivilegeEscalation以外も表示される。
Sherlock.ps1
Kernel Exploitを列挙するps1のスクリプト。
これもPowershellが使えるならEmpire上から必ず実行している。
BeRoot
Privilege Escalation exploit (linux)
dirtycow
Exploit-dbの40611,40616,40838,40839,40847は使用頻度が高いので、32/64bitでコンパイルしてまとめて、いつでも使えるようにしている。(コンパイルが若干面倒なので)
以下にいろいろなPoCがある。
github.com
Privilege Escalation exploit (windows)
WindowsExploits
コンパイル済みのバイナリがいっぱいあって最高!
locate MS16-032
みたいな感じでバイナリを探してつかっている。
windows-kernel-exploits
コンパイル済みのバイナリがいっぱいあって最高!
locate MS16-032
みたいな感じでバイナリを探してつかっている。
windows-tools(incognito,mimikatz_trunk)
incognito
,mimikatz_trunk
が有用なので入れている。
incognitoでMeterpreter上からのgetsystemと一部同じことができる。(Meterpreterのgetsytemは3種類の動作をしている)
juicy-potato
権限を確認したときに、条件を満たしていれば使える。
バイナリは以下から入手できる。
Releases · ohpe/juicy-potato · GitHub
Juicy-Potato-x86
上記のバイナリはx64用。
以下のソースコードをコンパイルしてx86バイナリを作成できるらしいが、エラーでコンパイルできませんでした。
できた方は教えてほしいです。
rottenpotato
権限を確認して条件を満たしていれば試してみる。
Tater(hot potato)
hot potatoExploitのps1スクリプト。
正直よくわかっていない。
tokenx_privEsc(getsystem.py)
meterpreterのgetsystemと同じことがpythonでできそう。
ただしREADMEを見た感じだと、RDP接続している状態でないとSYSTEMシェルが得られなさそう?
churrasco.exe
Microsoft Windows Server 2003 - Token Kidnapping Local Privilege Escalation
以下からバイナリをダウンロードできる。
github.com
Invoke-PowerShellTcp.ps1
powershellを用いたReverse shell payload
PSTools
PsExec.exeが欲しいのでダウンロード。
これを使って、AdministratorからSYSTEMになれる。
おすすめ
AutoRecon
impacket
onetwopunch
wget.vbs
linpeas.sh
pspy
LinEnum.sh
linux-exploit-suggester2.pl
linux-exploit-suggester.sh
Empire
PowerSploit
Powerless.bat
windows-exploit-suggester.py
WindowsExploits
windows-kernel-exploits
自分はこれらを使う機会が非常に多いです。
よくわからんという方はとりあえずここら辺のツールを一度使ってみることをお勧めします。
最後に
今回は自分がKaliに追加で入れるツールをまとめてみました。
これは自分がいろいろやってて良いなと思っただけなので、必ずしもこれらのツールだけがいいというわけではないし他にも便利なツールは大量にあります。
ツールに優劣をつけるつもりは全くないのでご了承願います。
参考程度にしていただければ幸いです。
あと、なんか間違ってたりアドバイスとかあればぜひ!