Adversaries may attempt to get a listing of other systems by IP address, hostname, or other logical identifier on a network that may be used for Lateral Movement from the current system. Functionality could exist within remote access tools to enable this, but utilities available on the operating system could also be used such as [Ping](https://attack.mitre.org/software/S0097) ornet view
using [Net](https://attack.mitre.org/software/S0039). Adversaries may also use local host files (ex:C:\Windows\System32\Drivers\etc\hosts
or/etc/hosts
) in order to discover the hostname to IP address mappings of remote systems.Specific to macOS, the
bonjour
protocol exists to discover additional Mac-based systems within the same broadcast domain.
-
Atomic Test #2 - Remote System Discovery - net group Domain Computers
-
Atomic Test #10 - Adfind - Enumerate Active Directory Computer Objects
-
Atomic Test #11 - Adfind - Enumerate Active Directory Domain Controller Objects
Identify remote systems with net.exe.
Upon successful execution, cmd.exe will execute net.exe view
and display results of local systems on the network that have file and print sharing enabled.
Supported Platforms: Windows
net view /domain
net view
Identify remote systems with net.exe querying the Active Directory Domain Computers group.
Upon successful execution, cmd.exe will execute cmd.exe against Active Directory to list the "Domain Computers" group. Output will be via stdout.
Supported Platforms: Windows
net group "Domain Computers" /domain
Identify domain controllers for specified domain.
Upon successful execution, cmd.exe will execute nltest.exe against a target domain to retrieve a list of domain controllers. Output will be via stdout.
Supported Platforms: Windows
Name | Description | Type | Default Value |
---|---|---|---|
target_domain | Domain to query for domain controllers | String | domain.local |
nltest.exe /dclist:#{target_domain}
Identify remote systems via ping sweep.
Upon successful execution, cmd.exe will perform a for loop against the 192.168.1.1/24 network. Output will be via stdout.
Supported Platforms: Windows
for /l %i in (1,1,254) do ping -n 1 -w 100 192.168.1.%i
Identify remote systems via arp.
Upon successful execution, cmd.exe will execute arp to list out the arp cache. Output will be via stdout.
Supported Platforms: Windows
arp -a
Identify remote systems via arp.
Upon successful execution, sh will execute arp to list out the arp cache. Output will be via stdout.
Supported Platforms: Linux, macOS
arp -a | grep -v '^?'
if [ -x "$(command -v arp)" ]; then exit 0; else exit 1; fi;
echo "Install arp on the machine."; exit 1;
Identify remote systems via ping sweep.
Upon successful execution, sh will perform a ping sweep on the 192.168.1.1/24 and echo via stdout if an IP is active.
Supported Platforms: Linux, macOS
Name | Description | Type | Default Value |
---|---|---|---|
start_host | Subnet used for ping sweep. | string | 1 |
stop_host | Subnet used for ping sweep. | string | 254 |
subnet | Subnet used for ping sweep. | string | 192.168.1 |
for ip in $(seq #{start_host} #{stop_host}); do ping -c 1 #{subnet}.$ip; [ $? -eq 0 ] && echo "#{subnet}.$ip UP" || : ; done
Powershell script that runs nslookup on cmd.exe against the local /24 network of the first network adaptor listed in ipconfig.
Upon successful execution, powershell will identify the ip range (via ipconfig) and perform a for loop and execute nslookup against that IP range. Output will be via stdout.
Supported Platforms: Windows
$localip = ((ipconfig | findstr [0-9].\.)[0]).Split()[-1]
$pieces = $localip.split(".")
$firstOctet = $pieces[0]
$secondOctet = $pieces[1]
$thirdOctet = $pieces[2]
foreach ($ip in 1..255 | % { "$firstOctet.$secondOctet.$thirdOctet.$_" } ) {cmd.exe /c nslookup $ip}
This tool enables enumeration and exporting of all DNS records in the zone for recon purposes of internal networks Python 3 and adidnsdump must be installed, use the get_prereq_command's to meet the prerequisites for this test. Successful execution of this test will list dns zones in the terminal.
Supported Platforms: Windows
Name | Description | Type | Default Value |
---|---|---|---|
user_name | username including domain. | string | domain\user |
acct_pass | Account password. | string | password |
host_name | hostname or ip address to connect to. | string | 192.168.1.1 |
adidnsdump -u #{user_name} -p #{acct_pass} --print-zones #{host_name}
if (python --version) {exit 0} else {exit 1}
echo "Python 3 must be installed manually"
if (pip3 -V) {exit 0} else {exit 1}
echo "PIP must be installed manually"
if (cmd /c adidnsdump -h) {exit 0} else {exit 1}
pip3 install adidnsdump
Adfind tool can be used for reconnaissance in an Active directory environment. This example has been documented by ransomware actors enumerating Active Directory Computer Objects reference- http://www.joeware.net/freetools/tools/adfind/, https://www.fireeye.com/blog/threat-research/2019/04/pick-six-intercepting-a-fin6-intrusion.html
Supported Platforms: Windows
Name | Description | Type | Default Value |
---|---|---|---|
adfind_path | Path to the AdFind executable | Path | PathToAtomicsFolder\T1087.002\src\AdFind.exe |
#{adfind_path} -f (objectcategory=computer)
if (Test-Path #{adfind_path}) {exit 0} else {exit 1}
Invoke-WebRequest -Uri "https://github.com/redcanaryco/atomic-red-team/raw/master/atomics/T1087.002/src/AdFind.exe" -OutFile #{adfind_path}
Adfind tool can be used for reconnaissance in an Active directory environment. This example has been documented by ransomware actors enumerating Active Directory Domain Controller Objects reference- http://www.joeware.net/freetools/tools/adfind/, https://www.fireeye.com/blog/threat-research/2019/04/pick-six-intercepting-a-fin6-intrusion.html
Supported Platforms: Windows
Name | Description | Type | Default Value |
---|---|---|---|
adfind_path | Path to the AdFind executable | Path | PathToAtomicsFolder\T1087.002\src\AdFind.exe |
#{adfind_path} -sc dclist
if (Test-Path #{adfind_path}) {exit 0} else {exit 1}
Invoke-WebRequest -Uri "https://github.com/redcanaryco/atomic-red-team/raw/master/atomics/T1087.002/src/AdFind.exe" -OutFile #{adfind_path}