Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
sleep_python_bridge — 이 프로젝트는 sleep과 python 언어 사이의 '브리지'입니다. 표준 GUI 클라이언트 없이 python을 통해 Cobalt Strike 팀서버를 제어할 수 있게 해줍니다. 참고: 이 프로젝트는 매우 베타 단계에 있습니다. 목표는 테스트를 위한 플레이그라운드를 제공하는 것이며, 공식적으로 지원되는 기능이 절대 아닙니다. 아마도 이는 향후 핵심 제품에 추가될 수 있는 무언가일 수 있습니다. | Kitploit
도구/GitHubGitHub/cobalt-strike/sleep_python_bridge
Indicator of Compromise (IOC) ManagementPayload GenerationCommand and ControlRed TeamingPayload DevelopmentLog Analysis
GitHubcobalt-strike/sleep_python_bridge

sleep_python_bridge

이 프로젝트는 sleep과 python 언어 사이의 '브리지'입니다. 표준 GUI 클라이언트 없이 python을 통해 Cobalt Strike 팀서버를 제어할 수 있게 해줍니다. 참고: 이 프로젝트는 매우 베타 단계에 있습니다. 목표는 테스트를 위한 플레이그라운드를 제공하는 것이며, 공식적으로 지원되는 기능이 절대 아닙니다. 아마도 이는 향후 핵심 제품에 추가될 수 있는 무언가일 수 있습니다.

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기
18832171년 전Kitploit 검토 완료

Cobalt Strike Sleep Python Bridge

이 프로젝트는 sleep 언어와 python 언어 사이의 '브리지'입니다. 표준 GUI 클라이언트 없이 Python을 통해 Cobalt Strike 팀서버를 제어할 수 있게 해줍니다.

참고: 이 프로젝트는 매우 베타 단계에 있습니다. 목표는 테스트를 위한 플레이그라운드를 제공하는 것이며, 결코 공식 지원 기능이 아닙니다. 아마도 향후 핵심 제품에 추가될 수 있는 기능일 것입니다.

이 프로젝트는 @BinaryFaultline과 @Mcgigglez16이 https://github.com/emcghee/PayloadAutomation 프로젝트에서 수행한 작업에서 영감을 받았습니다. 두 분께 특별히 감사드립니다!!

이 브리지의 핵심은 Cobalt Strike의 헤드리스 클라이언트를 Python으로 구현한 것입니다. 이는 엔진으로 agscript가 제공하는 Aggressor Script Console을 사용하여 달성됩니다. Agscript는 Cobalt Strike(https://www.cobaltstrike.com/aggressor-script/index.html)와의 헤드리스 상호작용을 허용합니다. '브리지'는 sleepy.py의 Python 헬퍼 함수를 사용하여 agscript 콘솔이 기대하는 필요한 sleep 명령을 생성하는 방식으로 작동합니다. sleep 함수를 작성하는 대신 striker.py는 sleep을 추상화하고 Python을 사용할 수 있게 하는 헬퍼 함수를 제공합니다.

원래 프로젝트와 비교한 주요 변경 사항

PayloadAutomation 프로젝트에서 영감을 받았기 때문에 동일한 코드가 많이 포함된 채 시작되었지만, agscript 래퍼 역할을 하는 데 필요한 구성 요소만 사용하도록 간소화하고 싶었습니다.

  • Payload_Automation에서 sleep_python_bridge로 이름 변경. 이 프로젝트는 단순한 페이로드 생성 이상입니다.
  • PyPI 라이브러리에서 로컬 모듈로 변경. 테스트를 위해 수행되었으며, 광범위한 테스트 후 python 라이브러리의 좋은 후보가 될 수 있습니다.
  • aggressor 버전에 맞게 헬퍼 업데이트 및 추가
  • 외부 스크립트 로드 기능 추가.

포함된 라이브러리

  • Striker: 일반적으로 Sleep/GUI를 통해서만 접근할 수 있는 기능을 실행하고 Cobalt Strike와 상호작용하는 함수 집합.
  • Sleepy: Sleep 객체와 Python 객체 간의 브리지를 촉진하는 함수 집합.
  • Compyler: 플랫폼 또는 크로스 플랫폼에서 다양한 페이로드를 컴파일하는 함수 집합.
  • Artifactor: 아티팩트를 검사하고 검토하며 IoC를 수집하고 추적하는 함수 집합.

파일 및 디렉터리

항목설명
sleep_python_bridgeCobalt Strike와 인터페이스하기 위해 python을 허용하는 라이브러리
output/htmlhtml 데이터 뷰어 경로
output/html/data데이터 뷰어에서 사용하는 json 데이터 경로
output/payloads저장된 페이로드 경로(페이로드 생성기에 사용됨)
payload_scriptspayloadgenerator.py에 의해 로드될 외부 스크립트 경로
beaconlogtracker.py비콘 로그를 표시하기 위해 HTML 데이터그리드를 사용하는 비콘 로그 추적기 구현
payloadgenerator.py각 리스너에 대한 페이로드를 생성하는 비콘 페이로드 생성기 구현
beacongrapher.py비콘을 HTML javascript 방향 그래프로 표시하는 비콘 그래프 추적기 구현

TODO

  • 노출된 함수 문서화
  • striker.py의 컴파일 기반 함수를 compyler.py로 이동
  • 특히 애플리케이션 종속성에 대한 추가 오류 검사 추가
  • 원격 빌드와 mingw를 포함하도록 compyler 확장
  • artifactor.py를 통해 생성된 페이로드에 IOC 추적 추가
  • 오류 처리: "User is already connected."
  • 이것을 공식 python 라이브러리로 전환하는 것 고려

사용 방법

이 프로젝트의 예제가 가장 이해하기 쉬운 방법일 수 있지만, example.py 스크립트를 확인하세요.

#!/usr/local/bin/python3

## Import the bridge
from sleep_python_bridge.striker import CSConnector
from argparse import ArgumentParser
from pprint import pp, pprint

###################
## Argparse
def parseArguments():
    parser = ArgumentParser()
    parser.add_argument('host', help='The teamserver host.')
    parser.add_argument('port', help='The teamserver port.')
    parser.add_argument('username', help='The desired username.')
    parser.add_argument('password', help='The teamserver password.')
    parser.add_argument('path', help="Directory to CobaltStrike")
    
    args = parser.parse_args()
    return args

## Let's go
def main(args):

    cs_host = args.host
    cs_port = args.port
    cs_user = args.username
    cs_pass = args.password
    cs_directory = args.path

    ## Connect to server
    print(f"[*] Connecting to teamserver: {cs_host}")
    with CSConnector(
        cs_host=cs_host, 
        cs_port=cs_port, 
        cs_user=cs_user, 
        cs_pass=cs_pass,
        cs_directory=cs_directory) as cs:

        # Perform some actions
        # 
        # Get beacon metadata - i.e., x beacons() from the script console
        beacons = cs.get_beacons()
        print("BEACONS")
        pprint(beacons)

        # Get list of listners - i.e., x listeners_stageless() from the script console
        listeners = cs.get_listeners_stageless()
        print("LISTENERS")
        pprint(listeners)

if __name__ == "__main__":
    args = parseArguments()
    main(args)

스크립트 호출

python3 example.py 127.0.0.1 50050 example password /path/to/cobaltstrike

실용 예제

로그 추적기

비콘 로그는 팀서버에서 런타임 중에 또는 팀서버에 저장된 비콘 로그 파일을 통해 확인할 수 있습니다. 데이터는 항상 존재하지만 원하는 방식으로 표시되지 않을 수 있습니다. 이는 HTML 데이터 그리드를 사용하여 비콘 로그를 빠르게 볼 수 있는 로그 추적기 예제입니다.

beaconlogtracker.py는 팀서버에 연결하여 실행 중인 비콘 로그를 30초마다 추출하고, <code>beaconlogs.json`에 저장한 다음, 검색 및 정렬 가능한 HTML 데이터 그리드로 표시하는 스크립트입니다.

비콘 로그는 항상 logs 디렉터리에 저장되지만, 이는 대체 뷰어로 메모리 내 로그를 추적하는 또 다른 방법입니다. 팀서버가 재시작되면 메모리 내 로그는 손실되며, 팀서버의 logs 디렉터리에 저장된 로그를 참조해야 합니다. 이 스크립트는 메모리 내 로그를 beaconlogs.json 파일에 동기화된 상태로 유지합니다. 이렇게 하면 Cobalt Strike가 재시작되더라도 logs 디렉터리를 뒤질 필요 없이 모든 데이터를 빠르고 쉽게 시각화할 수 있습니다.

스크립트를 시작하려면 팀서버에 연결하여 30초마다 로그를 동기화하세요.

사용법:

python3 beaconlogtracker.py 127.0.0.1 50050 logtracker password /path/to/cobaltstrike

이렇게 하면 beaconlogs.json이 저장된 비콘 로그와 실행 중인 비콘 로그에 동기화된 상태로 유지됩니다. 30초마다 동기화합니다.

output/html 디렉터리에서 웹 서버를 시작하세요.

python3 -m http.server 8000

http://localhost:8000/beaconlogs.html에 연결하세요.

페이로드 생성기

레드 팀 운영자들이 자주 요청하는 기능 중 하나는 Cobalt Strike GUI 없이 프로그래밍 방식으로 페이로드를 생성하는 것입니다. 참조 프로젝트는 페이로드 생성기로 이 작업을 수행했습니다. 훌륭했지만, 독특한 과제가 하나 있습니다. Aggressor는 페이로드가 빌드되는 방식에 영향을 줄 수 있는 여러 훅을 제공합니다. 이러한 훅은 다양한 키트(예: artifact kit, sleep mask kit, UDRL kit)에서 사용됩니다. 일반적으로 GUI를 통해 aggressor 스크립트를 로드하여 사용합니다. 이 프로젝트는 외부 스크립트 로드를 허용하도록 확장되었습니다. 이것이 없으면 이러한 페이로드 훅을 사용하기 어려울 것입니다. 이 코드는 페이로드를 외부 함수에 전달하여 사용자 지정 난독화를 추가하거나, 고객 로더에 포함하거나, 다른 수정 작업을 수행하도록 쉽게 확장할 수 있습니다.

페이로드 생성기 스크립트는 팀서버에 연결하고 추가 스크립트를 로드한 다음 페이로드를 생성합니다.

사용법 (외부 키트 없음):

  • python3 payloadgenerator.py 127.0.0.1 50050 payloads password /path/to/cobaltstrike 실행

사용법 (외부 키트 사용 시)

이 예제에서는 artifact 키트와 sleep mask 키트가 활성화된 Arsenal 키트를 추가하는 단계를 설명합니다.

  • /path/to/arsenal_kit/arsenal_kit.config 파일을 업데이트하여 artifact 및 sleep mask 키트를 활성화합니다.
  • [선택 사항] 필요에 따라 artifact 및 sleep mask 키트를 수정합니다.
  • /path/to/arsenal_kit/build_arsenal_kit.sh로 arsenal 키트를 빌드합니다.
  • arsenal 키트 배포 파일을 payload_scripts 디렉터리로 복사합니다.
    cp -r /path/to/arsenal_kit/dist/* /path/to/sleep_python_bridge/payload_scripts
  • [선택 사항] 추가 수정에 대한 자세한 내용은 로깅 섹션을 참조하세요.
  • python3 payloadgenerator.py 127.0.0.1 50050 payloads password /path/to/cobaltstrike 실행

로깅

일반적으로 GUI를 사용할 때 외부 스크립트는 println aggressor 함수를 사용하여 피드백이나 디버깅에 유용한 정보를 Script Console로 출력할 수 있습니다. payloadgenerator.py를 사용하면 println 출력이 손실되며 사용 가능한 유일한 옵션은 elog 함수입니다. elog를 사용할 때는 Event Log에서 정보를 보기 위해 GUI가 필요합니다.

'외부 키트 사용' 예제에 이어서 /path/to/sleep_python_bridge/payload_scripts/arsenal_kit.cna 파일을 업데이트하고 두 곳의 println을 elog로 변경하세요. 이 변경으로 모든 arsenal 키트 로깅이 이제 GUI Event Log에서 확인할 수 있습니다.

외부 스크립트 로드

외부 스크립트 로드는 페이로드 훅(예: artifact, sleep mask, udrl 키트)을 포함하는 페이로드 수정 스크립트를 제외하고는 항상 필요한 것은 아닙니다. Cobalt Strike GUI에서 스크립트를 로드하면 페이로드는 GUI의 스크립트를 따르지만 agscript 클라이언트에서는 따르지 않습니다(서로 다른 클라이언트입니다). 스크립트와 지원 파일을 payload_scripts 디렉터리에 추가해야 합니다.

payloadgenerator.py는 payload_scripts 디렉터리의 최상위에 있는 모든 .cna 스크립트를 자동으로 로드합니다. 하위 디렉터리에 있는 .cna 스크립트는 로드되지 않습니다.

Arsenal 키트가 포함된 예제 디렉터리 구조.

$ ls -1R ./payload_scripts
./payload_scripts:
arsenal_kit.cna
artifact
sleepmask

./payload_scripts/artifact:
artifact32big.dll
artifact32big.exe
artifact32.dll
artifact32.exe
artifact32svcbig.exe
artifact32svc.exe
artifact64big.exe
artifact64big.x64.dll
artifact64.exe
artifact64svcbig.exe
artifact64svc.exe
artifact64.x64.dll
artifact.cna

./payload_scripts/sleepmask:
sleepmask.cna
sleepmask_pivot.x64.o
sleepmask_pivot.x86.o
sleepmask.x64.o
sleepmask.x86.o

사용법 (4.8 추가 옵션)

@mgeeky가 제공한 최근 업데이트 덕분에 payloadgenerator.py 스크립트는 이제 4.8에서 추가된 새로운 artifact_payload 함수 매개변수를 지원하는 추가 인자를 지원합니다. 이 인자를 사용하면 생성되는 페이로드를 더 잘 제어할 수 있습니다.

$ python3 payloadgenerator.py --help
------------------------
Beacon Payload Generator
------------------------
usage: payloadgenerator.py [-h] [-o path] [-l name] [-a arch] [-t types] [-e exit] [-c method] host port username password path
도구 다운로드