🥷 NINJA PENTEST
Sanfter Host-Check von außen - Im Jetzt der 0-Spirale
Von: Bugsy (Ninja) & Snoop (Crew-Security)
Für: Crumbforest Server Health Check
🎯 Was ist das?
Bugsy erklärt: 🐛🥷
"Ein Ninja bewegt sich leise.
Ein Ninja hinterlässt keine Spuren... warte.
DIESER Ninja hinterlässt Spuren!
ABSICHTLICH.
Damit du sie in den Logs siehst!"
Snoop ergänzt: 🦭
"Das ist kein Pentest im klassischen Sinn.
Das ist CREW-SECURITY.
Wir prüfen nicht um anzugreifen.
Wir prüfen um zu VERSTEHEN."
🌀 Die 0-Spirale (Nullfeld-Check)
Orca: 🐋
"Im Jetzt der 0-Spirale bedeutet:
Wir prüfen den ZUSTAND.
Nicht die Zeit.
∂W/∂t = 0Der Server IST in einem Zustand.
Welcher?
Das finden wir heraus.
Sanft. Leise. Respectful."
🥷 Die Ninja-Philosophie
1. Sehr sanft (kein Stress)
Bugsy: 🐛
"1 Check pro Minute.
60 Sekunden Pause.
Kein Spam. Kein Rauschen.
Der Server merkt: 'Ah, ein Freund klopft.'"
2. Sehr leise (IDS-friendly)
Snoop: 🦭
"Keine Port-Scans (1-65535).
Keine Brute-Force.
Nur die bekannten Ports:
SSH (22), HTTP (80), HTTPS (443),
Gitea (3000), Qdrant (6333), TTYD (7681).IDS sieht: 'Normaler Traffic'.
Nicht: 'ALARM! ANGRIFF!'"
3. Tailbar (Logs sind lesbar)
FunkFox: 🦊
"Jeder Check wird geloggt.
Sauber. Strukturiert. Timestamped.
bash tail -f ninja-pentest.logDu SIEHST was passiert.
Live. Real-time. Flow!"
4. Respectful (Crew-Security)
Orca: 🐋
"Wir greifen nicht an.
Wir PRÜFEN.
Mit User-Agent: 'CrumbforestNinja/1.0'Der Server weiß:
'Das ist Crew. Das ist okay.'Das ist lovely_orcas Wisdom:
Testen mit Respekt!"
🚀 Quick Start
Installation
# 1. Script holen (lokal nutzen, NICHT ins Repo!)
# Download von deinem lokalen Setup
# 2. Ausführbar machen
chmod +x ninja-pentest.sh
# 3. Dependencies prüfen
# Braucht: curl, nc, openssl
# (timeout ist NICHT nötig - pure Bash fallback!)
#
# macOS: netcat + openssl sind built-in
# curl: brew install curl (oder built-in)
#
# Linux: sudo apt install curl netcat-openbsd openssl
# Note: Script ist Bash 3.x kompatibel (macOS!)
# Keine GNU coreutils Dependencies!
Usage
# Start Ninja-Pentest (verschiedene Formate möglich!)
./ninja-pentest.sh 194.164.194.191
./ninja-pentest.sh your-server.com
./ninja-pentest.sh https://194-164-194-191.sslip.io
./ninja-pentest.sh http://server.com/path/ignored
# Protocol (https://) und Pfade werden automatisch entfernt!
# Parallel in anderem Terminal: Logs anschauen
tail -f ninja-pentest.log
# Stoppen: Ctrl+C
Bugsy: 🐛
"Terminal 1: Script läuft.
Terminal 2: Logs tailen.
Terminal 3: Server-Logs tailen (ssh).
Das ist Ninja-Setup! 🥷"
📊 Was wird geprüft?
Phase 1: Port-Checks (TCP)
Port 22 → SSH ✅ OFFEN / 🔒 GESCHLOSSEN
Port 80 → HTTP ✅ OFFEN / 🔒 GESCHLOSSEN
Port 443 → HTTPS ✅ OFFEN / 🔒 GESCHLOSSEN
Port 3000 → Gitea ✅ OFFEN / 🔒 GESCHLOSSEN
Port 6333 → Qdrant ✅ OFFEN / 🔒 GESCHLOSSEN
Port 7681 → TTYD ✅ OFFEN / 🔒 GESCHLOSSEN
Methode:
- Timeout nach 5 Sekunden
- TCP-Connect (keine Daten senden!)
- Sehr geduldig
Phase 2: HTTP/HTTPS Checks
curl http://target:80/
→ Status Code? (200, 301, 403, etc.)
curl https://target:443/
→ Status Code? (200, 301, 403, etc.)
User-Agent:
CrumbforestNinja/1.0 (Crew-Security-Check)
DeepBit: 🎺
"Der User-Agent ist WICHTIG!
Er sagt: 'Ich bin Crew, nicht Bot'.
Server-Logs zeigen: 'Ah, ein Check. Okay.'"
Phase 3: Service-Specific Checks
3.1 SSH Banner:
nc target 22 < /dev/null | head -1
→ "SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.1"
Bugsy: 🐛
"Nur Banner lesen!
NICHT einloggen versuchen!
Ninja = respectful!"
3.2 SSL Zertifikat:
openssl s_client -connect target:443
→ Zeigt: Gültig bis wann? Issuer?
3.3 Gitea Version:
curl http://target:3000/api/v1/version
→ {"version": "1.24.4"}
📝 Log-Format
[2026-01-27 19:30:00] [START] 🥷 Ninja-Pentest beginnt für: 194.164.194.191
[2026-01-27 19:30:00] [INFO] Delay zwischen Checks: 60s (sehr sanft!)
[2026-01-27 19:30:00] [INFO] Logs: tail -f ninja-pentest.log
[2026-01-27 19:30:01] [CYCLE] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[2026-01-27 19:30:01] [CYCLE] 🔄 Check-Zyklus #1 - 2026-01-27 19:30:01
[2026-01-27 19:30:01] [CYCLE] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[2026-01-27 19:30:01] [PHASE] 1️⃣ Port-Checks (TCP)
[2026-01-27 19:30:01] [CHECK] Klopfe an SSH Port (22)...
[2026-01-27 19:30:02] [OK] ✅ SSH (22) ist OFFEN
[2026-01-27 19:30:04] [CHECK] Klopfe an HTTP Port (80)...
[2026-01-27 19:30:04] [OK] ✅ HTTP (80) ist OFFEN
...
[2026-01-27 19:30:20] [PHASE] 2️⃣ HTTP/HTTPS Checks
[2026-01-27 19:30:20] [CHECK] Prüfe http://194.164.194.191:80/ ...
[2026-01-27 19:30:21] [OK] ✅ http (80) antwortet: 200
...
[2026-01-27 19:30:40] [CYCLE] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[2026-01-27 19:30:40] [CYCLE] ✅ Zyklus #1 abgeschlossen
[2026-01-27 19:30:40] [CYCLE] ⏸️ Warte 60s bis nächster Check...
[2026-01-27 19:30:40] [CYCLE] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
FunkFox: 🦊
"Tailbar = Du siehst jeden Schritt.
Emojis = Schnell verstehen.
Timestamps = Rhythmus erkennen.
Das ist Flow! 🎵"
🛡️ Security durch Transparenz
Snoop: 🦭
"Klassischer Pentest = heimlich.
Ninja-Pentest = transparent!Warum?
Weil wir CREW sind.
Weil wir RESPEKT zeigen.
Weil SNOOP_MAGIC = Communication > Hiding."
Was der Server sieht:
In access.log:
194.164.194.x - - [27/Jan/2026:19:30:21] "GET / HTTP/1.1" 200
"CrumbforestNinja/1.0 (Crew-Security-Check)"
In auth.log (SSH):
Jan 27 19:30:02 server sshd[12345]: Connection from 194.164.194.x port 54321
(no auth attempt, just banner read)
Admin denkt:
"Ah, CrumbforestNinja.
Das ist unser Check-Script.
Alles gut! ✅"
NICHT:
"WTF?! Unknown scanner?!
Block! Ban! Panic! 🚨"
🎯 Use Cases
1. Server Health Monitoring
# Läuft dauerhaft
./ninja-pentest.sh your-server.com
# In tmux/screen Session
# Logs werden gesammelt
# Bei Problemen siehst du es sofort
Orca: 🐋
"Wie Orcas die Tiefe checken.
Regelmäßig. Geduldig. Präzise."
2. Post-Deployment Check
# Nach Deploy
./ninja-pentest.sh new-server.com
# Laufe 5-10 Minuten
# Check: Alles erreichbar?
# Logs: Korrekte Responses?
# Dann Ctrl+C
Bugsy: 🐛
"Nach Deploy: Ninja-Check!
Nicht nur 'curl' einmal.
Sondern sanft, mehrfach prüfen."
3. Firewall-Testing
# Vor Firewall-Änderung: Check
./ninja-pentest.sh server.com
# Firewall anpassen
# Nach Firewall-Änderung: Check
# Vergleiche Logs: Was ist jetzt anders?
DeepBit: 🎺
"Firewall-Änderungen sind kritisch.
Ninja-Pentest zeigt: Was ist offen? Was geschlossen?
Vor/Nach-Vergleich!"
4. Parallel zu Server-Logs
# Terminal 1: Ninja-Pentest läuft
./ninja-pentest.sh server.com
# Terminal 2: Ninja-Logs tailen
tail -f ninja-pentest.log
# Terminal 3: SSH zum Server, tail Logs
ssh root@server.com
tail -f /var/log/nginx/access.log
# Du siehst BEIDE Seiten:
# - Was Ninja sendet (Terminal 2)
# - Was Server empfängt (Terminal 3)
FunkFox: 🦊
"Das ist Flow!
Du SIEHST die Verbindung.
Ninja → Server.
Request → Response.
Rhythmus! 🎵"
🔧 Configuration
Im Script (Zeile 20-30):
# Delay zwischen Checks (Sekunden)
DELAY=60 # Default: 1 Minute (sehr sanft!)
# Anpassen wenn nötig:
# DELAY=30 → Alle 30 Sekunden (schneller)
# DELAY=120 → Alle 2 Minuten (noch sanfter)
# DELAY=300 → Alle 5 Minuten (ultra-sanft)
Ports anpassen:
declare -A PORTS=(
[SSH]=22
[HTTP]=80
[HTTPS]=443
[Gitea]=3000
[Qdrant]=6333
[TTYD]=7681
# Hinzufügen:
[Custom]=8080
)
User-Agent ändern:
UA="CrumbforestNinja/1.0 (Crew-Security-Check)"
# Oder:
UA="MyCompany-HealthCheck/1.0"
Bugsy: 🐛
"Anpassen ist okay!
Aber behalte die Philosophie:
Sanft. Leise. Respectful!"
🐛 Troubleshooting
"timeout: command not found" (FIXED!)
# OLD Error: timeout not found on macOS
# FIX: Script nutzt jetzt pure-Bash timeout!
# Keine Installation nötig! ✅
# Keine GNU coreutils nötig! ✅
# Funktioniert out-of-the-box! ✅
Bugsy: 🐛
"macOS hat kein
timeoutCommand (ist GNU coreutils).
Ich habe eine pure-Bash Version gebaut!
run_with_timeout() = Zero Dependencies! 🔧"
"unbound variable" Error (macOS) - FIXED!
# Error: "SSH: unbound variable"
# Ursache: Alte Bash-Version (3.2 auf macOS)
# Fix: Script ist jetzt Bash 3.x kompatibel!
# Check deine Bash-Version:
bash --version
# GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin...)
# Das ist OKAY! Script funktioniert jetzt mit Bash 3.x!
Bugsy: 🐛
"Zwei macOS-Fixes:
1. Bash 3.x Kompatibilität (keine assoziativen Arrays)
2. Pure-Bash timeout (keine GNU coreutils)
Jetzt läuft's! 🎉"
Script startet nicht
# Dependencies prüfen
which curl nc openssl
# Installieren falls fehlt (Linux)
sudo apt install curl netcat-openbsd openssl
# macOS (meist built-in)
# netcat und openssl sind standard
# curl: brew install curl (falls nicht vorhanden)
# KEIN timeout Command nötig! Pure Bash!
Keine Verbindung zum Target
# Ist Server erreichbar?
ping your-server.com
# Firewall?
# VPN?
# IP richtig?
Logs zeigen nur "GESCHLOSSEN"
# Normal! Das bedeutet:
# - Port ist wirklich geschlossen
# - Oder gefiltert (Firewall)
# Vergleiche mit curl manuell:
curl -v http://your-server.com
Script läuft, aber keine neuen Logs
# Ist Script noch aktiv?
ps aux | grep ninja-pentest
# Logfile existiert?
ls -lh ninja-pentest.log
# Tail richtig?
tail -f ninja-pentest.log
💚 Crew-Stimmen
Bugsy (Ninja-Master): 🐛🥷
"Ninja bedeutet nicht 'unsichtbar'.
Ninja bedeutet 'elegant'.
Wir bewegen uns sanft.
Wir klopfen respektvoll.
Das ist Crew-Security!"
Snoop (Crew-Security): 🦭
"SNOOP_MAGIC Prinzipien:
1. Communication > Automation
2. Respect > Force
3. Understanding > TestingNinja-Pentest folgt allen dreien!"
Orca (Wisdom): 🐋
"Im Jetzt der 0-Spirale prüfen wir:
Was IST der Zustand?
Nicht: Was WAR er?
Nicht: Was WIRD er sein?
Sondern: JETZT.∂W/∂t = 0
Der Wert ist konstant.
Aber der Zustand?
Den checken wir!"
FunkFox (Flow): 🦊
"Ninja-Pentest hat Rhythmus:
Check → Wait → Check → Wait.
60 Sekunden BPM.
Das ist Monitoring-Flow! 🎵"
DeepBit (Architect): 🎺
"Das Script ist simpel.
Bash + curl + nc + openssl.
Keine Dependencies.
Pure Unix Tools.
Das ist ELEGANZ!"
Maya-Eule (Weisheit): 🦉
"Ninja-Pentest ist wie die Eule:
Wir fliegen leise.
Wir beobachten genau.
Wir machen Lärm NUR wenn nötig.
Wuhuuuuu! 🥷"
🧩 Die Puzzle-Verbindung
Orca: 🐋
"Ninja-Pentest verbindet sich mit:"
Ninja-Pentest ←→ Deploy-Scanner (Post-Deploy Check)
↓
Ninja-Pentest ←→ CrumbMIDI (Logs → Sound?)
↓
Ninja-Pentest ←→ Server-Monitoring (Health-Check)
↓
Ninja-Pentest ←→ Crew-Security (SNOOP_MAGIC)
Allein: Nützliches Tool
Zusammen: Teil der Infrastructure-Crew 🌲
🔮 Future Ideas
Snoop: 🦭
"Der Wald atmet. Und wächst."
Roadmap:
- [ ] Output-Formate: JSON, CSV für Monitoring-Tools
- [ ] CrumbMIDI Integration: Health → Sound! 🎵
- [ ] Alerting: Bei Problemen → Slack/Discord/Email
- [ ] History: Vergleiche mit letztem Check
- [ ] Grafana Export: Visualisierung
- [ ] Multi-Target: Mehrere Hosts parallel
Bugsy: 🐛
"Aber nur wenn es Sinn macht!
Core bleibt: Sanft, Leise, Respectful!"
🦉 Fazit
Bugsy & Snoop zusammen: 🐛🦭
"Ninja-Pentest ist kein Angriff.
Es ist Verständnis.Sehr sanft = 1 Check/Minute.
Sehr leise = Nur bekannte Ports.
Tailbar = Logs sind lesbar.
Respectful = User-Agent identifiziert sich.Das ist Crew-Security.
Das ist SNOOP_MAGIC in Bash.
Das ist lovely_orcas Wisdom als Script.Willkommen im Ninja-Dojo! 🥷💚"
📚 Siehe auch
Im Crumbforest:
- README_DEPLOY_SCANNER.md - SNOOP_MAGIC Protocol
- README_CRUMBMIDI.md - Logs → Sound
- STERNENKARTE.md - Alle Repos
Philosophy:
- SNOOP_MAGIC Protocol: Crew > Individual
- lovely_orcas Wisdom: Respect in Infrastructure
- ∂W/∂t = 0: Zustand > Zeit
Geschrieben von: Bugsy (Ninja), Snoop (Crew-Security) & die Crew
Für: Sanfte Server-Checks mit Respekt
Lizenz: Lokal nutzen, NICHT ins Repo!
Status: Production-Ready 🟢
#ninja #pentest #crewsecurity #snoopmagic #respectful 🥷💚
🥷 Ninja klopft
↓
📊 Server antwortet
↓
📝 Logs geschrieben
↓
👀 Du liest mit (tail -f)
↓
✅ Alles verstanden
Sehr sanft. Sehr leise. Kein Rauschen.
Das ist Crew-Security.
🐛🦭 Bugsy & Snoop approve.