Apuntes Ciberseguridad (Cibaism)
HTBGitHubLinkedInNotion (Writeups)
  • Welcome to My Digital Garden
  • About me
  • Hacking notes (Personal)
    • Tratamiento TTY
    • Hacking Web Tecniques
      • File Inclusion
    • Linux Privilage Escalation
    • Arreglar bloodhound
  • Hacking Notes (Learning Path)
    • (HTB) Penetration Tester
      • Getting Started
        • Common Terms
          • Tipos de Shell
          • Puertos importantes
          • OWASP Top 10
        • Service Scanning
          • Nmap
          • Attacking Network Services
            • Captura de banners
            • FTP
            • SMB
            • SNMP
        • Web Enumeration
        • Public exploits
          • Encontrar exploits públicos
          • Introducción a Metasploit
        • Types of Shells
          • Reverse Shell
          • Bind Shell
          • Web Shell
        • Privilage escalation
        • Transferring Files
      • Footprinting
        • Infrastructura Based Enumeration
          • Domain Information
          • Cloud Resources
          • Staff
        • Host Based Enumeration
          • FTP
          • SMB
          • NFS
          • DNS
          • SMTP
          • IMAP / POP3
          • SNMP
          • MySQL
          • MSSQL
          • Oracle TNS
          • IPMI
          • Protocolos de administración remota de Linux
          • Protocolos de administración remota de Windows
      • Introduction to Active Directory Enumeration & Attacks
        • Tools of the Trade
        • Initial enumeration
          • External Recon and Enumeration Principles
          • Initial Enumeration of the Domain
        • Sniffing out a Foothold
          • LLMNR/NBT-NS Poisoning - from Linux
          • LLMNR/NBT-NS Poisoning - from Windows
        • Sighting In, Hunting For A User
          • Password Spraying Overview
          • Enumerating & Retrieving Password Policies
          • Password Spraying - Making a Target User List
        • Spray Responsibly
          • Internal Password Spraying - from Linux
      • File Inclusion
        • File Disclousure
          • Local File Inclusion (LFI)
          • Basic Bypasses
          • PHP Filters
        • Remote Code Execution
          • PHP Wrappers
    • (CRTA) Red Team Analyst
      • (CRTA) Red Team Analyst - Lab
    • (eJPT) Junior Penetration Tester
      • Assessment Methodologies
        • Assessment Methodologies: Footprinting & Scanning
          • Windows Recon: Nmap Host Discovery
          • Scan the Server 1
          • Windows Recon: SMB Nmap Scripts
        • Assessment Methodologies: Enumeration
          • Importing Nmap Scan Results Into MSF
          • T1046 : Network Service Scanning
          • FTP Enumeration
          • Samba Recon: Basics
          • Apache Enumeration
          • MySQL Enumeration
          • SSH Login
          • Postfix Recon: Basics
        • Assessment Methodologies: Vulnerability Assessment
          • Windows: IIS Server DAVTest
          • Shellshock
          • Web App Vulnerability Scanning With WMAP
      • Host & Network Penetration Testing
        • Host & Network Penetration Testing: System/Host Based Attacks
          • Windows
            • Windows: IIS Server: WebDav Metasploit
            • Windows: SMB Server PSexec
            • Windows: Insecure RDP Service
            • WinRM: Exploitation with Metasploit
            • UAC Bypass: UACMe
            • Privilege Escalation: Impersonate
            • Unattended Installation
            • Windows: Meterpreter: Kiwi Extension
          • Linux
            • ProFTP Recon: Basics
            • Samba Recon: Dictionary Attack
            • Cron Jobs Gone Wild II
            • Exploiting Setuid Programs
            • Password Cracker: Linux
        • Host & Network Penetration Testing: Network-Based Attacks
          • NetBIOS Hacking
          • SNMP Analysis
          • DNS & SMB Relay Attack
        • Host & Network Penetration Testing: The Metasploit Framework (MSF)
          • Windows: Java Web Server
          • Windows: HTTP File Server
          • Vulnerable FTP Server
          • Vulnerable File Sharing Service
          • Vulnerable SSH server
          • Vulnerable SMTP Server
          • Meterpreter Basics
          • Upgrading Command Shells To Meterpreter Shells
          • Windows Post Exploitation Modules
          • UAC Bypass: Memory Injection (Metasploit)
          • Exploiting SMB With PsExec
          • Windows: Enabling Remote Desktop
          • Clearing Windows Event Logs
          • Pivoting
  • Blue team notes
    • Digital Forensics
      • Malware Analysis with VirusTotal
      • Wireshark
    • (Falcon) CrowdStrike
      • FALCON 104: Getting Started with the Endpoint Security Module
      • FALCON 106: Customizing Dashboards in Falcon
      • FALCON 180: Falcon Forensics Fundamentals
  • Programming
    • Powershell
Powered by GitBook
On this page
  • Script con colores:
  • Script sin colores:
  • Uso:
  1. Blue team notes
  2. Digital Forensics

Malware Analysis with VirusTotal

Script con colores:

pip install colorama
import requests
import argparse
import sys
from colorama import init, Fore

init(autoreset=True)


API_KEY = 'TU_API_KEY_AQUI'  # Sustituye con tu clave API de VirusTotal
API_URL = 'https://www.virustotal.com/api/v3/files/'

def verificar_hash(archivo_hash):
    headers = {
        "x-apikey": API_KEY
    }
    url = API_URL + archivo_hash

    response = requests.get(url, headers=headers)

    if response.status_code == 200:
        data = response.json()
        stats = data["data"]["attributes"]["last_analysis_stats"]
        detections = data["data"]["attributes"]["last_analysis_results"]

        print(f"\n🔍 Hash: {archivo_hash}")
        print(f"{Fore.GREEN} ✔️ Detecciones - Malicioso: {stats['malicious']}, Sospechoso: {stats['suspicious']}, Limpio: {stats['undetected']}")

        # Mostrar motores que detectaron como malicioso
        print(Fore.CYAN + "\n🧪 Motores que detectaron como MALICIOSO:")
        mal_found = False
        for engine, result in detections.items():
            if result["category"] == "malicious":
                print(f"{Fore.RED} - {engine}: {result['result']}")
                mal_found = True
        if not mal_found:
            print(Fore.GREEN + " - Ninguno.")

        # Mostrar motores que lo marcaron como sospechoso
        print(Fore.CYAN + "\n⚠️ Motores que detectaron como SOSPECHOSO:")
        susp_found = False
        for engine, result in detections.items():
            if result["category"] == "suspicious":
                print(f"{Fore.YELLOW} - {engine}: {result['result']}")
                susp_found = True
        if not susp_found:
            print(Fore.GREEN + " - Ninguno.")
    elif response.status_code == 404:
        print(f"\n{Fore.RED} ❌ Hash no encontrado en VirusTotal: {archivo_hash}")
    else:
        print(f"\n{Fore.YELLOW}⚠️ Error al consultar {archivo_hash} - Código: {response.status_code}")

def main():
    parser = argparse.ArgumentParser(description="Consulta la reputación de hashes en VirusTotal")
    parser.add_argument("hashes", metavar="HASH", nargs="+", help="Hash(es) a consultar (MD5, SHA-1 o SHA-256)")
    args = parser.parse_args()

    for h in args.hashes:
        if len(h) not in [32, 40, 64]:
            print(f"{Fore.RED}❗ Hash inválido (no tiene longitud típica de MD5, SHA-1 o SHA-256): {h}")
            continue
        verificar_hash(h)

if __name__ == "__main__":
    if API_KEY == 'TU_API_KEY_AQUI':
        print(Fore.YELLOW + "⚠️ Debes introducir tu clave API de VirusTotal en el script antes de ejecutarlo.")
        sys.exit(1)
    main()

Script sin colores:

import requests
import argparse
import sys


API_KEY = 'TU_API_KEY_AQUI'  # Sustituye con tu clave API de VirusTotal
API_URL = 'https://www.virustotal.com/api/v3/files/'

def verificar_hash(archivo_hash):
    headers = {
        "x-apikey": API_KEY
    }
    url = API_URL + archivo_hash

    response = requests.get(url, headers=headers)

    if response.status_code == 200:
        data = response.json()
        stats = data["data"]["attributes"]["last_analysis_stats"]
        detections = data["data"]["attributes"]["last_analysis_results"]

        print(f"\n🔍 Hash: {archivo_hash}")
        print(f"✔️ Detecciones - Malicioso: {stats['malicious']}, Sospechoso: {stats['suspicious']}, Limpio: {stats['undetected']}")

        # Mostrar motores que detectaron como malicioso
        print("\n🧪 Motores que detectaron como MALICIOSO:")
        mal_found = False
        for engine, result in detections.items():
            if result["category"] == "malicious":
                print(f"- {engine}: {result['result']}")
                mal_found = True
        if not mal_found:
            print(" - Ninguno.")

        # Mostrar motores que lo marcaron como sospechoso
        print("\n⚠️ Motores que detectaron como SOSPECHOSO:")
        susp_found = False
        for engine, result in detections.items():
            if result["category"] == "suspicious":
                print(f"- {engine}: {result['result']}")
                susp_found = True
        if not susp_found:
            print(" - Ninguno.")
    elif response.status_code == 404:
        print(f"\n❌ Hash no encontrado en VirusTotal: {archivo_hash}")
    else:
        print(f"\n⚠️ Error al consultar {archivo_hash} - Código: {response.status_code}")

def main():
    parser = argparse.ArgumentParser(description="Consulta la reputación de hashes en VirusTotal")
    parser.add_argument("hashes", metavar="HASH", nargs="+", help="Hash(es) a consultar (MD5, SHA-1 o SHA-256)")
    args = parser.parse_args()

    for h in args.hashes:
        if len(h) not in [32, 40, 64]:
            print(f"❗ Hash inválido (no tiene longitud típica de MD5, SHA-1 o SHA-256): {h}")
            continue
        verificar_hash(h)

if __name__ == "__main__":
    if API_KEY == 'TU_API_KEY_AQUI':
        print("⚠️ Debes introducir tu clave API de VirusTotal en el script antes de ejecutarlo.")
        sys.exit(1)
    main()

Uso:

python3 hash.py <hash>
PreviousDigital ForensicsNextWireshark

Last updated 1 month ago