情報処理安全確保支援士 2023年 春期 午後1 問02
セキュリティインシデントに関する次の記述を読んで、設問に答えよ。
R社は、精密機器の部品を製造する従業員250名の中堅の製造業者である。本社に隣接した場所に工場がある。R社のネットワーク構成を図1に示す。


サーバ、FW、L2SW、L3SW及びPCは、情報システム課のU課長、Mさん、Nさんが管理しており、ログがログ管理サーバで収集され、一元管理されている。
DMZ上のサーバのログは常時監視され、いずれかのサーバで1分間に10回以上のログイン失敗が発生した場合に、アラートがメールで通知される。
FWは、ステートフルパケットインスペクション型であり、通信の許可、拒否についてのログを記録する設定にしている。FWでは、インターネットから受付サーバへの通信は443/TCPだけを許可しており、受付サーバからインターネットへの通信はOSアップデートのために443/TCPだけを許可している。インターネットから受付サーバ及びメールサーバへのアクセスでは、FWのNAT機能によってグローバルIPアドレスをプライベートIPアドレスに1対1で変換している。
受付サーバでは、取引先からの受注情報をDBサーバに保管するWebアプリケーションプログラム(以下、アプリケーションプログラムをアプリという)が稼働している。DBサーバでは、受注情報をファイルに変換してFTPで製造管理サーバに送信する情報配信アプリが常時稼働している。これらのアプリは10年以上の稼働実績がある。
〔DMZ上のサーバでの不審なログイン試行の検知〕
ある日、Mさんは、アラートを受信した。Mさんが確認したところ、アラートは受付サーバからDBサーバとメールサーバに対するSSHでのログイン失敗によるものであった。また、受付サーバからDBサーバとメールサーバに対してSSHでのログイン成功の記録はなかった。Mさんは、不審に思い、U課長に相談して、不正アクセスを受けていないかどうか、FWのログと受付サーバを調査することにした。
〔FWのログの調査〕
ログイン失敗が発生した時間帯のFWのログを表1に示す。
表1のFWのログを調査したところ、次のことが分かった。
・受付サーバから工場LANのIPアドレスに対してポートスキャンが行われた。
・受付サーバから製造管理サーバに対してFTP接続が行われた。
・受付サーバと他のサーバとの間ではFTPのデータコネクションはなかった。
・DBサーバから製造管理サーバに対してFTP接続が行われ、DBサーバから製造管理サーバにFTPのaモードでのデータコネクションがあった。
以上のことから、外部の攻撃者の不正アクセスによって受付サーバが侵害されたが、攻撃者によるDMZと工場LANとの間のファイルの送受信はないと推測した。Mさんは、受付サーバの調査に着手し、Nさんに工場LAN全体の侵害有無の調査を依頼した。
〔受付サーバのプロセスとネットワーク接続の調査〕
Mさんは、受付サーバでプロセスとネットワーク接続を調査した。psコマンドの実行結果を表2に、netstatコマンドの実行結果を表3に示す。
srvという名称の不審なプロセスが稼働していた。Mさんがsrvファイルのハッシュ値を調べたところ、インターネット上で公開されている攻撃ツールであり、次に示す特徴をもつことが分かった。
・C&C(Command and Control)サーバから指示を受け、子プロセスを起動してポートスキャンなど行う。
・外部からの接続を待ち受ける“バインドモード”と外部に自ら接続する“コネクトモード”でC&Cサーバに接続することができる。モードの指定はコマンドライン引数で行われる。
・ポートスキャンを実行して、結果をファイルに記録する(以下、ポートスキャンの結果を記録したファイルを結果ファイルという)。さらに、SSH又はFTPのポートがオープンしている場合、利用者IDとパスワードについて、辞書攻撃を行い、その結果を結果ファイルに記録する。
・SNMPv2cでpublicというb名を使って、機器のバージョン情報を取得し、結果ファイルに記録する。
・結果ファイルをC&Cサーバにアップロードする。
Mさんは、表1~表3から、次のように考えた。
・攻撃者は、一度、srvのcモードで、①C&Cサーバとの接続に失敗した後、srvのdモードで、②C&Cサーバとの接続に成功した。
・攻撃者は、C&Cサーバとの接続に成功した後、ポートスキャンを実行した。ポートスキャンを実行したプロセスのPIDは、eであった。
Mさんは、受付サーバが不正アクセスを受けているとU課長に報告した。U課長は、関連部署に伝え、Mさんに受付サーバをネットワークから切断するよう指示した。
〔受付サーバの設定変更の調査〕
Mさんは、攻撃者が受付サーバで何か設定変更していないかを調査した。確認したところ、③機器の起動時にDNSリクエストを発行して、ドメイン名△△△.comのDNSサーバからTXTレコードのリソースデータを取得し、リソースデータの内容をそのままコマンドとして実行するcronエントリーが仕掛けられていた。Mさんが調査のためにdigコマンドを実行すると、図2に示すようなリソースデータが取得された。

Mさんが受付サーバを更に調査したところ、logdという名称の不審なプロセスが稼働していた。Mさんは、logdのファイルについてハッシュ値を調べたが、情報が見つからなかったので、マルウェア対策ソフトベンダーに解析を依頼する必要があるとU課長に伝えた。Webブラウザで図2のURLからlogdのファイルをダウンロードし、ファイルの解析をマルウェア対策ソフトベンダーに依頼することを考えていたが、U課長から、④ダウンロードしたファイルは解析対象として適切ではないとの指摘を受けた。この指摘を踏まえて、Mさんは、調査対象とするlogdのファイルをfから取得して、マルウェア対策ソフトベンダーに解析を依頼した。解析の結果、暗号資産マイニングの実行プログラムであることが分かった。
調査を進めた結果、工場LANへの侵害はなかった。Webアプリのログ調査から、受付サーバのWebアプリが使用しているライブラリに脆弱性が存在することが分かり、これが悪用されたと結論付けた。システムの復旧に向けた計画を策定し、過去に開発されたアプリ及びネットワーク構成をセキュリティの観点で見直すことにした。
設問1:
問題文を見る本文中のaに入れる適切な字句を答えよ。
模範解答
a:パッシブ
解説
解答の論理構成
-
問題文の状況整理
- 「DBサーバから製造管理サーバに対してFTP接続が行われ」
- FWログ「1-233 送信元アドレス:192.168.0.2 宛先ポート:21/TCP 動作:許可」
- FWログ「1-234 送信元アドレス:192.168.0.2 宛先ポート:60453/TCP 動作:許可」
最初に制御用ポート21/TCPへ接続し、その直後に同じ送信元(192.168.0.2)から高位ポート60453/TCPへ接続している。
-
FTP転送モードの特徴
- アクティブモード:クライアント→サーバへ21/TCPで制御接続を張った後、【サーバ】が20/TCPからクライアント高位ポートへデータ接続を張る。
- パッシブモード:制御接続後、【サーバ】が待ち受けポート番号を通知し、【クライアント】がその高位ポートに接続を張る。
したがって、通信方向は常にクライアント→サーバとなる。
-
ログと照合
- 「1-234」はクライアント側である192.168.0.2(DBサーバ)がサーバ側192.168.1.145(製造管理サーバ)の高位ポート60453/TCPに接続。
- これはパッシブモードの典型的なフローであり、アクティブモードで見られる20/TCPからの逆方向通信は記録されていない。
-
結論
以上より、aに入る語はFTPの「パッシブ」モードとなる。
誤りやすいポイント
- “高位ポートを使っていればアクティブ”と早合点する。アクティブはサーバ→クライアント方向の接続が必ず存在する点で見分ける。
- 20/TCP以外でもデータ転送が行われると勘違いし、アクティブ・パッシブの区別をポート番号だけで判断してしまう。
- ログに表示される「送信元/宛先アドレス」の向きを見落とし、通信方向を取り違える。
FAQ
Q: FWログに20/TCPが出てこないのはなぜですか?
A: パッシブモードではサーバが高位ポートを開き、クライアントがそこへ接続するため20/TCPは使用しません。
A: パッシブモードではサーバが高位ポートを開き、クライアントがそこへ接続するため20/TCPは使用しません。
Q: アクティブモードのデータコネクションは必ず20/TCPですか?
A: はい、RFC959でデータポート20/TCPと定義されています。サーバ側から20/TCP→クライアント高位ポートへ接続が張られます。
A: はい、RFC959でデータポート20/TCPと定義されています。サーバ側から20/TCP→クライアント高位ポートへ接続が張られます。
Q: ログの高位ポート60453/TCPは毎回同じになりますか?
A: いいえ、パッシブモードではサーバが空いている高位ポートを都度割り当てるため毎回異なります。
A: いいえ、パッシブモードではサーバが空いている高位ポートを都度割り当てるため毎回異なります。
関連キーワード: FTP, ポートスキャン、C&Cサーバ、SNMPv2c, cron
設問2:〔受付サーバのプロセスとネットワーク接続の調査〕について答えよ。
問題文を見る(1)本文中のbに入れる適切な字句を、10字以内で答えよ。
模範解答
b:コミュニティ
解説
解答の論理構成
- 【問題文】には
“SNMPv2cでpublicというb名を使って、機器のバージョン情報を取得し”
と記載されています。 - “SNMPv2c” はSNMPの旧バージョンであり、認証・アクセス制御に “コミュニティ名(community string)” を用います。
- 代表的な既定値が “public/private” で、とりわけ “public” は読み取り専用アクセスに利用されるため、多くの機器でそのまま残りやすく攻撃者に悪用されがちです。
- したがって “b” に入る語はSNMPのアクセス制御用キーワードである “コミュニティ” が適切です。
誤りやすいポイント
- “public” という語から “公開鍵” や “パスワード” を連想してしまい、設問趣旨を取り違える。
- SNMPv3の認証・暗号機能と混同し、コミュニティ名が廃止されたと誤解する。
- “グループ名”“ドメイン名” と答えてしまい、SNMP固有の用語に結び付けられない。
FAQ
Q: SNMPv2cの “コミュニティ名” は具体的に何の役割を果たしますか?
A: 利用者認証とアクセス制御を兼ねた共有文字列です。装置側はあらかじめ “public”“private” などを設定し、SNMPマネージャから送られてきたコミュニティ名が一致すれば問い合わせを受け付けます。
A: 利用者認証とアクセス制御を兼ねた共有文字列です。装置側はあらかじめ “public”“private” などを設定し、SNMPマネージャから送られてきたコミュニティ名が一致すれば問い合わせを受け付けます。
Q: “public” が残ったままだと、どんなリスクがありますか?
A: だれでも機器情報を読み取れる状態になるため、機器の型番・OSバージョン・稼働状況などが漏えいし、脆弱性を突いた攻撃の足掛かりになります。
A: だれでも機器情報を読み取れる状態になるため、機器の型番・OSバージョン・稼働状況などが漏えいし、脆弱性を突いた攻撃の足掛かりになります。
Q: SNMPを安全に使う対策は?
A: 可能であればSNMPv3に移行し、認証・暗号化を有効にします。v2cを使う場合でも “public”“private” といった既定値を変更し、アクセス元のネットワークをACLで制限することが推奨されます。
A: 可能であればSNMPv3に移行し、認証・暗号化を有効にします。v2cを使う場合でも “public”“private” といった既定値を変更し、アクセス元のネットワークをACLで制限することが推奨されます。
関連キーワード: SNMP, コミュニティ名、デフォルトパスワード、情報漏洩
設問2:〔受付サーバのプロセスとネットワーク接続の調査〕について答えよ。
問題文を見る模範解答
c:バインド
下線①:2-3によって起動した3-3のポートへの通信が1-3で拒否されているから
解説
解答の論理構成
-
srvの起動オプション確認
表2「2-3」のコマンドラインは
「./srv -c --mode bind 0.0.0.0:8080」で、モードが“bind”であることが明示されています。
よって c には「バインド」を入れるのが自然です。 -
②が“成功”と判断できる根拠(参考)
表2「2-4」は「./srv -c --mode connect a0.b0.c0.d0:443」。
表3「3-4」は「192.168.0.1:54543 → a0.b0.c0.d0:443」「状態ESTABLISHED」。
表1「1-4」も同ポートで「動作 許可」。
これらからconnectモードでの再接続が成功したと分かります。
誤りやすいポイント
- 「2-3」に付く -cオプションを “connect” と早合点し、モードを誤る。実際には --mode bindが決定打です。
- FWログ「1-3」の“拒否”を「送信元からの誤ポートスキャン」と勘違いし、C&Cとの通信失敗である点を見落とす。
- 「bind=待受、connect=能動接続」の対比を忘れ、①②を逆に解釈してしまう。
FAQ
Q: バインドモードとコネクトモードは何が違うのですか?
A: バインドモードは内部でポートを「LISTEN」し外部からの接続を待ちます。コネクトモードはマルウェア自身が外部(C&C)へ能動的に接続します。
A: バインドモードは内部でポートを「LISTEN」し外部からの接続を待ちます。コネクトモードはマルウェア自身が外部(C&C)へ能動的に接続します。
Q: なぜFWが8080/TCPを拒否しているとC&C接続失敗と断定できるのですか?
A: 表3「3-3」で待受状態の8080/TCPへ、表1「1-3」で外部アドレスからの通信が“拒否”されています。待受には到達していないため接続は成立していません。
A: 表3「3-3」で待受状態の8080/TCPへ、表1「1-3」で外部アドレスからの通信が“拒否”されています。待受には到達していないため接続は成立していません。
Q: -cという短縮オプションは何を意味しますか?
A: 本ツールでは -cは設定ファイル読込オプションに過ぎず、接続モードは --modeで明示的に指定されています。オプション名だけで判断しないよう注意が必要です。
A: 本ツールでは -cは設定ファイル読込オプションに過ぎず、接続モードは --modeで明示的に指定されています。オプション名だけで判断しないよう注意が必要です。
関連キーワード: C&C通信、ステートフルFW, ポートスキャン、バインドモード、辞書攻撃
設問2:〔受付サーバのプロセスとネットワーク接続の調査〕について答えよ。
問題文を見る模範解答
d:コネクト
下線②:2-4によって開始された3-4の通信が1-4で許可されているから
解説
解答の論理構成
- 表2の 2-3 に「./srv -c --mode bind 0.0.0.0:8080」とあり、srvは最初にバインドモードで待受けた。
- しかし表3の 3-3 はLISTEN状態のみで、表1に8080/TCPの許可ログが無い(1-3 が8080/TCP拒否)。このためC&Cサーバとの接続は失敗したと判断できる。
- 次に表2の 2-4 に「./srv -c --mode connect a0.b0.c0.d0:443」とあり、srvはコネクトモードで外部へ接続を試行。
- 表3の 3-4 は192.168.0.1:54543 → a0.b0.c0.d0:443がESTABLISHED、かつ表1の 1-4 で同一通信がFWにより許可されている。したがってC&Cサーバとの接続に成功したと分かる。
- 以上から d は「コネクト」。また下線②の判断根拠は「2-4によって開始された3-4の通信が1-4で許可されているから」と整理できる。
誤りやすいポイント
- srvの起動オプションの読み違え
- bindとconnectの両方に -cが付いているため、‐cをモード指定と誤解しやすい。実際は --modeの後ろが決定的。
- FWログとnetstatの対応付け不足
- 表3のESTABLISHEDだけを見て接続成功と判断し、FWログで許可されたかを確認し忘れる。
- ポート番号方向の混同
- 送信元54543/TCPがダイナミックポートであることを見落とし、誤って443/TCPとの内部待受けと解釈する。
FAQ
Q: バインドモードで接続が失敗したかどうかは、どの情報で確定できますか。
A: 表1の8080/TCPが 1-3 で「拒否」と記録され、表3にESTABLISHEDが存在しないため失敗と判断できます。
A: 表1の8080/TCPが 1-3 で「拒否」と記録され、表3にESTABLISHEDが存在しないため失敗と判断できます。
Q: 2-4の末尾にある「2>&1」は解答に影響しますか。
A: いいえ。標準エラー出力を標準出力にリダイレクトするだけで、srvの動作モードや接続可否には関係ありません。
A: いいえ。標準エラー出力を標準出力にリダイレクトするだけで、srvの動作モードや接続可否には関係ありません。
Q: ESTABLISHEDとLISTENの違いは何ですか。
A: LISTENはポートが待受け状態、ESTABLISHEDは3ウェイハンドシェイクが完了し双方向通信が確立された状態です。
A: LISTENはポートが待受け状態、ESTABLISHEDは3ウェイハンドシェイクが完了し双方向通信が確立された状態です。
関連キーワード: ステートフルパケット、ポートスキャン、C&Cサーバ、ESTABLISHED状態、バインドモード
設問2:〔受付サーバのプロセスとネットワーク接続の調査〕について答えよ。
問題文を見る(4)本文中のeに入れる適切な数を、表2中から選び答えよ。
模範解答
e:1365
解説
解答の導き方
設問の趣旨は、受け付けサーバ上で実行された「ポートスキャンを行ったプロセス」のPIDを表2から選ぶことです。以下の手順で結論に至ります。
-
攻撃ツールの振る舞いを確認する
本文に「C&C(Command and Control)サーバから指示を受け、子プロセスを起動してポートスキャンなど行う」とあります。したがって、srv本体とは別に「ポートスキャンを行う子プロセス」が稼働しているはずです。 -
FWログでポートスキャンが発生していることを確認する
調査結果に「受付サーバから工場LANのIPアドレスに対してポートスキャンが行われた」とあるため、受付サーバ上にポートスキャン実行プロセスが存在すると考えます。 -
表2(ps出力)でsrvのプロセス群を確認する
表2の該当行は次の通りです(コマンドラインの要旨を示します)。- 項番2-3:PID「1275」 コマンド「./srv -c --mode bind 0.0.0.0:8080 2>&1」
- 項番2-4:PID「1293」 コマンド「./srv -c --mode connect a0.b0.c0.d0:443 2>&1」
- 項番2-5:PID「1365」 コマンド「./srv -s --range 192.168.0.1-192.168.255.254」
ここで、1365のコマンドはスキャン対象範囲を示すオプション「--range」を含んでおり、ポートスキャンを行う子プロセスであることが強く示唆されます。 -
表3(netstat出力)でソケット状態とPIDの対応を確認する
表3の項番3-4に「ローカル192.168.0.1:54543 → 外部a0.b0.c0.d0:443状態ESTABLISHED PID 1293」とあり、これはC&Cサーバとの確立済み接続(PID 1293)です。一方、項番3-5に「外部アドレス192.168.253.124:21、状態『SYN_SENT』、PID『1365』」とあります。SYN_SENTは送信側が接続試行中である状態で、複数の宛先に向けた同時のSYN_SENTはポートスキャンの典型的な痕跡です。 -
総合判断
・srvは子プロセスでポートスキャンを行う(手順1)。
・表2でポートスキャン用途を示すコマンドを持つプロセスはPID「1365」である(手順3)。
・表3でPID「1365」が多数の宛先に対して接続試行(SYN_SENT)を行っていることが確認できる(手順4)。
したがって、ポートスキャンを実行したプロセスのPIDは「1365」です(表2の項番2-5に対応)。
誤りやすいポイント
- netstatの「SYN_SENT」のみに頼らないこと。表3にはPID列がありPIDでプロセスを特定できますが、netstat単独だと一時的な接続や権限不足で見落とす場合があります。必ずpsのコマンドライン(表2)や開始時刻と照合してください。
- LISTEN/ESTABLISHED/SYN_SENTの意味を取り違えないこと。LISTENは待ち受け(bindモード)、ESTABLISHEDは確立済み(C&C接続など)、SYN_SENTは接続試行(スキャンの兆候)です。
- C&C接続プロセス(ここではPID「1293」)と実際にスキャンを行う子プロセス(PID「1365」)を混同しないこと。コマンドラインのオプションを必ず確認してください。
- FWログだけで実行プロセスを特定しないこと。FWログは通信の発着を示しますが、どのプロセスが発行したかはホスト側のps/netstatで確認する必要があります。
FAQ
Q: なぜPID「1293」ではなく「1365」を選ぶのですか?
A: PID「1293」は表2で「./srv -c --mode connect a0.b0.c0.d0:443」となっており、表3でも「a0.b0.c0.d0:443」との接続がESTABLISHEDでPID「1293」に対応しています。これはC&Cとの確立済み接続を示しており、ポートスキャンの実行自体は別の子プロセス(表2のPID「1365」、コマンドに --rangeを含む)で実施されたと判断できます。
A: PID「1293」は表2で「./srv -c --mode connect a0.b0.c0.d0:443」となっており、表3でも「a0.b0.c0.d0:443」との接続がESTABLISHEDでPID「1293」に対応しています。これはC&Cとの確立済み接続を示しており、ポートスキャンの実行自体は別の子プロセス(表2のPID「1365」、コマンドに --rangeを含む)で実施されたと判断できます。
Q: netstatのPID表示は常に信頼できますか?
A: 問題文の表3ではPIDが表示されていますので信頼してよいですが、実務では権限不足や一瞬で終わる接続によりPIDが報告されないことがあります。必ずpsやコマンドライン、開始時刻と突き合わせて裏付けを取ってください。
A: 問題文の表3ではPIDが表示されていますので信頼してよいですが、実務では権限不足や一瞬で終わる接続によりPIDが報告されないことがあります。必ずpsやコマンドライン、開始時刻と突き合わせて裏付けを取ってください。
Q: SYN_SENTが多く見られると必ずポートスキャンですか?
A: 多数の宛先・ポートに対するSYN_SENTは典型的なポートスキャンの兆候ですが、正規のアプリケーションが大量の接続試行を行う場合もあり得ます。プロセスのコマンドラインや開始時刻、対象範囲(ここでは「192.168.0.1-192.168.255.254」)と合わせて判断してください。
A: 多数の宛先・ポートに対するSYN_SENTは典型的なポートスキャンの兆候ですが、正規のアプリケーションが大量の接続試行を行う場合もあり得ます。プロセスのコマンドラインや開始時刻、対象範囲(ここでは「192.168.0.1-192.168.255.254」)と合わせて判断してください。
関連キーワード: ポートスキャン、C&Cサーバ、netstatとPID、SYN_SENT(TCP状態)、SNMPv2c
設問3:〔受付サーバの設定変更の調査〕について答えよ。
問題文を見る(1)本文中の下線③について、Aレコードではこのような攻撃ができないが、TXTレコードではできる。TXTレコードではできる理由を、DNSプロトコルの仕様を踏まえて30字以内で答えよ。
模範解答
TXTレコードには任意の文字列を設定できるから
解説
解答の論理構成
- 問題文は、攻撃者が「DNSリクエストを発行して、ドメイン名△△△.comのDNSサーバからTXTレコードのリソースデータを取得し、リソースデータの内容をそのままコマンドとして実行する」と説明しています。
- DNSプロトコルにおいて
・AレコードのRDATAは「IPv4アドレス」固定
・TXTレコードのRDATAは「任意の文字列を格納できる」
という仕様差があります。 - よってTXTレコードならシェルコマンドを含む文字列をそのまま返却でき、スクリプトが実行してしまうため攻撃が成立します。
- 以上より解答は「TXTレコードには任意の文字列を設定できるから」となります。
誤りやすいポイント
- Aレコードでも文字列を書けると勘違いし、DNSパケット全体に注目してしまう。
- TXTレコードの用途をSPFなど制御用データ限定と捉え、「任意性」の高さを見落とす。
- “コマンドが実行される理由”ではなく“なぜDNSがそのデータを渡せるか”という論点を外す。
FAQ
Q: AレコードでもBase64文字列をIPアドレス風に分割すれば同じことが可能では?
A: IPアドレスは32bit固定長で値域が制限され、自由文字列として扱えません。
A: IPアドレスは32bit固定長で値域が制限され、自由文字列として扱えません。
Q: TXTレコードは長さ制限があるのでは?
A: 255文字単位で複数文字列を連結できるため、実用上コマンドスクリプト程度なら十分格納可能です。
A: 255文字単位で複数文字列を連結できるため、実用上コマンドスクリプト程度なら十分格納可能です。
Q: DNSSECを使えば防げますか?
A: DNSSECは改ざん検知には有効ですが、正規署名付きで悪意あるTXTを配布された場合は防げません。
A: DNSSECは改ざん検知には有効ですが、正規署名付きで悪意あるTXTを配布された場合は防げません。
関連キーワード: DNSレコード種別、RDATA, コマンドインジェクション、C&C通信、TXTレコード
設問3:〔受付サーバの設定変更の調査〕について答えよ。
問題文を見る(2)本文中の下線④について、適切ではない理由を、30字以内で答えよ。
模範解答
稼働しているファイルと内容が異なる可能性があるから
解説
解答の論理構成
- 受付サーバ上では既に不審プロセス「logd」が稼働している。本文では
「Mさんが受付サーバを更に調査したところ、logdという名称の不審なプロセスが稼働していた。」
と記載されている。 - Mさんは解析用に「図2のURLからlogdのファイルをダウンロード」しようとしたが、U課長は下線部
「④ダウンロードしたファイルは解析対象として適切ではない」
と指摘した。 - 図2のリソースデータはDNS TXTレコードにより動的に提供されるワンライナーで、攻撃者が任意のタイミングで内容を更新できる。したがってダウンロード時点で取得できるファイルは、
・現在受付サーバで稼働し問題を引き起こしているlogd
・侵入当初にダウンロードされたlogd
と同一とは限らない。 - 解析対象とすべきは、侵害を受けた環境で実際に稼働している実物ファイルであり、外部サーバから改めて取得したファイルではない。そこで本文は
「Mさんは、調査対象とするlogdのファイルをfから取得して、マルウェア対策ソフトベンダーに解析を依頼した。」
と続く。 - 以上より、U課長の指摘は「ダウンロードしたファイルは稼働中のファイルと内容が異なる恐れがある」という趣旨となる。
誤りやすいポイント
- 「URLが同じ=同じファイル」と思い込み、動的ペイロードや版違いのリスクを失念しやすい。
- ハッシュ値確認を怠り、入手元の真正性・同一性を検証せずに解析対象を決定してしまう。
- DNS TXT経由のコマンド実行に着目できず、攻撃者がファイルを随時差し替え可能である事実を見落とす。
FAQ
Q: ダウンロードせずに現物取得が推奨されるのはなぜですか?
A: 侵害環境で実際に動いているバイナリこそ正しく痕跡を保持しており、攻撃者が差し替えた別物を解析しても正確な挙動が得られないからです。
A: 侵害環境で実際に動いているバイナリこそ正しく痕跡を保持しており、攻撃者が差し替えた別物を解析しても正確な挙動が得られないからです。
Q: DNS TXTレコードを使う利点は何ですか?
A: HTTP通信が直接発生しないため監視を回避しやすく、攻撃者がレコードを書き換えるだけでコマンドを更新できる点です。
A: HTTP通信が直接発生しないため監視を回避しやすく、攻撃者がレコードを書き換えるだけでコマンドを更新できる点です。
Q: 解析前に最低限確認すべきことは?
A: ハッシュ値計算、タイムスタンプ確認、実行パス、権限(所有者・パーミッション)を取得し、不揮発性メディアへ保全します。
A: ハッシュ値計算、タイムスタンプ確認、実行パス、権限(所有者・パーミッション)を取得し、不揮発性メディアへ保全します。
関連キーワード: DNS TXT, ハッシュ値、マルウェア解析、コマンド&コントロール、ファイル同一性
設問3:〔受付サーバの設定変更の調査〕について答えよ。
問題文を見る(3)本文中のfに入れる適切なサーバ名を、10字以内で答えよ。
模範解答
f:受付サーバ
解説
解答の論理構成
- 【問題文】には「Mさんは、logdのファイルについてハッシュ値を調べたが、情報が見つからなかったので、マルウェア対策ソフトベンダーに解析を依頼する必要があるとU課長に伝えた」とあります。
- その後の手順として「Webブラウザで図2のURLからlogdのファイルをダウンロードし…と考えていたが、U課長から、④ダウンロードしたファイルは解析対象として適切ではないとの指摘を受けた」と記載されています。
- ダウンロード版が不適切と指摘された理由は、攻撃者が同一URLで別の無害ファイルや改ざんファイルを供給する可能性があり、“稼働していた実物”と同一である保証がないからです。
- したがって「調査対象とするlogdのファイル」は“すでに感染しているホスト”から取得しなければ、攻撃時点の正確なバイナリを確保できません。
- 感染が確認されたホストは「受付サーバ」であり、【問題文】は「srvという名称の不審なプロセスが稼働」「logdという名称の不審なプロセスが稼働」といずれも受付サーバ上で起きていることを示しています。
- よって f に入るサーバ名は「受付サーバ」となります。
誤りやすいポイント
- URLから再ダウンロード=同一ファイルと早合点する
攻撃者が差し替える恐れを見落とすと失点します。 - 「ログ管理サーバ」や「DBサーバ」と推測する混同
logdが実際に稼働していたのは受付サーバだけです。 - “感染源=C&Cサーバ”と誤解し、外部サイト名を書いてしまう
問われているのは取得場所ではなく“どの自社サーバから採取するか”です。
FAQ
Q: なぜ実機から取得する必要があるのですか?
A: 攻撃発生時点のバイナリを保存しないと、ハッシュ値照合や挙動解析が正確に行えません。URLから再取得した場合、攻撃者が別物を配置していると証拠保全になりません。
A: 攻撃発生時点のバイナリを保存しないと、ハッシュ値照合や挙動解析が正確に行えません。URLから再取得した場合、攻撃者が別物を配置していると証拠保全になりません。
Q: 感染端末から直接ネットワーク越しに送付してもよいのでしょうか?
A: 事故調査の原則として、まずオフラインでイメージ取得またはメディアへコピーし、隔離環境でハッシュ化→暗号化したうえで送付するのが安全です。
A: 事故調査の原則として、まずオフラインでイメージ取得またはメディアへコピーし、隔離環境でハッシュ化→暗号化したうえで送付するのが安全です。
Q: logdが稼働していた証拠はどこにありますか?
A: 「Mさんが受付サーバを更に調査したところ、logdという名称の不審なプロセスが稼働していた」と【問題文】に明記されています。
A: 「Mさんが受付サーバを更に調査したところ、logdという名称の不審なプロセスが稼働していた」と【問題文】に明記されています。
関連キーワード: マルウェア解析、ハッシュ値、インシデント対応、サンプル採取、攻撃ツール






