여러 암호화 엔터티를 LUKS + Ext4 USB 스틱으로 자동 해독합니다.

여러 암호화 엔터티를 LUKS + Ext4 USB 스틱으로 자동 해독합니다.

LUKS + Ext4를 사용하여 암호화된 USB 스틱이 있습니다. 비밀번호를 잊어버렸어요...

그러나 나는 비밀번호에 어떤 단어가 포함될 것인지 알고 있으며 해당 단어의 모든 순열 목록을 가지고 있습니다. 대략 10,000개의 순열이 있습니다.

모든 순열을 하나씩 수동으로 시도하는 대신(길고 느리고 고통스러울 정도로 지루한 프로세스임) 이 프로세스를 자동화할 수 있습니까? 일종의 악의적이고 폭력적인 공격처럼 들리겠지만 그렇지 않습니다. 이런 것을 원한다면 인터넷에서 이상한 소프트웨어를 쉽게 다운로드할 수 있습니다.

대신 내 컴퓨터에 있는 보안 기능, 즉 나에게 꼭 맞는 스크립트(또는 보안 솔루션)를 사용하고 싶습니다.

가능합니까?

답변1

이 공격을 수행하는 가장 효과적인 방법은 John the Ripper의누가복음 요한 2서해시 값을 추출하고 John("LUKS" 해시 형식) 또는 hashcat(해시 모드 14600)을 사용하여 공격합니다.

이것의 장점은 보유하고 있는 코어 수(John CPU 지원 또는 hashcat OpenCL CPU 지원) 또는 GPU 수(hashcat OpenCL GPU 지원)에 따라 확장된다는 것입니다.

또한 기본 인터페이스를 사용하는 것보다 모든 공격자에게 더 빠른 암호화 효율성을 활용합니다. 이러한 효율성은 단순히 정상적으로 잠금 해제를 반복해서 시도하는 것보다 훨씬 더 빠른 경우도 있습니다.

또한 이러한 도구에서 지원하는 전체 공격 모드 세트(단어 목록, 규칙, 마스크, 혼합 등)를 제공합니다.

답변2

글쎄, 가장 순진한 경우에는 대략 다음과 같은 작업을 수행할 수 있습니다.

for a in 'fo' 'foo' 'fooo'
do
    for b in 'ba' 'bar' 'baar'
    do
        for c in 'bz' 'baz' 'bazz'
        do
            echo -n "$a$b$c" | cryptsetup open /dev/luks luks \
            && echo "'$a$b$c' is the winner!" \
            && break 3
        done
    done
done

모든 퍼즐을 순서대로 진행합니다... foobarbz foobarbaz foobarbazz ... 등등. (선택적 조각이 있는 경우 '' 빈 문자열을 추가하세요. 조각이 무작위 순서로 되어 있다면 직접 생각해 보세요.)

성능을 최적화하려면 다음을 수행할 수 있습니다.

  • cryptsetupstdin에서 비밀번호를 계속 읽는 패치(github의 lukscrackplus가 그러한 예 중 하나이지만 오래되었습니다)
  • 전체 단어 목록을 생성하고 split이를 별도의 파일에 넣은 다음 이러한 루프를 여러 개 실행합니다(코어당 하나, 여러 시스템에 걸쳐 수행할 수도 있음).
  • 다른/더 빠른 암호화 백엔드(예: gcrypt 대신 쐐기풀)를 사용하여 cryptsetup을 컴파일하면 마지막으로 벤치마킹했을 때 차이가 컸습니다.
  • 무차별 대입 LUKS에 대한 다른 구현 찾기

그러나 가능성이 너무 적거나(최적화 없이 하루 만에 할 수 있음) 가능성이 너무 많으면(최적화를 아무리 많이 해도 성공하지 못할 경우) 최적화가 의미가 없을 수 있습니다.

또한 확인하십시오:

  • 잘못된 키보드 레이아웃을 사용하고 있습니까?
  • LUKS 헤더가 손상되지 않았나요?

(LUKS1으로는 확실히 알 수 있는 방법이 없지만, 알고 있고 hexdump -C랜덤한 데이터가 없다면 시간을 낭비할 필요가 없습니다)

여기에도 비슷한 질문이 있습니다.https://security.stackexchange.com/q/128539

하지만 범위를 많이 좁힐 수 있다면 이 순진한 접근 방식도 효과가 있을 수 있습니다.

답변3

예. 나는 거의이 문제에 직면했습니다. 나는 그 중 하나가 작동할 때까지 모든 가능성을 반복하는 스크립트를 작성했습니다. 하지만 내 것은 truecrypt하나의 롤입니다. 유일한 것은 속도 제한이 있는 경우지만 이는 수표를 웹사이트 등으로 전달하는 경우에만 해당됩니다. 가지고 있는 볼륨을 사용하면 이 작업을 비교적 쉽게 수행할 수 있습니다.

그러나 그것은 또한 매우 폭력적이다. 선택 사항을 소수로 좁혔을 뿐이므로 그렇게 어렵지는 않습니다.

답변4

예, 이전 답변에서 말했듯이 이것이 hashcat최선의 선택 중 하나입니다. LUKS는 해시를 저장하지 않으므로 USB 드라이브에서 암호화된 데이터 샘플(헤더)을 가져와야 합니다. 이 샘플만 처리하겠습니다.

sudo dd if=/dev/{USB_LUKS_partition} of=/tmp/data_sample.luks bs=512 count=4079

Hashcat직접적인 무차별 대입 공격부터 사전 공격, 규칙 기반 공격, 마스크 공격까지 비밀번호를 해독하는 방법은 다양합니다. 이 경우에는 Password_candidates.txt가 있습니다.

hashcat -m 14600 -a 0 -w 3 /tmp/data_sample.luks password_candidates.txt

그러면 몇 초 내에 비밀번호가 제공됩니다. 총계정 원장

관련 정보