Volatility学习笔记二-制作SLES11SP2的profile

0x00 前言

想必各位在生产环境中用的都不是ubuntu系统吧,有的是centos有的是feroda,有的是redhat,也有用SUSE Linux Enterprise Server的。

这个SLES谁用谁知道,各种蛋疼,不像ubuntu的apt傻瓜化地帮我把依赖都找好了,直接装就好,他的zypper装软件就是逗,各种寻根找依赖,也是崩溃。

以前本来想弃了的,最近老大又让我在SLES上制作Volatility的profile,遂有了本篇文章。

我用SLES的时候碰到不了不少坑,绕起来,都成了心头大石。

0x01 获取volatility源码

这个容易解决,问题就是在SLES中安装对应版本的git以及zlib的过程。

其中zlib在你安装的光盘镜像中的suse/x86_64中可以找到。

git的话就得在自己添加软件仓库了。

这篇文章教我的:

http://stackoverflow.com/questions/10953925/suse-enterprise-11-sp2-how-to-install-git

sudo zypper addrepo http://download.opensuse.org/repositories/devel:/tools:/scm/SLE_11_SP2/devel:tools:scm.repo
sudo zypper install git-core

如此一来就可以下载了。

0x02 获取 dwarfdump,build-essential 以及 linux-headers-'uname -r'

这里才是坑最多的地方,这两天制作11sp2的profile就被坑了太多太多。

build-essential

build-essential之类的呢?这个就得参考网上的资料找到对应在光盘里的包:

http://www.linuxidc.com/Linux/2014-11/109571.htm

依次安装之后就在SLES 11SP2里装好了gcc开发环境。

linux-headers-'uname -r'

首先是安装内核头文件。根据uname -r的结果获得内核的版本号。

uname -r
3.0.13-0.27-default

但是在光盘里有两个和内核有关的文件。其一是suse/noarch/linux-kernel-headers-2.6.32-1.4.13.noarch.rpm,其二是suse/x86_64/kernel-default-devel-3.0.13-0.27.1.x86_64

别看第一个rpm安装程序名字和我们要的linux-headers这么相似,仔细看看他们的版本号是不同的,也就是说这不符合我们需求。

关键是第二个!关键是第二个!关键是第二个!重要的事情真要说三遍!

第二个版本号一致,且是devel版本,这就看得出满足我们开发编译的需求。

这是坑1.

dwarfdump

这里才是原始巨坑啊!足足花了我两天时间去解决各种依赖的问题,唉。

这个程序是用于解读dwarf调试信息的。但是在光盘中愣是找不到对应的包,通过在google上查找dwarf相关的资料发现光盘上的suse/x86_64/libdw1...可以对调试信息进行解析,是相关的库,不过这个安装文件只提供/lib64/libdwarf.so.1但是不提供我们需要的工具dwarfdump,网上也有libdwarf-tools的安装包,但也是个坑。

最后走投无路,没找到想要的包嘛,那就自己去下载源码自己编译咯。于是就走上了一条源码编译之路。

分别在sf和github上搜libdwarf,可以看到两个链接githubsourceforge

据悉,git上的是sf源码的镜像,那想想还是下载sf的吧。下载下来README的介绍来安装。

./configure
...[snapped]
checking elf.h usability... yes
checking elf.h presence... yes
checking for elf.h... yes
checking elfaccess.h usability... no
checking elfaccess.h presence... no
checking for elfaccess.h... no
checking libelf.h usability... no
checking libelf.h presence... no
checking for libelf.h... no
checking libelf/libelf.h usability... no
checking libelf/libelf.h presence... no
checking for libelf/libelf.h... no
...[snapped]

make dd
cd libdwarf && make
make[1]: Entering directory `/home/crazyd0g/workspace/Tools/libdwarf-code/libdwarf'
echo "do nothing " none
do nothing  none
gcc  -g -O2 -I. -I.       -c -o dwarf_elf_access.o dwarf_elf_access.c
dwarf_elf_access.c: In function ‘dwarf_elf_object_access_internals_init’:
dwarf_elf_access.c:238: warning: assignment makes pointer from integer without a cast
dwarf_elf_access.c:267: warning: assignment makes pointer from integer without a cast
dwarf_elf_access.c: In function ‘_dwarf_get_elf_flags_func’:
dwarf_elf_access.c:339: error: ‘Elf_Scn’ undeclared (first use in this function)
dwarf_elf_access.c:339: error: (Each undeclared identifier is reported only once
dwarf_elf_access.c:339: error: for each function it appears in.)
dwarf_elf_access.c:339: error: ‘scn’ undeclared (first use in this function)
dwarf_elf_access.c:365: warning: assignment makes pointer from integer without a cast
dwarf_elf_access.c: In function ‘dwarf_elf_object_access_get_section_info’:
dwarf_elf_access.c:408: error: ‘Elf_Scn’ undeclared (first use in this function)
dwarf_elf_access.c:408: error: ‘scn’ undeclared (first use in this function)
dwarf_elf_access.c:444: warning: assignment makes pointer from integer without a cast
dwarf_elf_access.c:458: warning: assignment makes pointer from integer without a cast
dwarf_elf_access.c: In function ‘dwarf_elf_object_access_load_section’:
dwarf_elf_access.c:1280: error: ‘Elf_Scn’ undeclared (first use in this function)
dwarf_elf_access.c:1280: error: ‘scn’ undeclared (first use in this function)
dwarf_elf_access.c:1281: error: ‘Elf_Data’ undeclared (first use in this function)
dwarf_elf_access.c:1281: error: ‘data’ undeclared (first use in this function)
make[1]: *** [dwarf_elf_access.o] Error 1
make[1]: Leaving directory `/home/crazyd0g/workspace/Tools/libdwarf-code/libdwarf'
make: *** [dd] Error 2

错误多的要爆炸!看看都是啥问题……貌似是Elf_Scn结构体未声明。

这是个什么鬼?google之,发现这个是来自一个名为libelf.h的头文件,怎么装呢?

https://fossies.org/dox/libelf-0.8.13/structElf__Scn.html

又去搜。这个是一个名为elfutils-libelf-devel系列的包。去光盘里搜搜,还真有,不过没有devel,装了先。于是掉进了坑2.

http://www.hellogcc.org/?p=34176

再编译dwarfdump还是刚才的问题!看来还是得装elfutils-libelf-devel

上网搜一下,发现这个软件真不好找。通过rpmfind.net,找到了该文件,但是下载链接貌似挂掉了,发现是ftp的,用FileZilla连接该服务器,顺着路径走找到了我们需要的安装包。

ftp://195.220.108.108/linux/centos/5.11/os/x86_64/CentOS/elfutils-libelf-devel-static-0.137-3.el5.x86_64.rpm

ftp连接这个IP。

路径遍历得:

于是发现了我选中的三个傻逼三兄弟。别问我为什么知道要下这三个,我才不会告诉你,那是我眼神不好,没看清要下的东西,结果下错了,233333.

随后就开始安装,由于在之前搜索的时候瞄到了一个链接,告诉我,这里面的elfutils-libelf-develelfutils-libelf-devel-static是相互依赖的,要这么装。

sudo rpm -ivh elfutils-libelf-devel-static-0.137-3.el5.x86_64.rpm elfutils-libelf-devel-0.137-3.el5.x86_64.rpm
error: Failed dependencies:
    elfutils-libelf-x86_64 = 0.137-3.el5 is needed by elfutils-libelf-devel-0.137-3.el5.x86_64

结果,我装的时候又坑了。特么他们还依赖着elfutils-libelf-0.137-3.el5.x86_64.rpm呢。还好刚才机(meng)智(bi)的下了这个包。一起装了应该就可以了吧。

这时候坑2的危害发挥了出来

sudo rpm -ivh  elfutils-libelf-devel-static-0.137-3.el5.x86_64.rpm elfutils-libelf-devel-0.137-3.el5.x86_64.rpm elfutils-libelf-0.137-3.el5.x86_64.rpm
root's password:
warning: elfutils-libelf-devel-static-0.137-3.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID e8562897
Preparing...                ########################################### [100%]
    file /usr/lib64/libelf.so.1 from install of elfutils-libelf-0.137-3.el5.x86_64 conflicts with file from package libelf1-0.152-4.7.86.x86_64

当初装的libelf1-0.152带来的libelf.so.1和我们现在装的玩意有冲突,查看下这个文件,发现是个链接,暴力点,把这个包删了吧。

ls -l /usr/lib64/libelf.so.1

这时候再装就没问题了。

此时再去重新给libdwarf生成一个Makefile文件,并给出配置。

./configure
checking elf.h usability... yes
checking elf.h presence... yes
checking for elf.h... yes
checking libelf.h usability... yes
checking libelf.h presence... yes
checking for libelf.h... yes

这下子头文件齐备了。就是顺风顺水的编译,安装了

make dd
sudo cp dwarfdump/dwarfdump /usr/local/bin
sudo cp dwarfdump/dwarfdump.conf /usr/local/lib
sudo cp libdwarf/libdwarf.a /usr/local/lib

这下子就有了dwarfdump,随后进行dwarf调试文件的制作。

cd volatility/tools/linux
make

0x03 获取符号表

还是去/boot下找

0x04 正式制作profile

sudo zip volatility/plugins/overlays/linux/SLES11SP2.zip tools/linux/module.dwarf /boot/System.map-3.0.13-0.27-default

得到我们要的profile SLES11SP2.zip

0x05 总结

这个SLES真是太多坑,真不好用,还是我ubuntu大法好,apt拯救世界!此处纯粹是我的碎碎念。。。

最后将此文献给还在奋斗在SLES上的小伙伴,以及对volatity保持关注的小伙伴,最后自己留个文档以后再碰到这事可以查阅。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容