Skip to content

Commit 788ca60

Browse files
committed
README: prepare for 0.1.0
Signed-off-by: Marco Wang <[email protected]>
1 parent c25b045 commit 788ca60

File tree

1 file changed

+80
-19
lines changed

1 file changed

+80
-19
lines changed

README.md

+80-19
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,102 @@
11
# CRAXplusplus (CRAX++)
22

3-
version: early alpha
3+
Modular **Automatic Exploit Generator (AEG)** using selective symbolic execution.
44

5-
CRAX++ is being actively developed by:
5+
version: 0.1.0
66

7-
* Marco Wang \<[email protected]\>
7+
CRAX++ is maintained by:
8+
9+
* Marco Wang \<[email protected]\>
810
* Tim Yang \<[email protected]\>
911

10-
<br>
12+
## Core Features
13+
14+
* Leverages [S2E 2.0](https://github.com/S2E/s2e) to **concolically execute x86_64 linux binaries** and **generate exploit scripts**
15+
* Robust against modern exploit mitigations (e.g., ASLR, NX, PIE, Canary)
16+
* Custom modules (plugins) support
17+
* Custom exploitation techniques (ROP formulae) support
18+
* ...
19+
20+
## Quick Start
21+
22+
This section is currently WIP, but we're working very hard to get this section done. Please come back later.
23+
24+
Introduction
25+
26+
* [Installation](Documentation/BUILD.md) - outdated
27+
* [Usage]()
28+
* [What is a Module?]()
29+
* [What is a Technique?]()
30+
31+
Extending CRAX++
32+
33+
* signals in S2E (libfsigc++)
34+
* (before/after) Instruction hooks
35+
* (before/after) Syscall hooks
36+
* Register API
37+
* Memory API
38+
* Disassembler API (capstone)
39+
* Virtual Memory Map API
40+
* [How to add a Module]()
41+
* [How to add a Technique]()
42+
43+
## Quick Example
44+
45+
* ASLR + NX + PIE + Canary
46+
* Exploit: [examples/aslr-nx-pie-canary/exploit_9.py](examples/aslr-nx-pie-canary/exploit_9.py)
47+
48+
```c
49+
#include <stdio.h>
50+
#include <unistd.h>
51+
52+
int main() {
53+
setvbuf(stdin, NULL, _IONBF, 0);
54+
setvbuf(stdout, NULL, _IONBF, 0);
1155

12-
## Overview
56+
char buf[0x18];
57+
printf("what's your name: ");
58+
read(0, buf, 0x80);
1359

14-
CRAX (2012) [[Paper](https://ir.nctu.edu.tw/bitstream/11536/24012/1/000332520700022.pdf)] [[Repo](https://github.com/SQLab/CRAX/tree/workable)], originally developed by SQLab, NCTU (led by Prof. Shih-Kun Huang) back in 2012, was capable of generating exploits for large-scale applications (e.g., Microsoft Windows and mplayer) using selective symbolic execution (i.e. concolic execution).
60+
printf("Hello, %s. Your comment: ", buf);
61+
read(0, buf, 0x80);
1562

16-
CRAX++ (2021) is the new version of the original CRAX.
63+
printf("Thanks! We've received it: %s\n", buf);
64+
read(0, buf, 0x30);
65+
}
66+
```
1767

18-
<img src="/Documentation/overview.png">
68+
## Motivation
1969

20-
## Features
70+
#### CRAX (2012), Software CRash analysis for Automatic eXploit generation
2171

22-
WIP...
72+
[[Paper](https://ir.nctu.edu.tw/bitstream/11536/24012/1/000332520700022.pdf)] [[Repo](https://github.com/SQLab/CRAX/tree/workable)] | [[Article](https://skhuang.web.nctu.edu.tw/research/)]
2373

24-
## Build
74+
> This research was started back in ~1992. When I was serving as a Ph.D TA at the 3F server room of National Chiao Tung University, the Internet was rapidly evolving, during which black hat hackers started to emerge. As the administrators of the servers, we had to engage in combat against malicious hackers from the wild in order to protect our digital properties from attacks. Over time, we started to be aware that all these problems stemmed from software bugs.
75+
>
76+
> Back then, we lacked the ability and tools to analyze bugs, but things had started to change since 2005. We started to make good progress with bug analysis as well as the development of software testing tools, and until 2012, we've successfully developed CRAX (an automatic exploit generator built upon S2E 1.0) which was capable of automatically generating exploits for unix media player (mplayer, ~500,000 loc), web browsers (e.g., firefox and Internet Explorer) and Microsoft Word using selective symbolic execution.
77+
>
78+
> -- Prof. Shih-Kun Huang ([@skhuang](https://github.com/skhuang)), National Yang Ming Chiao Tung University
2579
26-
To build CRAX++, please refer to the following documentation:
27-
* [Official S2E documentation](https://s2e.systems/docs) for how to build and use S2E
28-
* [BUILD.md](Documentation/BUILD.md) for build instructions written specifically for CRAX++
80+
## Trophies
2981

30-
## Extending CRAXplusplus
82+
All binaries are evaluted on Ubuntu 20.04.1 (5.11.0-46-generic). See the `example` directory for details.
3183

32-
### Modules
84+
| Binary | ASLR | NX | PIE | Canary | Full RELRO | Exploit Script |
85+
| --- | --- | --- | --- | --- | --- | --- |
86+
| survey |||||| WIP |
87+
| [aslr-nx-pie-canary](examples/aslr-nx-pie-canary) ||||| | [Exploit](examples/aslr-nx-pie-canary/exploit_9.py) |
88+
| [aslr-nx-pie](examples/aslr-nx-pie) |||| | | [Exploit](examples/aslr-nx-pie/exploit_2.py) |
89+
| [aslr-nx-canary](examples/aslr-nx-canary) ||| || | [Exploit](examples/aslr-nx-canary/exploit_2.py) |
90+
| [aslr-nx](examples/aslr-nx) ||| | | | [Exploit](examples/aslr-nx/exploit_0.py) |
91+
| [NTU Computer Security 2017 Fall: readme (150 pts)](examples/readme) ||| | | | [Exploit](examples/readme/exploit_0.py) |
92+
| [pwnable.tw: unexploitable (500 pts)](https://pwnable.tw/challenge/#20) ||| | | | [Exploit](examples/unexploitable/exploit_0.py) |
3393

34-
See [Writing Your Own Module](Documentation/MODULE.md).
94+
## Special Thanks (Listed Lexicographically)
3595

36-
### Techniques
96+
This work is impossible without:
3797

38-
WIP...
98+
* [Balsn CTF Team](https://github.com/balsn) and Network Security Lab, NTU
99+
* Software Quality Lab, NYCU
39100

40101
## License
41102

0 commit comments

Comments
 (0)