Instalirajte Burp sertifikat
Tip
Nauči i vežbaj AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Nauči i vežbaj GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Nauči i vežbaj Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Pregledaj kompletan HackTricks Training katalog za assessment tracks (ARTA/GRTA/AzRTA) i Linux Hacking Expert (LHE).
Podrži HackTricks
- Pogledaj pretplatničke planove!
- Pridruži se 💬 Discord grupi, telegram grupi, prati @hacktricks_live na X/Twitter, ili pogledaj LinkedIn stranicu i YouTube kanal.
- Deli hacking trikove slanjem PR-ova u HackTricks i HackTricks Cloud github repozitorijume.
Sistemski proxy putem ADB-a
Konfigurišite globalni HTTP proxy tako da sav saobraćaj aplikacija prolazi kroz vaš interceptor (Burp/mitmproxy):
# Set proxy (device/emulator must reach your host IP)
adb shell settings put global http_proxy 192.168.1.2:8080
# Clear proxy
adb shell settings put global http_proxy :0
Savet: U Burp podesite listener da sluša na 0.0.0.0 tako da uređaji na LAN-u mogu da se povežu (Proxy -> Options -> Proxy Listeners).
Na virtuelnoj mašini
Prvo treba da preuzmete Der sertifikat iz Burp-a. To možete uraditi u Proxy –> Options –> Import / Export CA certificate
.png)
Izvezite sertifikat u Der formatu i hajde da ga pretvorimo u oblik koji će Android moći da razume. Imajte na umu da, kako biste konfigurisali burp sertifikat na Android mašini u AVD, morate pokrenuti tu mašinu sa opcijom -writable-system.
Na primer, možete je pokrenuti ovako:
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
Zatim, da biste konfigurisali burps certificate, uradite:
openssl x509 -inform DER -in burp_cacert.der -out burp_cacert.pem
CERTHASHNAME="`openssl x509 -inform PEM -subject_hash_old -in burp_cacert.pem | head -1`.0"
mv burp_cacert.pem $CERTHASHNAME #Correct name
adb root && sleep 2 && adb remount #Allow to write on /syste
adb push $CERTHASHNAME /sdcard/ #Upload certificate
adb shell mv /sdcard/$CERTHASHNAME /system/etc/security/cacerts/ #Move to correct location
adb shell chmod 644 /system/etc/security/cacerts/$CERTHASHNAME #Assign privileges
adb reboot #Now, reboot the machine
Once the machine finish rebooting the Burp certificate will be in use by it!
Korišćenje Magisk-a
Ako ste rooted your device with Magisk (možda emulator), i can’t follow prethodne steps za instalaciju Burp cert zato što je filesystem is read-only i ne možete da ga remount-ujete kao writable, postoji drugi način.
Objašnjeno u this video potrebno je da:
- Install a CA certificate: Jednostavno drag&drop DER Burp certificate menjajući ekstenziju u
.crtna mobilnom uređaju tako da bude smešten u Downloads folder i idite naInstall a certificate->CA certificate
.png)
- Proverite da li je sertifikat ispravno sačuvan odlaskom na
Trusted credentials->USER
.png)
- Make it System trusted: Preuzmite Magisk modul MagiskTrustUserCerts (a .zip file), drag&drop ga na telefon, otvorite Magisk app na telefonu u sekciju
Modules, kliknite naInstall from storage, izaberite.zipmodul i kada je instaliran reboot telefon:
.png)
- Nakon reboot-ovanja, idite na
Trusted credentials->SYSTEMi proverite da li je Postswigger cert prisutan
.png)
Alternativa: AlwaysTrustUserCerts (Android 7-16 Beta)
Ako ste na Android 14+ (ili na starijim uređajima koji su dobili Conscrypt Mainline update i sada koriste /apex/com.android.conscrypt/cacerts), Magisk modul AlwaysTrustUserCerts automatizuje bind-mounting potreban za system trust. On preslikava user CA u system trust i ubacuje mount-ove u Zygote/app namespaces tako da aplikacije vide sertifikate bez ručnog nsenter rada.
- Instalirajte Burp CA prvo kao user cert.
- Instalirajte modul i reboot-ujte.
- Ako modul nudi opciju, preferirajte
--rbindprilikom mount-ovanja/system/etc/security/cacertsu/apex/com.android.conscrypt/cacertskako biste osigurali vidljivost ugnježdenih mount-ova (od drugih modula).
Naučite kako kreirati Magisk modul
Post Android 14
U najnovijem Android 14 izdanju primećen je značajan pomak u načinu rukovanja system-trusted Certificate Authority (CA) sertifikatima.
Note: Some Android 12/13 devices that received Conscrypt Mainline updates already use /apex/com.android.conscrypt/cacerts. If that directory exists on your device, you must use the same APEX injection technique described below.
Ranije su ovi sertifikati bili smešteni u /system/etc/security/cacerts/, dostupni i izmenljivi korisnicima sa root privilegijama, što je omogućavalo njihovu trenutnu primenu kroz ceo sistem. Međutim, sa Android 14, mesto za skladištenje je premesteno u /apex/com.android.conscrypt/cacerts, direktorijum unutar /apex puta, koji je po prirodi immutable.
Pokušaji da se APEX cacerts put učini writable remount-ovanjem završavaju neuspehom, jer sistem ne dozvoljava takve operacije. Čak i pokušaji da se unmount-uje ili overlay-uje direktorijum privremenim fajl sistemom (tmpfs) ne zaobilaze immutable svojstvo; aplikacije nastavljaju da koriste originalne podatke sertifikata bez obzira na promene na nivou fajl sistema. Ova otpornost je posledica toga što je /apex mount konfigurisana sa PRIVATE propagation, što osigurava da bilo kakve izmene unutar /apex direktorijuma ne utiču na druge procese.
Inicijalizacija Android-a uključuje init proces, koji pri pokretanju operativnog sistema takođe pokreće Zygote proces. Ovaj proces je odgovoran za pokretanje application procesa sa novim mount namespace-om koji uključuje privatni /apex mount, čime se izoluje promene u ovom direktorijumu od drugih procesa.
Ipak, postoji workaround za one kojima je potrebno da izmene system-trusted CA sertifikate unutar /apex direktorijuma. To podrazumeva ručno remount-ovanje /apex kako bi se uklonila PRIVATE propagation, čime se direktorijum čini writable. Proces uključuje kopiranje sadržaja /apex/com.android.conscrypt na drugo mesto, unmount-ovanje /apex/com.android.conscrypt direktorijuma da bi se uklonilo read-only ograničenje, i zatim vraćanje sadržaja na originalnu lokaciju unutar /apex. Ovaj pristup zahteva brzu akciju kako bi se izbegli sistemski crash-ovi. Da bi se osigurala sistemska primena ovih izmena, preporučuje se restartovanje system_server, što efikasno restartuje sve aplikacije i dovodi sistem u konzistentno stanje.
# Create a separate temp directory, to hold the current certificates
# Otherwise, when we add the mount we can't read the current certs anymore.
mkdir -p -m 700 /data/local/tmp/tmp-ca-copy
# Copy out the existing certificates
cp /apex/com.android.conscrypt/cacerts/* /data/local/tmp/tmp-ca-copy/
# Create the in-memory mount on top of the system certs folder
mount -t tmpfs tmpfs /system/etc/security/cacerts
# Copy the existing certs back into the tmpfs, so we keep trusting them
mv /data/local/tmp/tmp-ca-copy/* /system/etc/security/cacerts/
# Copy our new cert in, so we trust that too
mv $CERTIFICATE_PATH /system/etc/security/cacerts/
# Update the perms & selinux context labels
chown root:root /system/etc/security/cacerts/*
chmod 644 /system/etc/security/cacerts/*
chcon u:object_r:system_file:s0 /system/etc/security/cacerts/*
# Deal with the APEX overrides, which need injecting into each namespace:
# First we get the Zygote process(es), which launch each app
ZYGOTE_PID=$(pidof zygote || true)
ZYGOTE64_PID=$(pidof zygote64 || true)
# N.b. some devices appear to have both!
# Apps inherit the Zygote's mounts at startup, so we inject here to ensure
# all newly started apps will see these certs straight away:
for Z_PID in "$ZYGOTE_PID" "$ZYGOTE64_PID"; do
if [ -n "$Z_PID" ]; then
nsenter --mount=/proc/$Z_PID/ns/mnt -- \
/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
fi
done
# Then we inject the mount into all already running apps, so they
# too see these CA certs immediately:
# Get the PID of every process whose parent is one of the Zygotes:
APP_PIDS=$(
echo "$ZYGOTE_PID $ZYGOTE64_PID" | \
xargs -n1 ps -o 'PID' -P | \
grep -v PID
)
# Inject into the mount namespace of each of those apps:
for PID in $APP_PIDS; do
nsenter --mount=/proc/$PID/ns/mnt -- \
/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts &
done
wait # Launched in parallel - wait for completion here
echo "System certificate injected"
Bind-mounting through NSEnter
- Podešavanje direktorijuma sa pravom pisanja: Prvo se uspostavlja direktorijum u koji se može pisati tako što se montira
tmpfspreko postojećeg non-APEX sistemskog direktorijuma sertifikata. To se postiže sledećom komandom:
mount -t tmpfs tmpfs /system/etc/security/cacerts
-
Preparing CA Certificates: Nakon podešavanja direktorijuma koji dozvoljava pisanje, CA sertifikate koje želite da koristite treba kopirati u ovaj direktorijum. To može uključivati kopiranje podrazumevanih sertifikata iz
/apex/com.android.conscrypt/cacerts/. Važno je odgovarajuće podesiti permisije i SELinux labele tih sertifikata. -
Bind Mounting for Zygote: Korišćenjem
nsenterulazi se u mount namespace Zygote-a. Zygote, proces odgovoran za pokretanje Android aplikacija, zahteva ovaj korak kako bi sve aplikacije koje se od sada pokreću koristile novokonfigurisane CA sertifikate. Komanda koja se koristi je:
Tip: Ako /system/etc/security/cacerts sadrži ugnježdene mount-ove (uobičajeno kod Magisk modula), koristite --rbind umesto --bind kako bi se ti mount-ovi propagirali u namespace-ove aplikacija.
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
# If /system/etc/security/cacerts includes nested mounts, prefer --rbind
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --rbind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
Ovo osigurava da će svaka nova aplikacija koja se pokrene poštovati ažuriranu konfiguraciju CA sertifikata.
- Primena izmena na pokrenute aplikacije: Da bi se izmene primenile na već pokrenute aplikacije,
nsenterse ponovo koristi da bi se ušlo u namespace svake aplikacije pojedinačno i izvršio sličan bind mount. Potrebna komanda je:
nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
- Alternativni pristup - Soft Reboot: Alternativna metoda podrazumeva izvršavanje bind mount-a na procesu
init(PID 1), praćeno soft reboot-om operativnog sistema pomoću komandistop && start. Ovaj pristup bi propagirao izmene kroz sve namespaces, izbegavajući potrebu da se pojedinačno obrađuje svaka aktivna app. Međutim, ovaj metod je generalno manje poželjan zbog nepraktičnosti ponovnog pokretanja.
Reference
- Android 14: Install a system CA certificate on a rooted device
- Intercepting traffic on Android with Mainline and Conscrypt
- AlwaysTrustUserCerts Magisk module
- Build a Repeatable Android Bug Bounty Lab: Emulator vs Magisk, Burp, Frida, and Medusa
Tip
Nauči i vežbaj AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Nauči i vežbaj GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Nauči i vežbaj Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Pregledaj kompletan HackTricks Training katalog za assessment tracks (ARTA/GRTA/AzRTA) i Linux Hacking Expert (LHE).
Podrži HackTricks
- Pogledaj pretplatničke planove!
- Pridruži se 💬 Discord grupi, telegram grupi, prati @hacktricks_live na X/Twitter, ili pogledaj LinkedIn stranicu i YouTube kanal.
- Deli hacking trikove slanjem PR-ova u HackTricks i HackTricks Cloud github repozitorijume.


