高林の雑記ブログ

こんにちは。

Kali Linuxに(自分が)追加したいペネトレーションツール

先日、VMware上で動かしていたKali Linuxが突然エラーで起動できなくなりました。
コマンドラインだけならログインできるんですが、GUI操作ができず復旧が絶望的なので一からKali LinuxをInstallし直すことにしました。

その際、せっかくなので自分がVulnhubやHTBを攻略するうえで便利だと思って使っていて、かつKali Linuxにデフォルトで入っていないけど有用なツールをまとめたいと思います。

完全に個人の意見なので、参考までにどうぞ!
ちなみに、niktogobusterといったツールはめちゃくちゃ使いますがデフォルトでInstallされているため省略します。

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のモジュールでもバージョンを検出できる。

github.com

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などを特に使う。

github.com

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

PHP LFI/RFIを自動で検出してくれる。

github.com

NoSQLMap

NoSQL Injectionのペイロードを自動で試してくれる。
sqlmapと似ているが使い方は結構違う。

github.com

Powercat.ps1

PowershellのReverse shellPayload。

github.com

wget.vbs

winodws用のwgetみたいなもの。
Webshellは設置できたが、nc.exeがなくてインタラクティブなリバースシェルが欲しいときに、echoでwget.vbsを作成して、これでnc.exeをアップしたりする。

wget vbscript · GitHub

MS17-010

よく見る脆弱性
個人的に以下のスクリプトが安定して動いている気がする。
named pipeが見つかる場合、見つからない場合、認証が必要な場合などで使い分ける。

github.com
github.com
github.com

Exiftool

画像ファイル(jpeg)にPHPコードを挿入したいときに使う。
PHPコードを含む画像ファイルをUploadしたら、LFIなどと組み合わせてPHPとして実行する必要がある。
そのままWeb上でアクセスしても画像ファイルとして認識されてしまい、PHPとして実行できないので。

www.poftut.com

Privilege Escalation IG (linux)

privilege-escalation-awesome-scripts-suite(linpeas.sh)

linpeas.shがカラフルで重要なとこの色が強調されるので一番使う。
kernel exploitを探すスクリプト以外の中では一番使いやすいと個人的に思っている。
他のLinEnum.shやlinuxprivchecker.pyにも同じ動作は多々あるが、色分けしてくれるのでこれをよく使います。
また、大体の環境でも動作してくれる。
pythonが入っていない環境とかも普通にあるので。

github.com

linux-smart-enumeration(lse.sh)

カラフルに色分けしてくれるので見やすい。
linpeas.shでの調査では不十分と感じたら実行している。

github.com

LinEnum.sh

こっちも色分けはしてくれるが、linpeas.shほどカラフルではない。
とはいえ、動作自体は優秀。

github.com

pspy

実行しているプロセスをダンプしてくれる。
linpeas.shなどでps auxだけでは確認できないものも確認できる。
超優秀。自分はlinpeas.shとpspyだけは毎回必ず実行する。
実行されているプロセスを確認するのはめちゃくちゃ大事だと個人的に思っている。
見たことのないプロセスが動いていたら取りあえずチェックしている。

github.com

linuxprivchecker.py

LinEnum.shなどと同様の列挙スクリプト
ただし、これは色分けがない。
linuxprivchecker.pyはLinEnum.shやlinpeas.shと違って、最後の方にKernel Exploitの予想をしてくれる。
ただし、それが当たっていたことはあんまりない気がする…。
pythonがない環境だと動作しない。

netsec.ws

uptux.py

よくわかってない。

github.com

vuln_pkg_lookup.sh

よくわかってない。

github.com

SUID3NUM

デフォルトでSUIDがつくバイナリとそうでないバイナリをチェックしてくれる。
SUIDを用いたPrivilegeEscalationを確認する場合に使う。
ただし慣れてくるとlinpeas.shだったりで見慣れているバイナリは覚えてしまうので、変なバイナリはlinpeas.shだけでも見つけられる気がする。

github.com

BeRoot

pythonのKernel Exploitの列挙スクリプト
一つのファイルじゃなくて全体をダウンロードしないといけないので一度ZIPにしてからダウンロードして、展開している。
ファイルサイズが大きいものをwgetするのは時間かかるし、あんまり使わない。
後述するKernel Exploit列挙スクリプトで全然列挙できてないときとかに非常用で使うつもりでいる(そういう状況にはなったことはない)

github.com

kernelpop

Kernel Exploitを列挙するスクリプト
python3がないと動作しない(気がする)。そのため出番はあんまりない。
ディレクトリを丸ごとダウンロードする必要がある。

github.com

linux-exploit-suggester2.pl

色分けしてくれるので見やすい。
大体10~15個くらい列挙してくれるが、だいぶ誤検知も含まれている。
ただその中でもよく見るExploit(dirtycow, sock_sendpage, pipe, rdsなど)が検出されると優先度高めでリストに追加する。

github.com

Linux_Exploit_Suggester.pl

linux-exploit-suggester2.plの色分けのないバージョンだと思っている。
検出されるExploitもほぼ同じ。

github.com

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は必ず実行している。

github.com

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などを実行したりする。

github.com

PowerSploit

powershellが使える際に、ここのスクリプトを使うことができる。
とても便利だけど、スクリプトの数がめちゃくちゃ多いので使いこますのが難しい。
PowerUp.ps1, Get-System.ps1, Invoke-Mimikatz.ps1とかをよく使う気がする。
いまだによくわかっていない。
EmpireからPowerSploitのスクリプトをロードして、使用することができる。
長文のワンライナーでリバースシェル上でPowershellスクリプトを実行しなくても、Empire上からTab補完付きで簡単にPowershellスクリプトを実行できるのもEmpireの強みな気がする。とにかく便利。

github.com

Powerless.bat

windowsの情報収集系のスクリプトの中で個人的に一番!
他のEnumスクリプトは、Windowsのバージョンによって動作しないことが結構ある(ps1はXPなどでは動作しない)が、これはほぼすべてのバージョンで動作してくれる。
しかも個人的にチェックしてほしいところは大体チェックしてくれる。
Empireが使えるときもPowerless.batは実行する。
基本的にこれを実行して、追加の情報をほかのスクリプトで補っている。

github.com

jaws-enum.ps1

PowerUp.ps1などと同様に実行しておきたいツール。
動作は基本的にPowerless.batと同じだが、出力が綺麗で見やすいので実行できるならする。

github.com

windows-privesc-check

使った記憶があんまりないです……
でも便利そう。
github.com

Ghostpack-CompiledBinaries(SharpUp.exe Seatbelt.exe)

SharpUp.exe Seatbelt.exeを使う。
Powerless.batの追加として使っている。
Seatbelt.exeからは結構有用な情報が得られるので何をチェックしてくれるのかは把握しておくとよさそう?

github.com

wmic_info.bat

wmicコマンドで収集した情報をhtmlファイルに保存。
なので、レイアウトが綺麗で見やすい。
github.com

WindowsEnum.ps1

コンパクトに列挙してくれる。
これだけでは情報不足なのでほかのスクリプトと合わせて使いたい。
github.com

SessionGopher.ps1

セッション情報の中にあるクレデンシャル情報を抽出してくれる。
必ず実行するスクリプトの中のうちの一つ。

github.com

AccessChk

サービスの書き込み権限を確認したりするのに便利。
あと、Powerless.batがAccessChk.exeをアップしてから実行するとより情報を表示してくれるので自分は毎回Uploadしている。

docs.microsoft.com

Autorunsc

自動起動するようなサービスがないかをチェックする。
これも必ずアップしてチェックしている。
docs.microsoft.com

IKEEXT

IKEEXTというサービスにDLL Hijackできるかどうかチェックするps1スクリプト
windows 7 なら確認している。

github.com

windows-exploit-suggester.py

windowsでKernel Exploitを列挙するためのスクリプト
systeminfoコマンドの出力結果をKali上にコピーして、Kali上で実行する。
とても有用!
毎回必ず確認。
Patchが適応されているかをチェックするのでPrivilegeEscalation以外も表示される。

github.com

Sherlock.ps1

Kernel Exploitを列挙するps1のスクリプト
これもPowershellが使えるならEmpire上から必ず実行している。

github.com

BeRoot

LinuxWindowsで使えるようになっている。

github.com

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みたいな感じでバイナリを探してつかっている。

github.com

windows-kernel-exploits

コンパイル済みのバイナリがいっぱいあって最高!
locate MS16-032みたいな感じでバイナリを探してつかっている。

github.com

windows-tools(incognito,mimikatz_trunk)

incognito,mimikatz_trunkが有用なので入れている。
incognitoでMeterpreter上からのgetsystemと一部同じことができる。(Meterpreterのgetsytemは3種類の動作をしている)

github.com

juicy-potato

権限を確認したときに、条件を満たしていれば使える。

github.com

バイナリは以下から入手できる。
Releases · ohpe/juicy-potato · GitHub

Juicy-Potato-x86

上記のバイナリはx64用。
以下のソースコードコンパイルしてx86バイナリを作成できるらしいが、エラーでコンパイルできませんでした。
できた方は教えてほしいです。

github.com

rottenpotato

権限を確認して条件を満たしていれば試してみる。

github.com

Tater(hot potato)

hot potatoExploitのps1スクリプト
正直よくわかっていない。

github.com

tokenx_privEsc(getsystem.py)

meterpreterのgetsystemと同じことがpythonでできそう。
ただしREADMEを見た感じだと、RDP接続している状態でないとSYSTEMシェルが得られなさそう?

github.com

churrasco.exe

Microsoft Windows Server 2003 - Token Kidnapping Local Privilege Escalation

www.exploit-db.com

以下からバイナリをダウンロードできる。
github.com

Invoke-PowerShellTcp.ps1

powershellを用いたReverse shell payload

github.com

PSTools

PsExec.exeが欲しいのでダウンロード。
これを使って、AdministratorからSYSTEMになれる。

docs.microsoft.com

おすすめ

  • 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に追加で入れるツールをまとめてみました。
これは自分がいろいろやってて良いなと思っただけなので、必ずしもこれらのツールだけがいいというわけではないし他にも便利なツールは大量にあります。
ツールに優劣をつけるつもりは全くないのでご了承願います。
参考程度にしていただければ幸いです。
あと、なんか間違ってたりアドバイスとかあればぜひ!