CrowdStrike Blog:攻撃者が用いる方法論 ~ Staying off the Land | ScanNetSecurity
2020.11.30(月)

CrowdStrike Blog:攻撃者が用いる方法論 ~ Staying off the Land

今回は見逃されがちな概念である「Staying off the land」について考察してみたいと思います。このシンプルな概念は、侵害したホスト上で攻撃を実行するために用いるツールの使用を制限するという考え方です。

国際 海外情報
 攻撃側の手法としては、「Living off the land」や「Bring your own land」などがありますが、今回は見逃されがちな概念である「Staying off the land」について考察してみたいと思います。このシンプルな概念は、侵害したホスト上で攻撃を実行するために用いるツールの使用を制限するという考え方です。

 エンドポイントにおける検知と対応(EDR)やその他のセキュリティ製品は、既知の悪質なツールやLOLBASを探すことに力を注いでいます。そのため、アクティビティを可能な限りホストの外で実行する方法により、攻撃者は発見される可能性を大幅に低減させることができます。このブログでは、このサイバー攻撃手法をサポートする一般的なテクニックやツールについて説明します。TTP(戦術、テクニック、手順)では、主にActive Directory(AD)環境に力点が置かれています。

初期アクセス

 攻撃者がホストにリモートからアクセスするには、何らかの悪質なソフトウェアを導入するか、ホストの既存のソフトウェアを使用してコマンドアンドコントロール(C2)チャネルの初期設定を行う必要があります。通常、これはリモートアクセス型トロイの木馬(RAT)などを使用したコールバックの形態で行われます。RATの多くはスタンドアロンのバイナリ、シェルコード、スクリプトとして、あるいはこれらを組み合わせた形で配信される悪質なソフトウェアです。その目的は、攻撃者と被害者の間にC2コミュニケーションのためのチャネルを確立することです。

 成熟したRATの多くは、侵害したホスト上にSOCKSプロキシを作成するために必要な機能を提供し、確立されたC2チャネルを介して攻撃者がこのプロキシにアクセスできるようにします。SOCKSプロキシを使用すると、ほとんどのネットワークトラフィックをプロキシ経由でトンネリングし(通常はTCPパケットのカプセル化を行う)、ネットワーク間で送受できるようになります。RATを入手し、SOCKSプロキシが作成されると、攻撃者はそれを利用して、侵害したホストを被害企業のネットワークにつながる「土管」へと変えてしまいます。攻撃者はこの方法でアクセスを確保することで、追加のツールをホストに持ち込むことなく、さまざまな悪質な活動を可能にします。侵害されたホストは、被害企業のネットワークにつながるパイプの役割を果たし、ネットワーク内のすべてのリソースへのアクセスを攻撃者に許してしまいます。

CrowdStrike Blog:攻撃者が用いる方法論 ~ Staying off the Land
探索

 足場を築いた攻撃者は、次に環境情報の列挙を開始します。一般的な列挙のテクニックは、侵害されたホストではなく、攻撃者のシステムから実行されます。被害企業のネットワーク内のトラフィックを誘導するには、ProxyChainsのようなツールを使用します。それにより、LD_PRELOADを使ってアプリケーションを対応付けて、特定のSOCKSプロキシを介してネットワークトラフィックを通過させます。

 この手法では、侵害されたホスト上にツールをほぼ置かずに済みますが、セキュリティチームに察知される可能性のある痕跡は他にも数多く存在します。そのため、この手法を採用する攻撃者は、運用中のセキュリティ全般と、ネットワークの観点からも生成される可能性のある痕跡に注意することになります。たとえば、複数のセキュリティチームは、「kali」(攻撃者やレッドチームのセキュリティ専門家が使用する一般的なLinuxディストリビューション)というソースホスト名を使うプロトコルを監視することで、攻撃を簡単に検出することに成功しています。

 BloodHoundはAD環境情報の列挙によく使用される一般的なツールです。PythonバージョンのBloodHoundデータコレクタが存在しますが、これをProxyChainsと実行することで、ADオブジェクト(ユーザー、グループ、コンピューターなど)、ローカル管理者、ユーザーセッションなどを含むほとんどの標準的なBloodHoundデータセットを収集できます。攻撃者のマシンから実行できる一般的な列挙の方法としては、ポートスキャンなしでサービスを特定するSPNスキャン、読み取りや書き込みが可能な共有ファイルを特定するファイル共有列挙、およびWebサービスのフィンガープリンティングなどもあります。

権限昇格

 権限昇格フェーズでは、攻撃者は環境内で複数のツールを使用して、昇格した権限を獲得します。攻撃者らは、ProxyChainsでツールをラップしてSOCKSプロキシを通す方法を用い、次のような一般的なツールを使用した特権取得を可能にします。

・Kerberoasting攻撃:GetUserSPN
・ASReproasting攻撃:GetNPUsers
・NTLM relaying(中間者攻撃):NTLMRelayx
・パスワードスプレー攻撃:Spray
・EternalBlue攻撃:MS17-010 POC

 お気づきのように、上記のツールの大半はImpacket内に存在します。Impacketは、攻撃のあらゆるフェーズに広範な攻撃機能を提供するサンプル(example)ツールが多数格納される包括的なライブラリです。

水平展開

 必要な権限を獲得した攻撃者は、多くの場合、新しいホスト上にバックアップ用に追加のC2チャネルを確立します。あるいは、水平方向に移動して、他のホストの情報を列挙し、目的のすべてを達成するために必要な認証情報や機密情報を収集しようとします。ほとんどのWindowsホストには、SMBやRPC(WMIを含む)やRDPなどのプロトコルを使用してリモートからアクセスできます(RDPはユーザーに停止されたりフォレンジックアーチファクトが生成される可能性があるため望ましくない)。

 SMBのファイル転送プロトコルは、悪質なファイルをホストにアップロードしたり、ホストから機密データを取得する目的で使用できます。SambaのsmbclientやImpacketのsmbclientなどのツールを利用して、攻撃者らは、侵害したホストを経由し、有効な認証情報を使用してファイルを別のホストにアップロードまたはダウンロードできるようにします。SMBプロトコル経由でRPCを使用してスケジュールされたタスクを作成し、Impacketのservicesなどのツールを使用してコマンドやコードを実行させることができます。RPC経由のDCOM/WMIは、dcomexecwmiexecなどのツールでコマンドを実行する場合にも使用できます。

 これらのツールの中には、リモートホスト上にファイルを作成する機能を備えるものもあります。ただし、これは「Staying off of the land」の手法としては無意味です。wmiexecはその一例です。WMIは、Win32_Processクラスを呼び出してリモートホスト上でコマンドを実行するために使用できます。このクラスは、WMIを介したコマンドの出力を返しません。Wmiexecを使用すると、標準出力をディスク上のファイルにリダイレクトし、そのファイルをSMB経由で取り込んでコマンド出力を読み取ることにより、コマンドの出力を表示できます。これは、wmiexecをインタラクティブに実行しないよう指示することで回避できます。常にツールが「内部で」何をしているかを完全に理解することが重要です。そのため、使用前にすべてのツールについて完全なコードレビューを実施する必要があります。

攻撃パスの例

・攻撃者が、Bobという名前のユーザーをOneDriveの偽のログインページにおびき寄せます。そこで彼はサインインを行い、悪質なドキュメントをダウンロードします。

・そのドキュメントを開くと、Bobのワークステーション上でCobalt Strike Beaconが実行され、SOCKSプロキシが作成されます。

・この攻撃者は、OneDriveの偽のログインページで取得したBobの認証情報を使用して、ドメインコントローラーに対してASReproasting攻撃を行います。
proxychains GetNPUsers.py lab.local/bob -request -dc-ip $IPofDC -format hashcat -outputfile ASRepRoast.txt

・攻撃者は、hashcatを使用して、bkp-admアカウントのサービスアカウントへのパスワードを破ります。
hashcat -m 18200 ASRepRoast.txt -a 3 wordlist.txt

・攻撃者がBloodHoundコレクタを実行し、ADオブジェクトを列挙して、bkp-admユーザーがNJ-Backup-Adminsグループに属することを突き止めます。
proxychains bloodhound-python -d lab.local -u bkp-adm -c all -v --dns-tcp

・攻撃者はBloodHoundデータを確認し、NJ-Backup1という名前のホストを発見します。bkp-admの認証情報を使用して、NJ-Backup1からローカル管理者のNTLMハッシュ(RID 500)を取得します(secretsdump.pyはホスト上にレジストリハイブの一時ファイルを作成します)。
proxychains secretsdump.py lab.local/bkp-adm@nj-backup1

・攻撃者はプレフィックス「NJ-」を持つ他のホストを探し、NJ-Web1を発見します。

・攻撃者は、NJ-Backup1から取得したローカル管理者の認証情報を使用して、NJ-Web1への認証に成功します。
proxychains smbclient.py -hashes :$LocalAdminHash ./administrator@nj-web1

・攻撃者はファイルシステムを調べて、LA-QSL1上の c:\inetpub\wwwroot\web.config にMS SQLユーザーprod-dbaの認証情報を含む接続文字列を見つけます。
#From existing smbclient session
use c$
get \inetpub\wwwroot\web.config

・攻撃者は、prod-dba SQLアカウントを使用して、LA-SQL1上のMS SQLインスタンスと列挙されたデータベースに接続します。
proxychains mssqlclient.py prod-dba@la-sql1

・攻撃者は顧客データベースをダンプし、顧客のクレジットカードと個人情報(PII)の完全なリストを手に入れます。

CrowdStrike Blog:攻撃者が用いる方法論 ~ Staying off the Land
まとめ

 上記の攻撃シナリオのように、攻撃者は被害企業のネットワーク内の1台のワークステーションにアクセスし、それを糸口に完全な攻撃を実行し、貴重な資産を手に入れることができます。この攻撃パスでは、攻撃者が目的を達成するために、悪質なツールを導入したり、侵害したホスト上の既存のバイナリを悪用する必要はありません。このタイプの攻撃パスは検出されないというわけではありません。実際、適切な兆候を見つけることができれば、この攻撃の多くの面を探り出すことも可能です。

 この「Stay off the land」という方法論は、侵害したホスト上で悪質な活動を行わないようにすることにより、潜在的な兆候が発生して警戒を呼ばないようにするものです。この方法論は、すべてのシナリオにおいて最適ではないものの、攻撃者が新たに手に入れた戦略であると考えられます。

追加のリソース

・御社のサイバーセキュリティ体制の強化をCrowdStrikeがどのように支援できるかについては、CrowdStrike ServicesのWebページをご覧ください。

Webページでは、パワフルなCrowdStrike Falconプラットフォームの詳細について説明しています。

・CrowdStrikeの次世代型AVをお試しください。Falcon Preventの無料トライアル版をすぐに試してみましょう。

*原文はCrowdStrike Blog サイト掲載 :https://www.crowdstrike.com/blog/staying-off-the-land-methodology/
《Red Team Lab (CrowdStrike)》

関連記事

Scan PREMIUM 会員限定記事

もっと見る

Scan PREMIUM 会員限定記事特集をもっと見る

カテゴリ別新着記事

★★10/15~11/30迄 創刊22周年記念価格提供中★★
★★10/15~11/30迄 創刊22周年記念価格提供中★★

2020年10月15日(木)~11月30日(月) の間 ScanNetSecurity 創刊22周年記念価格で提供。

×