Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
BEAST-PoC — :muscle: SSL/TLS CVE-2011-3389에 대한 BEAST 공격의 개념 증명 :muscle: | Kitploit
도구/GitHubGitHub/mpgn/beast-poc
Vulnerability AnalysisExploitationWeb SecurityCryptographyPenetration TestingLearning & Education
GitHubmpgn/beast-poc

BEAST-PoC

💪 SSL/TLS CVE-2011-3389에 대한 BEAST 공격의 개념 증명 💪

저장소 보기
80317년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

BEAST-PoC (선택 평문 공격)

이 개념 증명은 2011년 9월 23일 Thai Duong과 Juliano Rizzo가 발표한 BEAST(Browser Exploit Against SSL/TLS) 공격의 배후에 있는 암호학에 초점을 맞춥니다. 이는 선택 평문 공격이며, 사용된 전송 계층 보안이 TLS1.0 또는 SSLv3인 경우 민감한 정보를 검색할 수 있습니다. 원래 개념 증명은 여기에서 찾을 수 있습니다: 닌자들이 온다

참고: 이는 원래 Phillip Rogaway가 발견한 취약점의 구현이기도 합니다. 2002년에 발견되었지만 2011년 BEAST까지 공격 코드가 공개되지 않았습니다. OpenSSL은 이미 이 문제를 알고 있었고, 이것이 2006년 4월에 TLS1.0을 TLS1.1로 업데이트한 이유입니다.

2 첫 번째 레코드를 제외한 각 레코드의 CBC IV는 이전 레코드의 마지막 암호문 블록입니다. 따라서 적응적으로 평문을 선택할 수 있는 공격자에 대해 암호화는 안전하지 않습니다;

BEAST가 되어보세요

1. SSLv3/TLS1.0 및 CBC 암호 모드

SSLv3/TLS1.0은 데이터를 암호화/복호화하고 보호하기 위한 프로토콜입니다. 우리의 경우, 둘 다 CBC 암호 모드 체이닝을 사용합니다. 평문은 암호화 알고리즘(AES, DES, 3DES)에 따라 블록으로 나뉘며 길이는 8 또는 16의 배수입니다. 평문이 길이를 채우지 못하면 누락된 공간을 채우기 위해 끝에 패딩이 추가됩니다. 이 README를 읽기 전에 암호화 및 복호화 이미지를 여는 것을 강력히 권장합니다.

암호화복호화
Ci = Ek(Pi ⊕ Ci-1), 그리고 C0 = IVPi = Dk(Ci) ⊕ Ci-1, 그리고 C0 = IV

기본적으로 이것은 단순한 XOR일 뿐입니다. 이 비디오(제가 만든 것이 아님)를 시청할 수도 있습니다: https://www.youtube.com/watch?v=0D7OwYp6ZEc.

다음 항목에서 IV를 소개하겠습니다. 이러한 모든 속성이 공격을 수행하는 데 도움이 된다는 점을 기억하세요.

2. 암호학

CBC를 사용할 때 IV라고 하는 초기화 벡터가 필요합니다. 이 IV는 무작위(또는 고정)이지만 어떠한 경우에도 누구도 예측할 수 없어야 합니다. TLS1.0 및 SSLv3에서 요청의 첫 번째 IV는 무작위이며, 좋습니다. 그러나 매번 새로운 무작위 IV를 생성하지 않아 시간을 절약하기 위해 TLS1.0 및 SSLv3의 구현은 이전 암호문의 마지막 블록을 IV로 사용했습니다. 다시 말해, 이제 IV를 추측할 수 있게 되었습니다. 각 블록의 길이가 8(DES)이라고 가정하고, 공격자는 모든 암호문을 획득하기 위해 MiTM을 보유하고 있다고 가정합니다.

예:

C0 | C... | Ci-1 | Ci | Ci+1 |Cn

이제 흥미로운 부분입니다. 다음은 한 바이트를 검색하기 위한 공격의 다양한 암호화 단계입니다:

  • 먼저 C²라고 하는 요청을 보내 암호문의 마지막 블록, 즉 두 번째 요청의 다음 IV를 얻습니다.
  • 이것은 선택 평문 공격이므로 공격자는 피해자를 통해 bbbbbbbTHIS_IS_A_SECRET_COOKIE 메시지를 보낼 수 있습니다.

비밀 쿠키 앞에 일곱 개의 b가 있는 것을 확인할 수 있습니다. 블록의 길이가 8이라면 알려진 7바이트를 밀어 넣어야 합니다. 이 정보는 매우 중요합니다. 공격자는 첫 번째 블록의 처음 7바이트를 알게 됩니다.

하지만 왜 그럴까요? 이렇게 하면 8바이트를 찾기 위해 256^8이 아니라 한 바이트를 찾기 위해 256가지 가능성만 시도하면 됩니다!

이제 피해자가 요청을 보내면 다음과 같이 암호화됩니다:

C0 | C1 | C2 | C3 | C4

여기서 C0 = Ek(IV ⊕ bbbbbbbT) = Ek(C²n ⊕ bbbbbbbT)

  • 공격자는 블록 C0 C1, C2 ... 에 있는 정보를 검색하려고 합니다. 그는 항상 이전 블록이 필요합니다
  • 특별한 블록 P'0을 만든 후 세 번째 요청이 전송됩니다. 첫 번째 블록은 다음과 같이 암호화됩니다: C'0 = Ek(P'0 ⊕ IV') 이것은 선택 평문 공격이므로 공격자는 다음과 같이 P'0 블록을 구성할 수 있습니다:

P'0 = C²n ⊕ C4 ⊕ bbbbbbbX

유일하게 알 수 없는 요소는 X이며, 256가지 가능성이 있으므로 최대 256자를 시도할 것입니다. 요청은 다음과 같이 전송되고 암호화됩니다:

C'0 = Ek(P'0 ⊕ IV')
C'0 = Ek(C²n ⊕ C4 ⊕ bbbbbbbX ⊕ IV') 또는 C4 ⊕ IV' = 0
C'0 = Ek(C²n ⊕ bbbbbbbX)
C'0 = Ek(IV ⊕ bbbbbbbX)

이제 그는 C'0과 C0을 비교합니다. 만약 같다면 방금 8번째 위치의 바이트 X를 찾은 것입니다. 일치하지 않으면 다른 문자로 다시 시도하고 다시 비교하는 식입니다.

이제 한 바이트를 얻었으므로 이전 요청을 왼쪽으로 한 칸씩 이동하여 다른 바이트를 얻을 수 있습니다: bbbbbbTHIS_IS_A_SECRET_COOKIE. 이제 여섯 개의 b가 있고 T도 알고 있으므로 모르는 문자가 하나 있습니다. 새로운 P'0 = C0 ⊕ C4 ⊕ bbbbbbTX 등을 만듭니다...

참고: 요청 두 개만 사용하는 또 다른 방법은 평문의 첫 번째 블록을 설정하고 이 정보를 세 번의 XOR에 사용하는 것입니다. 이제 C²의 마지막 블록이 더 이상 필요하지 않습니다. C1 = Ek(C0 ⊕ bbbbbbbT)이고 그런 다음 P'0 = C0 ⊕ C4 ⊕ bbbbbbbX입니다. 또한 C'0과 C1을 비교해야 합니다. 이것은 또 다른 방법이며, PoC에서 두 가지 가능성을 모두 코딩했음을 확인할 수 있습니다 :)

이제 모든 문자를 검색할 수 있습니다!

실행

root@kitploit:~
python BEAST-poc.py

asciicast

공격

공격자는 HTTP 프로토콜을 사용할 수 없습니다. 첫 번째 블록이 GET / HTTP/1.1\r\n로 채워지기 때문입니다.

... 각 요청의 처음 몇 바이트를 제어할 수 없습니다. 왜냐하면 항상 GET /, POST / 등과 같은 고정 문자열로 설정되기 때문입니다. 대신 소켓을 사용할 수 있습니다.

또한 악성 페이지에 자바스크립트를 주입해야 합니다. 피해자는 이 페이지에 연결되어 공격이 완료될 때까지 머물러 있어야 합니다. 이것은 선택 평문 공격이므로 공격자는 자바스크립트 코드를 통해 원하는 모든 평문을 보내고 중간자(Man in The Middle)로 결과를 가로챌 수 있습니다. 다음은 공격 다이어그램입니다:

beast

이 공격이 성공하려면 중요한 조건들이 필요합니다(TLS1.0 이하, CBC 암호 모드, MiTM, 악성 자바스크립트). 그러나 Thai Duong과 Juliano Rizzo는 이것이 가능함을 증명했고 Paypal 웹사이트에서 쿠키를 훔쳐 익스플로잇을 시연했습니다.

이제 모든 것이 수정되었으며 이 공격이 실제로 발생할 확률은 낮습니다.

기여자

mpgn

라이선스

MIT 라이선스

참고 문헌

  • http://netifera.com/research/beast/beast_DRAFT_0621.pdf
  • http://www.bortzmeyer.org/beast-tls.html
  • http://fr.slideshare.net/danrlde/20120418-luedtke-ssltlscbcbeast
  • http://crypto.stackexchange.com/questions/5094/is-aes-in-cbc-mode-secure-if-a-known-and-or-fixed-iv-is-used
  • http://security.stackexchange.com/questions/18505/is-beast-really-fixed-in-all-modern-browsers
  • https://defuse.ca/cbcmodeiv.htm
  • http://stackoverflow.com/questions/22644392/chrome-websockets-cors-policy
도구 다운로드