소개
사이버 보안 및 디지털 포렌식 분야에서는 암호화 해시 (cryptographic hashes) 를 자주 접하게 됩니다. 해시는 임의의 데이터 블록에 적용된 단방향 수학 함수의 결과로 생성되는 고정 크기의 바이트 문자열입니다. 비밀번호 해시를 크랙 (crack) 하려고 시도하기 전에, 먼저 MD5, SHA-1 또는 NTLM 과 같이 이를 생성하는 데 사용된 알고리즘을 식별해야 합니다.
이 실습에서는 알 수 없는 해시 유형을 식별하는 필수 기술을 배우게 됩니다. Linux 에서 사용 가능한 일반적인 명령줄 도구를 사용하여 예시 해시 목록을 분석하고 해당 알고리즘을 결정합니다. 이는 모든 비밀번호 크랙킹 활동의 중요한 첫 번째 단계입니다.
다양한 예시 해시 목록 수집
이 단계에서는 여러 가지 다른 유형의 해시를 포함하는 텍스트 파일을 생성합니다. 이 파일은 후속 단계에서 식별 도구의 입력으로 사용됩니다. 각 해싱 알고리즘은 특정 길이와 문자 세트를 가진 해시를 생성하며, 이를 통해 식별 도구가 서로 구별할 수 있습니다.
먼저, Here Document (<<EOF) 와 함께 cat 명령을 사용하여 ~/project 디렉토리에 hashes.txt라는 파일을 생성합니다. 이 파일에는 세 가지 일반적인 해시 유형인 MD5, SHA-1 및 NTLM 이 포함됩니다.
터미널에서 다음 명령을 실행합니다.
cat << EOF > hashes.txt
d41d8cd98f00b204e9800998ecf8427e
da39a3ee5e6b4b0d3255bfef95601890afd80709
32ed87bd5fdc5e204e2620a05a069858
EOF
파일을 생성한 후에는 cat 명령을 다시 사용하여 내용을 확인할 수 있습니다.
cat hashes.txt
다음과 같은 출력이 표시되어 세 개의 해시가 파일에 성공적으로 저장되었음을 확인할 수 있습니다.
d41d8cd98f00b204e9800998ecf8427e
da39a3ee5e6b4b0d3255bfef95601890afd80709
32ed87bd5fdc5e204e2620a05a069858
이제 해시 목록을 준비했으므로 식별을 시작할 준비가 되었습니다.
Kali 에서 hashid 도구 사용하기
이 단계에서는 hashes.txt 파일에 저장한 해시를 분석하기 위해 hashid 도구를 사용합니다. hashid는 해시의 길이와 문자 구성을 분석하여 다양한 해시 유형을 식별하는 명령줄 유틸리티입니다. 해시 분석 초기 단계에 유용하고 강력한 도구입니다.
hashid를 사용하려면 해시가 포함된 파일을 인수로 제공하기만 하면 됩니다. 도구는 파일의 각 줄을 처리하고 해당 줄의 해시를 식별하려고 시도합니다.
hashes.txt 파일에 대해 hashid를 실행합니다.
hashid hashes.txt
도구는 각 해시를 분석하고 결과를 터미널에 출력합니다. 출력에는 해시 문자열과 함께 가능한 해시 알고리즘 목록이 표시됩니다.
--File 'hashes.txt'--
d41d8cd98f00b204e9800998ecf8427e
[+] MD5
[+] Domain Cached Credentials (DCC)
da39a3ee5e6b4b0d3255bfef95601890afd80709
[+] SHA-1
[+] RipeMD-160
32ed87bd5fdc5e204e2620a05a069858
[+] NTLM
[+] MD4
[+] MD5
--End of file 'hashes.txt'--
보시다시피 hashid는 각 해시에 대해 하나 이상의 잠재적 일치 항목을 제공합니다. 다음 단계에서는 이 출력을 해석하는 방법을 배우게 됩니다.
hashid 출력 분석하기
이 단계에서는 hashid의 출력을 해석하는 방법을 배웁니다. 이 도구는 가능한 목록을 제공하지만, 올바른 해시 유형을 좁히기 위해서는 종종 컨텍스트나 추가 분석을 사용해야 합니다.
이전 단계의 출력을 분석해 보겠습니다.
- 첫 번째 해시 (
d41d8cd98f00b204e9800998ecf8427e) 에 대해hashid는 MD5와 **Domain Cached Credentials (DCC)**를 제안합니다. MD5 는 이 형식의 해시에 가장 일반적인 유형입니다. - 두 번째 해시 (
da39a3ee5e6b4b0d3255bfef95601890afd80709) 에 대한 제안은 SHA-1과 RipeMD-160입니다. SHA-1 은 매우 일반적인 선택입니다. - 세 번째 해시 (
32ed87bd5fdc5e204e2620a05a069858) 에 대해hashid는 NTLM, MD4, MD5를 나열합니다. Windows 환경에서는 NTLM 이 매우 가능성 있는 후보입니다.
hashid는 또한 비밀번호 크래킹 도구인 Hashcat 에서 사용되는 해당 모드 코드를 보여줄 수 있습니다. 이를 위해 -m 플래그 뒤에 단일 해시를 사용합니다. 첫 번째 해시의 Hashcat 모드를 확인해 보겠습니다.
hashid -m d41d8cd98f00b204e9800998ecf8427e
이제 출력에는 각 잠재적 해시 유형에 대한 Hashcat 모드 번호가 포함됩니다.
--Hash 'd41d8cd98f00b204e9800998ecf8427e'--
[+] MD5 [HC: 0]
[+] Domain Cached Credentials (DCC) [HC: 1100]
이는 Hashcat 의 경우 MD5 가 모드 -m 0에 해당함을 나타냅니다. 이 정보는 크래킹 세션을 설정하는 데 중요합니다.
온라인 해시 분석 도구를 보조 의견으로 사용하기
이 단계에서는 또 다른 명령줄 도구인 hash-identifier를 사용하여 해시 유형에 대한 두 번째 의견을 얻습니다. 모든 분석에서 서로 다른 도구가 서로 다른 데이터베이스와 알고리즘을 가질 수 있으므로 여러 도구를 사용하여 결과를 확인하는 것이 좋습니다.
hash-identifier는 대화형 Python 스크립트입니다. 명령을 실행하면 식별하려는 해시를 입력하라는 메시지가 표시됩니다.
먼저 터미널에 도구 이름을 입력하여 도구를 시작합니다.
hash-identifier
해시를 묻는 프롬프트가 표시됩니다.
#########################################################################
## __ __ __ __ _ _ _ #
## / / / /___ ____ ___ ___ / /_ _______/ /_ (_)_________| | / / #
## / /_/ / __ \/ __ `__ \/ _ \/ __ \/ ___/ __ \/ / / ___/ ___/ |/ / #
## / __ / /_/ / / / / / / __/ /_/ / /__/ / / / / / /__/ / / /| / #
## /_/ /_/\____/_/ /_/ /_/\___/_.___/\___/_/ /_/_/_/\___/_/ /_/ |_/ #
## #
## by c0decracker #
#########################################################################
HASH:
이제 hashes.txt 파일에서 해시 중 하나 (예: 두 번째 해시 da39a3ee5e6b4b0d3255bfef95601890afd80709) 를 복사하여 프롬프트에 붙여넣고 Enter를 누릅니다.
도구가 해시를 분석하고 결론을 제공합니다.
HASH: da39a3ee5e6b4b0d3255bfef95601890afd80709
Possible Hashs:
[+] SHA-1
[+] RipeMD-160
Least Possible Hashs:
출력은 해시가 가장 가능성 있게 SHA-1이라는 hashid의 결과를 확인합니다. Ctrl+C를 눌러 hash-identifier 도구를 종료할 수 있습니다.
식별된 해시 유형을 Hashcat 의 -m 코드와 일치시키기
이 마지막 단계에서는 세계에서 가장 빠른 비밀번호 복구 도구인 Hashcat 과 함께 사용할 올바른 모드 (-m) 코드를 찾는 방법을 배웁니다. hashid -m이 이 정보를 제공할 수 있지만, Hashcat 의 광범위한 도움말 메뉴에서도 직접 찾을 수 있습니다. 이는 모드를 확인하거나 덜 일반적인 해시 유형에 대한 코드를 찾는 데 유용합니다.
Hashcat 은 -m 플래그와 함께 숫자 코드를 사용하여 해시 유형을 지정해야 합니다. 올바른 코드를 찾으려면 grep을 사용하여 Hashcat 의 도움말 출력을 검색할 수 있습니다.
MD5에 대한 모드를 찾아봅시다. 다음 명령을 실행합니다.
hashcat --help | grep "MD5"
출력은 MD5 와 관련된 모든 모드의 긴 목록이 됩니다. 일반 MD5 항목을 찾으십시오.
...
0 | MD5 | Raw Hash
...
보시다시피 표준 MD5 해시의 모드는 0입니다.
이제 SHA-1에 대해서도 동일하게 수행합니다.
hashcat --help | grep "SHA-1"
...
100 | SHA-1 | Raw Hash
...
SHA-1 의 모드는 100입니다.
마지막으로 NTLM에 대한 모드를 찾아봅시다.
hashcat --help | grep "NTLM"
...
1000 | NTLM | Raw Hash
...
NTLM 의 모드는 1000입니다. 해시 유형과 해당 Hashcat 모드를 올바르게 식별함으로써 이제 비밀번호 크래킹 공격을 구성할 준비가 되었습니다.
요약
이 실습에서는 비밀번호 크래킹의 중요한 전제 조건인 알 수 없는 해시 유형을 식별하는 기본 프로세스를 배웠습니다. 다양한 해시 예제가 포함된 파일을 만드는 것으로 시작했습니다. 그런 다음 두 가지 강력한 명령줄 도구인 hashid와 hash-identifier를 사용하여 이러한 해시를 분석하고 가능한 알고리즘을 결정했습니다. 마지막으로 식별된 해시 유형을 Hashcat 의 광범위한 모드 목록과 상호 참조하여 크래킹 세션에 대한 올바른 -m 코드를 찾는 방법을 배웠습니다. 이 기술은 침투 테스트 또는 디지털 포렌식에 관련된 모든 사이버 보안 전문가에게 필수적입니다.


