압축 파일의 암호는 브루트 포스 하면 강제로 풀 수 있다.
강의 목차: 9
1. Brute Force 및 암호화 개념
Brute force(부르트 포스) 는 암호화된 패스워드를 풀 수 있는 방법 중 하나다.
일명 무차별 대입 공격이라 불리며, 조합 가능한 모든 값 ( 숫자, 문자, 특수문자)을 하나하나 대입하여 패스워드를 맞힐 때 까지 반복 시도하는 정면 돌파 방식의 공격이다. 충분한 시간이 주어진다면, 이론상 모든 패스워드를 다 풀어낼 수 있는 공격방식.
일반적으로 패스워드 길이가 짧을수록, 경우의 수가 적어 무차별 대입 공격에 취약하다.
패스워드의 경우 일방향 암호화(암호화 및 복호화(해독) 하기 위한 열쇠(키)가 없음. 암호화 결과문(암호문)끼리 대조하며 동일한지 여부로 같은 값이라는 것을 판단.)로 암호화 된다.
일방향 암호화는 어떤 값을 넣더라도 동일한 길이의 암호문이 나오기 때문에 암호문의 길이가 짧으면 서로 다른 값을 입력해도 동일한 암호문이 나올 확률이 높아지는데, 이는 해시 함수의 취약성을 판단하는 기준 중 하나이다.
이를 보고 '충돌'이 발생했다고 이야기 한다.
충돌이 발생한 이력이 있기에 이제는 안전하지 않다고 알려져 있는 일방향 암호화 알고리즘(해시 알고리즘)은 MD5, SHA-1 등 이 있으며, 앞으로 컴퓨터 성능이 더 좋아질수록 더 많은 일방향 암호화 알고리즘들이 안전하지 않게 될 예정이다.
MD5 길이가 짧다. ( 암호화된 길이 )
ex) 로또는 6개의 숫자를 맞춰야 1등.
근데 5개의 숫자를 맞추면 1등이면? 기존 확률보다 당첨 확률이 높아진다.
좀 더 발전된 방법 Dictionary Attack ( 사전공격 )
→패스워드로 자주 사용되는 조합들의 리스트를 미리 만들어 놓은 후 , 그 조합들을 일일히 대입하여 맞추는 방식.
문자열 길이는 길다 9자리, 10자리인데 q 가 10개이거나 apple, banana 등 쉬운 단어이면 글자만 길지 사실 별게 아닐수있다. brute force 로 일일히 대입하는 거 보다는 훨씬 쉽게 풀린다. → 생각보다 적중률이 좋을수도 있다.
물론 사전(dictionary) 성능에 따라 차이가 많이난다. → 일반적으로 brute force 공격보다 시간이 절약된다.
강의에서는 몇 종류의 압축파일을 대상으로, 설정된 패스워드 암호문(해시 값)을 추출 후 brute force 공격을 시도하여 패스워드를 추출해본다.
2. 필요한 소프트웨어 설치
Brute Force 를 통한 패스워드 크랙을 실습
Zip2john, rar2john 그리고 JtR(John the Ripper)
zip 파일, rar 파일 대상으로 암호 푼다. 비밀번호를 크랙해주는 JtR 존더 리퍼
JtR(존더리퍼): brute force 공격기법을 사용해 비밀번호를 푸는 크래킹 도구.
jumbo 64bit 버전, flag.zip, flag.rar 다운로드
https://drive.google.com/drive/folders/1inGB3LoXlBizRZcX6HbUs1ey5T0bRO--
강사님이 미리 만들어둔 flag.zip 파일과 flag.rar 파일도 같이 다운로드 한다.
암호화가 되어있다. 물론 직접 만들어도 된다.
암호 입력은 잊지 않고, 암호화 관련 다른 설정은 하지 않도록 한다.
헷갈리면 안되는 부분은 "AES-256" 은 패스워드에 대한 암호화가 아니고, 패스워드를 키로 삼아 내용을 암호화 한다는 것이다. ( 직접 암호화 하지 않으면 신경쓰지 않아도 된다. )
flag 내부에 내용이 AES-256 암호화가 되어있다는 의미이며, 패스워드는 일방향 암호화로 저장되어있다.
flag.zip, flag.rar : 암호화된 파일
John the Ripper : 암호화된 파일의 비밀번호를 크래킹해주는 도구
3. 공략
flag.zip 파일을 다운받았던 JtR 폴더(압축해제했던)에 넣어준다.
그리고 shift + 마우스 우클릭 후 → 여기에 PowerShell 창 열기 (여기서 명령창 열기)클릭
dir 입력하면 해당 폴더 내의 어떤 파일들이 있는지 확인이 가능하다.
해시값 추출
→ 비밀번호는 일방향 암호화 되는데, 이 일방향 암호화된 패스워드를 추출한다.
flag.zip → zip2john2.exe 이용해서 zip 파일의 암호화된 패스워드 해시값 추출
flag.rar → rar2john2.exe 이용해서 rar 파일의 암호화된 패스워드 해시값 추출
powershell 에서 .\run\zip2john.exe flag.zip > hash.txt 입력 → 암호화된 패스워드를 추출 ( flag.zip 에서 추출) 하여 hash.txt 텍스트 파일로 저장한다.
( 현재 JtR 폴더내에 run 폴더로 들어가서 zip2john.exe 로 flag.zip 의 패스워드를 추출하여 hash.txt 파일로 저장한다. )
JtR 폴더에 hash.txt 파일이 생성되는데, 들어가서 확인해보면 해시값이 적혀있다.
일방향으로 암호화된 패스워드가 해시값으로 나와있다.
→ 이 문자열을 대상으로 Brute Force 공격을 시도하면 패스워드가 어떤것인지 알 수 있다.
그리고 이 hash.txt 파일을 JtR(존더리퍼)한테 넘겨준다. ( JtR 이 Brute Force 공격해서 암호를 푼다. )
powershell 에서 .\run\john.exe hash.txt 입력
( 생성된 hash.txt 텍스트 파일을 john.exe로 실행 )
Error : UTF-16 BOM seen in input file. 이런 메시지가 뜨면서 에러가 나는데,
에러의 원인은 아래와 같다.
이런 경우에는 기존의 hash.txt 파일 내부의 내용을 복사해서 hash2.txt 파일을 새로 만들고 내용을 붙여넣는다.
그리고 hash2.txt 파일을 JtR 에 돌리면 암호가 풀린다.
powershell 에서 .\run\john.exe hash2.txt 입력
그리고 이전에 한번 작업을 했었다면, .\run\john.exe hash2.txt --show 를 입력한다.
1234 가 패스워드인걸 알 수 있다.
실제 해당 flag.zip 파일을 더블클릭 후 flag.txt 파일을 클릭하면 패스워드 입력 창이 나오는데 1234 입력 시 아래와 같은 화면을 볼 수 있다.
이번에는 rar 파일의 암호를 해독해본다.
마찬가지로 flag.rar 파일을 JtR 폴더 내부로 옮긴 후 shift + 우클릭 -> PowerShell 로 실행
기존과 똑같이 진행한다. ( powershell 이 기존에 열려있다면 dir 을 입력해서 flag.rar 파일이 있는지 확인하면 된다. )
아까와 동일한 프로세스로 진행하지만 이번에는 해시값을 추출하는 프로그램이 아까와는 다르다.
powershell 에서 .\run\rar2john.exe flag.rar > rst.txt 를 입력한다.
이전과 마찬가지로 rst.txt 파일이 JtR 폴더 내부에 생성된다.
아까와 마찬가지로 rst.txt 파일 내부 내용을 복사해서 rst2.txt 파일로 붙여넣고
.\run\john.exe rst2.txt 를 입력해서 암호를 해독한다.
1q2w3e4r 이 암호인걸 알 수 있다.
( 기존과 마찬가지로 이전에 작업했던 내역이 있으면 --show 를 뒤에 붙여 다시 시도)
flag.rar 을 들어가서 flag.txt 를 더블클릭 후 해당 비밀번호를 입력하면 아래와 같은 화면을 볼 수 있다.
참고로 본 해시함수는 PBKDF2 와 SHA256 으로 이중으로 암호화가 되어있다.
정리: 압축해제 한 JtR 폴더에 들어가서 암호해제를 원하는 파일 flag.zip , flag.rar 을 폴더 내부에 놓고, shift + 마우스 우클릭 → 여기에 powershell 창 열기 → powershell 에서 zip2john.exe 와 rar2john.exe 파일로 flag.zip 과 flag.rar 파일의 패스워드 해시값을 추출하여 텍스트파일로 저장 → john.exe 로 텍스트 파일내의 해시값을 풀어서 암호 해독. → 각 파일의 flag.txt 에 암호 입력
flag.zip → zip2john2.exe 이용해서 zip 파일의 암호화된 패스워드 해시값 추출
flag.rar → rar2john2.exe 이용해서 rar 파일의 암호화된 패스워드 해시값 추출
john.exe → Brute Force 공격으로 패스워드 해시값 풀어서 추출
PowerShell 입력값 ( hash2 랑 rst2 를 입력했던 이유는 powershell 에서 인식을 못하기 때문 )
flag.zip 파일
→ .\run\zip2john.exe flag.zip > hash.txt
→ .\run\john2.exe hash2.txt 또는 .\run\john2.exe hash2.txt --show
flag.rar 파일
→ .\run\rar2john.exe flag.rar > rst.txt
→ .\run\john2.exe rst2.txt 또는 .\run\john2.exe rst2.txt --show
4. 패스워드 크래킹 관련 사이트
지금까지 했던 방식은 개인의 PC 를 사용해서 패스워드 추출하였지만,
온라인 상의 사이트에서도 패스워드를 추출할 수 있다.
https://www.onlinehashcrack.com/
주의사항은 이런 사이트 이용시 파일 내용이 사이트 운영자에게 넘어갈수있기 때문에 중요자료는 맡기지 않는편이 좋은거같다.
http://password-checker.online-domain-tools.com/
패스워드가 얼마나 안전한지, 패스워드의 강도를 테스트하는 사이트이다.
물론 패스워드를 수집하는지 안하는지 알수는 없다.
JtR 폴더내 run 폴더에서 존더리퍼가 사용하는 딕셔너리 목록이 있는데, password.lst 를 메모장으로 확인하면 flag.rar 의 패스워드 1q2w3e4r 도 있는것을 확인할 수 있다.
'보안 > 취미로 해킹 2' 카테고리의 다른 글
취미로 해킹 2 - 기밀문서 찾기 (0) | 2023.03.06 |
---|---|
취미로 해킹 2 - OSINT 도구 알아보기 (1) | 2023.03.03 |
취미로 해킹 2 - 컴퓨터 사용 흔적 확인하기 (0) | 2023.02.24 |
취미로 해킹 2 - Tor 브라우저 체험하기 (0) | 2023.02.22 |
취미로 해킹 2 - 암호화 하여 파일 숨기기 (0) | 2023.02.20 |