株式会社ラック

トップレベルのセキュリティ技術を駆使した
ITトータルソリューションで、未来をきり拓く

セキュリティ事故発生時はこちら
閉じる

ご相談は予約不要、24時間対応

緊急対応窓口:サイバー救急センター®

セキュリティに係るお客様の緊急事態に際し迅速にお客様をご支援する緊急対応サービスです。
緊急事態が発生したら今すぐ「サイバー救急センター」にご相談ください。

電話で相談する

メールで相談する

サイバー救急センター®のメールアドレス

自分で調べる

LAC WATCH
2020年02月12日 | ラックピープル

オープンソースのポート転送/トンネリングツールを悪用する標的型攻撃に注意

ラックの石川です。
2019年ごろから、標的型サイバー攻撃の中に、オープンソースのポート転送やトンネリングツールを悪用して侵入先のPCにリモートデスクトップ(RDP)接続する事例を複数確認しています。

ポート転送とは、特定のポート番号で受信したデータを別のIPアドレス・ポート番号に転送することです。一方、トンネリングは、データを別のIPアドレス・ポート番号に送るという点ではポート転送に似ていますが、違うプロトコルでデータを包む点が異なります。これらの機能を悪用すると、通常はファイアウォールのアクセス制御によりインターネット上からアクセスできない社内のサーバやPCへのアクセスが可能となります。図1は、SSHのポート転送を利用してPCとC2間のトンネルを作成し、リモートデスクトップ接続を行うイメージです。PCからのSSH通信を利用して、外部のC2サーバとコネクションを確立し、確立できた通信経路(トンネル)を利用して、PCへリモートデスクトップ接続しています。

SSHのポート転送を利用してリモートデスクトップ接続を実行するイメージ

図1 SSHのポート転送を利用してリモートデスクトップ接続を実行するイメージ

ポート転送/トンネリングツールは、通信が制限されている環境において、必要な通信を通すことができる利便性の高いツールです。しかし、攻撃者に悪用されることで、同じ利便性を攻撃者に提供してしまう恐れがあります。また、リモートデスクトップサービスと組み合わせると、ネットワーク環境内を横展開する方法として悪用される危険性が高まります。

以下では、日本を標的とした攻撃で確認した、3種類のオープンソースのツールを利用してリモートデスクトップ接続を試みる例を紹介します。

ポート転送/トンネリングツールを利用したリモートデスクトップ接続

1. chiselを悪用した攻撃手法

chisel※1は、WebSocketを使用したTCPトンネリングツールであり、Go言語で作成されています。また、トンネリング通信はSSHで暗号化されています。図2は、chiselを実行し、ヘルプを表示させた画面です。chiselは、単一の実行ファイルでクライアントとサーバ両方の機能が含まれており、"command"引数に"server"または"client"を指定することで、それぞれのモードで実行できます。

※1 GitHub - jpillora/chisel: A fast TCP tunnel over HTTP

chiselの実行画面

図2 chiselの実行画面

図3は、chiselを利用して、攻撃者のC2サーバから被害者のPC-Aへポート転送し、リモートデスクトップ接続を行うイメージです。このイメージでは、chisel clientをPC-A(192.168.10.20)で実行させ、プロキシ(192.168.10.33:3128)経由でchisel serverが動作するC2サーバ(192.168.10.55:443)にアクセスし、トンネルを作成します(①)。攻撃者は、リモートポート転送で設定したC2サーバの1234/TCP(192.168.10.55:1234)にアクセス(②)することで、被害者のPC-A上のリモートデスクトップに接続(③)できます。

chiselを利用したリモートデスクトップ接続のイメージ

図3 chiselを利用したリモートデスクトップ接続のイメージ

図3のトンネル(①)を作る際にchisel client側で実行したコマンドは、図4に示す通りです。

赤:実行モード橙:プロキシサーバ青:接続先のアドレス
緑:ポート転送の設定 [待ち受けポート番号]:[接続先のアドレス]:[接続先で待ち受けるポート番号]

chisel clientのコマンド実行例

図4 chisel clientのコマンド実行例

また、chisel server側で実行したコマンドは図5に示す通りです。

赤:実行モード青:待ち受けポート番号緑:ポート転送設定

chisel serverのコマンド実行例

図5 chisel serverのコマンド実行例

図6は、攻撃者が、C2サーバの1234/TCPへアクセスし、PC-A(192.168.10.20)にリモートデスクトップ接続した後、コマンドプロンプトを起動して"ipconfig"コマンドを実行した画面です。

C2から被害者のPC-Aにリモートデスクトップ接続した後の画面

図6 C2から被害者のPC-Aにリモートデスクトップ接続した後の画面

2. frpを悪用した攻撃手法

frp※2は、TCP、UDP、HTTPおよびHTTPSプロトコルをサポートした、リバースプロキシ機能を提供するツールです。frpは、クライアント(frpc)とサーバ(frps)の2つの実行ファイルで構成されます。図7は、frpcおよびfrpsを実行し、ヘルプを表示させた画面です。

※2 GitHub - fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.

frpの実行画面(frpc)

frpの実行画面(frps)

図7 frpの実行画面(上:frpc/下:frps)

図8は、frpを利用して、攻撃者のC2サーバから被害者のPC-Aを経由してPC-Bへポート転送し、リモートデスクトップで接続するイメージです。この例では、frpcをPC-A(192.168.10.20)で実行させ、プロキシ (192.168.10.33:3128)経由でfrpsが動作するC2サーバ(192.168.10.55:443)へアクセスし、トンネルを作成します(①)。攻撃者は、リモートポート転送で設定したC2サーバの1234/TCP(192.168.10.55:1234)へアクセス(②)することで、PC-Aを踏み台として、被害者のPC-B(192.168.10.30)上のリモートデスクトップへ接続(③)できます。

frpを利用したリモートデスクトップ接続のイメージ

図8 frpを利用したリモートデスクトップ接続のイメージ

次に、図8のトンネルを作る際にPC-A側(frpc)およびC2側(frps)で実行したそれぞれのコマンドは、図9に示す通りです。

赤:設定ファイル(図10)、青:待ち受けポート番号

frpの実行例(frpc)

frpの実行例(frps)

図9 frpの実行例(上:frpc/下:frps)

設定ファイル(frpc.ini)

図10 設定ファイル(frpc.ini)

図11は、攻撃者が、C2サーバの1234/TCPへアクセスし、PC-Aを経由してPC-B(192.168.10.20)にリモートデスクトップ接続した後、被害者のPC-Bでコマンドプロンプトを起動して"ipconfig"コマンドを実行している画面です。

C2から被害者のPC-Bへのリモートデスクトップ接続した後の画面

図11 C2から被害者のPC-Bへのリモートデスクトップ接続した後の画面

3. PuTTY(plink)を悪用した攻撃手法

PuTTY※3は、Simon Tatham氏が開発したオープンソースのSSHクライアントの1つであり、plinkは、PuTTYのコマンドラインツールです。図12は、plinkを実行し、ヘルプを表示させた画面です。

※3 Download PuTTY - a free SSH and telnet client for Windows

plinkの実行画面(一部抜粋)

図12 plinkの実行画面(一部抜粋)

図13は、plinkを利用して、攻撃者のC2サーバから被害者のPC-Aへポート転送し、リモートデスクトップ接続を行うイメージです。このイメージでは、plinkをPC-A(192.168.10.20)で実行させ、SSHサービスが有効なC2サーバ(192.168.10.55:22)にアクセスし、トンネルを作成します(①)。攻撃者は、リモートポート転送で設定したC2サーバの1234/TCP(192.168.10.55:1234)にアクセス(②)することで、被害者のPC-A上のリモートデスクトップに接続(③)することができます。

plinkを利用したリモートデスクトップ接続のイメージ

図13 plinkを利用したリモートデスクトップ接続のイメージ

このplinkを悪用したサイバー攻撃については、2019年1月に公開されたFireEye社のブログ※4でも詳しく紹介されていますので、plinkの実行コマンドやWindowsネットワークシェルコマンド(netsh)を利用したポート転送については、そちらをご覧ください。

※4 Bypassing Network Restrictions Through RDP Tunneling | FireEye Inc

攻撃痕跡の確認方法

今回紹介したポート転送やトンネリングツールが利用された場合には、レジストリキーやイベントログにいくつか関連する痕跡が残ります。以下にその痕跡を確認する方法(一例)を紹介します。

レジストリキー

PuTTY(plink)でSSHを利用した場合、図14のようなレジストリキーが作成されます。レジストリキーに含まれるSSHの接続先等を確認し、意図したツールの利用かご確認ください。

PuTTY(plink)の利用痕跡

図14 PuTTY(plink)の利用痕跡

イベントログ

ポート転送/トンネリングツールを利用してリモートデスクトップ接続を行った場合は、リモートデスクトップ接続先のPCのイベントログに図15および図16に示すようなイベントログが残ります。これらのログに残された痕跡が、意図したものかご確認ください。図15は、図3で紹介したchiselを利用したケースのPC-Aのセキュリティログの一部抜粋です。リモートログオン(イベントID:4624、ログオンタイプ:10)でソースネットワークアドレスには、赤枠線で囲むループバック(127.0.0.1)または自身のIPアドレスが記録されます。

セキュリティログ(イベントID:4624、ログオンタイプ:10)の一部抜粋

図15 セキュリティログ(イベントID:4624、ログオンタイプ:10)の一部抜粋

図16は、先ほどと同様のケースで記録されたMicrosoft-Windows-TerminalServices-LocalSessionManager/Operationalログの一部です。リモートデスクトップ セッションサービスのログオン成功(ID:21)およびセッションの再接続(ID:25)でソースネットワークアドレスには、赤枠線で囲んだループバック(127.0.0.1)または自身のIPアドレスが記録されます。なお、図7で紹介したfrpを利用してPCを踏み台として他のPC(PC-AからPC-B)へリモートデスクトップ接続を行った場合は、いずれのイベントログのソースネットワークアドレスにおいても、踏み台となったPC-AのIPアドレスが記録されます。

Microsoft-Windows-TerminalServices-LocalSessionManagerログの一部抜粋

Microsoft-Windows-TerminalServices-LocalSessionManagerログの一部抜粋

図16 Microsoft-Windows-TerminalServices-LocalSessionManagerログの一部抜粋

ファイル

frpは、設定ファイル(frpc.ini)を利用して実行するため、この設定ファイルの有無をご確認ください。例えば、拡張子が"ini"であるファイルに対して、特徴的な文字列(例:"remote_port"や"server_addr")が含まれていないか検索するのがよいでしょう。

リモートデスクトップを利用する場合はアクセス制御を

近年、攻撃者がポート転送/トンネリングツールを悪用して外部からリモートデスクトップ接続を行い、ネットワーク環境内を自由に横展開しているケースを多く見かけますが、正規のポート転送/トンネリングツールは、ウイルス対策ソフトなどのセキュリティ対策ソフトウェアでは検知が困難なのが現状です。

今回紹介したツール以外にも、インターネット上には様々なポート転送/トンネリングツールが公開されており、攻撃者は今後も正規のポート転送/トンネリングを悪用して攻撃を仕掛けてくることが予想されます。このような脅威を未然に防いだり緩和したりするためにも、現在使用しているPCでリモートデスクトップサービスを利用する必要があるかを再確認し、リモートデスクトップサービスを利用する場合は、「リモートデスクトップ接続でログインできるユーザを限定」、「ネットワークレベル認証(NLA)でのみアクセスを許可※5」、「接続元の制限」などのアクセス制御を実施することが重要です。

※5 リモート デスクトップ - PC へのアクセスを許可する | Microsoft Docs

この記事は役に立ちましたか?

はい いいえ