Polymorph:支持几乎所有现有协议的实时网络数据包操作框架

2018-09-25 134465人围观 ,发现 16 个不明物体 工具

Polymorph是一个用Python3编写的框架,其允许实时修改网络数据包,为用户提供对数据包内容的最大化控制。该框架旨在实现任何现有协议(包括没有公共规范的私有协议)的网络数据包的实时修改。除此之外,其主要目的之一是为用户提供对数据包内容的最大化控制,并能够对信息执行复杂处理。

Polymorph.png

安装

项目地址:https://github.com/shramos/polymorph

在Windows上安装

Polymorph可以在Windows操作系统上被安装,若要正常运行,需要以下必备组件:

Python3(添加到Path),URL:https://www.python.org/downloads/

Wireshark添加到Path),URL:https://www.wireshark.org/download.html

Visual C++ Build Tools,URL:https://www.visualstudio.com/en/thank-you-downloading-visual-studio/?sku=BuildToolsrel=15

Winpcap(如果没和wireshark一起安装)。URL:https://www.winpcap.org/install/default.htm

一旦依赖安装好,你只需要打开控制台执行以下命令:

pip install --process -dependency -links polymorph

注意,必须要以管理员身份打开控制台使用polymorph。

在Linux上下载和安装

Polymorph也用于在Linux操作系统(如Kali Linux)上安装和运行。 在安装框架之前,必须安装以下依赖:

apt-get install build-essential python-dev libnetfilter-queue-dev tshark tcpdump python3-pip wireshark

在安装好依赖之后,可以使用Python pip通过以下方式安装框架本身:

pip3 install polymorph

Docker环境

从项目根目录:

docker-compose up -d

任何机器访问:

docker exec -ti [polymorph | alice | bob] bash

如何使用Polymorph

Polymorph框架由两个主要界面组成:

Polymorph:它由一个命令控制台界面组成。也是主界面,建议将其用于复杂的任务,例如修改复杂协议,修改字段中的类型或在无需规范的情况下修改协议。

Phcli:它是Polymorph框架的命令行界面。建议用于修改简单协议或执行先前生成的模板等任务。

使用Polymorph主界面

参照:https://github.com/shramos/polymorph/blob/master/doc/whitepaper/whitepaper_english.pdf

使用Phcli

解析几乎任何网络协议

现在让我们看看Polymorph如何解析不同网络协议的字段,如果我们想要实时修改这些字段,那么引用它们将会很有用。你可以尝试任何想到的协议。

HTTP协议,仅显示HTTP层和属于它的字段。

# phcli --protocol http --show-fields

显示完整的HTTP数据包及其所属的字段。

# phcli --protocol http --show-packet

你还可以对网络数据包进行过滤,例如,你可以仅显示包含特定字符串或数字的数据包。

# phcli -p dns --show-fields --in-pkt "phrack"

# phcli -p icmp --show-packet --in-pkt "84" --type "int"

过滤也可以这样用:

# phcli -p http --show-packet --in-pkt "phrack;GET;issues"

# phcli -p icmp --show-packet --in-pkt "012345;84" --type "str;int"

你可以按协议包含的字段名称进行筛选,但要注意的是,此名称是Polymorph在分析网络数据包时提供的名称。

# phcli -p icmp --show-packet --field "chksum"

# phcli -p mqtt --show-packet --field "topic;msg"

实时修改网络数据包

知道了Polymorph中显示的要修改的网络数据包,我们将要实时修改它。让我们先从一些例子开始。上一节中介绍的所有过滤器也可以在此处应用。

该例子将通过在request_uri字段中插入值/issues/61/1.html来修改包含字符串/issues/40/1.html及GET的数据包。 因此,当用户访问http://phrack.org/issues/40/1.html时,浏览器将访问http://phrack.org/issues/61/1.html

# phcli -p http --field "request_uri" --value "/issues/61/1.html" --in-pkt "/issues/40/1.html;GET"

如果我们处于机器和网关之间,则上一个命令会起作用。

# phcli --spoof arp --target 192.168.1.20 --gateway 192.168.1.1 -p http -f "request_uri" -v "/issues/61/1.html" --in-pkt "/issues/40/1.html;GET"

或者也许用户想在localhost上尝试它,因为他只需要修改Polymorph默认建立的iptables规则。

# phcli -p http -f "request_uri" -v "/issues/61/1.html" --in-pkt "/issues/40/1.html;GET" -ipt "iptables -A OUTPUT -j NFQUEUE --queue-num 1"

用户可能想要修改未被Polymorph解释为字段的网络分组的一组字节的情况。为此,你可以使用“切分”直接访问数据包字节。(如果在localhost中尝试,请记住添加iptables规则)

# phcli -p icmp --bytes "50:55" --value "hello" --in-pkt "012345"

# phcli -p icmp -b "\-6:\-1" --value "hello" --in-pkt "012345"

# phcli -p tcp -b "\-54:\-20" -v '"><script>alert("hacked")</script>' --in-pkt "</html>"

实时添加复杂处理

在某些情况下,PHCLI选项可能不足以执行某个操作。为此,框架实现了条件函数的概念,条件函数是用Python编写的函数,它将在实时拦截的网络数据包。

条件函数具有以下格式:

def precondition(packet):

    # Processing on the packet intercepted in real time

    return packet

举个简单的例子,我们将屏蔽我们拦截的数据包的原始字节。(如果在localhost中尝试,请记住添加iptables规则)

def execution(packet):

    print(packet.get_payload())

    return None

# phcli -p icmp --executions execution.py -v "None"

*参考来源:kitsploit,Covfefe编译,转载请注明来自FreeBuf.COM

这些评论亮了

  • temp@temp.temp 回复
    发py没有什么意义,再说本身py这种这类,除非脚本编写都,连基本安全常识都没有,没有开发者应用的代码条理能力,或是py解释器有问题,不然出现漏洞的可能性很低,,freebuf是漏洞,黑客类的网站,不是初级应用网,更不是脚本网,freebuf应该关注的是二进制类的语言和漏洞类的,这才是本质的,本质除非技术突大变革,不然几十年都可以,而脚本这种,今天变,明天变, 虽然短时间内吸引大家人流快速完成需要的任务,快速看到钱,但是长久不了,变的太快,所以离开一段时间后,就会和IT业脱节
    )16( 亮了
  • ffff 回复
    @ temp@temp.temp 喝多了?
    )6( 亮了
发表评论

已有 16 条评论

  • temp@temp.temp  2018-09-25 回复 1楼

    发py没有什么意义,再说本身py这种这类,除非脚本编写都,连基本安全常识都没有,没有开发者应用的代码条理能力,或是py解释器有问题,不然出现漏洞的可能性很低,,freebuf是漏洞,黑客类的网站,不是初级应用网,更不是脚本网,freebuf应该关注的是二进制类的语言和漏洞类的,这才是本质的,本质除非技术突大变革,不然几十年都可以,而脚本这种,今天变,明天变, 虽然短时间内吸引大家人流快速完成需要的任务,快速看到钱,但是长久不了,变的太快,所以离开一段时间后,就会和IT业脱节

    • a.tm.k  (3级) 亚拉那一卡  2018-09-26 回复

      @ temp@temp.temp freebuf 当初的全称是 Freebuf 黑客与极客, 你可以问问客服, 这个名字他们是不是抛弃了, 改成 freebuf 黑客与漏洞了

      • 隐于世  2018-09-28 回复

        @ a.tm.k  太久了,是记的刚开始有写过极客什么的,现在已经完全没有极客的影子了,很少有这类的文章,不管哪种, 一个脚本的东西,不管是黑客,极客,开发,编程,等等,都扯不上任何关系,太过低级了点,再说py这种作者连基础常识都不会,弄出来的语言, 本身就是很大问题的, 比如语言的排版问题,用空格或Tab来对齐,,要知道在英文排版环境中,大多是非对称的, 中文是对称的(一个空格占半个汉字宽度),不同的字体对空格显示处理方式是不同的,太容易弄错了,而网页或其它富文本环境下,对于空格,换行,甚至标点都会特殊照顾,你在发个贴子,别人拿去大多是不能直接运行的, 而其它语言,都有封号,begin/end或{}等来划段, 无论排版如何乱,照样可以执行
        另外,py版本兼容问题很严重,本身很多重点功能,py实际还是调用dll/so的,不然做为脚本,代码太臃肿,太乱,解释执行时效率太低, py得到大多人使用,因为太多是初级人员,没有根底的假开发者在使用,特别是现在硅谷被印度人垄断了,虽然有英文底子,这些入门快.但印度人从小环境不行,没有长期积累的经验基础, 而国外大的IT公司,现在不搞技术了,都是搞金融了(推出一个产品,目的是推高股市),主管也不是IT出身,美国人之类现在也不愿意干费脑子的技术活(比如喜欢追星..),没人了,所以才让印度半桶水的占领硅谷 不光是py,还有C#等都有问题, C#是字节码,和 VB同一档次,实际比VB的费资源的多,想想以前,32M内存,跑win98(精简下来Win98是10 多M的桌面环境,正常安装也就500M),128-256m跑Winxp, 可是Win8开始,整个内核差不多是C#的了, 装个系统,需要10-30G的空间还不好用,本质原因是, 硅谷IT的人都已经是半桶水了

    • 库克  2018-09-26 回复
  • af  2018-09-25 回复 2楼

    成绩不好 我用python,不懂计算机 基础,我用python。

  • 等级保护专员  2018-09-26 回复 3楼
  • 看不下去了  2018-09-28 回复 4楼

    楼上一堆喷子请教出Gayhub帐号,看看你们是不是用汇编语言干活的?

    • 隐于世  2018-09-28 回复

      @ 看不下去了 大多数开发人员,并不会把自己的代码放到github中的, 高工作量,密集开发的,需要高效率,所以代码更多可能是直接目录拷一下方式备份一份,等这个子集弄完了,稳定了,才会提交到公司的代码库中(不管是git的还是svn的,对于代码的处理方式,都不是很好,容灾性很差,全是差异补丁方式,如果中间某个文件损坏丢失等,很可能代码全错乱了),另外github上的代码, 除了国外大公司开源的几个项目外,大多是个人写的, 你肯定还没工作或是工作经验不多, 正式开发,通常工作量很重,代码要写,运行环境(机房,系统环境,运营环境)都要维护,因为只有开发的才清楚需要哪些,如果去写文档,那还不如写代码快,还不如自己动手快,所以,文档,也只是最外层类似模块接口说明这样的,代码块内部是没有文档的,注释也只是给自己看的,太久了怕自己记错了,又不是写系统Boot层,或是海量数据时高度优化(通常是CPU专用指针上,比如YUV转RGB,或旋转或缩放,用libyuv这个库,0.1ms完成1080p的处理,而用其它语言,哪怕是C,做小数乘法来换算yuv,估计要3秒以上才能完成1080p大小的数据转换), 或是极端算法层, 一般不需要用汇编, 正常来说,不管什么语言,只要支持指针的原生编译语言, 效率都差不多,算法在计算量分布时,安排合理,效率是非常高的, 举个非算法的例子, 假设订单号需要保证唯一性,每次从全局服务器申请,肯定傻子了,每台服务器定一个死标号,比如ABC+日期时间+秒内顺序号 这样,就不可能重复,还能根据流水号,确认是哪个服务器哪个时间出问题等,全国铁路售票,总共就没多少班次,大不了每个班次一台服役器,放在每个铁路局, 大量购票都是集中一单车上的,跨车次购买是少数的,所以跨车次交叉订单是少量的,通常最多3个车,可每个车总共才几个座位,又不是1秒内全部购买车,通常集中在1-3天内购买的,所以全国下来,根本不需要多少投入,绝对高效的, 只是接活的那家公司,并不是做技术的,心里想的是…,所以才会做成ms frontpage档次, 电话交换机,银行卡交易(卡号归属地,你的钱的主数据库在你开户行的地下室数据库中,再加全国异地城市容灾备份),关键是设计的合理性,是否正确,而并不需要用到汇编这样底层语言

  • 隐于世  2018-09-28 回复 5楼

    (前面少打了几个字,补一下) 电话交换机,银行卡交易->程控电话交换机,银行卡交易都是这样设计的 ,当年计算机资源非常少的情况下,就能设计出海量用户,稳定健全的系统,原因是设计的合理性,而现在电脑网络等架构,很多是新手弄的,没有这样思想,所以才…

  • 隐于世  2018-09-28 回复 6楼

    git/svn 这种差异补丁方式来存档代码, 本身,效率非常低,特别是海量代码时,你需要全部提取某天的代码,非常慢的, 补丁方式,适合短期代码,这样比如改个bug,但客户那儿跑起来发现更差,回到原来的点位重新,但代码模块稳定后,这个模块,就干干净净的打包备份一下, git/svn可以回滚到任意一天,任意一个字节的修改上, 现实中,很少要这么复杂的折腾

  • guest  2018-09-30 回复 7楼

    在linux下是基于NFQUEUE来劫持报文,在windows下对应的组件是什么?

取消
Loading...
css.php