ctf 문제를 풀어보면서 오랜만에 공부하다가 재밌는 공격 기술을 찾아내서 작성해본다.
기지평문공격이란 평문과, 그 평문이 암호화된 암호문을 둘 다 가지고 있을 때 사용 가능한 공격 기법이다.
직접 보는게 항상 이해가 가장 빠르다. 실습해보자.
해당 파일은 txt 형식이지만 여타 달라도 상관 없을듯 하다. 이건 나중에 다시 해보자.
아무튼 해당 txt 파일을 암호화하여 압축해보자.
확인할 수 있듯이 비밀번호가 걸려있고, 우린 비밀번호를 모르는 상황을 가정해보자. 단지 파일만을 가지고 있을 뿐이다.
bkcrack.exe -C "암호화된 파일" -c "암호화된 파일 중 목표 파일" -P "평문 파일" -p "평문 파일 중 목표 파일"
즉 이 경우는
bkcrack.exe -C flag.zip -c flag.txt -p flag.txt
Key를 얻어낼 수 있다.
그럼
bkcrack.exe -C flag.zip -c flag.txt -k Key1 Key2 Key3 -d 결과를 출력할 파일
해당 명령어를 통해
복구가 되었음을 확인할 수 있다.
위 절차는 원리고, 실전에서는 어떻게 사용하는지 살펴보자.
아까와 동일하지만, 파일이 2개다.
우리는 flag.txt라는 파일에 대한 평문을 가지고 있고, 목표 파일은 새 텍스트 문서이다.
전에 수행한 것과 동일하게 flag.txt를 통해 key를 알아내고
그럼 알아낸 key를 통해서
해당 zip파일 안에 있는 다른 암호화된 파일도 복구해낼 수 있다.
해당 도구 폴더 안에는 실습 관련 문서도 있기에 추후에 복기할 수 있으니 살펴보자.
사용조건에 제약이 많긴 하지만, 꽤나 쓸모있다고 생각한다.
여러 실험을 하고 있는데, txt파일을 제외하고서는 어떻게 활용하는지 더 찾아야할 것 같다.
-> 파일의 포맷과 상관없이 "암호화된 압축 파일과 동일한 압축률(크기)"로 평문파일을 압축하여 -P 평문 압축파일 -p 평문 일반파일(압축파일에 포함된)을 통해 key 확인이 가능하다.
동일하게 평문 파일을 압축해서 -P -p 를 통한다면 key 찾을 수 있음.
key를 알아낸다면
bkcrack -k key1 key2 key3 -r Password길이 ?p
를 통해 비밀번호를 알아낼 수 있다.