rtexit-method 0.1.18 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packaged-assets/docker/Dockerfile +234 -0
- package/packaged-assets/docker/verify/lib.sh +109 -0
- package/packaged-assets/docker/verify/phase1-scanning.sh +57 -0
- package/packaged-assets/docker/verify/phase10-network.sh +62 -0
- package/packaged-assets/docker/verify/phase11-specialist.sh +56 -0
- package/packaged-assets/docker/verify/phase2-web.sh +79 -0
- package/packaged-assets/docker/verify/phase3-ad.sh +86 -0
- package/packaged-assets/docker/verify/phase4-cloud.sh +60 -0
- package/packaged-assets/docker/verify/phase5-mobile.sh +58 -0
- package/packaged-assets/docker/verify/phase6-c2.sh +62 -0
- package/packaged-assets/docker/verify/phase7-osint.sh +48 -0
- package/packaged-assets/docker/verify/phase8-creds.sh +53 -0
- package/packaged-assets/docker/verify/phase9-binary.sh +67 -0
- package/packaged-assets/docker/verify/rt-verify-all.sh +175 -0
- package/packaged-assets/scripts/rt-native-install.sh +633 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Phase 3 — Active Directory & Windows
|
|
3
|
+
source "$(dirname "$0")/lib.sh"
|
|
4
|
+
|
|
5
|
+
phase_header "PHASE 3 — Active Directory & Windows"
|
|
6
|
+
|
|
7
|
+
section "Impacket Suite"
|
|
8
|
+
chk "impacket-psexec" impacket-psexec
|
|
9
|
+
chk "impacket-smbexec" impacket-smbexec
|
|
10
|
+
chk "impacket-wmiexec" impacket-wmiexec
|
|
11
|
+
chk "impacket-secretsdump" impacket-secretsdump
|
|
12
|
+
chk "impacket-GetUserSPNs" impacket-GetUserSPNs
|
|
13
|
+
chk "impacket-GetNPUsers" impacket-GetNPUsers
|
|
14
|
+
chk "impacket-ntlmrelayx" impacket-ntlmrelayx
|
|
15
|
+
chk "impacket-rpcdump" impacket-rpcdump
|
|
16
|
+
chk "impacket-samrdump" impacket-samrdump
|
|
17
|
+
chk "impacket-lookupsid" impacket-lookupsid
|
|
18
|
+
chk "impacket-ticketer" impacket-ticketer
|
|
19
|
+
chk "impacket-getST" impacket-getST
|
|
20
|
+
|
|
21
|
+
section "Core AD Tools"
|
|
22
|
+
chk "certipy" certipy
|
|
23
|
+
chk "evil-winrm" evil-winrm
|
|
24
|
+
chk "bloodhound-python" bloodhound-python
|
|
25
|
+
chk "kerbrute" kerbrute
|
|
26
|
+
chk "netexec" netexec
|
|
27
|
+
chk "crackmapexec" crackmapexec
|
|
28
|
+
chk "ldeep" ldeep
|
|
29
|
+
chk "windapsearch" windapsearch
|
|
30
|
+
|
|
31
|
+
section "Enumeration"
|
|
32
|
+
chk "ldapdomaindump" ldapdomaindump
|
|
33
|
+
chk "enum4linux" enum4linux
|
|
34
|
+
chk "enum4linux-ng" enum4linux-ng
|
|
35
|
+
chk "nbtscan" nbtscan
|
|
36
|
+
chk "smbmap" smbmap
|
|
37
|
+
chk "smbclient" smbclient
|
|
38
|
+
|
|
39
|
+
section "Coercion & Relay"
|
|
40
|
+
chk "responder" responder
|
|
41
|
+
chk "mitm6" mitm6
|
|
42
|
+
chk_py "coercer" coercer
|
|
43
|
+
chk_dir "PetitPotam" /opt/PetitPotam
|
|
44
|
+
chk_dir "krbrelayx" /opt/krbrelayx
|
|
45
|
+
|
|
46
|
+
section "ADCS Attacks"
|
|
47
|
+
chk_dir "PKINITtools" /opt/PKINITtools
|
|
48
|
+
chk "certipy" certipy
|
|
49
|
+
|
|
50
|
+
section "Kerberos Attacks"
|
|
51
|
+
chk_dir "KrbRelayUp" /opt/KrbRelayUp
|
|
52
|
+
chk_py "pywhisker" pywhisker
|
|
53
|
+
|
|
54
|
+
section "CVE Exploits"
|
|
55
|
+
chk_dir "Zerologon" /opt/CVE-2020-1472
|
|
56
|
+
chk_dir "PrintNightmare" /opt/PrintNightmare
|
|
57
|
+
chk_dir "NoPac" /opt/noPac
|
|
58
|
+
|
|
59
|
+
section "Persistence"
|
|
60
|
+
chk_dir "ADFSpoof (SAML)" /opt/ADFSpoof
|
|
61
|
+
chk_py "bloodyAD" bloodyAD
|
|
62
|
+
chk_dir "pyGPOAbuse" /opt/pyGPOAbuse
|
|
63
|
+
|
|
64
|
+
section "Credential Hunting"
|
|
65
|
+
chk_py "pypykatz" pypykatz
|
|
66
|
+
chk_dir "DonPAPI" /opt/DonPAPI
|
|
67
|
+
chk_py "pyrdp" pyrdp
|
|
68
|
+
|
|
69
|
+
section "Evasion (AD)"
|
|
70
|
+
chk_dir "SysWhispers3" /opt/SysWhispers3
|
|
71
|
+
chk_dir "ScareCrow" /opt/ScareCrow
|
|
72
|
+
chk_dir "KrbRelayUp" /opt/KrbRelayUp
|
|
73
|
+
|
|
74
|
+
section "BloodHound"
|
|
75
|
+
chk_dir "BloodHound.py" /opt/BloodHound.py
|
|
76
|
+
chk "bloodhound-python" bloodhound-python
|
|
77
|
+
|
|
78
|
+
section "Post-Auth Lateral"
|
|
79
|
+
chk_py "DeathStar" deathstar
|
|
80
|
+
chk_dir "DeathStar" /opt/DeathStar
|
|
81
|
+
|
|
82
|
+
section "Exchange / SharePoint"
|
|
83
|
+
chk "roadrecon" roadrecon
|
|
84
|
+
chk_py "roadtools" roadtools
|
|
85
|
+
|
|
86
|
+
phase_summary
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Phase 4 — Cloud Platforms
|
|
3
|
+
source "$(dirname "$0")/lib.sh"
|
|
4
|
+
|
|
5
|
+
phase_header "PHASE 4 — Cloud Platforms (AWS / Azure / GCP)"
|
|
6
|
+
|
|
7
|
+
section "AWS"
|
|
8
|
+
chk "aws" aws
|
|
9
|
+
chk "pacu" pacu
|
|
10
|
+
chk "enumerate-iam" enumerate-iam
|
|
11
|
+
chk "awswhoami" awswhoami
|
|
12
|
+
chk_py "boto3" boto3
|
|
13
|
+
chk_py "botocore" botocore
|
|
14
|
+
chk_py "principalmapper" principalmapper
|
|
15
|
+
chk "cloudfox" cloudfox
|
|
16
|
+
chk_py "s3scanner" s3scanner
|
|
17
|
+
chk_py "prowler" prowler
|
|
18
|
+
chk "stratus" stratus
|
|
19
|
+
chk_dir "cloud_enum" /opt/cloud_enum
|
|
20
|
+
chk_py "checkov" checkov
|
|
21
|
+
|
|
22
|
+
section "Azure"
|
|
23
|
+
chk "az" az
|
|
24
|
+
chk "azcopy" azcopy
|
|
25
|
+
chk "roadrecon" roadrecon
|
|
26
|
+
chk_py "roadtools" roadtools
|
|
27
|
+
chk "teamfiltration" teamfiltration
|
|
28
|
+
chk_py "msticpy" msticpy
|
|
29
|
+
|
|
30
|
+
section "GCP"
|
|
31
|
+
chk_py "google.cloud.storage" google.cloud.storage
|
|
32
|
+
chk_py "gcp_scanner" gcp_scanner
|
|
33
|
+
|
|
34
|
+
section "Kubernetes"
|
|
35
|
+
chk "kubectl" kubectl
|
|
36
|
+
chk "kubectx" kubectx
|
|
37
|
+
chk "kubens" kubens
|
|
38
|
+
chk "helm" helm
|
|
39
|
+
chk "kube-hunter" kube-hunter
|
|
40
|
+
chk "kube-bench" kube-bench
|
|
41
|
+
chk "peirates" peirates
|
|
42
|
+
chk "kubesploit" kubesploit
|
|
43
|
+
|
|
44
|
+
section "Container Escape"
|
|
45
|
+
chk "cdk" cdk
|
|
46
|
+
chk "deepce" deepce
|
|
47
|
+
chk "botb" botb
|
|
48
|
+
chk "trivy" trivy
|
|
49
|
+
chk "dive" dive
|
|
50
|
+
|
|
51
|
+
section "IaC Security"
|
|
52
|
+
chk "checkov" checkov
|
|
53
|
+
chk "syft" syft
|
|
54
|
+
chk "grype" grype
|
|
55
|
+
chk "dependency-check" dependency-check
|
|
56
|
+
|
|
57
|
+
section "Multi-Cloud"
|
|
58
|
+
chk_py "scoutsuite" ScoutSuite
|
|
59
|
+
|
|
60
|
+
phase_summary
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Phase 5 — Mobile Testing
|
|
3
|
+
source "$(dirname "$0")/lib.sh"
|
|
4
|
+
|
|
5
|
+
phase_header "PHASE 5 — Mobile Testing (Android / iOS / BLE)"
|
|
6
|
+
|
|
7
|
+
section "Android Core"
|
|
8
|
+
chk "adb" adb
|
|
9
|
+
chk "apktool" apktool
|
|
10
|
+
chk "jadx" jadx
|
|
11
|
+
chk "dex2jar" d2j-dex2jar
|
|
12
|
+
|
|
13
|
+
section "Frida & Dynamic Analysis"
|
|
14
|
+
chk "frida" frida
|
|
15
|
+
chk "frida-ps" frida-ps
|
|
16
|
+
chk "frida-trace" frida-trace
|
|
17
|
+
chk "objection" objection
|
|
18
|
+
chk "setup-frida-server" setup-frida-server
|
|
19
|
+
|
|
20
|
+
section "SSL Pinning Bypass"
|
|
21
|
+
chk_py "reFlutter" reflutter
|
|
22
|
+
chk "apk-mitm" apk-mitm
|
|
23
|
+
|
|
24
|
+
section "APK Repackaging"
|
|
25
|
+
chk "uber-apk-signer" uber-apk-signer
|
|
26
|
+
chk_file "uber-apk-signer.jar" /opt/uber-apk-signer/uber-apk-signer.jar
|
|
27
|
+
|
|
28
|
+
section "Static Analysis"
|
|
29
|
+
chk "apkleaks" apkleaks
|
|
30
|
+
chk_py "androguard" androguard
|
|
31
|
+
chk_py "trufflehog3" trufflehog3
|
|
32
|
+
|
|
33
|
+
section "Component Exploitation"
|
|
34
|
+
chk_py "drozer" drozer
|
|
35
|
+
chk_file "drozer-agent.apk" /opt/drozer/drozer-agent.apk
|
|
36
|
+
|
|
37
|
+
section "Cross-Platform Apps"
|
|
38
|
+
chk_py "hermes-dec" hermes
|
|
39
|
+
chk_py "hbctool" hbctool
|
|
40
|
+
chk_py "doldrums" doldrums
|
|
41
|
+
chk_py "lz4" lz4
|
|
42
|
+
chk "monodis" monodis
|
|
43
|
+
chk "js-beautify" js-beautify
|
|
44
|
+
|
|
45
|
+
section "Malware & C2"
|
|
46
|
+
chk "qrcode" qrcode
|
|
47
|
+
chk_py "qrcode" qrcode
|
|
48
|
+
chk_dir "TheFatRat" /opt/TheFatRat
|
|
49
|
+
chk "msfvenom" msfvenom
|
|
50
|
+
|
|
51
|
+
section "iOS"
|
|
52
|
+
chk "ssh" ssh
|
|
53
|
+
|
|
54
|
+
section "BLE"
|
|
55
|
+
chk_py "bleak" bleak
|
|
56
|
+
chk_dir "crackle" /opt/crackle
|
|
57
|
+
|
|
58
|
+
phase_summary
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Phase 6 — C2 & Post-Exploitation
|
|
3
|
+
source "$(dirname "$0")/lib.sh"
|
|
4
|
+
|
|
5
|
+
phase_header "PHASE 6 — C2 Frameworks & Post-Exploitation"
|
|
6
|
+
|
|
7
|
+
section "C2 Frameworks"
|
|
8
|
+
chk "msfconsole" msfconsole
|
|
9
|
+
chk "msfvenom" msfvenom
|
|
10
|
+
chk "sliver-client" sliver-client
|
|
11
|
+
chk_dir "Empire" /opt/Empire
|
|
12
|
+
chk_dir "Villain" /opt/Villain
|
|
13
|
+
chk_dir "PoshC2" /opt/PoshC2
|
|
14
|
+
chk_dir "Havoc" /opt/Havoc
|
|
15
|
+
|
|
16
|
+
section "Tunneling & Pivoting"
|
|
17
|
+
chk "chisel" chisel
|
|
18
|
+
chk "ligolo-proxy" ligolo-proxy
|
|
19
|
+
chk "ligolo-agent" ligolo-agent
|
|
20
|
+
chk "socat" socat
|
|
21
|
+
chk "proxychains4" proxychains4
|
|
22
|
+
|
|
23
|
+
section "DNS Tunneling"
|
|
24
|
+
chk "iodine" iodine
|
|
25
|
+
chk_dir "dnscat2" /opt/dnscat2
|
|
26
|
+
|
|
27
|
+
section "Payload Generation"
|
|
28
|
+
chk "msfvenom" msfvenom
|
|
29
|
+
chk_dir "ScareCrow" /opt/ScareCrow
|
|
30
|
+
chk_py "donut-shellcode" donut
|
|
31
|
+
chk_dir "Veil" /opt/Veil
|
|
32
|
+
chk_dir "macro_pack" /opt/macro_pack
|
|
33
|
+
|
|
34
|
+
section "Evasion"
|
|
35
|
+
chk_dir "SysWhispers3" /opt/SysWhispers3
|
|
36
|
+
chk_py "pypykatz" pypykatz
|
|
37
|
+
|
|
38
|
+
section "Persistence / AD"
|
|
39
|
+
chk_dir "DeathStar" /opt/DeathStar
|
|
40
|
+
chk_dir "DonPAPI" /opt/DonPAPI
|
|
41
|
+
chk_py "bloodyAD" bloodyAD
|
|
42
|
+
|
|
43
|
+
section "Lateral Movement"
|
|
44
|
+
chk "evil-winrm" evil-winrm
|
|
45
|
+
chk "netexec" netexec
|
|
46
|
+
chk "crackmapexec" crackmapexec
|
|
47
|
+
chk "impacket-wmiexec" impacket-wmiexec
|
|
48
|
+
chk "impacket-psexec" impacket-psexec
|
|
49
|
+
chk "impacket-smbexec" impacket-smbexec
|
|
50
|
+
|
|
51
|
+
section "Credential Extraction"
|
|
52
|
+
chk_py "pypykatz" pypykatz
|
|
53
|
+
chk_dir "DonPAPI" /opt/DonPAPI
|
|
54
|
+
|
|
55
|
+
section "RDP"
|
|
56
|
+
chk_py "pyrdp" pyrdp
|
|
57
|
+
|
|
58
|
+
section "Purple Team"
|
|
59
|
+
chk_dir "Atomic Red Team" /opt/atomic-red-team
|
|
60
|
+
chk_dir "Caldera" /opt/caldera
|
|
61
|
+
|
|
62
|
+
phase_summary
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Phase 7 — OSINT & Recon
|
|
3
|
+
source "$(dirname "$0")/lib.sh"
|
|
4
|
+
|
|
5
|
+
phase_header "PHASE 7 — OSINT & Intelligence Gathering"
|
|
6
|
+
|
|
7
|
+
section "Email & People"
|
|
8
|
+
chk "theHarvester" theHarvester
|
|
9
|
+
chk_py "h8mail" h8mail
|
|
10
|
+
chk_py "holehe" holehe
|
|
11
|
+
chk_py "maigret" maigret
|
|
12
|
+
chk_py "socialscan" socialscan
|
|
13
|
+
chk_opt "GHunt" ghunt
|
|
14
|
+
|
|
15
|
+
section "Username / Social"
|
|
16
|
+
chk_dir "CrossLinked" /opt/CrossLinked
|
|
17
|
+
chk_py "sherlock" sherlock
|
|
18
|
+
|
|
19
|
+
section "Domain Intelligence"
|
|
20
|
+
chk "shodan" shodan
|
|
21
|
+
chk_py "censys" censys
|
|
22
|
+
chk_py "duckduckgo_search" duckduckgo_search
|
|
23
|
+
chk_py "ipinfo" ipinfo
|
|
24
|
+
|
|
25
|
+
section "GitHub / Code Recon"
|
|
26
|
+
chk "gitleaks" gitleaks
|
|
27
|
+
chk_py "trufflehog" trufflehog
|
|
28
|
+
chk "git-dumper" git-dumper
|
|
29
|
+
chk_py "PyGithub" github
|
|
30
|
+
|
|
31
|
+
section "Passive Recon"
|
|
32
|
+
chk "gau" gau
|
|
33
|
+
chk "waybackurls" waybackurls
|
|
34
|
+
chk_dir "recon-ng" /opt/recon-ng
|
|
35
|
+
chk_py "spiderfoot" sflib
|
|
36
|
+
|
|
37
|
+
section "OSINT Frameworks"
|
|
38
|
+
chk_dir "recon-ng" /opt/recon-ng
|
|
39
|
+
chk_py "spiderfoot" sflib
|
|
40
|
+
|
|
41
|
+
section "Network Intelligence"
|
|
42
|
+
chk "whois" whois
|
|
43
|
+
chk "dnsrecon" dnsrecon
|
|
44
|
+
chk "dnsenum" dnsenum
|
|
45
|
+
chk "fierce" fierce
|
|
46
|
+
chk "nbtscan" nbtscan
|
|
47
|
+
|
|
48
|
+
phase_summary
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Phase 8 — Passwords & Credentials
|
|
3
|
+
source "$(dirname "$0")/lib.sh"
|
|
4
|
+
|
|
5
|
+
phase_header "PHASE 8 — Password Attacks & Credential Access"
|
|
6
|
+
|
|
7
|
+
section "Hash Cracking"
|
|
8
|
+
chk "hashcat" hashcat
|
|
9
|
+
chk "john" john
|
|
10
|
+
chk "ophcrack" ophcrack
|
|
11
|
+
|
|
12
|
+
section "Online Brute Force"
|
|
13
|
+
chk "hydra" hydra
|
|
14
|
+
chk "medusa" medusa
|
|
15
|
+
chk "ncrack" ncrack
|
|
16
|
+
chk_py "patator" patator
|
|
17
|
+
|
|
18
|
+
section "Spray"
|
|
19
|
+
chk "kerbrute" kerbrute
|
|
20
|
+
chk "netexec" netexec
|
|
21
|
+
|
|
22
|
+
section "Wordlist Generation"
|
|
23
|
+
chk "cewl" cewl
|
|
24
|
+
chk "crunch" crunch
|
|
25
|
+
chk "cupp" cupp
|
|
26
|
+
chk_opt "mentalist" mentalist
|
|
27
|
+
|
|
28
|
+
section "Kerberos"
|
|
29
|
+
chk "impacket-GetUserSPNs" impacket-GetUserSPNs
|
|
30
|
+
chk "impacket-GetNPUsers" impacket-GetNPUsers
|
|
31
|
+
chk "impacket-ticketer" impacket-ticketer
|
|
32
|
+
chk "impacket-getST" impacket-getST
|
|
33
|
+
|
|
34
|
+
section "LSASS / Memory"
|
|
35
|
+
chk_py "pypykatz" pypykatz
|
|
36
|
+
chk_dir "DonPAPI" /opt/DonPAPI
|
|
37
|
+
|
|
38
|
+
section "Windows Credential Stores"
|
|
39
|
+
chk "impacket-secretsdump" impacket-secretsdump
|
|
40
|
+
chk "impacket-samrdump" impacket-samrdump
|
|
41
|
+
|
|
42
|
+
section "Wordlists"
|
|
43
|
+
chk_dir "SecLists" /opt/SecLists
|
|
44
|
+
chk_file "rockyou.txt" /opt/SecLists/Passwords/Leaked-Databases/rockyou.txt
|
|
45
|
+
|
|
46
|
+
section "Crypto / Hashing"
|
|
47
|
+
chk_py "pycryptodome" Crypto
|
|
48
|
+
chk_py "hashpumpy" hashpumpy
|
|
49
|
+
chk_py "sympy" sympy
|
|
50
|
+
chk_py "gmpy2" gmpy2
|
|
51
|
+
chk_py "ecdsa" ecdsa
|
|
52
|
+
|
|
53
|
+
phase_summary
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Phase 9 — Binary Analysis & Reverse Engineering
|
|
3
|
+
source "$(dirname "$0")/lib.sh"
|
|
4
|
+
|
|
5
|
+
phase_header "PHASE 9 — Binary Analysis & Reverse Engineering"
|
|
6
|
+
|
|
7
|
+
section "Debuggers"
|
|
8
|
+
chk "gdb" gdb
|
|
9
|
+
chk_dir "pwndbg" /opt/pwndbg
|
|
10
|
+
chk_dir "GEF" /root/.gef
|
|
11
|
+
|
|
12
|
+
section "Disassemblers / Decompilers"
|
|
13
|
+
chk "radare2" radare2
|
|
14
|
+
chk "r2" r2
|
|
15
|
+
chk "ghidra" ghidra
|
|
16
|
+
chk "objdump" objdump
|
|
17
|
+
chk "jadx" jadx
|
|
18
|
+
|
|
19
|
+
section "Binary Analysis"
|
|
20
|
+
chk "binwalk" binwalk
|
|
21
|
+
chk "strings" strings
|
|
22
|
+
chk "file" file
|
|
23
|
+
chk "xxd" xxd
|
|
24
|
+
chk "hexedit" hexedit
|
|
25
|
+
chk "nm" nm
|
|
26
|
+
chk "readelf" readelf
|
|
27
|
+
chk "ltrace" ltrace
|
|
28
|
+
chk "strace" strace
|
|
29
|
+
chk "patchelf" patchelf
|
|
30
|
+
|
|
31
|
+
section "Exploit Development"
|
|
32
|
+
chk_py "pwntools" pwn
|
|
33
|
+
chk "ROPgadget" ROPgadget
|
|
34
|
+
chk_py "ropper" ropper
|
|
35
|
+
chk "nasm" nasm
|
|
36
|
+
|
|
37
|
+
section "Python Libraries"
|
|
38
|
+
chk_py "capstone" capstone
|
|
39
|
+
chk_py "keystone" keystone
|
|
40
|
+
chk_py "unicorn" unicorn
|
|
41
|
+
chk_py "angr" angr
|
|
42
|
+
|
|
43
|
+
section "Obfuscation / Strings"
|
|
44
|
+
chk_py "floss" floss
|
|
45
|
+
|
|
46
|
+
section "Fuzzing"
|
|
47
|
+
chk "afl-fuzz" afl-fuzz
|
|
48
|
+
chk "radamsa" radamsa
|
|
49
|
+
chk_py "boofuzz" boofuzz
|
|
50
|
+
|
|
51
|
+
section "YARA"
|
|
52
|
+
chk "yara" yara
|
|
53
|
+
chk_py "yara" yara
|
|
54
|
+
chk_dir "YARA-Rules" /opt/yara-rules
|
|
55
|
+
|
|
56
|
+
section "Malware Analysis"
|
|
57
|
+
chk_py "volatility3" volatility3
|
|
58
|
+
chk_dir "volatility3" /opt/volatility3
|
|
59
|
+
chk "foremost" foremost
|
|
60
|
+
chk "bulk_extractor" bulk_extractor
|
|
61
|
+
|
|
62
|
+
section "Forensics"
|
|
63
|
+
chk "exiftool" exiftool
|
|
64
|
+
chk "binwalk" binwalk
|
|
65
|
+
chk "sleuthkit" fls
|
|
66
|
+
|
|
67
|
+
phase_summary
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# RTExit — Master Tool Verification Script
|
|
3
|
+
# Usage:
|
|
4
|
+
# bash rt-verify-all.sh → full verbose report
|
|
5
|
+
# bash rt-verify-all.sh --quick → phase summary only
|
|
6
|
+
# bash rt-verify-all.sh --phase 3 → single phase
|
|
7
|
+
|
|
8
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
9
|
+
|
|
10
|
+
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'
|
|
11
|
+
BLUE='\033[0;34m'; CYAN='\033[0;36m'; GRAY='\033[0;37m'
|
|
12
|
+
BOLD='\033[1m'; NC='\033[0m'
|
|
13
|
+
|
|
14
|
+
QUICK=0; SINGLE_PHASE=0
|
|
15
|
+
|
|
16
|
+
while [[ $# -gt 0 ]]; do
|
|
17
|
+
case $1 in
|
|
18
|
+
--quick) QUICK=1; shift ;;
|
|
19
|
+
--phase) SINGLE_PHASE=$2; shift 2 ;;
|
|
20
|
+
*) shift ;;
|
|
21
|
+
esac
|
|
22
|
+
done
|
|
23
|
+
|
|
24
|
+
# Strip ANSI codes helper
|
|
25
|
+
strip_ansi() { sed 's/\x1b\[[0-9;]*m//g; s/\x1b\[[0-9]*[A-Za-z]//g'; }
|
|
26
|
+
|
|
27
|
+
# Banner
|
|
28
|
+
clear
|
|
29
|
+
printf "${RED}"
|
|
30
|
+
cat << 'EOF'
|
|
31
|
+
██████╗ ████████╗███████╗██╗ ██╗██╗████████╗
|
|
32
|
+
██╔══██╗╚══██╔══╝██╔════╝╚██╗██╔╝██║╚══██╔══╝
|
|
33
|
+
██████╔╝ ██║ █████╗ ╚███╔╝ ██║ ██║
|
|
34
|
+
██╔══██╗ ██║ ██╔══╝ ██╔██╗ ██║ ██║
|
|
35
|
+
██║ ██║ ██║ ███████╗██╔╝ ██╗██║ ██║
|
|
36
|
+
╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝
|
|
37
|
+
EOF
|
|
38
|
+
printf "${NC}"
|
|
39
|
+
printf "${BOLD} RTExit Full Tool Verification — 300+ Tools${NC}\n"
|
|
40
|
+
printf " $(date '+%Y-%m-%d %H:%M:%S')\n\n"
|
|
41
|
+
|
|
42
|
+
PHASES=(
|
|
43
|
+
"1:phase1-scanning.sh:Scanning & Recon"
|
|
44
|
+
"2:phase2-web.sh:Web Application Testing"
|
|
45
|
+
"3:phase3-ad.sh:Active Directory & Windows"
|
|
46
|
+
"4:phase4-cloud.sh:Cloud Platforms"
|
|
47
|
+
"5:phase5-mobile.sh:Mobile Testing"
|
|
48
|
+
"6:phase6-c2.sh:C2 & Post-Exploitation"
|
|
49
|
+
"7:phase7-osint.sh:OSINT & Intelligence"
|
|
50
|
+
"8:phase8-creds.sh:Passwords & Credentials"
|
|
51
|
+
"9:phase9-binary.sh:Binary Analysis & RE"
|
|
52
|
+
"10:phase10-network.sh:Network & WiFi"
|
|
53
|
+
"11:phase11-specialist.sh:Specialist"
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
GRAND_PASS=0; GRAND_FAIL=0; GRAND_WARN=0; GRAND_TOTAL=0
|
|
57
|
+
declare -a SUMMARY=()
|
|
58
|
+
declare -a ALL_MISSING=()
|
|
59
|
+
|
|
60
|
+
for entry in "${PHASES[@]}"; do
|
|
61
|
+
NUM=$(echo "$entry" | cut -d: -f1)
|
|
62
|
+
SCRIPT=$(echo "$entry" | cut -d: -f2)
|
|
63
|
+
NAME=$(echo "$entry" | cut -d: -f3)
|
|
64
|
+
|
|
65
|
+
[ "$SINGLE_PHASE" -ne 0 ] && [ "$NUM" -ne "$SINGLE_PHASE" ] && continue
|
|
66
|
+
|
|
67
|
+
SCRIPT_PATH="$SCRIPT_DIR/$SCRIPT"
|
|
68
|
+
[ ! -f "$SCRIPT_PATH" ] && continue
|
|
69
|
+
|
|
70
|
+
# Run phase and capture output
|
|
71
|
+
OUTPUT=$(bash "$SCRIPT_PATH" 2>/dev/null)
|
|
72
|
+
CLEAN=$(echo "$OUTPUT" | strip_ansi)
|
|
73
|
+
|
|
74
|
+
# Count results
|
|
75
|
+
P=$(echo "$CLEAN" | grep -c '✅' 2>/dev/null || echo 0)
|
|
76
|
+
F=$(echo "$CLEAN" | grep -c '❌' 2>/dev/null || echo 0)
|
|
77
|
+
W=$(echo "$CLEAN" | grep -c '⚠️' 2>/dev/null || echo 0)
|
|
78
|
+
T=$((P + F))
|
|
79
|
+
PCT=0; [ "$T" -gt 0 ] && PCT=$((P * 100 / T))
|
|
80
|
+
|
|
81
|
+
# Collect missing tool names
|
|
82
|
+
while IFS= read -r line; do
|
|
83
|
+
TOOL=$(echo "$line" | grep '❌' | awk '{print $2}' | head -1)
|
|
84
|
+
[ -n "$TOOL" ] && ALL_MISSING+=("Phase${NUM}/${NAME}: ${TOOL}")
|
|
85
|
+
done <<< "$CLEAN"
|
|
86
|
+
|
|
87
|
+
GRAND_PASS=$((GRAND_PASS + P))
|
|
88
|
+
GRAND_FAIL=$((GRAND_FAIL + F))
|
|
89
|
+
GRAND_WARN=$((GRAND_WARN + W))
|
|
90
|
+
GRAND_TOTAL=$((GRAND_TOTAL + T))
|
|
91
|
+
|
|
92
|
+
# Store for summary
|
|
93
|
+
SUMMARY+=("$NUM:$NAME:$P:$F:$T:$PCT")
|
|
94
|
+
|
|
95
|
+
# Print full output if not quick
|
|
96
|
+
if [ "$QUICK" -eq 0 ]; then
|
|
97
|
+
echo "$OUTPUT"
|
|
98
|
+
echo ""
|
|
99
|
+
else
|
|
100
|
+
# Quick mode — one line per phase
|
|
101
|
+
if [ "$PCT" -ge 90 ]; then COLOR="${GREEN}"
|
|
102
|
+
elif [ "$PCT" -ge 70 ]; then COLOR="${YELLOW}"
|
|
103
|
+
else COLOR="${RED}"; fi
|
|
104
|
+
|
|
105
|
+
printf " Phase %2d │ %-32s │ ${GREEN}%3d✅${NC} ${RED}%3d❌${NC} │ %b%3d%%${NC}\n" \
|
|
106
|
+
"$NUM" "$NAME" "$P" "$F" "$COLOR" "$PCT"
|
|
107
|
+
fi
|
|
108
|
+
done
|
|
109
|
+
|
|
110
|
+
# ── Summary Table ─────────────────────────────────────────────────────────────
|
|
111
|
+
echo ""
|
|
112
|
+
printf "${CYAN}${BOLD}┌──────────────────────────────────────────────────────────────┐${NC}\n"
|
|
113
|
+
printf "${CYAN}${BOLD}│ VERIFICATION SUMMARY │${NC}\n"
|
|
114
|
+
printf "${CYAN}${BOLD}├────┬──────────────────────────────────┬──────┬──────┬───────┤${NC}\n"
|
|
115
|
+
printf "${CYAN}${BOLD}│ Ph │ Phase Name │ ✅ │ ❌ │ %% │${NC}\n"
|
|
116
|
+
printf "${CYAN}${BOLD}├────┼──────────────────────────────────┼──────┼──────┼───────┤${NC}\n"
|
|
117
|
+
|
|
118
|
+
for entry in "${SUMMARY[@]}"; do
|
|
119
|
+
NUM=$(echo "$entry" | cut -d: -f1)
|
|
120
|
+
NAME=$(echo "$entry" | cut -d: -f2)
|
|
121
|
+
P=$(echo "$entry" | cut -d: -f3)
|
|
122
|
+
F=$(echo "$entry" | cut -d: -f4)
|
|
123
|
+
T=$(echo "$entry" | cut -d: -f5)
|
|
124
|
+
PCT=$(echo "$entry" | cut -d: -f6)
|
|
125
|
+
|
|
126
|
+
if [ "$PCT" -ge 90 ]; then PCOL="${GREEN}"
|
|
127
|
+
elif [ "$PCT" -ge 70 ]; then PCOL="${YELLOW}"
|
|
128
|
+
else PCOL="${RED}"; fi
|
|
129
|
+
|
|
130
|
+
printf "│ ${BOLD}%2d${NC} │ %-32s │ ${GREEN}%4d${NC} │ ${RED}%4d${NC} │ %b%5d%%${NC} │\n" \
|
|
131
|
+
"$NUM" "$NAME" "$P" "$F" "$PCOL" "$PCT"
|
|
132
|
+
done
|
|
133
|
+
|
|
134
|
+
printf "${CYAN}${BOLD}├────┴──────────────────────────────────┴──────┴──────┴───────┤${NC}\n"
|
|
135
|
+
|
|
136
|
+
GRAND_PCT=0; [ "$GRAND_TOTAL" -gt 0 ] && GRAND_PCT=$((GRAND_PASS * 100 / GRAND_TOTAL))
|
|
137
|
+
if [ "$GRAND_PCT" -ge 90 ]; then GCOL="${GREEN}"
|
|
138
|
+
elif [ "$GRAND_PCT" -ge 70 ]; then GCOL="${YELLOW}"
|
|
139
|
+
else GCOL="${RED}"; fi
|
|
140
|
+
|
|
141
|
+
printf "${CYAN}${BOLD}│${NC} ${BOLD}TOTAL${NC} ${GREEN}${BOLD}%4d${NC} ${RED}${BOLD}%4d${NC} %b${BOLD}%4d%%${NC} ${CYAN}${BOLD}│${NC}\n" \
|
|
142
|
+
"$GRAND_PASS" "$GRAND_FAIL" "$GCOL" "$GRAND_PCT"
|
|
143
|
+
printf "${CYAN}${BOLD}└──────────────────────────────────────────────────────────────┘${NC}\n"
|
|
144
|
+
|
|
145
|
+
# ── Progress Bar ──────────────────────────────────────────────────────────────
|
|
146
|
+
echo ""
|
|
147
|
+
printf " "
|
|
148
|
+
BAR=50; FILLED=$((GRAND_PCT * BAR / 100))
|
|
149
|
+
printf "${BOLD}[${NC}"
|
|
150
|
+
for ((i=0; i<BAR; i++)); do
|
|
151
|
+
[ $i -lt $FILLED ] && printf "${GCOL}█${NC}" || printf "${GRAY}░${NC}"
|
|
152
|
+
done
|
|
153
|
+
printf "${BOLD}]${NC} %b${BOLD} %d%%${NC} (%d / %d tools)\n" "$GCOL" "$GRAND_PCT" "$GRAND_PASS" "$GRAND_TOTAL"
|
|
154
|
+
|
|
155
|
+
# ── Missing Tools ─────────────────────────────────────────────────────────────
|
|
156
|
+
if [ "${#ALL_MISSING[@]}" -gt 0 ]; then
|
|
157
|
+
echo ""
|
|
158
|
+
printf "${RED}${BOLD} ❌ Missing Tools:${NC}\n"
|
|
159
|
+
for m in "${ALL_MISSING[@]}"; do
|
|
160
|
+
printf " ${RED}•${NC} %s\n" "$m"
|
|
161
|
+
done
|
|
162
|
+
fi
|
|
163
|
+
|
|
164
|
+
# ── Verdict ───────────────────────────────────────────────────────────────────
|
|
165
|
+
echo ""
|
|
166
|
+
if [ "$GRAND_PCT" -ge 95 ]; then
|
|
167
|
+
printf " ${GREEN}${BOLD}🔥 ELITE — Full APT-level toolkit. Ready for any engagement.${NC}\n"
|
|
168
|
+
elif [ "$GRAND_PCT" -ge 85 ]; then
|
|
169
|
+
printf " ${GREEN}${BOLD}✅ PROFESSIONAL — Ready for most engagements.${NC}\n"
|
|
170
|
+
elif [ "$GRAND_PCT" -ge 70 ]; then
|
|
171
|
+
printf " ${YELLOW}${BOLD}⚠️ OPERATIONAL — Install missing tools before engagement.${NC}\n"
|
|
172
|
+
else
|
|
173
|
+
printf " ${RED}${BOLD}❌ INCOMPLETE — Run: bash /opt/rtexit/scripts/rt-native-install.sh${NC}\n"
|
|
174
|
+
fi
|
|
175
|
+
echo ""
|