Skip to content

Commit 41824be

Browse files
authored
Merge pull request #551 from RUB-NDS/lisaheitkamp-patch-1-1
Update README.md
2 parents 64d5cc6 + 681e0e8 commit 41824be

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

README.md

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# TLS-Attacker
22

3-
[![release](https://img.shields.io/badge/Release-v2.6-blue.svg)](https://github.com/RUB-NDS/TLS-Attacker/releases)
3+
[![release](https://img.shields.io/badge/Release-v2.8-blue.svg)](https://github.com/RUB-NDS/TLS-Attacker/releases)
44
![licence](https://img.shields.io/badge/License-Apachev2-brightgreen.svg)
55
[![travis](https://travis-ci.org/RUB-NDS/TLS-Attacker.svg?branch=master)](https://travis-ci.org/RUB-NDS/TLS-Attacker)
66

@@ -46,20 +46,22 @@ Although these example applications are very powerful in itself, TLS-Attacker un
4646

4747
## Code Structure
4848
TLS-Attacker consists of several (maven) projects:
49+
- Attacks: Implementation of some well-known attacks and vulnerability tests
50+
- TLS-Client: The client example application
4951
- TLS-Core: The protocol stack and heart of TLS-Attacker
52+
- TLS-Forensic: Forensic analysis of TLS traffic
53+
- TLS-Mitm: A prototype for MitM workflows
54+
- TLS-Server: The server example application
5055
- Transport: Transport utilities for lower layers
5156
- Utils: A collection of utility classes
52-
- TLS-Client: The client example application
53-
- TLS-Server: The server example application
54-
- Attacks: Implementation of some well-known attacks and vulnerability tests.
55-
- TLS-Mitm: A prototype for MitM workflows
57+
5658
![TLS-Attacker design](https://github.com/RUB-NDS/TLS-Attacker/blob/master/resources/figures/design.png)
5759

5860
You can find more information about these modules in the Wiki.
5961

6062
## Features
6163
Currently, the following features are supported:
62-
- SSL 3, TLS versions 1.0 (RFC-2246), 1.1 (RFC-4346), 1.2 (RFC-5246), and 1.3 (RFC 8446)
64+
- SSL 3, TLS versions 1.0 (RFC-2246), 1.1 (RFC-4346), 1.2 (RFC-5246), and 1.3 (RFC-8446)
6365
- SSL 2 (Partially supported)
6466
- (EC)DH(E), RSA, PSK, SRP, GOST and ANON key exchange algorithms
6567
- CBC, AEAD and Streamciphers (AES, CAMELLIA, DES, 3DES, IDEA, RC2, ARIA, GOST_28147_CNT_IMIT, RC4, SEED, NULL)
@@ -77,15 +79,16 @@ Currently, the following features are supported:
7779
## Usage
7880
Here we present some very simple examples on using TLS-Attacker.
7981

80-
First, you need to start a TLS server (*please do not use public servers*). For example, you can use an OpenSSL test server:
82+
First, you need to start a TLS server (*please do not use public servers*). Please run the keygen.sh script if not done before. For example, you can use an OpenSSL test server:
8183
```
8284
$ cd TLS-Attacker/resources
8385
$ openssl s_server -key rsa1024key.pem -cert rsa1024cert.pem
8486
```
85-
This command starts a TLS server on a port 4433 (please run the keygen.sh script if not done before).
87+
This command starts a TLS server on a port 4433.
8688

8789
If you want to connect to a server, you can use this command:
8890
```bash
91+
$ cd TLS-Attacker/apps
8992
$ java -jar TLS-Client.jar -connect localhost:4433
9093
```
9194
*Note: If this Handshake fails, it is probably because you did not specify a concrete cipher suite. TLS-Attacker will not completely respect server selected cipher suites.*
@@ -100,15 +103,14 @@ The Attacks module contains some attacks, you can for example test for the paddi
100103
$ java -jar Attacks.jar padding_oracle -connect localhost:4433
101104
```
102105

103-
In case you are a more experienced developer, you can create your own TLS message flow. By writing Java code. For example:
106+
In case you are a more experienced developer, you can create your own TLS message flow by writing Java code. For example:
104107
```java
105108
Config config = Config.createConfig();
106109
WorkflowTrace trace = new WorkflowTrace();
107110
trace.addTlsAction(new SendAction(new ClientHelloMessage()));
108111
trace.addTlsAction(new ReceiveAction(new ServerHelloMessage()));
109112
State state = new State(config, trace);
110-
DefaultWorkflowExecutor executor = new
111-
DefaultWorkflowExecutor(state);
113+
DefaultWorkflowExecutor executor = new DefaultWorkflowExecutor(state);
112114
executor.executeWorkflow();
113115
```
114116
TLS-Attacker uses the concept of WorkflowTraces to define a "TLS message flow". A WorkflowTrace consists of a list of actions which are then executed one after the other.
@@ -123,7 +125,7 @@ We know many of you hate Java. Therefore, you can also use an XML structure and
123125
<messages>
124126
<ClientHello>
125127
<extensions>
126-
<ECPointFormat/>#
128+
<ECPointFormat/>
127129
<HeartbeatExtension/>
128130
<EllipticCurves/>
129131
</extensions>
@@ -158,7 +160,7 @@ We know many of you hate Java. Therefore, you can also use an XML structure and
158160
</Receive>
159161
</workflowTrace>
160162
```
161-
Given this XML structure is located in workflow.xml, you would just need to execute:
163+
Given this XML structure is located in TLS-Attacker/apps/workflow.xml, you would just need to execute:
162164
```bash
163165
$ java -jar TLS-Client.jar -connect [host]:[port] -workflow_input workflow.xml
164166
```
@@ -182,7 +184,7 @@ We can of course use this concept by constructing our TLS workflows. Imagine you
182184
<messages>
183185
<ClientHello>
184186
<extensions>
185-
<ECPointFormat/>#
187+
<ECPointFormat/>
186188
<HeartbeatExtension/>
187189
<EllipticCurves/>
188190
</extensions>
@@ -221,13 +223,13 @@ We can of course use this concept by constructing our TLS workflows. Imagine you
221223
<payloadLength>
222224
<integerExplicitValueModification>
223225
<explicitValue>20000</explicitValue>
224-
</integerExplicitValueModification>
226+
</integerExplicitValueModification>
225227
</payloadLength>
226228
</Heartbeat>
227229
</messages>
228230
</Send>
229231
<Receive>
230-
<Heartbeat/>
232+
<Heartbeat/>
231233
</Receive>
232234
</workflowTrace>
233235
```
@@ -269,7 +271,7 @@ TLS-Attacker was furthermore used in the following scientific papers and project
269271
- Tibor Jager, Jörg Schwenk, Juraj Somorovsky. On the Security of TLS 1.3 and QUIC Against Weaknesses in PKCS#1 v1.5 Encryption. ACM CCS'15. https://www.nds.rub.de/research/publications/ccs15/
270272
- Tibor Jager, Jörg Schwenk, Juraj Somorovsky. Practical Invalid Curve Attacks on TLS-ECDH. ESORICS'15. https://www.nds.rub.de/research/publications/ESORICS15/
271273
- Quellcode-basierte Untersuchung von kryptographisch relevanten Aspekten der OpenSSL-Bibliothek. https://www.bsi.bund.de/DE/Publikationen/Studien/OpenSSL-Bibliothek/opensslbibliothek.html
272-
- Entwicklung einer sicheren Kryptobibliothek. https://www.bsi.bund.de/DE/Themen/Kryptotechnologie/Kryptobibliothek/kryptobibliothek_node.html
274+
- Entwicklung einer sicheren Kryptobibliothek. https://www.bsi.bund.de/DE/Themen/Kryptografie_Kryptotechnologie/Kryptografie/Kryptobibliothek/kryptobibliothek_node.html
273275
- Yuan Xiao, Mengyuan Li, Sanchuan Chen, Yinqian Zhang. Stacco: Differentially Analyzing Side-Channel Traces for Detecting SSL/TLS Vulnerabilities in Secure Enclaves. CCS'17. http://web.cse.ohio-state.edu/~zhang.834/papers/ccs17a.pdf
274276

275277
If you have any research ideas or need support feel free to contact us on Twitter (@ic0nz1 , @jurajsomorovsky ) or at https://www.hackmanit.de/.

0 commit comments

Comments
 (0)