Skip to content

Commit 6c9d707

Browse files
author
Matthew Bryant (mandatory)
committed
update
1 parent 6e7b09e commit 6c9d707

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

README.md

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,44 @@
11
# CursedChrome
22

33
<p align="center">
4-
<img src="./images/icon.png" /><img src="./images/icon.png" /><img src="./images/icon.png" /><img src="./images/icon.png" /><img src="./images/icon.png" />
4+
<img src="./images/doll.svg" height="128" width="128" /><img src="./images/doll.svg" height="128" width="128" /><img src="./images/doll.svg" height="128" width="128" /><img src="./images/doll.svg" height="128" width="128" /><img src="./images/doll.svg" height="128" width="128" />
55
</p>
66

7-
## What is it?
7+
# What is it?
88
A ([cursed](https://knowyourmeme.com/memes/cursed-image)) Chrome-extension implant that turns victim Chrome browsers into fully-functional HTTP proxies. By using the proxies this tool creates you can browse the web authenticated as your victim for all of their websites.
99

10-
More and more companies are moving toward the ["BeyondCorp"](https://en.wikipedia.org/wiki/BeyondCorp) model (e.g. no flat internal network, zero trust everything). This is usually implemented via a [reverse proxy/OAuth wall](https://github.com/bitly/oauth2_proxy) gating access to services, eliminating the need for a VPN. With more and more access becoming strictly available via the web browser, having a way to easily hijack and use victim's web sessions becomes an ever increasing necessity.
10+
# Why make it?
1111

12-
This is especially useful for locked down orgs that make use of [Chrome OS](https://en.wikipedia.org/wiki/Chrome_OS) where traditional malware can't be used at all. It's also steathy, as all requests will have the appropriate source-IP, cookies, client-certificates, etc since it's being proxying directly through the victim's browser.
12+
More and more companies are moving toward the ["BeyondCorp"](https://en.wikipedia.org/wiki/BeyondCorp) model (e.g. no flat internal network, zero trust everything). This is usually implemented via a [reverse proxy/OAuth wall](https://github.com/bitly/oauth2_proxy) gating access to services, eliminating the need for a VPN. As access and tooling move towards being strictly available via the web browser, having a way to easily hijack and use victim's web sessions becomes an ever increasing necessity.
1313

14-
## Screenshots
14+
This is also especially useful for locked down orgs that make use of [Chrome OS](https://en.wikipedia.org/wiki/Chrome_OS) where traditional malware can't be used at all. It's also steathy, as all requests will have the appropriate source-IP, cookies, client-certificates, etc since it's being proxying directly through the victim's browser.
1515

16-
### Web Admin Panel
16+
# Screenshots
17+
18+
## Web Admin Panel
1719
![](./images/cursed-chrome-web-panel.png)
1820

19-
### Browsing Websites Logged In as Victim (using Firefox with HTTP Proxy)
21+
## Browsing Websites Logged In as Victim (using Firefox with HTTP Proxy)
2022
![](./images/browsing-as-victim-browser.png)
2123

22-
## (Rough) Infrastructure Diagram (`docker-compose` Used)
24+
# (Rough) Infrastructure Diagram (`docker-compose` Used)
2325

2426
![](./images/cursedchrome-diagram.png)
2527

26-
### Ports & Listening Interfaces
28+
# Ports & Listening Interfaces
2729

2830
- `127.0.0.1:8080`: HTTP proxy server (using one of the credentials in the admin panel, you can auth to a specific victim's Chrome browser via this HTTP proxy server). You also need to install the generated CA available via the admin panel before using this.
2931
- `127.0.0.1:4343`: Websocket server, used for communicating with victim Chrome instances to transfer HTTP requests for proxying and sending commands.
3032
- `127.0.0.1:8118`: Admin web panel for viewing victim Chrome instances and getting HTTP proxy credentials.
3133

3234

33-
## Requirements
35+
# Requirements
3436

3537
* [`docker`](https://docs.docker.com/get-docker/) and [`docker-compose`](https://docs.docker.com/compose/install/)
3638
* Chrome web browser
3739

40+
# Installation & Setup
41+
3842
## Setting Up the Backend
3943

4044
The backend is entirely dockerized and can be setup by running the following commands:
@@ -74,6 +78,8 @@ To install the example chrome extension implant, do the following:
7478

7579
After you've install the extension it will show up on the admin control panel at `http://localhost:8118`.
7680

81+
# Production/Operational Usage
82+
7783
## Modifying Implant Extension
7884

7985
An example implant extension has been included under the `extension/` folder. This extension has the `extension/src/bg/background.js` file which has the extension-side of the implant that connects to the service via WebSocket to proxy requests through the victim's web browser.
@@ -101,13 +107,13 @@ In a real world attack, this extension code would be used in one of the followin
101107

102108
These topics are outside of the scope of this README, but eventually will be covered separately.
103109

104-
## Notes on Production Deployments
110+
## Further Notes on Production Deployments
105111

106112
* You will likely want to run an Nginx server with a valid HTTPS certificate doing a `proxy_pass` to the WebSocket server (running on `127.0.0.1:4343`). Then you'll have TLS-encrypted websocket traffic.
107113
* For a more secure setup, don't expose the HTTP proxy & and admin panel to the Internet directly. Opt for SSL port-forwarding or using a bastion server to connect to it.
108114
* For situations with a large number of victims/bots/implants running, you can horizontally scale out the CursedChrome server as wide as you need to. The socket handling is completely decoupled via `redis`, so it can suppose (theoretically) tens of thousands of concurrent clients.
109115

110116
## Attributions
111117

112-
* The icon used for the web panel favicon and the example Chrome implant extension is provided by Freepik from `www.flaticon.com`.
113-
* The [AnyProxy source code](https://github.com/alibaba/anyproxy) was heavily modified and used for part of this project.
118+
* The [AnyProxy source code](https://github.com/alibaba/anyproxy) was heavily modified and used for part of this project.
119+
* The icon for this project was designed by [`monochromeye`](https://www.fiverr.com/monochromeye) on Fiverr (paid), if you're looking for graphic design work check her services out.

images/doll.svg

Lines changed: 3 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)