OSCP/OSCP Course PDF

14. Password Attacks -1 (cewl,fgdump)

우와해커 2020. 3. 4. 16:54

fgdump,pwdump,wce : 현재 윈도우10 호환버전 안나옴, (2020-03-09)

www.foofus.net/?cat=8

https://www.ampliasecurity.com/research/windows-credentials-editor/

 

14.  Password Attacks

 

14.1 - Preparing for Brute Force
Generally speaking, the passwords used in our guessing attempts can come from two sources: dictionary files or key-space brute-force.

 

14.1.1 - Dictionary Files
칼리에서 제공하는 사전파일 위치
/usr/share/wordlists/

 

14.1.2 - Key-space Brute Force
암호 키 공간 무차별 대입은 가능한 모든 문자 조합을 생성하고 암호 크래킹에 사용하는 기술입니다. 이러한 목록을 만들기위한 강력한 도구 인 crunch는 Kali에서 찾을 수 있습니다. Crunch는 정의 된 문자 세트 및 비밀번호 형식으로 사용자 정의 단어 목록을 생성 할 수 있습니다. 예를 들어, 문자 0-9와 A-F를 포함하는 단어 목록을 만들려면 다음과 유사한 명령을 입력합니다.

 

root@kali:~# crunch 6 6 0123456789ABCDEF -o crunch1.txt
.....
root@kali:~# wc -l crunch1.txt
16777216 crunch1.txt

 

대체 방안으로 미리 만들어진 문자세트르 이용해 워드리스트를 만들 수도 있습니다.
root@kali:~# crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha

 

Crunch는 더 많은 사용자 정의 비밀번호 목록을 생성하는 데에도 사용할 수 있습니다. 예를 들어, 다음 시나리오를 고려하십시오. 당신은 mid-engagement로써 특정 기계에서 몇 개의 사용자 암호를 해독했습니다.

 

root@kali:~# cat dumped.pass.txt
david: Abc$#123
mike: Jud()666
...

암호 구조는 다음과 같은 경향이 있습니다.
[Capital Letter] [2 x lower case letters] [2 x special chars] [3 x numeric]

 

위에 표시된 것과 동일한 형식과 구조를 사용하여 비밀번호가있는 8자 비밀번호 파일을 생성하려고합니다. Crunch를 사용하면 아래와 같이 문자 변환 자리 표시자를 사용하여이 작업을 수행 할 수 있습니다.
@ - Lower case alpha characters
, - Upper case alpha characters
% - Numeric characters
^ - Special characters including space

 

root@kali:~# crunch 8 8 -t ,@@^^%%%
Crunch will now generate the following amount of data: 172262376000 bytes
164282 MB
160 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 19140264000
Aaa!!00

 

위 명령에서 주목할만한 몇 가지 사항이 있습니다.
1) 출력 파일의 거대한 크기 : 160GB, 190 억 개 이상의 항목이 있습니다. 무차별 강제 실행 대상에 따라 이러한 큰 사전 파일은 실행 가능하지 않을 수 있습니다.
2) 이러한 암호를 생성하기 위해 불명확 한 명령 행 구문. Crunch에는 암호 생성 기능을 완전히 파악하기 위해 탐색해야하는 많은 고급 기능이 있습니다. Crunch에 대한 자세한 정보는 man 명령을 사용하여 해당 맨 페이지를 호출하십시오.

 

 

14.1.3 - Pwdump and Fgdump
Microsoft Windows 운영 체제는 SAM (Security Accounts Manager)에 해시 된 사용자 비밀번호를 저장합니다.

SAM 데이터베이스 오프라인 암호 공격을 방지하기 위해 Microsoft는 SAM 파일을 부분적으로 암호화하는 SYSKEY 기능 (Windows NT 4.0 SP3)을 도입했습니다.
Windows 2003 기반의 Windows NT 기반 운영 체제는 DES 기반 LAN Manager (LM) 66과 MD4 해싱 기반 NT LAN (NT LAN Manager) 67의 두 가지 암호 해시를 저장합니다. LM은 여러 가지 이유로 매우 약한 것으로 알려져 있습니다.

 

o 7자를 초과하는 비밀번호는 두 개의 문자열로 분할되며 각 부분은 개별적으로 해시됩니다.
o 암호는 해시되기 전에 대문자로 변환됩니다.
o LM 해싱 시스템에는 salt가 포함되어 있지 않으므로 레인보우 테이블 공격이 가능합니다.

 

Windows Vista부터 지금까지 Windows 운영 체제는 기본적으로 LM을 비활성화하고 NTLM을 사용합니다. NTLM은 대소 문자를 구분하고 모든 유니 코드 문자를 지원하며 저장된 암호를 두 개의 7자로 제한하지 않습니다.

 

그러나 SAM 데이터베이스에 저장된 NTLM 해시는 여전히 솔트되지 않습니다. Windows 커널은 파일에 대한 독점 파일 시스템 잠금을 유지하므로 운영 체제가 실행되는 동안 SAM 데이터베이스를 복사 할 수 없습니다.
그러나 SAM 해시를 덤프하는 메모리 내 공격은 다양한 기술을 사용하여 마운트 할 수 있습니다.

 

Pwdump 및 fgdump68은 해시 덤프 코드가 포함 된 DLL을 로컬 보안에 삽입 할 때 메모리 내 공격을 수행 할 수있는 도구의 좋은 예입니다. 권한 서브 시스템 (LSASS)프로세스. LSASS 프로세스에는 암호 해시와 해시 덤프 도구에서 사용할 수있는 많은 유용한 API를 추출하는데 필요한 권한이 있습니다.

Fgdump는 pwdump와 매우 유사한 방식으로 작동하지만 암호 해시와 캐시된 자격 증명을 덤프하기 전에 로컬 백신을 종료하려고 시도합니다.

 

C:\>fgdump.exe
...
...
Successful servers:
127.0.0.1
Total failed: 0
Total successful: 1

C:\>type 127.0.0.1.pwdump
admin:500:NO PASSWORD*********************:6F403D3166024568403A94C3A6561896:::
bob:1000:NO PASSWORD*********************:86160C786144F55AF97AB2399F9FA1F8:::
cory:1003:NO PASSWORD*********************:347B029F300E1AD45D384E9A2A95A952:::

 

 

14.1.4 - Windows Credential Editor (WCE)

 

WCE (Windows Credentials Editor)은 여러 공격을 수행하여 compromised Windows 호스트에서 일반 텍스트 암호와 해시를 얻을 수있는 보안 도구입니다. 무엇보다도 WCE는 메모리에서 NTLM 자격 증명을 훔치고 msv1_0.dll, kerberos.dll 및 digest.dll과 같은 대상 시스템에 설치된 Windows 인증 패키지에 저장된 일반 텍스트 암호를 덤프 할 수 있습니다.

 

WCE가 DLL 삽입을 사용하거나 LSASS 프로세스 메모리를 직접 읽음으로써 자격 증명을 훔칠 수 있다는 점은 매우 흥미 롭습니다. 두 번째 방법은 코드가 높은 권한을 가진 프로세스에 삽입되지 않기 때문에 운영 체제 안정성 측면에서 더 안전합니다.
단점은 LSASS 프로세스 메모리에서 자격 증명을 추출하고 해독한다는 것은 문서화되지 않은 Windows 구조 작업을 의미하므로 최신 버전의 OS에 대해 이 방법의 이식성을 줄입니다.

 

c:\>whoami
c:\>wce -w

 

14.1.5 - Exercises
1. Use fgdump on your Windows system.
2. Use WCE on your Windows system.

 

 

 

14.1.6 - Password Profiling

 

사전 파일을 customize하고 특정 대상에 대해 더 강력하게 만드는 한 가지 방법은 비밀번호 프로파일링 기술을 사용하는 것입니다. 여기에는 올바른 비밀번호를 찾을 가능성을 높이기 위해 특정 조직에서 가져온 단어와 구를 단어 목록에 포함시키는 것이 포함됩니다. 예를 들어 Nano-Technology를 다루는 회사인 megacorpone.com을 생각해보십시오.

이 네트워크의 관리자는 비밀번호 “nanobots93”을 사용하여 서비스 중 하나를 보호했습니다. “나노봇 (Nanobots)”은 회사가 만든 제품으로 기본 웹 사이트에 나열되어 있습니다.

cewl71과 같은 도구를 사용하여 megacorpone.com 웹 서버를 긁어 웹 페이지에있는 단어에서 비밀번호 목록을 생성 할 수 있습니다.

root@kali:~# cewl www.megacorpone.com -m 6 -w megacorp-cewl.txt
root@kali:~# wc -l megacorp-cewl.txt
249
root@kali:~# grep nanobot megacorp-cewl.txt
nanobots

Cewl은 megacorpone.com 웹 사이트에서 문자열“nanobots”를 검색했으며 이제 해당 암호는 megacorpone.com과 관련된 사용자 지정 사전 파일에 존재합니다.

 

14.1.7 - Password Mutating

 

사용자는 일반적으로 다양한 방법으로 비밀번호를 변경하는 경향이 있습니다. 여기에는 비밀번호 끝에 몇 개의 숫자를 추가하거나 소문자를 대문자로 바꾸거나 특정 문자를 숫자로 바꾸는 등이 포함될 수 있습니다.

cewl에 의해 생성된 최소한의 비밀번호 목록을 가져 와서 이러한 비밀번호에 공통 돌연변이 서열을 추가 할 수 있습니다. 이를위한 좋은 도구는 John the Ripper입니다. John은 암호 변이를 정의 할 수있 는 광범위한 구성 파일과 함께 제공됩니다.

다음 예에서는 간단한 규칙을 추가하여 각 비밀번호에 두 개의 숫자를 추가합니다.

root@kali:~# nano /etc/john/john.conf
...
# Wordlist mode rules
[List.Rules:Wordlist]
# Try words as they are
:
# Lowercase every pure alphanumeric word
-c >3 !?X l Q
# Capitalize every pure alphanumeric word
-c (?a >2 !?X c Q
# Lowercase and pluralize pure alphabetic words

Try the second half of split passwords
-s x**
-s-c x** M l Q
# Add two numbers to the end of each password
$[0-9]$[0-9]

 

john.conf 구성 파일이 업데이트되면 cewl에 의해 생성 된 249 개의 항목이 포함 된 사전을 변경합니다. 결과 파일은 암호에서 여러 번의 돌연변이로 인해 37,000 개 이상의 암호를 입력했으며 암호 중 하나는 "nanobots93"입니다.

root@kali:~# john --wordlist=megacorp-cewl.txt --rules --stdout > mutated.txt
words: 37136 time: 0:00:00:00 DONE (Tue Apr 23 12:20:20 2013) w/s: 1232K current:
Obviously99
root@kali:~# grep nanobots mutated.txt
...
nanobots90
nanobots91

 

물론 이것은 특정 서비스에 대해 유효한 암호를 성공적으로 생성했음을 보여줍니다.

그러나 암호 프로파일 링이 무차별 대입 공격의 전반적인 성공에 어떻게 도움이 될 수 있는지에 대한 좋은 예입니다.
흥미롭게도 각 비밀번호 끝에 두 개의 숫자를 3으로 추가하는 사용자 지정 돌연변이를 변경하면 비밀번호 목록 크기가 7 배 증가합니다.

 

# Add three numbers
$[0-9]$[0-9]$[0-9]

 

root@kali:~# john --wordlist=megacorp-cewl.txt --rules --stdout >hugepass.txt
words: 261236 …

 

14.1.7.1 - Exercise
(Reporting is not required for this exercise)
1. Use cewl to generate a custom wordlist from your company website. Examine
the results. Do any of your passwords show up?