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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
SharpFtpC2 — 원격 시스템을 상호 연결하기 위한 간소화된 FTP 기반 명령 및 제어 채널 | Kitploit
도구/GitHubGitHub/darkcodersc/sharpftpc2
Encryption/Decryption ToolsCommand and ControlLearning & EducationRed TeamingPayload DevelopmentAdversarial Attack
GitHubdarkcodersc/sharpftpc2

SharpFtpC2

원격 시스템을 상호 연결하기 위한 간소화된 FTP 기반 명령 및 제어 채널

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

SharpFtpC2 (PoC)



SharpFtpC2는 두 원격 컴퓨터 간의 명령 및 응답 전달에 FTP(S)를 사용하는 가능성을 탐구하기 위한 작은 실험 프로젝트입니다. 이 프로젝트는 임시 터널 역할을 하는 FTP 프로토콜을 사용하여, FTP 서버에 연결된 클라이언트로 작동하는 두 컴퓨터가 통신할 수 있도록 합니다. 요청과 응답의 교환을 추적하기 위해 간단한 세션 관리 체계가 사용됩니다.

SharpFtpC2는 기본적인 세션 관리 시스템을 사용합니다. 매우 초보적이지만, 통신을 동기화하고 관련성을 유지하는 역할을 하며, 이는 원격 시스템 간의 주고받음에 필수적입니다.

이 프로젝트는 git, svn 또는 유사한 프로토콜과 같은 버전 관리 시스템을 활용하여 손쉽게 이식할 수 있습니다.

네트워크 통신의 세부 사항에 관심이 있거나, C# 및 .NET Core로 실험해보고 싶다면 SharpFtpC2는 흥미로운 출발점이 될 수 있습니다. 완벽한 결과물을 기대하지 마세요. 하지만 아마도, 어쩌면, 이를 가지고 놀면서 흥미로운 것을 배울 수도 있습니다.

SharpFtpC2는 두 원격 컴퓨터 간의 통신 채널로 FTP(S)를 활용하는 가능성을 교육적으로 탐구하기 위해 만들어진 실험 프로젝트입니다. 이 프로젝트는 네트워크 통신, C#, 적대 시뮬레이션, 레드 팀, 악성 코드에 관심이 있는 개인을 위한 학습 자료로 설계되었습니다. 제작자로서, 추가 기능 요청이나 이 프로젝트를 무기화하거나 악의적인 목적으로 사용하지 말 것을 요청합니다. 핵심 의도는 교육적이며, 사용자는 콘텐츠를 책임감 있고 윤리적으로 사용할 것으로 기대됩니다.


프로젝트 배경

SharpFtpC2는 Unprotect Project, 특히 네트워크 회피 카테고리에 기여하고자 하는 바람에서 탄생했습니다.

FTP를 "터널"로 사용하는 아이디어는 오랜 역사를 가지고 있습니다. 사실, 이것은 제가 프로그래밍 세계에 발을 담그기 시작한 2005년경의 즐거운 추억을 떠올리게 합니다. 그 당시, 저는 BlasterWar라는 이름을 사용했던 매우 창의적인 프랑스인을 만났습니다. 그는 BlasterX라는 프로젝트를 구상했는데, 시간이 지나 사라졌지만 당시로서는 상당히 전위적이었습니다.

BlasterWar의 프로젝트에서의 독창성은 에이전트가 제어 또는 해킹 장치로 다시 연결을 설정해야 하는 기존의 역방향 연결에 대한 대안을 제공하는 것이었습니다.

대신, BlasterWar는 대체 매체로 FTP(파일 전송 프로토콜)를 사용하기로 결정하고 그 주변에 포괄적인 원격 액세스 도구를 구축했습니다. 이 도구에는 화면 캡처, 키로깅, 시스템 관리와 같은 기능이 포함되어 있으며, 모두 FTP 터널을 통해 전송되었습니다. 당시 FTP는 널리 사용되었고 많은 웹사이트에서 무료 FTP 서버를 대중에게 제공했습니다. 이는 포트 포워딩이 필요한 역방향 또는 직접 연결에 대한 이상적인 대안이 되었습니다. 또한, 해커 머신의 IP 주소가 직접 노출되지 않기 때문에 명령 및 제어(C2)에 추가적인 난독화 계층을 제공했습니다.

오늘날 FTP를 터널로 사용하는 것은 새로운 개념이 아니며, 소수의 명령 및 제어(C2) 프레임워크가 이 프로토콜을 채택했습니다. 그러나 이러한 방식으로 FTP를 사용하는 것은 위험이 따릅니다. 특히 FTP는 네트워크를 통해 자격 증명을 평문으로 전송하고, 양 당사자가 이러한 자격 증명을 소유해야 하므로 다양한 공격에 취약합니다. FTP 서버는 SSL/TLS 암호화를 통합하는 FTPS를 점점 더 채택하여 이러한 보안 문제를 해결하기 위해 노력해 왔지만, 이 적응이 모든 내재된 위험에 대한 만병통치약은 아닙니다.

약간의 독창성과 기존 프로토콜에서 영감을 얻으면 기존 위험의 상당 부분을 해결할 수 있습니다.

사용해보기

이 프로젝트를 컴파일하려면 두 가지 구성 요소가 필요합니다: Visual Studio와 컨트롤러의 종속성인 CommandLineUtils.

이 프로젝트는 .NET Core를 사용하므로 코드 수정 없이 다양한 플랫폼으로 쉽게 컴파일할 수 있습니다. 그러나 대상 플랫폼에 맞게 특정 기능을 구현해야 할 수도 있습니다.

이 프로젝트를 빠르게 테스트하려면 Docker와 stilliard/pure-ftpd 이미지를 사용하는 것이 좋습니다. 이 이미지는 다양한 옵션을 지원하여 자체 FTP 서버를 쉽게 빠르게 설정할 수 있습니다.

docker pull stilliard/pure-ftpd

TLS 없이

docker run -d --name ftpd_server -p 21:21 -p 30000-30009:30000-30009 -e "PUBLICHOST: 127.0.0.1" -e "ADDED_FLAGS=-E -A -X -x" -e FTP_USER_NAME=dark -e FTP_USER_PASS=toor -e FTP_USER_HOME=/home/dark stilliard/pure-ftpd

TLS 사용 (권장)

docker run -d --name ftpd_server -p 21:21 -p 30000-30009:30000-30009 -e "PUBLICHOST: 127.0.0.1" -e "ADDED_FLAGS=-E -A -X -x --tls=2" -e FTP_USER_NAME=dark -e FTP_USER_PASS=toor -e FTP_USER_HOME=/home/dark -e "TLS_CN=localhost" -e "TLS_ORG=maislaf" -e "TLS_C=FR" stilliard/pure-ftpd

필요에 따라 설정을 조정하세요. 그러나 이 테스트 FTP 서버를 로컬 네트워크나 공용 네트워크에 노출하지 않는 것이 좋습니다. 이 컨테이너를 호스트 머신에만 제한하여 노출을 최소화하는 것이 더 현명합니다.

ADDED_FLAGS 옵션을 사용하면 pure-ftpd 서버를 미세 조정할 수 있습니다. 모든 플래그에 대한 설명은 여기에서 찾을 수 있습니다.

일부 플래그는 C2 프로토콜의 작동 방식을 수정해야 할 수도 있습니다. 예를 들어 -K 옵션을 사용하여 모든 파일을 유지하면 FTP를 통한 파일 삭제가 비활성화됩니다. 현재 C2 프로토콜이 이 기능을 사용하므로 파일 이름 변경이나 이동과 같은 대체 접근 방식을 고려해야 할 수도 있습니다.

C2 암호화 (RSA + AES)

에이전트와 C2 간의 모든 통신의 무결성과 기밀성을 보장하기 위해 RSA 및 AES-GCM 256비트 알고리즘을 사용하여 통신 프로토콜에 암호화가 원활하게 통합되었습니다. 이 기능의 주요 목적은 손상된 FTP 서버가 악의적인 명령을 전달할 가능성을 차단하는 것입니다. 암호화를 사용하면 에이전트의 공개 키에 접근하지 않고는 명령 주입이 불가능합니다. 마찬가지로 C2의 공개 키를 소유하지 않고는 가짜 에이전트 응답을 주입할 수 없습니다.

자체 키 쌍(에이전트용 하나와 C2용 하나)을 더 쉽게 생성할 수 있도록 RSAKeyHelper라는 타사 도구를 포함했습니다. 애플리케이션을 실행할 때마다 새로 생성된 공개 키와 개인 키 쌍이 표시되며, 암호화를 사용하기로 선택한 경우 프로그램 내에서 사용할 수 있습니다.

배너 이미지

모든 것이 의도한 대로 작동하는지 확인하기 위해 동일한 도구 내에서 문자열 암호화를 테스트할 수 있는 기능도 통합했습니다.

배너 이미지

지원되는 명령

  • 셸 명령을 실행하고 응답을 에코합니다.
  • 에이전트 프로세스를 종료합니다.

변경 로그

2023년 6월 9일 - v1.0b

  • 첫 번째 릴리스.

2023년 6월 16일 - v1.0

  • RSA 및 AES-GCM 256비트 알고리즘을 사용하여 에이전트와 C2 서버 간의 통신 무결성과 기밀성을 보호하기 위한 암호화 지원이 도입되었습니다.

2023년 6월 21일 - v2.0

  • 코드 최적화: 코드베이스가 성능 향상을 위해 최적화되었습니다.
  • 프로토콜 개선: 통신 프로토콜이 향상되어 더 모듈화되어 더 큰 유연성을 허용합니다.
  • 서로 다른 RSA 키 쌍 지원: C2와 에이전트가 이제 서로 다른 RSA 키 쌍으로 작동할 수 있어 동일한 FTP 서버에서 충돌 없이 공존할 수 있습니다.
  • 위험한 작업 유효성 검사 대리자 구현: 잠재적으로 위험한 작업을 실행하기 전에 사용자에게 확인을 요청하는 유효성 검사 대리자가 구현되었습니다.

2023년 6월 23일 - v3.0 최종

  • 셸 명령 실행에 대한 버그 수정이 구현되었습니다. 이제 모든 명령이 전체 애플리케이션을 중단시키지 않고 실행되어야 합니다.
  • 명령 및 제어(C2)와 에이전트 간의 프로토콜 버전 확인이 통합되었습니다. 프로토콜 버전 불일치가 감지되면 에이전트는 C2에 의해 무시됩니다.

"3.0 최종" 버전의 릴리스는 이 프로젝트의 완성을 의미합니다. 더 이상 기능을 추가하지 않을 것입니다. 이 PoC의 목적은 FTP(S)를 사용하여 신뢰할 수 있고 안전한 C2를 만드는 방법을 시연하는 것이었습니다. 자신만의 기능을 갖춘 버전을 개발하는 것을 권장합니다. 연습으로, 장기 실행 작업 중에 애플리케이션이 중단되지 않도록 멀티스레딩 작업을 구현하는 것을 고려할 수 있습니다.

그러나 잠재적인 버그나 최적화 기회를 해결하는 측면에서 프로젝트에 대한 지원은 계속 제공할 것입니다.

스크린샷

(에이전트 목록) 메인

(활성(컨텍스트) 에이전트에 명령 실행) 명령

(위험한 작업 사용자 확인이 포함된 에이전트 콘솔 디버그 창) 에이전트

도구 다운로드