Reconnaissance (TA0043) Techniques
Reconnaissance is the tactic used by adversaries to gather information about a target network, system, or organisation before launching an attack.
1. T1595 - Active Scanning
Objective: Detect network scanning activities indicative of reconnaissance.
- Detect IP Block Scanning 
DeviceNetworkEvents | where RemoteIP != "127.0.0.1" | summarize count() by RemoteIP, LocalIP, LocalPort | where count() > 50Purpose: Identify scanning of multiple IP blocks from a single IP address.
- Monitor for Multiple Port Scans 
DeviceNetworkEvents | summarize port_count=count() by RemoteIP, LocalPort | where port_count > 20Purpose: Detect scanning of multiple ports by a single IP address.
- Detect SYN Scans 
DeviceNetworkEvents | where ActionType == "ConnectionInitiated" and Protocol == "TCP" and TcpFlags == "SYN" | summarize count() by RemoteIP, LocalIP | where count() > 100Purpose: Identify SYN scanning activity.
- Identify ICMP Ping Sweeps 
DeviceNetworkEvents | where Protocol == "ICMP" and ICMPType == 8 | summarize count() by RemoteIP, LocalIP | where count() > 50Purpose: Detect ICMP echo requests (pings) across multiple IP addresses.
- Detect Scanning on Common Service Ports 
DeviceNetworkEvents | where LocalPort in (22, 23, 80, 443, 3389) | summarize count() by RemoteIP, LocalPort | where count() > 10Purpose: Identify scans targeting common service ports.
- Monitor for Unusual Network Traffic Patterns 
DeviceNetworkEvents | summarize count() by RemoteIP, LocalIP | where count() > 200Purpose: Detect unusual traffic patterns that may indicate active scanning.
- Identify Excessive DNS Queries 
DeviceNetworkEvents | where RemotePort == 53 | summarize count() by RemoteIP, LocalIP | where count() > 100Purpose: Monitor for excessive DNS queries that may indicate domain reconnaissance.
- Detect Network Scanning Tools 
DeviceProcessEvents | where ProcessCommandLine has_any ("nmap", "masscan", "zmap") | project Timestamp, DeviceName, ProcessCommandLinePurpose: Identify known network scanning tools in use.
- Monitor for Unusual HTTP Requests 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where HttpMethod == "GET" and URL has_any ("/admin", "/login", "/.git") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Detect reconnaissance through unusual HTTP GET requests.
- Detect Suspicious Network Connection Attempts 
DeviceNetworkEvents | where ActionType == "ConnectionFailed" | summarize count() by RemoteIP, LocalIP | where count() > 50Purpose: Identify repeated connection failures that may indicate scanning.
2. T1590 - Gather Victim Network Information
Objective: Detect activities aimed at collecting information about the target network, such as IP ranges, domain names, and network topology.
- Monitor for ARP Scans 
DeviceNetworkEvents | where Protocol == "ARP" and ActionType == "Request" | summarize count() by RemoteIP, LocalIP | where count() > 50Purpose: Detect ARP scanning activity used to map network topology.
- Identify DNS Zone Transfer Attempts 
DeviceNetworkEvents | where RemotePort == 53 and ProcessCommandLine has "axfr" | project Timestamp, DeviceName, RemoteIP, ProcessCommandLinePurpose: Monitor for DNS zone transfer requests that may indicate network reconnaissance.
- Detect SMB Enumeration 
DeviceNetworkEvents | where RemotePort == 445 and ActionType == "Query" | summarize count() by RemoteIP, LocalIP | where count() > 10Purpose: Identify attempts to enumerate SMB shares on the network.
- Monitor for LDAP Enumeration 
DeviceNetworkEvents | where RemotePort == 389 and ActionType == "Query" | summarize count() by RemoteIP, LocalIP | where count() > 10Purpose: Detect LDAP queries that may indicate attempts to gather network information.
- Identify Use of Network Mapping Tools 
DeviceProcessEvents | where ProcessCommandLine has_any ("net view", "netstat", "route print") | project Timestamp, DeviceName, ProcessCommandLinePurpose: Monitor for the use of network mapping tools.
- Detect ICMP Traceroute Attempts 
DeviceNetworkEvents | where Protocol == "ICMP" and ICMPType == 8 and TTL < 5 | summarize count() by RemoteIP, LocalIPPurpose: Identify traceroute attempts using ICMP.
- Monitor for DNS Query Flooding 
DeviceNetworkEvents | where RemotePort == 53 and ActionType == "Query" | summarize count() by RemoteIP | where count() > 200Purpose: Detect excessive DNS queries aimed at gathering network information.
- Detect TCP/IP Fingerprinting Attempts 
DeviceNetworkEvents | where Protocol == "TCP" and ActionType == "ConnectionInitiated" | where TcpFlags == "SYN" and TTL > 100 | summarize count() by RemoteIP, LocalIPPurpose: Identify attempts to fingerprint the network using TCP/IP.
- Identify HTTP Enumeration Activity 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("/admin", "/login", "/config") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Monitor for HTTP requests that may indicate enumeration of network resources.
- Monitor for SNMP Queries 
DeviceNetworkEvents | where RemotePort == 161 and ActionType == "Query" | summarize count() by RemoteIP, LocalIPPurpose: Detect SNMP queries that may be used to gather network information.
3. T1592 - Gather Victim Host Information
Objective: Detect attempts to collect information about victim hosts, including operating system details, hardware configuration, and installed software.
- Detect Host Fingerprinting Attempts 
DeviceProcessEvents | where ProcessCommandLine has_any ("systeminfo", "hostname", "ipconfig", "wmic") | project Timestamp, DeviceName, ProcessCommandLinePurpose: Identify host information gathering commands.
- Monitor for Enumeration of Installed Software 
DeviceProcessEvents | where ProcessCommandLine has "wmic product get" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Detect enumeration of installed software on victim hosts.
- Detect Querying of System Configuration 
DeviceProcessEvents | where ProcessCommandLine has "msinfo32" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Identify attempts to query system configuration.
- Identify Registry Enumeration 
DeviceRegistryEvents | where ActionType == "RegistryQuery" | project Timestamp, DeviceName, RegistryKey, RegistryValueNamePurpose: Monitor for enumeration of the Windows registry.
- Monitor for OS Version Enumeration 
DeviceProcessEvents | where ProcessCommandLine has "ver" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Detect attempts to gather OS version information.
- Detect Running Process Enumeration 
DeviceProcessEvents | where ProcessCommandLine has "tasklist" or ProcessCommandLine has "pslist" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Identify enumeration of running processes on victim hosts.
- Monitor for PowerShell Reconnaissance Commands 
DeviceProcessEvents | where ProcessCommandLine has "Get-WmiObject" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Detect the use of PowerShell commands to gather host information.
- Identify Enumeration of Active Network Connections 
DeviceProcessEvents | where ProcessCommandLine has "netstat" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Monitor for enumeration of active network connections.
- Detect Attempts to Query BIOS Information 
DeviceProcessEvents | where ProcessCommandLine has "wmic bios" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Identify attempts to gather BIOS information.
- Monitor for Enumeration of User Accounts 
DeviceProcessEvents | where ProcessCommandLine has "net user" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Detect enumeration of user accounts on the host.
4. T1591 - Gather Victim Identity Information
Objective: Detect activities aimed at collecting information about user identities, such as account credentials, email addresses, and group memberships.
- Detect Enumeration of Active Directory Users 
DeviceProcessEvents | where ProcessCommandLine has "dsquery user" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Identify enumeration of Active Directory users.
- Monitor for Group Membership Queries 
DeviceProcessEvents | where ProcessCommandLine has "net group" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Detect attempts to enumerate group memberships.
- Identify LDAP Queries for User Information 
DeviceNetworkEvents | where RemotePort == 389 and ProcessCommandLine has "(&(objectCategory=person)(objectClass=user))" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Monitor for LDAP queries aimed at gathering user information.
- Monitor for Attempts to Access Credential Stores 
DeviceProcessEvents | where ProcessCommandLine has "rundll32.exe keymgr.dll,KRShowKeyMgr" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Detect attempts to access stored credentials.
- Detect Enumeration of Domain Admin Accounts 
DeviceProcessEvents | where ProcessCommandLine has "dsquery group -name \"Domain Admins\"" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Identify attempts to enumerate domain admin accounts.
- Monitor for Access to Password Files 
DeviceFileEvents | where FileName has_any ("password", "credentials") | project Timestamp, DeviceName, FileName, FolderPathPurpose: Detect access to files that may contain passwords.
- Detect Enumeration of Service Accounts 
DeviceProcessEvents | where ProcessCommandLine has "dsquery user -name svc*" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Identify enumeration of service accounts.
- Monitor for Attempts to Query Email Addresses 
DeviceProcessEvents | where ProcessCommandLine has "dsquery user -email" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Detect attempts to gather email addresses from Active Directory.
- Identify Enumeration of Privileged Accounts 
DeviceProcessEvents | where ProcessCommandLine has_any ("net localgroup administrators", "net localgroup Remote Desktop Users") | project Timestamp, DeviceName, ProcessCommandLinePurpose: Monitor for enumeration of privileged accounts.
- Detect Attempts to Query Group Policy Information 
DeviceProcessEvents | where ProcessCommandLine has "gpresult /R" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Identify attempts to query group policy information.
5. T1596 - Search Open Websites/Domains
Objective: Detect attempts to gather information about the target organization from public websites, domains, and other online resources.
- Monitor for Access to Public Web Resources 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("linkedin.com", "github.com", "pastebin.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Identify access to public websites that may be used for reconnaissance.
- Detect Searches for Company Information 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("company.com", "aboutus", "contactus") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Monitor for searches related to the target company.
- Identify Access to Domain Registration Information 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has "whois.domaintools.com" | project Timestamp, DeviceName, URL, RemoteIPPurpose: Detect attempts to gather domain registration information.
- Monitor for Public Code Repository Access 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("github.com", "gitlab.com", "bitbucket.org") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Identify access to public code repositories that may contain company information.
- Detect Access to Online Forums and Paste Sites 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("reddit.com", "pastebin.com", "stackexchange.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Monitor access to online forums and paste sites that may be used to gather information.
- Identify Use of Search Engines for Reconnaissance 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("google.com", "bing.com", "duckduckgo.com") and QueryString has_any ("site:", "intitle:", "inurl:") | project Timestamp, DeviceName, URL, QueryStringPurpose: Detect search engine queries that may indicate reconnaissance.
- Monitor for Access to Social Media Profiles 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("linkedin.com", "twitter.com", "facebook.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Identify access to social media profiles that may be used for gathering information about employees.
- Detect Access to Online Employee Directories 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has "people.company.com" or URL has "employees.company.com" | project Timestamp, DeviceName, URL, RemoteIPPurpose: Monitor for access to online employee directories.
- Identify Access to Government Websites 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any (".gov", ".mil") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Detect access to government websites that may indicate reconnaissance on publicly available information.
- Monitor for Access to Industry-Specific Websites 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("financial.com", "healthcare.com", "energy.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Identify access to industry-specific websites that may be used for reconnaissance.
6. T1593 - Search Open Technical Databases
Objective: Detect attempts to gather information about the target organization from public technical databases, such as vulnerability databases, code repositories, or security forums.
- Monitor for Access to Vulnerability Databases 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("nvd.nist.gov", "cvedetails.com", "exploit-db.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Identify access to vulnerability databases.
- Detect Searches for Specific CVEs 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where QueryString has "CVE-" and URL has_any ("nvd.nist.gov", "cvedetails.com") | project Timestamp, DeviceName, URL, QueryStringPurpose: Monitor for searches related to specific CVEs.
- Identify Access to Public Code Repositories 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("github.com", "gitlab.com", "bitbucket.org") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Detect access to public code repositories that may contain exploitable code.
- Monitor for Access to Security Forums 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("forum.exploit-db.com", "community.rapid7.com", "security.stackexchange.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Identify access to security forums that may be used for reconnaissance.
- Detect Access to Online Penetration Testing Resources 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("offensive-security.com", "metasploit.com", "tools.kali.org") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Monitor for access to online resources used for penetration testing.
- Identify Use of Search Engines for Technical Information 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("google.com", "bing.com", "duckduckgo.com") and QueryString has_any ("vulnerability", "exploit", "POC") | project Timestamp, DeviceName, URL, QueryStringPurpose: Detect search engine queries related to technical information.
- Monitor for Access to Security Research Blogs 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("research.securiteam.com", "blogs.akamai.com", "blog.malwarebytes.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Identify access to security research blogs.
- Detect Access to Public Malware Repositories 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("malshare.com", "virusshare.com", "kernelmode.info") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Monitor for access to public malware repositories.
- Identify Access to Bug Bounty Platforms 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("hackerone.com", "bugcrowd.com", "intigriti.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Detect access to bug bounty platforms.
- Monitor for Access to Open Vulnerability Scanners 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("nessus.org", "openvas.org", "nmap.org") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Identify access to open-source vulnerability scanners.
7. T1594 - Search Open Source Code Repositories
Objective: Detect attempts to gather information about the target organization from public source code repositories, such as GitHub, GitLab, or Bitbucket.
- Monitor for Access to Public Code Repositories 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("github.com", "gitlab.com", "bitbucket.org") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Identify access to public code repositories.
- Detect Searches for Company-Related Code 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where QueryString has_any ("companyname", "internalrepo", "secrets") | project Timestamp, DeviceName, URL, QueryStringPurpose: Monitor for searches related to the target company.
- Identify Access to Forked Repositories 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has "forks" | project Timestamp, DeviceName, URL, RemoteIPPurpose: Detect access to forked repositories that may contain sensitive information.
- Monitor for Cloning of Public Repositories 
DeviceProcessEvents | where ProcessCommandLine has "git clone" | project Timestamp, DeviceName, ProcessCommandLinePurpose: Identify attempts to clone public repositories.
- Detect Access to Private Code Repositories 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has "private" and URL has_any ("github.com", "gitlab.com", "bitbucket.org") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Monitor for access to private code repositories.
- Identify Use of Search Engines to Locate Code Repositories 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where QueryString has "repo" and URL has_any ("google.com", "bing.com", "duckduckgo.com") | project Timestamp, DeviceName, URL, QueryStringPurpose: Detect search engine queries aimed at locating code repositories.
- Monitor for Access to Public Code Snippets 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has "gist.github.com" or URL has "pastebin.com" | project Timestamp, DeviceName, URL, RemoteIPPurpose: Identify access to public code snippets that may contain sensitive information.
- Detect Access to Publicly Shared Secrets 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("github.com", "gitlab.com") and QueryString has_any ("secret", "key", "password") | project Timestamp, DeviceName, URL, QueryString`Purpose: Monitor for searches related to secrets in public repositories.
- Identify Unauthorized Downloads of Source Code 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has "download.zip" or URL has "download.tar.gz" | project Timestamp, DeviceName, URL, RemoteIPPurpose: Detect unauthorized downloads of source code from public repositories.
- Monitor for Access to Deprecated Repositories 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has "archive" or URL has "deprecated" | project Timestamp, DeviceName, URL, RemoteIPPurpose: Identify access to deprecated repositories that may still contain valuable information.
8. T1597 - Search Closed Sources
Objective: Detect attempts to gather information from closed sources, such as internal documentation, proprietary software, or private forums.
- Monitor for Access to Internal Documentation Sites 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("wiki.company.com", "confluence.company.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Identify access to internal documentation that may contain sensitive information.
- Detect Attempts to Access Proprietary Software 
DeviceFileEvents | where FileName endswith ".exe" or FileName endswith ".dll" | where FilePath has_any ("C:\\Program Files\\CompanySoftware", "C:\\Users\\Public\\CompanySoftware") | project Timestamp, DeviceName, FileName, FilePathPurpose: Monitor for attempts to access proprietary software.
- Identify Access to Private Forums or Discussion Boards 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("forum.company.com", "discussions.company.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Detect access to private forums or discussion boards.
- Monitor for Searches in Internal Knowledge Bases 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has "knowledgebase.company.com" | project Timestamp, DeviceName, URL, QueryStringPurpose: Identify searches in internal knowledge bases that may indicate reconnaissance.
- Detect Unauthorized Access to Internal Git Repositories 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has "git.company.com" | project Timestamp, DeviceName, URL, RemoteIPPurpose: Monitor for unauthorized access to internal Git repositories.
- Identify Access to Internal Training Materials 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("training.company.com", "learning.company.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Detect access to internal training materials that may contain sensitive information.
- Monitor for Attempts to Access Internal APIs 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has "api.company.com" | project Timestamp, DeviceName, URL, RemoteIPPurpose: Identify attempts to access internal APIs.
- Detect Access to Internal Bug Tracking Systems 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("jira.company.com", "bugzilla.company.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Monitor for access to internal bug tracking systems.
- Identify Unauthorized Access to HR Systems 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("hr.company.com", "payroll.company.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Detect unauthorized access to HR systems.
- Monitor for Access to Internal Email Systems 
    DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("mail.company.com", "exchange.company.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Identify access to internal email systems.
9. T1598 - Phishing for Information
Objective: Detect phishing attempts aimed at gathering information from users, such as credentials, financial information, or sensitive documents.
- Monitor for Emails Containing Suspicious Links 
DeviceEmailEvents | where EmailBody contains "http://" or EmailBody contains "https://" | project Timestamp, EmailSenderAddress, EmailSubject, EmailBodyPurpose: Identify emails with links that could lead to phishing websites.
- Detect Emails Containing Suspicious Attachments 
DeviceEmailEvents | where EmailAttachmentFileName endswith ".exe" or EmailAttachmentFileName endswith ".js" | project Timestamp, EmailSenderAddress, EmailSubject, EmailAttachmentFileNamePurpose: Monitor for emails with suspicious attachments.
- Identify Emails with Urgent Requests 
DeviceEmailEvents | where EmailSubject contains "Urgent" or EmailBody contains "immediately" | project Timestamp, EmailSenderAddress, EmailSubject, EmailBodyPurpose: Detect phishing emails using urgency to deceive users.
- Monitor for Emails Spoofing Internal Addresses 
DeviceEmailEvents | where SenderDomain == "internal.company.com" and SenderAddress not in ("trusted_email_list") | project Timestamp, EmailSenderAddress, EmailSubjectPurpose: Identify emails spoofing internal addresses.
- Detect Phishing Emails Targeting Executives 
DeviceEmailEvents | where EmailSubject contains "CEO" or EmailSubject contains "CFO" | project Timestamp, EmailSenderAddress, EmailSubjectPurpose: Monitor for phishing emails targeting executives.
- Identify Emails Requesting Sensitive Information 
DeviceEmailEvents | where EmailBody contains "password" or EmailBody contains "account number" | project Timestamp, EmailSenderAddress, EmailSubject, EmailBodyPurpose: Detect emails requesting sensitive information.
- Monitor for Emails with Suspicious Reply-To Addresses 
DeviceEmailEvents | where EmailHeader contains "Reply-To" and EmailHeader contains "external_domain" | project Timestamp, EmailSenderAddress, EmailSubject, EmailHeaderPurpose: Identify emails with suspicious reply-to addresses.
- Detect Phishing Emails with Suspicious Macros 
DeviceEmailEvents | where EmailAttachmentFileName endswith ".docm" or EmailAttachmentFileName endswith ".xlsm" | project Timestamp, EmailSenderAddress, EmailSubject, EmailAttachmentFileNamePurpose: Monitor for phishing emails with attachments containing macros.
- Identify Emails Containing Suspicious Content 
DeviceEmailEvents | where EmailBody contains "<script>" or EmailBody contains "base64" | project Timestamp, EmailSenderAddress, EmailSubject, EmailBodyPurpose: Detect phishing emails with suspicious content.
- Monitor for Suspicious Email Activity Following a Phishing Attempt 
IdentityLogonEvents | where LogonResult == "Failed" | summarize count() by TargetUserName, DeviceName, LogonTime | where count() > 5Purpose: Identify suspicious login activity following a phishing attempt.
10. T1599 - Social Engineering
Objective: Detect attempts to manipulate or deceive users to gain information or access, such as through phone calls, messages, or in-person interactions.
- Monitor for Unusual Outbound Communication 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("slack.com", "discord.com", "telegram.org") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Identify unusual outbound communication that may indicate social engineering.
- Detect Unusual Volume of Emails Sent by a Single User 
DeviceEmailEvents | summarize count() by SenderAddress | where count() > 100Purpose: Monitor for users sending an unusually high volume of emails, possibly as part of a phishing campaign.
- Identify Access to Social Media Sites 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("linkedin.com", "facebook.com", "twitter.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Monitor for access to social media sites that may be used for social engineering.
- Monitor for Unauthorized External Phone Calls 
DeviceNetworkEvents | where RemotePort == 5060 or RemotePort == 5061 | project Timestamp, DeviceName, RemoteIP, LocalPortPurpose: Detect unauthorized phone calls made using VoIP.
- Detect Unusual Text Messaging Activity 
DeviceNetworkEvents | where RemotePort == 443 and URL has_any ("twilio.com", "messagebird.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Identify unusual text messaging activity that may indicate social engineering.
- Monitor for Users Accessing Personal Email Accounts 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("gmail.com", "yahoo.com", "outlook.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Detect users accessing personal email accounts that may be targeted for social engineering.
- Identify Attempts to Access HR Systems 
DeviceNetworkEvents | where RemotePort == 80 or RemotePort == 443 | where URL has_any ("hr.company.com", "payroll.company.com") | project Timestamp, DeviceName, URL, RemoteIPPurpose: Monitor for unauthorized attempts to access HR systems.
- Detect Unauthorized Remote Access Attempts 
IdentityLogonEvents | where LogonType == "RemoteInteractive" | summarize count() by TargetUserName, DeviceName, LogonTimePurpose: Identify unauthorized remote access attempts that may indicate social engineering.
- Monitor for Unusual Requests for Assistance 
DeviceEmailEvents | where EmailSubject contains "help" or EmailBody contains "assistance" | project Timestamp, EmailSenderAddress, EmailSubject, EmailBodyPurpose: Detect unusual requests for assistance that may be social engineering attempts.
- Identify Attempts to Bypass Security Controls 
DeviceProcessEvents | where ProcessCommandLine has_any ("disable", "bypass", "stop") | project Timestamp, DeviceName, ProcessCommandLinePurpose: Monitor for attempts to disable or bypass security controls, which may be related to social engineering.
Last updated