mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 12:43:23 +00:00
Translated ['macos-hardening/macos-security-and-privilege-escalation/mac
This commit is contained in:
parent
6d5f012968
commit
06984499b4
4 changed files with 219 additions and 110 deletions
|
@ -6,14 +6,28 @@
|
|||
|
||||
Drugi načini podrške HackTricks-u:
|
||||
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Otkrijte [**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>
|
||||
|
||||
### [WhiteIntel](https://whiteintel.io)
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokretan **dark web-om** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **kompromitovani** od strane **malvera koji krade podatke**.
|
||||
|
||||
Primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i napada ransomware-a koji proizilaze iz malvera koji krade informacije.
|
||||
|
||||
Možete posetiti njihovu veb stranicu i isprobati njihovu mašinu za **besplatno** na:
|
||||
|
||||
{% embed url="https://whiteintel.io" %}
|
||||
|
||||
---
|
||||
|
||||
## Statistička Analiza
|
||||
|
||||
### otool
|
||||
|
@ -32,6 +46,8 @@ objdump -m --full-contents /bin/ls # Dump every section
|
|||
objdump -d /bin/ls # Dissasemble the binary
|
||||
objdump --disassemble-symbols=_hello --x86-asm-syntax=intel toolsdemo #Disassemble a function using intel flavour
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### jtool2
|
||||
|
||||
Ovaj alat može se koristiti kao **zamena** za **codesign**, **otool** i **objdump**, i pruža nekoliko dodatnih funkcija. [**Preuzmite ga ovde**](http://www.newosxbook.com/tools/jtool.html) ili ga instalirajte pomoću `brew`.
|
||||
|
@ -51,7 +67,7 @@ ARCH=x86_64 jtool2 --sig /System/Applications/Automator.app/Contents/MacOS/Autom
|
|||
# Get MIG information
|
||||
jtool2 -d __DATA.__const myipc_server | grep MIG
|
||||
```
|
||||
### Potpisivanje koda / ldid
|
||||
### Codesign / ldid
|
||||
|
||||
{% hint style="danger" %}
|
||||
**`Codesign`** se može pronaći u **macOS-u**, dok se **`ldid`** može pronaći u **iOS-u**
|
||||
|
@ -84,12 +100,12 @@ ldid -S/tmp/entl.xml <binary>
|
|||
```
|
||||
### SuspiciousPackage
|
||||
|
||||
[**SuspiciousPackage**](https://mothersruin.com/software/SuspiciousPackage/get.html) je alat koristan za inspekciju **.pkg** fajlova (instalatera) i videti šta se nalazi unutra pre instalacije.\
|
||||
Ovi instalateri imaju `preinstall` i `postinstall` bash skripte koje zlonamerni autori obično zloupotrebljavaju da bi **upornost** **malvera**.
|
||||
[**SuspiciousPackage**](https://mothersruin.com/software/SuspiciousPackage/get.html) je alat koji je koristan za inspekciju **.pkg** fajlova (instalatera) i da vidite šta se nalazi unutra pre instalacije.\
|
||||
Ovi instalateri imaju `preinstall` i `postinstall` bash skripte koje autori obično zloupotrebljavaju da **upornost** **malvera**.
|
||||
|
||||
### hdiutil
|
||||
|
||||
Ovaj alat omogućava da se **montiraju** Apple disk slike (**.dmg**) fajlovi radi inspekcije pre pokretanja bilo čega:
|
||||
Ovaj alat omogućava montiranje Apple disk slika (**.dmg**) fajlova radi inspekcije pre pokretanja:
|
||||
```bash
|
||||
hdiutil attach ~/Downloads/Firefox\ 58.0.2.dmg
|
||||
```
|
||||
|
@ -133,17 +149,17 @@ x64:
|
|||
|
||||
| **Argument** | **Registar** | **(za) objc\_msgSend** |
|
||||
| ----------------- | -------------------------------------------------------------- | ----------------------------------------------------- |
|
||||
| **1. argument** | **rdi** | **self: objekat na koji se metod poziva** |
|
||||
| **2. argument** | **rsi** | **op: ime metoda** |
|
||||
| **3. argument** | **rdx** | **1. argument metodu** |
|
||||
| **4. argument** | **rcx** | **2. argument metodu** |
|
||||
| **5. argument** | **r8** | **3. argument metodu** |
|
||||
| **6. argument** | **r9** | **4. argument metodu** |
|
||||
| **7.+ argument** | <p><strong>rsp+</strong><br><strong>(na steku)</strong></p> | **5.+ argument metodu** |
|
||||
| **1. argument** | **rdi** | **self: objekat na koji se metod poziva** |
|
||||
| **2. argument** | **rsi** | **op: ime metoda** |
|
||||
| **3. argument** | **rdx** | **1. argument metoda** |
|
||||
| **4. argument** | **rcx** | **2. argument metoda** |
|
||||
| **5. argument** | **r8** | **3. argument metoda** |
|
||||
| **6. argument** | **r9** | **4. argument metoda** |
|
||||
| **7.+ argument** | <p><strong>rsp+</strong><br><strong>(na steku)</strong></p> | **5.+ argument metoda** |
|
||||
|
||||
### Swift
|
||||
|
||||
Sa Swift binarnim fajlovima, s obzirom da postoji kompatibilnost sa Objective-C, ponekad možete izvući deklaracije koristeći [class-dump](https://github.com/nygard/class-dump/) ali ne uvek.
|
||||
Sa Swift binarnim fajlovima, budući da postoji kompatibilnost sa Objective-C, ponekad možete izvući deklaracije koristeći [class-dump](https://github.com/nygard/class-dump/) ali ne uvek.
|
||||
|
||||
Pomoću komandne linije **`jtool -l`** ili **`otool -l`** moguće je pronaći nekoliko sekcija koje počinju sa prefiksom **`__swift5`**:
|
||||
```bash
|
||||
|
@ -157,9 +173,9 @@ Mem: 0x100027064-0x1000274cc __TEXT.__swift5_fieldmd
|
|||
Mem: 0x1000274cc-0x100027608 __TEXT.__swift5_capture
|
||||
[...]
|
||||
```
|
||||
Možete pronaći dodatne informacije o **informacijama koje se čuvaju u ovim odeljcima u ovom blog postu**.
|
||||
Mo𝛂ете пронаћи додатне информације о [**информацијама сачуваним у овим одељцима у овом блог посту**](https://knight.sc/reverse%20engineering/2019/07/17/swift-metadata.html).
|
||||
|
||||
Štaviše, **Swift binarni fajlovi mogu imati simbole** (na primer, biblioteke moraju čuvati simbole kako bi se funkcije mogle pozvati). **Simboli obično sadrže informacije o imenu funkcije** i atributima na ružan način, pa su veoma korisni, i postoje "**demangleri"** koji mogu dobiti originalno ime:
|
||||
Осим тога, **Swift бинарни фајлови могу имати симболе** (на пример, библиотеке морају чувати симболе како би њихове функциј биле позване). **Симболи обично садрже информације о имену функције** и атрибутима на ружан начин, па су врло корисни и постоје "**деманглери"** који могу добити оригинално име:
|
||||
```bash
|
||||
# Ghidra plugin
|
||||
https://github.com/ghidraninja/ghidra_scripts/blob/master/swift_demangler.py
|
||||
|
@ -171,12 +187,12 @@ swift demangle
|
|||
|
||||
* Provera visoke entropije
|
||||
* Provera stringova (da li postoji skoro nijedan razumljiv string, pakovan)
|
||||
* UPX paket za MacOS generiše sekciju nazvanu "\_\_XHDR"
|
||||
* UPX paket za MacOS generiše seeveru nazvanu "\_\_XHDR"
|
||||
|
||||
## Dinamička analiza
|
||||
|
||||
{% hint style="warning" %}
|
||||
Imajte na umu da bi za debagovanje binarnih fajlova **SIP trebao biti onemogućen** (`csrutil disable` ili `csrutil enable --without debug`) ili kopirati binarne fajlove u privremenu fasciklu i **ukloniti potpis** sa `codesign --remove-signature <putanja-do-binarnog-fajla>` ili dozvoliti debagovanje binarnog fajla (možete koristiti [ovaj skript](https://gist.github.com/carlospolop/a66b8d72bb8f43913c4b5ae45672578b))
|
||||
Imajte na umu da bi za debagovanje binarnih fajlova, **SIP treba da bude onemogućen** (`csrutil disable` ili `csrutil enable --without debug`) ili da kopirate binarne fajlove u privremenu fasciklu i **uklonite potpis** sa `codesign --remove-signature <putanja-do-binarnog-fajla>` ili dozvolite debagovanje binarnog fajla (možete koristiti [ovaj skript](https://gist.github.com/carlospolop/a66b8d72bb8f43913c4b5ae45672578b))
|
||||
{% endhint %}
|
||||
|
||||
{% hint style="warning" %}
|
||||
|
@ -187,29 +203,29 @@ Imajte na umu da bi za **instrumentiranje sistemskih binarnih fajlova** (kao št
|
|||
|
||||
MacOS generiše mnogo logova koji mogu biti veoma korisni prilikom pokretanja aplikacije pokušavajući da razumete **šta radi**.
|
||||
|
||||
Osim toga, postoje neki logovi koji će sadržati oznaku `<private>` da bi **sakrili** neke **identifikacione** informacije o **korisniku** ili **računaru**. Međutim, moguće je **instalirati sertifikat da bi se otkrile ove informacije**. Pratite objašnjenja sa [**ovde**](https://superuser.com/questions/1532031/how-to-show-private-data-in-macos-unified-log).
|
||||
Osim toga, postoje neki logovi koji će sadržati oznaku `<private>` da bi **sakrili** neke **korisničke** ili **računarske** **identifikacione** informacije. Međutim, moguće je **instalirati sertifikat da biste otkrili ove informacije**. Pratite objašnjenja sa [**ovde**](https://superuser.com/questions/1532031/how-to-show-private-data-in-macos-unified-log).
|
||||
|
||||
### Hopper
|
||||
|
||||
#### Leva tabla
|
||||
|
||||
Na levoj tabli Hoppera moguće je videti simbole (**Oznake**) binarnog fajla, listu procedura i funkcija (**Proc**) i stringove (**Str**). To nisu svi stringovi već oni definisani u nekoliko delova Mac-O fajla (kao što su _cstring ili `objc_methname`).
|
||||
Na levoj tabli hoppera moguće je videti simbole (**Oznake**) binarnog fajla, listu procedura i funkcija (**Proc**) i stringove (**Str**). To nisu svi stringovi već oni definisani u nekoliko delova Mac-O fajla (kao što su _cstring ili `objc_methname`).
|
||||
|
||||
#### Srednja tabla
|
||||
|
||||
Na srednjoj tabli možete videti **dizasemblovani kod**. I možete ga videti kao **sirov** disasemblovani kod, kao **graf**, kao **dekompilirani** i kao **binarni** klikom na odgovarajuću ikonu:
|
||||
Na srednjoj tabli možete videti **dizasemblovani kod**. I možete ga videti kao **sirov** disasembl, kao **graf**, kao **dekompiliran** i kao **binarni** klikom na odgovarajuću ikonu:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (340).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Desnim klikom na objekat koda možete videti **reference ka/od tog objekta** ili čak promeniti njegovo ime (ovo ne funkcioniše u dekompiliranom pseudokodu):
|
||||
Desnim klikom na objekat koda možete videti **reference ka/od tog objekta** ili čak promeniti njegovo ime (ovo ne radi u dekompiliranom pseudokodu):
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1114).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Osim toga, u **sredini dole možete pisati Python komande**.
|
||||
Osim toga, u **sredini dole možete pisati python komande**.
|
||||
|
||||
#### Desna tabla
|
||||
|
||||
Na desnoj tabli možete videti zanimljive informacije kao što su **istorija navigacije** (da znate kako ste stigli do trenutne situacije), **pozivni grafikon** gde možete videti sve **funkcije koje pozivaju ovu funkciju** i sve funkcije koje **ova funkcija poziva**, i informacije o **lokalnim promenljivima**.
|
||||
Na desnoj tabli možete videti zanimljive informacije kao što su **istorija navigacije** (da znate kako ste stigli do trenutne situacije), **pozivni grafikon** gde možete videti sve **funkcije koje pozivaju ovu funkciju** i sve funkcije koje **ova funkcija poziva**, i informacije o **lokalnim varijablama**.
|
||||
|
||||
### dtrace
|
||||
|
||||
|
@ -218,7 +234,7 @@ Omogućava korisnicima pristup aplikacijama na izuzetno **niskom nivou** i pruž
|
|||
DTrace koristi funkciju **`dtrace_probe_create`** za kreiranje sonde za svaki sistemski poziv. Ove sonde mogu biti aktivirane na **ulaznoj i izlaznoj tački svakog sistemskog poziva**. Interakcija sa DTrace-om se odvija preko /dev/dtrace koji je dostupan samo root korisniku.
|
||||
|
||||
{% hint style="success" %}
|
||||
Da biste omogućili Dtrace bez potpune onemogućenosti SIP zaštite, možete izvršiti u režimu oporavka: `csrutil enable --without dtrace`
|
||||
Da biste omogućili Dtrace bez potpune onemogućenosti SIP zaštite, možete izvrš _na režim za oporavak: `__csrutil enable --without dtrace`
|
||||
|
||||
Takođe možete **`dtrace`** ili **`dtruss`** binarne fajlove **koje ste kompajlirali**.
|
||||
{% endhint %}
|
||||
|
@ -233,9 +249,9 @@ ID PROVIDER MODULE FUNCTION NAME
|
|||
43 profile profile-97
|
||||
44 profile profile-199
|
||||
```
|
||||
Ime sonde se sastoji od četiri dela: pružalac, modul, funkcija i ime (`fbt:mach_kernel:ptrace:entry`). Ako ne navedete neki deo imena, Dtrace će taj deo primeniti kao zamenski znak.
|
||||
Ime sonde se sastoji od četiri dela: pružalac, modul, funkcija i ime (`fbt:mach_kernel:ptrace:entry`). Ako ne navedete neki deo imena, Dtrace će primeniti taj deo kao zamenski simbol.
|
||||
|
||||
Da biste konfigurisali DTrace da aktivira sonde i specificira koje akcije treba izvršiti kada se aktiviraju, moraćemo koristiti D jezik.
|
||||
Da biste konfigurisali DTrace da aktivira sonde i specificira koje akcije izvršiti kada se aktiviraju, moraćemo koristiti D jezik.
|
||||
|
||||
Detaljnije objašnjenje i više primera možete pronaći na [https://illumos.org/books/dtrace/chp-intro.html](https://illumos.org/books/dtrace/chp-intro.html)
|
||||
|
||||
|
@ -299,7 +315,7 @@ ktrace trace -s -S -t c -c ls | grep "ls("
|
|||
```
|
||||
### ProcessMonitor
|
||||
|
||||
[**ProcessMonitor**](https://objective-see.com/products/utilities.html#ProcessMonitor) je veoma koristan alat za proveru akcija povezanih sa procesom koje proces obavlja (na primer, praćenje novih procesa koje proces kreira).
|
||||
[**ProcessMonitor**](https://objective-see.com/products/utilities.html#ProcessMonitor) je veoma koristan alat za proveru akcija povezanih sa procesima koje proces obavlja (na primer, praćenje novih procesa koje proces kreira).
|
||||
|
||||
### SpriteTree
|
||||
|
||||
|
@ -310,15 +326,15 @@ Potrebno je pratiti vaš Mac pomoću komande poput **`sudo eslogger fork exec re
|
|||
|
||||
### FileMonitor
|
||||
|
||||
[**FileMonitor**](https://objective-see.com/products/utilities.html#FileMonitor) omogućava praćenje događaja sa datotekama (kao što su kreiranje, izmene i brisanje), pružajući detaljne informacije o tim događajima.
|
||||
[**FileMonitor** Panopto](https://objective-see.com/products/utilities.html#FileMonitor) omogućava praćenje događaja sa datotekama (kao što su kreiranje, izmene i brisanje), pružajući detaljne informacije o tim događajima.
|
||||
|
||||
### Crescendo
|
||||
|
||||
[**Crescendo**](https://github.com/SuprHackerSteve/Crescendo) je GUI alat sa izgledom koji korisnici Windowsa mogu prepoznati iz Microsoft Sysinternal-ovog _Procmon_-a. Ovaj alat omogućava pokretanje i zaustavljanje snimanja različitih tipova događaja, omogućava filtriranje ovih događaja po kategorijama kao što su datoteka, proces, mreža, itd., i pruža funkcionalnost za čuvanje snimljenih događaja u json formatu.
|
||||
[**Crescendo**](https://github.com/SuprHackerSteve/Crescendo) je GUI alat sa izgledom koji korisnici Windowsa mogu prepoznati iz Microsoft Sysinternal-ovog _Procmon_. Ovaj alat omogućava pokretanje i zaustavljanje snimanja različitih tipova događaja, omogućava filtriranje ovih događaja po kategorijama kao što su datoteka, proces, mreža, itd., i pruža funkcionalnost za čuvanje snimljenih događaja u json formatu.
|
||||
|
||||
### Apple Instruments
|
||||
|
||||
[**Apple Instruments**](https://developer.apple.com/library/archive/documentation/Performance/Conceptual/CellularBestPractices/Appendix/Appendix.html) su deo Xcode-ovih Developer alata - koriste se za praćenje performansi aplikacija, identifikaciju curenja memorije i praćenje aktivnosti sistema datoteka.
|
||||
[**Apple Instruments**](https://developer.apple.com/library/archive/documentation/Performance/Conceptual/CellularBestPractices/Appendix/Appendix.html) su deo Xcode-ovih Developer alata - koriste
|
||||
|
||||
![](<../../../.gitbook/assets/image (1135).png>)
|
||||
|
||||
|
@ -355,7 +371,7 @@ settings set target.x86-disassembly-flavor intel
|
|||
Unutar lldb-a, izvršite dump procesa sa `process save-core`
|
||||
{% endhint %}
|
||||
|
||||
<table data-header-hidden><thead><tr><th width="225"></th><th></th></tr></thead><tbody><tr><td><strong>(lldb) Komanda</strong></td><td><strong>Opis</strong></td></tr><tr><td><strong>run (r)</strong></td><td>Pokretanje izvršenja, koje će se nastaviti dok se ne naiđe na prekid ili dok se proces ne završi.</td></tr><tr><td><strong>continue (c)</strong></td><td>Nastavak izvršenja debugiranog procesa.</td></tr><tr><td><strong>nexti (n / ni)</strong></td><td>Izvršava sledeću instrukciju. Ova komanda će preskočiti pozive funkcija.</td></tr><tr><td><strong>stepi (s / si)</strong></td><td>Izvršava sledeću instrukciju. Za razliku od nexti komande, ova komanda će ući u pozive funkcija.</td></tr><tr><td><strong>finish (f)</strong></td><td>Izvršava preostale instrukcije u trenutnoj funkciji ("frame") i zaustavlja se.</td></tr><tr><td><strong>control + c</strong></td><td>Pauzira izvršenje. Ako je proces pokrenut (r) ili nastavljen (c), ovo će uzrokovati zaustavljanje procesa ... gde god se trenutno izvršava.</td></tr><tr><td><strong>breakpoint (b)</strong></td><td><p>b main #Bilo koja funkcija nazvana main</p><p>b <ime_binarne_datoteke>`main #Glavna funkcija binarne datoteke</p><p>b set -n main --shlib <ime_biblioteke> #Glavna funkcija naznačene binarne datoteke</p><p>b -[NSDictionary objectForKey:]</p><p>b -a 0x0000000100004bd9</p><p>br l #Lista prekida</p><p>br e/dis <br> #Omogući/Onemogući prekid</p><p>breakpoint delete <br></p></td></tr><tr><td><strong>help</strong></td><td><p>help breakpoint #Dobijanje pomoći za komandu prekida</p><p>help memory write #Dobijanje pomoći za pisanje u memoriju</p></td></tr><tr><td><strong>reg</strong></td><td><p>reg read</p><p>reg read $rax</p><p>reg read $rax --format <<a href="https://lldb.llvm.org/use/variable.html#type-format">format</a>></p><p>reg write $rip 0x100035cc0</p></td></tr><tr><td><strong>x/s <reg/adresa_memorije></strong></td><td>Prikazuje memoriju kao string završen nulom.</td></tr><tr><td><strong>x/i <reg/adresa_memorije></strong></td><td>Prikazuje memoriju kao asemblersku instrukciju.</td></tr><tr><td><strong>x/b <reg/adresa_memorije></strong></td><td>Prikazuje memoriju kao bajt.</td></tr><tr><td><strong>print object (po)</strong></td><td><p>Ovo će ispisati objekat na koji se parametar odnosi</p><p>po $raw</p><p><code>{</code></p><p><code>dnsChanger = {</code></p><p><code>"affiliate" = "";</code></p><p><code>"blacklist_dns" = ();</code></p><p>Imajte na umu da većina Apple-ovih Objective-C API-ja ili metoda vraća objekte, i stoga bi trebalo da se prikažu putem "print object" (po) komande. Ako po ne proizvodi smislene rezultate, koristite <code>x/b</code></p></td></tr><tr><td><strong>memory</strong></td><td>memory read 0x000....<br>memory read $x0+0xf2a<br>memory write 0x100600000 -s 4 0x41414141 #Upisuje AAAA na tu adresu<br>memory write -f s $rip+0x11f+7 "AAAA" #Upisuje AAAA na adresu</td></tr><tr><td><strong>disassembly</strong></td><td><p>dis #Disasembliranje trenutne funkcije</p><p>dis -n <ime_funkcije> #Disasembliranje funkcije</p><p>dis -n <ime_funkcije> -b <ime_datoteke> #Disasembliranje funkcije<br>dis -c 6 #Disasembliranje 6 linija<br>dis -c 0x100003764 -e 0x100003768 # Od jedne adrese do druge<br>dis -p -c 4 # Početak disasembliranja na trenutnoj adresi</p></td></tr><tr><td><strong>parray</strong></td><td>parray 3 (char **)$x1 # Provera niza od 3 komponente u x1 registru</td></tr></tbody></table>
|
||||
<table data-header-hidden><thead><tr><th width="225"></th><th></th></tr></thead><tbody><tr><td><strong>(lldb) Komanda</strong></td><td><strong>Opis</strong></td></tr><tr><td><strong>run (r)</strong></td><td>Pokretanje izvršenja, koje će se nastaviti dok se ne naiđe na prekidnu tačku ili dok se proces ne završi.</td></tr><tr><td><strong>continue (c)</strong></td><td>Nastavak izvršenja debugiranog procesa.</td></tr><tr><td><strong>nexti (n / ni)</strong></td><td>Izvršava sledeću instrukciju. Ova komanda će preskočiti pozive funkcija.</td></tr><tr><td><strong>stepi (s / si)</strong></td><td>Izvršava sledeću instrukciju. Za razliku od komande nexti, ova komanda će ući u pozive funkcija.</td></tr><tr><td><strong>finish (f)</strong></td><td>Izvršava preostale instrukcije u trenutnoj funkciji ("frame") i zaustavlja se.</td></tr><tr><td><strong>control + c</strong></td><td>Pauzira izvršenje. Ako je proces pokrenut (r) ili nastavljen (c), ovo će uzrokovati zaustavljanje procesa ...gde god se trenutno izvršava.</td></tr><tr><td><strong>breakpoint (b)</strong></td><td><p>b main #Bilo koja funkcija nazvana main</p><p>b <ime_binarnog_fajla>`main #Glavna funkcija binarnog fajla</p><p>b set -n main --shlib <ime_biblioteke> #Glavna funkcija naznačenog binarnog fajla</p><p>b -[NSDictionary objectForKey:]</p><p>b -a 0x0000000100004bd9</p><p>br l #Lista prekida</p><p>br e/dis <br> #Omogući/Onemogući prekid</p><p>breakpoint delete <br></p></td></tr><tr><td><strong>help</strong></td><td><p>help breakpoint #Dobijanje pomoći za komandu prekida</p><p>help memory write #Dobijanje pomoći za pisanje u memoriju</p></td></tr><tr><td><strong>reg</strong></td><td><p>reg read</p><p>reg read $rax</p><p>reg read $rax --format <<a href="https://lldb.llvm.org/use/variable.html#type-format">format</a>></p><p>reg write $rip 0x100035cc0</p></td></tr><tr><td><strong>x/s <reg/adresa_memorije></strong></td><td>Prikazuje memoriju kao string završen nulom.</td></tr><tr><td><strong>x/i <reg/adresa_memorije></strong></td><td>Prikazuje memoriju kao asemblersku instrukciju.</td></tr><tr><td><strong>x/b <reg/adresa_memorije></strong></td><td>Prikazuje memoriju kao bajt.</td></tr><tr><td><strong>print object (po)</strong></td><td><p>Ovo će ispisati objekat na koji se parametar odnosi</p><p>po $raw</p><p><code>{</code></p><p><code>dnsChanger = {</code></p><p><code>"affiliate" = "";</code></p><p><code>"blacklist_dns" = ();</code></p><p>Imajte na umu da većina Apple-ovih Objective-C API-ja ili metoda vraća objekte, i stoga bi trebalo da se prikažu putem "print object" (po) komande. Ako po ne proizvodi smislene rezultate, koristite <code>x/b</code></p></td></tr><tr><td><strong>memory</strong></td><td>memory read 0x000....<br>memory read $x0+0xf2a<br>memory write 0x100600000 -s 4 0x41414141 #Upisuje AAAA na tu adresu<br>memory write -f s $rip+0x11f+7 "AAAA" #Upisuje AAAA na adresu</td></tr><tr><td><strong>disassembly</strong></td><td><p>dis #Disasembliranje trenutne funkcije</p><p>dis -n <ime_funkcije> #Disasembliranje funkcije</p><p>dis -n <ime_funkcije> -b <ime_binarnog_fajla> #Disasembliranje funkcije<br>dis -c 6 #Disasembliranje 6 linija<br>dis -c 0x100003764 -e 0x100003768 # Od jedne adrese do druge<br>dis -p -c 4 # Početak disasembliranja na trenutnoj adresi</p></td></tr><tr><td><strong>parray</strong></td><td>parray 3 (char **)$x1 # Provera niza od 3 komponente u registru x1</td></tr></tbody></table>
|
||||
|
||||
{% hint style="info" %}
|
||||
Prilikom pozivanja funkcije **`objc_sendMsg`**, registar **rsi** sadrži **ime metode** kao string završen nulom ("C"). Da biste ispisali ime putem lldb-a, uradite sledeće:
|
||||
|
@ -374,11 +390,11 @@ Prilikom pozivanja funkcije **`objc_sendMsg`**, registar **rsi** sadrži **ime m
|
|||
|
||||
* Komanda **`sysctl hw.model`** vraća "Mac" kada je **domaćin MacOS**, ali nešto drugo kada je virtuelna mašina.
|
||||
* Igranje sa vrednostima **`hw.logicalcpu`** i **`hw.physicalcpu`** neki malveri pokušavaju da detektuju da li je u pitanju virtuelna mašina.
|
||||
* Neki malveri takođe mogu **detektovati** da li je mašina zasnovana na **VMware-u** na osnovu MAC adrese (00:50:56).
|
||||
* Moguće je otkriti da li se **proces debuguje** jednostavnim kodom poput:
|
||||
* Neki malveri takođe mogu **detektovati** da li je mašina **bazirana na VMware-u** na osnovu MAC adrese (00:50:56).
|
||||
* Moguće je proveriti da li se **proces debuguje** jednostavnim kodom kao što je:
|
||||
* `if(P_TRACED == (info.kp_proc.p_flag & P_TRACED)){ //proces se debuguje }`
|
||||
* Takođe se može pozvati sistemski poziv **`ptrace`** sa zastavicom **`PT_DENY_ATTACH`**. Ovo **sprečava** deb**a**ger da se poveže i prati.
|
||||
* Možete proveriti da li se funkcija **`sysctl`** ili **`ptrace`** **uvozi** (ali malver bi mogao da je uvozi dinamički)
|
||||
* Možete proveriti da li se funkcija **`sysctl`** ili **`ptrace`** **uvozi** (ali malver bi mogao da je dinamički uveze)
|
||||
* Kao što je navedeno u ovom tekstu, “[Pobeda nad tehnikama protiv-debugiranja: macOS ptrace varijante](https://alexomara.com/blog/defeating-anti-debug-techniques-macos-ptrace-variants/)” :\
|
||||
“_Poruka Proces # je završen sa **statusom = 45 (0x0000002d)** obično je znak da je cilj debugiranja koristi **PT\_DENY\_ATTACH**_”
|
||||
## Fuzzing
|
||||
|
@ -407,11 +423,11 @@ Prilikom faziiranja u MacOS-u važno je sprečiti Mac da zaspi:
|
|||
* pmset, System Preferences
|
||||
* [KeepingYouAwake](https://github.com/newmarcel/KeepingYouAwake)
|
||||
|
||||
#### SSH prekid
|
||||
#### SSH Prekid
|
||||
|
||||
Ako faziirate putem SSH veze važno je osigurati da sesija neće isteći. Promenite sshd\_config datoteku sa:
|
||||
Ako faziirate putem SSH veze, važno je osigurati da sesija neće isteći. Promenite sshd\_config datoteku sa:
|
||||
|
||||
* TCPKeepAlive Da
|
||||
* TCPKeepAlive Yes
|
||||
* ClientAliveInterval 0
|
||||
* ClientAliveCountMax 0
|
||||
```bash
|
||||
|
@ -449,13 +465,13 @@ lldb -o "target create `which some-binary`" -o "settings set target.env-vars DYL
|
|||
|
||||
#### [AFL++](https://github.com/AFLplusplus/AFLplusplus)
|
||||
|
||||
Radi za CLI alate
|
||||
Radi sa CLI alatima
|
||||
|
||||
#### [Litefuzz](https://github.com/sec-tools/litefuzz)
|
||||
|
||||
On "**samo radi"** sa macOS GUI alatima. Imajte na umu da neki macOS aplikacije imaju specifične zahteve kao što su jedinstvena imena datoteka, ispravna ekstenzija, potreba za čitanjem datoteka iz peska (`~/Library/Containers/com.apple.Safari/Data`)...
|
||||
Radi sa macOS GUI alatima. Napomena: neki macOS aplikacije imaju specifične zahteve kao što su jedinstvena imena fajlova, ispravna ekstenzija, potreba za čitanjem fajlova iz peska (`~/Library/Containers/com.apple.Safari/Data`)...
|
||||
|
||||
Neki primeri:
|
||||
Primeri:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -497,16 +513,29 @@ litefuzz -s -a tcp://localhost:5900 -i input/screenshared-session --reportcrash
|
|||
* [**https://taomm.org/vol1/analysis.html**](https://taomm.org/vol1/analysis.html)
|
||||
* [**The Art of Mac Malware: The Guide to Analyzing Malicious Software**](https://taomm.org/)
|
||||
|
||||
|
||||
### [WhiteIntel](https://whiteintel.io)
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokretan **dark-webom** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **kompromitovani** od strane **malvera za krađu informacija**.
|
||||
|
||||
Primarni cilj WhiteIntela je borba protiv preuzimanja naloga i napada ransomvera koji proizilaze iz malvera za krađu informacija.
|
||||
|
||||
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za **besplatno** na:
|
||||
|
||||
{% embed url="https://whiteintel.io" %}
|
||||
|
||||
<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 PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -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 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,16 +14,30 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
### [WhiteIntel](https://whiteintel.io)
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokretan **dark-web-om** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **kompromitovani** od strane **stealer malvera**.
|
||||
|
||||
Njihov primarni cilj WhiteIntela je borba protiv preuzimanja naloga i napada ransomware-a koji proizilaze iz malvera za krađu informacija.
|
||||
|
||||
Možete posetiti njihovu veb stranicu i isprobati njihovu mašinu za **besplatno** na:
|
||||
|
||||
{% embed url="https://whiteintel.io" %}
|
||||
|
||||
---
|
||||
|
||||
## **Osnovne informacije**
|
||||
|
||||
**System Integrity Protection (SIP)** u macOS-u je mehanizam dizajniran da spreči čak i najprivilegovanije korisnike da vrše neovlašćene promene u ključnim sistemskim folderima. Ova funkcija igra ključnu ulogu u održavanju integriteta sistema ograničavajući radnje poput dodavanja, izmene ili brisanja fajlova u zaštićenim oblastima. Primarni folderi zaštićeni od strane SIP-a uključuju:
|
||||
**Zaštita integriteta sistema (SIP)** u macOS-u je mehanizam dizajniran da spreči čak i najprivilegovanije korisnike da vrše neovlašćene promene u ključnim sistemskim fasciklama. Ova funkcija igra ključnu ulogu u održavanju integriteta sistema ograničavanjem radnji poput dodavanja, izmene ili brisanja fajlova u zaštićenim oblastima. Primarne fascikle zaštićene od strane SIP-a uključuju:
|
||||
|
||||
* **/System**
|
||||
* **/bin**
|
||||
* **/sbin**
|
||||
* **/usr**
|
||||
|
||||
Pravila koja upravljaju ponašanjem SIP-a su definisana u konfiguracionom fajlu koji se nalazi na lokaciji **`/System/Library/Sandbox/rootless.conf`**. Unutar ovog fajla, putanje koje su prefiksirane zvezdicom (\*) označene su kao izuzeci od inače stroge SIP restrikcije.
|
||||
Pravila koja upravljaju ponašanjem SIP-a su definisana u konfiguracionom fajlu koji se nalazi na putanji **`/System/Library/Sandbox/rootless.conf`**. Unutar ovog fajla, putanje koje su prefiksirane zvezdicom (\*) označene su kao izuzeci od inače stroge SIP restrikcije.
|
||||
|
||||
Razmotrite sledeći primer:
|
||||
```javascript
|
||||
|
@ -34,12 +48,12 @@ Razmotrite sledeći primer:
|
|||
```
|
||||
Ovaj odlomak implicira da iako SIP generalno obezbeđuje sigurnost direktorijuma **`/usr`**, postoje specifični poddirektorijumi (`/usr/libexec/cups`, `/usr/local` i `/usr/share/man`) gde su modifikacije dozvoljene, kako je naznačeno zvezdicom (\*) ispred njihovih putanja.
|
||||
|
||||
Da biste proverili da li je direktorijum ili fajl zaštićen SIP-om, možete koristiti **`ls -lOd`** komandu da proverite prisustvo **`restricted`** ili **`sunlnk`** zastavice. Na primer:
|
||||
Da biste proverili da li je direktorijum ili fajl zaštićen SIP-om, možete koristiti komandu **`ls -lOd`** da proverite prisustvo zastave **`restricted`** ili **`sunlnk`**. Na primer:
|
||||
```bash
|
||||
ls -lOd /usr/libexec/cups
|
||||
drwxr-xr-x 11 root wheel sunlnk 352 May 13 00:29 /usr/libexec/cups
|
||||
```
|
||||
U ovom slučaju, zastava **`sunlnk`** označava da se direktorijum `/usr/libexec/cups` **ne može obrisati**, iako se datoteke unutar njega mogu kreirati, menjati ili brisati.
|
||||
U ovom slučaju, zastava **`sunlnk`** označava da se direktorijum `/usr/libexec/cups` **ne može obrisati**, iako se fajlovi unutar njega mogu kreirati, menjati ili brisati.
|
||||
|
||||
S druge strane:
|
||||
```bash
|
||||
|
@ -77,7 +91,7 @@ csrutil enable --without debug
|
|||
```
|
||||
### Ostale Restrikcije
|
||||
|
||||
* **Zabranjuje učitavanje nepotpisanih kernel ekstenzija** (kexts), osiguravajući da samo verifikovane ekstenzije komuniciraju sa sistemskim kernelom.
|
||||
* **Zabranjuje učitavanje nepotpisanih kernel ekstenzija** (kexts), osiguravajući da samo proverene ekstenzije komuniciraju sa jezgrom sistema.
|
||||
* **Sprečava debagovanje** macOS sistemskih procesa, čuvajući osnovne sistemskih komponente od neovlašćenog pristupa i modifikacija.
|
||||
* **Inhibira alate** poput dtrace-a da inspiciraju sistemskih procesa, dodatno štiteći integritet rada sistema.
|
||||
|
||||
|
@ -89,16 +103,16 @@ Bypass-ovanje SIP-a omogućava napadaču da:
|
|||
|
||||
* **Pristupi korisničkim podacima**: Čita osetljive korisničke podatke poput mejlova, poruka i istorije Safarija sa svih korisničkih naloga.
|
||||
* **TCC Bypass**: Direktno manipuliše TCC (Transparentnost, Saglasnost i Kontrola) bazom podataka kako bi dobio neovlašćen pristup web kameri, mikrofonu i drugim resursima.
|
||||
* **Ustaničenje Persistencije**: Postavlja maliciozni softver na SIP-om zaštićene lokacije, čineći ga otpornim na uklanjanje, čak i uz root privilegije. Ovo takođe uključuje mogućnost manipulacije Alatom za Uklanjanje Malvera (MRT).
|
||||
* **Učitavanje Kernel Ekstenzija**: Iako postoje dodatne zaštite, zaobilazak SIP-a pojednostavljuje proces učitavanja nepotpisanih kernel ekstenzija.
|
||||
* **Ustaničenje**: Postavlja malver na SIP-om zaštićene lokacije, čineći ga otpornim na uklanjanje, čak i uz privilegije root-a. Ovo takođe uključuje mogućnost manipulacije Alatom za uklanjanje malvera (MRT).
|
||||
* **Učitavanje kernel ekstenzija**: Iako postoje dodatne zaštite, zaobilazak SIP-a pojednostavljuje proces učitavanja nepotpisanih kernel ekstenzija.
|
||||
|
||||
### Instalacioni Paketi
|
||||
|
||||
**Instalacioni paketi potpisani Apple-ovim sertifikatom** mogu zaobići njegove zaštite. To znači da će čak i paketi potpisani od strane standardnih developera biti blokirani ako pokušaju da modifikuju SIP-om zaštićene direktorijume.
|
||||
**Instalacioni paketi potpisani Apple-ovim sertifikatom** mogu zaobići njegove zaštite. To znači da će čak i paketi potpisani od strane standardnih programera biti blokirani ako pokušaju da modifikuju SIP-om zaštićene direktorijume.
|
||||
|
||||
### Nepostojeći SIP fajl
|
||||
|
||||
Jedna potencijalna rupa je da ako je fajl naveden u **`rootless.conf` ali trenutno ne postoji**, može biti kreiran. Malver bi mogao iskoristiti ovo da **uspostavi persistenciju** na sistemu. Na primer, zlonamerni program bi mogao kreirati .plist fajl u `/System/Library/LaunchDaemons` ako je naveden u `rootless.conf` ali nije prisutan.
|
||||
Potencijalna rupa u sistemu je ako je fajl naveden u **`rootless.conf` ali trenutno ne postoji**, može biti kreiran. Malver bi mogao iskoristiti ovo da **uspostavi postojanost** na sistemu. Na primer, zlonamerni program bi mogao kreirati .plist fajl u `/System/Library/LaunchDaemons` ako je naveden u `rootless.conf` ali nije prisutan.
|
||||
|
||||
### com.apple.rootless.install.heritable
|
||||
|
||||
|
@ -114,13 +128,13 @@ Ovlašćenje **`com.apple.rootless.install.heritable`** omogućava zaobilaženje
|
|||
|
||||
Istraživači su otkrili da tokom instalacije Apple-ovog potpisanog paketa (.pkg fajla), **`system_installd`** **pokreće** sve **post-install** skripte uključene u paket. Ove skripte se izvršavaju podrazumevanim shell-om, **`zsh`**, koji automatski **pokreće** komande iz **`/etc/zshenv`** fajla, ako postoji, čak i u neinteraktivnom režimu. Ovo ponašanje bi moglo biti iskorišćeno od strane napadača: kreiranjem zlonamerne `/etc/zshenv` datoteke i čekanjem da **`system_installd` pozove `zsh`**, mogli bi izvršiti proizvoljne operacije na uređaju.
|
||||
|
||||
Osim toga, otkriveno je da se **`/etc/zshenv` može koristiti kao opšta tehnika napada**, ne samo za zaobilaženje SIP-a. Svaki korisnički profil ima `~/.zshenv` fajl, koji se ponaša na isti način kao `/etc/zshenv` ali ne zahteva root privilegije. Ovaj fajl bi mogao biti korišćen kao mehanizam persistencije, pokrećući se svaki put kada se `zsh` pokrene, ili kao mehanizam elevacije privilegija. Ako admin korisnik elevira na root koristeći `sudo -s` ili `sudo <komanda>`, `~/.zshenv` fajl bi bio pokrenut, efektivno elevirajući na root.
|
||||
Osim toga, otkriveno je da se **`/etc/zshenv` može koristiti kao opšta tehnika napada**, ne samo za zaobilaženje SIP-a. Svaki korisnički profil ima `~/.zshenv` fajl, koji se ponaša na isti način kao `/etc/zshenv` ali ne zahteva privilegije root-a. Ovaj fajl bi mogao biti korišćen kao mehanizam postojanosti, pokrećući se svaki put kada se `zsh` pokrene, ili kao mehanizam elevacije privilegija. Ako admin korisnik elevira na root koristeći `sudo -s` ili `sudo <komanda>`, `~/.zshenv` fajl bi bio pokrenut, efektivno elevirajući na root.
|
||||
|
||||
#### [**CVE-2022-22583**](https://perception-point.io/blog/technical-analysis-cve-2022-22583/)
|
||||
|
||||
U [**CVE-2022-22583**](https://perception-point.io/blog/technical-analysis-cve-2022-22583/) otkriveno je da isti **`system_installd`** proces može biti zloupotrebljen jer je stavljao **post-install skriptu unutar nasumično nazvanog foldera zaštićenog SIP-om unutar `/tmp`**. Stvar je u tome da **`/tmp` sam po sebi nije zaštićen SIP-om**, pa je bilo moguće **montirati** virtuelnu sliku na njega, zatim **instalater** bi stavio tamo **post-install skriptu**, **demontirao** virtuelnu sliku, **rekonstruisao** sve **foldere** i **dodao** **post-install** skriptu sa **payloadom** za izvršenje.
|
||||
U [**CVE-2022-22583**](https://perception-point.io/blog/technical-analysis-cve-2022-22583/) otkriveno je da isti **`system_installd`** proces može biti zloupotrebljen jer je stavljao **post-install skriptu unutar nasumično nazvanog foldera zaštićenog SIP-om unutar `/tmp`**. Stvar je u tome da **`/tmp` sam po sebi nije zaštićen SIP-om**, pa je bilo moguće **montirati** virtuelnu sliku na njega, zatim **instalater** bi stavio tamo **post-install skriptu**, **demontirao** virtuelnu sliku, **rekonstruisao** sve **foldere** i **dodao** **post-install** skriptu sa **payload-om** za izvršavanje.
|
||||
|
||||
#### [fsck\_cs alatka](https://www.theregister.com/2016/03/30/apple\_os\_x\_rootless/)
|
||||
#### [fsck\_cs alat](https://www.theregister.com/2016/03/30/apple\_os\_x\_rootless/)
|
||||
|
||||
Identifikovana je ranjivost gde je **`fsck_cs`** bio zaveden da ošteti ključni fajl, zbog svoje sposobnosti praćenja **simboličkih linkova**. Konkretno, napadači su kreirali link od _`/dev/diskX`_ do fajla `/System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist`. Izvršavanje **`fsck_cs`** na _`/dev/diskX`_ dovelo je do oštećenja `Info.plist`. Integritet ovog fajla je vitalan za SIP (Sistemsku Zaštitu Integriteta) operativnog sistema, koji kontroliše učitavanje kernel ekstenzija. Jednom kada je oštećen, sposobnost SIP-a da upravlja isključenjima kernela je kompromitovana.
|
||||
|
||||
|
@ -144,19 +158,19 @@ hdiutil attach -mountpoint /System/Library/Snadbox/ evil.dmg
|
|||
```
|
||||
#### [Bypass upgradera (2016)](https://objective-see.org/blog/blog\_0x14.html)
|
||||
|
||||
Sistem je podešen da se podigne sa ugrađene instalacione disk slike unutar `Install macOS Sierra.app` kako bi se ažurirao OS, koristeći `bless` alat. Komanda koja se koristi je sledeća:
|
||||
Sistem je podešen da se pokrene sa ugrađene instalacione disk slike unutar `Install macOS Sierra.app` kako bi se ažurirao operativni sistem, koristeći `bless` alat. Komanda koja se koristi je sledeća:
|
||||
```bash
|
||||
/usr/sbin/bless -setBoot -folder /Volumes/Macintosh HD/macOS Install Data -bootefi /Volumes/Macintosh HD/macOS Install Data/boot.efi -options config="\macOS Install Data\com.apple.Boot" -label macOS Installer
|
||||
```
|
||||
Bezbednost ovog procesa može biti ugrožena ako napadač promeni sliku nadogradnje (`InstallESD.dmg`) pre pokretanja. Strategija uključuje zamenu dinamičkog učitavača (dyld) zlonamernom verzijom (`libBaseIA.dylib`). Ova zamena rezultira izvršenjem koda napadača kada se pokrene instalater.
|
||||
Bezbednost ovog procesa može biti ugrožena ako napadač promeni sliku nadogradnje (`InstallESD.dmg`) pre pokretanja. Strategija uključuje zamenu dinamičkog učitavača (dyld) sa zlonamernom verzijom (`libBaseIA.dylib`). Ova zamena rezultira izvršenjem koda napadača kada se pokrene instalater.
|
||||
|
||||
Kod napadača preuzima kontrolu tokom procesa nadogradnje, iskorišćavajući sistemsko poverenje u instalater. Napad se nastavlja izmenom slike `InstallESD.dmg` putem metode swizzling, posebno ciljajući metodu `extractBootBits`. Ovo omogućava ubacivanje zlonamernog koda pre upotrebe slike diska.
|
||||
Kod napadača preuzima kontrolu tokom procesa nadogradnje, iskorišćavajući poverenje sistema u instalater. Napad se nastavlja tako što se menja slika `InstallESD.dmg` putem metode premeštanja, posebno ciljajući metodu `extractBootBits`. Ovo omogućava ubacivanje zlonamernog koda pre nego što se disk slika koristi.
|
||||
|
||||
Osim toga, unutar `InstallESD.dmg`, postoji `BaseSystem.dmg`, koji služi kao koreni fajl sistem koda nadogradnje. Ubacivanje dinamičke biblioteke u ovo omogućava zlonamernom kodu da funkcioniše unutar procesa sposobnog za izmenu fajlova na nivou OS-a, značajno povećavajući potencijal za kompromitovanje sistema.
|
||||
Osim toga, unutar `InstallESD.dmg`, postoji `BaseSystem.dmg`, koji služi kao koreni fajl sistem koda nadogradnje. Ubacivanje dinamičke biblioteke u ovo omogućava zlonamernom kodu da funkcioniše unutar procesa sposobnog za menjanje fajlova na nivou OS-a, značajno povećavajući potencijal za kompromitovanje sistema.
|
||||
|
||||
#### [systemmigrationd (2023)](https://www.youtube.com/watch?v=zxZesAN-TEk)
|
||||
|
||||
U ovom razgovoru sa [**DEF CON 31**](https://www.youtube.com/watch?v=zxZesAN-TEk), prikazano je kako **`systemmigrationd`** (koji može zaobići SIP) izvršava **bash** i **perl** skriptu, koja može biti zloupotrebljena putem env promenljivih **`BASH_ENV`** i **`PERL5OPT`**.
|
||||
U ovom razgovoru sa [**DEF CON 31**](https://www.youtube.com/watch?v=zxZesAN-TEk), prikazano je kako **`systemmigrationd`** (koji može zaobići SIP) izvršava **bash** i **perl** skriptu, koja može biti zloupotrebljena putem okružnih promenljivih **`BASH_ENV`** i **`PERL5OPT`**.
|
||||
|
||||
### **com.apple.rootless.install**
|
||||
|
||||
|
@ -164,19 +178,19 @@ U ovom razgovoru sa [**DEF CON 31**](https://www.youtube.com/watch?v=zxZesAN-TEk
|
|||
Ovlašćenje **`com.apple.rootless.install`** omogućava zaobilaženje SIP-a
|
||||
{% endhint %}
|
||||
|
||||
Ovlašćenje `com.apple.rootless.install` poznato je po zaobilaženju Sistema Integriteta (SIP) na macOS-u. Ovo je posebno pomenuto u vezi sa [**CVE-2022-26712**](https://jhftss.github.io/CVE-2022-26712-The-POC-For-SIP-Bypass-Is-Even-Tweetable/).
|
||||
Ovlašćenje `com.apple.rootless.install` poznato je po zaobilaženju Sistemskog Integriteta (SIP) na macOS-u. Ovo je posebno pomenuto u vezi sa [**CVE-2022-26712**](https://jhftss.github.io/CVE-2022-26712-The-POC-For-SIP-Bypass-Is-Even-Tweetable/).
|
||||
|
||||
U ovom specifičnom slučaju, sistemski XPC servis smešten na lokaciji `/System/Library/PrivateFrameworks/ShoveService.framework/Versions/A/XPCServices/SystemShoveService.xpc` poseduje ovo ovlašćenje. Ovo omogućava povezanom procesu da zaobiđe SIP ograničenja. Osim toga, ovaj servis posebno predstavlja metod koji dozvoljava premestanje fajlova bez primene bilo kakvih sigurnosnih mera.
|
||||
|
||||
## Zapečaćeni sistemske snimci
|
||||
|
||||
Zapečaćeni sistemske snimci su funkcija koju je Apple uveo u **macOS Big Sur (macOS 11)** kao deo mehanizma **Sistema Integriteta (SIP)** kako bi pružio dodatni sloj sigurnosti i stabilnosti sistema. Suštinski, to su samo za čitanje verzije sistema volumena.
|
||||
Zapečaćeni sistemske snimci su funkcija koju je Apple uveo u **macOS Big Sur (macOS 11)** kao deo mehanizma **Sistema Integriteta (SIP)** kako bi pružio dodatni sloj sigurnosti i stabilnosti sistema. Suštinski, to su samo za čitanje verzije volumena sistema.
|
||||
|
||||
Evo detaljnijeg pregleda:
|
||||
|
||||
1. **Nepromenljiv sistem**: Zapečaćeni sistemske snimci čine macOS sistemski volumen "nepromenljivim", što znači da ne može biti modifikovan. Ovo sprečava bilo kakve neovlašćene ili slučajne promene na sistemu koje bi mogle ugroziti sigurnost ili stabilnost sistema.
|
||||
2. **Ažuriranja softvera sistema**: Kada instalirate ažuriranja ili nadogradnje macOS-a, macOS kreira novi sistemski snimak. Zatim macOS-ov startap volumen koristi **APFS (Apple File System)** da prebaci na ovaj novi snimak. Ceo proces primene ažuriranja postaje sigurniji i pouzdaniji jer sistem uvek može da se vrati na prethodni snimak ako nešto krene naopako tokom ažuriranja.
|
||||
3. **Razdvajanje podataka**: U kombinaciji sa konceptom razdvajanja volumena podataka i sistema koji je uveden u macOS Catalina, funkcija Zapečaćeni sistemske snimci se pobrinula da svi vaši podaci i podešavanja budu smešteni na odvojenom "**Podaci**" volumenu. Ova razdvajanja čini vaše podatke nezavisnim od sistema, što pojednostavljuje proces ažuriranja sistema i poboljšava sigurnost sistema.
|
||||
2. **Ažuriranja softvera sistema**: Kada instalirate ažuriranja ili nadogradnje macOS-a, macOS kreira novi sistemski snimak. Zatim macOS-ov startap volumen koristi **APFS (Apple File System)** da prebaci na ovaj novi snimak. Ceo proces primene ažuriranja postaje sigurniji i pouzdaniji jer sistem uvek može da se vrati na prethodni snimak ako nešto krene po zlu tokom ažuriranja.
|
||||
3. **Razdvajanje podataka**: U kombinaciji sa konceptom razdvajanja volumena Podataka i Sistema koji je uveden u macOS Catalina, funkcija Zapečaćeni sistemske snimci se pobrinula da svi vaši podaci i podešavanja budu smešteni na odvojenom "**Podaci**" volumenu. Ova razdvajanja čini vaše podatke nezavisnim od sistema, što pojednostavljuje proces ažuriranja sistema i poboljšava sigurnost sistema.
|
||||
|
||||
Zapamtite da ovi snimci automatski upravlja macOS i ne zauzimaju dodatni prostor na disku, zahvaljujući mogućnostima deljenja prostora APFS-a. Takođe je važno napomenuti da su ovi snimci različiti od **Time Machine snimaka**, koji su korisnički dostupne rezerve celog sistema.
|
||||
|
||||
|
@ -221,7 +235,7 @@ Komanda **`diskutil apfs list`** prikazuje **detalje APFS volumena** i njihov ra
|
|||
| FileVault: Yes (Unlocked)
|
||||
</code></pre>
|
||||
|
||||
U prethodnom izlazu je moguće videti da su **lokacije dostupne korisniku** montirane pod `/System/Volumes/Data`.
|
||||
U prethodnom izlazu je moguće videti da su **lokacije dostupne korisnicima** montirane pod `/System/Volumes/Data`.
|
||||
|
||||
Osim toga, **snimak macOS sistemskog volumena** je montiran u `/` i **zapečaćen** (kriptografski potpisan od strane OS-a). Dakle, ako se SIP zaobiđe i modifikuje, **OS se više neće podići**.
|
||||
|
||||
|
@ -231,20 +245,32 @@ csrutil authenticated-root status
|
|||
Authenticated Root status: enabled
|
||||
```
|
||||
Osim toga, snapshot disk je takođe montiran kao **samo za čitanje**:
|
||||
```
|
||||
```bash
|
||||
mount
|
||||
/dev/disk3s1s1 on / (apfs, sealed, local, read-only, journaled)
|
||||
```
|
||||
### [WhiteIntel](https://whiteintel.io)
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokretan **dark web-om** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **ugroženi** od **malvera koji krade informacije**.
|
||||
|
||||
Njihov primarni cilj WhiteIntela je borba protiv preuzimanja naloga i napada ransomvera koji proizilaze iz malvera koji krade informacije.
|
||||
|
||||
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za **besplatno** na:
|
||||
|
||||
{% embed url="https://whiteintel.io" %}
|
||||
|
||||
<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)!
|
||||
* 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)
|
||||
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,63 +1,77 @@
|
|||
# SOME - Izvršavanje metoda sa istog izvora
|
||||
# SOME - Izvršenje metoda sa istog izvora
|
||||
|
||||
<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>
|
||||
|
||||
* Radite li u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **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)!
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Otkrijte [**Porodicu PEASS**](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)**.**
|
||||
* **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).
|
||||
* **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 **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Izvršavanje metoda sa istog izvora
|
||||
### [WhiteIntel](https://whiteintel.io)
|
||||
|
||||
Postojaće situacije u kojima možete izvršiti neki ograničeni JavaScript na stranici. Na primer, u slučaju kada možete **kontrolisati povratnu vrednost koja će biti izvršena**.
|
||||
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
U tim slučajevima, jedna od najboljih stvari koje možete uraditi je **pristup DOM-u da biste pozvali bilo koju** osetljivu akciju koju možete pronaći tamo (kao što je klik na dugme). Međutim, obično ćete ovu ranjivost pronaći na **malim krajnjim tačkama bez ikakvih interesantnih stvari u DOM-u**.
|
||||
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokretan **dark-webom** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **kompromitovani** od strane **malvera za krađu podataka**.
|
||||
|
||||
U tim scenarijima, ovaj napad će biti veoma koristan, jer je njegov cilj da **zloupotrebite ograničeno izvršavanje JS-a unutar DOM-a sa druge stranice sa istog domena** sa mnogo interesantnih akcija.
|
||||
Primarni cilj WhiteIntela je borba protiv preuzimanja naloga i napada ransomvera koji proizilaze iz malvera za krađu informacija.
|
||||
|
||||
Osnovni tok napada je sledeći:
|
||||
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za **besplatno** na:
|
||||
|
||||
* Pronađite **povratnu vrednost koju možete zloupotrebiti** (potencijalno ograničenu na \[\w\\.\_]).
|
||||
* Ako nije ograničeno i možete izvršiti bilo koji JS, jednostavno možete zloupotrebiti ovo kao redovni XSS.
|
||||
* Naterajte **žrtvu da otvori stranicu** kojom **upravlja napadač**.
|
||||
* **Stranica će se otvoriti sama** u **novom prozoru** (novi prozor će imati objekat **`opener`** koji se odnosi na početni prozor).
|
||||
* **Početna stranica** će učitati **stranicu** gde se nalazi **interesantan DOM**.
|
||||
* **Druga stranica** će učitati **ranjivu stranicu zloupotrebljavajući povratnu vrednost** i koristeći objekat **`opener`** da **pristupi i izvrši neku akciju na početnoj stranici** (koja sada sadrži interesantan DOM).
|
||||
{% embed url="https://whiteintel.io" %}
|
||||
|
||||
---
|
||||
|
||||
## Izvršenje metoda sa istog izvora
|
||||
|
||||
Postojaće situacije u kojima možete izvršiti neki ograničeni JavaScript na stranici. Na primer, u slučaju kada možete [**kontrolisati vrednost povratnog poziva koja će biti izvršena**](./#javascript-function).
|
||||
|
||||
U tim slučajevima, jedna od najboljih stvari koje možete uraditi je **pristupiti DOM-u da biste pozvali bilo koju** osetljivu akciju koju možete pronaći tamo (kao što je klik na dugme). Međutim, obično ćete pronaći ovu ranjivost u **malim krajnjim tačkama bez bilo čega zanimljivog u DOM-u**.
|
||||
|
||||
U tim scenarijima, ovaj napad će biti veoma koristan, jer je cilj da možete **zloupotrebiti ograničeno izvršenje JS unutar DOM-a sa druge stranice sa istog domena** sa mnogo zanimljivih akcija.
|
||||
|
||||
Osnovno, tok napada je sledeći:
|
||||
|
||||
* Pronađite **povratni poziv koji možete zloupotrebiti** (potencijalno ograničen na \[\w\\.\_]).
|
||||
* Ako nije ograničen i možete izvršiti bilo koji JS, možete jednostavno zloupotrebiti ovo kao redovni XSS
|
||||
* Naterajte **žrtvu da otvori stranicu** koju kontroliše **napadač**
|
||||
* **Stranica će se sama otvoriti** u **različitom prozoru** (novi prozor će imati objekat **`opener`** koji referiše na početni)
|
||||
* **Početna stranica** će učitati **stranicu** gde se nalazi **zanimljiv DOM**.
|
||||
* **Druga stranica** će učitati **ranjivu stranicu zloupotrebljavajući povratni poziv** i koristeći objekat **`opener`** da **pristupi i izvrši neku akciju na početnoj stranici** (koja sada sadrži zanimljiv DOM).
|
||||
|
||||
{% hint style="danger" %}
|
||||
Imajte na umu da čak i ako početna stranica pristupi novom URL-u nakon što je kreirala drugu stranicu, **`opener` objekat druge stranice i dalje je validna referenca na prvu stranicu u novom DOM-u**.
|
||||
|
||||
Osim toga, da bi druga stranica mogla koristiti opener objekat, **obe stranice moraju biti na istom izvoru**. To je razlog zašto, da biste zloupotrebili ovu ranjivost, morate pronaći neku vrstu **XSS-a sa istog izvora**.
|
||||
Osim toga, da bi druga stranica mogla koristiti objekat opener, **obe stranice moraju biti na istom izvoru**. To je razlog zašto, da biste zloupotrebili ovu ranjivost, morate pronaći neku vrstu **XSS-a na istom izvoru**.
|
||||
{% endhint %}
|
||||
|
||||
### Eksploatacija
|
||||
|
||||
* Možete koristiti ovaj obrazac da **generišete PoC** za iskorišćavanje ovog tipa ranjivosti: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator)
|
||||
* Da biste pronašli put do HTML elementa sa klikom, možete koristiti ovaj dodatak za pregledač: [https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool)
|
||||
* Možete koristiti ovaj obrazac da **generišete PoC** za eksploataciju ovog tipa ranjivosti: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator)
|
||||
* Da biste pronašli putanju DOM-a do HTML elementa sa klikom, možete koristiti ovaj browser dodatak: [https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool)
|
||||
|
||||
### Primer
|
||||
|
||||
* Možete pronaći ranjiv primer na [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/)
|
||||
* Imajte na umu da u ovom primeru server **generiše JavaScript kod** i **dodaje** ga u HTML na osnovu **sadržaja parametra povratnog poziva:** `<script>opener.{callbacl_content}</script>`. Zato u ovom primeru ne morate eksplicitno navesti upotrebu `opener`-a.
|
||||
* Imajte na umu da u ovom primeru server **generiše JavaScript kod** i **dodaje** ga u HTML na osnovu **sadržaja parametra povratnog poziva:** `<script>opener.{callbacl_content}</script>` . Zato u ovom primeru ne morate eksplicitno navesti korišćenje `opener`.
|
||||
* Takođe proverite ovaj CTF writeup: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068)
|
||||
|
||||
## Reference
|
||||
|
||||
* [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/)
|
||||
* [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/)
|
||||
|
||||
<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>
|
||||
|
||||
* Radite li u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **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)!
|
||||
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
||||
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
|
||||
* Otkrijte [**Porodicu PEASS**](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)**.**
|
||||
* **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).
|
||||
* **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 **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</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 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,20 +14,34 @@ Drugi načini podrške HackTricks-u:
|
|||
|
||||
</details>
|
||||
|
||||
### [WhiteIntel](https://whiteintel.io)
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokretan **dark-web-om** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **kompromitovani** od strane **malvera za krađu podataka**.
|
||||
|
||||
Primarni cilj WhiteIntela je borba protiv preuzimanja naloga i napada ransomvera koji proizilaze iz malvera za krađu informacija.
|
||||
|
||||
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za **besplatno** na:
|
||||
|
||||
{% embed url="https://whiteintel.io" %}
|
||||
|
||||
---
|
||||
|
||||
## Nivoi integriteta
|
||||
|
||||
U Windows Vista i kasnijim verzijama, svi zaštićeni elementi dolaze sa oznakom **nivoa integriteta**. Ova postavka uglavnom dodeljuje "srednji" nivo integriteta datotekama i ključevima registra, osim određenih fascikli i datoteka kojima Internet Explorer 7 može pisati na niskom nivou integriteta. Podrazumevano ponašanje je da procesi pokrenuti od strane standardnih korisnika imaju srednji nivo integriteta, dok usluge obično funkcionišu na nivou sistema integriteta. Visoki nivo integriteta štiti korenski direktorijum.
|
||||
U Windows Vista i kasnijim verzijama, svi zaštićeni elementi dolaze sa oznakom **nivoa integriteta**. Ova postavka uglavnom dodeljuje "srednji" nivo integriteta datotekama i ključevima registra, osim određenih fascikli i datoteka na koje Internet Explorer 7 može pisati na niskom nivou integriteta. Podrazumevano ponašanje je da procesi pokrenuti od strane standardnih korisnika imaju srednji nivo integriteta, dok usluge obično funkcionišu na nivou sistema integriteta. Etiketa visokog integriteta štiti korenski direktorijum.
|
||||
|
||||
Ključno pravilo je da objekte ne mogu menjati procesi sa nižim nivoom integriteta od nivoa objekta. Nivoi integriteta su:
|
||||
|
||||
* **Nepoveren**: Ovaj nivo je za procese sa anonimnim prijavama. %%%Primer: Chrome%%%
|
||||
* **Nizak**: Glavno za interakcije na internetu, posebno u Internet Explorer-ovom zaštićenom režimu, utiče na povezane datoteke i procese, kao i određene fascikle poput **Privremene internet fascikle**. Procesi sa niskim nivoom integriteta suočavaju se sa značajnim ograničenjima, uključujući nedostatak pristupa pisanju u registar i ograničen pristup korisničkom profilu.
|
||||
* **Srednji**: Podrazumevani nivo za većinu aktivnosti, dodeljen standardnim korisnicima i objektima bez specifičnih nivoa integriteta. Čak i članovi grupe Administratora funkcionišu na ovom nivou podrazumevano.
|
||||
* **Visok**: Rezervisan za administratore, omogućavajući im da menjaju objekte na nižim nivoima integriteta, uključujući one na visokom nivou samog sebe.
|
||||
* **Sistem**: Najviši operativni nivo za Windows kernel i osnovne usluge, nedostupan čak i administratorima, obezbeđujući zaštitu vitalnih sistemskih funkcija.
|
||||
* **Nepoverljivo**: Ovaj nivo je za procese sa anonimnim prijavama. %%%Primer: Chrome%%%
|
||||
* **Nizak**: Glavno za internet interakcije, posebno u zaštićenom režimu Internet Explorera, utiče na povezane datoteke i procese, kao i određene fascikle poput **Privremene internet fascikle**. Procesi niskog integriteta suočavaju se sa značajnim ograničenjima, uključujući nedostatak pristupa registru za pisanje i ograničen pristup profilu korisnika.
|
||||
* **Srednji**: Podrazumevani nivo za većinu aktivnosti, dodeljen standardnim korisnicima i objektima bez specifičnih nivoa integriteta. Čak i članovi grupe Administratora podrazumevano funkcionišu na ovom nivou.
|
||||
* **Visok**: Rezervisan za administratore, omogućavajući im da menjaju objekte na nižim nivoima integriteta, uključujući one na visokom nivou samom.
|
||||
* **Sistem**: Najviši operativni nivo za Windows kernel i osnovne usluge, nedostupan čak i administratorima, osiguravajući zaštitu vitalnih sistemskih funkcija.
|
||||
* **Instalater**: Jedinstveni nivo koji stoji iznad svih ostalih, omogućavajući objektima na ovom nivou da deinstaliraju bilo koji drugi objekat.
|
||||
|
||||
Možete dobiti nivo integriteta procesa koristeći **Process Explorer** iz **Sysinternals**, pristupajući **svojstvima** procesa i pregledajući karticu "**Bezbednost**":
|
||||
Možete dobiti nivo integriteta procesa koristeći **Process Explorer** iz **Sysinternals**, pristupajući **svojstvima** procesa i pregledajući "**Bezbednost**" karticu:
|
||||
|
||||
![](<../../.gitbook/assets/image (821).png>)
|
||||
|
||||
|
@ -37,7 +51,7 @@ Takođe možete dobiti svoj **trenutni nivo integriteta** koristeći `whoami /gr
|
|||
|
||||
### Nivoi integriteta u fajl-sistemu
|
||||
|
||||
Objekat unutar fajl-sistema može zahtevati **minimalni zahtev za nivoom integriteta** i ako proces nema ovaj nivo integriteta, neće moći da interaguje sa njim.\
|
||||
Objekat unutar fajl-sistema može zahtevati **minimalni zahtev za nivoom integriteta** i ako proces nema ovaj integritet, neće moći da interaguje sa njim.\
|
||||
Na primer, dozvolimo **kreiranje obične datoteke iz konzole običnog korisnika i proverimo dozvole**:
|
||||
```
|
||||
echo asd >asd.txt
|
||||
|
@ -49,7 +63,7 @@ NT AUTHORITY\INTERACTIVE:(I)(M,DC)
|
|||
NT AUTHORITY\SERVICE:(I)(M,DC)
|
||||
NT AUTHORITY\BATCH:(I)(M,DC)
|
||||
```
|
||||
Sada dodelimo minimalni nivo integriteta **Visok** fajlu. Ovo **mora biti urađeno iz konzole** koja se izvršava kao **administrator**, jer će **obična konzola** biti pokrenuta na srednjem nivou integriteta i **neće biti dozvoljeno** dodeljivanje Visokog nivoa integriteta objektu:
|
||||
Sada dodelimo minimalni nivo integriteta **Visok** datoteci. Ovo **mora biti urađeno iz konzole** pokrenute kao **administrator**, jer će **obična konzola** biti pokrenuta na srednjem nivou integriteta i **neće biti dozvoljeno** dodeljivanje Visokog nivoa integriteta objektu:
|
||||
```
|
||||
icacls asd.txt /setintegritylevel(oi)(ci) High
|
||||
processed file: asd.txt
|
||||
|
@ -64,7 +78,7 @@ NT AUTHORITY\SERVICE:(I)(M,DC)
|
|||
NT AUTHORITY\BATCH:(I)(M,DC)
|
||||
Mandatory Label\High Mandatory Level:(NW)
|
||||
```
|
||||
Ovde stvari postaju interesantne. Možete videti da korisnik `DESKTOP-IDJHTKP\user` ima **PUNE privilegije** nad datotekom (zaista je ovaj korisnik kreirao datoteku), međutim, zbog implementiranog minimalnog nivoa integriteta, neće moći više da menja datoteku osim ako radi unutar Nivoa Visokog Integriteta (napomena da će moći da je čita):
|
||||
Ovde stvari postaju interesantne. Možete videti da korisnik `DESKTOP-IDJHTKP\user` ima **PUNE privilegije** nad datotekom (zaista je ovaj korisnik kreirao datoteku), međutim, zbog implementiranog minimalnog nivoa integriteta, neće moći više da menja datoteku osim ako radi unutar Nivoa visokog integriteta (napomena: moći će da je čita):
|
||||
```
|
||||
echo 1234 > asd.txt
|
||||
Access is denied.
|
||||
|
@ -79,7 +93,7 @@ Access is denied.
|
|||
|
||||
### Nivoi Integriteta u Binarnim Datotekama
|
||||
|
||||
Napravio sam kopiju `cmd.exe` u `C:\Windows\System32\cmd-low.exe` i postavio sam **nivo integriteta na niski iz administratorske konzole:**
|
||||
Napravio sam kopiju `cmd.exe` u `C:\Windows\System32\cmd-low.exe` i postavio sam joj **nivo integriteta na niski iz administratorske konzole:**
|
||||
```
|
||||
icacls C:\Windows\System32\cmd-low.exe
|
||||
C:\Windows\System32\cmd-low.exe NT AUTHORITY\SYSTEM:(I)(F)
|
||||
|
@ -89,14 +103,40 @@ APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
|
|||
APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APP PACKAGES:(I)(RX)
|
||||
Mandatory Label\Low Mandatory Level:(NW)
|
||||
```
|
||||
Sada, kada pokrenem `cmd-low.exe`, **pokrenuće se sa niskim nivoom integriteta** umesto srednjim:
|
||||
Sada, kada pokrenem `cmd-low.exe`, **pokrenuće se sa niskim nivoom integriteta** umesto srednjeg:
|
||||
|
||||
![](<../../.gitbook/assets/image (310).png>)
|
||||
|
||||
Za radoznale ljude, ako dodelite visok nivo integriteta binarnom fajlu (`icacls C:\Windows\System32\cmd-high.exe /setintegritylevel high`), neće se automatski pokrenuti sa visokim nivoom integriteta (ako ga pozovete sa srednjim nivoom integriteta --podrazumevano-- pokrenuće se sa srednjim nivoom integriteta).
|
||||
Za radoznale ljude, ako dodelite visok nivo integriteta binarnom fajlu (`icacls C:\Windows\System32\cmd-high.exe /setintegritylevel high`), neće se automatski pokrenuti sa visokim nivoom integriteta (ako ga pozovete sa srednjeg nivoa integriteta - podrazumevano će se pokrenuti sa srednjim nivoom integriteta).
|
||||
|
||||
### Nivoi Integriteta u Procesima
|
||||
|
||||
Nisu svi fajlovi i folderi sa minimalnim nivoom integriteta, **ali svi procesi se izvršavaju sa određenim nivoom integriteta**. I slično kao što se desilo sa sistemom fajlova, **ako proces želi da piše unutar drugog procesa, mora imati barem isti nivo integriteta**. To znači da proces sa niskim nivoom integriteta ne može otvoriti ručku sa punim pristupom procesu sa srednjim nivoom integriteta.
|
||||
Nisu svi fajlovi i folderi sa minimalnim nivoom integriteta, **ali svi procesi se izvršavaju pod određenim nivoom integriteta**. I slično kao što se desilo sa fajl-sistemom, **ako proces želi da piše unutar drugog procesa, mora imati barem isti nivo integriteta**. To znači da proces sa niskim nivoom integriteta ne može otvoriti ručku sa punim pristupom procesu sa srednjim nivoom integriteta.
|
||||
|
||||
Zbog ograničenja navedenih u ovoj i prethodnoj sekciji, sa aspekta bezbednosti, uvek je **preporučljivo pokrenuti proces sa što nižim nivoom integriteta**.
|
||||
|
||||
### [WhiteIntel](https://whiteintel.io)
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokretan **dark-webom** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **napadnuti** od strane **malvera koji kradu informacije**.
|
||||
|
||||
Primarni cilj WhiteIntela je borba protiv preuzimanja naloga i napada ransomware-a koji proizilaze iz malvera koji kradu informacije.
|
||||
|
||||
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za **besplatno** na:
|
||||
|
||||
{% embed url="https://whiteintel.io" %}
|
||||
|
||||
<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**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue