您的位置:首页 > 运维架构 > Linux

恶意代码分析实战 安装INetSim在CentOS 7上

2017-08-30 16:34 961 查看

CentOS 7安装INetSim

注: 博主对Perl不太熟,所以搜狗了半天(拒绝百度,从我做起)

官方安装步骤

inetsim documentation

不过写的比较笼统,可以参考参考

1.下载安装文件

从这里下载一个源文件

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


[b]但是这里也会报错[/b]

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
看看

[b]还是报错[/b]

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


[b]还有个包没装[/b]

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




[b]这个失败了[/b]

但是我们可以通过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 <username>
#
# 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
也是照这个思路来

[b]然后改完之后记得增加perl的这个模块[/b]

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/
下、

本文完
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  代码分析 inetsim