简单记录一下在Termux上装metaspolit framework的记录

安装过程参考了Hax4us的一键脚本(link),基本上是手动操作的。

安装Ruby

之前看别人的安装记录需要Ruby 2.x系列,可能6.0.x的早期版本需要?看了一下目前最新的6.1.19版本里面写的.ruby-version是需要3.0.2,刚巧Termux官方源自带的Ruby就是3.0.2版本,或许可以不用rbenv或者rvm

其实之前尝试过用rvm3.0.3版本,然后rvm找不到预编译二进制,只能下源码编译,然后总是在一个叫ppoll64之类的函数那里报错,似乎是和Android API 28什么的有关系,不懂于是没仔细看。

总之先把依赖装好,一般来说用Termux官方源的就没啥问题:

apt install -y libiconv zlib autoconf bison clang coreutils curl findutils git apr apr-util libffi libgmp libpcap postgresql readline libsqlite openssl libtool libxml2 libxslt pkg-config wget make ruby libgrpc termux-tools ncurses-utils ncurses unzip

和脚本中的区别:这大哥写了两个ncurses,我给去掉了一个;同时他自己维护着一个TermuxBlack的repo,里面有2.x版本的Ruby,他的脚本用的是这个旧版的。但由于我们安装的是当前(2021-12-14)最新的metasploit framework,所以用Termux自带的Ruby就可以。

下载MSF源码包

不知道用git clone会不会有什么区别/问题,我是下载的GitHub release里面的6.1.19.tar.gz压缩包。直接tar xf 6.1.19.tar.gz随便解压到哪里都可以(当然得有写入权限),我是放在Termux的家目录了。

Gems、Bundler、和一些什么配置

首先进入到我们刚才解压出来的那个目录,以我为例是~/metasploit-framework-6.1.19/

参考脚本,更新rubygems(虽然我不知道这是为了更新什么hhhhh)

gem install --verbose rubygems-update

update_rubygems

然后安装bundler:

gem install --verbose bundler

可能是为了节约空间?原本脚本里的gem install都加了--no-document的开关,俺觉得无所谓…就把文档也默认装了。

之前装rb的时候看到说查阅Ruby文档似乎要用到一个叫ri的工具,应该是Ruby自带的,俺还没用过()

然后bundle install所有的Gems,记得先配置一下用原生库不然会有问题:

bundle config build.nokogiri --use-system-libraries

bundle install -j4

这里的Job数似乎也可以根据cpu性能来调,我这边是1个prime、3个gold、4个silver的高通电子垃圾,然后我擅自觉得跑四个job可能效率比较高,于是就-j4了。

反正也没做过性能对比,差不多就行了()手机性能也就那样()

调整MSF里面DNS解析之类的东西

因为我们是Termux环境,没有proot,也没有chroot,同时也不遵循FHS,所以我们要自己把$msf/lib/net/dns/resolver.rb里面的/etc/resolv.conf替换成$PREFIX/etc/resolv.conf,这里就不提供命令了,自己拿文件编辑器去改就好了。

下面两个命令根据我粗浅的分析,一个是让Termux可以正确识别msf脚本的shebang,一个是处理ELF文件、去掉不支持的section和动态入口点,避免Android Linker (API 24)报warning(参考termux-elf-cleaner)。

find ~/metasploit-framework-6.1.19 -type f -executable -print0 | xargs -0 -r termux-fix-shebang

(上面的命令记得自己换掉自己的目录)

find "$PREFIX"/lib/ruby/gems -type f -iname \*.so -print0 | xargs -0 -r termux-elf-cleaner

一般来说到这里就装完了

没报错的话bundle install打印出的最后几行大概类似这样:

Using metasploit-framework 6.1.19 from source at `.`

Bundle complete! 15 Gemfile dependencies, 193 gems now installed.

Use `bundle info [gemname]` to see where a bundled gem is installed.

然后就可以直接./msfconsole,接下来就是看各种好看的banner(?)

因为我们也装了postgresql,理论上msfdb也可以用,但…毕竟我连MSF都还没用明白,数据库暂时就先放一放好了。