Skip to content

Commit 718ee0b

Browse files
committed
Added new more Aggresive Probes (Bleichenbacher PaddingOracle, Heartbleed)
1 parent 5122787 commit 718ee0b

File tree

8 files changed

+107
-4
lines changed

8 files changed

+107
-4
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111
<artifactId>TLS-Core</artifactId>
1212
<version>2.0Beta4</version>
1313
</dependency>
14+
<dependency>
15+
<groupId>de.rub.nds.tlsattacker</groupId>
16+
<artifactId>Attacks</artifactId>
17+
<version>2.0Beta4</version>
18+
</dependency>
1419
<dependency>
1520
<groupId>junit</groupId>
1621
<artifactId>junit</artifactId>

src/main/java/de/rub/nds/tlsscanner/ScanJobExecutor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public SiteReport execute(ScannerConfig config, ScanJob scanJob) {
4747
resultList.add(probeResult.get());
4848
} catch (InterruptedException | ExecutionException ex) {
4949
LOGGER.warn("Encoutered Exception while retrieving probeResult");
50+
ex.printStackTrace();
5051
LOGGER.warn(ex);
5152
}
5253
}

src/main/java/de/rub/nds/tlsscanner/TLSScanner.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,13 @@
1111
import de.rub.nds.tlsattacker.core.config.delegate.ClientDelegate;
1212
import de.rub.nds.tlsattacker.core.config.delegate.GeneralDelegate;
1313
import de.rub.nds.tlsscanner.config.ScannerConfig;
14+
import de.rub.nds.tlsscanner.probe.BleichenbacherProbe;
1415
import de.rub.nds.tlsscanner.report.SiteReport;
1516
import de.rub.nds.tlsscanner.probe.CertificateProbe;
1617
import de.rub.nds.tlsscanner.probe.CiphersuiteOrderProbe;
1718
import de.rub.nds.tlsscanner.probe.CiphersuiteProbe;
19+
import de.rub.nds.tlsscanner.probe.HeartbleedProbe;
20+
import de.rub.nds.tlsscanner.probe.PaddingOracleProbe;
1821
import de.rub.nds.tlsscanner.probe.ProtocolVersionProbe;
1922
import de.rub.nds.tlsscanner.probe.TLSProbe;
2023
import java.util.LinkedList;
@@ -49,10 +52,14 @@ public TLSScanner(ScannerConfig config) {
4952
this.config = config;
5053
if (config.getGeneralDelegate().getLogLevel() == Level.ALL) {
5154
Configurator.setAllLevels("de.rub.nds.tlsattacker", Level.ALL);
55+
Configurator.setAllLevels("de.rub.nds.modifiablevariable", Level.ALL);
56+
5257
} else if (config.getGeneralDelegate().getLogLevel() == Level.TRACE) {
5358
Configurator.setAllLevels("de.rub.nds.tlsattacker", Level.INFO);
59+
Configurator.setAllLevels("de.rub.nds.modifiablevariable", Level.INFO);
5460
} else {
5561
Configurator.setAllLevels("de.rub.nds.tlsattacker", Level.OFF);
62+
Configurator.setAllLevels("de.rub.nds.modifiablevariable", Level.OFF);
5663
}
5764
}
5865

@@ -62,9 +69,10 @@ public SiteReport scan() {
6269
testList.add(new ProtocolVersionProbe(config));
6370
testList.add(new CiphersuiteProbe(config));
6471
testList.add(new CiphersuiteOrderProbe(config));
65-
// testList.add(new HeartbleedProbe(websiteHost));
72+
testList.add(new HeartbleedProbe(config));
6673
// testList.add(new NamedCurvesProbe(websiteHost));
67-
// testList.add(new PaddingOracleProbe(websiteHost));
74+
testList.add(new PaddingOracleProbe(config));
75+
testList.add(new BleichenbacherProbe(config));
6876
// testList.add(new SignatureAndHashAlgorithmProbe(websiteHost));
6977
ScanJob job = new ScanJob(testList);
7078
return executor.execute(config, job);
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* To change this license header, choose License Headers in Project Properties.
3+
* To change this template file, choose Tools | Templates
4+
* and open the template in the editor.
5+
*/
6+
package de.rub.nds.tlsscanner.probe;
7+
8+
import de.rub.nds.tlsattacker.attacks.config.BleichenbacherCommandConfig;
9+
import de.rub.nds.tlsattacker.attacks.config.HeartbleedCommandConfig;
10+
import de.rub.nds.tlsattacker.attacks.impl.BleichenbacherAttacker;
11+
import de.rub.nds.tlsattacker.attacks.impl.HeartbleedAttacker;
12+
import de.rub.nds.tlsattacker.core.config.delegate.ClientDelegate;
13+
import de.rub.nds.tlsscanner.config.ScannerConfig;
14+
import de.rub.nds.tlsscanner.report.ProbeResult;
15+
import de.rub.nds.tlsscanner.report.ResultValue;
16+
import de.rub.nds.tlsscanner.report.check.CheckType;
17+
import de.rub.nds.tlsscanner.report.check.TLSCheck;
18+
import java.util.LinkedList;
19+
import java.util.List;
20+
21+
/**
22+
*
23+
* @author Robert Merget <[email protected]>
24+
*/
25+
public class BleichenbacherProbe extends TLSProbe {
26+
27+
public BleichenbacherProbe(ScannerConfig config) {
28+
super(ProbeType.BLEICHENBACHER, config);
29+
}
30+
31+
@Override
32+
public ProbeResult call() {
33+
LOGGER.debug("Starting BleichenbacherProbe");
34+
BleichenbacherCommandConfig bleichenbacherConfig = new BleichenbacherCommandConfig(getScannerConfig().getGeneralDelegate());
35+
ClientDelegate delegate = (ClientDelegate) bleichenbacherConfig.getDelegate(ClientDelegate.class);
36+
delegate.setHost(getScannerConfig().getClientDelegate().getHost());
37+
BleichenbacherAttacker attacker = new BleichenbacherAttacker(bleichenbacherConfig);
38+
Boolean vulnerable = attacker.isVulnerable();
39+
TLSCheck check = new TLSCheck(vulnerable, CheckType.ATTACK_BLEICHENBACHER, 10);
40+
List<TLSCheck> checkList = new LinkedList<>();
41+
checkList.add(check);
42+
return new ProbeResult(getType(), new LinkedList<ResultValue>(), checkList);
43+
44+
}
45+
46+
}

src/main/java/de/rub/nds/tlsscanner/probe/HeartbleedProbe.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,18 @@
88
*/
99
package de.rub.nds.tlsscanner.probe;
1010

11+
import de.rub.nds.tlsattacker.attacks.config.HeartbleedCommandConfig;
12+
import de.rub.nds.tlsattacker.attacks.config.PaddingOracleCommandConfig;
13+
import de.rub.nds.tlsattacker.attacks.impl.HeartbleedAttacker;
14+
import de.rub.nds.tlsattacker.attacks.impl.PaddingOracleAttacker;
15+
import de.rub.nds.tlsattacker.core.config.delegate.ClientDelegate;
1116
import de.rub.nds.tlsscanner.config.ScannerConfig;
1217
import de.rub.nds.tlsscanner.report.ProbeResult;
18+
import de.rub.nds.tlsscanner.report.ResultValue;
19+
import de.rub.nds.tlsscanner.report.check.CheckType;
20+
import de.rub.nds.tlsscanner.report.check.TLSCheck;
21+
import java.util.LinkedList;
22+
import java.util.List;
1323

1424
/**
1525
*
@@ -23,7 +33,19 @@ public HeartbleedProbe(ScannerConfig config) {
2333

2434
@Override
2535
public ProbeResult call() {
26-
throw new UnsupportedOperationException("Not supported yet.");
36+
LOGGER.debug("Starting HeartbleedProbe");
37+
HeartbleedCommandConfig heartbleedConfig = new HeartbleedCommandConfig(getScannerConfig().getGeneralDelegate());
38+
ClientDelegate delegate = (ClientDelegate) heartbleedConfig.getDelegate(ClientDelegate.class);
39+
delegate.setHost(getScannerConfig().getClientDelegate().getHost());
40+
HeartbleedAttacker attacker = new HeartbleedAttacker(heartbleedConfig);
41+
Boolean vulnerable = attacker.isVulnerable();
42+
if (vulnerable == null) {
43+
vulnerable = false;
44+
}
45+
TLSCheck check = new TLSCheck(vulnerable, CheckType.ATTACK_HEARTBLEED, 10);
46+
List<TLSCheck> checkList = new LinkedList<>();
47+
checkList.add(check);
48+
return new ProbeResult(getType(), new LinkedList<ResultValue>(), checkList);
2749
}
2850

2951
}

src/main/java/de/rub/nds/tlsscanner/probe/PaddingOracleProbe.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,16 @@
88
*/
99
package de.rub.nds.tlsscanner.probe;
1010

11+
import de.rub.nds.tlsattacker.attacks.config.PaddingOracleCommandConfig;
12+
import de.rub.nds.tlsattacker.attacks.impl.PaddingOracleAttacker;
13+
import de.rub.nds.tlsattacker.core.config.delegate.ClientDelegate;
1114
import de.rub.nds.tlsscanner.config.ScannerConfig;
1215
import de.rub.nds.tlsscanner.report.ProbeResult;
16+
import de.rub.nds.tlsscanner.report.ResultValue;
17+
import de.rub.nds.tlsscanner.report.check.CheckType;
18+
import de.rub.nds.tlsscanner.report.check.TLSCheck;
19+
import java.util.LinkedList;
20+
import java.util.List;
1321

1422
/**
1523
*
@@ -23,7 +31,16 @@ public PaddingOracleProbe(ScannerConfig config) {
2331

2432
@Override
2533
public ProbeResult call() {
26-
throw new UnsupportedOperationException("Not supported yet.");
34+
LOGGER.debug("Starting BleichenbacherProbe");
35+
PaddingOracleCommandConfig paddingOracleConfig = new PaddingOracleCommandConfig(getScannerConfig().getGeneralDelegate());
36+
ClientDelegate delegate = (ClientDelegate) paddingOracleConfig.getDelegate(ClientDelegate.class);
37+
delegate.setHost(getScannerConfig().getClientDelegate().getHost());
38+
PaddingOracleAttacker attacker = new PaddingOracleAttacker(paddingOracleConfig);
39+
Boolean vulnerable = attacker.isVulnerable();
40+
TLSCheck check = new TLSCheck(vulnerable, CheckType.ATTACK_PADDING, 10);
41+
List<TLSCheck> checkList = new LinkedList<>();
42+
checkList.add(check);
43+
return new ProbeResult(getType(), new LinkedList<ResultValue>(), checkList);
2744
}
2845

2946
}

src/main/java/de/rub/nds/tlsscanner/probe/ProbeType.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public enum ProbeType {
1717
CIPHERSUITE_ORDER,
1818
CIPHERSUITE,
1919
HEARTBLEED,
20+
BLEICHENBACHER,
2021
NAMED_CURVES,
2122
PADDING_ORACLE,
2223
PROTOCOL_VERSION,

src/main/java/de/rub/nds/tlsscanner/report/check/CheckType.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,7 @@ public enum CheckType {
2727
CIPHERSUITEORDER_ENFORCED,
2828
PROTOCOLVERSION_SSL2,
2929
PROTOCOLVERSION_SSL3,
30+
ATTACK_PADDING,
31+
ATTACK_BLEICHENBACHER,
32+
ATTACK_HEARTBLEED,
3033
}

0 commit comments

Comments
 (0)