VirusTotal
What it is — VirusTotal is a free service (owned by Google/Chronicle) that scans files, URLs, domains and IP addresses against 70+ antivirus engines plus dozens of static/dynamic analysis tools at once, and gives you an aggregated verdict. Instead of installing 70 antivirus products, you upload a file once and see what each one says.
| Type | Web service + API |
| Cost | Free (rate-limited public API) |
| URL | virustotal.com |
How to use it
1. Scan a file
Drag the file onto the site, or via the API:
curl --request POST \
--url https://www.virustotal.com/api/v3/files \
--header 'x-apikey: <YOUR_API_KEY>' \
--form file=@suspicious.exe
Careful: uploading a file to VirusTotal shares it with the community and with the antivirus engines themselves — never upload anything containing sensitive data, credentials, or material under an NDA. That's what hash lookup is for (next point), which doesn't expose the file's contents.
2. Look up a hash only (no upload)
If the file has already been analysed by someone before (quite likely with known malware or HTB machine binaries), you can query just its SHA256/SHA1/MD5 hash without uploading anything:
sha256sum suspicious.exe
curl --request GET \
--url https://www.virustotal.com/api/v3/files/<SHA256> \
--header 'x-apikey: <YOUR_API_KEY>'
If there's no match, VT tells you it doesn't know it — then you decide whether it's worth uploading.
3. Scan a URL or domain
Paste the URL on the site, or via the API:
curl --request POST \
--url https://www.virustotal.com/api/v3/urls \
--header 'x-apikey: <YOUR_API_KEY>' \
--data 'url=http://suspicious-domain.com'
Returns whether any engine flags it as phishing, malware, or a known C2, plus its historical reputation (how long it's been registered, whether it recently changed IP, etc.).
What I use it for
- Bug bounty / phishing triage: before touching a suspicious URL reported in a program, I run it through VT to see if others already flagged it as malicious — avoids opening something dangerous blind.
- Binaries in CTF machines: when I find a weird binary during a CTF (a backup, a custom executable in
C:\xampp, etc.), I check its hash first — if it matches known malware, I already know the family without reverse-engineering it from scratch. - Verifying downloaded tools: before running a binary from an obscure GitHub repo (PoC exploits, third-party releases), a quick VT check doesn't replace reading the code, but catches the obvious stuff.
- Domain reputation: when fingerprinting infrastructure during an engagement, checking how long a domain has been alive and its history helps tell legitimate infrastructure apart from recently-spun-up campaign infrastructure.
VirusTotal is a quick starting point, not a final verdict: false positives and false negatives happen in both directions. Use it to prioritise where to look closer, not as a substitute for manual analysis.
Link
Qué es — VirusTotal es un servicio gratuito (propiedad de Google/Chronicle) que analiza ficheros, URLs, dominios y direcciones IP pasándolos por más de 70 motores antivirus y decenas de herramientas de análisis estático/dinámico a la vez, y te devuelve un veredicto agregado. En vez de instalar 70 antivirus, subes un fichero una vez y ves qué dice cada uno.
| Tipo | Servicio web + API |
| Coste | Gratis (con límites de rate en la API pública) |
| URL | virustotal.com |
Cómo se usa
1. Analizar un fichero
Arrastra el fichero a la web, o desde la API:
curl --request POST \
--url https://www.virustotal.com/api/v3/files \
--header 'x-apikey: <TU_API_KEY>' \
--form file=@sospechoso.exe
Ojo: subir un fichero a VirusTotal lo comparte con la comunidad y con los propios motores antivirus — nunca subas nada que contenga datos sensibles, credenciales o material de un cliente bajo NDA. Para eso existe la opción de búsqueda por hash (siguiente punto), que no expone el contenido del fichero.
2. Buscar solo por hash (sin subir el fichero)
Si el fichero ya fue analizado por alguien antes (muy probable con malware conocido o binarios de máquinas de HTB), puedes consultar solo su hash SHA256/SHA1/MD5 sin subir nada:
sha256sum sospechoso.exe
curl --request GET \
--url https://www.virustotal.com/api/v3/files/<SHA256> \
--header 'x-apikey: <TU_API_KEY>'
Si no hay coincidencia, VT te dice que no lo conoce — y ahí decides si merece la pena subirlo.
3. Analizar una URL o un dominio
Pega la URL en la web, o por API:
curl --request POST \
--url https://www.virustotal.com/api/v3/urls \
--header 'x-apikey: <TU_API_KEY>' \
--data 'url=http://dominio-sospechoso.com'
Devuelve si algún motor la marca como phishing, malware, o C2 conocido, y su reputación histórica (cuánto lleva registrada, si cambió de IP recientemente, etc.).
Para qué lo uso yo
- Bug bounty / phishing triage: antes de tocar una URL sospechosa reportada en un programa, la paso por VT para ver si ya está marcada como maliciosa por otros — evita abrir algo peligroso a ciegas.
- Binarios en máquinas CTF: cuando encuentro un binario raro durante un CTF (un backup, un ejecutable custom en
C:\xampp, etc.), miro primero su hash — si coincide con malware conocido, ya sé qué familia es sin tener que hacer ingeniería inversa desde cero. - Verificar herramientas descargadas: antes de ejecutar un binario de un repo poco conocido de GitHub (exploits PoC, releases de terceros), un chequeo rápido en VT no sustituye leerse el código, pero pilla lo obvio.
- Reputación de dominios: al reconocer infraestructura durante un engagement, consultar cuánto lleva vivo un dominio y su historial ayuda a distinguir infraestructura legítima de infraestructura de campaña reciente.
VirusTotal es un punto de partida rápido, no un veredicto definitivo: falsos positivos y falsos negativos existen en ambas direcciones. Úsalo para priorizar dónde mirar más de cerca, no como sustituto del análisis manual.