-
Notifications
You must be signed in to change notification settings - Fork 0
Extend inetsim with interesting features, like dns white list, ip-redirection with kernel above 3.5. more functionalites are being developed
License
isbheis/inetsim-ext
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Introduction This is a extend of Inetsim, a common Internet services simulation suite for simulating network when analysis malware in separate environment. This project adds more powerful features including dns-white-list which allows to response true IP address for specific queries, new IP-based redirection module which could run with Linux kernel above 3.5. More feature are being developed. Features DNS white list; New IP-based redirection module; HTTP dynamic parameters match; HTTP 302 redirection response; Ports detection service(just for fun:); For more detail info, please see the 'inetsim.conf' configure file Prerequisites PERL libraries: Net::Server Net::DNS IPC::Shareable Digest::SHA IO::Socket::SSL nfqueue-bindings-perl C libraries: cmake swig libnetfilter-queue-dev libperl-dev All above C libraries is for compiling nfqueue-bindins-perl which is perl bindings for libnetfilter_queue library, the recommend way to get queued packets by the kernel packet filter. The deprecated mechanism is ip_queue/libipq(and its perl bindings perlipq), the new one is nfnetlink_queue/libnetfilter_queue. The patched nfqueue-bindings-perl source code is distributed with this project, see the 'INSTALL' for detailed installation process. The original nfqueue-bindings is https://github.com/chifflier/nfqueue-bindings Original Inetsim Project URL http://www.inetsim.org/ Original README: ---------------------------------------------------------------------- This is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License , or (at your option) any later version. This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this software. If not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ---------------------------------------------------------------------- 1. DESCRIPTION -------------- INetSim is a software suite for simulating common internet services in a lab environment, e.g. for analyzing the network behaviour of unknown malware samples. 1.1 Implemented service modules Currently, modules for the simulation of the following services are included with the INetSim distribution: - HTTP/HTTPS - "real-mode": Delivers existing files from a webroot directory. - "fake-mode": Delivers configured fake files based on the file extension in the HTTP request (e.g. .html or .exe) or static paths, Requests for checkip.dyndns.org are answered with client's IP address - supports HTTP methods GET, HEAD, POST and OPTIONS with HTTP/1.0 and HTTP/1.1 - SMTP/SMTPS - received e-mails are stored in mbox format - supports ESMTP and flexible configuration of service extensions - supports authentication methods PLAIN, LOGIN, ANONYMOUS, CRAM-MD5 and CRAM-SHA1 - arbitrary authentication data is accepted and logged in plain text - POP3/POP3S - dynamic creation of mailbox content from supplied mbox files - supports authentication methods PLAIN, LOGIN and CRAM-MD5 - arbitrary authentication data is accepted and logged in plain text - DNS - forward and reverse lookup with default and static configuration - FTP/FTPS - download and upload - builds a virtual filesystem based on an existing ftproot directory which allows for creation and deletion of arbitrary files - TFTP - download and upload - IRC - basic command set - NTP - Ident - Finger - Syslog - "Small servers": - Daytime, - Time, - Echo, - Chargen, - Discard and - Quotd - Dummy The listening port number can be configured for each service. 1.2 Faketime INetSim can be run in 'faketime' mode to analyze the runtime behaviour of malware which use NTP or Time/Daytime to start specific actions based on the current date and time. In 'faketime' mode, all services using date/time information (e.g. NTP or HTTP) respond with a fake timestamp which is based on a configured delta to current system time. Optionally, this delta can automatically be incremented or decremented by a configured value at specific intervals. 1.3 Connection redirection In addition to connection redirection via fake DNS responses, INetSim allows for IP-based redirection of arbitrary connections (TCP, UDP and ICMP). This feature is only available when running INetSim on Linux platforms with Kernel support for packet queueing (Kernel compile time option CONFIG_NETFILTER_NETLINK_QUEUE). This feature supports static rules for connection redirection based on target IP address, port and/or protocol. INetSim can also act as a NAT router for redirection of packets to other hosts. Optionally, the TTL value of IP packets sent to the clients from different "virtual" connection targets can be varied to make traffic look more authentic. Important note: Linux kernel versions 3.5.0 and later no longer include the ip_queue module, so INetSim's redirect feature only works with earlier kernel versions. 1.4 Dummy service The Dummy service simply logs all data received from the client. This module is most useful when used along with connection redirection to capture all traffic sent from the client to ports not bound to any other service module. Optionally, a configurable banner string can be sent if no data has been received for a given amount of time after the client established the connection. This might be useful e.g. while analyzing a malware which expects a POP3 or SMTP server on an unusual port. 1.5 Logging and reports All incoming requests to the simulated services and the corresponding outgoing replies are logged in detail. When stopping an INetSim session, optionally an additional report for that session with a summary of the connections is created from the logfile. 2. AVAILABILITY --------------- You can get the latest version of INetSim from <http://www.inetsim.org>. 3. PREREQUISITES ---------------- - POSIX compatible and System V IPC capable operating system (e.g. Linux) - Perl version 5.006 or more recent - Perl library Net::Server (available from http://search.cpan.org/~rhandom/Net-Server/) - Perl library Net::DNS (available from http://search.cpan.org/~olaf/Net-DNS/) - Perl library IPC::Shareable (available from http://search.cpan.org/~bsugars/IPC-Shareable/) - Perl library Digest::SHA (available from http://search.cpan.org/~mshelor/Digest-SHA/) - Perl library IO::Socket::SSL (available from http://search.cpan.org/~sullr/IO-Socket-SSL/) - additionally, for IP-based connection redirection (only supported on Linux platforms with Kernel support for packet queueing): Perl library Perlipq (available from http://search.cpan.org/~jmorris/perlipq/) The current version of INetSim has been developed and tested on Debian GNU/Linux 7 (wheezy) and 8 (jessie). It has been reported to also run smoothly on different versions of Ubuntu, Gentoo Linux, FreeBSD and OpenBSD. If you successfully run INetSim on any other platform, or if you experience problems running INetSim on platforms which meet the above mentioned requirements, please drop us a note at <inetsim at inetsim dot org>. 4. INSTALLATION --------------- Get the latest version of INetSim from <http://www.inetsim.org>. Make sure you have installed Perl and all required modules listed above. INetSim runs all services with privileges of the user specified in the configuration file (default: 'nobody'), so make sure this user exists on your system. INetSim runs all services with privileges of group 'inetsim', so you need to add a group with that name to your system. On a Linux system, this can be done by executing the command 'groupadd inetsim' as root. Unpack the downloaded tarball to a directory of your choice (e.g. /opt/inetsim). Change into the top-level directory of the unpacked tarball and run the script 'setup.sh' as root. This will set some required permissions on files and directories of INetSim. 5. CONFIGURATION ---------------- For a documentation of the configuration directives of INetSim, please refer to the manpage 'inetsim.conf' in subdirectory 'man/man5' and the comments in the sample configuration file 'conf/inetsim.conf' included with the INetSim distribution. 6. USAGE -------- To start INetSim, change into the top-level directory of the unpacked tarball and run the startup script 'inetsim' as root. For a documentation of the available command line options for the startup script, please refer to the manpage 'inetsim' included with the INetSim distribution in subdirectory 'man/man1'. INetSim requires root privileges to bind sockets to ports below 1024. After binding the sockets, root privileges are dropped as described in section 'Installation'. Currently, the INetSim startup script can only be run with root privileges, even if no ports below 1024 are configured to be used. This might change in future releases. !! IMPORTANT NOTE for users of OpenBSD/FreeBSD: !! The default maximum number of semaphore identifiers on OpenBSD/FreeBSD is 10. INetSim needs some more semaphore identifiers to run. So you have to raise the corresponding sysctl value (kern.seminfo.semmni on OpenBSD, kern.ipc.semmni on FreeBSD). A value of 20 should work. Otherwise INetSim will crash with an error message like "Could not create semaphore set: No space left on device" on startup. 7. ABOUT THE AUTHORS --------------------- INetSim is developed by Thomas Hungenberg and Matthias Eckert. We both work in the field of IT security and part of our daily work is the analysis of unknown malware samples. 8. ABOUT THE PROJECT --------------------- To perform a quick run-time analysis of the network behaviour of unknown malware samples, we were in need of a tool to simulate internet services which are commonly used by malware in our laboratory environment. We started off with a bunch of home-grown Perl scripts together with specially configured server service implementations like Apache, Postfix, dnsmasq and ntpd, but we were not happy with this because of a lot of disadvantages resulting from the combination of many programs (e.g. problems with correlation of log data). While talking to other security analysts, we noticed that there is definitely a need for a comfortable single suite to simulate different internet services with common logging and centralized control functions. So we decided to start the project 'INetSim' to develop such a suite. Due to lack of time at the office, the programming was done in our spare time. We both have been using Perl for many years but mostly for small scripts, e.g. for the analysis of logfiles. The project INetSim was a welcome opportunity to gain more practical experience in programming Perl and to deal with the specifications (RFCs) for several services in depth. We think INetSim might be useful for other security researchers as well and therefore decided to release it to the community as free software licensed under the GNU General Public License (GPL). Any feedback on your experiences with INetSim is appreciated. Please send your comments to <inetsim at inetsim dot org>. NOTE: As this is our first larger software project written in Perl, please do not be too harsh when you review the code. By now, we learned a lot more about using references, packages and object-oriented programming in Perl, so the design and code will be much better in our next project. ;-) 9. COPYRIGHT ------------ Copyright (c) 2007-2016 Thomas Hungenberg & Matthias Eckert This software is licensed under the GNU General Public License (GPL). For more information read the file COPYING which should be included with this distribution. ----------------------------------------------------------------------
About
Extend inetsim with interesting features, like dns white list, ip-redirection with kernel above 3.5. more functionalites are being developed
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published