Cuckoo是一款用于自动化分析恶意样本的沙箱软件。相比其他沙箱软件,Cuckoo具备强大的监控功能,能够自动将程序提交到指定的虚拟机中,并依据格式运行,同时会Hook相关的函数接口,记录下的重要的函数调用、网络访问。Cuckoo基于Python编写,通过在此基础上进行修改,可以避免重复开发,增加所需要的特殊功能。

网站https://malwr.com/可以认为是一个在线版的Cuckoo,国内也样相关的在线样本行为分析网站[火眼](https://fireeye.ijinshan.com/)和[文件B超](https://www.b-chao.com),个人怀疑他们也是在Cuckoo的基础上进行修改的。

本文的主要内容是在Linux系统上安装Cuckoo。

安装过程

1. 基本运行环境

  • Python

安装Python并根据requirements.txt中的列表直接安装所需要的python模块。

  • MongoDB

如果想使用基于Django的网页接口,则需要安装MongoDB

  • 各个虚拟机的接口库

KVM、XenServer的API接口

2. 功能软件

安装Yara

Yara是一款用于识别和分类恶意样本的开源工具,可以理解为是一款特征匹配工具。

Yara默认没有编译对cuckoo和magic的支持,在编译时需要加上./configure --enable-cuckoo --enable-magic选项。

安装yara-python库,使得cuckoo能够调用yara。

安装ssdeep

ssdeep能够计算一个文件的模糊哈希代码,通过计算不同样本之间的ssdeep差值,可以判断两个样本是否相近。

Tcpdump

用于截获数据。

安装cuckoo

cuckoo居然没有在ArchLinux的软件包中,这是很神奇的一件事,所以必须手动Github下载,并且手动更新。

git clone git@github.com:cuckoobox/cuckoo.git

3. 可选软件

Volatility

这是一款分析内存dumps的工具。

4. 安装虚拟机

Cuckoo支持多种虚拟机,官方推荐使用的是VirutalBox虚拟机(应该是因为开源的缘故),其他的还支持VMware、XenServer、ESX、KVM等虚拟机(参考modules/machinery目录),个人处于使用惯性,选择了使用VMware。

虚拟机内安装基本操作系统,取消防火墙,并安装Python运行环境,然后运行agent/agent.py,使得虚拟机处于等待接收参数和处理任务状态,并对此状态保存快照。

配置

cuckoo.conf

[cuckoo]machinery: 虚拟机类型,可以填virutalbox,vmware等

[resultserver]ip port: 存储结果的服务器IP,可以直接填写本机(物理机)

[database]connection: 数据库连接,不填可以直接使用SQLite数据库

auxiliary.conf

主要用于监控网卡数据相关配置

[sniffer]interface: 改为和虚拟机共用的网卡

vmware.conf

具体的虚拟机设置,本例中使用vmware.conf

machines: 具体的虚拟机配置,必须与下面的字段名称一致

vmx_path: 表示虚拟机vmx文件的路径

snapshot: 快照名称

ip: 虚拟机IP地址

processing.conf

处理样本时需要使用各种附加模块,我禁用了Virustotal。此外,如果自己添加了模块,则需要在这个文件中启用

memory.conf

用于Volatility处理模块,需要首先在processing.conf启用memory模块才行。

reporting.conf

配置报告服务器,我修改了mongodb字段,使其将数据存储到了MongoDB中

运行

启动cuckoo

python2 cuckoo.py

如果失败,可以使用-d参数,输出更多的内容用于调试确认错误信息。

提交文件分析

python2 utils/submit.py [文件路径] --url [网址]

部门老大让我们定下自己的年度目标,以此使大家在一段时间都能够有所收获而不至于碌碌无为。作为新人,我的年度目标自然时是以学习为主,主要是读书、写博客,提高个人时间管理。

SMART原则

SMART原则是制定(考核)目标时常用的黄金原则,老大在会议上也提到了。

  1. Specific明确性

目标是具体无歧义,对于团队而言则是一致的。

  1. Measuable可衡量性

有简单明显的指标衡量完成进度及效果

  1. Attainable可达到的

目标不宜过于难,以免位居不前。

  1. Relevant相关性

目标之间有相关性,这条对于此次目标制定用处不大。

  1. Time-bound时间截至期限

有明确的截至日期,其实这和原则2有部分重复

个人年度目标

鉴于自己的严重拖延症及极差的执行力,尽量把目标定低一些,以便达到。

总目标

  1. 技术类书籍平均每天3页,一周20页,两个月写一篇读书笔记。

  2. 一周一篇博客。

  3. 每天利用Evernote记录自己做的事情,并尝试总结改进。

4月份目标

  1. 即日起(19日)至月底月度完毕《Effictive C++》前两个章节。

  2. 整理现有的博客内容,写博客一篇。

Kali Linux

Kali是一个专门用来进行安全审计(渗透测试)的操作系统,是著名的Backtrack的后继者,由同一组开发人员开发的。Kali基于Debian系统,加入了大量的安全工具。

基本配置

安装Linux Brew

允许使用PPA库

参考网页Kali Linux add PPA repository add-apt-repository

一些常用软件

安装Zsh、Terminator

用于替换原有的bash、Gnome Terminal。

安装VMware

Vmware Workstation的驱动对于不同的Linux内核版本都要进行一定的patch才能正常编译。基本上通过搜索能够获取最新需要修改的地方,然后重新打包后编译即可。

Cmder简介

Cmder是一款Windows下面的终端模拟器,有了它终于能够抛弃默认的垃圾cmd界面了!

Cmder

特点

个人很简单的使用了下,觉得有以下优点:

  1. 可自定义字体,配色非常好看。

  2. 路径补全有所提高。

使用配置

乱码

ls的乱码主要是参数问题,修改文件cmder/config/aliases:

1
2
3
4
l=ls --show-control-chars
la=ls -aF --show-control-chars
ll=ls -alF --show-control-chars
ls=ls --show-control-chars -F

中文重叠

在设置中,取消Main console font下的Monospace勾,这样中文字符(占用两个英文字符空间)就得到的了足够的空间了。

右键打开Cmder

以管理员权限运行,输入命令.\cmder.exe /REGISTER ALL,在任意目录下右击就会出现Cmder Here,可以打开并默认切换到该目录。

退格后错位

lgh:
cmder 功能强大,但是反应较慢,经常卡住半天才反应;默认的命令提示符 λ 还会导致在用 TAB 还是 BACKSPACE 之后字符错位(自己改配置换成 $ 后就不会)。
现在干脆直接用 ConEmu 了。
来源:https://www.v2ex.com/t/155058

lgh针对问题1提出解决方法是修改提示符为$。修改方法是

打开文件config/prompt.lua,将第二行中的λ修改为Linux下常用的$

不足

当然,可能这些问题只是因为我没有找到对应的解决方法。

  1. 有时候会出现无法删除第一个字符的情况(实际已经删除了)。

  2. 路径补全还是没有达到zsh的效果。

  3. 没有快速进入某个目录的功能。

  4. Cmder1.2开始需要VS2015运行库支持(丧心病狂!)

最后

现在只是刚开始使用,很多功能还是在摸索中,如果有更多的体会,会继续更新。

Mactype是在Windows下实现类似Mac下字体渲染效果的程序。长期以来,我一直都使用这个软件替代系统自带的ClearType渲染功能。渲染得到的字体相当不错。

但是,

字体

Windows下面自带的雅黑字体效果还是挺不错的,但是还是建议使用其他修改过的字体。字体可以去极限社区下载。该论坛也是重要的讨论字体修改和Mactype的网站。

之前用的比较多的是XHei,貌似现在出了新的字体,以后下载看下效果。

程序优化

Firefox

Firefox默认开启的硬件加速,因此无法直接使用Mactype字体渲染。关于具体的设置,参考文档MacType.Source

打开about:config,修改设置如下

Key Value
gfx.direct2d.disabled true
gfx.font_loader.delay -1
gfx.font_rendering.cleartype.always_use_for_content;true true
gfx.font_rendering.cleartype_params.cleartype_level 100
gfx.font_rendering.cleartype_params.enhanced_contrast 100
gfx.font_rendering.cleartype_params.gamma 1400
gfx.font_rendering.cleartype_params.pixel_structure 1
gfx.font_rendering.cleartype_params.rendering_mode 5
gfx.font_rendering.fallback.always_use_cmaps true
gfx.use_text_smoothing_setting true

VisualStudio

与Firefox一样,同样使用了硬件加速,而且偏偏没有任何设置。

VS 怎么使用 MacType 的字体渲染?中提出了解决方案:对于ClearType设置为Smoothing的字体,且Visualstudio在显示比例不为100%时可以直接通过Mactype进行渲染。

所以需要使用这样特别制作的字体,从自制FantasqueSansMono字体+VS缩放插件,完美解决VS2013+Mactype下载特别制作过的字体FantasqueSansMono字体。

但是默认VS都会在新开一个窗口的时候重置缩放比例,因此需要使用插件让VS保持显示比较为99%。插件可以参考帖子Visual Studio 2010 default zoom level,固定了显示比例之后,防止不小心按了Ctrl+滚轮而改变了缩放,可以安装插件Disable Mouse Wheel Zoom,装上了这几个插件,基本可以欣赏漂亮的字体渲染了。

人生中第一台Macbook pro,终于在发完年终奖后、回家过年前到手了。

是从苹果团买的,感觉顺丰陆运速度还算快。

装在之前的电脑包里面,就显得电脑包得空间太大,需要买个内胆包才行。

首先要学习的是触摸板手势,有了这个真心不想用鼠标了,总算能够完全使用键盘(且算触摸板为键盘的一部分吧)

键盘使用起来按键声音还好,比较清脆舒服,虽然键程不长,但是感觉还行吧。的确有必要换个外置键盘。

字体看的真是舒服,终于不用在Win/Linux下面费尽心思的调整字体了。

软件

一大堆软件都不会用。

常用软件

登陆AppStore,进免费排行榜,下载了QQ、搜狗输入,其中搜狗输入的功能是通过里面的入口安装搜狗输入法。
安装Xcode,虽然目前一次都没有打开过。
首先安装Homebrew,幸好最近在折腾Linuxbrew,很多操作都是一样的

对于使用Homebrew安装的系统软件,如数据库等,根据提示,相关启动方法如下

To have launchd start mongodb at login: ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents Then to load mongodb now: launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist Or, if you don’t want/need launchctl, you can just run: mongod --config /usr/local/etc/mongod.conf redis-server /usr/local/etc/redis.conf

zsh

具体参考Mactalk的这篇文章终极shell

另外,在使用zsh的agnoster主题时,需要额外下载增强的字体,并在终端选择使用。

Scrapy简介

Scrapy是使用Python编写的一个通用的爬虫框架。

基于Twisted的异步编程框架,大幅提高了爬取效率。

Scrapy想来目前应该是我阅读源代码最多的开源项目了。在这个项目上,我学习到了yeild关键词,各种类的应用,接触到了一直想学习的Twisted框架。

代码看起来挺简洁的,因此。

Scrapy 0.24.0版本的包结构有大幅改变,与之前的旧版本完全不兼容。

Scrapy框架

Scrapy的框架比较难以理解,这跟

Scrapy改进

Html解析

Scrapy提供了lxml的相关解析器。但是使用更好的是BeautifulSoup,虽然解析速度会便慢。

使用Bloom过滤器

默认的网址过滤器(爬虫中的Visited表)是将一个url映射到MD5实现的。使用场景

利用redis构建分布式爬虫

目前还没有使用过这个技术,但是其实原理非常简单,把爬虫队列存储到Redis的列表中,利用Redis的分布式数据存储功能来实现分布式队列,这样就能够在不大动Scrapy的情况下进行分布式爬取。说句实话这个思路真得很赞!

这个题目起的有点意思。起因很简单,在元旦假期里面突然想折腾一下ArchLinux,装一个Vmware,结果去官网,发现我的Vmware帐号提示处于下载资格审核中,没法直接通过官网下载,而偏偏Vmware Workstation for Linux的下载非常少,或者版本不是最新的(最新的11没有32位版,其他的也普遍是8、9等),后来终于找到一个比较新的下载地址(10.0.0),里面提供了10.0.0的官网下载链接:

Vmware Account Locked

http://download3.vmware.com/software/wkst/file/VMware-Workstation-Full-10.0.0-1295980.i386.bundle

虽然离最新可用32位版10.0.4稍微差点,但仍然是可用的。不过仔细观察这个链接,中间不包含任何随机字符串,因此怀疑可以构造出10.0.4的下载地址。在这个链接中最关键的就是bundle的文件名:VMware-Workstation-Full-10.0.0-1295980.i386.bundle,于是便想直接修改为VMware-Workstation-Full-10.0.4-1295980.i386.bundle,显然这种做法是错误的,因为文件名中含有一个内部版本号1295980,因此必须找到这个内部版本号才能够构造出实际的10.0.4下载地址。

仔细观察官网下载页面内容,发现真实文件名(内部版本号)在官网上就有,据此构造出实际的10.0.4的下载地址为:

http://download3.vmware.com/software/wkst/file/VMware-Workstation-Full-10.0.4-2249910

Vmware List

其他的话

这也不是我第一次干这种事了,基本情况就是下载网址A被大家所知道,但是下载网址B需要通过一定权限才能获取的,然后最关键的是,网址A能够推理出网址B,通常情况下网址里面包含了固定的信息,例如日期,可以直接修改得到。当然,如果有一点随机字符串,就没法获得了。

这个问题相信以前国内的各种下载站都会有过,不过现在应该好多了,但是很多公司自己的软件或者付费下载可能仍然存在这样的问题。如果能够获得一个网址,例如试用版软件或者免费资源,就能够进一步推导出其他资源的网址,当然前提是文件名能够直接从网页上获取到。

安装Vmware Workstation中的其他问题

参考了很多Wiki上的内容

无/etc/init.d目录

Archlinux的启动改为systemctl,因此不再有/etc/init.d目录,解决方法是直接忽略错误,然后手工写一个service文件就行了。

编译模块时出错

  1. 缺少header.h

查看日志,发现是缺少linux头文件中的header.h,利用locate命令查找到对应的version.h文件,然后创建软链接

sudo ln /usr/include/linux/version.h /lib/modules/3.17.6-1-ARCH/build/include/linux/version.h

  1. 打补丁

解决了header.h之后,发现还是编译不通过,这下就傻眼了(本事不济搞不定啊!),不过通过搜索后,发现其实Arch Wiki上都写明了,安装软件vmware-patch就行了,一看这个软件,就已经为10.0.4更新过了,又让我对Arch产生了进一步的好感,无所不能啊!

总结就是,有问题,搜Arch Linux英文Wiki!

本文的主要内容:使用Node Coffee-script开发一个网站

Mongoose

注意,Mongoose会对输入的Collection名字自动添加复数形式命名后存入到Mongodb中,例如user重命名为表users,具体的命名方法可以参考Mongoose在创建Model时对Collection的命名策略

解决方法是在创建Model的时候传入第三个参数作为实际的表名

在查询中,还发现在查询大量数据的时候会出现Error: parseError occured的错误提示,相关的错误可以参看MongoDB parseError when using limit and sort,大意是缺少索引,但是我明明已经添加了相关的索引的,不知道如何去解决,故改用Mongodb试下

Node使用心得

更换NPM源

使用淘宝NPM源,在使用过程中发现目录~/.npm/.cache_cnpm/_locks/是root权限创建的(估计是因为第一次是以root权限运行),在普通权限下使用cnpm时会报错,需要手动修改下。

Bower使用

Grunt使用

bootstrap3-jade-node

基于Grunt基础上,加上了Bootstrap3、Jade、Node模板配置

安装命令:

npm install -g grunt-express-bootstrap

初始化库

grunt-express-bootstrap init

生成库

1
2
npm install
bower install

本地运行

``

0%