Dark Mode
Tools
The Tool Catalogue contains a list of tools that can be used to perform the Penetration Tests. Each tool is designed to execute a specific set of Attack Patterns that can be used to launch a real attack on a target asset. Each tool is associated with a particular Penetration Test Phase. Moreover, each tool is also associated with an Applicability Pattern that precisely identifies the assets it can be applied to. The Applicability Pattern is represented by a Cypher query that needs to be executed on the system model. Finally, each tool is associated with a concrete command that enables it to perform the attack.
Tools Table
| Tool ID | Name | Capec ID | Cypher Query | Command | Description | Phase | Is Executable |
|---|---|---|---|---|---|---|---|
1 |
SQLMap | match (target {type:'Service.Web'})-[:uses]->(b {type:'Service.DB'}) return target.component_id as component_id, target.parameters as parameters | python sqlmap.py -u {url} -f --banner --dbs --users | Enumeration of databases and users of DBMS. |
System Access
Exfiltration
|
False | |
2 |
SQLMap | match (target {type:'Service.Web'})-[:uses]->(b {type:'Service.DB'}) return target.component_id as component_id, target.parameters as parameters | python sqlmap.py -u {url} -f --os-shell | This command is able to test if an RCE could be achieved. |
System Access
|
False | |
3 |
Dirbuster | match (target {type:'Service.Web'}) return target.component_id as component_id, target.parameters as parameters | java -jar DirBuster-1.0-RC1.jar -H -u {url} | Brute forcing directories and files names on web/application servers. |
Enumeration (Collection)
|
False | |
4 |
Nmap | MATCH (:Network)-[:connects|hosts*1..3]->(target) WHERE target.type IN ["SystemLayer.OS", "SystemLayer.Firmware"] RETURN target.component_id AS component_id, target.parameters AS parameters | nmap -v -p- -Pn -oX {output_file} -T4 --min-parallelism 100 {ip} | Discovery of open ports. |
Discovery
|
True | |
5 |
Nmap | match (target:Network) return target.component_id as component_id, target.parameters as parameters | nmap -sV -O -oX {output_file} -T4 --min-parallelism 100 {ip_range} | Discovery of active hosts. |
Discovery
|
True | |
6 |
Nmap | MATCH (:Network)-[:connects|hosts*1..3]->(target) WHERE target.type IN ["SystemLayer.OS", "SystemLayer.Firmware"] RETURN target.component_id AS component_id, target.parameters AS parameters | nmap -sV -p- -oX {output_file} -T4 --min-parallelism 100 {ip} | Discovery of services types. |
Discovery
|
True | |
7 |
JohnTheRipper | MATCH (target) WHERE target.type IN ['SystemLayer.OS'] RETURN target.component_id AS component_id, target.parameters AS parameters | john --wordlist={wordlist_file} --rules {output_file} | This command should be executed on the target machine. |
Credential Access
|
False | |
8 |
NoSQLMap | match (target)-[:uses]->(b {type:'Service.NoSQLDB'}) return target.component_id as component_id, target.parameters as parameters | python NoSQLMap | This is a guided tool, so the parameters have to be specified during its use. |
System Access
Exfiltration
|
False | |
9 |
Binwalk | match (target {type:'SystemLayer.Firmware'}) return target.component_id as component_id, target.parameters as parameters | binwalk {firmware_file} | This command scans the firmware file for known signatures, data structures and contents |
Discovery
|
False | |
10 |
Binwalk | match (target {type:'SystemLayer.Firmware'}) return target.component_id as component_id, target.parameters as parameters | binwalk -e {firmware_file} | Extracting the filesystem from the firmware file |
Exfiltration
|
False | |
11 |
Firmwalker | match (target {type:'SystemLayer.Firmware'}) return target.component_id as component_id, target.parameters as parameters | ./firmwalker.sh {path_to_ext-root} | Detecting the presence of intersting files, such as password files, server configuration files, certificates, SSH files, files containing authorized keys for system access via key pairs, files related to active services, and much more |
Discovery
|
False | |
12 |
Ettercap | MATCH (target2)<-[:hosts]-(HW1:HW)<-[:connects]-(target1:Network) WHERE (target2.type = "SystemLayer.OS" OR target2.type = "SystemLayer.Firmware") AND target1.type <> 'Network.PAN' WITH target2, apoc.convert.fromJsonMap(target1.parameters) AS target1_params, apoc.convert.fromJsonMap(HW1.parameters) AS target2_params WITH [ { component_id: target2.component_id, parameters: apoc.convert.toJson({ ip_1: target1_params.ip, ip_2: target2_params.ip }) } ] AS combined_results UNWIND combined_results AS results RETURN DISTINCT results.component_id AS component_id, results.parameters AS parameters | ettercap -T -q -i {interface_name} -M arp:remote -S /{ip_1}// /{ip_2}// | This command runs Ettercap in text mode to perform a remote ARP spoofing attack between a target IP and the router, using the specified network interface, to intercept traffic. |
Execution
Exfiltration
Denial of Services
|
False | |
13 |
Ettercap | MATCH (target1)<-[:hosts]-(HW1:HW)<-[:connects]-(net:Network)-[:connects]->(HW2:HW)-[:hosts]->(target2) WHERE (target1.type = "SystemLayer.OS" OR target1.type = "SystemLayer.Firmware") AND (target2.type = "SystemLayer.OS" OR target2.type = "SystemLayer.Firmware") WITH target1, target2, apoc.convert.fromJsonMap(HW1.parameters) AS target1_params, apoc.convert.fromJsonMap(HW2.parameters) AS target2_params WITH [ { component_id: target1.component_id, parameters: apoc.convert.toJson({ ip_1: target1_params.ip, ip_2: target2_params.ip }) }, { component_id: target2.component_id, parameters: apoc.convert.toJson({ ip_1: target2_params.ip, ip_2: target1_params.ip }) } ] AS combined_results UNWIND combined_results AS result RETURN DISTINCT result.component_id AS component_id, result.parameters AS parameters | ettercap -T -q -i {interface_name} -M arp:remote -S /{ip_1}// /{ip_2}// | This command runs Ettercap in text mode to perform a remote ARP spoofing attack between two target IPs, using the specified network interface, to intercept traffic. |
Execution
Exfiltration
Denial of Services
|
False | |
14 |
Wireshark | match (target:Network) return target.component_id as component_id, target.parameters as parameters | None | Wireshark is a network protocol analyzer used to capture, inspect, and analyze network traffic for troubleshooting and security |
Information Gathering
Discovery
Enumeration (Collection)
Exfiltration
|
False | |
15 |
Wireshark | match (target:Network) return target.component_id as component_id, target.parameters as parameters | None | Wireshark is a network protocol analyzer used to capture, inspect, and analyze network traffic for troubleshooting and security |
Gaining Access (Initial Access)
|
False | |
16 |
Polymorph | MATCH (broker)<-[:hosts|connects*1..4]-(net:Network)-[:hosts|connects*1..4]->(client)-[:uses]->(broker) WHERE broker.type = "Service.MQTTBroker" WITH client, broker WITH [ { component_id: client.component_id }, { component_id: broker.component_id } ] AS combined_results UNWIND combined_results AS result RETURN DISTINCT result.component_id AS component_id | polymorph | Polymorph is a Python 3 framework that enables real-time modification of network packets, providing users with extensive control over packet contents. It supports a wide range of protocols, including private ones without public specifications, and allows for complex processing of packet data. |
Damage
|
False | |
17 |
MQTT-Pwn | match (target {type: 'Service.MQTTBroker'}) return target.component_id as component_id, target.parameters as parameters | python run.py | mqtt-pwn is a security tool designed for testing and auditing MQTT protocol implementations. It supports fuzzing, sniffing, spoofing, and DoS attacks on MQTT brokers. Useful for penetration testers and IoT researchers, mqtt-pwn helps identify vulnerabilities and misconfigurations in MQTT communications across various devices and environments. |
System Access
Damage
|
False | |
18 |
BurpSuite | match (target {type:'Service.Web'}) return target.component_id as component_id, target.parameters as parameters | None | Burp Suite is an integrated platform for performing security testing of web applications. It supports intercepting and modifying HTTP/S traffic, automated vulnerability scanning, spidering, session handling analysis, and manual testing through a suite of tools such as Repeater, Intruder, and Decoder. It is widely used in the phases of reconnaissance and exploitation during web application penetration tests. |
Scanning
Credential Access
Exfiltration
|
False | |
19 |
Hydra | match (target {type:'Service.SSH'}) return target.component_id as component_id, target.parameters as parameters | hydra -l {username} -P {wordlist} -t ssh {ip} | Hydra is an open-source tool used for performing brute-force attacks on various protocols and services to test authentication mechanisms. It supports multiple protocols, customizable wordlists, parallel attacks, and can be integrated with other security tools. |
System Access
Credential Access
|
False | |
| Tool ID | Name | Capec ID | Cypher Query | Command | Description | Phase | Is Executable |