Skip to content

Commit 9aed494

Browse files
authored
Added support for scout suite AWS scanning (#96)
1 parent d725af4 commit 9aed494

File tree

12 files changed

+380
-33
lines changed

12 files changed

+380
-33
lines changed

.github/workflows/build.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,9 @@ jobs:
7474
jq 'del(.version, .platform.release)' nessus.json-ip-10-10-23-102.json > nessus_jq.json
7575
jq 'del(.version, .platform.release)' ./sample_jsons/nessus_mapper/nessus_sample_hdf.json > nessus_sample_hdf.json
7676
diff nessus_sample_hdf.json nessus_jq.json
77+
- name: Test scoutsuite mapper
78+
run: |
79+
heimdall_tools scoutsuite_mapper -i ./sample_jsons/scoutsuite_mapper/sample_input_jsons/scoutsuite_sample.js -o scoutsuite_output.json
80+
jq 'del(.version, .platform.release)' scoutsuite_output.json > scoutsuite_output_jq.json
81+
jq 'del(.version, .platform.release)' ./sample_jsons/scoutsuite_mapper/scoutsuite_hdf.json > scoutsuite_sample.json
82+
diff scoutsuite_sample.json scoutsuite_output_jq.json

.rubocop_todo.yml

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# This configuration was generated by
22
# `rubocop --auto-gen-config`
3-
# on 2021-03-16 17:26:37 UTC using RuboCop version 1.11.0.
3+
# on 2021-05-18 15:11:52 UTC using RuboCop version 1.14.0.
44
# The point is for the user to remove these configuration records
55
# one by one as the offenses are removed from the code base.
66
# Note that changes in the inspected code, or installation of new
@@ -19,11 +19,10 @@ Lint/DuplicateBranch:
1919
Exclude:
2020
- 'lib/heimdall_tools/dbprotect_mapper.rb'
2121

22-
# Offense count: 3
22+
# Offense count: 2
2323
# Configuration parameters: MaximumRangeSize.
2424
Lint/MissingCopEnableDirective:
2525
Exclude:
26-
- 'lib/heimdall_tools/burpsuite_mapper.rb'
2726
- 'lib/heimdall_tools/nessus_mapper.rb'
2827
- 'lib/heimdall_tools/zap_mapper.rb'
2928

@@ -39,16 +38,10 @@ Lint/UnusedMethodArgument:
3938
Exclude:
4039
- 'lib/heimdall_tools/hdf.rb'
4140

42-
# Offense count: 2
43-
# Configuration parameters: CheckForMethodsWithNoSideEffects.
44-
Lint/Void:
45-
Exclude:
46-
- 'lib/heimdall_tools/aws_config_mapper.rb'
47-
48-
# Offense count: 20
41+
# Offense count: 32
4942
# Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
5043
Metrics/AbcSize:
51-
Max: 56
44+
Max: 73
5245

5346
# Offense count: 4
5447
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
@@ -61,17 +54,17 @@ Metrics/BlockLength:
6154
Metrics/BlockNesting:
6255
Max: 5
6356

64-
# Offense count: 6
57+
# Offense count: 8
6558
# Configuration parameters: CountComments, CountAsOne.
6659
Metrics/ClassLength:
6760
Max: 171
6861

69-
# Offense count: 7
62+
# Offense count: 10
7063
# Configuration parameters: IgnoredMethods.
7164
Metrics/CyclomaticComplexity:
7265
Max: 17
7366

74-
# Offense count: 32
67+
# Offense count: 38
7568
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
7669
Metrics/MethodLength:
7770
Max: 52
@@ -81,7 +74,7 @@ Metrics/MethodLength:
8174
Metrics/ParameterLists:
8275
Max: 18
8376

84-
# Offense count: 6
77+
# Offense count: 8
8578
# Configuration parameters: IgnoredMethods.
8679
Metrics/PerceivedComplexity:
8780
Max: 17
@@ -106,29 +99,20 @@ Naming/VariableName:
10699
Exclude:
107100
- 'lib/heimdall_tools/burpsuite_mapper.rb'
108101

109-
# Offense count: 8
102+
# Offense count: 12
110103
# Configuration parameters: AllowedVariables.
111104
Style/GlobalVars:
112105
Exclude:
113106
- 'lib/heimdall_tools/jfrog_xray_mapper.rb'
114107
- 'lib/heimdall_tools/nessus_mapper.rb'
115108
- 'lib/heimdall_tools/nikto_mapper.rb'
116109
- 'lib/heimdall_tools/sarif_mapper.rb'
110+
- 'lib/heimdall_tools/scoutsuite_mapper.rb'
117111
- 'lib/heimdall_tools/snyk_mapper.rb'
118112

119-
# Offense count: 10
113+
# Offense count: 1
120114
# Configuration parameters: AllowedMethods.
121115
# AllowedMethods: respond_to_missing?
122116
Style/OptionalBooleanParameter:
123117
Exclude:
124-
- 'lib/heimdall_tools/aws_config_mapper.rb'
125-
- 'lib/heimdall_tools/burpsuite_mapper.rb'
126-
- 'lib/heimdall_tools/dbprotect_mapper.rb'
127-
- 'lib/heimdall_tools/fortify_mapper.rb'
128-
- 'lib/heimdall_tools/jfrog_xray_mapper.rb'
129-
- 'lib/heimdall_tools/nessus_mapper.rb'
130-
- 'lib/heimdall_tools/netsparker_mapper.rb'
131-
- 'lib/heimdall_tools/nikto_mapper.rb'
132118
- 'lib/heimdall_tools/sarif_mapper.rb'
133-
- 'lib/heimdall_tools/snyk_mapper.rb'
134-
- 'lib/heimdall_tools/zap_mapper.rb'

README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ HeimdallTools supplies several methods to convert output from various tools to "
1717
- **aws_config_mapper** - assess, audit, and evaluate AWS resources
1818
- **netsparker_mapper** - web application security scanner
1919
- **sarif_mapper** - static analysis results interchange format
20+
- **scoutsuite_mapper** - multi-cloud security auditing tool
2021

2122
## Want to recommend a mapper for another tool? Please use these steps:
2223
1. Create an [issue](https://github.com/mitre/heimdall_tools/issues/new), and email saf@groups.mitre.org citing the issue link so we can help
@@ -202,6 +203,22 @@ FLAGS:
202203
example: heimdall_tools nikto_mapper -j nikto_results.json -o nikto_results.json
203204
```
204205

206+
## scoutsuite_mapper
207+
208+
scoutsuite_mapper translates Scout Suite results from Javascript to HDF-formatted JSON so as to be viewable on Heimdall
209+
210+
Note: Currently this mapper only supports AWS.
211+
212+
```
213+
USAGE: heimdall_tools scoutsuite_mapper -i <scoutsuite-results-js> -o <hdf-scan-results-json>
214+
215+
FLAGS:
216+
-i --input -j --javascript <scoutsuite-results-js> : path to Scout Suite results Javascript file.
217+
-o --output <hdf-scan-results-json> : path to output scan-results json.
218+
219+
example: heimdall_tools scoutsuite_mapper -i scoutsuite_results.js -o scoutsuite_hdf.json
220+
```
221+
205222
## jfrog_xray_mapper
206223

207224
jfrog_xray_mapper translates an JFrog Xray results JSON file into HDF format JSON to be viewable in Heimdall

lib/data/scoutsuite-nist-mapping.csv

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
rule,nistid
2+
acm-certificate-with-close-expiration-date,SC-12
3+
acm-certificate-with-transparency-logging-disabled,SC-12
4+
cloudformation-stack-with-role,AC-6
5+
cloudtrail-duplicated-global-services-logging,AU-6
6+
cloudtrail-no-cloudwatch-integration,AU-12|SI-4(2)
7+
cloudtrail-no-data-logging,AU-12
8+
cloudtrail-no-encryption-with-kms,AU-6
9+
cloudtrail-no-global-services-logging,AU-12
10+
cloudtrail-no-log-file-validation,AU-6
11+
cloudtrail-no-logging,AU-12
12+
cloudtrail-not-configured,AU-12
13+
cloudwatch-alarm-without-actions,AU-12
14+
config-recorder-not-configured,CM-8|CM-8(2)|CM-8(6)
15+
ec2-ami-public,AC-3
16+
ec2-default-security-group-in-use,AC-3(3)
17+
ec2-default-security-group-with-rules,AC-3(3)
18+
ec2-ebs-snapshot-not-encrypted,SC-28
19+
ec2-ebs-snapshot-public,AC-3
20+
ec2-ebs-volume-not-encrypted,SC-28
21+
ec2-instance-in-security-group,CM-7(1)
22+
ec2-instance-type,CM-2
23+
ec2-instance-types,CM-2
24+
ec2-instance-with-public-ip,AC-3
25+
ec2-instance-with-user-data-secrets,AC-3
26+
ec2-security-group-opens-all-ports,CM-7(1)
27+
ec2-security-group-opens-all-ports-to-all,CM-7(1)
28+
ec2-security-group-opens-all-ports-to-self,CM-7(1)
29+
ec2-security-group-opens-icmp-to-all,CM-7(1)
30+
ec2-security-group-opens-known-port-to-all,CM-7(1)
31+
ec2-security-group-opens-plaintext-port,CM-7(1)
32+
ec2-security-group-opens-port-range,CM-7(1)
33+
ec2-security-group-opens-port-to-all,CM-7(1)
34+
ec2-security-group-whitelists-aws,CM-7(1)
35+
ec2-security-group-whitelists-aws-ip-from-banned-region,CM-7(1)
36+
ec2-security-group-whitelists-non-elastic-ips,CM-7(1)
37+
ec2-security-group-whitelists-unknown-aws,CM-7(1)
38+
ec2-security-group-whitelists-unknown-cidrs,CM-7(1)
39+
ec2-unused-security-group,CM-7(1)
40+
elb-listener-allowing-cleartext,SC-8
41+
elb-no-access-logs,AU-12
42+
elb-older-ssl-policy,SC-8
43+
elbv2-http-request-smuggling,SC-8
44+
elbv2-listener-allowing-cleartext,SC-8
45+
elbv2-no-access-logs,AU-12
46+
elbv2-no-deletion-protection,SI-7
47+
elbv2-older-ssl-policy,SC-8
48+
iam-assume-role-lacks-external-id-and-mfa,AC-17
49+
iam-assume-role-no-mfa,AC-6
50+
iam-assume-role-policy-allows-all,AC-6
51+
iam-ec2-role-without-instances,AC-6
52+
iam-group-with-inline-policies,AC-6
53+
iam-group-with-no-users,AC-6
54+
iam-human-user-with-policies,AC-6
55+
iam-inline-policy-allows-non-sts-action,AC-6
56+
iam-inline-policy-allows-NotActions,AC-6
57+
iam-inline-policy-for-role,AC-6
58+
iam-managed-policy-allows-full-privileges,AC-6
59+
iam-managed-policy-allows-non-sts-action,AC-6
60+
iam-managed-policy-allows-NotActions,AC-6
61+
iam-managed-policy-for-role,AC-6
62+
iam-managed-policy-no-attachments,AC-6
63+
iam-no-support-role,IR-7
64+
iam-password-policy-expiration-threshold,AC-2
65+
iam-password-policy-minimum-length,AC-2
66+
iam-password-policy-no-expiration,AC-2
67+
iam-password-policy-no-lowercase-required,AC-2
68+
iam-password-policy-no-number-required,AC-2
69+
iam-password-policy-no-symbol-required,AC-2
70+
iam-password-policy-no-uppercase-required,AC-2
71+
iam-password-policy-reuse-enabled,IA-5(1)
72+
iam-role-with-inline-policies,AC-6
73+
iam-root-account-no-hardware-mfa,IA-2(1)
74+
iam-root-account-no-mfa,IA-2(1)
75+
iam-root-account-used-recently,AC-6(9)
76+
iam-root-account-with-active-certs,AC-6(9)
77+
iam-root-account-with-active-keys,AC-6(9)
78+
iam-service-user-with-password,AC-2
79+
iam-unused-credentials-not-disabled,AC-2
80+
iam-user-no-key-rotation,AC-2
81+
iam-user-not-in-category-group,AC-2
82+
iam-user-not-in-common-group,AC-2
83+
iam-user-unused-access-key-initial-setup,AC-2
84+
iam-user-with-multiple-access-keys,IA-2
85+
iam-user-without-mfa,IA-2(1)
86+
iam-user-with-password-and-key,IA-2
87+
iam-user-with-policies,AC-2
88+
kms-cmk-rotation-disabled,SC-12
89+
logs-no-alarm-aws-configuration-changes,CM-8|CM-8(2)|CM-8(6)
90+
logs-no-alarm-cloudtrail-configuration-changes,AU-6
91+
logs-no-alarm-cmk-deletion,AC-2
92+
logs-no-alarm-console-authentication-failures,AC-2
93+
logs-no-alarm-iam-policy-changes,AC-2
94+
logs-no-alarm-nacl-changes,CM-6(2)
95+
logs-no-alarm-network-gateways-changes,AU-12|CM-6(2)
96+
logs-no-alarm-root-usage,AU-2
97+
logs-no-alarm-route-table-changes,AU-12|CM-6(2)
98+
logs-no-alarm-s3-policy-changes,AC-6|AU-12
99+
logs-no-alarm-security-group-changes,AC-2(4)
100+
logs-no-alarm-signin-without-mfa,AC-2
101+
logs-no-alarm-unauthorized-api-calls,AU-6|SI-4(2)
102+
logs-no-alarm-vpc-changes,CM-6(1)
103+
rds-instance-backup-disabled,CP-9
104+
rds-instance-ca-certificate-deprecated,SC-12
105+
rds-instance-no-minor-upgrade,SI-2
106+
rds-instance-short-backup-retention-period,CP-9
107+
rds-instance-single-az,CP-7
108+
rds-instance-storage-not-encrypted,SC-28
109+
rds-postgres-instance-with-invalid-certificate,SC-12
110+
rds-security-group-allows-all,CM-7(1)
111+
rds-snapshot-public,SC-28
112+
redshift-cluster-database-not-encrypted,SC-28
113+
redshift-cluster-no-version-upgrade,SI-2
114+
redshift-cluster-publicly-accessible,AC-3
115+
redshift-parameter-group-logging-disabled,AU-12
116+
redshift-parameter-group-ssl-not-required,SC-8
117+
redshift-security-group-whitelists-all,CM-7(1)
118+
route53-domain-no-autorenew,SC-2
119+
route53-domain-no-transferlock,SC-2
120+
route53-domain-transferlock-not-authorized,SC-2
121+
s3-bucket-allowing-cleartext,SC-28
122+
s3-bucket-no-default-encryption,SC-28
123+
s3-bucket-no-logging,AU-2|AU-12
124+
s3-bucket-no-mfa-delete,SI-7
125+
s3-bucket-no-versioning,SI-7
126+
s3-bucket-world-acl,AC-3(3)
127+
s3-bucket-world-policy-arg,AC-3(3)
128+
s3-bucket-world-policy-star,AC-3(3)
129+
ses-identity-dkim-not-enabled,SC-23
130+
ses-identity-dkim-not-verified,SC-23
131+
ses-identity-world-policy,AC-6
132+
sns-topic-world-policy,AC-6
133+
sqs-queue-world-policy,AC-6
134+
vpc-custom-network-acls-allow-all,SC-7
135+
vpc-default-network-acls-allow-all,SC-7
136+
vpc-network-acl-not-used,SC-7
137+
vpc-routing-tables-with-peering,AC-3(3)
138+
vpc-subnet-with-bad-acls,SC-7
139+
vpc-subnet-with-default-acls,SC-7
140+
vpc-subnet-without-flow-log,AU-12

lib/heimdall_tools.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ module HeimdallTools
1717
autoload :AwsConfigMapper, 'heimdall_tools/aws_config_mapper'
1818
autoload :NetsparkerMapper, 'heimdall_tools/netsparker_mapper'
1919
autoload :SarifMapper, 'heimdall_tools/sarif_mapper'
20+
autoload :ScoutSuiteMapper, 'heimdall_tools/scoutsuite_mapper'
2021
end

lib/heimdall_tools/aws_config_mapper.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ def to_hdf
5757

5858
results = HeimdallDataFormat.new(
5959
profile_name: 'AWS Config',
60-
title: 'AWS Config',
61-
summary: 'AWS Config',
62-
controls: controls,
63-
statistics: { aws_config_sdk_version: Aws::ConfigService::GEM_VERSION },
60+
title: 'AWS Config',
61+
summary: 'AWS Config',
62+
controls: controls,
63+
statistics: { aws_config_sdk_version: Aws::ConfigService::GEM_VERSION },
6464
)
6565
results.to_hdf
6666
end

lib/heimdall_tools/cli.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,17 @@ def sarif_mapper
135135
puts options[:output].to_s
136136
end
137137

138+
desc 'scoutsuite_mapper', 'scoutsuite_mapper translates Scout Suite results from Javascript to HDF-formatted JSON so as to be viewable on Heimdall'
139+
long_desc Help.text(:scoutsuite_mapper)
140+
option :javascript, required: true, banner: 'SCOUTSUITE-RESULTS-JS', aliases: ['-i', '--input', '-j']
141+
option :output, required: true, banner: 'HDF-SCAN-RESULTS-JSON', aliases: '-o'
142+
def scoutsuite_mapper
143+
hdf = HeimdallTools::ScoutSuiteMapper.new(File.read(options[:javascript])).to_hdf
144+
File.write(options[:output], hdf)
145+
puts "\rHDF Generated:\n"
146+
puts options[:output].to_s
147+
end
148+
138149
desc 'version', 'prints version'
139150
def version
140151
puts VERSION
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
scoutsuite_mapper translates Scout Suite results from Javascript to HDF-formatted JSON so as to be viewable on Heimdall
2+
3+
Note: Currently this mapper only supports AWS.
4+
5+
Examples:
6+
7+
heimdall_tools scoutsuite_mapper -i <scoutsuite-results-js> -o <hdf-scan-results-json>

0 commit comments

Comments
 (0)