Skip to content

Probes overview

A probe is a saved protocol interaction belonging to a project. It stores the target host, the sequence of commands or the request body, and optional assertions. Probes can be sent standalone or assembled into chains.

ProbeProtocolWhat it does
HTTPHTTP/HTTPSSend HTTP requests and inspect responses
SMTPSMTP/SMTPS/STARTTLSSend raw SMTP command sequences
IMAPIMAP/IMAPSInteract with a mailbox
LDAPLDAP/LDAPSPerform directory operations
DNSDNS (UDP/TCP)Resolve names, query record types, assert RCODEs
SpamAssassinspamdSubmit messages for spam scoring
SMBSMB2/SMB1Share enumeration, file ops, NTLM auth, pass-the-hash
KerberosKerberos V5Credential validation, AS-REP Roasting, Kerberoasting
MySQLMySQL / MariaDBRun SQL, extract a value, chain it, assert
MongoDBMongoDBFind/insert/update/aggregate/command, extract a field, chain it, assert
PostgreSQLPostgreSQLRun SQL, extract a value, chain it, assert
RedisRedis (RESP)Send a command sequence, read a key or INFO, extract a reply, chain it, assert
SQL ServerMicrosoft SQL ServerRun a T-SQL batch or a procedure, read every result set, the messages and the OUT parameters
FTPFTP, explicit TLSList a directory, download or upload a file, extract the listing, chain it, assert
FreestyleAny TCP/UDPSend raw bytes, choose how much to read back, assert on the outcome

Every time you send a probe, VirtuProbe records the result as a history entry. Each entry stores:

  • The probe configuration as it was sent (with resolved {{variable}} values)
  • The response
  • A timestamp

History is scoped to the individual probe. Use the History panel inside the probe editor to browse past results.

Probe history panel with several entries

A probe keeps its 50 most recent sends, for every protocol. What it stores of each response is bounded too: a long text field such as a body, a fetched mail message or a file read over SMB is kept to its first 256 KB, and a stored list such as a result set or a directory listing is kept to its first 1000 entries. Where a value was shortened, the entry records the size it had, so a stored response never reads as a complete short one.

This only affects what is kept. What a probe returns to you on the send itself is untouched. History is there so you can glance at what a probe did last time, and a chain or fuzz run is the record you keep as evidence, with limits of its own that are considerably larger.

Most probe types support assertions, which are expected values checked against the response. When an assertion fails, the history entry is marked as failed.

See the individual probe pages for the assertions available per protocol.

All probe types support {{variable}} placeholders in host, commands, and body fields. Variables are resolved from the active environment at send time. The stored history entry always contains the resolved values, not the template.