ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Cuckoo Sandbox 恶意软件动态分析系统搭建与实战

Cuckoo Sandbox 恶意软件动态分析系统搭建与实战 1. 功能介绍**沙盒(Sanbox)**是一种将未知、不可信的软件隔离执行的安全机制。恶意软件分析沙盒一般用来将不可信软件放在隔离环境中自动地动态执行然后提取其运行过程中的进程行为、网络行为、文件行为等动态行为安全研究员可以根据这些行为分析结果对恶意软件进行更深入地分析。Cuckoo sandbox是一款用 Python和C/C 编写的开源的自动化恶意软件分析系统且跨越Windows、Android、Linux和Darwin四种操作系统平台。1.1主要功能跟踪记录恶意软件所有的调用状况恶意软件文件行为恶意软件执行过程中创建新文件、修改文件、删除文件、读取文件或下载文件的行为获取恶意软件的内存镜像以 PCAP 格式记录恶意软件的网络流量获取恶意软件执行过程中的屏幕截图获取执行恶意软件的客户机的完整内存镜像Cuckoo 可以分析的几乎所有的文件格式1.2 架构设计Cuckoo 的架构也比较简单在 Host 机上运行 Cuckoo 主程序多个 Guest 机通过虚拟网络与 Host 机相连每个 Guest 机上有一个 Cuckoo Agent 程序用来做 Cuckoo 的监控代理结构图如下其实就是说在host的web上提交的文件会被分配到各个guest上运行收集该文件调用的状况。2. 安装与配置2.1 配置情况主机(host)Ubuntu 18.04 LTS 4Gb Ram VirtualBox6.0 Cuckoo Sandbox 2.0.4客户机(guest)Windows XP professional SP3 512Mb Ram主机与客户机之间的连接方式Host-Only IP转发2.2 主机环境准备更换源自带的源不太稳定所以更换为国内的源如阿里源。操作如下sudo gedit /etc/apt/sources.listdeb http://mirrors.aliyun.com/ubuntu/ disco main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ disco main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ disco-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ disco-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ disco-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ disco-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ disco-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ disco-backports main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ disco-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ disco-proposed main restricted universe multiverse删除缓存sudo rm -vfr /var/lib/apt/lists/*更新sudo apt-get updatesudo apt-get upgrade安装cuckoo的依赖sudo apt-get install git mongodb libffi-dev build-essential python-django python python-dev python-pip python-pil python-sqlalchemy python-bson python-dpkt python-jinja2 python-magic python-pymongo python-gridfs python-libvirt python-bottle python-pefile python-chardet tcpdump -y安装Tcpdump并确认安装无误sudo setcap cap_net_raw,cap_net_admineip /usr/sbin/tcpdumpgetcap /usr/sbin/tcpdump输出/usr/sbin/tcpdump cap_net_admin,cap_net_raweip则表示已正确安装安装Pydeepwget http://sourceforge.net/projects/ssdeep/files/ssdeep-2.13/ssdeep-2.13.tar.gz/download -O ssdeep-2.13.tar.gz tar -zxf ssdeep-2.13.tar.gz cd ssdeep-2.13 ./configure make sudo make install确认pydeep安装无误ssdeep -V #检查版本pip show pydeep #再安装一次看看会不会提示已安装安装Volatility先安装Volatility的依赖sudo pip install openpyxl ujson pycrypto distorm3 pytz安装volatilitygit clone https://github.com/volatilityfoundation/volatility.gitcd volatilitypython setup.py buildpython setup.py install确认volatility安装无误python vol.py -h安装Cuckoo直接pip安装别整啥乱七八糟的到2019.06.29为止最新版本应该是2.0.7笔者试过2.0.12.0.42.0.62.0.7发现从2.0.4开始之后的版本都差不多倒是之前的版本差异太大很难配置成功。先执行以下指令以防止安装pillow时出错。sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tkpip安装cuckoo时会自动安装pillow若不执行以下指令会出现Command “/usr/bin/python -u -c “import setuptools, tokenize;file‘/tmp/pip-install-OPu7Zt/pillow/setup.py’;fgetattr(tokenize, ‘open’, open)(file);codef.read().replace(‘\r\n’, ‘\n’);f.close();exec(compile(code,file, ‘exec’))” install --record /tmp/pip-record-s5ZAyi/install-record.txt --single-version-externally-managed --compile --user --prefix” failed with error code 1 in /tmp/pip-install-OPu7Zt/pillow/报错如图[外链图片转存失败(img-gI6fyswo-1562310089362)(https://i.loli.net/2019/06/30/5d18370fdeecf63181.png)]执行以下指令安装cuckoopip install -U cuckoo此时再到home目录下按Ctrlh显示隐藏文件若没有 .cuckoo 这个隐藏目录则要到/home/(username)/.local/bin/下执行python cuckoo会在home下自动生成 .cuckoo 目录cd /home/(username)/.local/bin/ #注意这里的username是你的Ubuntu用户名python cuckoo此时回到home下执行cuckoo -d测试一下能否打开cuckoocd /home cuckoo -d​ **“若出现找不到指令cuckoo”**类似的报错:可以进入到/home/(username)/.local/bin/下执行cuckoo -dcd /home/(username)/.local/bin/ cuckoo -d或是将/home/(username)/.local/bin/下的cuckoo文件复制到/usr/local/bin/下这样的话就可以更加方便的启动cuckoo了。cp /home/(username)/.local/bin/cuckoo /usr/local/bin若是有CuckooCriticalError这个报错则说明成功因为已经能成功启动cuckoo了只是没有配置cuckoocuckoo无法连接套接字待会再进行配置。2.3 客户机环境准备安装VirtualBox直接使用apt-get安装就行sudo apt-get install virtualbox请注意可能直接使用apt-get安装的virtualbox会缺少增强功能也就相当于VMWare中的VMWare Tools)会导致无法让ubuntu主机和xp客户机之间建立共享文件夹导致无法将python2.7安装包、PIL安装包、agent文件传送到xp客户机内导致不能进行下一步操作。在virtualbox中建立一个虚拟机作为客户机guest建议安装Win7或者WinXP笔者使用XP体积较小xp镜像可以自行去msdn下载。笔者这里提供msdn的zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_x14-80404.iso 镜像迅雷连接ed2k://|file|zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_x14-80404.iso|630239232|CD0900AFA058ACB6345761969CBCBFF4|/若是想用pandownload的笔者提供百度云永久链接https://pan.baidu.com/s/1Zf7xJSG4WFmPKXEdt1rguQ下载之后将镜像拖入Ubuntu中打开终端输入virtualbox点击新建虚拟机接下来不想截图了依次设置内存512m→现在创建虚拟硬盘→VDI→动态分配10G这里可能7、8G就行了之后安装XP镜像首先选择安装介质选择刚刚导入的XP镜像。接着将启动引导顺序更改使进入虚拟机后自动进入光驱而不是硬盘,之后点确定启动虚拟机。注意如果出现以下提示”发现无效设置“提示已经启用硬件虚拟化的应该进入 系统→硬件加速→将启用VT-x/AMD-V的选项去掉去掉之后应当检查之前的设置是否生效。进入之后F8选择同意之后一路按ENTER选择默认选项直到读安装进度条。完成后会自动重启重启之后会出现安装windows的界面之后的安装步骤没提到的话一路下一步就可以了密钥爱填不填无所谓。等待十几二十分钟安装完毕之后进入到windows xp的配置界面这里选择不启用自动更新选择不激活之后就进入了桌面此时点击右下角的那个红色盾牌进去把防火墙、自动更新、病毒保护这三项全部关掉防火墙不关掉的话Ubuntu主机是无法ping通xp虚拟机的。接着检查xp的ip地址点击左下角的开始按钮点击运行输入cmd输入ipconfig查看xp客户机的ip地址不出意外的话应该是10开头的ip地址证明此时ubuntu主机和xp客户机现在是以网络地址转换NAT的连接方式连接着的接下来就要将其改为Host-only方式连接。2.4 基本网络配置首先在VirtualBox的主机网络管理器中配置一个网卡点击virtualbox的管理→主机网络管理器→创建这样会自动创建一个ip地址为192.168.56.1的名为vboxnet0的网卡这里不用开启DHCP服务器因为后面我们要手动配置XP虚拟机的IP地址。接着在virtualbox中右键xp虚拟机点击网络→连接方式选择仅主机Host-Only网络之后点击确定点击确定完成之后xp虚拟机右下角的网络连接应该会弹出一个小三角表示不能正常连接这是正常的处于Host-Only的连接方式下Guest是不能访问互联网的而Host是可以访问互联网的要使Guest能访问此时设置xp虚拟机的网络配置如下进入Ubuntu主机手动设置IP我的设置如下其中默认网关每个人的都可能不同不要照着我的填因为我的VMWare刚好就帮我设置了192.168.56.0这个网段。具体该怎么设置如下打开本体机的VMWare点击左上角的 编辑→虚拟网络编辑器上面那个192.168.56.2就是要填入Ubuntu主机默认网关的IP地址请按照自己的情况来设置。此时关闭按钮再开启按钮作为一次网络重启此时Ubunutu主机的网络信息如下所示尝试双方能不能ping通按道理来讲是能ping通的。2.5 IP转发cuckoo的网络配置中使用Host-Only连接方式的原因根据cuckoo的架构可以得知一个恶意软件被安装配置了cuckoo的host提交到各个guest进行运行分析时host是想要知道guest的所有流量信息的因为绝大部分的恶意软件搞破坏都依赖网络。此时只有设置Host-Only连接host才能截获guest与互联网之间流经的所有流量才能更好的分析恶意软件的行为方式。此时Guest是无法访问互联网的所以要在Host中设置IP转发利用虚拟网卡做代理转发。开启IP转发sudo -i sysctl -w net.ipv4.ip_forward1 echo 1 /proc/sys/net/ipv4/ip_forward #为使重启之后仍然有效gedit /etc/sysctl.conf去掉net.ipv4.ip_forward1 前的#号保存然后再执行下面的sysctl -p /etc/sysctl.conf配置Iptables的规则在配置Iptables规则之前要先Iptables -L看下有没有其他的防火墙规则如果有的话自己百度搜怎么样删除iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPTiptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTiptables -A POSTROUTING -t nat -j MASQUERADE#接着为保证重启之后依然有效 sudo gedit /etc/network/interfaces#在最后添加两行 pre-up iptables-restore /etc/iptables.rules post-down iptables-save /etc/iptables.rules测试Host-Only连接方式是否已经正确配置此时Ubuntu主机就不能访问网页了但是ping 8.8.8.8的话是可以ping通的因此肯定是DNS出了问题但是不影响可以先不管。如果非要管的话也行终端输入sudo gedit /etc/resolv.conf将nameserver 127.0.0.53 改为nameserver 114.114.114.114保存就可以访问网页了但是千万不能重启网络这样的话又会变成127.0.0.53了想要彻底解决问题的话可以参考https://www.helplib.com/ubuntu/article_162736https://blog.csdn.net/weixin_33920401/article/details/87407103此时XP是可以正常访问网页的。2.6 启动客户机的agent在home下新建一个文件夹share将文件.cuckoo/agent/agent.py复制到share接着在share中打开终端输入wget https://www.python.org/ftp/python/2.7.13/python-2.7.13.msiwget http://effbot.org/media/downloads/PIL-1.1.7.win32-py2.7.exe下载python2.7安装包和PIL安装包要想再virtualbox中使用共享文件夹就必须再xp虚拟机中安装virtualbox增强功能具体如下直接apt-get安装的Virtualbox是不带增强功能的需要自己装。点击接下来会提示你下载那就下载记得选择保存至Save as…接下来将xp正常关机然后进入virtualbox的设置中顺便将之前的引导顺序调回来将之前的xp安装镜像移除将下载下来的Virtualbox增强功能的镜像安装上去接着点击确定启动xp虚拟机即可打开我的电脑点击安装即可安装中途会出现两次询问点仍然安装即可在virtualbox中打开xp虚拟机的设置新建共享文件夹点击确定进入xp虚拟机的我的电脑可以看到下面多了一个网络驱动器点进去就能看见共享的文件了先安装python2.7后安装PIL配置agent我们想要agent.py运行但是不能有运行窗口因为如果有窗口的话到后面运行cuckoo提交样本时客户机会出错别问我为什么知道的。把 agent.py 后缀改成 agent.pyw将agent.pyw复制到C:\Python27\文件夹下双击运行是没有任何反应的打开cmd输入netstat -an查看本地8000端口是否在监听如果8000端口正在监听那说明此xp虚拟机就能被cuckoo所调用。最后一步在8000端口正在被监听的状态下再virtualbox保存xp虚拟机快照将快照命名为snapshot12.7 配置cuckooCuckoo配置文件的更改是非常重要的一步否则很可能你的所有安装都无法正常启动。在.cuckoo/conf/中修改配置文件cuckoo.conf:machinery virtualbox [resultserver] ip 192.168.56.1 #This is the IP address of the host port 2042 #leave default unless you have services runningauxiliary.conf:[sniffer] # Enable or disable the use of an external sniffer (tcpdump) [yes/no]. enabled yes # Specify the path to your local installation of tcpdump. Make sure this # path is correct. tcpdump /usr/sbin/tcpdumpvirtualbox.conf:machines 你的虚拟机名字 [你的虚拟机名字] label 你的虚拟机名字 platform windows ip 192.168.56.101 # IP address of the guest snapshot 你创建的快照名字 interface vboxnet0reporting.conf:[mongodb] enabled yes #也许还有其他要改的但是这个最重要其他是yes还是no更多的是看你的需要或者之后在使用时再来配置文件里面打开3. 提交样本进行分析首先运行以下指令解决tcpdump的权限被拒绝sudo apt-get install apparmor-utils sudo aa-disable /usr/sbin/tcpdump否则新版的cuckoo再提交样本后会报错Unable to stop auxiliary module: Sniffer具体参考https://cuckoo.sh/docs/faq/index.html#permission-denied-for-tcpdump接着打开.cuckoo/analyzer/windows/modules/auxiliary/recentfiles.py将使用SHGetKnownFolderPath函数的部分注释掉python中可以以三个单引号作为注释且要注意三个单引号要与 r 对齐因为python中是以缩进来划分代码块否则cuckoo会报python的错误AttributeError: function SHGetKnownFolderPath not found具体参考https://github.com/cuckoosandbox/cuckoo/issues/1934 r SHELL32.SHGetKnownFolderPath( uuid.UUID(self.locations[location]).get_bytes_le(), 0, None, ctypes.byref(dirpath) ) if r: log.warning(Error obtaining user directory: 0x%08x, r) return # TODO We should free the memory with CoTaskMemFree(). return dirpath.value 接着打开两个终端一个先输入cuckoo -d另一个再输入cuckoo web runserver接着用浏览器打开127.0.0.1:8000登录到cuckoo的web服务页面点击上传按钮可以提交样本这里我随手提交了病毒实验用的工具pecomp.exe。点击提交主机会将客户机恢复快照并将样本传送至客户机进行运行分析样本分析结果摘要点击进入分析日志会发现没有报错结果页面可显示测试后样本的行为展示样本的基本信息样本运行的基本信息样本运行时的屏幕截图。去卡饭论坛下载几个病毒样本https://bbs.kafan.cn/thread-2145532-1-1.html更多样本https://bbs.kafan.cn/search.php?modforumsearchid711539orderbylastpostascdescdescsearchsubmityeskwEXE可能是由于xp虚拟机里面没有装什么应用程序单从截图上来看只有samp(1)有明显的行为。可有看出它尝试连接了许多连接并且下载了橙子浏览器的安装程序并自动运行左侧选择“Process Memory”显示如下图。显示样本中所包含的URL链接。像目前比较火热的开发岗位实属网络安全毕竟国家网络安全法也出台了网络安全等级保护2.0等合规要求也出来了。网络安全对于大部分政企单位来说已经从[可选项]变成了[必选项]。在以前很多政企单位在进行 IT 部门及岗位划分时只有研发和运维部门安全人员直接归属到基础运维部而现在越来越多单位为了满足国家安全法律法规的要求必须成立独立的网络安全部门拉拢各方安全人才、组建 SRC安全响应中心为自己的产品、应用、数据保卫护航。根据国家发布的《网络安全人才实战能力白皮书》数据显示目前中国网络安全人才供应严重匮乏每年高校安全专业培养人才仅有3万余人而网络安全岗位缺口在2027年将达327万缺口高达95%。了解网络安全首先要搞清楚下面这些前提网络安全到底包含哪些技术是否需要会编程网络安全行业有哪些职业方向“我”该如何选择网络安全的职业发展和成长路线是什么如果你是准备学习网络安全黑客或者正在学习下面这些你应该能用得上①网络安全学习路线②20份渗透测试电子书③安全攻防357页笔记④50份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100个漏洞实战案例⑧安全大厂内部视频资源⑨历年CTF夺旗赛题解析一、网络安全黑客学习路线网络安全黑客学习路线形成网络安全领域所有的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。二、网络安全教程视频我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。三、网络安全CTF实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这里带来的是CTFSRC资料HW资料毕竟实战是检验真理的唯一标准嘛~四、网络安全面试题最后我们所有的作为都是为就业服务的所以关键的临门一脚就是咱们的面试题内容所以面试题板块是咱们不可或缺的部分这里我给大家准备的就是我在面试期间准备的资料。网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表