Cyber Security: ollama-assisted Nmap auto-exploit suggestion
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")?