12 KiB
Instaliranje Burp sertifikata
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite svoju kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJATELJSTVO!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
{% embed url="https://websec.nl/" %}
Na virtuelnoj mašini
Prvo morate preuzeti Der sertifikat sa Burp-a. To možete uraditi u Proxy --> Options --> Import / Export CA certificate
Izvezite sertifikat u Der formatu i pretvorite ga u oblik koji će Android moći da razume. Imajte na umu da kako biste konfigurisali Burp sertifikat na Android mašini u AVD-u morate pokrenuti ovu mašinu sa opcijom -writable-system
.
Na primer, možete je pokrenuti ovako:
{% code overflow="wrap" %}
C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -http-proxy 192.168.1.12:8080 -writable-system
{% endcode %}
Zatim, da konfigurišete burpov sertifikat uradite sledeće:
{% code overflow="wrap" %}
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
{% endcode %}
Kada se mašina završi sa ponovnim pokretanjem, sertifikat Burp će biti u upotrebi!
Korišćenje Magiska
Ako ste rutirali uređaj pomoću Magiska (možda emulator), i ne možete pratiti prethodne korake za instalaciju Burp sertifikata jer je datotečni sistem samo za čitanje i ne možete ga ponovo montirati kao zapisiv, postoji drugi način.
Objašnjeno u ovom videu trebate:
- Instalirati CA sertifikat: Samo prevucite i otpustite DER Burp sertifikat menjajući ekstenziju u
.crt
na mobilnom uređaju tako da bude smešten u fascikli za preuzimanje i idite naInstaliraj sertifikat
->CA sertifikat
- Proverite da li je sertifikat pravilno smešten odlaskom na
Poverljivi podaci
->KORISNIK
- Učinite ga poverljivim za sistem: Preuzmite Magisk modul MagiskTrustUserCerts (
.zip
datoteka), prevucite i otpustite je na telefon, idite na Magisk aplikaciju na telefonu u odeljkuModuli
, kliknite naInstaliraj sa skladišta
, izaberite.zip
modul i jednom kada se instalira, ponovo pokrenite telefon:
- Nakon ponovnog pokretanja, idite na
Poverljivi podaci
->SISTEM
i proverite da li je Postswigger sertifikat tamo
Nakon Android 14
U najnovijem Android 14 izdanju, primećen je značajan pomak u rukovanju sertifikatima za poverljive sertifikacione autoritete (CA). Ranije su ovi sertifikati bili smešteni u /system/etc/security/cacerts/
, pristupačni i modifikovani od strane korisnika sa administratorskim privilegijama, što je omogućavalo trenutnu primenu širom sistema. Međutim, sa Androidom 14, lokacija skladištenja je premeštena u /apex/com.android.conscrypt/cacerts
, direktorijum unutar putanje /apex
, koji je po prirodi nepromenljiv.
Pokušaji ponovnog montiranja APEX cacerts putanje kao zapisive nailaze na neuspeh, jer sistem ne dozvoljava takve operacije. Čak i pokušaji demontiranja ili preklapanja direktorijuma privremenim fajl sistemom (tmpfs) ne zaobilaze nepromenljivost; aplikacije i dalje pristupaju originalnim podacima sertifikata bez obzira na promene na nivou fajl sistema. Ova otpornost je rezultat konfiguracije montiranja /apex
sa PRIVATNOM propagacijom, osiguravajući da bilo kakve modifikacije unutar direktorijuma /apex
ne utiču na druge procese.
Inicijalizacija Androida uključuje proces init
, koji, prilikom pokretanja operativnog sistema, takođe pokreće proces Zygote. Ovaj proces je odgovoran za pokretanje procesa aplikacija sa novim montažnim prostorom koji uključuje privatno montiranje /apex
, čime se izoluju promene u ovom direktorijumu od drugih procesa.
Ipak, postoji način za one koji trebaju da modifikuju sertifikate za poverljive CA sertifikate unutar direktorijuma /apex
. To uključuje ručno ponovno montiranje /apex
kako bi se uklonila PRIVATNA propagacija, čime se čini zapisivim. Proces uključuje kopiranje sadržaja /apex/com.android.conscrypt
na drugu lokaciju, demontiranje direktorijuma /apex/com.android.conscrypt
kako bi se eliminisalo ograničenje samo za čitanje, a zatim vraćanje sadržaja na originalnu lokaciju unutar /apex
. Ovaj pristup zahteva brzu akciju kako bi se izbegli padovi sistema. Da bi se osigurala sistemsko-široka primena ovih promena, preporučuje se ponovno pokretanje system_server
, što efikasno ponovo pokreće 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-montiranje putem NSEnter-a
- Postavljanje direktorijuma za pisanje: Prvo se uspostavlja direktorijum za pisanje montiranjem
tmpfs
preko postojećeg direktorijuma za sistemske sertifikate koji nisu APEX. Ovo se postiže sledećom komandom:
mount -t tmpfs tmpfs /system/etc/security/cacerts
- Priprema CA sertifikata: Nakon podešavanja upisivog direktorijuma, CA sertifikati koje nameravate koristiti treba da budu kopirani u ovaj direktorijum. To može uključivati kopiranje podrazumevanih sertifikata iz
/apex/com.android.conscrypt/cacerts/
. Bitno je prilagoditi dozvole i SELinux oznake ovih sertifikata prema potrebi. - Bind montiranje za Zygote: Korišćenjem
nsenter
, ulazi se u Zygote-ov mount namespace. Zygote, kao proces odgovoran za pokretanje Android aplikacija, zahteva ovaj korak kako bi se osiguralo da sve aplikacije pokrenute nakon toga koriste novo konfigurisane CA sertifikate. Komanda koja se koristi je:
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
Ovo osigurava da će svaka nova aplikacija koja se pokrene poštovati ažurirani CA sertifikat setup.
- Primenjivanje promena na pokrenute aplikacije: Da biste primenili promene na već pokrenute aplikacije, ponovo se koristi
nsenter
da biste pojedinačno ušli u namespace svake aplikacije i izvršili sličan bind mount. Neophodna komanda je:
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 uključuje izvođenje bind mounta na
init
procesu (PID 1), praćeno soft restartovanjem operativnog sistema pomoćustop && start
komandi. Ovaj pristup bi proširio promene preko svih namespace-ova, izbegavajući potrebu da se pojedinačno adresiraju svaka pokrenuta aplikacija. Međutim, ovaj metod je generalno manje preferiran zbog neugodnosti restartovanja.
Reference
{% embed url="https://websec.nl/" %}
Naučite hakovanje AWS-a od početnika do stručnjaka sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRETPLATU!
- Nabavite zvanični PEASS & HackTricks swag na ovoj stranici
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.