0x01 前言

笔者很喜欢Xerosploit这个工具 奈何其并不支持MacOS 也就意味着日常使用都需要到虚拟机里面去运行 很是麻烦 仔细看了一下Xero的代码 主要集成bettercap和nmap这两个项目(都支持MacOS)其代码并不复杂 就算自己基于MacOS重写一个也不是什么难事 但是怕喷子们骂抄袭嘛 故决定直接移植算了(工程量并不亚于重写。)

0x02 代码分析/修改

Github下载代码后通过tree命令可以看到其代码架构如下:

├── LICENSE
├── Makefile
├── README.md         
├── banner.py         
├── debian             
│   ├── changelog
│   ├── compat
│   ├── control
│   ├── copyright
│   ├── rules
│   └── source
├── install.py
├── run.sh
├── tools
│   ├── bettercap
│   ├── files
│   └── log
└── xerosploit.py

(为避免篇幅过长三级目录被笔者删除了)

核心文件其实就两个install.py以及xerosploit.py 按照官方说明 需要依次执行:

git clone https://github.com/LionSec/xerosploit
cd xerosploit && sudo python install.py
sudo xerosploit

很明显 需要先修改安装文件install.py

0x02_01 安装文件install.py

由于代码篇幅并不长 笔者就直接贴上来了。

if not os.geteuid() == 0:
    sys.exit("""\033[1;91m\n[!] Xerosploit installer must be run as root. ¯\_(ツ)_/¯\n\033[1;m""")

print(""" \033[1;36m
┌══════════════════════════════════════════════════════════════┐
█                                                              █
█                     Xerosploit Installer                     █
█                                                              █
└══════════════════════════════════════════════════════════════┘     \033[1;m""")

def main():

    print("\033[1;34m\n[++] Please choose your operating system.\033[1;m")

    print("""
1) Ubuntu / Kali linux / Others
2) Parrot OS
""")
    system0 = raw_input(">>> ")
    if system0 == "1":
        print("\033[1;34m\n[++] Installing Xerosploit ... \033[1;m")
        install = os.system("apt-get update && apt-get install -y nmap hping3 build-essential python-pip ruby-dev git libpcap-dev libgmp3-dev && pip install tabulate terminaltables")

        install1 = os.system("""cd tools/bettercap/ && gem build bettercap.* && sudo gem install xettercap-* && rm xettercap-* && cd ../../ && mkdir -p /opt/xerosploit && cp -R tools/ /opt/xerosploit/ && cp xerosploit.py /opt/xerosploit/xerosploit.py && cp banner.py /opt/xerosploit/banner.py && cp run.sh /usr/bin/xerosploit && chmod +x /usr/bin/xerosploit && tput setaf 34; echo "Xerosploit has been sucessfuly instaled. Execute 'xerosploit' in your terminal." """) 
    elif system0 == "2":
        print("\033[1;34m\n[++] Installing Xerosploit ... \033[1;m")

        bet_un = os.system("apt-get remove bettercap") # Remove bettercap to avoid some problems . Installed by default with apt-get .
        bet_re_ins = os.system("gem install bettercap") # Reinstall bettercap with gem.

        install = os.system("apt-get update && apt-get install -y nmap hping3 ruby-dev git libpcap-dev libgmp3-dev python-tabulate python-terminaltables")

        install1 = os.system("""cd tools/bettercap/ && gem build bettercap.* && sudo gem install xettercap-* && rm xettercap-* && cd ../../ && mkdir -p /opt/xerosploit && cp -R tools/ /opt/xerosploit/ && cp xerosploit.py /opt/xerosploit/xerosploit.py && cp banner.py /opt/xerosploit/banner.py && cp run.sh /usr/bin/xerosploit && chmod +x /usr/bin/xerosploit && tput setaf 34; echo "Xerosploit has been sucessfuly instaled. Execute 'xerosploit' in your terminal." """)


    else:
        print("Please select the option 1 or 2")
        main()
main()

结合注释可以看到Xerosploit之所以在安装时需要区分Parrot OS和其他系统是因为Parrot OS自带的bettercap存在一定问题 故多了一步卸载bettercap的过程 其他并无异。

通过apt-get安装的工具依赖组件如下:

nmap
hping3
build-essential
ruby-dev
libpcap-dev
libgmp3-dev
tabulate
terminaltables

其中nmap可以通过ruby(MacOSy内置)的brew来安装 命令如下:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null

brew install nmap

tabulateterminaltables均为Python的模块 可通过pip安装

pip install tabulate terminaltables

需要注意的是由于Kali等系统上自带了driftnet 而MacOS上并没有 不过我们可以通过macports来安装

sudo port install driftnet

请自备macports 自行安装driftnet!!!

其他文档均为bttercap所需调用的组件 由于bttercap本身支持MacOS 这些组件在编译

修改后的命令

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null && brew install nmap && pip install tabulate terminaltables

接下来的编译bttercap:

cd tools/bettercap/ && 
gem build bettercap.* && 
sudo gem install xettercap-* && 
rm xettercap-* && 
cd ../../ && 
mkdir -p /opt/xerosploit && 
cp -R tools/ /opt/xerosploit/ && 
cp xerosploit.py /opt/xerosploit/xerosploit.py && 
cp banner.py /opt/xerosploit/banner.py && 
cp run.sh /usr/bin/xerosploit && 
chmod +x /usr/bin/xerosploit && 
tput setaf 34; echo "Xerosploit has been sucessfuly instaled. Execute 'xerosploit' in your terminal.

这里面主要存在两个问题 第一是MacOS往/opt/目录里面写文件需要root文件 而kali等不需要 所以涉及到的命令都需要加sudo提升权限再执行; 第二是MacOS禁止用户向/usr/bin目录里写文件 root权限也不行;解决方案:(此处是为了终端直接输入xerosploit即可运行程序 那么可以将run.sh文件复制到其他目录去 在通过终端配置文件索引到该目录即可)

修改后的命令:

cd tools/bettercap/ && gem build bettercap.* && sudo gem install xettercap-* && rm xettercap-* && cd ../../ && sudo mkdir -p /opt/xerosploit && sudo cp -R tools/ /opt/xerosploit/ && sudo cp xerosploit.py /opt/xerosploit/xerosploit.py && sudo cp banner.py /opt/xerosploit/banner.py && sudo mkdir /opt/xerosploit/bin && sudo cp run.sh /opt/xerosploit/bin && chmod +x /opt/xerosploit/bin && sudo mkdir /opt/xerosploit/tools && sudo cp -R tools/* /opt/xerosploit/tools/

这里需要手动将代码alias xerosploit='python /opt/xerosploit/xerosploit.py添加到终端配置文件中

nano ~/.bash_profile

添加代码:`alias xerosploit='python /opt/xerosploit/xerosploit.py``

如果是iTerm2用户需编辑~/.zshrc文件(如笔者)

修改完成后程序即可正常安装。

0x02_02 主程序xerosploit.py

0x02_02_01 home()函数

环境问题修改完后发现程序运行不正常 很多信息无法显示

直接看到对应的代码(86-89)

table = [["IP Address","MAC Address","Gateway","Iface","Hostname"],
                     ["","","","",""],
                     [n_ip,n_mac.upper(),gateway,up_interface,n_host]]
            print (tabulate(table, stralign="center",tablefmt="fancy_grid",headers="firstrow"))

找到对应的变量的赋值点

n_name = os.popen('iwgetid -r').read() # Get wireless network name
            n_mac = os.popen("ip addr | grep 'state UP' -A1 | tail -n1 | awk '{print $2}' | cut -f1  -d'/'").read() # Get network mac
            n_ip = os.popen("hostname -I").read() # Local IP address
            n_host = os.popen("hostname").read() # hostname
            gateway = os.popen("ip route show | grep -i 'default via'| awk '{print $3 }'").read()

发现这些命令在MacOS上并不能运行:

修改:
内网ip(n_ip):

ifconfig|grep 'inet '|grep -v '127.0'|xargs|awk -F '[ :]' '{print $2}'

Mac地址(n_mac):

ifconfig en0|grep "ether"|xargs|awk -F '[ ]' '{print $2}'

网关(gateway):

netstat -nr| grep 'default' | awk '{print $2}'|xargs|awk -F '[\n]' '{print $1}'|xargs|awk -F '[ ]' '{print $1}'

当前WIFI的SSID(n_name):

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I |grep "SSID"|xargs|awk -F '[ ]' '{print $4}'

(MacOS只能通过自带的airport来操作wifi python无任何第三方库可获取到ssid)

修改后:

0x02_02_02 program0()函数

正常scan后出现如下情况:

定位到命令:

bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

作用是开启ipv4报文路由转发 然而MacOS并没有/proc/sys/net/ipv4/ip_forward这个文件

另一条需要修改的命令

ip addr | grep 'state UP' -A1 | tail -n1 | awk '{print $2}' | cut -f1  -d'/'

作用是获取自己的mac地址

修改:

sysctl -w net.inet.ip.forwarding=1

(查看指令sudo sysctl -a | grep forward

获取自己的mac地址

ifconfig en0|grep "ether"|xargs|awk -F '[ ]' '{print $2}'

修改后:

0x02_02_03 其他修改

大致上都是权限不够的给权限即可。

原版Xerosploit里对于国内醉鸡肋的功能就是yplay(播放youtube的视频)了 故笔者将其修改为youkuPlay了 插入链接可播放优酷的视频。

0x03 效果展示

注入html文件:

0x04 成品:

https://github.com/TheKingOfDuck/xerosploit

安装前务必先自己手动安装安装 macports并通过

sudo port install driftnet

安装driftnet图片捕获工具

源链接

Hacking more

...