令和元年秋午後Ⅱ問2設問1(1)

akiさん  
(No.1)
WEBサーバ構築等の実務経験がなくHTTPメソッドについて理解が不足していて、こちらの設問について状況が良くつかめていません。「User-Agentヘッダフィールドの値がA社で利用しているWebブラウザを示す値であるケース」というのも、マルウェアが攻撃に用いたHTTP通信において生じるケースなのでしょうか。攻撃ではない場合のUser-Agentヘッダのことを言っているように思えました。
私の解答は「通常業務でもUser-Agentヘッダフィールドの値が同様となるようなHTTPリクエストを送信する場合」としました。エンジニアの知識というよりも国語問題的な感覚で、マルウェアによるHTTP通信と同じ特徴を持つ通信を日頃からやっているなら峻別つかないだろうという発想です。模範解答と同義となる解答なのか、模範解答は別の状況を想定している内容なのか解説いただける方いらっしゃればお願いします。
2023.04.07 11:16
pixさん 
SC ダイヤモンドマイスター
(No.2)
HTTPのGETメソッドでアクセスする時にHTTPリクエストヘッダとして
User-Agentヘッダが付与されて送信されます。
アクセス元のソフトウェアにより、以下のようなUser-Agentヘッダが付与され、
Webサーバのアクセスログに記録されます。

Google Chrome バージョン 111の場合:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"
Microsoft Edge バージョン 111場合:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.62"
curlの場合:"curl/7.64.0"
など。
アクセスログを調査することによりどのようなソフトウェアからアクセスされたかを
知る事ができます。

本問では不審サイトへの通信にcurlが利用されていたので、User-Agentヘッダ
フィールドの値にcurlの情報が記載されてしまいました。
この場合、アクセスログから"curl"を含む文字列を抽出すれば、不正なアクセスである
ことがいとも簡単に判明してしまいます。

そこで、よく用いられるのがUser-Agentヘッダフィールドの値の偽装です。
curlであれば -AオプションでUser-Agentヘッダフィールドの値を任意の値に設定
することができ、
curl  -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"
であたかもGoogle Chromeでアクセスしているかのように偽装可能です。

業務上の経験ですが、不正アクセスはほぼ100%、User-Agentヘッダフィールドの値を
偽装しています。
その際に偽装されるUser-Agentヘッダフィールドの値は古いバージョンのブラウザの
ヘッダフィールドを偽装しているケースがよくあります。
その点に注意してUser-Agentヘッダフィールドの値を確認すれば、正規のアクセスか
不正アクセスかを見分ける際のポイントになります。
2023.04.07 12:07
akiさん  
(No.3)
ありがとうございます。
確認ですが、設問にある「User-Agentヘッダフィールドの値が”curl/7.64.0”のHTTPリクエスト」という状況は攻撃者が送信元を偽装していないケースで、pixさまのご認識ではレア。一方で、模範解答にある「User-Agentヘッダフィールドの値がA社で利用しているWebブラウザを示す値」という状況は、攻撃者が送信元を偽装しているケースで、pixさまのご認識では大半のケースで偽装はされる。
  ということでしょうか。

  そう思ってあらためて設問をみると、Agentヘッダフィールドに通常なにが記載されているのか、ということと、その値が偽装可能である、ということが問われているのだと理解しました。

  ところで、問題から少し離れてしまいますが「偽装されるUser-Agentヘッダフィールドの値は古いバージョンのブラウザのヘッダフィールドを偽装しているケースがよくあります。」との補足説明をいただいているのですが、攻撃者はなぜ古いバージョンのブラウザと見せかけるのかご存知でしょうか。設問に当てはめてみると、A社が利用しているブラウザが最新のバージョンだった場合、それに紛れるためには最新のバージョンに偽装しないといけないはずなのに、あえて古いバージョンに偽装したら、A社で利用しているWebブラウザを示す値と(微妙に)異なる値になってしまう気がしました。マルウェアは使用されているブラウザの種類やバージョンを調べたうえで、それに紛れるように偽装するのが合理的なきがしたのですが、いかがでしょうか。
2023.04.07 13:41
pixさん 
SC ダイヤモンドマイスター
(No.4)
>確認ですが、設問にある「User-Agentヘッダフィールドの値が”curl/7.64.0”の
>HTTPリクエスト」という状況は攻撃者が送信元を偽装していないケースで、pixさまの
>ご認識ではレア。一方で、模範解答にある「User-Agentヘッダフィールドの値がA社で
>利用しているWebブラウザを示す値」という状況は、攻撃者が送信元を偽装しているケースで、
>pixさまのご認識では大半のケースで偽装はされる。
これは試験なので、あえて分かりやすくUser-Agentヘッダフィールドの値を偽装していない
ケースを挙げています。
もし試験でUser-Agentヘッダフィールドの値を偽装した場合の判別方法が設問にだされたら
誰も答えることはできないでしょう。


>ところで、問題から少し離れてしまいますが「偽装されるUser-Agentヘッダ
>フィールドの値は古いバージョンのブラウザのヘッダフィールドを偽装している
>ケースがよくあります。」と
>の補足説明をいただいているのですが、攻撃者はなぜ古いバージョンのブラウザと
>見せかけるのかご存知でしょうか。
わざと古いバージョンに見せかけているではありません。
不正アクセスツールを作成した時点でのメジャーなブラウザのヘッダーフィールドを
偽装しているからと推測されます。

こういった不正アクセスツールは
・不正アクセスツールを作成する人間
・不正アクセスツールを利用する人間
が別にいます。
不正アクセスツールを利用する人間はツールを利用しているだけなので、
不正アクセスツールが過去に作成されたものであれば、不正アクセスツールが
偽装するUser-Agentヘッダフィールドの値も古いままであると考えられます。

それと比べてGoogle Chromeなどのメジャーなブラウザは頻繁にバージョンアップ
しますので、メジャーなブラウザの最新バージョンを押さえておけば、
User-Agentヘッダフィールドが偽装されているか、そうでないかを判別する
ヒントになります。
2023.04.07 13:59
akiさん  
(No.5)
よくわかりました。
攻撃者は侵入してから、当該端末のブラウザのバージョンを調査しているわけではなさそうですね。
勉強になります。いつもありがとうございます。
2023.04.07 14:23
GinSanaさん 
SC ブロンズマイスター
(No.6)
>攻撃者はなぜ古いバージョンのブラウザと見せかけるのかご存知でしょうか

実際は、そこらへんでググって出てくるバージョンだからですね。
# 前に、CM打ちまくってる某フリマサイトにcurlでアクセスしたら弾かれたから、User-Agentに仕込んでcurlを投げたら
# ふつうにとってこれたことがありますが、それも適当に探したもんです。
まあ、なにがなんでも最新バージョンを使っているともいえないですが、ある程度離れていたらあやしいです。
2023.04.07 14:49
GinSanaさん 
SC ブロンズマイスター
(No.7)
ただ、そのバージョンの話をしだすと、seleniumのときはふつうに古いのなんてざらだからそれを不正というか?ってところは出てくるんですけどね。
2023.04.07 14:52

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop