注: 博主对Perl不太熟,所以搜狗了半天(拒绝百度,从我做起)
官方安装步骤
inetsim documentation
不过写的比较笼统,可以参考参考
从这里下载一个源文件
http://www.inetsim.org/downloads.html
然后放入centos里面,解压,然后用root运行setup.sh
发现报错
Group 'inetsim' does not exist! Aborting
缺少了一个组叫inetsim
我们执行命令
groupadd inetsim
然后再执行,就不会报错了
然后现在这是我们的软件的根目录
[root@localhost inetsim-1.2.6]# ls -il
total 68
4557160 -rw-r--r--. 1 nobody 65534 4353 Aug 29 2016 CHANGES
4557159 -rwxr-xr-x. 1 nobody 65534 1116 Aug 29 2016 cleanup.sh
12959504 drwxr-xr-x. 2 nobody 65534 26 Aug 29 20:08 conf
4557161 drwxr-xr-x. 2 nobody 65534 162 Aug 29 2016 contrib
4557169 -rw-r--r--. 1 nobody 65534 17982 Aug 29 2016 COPYING
408925 drwxr-xr-x. 10 nobody inetsim 105 Aug 29 2016 data
4557151 -rw-r--r--. 1 nobody 65534 1236 Aug 29 2016 DISCLAIMER
12993996 drwxr-xr-x. 2 nobody 65534 104 Aug 29 2016 doc
4557158 -rwxr-xr-x. 1 nobody 65534 552 Aug 29 2016 inetsim #启动inetsim
8452339 drwxr-xr-x. 3 nobody 65534 39 Aug 29 2016 lib
4557157 -rw-r--r--. 1 nobody 65534 12172 Aug 29 2016 LIESMICH
8944999 drwxrwx---. 2 nobody inetsim 6 Aug 29 2016 log
408987 drwxr-xr-x. 5 nobody 65534 40 Aug 29 2016 man
4557156 -rw-r--r--. 1 nobody 65534 10652 Aug 29 2016 README
442180 drwxrwx---. 2 nobody inetsim 6 Aug 29 2016 report
4557143 -rwxr-xr-x. 1 nobody 65534 1197 Aug 29 2016 setup.sh
但是启动之后我们会发现报错
[root@localhost inetsim-1.2.6]# ./inetsim
Can't locate IPC/Shareable.pm in @INC (@INC contains: ./lib /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at lib/INetSim/Config.pm line 18.
BEGIN failed--compilation aborted at lib/INetSim/Config.pm line 18.
Compilation failed in require at lib/INetSim.pm line 20.
BEGIN failed--compilation aborted at lib/INetSim.pm line 20.
Compilation failed in require at ./inetsim line 20.
BEGIN failed--compilation aborted at ./inetsim line 20.
大概意思就是我们缺了一个Shareable.pm
文件,然后一查,这是个perl的运行库
那我们就安装这个库吧,用perl的安装方式
先进入交互模式
perl -MCPAN -e shell
Can't locate CPAN.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .).
BEGIN failed--compilation aborted.
我们检查一下这个包有没有在系统里面了
rpm -q perl-CPAN
显示
package perl-CPAN is not installed
OK,那我们就装呗
yum install perl-CPAN
大概要装这么多依赖包
Installed:
perl-CPAN.noarch 0:1.9800-291.el7
Dependency Installed:
gdbm-devel.x86_64 0:1.10-8.el7 glibc-devel.x86_64 0:2.17-157.el7_3.5 glibc-headers.x86_64 0:2.17-157.el7_3.5 kernel-headers.x86_64 0:3.10.0-514.26.2.el7
libdb-devel.x86_64 0:5.3.21-19.el7 perl-Data-Dumper.x86_64 0:2.145-3.el7 perl-Digest.noarch 0:1.17-245.el7 perl-Digest-SHA.x86_64 1:5.85-3.el7
perl-ExtUtils-Install.noarch 0:1.58-291.el7 perl-ExtUtils-MakeMaker.noarch 0:6.68-3.el7 perl-ExtUtils-Manifest.noarch 0:1.61-244.el7 perl-ExtUtils-ParseXS.noarch 1:3.18-2.el7
perl-Test-Harness.noarch 0:3.28-3.el7 perl-devel.x86_64 4:5.16.3-291.el7 perl-local-lib.noarch 0:1.008010-3.el7 pyparsing.noarch 0:1.5.6-9.el7
systemtap-sdt-devel.x86_64 0:3.0-7.el7
Complete!
OK,我们执行安装
perl -MCPAN -e shell
然后就开始第一次的配置
一直回车默认配置就行了
然后他会查找最近的镜像,这个过程有点慢感觉
你也可以手动配置这么几个Mirrors
最后它会出现这么一个交互界面
我们输入
install IPC::Shareable
这样就算安装完成了
然后我们再启动INetSim
看看
Base class package "Net::Server" is empty.
(Perhaps you need to 'use' the module which defines that package first,
or make that module available in @INC (@INC contains: ./lib /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5).
安照上面的方法再装一个试试
perl -MCPAN -e shell
install Net::Server
Can't locate Net/DNS.pm in @INC (@INC contains: ./lib /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at lib/INetSim/DNS.pm line 19.
一样的
install Net::DNS
这是这个模块的依赖(dependency)没有好,我们安装提示安装这两个包
install Digest::MD5
但是我们可以通过YUM的方式来安装
yum install perl-Digest-MD5
这里有个小技巧,聪明的同学应该看出来了,module名和yum仓库的包名对应关系
install Digest::HMAC
这个成功了
然后我们再去修复那个DNS的问题
install Net::DNS
然后现在安装就可以安装上了,再看看还缺了什么依赖
然后我再启动
可以看出这里有个logfile打不开的问题
在配置文件(如果把安装包直接丢/root/下面了,因为运行时候会用不是root的账号去运行,所以会出现Permission denied)
/home/inetsim/inetsim-1.2.6/conf/inetsim.conf
里面,有这么一行配置文件
#########################################
# service_run_as_user
#
# User to run services
#
# Syntax: service_run_as_user
#
# Default: nobody
#
#service_run_as_user inetsim
把下面这个注释去掉,用inetsim
这个用户来运行这个软件,之前Default: nobody
嘛
这个nobody
用户不在组inetsim
里面
所以会报错
改完配置之后,我们添加用户inetsim
useradd inetsim -g inetsim
然后回到目录
/home/inetsim/
chown -R inetsim:inetsim inetsim-1.2.6
为了保证运行时所需的任何权限,我们也加上这步骤(虽然这会存在很大的安全问题,但是我们又不挂在公网上面,只是内网虚拟机分析,可以容忍,如果不这样做,启动的时候会一堆的缺少写或者读(r/w)权限问题
chmod 777 -R inetsim-1.2.6
就像这样的
然后就可以运行了
这个smtp启动失败不知道是什么原因…(玄学问题吧)
配置inetsim
这里我只是说一下我的配置方式,不一定非要安装我的来配,仅供参考
service_bind_address 127.0.0.1
然后这个刚刚说过了
service_run_as_user inetsim
然后这里按照你分析的恶意代码需求来配
dns_static www.foo.com 10.10.10.10
dns_static ns1.foo.com 10.70.50.30
dns_static ftp.bar.net 10.10.20.30
也可以用ApateDNS
来做这个DNS
不过要注意就是ApateDNS
只能在Windows机器上使用
这里不要使用Default
的版本号,就怕恶意代码作者会做一些反逆向分析措施
dns_version "9.2.4"
然后这里也是一样的
http_version "Microsoft-IIS/4.0"
然后这里安装你的需求来设置欺骗路径
http_fakefile txt sample.txt text/plain
http_fakefile htm sample.html text/html
http_fakefile html sample.html text/html
http_fakefile php sample.html text/html
http_fakefile gif sample.gif image/gif
http_fakefile jpg sample.jpg image/jpeg
http_fakefile jpeg sample.jpg image/jpeg
http_fakefile png sample.png image/png
http_fakefile bmp sample.bmp image/x-ms-bmp
http_fakefile ico favicon.ico image/x-icon
http_fakefile exe sample_gui.exe x-msdos-program
http_fakefile com sample_gui.exe x-msdos-program
这里看你分析的恶意代码有没有下载exe文件的需求了,如果有,随便丢一个小程序放在你自己的某个目录下,然后编辑这里来使起生效
#http_static_fakefile /path/ sample_gui.exe x-msdos-program
#http_static_fakefile /path/to/file.exe sample_gui.exe x-msdos-program
然后这个https的pem文件,最偷懒的办法就是复制原来的default_*.pem
文件为新的这个文件,如https_key.pem
等等,然后取消相应的注释就行了(这些文件在data/cert/下面)
https_ssl_keyfile https_key.pem
然后我们可以通过下面这个命令生成https_dh1024.pem
openssl gendh -5 -out https_dh1024.pem 1024
然后取消注释
https_ssl_dhfile https_dh1024.pem
下面的smtp_ssl
也是照这个思路来
yum install openssl-devel openssl-libs
perl -MCPAN -e shell
install IO::Socket::SSL
如果安装完上面这些这个还不行,不过还是建议你用下面这种方法
试试这个
yum install perl-IO-Socket-SSL
然后可以看见现在没有not SSL support
了,支持SSL了
然后还有就是注意这个(尽量CentOS 7
不要使能这个选项,因为CentOS 7
没有iptables
的libipq.h
这个头文件,没法支持)
#redirect_enabled yes
把重定向地址改成自己
redirect_external_address 127.0.0.1
然后记得安装这几个库如果想开重定向的话
perl -MCPAN -e shell
install IPTables::IPv4::IPQueue
为了安装上这些东西,你还需要
yum install gcc iptables-devel
但是这个我没安装成功,建议还是不要重定向了
然后到此位置,你的INetSim
已经安装完成(但是我的smtp没法启动是什么鬼)
(2017-8-30)事后查明是配置文件中这里不要用127.0.0.1
,smtp就可以很好启动了
下一步就是开放需要的端口
这个因为是我是centos7,所以就不说了,其他发行版的都有自己的方法
Forking services...
* dummy_1_tcp - started (PID 2718)
* ident_113_tcp - started (PID 2704)
* syslog_514_udp - started (PID 2705)
* echo_7_tcp - started (PID 2710)
* discard_9_udp - started (PID 2713)
* quotd_17_tcp - started (PID 2714)
* finger_79_tcp - started (PID 2703)
* discard_9_tcp - started (PID 2712)
* ntp_123_udp - started (PID 2702)
* time_37_tcp - started (PID 2706)
* daytime_13_tcp - started (PID 2708)
* echo_7_udp - started (PID 2711)
* chargen_19_tcp - started (PID 2716)
* chargen_19_udp - started (PID 2717)
* dummy_1_udp - started (PID 2719)
* irc_6667_tcp - started (PID 2701)
* time_37_udp - started (PID 2707)
* quotd_17_udp - started (PID 2715)
* tftp_69_udp - started (PID 2700)
* daytime_13_udp - started (PID 2709)
* dns_53_tcp_udp - started (PID 2691)
* smtps_465_tcp - started (PID 2695)
* ftps_990_tcp - started (PID 2699)
* ftp_21_tcp - started (PID 2698)
* pop3_110_tcp - started (PID 2696)
* smtp_25_tcp - started (PID 2694)
* https_443_tcp - started (PID 2693)
* pop3s_995_tcp - started (PID 2697)
* http_80_tcp - started (PID 2692)
我做好了一个centos7版本的INetSim镜像,为了方便其他的恶意代码分析,在百度云上,下载地址在这里
链接: http://pan.baidu.com/s/1c6NqqU 密码: gj4i
镜像是VirtualBox
导出的ovf1.0
版本,不保证VMware
能导入成功,但保证VirtualBox
能导入成功
系统的默认IP是192.168.0.107
(记得在/home/inetsim/inetsim-xx/conf/inetsim.conf
里面更改一下ip地址,改成你现在机器DHCP所得的IP
用户名root
密码test
/root/
目录下有个一个inetsim启动的软链接(这个后来我发现没法用,因为是在/root/
的目录下,然后程序用inetsim
这个用户运行的时候会报错,但是导都导了,传都传了,大家就去/home/inetsim/inetsim-1.2.6/
下,执行inetsim
这个可执行文件就可以启动,和一个打开所有端口的脚本openport.sh
(这个可以正常用)
安装文件在/root/
下有个原版压缩包,解压后放在了/home/inetsim/
下、
本文完