Skip to content

Commit

Permalink
🦎
Browse files Browse the repository at this point in the history
  • Loading branch information
qeeqbox committed Jun 15, 2020
1 parent 0291391 commit 4e2f91e
Show file tree
Hide file tree
Showing 42 changed files with 5,502 additions and 0 deletions.
Binary file added .DS_Store
Binary file not shown.
101 changes: 101 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<p align="center"> <img src="https://raw.githubusercontent.com/qeeqbox/chameleon/master/readme/chameleonlogo.png"></p>

#
[![Generic badge](https://img.shields.io/badge/dynamic/json.svg?url=https://raw.githubusercontent.com/qeeqbox/chameleon/master/info&label=version&query=$.version&colorB=blue)](https://github.com/qeeqbox/chameleon/blob/master/changes.md) [![Generic badge](https://img.shields.io/badge/dynamic/json.svg?url=https://raw.githubusercontent.com/qeeqbox/chameleon/master/info&label=docker-compose&query=$.dockercompose&colorB=green)](https://github.com/qeeqbox/chameleon/blob/master/changes.md)

Customizable honeypots (DNS, HTTP Proxy, HTTP, HTTPS, SSH, POP3, IMAP, STMP, RDP, VNC, SMB, SOCK5, TELNET and Postgres) for monitoring network traffic, bots activities and loose credentials

## React Web Interface
<img src="https://raw.githubusercontent.com/qeeqbox/chameleon/master/readme/introv.png" style="max-width:768px"/>

## General Features
- Modular approach (honeypots run as scripts or imported as objects)
- Most honeypots serve as servers (Only a few that emulate the application layer protocols)
- Settings servers with username, password and banner (Default username and password are test)
- ICMP, DNS TCP and UDP payloads are parsed and check against common patterns
- Visualized Grafana interfaces for monitoring the results (Refresh time set to 5 seconds)
- Unstructured and structured logs are parsed and inserted into Postgres
- All ports are opened and monitored by default
- Easy automation and can be deployed on AWS ec2
- & More features to Explore

## Roadmap
- ~~Refactoring logging~~
- Code Cleanup
- Adding error response
- Implementing the rest of servers
- Adding some detection logic to the sinffer
- Adding a control panel

## Example
#### Easy to run and configure (Default configuration)

from ssh_server import QSSHServer
qsshserver = QSSHServer()
qsshserver.run_server()

#### Or, edit the configuration
'''python
ip= String E.g. 0.0.0.0
port= Int E.g. 22
username= String E.g. Test
password= String E.g. Test
mocking= Boolean or String E.g OpenSSH 7.0
logs= String E.g db, terminal or all

qsshserver = QSSHServer(ip="0.0.0.0",port=22,username="Test",password="Test",mocking="OpenSSH 7.0",logs="terminal")
qsshserver = QSSHServer()
'''
## Install and run
#### On ubuntu 18 or 19 System (Auto-configure test)
'''bash
git clone https://github.com/qeeqbox/chameleon.git
cd chameleon
chmod +x ./run.sh
./run.sh auto_test
open localhost:3000 (username and passowrd: admin)
'''

#### On ubuntu 18 or 19 System (Auto-configure dev)
'''bash
git clone https://github.com/qeeqbox/chameleon.git
cd chameleon
chmod +x ./run.sh
./run.sh auto_dev
open localhost:3000 (username and passowrd in the docker-compose-dev.yml file)
'''

## Resources
- Twisted documentation
- Impacket documentation
- Grafana documentation
- Expert Twisted
- robertheaton
- Please let me know if i missed a resource or dependency
```
## Other Licenses
By using this framework, you are accepting the license terms of each package listed below:
- https://github.com/grafana/grafana/blob/master/LICENSE
- https://www.tcpdump.org/license.html
- https://nmap.org/book/man-legal.html
- https://www.psycopg.org/license/
- https://github.com/tutumcloud/dnsutils/blob/master/LICENSE
- https://github.com/secdev/scapy/blob/master/LICENSE
- https://github.com/al45tair/netifaces/blob/master/LICENSE
- https://github.com/giampaolo/pyftpdlib/blob/master/LICENSE
- https://docs.sqlalchemy.org/en/13/copyright.html
- https://github.com/yaml/pyyaml/blob/master/LICENSE
- https://github.com/paramiko/paramiko/blob/master/LICENSE
- https://github.com/SecureAuthCorp/impacket/blob/master/LICENSE
- https://twistedmatrix.com/trac/
- https://github.com/citronneur/rdpy/blob/master/LICENSE
- https://github.com/giampaolo/psutil/blob/master/LICENSE
- https://github.com/psf/requests/blob/master/LICENSE
- https://github.com/FreeRDP/FreeRDP/blob/master/LICENSE
- https://github.com/filmicpro/SMBClient/blob/master/LICENSE
- https://github.com/TigerVNC/tigervnc/blob/master/LICENCE.TXT
## Disclaimer\Notes
- Almost all servers are stripped-down - You can adjust that as needed based on the client
- If you are interested in adopting some features in your project - please mention this source somewhere in your project
62 changes: 62 additions & 0 deletions docker-compose-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
version: '2'

services:
backend_api:
build: ./honeypot
restart: always
cap_add:
- NET_ADMIN
privileged: true
depends_on:
- postgres
networks:
- backend
- frontend
expose:
- '21'
- '22'
- '23'
- '25'
- '53'
- '80'
- '110'
- '143'
- '443'
- '445'
- '1080'
- '3389'
- '5900'
- '8080'

grafana:
build: ./grafana
container_name: grafana
command: ./import.sh
ports:
- '3000:3000'
links:
- postgres
depends_on:
- backend_api
networks:
- backend
- frontend
environment:
GF_SECURITY_ADMIN_USER: changeme457f6460cb287
GF_SECURITY_ADMIN_PASSWORD: changemed23b8cc6a20e0

postgres:
image: postgres:9.4.4
container_name: postgres
restart: always
networks:
- backend
environment:
POSTGRES_USER: changeme027a088931d22
POSTGRES_PASSWORD: changeme0f40773877963

networks:
frontend:
internal: false
backend:
internal: true
59 changes: 59 additions & 0 deletions docker-compose-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
version: '3.1'

services:
backend_api:
build: ./honeypot
restart: always
cap_add:
- NET_ADMIN
privileged: true
depends_on:
- postgres
networks:
- backend
- frontend

node:
build:
context: .
dockerfile: ./node-Dockerfile
command: /honeypot/testing.sh
cap_add:
- NET_ADMIN
privileged: true
depends_on:
- backend_api
networks:
- backend
- frontend

grafana:
build: ./grafana
container_name: grafana
command: ./import.sh
ports:
- '3000:3000'
links:
- postgres
depends_on:
- backend_api
networks:
- backend
- frontend

postgres:
image: postgres:9.6
container_name: postgres
restart: always
networks:
- backend
command: -p 9999
environment:
POSTGRES_USER: changeme027a088931d22
POSTGRES_PASSWORD: changeme0f40773877963

networks:
frontend:
internal: false
backend:
internal: true
4 changes: 4 additions & 0 deletions grafana/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
FROM grafana/grafana:latest
COPY ./postgres.yml /etc/grafana/provisioning/datasources/postgres.yml
COPY ./dashboards.yml /etc/grafana/provisioning/dashboards/dashboards.yml
COPY ./chameleon.json /var/lib/grafana/dashboards/chameleon.json
Loading

0 comments on commit 4e2f91e

Please sign in to comment.