소개
이 실습에서는 NTLM (NT LAN Manager) 해시를 크래킹하는 방법을 학습하여 비밀번호 보안의 세계를 깊이 탐구합니다. NTLM 은 Microsoft Windows 시스템에서 사용자 비밀번호를 저장하는 데 사용되는 해싱 알고리즘입니다. 이러한 해시가 어떻게 크래킹될 수 있는지 이해하는 것은 침투 테스팅 및 보안 감사에서 기본적인 기술입니다.
이 실습에서는 강력하고 인기 있는 비밀번호 복구 도구인 Hashcat 을 사용하여 샘플 NTLM 해시에 대한 사전 공격 (dictionary attack) 을 수행합니다. 이 실습이 끝나면 비밀번호 크래킹의 기본 프로세스를 이해하고 강력하고 복잡한 비밀번호를 사용하는 것의 중요성을 인식하게 될 것입니다.
NTLM 해시 이해하기
이 단계에서는 NTLM 해시의 기본 사항에 대해 배웁니다. 이 기초 지식은 해시를 크래킹하기 전에 매우 중요합니다.
NTLM (NT LAN Manager) 은 Microsoft 에서 개발한 보안 프로토콜 제품군입니다. NTLM 의 주요 기능 중 하나는 인증을 처리하는 것입니다. Windows 시스템에서 비밀번호를 설정하면 평문으로 저장되지 않습니다. 대신 NTLM 알고리즘을 사용하여 해시 값으로 변환됩니다.
NTLM 해시는 128 비트 값이며, 일반적으로 32 자리의 16 진수 문자열로 표현됩니다. 예를 들어, 비밀번호 "password"의 NTLM 해시는 8846f7eaee8fb117ad06bdd830b7586c입니다.
해싱은 단방향 프로세스이기 때문에 원래 비밀번호를 얻기 위해 직접 "해시를 풀 수 (un-hash)" 없습니다. 그러나 공격자는 사전 공격 (dictionary attacks) 또는 무차별 대입 공격 (brute-force attacks) 과 같은 기술을 사용하여 비밀번호를 추측하고, 추측한 비밀번호를 해싱하여 대상 해시와 일치하는지 확인할 수 있습니다. 이것이 이 실습에서 탐구할 과정입니다.
이 단계에서는 실행할 명령이 없습니다. 샘플 해시 파일을 생성하려면 다음 단계로 진행하십시오.
샘플 NTLM 해시 파일 생성
이 단계에서는 샘플 NTLM 해시가 포함된 파일을 생성합니다. 실제 침투 테스트에서는 먼저 Windows 시스템의 보안 계정 관리자 (SAM) 데이터베이스에서 이러한 해시를 추출해야 합니다. 이 교육용 실습에서는 알려진 해시가 있는 텍스트 파일을 간단히 생성할 것입니다.
모든 작업은 ~/project 디렉토리에서 수행됩니다. 먼저 echo 명령을 사용하여 ntlm_hash.txt라는 파일을 생성하고 샘플 NTLM 해시를 작성합니다. 이 해시는 일반적이고 취약한 비밀번호에 해당합니다.
echo "8846f7eaee8fb117ad06bdd830b7586c" > ~/project/ntlm_hash.txt
이제 cat 명령을 사용하여 파일 내용을 표시하여 파일이 올바르게 생성되었는지 확인합니다.
cat ~/project/ntlm_hash.txt
방금 저장한 해시인 다음 출력이 표시되어야 합니다.
8846f7eaee8fb117ad06bdd830b7586c
해시 파일이 준비되었으므로 이제 크래킹 프로세스를 준비할 수 있습니다.
NTLM 에 대한 올바른 해시 모드 선택
이 단계에서는 Hashcat 에서 NTLM 해시에 대한 올바른 해시 모드를 식별하는 방법을 배웁니다.
Hashcat 은 웹 애플리케이션 비밀번호 해시부터 운영 체제 해시까지 수백 가지의 다양한 해시 유형을 지원하는 다목적 도구입니다. 올바르게 작동하려면 크래킹하려는 해시 유형을 Hashcat 에 정확하게 알려야 합니다. 이는 특정 모드 번호를 사용하여 수행됩니다.
Hashcat 의 도움말 메뉴를 검색하여 NTLM 의 모드 번호를 찾을 수 있습니다. grep 명령을 사용하여 "NTLM"에 대한 출력을 필터링합니다.
hashcat --help | grep NTLM
출력에는 NTLM 과 관련된 다양한 해시 유형이 나열됩니다. 표준 NTLM 항목을 찾으십시오.
...
1000 | NTLM | Operating System
...
출력에서 볼 수 있듯이 NTLM 의 모드 번호는 1000입니다. 다음 단계에서 이 번호를 사용하여 ntlm_hash.txt 파일의 해시를 해석하는 방법을 Hashcat 에 알려줄 것입니다.
NTLM 해시에 대한 사전 공격 실행
이 단계에서는 Hashcat 을 사용하여 NTLM 해시에 대한 사전 공격을 실행합니다. 사전 공격은 "단어 목록" 또는 "사전"으로 알려진 일반 단어 및 구문 목록을 시도하여 비밀번호를 크래킹하는 방법입니다.
이 실습을 위한 설정 스크립트는 이미 ~/project 디렉토리에 rockyou.txt라는 인기 있는 단어 목록을 다운로드했습니다. 이제 공격을 시작하기 위한 Hashcat 명령을 구성합니다.
명령 구조는 다음과 같습니다.
hashcat: 프로그램 이름입니다.-m 1000: 이전 단계에서 식별한 NTLM 의 해시 모드입니다.~/project/ntlm_hash.txt: 대상 해시가 포함된 파일의 경로입니다.~/project/rockyou.txt: 단어 목록의 경로입니다.--force: 이 옵션은 환경에 잠재적인 문제가 감지되더라도 Hashcat 이 실행되도록 지시하며, 가상화된 실습에서 유용할 수 있습니다.
이제 터미널에서 전체 명령을 실행합니다.
hashcat -m 1000 ~/project/ntlm_hash.txt ~/project/rockyou.txt --force
Hashcat 이 시작됩니다. 단어 목록을 로드하고 해시 비교를 시작하므로 프로세스에 몇 분 정도 걸릴 수 있습니다. 다음과 유사한 출력이 표시됩니다.
hashcat (vX.X.X) starting...
...
Session..........: hashcat
Status...........: Running
Hash.Type........: NTLM
Hash.Target......: 8846f7eaee8fb117ad06bdd830b7586c
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (~/project/rockyou.txt)
...
Session..........: hashcat
Status...........: Cracked
...
"Status...........: Cracked" 메시지는 Hashcat 이 비밀번호를 성공적으로 찾았음을 나타냅니다.
크랙된 NTLM 비밀번호 분석
이 단계에서는 Hashcat 이 발견한 크랙된 비밀번호를 보고 분석합니다.
Hashcat 이 해시를 성공적으로 크랙하면 "potfile" (즉, "pot of gold") 이라는 파일에 결과를 저장합니다. 이렇게 하면 향후 동일한 해시를 다시 크랙할 필요가 없습니다. 이 파일의 기본 위치는 ~/.local/share/hashcat/hashcat.potfile입니다.
크랙된 비밀번호를 보는 가장 쉬운 방법은 Hashcat 의 --show 옵션을 사용하는 것입니다. 이 명령은 Hashcat 에게 입력 파일에 제공된 해시에 대한 크랙된 비밀번호를 표시하도록 지시합니다.
다음 명령을 실행합니다.
hashcat -m 1000 ~/project/ntlm_hash.txt --show
Hashcat 이 potfile 을 확인하고 해시에 대한 결과를 표시합니다.
8846f7eaee8fb117ad06bdd830b7586c:password
출력 형식은 hash:plaintext_password입니다. 보시다시피 8846f7eaee8fb117ad06bdd830b7586c 해시의 원래 비밀번호는 password입니다.
cat 명령을 사용하여 원시 potfile 을 직접 볼 수도 있습니다.
cat ~/.local/share/hashcat/hashcat.potfile
이렇게 하면 동일한 결과가 표시됩니다. 이제 NTLM 해시를 성공적으로 크랙하고 원래 비밀번호를 복구했습니다.
요약
이 실습에서는 NTLM 해시에 대한 기본적인 비밀번호 크래킹 공격을 성공적으로 수행했습니다.
다음 내용을 학습했습니다.
- NTLM 해시란 무엇이며 Windows 시스템에서 어떻게 사용되는지.
- 강력한 비밀번호 복구 도구인 Hashcat 을 사용하는 방법.
- 사전 공격의 개념과
rockyou.txt와 같은 단어 목록의 중요성. - 올바른 해시 유형을 식별하고, 공격을 시작하고, 크랙된 비밀번호를 보는 과정.
이 연습은 약한 비밀번호가 얼마나 쉽게 손상될 수 있는지를 보여줍니다. 이는 시스템과 데이터를 무단 액세스로부터 보호하기 위해 강력하고 고유하며 복잡한 비밀번호와 강력한 해싱 메커니즘을 사용하는 것의 중요성을 강조합니다.


