攻撃者が内部ネットワーク(※1)へ侵入した場合、いつ、どこから、どのように、内部ネットワークへ侵入したのか?といった観点の調査を行います。これは全容解明や再発防止の観点等からも重要な調査となります。これらの調査は、感染マシン内のログや、ネットワーク機器のログなどから攻撃者が残した痕跡を多数収集し、それらを組み合わせることで類推されます。ところが、ここで取り上げる手法(RDP over SSH)を悪用して攻撃者が侵入して来た場合、感染マシン内のログから十分な情報得られません。必然的にネットワーク機器のログ(主に Proxy ログ)から類推するようになります。しかし、以下の3つの項目が存在しない場合、それすらも困難となる恐れがあります。正確な調査が行えないため、再発防止策も不十分となり、最悪の場合、同じ手法で再侵入を許してしまうといった事態になりかねません。そのような事態を避けるためにも、以下の3つの項目をログへ記録することをお勧めいたします。
- ユーザーエージェント(UserAgent)
- 送信/受信バイト(in-Bytes, out-Bytes)(※2)
- メソッド(method)
1.攻撃者による遠隔操作手法の変化
攻撃者は企業のマシンをマルウェアに感染させることで、内部ネットワークへの侵入を試みます。侵入後はマルウェア感染マシンからインターネット上の攻撃者が用意した攻撃サーバ(※3)へ接続し、感染マシンを遠隔操作します。これまではコマンドを用いた遠隔操作が多く見受けられましたが、昨今ではそれ以外にも特殊な手法(RDP over SSH)を用いたリモートデスクトップ(RDP)で遠隔操作する方法も見受けられます。
図1:コマンドによる遠隔操作
図2:RDP による遠隔操作
2.インターネットから内部ネットワークへ RDP 接続を行う方法
内部ネットワークのマシンへインターネットから直接RDP接続を行うことは、ファイアウォールで制限されている、多要素認証を用いている等、何かしらのセキュリティ対策を行っていると思います。攻撃者もこれらのセキュリティ対策を回避しつつ正面から攻略することは困難です。
ところがトンネリング技術を用いることで、インターネットから内部ネットワークのマシンへ直接RDP 接続が可能となります。以下は攻撃者も実際に悪用しているトンネリング技術の 1つである SSH トンネル(※4)を用いた RDP 接続(RDP over SSH)(※5)の概要です。感染マシンは内部ネットワークに存在し、攻撃サーバはインターネットに存在していることを想定しています。
(1)感染マシン(内部ネットワーク)から攻撃サーバ(インターネット)の 443/TCP 宛てに SSH 通信を用いたトンネルを作成します。443/TCP は一般的に HTTPS が利用します。多くの場合、内部ネットワークからインターネットへの HTTPS は制限していないため、Proxy, Firewall を越えて、この SSH 通信は成功し SSHトンネルが作成されます。
図3:感染マシンから攻撃サーバへ SSH トンネルを作成
(2)作成された SSH トンネルを利用し攻撃サーバから感染マシンへ SSH とは逆方向に RDP 接続します。既に作成されたトンネルの中を利用するため、インターネットから内部ネットワークへの通信であるにも関わらず、この RDP 接続は成功します。
図4:攻撃サーバから感染マシンへ RDP 接続
(3)接続成功後は、通常の RDP と変わりなく感染マシンを遠隔操作可能です。(※6)
図5:攻撃サーバから感染マシンを RDP で遠隔操作
3.RDP over SSH は Windows イベントログに攻撃サーバの IP アドレスが記録されない
感染マシンへの RDP 接続について詳しく見ると、攻撃サーバからの RDP 通信は感染マシン内部で 一度 SSH ツールを経由します。そのため接続を受け取る RDP サービスからは SSHツールから接続してきているように見えてしまいます。これにより、本来は Windows イベントログへ攻撃サーバの IP アドレスが記録されるはずが、SSH ツールが実行されている感染マシン自身を表す IP アドレス情報等(※7)が記録されます。この事象により、本当に接続している攻撃サーバの IP アドレスが Windows イベントログからは確認できなくなります。
攻撃サーバから感染マシンへ直接 RDP 接続された場合は、 Windows イベントログへ攻撃サーバの IP アドレスが記録されます。
図6:直接RDP接続するケース
攻撃サーバは感染マシン内の SSH ツールを経由して RDP 接続されるため、Windows イベントログには、感染マシン自身の情報が記録され、攻撃サーバの IP アドレスは記録されません。
図7: SSH経由でRDP接続するケース
図8:感染マシン自身を示す情報が記録された Windows イベントログ
4.RDP over SSHの特殊な Proxy ログ
RDP over SSH は Proxy ログの記録も特殊で、一見すると単なる HTTPS 通信にしか見えません。また、コマンドを用いた遠隔操作の場合、マルウェアに対して短時間の間に複数の通信が記録されるなどの特徴があります。ところが、RDP over SSHの場合、RDP 接続1回につき1行しか記録されません。例えば、攻撃サーバが感染マシンへRDP を利用して24時間遠隔操作していたとしても、RDP 接続が 1回だけの場合、Proxy ログにも1行しか記録されません。
図9:コマンドによる遠隔操作時の Proxy ログ
図10:RDP over SSH による遠隔操作時のProxy ログ
5.3つの項目の重要性
RDP over SSH の特殊な Proxy ログ、つまり、このたった1行のログを見逃さないために必要な項目が、ユーザーエージェント、送信/受信バイト、メソッドの3つ項目です。これらの項目の記録内容を3つ組み合わせて調査することで、攻撃サーバとの通信を発見できる可能性が高まります。
図11:RDP over SSH の Proxy ログ
※RDP over SSH を用いて約900Mのファイルを受信した Proxy ログ
1.ユーザーエージェント(UserAgent)
ユーザーエージェントはブラウザなどがサーバへアクセスする際に、裏側で自動送信されているHTTP環境変数と呼ばれるものです。ユーザーエージェントはブラウザだけではなく HTTP 通信を行う多くのツールで自動的に送信しています。ところが RDP over SSH 接続は、ユーザーエージェントが空欄であるなど、感染マシンにとっては不自然な値になります。
RDP over SSH の場合、Proxy ログには、SSH ツールのアクセスログが残ります。SSH 通信は、当然ながら HTTP 通信ではないため意図して設定しない限り、ユーザーエージェントの値は空欄となります。もし仮に意図的に設定したとしても、感染マシンが平常時に用いている値とは異なることが多く不自然さが残ります。
2.送信/受信バイト(in-bytes, out-bytes)
RDP 接続時はデータを常時送受信しているため、必然的に送信バイト、受信バイトが、共に大きくなります。遠隔操作時に攻撃者が不正にファイルを取得している場合はさらに大きくなります。HTTPS通信も大容量のファイルをダウンロードやアップロードするなどによって送信/受信バイトが大きくなることもありますが、ダウンロードやアップロードサービスを提供していないサイト、もしくはホームページサービスを提供していないサーバに対して大容量の送受信を行うといった不自然さが残ります。なお、送信/受信バイトの合計を1項目に記録するのではなく、それぞれを分けて記録することが大切です。
3.メソッド(method)
RDP over SSH を行う場合のメソッドは必ず“CONNECT”になります。
HTTPS 通信も“CONNECT”になりますが、少なくても HTTP 通信時に発生する“GET”、“POST”、“HEAD”などは除外して絞り込むことができます。Proxy ログ量は膨大になりがちです。ログ量に比例して調査時間も膨大になります。また、見落としの恐れも大きくなります。よって、絞り込める情報は1つでも多い方が、調査時間の短縮やより正確な調査に寄与します。
6.まとめ
攻撃者は常に便利で楽で効率の良い、つまり低コストの手法を好んで悪用します。悪用する手法は新技術もあれば、これまで積極的に悪用してこなかっただけの既存の技術もあります。手法は常に変化しますが、攻撃の際に Proxy を通過する以上、適切な設定がしてあれば Proxy ログはまだまだ有効でとても強力なインシデント対応の武器として活躍します。今回取り上げた内容が、インシデント対応の一助となれば幸いです。
ここでは、イントラネット、ローカルネットワーク、社内ネットワークなど、ファイアウォール等で防御している内側のネットワークを指しています。
送信バイト、受信バイトの合計を1項目に記録するのではなく、送信バイトで1項目、受信バイトで1項目、計2項目必要と考えてください。
ここでは、攻撃者がマルウェア感染端末を遠隔操作するためのサーバを指しています。
C&Cサーバ、C2サーバ、Command and Control サーバ等と呼ばれます。
SSH ポートフォワード(SSH ポートフォワーディング)とも呼ばれます。
また、今回のように SSH 接続後、逆方向に通信することを、厳密にはリバース SSH トンネルと言います。なお、“CONNECT”メソッドの利用を禁止しているネットワークでは、この手法は使えません。
SSH トンネルを利用するのは RDP だけではなく、多くのサービスで利用できます。
例えば FTP で SSH トンネルを使えば FTP over SSH となります。
このように トンネル技術は特別に新しいものではありませんが、ここ1~2年で遠隔操作に悪用するケースが見受けられるようになりました。
RDP ログインするための認証情報(ID/PW) は、マルウェア感染時や、コマンドによる遠隔操作時など、何かしらの方法で攻撃者へ漏洩し、その後 RDP へ切り替えます。
ループバックアドレス(127.0.0.1, ::1)や LOCAL といった感染マシン自身を示す情報。