首页
社区
课程
招聘
[原创]如何阅读只包含特殊符号的powershell脚本
发表于: 2022-2-21 15:39 20975

[原创]如何阅读只包含特殊符号的powershell脚本

2022-2-21 15:39
20975

参考文章:Understanding Invoke- “X” Special Character Encoding

首先根据分号将文档分为两部分,先看第一部分的内容:

可以根据大括号分一下行,并且先去掉前面的'[%' |%

在powershell中,可以使用${变量名}的格式定义任意变量。

先看第一行,$()是一个空的子表达式,等价于$null,如果在前面添加上一个+,就会发生格式转换,整个值变成0。所以第一行定义了一个变量${[[[[[[[},其值为0。

第二行定义了另一个变量${[[[[[[[[},它的值和${[[[[[[[}一样,也是0。之后通过递增符号不断执行+1操作,从而用特殊符号表达了0~9十个数字。

我们可以把这里表达数字的十个变量替换成对应的数字了,此时上述代码的后三行变成了(去除了多余的空格):

然后看倒数第三行,@{}是一个空的哈希表,如果把它放在子表达式符号$()中,并转换为字符串,即"$(@{})",就会得到字符串“System.Collections.Hashtable”,可以按照下面的索引做替换了

也就是说第7个索引是“C”,第19个索引是“H”,第20个索引是“a”。

$?是一个自动变量,表示上一句指令的执行情况,如果执行成功,就表示True。所以它的第1个索引就是”r”。

由此得到变量${[[[[[},值为[CHar]

根据上一小节的替换规则,可以得到倒数第二行等号右侧的值为"".inSert

Insert()是System.String中的一个方法名,原型为:

使用

就可以得到上述一个方法对象。

倒数第二行做了一个格式转换,将方法对象转换成对应的字符串表达:

至此,就可以对最后一行做一个替换,得到变量${[[[[[[[},值为iex

目前得到的完整替换规则:

可以使用上述规则替换文档下半部分的脚本了。截取其中的部分内容(“CHar”换成了“Char”,不影响最终结果):

可以把iex后面的部分复制出来,用Notepad++做一下处理,去除[Char],删除空格,把+替换成空格。结果截取:

然后使用CyberChef的From CharCode做一下转换,得到脚本:

图片描述

到这里其实已经得到了正常的Powershell脚本了。

还可以对其中的base64编码字符串进行一个解码,并根据代码进行一个异或处理,得到:

图片描述

可以看到其中的C2地址42.192.152.182

('[%'  |%  {  ${[[[[[[[}  =  +  $()  }{  ${[[[[[[[[}=${[[[[[[[}}  {${[[[[[[[[[[[}=  ++  ${[[[[[[[}  }{${[[[}  =  ++${[[[[[[[}  }  {${[[[[[[}  =  ++  ${[[[[[[[}  }{${[[}  =++${[[[[[[[}}  {  ${[[[[[[[[[[[[}  =++  ${[[[[[[[}  }{${[[[[[[[[[[}=  ++  ${[[[[[[[}  }{${[[[[[[[[[}=++${[[[[[[[}  }  {${[[[[}  =  ++  ${[[[[[[[}}  {${[}  =  ++  ${[[[[[[[}  }  {${[[[[[}  =  "["+"$(  @{  })"[  ${[[[[[[[[[}]  +"$(@{  })""${[[[[[[[[[[[}"  +"${[}"  ]+"$(  @{  }  )  "["${[[[}"+"${[[[[[[[[}"]+  "$?  "[  ${[[[[[[[[[[[}  ]+  "]"  }{${[[[[[[[}  =  "".("$(@{}  )  "["${[[[[[[[[[[[}${[[}"]  +"$(@{})"["${[[[[[[[[[[[}${[[[[[[[[[[}"]+"$(@{}  )  "[  ${[[[[[[[[}  ]  +"$(@{  }  )"[  ${[[}]  +"$?"[  ${[[[[[[[[[[[}  ]  +  "$(@{  }  )  "[  ${[[[[[[}  ]  )  }  {${[[[[[[[}  ="$(  @{})"["${[[[[[[[[[[[}${[[}"]  +"$(  @{  }  )  "[${[[}  ]+"${[[[[[[[}"[  "${[[[}${[[[[[[[[[}"]  }  )  ;
('[%'  |%  {  ${[[[[[[[}  =  +  $()  }{  ${[[[[[[[[}=${[[[[[[[}}  {${[[[[[[[[[[[}=  ++  ${[[[[[[[}  }{${[[[}  =  ++${[[[[[[[}  }  {${[[[[[[}  =  ++  ${[[[[[[[}  }{${[[}  =++${[[[[[[[}}  {  ${[[[[[[[[[[[[}  =++  ${[[[[[[[}  }{${[[[[[[[[[[}=  ++  ${[[[[[[[}  }{${[[[[[[[[[}=++${[[[[[[[}  }  {${[[[[}  =  ++  ${[[[[[[[}}  {${[}  =  ++  ${[[[[[[[}  }  {${[[[[[}  =  "["+"$(  @{  })"[  ${[[[[[[[[[}]  +"$(@{  })""${[[[[[[[[[[[}"  +"${[}"  ]+"$(  @{  }  )  "["${[[[}"+"${[[[[[[[[}"]+  "$?  "[  ${[[[[[[[[[[[}  ]+  "]"  }{${[[[[[[[}  =  "".("$(@{}  )  "["${[[[[[[[[[[[}${[[}"]  +"$(@{})"["${[[[[[[[[[[[}${[[[[[[[[[[}"]+"$(@{}  )  "[  ${[[[[[[[[}  ]  +"$(@{  }  )"[  ${[[}]  +"$?"[  ${[[[[[[[[[[[}  ]  +  "$(@{  }  )  "[  ${[[[[[[}  ]  )  }  {${[[[[[[[}  ="$(  @{})"["${[[[[[[[[[[[}${[[}"]  +"$(  @{  }  )  "[${[[}  ]+"${[[[[[[[}"[  "${[[[}${[[[[[[[[[}"]  }  )  ;
{ ${[[[[[[[}        =   +  $()          } 
{ ${[[[[[[[[}       =   ${[[[[[[[}      }  # 0
{ ${[[[[[[[[[[[}    =   ++  ${[[[[[[[}  }  # 1
{ ${[[[}            =   ++${[[[[[[[}    }  # 2 
{ ${[[[[[[}         =   ++  ${[[[[[[[}  }  # 3
{ ${[[}             =   ++${[[[[[[[}    }  # 4 
{ ${[[[[[[[[[[[[}   =   ++  ${[[[[[[[}  }  # 5
{ ${[[[[[[[[[[}     =   ++  ${[[[[[[[}  }  # 6
{ ${[[[[[[[[[}      =   ++${[[[[[[[}    }  # 7 
{ ${[[[[}           =   ++  ${[[[[[[[}  }  # 8 
{ ${[}              =   ++  ${[[[[[[[}  }  # 9 
{ ${[[[[[}          =   "["+"$(  @{  })"[  ${[[[[[[[[[}]  +"$(@{  })""${[[[[[[[[[[[}"  +"${[}"  ]+"$(  @{  }  )  "["${[[[}"+"${[[[[[[[[}"]+  "$?  "[  ${[[[[[[[[[[[}  ]+  "]"  }
{ ${[[[[[[[}        =   "".("$(@{}  )  "["${[[[[[[[[[[[}${[[}"]  +"$(@{})"["${[[[[[[[[[[[}${[[[[[[[[[[}"]+"$(@{}  )  "[  ${[[[[[[[[}  ]  +"$(@{  }  )"[  ${[[}]  +"$?"[  ${[[[[[[[[[[[}  ]  +  "$(@{  }  )  "[  ${[[[[[[}  ]  )  } 
{ ${[[[[[[[}        =   "$(  @{})"["${[[[[[[[[[[[}${[[}"+"$(  @{  }  )  "[${[[}  ]+"${[[[[[[[}""${[[[}${[[[[[[[[[}"]  }
{ ${[[[[[[[}        =   +  $()          } 
{ ${[[[[[[[[}       =   ${[[[[[[[}      }  # 0
{ ${[[[[[[[[[[[}    =   ++  ${[[[[[[[}  }  # 1
{ ${[[[}            =   ++${[[[[[[[}    }  # 2 
{ ${[[[[[[}         =   ++  ${[[[[[[[}  }  # 3
{ ${[[}             =   ++${[[[[[[[}    }  # 4 
{ ${[[[[[[[[[[[[}   =   ++  ${[[[[[[[}  }  # 5
{ ${[[[[[[[[[[}     =   ++  ${[[[[[[[}  }  # 6
{ ${[[[[[[[[[}      =   ++${[[[[[[[}    }  # 7 
{ ${[[[[}           =   ++  ${[[[[[[[}  }  # 8 
{ ${[}              =   ++  ${[[[[[[[}  }  # 9 
{ ${[[[[[}          =   "["+"$(  @{  })"[  ${[[[[[[[[[}]  +"$(@{  })""${[[[[[[[[[[[}"  +"${[}"  ]+"$(  @{  }  )  "["${[[[}"+"${[[[[[[[[}"]+  "$?  "[  ${[[[[[[[[[[[}  ]+  "]"  }
{ ${[[[[[[[}        =   "".("$(@{}  )  "["${[[[[[[[[[[[}${[[}"]  +"$(@{})"["${[[[[[[[[[[[}${[[[[[[[[[[}"]+"$(@{}  )  "[  ${[[[[[[[[}  ]  +"$(@{  }  )"[  ${[[}]  +"$?"[  ${[[[[[[[[[[[}  ]  +  "$(@{  }  )  "[  ${[[[[[[}  ]  )  } 
{ ${[[[[[[[}        =   "$(  @{})"["${[[[[[[[[[[[}${[[}"+"$(  @{  }  )  "[${[[}  ]+"${[[[[[[[}""${[[[}${[[[[[[[[[}"]  }
 
 
 
{ ${[[[[[}          =   "["+"$(  @{  })"7+"$(@{  })""1"  +"9"  ]+"$(  @{  }  )  "["2"+"0"]+  "$?  "1  ]+  "]"  }
{ ${[[[[[[[}        =   "".("$(@{}  )  "["14"]  +"$(@{})"["16"]+"$(@{}  )  "[  0  ]  +"$(@{  }  )"[  4]  +"$?"[  1  ]  +  "$(@{  }  )  "[  3  ]  )  } 
{ ${[[[[[[[}        =   "$(  @{})"["14"+"$(  @{  }  )  "[4  ]+"${[[[[[[[}""27"]  }
{ ${[[[[[}          =   "["+"$(  @{  })"7+"$(@{  })""1"  +"9"  ]+"$(  @{  }  )  "["2"+"0"]+  "$?  "1  ]+  "]"  }

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
打赏 + 50.00雪花
打赏次数 1 雪花 + 50.00
 
赞赏  Editor   +50.00 2022/03/07 恭喜您获得“雪花”奖励,安全圈有你而精彩!
最新回复 (5)
雪    币: 864
活跃值: (5124)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
2022-2-25 16:18
0
雪    币: 6124
活跃值: (4721)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
3
和一个js脚本的混淆有异曲同工之妙。如果它把函数名字哈希了,那么还原也还原不出名字,只能看它的内容去猜测函数的功能了。
2022-2-26 17:58
0
雪    币: 5371
活跃值: (2995)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不错的分析
2022-2-28 09:06
0
雪    币: 2428
活跃值: (2597)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
找到iex就基本搞定了,可以把iex引用的那坨赋给一个变量,再把这个变量打印出来。让powershell自己打印就行了,不一定要用cyberchef。有好多脚本连iex都不混淆,挺搞笑的
2022-3-3 18:04
0
雪    币: 244
活跃值: (935)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
大家好好学习一番,说不定哪次ctf就来这种。
2022-3-7 18:11
1
游客
登录 | 注册 方可回帖
返回
//