Binmap -- 一个系统扫描仪
2020-01-28 17:35:39 Author: mp.weixin.qq.com(查看原文) 阅读量:226 收藏

Binmap是一个系统扫描程序;它获取一个系统或系统映像,并遍历所有文件,查找程序和库,并收集各种信息,例如依赖项,符号等。

它支持ELF和PE格式。

安装
Debian / Ubuntu
需要以下软件包:

cmake
g  
libboost-python1.55-dev
libboost-system1.55-dev
libboost-program-options1.55-dev
libboost-filesystem1.55-dev
libboost-regex1.55-dev
libboost-serialization1.55-dev
zlib1g-dev
libssl开发
libelfg0-dev
然后运行:

$ mkdir _build
$ cd _build
$ cmake ..
$使
最终以root身份:

$进行安装
视窗
您需要安装并准备好Visual Studio。然后:
安装cmake(http://www.cmake.org/cmake/resources/software.html),并确保它在您的路径中。
获取zlib(http://www.zlib.net/)
获得增强(获取预编译的二进制文件http://boost.teeks99.com/)
然后运行以下内容:

$ cmake -DBoost_DEBUG = ON -G“ Visual Studio 12” -DBoost_USE_STATIC_LIBS = ON -DBOOST_ROOT = D:\ Programming \ Libraries \ boost_1_55_0 -DBOOST_LIBRARYDIR = D:\ Programming \ Libraries \ boost_1_55_0 \ lib32-msvc-12.0-DZLI \ Programming \ Libraries \ zlib-1.2.8 -DZLIB_INCLUDE_DIR = D:\ Programming \ Libraries \ zlib-1.2.8用法
使用binmap是一个两步过程:

扫描目录,例如:

$ ./binmap scan -v1 / usr / local -o local.dat
或者,如果您要扫描提取的文件系统,并且仅包含对此chroot的引用,则:

$ ./binmap scan -v1 --chroot ./extracted_fs -o local.dat
这将创建一个数据库,其中包含有关此目录中二进制文件的信息。

将数据库转储为点格式:

$ ./binmap视图-i local.dat -o local.dot
或使用下面描述的Python API检查数据库。

Python API
该blobmap模块以只读方式访问binmap数据库的内容:
>>>导入blobmap
首先要做的是加载数据库:

>>> blobs = blobmap.BlobMap('local.dat')
A BlobMap是按时间顺序排列的有序Blob容器,最后一个是最新条目:
>>> blob = blobs.last()
Blob本质上是有向图,其中的节点是二进制文件,边表示使用依赖关系-像该程序一样,该程序也依赖于此库。可以按路径建立索引,如下所示:

>>> clang_metadata = blob ['/ usr / local / bin / clang']
>>>打印(str(clang_metadata))
铛:8fcffc4a97cd4aaa1a32938a9e95d3b253476121(13223导出的符号)(1303导入的符号)(1强化功能)
可以独立访问每个节点的元数据:

>>> clang_metadata.hash
8fcffc4a97cd4aaa1a32938a9e95d3b253476121
>>> clang_metadata.hardening_features
{'加强'}
>>>帮助(clang_metadata)
[...]
可以使用successors和predecessors方法浏览图形:

>>> blob.successors('/ usr / local / bin / clang')
{'/lib/x86_64-linux-gnu/libtinfo.so.5',
'/lib/x86_64-linux-gnu/libz.so.1',
'/lib32/libc.so.6',
...}
也可以在两个Blob之间进行区分,以收集有关系统状态变化的信息:

>>>从blobmap导入BlobMap为BM
>>> b = BM('mynewprog.dat')
>>> g1,g0 = [b.keys()中k的[b [k]] [-2:]
>>>差异= g0.diff(g1)
>>>差异添加
{'/.../libmy1.so'}
>>>差异已删除
{'/.../libmy0.so'}
>>>差异更新
{'/.../myprog'}
测试中
一个简单的测试是扫描自己:

$ ./binmap scan -v2 ./binmap
要么:

$ binmap.exe扫描-v2 binmap.exe
对于linux用户,请运行CTests:

$做测试
交叉编译

文章来源:

https://github.com/quarkslab/binmap

推荐文章++++

*sicklepoc扫描开源

*使用Python扫描路由ip

*btScan 批量漏洞扫描框架


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMjE3ODU3MQ==&mid=2650459569&idx=4&sn=d58ab7973aad35fb6892ffb950f71395&chksm=83bba855b4cc2143e6a43d5656ecc71a4b675f3c6f170f5d2514e612eea29f1e5be209bf6454#rd
如有侵权请联系:admin#unsafe.sh