Detection rules › Elastic

Suspicious DNS Query from Mounted Virtual Disk

Time window
5m
Sequence by
process.entity_id
Source
github.com/elastic/protections-artifacts

Identifies DNS queries to commonly abused legit web services by a process running from a mounted virtual disk (.iso, .vhd).

MITRE ATT&CK coverage

Rule body

[rule]
description = """
Identifies DNS queries to commonly abused legit web services by a process running from a mounted virtual disk (.iso,
.vhd).
"""
id = "3bc98de7-3349-43ac-869c-58357ae2aac0"
license = "Elastic License v2"
name = "Suspicious DNS Query from Mounted Virtual Disk"
os_list = ["windows"]
reference = ["https://www.elastic.co/security-labs/globally-distributed-stealers"]
version = "1.0.36"

query = '''
sequence by process.entity_id with maxspan=5m
 [process where event.action == "start" and
  (process.Ext.device.product_id : ("Virtual DVD-ROM", "Virtual Disk") and not process.executable : "C:\\*") and
  not process.hash.sha256 : "cf4179ffdb3eda997a26340edaa70a85f919093d0753239eb4a38d7dc3a1107d"]
 [dns where
  dns.question.name :
       (
        /* common ddns */
        "*.no-ip.com",
        "*.no-ip.org",
        "*.no-ip.biz",
        "*.no-ip.info",
        "*.noip.com",
        "*.afraid.org",
        "*.changeip.com",
        "*.ddns.net",
        "*.dyndns.org",
        "*.hopto.org",
        "*.zapto.org",
        "*.servehttp.com",
        "*.sytes.net",
        "*.myftp.biz",
        "*.myftp.org",
        "*.ddnsfree.com",
        "*.duckdns.org",
        "*.000webhostapp.com",
        "*.myddns.me",
        "*.dlinkddns.com",
        "*.chickenkiller.com",
        "*.thddns.net",
        "*.linkpc.net",
        "*.gotdns.ch",
        "*.ydns.eu",
        "*.dynv6.net",
        "*.dns.army",
        "*.dns.navy",
        "*.v6.army",
        "*.v6.navy",
        "*.v6.rocks",


        /* common websvc */
        "raw.githubusercontent.*",
        "github.com",
        "pastebin.*",
        "paste4btc.com",
        "paste.ee",
        "ghostbin.com",
        "drive.google.com",
        "?.docs.live.net",
        "api.dropboxapi.*",
        "content.dropboxapi.*",
        "dl.dropboxusercontent.*",
        "api.onedrive.com",
        "*.onedrive.org",
        "onedrive.live.com",
        "filebin.net",
        "*.ngrok.io",
        "ngrok.com",
        "*.ngrok-free.app",
        "*.portmap.*",
        "*serveo.net",
        "*localtunnel.me",
        "*pagekite.me",
        "*localxpose.io",
        "*notabug.org",
        "rawcdn.githack.*",
        "paste.nrecom.net",
        "zerobin.net",
        "controlc.com",
        "requestbin.net",
        "api.slack.com",
        "slack-redir.net",
        "slack-files.com",
        "cdn.discordapp.com",
        "discordapp.com",
        "discord.com",
        "apis.azureedge.net",
        "cdn.sql.gg",
        "?.top4top.io",
        "top4top.io",
        "www.uplooder.net",
        "*.cdnmegafiles.com",
        "transfer.sh",
        "gofile.io",
        "store?.gofile.io",
        "updates.peer2profit.com",
        "api.telegram.org",
        "t.me",
        "meacz.gq",
        "rwrd.org",
        "*.publicvm.com",
        "*.blogspot.com",
        "api.mylnikov.org",
        "file.io",
        "stackoverflow.com",
        "*files.1drv.com",
        "api.anonfile.com",
        "*hosting-profi.de",
        "ipbase.com",
        "ipfs.io",
        "*up.freeo*.space",
        "mail.*",
        "smtp.*",
        "api.mylnikov.org",
        "script.google.com",
        "script.googleusercontent.com",
        "api.notion.com",
        "graph.microsoft.com",
        "*.sharepoint.com",
        "mbasic.facebook.com",
        "login.live.com",
        "api.gofile.io",
        "api.anonfiles.com",
        "api.notion.com",
        "api.trello.com",
        "gist.githubusercontent.com",
        "files.pythonhosted.org",
        "g.live.com",
        "*.zulipchat.com",

        /* public IP discovery */
        "ip-api.com",
        "checkip.dyndns.org",
        "api.ipify.org",
        "whatismyip.akamai.com",
        "bot.whatismyipaddress.com",
        "ifcfg.me",
        "ident.me",
        "ipof.in",
        "ip.tyk.nu",
        "icanhazip.com",
        "curlmyip.com",
        "wgetip.com",
        "eth0.me",
        "ipecho.net",
        "ip.appspot.com",
        "api.myip.com",
        "geoiptool.com",
        "api.2ip.ua",
        "api.ip.sb",
        "ipinfo.io",
        "checkip.amazonaws.com",
        "wtfismyip.com",
        "iplogger.*",
        "freegeoip.net",
        "freegeoip.app",
        "ipinfo.io",
        "geoplugin.net",
        "myip.dnsomatic.com",
        "www.geoplugin.net",
        "api64.ipify.org",
        "ip4.seeip.org",
        "*.geojs.io",
        "*portmap.io",
        "*mediafire.com",
        "filetransfer.io",
        "api.gofile.io",
        "api.anonfiles.com",
        "api.trello.com",
        "api.2ip.ua",
        "api.db-ip.com",
        "geolocation-db.com",
        "httpbin.org",
        "www.myexternalip.com",
        "ipwho.is",

        /* other */
        "*.lencr.org",
        "*.cloudfront.net",
        "*azureedge.net",
        "*azure.com",
        "graph.microsoft.com",
        "cld.pt",
        "yandex.ru",
        "*.yandex.ru",
        "*.aternos.me",
        "geo.netsupportsoftware.com",
        "webhook.site")]
'''

min_endpoint_version = "8.4.0"
optional_actions = []
[[actions]]
action = "kill_process"
field = "process.entity_id"
state = 0

[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1204"
name = "User Execution"
reference = "https://attack.mitre.org/techniques/T1204/"
[[threat.technique.subtechnique]]
id = "T1204.002"
name = "Malicious File"
reference = "https://attack.mitre.org/techniques/T1204/002/"



[threat.tactic]
id = "TA0002"
name = "Execution"
reference = "https://attack.mitre.org/tactics/TA0002/"
[[threat]]
framework = "MITRE ATT&CK"
[[threat.technique]]
id = "T1071"
name = "Application Layer Protocol"
reference = "https://attack.mitre.org/techniques/T1071/"
[[threat.technique.subtechnique]]
id = "T1071.004"
name = "DNS"
reference = "https://attack.mitre.org/techniques/T1071/004/"



[threat.tactic]
id = "TA0011"
name = "Command and Control"
reference = "https://attack.mitre.org/tactics/TA0011/"

[internal]
min_endpoint_version = "8.4.0"

Stages and Predicates

Ordered sequence: each step below must occur in order within 5m, correlated by process.entity_id.

Stage 1: process

[process where event.action == "start" and
  (process.Ext.device.product_id : ("Virtual DVD-ROM", "Virtual Disk") and not process.executable : "C:\\*") and
  not process.hash.sha256 : "cf4179ffdb3eda997a26340edaa70a85f919093d0753239eb4a38d7dc3a1107d"]

Stage 2: dns

[dns where
  dns.question.name :
       (
        "*.no-ip.com",
        "*.no-ip.org",
        "*.no-ip.biz",
        "*.no-ip.info",
        "*.noip.com",
        "*.afraid.org",
        "*.changeip.com",
        "*.ddns.net",
        "*.dyndns.org",
        "*.hopto.org",
        "*.zapto.org",
        "*.servehttp.com",
        "*.sytes.net",
        "*.myftp.biz",
        "*.myftp.org",
        "*.ddnsfree.com",
        "*.duckdns.org",
        "*.000webhostapp.com",
        "*.myddns.me",
        "*.dlinkddns.com",
        "*.chickenkiller.com",
        "*.thddns.net",
        "*.linkpc.net",
        "*.gotdns.ch",
        "*.ydns.eu",
        "*.dynv6.net",
        "*.dns.army",
        "*.dns.navy",
        "*.v6.army",
        "*.v6.navy",
        "*.v6.rocks",
        "raw.githubusercontent.*",
        "github.com",
        "pastebin.*",
        "paste4btc.com",
        "paste.ee",
        "ghostbin.com",
        "drive.google.com",
        "?.docs.live.net",
        "api.dropboxapi.*",
        "content.dropboxapi.*",
        "dl.dropboxusercontent.*",
        "api.onedrive.com",
        "*.onedrive.org",
        "onedrive.live.com",
        "filebin.net",
        "*.ngrok.io",
        "ngrok.com",
        "*.ngrok-free.app",
        "*.portmap.*",
        "*serveo.net",
        "*localtunnel.me",
        "*pagekite.me",
        "*localxpose.io",
        "*notabug.org",
        "rawcdn.githack.*",
        "paste.nrecom.net",
        "zerobin.net",
        "controlc.com",
        "requestbin.net",
        "api.slack.com",
        "slack-redir.net",
        "slack-files.com",
        "cdn.discordapp.com",
        "discordapp.com",
        "discord.com",
        "apis.azureedge.net",
        "cdn.sql.gg",
        "?.top4top.io",
        "top4top.io",
        "www.uplooder.net",
        "*.cdnmegafiles.com",
        "transfer.sh",
        "gofile.io",
        "store?.gofile.io",
        "updates.peer2profit.com",
        "api.telegram.org",
        "t.me",
        "meacz.gq",
        "rwrd.org",
        "*.publicvm.com",
        "*.blogspot.com",
        "api.mylnikov.org",
        "file.io",
        "stackoverflow.com",
        "*files.1drv.com",
        "api.anonfile.com",
        "*hosting-profi.de",
        "ipbase.com",
        "ipfs.io",
        "*up.freeo*.space",
        "mail.*",
        "smtp.*",
        "api.mylnikov.org",
        "script.google.com",
        "script.googleusercontent.com",
        "api.notion.com",
        "graph.microsoft.com",
        "*.sharepoint.com",
        "mbasic.facebook.com",
        "login.live.com",
        "api.gofile.io",
        "api.anonfiles.com",
        "api.notion.com",
        "api.trello.com",
        "gist.githubusercontent.com",
        "files.pythonhosted.org",
        "g.live.com",
        "*.zulipchat.com",
        "ip-api.com",
        "checkip.dyndns.org",
        "api.ipify.org",
        "whatismyip.akamai.com",
        "bot.whatismyipaddress.com",
        "ifcfg.me",
        "ident.me",
        "ipof.in",
        "ip.tyk.nu",
        "icanhazip.com",
        "curlmyip.com",
        "wgetip.com",
        "eth0.me",
        "ipecho.net",
        "ip.appspot.com",
        "api.myip.com",
        "geoiptool.com",
        "api.2ip.ua",
        "api.ip.sb",
        "ipinfo.io",
        "checkip.amazonaws.com",
        "wtfismyip.com",
        "iplogger.*",
        "freegeoip.net",
        "freegeoip.app",
        "ipinfo.io",
        "geoplugin.net",
        "myip.dnsomatic.com",
        "www.geoplugin.net",
        "api64.ipify.org",
        "ip4.seeip.org",
        "*.geojs.io",
        "*portmap.io",
        "*mediafire.com",
        "filetransfer.io",
        "api.gofile.io",
        "api.anonfiles.com",
        "api.trello.com",
        "api.2ip.ua",
        "api.db-ip.com",
        "geolocation-db.com",
        "httpbin.org",
        "www.myexternalip.com",
        "ipwho.is",
        "*.lencr.org",
        "*.cloudfront.net",
        "*azureedge.net",
        "*azure.com",
        "graph.microsoft.com",
        "cld.pt",
        "yandex.ru",
        "*.yandex.ru",
        "*.aternos.me",
        "geo.netsupportsoftware.com",
        "webhook.site")]

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
process.executablestarts_withC:\excludes:process.executable field:"process.executable" value:"C:\"
process.hash.sha256eqcf4179ffdb3eda997a26340edaa70a85f919093d0753239eb4a38d7dc3a1107dexcludes:process.hash.sha256 field:"process.hash.sha256" value:"cf4179ffdb3eda997a26340edaa70a85f919093d0753239eb4a38d7dc3a1107d"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
dns.question.namewildcard
  • *.000webhostapp.com corpus 3 (elastic 3)
  • *.afraid.org corpus 3 (elastic 3)
  • *.aternos.me
  • *.blogspot.com
  • *.cdnmegafiles.com
  • *.changeip.com corpus 3 (elastic 3)
  • *.chickenkiller.com corpus 3 (elastic 3)
  • *.cloudfront.net
  • *.ddns.net corpus 3 (elastic 3)
  • *.ddnsfree.com corpus 3 (elastic 3)
  • *.dlinkddns.com corpus 3 (elastic 3)
  • *.dns.army corpus 3 (elastic 3)
  • *.dns.navy corpus 3 (elastic 3)
  • *.duckdns.org corpus 3 (elastic 3)
  • *.dyndns.org corpus 3 (elastic 3)
  • *.dynv6.net corpus 3 (elastic 3)
  • *.geojs.io
  • *.gotdns.ch corpus 3 (elastic 3)
  • *.hopto.org corpus 3 (elastic 3)
  • *.lencr.org
  • *.linkpc.net corpus 3 (elastic 3)
  • *.myddns.me corpus 3 (elastic 3)
  • *.myftp.biz corpus 3 (elastic 3)
  • *.myftp.org corpus 3 (elastic 3)
  • *.ngrok-free.app
  • *.ngrok.io
  • *.no-ip.biz corpus 3 (elastic 3)
  • *.no-ip.com corpus 3 (elastic 3)
  • *.no-ip.info corpus 3 (elastic 3)
  • *.no-ip.org corpus 3 (elastic 3)
  • *.noip.com corpus 3 (elastic 3)
  • *.onedrive.org
  • *.portmap.*
  • *.publicvm.com
  • *.servehttp.com corpus 3 (elastic 3)
  • *.sharepoint.com
  • *.sytes.net corpus 3 (elastic 3)
  • *.thddns.net corpus 3 (elastic 3)
  • *.v6.army corpus 3 (elastic 3)
  • *.v6.navy corpus 3 (elastic 3)
  • +116 more values (see full rule source)
field:"QueryName" kind:wildcard
event.actioneq
  • start corpus 391 (elastic 391)
field:"EventType" kind:eq value:"start"
process.Ext.device.product_idwildcard
  • Virtual DVD-ROM corpus 13 (elastic 13)
  • Virtual Disk corpus 13 (elastic 13)
field:"process.Ext.device.product_id" kind:wildcard