すべての参加者は、例外ではありませんが、産業施設のモデルを管理するSCADAの経験を積む機会に惹かれます。 InfoTeKS社のスタンド「燃料倉庫への攻撃」は興味深いものであり、最終的にはそれを鎮圧することができました。 気にするハッキングのシーケンスを以下に示します。
コンテスト「燃料補給所への攻撃」の条件
初期データ:攻撃は2段階で構成されています。
1.ステージ:攻撃の最初のステージを開始するには、「デジタルバー」でヒントを見つける必要があります。 攻撃のステージ1の結果、ステージ2に進むには、特定の「秘密」を習得する必要があります。 侵入者のアクションがファイアウォールによって認識されなかった場合、最初の段階は正常に完了したと見なされます。
2.ステージ:「秘密」を受け取った攻撃者は、攻撃の第2ステージに進みます。 タスクは、権限のないチームを送信してパンチを埋めることです。
目的:50リットルまたは100リットルの燃料を無許可で排出すること。
許可:必要なソフトウェアを備えた自分のラップトップを使用します。
禁止:燃料デポのレイアウトに対する物理的な影響。 違反者は、コンテストへの参加を直ちに停止されます。
したがって、ステージ1。
それは知られています:
Wifi
SSID:step_default
パス:00000000
FTP
ログイン:ユーザー
パス:Zb1HjJ9I

DHCP経由でネットワークに接続すると、IP 50.50.50.12が得られます。 利用可能なネットワークをスキャンします。
sudo netdiscover -i wlan0結果は複数のIPを提供し、それぞれがnmapを介して開いているポートをスキャンします。
nmap -Pn-リスト全体で最も興味深いのはIPでした:50.50.50.3、オープンポート22(SSH)、21(FTP)、80(HTTP)および7777(不明なサービス)。 FTPサーバーのユーザー名とパスワードがあることをすぐに思い出しました。 FTPへの認証後、7777.zipファイルが検出されます。 ダウンロードして解凍してみてください。ただし、アーカイブはパスワードで保護されていません。 私たちは、タスクの条件から知っており、途中で見つかったすべてを紹介します。 何も助けませんでした。 彼らは問題を延期し、先へ進むことにしました。 ブラウザで50.50.50.3を開くと、次のように表示されます。

それは普通の写真のように思えるかもしれませんが、HackQuest'ovを通過した経験は痕跡なしでは通過しませんでした。 写真をダウンロードして、内容を調べてください。

catを使用すると、ファイル「 TnpjM056bzNPVFU0TWpRMk5nbz0K 」の最後に値が見つかります。 熟考すると、彼らはBase64であるという結論に達し、次のコマンドを実行しました。
エコーTnpjM056bzNPVFU0TWpRMk5nbz0K | base64 -d
答えを得た-Nzc3Nzo3OTU4MjQ2Ngo =
このトリックをもう一度行います。今回は結果を使用します
echo Nzc3Nzo3OTU4MjQ2Ngo = | base64 -d
応答-7777:79582466
それで、今私たちには新しい意味があります、問題は残ります:「どこにそれらを置くか!?」。 FTPおよびSSH経由でこのデータを使用してログインしようとし、* .zipアーカイブのパスワードを使用しようとしても失敗しました。 ポート7777もリモートマシンで開いていることを思い出し、telnet経由で接続し、「Tell me your ID」というメッセージを受け取りました。 応答の最初の部分はポート(7777)の表示であるため、2番目の要求IDが提案されました。

すべてが正しく行われました! 作業の結果は別のFLAG( Ffl42Nm5b4#445 )でした。 レジから離れることなく、7777.zipというファイルも持っていることを思い出してください。 受信したデータをパスワードとして入力すると、アーカイブが解凍されます。 アーカイブ内のjohnyファイルは、システム管理者が疑わしい影なしに「これはSSHキーです」という文を発表した内容を見て、次のことを行いました。

SSHキーとファイル名をアカウント名(johny)として使用して、サーバー50.50.50.3に接続し、応答で新しいデータを受信しました
IG10:YourPassPhrese987
IG10は別のWi-Fiホットスポットであることが判明しました。 IG10に接続したら、もう一度始めました。
sudo netdiscover -i wlan0
今回は、ネットワーク上に192.168.2.1/24と192.168.20.1/24の2つのアドレススペースがあることに注意が向けられました。
ゲートウェイ(192.168.1.1および192.168.20.1)に同じMACがあったことは注目に値します。これは、ネットワーク上にルーターが1つしかないことを意味します。 両方のサブネットにアクセスするために、ルートが規定されました。
sudo route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.20.1
その後、彼らはなりすましを始めました。 IG10 WiFiネットワークに接続されたロボットに燃料を供給するために、コマンドが発行され、サーバーで処理され、燃料をリセットするコマンドが発行されました。 残念ながら、スプーフィングによって収集されたデータと共に* .pcapファイルを保存しなかったため、指で説明する必要があります。
IP 192.168.20.7(おそらくロボット)でmodbusプロトコルを使用して燃料リセットボタンを押すと、パケットがIP 192.168.2.2(おそらく管理サーバー)に向けてポート502に送信されることがわかりました。したがって、デバイスの役割を決定しました。 パッケージの再送信、これに必要なすべての情報をすでに再現しているだけです。 ただし、形成されたパッケージの送信が複雑であるため、独自にパッケージの送信を再現することはできませんでした。 Githubは、必要なlibをダウンロードし、目的に合わせて少し変更することで救助しました。燃料をリセットするコマンドであるロボットから送信されたデータを再現することが判明しました。
