Metasploit Framework on Termux on Android
简单记录一下在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
。
其实之前尝试过用rvm
装3.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都还没用明白,数据库暂时就先放一放好了。