From a1af21609ffadee78110b3116c94f42b692f4a73 Mon Sep 17 00:00:00 2001 From: iphelix Date: Wed, 3 Aug 2016 08:51:21 +0100 Subject: [PATCH] First release --- LICENSE.txt | 190 ++++ README.md | 742 +++++++++++++++- fakenet.spec | 36 + fakenet/__init__.py | 0 fakenet/configs/burp.ini | 51 ++ fakenet/configs/debug.ini | 55 ++ fakenet/configs/default.ini | 177 ++++ fakenet/defaultFiles/FakeNet.gif | Bin 0 -> 24032 bytes fakenet/defaultFiles/FakeNet.html | 37 + fakenet/defaultFiles/FakeNet.ico | Bin 0 -> 83892 bytes fakenet/defaultFiles/FakeNet.jpg | Bin 0 -> 26068 bytes fakenet/defaultFiles/FakeNet.pdf | Bin 0 -> 45450 bytes fakenet/defaultFiles/FakeNet.png | Bin 0 -> 57748 bytes fakenet/defaultFiles/FakeNetMini.exe | Bin 0 -> 32768 bytes fakenet/diverters/__init__.py | 0 fakenet/diverters/__init__.pyc | Bin 0 -> 145 bytes fakenet/diverters/windows.py | 663 ++++++++++++++ fakenet/diverters/windows.pyc | Bin 0 -> 17336 bytes fakenet/diverters/winutil.py | 1195 ++++++++++++++++++++++++++ fakenet/diverters/winutil.pyc | Bin 0 -> 32016 bytes fakenet/fakenet.py | 217 +++++ fakenet/lib/32/WinDivert.dll | Bin 0 -> 12800 bytes fakenet/lib/32/WinDivert32.sys | Bin 0 -> 31408 bytes fakenet/lib/64/WinDivert.dll | Bin 0 -> 15872 bytes fakenet/lib/64/WinDivert64.sys | Bin 0 -> 38064 bytes fakenet/listeners/DNSListener.py | 222 +++++ fakenet/listeners/DNSListener.pyc | Bin 0 -> 8118 bytes fakenet/listeners/HTTPListener.py | 292 +++++++ fakenet/listeners/HTTPListener.pyc | Bin 0 -> 10214 bytes fakenet/listeners/RawListener.py | 199 +++++ fakenet/listeners/RawListener.pyc | Bin 0 -> 7046 bytes fakenet/listeners/SMTPListener.py | 176 ++++ fakenet/listeners/SMTPListener.pyc | Bin 0 -> 5931 bytes fakenet/listeners/__init__.py | 7 + fakenet/listeners/__init__.pyc | Bin 0 -> 327 bytes fakenet/listeners/privkey.pem | 47 + fakenet/listeners/server.pem | 18 + fakenet/privkey.pem | 47 + fakenet/server.pem | 18 + resources/fakenet.ico | Bin 0 -> 83892 bytes resources/fakenet.png | Bin 0 -> 83636 bytes setup.py | 42 + 42 files changed, 4422 insertions(+), 9 deletions(-) create mode 100644 LICENSE.txt create mode 100644 fakenet.spec create mode 100644 fakenet/__init__.py create mode 100644 fakenet/configs/burp.ini create mode 100644 fakenet/configs/debug.ini create mode 100644 fakenet/configs/default.ini create mode 100644 fakenet/defaultFiles/FakeNet.gif create mode 100644 fakenet/defaultFiles/FakeNet.html create mode 100644 fakenet/defaultFiles/FakeNet.ico create mode 100644 fakenet/defaultFiles/FakeNet.jpg create mode 100644 fakenet/defaultFiles/FakeNet.pdf create mode 100644 fakenet/defaultFiles/FakeNet.png create mode 100644 fakenet/defaultFiles/FakeNetMini.exe create mode 100644 fakenet/diverters/__init__.py create mode 100644 fakenet/diverters/__init__.pyc create mode 100644 fakenet/diverters/windows.py create mode 100644 fakenet/diverters/windows.pyc create mode 100644 fakenet/diverters/winutil.py create mode 100644 fakenet/diverters/winutil.pyc create mode 100644 fakenet/fakenet.py create mode 100644 fakenet/lib/32/WinDivert.dll create mode 100644 fakenet/lib/32/WinDivert32.sys create mode 100644 fakenet/lib/64/WinDivert.dll create mode 100644 fakenet/lib/64/WinDivert64.sys create mode 100644 fakenet/listeners/DNSListener.py create mode 100644 fakenet/listeners/DNSListener.pyc create mode 100644 fakenet/listeners/HTTPListener.py create mode 100644 fakenet/listeners/HTTPListener.pyc create mode 100644 fakenet/listeners/RawListener.py create mode 100644 fakenet/listeners/RawListener.pyc create mode 100644 fakenet/listeners/SMTPListener.py create mode 100644 fakenet/listeners/SMTPListener.pyc create mode 100644 fakenet/listeners/__init__.py create mode 100644 fakenet/listeners/__init__.pyc create mode 100644 fakenet/listeners/privkey.pem create mode 100644 fakenet/listeners/server.pem create mode 100644 fakenet/privkey.pem create mode 100644 fakenet/server.pem create mode 100644 resources/fakenet.ico create mode 100644 resources/fakenet.png create mode 100644 setup.py diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..4838749 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,190 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2016 Peter Kacherginsky + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index d71c0d4..991ea0c 100644 --- a/README.md +++ b/README.md @@ -14,15 +14,739 @@ by Andrew Honig and Michael Sikorski. The tool allows you to intercept and redirect all or specific network traffic while simulating legitimate network services. Using FakeNet-NG, malware analysts -can quickly identify malware’s functionality and capture network signatures. -Penetration testers and bug hunters will find FakeNet-NG’s configurable +can quickly identify malware's functionality and capture network signatures. +Penetration testers and bug hunters will find FakeNet-NG's configurable interception engine and modular framework highly useful when testing -application’s specific functionality and prototyping PoCs. +application's specific functionality and prototyping PoCs. -Release -======== +Installation +============ + +You can install FakeNet-NG in a few different ways. + +Stand-alone executable +---------------------- + +It is easiest to simply download the compiled version which can be obtained from +the releases page: + + https://www.github.com/fireeye/flare-fakenet-ng/releases + +Execute FakeNet-NG by running 'fakenet.exe' from the downloaded directory. + +This is the preferred method as it does not require you to install any +additional modules, which is ideal for a malware analysis machine. + +Installing module +----------------- + +Alternatively you can install FakeNet-NG as a python module using pip: + + pip install https://github.com/fireeye/flare-fakenet-ng/zipball/master + +Or by obtaining the latest source code and installing it manually: + + git clone https://www.github.com/fireeye/flare-fakenet-ng/ + +Change directory to the downloaded flare-fakenet-ng and run: + + python setup.py install + +Execute FakeNet-NG by running 'fakenet' in any directory. + +No installation +--------------- + +Finally if you would like to avoid installing FakeNet-NG and just want to run it +as is (e.g. for development), then you would need to obtain the source code and +install dependencies as follows: + +1) Install 64-bit or 32-bit Python 2.7.x for the 64-bit or 32-bit versions + of Windows respectively. + +2) Install Python dependencies: + + pip install pydivert + pip install dnslib + pip install dpkt + + *NOTE*: pydivert will also download and install WinDivert library and + driver in the `%PYTHONHOME%\DLLs` directory. FakeNet-NG bundles those + files so they are not necessary for normal use. + +2b) Optionally, you can install the following module used for testing: + + pip install requests + +3) Download the FakeNet-NG source code: + + git clone https://github.com/fireeye/flare-fakenet-ng + +Execute FakeNet-NG by running it with a Python interpreter: + + python fakenet.py + +Usage +===== + +The easiest way to run FakeNet-NG is to simply execute the provided +executable as an Administrator. You can provide `--help` command-line +parameter to get simple help: + + C:\tools\fakenet-ng>fakenet.exe --help + ______ _ ________ _ _ ______ _______ _ _ _____ + | ____/\ | |/ / ____| \ | | ____|__ __| | \ | |/ ____| + | |__ / \ | ' /| |__ | \| | |__ | |______| \| | | __ + | __/ /\ \ | < | __| | . ` | __| | |______| . ` | | |_ | + | | / ____ \| . \| |____| |\ | |____ | | | |\ | |__| | + |_|/_/ \_\_|\_\______|_| \_|______| |_| |_| \_|\_____| + + Version 1.0 + _____________________________________________________________ + Developed by + Peter Kacherginsky + FLARE (FireEye Labs Advanced Reversing Engineering) + _____________________________________________________________ + Usage: fakenet.py [options]: + + Options: + -h, --help show this help message and exit + -c FILE, --config-file=FILE + configuration filename + -v, --verbose print more verbose messages. + -l LOG_FILE, --log-file=LOG_FILE + +As you can see from the simple help above it is possible to configure the +configuration file used to start FakeNet-NG. By default, the tool uses +`configs\default.ini`; however, it can be changed with the `-c` parameter. +There are several example configuration files in the `configs` directory. +Due to the large number of different settings, FakeNet-NG relies on the +configuration files to control its functionality. + +NOTE: FakeNet-NG will attempt to locate the specified configuration file, first +by using the provided absolute or relative path in case you want to store all of +your configurations. If the specified configuration file is not found, +then it will try to look in its `configs` directory. + +The rest of the command-line options allow you to control the amount +of logging output displayed as well as redirecting it to a file as +opposed to dumping it on the screen. + +Simple run +---------- + +Before we dive in and run FakeNet-NG let's go over a few basic concepts. The +tool consists of several modules working together. One such important module is +the diverter which is responsible for redirecting traffic to a collection of +listeners. The diverter forces applications to interact with FakeNet-NG as +opposed to real servers. Listeners are individual services handling incoming +connections and allowing us to examine application's traffic (e.g. malware +signatures). + +Let's launch FakeNet-NG using default settings by running the following command: + + C:\tools\fakenet-ng>fakenet.exe + +Below is the annotated output log illustrating a sample intercepted DNS request +and an HTTP connection: + + ______ _ ________ _ _ ______ _______ _ _ _____ + | ____/\ | |/ / ____| \ | | ____|__ __| | \ | |/ ____| + | |__ / \ | ' /| |__ | \| | |__ | |______| \| | | __ + | __/ /\ \ | < | __| | . ` | __| | |______| . ` | | |_ | + | | / ____ \| . \| |____| |\ | |____ | | | |\ | |__| | + |_|/_/ \_\_|\_\______|_| \_|______| |_| |_| \_|\_____| + + Version 1.0 + _____________________________________________________________ + Developed by + Peter Kacherginsky + FLARE (FireEye Labs Advanced Reverse Engineering) + _____________________________________________________________ + + 07/06/16 10:20:52 PM [ FakeNet] Loaded configuration file: configs/default.ini + / + default configuration file / + + 07/06/16 10:20:52 PM [ Diverter] Capturing traffic to packets_20160706_222052.pcap + / + PCAP output file / + + 07/06/16 10:20:52 PM [ FakeNet] Anonymous Forwarder listener on TCP port 8080... + \ + \ Anonymous Listener rule + + 07/06/16 10:20:52 PM [ RawTCPListener] Starting... + 07/06/16 10:20:52 PM [ RawUDPListener] Starting... + 07/06/16 10:20:52 PM [ FilteredListener] Starting... + 07/06/16 10:20:52 PM [ DNS Server] Starting... + 07/06/16 10:20:52 PM [ HTTPListener80] Starting... + 07/06/16 10:20:52 PM [ HTTPListener443] Starting... + 07/06/16 10:20:52 PM [ SMTPListener] Starting... + 07/06/16 10:20:52 PM [ Diverter] Starting... + \ + \ Listeners starting up + + 07/06/16 10:20:52 PM [ Diverter] Diverting ports: + 07/06/16 10:20:52 PM [ Diverter] TCP: 1337, 80, 443, 25 + 07/06/16 10:20:52 PM [ Diverter] UDP: 1337, 53 + / + Summary of diverted ports / + + 07/06/16 10:21:03 PM [ Diverter] Modifying outbound external UDP request packet: + 07/06/16 10:21:03 PM [ Diverter] from: 192.168.250.140:49383 -> 4.2.2.1:53 + 07/06/16 10:21:03 PM [ Diverter] to: 192.168.250.140:49383 -> 192.168.250.140:53 + 07/06/16 10:21:03 PM [ Diverter] pid: 456 name: malware.exe + / + Intercepted traffic to the DNS server from malware.exe / + + 07/06/16 10:21:03 PM [ DNS Server] Received A request for domain 'evil.com'. + \ + \ Fake DNS Listener handling the above request + + 07/06/16 10:21:04 PM [ Diverter] Modifying outbound external TCP request packet: + 07/06/16 10:21:04 PM [ Diverter] from: 192.168.250.140:2179 -> 192.0.2.123:80 + 07/06/16 10:21:04 PM [ Diverter] to: 192.168.250.140:2179 -> 192.168.250.140:80 + 07/06/16 10:21:04 PM [ Diverter] pid: 456 name: malware.exe + / + Intercepted traffic to the web server from malware.exe / + + 07/06/16 10:21:08 PM [ HTTPListener80] Received a GET request. + 07/06/16 10:21:08 PM [ HTTPListener80] -------------------------------------------------------------------------------- + 07/06/16 10:21:08 PM [ HTTPListener80] GET / HTTP/1.0 + 07/06/16 10:21:08 PM [ HTTPListener80] + 07/06/16 10:21:08 PM [ HTTPListener80] -------------------------------------------------------------------------------- + \ + \ Fake HTTP Listener handling the above request + +Notice that each log line has a name of the currently running FakeNet-NG +modules. For example, when it is diverting traffic, the logs will be prefixed +with the `Diverter` label: + + 07/06/16 10:21:03 PM [ Diverter] Modifying outbound external UDP request packet: + 07/06/16 10:21:03 PM [ Diverter] from: 192.168.250.140:49383 -> 4.2.2.1:53 + 07/06/16 10:21:03 PM [ Diverter] to: 192.168.250.140:49383 -> 192.168.250.140:53 + 07/06/16 10:21:03 PM [ Diverter] pid: 456 name: malware.exe + +At the same time, whenever individual listeners are handling diverted traffic, +logs will be labeled with the name set in the configuration file: + + 07/06/16 10:21:03 PM [ DNS Server] Received A request for domain 'evil.com'. + +To stop FakeNet-NG and close out the generated PCAP file simply press `CTRL-C`: + + 07/06/16 10:21:41 PM [ FakeNet] Stopping... + 07/06/16 10:21:42 PM [ HTTPListener80] Stopping... + 07/06/16 10:21:42 PM [ HTTPListener443] Stopping... + 07/06/16 10:21:42 PM [ SMTPListener] Stopping... + 07/06/16 10:21:43 PM [ Diverter] Stopping... + +Configuration +------------- + +In order to take full advantage of FakeNet-NG's capabilities we must understand +its configuration file structure and settings. Below is a sample configuration +file: + + ############################################################################### + # Fakenet Configuration + + [FakeNet] + + DivertTraffic: Yes + + ############################################################################### + # Diverter Configuration + + [Diverter] + + DumpPackets: Yes + DumpPacketsFilePrefix: packets + + ModifyLocalDNS: No + StopDNSService: Yes + + ############################################################################### + # Listener Configuration + + [DNS Server] + Enabled: True + Port: 53 + Protocol: UDP + Listener: DNSListener + DNSResponse: 192.0.2.123 + NXDomains: 0 + + [RawTCPListener] + Enabled: True + Port: 1337 + Protocol: TCP + Listener: RawListener + UseSSL: No + Timeout: 10 + +The configuration file is broken up into several sections. + +* **[FakeNet]** - Controls the behavior of the application itself. The only valid +option at this point is `DivertTraffic`. When enabled, it instructs the tool +to launch the appropriate diverter plugin and intercept traffic. If this option +is disabled, FakeNet-NG will still launch listeners, but will rely on another +method to direct traffic to them (e.g. manually change DNS server). + +* **[Diverter]** - Settings for redirecting traffic. Covered in detail below. + +* **[Listener Name]** - A collection of listener configurations. Each listener +has a set of default settings (e.g. port, protocol) as well as listener +specific configurations (e.g. DumpHTTPPosts for the HTTPListener). + +Diverter Configuration +---------------------- + +Considering you have enabled the `DivertTraffic` setting in the `[FakeNet]` +configuration block, the tool will enable its traffic redirection engine to +which we will call `diverter` from now on as a reference to the excellent +`WinDiverter` library used to perform the magic behind the scenes. + +The diverter will examine all of the outgoing packets and match them against +a list of protocols, ports of enabled listeners. If there is a listener +listening on the packet's port and protocol, then the destination address +will be changed to the local machine's IP address where the listener will +handle the request. At the same time, responses coming from the listener +will be changed so that the source IP address would appear as if the packet +is coming from the originally requested host. + +You can optionally enable the `DumpPackets` setting to store all traffic +observed by FakeNet-NG (redirected or forwarded) to a PCAP file. It is possible +to decrypt SSL traffic between an intercepted application and one of the +listeners with SSL support. Use the instructions at the following page: + + https://wiki.wireshark.org/SSL + +The keys `privkey.pem` and `server.pem` used by FakeNet-NG's servers are in the +application's root directory. + +Last but not least, the Windows diverter supports two DNS related settings: + +* **ModifyLocalDNS** - modify local machine's DNS service. +* **StopDNSService** - stops Windows DNS client (Dnscache). This allows FakeNet + to see the actual processes resolving domains as opposed + to the generic 'svchost.exe' process. + +Redirecting All Traffic +----------------------- + +By default the diverter will only intercept traffic that has a dedicated +listener created for it. However, by enabling `RedirectAllTraffic` setting +and configuring the default TCP and UDP handlers with the `DefaultTCPListener` +and `DefaultUDPListener` settings it is possible to dynamically handle traffic +going to ports not explicitly defined in one of the listeners. For example, +let's look at a sample configuration which redirects all traffic to +local TCP and UDP listeners on ports 1234: + + RedirectAllTraffic: Yes + DefaultTCPListener: TCPListener1234 + DefaultUDPListener: UDPListener1234 + +*NOTE*: We are jumping a bit ahead with listener definitions, but just +consider that `TCPListener1234` and `UDPListener1234` will be defined in +the section below. + +With the `RedirectAllTraffic` setting, FakeNet-NG will modify not only the +destination address, but also the destination port so it can be handled +by one of the default listeners. Below is a sample log of traffic destined to +an external host IP address 1.1.1.1 on port 4444 which was redirected to the +default listener on port 1234 instead: + + 07/06/16 01:13:47 AM [ Diverter] Modifying outbound external TCP request packet: + 07/06/16 01:13:47 AM [ Diverter] from: 192.168.66.129:1650 -> 1.1.1.1:4444 + 07/06/16 01:13:47 AM [ Diverter] to: 192.168.66.129:1650 -> 192.168.66.129:1234 + 07/06/16 01:13:47 AM [ Diverter] pid: 3716 name: malware.exe + +It is important to note that traffic destined to the port from one of the +explicitly defined listeners will still be handled by that listener and +not the default listener. For example, default UDP listener will not handle +DNS traffic if a separate UDP port 53 DNS listener is defined. + +One issue when enabling the `RedirectAllTraffic` options is that you may +still want to let some traffic through to ensure normal operation of the +machine. Consider a scenario where you are trying to analyze an application + that still needs to connect to an external DNS server. You can utilize the +`BlackListPortsTCP` and `BlackListPortsUDP` settings to define a list of +ports to which traffic will be ignored and forwarded unaltered: + + BlackListPortsUDP: 53 + +Some other diverter settings that you may consider are `ProcessBlackList` +and `HostBlackList` which allow diverter to ignore and forward traffic +coming from a specific process name or destined for a specific host +respectively. + +Listener Configurations +---------------------- + +Listener configurations define the behavior of individual listeners. Let's +look at a sample listener configuration: + + [TCPListener1234] + Enabled: True + Port: 1234 + Protocol: TCP + Listener: RawListener + UseSSL: Yes + Timeout: 10 + +The configuration above consists of the listener name `TCPListener1234`. It +will be used for logging purposes so you can distinguish between different +listeners handling connections even if they are handling the same protocol. + +The following settings are generic for all listeners: + + * **Enabled** - specify whether or not the listener is enabled. + * **Port** - TCP or UDP port to listen on. + * **Protocol** - TCP or UDP + * **Listener** - Listener name to handle traffic. + * **ProcessWhiteList** - Only traffic from these processes will be modified + and the rest will simply be forwarded. + * **ProcessBlackList** - Traffic from all but these processes will be simply + forwarded and the rest will be modified as needed. + * **HostWhiteList** - Only traffic to these hosts will be modified and + the rest will be simply forwarded. + * **HostBlackList** - Traffic to these hosts will be simply forwarded + and the rest will be modified as needed. + * **ExecuteCmd** - Execute command on the first connection packet. This + feature is useful for extending FakeNet-NG's functionality + (e.g. launch a debugger on the connecting pid to help with + unpacking and decoding.) + +The `Port` and `Protocol` settings are necessary for the listeners to know to +which ports to bind and, if they support multiple protocol (e.g RawListener), +decide which protocol to use. They are also used by the diverter to figure out +which ports and protocols to redirect. + +The `Listener` setting defines one of the available listener plugins to handle +redirected traffic. The current version of FakeNet-NG comes with the following +listeners: + +* **DNSListener** - supports DNS protocol and replies to A records with either + a local machine's IP address or a configurable address in + the `DNSResponse` setting. You can also set the `NXDomains` + attribute to the number of requests the listener should ignore. + This way you may be able to get the malware to request all of + its backup C2 controller names. The listener supports both TCP + and UDP protocols. +* **RawListener** - supports basic TCP and UDP binary protocols. The default + behavior is to simply echo the received packets back to + the client. Supports SSL connections. +* **HTTPListener** - supports HTTP and HTTPS protocols. Responds with different + files in the configurable `Webroot` directory based on the + requested file extension. Optionally dumps POST requests to + a configurable file which can be specified using + `DumpHTTPPosts` and `DumpHTTPPostsFilePrefix` settings. +* **SMTPListener** - supports SMTP protocol. + + +NOTE: FakeNet-NG will attempt to locate the webroot directory, first by using +the provided absolute or relative paths. If the specified webroot path is not +found, then it will try to look in its `defaultFiles` directory. + +As a special case, FakeNet-NG automatically responds to all ICMP requests while +running. So in case a malware attempts to ping a host to test connectivity it +will get a valid response. + +Listener Filtering +------------------ + +FakeNet-NG supports several filtering rules consisting of process and host +blacklists and whitelists. The whitelists are treated as the rules that allow +connections to the listeners while the blacklists are used to ignore the +incoming connections and let them to be simply forwarded. + +For example, consider the configuration below with process and host filters: + + [FilteredListener] + Enabled: True + Port: 31337 + Protocol: TCP + Listener: RawListener + UseSSL: No + Timeout: 10 + ProcessWhiteList: malware.exe, ncat.exe + HostBlackList: 5.5.5.5 + +The `FilteredListener` above will only handle connection coming from the +processes `malware.exe` and `ncat.exe`, but will ignore any connections +destined for the host `5.5.5.5`. Meaning that if a process called `test.exe` +attempted to connect on port 31337 it will not be redirected to the listener +and will be forwarded to wherever it was originally intended if the route +is available. + +At the same time of the process `malware.exe` attempted to connect to port 31337 +on any host other than `5.5.5.5` it will be diverted +to the `FilteredListener`. Any connections from the process `malware.exe` +destined to `5.5.5.5` would be allowed through. + +Listener Command Execution +-------------------------- + +Another powerful configuration setting is `ExecuteCmd`. It essentially +allows you to execute an arbitrary command on the first detected packet +of the connection. The value of `ExecuteCmd` can use several format string +variables: + + * `{pid}` - process id + * `{procname}` - process executable name + * `{src_addr}` - source address + * `{src_port}` - source port + * `{dst_addr}` - destination address + * `{dst_port}` - destination port + +Consider a scenario of a packed malware sample which connects to a configured +C2 server on port 8443 (Use `RedirectAllTraffic` if the port is not known). In +many cases the malware would unpack itself by the time it makes the connection +making that point in execution ideal to attach to the process with a debugger +and dump an unpacked version of it for further analysis. + +Let's see how this can be used to automatically launch a debugger on the +first connection: + + [C2Listener] + Enabled: True + Port: 8443 + Protocol: TCP + Listener: RawListener + UseSSL: Yes + Timeout: 300 + ProcessWhiteList: malware.exe + ExecuteCmd: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\windbg.exe -p {pid} + +Once FakeNet-NG detects a new connection coming from the whitelisted process +`malware.exe` (this setting is optional), it will automatically launch `windbg` +and attach it to the connecting process. + +*NOTE*: You might want to extend the normal `Timeout` setting in case the malware + needs to further interact with the listener. + +Anonymous Listener +------------------ + +There is a special use case where you can create a new listener configuration +without defining the actual listener to handle it: + + [Forwarder] + Enabled: True + Port: 8080 + Protocol: TCP + ProcessWhiteList: chrome.exe + +Without a listener defined, FakeNet-NG will still divert traffic to the local +machine, but a separate listener must be launched by the user. For example, +you could have an HTTP proxy listening for connections on port 8080 and let +FakeNet-NG intercept all the traffic from applications which do not use system's +proxy server settings or use hard-coded IP addresses. Using anonymous listeners +you can bring FakeNet-NG's advanced traffic and process filtering capabilities +to 3rd party tools. + +You may also want to enable diverter's `ProcessBlackList` setting to allow +the external tool to communicate out to the Internet. For example, to allow +an HTTP proxy to forward proxied traffic add its process name to the process +blacklist. For example, add the following process to let Burp Proxy to +communicate out to the Internet: + + ProcessBlackList: java.exe + +In the scenario where application communicates on an unknown port, but you still +want to redirect it to the anonymous listener on port 8080 you can define the +default listener as follows: + + RedirectAllTraffic: Yes + DefaultTCPListener: ForwarderTCP + DefaultUDPListener: RawUDPListener + +Finally, to allow DNS traffic to still go to the default DNS server on the +Internet, while redirecting all other traffic, add port 53 to the diverter's +UDP port blacklist as follows: + + BlackListPortsUDP: 53 + +Development +=========== + +FakeNet-NG is developed in Python which allows you to rapidly develop new +plugins and extend existing functionality. + +Developing Listeners +-------------------- + +All listeners must implement just two methods: start() and stop(). Below is a +sample listener template: + + + import logging + + import sys + + import threading + import socket + + class MyListener(): + + def __init__(self, config, name = 'MyListener', logging_level = logging.INFO): + self.logger = logging.getLogger(name) + self.logger.setLevel(logging_level) + + self.config = config + self.name = name + + self.logger.info('Starting...') + + self.logger.debug('Initialized with config:') + for key, value in config.iteritems(): + self.logger.debug(' %10s: %s', key, value) + + def start(self): + + # Start listener + # ... + + def stop(self): + + # Stop listener + # ... + +The main listener class `MyListener()` will be provided with a parsed +configuration dictionary containing information such as port to listen on, +protocol, etc. The main listener class will also receive the current listener +instance name and the logging info set by the user. + +The only requirement for listener implementation is that you use threading so +that when FakeNet-NG calls the `start()` method, the listener will not block +but spawn a new thread that handles incoming connections. + +Another requirement is to ensure that the listener can reliably shutdown when +the `stop()` method is called. For example, make use of connection timeouts to +ensure that the listener does not block on some connection for too long. + +The logging convention used by FakeNet-NG's listeners is to use the self.logger +object for the output. That way the logging is uniform across the application. +For example to display an error or warning you would use the following: + + self.logger.error("This is an error") + self.logger.warning("This is a warning") + +Finally, after you finish developing the listener, copy it to the `listeners\` +directory and append you module name to `__all__` varialbe in the `listeners\__init__`: + + __all__ = ['RawListener', 'HTTPListener', 'DNSListener', 'SMTPListener', 'MyListener'] + +At this point you can let the application use the newly created listener by +adding it to the configuration file: + + [MyAwesomeListener] + Enabled: True + Port: 1337 + Protocol: TCP + Listener: MyListener + +Developing Diverters +-------------------- + +FakeNet-NG uses the open source WinDivert library in order to perform the +traffic redirection on Windows Vista+ operating systems. The implementation of +the windows diverter is located in `diverters\windows.py`. + +It is important to note that a lot of the Windows specific functionality is +actually implemented in the `diverters\winutil.py` file using ctypes to call +many of the Windows API functions directly. + +It is planned to expand the support for traffic divertion + +Building standalone executables +------------------------------- + +If you would like to generate a stand-alone executable you would need to +install the PyInstaller module: + + pip install pyinstaller + +To generate the exe file run the pyinstaller as follows: + + pyinstaller fakenet-ng.spec + +The standalone executable will be available in the `dist/` directory. + +Known Issues +============ + +Does not work on VMWare with host-only mode enabled +--------------------------------------------------- + +See "Not Intercepting Traffic" below. + +Not Intercepting Traffic +------------------------ + +In order to for FakeNet-NG to intercept and modify the packet, there must exist +a valid network route for the packet to reach its destination. + +There is an easy way to check whether or not you have routes set up correctly. +Without the tool running attempt to ping the destination host. You should +observe either a valid response or a timeout message. If you receive a +destination not reachable error instead, then you do not have a valid route. + +This is usually caused by your gateway being either not set or not reachable. +For example, on a VMWare machine with host-only mode your machine will not have +the gateway configured thus preventing FakeNet-NG from seeing any traffic. + +To correct this issue, manually configure your primary interface to the gateway +in the same subnet. First check the interface name: + + C:\>netsh interface show interface + + Admin State State Type Interface Name + ------------------------------------------------------------------------- + Enabled Connected Dedicated Local Area Connection + +In this case the interface name is "Local Area Connection" so we will use it for +the rest of the commands. + +Manually configure the interface IP address and gateway as follows: + + C:\>netsh interface ip set address name="Local Area Connection" static 192.168.249.123 255.255.255.0 192.168.249.254 + +Manually set the DNS server IP address + + C:\>netsh interface ip set dns name="Local Area Connection" static 4.2.2.2 + +If you are still having issue ensure that the gateway IP address itself is +routable. + +Error: Could not locate WinDivert DLL or one of its components +-------------------------------------------------------------- + +Please ensure that FakeNet-NG is extracted to the local C: drive to make +sure the WinDivert driver is loaded correctly. + +Limitations +=========== + +* Only Windows Vista+ is supported. Please use the original Fakenet for + Windows XP/2003 operating systems. + +* Local machine only traffic is not intercepted (e.g. if you tried to connect + directly to one of the listeners). + +* Only traffic using TCP, UDP, and ICMP protocols are intercepted. + +Credits +======= + +* FakeNet-NG was designed and developed by Peter Kacherginsky. +* Special thanks to Andrew Honig, Michael Sikorski and others for the + original FakeNet which was the inspiration to develop this tool. + +Contact +======= + +For bugs, crashes, or other comments please contact +peter.kacherginsky@fireeye.com -FakeNet-NG will be released during BlackHat 2016. Come visit our BlackHat -Arsenal booth for a demo and a presentation of using FakeNet-NG for -malware analysis and presentation at the Arsenal Theater on Wednesday, -August 3rd. diff --git a/fakenet.spec b/fakenet.spec new file mode 100644 index 0000000..a6f9055 --- /dev/null +++ b/fakenet.spec @@ -0,0 +1,36 @@ +# -*- mode: python -*- + +block_cipher = None + + +a = Analysis(['fakenet/fakenet.py'], + pathex=['fakenet'], + binaries=None, + datas=None, + hiddenimports=[], + hookspath=[], + runtime_hooks=[], + excludes=[], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher) +pyz = PYZ(a.pure, a.zipped_data, + cipher=block_cipher) +exe = EXE(pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + icon='resources/fakenet.ico', + name='fakenet', + debug=False, + strip=False, + upx=True, + console=True, + uac_admin=True) + +coll = COLLECT(exe, + strip=False, + upx=True, + name='fakenet-dat' +) diff --git a/fakenet/__init__.py b/fakenet/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/fakenet/configs/burp.ini b/fakenet/configs/burp.ini new file mode 100644 index 0000000..5826cfe --- /dev/null +++ b/fakenet/configs/burp.ini @@ -0,0 +1,51 @@ +############################################################################### +# Fakenet Configuration + +[FakeNet] + +DivertTraffic: Yes + +############################################################################### +# Diverter Configuration + +[Diverter] + +DumpPackets: No +DumpPacketsFilePrefix: packets + +ModifyLocalDNS: No +StopDNSService: Yes + +RedirectAllTraffic: Yes +DefaultTCPListener: ForwarderTCP +DefaultUDPListener: ForwarderUDP + +BlackListPortsTCP: 139 +BlackListPortsUDP: 53, 67, 68, 137, 138, 1900, 5355 + +# Ignore traffic generated by the java.exe process to let +# Burp communicate out. +ProcessBlackList: java.exe + +############################################################################### +# Listener Configuration + +[ForwarderTCP] +Enabled: True +Port: 8080 +Protocol: TCP +ProcessWhiteList: chrome.exe, firefox.exe, ncat.exe + +[ForwarderUDP] +Enabled: True +Port: 1234 +Protocol: UDP +ProcessWhiteList: chrome.exe + +[DNS Server] +Enabled: False +Port: 53 +Protocol: UDP +Listener: DNSListener +DNSResponse: 127.0.0.1 +NXDomains: 0 \ No newline at end of file diff --git a/fakenet/configs/debug.ini b/fakenet/configs/debug.ini new file mode 100644 index 0000000..7375101 --- /dev/null +++ b/fakenet/configs/debug.ini @@ -0,0 +1,55 @@ +############################################################################### +# Fakenet Configuration + +[FakeNet] + +DivertTraffic: Yes + +############################################################################### +# Diverter Configuration + +[Diverter] + +DumpPackets: No +DumpPacketsFilePrefix: packets + +ModifyLocalDNS: No +StopDNSService: Yes + +RedirectAllTraffic: Yes +DefaultTCPListener: RawTCPListener +DefaultUDPListener: RawUDPListener + +BlackListPortsTCP: 139 +BlackListPortsUDP: 67, 68, 137, 138, 1900, 5355 + +ProcessBlackList: windbg.exe + +############################################################################### +# Listener Configuration + +[RawTCPListener] +Enabled: True +Port: 1337 +Protocol: TCP +Listener: RawListener +UseSSL: No +Timeout: 300 +ProcessWhiteList: ncat.exe +ExecuteCmd: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\windbg.exe -p {pid} + +[RawUDPListener] +Enabled: True +Port: 1337 +Protocol: UDP +Listener: RawListener +UseSSL: No +Timeout: 10 + +[DNS Server] +Enabled: Yes +Port: 53 +Protocol: UDP +Listener: DNSListener +DNSResponse: 192.0.2.123 +NXDomains: 0 \ No newline at end of file diff --git a/fakenet/configs/default.ini b/fakenet/configs/default.ini new file mode 100644 index 0000000..a6b4ca9 --- /dev/null +++ b/fakenet/configs/default.ini @@ -0,0 +1,177 @@ +############################################################################### +# Fakenet Configuration + +[FakeNet] + +# Specify whether or not FakeNet should divert traffic. Disable if you want to +# just start listeners and direct traffic manually (e.g. modify DNS server) +DivertTraffic: Yes + +############################################################################### +# Diverter Configuration + +[Diverter] + +# Specify whether or not to save captured traffic. You can also change +# the file prefix for the generated PCAPs. +DumpPackets: Yes +DumpPacketsFilePrefix: packets + +# Enable 'ModifyLocalDNS' to statically set DNS server to the local machine. +ModifyLocalDNS: No + +# Enable 'StopDNSService' to stop Windows DNS client to see the actual +# processes resolving domains. +StopDNSService: Yes + +# Enable 'RedirectAllTraffic' to optionally divert traffic going to ports not +# specifically listed in one of the listeners below. 'DefaultTCPListener' and +# 'DefaultUDPListener' will handle TCP and UDP traffic going to unspecified ports. +# +# NOTE: Setting default UDP listener will intercept all DNS traffic unless you +# enable a dedicated UDP port 53 DNS listener or add UDP port 53 to the +# 'BlackListPortsUDP' below so that system's default DNS server is used instead. + +RedirectAllTraffic: Yes +DefaultTCPListener: RawTCPListener +DefaultUDPListener: RawUDPListener + +# Specify TCP and UDP ports to ignore when diverting packets. +# For example, you may want to avoid diverting UDP port 53 (DNS) traffic +# when trying to intercept a specific process while allowing the rest to +# function normally +# +# NOTE: This setting is only honored when 'RedirectAllTraffic' is enabled. + +BlackListPortsTCP: 139 +BlackListPortsUDP: 67, 68, 137, 138, 1900, 5355 + +# Specify processes to ignore when diverting traffic. +# ProcessBlackList: java.exe + +# Specify hosts to ignore when diverting traffic. +# HostBlackList: 6.6.6.6 + +############################################################################### +# Listener Configuration +# +# Listener configuration consists of generic settings used by the diverter which +# are the same for all listeners and listener specific settings. +# +# NOTE: Listener section names will be used for logging. +# +# NOTE: Settings labels are not case-sensitive. +# +# The following settings are available for all listeners: +# * Enabled - specify whether or not the listener is enabled. +# * Port - TCP or UDP port to listen on. +# * Protocol - TCP or UDP +# * Listener - Listener name to handle traffic. +# * ProcessWhiteList - Only traffic from these processes will be modified +# and the rest will simply be forwarded. +# * ProcessBlackList - Traffic from all but these processes will be simply forwarded +# and the rest will be modified as needed. +# * HostWhiteList - Only traffic to these hosts will be modified and +# the rest will be simply forwarded. +# * HostBlackList - Traffic to these hosts will be simply forwarded +# and the rest will be modified as needed. +# * ExecuteCmd - Execute command on the first connection packet. This is feature is useful +# for extending FakeNet-NG's functionality (e.g. launch a debugger on the +# connecting pid to help with unpacking and decoding.) +# +# The following format string variables are made available: +# * {pid} - process id +# * {procname} - process executable name +# * {src_addr} - source address +# * {src_port} - source port +# * {dst_addr} - destination address +# * {dst_port} - destination port +# +# Listener entry which does not specify a specific listener service +# will still redirect all packets to the local machine on the specified port and +# subject to all the filters (processes, hosts, etc.). However, you must set-up a +# third party service (e.g. proxy servers) to accept these connections. This feature can be +# used to provide FakeNet-NG's passive traffic diverting and filtering capabilities to other +# applications. +# +# Listener specific settings: +# +# * Timeout - Set connection timeout for any listeners that support +# TCP connections (e.g. RawListener, DNSListener, HTTPListener +# SMTPListener). +# * UseSSL - Enable SSL support on the listener (RawListener, HTTPListener) +# * Webroot - Set webroot path for HTTPListener. +# * DumpHTTPPosts - Store HTTP Post requests for the HTTPListener. +# * DumpHTTPPostsFilePrefix - File prefix for the stored HTTP Post requests used by the HTTPListener. +# * DNSResponse - IP address to respond with for A record DNS queries. (DNSListener) +# * NXDomains - A number of DNS requests to ignore to let the malware cycle through +# all of the backup C2 servers. (DNSListener) + +[Forwarder] +Enabled: False +Port: 8080 +Protocol: TCP +ProcessWhiteList: chrome.exe + +[RawTCPListener] +Enabled: True +Port: 1337 +Protocol: TCP +Listener: RawListener +UseSSL: No +Timeout: 10 + +[RawUDPListener] +Enabled: True +Port: 1337 +Protocol: UDP +Listener: RawListener +UseSSL: No +Timeout: 10 + +[FilteredListener] +Enabled: False +Port: 31337 +Protocol: TCP +Listener: RawListener +UseSSL: No +Timeout: 10 +ProcessWhiteList: ncat.exe, nc.exe +HostBlackList: 5.5.5.5 + +[DNS Server] +Enabled: True +Port: 53 +Protocol: UDP +Listener: DNSListener +DNSResponse: 192.0.2.123 +NXDomains: 0 + +[HTTPListener80] +Enabled: True +Port: 80 +Protocol: TCP +Listener: HTTPListener +UseSSL: No +Webroot: defaultFiles/ +Timeout: 10 +#ProcessBlackList: dmclient.exe, OneDrive.exe, svchost.exe, backgroundTaskHost.exe, GoogleUpdate.exe, chrome.exe +DumpHTTPPosts: Yes +DumpHTTPPostsFilePrefix: http + +[HTTPListener443] +Enabled: True +Port: 443 +Protocol: TCP +Listener: HTTPListener +UseSSL: Yes +Webroot: defaultFiles/ +DumpHTTPPosts: Yes +DumpHTTPPostsFilePrefix: http + +[SMTPListener] +Enabled: True +Port: 25 +Protocol: TCP +Listener: SMTPListener +UseSSL: No \ No newline at end of file diff --git a/fakenet/defaultFiles/FakeNet.gif b/fakenet/defaultFiles/FakeNet.gif new file mode 100644 index 0000000000000000000000000000000000000000..786bb11005d7139ccd665d73fb97e87ef6ff6bd2 GIT binary patch literal 24032 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 literal 0 HcmV?d00001 diff --git a/fakenet/defaultFiles/FakeNet.html b/fakenet/defaultFiles/FakeNet.html new file mode 100644 index 0000000..8f327a0 --- /dev/null +++ b/fakenet/defaultFiles/FakeNet.html @@ -0,0 +1,37 @@ + + +FakeNet-NG + + + +
+     ______      _  ________ _   _ ______ _______     _   _  _____ 
+    |  ____/\   | |/ /  ____| \ | |  ____|__   __|   | \ | |/ ____|
+    | |__ /  \  | ' /| |__  |  \| | |__     | |______|  \| | |  __ 
+    |  __/ /\ \ |  < |  __| | . ` |  __|    | |______| . ` | | |_ |
+    | | / ____ \| . \| |____| |\  | |____   | |      | |\  | |__| |
+    |_|/_/    \_\_|\_\______|_| \_|______|  |_|      |_| \_|\_____|
+
+                       H T T P   L I S T E N E R                   
+
+ +

FakeNet-NG is a next generation dynamic network analysis tool for malware +analysts and penetration testers. It is open source and designed for the latest +versions of Windows.

+ +

The tool allows you to intercept and redirect all or specific network traffic +while simulating legitimate network services. Using FakeNet-NG, malware analysts +can quickly identify malware's functionality and capture network signatures. +Penetration testers and bug hunters will find FakeNet-NG's configurable +interception engine and modular framework highly useful when testing +application's specific functionality and prototyping PoCs.

+ +

FakeNet-NG is based on the excellent Fakenet tool developed +by Andrew Honig and Michael Sikorski.

+ +

Contact

+ +For bugs, crashes, or other comments please contact Peter Kacherginsky by email +peter.kacherginsky@fireeye.com or Twitter @_iphelix. + + \ No newline at end of file diff --git a/fakenet/defaultFiles/FakeNet.ico b/fakenet/defaultFiles/FakeNet.ico new file mode 100644 index 0000000000000000000000000000000000000000..8431d830302fa295291e7311a0957de129cf4975 GIT binary patch literal 83892 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 literal 0 HcmV?d00001 diff --git a/fakenet/defaultFiles/FakeNet.jpg b/fakenet/defaultFiles/FakeNet.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f58ce1ab16ead01764b59c1722d32bbda6c1787b GIT binary patch literal 26068 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 literal 0 HcmV?d00001 diff --git a/fakenet/defaultFiles/FakeNet.pdf b/fakenet/defaultFiles/FakeNet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9399b8cb5ab5ea88f9cd9c32c36ed4d33d89fba1 GIT binary patch literal 45450 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

){t6&(k-fo-Hc$%Gl=JkJ>#6@1 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

(wx+cMugY%S&O7dzWmLq9P?< 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 z%0A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%0DvGDK@Sh! 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 literal 0 HcmV?d00001 diff --git a/fakenet/defaultFiles/FakeNetMini.exe b/fakenet/defaultFiles/FakeNetMini.exe new file mode 100644 index 0000000000000000000000000000000000000000..94bb4aa6bf489ffb02667dfba3c0aadff153ea0c GIT binary patch literal 32768 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 UAqmc^AzA$E^DhbfCrIFb0q56O)c^nh literal 0 HcmV?d00001 diff --git a/fakenet/diverters/__init__.py b/fakenet/diverters/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/fakenet/diverters/__init__.pyc b/fakenet/diverters/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ca7d9ab85e9e8a6c9e008ab9893e5569416d7f1e GIT binary patch literal 145 zcmZSn%**w&VpCW$0~9a literal 0 HcmV?d00001 diff --git a/fakenet/diverters/windows.py b/fakenet/diverters/windows.py new file mode 100644 index 0000000..16e5f3d --- /dev/null +++ b/fakenet/diverters/windows.py @@ -0,0 +1,663 @@ +# Diverter for Windows implemented using WinDivert library + +import logging + +from pydivert.windivert import * +from pydivert.enum import Direction, Defaults + +import socket + +import os + +import dpkt + +import time +import threading + +import platform + +from winutil import * + +import subprocess + +class Diverter(WinUtilMixin): + + def __init__(self, diverter_config, listeners_config, logging_level = logging.INFO): + + self.logger = logging.getLogger('Diverter') + self.logger.setLevel(logging_level) + + self.diverter_config = diverter_config + self.listeners_config = listeners_config + + # Local IP address + self.external_ip = socket.gethostbyname(socket.gethostname()) + self.loopback_ip = socket.gethostbyname('localhost') + + # Sessions cache + # NOTE: A dictionary of source ports mapped to destination address, port tuples + self.sessions = dict() + + ####################################################################### + # Listener specific configuration + # NOTE: All of these definitions have protocol as the first key + # followed by a list or another nested dict with the actual definitions + + # Diverted ports + self.diverted_ports = dict() + + # Listener Port Process filtering + # TODO: Allow PIDs + self.port_process_whitelist = dict() + self.port_process_blacklist = dict() + + # Listener Port Host filtering + # TODO: Allow domain name resolution + self.port_host_whitelist = dict() + self.port_host_blacklist = dict() + + # Execute command list + self.port_execute = dict() + + # Parse listener configurations + self.parse_listeners_config(listeners_config) + + ####################################################################### + # Diverter settings and filters + + # Intercept filter + # NOTE: All relevant connections are recorded as outbound by WinDivert + # so additional filtering based on destination port will need to be + # performed in order to determine the correct traffic direction. + self.filter = None + + # Default TCP/UDP listeners + self.default_listener_tcp_port = None + self.default_listener_udp_port = None + + # Global TCP/UDP port blacklist + self.blacklist_ports_tcp = [] + self.blacklist_ports_udp = [] + + # Global process blacklist + # TODO: Allow PIDs + self.blacklist_processes = [] + + # Global host blacklist + # TODO: Allow domain resolution + self.blacklist_hosts = [] + + # Parse diverter config + self.parse_diverter_config() + + ####################################################################### + # Network verification + + # Check active interfaces + if not self.check_active_ethernet_adapters(): + self.logger.warning('WARNING: No active ethernet interfaces detected!') + self.logger.warning(' Please enable a network interface.') + + # Check configured gateways + if not self.check_gateways(): + self.logger.warning('WARNING: No gateways configured!') + self.logger.warning(' Please configure a default gateway or route in order to intercept external traffic.') + + # Check configured DNS servers + if not self.check_dns_servers(): + self.logger.warning('WARNING: No DNS servers configured!') + self.logger.warning(' Please configure a DNS server in order to allow network resolution.') + + ####################################################################### + # Initialize WinDivert + + # Locate the WinDivert driver + # NOTE: This is necessary to work in scenarios where the applications is + # executed as a python script, installed as an egg or with the pyinstaller + + dll_arch = "64" if platform.machine() == 'AMD64' else "32" + + dll_path = os.path.join('lib', dll_arch, 'WinDivert.dll') + + if not os.path.exists(dll_path): + + dll_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'lib', dll_arch, 'WinDivert.dll') + + if not os.path.exists(dll_path): + + self.logger.error('Could not open bundled WinDivert.dll') + sys.exit(1) + + # Divert handle + driver = None + + driver = WinDivert(dll_path = dll_path) + + try: + self.handle = Handle(driver, filter=self.filter) + self.handle.open() + except WindowsError, e: + if e.winerror == 5: + self.logger.error('ERROR: Insufficient privileges to run windows diverter.') + self.logger.error(' Please restart with Administrator privileges.') + sys.exit(1) + elif e.winerror == 3: + self.logger.error('ERROR: Could not locate WinDivert DLL or one of its components.') + self.logger.error(' Please make sure you have copied FakeNet-NG to the C: drive.') + sys.exit(1) + else: + self.logger.error('ERROR: Failed to open a handle to the WinDivert driver: %s', e) + sys.exit(1) + + # Capture packets configuration + self.capture_flag = False + self.dump_packets_file_prefix = "packets" + self.pcap = None + + if self.diverter_config.get('dumppackets') and self.diverter_config['dumppackets'].lower() == 'yes': + self.capture_flag = True + pcap_filename = "%s_%s.pcap" % (diverter_config.get('dumppacketsfileprefix', 'packets'), time.strftime("%Y%m%d_%H%M%S")) + + self.logger.info('Capturing traffic to %s', pcap_filename) + self.pcap = dpkt.pcap.Writer(open(pcap_filename, 'wb'), linktype=dpkt.pcap.DLT_RAW) + + ########################################################################### + # Parse listener specific settings and filters + + def parse_listeners_config(self, listeners_config): + + ####################################################################### + # Populate diverter ports and process filters from the configuration + for listener_name, listener_config in listeners_config.iteritems(): + + if 'port' in listener_config: + + port = int(listener_config['port']) + + if not 'protocol' in listener_config: + self.logger.error('ERROR: Protocol not defined for listener %s', listener_name) + sys.exit(1) + + protocol = listener_config['protocol'].upper() + + if not protocol in ['TCP', 'UDP']: + self.logger.error('ERROR: Invalid protocol %s for listener %s', protocol, listener_name) + sys.exit(1) + + if not protocol in self.diverted_ports: + self.diverted_ports[protocol] = list() + + self.diverted_ports[protocol].append(port) + + ############################################################### + # Process filtering configuration + if 'processwhitelist' in listener_config and 'processblacklist' in listener_config: + self.logger.error('ERROR: Listener can\'t have both process whitelist and blacklist.') + sys.exit(1) + + elif 'processwhitelist' in listener_config: + + self.logger.debug('Process whitelist:') + + if not protocol in self.port_process_whitelist: + self.port_process_whitelist[protocol] = dict() + + self.port_process_whitelist[protocol][port] = [process.strip() for process in listener_config['processwhitelist'].split(',')] + + for port in self.port_process_whitelist[protocol]: + self.logger.debug(' Port: %d (%s) Processes: %s', port, protocol, ', '.join(self.port_process_whitelist[protocol][port])) + + elif 'processblacklist' in listener_config: + self.logger.debug('Process blacklist:') + + if not protocol in self.port_process_blacklist: + self.port_process_blacklist[protocol] = dict() + + self.port_process_blacklist[protocol][port] = [process.strip() for process in listener_config['processblacklist'].split(',')] + + for port in self.port_process_blacklist[protocol]: + self.logger.debug(' Port: %d (%s) Processes: %s', port, protocol, ', '.join(self.port_process_blacklist[protocol][port])) + + ############################################################### + # Host filtering configuration + if 'hostwhitelist' in listener_config and 'hostblacklist' in listener_config: + self.logger.error('ERROR: Listener can\'t have both host whitelist and blacklist.') + sys.exit(1) + + elif 'hostwhitelist' in listener_config: + + self.logger.debug('Host whitelist:') + + if not protocol in self.port_host_whitelist: + self.port_host_whitelist[protocol] = dict() + + self.port_host_whitelist[protocol][port] = [host.strip() for host in listener_config['hostwhitelist'].split(',')] + + for port in self.port_host_whitelist[protocol]: + self.logger.debug(' Port: %d (%s) Hosts: %s', port, protocol, ', '.join(self.port_host_whitelist[protocol][port])) + + elif 'hostblacklist' in listener_config: + self.logger.debug('Host blacklist:') + + if not protocol in self.port_host_blacklist: + self.port_host_blacklist[protocol] = dict() + + self.port_host_blacklist[protocol][port] = [host.strip() for host in listener_config['hostblacklist'].split(',')] + + for port in self.port_host_blacklist[protocol]: + self.logger.debug(' Port: %d (%s) Hosts: %s', port, protocol, ', '.join(self.port_host_blacklist[protocol][port])) + + ############################################################### + # Execute command configuration + if 'executecmd' in listener_config: + + if not protocol in self.port_execute: + self.port_execute[protocol] = dict() + + self.port_execute[protocol][port] = listener_config['executecmd'].strip() + self.logger.debug('Port %d (%s) ExecuteCmd: %s', port, protocol, self.port_execute[protocol][port] ) + + ########################################################################### + # Parse diverter settings and filters + + def parse_diverter_config(self): + + # Do not redirect blacklisted processes + if self.diverter_config.get('processblacklist') != None: + self.blacklist_processes = [process.strip() for process in self.diverter_config.get('processblacklist').split(',')] + self.logger.debug('Blacklisted processes: %s', ', '.join([str(p) for p in self.blacklist_processes])) + + # Do not redirect blacklisted hosts + if self.diverter_config.get('hostblacklist') != None: + self.blacklist_hosts = [host.strip() for host in self.diverter_config.get('hostblacklist').split(',')] + self.logger.debug('Blacklisted hosts: %s', ', '.join([str(p) for p in self.blacklist_hosts])) + + # Redirect all traffic + if self.diverter_config.get('redirectalltraffic') and self.diverter_config['redirectalltraffic'].lower() == 'yes': + self.filter = "outbound and ip and (icmp or tcp or udp)" + + if self.diverter_config.get('defaulttcplistener') == None: + self.logger.error('ERROR: No default TCP listener specified in the configuration.') + sys.exit(1) + + elif self.diverter_config.get('defaultudplistener') == None: + self.logger.error('ERROR: No default UDP listener specified in the configuration.') + sys.exit(1) + + elif not self.diverter_config.get('defaulttcplistener') in self.listeners_config: + self.logger.error('ERROR: No configuration exists for default TCP listener %s', self.diverter_config.get('defaulttcplistener')) + sys.exit(1) + + elif not self.diverter_config.get('defaultudplistener') in self.listeners_config: + self.logger.error('ERROR: No configuration exists for default UDP listener %s', self.diverter_config.get('defaultudplistener')) + sys.exit(1) + + else: + self.default_listener_tcp_port = int( self.listeners_config[ self.diverter_config['defaulttcplistener'] ]['port'] ) + self.logger.error('Using default listener %s on port %d', self.diverter_config['defaulttcplistener'], self.default_listener_tcp_port) + + self.default_listener_udp_port = int( self.listeners_config[ self.diverter_config['defaultudplistener'] ]['port'] ) + self.logger.error('Using default listener %s on port %d', self.diverter_config['defaultudplistener'], self.default_listener_udp_port) + + # Do not redirect blacklisted TCP ports + if self.diverter_config.get('blacklistportstcp') != None: + self.blacklist_ports_tcp = [int(port.strip()) for port in self.diverter_config.get('blacklistportstcp').split(',')] + self.logger.debug('Blacklisted TCP ports: %s', ', '.join([str(p) for p in self.blacklist_ports_tcp])) + + # Do not redirect blacklisted UDP ports + if self.diverter_config.get('blacklistportsudp') != None: + self.blacklist_ports_udp = [int(port.strip()) for port in self.diverter_config.get('blacklistportsudp').split(',')] + self.logger.debug('Blacklisted UDP ports: %s', ', '.join([str(p) for p in self.blacklist_ports_udp])) + + # Redirect only specific traffic, build the filter dynamically + else: + + filter_diverted_ports = list() + + if self.diverted_ports.get('TCP') != None: + for tcp_port in self.diverted_ports.get('TCP'): + filter_diverted_ports.append("tcp.DstPort == %s" % tcp_port) + filter_diverted_ports.append("tcp.SrcPort == %s" % tcp_port) + + if self.diverted_ports.get('UDP') != None: + for udp_port in self.diverted_ports.get('UDP'): + filter_diverted_ports.append("udp.DstPort == %s" % udp_port) + filter_diverted_ports.append("udp.SrcPort == %s" % udp_port) + + if len(filter_diverted_ports) > 0: + self.filter = "outbound and ip and (icmp or %s)" % " or ".join(filter_diverted_ports) + else: + self.filter = "outbound and ip" + + ########################################################################### + # Diverter controller functions + + def start(self): + + self.logger.info('Starting...') + + # Set local DNS server IP address + if self.diverter_config.get('modifylocaldns') and self.diverter_config['modifylocaldns'].lower() == 'yes': + self.set_dns_server(self.loopback_ip) + + # Stop DNS service + if self.diverter_config.get('stopdnsservice') and self.diverter_config['stopdnsservice'].lower() == 'yes': + self.stop_service_helper('Dnscache') + + self.logger.info('Diverting ports: ') + if self.diverted_ports.get('TCP'): self.logger.info('TCP: %s', ', '.join("%d" % port for port in self.diverted_ports['TCP'])) + if self.diverted_ports.get('UDP'): self.logger.info('UDP: %s', ', '.join("%d" % port for port in self.diverted_ports['UDP'])) + + self.flush_dns() + + self.diverter_thread = threading.Thread(target=self.divert_thread) + self.diverter_thread.daemon = True + + self.diverter_thread.start() + + + + def divert_thread(self): + + try: + while True: + packet = self.handle.receive() + self.handle_packet(packet) + + # Handle errors related to shutdown process. + except WindowsError as e: + if e.winerror in [4,6,995]: + return + else: + raise + + def stop(self): + self.logger.info('Stopping...') + if self.pcap: + self.pcap.close() + + self.handle.close() + + # Restore DNS server + if self.diverter_config.get('modifylocaldns') and self.diverter_config['modifylocaldns'].lower() == 'yes': + self.restore_dns_server() + + # Restart DNS service + if self.diverter_config.get('stopdnsservice') and self.diverter_config['stopdnsservice'].lower() == 'yes': + self.start_service_helper('Dnscache') + + self.flush_dns() + + + def handle_icmp_packet(self, packet): + # Modify outgoing ICMP packet to target local Windows host which will reply to the ICMP messages. + # HACK: Can't intercept inbound ICMP server, but still works for now. + + if not ((packet.meta.is_loopback() and packet.src_addr == self.loopback_ip and packet.dst_addr == self.loopback_ip) or \ + (packet.src_addr == self.external_ip and packet.dst_addr == self.external_ip)): + + self.logger.info('Modifying %s ICMP packet:', 'loopback' if packet.meta.is_loopback() else 'external') + self.logger.info(' from: %s -> %s', packet.src_addr, packet.dst_addr) + + # Direct packet to the right interface IP address to avoid routing issues + packet.dst_addr = self.loopback_ip if packet.meta.is_loopback() else self.external_ip + + self.logger.info(' to: %s -> %s', packet.src_addr, packet.dst_addr) + + return packet + + def handle_tcp_udp_packet(self, packet, protocol, default_listener_port, blacklist_ports): + + # Meta strings + interface_string = 'loopback' if packet.meta.is_loopback() else 'external' + direction_string = 'inbound' if packet.meta.is_inbound() else 'outbound' + + # Protocol specific filters + diverted_ports = self.diverted_ports.get(protocol) + port_process_whitelist = self.port_process_whitelist.get(protocol) + port_process_blacklist = self.port_process_blacklist.get(protocol) + port_host_whitelist = self.port_host_whitelist.get(protocol) + port_host_blacklist = self.port_host_blacklist.get(protocol) + port_execute = self.port_execute.get(protocol) + + if packet.src_port in blacklist_ports or packet.dst_port in blacklist_ports: + self.logger.debug('Forwarding blacklisted port %s %s %s packet:', direction_string, interface_string, protocol) + self.logger.debug(' %s:%d -> %s:%d', packet.src_addr, packet.src_port, packet.dst_addr, packet.dst_port) + + # Check if a packet must be diverted to a local listener + # Rules: + # 1) Divert outbound packets only + # 2) Make sure we are not diverting response packet based on the source port + # 3) Make sure the destination port is a known diverted port or we have a default listener port defined + elif diverted_ports and (packet.dst_port in diverted_ports or default_listener_port != None) and not packet.src_port in diverted_ports: + + # Find which process ID is sending the request + conn_pid = self.get_pid_port_tcp(packet.src_port) if type(packet.headers[1].hdr) == TcpHeader else self.get_pid_port_udp(packet.src_port) + process_name = self.get_process_image_filename(conn_pid) if conn_pid else None + + # Check process blacklist + if process_name and process_name in self.blacklist_processes: + self.logger.debug('Ignoring %s %s %s request packet from process %s in the process blacklist.', direction_string, interface_string, protocol, process_name) + self.logger.debug(' %s:%d -> %s:%d', packet.src_addr, packet.src_port, packet.dst_addr, packet.dst_port) + + # Check host blacklist + if packet.dst_addr in self.blacklist_hosts: + self.logger.debug('Ignoring %s %s %s request packet to %s in the host blacklist.', direction_string, interface_string, protocol, packet.dst_addr) + self.logger.debug(' %s:%d -> %s:%d', packet.src_addr, packet.src_port, packet.dst_addr, packet.dst_port) + + # Check the port process whitelist + elif process_name and port_process_whitelist and \ + ((packet.dst_port in port_process_whitelist and not process_name in port_process_whitelist[packet.dst_port]) or\ + (default_listener_port and default_listener_port in port_process_whitelist and not process_name in port_process_whitelist[default_listener_port])) : + self.logger.debug('Ignoring %s %s %s request packet from process %s not in the listener process whitelist.', direction_string, interface_string, protocol, process_name) + self.logger.debug(' %s:%d -> %s:%d', packet.src_addr, packet.src_port, packet.dst_addr, packet.dst_port) + + # Check the port process blacklist + elif process_name and port_process_blacklist and \ + ((packet.dst_port in port_process_blacklist and process_name in port_process_blacklist[packet.dst_port]) or\ + (default_listener_port and default_listener_port in port_process_blacklist and process_name in port_process_blacklist[default_listener_port])) : + self.logger.debug('Ignoring %s %s %s request packet from process %s in the listener process blacklist.', direction_string, interface_string, protocol, process_name) + self.logger.debug(' %s:%d -> %s:%d', packet.src_addr, packet.src_port, packet.dst_addr, packet.dst_port) + + # Check the port host whitelist + elif packet.dst_addr and port_host_whitelist and \ + ((packet.dst_port in port_host_whitelist and not packet.dst_addr in port_host_whitelist[packet.dst_port]) or\ + (default_listener_port and default_listener_port in port_host_whitelist and not packet.dst_addr in port_host_whitelist[default_listener_port])) : + self.logger.debug('Ignoring %s %s %s request packet to %s not in the listener host whitelist.', direction_string, interface_string, protocol, packet.dst_addr) + self.logger.debug(' %s:%d -> %s:%d', packet.src_addr, packet.src_port, packet.dst_addr, packet.dst_port) + + # Check the port host blacklist + elif packet.dst_addr and port_host_blacklist and \ + ((packet.dst_port in port_host_blacklist and packet.dst_addr in port_host_blacklist[packet.dst_port]) or\ + (default_listener_port and default_listener_port in port_host_blacklist and packet.dst_addr in port_host_blacklist[default_listener_port])) : + self.logger.debug('Ignoring %s %s %s request packet to %s in the listener host blacklist.', direction_string, interface_string, protocol, packet.dst_addr) + self.logger.debug(' %s:%d -> %s:%d', packet.src_addr, packet.src_port, packet.dst_addr, packet.dst_port) + + # Make sure you are not intercepting packets from one of the FakeNet listeners + elif conn_pid and os.getpid() == conn_pid: + self.logger.debug('Skipping %s %s %s listener packet:', direction_string, interface_string, protocol) + self.logger.debug(' %s:%d -> %s:%d', packet.src_addr, packet.src_port, packet.dst_addr, packet.dst_port) + + # Modify the packet + else: + + # Adjustable log level output. Used to display info level logs for first packets of the session and + # debug level for the rest of the communication in order to reduce log output. + logger_level = self.logger.debug + + # First packet in a new session + if not (packet.src_port in self.sessions and self.sessions[packet.src_port] == (packet.dst_addr, packet.dst_port)): + + # Cache original target IP address based on source port + self.sessions[packet.src_port] = (packet.dst_addr, packet.dst_port) + + # Override log level to display all information on info level + logger_level = self.logger.info + + # Execute command + if conn_pid and port_execute and (packet.dst_port in port_execute or (default_listener_port and default_listener_port in port_execute)): + + + execute_cmd = port_execute[packet.dst_port if packet.dst_port in diverted_ports else default_listener_port].format(pid = conn_pid, + procname = process_name, + src_addr = packet.src_addr, + src_port = packet.src_port, + dst_addr = packet.dst_addr, + dst_port = packet.dst_port) + + logger_level('Executing command: %s', execute_cmd) + + self.execute_detached(execute_cmd) + + + logger_level('Modifying %s %s %s request packet:', direction_string, interface_string, protocol) + logger_level(' from: %s:%d -> %s:%d', packet.src_addr, packet.src_port, packet.dst_addr, packet.dst_port) + + # Direct packet to the right interface IP address to avoid routing issues + packet.dst_addr = self.loopback_ip if packet.meta.is_loopback() else self.external_ip + + # Direct packet to an existing or a default listener + packet.dst_port = packet.dst_port if packet.dst_port in diverted_ports else default_listener_port + + logger_level(' to: %s:%d -> %s:%d', packet.src_addr, packet.src_port, packet.dst_addr, packet.dst_port) + + if conn_pid: + logger_level(' pid: %d name: %s', conn_pid, process_name if process_name else 'Unknown') + + + # Restore diverted response from a local listener + # NOTE: The response can come from a legitimate request + elif diverted_ports and packet.src_port in diverted_ports: + + # Find which process ID is sending the request + conn_pid = self.get_pid_port_tcp(packet.dst_port) if type(packet.headers[1].hdr) == TcpHeader else self.get_pid_port_udp(packet.dst_port) + process_name = self.get_process_image_filename(conn_pid) + + if not packet.dst_port in self.sessions: + self.logger.debug('Unknown %s %s %s response packet:', direction_string, interface_string, protocol) + self.logger.debug(' %s:%d -> %s:%d', packet.src_addr, packet.src_port, packet.dst_addr, packet.dst_port) + + # Restore original target IP address from the cache + else: + self.logger.debug('Modifying %s %s %s response packet:', direction_string, interface_string, protocol) + self.logger.debug(' from: %s:%d -> %s:%d', packet.src_addr, packet.src_port, packet.dst_addr, packet.dst_port) + + # Restore original target IP address based on destination port + packet.src_addr, packet.src_port = self.sessions[packet.dst_port] + + self.logger.debug(' to: %s:%d -> %s:%d', packet.src_addr, packet.src_port, packet.dst_addr, packet.dst_port) + + if conn_pid: + self.logger.debug(' pid: %d name: %s', conn_pid, process_name if process_name else 'Unknown') + + else: + self.logger.debug('Forwarding %s %s %s packet:', direction_string, interface_string, protocol) + self.logger.debug(' %s:%d -> %s:%d', packet.src_addr, packet.src_port, packet.dst_addr, packet.dst_port) + + return packet + + def handle_packet(self, packet): + + if packet == None: + self.logger.error('ERROR: Can\'t handle packet.') + return + + # Preserve destination address to detect packet being diverted + dst_addr = packet.dst_addr + + ####################################################################### + # Capture packet and store raw packet in the PCAP + if self.capture_flag: + self.pcap.writepkt(packet._raw_packet) + + ########################################################################### + # Verify the IP packet has an additional header + + if len(packet.headers) > 1 and packet.headers[1] and packet.headers[1].hdr: + + ####################################################################### + # Handle ICMP Packets + + if type(packet.headers[1].hdr) in [IcmpHeader, Icmpv6Header]: + packet = self.handle_icmp_packet(packet) + + ####################################################################### + # Handle TCP/UDP Packets + + elif type(packet.headers[1].hdr) == TcpHeader: + protocol = 'TCP' + packet = self.handle_tcp_udp_packet(packet, + protocol, + self.default_listener_tcp_port, + self.blacklist_ports_tcp) + + elif type(packet.headers[1].hdr) == UdpHeader: + protocol = 'UDP' + packet = self.handle_tcp_udp_packet(packet, + protocol, + self.default_listener_udp_port, + self.blacklist_ports_udp) + + else: + self.logger.error('ERROR: Unknown packet header type.') + + ####################################################################### + # Capture modified packet and store raw packet in the PCAP + # NOTE: While this results in potentially duplicate traffic capture, this is necessary + # to properly restore TLS/SSL sessions. + # TODO: Develop logic to record traffic before modification for both requests and + # responses to reduce duplicate captures. + if self.capture_flag and (dst_addr != packet.dst_addr): + self.pcap.writepkt(packet._raw_packet) + + ####################################################################### + # Attempt to send the processed packet + try: + self.handle.send(packet) + except Exception, e: + + protocol = 'Unknown' + + if type(packet.headers[1].hdr) == TcpHeader: + protocol = 'TCP' + elif type(packet.headers[1].hdr) == UdpHeader: + protocol = 'UDP' + elif type(packet.headers[1].hdr) in [IcmpHeader, Icmpv6Header]: + protocol = 'ICMP' + + interface_string = 'loopback' if packet.meta.is_loopback() else 'external' + direction_string = 'inbound' if packet.meta.is_inbound() else 'outbound' + + self.logger.error('ERROR: Failed to send %s %s %s packet', direction_string, interface_string, protocol) + + if packet.src_port and packet.dst_port: + self.logger.error(' %s:%d -> %s:%d', packet.src_addr, packet.src_port, packet.dst_addr, packet.dst_port) + else: + self.logger.error(' %s -> %s', packet.src_addr, packet.dst_addr) + + self.logger.error(' %s', e) + +def main(): + + self.diverter_config = {'redirectalltraffic': 'no', 'defaultlistener': 'DefaultListener', 'dumppackets': 'no'} + listeners_config = {'DefaultListener': {'port': '1337'}} + + diverter = Diverter(diverter_config, listeners_config) + diverter.start() + + ########################################################################### + # Run processing + import time + + try: + while True: + time.sleep(1) + except KeyboardInterrupt: + diverter.stop() + + ########################################################################### + # Run tests + # TODO + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/fakenet/diverters/windows.pyc b/fakenet/diverters/windows.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3ccb931d38d775cd1846b0115d3c63ddda696c57 GIT binary patch literal 17336 zcmcIsU2Gi5aqgK}{wzg`5+zaMNxB>9#4~leqtBL3is`%aoki)SSjQ7al4UEBH>;f? zx#V(oIWv?==j*1P+n_MiK`BoIC^x0yqzb0Y5lEV89Q- zA;`1yeN{a(yA;pT!HURf_HHgWKq&U zh5Tcq_v1-xNFsFXn8-Ct9%=rRLoR?@BnTXEC4=F6lEK(3lEJ`b1RS+ek0B38)ix6j zN@myum!?Quqk@E)K0K%Kr2p-KZey0f2*=!W%pGHDF4H9;5b*gf@V-sp z{oUZcfPbzFd|(qexQQVFdv?ey9VU2K6+Qfh6Aqaes_4ui}TJHu~@q_Q;<%Z;NZ+%EKGPn)G75*+b2a`8Q^}q)%R?qP z={a`?pmGCd>0Krqlfi$_Eh*R~otE#rx1i{hXPfVl=DWNSe0)>$y<0a|abv*y3{c&3 zjngyc*fAf<-pxVOj+<~oGADAqdtL@tF-s>+_!!YAKM?{Tr^n31(kYSZexd9qUiJ$) zmIDUUjBO4QBf8AqW0q!2_&8C_yJr0Epdf}?zSo3Lm^;uF()EH_dfqI(XtH;*D1?r= zCOl+p`AcXmEPvjplrBvj#>AfsJfvc=TJ1)?wb)Lx^f?q=eI=MXKlkd4KiBr_Fl4tP zKgt%PB#tt_8N+(b*BeplhfxMI7lnt?V`${(|1P$odWsft{bnoj>poiDZYRrS%jwkL z)X73Ui*DC9QoqrT=bH;_36Wmk0%=hXyrJ4v-!}H!iJ!FBvIrd^A4Z9vwYAem)XDs4 z9fZgAmY*f{`T1sJI(>2z6|-}f{4`2npnD0q@Bl)}c0FC!Tdnr(V)RLrwp(jl6s9v; z-dA3mJ$WLd^|ybHzdNHiTFsm32>xDe#+iR`RkK38w?nJSFb1e>A zQRw#oHf1^Ds)JUwPCZ+Mkv3+&*}~wP>^D7y;hil zZcqhSgDh1eMMZQgYGtE%$%R|fsg>;@EMyqPmGi}AqjkvxN$@pza z@t#k%TC*edt#-R}6a3ShbrrD|8+iX?V5=`AnehjaL7J!-&wDDHZaMz#C+K+@-+iUDPtO(3yGr~s{H zjgFANb?sVcYe`K(gN~O?v#rX}XmhzT1aprfEb)j17ftKP05%KvaX>c~BgjF`dM!8W zwR#A3gTzIPZr78TT11&Bcy6GxokdX?r!{LWMUtIXJ)3VQD}rIA-dJqH@KaeK2J%ge z5i?6|tRd8>XdR-|9>XR~GjxgSS*vkw)M{cTqa=X_i22x1JZP1Peisu{ke!oBD_Nbt z(kW+jMhOF$w(N|cV=uQsp1jZ~o~^eqDG0}z3R_Z}Z`BvFeJJ3}h9Q-yu7v5V)iDvA z#6kasTv&WeGLG_cvKC1uYua(aF3!sftDEtBTdKp(awb$?O`zO~aBud)q%oVpmQ%M)nLi)B$7rnL^236dkSDilJq6yuFYJZ zC9Za71w6ZMjpy}w7*PoF*?1w(UeC2Ey$&XltJ9qgD><0|tXAX1NZ}V5Nv^tCj1nxr<-;)Y#s5 zX1U)a*p^5hB@^(v;Avwk!@2>Jgt_;H2A*s_=zYP>!|try6rj?DlLxmS4sjn{VYrZN z{?)GL11#tE#oGb{YA{i-`$VIEHefC=X$cy=04J_^nOLgQ`==9*ot_=SZU;MtB2QS| zQVt1RFTEe_YWMH?t_1r>Y}tU5G@|)7p(JoHM=T}VNIogy{t5#g#DGV*i$JT{8)MuE zz~^7WUcs1;xMo%NN78Bn^uDm}N?%$qd*e9yYzal@BODVtz+Pi%)KY*~wxmq%AvUo3 z1#B7qmRln`(9h-@1hm&(i6wrA5I^dc#LM=ii}>mTh<{R0ODiS*jL@V74?%pEjmLGk~gi+Jq!dx+op0OJ2c zh?iE~64Qc*Aiii>5Z_-BiH+yPf2(5EYnKokS4vJJEMaFUCdN1@6`pdeQX>SFBj0N| z*Hb?sD*mm?>WIPb)zFwrQ#7k{vL4VY5{nDZC~G&`E!lxtul}MfldS^$6D)M0kCoZa z-5Ge1x=-+c@bc-4vVvWiy_i0Y_hM^stKMpcaN@NCwAqY9Tt(}em7W>>M_X9b&w7r_>|=b=9} znI82mY?RVtPq`XAr%Nav~OyeKJv(ib0M5X4auw|N9~*3R`n%%t=&HW5w` zCAw%(P%)Fy^|Y>PVO-b-U!e2!qK9f}+p^s8{ zq~1+%1l@cMPr8W2R3_YEcZWOd?1Fd0zvK8j>g;lNSN72>ky^f=a(6o?P_MP}_7D)m zf@{Ci;AWm440oHS@udF+4~Av}zj?40mSNd5$#2+TW_J~X$Pylv^%y=493OZJx*ne( zA_Q@XPU5&Bpy9|2=7{=q8Ak{TE3Ba5GQLbR&5)DzL6i~+G+Ih_JM;(&BBiRA5;#s? z7bSlulnixIf>>cUB|}?M^1oYBBC*uuO|kx1Uk6}(CH4&egpvF=J^Bk6I6|fciQ*NJ zdH{S}yb>@3zKnW6*ag7_QOCxK=cHaojeskppzZ#qtDTLH_Ou)CYA5}%dv#1)aW1q= z^>q}zfJt<(2h+cFQ7#mem@af-f`?EHP{8iT^hty5oVHe2M3*Nf;D>O{LrD#bAaE#U zng>e(!%{dVbX+$f80kfT^zu=>IFII;>;`Qi|RCVdlJ_&!LYiNlm zH0Y&rx)gg2o``me^O4=XnzVaMO?scVl}?L8V(Ix&rH3A=dI);n5PJ4>(Svh|Zq44a zB|ZO^)3f@cO8lllKmv1?`v?qcukcC&)|R%*mG$>+uA03uB@TF>S=uMz>wYtiG18l7 z0b7(=W{yfM7hsN6bp4C102qC#o z?uO)QAj@e+4+5cOIh{jv)&_zDhO|vppvf2Nv^l@0@vh|cg2f-y%0 zk&XPIIA54#8*Tk3M9%a0G(4=*^-4QYqdCv$B%;&|N#+slx`c++FC(3{HM)BMdMxP= zjlMhV2?~4qMu42*81eG9BppsvSJd=jn)i@4naYYSq3kOuKw5l&`-~%*+usM;)`?|^U_O6qbve8VBr!`2*7w}77*ySUOM+MIS*#I1<^fJ*R{&dQDuT2pl za@9}MbieZiJTytYLyqs_0pyDU|Dy9!AE74@b=p__9djn!29O&*bcDq_yN)+nQeDsF zR8`hDjlGBqmCOkQ4(AvklC=wd7ab3+$o(-IYwKZYYl-kApUGPz4ARqDE3n{+t<9S% zA$s~u!UpADfx1XP=pq#-hE;<&64v%l=@3u?*J&1H@V9jL6oWWM$-%D08%A3(jC5hx zwiO0=HDDVK1(wieyAT2QL>z${E&-?mwB6Lye}U(-QyR#cz)3Ne^1S5|51n8`rl+SR zO1;t!oAVoTiixg9 zinO_h^zfv7xFCV4H%84}@dDvpkAKivg%|B$`68(7IVZz8Rcw|>Jbd~&nIex=-BSiR zUsyn-cD<9lL`9U&`;8hajt54M<9Rd#2|fyp|KG#7Q4T}G*^oKn>{DDF)zE!_ISGr4 zL8O6GsYh9@Je~-+MV12;YJ;3vKo@F@Q7hlns<9*s=UZ#(BHPLaIa^GkddQOy&hg9g zCV>GpX*I3yJx0^A;2is8tFRue;3AN2f}yl>VMzA6k5mByOkDFi8Fl~}Z|A!2?E zc5R0+IE`zg( zsx#{B@pu|hDc1u|bm8k?BeV5-kQ|i?G3{V-Zm+R5z)d5(vlU!*?1OdHhy@(saIPA# z-%u-EHMByG2XZ9ZPS=aC=k2&&bhpzASp1&#LT$51jDpBbZM)M^QybhysTkK_ow*Gp zQ#8k2)A0;mMcW&#b{dHoH&0P@!!a3g&Q?y-jBzQsOt5*1{tCMR+s&h&HWDtPS-3^9 zk}!h+P8HK;1e1r)4!1#p@}d5UV1I-R=7TQu5JqxbUiHqL3PwxxNJC0Gm%Cv4xa7CB zL}8>P{h`Q9!!a7KktLj6tW)^B`vnc*ghPeGp}kC2rjR=K)ZL_gOHg_y#(9ir6>4kR zr?!X7v8g>B53XUV16=1`ljW7mBwY0Kr(c8nEGMEf5`@kV_vIx&`IkB3`}0YAh0Bir z>`Qd0IdObkWSGG%lDtq{Nf87NO6zi6pqbWskfuokC)8o0rhE`cLY(bOi8#gL_Hs4Q zaHm8Pe~qtr9@+GlU7wyU*SIOPX6VN4j@$u5Rh2i)vnD@5n2_79r1mCLKfsVRsnG)GCmmr=LIWXN(E$$26KJu^`wA z`ph?_Tf|qSD=bg3x{o-c$xH6yByq$fpAkr$v`8q7jK$Ih8n@$Ko`aO+1|kTvYF zM~vE%1(8pCBnxmLOM#GAAdx2~s5yr|#gx1$jl+V1gwP{97e) z1O)-ZE87x>}Wn`EwGM;08lS{q%-KKNE7 zV<10Es`U04;+qS83u*A%NM!HTj3pi}j$Iy&Oc_}_+fHyvkXz&Ogq}fp3Eif2?eJ@T zMCLQAH>_r>?kAFr9Kg`nGYu72YDqJ^gS@)KPCm zsj#4n%(D+eW)BmKL2u^fVW7IS+?4I3)d|S20MGXj9>6-yFu%~!;E8|myC{?r`u^0b z;P>(p`u-BGW9Ub(J5UjEO?(CM0SVf%=blZADp#*&&7{0-Q0`H>_0v}6JC&X)?lycM z6k`_yl_t6DRA$VTcsXw0j?+VcvH5c3xGay0?D#e!pBYcS6`7mh7{ThAayl5K7LR<* z5quUv!S5iEDg* zLiQZ0yu(f9+H|v8^i4V_K7gs=LND}A3iV787ujv0@?37i`0T5f-J;hxe2d8;TpKHH zOzCA87U*?-d%JfV3i5H`&d;OW)sh2tSIc7=IgOFc{TI2h{W5Bex8K?CjXA}S`#8=+ zjtxBLy^Qib&H?8bYM($l>>S1q-^<*nGl?J8mN}lM92*$+PIw1!6Zlz#S^9Z*7eB-9 zh`Y<%ZohN5Zx8wz#Z6+gsZ2Oi-T`+C*$c5!0BOPlDVZtoIPi2_f#g!m>Qq?^8f-2eBBxl|7GfOy51z(Cy9zt*oc>vu3 zxSg^CKPZ_36wWGYAD2|OE|369@M$T7ASfz8)sa7&Y4Nlu@l=8`vt_RcNT**n69{+GPwBY%gq>#Saai4a5I`|^M#LP3oS9*fM@1s2U z10?BWiKzT)D#aDRa*b2OTl#$RMN}F0)5C7GoDw@p+`9U_hdHkH0Vi~D28meA+q|vF z&n0LNYf1ffeh`ol?8{8P!sL&T$QpPaQ98RM(WdhC)=4c0-XP>3Gx-LSrir{O^{Tbo# zJhEVA@T)-fPME?pAX?r*bSfUcvv9`y-raZD8S6VBHrGQs>UQP5U4#3a@rvi{MtMJK zs<7u(SoJDS$oIPwu*1h(SYU=VMJhE}wD7sk5K3w_oW!p2>z#nBt!mTU+1GEiExd@YGOM4%Ua-h0ga(pZQi-Fh+ z`PxX;lrDj=OyzW*ujkm5>`7Y@w4T!aK(ukQja}e*eiEFlbutmA9>&Q%-a!E69}5M< zQcCs_2vr8MQg6l|r<(Kh$iOk#jmxt`m0>xY+vAKlR!0d}tEmepnmGpW&W2Jq&F`4x zCV-qW7R6D#wi3V#G68xp0ToCb(cl7e!j_LQ_bw#j76T7H@omXeNY`%Wcaq8WtIhZd zs$OfZH)G}Pci8l=kd$1J+@oL(IsbxA#g{zfQyNXn&s;F Gu=9T$@tzI< literal 0 HcmV?d00001 diff --git a/fakenet/diverters/winutil.py b/fakenet/diverters/winutil.py new file mode 100644 index 0000000..c8f26a7 --- /dev/null +++ b/fakenet/diverters/winutil.py @@ -0,0 +1,1195 @@ +#!/usr/bin/env python +import logging +logging.basicConfig(format='%(asctime)s [%(name)18s] %(message)s', datefmt='%m/%d/%y %I:%M:%S %p', level=logging.DEBUG) + +from ctypes import * +from ctypes.wintypes import * + +import os +import sys +import socket +import struct + +import time + +from _winreg import * + +import subprocess + +NO_ERROR = 0 + +AF_INET = 2 +AF_INET6 = 23 + +ULONG64 = c_uint64 + + +############################################################################## +# Services related functions +############################################################################## + +SC_MANAGER_ALL_ACCESS = 0xF003F + +SERVICE_ALL_ACCESS = 0xF01FF +SERVICE_STOP = 0x0020 +SERVICE_QUERY_STATUS = 0x0004 +SERVICE_ENUMERATE_DEPENDENTS = 0x0008 + +SC_STATUS_PROCESS_INFO = 0x0 + +SERVICE_STOPPED = 0x1 +SERVICE_START_PENDING = 0x2 +SERVICE_STOP_PENDING = 0x3 +SERVICE_RUNNING = 0x4 +SERVICE_CONTINUE_PENDING = 0x5 +SERVICE_PAUSE_PENDING = 0x6 +SERVICE_PAUSED = 0x7 + +SERVICE_CONTROL_STOP = 0x1 +SERVICE_CONTROL_PAUSE = 0x2 +SERVICE_CONTROL_CONTINUE = 0x3 + +SERVICE_NO_CHANGE = 0xffffffff + +SERVICE_AUTO_START = 0x2 +SERVICE_BOOT_START = 0x0 +SERVICE_DEMAND_START = 0x3 +SERVICE_DISABLED = 0x4 +SERVICE_SYSTEM_START = 0x1 + +class SERVICE_STATUS_PROCESS(Structure): + _fields_ = [ + ("dwServiceType", DWORD), + ("dwCurrentState", DWORD), + ("dwControlsAccepted", DWORD), + ("dwWin32ExitCode", DWORD), + ("dwServiceSpecificExitCode", DWORD), + ("dwCheckPoint", DWORD), + ("dwWaitHint", DWORD), + ("dwProcessId", DWORD), + ("dwServiceFlags", DWORD), + ] + +############################################################################## +# Process related functions +############################################################################## + +############################################################################## +# GetExtendedTcpTable constants and structures + +TCP_TABLE_OWNER_PID_ALL = 5 + +class MIB_TCPROW_OWNER_PID(Structure): + _fields_ = [ + ("dwState", DWORD), + ("dwLocalAddr", DWORD), + ("dwLocalPort", DWORD), + ("dwRemoteAddr", DWORD), + ("dwRemotePort", DWORD), + ("dwOwningPid", DWORD) + ] + +class MIB_TCPTABLE_OWNER_PID(Structure): + _fields_ = [ + ("dwNumEntries", DWORD), + ("table", MIB_TCPROW_OWNER_PID * 512) + ] + +############################################################################## +# GetExtendedUdpTable constants and structures + +UDP_TABLE_OWNER_PID = 1 + +class MIB_UDPROW_OWNER_PID(Structure): + _fields_ = [ + ("dwLocalAddr", DWORD), + ("dwLocalPort", DWORD), + ("dwOwningPid", DWORD) + ] + +class MIB_UDPTABLE_OWNER_PID(Structure): + _fields_ = [ + ("dwNumEntries", DWORD), + ("table", MIB_UDPROW_OWNER_PID * 512) + ] + +############################################################################### +# GetProcessImageFileName constants and structures + +MAX_PATH = 260 +PROCESS_QUERY_LIMITED_INFORMATION = 0x1000 + + +############################################################################### +# Network interface related functions +############################################################################### + +MIB_IF_TYPE_ETHERNET = 6 +MIB_IF_TYPE_LOOPBACK = 28 +IF_TYPE_IEEE80211 = 71 + +############################################################################### +# GetAdaptersAddresses constants and structures + +MAX_ADAPTER_ADDRESS_LENGTH = 8 +MAX_DHCPV6_DUID_LENGTH = 130 + +IFOPERSTATUSUP = 1 + +class SOCKADDR(Structure): + _fields_ = [ + ("sa_family", c_ushort), + ("sa_data", c_char * 14), + ] + +class SOCKET_ADDRESS(Structure): + _fields_ = [ + ("Sockaddr", POINTER(SOCKADDR)), + ("SockaddrLength", INT), + ] + +class IP_ADAPTER_PREFIX(Structure): + pass +IP_ADAPTER_PREFIX._fields_ = [ + ("Length", ULONG), + ("Flags", DWORD), + ("Next", POINTER(IP_ADAPTER_PREFIX)), + ("Address", SOCKET_ADDRESS), + ("PrefixLength", ULONG), + ] + +class IP_ADAPTER_ADDRESSES(Structure): + pass +IP_ADAPTER_ADDRESSES._fields_ = [ + ("Length", ULONG), + ("IfIndex", DWORD), + ("Next", POINTER(IP_ADAPTER_ADDRESSES)), + ("AdapterName", LPSTR), + ("FirstUnicastAddress", c_void_p), # Not used + ("FirstAnycastAddress", c_void_p), # Not used + ("FirstMulticastAddress", c_void_p), # Not used + ("FirstDnsServerAddress", c_void_p), # Not used + ("DnsSuffix", LPWSTR), + ("Description", LPWSTR), + ("FriendlyName", LPWSTR), + ("PhysicalAddress", BYTE * MAX_ADAPTER_ADDRESS_LENGTH), + ("PhysicalAddressLength", DWORD), + ("Flags", DWORD), + ("Mtu", DWORD), + ("IfType", DWORD), + ("OperStatus", DWORD), + ("Ipv6IfIndex", DWORD), + ("ZoneIndices", DWORD * 16), + ("FirstPrefix", POINTER(IP_ADAPTER_PREFIX)), + ("TransmitLinkSpeed", ULONG64), + ("ReceiveLinkSpeed", ULONG64), + ("FirstWinsServerAddress", c_void_p), # Not used + ("FirstGatewayAddress", c_void_p), # Not used + ("Ipv4Metric", ULONG), + ("Ipv6Metric", ULONG), + ("Luid", ULONG64), + ("Dhcpv4Server", SOCKET_ADDRESS), + ("CompartmentId", DWORD), + ("NetworkGuid", BYTE * 16), + ("ConnectionType", DWORD), + ("TunnelType", DWORD), + ("Dhcpv6Server", SOCKET_ADDRESS), + ("Dhcpv6ClientDuid", BYTE * MAX_DHCPV6_DUID_LENGTH), + ("Dhcpv6ClientDuidLength", ULONG), + ("Dhcpv6Iaid", ULONG), + ("FirstDnsSuffix", c_void_p), # Not used +] + +############################################################################### +# GetAdaptersInfo constants and structures + +MAX_ADAPTER_NAME_LENGTH = 256 +MAX_ADAPTER_DESCRIPTION_LENGTH = 128 +MAX_ADAPTER_LENGTH = 8 + +MIB_IF_TYPE_ETHERNET = 6 +MIB_IF_TYPE_LOOPBACK = 28 +IF_TYPE_IEEE80211 = 71 + +class IP_ADDRESS_STRING(Structure): + _fields_ = [ + ("String", c_char * 16), + ] + +class IP_MASK_STRING(Structure): + _fields_ = [ + ("String", c_char * 16), + ] + +class IP_ADDR_STRING(Structure): + pass +IP_ADDR_STRING._fields_ = [ + ("Next", POINTER(IP_ADDR_STRING)), + ("IpAddress", IP_ADDRESS_STRING), + ("IpMask", IP_MASK_STRING), + ("Context", DWORD), + ] + +class IP_ADAPTER_INFO(Structure): + pass +IP_ADAPTER_INFO._fields_ = [ + ("Next", POINTER(IP_ADAPTER_INFO)), + ("ComboIndex", DWORD), + ("AdapterName", c_char * (MAX_ADAPTER_NAME_LENGTH + 4)), + ("Description", c_char * (MAX_ADAPTER_DESCRIPTION_LENGTH + 4)), + ("AddressLength", UINT), + ("Address", BYTE * MAX_ADAPTER_LENGTH), + ("Index", DWORD), + ("Type", UINT), + ("DhcpEnabled", UINT), + ("CurrentIpAddress", c_void_p), # Not used + ("IpAddressList", IP_ADDR_STRING), + ("GatewayList", IP_ADDR_STRING), + ("DhcpServer", IP_ADDR_STRING), + ("HaveWins", BOOL), + ("PrimaryWinsServer", IP_ADDR_STRING), + ("SecondaryWinsServer", IP_ADDR_STRING), + ("LeaseObtained", c_ulong), + ("LeaseExpires", c_ulong), + + ] + +############################################################################### +# GetNetworkParams constants and structures + +MAX_HOSTNAME_LEN = 128 +MAX_DOMAIN_NAME_LEN = 128 +MAX_SCOPE_ID_LEN = 256 + +############################################################################### +# ConvertInterface constants and structures + +NDIS_IF_MAX_STRING_SIZE = 256 + +class IP_ADDRESS_STRING(Structure): + _fields_ = [ + ("String", c_char * 16), + ] + +class IP_MASK_STRING(Structure): + _fields_ = [ + ("String", c_char * 16), + ] + +class IP_ADDR_STRING(Structure): + pass +IP_ADDR_STRING._fields_ = [ + ("Next", POINTER(IP_ADDR_STRING)), + ("IpAddress", IP_ADDRESS_STRING), + ("IpMask", IP_MASK_STRING), + ("Context", DWORD), + ] + +class FIXED_INFO(Structure): + _fields_ = [ + ("HostName", c_char * (MAX_HOSTNAME_LEN + 4)), + ("DomainName", c_char * (MAX_DOMAIN_NAME_LEN + 4)), + ("CurrentDnsServer", c_void_p), # Not used + ("DnsServerList", IP_ADDR_STRING), + ("NodeType", UINT), + ("ScopeId", c_char * (MAX_SCOPE_ID_LEN + 4)), + ("EnableRouting", UINT), + ("EnableProxy", UINT), + ("EnableDns", UINT), + ] + +class WinUtilMixin(): + + ########################################################################### + # Service related functions + ########################################################################### + + ########################################################################### + # Establishes a connection to the service control manager on the specified computer and opens the specified service control manager database. + # + # SC_HANDLE WINAPI OpenSCManager( + # _In_opt_ LPCTSTR lpMachineName, + # _In_opt_ LPCTSTR lpDatabaseName, + # _In_ DWORD dwDesiredAccess + # ); + + def open_sc_manager(self): + + sc_handle = windll.advapi32.OpenSCManagerA(0, 0, SC_MANAGER_ALL_ACCESS) + if sc_handle == 0: + self.logger.error("Failed to call OpenSCManager") + return + + return sc_handle + + ########################################################################### + # Closes a handle to a service control manager or service object + # + # BOOL WINAPI CloseServiceHandle( + # _In_ SC_HANDLE hSCObject + # ); + + def close_service_handle(self, sc_handle): + + if windll.advapi32.CloseServiceHandle(sc_handle) == 0: + self.logger.error('Failed to call CloseServiceHandle') + return False + + return True + + + + ########################################################################### + # Opens an existing service. + # + # SC_HANDLE WINAPI OpenService( + # _In_ SC_HANDLE hSCManager, + # _In_ LPCTSTR lpServiceName, + # _In_ DWORD dwDesiredAccess + # ); + + def open_service(self, sc_handle, service_name, dwDesiredAccess = SERVICE_ALL_ACCESS): + + if not sc_handle: + return + + service_handle = windll.advapi32.OpenServiceA(sc_handle, service_name, dwDesiredAccess) + + if service_handle == 0: + self.logger.error('Failed to call OpenService') + return + + return service_handle + + ########################################################################### + # Retrieves the current status of the specified service based on the specified information level. + # + # BOOL WINAPI QueryServiceStatusEx( + # _In_ SC_HANDLE hService, + # _In_ SC_STATUS_TYPE InfoLevel, + # _Out_opt_ LPBYTE lpBuffer, + # _In_ DWORD cbBufSize, + # _Out_ LPDWORD pcbBytesNeeded + # ); + + def query_service_status_ex(self, service_handle): + + lpBuffer = SERVICE_STATUS_PROCESS() + cbBufSize = DWORD(sizeof(SERVICE_STATUS_PROCESS)) + pcbBytesNeeded = DWORD() + + if windll.advapi32.QueryServiceStatusEx(service_handle, SC_STATUS_PROCESS_INFO, byref(lpBuffer), cbBufSize, byref(pcbBytesNeeded)) == 0: + self.logger.error('Failed to call QueryServiceStatusEx') + return + + return lpBuffer + + ########################################################################### + # Sends a control code to a service. + # + # BOOL WINAPI ControlService( + # _In_ SC_HANDLE hService, + # _In_ DWORD dwControl, + # _Out_ LPSERVICE_STATUS lpServiceStatus + # ); + + def control_service(self, service_handle, dwControl): + + lpServiceStatus = SERVICE_STATUS_PROCESS() + + if windll.advapi32.ControlService(service_handle, dwControl, byref(lpServiceStatus)) == 0: + self.logger.error('Failed to call ControlService') + return + + return lpServiceStatus + + ########################################################################### + # Starts a service + # + # BOOL WINAPI StartService( + # _In_ SC_HANDLE hService, + # _In_ DWORD dwNumServiceArgs, + # _In_opt_ LPCTSTR *lpServiceArgVectors + # ); + + def start_service(self, service_handle): + + if windll.advapi32.StartServiceA(service_handle, 0, 0) == 0: + self.logger.error('Failed to call StartService') + return False + + else: + return True + + ########################################################################### + # Changes the configuration parameters of a service. + # + # BOOL WINAPI ChangeServiceConfig( + # _In_ SC_HANDLE hService, + # _In_ DWORD dwServiceType, + # _In_ DWORD dwStartType, + # _In_ DWORD dwErrorControl, + # _In_opt_ LPCTSTR lpBinaryPathName, + # _In_opt_ LPCTSTR lpLoadOrderGroup, + # _Out_opt_ LPDWORD lpdwTagId, + # _In_opt_ LPCTSTR lpDependencies, + # _In_opt_ LPCTSTR lpServiceStartName, + # _In_opt_ LPCTSTR lpPassword, + # _In_opt_ LPCTSTR lpDisplayName + # ); + + def change_service_config(self, service_handle, dwStartType = SERVICE_DISABLED): + + if windll.advapi32.ChangeServiceConfigA(service_handle, SERVICE_NO_CHANGE, dwStartType, SERVICE_NO_CHANGE, 0, 0, 0, 0, 0, 0, 0) == 0: + self.logger.error('Failed to call ChangeServiceConfig') + raise WinError(get_last_error()) + return False + + else: + return True + + + def start_service_helper(self, service_name = 'Dnscache'): + + sc_handle = None + service_handle = None + + timeout = 5 + + sc_handle = self.open_sc_manager() + + if not sc_handle: + return + + service_handle = self.open_service(sc_handle, service_name) + + if not service_handle: + self.close_service_handle(sc_handle) + return + + # Enable the service + if not self.change_service_config(service_handle, SERVICE_AUTO_START): + + # Backup enable the service + try: + subprocess.check_call("sc config %s start= auto" % service_name, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + except subprocess.CalledProcessError, e: + self.logger.error('Failed to enable the service %s. (sc config)', service_name) + else: + self.logger.info('Successfully enabled the service %s. (sc config)', service_name) + + else: + self.logger.info('Successfully enabled the service %s.', service_name) + + service_status = self.query_service_status_ex(service_handle) + + if service_status: + + if not service_status.dwCurrentState in [SERVICE_RUNNING, SERVICE_START_PENDING]: + + # Start service + if self.start_service(service_handle): + + # Wait for the service to start + while timeout: + timeout -= 1 + time.sleep(1) + + service_status = self.query_service_status_ex(service_handle) + if service_status.dwCurrentState == SERVICE_RUNNING: + self.logger.info('Successfully started the service %s.', service_name) + break + else: + self.logger.error('Timed out while trying to start the service %s.', service_name) + else: + self.logger.error('Failed to start the service %s.', service_name) + else: + self.logger.error('Service %s is already running.', service_name) + + # As a backup call net stop + if service_status.dwCurrentState != SERVICE_RUNNING: + + try: + subprocess.check_call("net start %s" % service_name, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + except subprocess.CalledProcessError, e: + self.logger.error('Failed to start the service %s. (net stop)', service_name) + else: + self.logger.info('Successfully started the service %s.', service_name) + + + + + self.close_service_handle(service_handle) + self.close_service_handle(sc_handle) + + def stop_service_helper(self, service_name = 'Dnscache'): + + sc_handle = None + service_handle = None + + Control = SERVICE_CONTROL_STOP + dwControl = DWORD(Control) + timeout = 5 + + sc_handle = self.open_sc_manager() + + if not sc_handle: + return + + service_handle = self.open_service(sc_handle, service_name) + + if not service_handle: + self.close_service_handle(sc_handle) + return + + # Disable the service + if not self.change_service_config(service_handle, SERVICE_DISABLED): + + # Backup disable the service + try: + subprocess.check_call("sc config %s start= disabled" % service_name, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + except subprocess.CalledProcessError, e: + self.logger.error('Failed to disable the service %s. (sc config)', service_name) + else: + self.logger.info('Successfully disabled the service %s. (sc config)', service_name) + + else: + self.logger.info('Successfully disabled the service %s.', service_name) + + service_status = self.query_service_status_ex(service_handle) + + if service_status: + + if service_status.dwCurrentState != SERVICE_STOPPED: + + # Send a stop code to the service + if self.control_service(service_handle, dwControl): + + # Wait for the service to stop + while timeout: + timeout -= 1 + time.sleep(1) + + service_status = self.query_service_status_ex(service_handle) + if service_status.dwCurrentState == SERVICE_STOPPED: + self.logger.info('Successfully stopped the service %s.', service_name) + break + + else: + self.logger.error('Timed out while trying to stop the service %s.', service_name) + else: + self.logger.error('Failed to stop the service %s.', service_name) + else: + self.logger.error('Service %s is already stopped.', service_name) + + # As a backup call net stop + if service_status.dwCurrentState != SERVICE_STOPPED: + + try: + subprocess.check_call("net stop %s" % service_name, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + except subprocess.CalledProcessError, e: + self.logger.error('Failed to stop the service %s. (net stop)', service_name) + else: + self.logger.info('Successfully stopped the service %s.', service_name) + + self.close_service_handle(service_handle) + self.close_service_handle(sc_handle) + + + + + ########################################################################### + # Process related functions + ########################################################################### + + ########################################################################### + # The GetExtendedTcpTable function retrieves a table that contains a list of TCP endpoints available to the application. + # + # DWORD GetExtendedTcpTable( + # _Out_ PVOID pTcpTable, + # _Inout_ PDWORD pdwSize, + # _In_ BOOL bOrder, + # _In_ ULONG ulAf, + # _In_ TCP_TABLE_CLASS TableClass, + # _In_ ULONG Reserved + # ); + + def get_extended_tcp_table(self): + + dwSize = DWORD(sizeof(MIB_TCPROW_OWNER_PID) * 512 + 4) + + TcpTable = MIB_TCPTABLE_OWNER_PID() + + if windll.iphlpapi.GetExtendedTcpTable(byref(TcpTable), byref(dwSize), False, AF_INET, TCP_TABLE_OWNER_PID_ALL, 0) != NO_ERROR: + self.logger.error("Failed to call GetExtendedTcpTable") + return + + for item in TcpTable.table[:TcpTable.dwNumEntries]: + yield item + + def get_pid_port_tcp(self, port): + + for item in self.get_extended_tcp_table(): + + lPort = socket.ntohs(item.dwLocalPort) + lAddr = socket.inet_ntoa(struct.pack('L', item.dwLocalAddr)) + pid = item.dwOwningPid + + if lPort == port: + return pid + else: + return None + + ################################################################################# + # The GetExtendedUdpTable function retrieves a table that contains a list of UDP endpoints available to the application. + # + # DWORD GetExtendedUdpTable( + # _Out_ PVOID pUdpTable, + # _Inout_ PDWORD pdwSize, + # _In_ BOOL bOrder, + # _In_ ULONG ulAf, + # _In_ UDP_TABLE_CLASS TableClass, + # _In_ ULONG Reserved + # ); + + def get_extended_udp_table(self): + + dwSize = DWORD(sizeof(MIB_UDPROW_OWNER_PID) * 512 + 4) + + UdpTable = MIB_UDPTABLE_OWNER_PID() + + if windll.iphlpapi.GetExtendedUdpTable(byref(UdpTable), byref(dwSize), False, AF_INET, UDP_TABLE_OWNER_PID, 0) != NO_ERROR: + self.logger.error("Failed to call GetExtendedUdpTable") + return + + for item in UdpTable.table[:UdpTable.dwNumEntries]: + yield item + + def get_pid_port_udp(self, port): + + for item in self.get_extended_udp_table(): + + lPort = socket.ntohs(item.dwLocalPort) + lAddr = socket.inet_ntoa(struct.pack('L', item.dwLocalAddr)) + pid = item.dwOwningPid + + if lPort == port: + return pid + else: + return None + + ############################################################################### + # Retrieves the name of the executable file for the specified process. + # + # DWORD WINAPI GetProcessImageFileName( + # _In_ HANDLE hProcess, + # _Out_ LPTSTR lpImageFileName, + # _In_ DWORD nSize + # ); + + def get_process_image_filename(self, pid): + + process_name = None + + hProcess = windll.kernel32.OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, False, pid) + if hProcess: + + lpImageFileName = create_string_buffer(MAX_PATH) + + if windll.psapi.GetProcessImageFileNameA(hProcess, lpImageFileName, MAX_PATH) > 0: + process_name = os.path.basename(lpImageFileName.value) + else: + self.logger.error('Failed to call GetProcessImageFileNameA') + + windll.kernel32.CloseHandle(hProcess) + + return process_name + + + + + ############################################################################### + # The GetAdaptersAddresses function retrieves the addresses associated with the adapters on the local computer. + # + # ULONG WINAPI GetAdaptersAddresses( + # _In_ ULONG Family, + # _In_ ULONG Flags, + # _In_ PVOID Reserved, + # _Inout_ PIP_ADAPTER_ADDRESSES AdapterAddresses, + # _Inout_ PULONG SizePointer + # ); + + def get_adapters_addresses(self): + + Size = ULONG(0) + + windll.iphlpapi.GetAdaptersAddresses(AF_INET, 0, None, None, byref(Size)) + + AdapterAddresses = create_string_buffer(Size.value) + pAdapterAddresses = cast(AdapterAddresses, POINTER(IP_ADAPTER_ADDRESSES)) + + if not windll.iphlpapi.GetAdaptersAddresses(AF_INET, 0, None, pAdapterAddresses, byref(Size)) == NO_ERROR: + self.logger.error('Failed calling GetAdaptersAddresses') + return + + while pAdapterAddresses: + + yield pAdapterAddresses.contents + pAdapterAddresses = pAdapterAddresses.contents.Next + + def get_active_ethernet_adapters(self): + + for adapter in self.get_adapters_addresses(): + + if adapter.IfType == MIB_IF_TYPE_ETHERNET and adapter.OperStatus == IFOPERSTATUSUP: + yield adapter + + def check_active_ethernet_adapters(self): + + for adapter in self.get_adapters_addresses(): + + if adapter.IfType == MIB_IF_TYPE_ETHERNET and adapter.OperStatus == IFOPERSTATUSUP: + return True + else: + return False + + + ########################################################################### + # The GetAdaptersInfo function retrieves adapter information for the local computer. + # + # On Windows XP and later: Use the GetAdaptersAddresses function instead of GetAdaptersInfo. + # + # DWORD GetAdaptersInfo( + # _Out_ PIP_ADAPTER_INFO pAdapterInfo, + # _Inout_ PULONG pOutBufLen + # ); + + def get_adapters_info(self): + + OutBufLen = DWORD(0) + + windll.iphlpapi.GetAdaptersInfo(None, byref(OutBufLen)) + + AdapterInfo = create_string_buffer(OutBufLen.value) + pAdapterInfo = cast(AdapterInfo, POINTER(IP_ADAPTER_INFO)) + + if not windll.iphlpapi.GetAdaptersInfo(byref(AdapterInfo), byref(OutBufLen)) == NO_ERROR: + self.logger.error('Failed calling GetAdaptersInfo') + return + + while pAdapterInfo: + + yield pAdapterInfo.contents + pAdapterInfo = pAdapterInfo.contents.Next + + def get_gateways(self): + + for adapter in self.get_adapters_info(): + + gateway = adapter.GatewayList + + while gateway: + + yield gateway.IpAddress.String + gateway = gateway.Next + + def check_gateways(self): + + for gateway in self.get_gateways(): + if gateway != '0.0.0.0': + return True + else: + return False + + + ########################################################################### + # The GetNetworkParams function retrieves network parameters for the local computer. + # + # DWORD GetNetworkParams( + # _Out_ PFIXED_INFO pFixedInfo, + # _In_ PULONG pOutBufLen + # ); + + def get_network_params(self): + OutBufLen = ULONG(sizeof(FIXED_INFO)) + FixedInfo = FIXED_INFO() + + if not windll.iphlpapi.GetNetworkParams(byref(FixedInfo), byref(OutBufLen)) == NO_ERROR: + self.logger.error('Failed calling GetNetworkParams') + return None + + return FixedInfo + + def get_dns_servers(self): + + FixedInfo = self.get_network_params() + + if not FixedInfo: + return + + ip_addr_string = FixedInfo.DnsServerList + + while ip_addr_string: + + yield ip_addr_string.IpAddress.String + ip_addr_string = ip_addr_string.Next + + def check_dns_servers(self): + + FixedInfo = self.get_network_params() + + if not FixedInfo: + return + + ip_addr_string = FixedInfo.DnsServerList + + if ip_addr_string: + return True + + else: + return False + + + ########################################################################### + # The GetBestInterface function retrieves the index of the interface that has the best route to the specified IPv4 address. + # + # DWORD GetBestInterface( + # _In_ IPAddr dwDestAddr, + # _Out_ PDWORD pdwBestIfIndex + # ); + + def get_best_interface(self, ip='8.8.8.8'): + BestIfIndex = DWORD() + DestAddr = socket.inet_aton(ip) + + if not windll.iphlpapi.GetBestInterface(DestAddr, byref(BestIfIndex)) == NO_ERROR: + self.logger.error('Failed calling GetBestInterface') + return None + + return BestIfIndex.value + + def check_best_interface(self, ip='8.8.8.8'): + BestIfIndex = DWORD() + DestAddr = socket.inet_aton(ip) + + if not windll.iphlpapi.GetBestInterface(DestAddr, byref(BestIfIndex)) == NO_ERROR: + return False + + return True + + ########################################################################### + # Convert interface index to name + # + # NETIO_STATUS WINAPI ConvertInterfaceIndexToLuid( + # _In_ NET_IFINDEX InterfaceIndex, + # _Out_ PNET_LUID InterfaceLuid + # ); + # + # NETIO_STATUS WINAPI ConvertInterfaceLuidToNameA( + # _In_ const NET_LUID *InterfaceLuid, + # _Out_ PSTR InterfaceName, + # _In_ SIZE_T Length + # ); + + def convert_interface_index_to_name(self, index): + + InterfaceLuid = ULONG64() + + if not windll.iphlpapi.ConvertInterfaceIndexToLuid(index, byref(InterfaceLuid)) == NO_ERROR: + self.logger.error('Failed calling ConvertInterfaceIndexToLuid') + return None + + InterfaceName = create_string_buffer(NDIS_IF_MAX_STRING_SIZE + 1) + + if not windll.iphlpapi.ConvertInterfaceLuidToNameA(byref(InterfaceLuid), InterfaceName, NDIS_IF_MAX_STRING_SIZE + 1) == NO_ERROR: + self.logger.error('Failed calling ConvertInterfaceLuidToName') + return None + + return InterfaceName.value + + ########################################################################### + # DnsFlushResolverCache + def notify_ip_change(self, adapter_name): + + if windll.dhcpcsvc.DhcpNotifyConfigChange(0, adapter_name, 0, 0, 0, 0) == NO_ERROR: + self.logger.debug('Successfully performed adapter change notification on %s', adapter_name) + else: + self.logger.error('Failed to notify adapter change on %s', adapter_name) + + ########################################################################### + # DnsFlushResolverCache + def flush_dns(self): + if windll.dnsapi.DnsFlushResolverCache(): + self.logger.info('Flushed DNS cache.') + else: + self.logger.error('Failed to flush DNS cache. (DnsFlushResolverCache)') + + # As a backup call ipconfig /flushdns because DnsFlushResolverCache is undocumented. + try: + subprocess.check_call('ipconfig /flushdns', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + except subprocess.CalledProcessError, e: + self.logger.error("Failed to flush DNS cache. (ipconfig)") + else: + self.logger.info('Flushed DNS cache. (ipconfig)') + + def get_reg_value(self, key, sub_key, value, sam = KEY_READ): + + try: + handle = OpenKey(key, sub_key, 0, sam) + [data, regtype] = QueryValueEx(handle, value) + CloseKey(handle) + if data == '': + raise WindowsError + + return data + + except WindowsError: + self.logger.error('Failed getting registry value %s.', value) + return None + + def set_reg_value(self, key, sub_key, value, data, type = REG_SZ, sam = KEY_WRITE): + + try: + handle = CreateKeyEx(key, sub_key, 0, sam) + SetValueEx(handle, value, 0, type, data) + CloseKey(handle) + + return True + + except WindowsError: + self.logger.error('Failed setting registry value %s', value) + return False + + ########################################################################### + # Set DNS Server + + def set_dns_server(self, dns_server = '127.0.0.1'): + + key = HKEY_LOCAL_MACHINE + sub_key = "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\%s" + value = 'NameServer' + + for adapter in self.get_active_ethernet_adapters(): + + # Preserve existing setting + dns_server_backup = self.get_reg_value(key, sub_key % adapter.AdapterName, value) + + # Restore previous value or a blank string if the key was not present + if dns_server_backup: + self.adapters_dns_server_backup[adapter.AdapterName] = (dns_server_backup, adapter.FriendlyName) + else: + self.adapters_dns_server_backup[adapter.AdapterName] = ('', adapter.FriendlyName) + + # Set new dns server value + if self.set_reg_value(key, sub_key % adapter.AdapterName, value, dns_server): + self.logger.info('Set DNS server %s on the adapter: %s', dns_server, adapter.FriendlyName) + self.notify_ip_change(adapter.AdapterName) + else: + self.logger.error('Failed to set DNS server %s on the adapter: %s', dns_server, adapter.FriendlyName) + + def restore_dns_server(self): + + key = HKEY_LOCAL_MACHINE + sub_key = "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\%s" + value = 'NameServer' + + for adapter_name in self.adapters_dns_server_backup: + + (dns_server, adapter_friendlyname) = self.adapters_dns_server_backup[adapter_name] + + # Restore dns server value + if self.set_reg_value(key, sub_key % adapter_name, value, dns_server): + self.logger.info('Restored DNS server %s on the adapter: %s', dns_server, adapter_friendlyname) + else: + self.logger.error('Failed to restore DNS server %s on the adapter: %s', dns_server, adapter_friendlyname) + + ########################################################################### + # Check if user is an Administrator + def is_user_an_admin(self): + return ctypes.windll.shell32.IsUserAnAdmin() + + ########################################################################### + # Execute process and detach + def execute_detached(self, execute_cmd): + DETACHED_PROCESS = 0x00000008 + + # import pdb + # pdb.set_trace() + try: + pid = subprocess.Popen(execute_cmd.split(), creationflags=DETACHED_PROCESS).pid + except Exception, e: + self.logger.error('Error: Failed to execute command: %s', execute_cmd) + self.logger.error(' %s', e) + else: + return pid + +def test_process_list(): + + class Test(WinUtilMixin): + def __init__(self, name = 'WinUtil'): + self.logger = logging.getLogger(name) + + self = Test() + + pid = self.get_pid_port_tcp(135) + if pid: + self.logger.info('pid: %d name: %s', pid, self.get_process_image_filename(pid)) + else: + self.logger.error('failed to get pid for tcp port 135') + + + pid = self.get_pid_port_udp(123) + if pid: + self.logger.info('pid: %d name: %s', pid, self.get_process_image_filename(pid)) + else: + self.logger.error('failed to get pid for udp port 123') + + pid = self.get_pid_port_tcp(1234) + if not pid: + self.logger.info('successfully returned None for unknown tcp port 1234') + + pid = self.get_pid_port_udp(1234) + if not pid: + self.logger.info('successfully returned None for unknown udp port 1234') + +def test_interfaces_list(): + + + class Test(WinUtilMixin): + def __init__(self, name = 'WinUtil'): + self.logger = logging.getLogger(name) + + self = Test() + + # for adapter in self.get_adapters_addresses(): + # self.logger.info('ethernet: %s enabled: %s index: %d friendlyname: %s name: %s', adapter.IfType == MIB_IF_TYPE_ETHERNET, adapter.OperStatus == IFOPERSTATUSUP, adapter.IfIndex, adapter.FriendlyName, adapter.AdapterName) + + + for dns_server in self.get_dns_servers(): + self.logger.info('dns: %s', dns_server) + + for gateway in self.get_gateways(): + self.logger.info('gateway: %s', gateway) + + for adapter in self.get_active_ethernet_adapters(): + self.logger.info('active ethernet index: %s friendlyname: %s name: %s', adapter.IfIndex, adapter.FriendlyName, adapter.AdapterName) + + +def test_registry_nameserver(): + + class Test(WinUtilMixin): + def __init__(self, name = 'WinUtil'): + self.logger = logging.getLogger(name) + + self = Test() + + key = HKEY_LOCAL_MACHINE + sub_key = 'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{cd17d5b5-bf83-44f5-8de7-d988e3db5451}' + value = 'NameServer' + data = '127.0.0.1' + + + data_tmp = self.get_reg_value(key, sub_key, value) + self.logger.info('NameServer: %s', data_tmp) + + if self.set_reg_value(key, sub_key, value, data): + self.logger.info('Successfully set value %s to data %s', value, data) + + data_tmp = self.get_reg_value(key, sub_key, value) + self.logger.info('Nameserver: %s', data_tmp) + else: + self.logger.info('Failed to set value %s to data %s', value, data) + + self.notify_ip_change('{cd17d5b5-bf83-44f5-8de7-d988e3db5451}') + + self.flush_dns() + + +def test_registry_gateway(): + + class Test(WinUtilMixin): + def __init__(self, name = 'WinUtil'): + self.logger = logging.getLogger(name) + + self = Test() + + key = HKEY_LOCAL_MACHINE + sub_key = 'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{cd17d5b5-bf83-44f5-8de7-d988e3db5451}' + #value = 'NameServer' + #data = '127.0.0.1' + + if self.get_reg_value(key, sub_key, 'DhcpDefaultGateway'): + self.logger.info('DefaultGateway is set') + + else: + ip = self.get_reg_value(key, sub_key, 'Dhcp') + #self.logger + + + self.notify_ip_change('{cd17d5b5-bf83-44f5-8de7-d988e3db5451}') + +def test_check_connectivity(): + + class Test(WinUtilMixin): + def __init__(self, name = 'WinUtil'): + self.logger = logging.getLogger(name) + + self = Test() + + if not self.check_gateways(): + self.logger.warning('No gateways found.') + else: + self.logger.info('Gateways PASS') + + if not self.check_active_ethernet_adapters(): + self.logger.warning('No active ethernet adapters found') + else: + self.logger.info('Active ethernet PASS') + + if not self.get_best_interface(): + self.logger.warning('No routable interface found.') + else: + self.logger.info('Routable interface PASS') + + if not self.check_dns_servers(): + self.logger.warning('No DNS servers configured') + else: + self.logger.info('DNS server PASS') + +def test_stop_service(): + + class Test(WinUtilMixin): + def __init__(self, name = 'WinUtil'): + self.logger = logging.getLogger(name) + + self = Test() + + self.stop_service_helper('Dnscache') + + +def test_start_service(): + class Test(WinUtilMixin): + def __init__(self, name = 'WinUtil'): + self.logger = logging.getLogger(name) + + self = Test() + + self.start_service_helper('Dnscache') + +def main(): + pass + + #test_process_list() + + #test_interfaces_list() + + #test_registry_gateway() + + + #test_check_connectivity() + + test_stop_service() + #test_start_service() + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/fakenet/diverters/winutil.pyc b/fakenet/diverters/winutil.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ed72773e25229fca049653261b454a0a5b1053b9 GIT binary patch literal 32016 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 VwRdgr+R?SQ>wk|y|7VTlzW{YJeWU;Y literal 0 HcmV?d00001 diff --git a/fakenet/lib/64/WinDivert64.sys b/fakenet/lib/64/WinDivert64.sys new file mode 100644 index 0000000000000000000000000000000000000000..245939b3b2d2512afc6a54302fa8a17f45a8aba5 GIT binary patch literal 38064 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 literal 0 HcmV?d00001 diff --git a/fakenet/listeners/DNSListener.py b/fakenet/listeners/DNSListener.py new file mode 100644 index 0000000..407f8a7 --- /dev/null +++ b/fakenet/listeners/DNSListener.py @@ -0,0 +1,222 @@ +import logging + +import threading +import SocketServer +from dnslib import * + +import ssl +import socket + +class DNSListener(): + + def __init__(self, config = {}, name = 'DNSListener', logging_level = logging.INFO): + + self.logger = logging.getLogger(name) + self.logger.setLevel(logging_level) + + self.config = config + self.local_ip = '0.0.0.0' + self.server = None + + self.logger.info('Starting...') + + self.logger.debug('Initialized with config:') + for key, value in config.iteritems(): + self.logger.debug(' %10s: %s', key, value) + + def start(self): + + # Start UDP listener + if self.config['protocol'].lower() == 'udp': + self.logger.debug('Starting UDP ...') + self.server = ThreadedUDPServer((self.local_ip, int(self.config.get('port', 53))), self.config, self.logger, UDPHandler) + + # Start TCP listener + elif self.config['protocol'].lower() == 'tcp': + self.logger.debug('Starting TCP ...') + self.server = ThreadedTCPServer((self.local_ip, int(self.config.get('port', 53))), self.config, self.logger, TCPHandler) + + self.server.nxdomains = int(self.config.get('nxdomains', 0)) + + self.server_thread = threading.Thread(target=self.server.serve_forever) + self.server_thread.daemon = True + self.server_thread.start() + + def stop(self): + self.logger.debug('Stopping...') + + # Stop listener + if self.server: + self.server.shutdown() + self.server.server_close() + + +class DNSHandler(): + + def parse(self,data): + response = "" + + try: + # Parse data as DNS + d = DNSRecord.parse(data) + + except Exception, e: + self.server.logger.error('Error: Invalid DNS Request') + self.server.logger.info('%s', '-'*80) + for line in hexdump_table(data): + self.server.logger.info(line) + self.server.logger.info('%s', '-'*80,) + + else: + # Only Process DNS Queries + if QR[d.header.qr] == "QUERY": + + # Gather query parameters + # NOTE: Do not lowercase qname here, because we want to see + # any case request weirdness in the logs. + qname = str(d.q.qname) + + # Chop off the last period + if qname[-1] == '.': qname = qname[:-1] + + qtype = QTYPE[d.q.qtype] + + self.server.logger.info('Received %s request for domain \'%s\'.', qtype, qname) + + # Create a custom response to the query + response = DNSRecord(DNSHeader(id=d.header.id, bitmap=d.header.bitmap, qr=1, aa=1, ra=1), q=d.q) + + # Get fake record from the configuration or use the external address + fake_record = self.server.config.get('dnsresponse', socket.gethostbyname(socket.gethostname())) + + if qtype == 'A': + + if self.server.nxdomains > 0: + self.server.logger.info('Ignoring query. NXDomains: %d', self.server.nxdomains) + self.server.nxdomains -= 1 + else: + # dnslib doesn't like trailing dots + if fake_record[-1] == ".": fake_record = fake_record[:-1] + + self.server.logger.info('Responding with \'%s\'', fake_record) + response.add_answer(RR(qname, getattr(QTYPE,qtype), rdata=RDMAP[qtype](fake_record))) + + response = response.pack() + + return response + +class UDPHandler(DNSHandler, SocketServer.BaseRequestHandler): + + def handle(self): + + try: + (data,socket) = self.request + response = self.parse(data) + + if response: + socket.sendto(response, self.client_address) + + except socket.error as msg: + self.server.logger.error('Error: %s', msg.strerror or msg) + + except Exception, e: + self.server.logger.error('Error: %s', e) + +class TCPHandler(DNSHandler, SocketServer.BaseRequestHandler): + + def handle(self): + + # Timeout connection to prevent hanging + self.request.settimeout(int(self.server.config.get('timeout', 5))) + + try: + data = self.request.recv(1024) + + # Remove the addition "length" parameter used in the + # TCP DNS protocol + data = data[2:] + response = self.parse(data) + + if response: + # Calculate and add the additional "length" parameter + # used in TCP DNS protocol + length = binascii.unhexlify("%04x" % len(response)) + self.request.sendall(length+response) + + except socket.timeout: + self.server.logger.warning('Connection timeout.') + + except socket.error as msg: + self.server.logger.error('Error: %s', msg.strerror) + + except Exception, e: + self.server.logger.error('Error: %s', e) + +class ThreadedUDPServer(SocketServer.ThreadingMixIn, SocketServer.UDPServer): + + # Override SocketServer.UDPServer to add extra parameters + def __init__(self, server_address, config, logger, RequestHandlerClass): + self.config = config + self.logger = logger + SocketServer.UDPServer.__init__(self, server_address, RequestHandlerClass) + +class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer): + + # Override default value + allow_reuse_address = True + + # Override SocketServer.TCPServer to add extra parameters + def __init__(self, server_address, config, logger, RequestHandlerClass): + self.config = config + self.logger = logger + SocketServer.TCPServer.__init__(self,server_address,RequestHandlerClass) + +def hexdump_table(data, length=16): + + hexdump_lines = [] + for i in range(0, len(data), 16): + chunk = data[i:i+16] + hex_line = ' '.join(["%02X" % ord(b) for b in chunk ] ) + ascii_line = ''.join([b if ord(b) > 31 and ord(b) < 127 else '.' for b in chunk ] ) + hexdump_lines.append("%04X: %-*s %s" % (i, length*3, hex_line, ascii_line )) + return hexdump_lines + +############################################################################### +# Testing code +def test(config): + + print "\t[DNSListener] Testing 'google.com' A record." + query = DNSRecord(q=DNSQuestion('google.com',getattr(QTYPE,'A'))) + answer_pkt = query.send('localhost', int(config.get('port', 53))) + answer = DNSRecord.parse(answer_pkt) + + print '-'*80 + print answer + print '-'*80 + + +def main(): + logging.basicConfig(format='%(asctime)s [%(name)15s] %(message)s', datefmt='%m/%d/%y %I:%M:%S %p', level=logging.DEBUG) + + config = {'port': '53', 'protocol': 'UDP', 'dnsresponse': '127.0.0.1', 'nxdomains': 3 } + + listener = DNSListener(config, logging_level = logging.DEBUG) + listener.start() + + + ########################################################################### + # Run processing + import time + + try: + while True: + time.sleep(1) + except KeyboardInterrupt: + pass + + ########################################################################### + # Run tests + test(config) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/fakenet/listeners/DNSListener.pyc b/fakenet/listeners/DNSListener.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e2b79a7e3a26ef96ca394774c2c1c4c93df695b5 GIT binary patch literal 8118 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 JxNu}x{~O3fXjcFL literal 0 HcmV?d00001 diff --git a/fakenet/listeners/HTTPListener.py b/fakenet/listeners/HTTPListener.py new file mode 100644 index 0000000..b058801 --- /dev/null +++ b/fakenet/listeners/HTTPListener.py @@ -0,0 +1,292 @@ +import logging + +import os +import sys + +import threading +import SocketServer +import BaseHTTPServer + +import ssl +import socket + +import posixpath +import mimetypes + +import time + +MIME_FILE_RESPONSE = { + 'text/html': 'FakeNet.html', + 'image/png': 'FakeNet.png', + 'image/ico': 'FakeNet.ico', + 'image/jpeg': 'FakeNet.jpg', + 'application/octet-stream': 'FakeNetMini.exe', + 'application/x-msdownload': 'FakeNetMini.exe', + 'application/pdf': 'FakeNet.pdf', + 'application/xml': 'FakeNet.html' +} + +class HTTPListener(): + + if not mimetypes.inited: + mimetypes.init() # try to read system mime.types + extensions_map = mimetypes.types_map.copy() + extensions_map.update({ + '': 'text/html', # Default + }) + + def __init__(self, config = {}, name = 'HTTPListener', logging_level = logging.DEBUG): + self.logger = logging.getLogger(name) + self.logger.setLevel(logging_level) + + self.config = config + self.name = name + self.local_ip = '0.0.0.0' + self.server = None + + self.logger.info('Starting...') + + self.logger.debug('Initialized with config:') + for key, value in config.iteritems(): + self.logger.debug(' %10s: %s', key, value) + + # Initialize webroot directory + self.webroot_path = self.config.get('webroot','defaultFiles') + + # Try absolute path first + if not os.path.exists(self.webroot_path): + + # Try to locate the webroot directory relative to application path + self.webroot_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), self.webroot_path) + + if not os.path.exists(self.webroot_path): + self.logger.error('Could not locate webroot directory: %s', self.webroot_path) + sys.exit(1) + + def start(self): + self.logger.debug('Starting...') + + self.server = ThreadedHTTPServer((self.local_ip, int(self.config.get('port'))), ThreadedHTTPRequestHandler) + self.server.logger = self.logger + self.server.config = self.config + self.server.webroot_path = self.webroot_path + self.server.extensions_map = self.extensions_map + + if self.config.get('usessl') == 'Yes': + self.logger.debug('Using SSL socket.') + + keyfile_path = 'privkey.pem' + if not os.path.exists(keyfile_path): + keyfile_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), keyfile_path) + + if not os.path.exists(keyfile_path): + self.logger.error('Could not locate privkey.pem') + sys.exit(1) + + certfile_path = 'server.pem' + if not os.path.exists(certfile_path): + certfile_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), certfile_path) + + if not os.path.exists(certfile_path): + self.logger.error('Could not locate certfile.pem') + sys.exit(1) + + self.server.socket = ssl.wrap_socket(self.server.socket, keyfile=keyfile_path, certfile=certfile_path, server_side=True, ciphers='RSA') + + self.server_thread = threading.Thread(target=self.server.serve_forever) + self.server_thread.daemon = True + self.server_thread.start() + + def stop(self): + self.logger.info('Stopping...') + if self.server: + self.server.shutdown() + self.server.server_close() + +class ThreadedHTTPServer(BaseHTTPServer.HTTPServer): + + def handle_error(self, request, client_address): + exctype, value = sys.exc_info()[:2] + self.logger.error('Error: %s', value) + +class ThreadedHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): + + def __init__(self, *args): + BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, *args) + + def setup(self): + self.request.settimeout(int(self.server.config.get('timeout', 10))) + BaseHTTPServer.BaseHTTPRequestHandler.setup(self) + + def do_HEAD(self): + self.server.logger.info('Received HEAD request') + + # Process request + self.server.logger.info('%s', '-'*80) + self.server.logger.info(self.requestline) + for line in str(self.headers).split("\n"): + self.server.logger.info(line) + self.server.logger.info('%s', '-'*80) + + # Prepare response + self.send_response(200) + self.send_header("Content-type", "text/html") + self.end_headers() + + def do_GET(self): + + self.server.logger.info('Received a GET request.') + + # Process request + self.server.logger.info('%s', '-'*80) + self.server.logger.info(self.requestline) + for line in str(self.headers).split("\n"): + self.server.logger.info(line) + self.server.logger.info('%s', '-'*80) + + # Get response type based on the requested path + response, response_type = self.get_response(self.path) + + # Prepare response + self.send_response(200) + self.send_header("Content-Type", response_type) + self.send_header("Content-Length", len(response)) + self.end_headers() + + self.wfile.write(response) + + def do_POST(self): + self.server.logger.info('Received a POST request') + + post_body = '' + + content_len = int(self.headers.get('content-length', 0)) + post_body = self.rfile.read(content_len) + + # Process request + self.server.logger.info('%s', '-'*80) + self.server.logger.info(self.requestline) + for line in str(self.headers).split("\n"): + self.server.logger.info(line) + for line in post_body.split("\n"): + self.server.logger.info(line) + self.server.logger.info('%s', '-'*80) + + # Store HTTP Posts + if self.server.config.get('dumphttpposts') and self.server.config['dumphttpposts'].lower() == 'yes': + http_filename = "%s_%s.txt" % (self.server.config.get('dumphttppostsfileprefix', 'http'), time.strftime("%Y%m%d_%H%M%S")) + + self.server.logger.info('Storing HTTP POST headers and data to %s.', http_filename) + http_f = open(http_filename, 'wb') + + if http_f: + http_f.write(self.requestline + "\r\n") + http_f.write(str(self.headers) + "\r\n") + http_f.write(post_body) + + http_f.close() + else: + self.server.logger.error('Failed to write HTTP POST headers and data to %s.', http_filename) + + # Get response type based on the requested path + response, response_type = self.get_response(self.path) + + # Prepare response + self.send_response(200) + self.send_header("Content-Type", response_type) + self.send_header("Content-Length", len(response)) + self.end_headers() + + self.wfile.write(response) + + def get_response(self, path): + response = "FakeNet

FakeNet

" + response_type = 'text/html' + + if path[-1] == '/': + response_type = 'text/html' + path += 'index.html' + else: + _, ext = posixpath.splitext(path) + response_type = self.server.extensions_map.get(ext, 'text/html') + + response_filename = os.path.join(self.server.webroot_path, path[1:]) + + # Check the requested path exists + if not os.path.exists(response_filename): + + self.server.logger.debug('Could not find path: %s', response_filename) + + # Try default MIME file + response_filename = os.path.join(self.server.webroot_path, MIME_FILE_RESPONSE.get(response_type, 'FakeNet.html')) + + # Check default MIME file exists + if not os.path.exists(response_filename): + self.server.logger.debug('Could not find path: %s', response_filename) + self.server.logger.error('Could not locate requested file or default handler.') + return (response, response_type) + + self.server.logger.info('Responding with mime type: %s file: %s', response_type, response_filename) + + try: + f = open(response_filename, 'rb') + except Exception, e: + self.server.logger.error('Failed to open response file: %s', response_filename) + response_type = 'text/html' + else: + response = f.read() + f.close() + + return (response, response_type) + + def log_message(self, format, *args): + return + + +############################################################################### +# Testing code +def test(config): + + import requests + + url = "%s://localhost:%s" % ('http' if config.get('usessl') == 'No' else 'https', int(config.get('port', 8080))) + + print "\t[HTTPListener] Testing HEAD request." + print '-'*80 + print requests.head(url, verify=False, stream=True).text + print '-'*80 + + print "\t[HTTPListener] Testing GET request." + print '-'*80 + print requests.get(url, verify=False, stream=True).text + print '-'*80 + + print "\t[HTTPListener] Testing POST request." + print '-'*80 + print requests.post(url, {'param1':'A'*80, 'param2':'B'*80}, verify=False, stream=True).text + print '-'*80 + +def main(): + logging.basicConfig(format='%(asctime)s [%(name)15s] %(message)s', datefmt='%m/%d/%y %I:%M:%S %p', level=logging.DEBUG) + + config = {'port': '8443', 'usessl': 'Yes', 'webroot': '../defaultFiles' } + + listener = HTTPListener(config) + listener.start() + + ########################################################################### + # Run processing + import time + + try: + while True: + time.sleep(1) + except KeyboardInterrupt: + pass + + ########################################################################### + # Run tests + test(config) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/fakenet/listeners/HTTPListener.pyc b/fakenet/listeners/HTTPListener.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d3fdb9716718a36ae35d65d70f0e42e45f28e852 GIT binary patch literal 10214 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 31 and ord(b) < 127 else '.' for b in chunk ] ) + hexdump_lines.append("%04X: %-*s %s" % (i, length*3, hex_line, ascii_line )) + return hexdump_lines + +############################################################################### +# Testing code +def test(config): + + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + + print "\t[RawListener] Sending request:\n%s" % "HELO\n" + try: + # Connect to server and send data + sock.connect(('localhost', int(config.get('port', 23)))) + sock.sendall("HELO\n") + + # Receive data from the server and shut down + received = sock.recv(1024) + finally: + sock.close() + +def main(): + logging.basicConfig(format='%(asctime)s [%(name)15s] %(message)s', datefmt='%m/%d/%y %I:%M:%S %p', level=logging.DEBUG) + + config = {'port': '1337', 'usessl': 'No', 'protocol': 'tcp'} + + listener = RawListener(config) + listener.start() + + + ########################################################################### + # Run processing + import time + + try: + while True: + time.sleep(1) + except KeyboardInterrupt: + pass + + ########################################################################### + # Run tests + #test(config) + + listener.stop() + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/fakenet/listeners/RawListener.pyc b/fakenet/listeners/RawListener.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4409d203b38852915ca43282ef3850bdb4f649be GIT binary patch literal 7046 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.\r\n") + + mail_data = "" + while True: + mail_data_chunk = self.request.recv(4096) + + if not mail_data_chunk: + break + + mail_data += mail_data_chunk + + if "\r\n.\r\n" in mail_data: + break + + self.server.logger.info('Received mail data.') + for line in mail_data.split("\n"): + self.server.logger.debug(line) + + self.request.sendall("250 OK\r\n") + + else: + self.request.sendall("503 Command not supported\r\n") + + except socket.timeout: + self.server.logger.warning('Connection timeout') + + except socket.error as msg: + self.server.logger.error('Error: %s', msg.strerror or msg) + + except Exception, e: + self.server.logger.error('Error: %s', e) + +class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer): + pass + +############################################################################### +# Testing code +def test(config): + + import smtplib + + logger = logging.getLogger('SMTPListenerTest') + + server = smtplib.SMTP_SSL('localhost', config.get('port', 25)) + + message = "From: test@test.com\r\nTo: test@test.com\r\n\r\nTest message\r\n" + + logger.info('Testing email request.') + logger.info('-'*80) + server.set_debuglevel(1) + server.sendmail('test@test.com','test@test.com', message) + server.quit() + logger.info('-'*80) + +def main(): + logging.basicConfig(format='%(asctime)s [%(name)15s] %(message)s', datefmt='%m/%d/%y %I:%M:%S %p', level=logging.DEBUG) + + config = {'port': '25', 'usessl': 'Yes', 'timeout': 10 } + + listener = SMTPListener(config) + listener.start() + + ########################################################################### + # Run processing + import time + + try: + while True: + time.sleep(1) + except KeyboardInterrupt: + pass + + ########################################################################### + # Run tests + test(config) + +if __name__ == '__main__': + main() diff --git a/fakenet/listeners/SMTPListener.pyc b/fakenet/listeners/SMTPListener.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a078132b9133ae682a0594c8511463318405df72 GIT binary patch literal 5931 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 MDN&o-= literal 0 HcmV?d00001 diff --git a/fakenet/listeners/privkey.pem b/fakenet/listeners/privkey.pem new file mode 100644 index 0000000..1636941 --- /dev/null +++ b/fakenet/listeners/privkey.pem @@ -0,0 +1,47 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDzcX3h/MmqeYoj +t3qVhgcV8NwApbBYr6iLmmx384ayykau/0lfcN2NGovofwMSGyqFom42d6GgFLEJ +uaPiQ//RZK6NQl2w1X2wP/Un4SET5Id4sMBShR2zS/5H7GgSlgqwUqKegnel348b +/A2YcdAd4iQ97yBxINxbkciN/d8L2omI4etreD/yghqX5WN2UH+NoSg7FdpvgBIh +aMKsqC9vEqbgXaIFr3jDJVjyEy4wBfvFKTgEAIvHhE2B6B1/ij3eJk0ZKpub3Du2 +gekZTpqajQL4viE1wjvydjJq/ixL2dr3q3+Ko/4xl0bLU8r6+/0CkkFnMxMP2+mp +4xVT9uM3AgMBAAECggEBAJpM7hAGDMCbxp361pzdVbJndtqGKm8b74WEvImO9mpu +YTzcHGJ9BEBCejlD/+tDAsGvAZJOY0g2tTvHyYNJvGS5HxXz4bSKrN7Aux+qxy93 +oxIxXcUwEHIrkaF+yzw0k9PMnLxBT5r4Rxniua9NPC8kvfnvji2GOYVksqylI/G7 +NwBLrYjFOJLXqikVZveyG0uQPXxwtRwaVgDSU7QX8kxXfpwsaZGdnm7yk80hrNte +U4U/A7kv63tE0+qFu9jQVatYwcGAR7kNr9qsFOHvxPbEQkvS6yOUHMdNF8ZpwFbA +vv6O1pt4jV7kAo5TLFoGXgnONBifzZCTD127laH1j1kCgYEA/Te6CsWbZm/6pPFJ +QpVyzDlSam7hCb5rmOneoOeIjo2CLn22DEeu9ZqETj2xLMfA0diV1r23Eia+kHwO +3XdNKLg3/Ue22FpQuV4iCqxDXkwdM/hMeyeLssQmNlGE0+iBaXL8UZCu5zWnw2TD +pkjeS6KGPCMN1MvYdhGIzYxt/zUCgYEA9h5FVLxBA0s40jgILpPvLbIF84cVDF46 +xnFs7c7jQSH+DYK9C7GFYKyDw3UTI5+UtwalxsBYWSLZuTSzdpUocKzT31TmbY2M +nOYb3s7VHrJUXWnCl5m6EW1oqRUVMZuseECg7IABWUaI8qUQAbU2JAD1VeoslpVo +s7C9TzuxCjsCgYEA395l3+Im6uDzkuIz5+cjEEVZhPm0gZ3VmOKjTlSFGasoPhws +WB0EJOXQNTA7tSCBa8V1a95cvXJ9plXX+prgH7EG5ymBETSAC/KaXB9CjFr0sp7C +V1t2Gb1rHzjhG0yDJYxgYWhuCcIZKRmsFBZ2Wh49WWuQbeMu4+vKrBeMpEUCgYEA +4+Wh01XCaZdk1Ru3T9ICHnEDG75QmjRC/nAXKplxS2V7hu0xujs2Qw9br0igYVMq +dNP9+20uIdOogduv9jUlzjfqtJk8CeORedOFqSoipBsDDcCZxKE/b1W9HRv9lQMO +kAdgO75IAW/T7cM0cDBpIquUgWqmwQU2f3U/xreCNvMCfxQQiFTTSyhnZu195hjJ +fgNZ3SODPMkQoh8Pah1E5Hb83umGBPvt4MN2bfm8wWmLEjpU93xiJa2uN8Jzx5Mb +K3hs4JcPtjJ2m2x0aDt1RGFhllEl0l5tOQg+cKy9jnqA/O1wmMOXsFgYS5Fhg1Me +o70kQ6YRH+pBgnP7Pgcu4X0= +-----END PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIIC+zCCAeOgAwIBAgIJAPHrk7xP1wNXMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV +BAMMCWxvY2FsaG9zdDAeFw0xNjAxMjEyMjM3MDdaFw0xNjAyMjAyMjM3MDdaMBQx +EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAPNxfeH8yap5iiO3epWGBxXw3AClsFivqIuabHfzhrLKRq7/SV9w3Y0ai+h/ +AxIbKoWibjZ3oaAUsQm5o+JD/9Fkro1CXbDVfbA/9SfhIRPkh3iwwFKFHbNL/kfs +aBKWCrBSop6Cd6Xfjxv8DZhx0B3iJD3vIHEg3FuRyI393wvaiYjh62t4P/KCGpfl +Y3ZQf42hKDsV2m+AEiFowqyoL28SpuBdogWveMMlWPITLjAF+8UpOAQAi8eETYHo +HX+KPd4mTRkqm5vcO7aB6RlOmpqNAvi+ITXCO/J2Mmr+LEvZ2verf4qj/jGXRstT +yvr7/QKSQWczEw/b6anjFVP24zcCAwEAAaNQME4wHQYDVR0OBBYEFHB5zTo/9cg+ +8kTzB3WDwATror8YMB8GA1UdIwQYMBaAFHB5zTo/9cg+8kTzB3WDwATror8YMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBACH3jlYfLBR0kGALkJSq9tRI +fB6sjjVOFrZtCt5sOqxh9We3wvMsr2TPAuEVEhiPQ1w1U4x4DTQU6A65N1KOj9Le +anjjlyjNSTqXvNUbxp0wh8x4LJ8DtmsfdXXYp3LsColBmh7JQn/2TL687B9tBXiq +p3P6wkuIOHX45UOQ0kvD4wRf3t+8mL4TmrCH4YHqzbcjI1KXGDfmVQ7i64nYrl3z +v7UCA6Xh0MShv3c0AtX1ccsxObEwjJzWA30zYUQtIWxXpRtLlkiflFU8ak1HzmBU +AHsg1T1KI1012+a1j/LWkKqb91EpUjC/DlaHz8zDOH/S1IEWM6UFjwKYnHLPxoM= +-----END CERTIFICATE----- + diff --git a/fakenet/listeners/server.pem b/fakenet/listeners/server.pem new file mode 100644 index 0000000..aff78bd --- /dev/null +++ b/fakenet/listeners/server.pem @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE----- +MIIC+zCCAeOgAwIBAgIJAPHrk7xP1wNXMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV +BAMMCWxvY2FsaG9zdDAeFw0xNjAxMjEyMjM3MDdaFw0xNjAyMjAyMjM3MDdaMBQx +EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAPNxfeH8yap5iiO3epWGBxXw3AClsFivqIuabHfzhrLKRq7/SV9w3Y0ai+h/ +AxIbKoWibjZ3oaAUsQm5o+JD/9Fkro1CXbDVfbA/9SfhIRPkh3iwwFKFHbNL/kfs +aBKWCrBSop6Cd6Xfjxv8DZhx0B3iJD3vIHEg3FuRyI393wvaiYjh62t4P/KCGpfl +Y3ZQf42hKDsV2m+AEiFowqyoL28SpuBdogWveMMlWPITLjAF+8UpOAQAi8eETYHo +HX+KPd4mTRkqm5vcO7aB6RlOmpqNAvi+ITXCO/J2Mmr+LEvZ2verf4qj/jGXRstT +yvr7/QKSQWczEw/b6anjFVP24zcCAwEAAaNQME4wHQYDVR0OBBYEFHB5zTo/9cg+ +8kTzB3WDwATror8YMB8GA1UdIwQYMBaAFHB5zTo/9cg+8kTzB3WDwATror8YMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBACH3jlYfLBR0kGALkJSq9tRI +fB6sjjVOFrZtCt5sOqxh9We3wvMsr2TPAuEVEhiPQ1w1U4x4DTQU6A65N1KOj9Le +anjjlyjNSTqXvNUbxp0wh8x4LJ8DtmsfdXXYp3LsColBmh7JQn/2TL687B9tBXiq +p3P6wkuIOHX45UOQ0kvD4wRf3t+8mL4TmrCH4YHqzbcjI1KXGDfmVQ7i64nYrl3z +v7UCA6Xh0MShv3c0AtX1ccsxObEwjJzWA30zYUQtIWxXpRtLlkiflFU8ak1HzmBU +AHsg1T1KI1012+a1j/LWkKqb91EpUjC/DlaHz8zDOH/S1IEWM6UFjwKYnHLPxoM= +-----END CERTIFICATE----- diff --git a/fakenet/privkey.pem b/fakenet/privkey.pem new file mode 100644 index 0000000..1636941 --- /dev/null +++ b/fakenet/privkey.pem @@ -0,0 +1,47 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDzcX3h/MmqeYoj +t3qVhgcV8NwApbBYr6iLmmx384ayykau/0lfcN2NGovofwMSGyqFom42d6GgFLEJ +uaPiQ//RZK6NQl2w1X2wP/Un4SET5Id4sMBShR2zS/5H7GgSlgqwUqKegnel348b +/A2YcdAd4iQ97yBxINxbkciN/d8L2omI4etreD/yghqX5WN2UH+NoSg7FdpvgBIh +aMKsqC9vEqbgXaIFr3jDJVjyEy4wBfvFKTgEAIvHhE2B6B1/ij3eJk0ZKpub3Du2 +gekZTpqajQL4viE1wjvydjJq/ixL2dr3q3+Ko/4xl0bLU8r6+/0CkkFnMxMP2+mp +4xVT9uM3AgMBAAECggEBAJpM7hAGDMCbxp361pzdVbJndtqGKm8b74WEvImO9mpu +YTzcHGJ9BEBCejlD/+tDAsGvAZJOY0g2tTvHyYNJvGS5HxXz4bSKrN7Aux+qxy93 +oxIxXcUwEHIrkaF+yzw0k9PMnLxBT5r4Rxniua9NPC8kvfnvji2GOYVksqylI/G7 +NwBLrYjFOJLXqikVZveyG0uQPXxwtRwaVgDSU7QX8kxXfpwsaZGdnm7yk80hrNte +U4U/A7kv63tE0+qFu9jQVatYwcGAR7kNr9qsFOHvxPbEQkvS6yOUHMdNF8ZpwFbA +vv6O1pt4jV7kAo5TLFoGXgnONBifzZCTD127laH1j1kCgYEA/Te6CsWbZm/6pPFJ +QpVyzDlSam7hCb5rmOneoOeIjo2CLn22DEeu9ZqETj2xLMfA0diV1r23Eia+kHwO +3XdNKLg3/Ue22FpQuV4iCqxDXkwdM/hMeyeLssQmNlGE0+iBaXL8UZCu5zWnw2TD +pkjeS6KGPCMN1MvYdhGIzYxt/zUCgYEA9h5FVLxBA0s40jgILpPvLbIF84cVDF46 +xnFs7c7jQSH+DYK9C7GFYKyDw3UTI5+UtwalxsBYWSLZuTSzdpUocKzT31TmbY2M +nOYb3s7VHrJUXWnCl5m6EW1oqRUVMZuseECg7IABWUaI8qUQAbU2JAD1VeoslpVo +s7C9TzuxCjsCgYEA395l3+Im6uDzkuIz5+cjEEVZhPm0gZ3VmOKjTlSFGasoPhws +WB0EJOXQNTA7tSCBa8V1a95cvXJ9plXX+prgH7EG5ymBETSAC/KaXB9CjFr0sp7C +V1t2Gb1rHzjhG0yDJYxgYWhuCcIZKRmsFBZ2Wh49WWuQbeMu4+vKrBeMpEUCgYEA +4+Wh01XCaZdk1Ru3T9ICHnEDG75QmjRC/nAXKplxS2V7hu0xujs2Qw9br0igYVMq +dNP9+20uIdOogduv9jUlzjfqtJk8CeORedOFqSoipBsDDcCZxKE/b1W9HRv9lQMO +kAdgO75IAW/T7cM0cDBpIquUgWqmwQU2f3U/xreCNvMCfxQQiFTTSyhnZu195hjJ +fgNZ3SODPMkQoh8Pah1E5Hb83umGBPvt4MN2bfm8wWmLEjpU93xiJa2uN8Jzx5Mb +K3hs4JcPtjJ2m2x0aDt1RGFhllEl0l5tOQg+cKy9jnqA/O1wmMOXsFgYS5Fhg1Me +o70kQ6YRH+pBgnP7Pgcu4X0= +-----END PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIIC+zCCAeOgAwIBAgIJAPHrk7xP1wNXMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV +BAMMCWxvY2FsaG9zdDAeFw0xNjAxMjEyMjM3MDdaFw0xNjAyMjAyMjM3MDdaMBQx +EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAPNxfeH8yap5iiO3epWGBxXw3AClsFivqIuabHfzhrLKRq7/SV9w3Y0ai+h/ +AxIbKoWibjZ3oaAUsQm5o+JD/9Fkro1CXbDVfbA/9SfhIRPkh3iwwFKFHbNL/kfs +aBKWCrBSop6Cd6Xfjxv8DZhx0B3iJD3vIHEg3FuRyI393wvaiYjh62t4P/KCGpfl +Y3ZQf42hKDsV2m+AEiFowqyoL28SpuBdogWveMMlWPITLjAF+8UpOAQAi8eETYHo +HX+KPd4mTRkqm5vcO7aB6RlOmpqNAvi+ITXCO/J2Mmr+LEvZ2verf4qj/jGXRstT +yvr7/QKSQWczEw/b6anjFVP24zcCAwEAAaNQME4wHQYDVR0OBBYEFHB5zTo/9cg+ +8kTzB3WDwATror8YMB8GA1UdIwQYMBaAFHB5zTo/9cg+8kTzB3WDwATror8YMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBACH3jlYfLBR0kGALkJSq9tRI +fB6sjjVOFrZtCt5sOqxh9We3wvMsr2TPAuEVEhiPQ1w1U4x4DTQU6A65N1KOj9Le +anjjlyjNSTqXvNUbxp0wh8x4LJ8DtmsfdXXYp3LsColBmh7JQn/2TL687B9tBXiq +p3P6wkuIOHX45UOQ0kvD4wRf3t+8mL4TmrCH4YHqzbcjI1KXGDfmVQ7i64nYrl3z +v7UCA6Xh0MShv3c0AtX1ccsxObEwjJzWA30zYUQtIWxXpRtLlkiflFU8ak1HzmBU +AHsg1T1KI1012+a1j/LWkKqb91EpUjC/DlaHz8zDOH/S1IEWM6UFjwKYnHLPxoM= +-----END CERTIFICATE----- + diff --git a/fakenet/server.pem b/fakenet/server.pem new file mode 100644 index 0000000..aff78bd --- /dev/null +++ b/fakenet/server.pem @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE----- +MIIC+zCCAeOgAwIBAgIJAPHrk7xP1wNXMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV +BAMMCWxvY2FsaG9zdDAeFw0xNjAxMjEyMjM3MDdaFw0xNjAyMjAyMjM3MDdaMBQx +EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAPNxfeH8yap5iiO3epWGBxXw3AClsFivqIuabHfzhrLKRq7/SV9w3Y0ai+h/ +AxIbKoWibjZ3oaAUsQm5o+JD/9Fkro1CXbDVfbA/9SfhIRPkh3iwwFKFHbNL/kfs +aBKWCrBSop6Cd6Xfjxv8DZhx0B3iJD3vIHEg3FuRyI393wvaiYjh62t4P/KCGpfl +Y3ZQf42hKDsV2m+AEiFowqyoL28SpuBdogWveMMlWPITLjAF+8UpOAQAi8eETYHo +HX+KPd4mTRkqm5vcO7aB6RlOmpqNAvi+ITXCO/J2Mmr+LEvZ2verf4qj/jGXRstT +yvr7/QKSQWczEw/b6anjFVP24zcCAwEAAaNQME4wHQYDVR0OBBYEFHB5zTo/9cg+ +8kTzB3WDwATror8YMB8GA1UdIwQYMBaAFHB5zTo/9cg+8kTzB3WDwATror8YMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBACH3jlYfLBR0kGALkJSq9tRI +fB6sjjVOFrZtCt5sOqxh9We3wvMsr2TPAuEVEhiPQ1w1U4x4DTQU6A65N1KOj9Le +anjjlyjNSTqXvNUbxp0wh8x4LJ8DtmsfdXXYp3LsColBmh7JQn/2TL687B9tBXiq +p3P6wkuIOHX45UOQ0kvD4wRf3t+8mL4TmrCH4YHqzbcjI1KXGDfmVQ7i64nYrl3z +v7UCA6Xh0MShv3c0AtX1ccsxObEwjJzWA30zYUQtIWxXpRtLlkiflFU8ak1HzmBU +AHsg1T1KI1012+a1j/LWkKqb91EpUjC/DlaHz8zDOH/S1IEWM6UFjwKYnHLPxoM= +-----END CERTIFICATE----- diff --git a/resources/fakenet.ico b/resources/fakenet.ico new file mode 100644 index 0000000000000000000000000000000000000000..8431d830302fa295291e7311a0957de129cf4975 GIT binary patch literal 83892 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 literal 0 HcmV?d00001 diff --git a/resources/fakenet.png b/resources/fakenet.png new file mode 100644 index 0000000000000000000000000000000000000000..5b9c52b3f9998cebee615cd25ca1a8ee389ef44e GIT binary patch literal 83636 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ⅆ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