Cyber Security: ollama-assisted Nmap auto-exploit suggestion

From OnnoWiki
Jump to navigation Jump to search

Keren! Kita lanjut ke versi auto-exploit suggestion

Tujuan

  • Jalankan Nmap
  • Kirim hasilnya ke LLM (Ollama)
  • LLM memberi saran eksploitasi otomatis berdasarkan versi layanan, port, CVE
  • (Opsional) Tambahkan saran eksploit dari Exploit-DB atau Metasploit module

Langkah Integrasi Auto-Exploit Suggestion

1. 'Struktur Prompt ke LLM:

Kita akan ubah prompt agar model berpikir seperti seorang penetration tester senior:

prompt = f"""
Act like a senior penetration tester.

Berikut hasil scan Nmap:
{scan_result}

1. Identifikasi port terbuka dan service-nya
2. Temukan CVE atau kerentanan dari versi layanan tersebut
3. Berikan saran eksploitasi untuk masing-masing service (bisa berupa nama eksploit Metasploit atau teknik manual)
4. Berikan urutan prioritas eksploitasi (mana dulu yang sebaiknya diuji)

Format jawaban: 
* Port:
* Service:
* CVE (jika ada):
* Saran Eksploitasi:
* Prioritas:
"""

2. Versi Script Update

import subprocess
import ollama

def run_nmap_scan(target):
    print(f"Scanning target: {target}")
    result = subprocess.run(["nmap", "-sV", target], capture_output=True, text=True)
    return result.stdout

def ask_ollama_for_exploit_suggestions(scan_result, model='llama3'):
    prompt = f"""
Act like a senior penetration tester.

Berikut hasil scan Nmap:
{scan_result}

1. Identifikasi port terbuka dan service-nya
2. Temukan CVE atau kerentanan dari versi layanan tersebut
3. Berikan saran eksploitasi untuk masing-masing service (bisa berupa nama eksploit Metasploit atau teknik manual)
4. Berikan urutan prioritas eksploitasi (mana dulu yang sebaiknya diuji)

Format jawaban: 
* Port:
* Service:
* CVE (jika ada):
* Saran Eksploitasi:
* Prioritas:
"""
    response = ollama.chat(model=model, messages=[
        {"role": "user", "content": prompt}
    ])
    return response['message']['content']

if __name__ == "__main__":
    target_ip = input("Masukkan IP target: ")
    scan_result = run_nmap_scan(target_ip)
    print("\n Hasil Nmap \n")
    print(scan_result)

    print("\n Auto Exploit Suggestion \n")
    exploit_suggestions = ask_ollama_for_exploit_suggestions(scan_result)
    print(exploit_suggestions)

3. Contoh Output (LLM Expected Output)

  • Port: 21
  • Service: FTP (vsftpd 2.3.4)
  • CVE: CVE-2011-2523
  • Saran Eksploitasi: Gunakan Metasploit module `exploit/unix/ftp/vsftpd_234_backdoor`
  • Prioritas: Tinggi
  • Port: 80
  • Service: Apache httpd 2.2.8
  • CVE: CVE-2007-6421
  • Saran Eksploitasi: Directory traversal, coba exploit manual atau `exploit/multi/http/apache_mod_cgi_bash_env_exec`
  • Prioritas: Sedang


Next Step (Opsional Tingkat Lanjut)

Kita bisa:

  • Otomatis mencocokkan versi dengan CVE via API ExploitDB
  • Tambahkan fungsi `searchsploit` ke script:
sudo apt install exploitdb
def search_exploit(service_version):
    result = subprocess.run(["searchsploit", service_version], capture_output=True, text=True)
    return result.stdout

Mau Tambahin Apa Lagi?

  • Integrasi Metasploit langsung dari Python?
  • Ekspor hasil ke laporan PDF?
  • Buat antarmuka CLI interaktif?
  • Tambah voice input ("Scan 192.168.0.101")?

Pranala Menarik