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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
icebreaker — 내부 네트워크에 있지만 AD 환경 외부에 있을 때 Active Directory의 평문 자격 증명을 획득합니다 | Kitploit
도구/GitHubGitHub/danmcinerney/icebreaker
Password CrackingReconnaissanceVulnerability AnalysisPost-ExploitationPenetration TestingRed Teaming
GitHubdanmcinerney/icebreaker

icebreaker

내부 네트워크에 있지만 AD 환경 외부에 있을 때 Active Directory의 평문 자격 증명을 획득합니다

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

icebreaker

저기 귀여운 Active Directory 환경과 얼음을 깨보세요. 외롭고 추운 상태로 Active Directory 파티를 바라보고 있지만 파티에 참여할 AD 자격 증명조차 없다면, 이 도구가 도움이 될 것입니다.

5가지 내부 네트워크 공격을 Active Directory에 대해 순차적으로 자동화하여 일반 텍스트 자격 증명을 제공합니다. --auto 옵션을 사용하면 발판을 마련한 후 도메인 관리자 권한을 자동으로 획득할 수 있습니다.

요약

다음 공격은 네 번째와 다섯 번째 공격이 병렬로 무기한 실행될 때까지 순차적으로 수행됩니다.

  • 역방향 무차별 대입 (Reverse bruteforce)
    • 사용자 이름 목록을 자동으로 획득하고 각각에 대해 가장 흔한 AD 비밀번호 두 개를 테스트합니다 (두 번 이상 시도하면 계정 잠금 정책이 트리거될 수 있음)
  • 네트워크 공유에 업로드
    • 악성 파일을 사용 가능한 네트워크 공유에 업로드하여 사용자의 비밀번호를 캡처합니다
  • 브로드캐스트 네트워크 프로토콜 중독
    • 일반적인 네트워크 프로토콜을 사용하여 사용자 컴퓨터를 속여 비밀번호를 보내도록 합니다
  • SMB 연결 중간자 공격
    • AD 컴퓨터에 대해 원격 명령을 실행하여 비밀번호를 수집합니다
  • IPv6 DNS 중독
    • DNS를 악용하여 AD 컴퓨터를 속여 사용자의 비밀번호를 보내도록 합니다

기술 세부 사항

아래 기법에서 캡처된 모든 NetNTLMv2 해시는 JohnTheRipper와 길이 100만 개의 AD 전용 비밀번호 목록으로 자동 크랙됩니다.

  • 역방향 무차별 대입
    • rpcclient를 사용하여 null SMB 세션을 허용하는 호스트를 찾습니다
    • ridenum을 사용하여 null SMB 호스트에서 RID 순환을 통해 유효한 사용자 이름을 찾습니다
    • theHarvester를 사용하여 특정 인터넷 도메인에서 추가 잠재 사용자 이름을 수집할 수 있습니다
    • 발견된 사용자 이름에 대해 2개의 비밀번호로 역방향 무차별 대입을 수행하거나 비밀번호 목록을 지정할 수 있습니다
    • 테스트되는 기본 비밀번호: P@ssw0rd 및 <현재_계절><연도> (예: Spring2018)
  • SCF 업로드
    • Nmap을 사용하여 NSE 스크립트 smb-enum-shares를 통해 익명으로 쓰기 가능한 네트워크 공유를 찾습니다
    • 파일 아이콘 경로가 자신의 머신을 가리키는 SCF 파일을 공유에 씁니다
    • AD 사용자가 파일 탐색기에서 공유를 열면 해당 사용자의 NetNTLMv2 해시가 전송됩니다
  • LLMNR/NBTNS/mDNS 중독
    • Responder.py를 사용하여 레이어 2 브로드캐스트/멀티캐스트 네트워크 프로토콜(LLMNR, NBT-NS, mDNS)을 중독시키고 NetNTLMv2 해시를 캡처합니다
  • SMB 릴레이
    • ntlmrelayx.py와 Responder.py를 사용하여 SMB 해시를 릴레이합니다
    • Nmap을 사용하여 NSE 스크립트 smb-security-mode를 통해 취약한 릴레이 대상을 식별합니다
    • 취약한 대상은 SMBv1이 활성화되고 SMB 서명이 비활성화됩니다
    • 해시를 성공적으로 릴레이하면 사용자의 NetNTLMv2 해시를 캡처하여 자동 크랙합니다
    • 사용자 해시를 머신에 릴레이하고 해당 사용자가 로컬 관리자인 경우 명령 실행이 발생하며 다음이 원격으로 수행됩니다:
      • 관리 사용자 추가 - icebreaker:P@ssword123456
      • 난독화되고 AMSI를 우회하는 버전의 Mimikatz 실행
      • Mimikatz 출력에서 NTLM 해시와 일반 텍스트 비밀번호를 파싱
      • 난독화되고 AMSI를 우회하는 버전의 Invoke-PowerDump 실행하여 SAM 해시 획득
      • 출력에서 NTLM 해시를 파싱
  • IPv6 DNS 중독
    • mitm6 및 ntlmrelayx.py를 사용하여 IPv6 DNS를 중독시켜 NetNTLMv2 사용자 해시를 캡처합니다
    • 인증이 있는 가짜 WPAD 서버를 생성합니다
    • IPv6 DNS는 Active Directory 환경에서 기본적으로 활성화되어 있습니다
    • 참고: 이로 인해 사용자에게 네트워크 연결 문제가 발생할 수 있습니다

작동 방식

위의 5가지 네트워크 공격을 순서대로 수행합니다. 역방향 무차별 대입과 SCF 파일 업로드는 일반적으로 매우 빠르게 진행되며, 그 후 기본적으로 10분 동안 공격 3(Responder.py)에 머뭅니다. 그 시간 또는 사용자가 지정한 시간이 지나면 마지막 두 공격(병렬로 무기한 실행)으로 넘어갑니다.

null SMB 세션을 허용하는 호스트가 발견되면 icebreaker는 ridenum을 사용하여 유효한 사용자 이름을 위해 RID 순환을 수행합니다. -d <somedomain.com> 옵션을 사용하면 theHarvester가 지정된 웹사이트에서 이메일 주소를 스크래핑합니다. AD와 호환되는 이메일 사용자 이름은 역방향 무차별 대입 사용자 이름 목록에 추가됩니다. Icebreaker는 asyncio 라이브러리를 사용하여 10개의 비동기 작업자로 rpcclient(리눅스 도구)를 통해 역방향 무차별 대입을 수행합니다.

SCF 업로드 공격은 Shell Command Files를 익명으로 쓰기 가능한 네트워크 공유에 대해 악용합니다. SCF는 바탕 화면 표시 또는 파일 탐색기 창 열기와 같은 기본 작업을 수행할 수 있는 파일입니다. 파일 아이콘을 네트워크 경로로 설정할 수 있는 특이한 속성이 있습니다. 이 네트워크 경로를 자신의 머신으로 설정하면 파일 공유를 파일 탐색기에서 여는 사용자가 자동으로 NetNTLMv2 비밀번호 해시를 전송합니다. Icebreaker는 Nmap 스크립트 smb-enum-shares를 사용하여 익명으로 쓰기 가능한 공유를 찾은 다음 자동으로 페이로드가 포함된 SCF를 생성하고 업로드합니다.

공격 3은 Responder.py를 사용하여 LLMNR, NBT-NS 및 mDNS 멀티캐스트/브로드캐스트 프로토콜을 중독시킵니다. 사용자가 존재하지 않는 네트워크 경로로 이동하면 Responder는 공격자 머신이 올바른 경로라고 알려줍니다. 사용자의 NetNTLMv2 비밀번호 해시는 이제 당신 것입니다. Responder는 SCF 공격을 통해 전송된 해시도 캡처하지만, 다음 공격이 일반적으로 SCF 해시 캡처에 더 유용합니다. 왜냐하면 해시를 명령 실행에 사용할 가능성이 있기 때문입니다.

SMB 릴레이는 오래된 네트워크 공격으로, 공격자가 SMB 클라이언트와 SMB 서버 사이에 위치합니다. 이를 통해 공격자는 SMBv1이 활성화되고 SMB 서명이 비활성화된 호스트로 NetNTLMv2 해시를 캡처하고 릴레이할 수 있습니다. Impacket 라이브러리의 ntlmrelayx.py는 릴레이에 사용되고 Responder.py는 SMB 연결을 중간자 공격하는 데 사용됩니다. SMB 클라이언트 사용자가 SMB 서명이 비활성화된 네트워크의 호스트에 대해 관리 권한을 가진 경우, ntlmrelayx.py는 해당 호스트에서 명령 실행을 수행합니다.

ntlmrelayx가 캡처된 해시를 릴레이하면 base64로 인코딩된 powershell 명령을 실행합니다. 이 명령은 먼저 관리 사용자(icebreaker:P@ssword123456)를 추가한 다음, 난독화되고 AMSI를 우회하는 버전의 Mimikatz를 실행하고, 이어서 난독화되고 AMSI를 우회하는 버전의 Invoke-PowerDump를 실행합니다. Invoke-Mimikatz와 Invoke-PowerDump의 출력에서 일반 텍스트 비밀번호 또는 NTLM 해시를 파싱하여 표준 출력 및 found-passwords.txt 파일로 제공합니다. NTLM 해시는 NetNTLMv2 해시와 달리 일반 텍스트 비밀번호처럼 다른 AD 호스트에 인증하는 데 사용할 수 있습니다. 단, Microsoft의 KB2871997 패치 이후에는 Pass-the-Hash 공격에 기본 제공 RID 500 로컬 관리자 계정만 사용할 수 있습니다.

마지막 공격은 mitm6 도구를 사용하여 전체 네트워크에 대해 중간자 IPv6 DNS 공격을 수행합니다. 이로 인해 네트워크의 호스트가 공격자 머신을 DNS 서버로 사용하도록 강제합니다. DNS 서버로 설정되면 공격자는 피해자에게 악성 WPAD 프록시 설정 파일을 제공하고 NetNTLMv2 해시를 수집합니다. 이 해시는 ntlmrelayx.py를 사용하여 추가 원격 코드 실행 가능성을 위해 릴레이됩니다. 참고할 점은 이 공격이 네트워크에 문제를 일으키기 쉽다는 것입니다. 종종 클라이언트 머신의 브라우저에서 인증서 오류를 발생시킵니다. 또한 네트워크 속도를 저하시킬 가능성이 있습니다. 그러나 이 공격의 장점은 Windows AD 환경이 기본적으로 취약하다는 것입니다.

icebreaker를 --auto [tmux/xterm] 플래그와 함께 실행하면, 공격 4에 도달했을 때 icebreaker는 Empire와 DeathStar를 tmux 세션 또는 xterm 창에서 실행합니다. 이 옵션을 사용하면 릴레이된 해시를 통해 원격 호스트에서 mimikatz를 실행하는 대신, icebreaker는 관리 사용자를 추가한 다음 Empire의 powershell 런처 코드를 실행하여 원격 머신에 에이전트를 얻습니다. DeathStar는 이 에이전트를 사용하여 도메인 관리자 달성 과정을 자동화합니다. Empire와 DeathStar는 icebreaker를 종료해도 닫히지 않습니다.

비밀번호 크랙은 JohnTheRipper와 사용자 정의 단어 목록으로 수행됩니다. 이 목록의 출처는 merged.txt로, SecLists GitHub 계정의 모든 비밀번호를 결합한 것입니다. 단어 목록은 정리되었으며 다음 조건을 만족하는 비밀번호는 포함되지 않습니다: 모두 소문자, 모두 대문자, 모두 기호, 7자 미만, 32자 초과. 이러한 규칙은 기본 Active Directory 비밀번호 요구 사항을 준수하며 목록을 2천만 개에서 100만 개 이상으로 줄여 비밀번호 크랙을 매우 빠르게 만듭니다.

설치

root로 실행:

root@kitploit:~
./setup.sh
pipenv install --three
pipenv shell

pipenv install 실행 후 오류가 발생할 수 있습니다. 그런 경우 pipenv를 11.9.0보다 높은 버전으로 업데이트하세요. GitHub에서 pipenv를 git clone하고 폴더 내에서 apt-get remove python-pipenv && python setup.py install을 실행할 수 있습니다.

Docker 사용법

도커 이미지에는 아직 몇 가지 버그가 있으므로 오류가 발생할 가능성이 있지만 거의 완성되었습니다. Git 저장소에서:

root@kitploit:~
docker build --rm -t danmcinerney/icebreaker .
docker run danmcinery/icebreaker

또는 일반적으로 icebreaker에 추가하는 명령을 추가합니다 (볼륨 매핑을 잊지 마세요):

root@kitploit:~
docker run -v $(pwd)/logs:/icebreaker/logs -v $(pwd)/hashes:/icebreaker/hashes -v $(pwd)/icebreaker-scan.xml:/icebreaker/icebreaker-scan.xml -v $(pwd)/submodules:/icebreaker/submodules -e PYTHONUNBUFFERED=0 danmcinerney/icebreaker -x icebreaker-scan.xml

**참고: 리스너를 위해 docker의 -p <host>:<container> 플래그로 포트를 매핑해야 합니다.

사용법

root로 실행합니다. 줄바꿈으로 구분된 IP 주소 목록(단일 IP 또는 CIDR 범위)에서 읽고, ntlmrelayx가 사용자를 추가하고 해시 릴레이 시 mimikatz를 실행하는 대신 피해자 머신에서 사용자 정의 명령을 실행하도록 합니다. 이 예제에서는 Empire가 powershell 런처 원라이너로 제공할 수 있는 것과 유사한 명령을 제공합니다.

./icebreaker -l targets.txt -c "powershell -nop -w hidden -exec bypass -enc WwFk..."

호스트 목록에서 읽고, Responder가 기본 게이트웨이 인터페이스 대신 eth0 인터페이스를 사용하도록 지정하고, Responder를 평소 10분 대신 30분 동안 실행하며, 기본 ntlmrelayx 포스트 릴레이 명령을 실행하여 피해자 서버에서 SAM을 덤프합니다.

./icebreaker -l targets.txt -i eth0 -t 30 -c default

Nmap XML 출력 파일을 사용하고, 다섯 가지 공격을 모두 건너뛰고 해시 자동 크랙을 비활성화하며, 역방향 무차별 대입 공격에 사용자 정의 비밀번호 목록을 사용합니다 (이 예제는 '-s rid'를 통해 공격 1을 건너뛰므로 지정된 비밀번호 목록이 사용되지 않습니다; 단지 예시로 사용됩니다)

./icebreaker.py -x nmapscan.xml -s rid,scf,llmnr,relay,dns,crack -p /home/user/password-list.txt

발사 후 망각(Fire-and-forget) 사용법: 대상 파일 입력, companydomain.com에서 이메일 사용자 이름을 스크래핑하여 역방향 무차별 대입 공격에 추가, mitm6의 IPv6 DNS 중독 건너뛰기, 공격 4가 시작될 때 Empire와 DeathStar를 tmux 또는 xterm 창에서 실행하여 자동화된 도메인 관리자 권한 획득. 이 사용법의 목표는 월요일 오전 9시에 명령을 실행한 후 금요일 오후 4시 30분까지 짧고 방해받지 않는 휴식을 취하고, 그 시간에 도메인 관리자 셸이 기다리고 있도록 하는 것입니다. 공격 5(mitm6)는 때때로 네트워크 문제를 일으킬 수 있으므로 건너뛰고, 열심히 벌어놓은 휴식을 방해하는 화난 클라이언트를 원하지 않습니다.

./icebreaker.py -l targets.txt -d companydomain.com -s dns --auto [tmux/xterm]

도구 다운로드