빠른 링크
- 비밀번호 해킹이란 무엇인가?
- HashCat를 사용하여 내 비밀번호 해킹하기
- 사전 공격을 이용한 간단한 해킹 수행 방법
- 마스킹 브루트포스 공격을 사용하여 복잡한 비밀번호 해킹하기
- 비밀번호 해킹으로부터 계정 보호 방법
강력하고 고유한 비밀번호를 각 계정에 설정하는 것은 매우 중요합니다. 그러나 강력한 비밀번호조차도 어떻게 분석되고 탈취되어 사이버 침입자가 무단으로 접근할 수 있는지 생각해 본 적이 있으신가요?
저는 세 가지 서로 다른 비밀번호를 오픈소스 비밀번호 해킹 도구에 적용하여 비밀번호 보안을 확보하기 위한 가장 효과적인 전략을 알아보기 위해 실험했습니다.
비밀번호 해킹이란 무엇인가?
온라인 서비스에 계정을 생성할 때, 제공자는 보통 (그리고 이상적으로) 암호화를 통해 서버에서 로그인 자격 증명을 보호합니다. 이 과정은 비밀번호를 특정 알고리즘으로 변환하여 “해시”라는 무작위로 보이는 문자와 숫자의 시퀀스를 생성하는 것을 포함합니다. 처음에는 혼란스러워 보이지만, 실제로는 해당 비밀번호만이 이러한 문자열을 생성할 수 있도록 설계되어 있습니다. 전문 지식 없이는 이 해시가 단순히 이해하기 어려운 문자 조합으로밖에 보일 수 없습니다.
단어를 해시로 변환하는 것은 원래의 단어로 되돌리는 것보다 훨씬 빠르고 간편합니다. 따라서 온라인 서비스에 비밀번호를 설정할 때, 해당 서비스는 비밀번호를 해싱 알고리즘을 통해 처리하고 그 결과 해시 값을 서버에서 저장합니다.
비밀번호 파일이 탈취되면 사이버 공격자는 이를 해독하기 위해 비밀번호 해킹이라는 과정을 시도하게 됩니다. 암호화가 복호화보다 계산적으로 덜 부담스럽기 때문에, 해커는 가능한 모든 비밀번호를 입력받아서 서버에서 사용한 동일한 알고리즘으로 암호화하고, 탈취된 데이터베이스의 항목들과 비교합니다.
입력된 비밀번호의 해시 값이 데이터베이스 내에 있는 어떤 항목과 일치하면, 해커는 해당 매칭이 올바른 비밀번호를 찾은 것으로 확신할 수 있습니다.
HashCat를 사용하여 내 비밀번호 해킹하기
좋아요, 이제 나 자신이 만든 몇 가지 비밀번호를 해킹해보겠습니다. 이를 위해 HashCat라는 무료 오픈소스 비밀번호 해킹 도구를 사용하겠습니다.
다음과 같은 비밀번호들을 성공적으로 해독할 것입니다:
⭐ 123456: 이는 가장 많이 사용되는 비밀번호 중 하나로, 사이버 보안의 악몽입니다. NordPass에 따르면, 300만 개 이상의 계정이 이 비밀번호를 사용했으며 그중 120만 개는 기업용 계정을 보호하고 있었습니다.
⭐ Susan48!: 이 비밀번호는 일반적으로 사용자가 안전한 비밀번호를 만들기 위해 따르는 패턴에 따라 만들어진 대표적인 예입니다. 기본적인 보안 요구 사항은 충족하지만, 여전히 여러 취약점이 존재하여 악용될 수 있습니다.
⭐ t9^kJ$2q9a: 이 비밀번호는 Bitwarden 비밀번호 생성기에서 무작위로 생성된 10자리의 비밀번호입니다. 대문자와 소문자, 숫자 및 특수 문자를 모두 포함합니다.
이제 비밀번호들을 MD5 알고리즘을 사용하여 암호화하겠습니다. 이렇게 저장될 경우 비밀번호 파일은 다음과 같이 보일 것입니다:
⭐ 123456: e10adc3949ba59abbe56e057f20f883e
이 문자열은 해시된 비밀번호를 나타내며, “123456”이 평문 비밀번호이고 “e10adc3949ba59abbe56e057f20f883e”가 해당하는 해시 값입니다.
⭐ Susan48: df1ce7227606805745ee6cbc644ecbe4
⭐ t9^kJ$2q9a: 450e4e0ad3ed8766cb2ba83081c0a625
이제 비밀번호의 진실을 밝혀보겠습니다.
사전 공격을 이용한 간단한 해킹 수행 방법
분석을 시작하기 위해 사전 공격이라는 널리 사용되는 기법으로 비밀번호를 해킹해보겠습니다. 이 방법은 가능한 비밀번호 목록을 이용하여 HashCat를 통해 MD5 해시 값을 생성하고, 제공된 세 가지 항목과 비교하여 일치하는 항목을 찾는 방식입니다. 이번 실험에서는 “rockyou.txt” 파일을 사전 공격의 원천으로 사용하겠습니다.
해킹 과정을 시작하기 위해 HashCat가 설치된 디렉토리로 이동한 후, 터미널을 열고 HashCat를 실행합니다:
hashcat -m 0 -a 0 rockyou.txt passwordfile.txt -o results.txt
이 명령어의 기능은 다음과 같습니다:
hashcat
: 해싱 과정을 시작하는 명령어입니다.-m 0
: MD5 해시 타입을 지정합니다. HashCat 문서에서 MD5는 식별자0
으로 표기됩니다.-a 0
: 사전 공격을 수행하도록 지정합니다. HashCat 문서에 따르면, 사전 공격은 값0
으로 지정됩니다.rockyou.txt
: RockYou 데이터셋이 포함된 파일입니다.passwordfile.txt
: 암호화된 비밀번호가 저장된 파일입니다.-o results.txt
: 결과를 저장할 위치로 “results.txt”라는 텍스트 파일을 지정합니다.
RockYou 데이터셋은 대량의 데이터를 처리하더라도 HashCat는 단 6초 만에 모든 항목을 해독했습니다. 결과를 확인한 결과, HashCat는 비밀번호 “123456”만 성공적으로 해독했으며, “Susan”과 “Bitwarden”의 비밀번호는 탈취되지 않았습니다. 이 차이는 “123456”이 RockYou 데이터셋에서 여러 사용자들이 공유한 비밀번호로 인해 취약성이 있었지만, “Susan”과 “Bitwarden”의 비밀번호는 각각 고유하고 독점적으로 사용되었기 때문입니다.
마스킹 브루트포스 공격을 사용하여 복잡한 비밀번호 해킹하기
사전 공격은 사용자가 일반적으로 사용하는 단어를 이용할 때 효과적입니다. 그러나 이러한 공격은 사전에 정의된 목록에 없는 비밀번호는 탈취할 수 없습니다. 따라서 비밀번호의 강도를 철저히 평가하려면 브루트포스 공격 방법을 사용해야 합니다.
사전 공격은 미리 정의된 단어 목록을 시험하는 반면, 브루트포스 공격은 모든 가능한 문자 조합을 시도하여 비밀번호를 찾습니다. 브루트포스 공격은 더 많은 자원과 시간이 필요하지만, 복잡성에 관계없이 비밀번호를 무조건적으로 해독할 수 있습니다.
다음은 완전한 브루트포스 공격을 수행하기 위해 사용한 명령어입니다:
hashcat -m 0 -a 3 target.txt ?u?l?a?a?a?a?a?a?a?a?a?a -o output.txt
이 명령어의 기능은 다음과 같습니다:
-a 3
: 브루트포스 공격을 수행하도록 지정합니다. HashCat 도움말 문서에 따르면, 브루트포스 공격은 값3
으로 표기됩니다.target.txt
: 암호화된 비밀번호가 저장된 파일입니다.Increment Mode
: 이 옵션은 HashCat에게 단일 문자에서 시작하여 점차 더 긴 조합을 시도하도록 지시합니다.?u
,?l
,?a
: 각각 대문자, 소문자, 그리고 모든 가능한 문자를 나타냅니다. 이러한 마스킹 기능은 비밀번호 생성 패턴의 예측성을 활용하여 해킹을 수행할 수 있습니다.
비록 추가적인 보안 층이 제공되었지만, “123456” 비밀번호는 단 15초 만에 탈취되었습니다. 이 비밀번호는 가장 많이 사용되는 비밀번호 중 하나임에도 불구하고 여전히 매우 취약합니다.
“Susan48!” 비밀번호는 브루트포스 공격으로 약 4일이 걸릴 것으로 예상되었지만, 실제로는 3분 10초 만에 해독되었습니다. 이 비밀번호의 주요 문제점은 복잡성에도 불구하고 예측 가능한 패턴을 가지고 있다는 것입니다.
비밀번호를 생성할 때 사람들은 일반적으로 특정 위치에서 일정한 요소들을 사용합니다. “Susan” 비밀번호는 처음에는 단어 “susan”을 사용했지만, 대문자와 숫자를 추가하도록 요구받았습니다. 이를 기억하기 쉽게 하기 위해 첫 글자를 대문자로 만들고 뒤에 숫자를 붙였습니다.
따라서 HashCat에게 특정 위치에서 특정 문자를 시도하도록 지시하여 비밀번호 생성 패턴의 예측성을 활용할 수 있습니다. 이러한 마스킹 기능을 사용하면, “Susan48!” 비밀번호는 3분 10초 만에 해독됩니다.
Bitwarden 비밀번호는 10자리로 무작위성이 높아서, 이를 탈취하려면 무마스킹 브루트포스 공격이 필요합니다. 그러나 HashCat가 이 작업을 수행할 때 오류를 발생시켰습니다. IT Security Guru에 따르면, Bitwarden 비밀번호는 약 3년이 걸릴 것으로 예상됩니다.
비밀번호 해킹으로부터 계정 보호 방법
이 경험에서 얻을 수 있는 교훈은 무엇인가요? Bitwarden 생성된 비밀번호를 해킹하기 어려운 이유는 길이 (10자리)와 무작위성이 높기 때문입니다. 따라서 비밀번호를 만들 때는 가능한 한 긴 비밀번호를 사용하고 다양한 문자, 숫자 및 대문자를 포함하는 것이 좋습니다. 이렇게 하면 해커가 예측 가능한 패턴을 활용하여 비밀번호를 해킹하기 어렵게 만듭니다.
비밀번호에 대한 일반적인 조언은 다양성을 유지하고 길이를 최대화하는 것입니다. 이러한 권장 사항의 이유는 비밀번호의 보안성과 관련성이 높기 때문입니다. 이를 통해 취약한 비밀번호와 강력한 비밀번호 사이의 차이점을 이해할 수 있습니다.