Win2K系统几个攻击实例成败心得

时间:2023-02-01 03:54:55 作者:Wei 其他心得 收藏本文 下载本文

【导语】“Wei”通过精心收集,向本站投稿了3篇Win2K系统几个攻击实例成败心得,下面是小编精心整理后的Win2K系统几个攻击实例成败心得,仅供参考,大家一起来看看吧。

篇1:Win2K系统几个攻击实例成败心得(三)

002f0064006f006d00610069006e000102

0000070000000100

01001913f29278bf71eaff44492fb2f9ed05010001002a730d35666e44ffa4f37b29

011d882f0100

010001000100

D:\\MyJob\\securitylab\\PipeUp\\Debug>

大家看了上面两个例子有什么想法呢?肯定有人会觉得这些Exploit有“做弊”的嫌疑:一方面,在radix1112200101(或PipeUp)运行之前,RunAs(或ClipBook)服务进程都必须先终止运行,这样 进程才有可能伪造Named Pipe,才有机会窃取Administrator(或Local System)的账号信息;而另一方面, 必须先取得至少Administrator的权限才能终止RunAs(或ClipBook)进程,这两个方面看起来是互为前提条件的,是个无解的“Deadlock”。实际上,我在SecurityFocus网站上看到Microsoft针对Exploit程序radix1112200101的回复,它指出这个Exploit是两难的,现实中不太可能发生。

要实现这个Exploit确实有些难度,但是这并不等于不会发生!假如某个服务进程有Bugs,象缓冲区溢出呀、Signal不当reentrant呀等等,那么在运行中这个服务进程就有可能被 故意整垮掉(Crash),然后 就可以伪造它的Named Pipe,再利用上面的Exploit程序提升其权限。

而且有时候我们并不需要先终止服务进程,我在Microsoft的Security Bulletins网站上找到一个例子----编号为MS01-031的一篇文章 “Predictable Name Pipes Could Enable Privilege Elevation Via Telnet”。中文大意是说:当你通过Telnet远程联线到Windows 2000系统中的Telnetd服务进程时,Telnetd会创建一个新的Named Pipe,同时运行这个Named Pipe携带的初始化程序。由于这个Named Pipe的名字是可以猜到的(Predictable),所以 可以抢先用猜到的名字创建这个Named Pipe,同时让这个Named Pipe携带 码作为初始化程序;当Telnetd服务进程发现这个Named Pipe已经存在时,它既不重新创建一个新的Named Pipe,也不核实一下这个Named Pipe的创建者是否可以信赖(Trustable),相反,它直接使用这个Named Pipe,并且把其携带的 码当成初始化程序运行。由于在缺省设置的情况下,Telnetd服务进程具有Local System的权限,所以 码也将以这个最高的权限横冲直撞。

Microsoft的文章并没有告诉我们这个可以猜得到的Named Pipe名字是什么----这是可以理解的,毕竟谁也不会开门掬盗。不过我在dallas上作了个试验:分别联结两个Telnet Session到Dallas上,然后用Pipelist程序观察在Telnet后Named Pipe的变化情况:

D:\\MyJob\\tool\\pipelist\\Debug>pipelist

PipeList v1.01

by Mark Russinovich

www.sysinternals.com

Pipe Name Instances Max Instances

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

InitShutdown 2 -1

lsass 5 -1

ntsvcs 52 -1

scerpc 2 -1

net\\NtControlPipe1 1 1

。。。。。。。。。。

tapsrv 2 -1

ROUTER 2 -1

WMIEP_644 2 -1

WMIEP_2c8 2 -1

net\\NtControlPipe28 1 1

telnetd\\000001fc.00000000 1 1

telnetd\\000001fc.00000001 1 1

telnetd\\000001fc.00000002 1 1

telnetd\\000001fc.00000003 1 1

上面用黑体字标出来的Named Pipe:net\\NtControlPipe28属于Telnetd服务进程,而telnetd\\000001fc.00000000与telnetd\\000001fc.00000001属于第一个Telnet Session,telnetd\\000001fc.00000002与telnetd\\000001fc.00000003属于第二个Telnet Session。如果这时有第三个用户Telnet进来的话,Telnetd要用到的Named Pipe名字将会是telnetd\\000001fc.00000004与telnetd\\000001fc.00000005,我敢赌100块钱!!!

你们看到,这个例子并不需要终止任何服务进程,理论上说你只需要具有一般用户账号就可以提升你的权限到Local System级别:先以一般用户账号伪造Named Pipe并让它附带 码作为初始化程序,然后以同一账号远程联线到象dallas这样的机器上,Telnetd服务进程会主动运行你附带在Named Pipe上的 码,而且你的 码是以Local System权限运行,

利用Windows 2000中的Dynamic Data Exchange来提升权限:

我是在www.atstake.com网站的Security Advisory栏目(2月版)看到这篇文章:“NetDDE Message Vulnerability”,作者是DilDog。搞这一行有些日子的人大概都看过他的另一篇非常有名、非常经典的文章:“The Tao of Windows Buffer Overflow”;这篇文章被其他人引用的次数很多,如果拿这篇文章的引用率来评职称,肯定是非常的Solid----就是很硬的意思!

在那一篇文章中,他详细地介绍了在Windows NT系统中如何发现NetMeeting的缓冲区溢出,如何一步一步编写 码去Exploit这个缺口(Vulnerability)。实际上,在前面两章的Exploit试验中我所用到的罗马大道“Jmpesp”,以及函数指令表都直接或间接地借鉴了他的思路。有兴趣的朋友可以到下面的网页去拜读一下这篇大作:

www.cultdeadcow.com/cDc_files/cDc-351/

好,回到正题:如何利用Dynamic Data Exchange来提升权限?我们曾经提到过,在Windows操作系统有多种Interprocess Communication的方法,Named Pipe是常见的一种,而Dynamic Data Exchange(DDE)则是另一种常见的方法,它是通过共享内存来实现不同进程间的动态数据交换。这些动态交换的数据叫DDE Share,它们由DDE Server创建并由Network DDE DSDM (DDE share database manager)服务进程管理。你可以在Dos窗口下运行命令DDESHARE来显示你计算机上的DDE Share,常见的DDE Share有Chat$、CLPBK$、Hearts$。

当管理DDE Share的Network DDE DSDM服务进程运行时,Winlogon会在当前登录用户的Desktop产生一个隐藏式的Window,这个隐藏式的Window名字为“NetDDE Agent”,是一个“NDDEAgnt”类的window class,它的功能在于协助DDE Server程序及DDE Client程序之间的数据交换。由于它由Winlogon创建,这个Window的进程就以Local System的权限运行在登录用户的Desktop上,只不过用户看不到它而已。

“NetDDE Agent”还有另外一个辅助功能:当DDE Client试图连接到一个Trueted的DDE Share时,如果“NetDDE Agent”发现创建这个DDE Share的DDE Server尚未运行,它会主动启动这个Server。记住“NetDDE Agent”进程是具有Local System权限的,所以它启动Server没有一点问题。

根据DilDog的研究,这个隐藏式的“NetDDE Agent”就是一个缺口(Vulerability)!还记得Window操作系统中的函数SendMessage吗?登录用户可以利用这个函数向Desktop上的任何Window发送Message,即使这个Window不属于当前登录用户。所以 在以一般用户的身份登录后,可以用SendMessage()发送一个WM_COPYDATA message给“NetDDE Agent”,这个Message里面同时携带着一个精心炮制的数据块作为调用参数。这个数据块包含以下内容:

1。 一个Trusted DDE Share的名字,比如说Chat$;

2。 一个用于启动DDE Server的命令,如果“NetDDE Agent”发现创建Chat$的DDE

Server尚未运行,就根据这个命令来启动DDE Server。但是 可以任选一个命 令来伪造,比如说“Net Localgroup Administrators /Add 阿猫”----这里的阿 猫已经是合法的一般用户了;

3。 一些固定不变的字节。DilDog认为是这些字节应该是随机产生的,而不应该固定不变。我个人理解这些字节是用于向“NetDDE Agent”或Network DDE DSDM证明WM_COPYDATA message是由合法程序(而不是 程序)发出的,所以它们应该随机变化而不让 轻易得到。

当“NDDEAgnt”接收到WM_COPYDATA message时,它核对后会发现第三部分的字节正确无误,而且Trusted DDE Share确实存在,於是它就执行 命令,由于“NDDEAgnt”具有Local System权限,它可以顺利地让阿猫同志光荣地加入本地Administrator Group。

DilDog在文章中还附带了一个Exploit程序netddemsg,我接下来就在dallas上演示一下我自己是如何追随阿猫加入本地Administrators Group的:

/*

先以我的用户账号“moda”登录dallas。

看看本地administrators Group有哪些成员:

*/

篇2:Win2K系统几个攻击实例成败心得(五)

cal System的Window,他也有办法提升权限:他可以利用Tool Help函数得到属于 Local System的进程及其Thread,只要其中任何一个Thread能处理Window的Message,用户就可以用函数PostThreadMessage()向这个属于Local System的Thread发送Message,然后就,。。如此这般。。。地提升权限。不过我没有时间 亲手试验过这种方法。

这两篇文章引起了很大的反响,其中最引人注意的是Microsoft的答复,Micorsoft说这种方法老早就有人提出来了,Nothing New!又说根本就不应该在普通用户的Desktop上创建属于Local System的Window,编程序的人应该避免这样的设计。但实际上隐藏式的窗口“NetDDE Agent”就出自于Microsoft的设计,它属于Local System但是却运行在登录用户的Desktop上,看来Microsoft是知法犯法啊!

我觉得这个缺陷就象不安全的函数strcpy一样,C语言在实现strcpy函数时有漏洞(函数返回地址、函数堆栈栈底地址等系统管理信息与缓冲区分配在一块,缓冲区的溢出就会覆盖系统管理信息),於是大家寄希望于程序员能够避免使用函数strcpy。现在Microsoft也承认在普通用户的Desktop上创建一个Window是危险的,所以它也寄希望于大家编程时避免使用这样的设计。

下面我专门编写了一个服务进程“SimpleService”来演示一下Microsoft的这个设计缺陷。SimpleService以Local System的权限运行,它打开一个Named Pipe然后等待Named Pipe Client与它联络;普通用户接着登录计算机并运行程序“Client”,“Client”是一个Named Pipe Client;它向SimpleService的Named Pipe随便写一些字节,於是SimpleService就在登录用户的Desktop上产生一个对话窗口(Dialog Box)。普通用户最后利用FOON的攻击程序Shatter攻击这个对话窗口来获得“Local System”的权限。

因为SimpleService程序太长,所以我只节选了关键的部分让大家参考:

<====================SimpleService====================>

#define SZAPPNAME _T(“Simple”)

#define SZSERVICENAME _T(“SimpleService”)

#define SZSERVICEDISPLAYNAME _T(“Simple Service”)

#define SZDEPENDENCIES _T(“”)

typedef struct DLGPARAM{

UINT numOfHit;

TCHAR *msg;

} DlgParam;

// internal function prototypes

static BOOL CALLBACK DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

// SimpleService.cpp : Defines the entry point for the

application.

//

HINSTANCE hAppInstance;

DlgParam m_dlgParam;

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

......

}

void WINAPI service_main()

{

......

}

VOID WINAPI service_ctrl(DWORD dwCtrlCode)

{

......

}

BOOL WINAPI ControlHandler ( DWORD dwCtrlType )

{

......

}

HANDLE hServerStopEvent = NULL;

VOID ServiceStart ()

{

......

......

hPipe = CreateNamedPipe(

lpszPipeName , // name of pipe

FILE_FLAG_OVERLAPPED

PIPE_ACCESS_DUPLEX, // pipe open mode

PIPE_TYPE_MESSAGE

PIPE_READMODE_MESSAGE

PIPE_WAIT, // pipe IO type

1, // number of instances

0, // size of outbuf

file://(0 == allocate as necessary)

0, // size of inbuf

1000, // default time-out value

&sa); // security attributes

......

......

while ( 1 )

{

......

......

ConnectNamedPipe(hPipe, &os);

......

......

bRet = ReadFile(

hPipe, // file to read from

szIn, // address of input buffer

sizeof(szIn), // number of bytes to read

&cbRead, // number of bytes read

&os); // overlapped stuff, not needed

......

......

_stprintf(szOut, _T(“Please check the Dialog Box”));

_stprintf(szOut1, _T(“Eacho Back! [%s]”), szIn);

......

......

bRet = WriteFile(

hPipe, // file to write to

szOut, // address of output buffer

sizeof(szOut), // number of bytes to write

&cbWritten, // number of bytes written

&os); // overlapped stuff, not needed

......

......

DisconnectNamedPipe(hPipe);

m_dlgParam.numOfHit++;

m_dlgParam.msg = szOut1;

/*

在登录用户的Desktop上创建一个窗口

*/

int result = DialogBoxParam(hAppInstance,

MAKEINTRESOURCE(IDD_SVCMSG),

NULL,

(DLGPROC) DialogProc,

(LPARAM) &m_dlgParam);

}

cleanup:

......

......

}

VOID ServiceStop()

{

if ( hServerStopEvent )

SetEvent(hServerStopEvent);

}

#define SIZEOFBUF 40

/*

Window的Message Handler

*/

BOOL CALLBACK DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)

{

DlgParam* l_pDlgParam = (DlgParam*) lParam;

CHAR tempBuf[SIZEOFBUF];

switch (uMsg)

{

case WM_INITDIALOG:

{

HWND hNumVisit = GetDlgItem(hwnd, IDC_NUMHIT); /*限定Edit Control的尺寸(Size)为3*/

SendMessage( hNumVisit, EM_LIMITTEXT, (WPARAM) 3,

(LPARAM)0);

_itoa(l_pDlgParam->numOfHit, tempBuf,10);

SendMessage(hNumVisit, WM_SETTEXT, (WPARAM)

0,(LPARAM)tempBuf);

HWND hMsg = GetDlgItem(hwnd, IDC_MSG);

/*限定Edit Control的尺寸(Size)为40*/

SendMessage( hMsg, EM_L

篇3:系统攻击实例

一.通用入口

因 形 势 发 展 需 要, 大 多 地 县 一 级 电 信局 都 成 立 了 网 路 管 理、交 换 维 护 中 心,负责 本 地 区 的 话 务 分 析 及 交 换 维 护, 顾名 思 义, 这 两 个 机 构 都 通 过 各 种 传 输手 段 和 该 地 区 所 有 被 监 控 的 交 换 机 连通。 以 ANONYMOUS 局 来 说 吧, 该 局 网 管 中 心建 了 一 个 FDDI IntraNET, 通 过 交 换 机 的 人 机命 令 口 传 来 的 话 务 数 据 进 行 网 络 的 质量 分 析, 交 换 传 输 维 护 中 心 也 建 立 了一 个 IEEE.802.3 的 以 太 网, 也 和 交 换 机 相连, 负 责 交 换 机 的 日 常 维 护。 这 两 个 中心 用 路 由 器 相 互 联 结, 再 连 上 环 境 监控 设 备, 就 实 现 了 所 谓 的 机 房 无 人 值守。 (兄 千 万 不 要 爬 窗 撬 门 到 无 人 值 守的 机 房 去 哦 :-) ) 而 有 些 局 则 为 了 方 便 技术 人 员 的 方 便, 另 外 架 设 拨 号 服 务 器, 这 样 工 作 人 员 就 可 以 在 任 何 地 方 维 护到 交 换 机 了。 (该 点 眼 药 水 了 休 息) 兄 一定 笑 了, 说 了 半 天, 到 这 儿 还 不 是 看 我 ???? 的 H 的 水平吗? .... Bingo!

但 你 一 定 要 先 摸 清 ppp 的 接 入 电 话 号码。 至 于 用 户 名 嘛, 各 地 不 定, 但 很 多地 方 是 用 omc (Operator & Maintenance Center) 的,而 且 架 这 些 intranet 的 人 员 往 往 在 安 全 方面 不 是 专 家。 (不 包 括 弟 哦!):-)

在 进 去 以 后, 先 ping 自 己, 知 道 ip 后, (eg. 192.130.5.30) 就 开 始 找 接 交 换 机 的 前 台 机了: telnet 192.130.5.2(3,4,5,6,7...30) Be patient!

Unix 4.0

login:omc

password:

Succ.....

恭 喜! 你 进 去 了。 如 omc 加 了 密 码, 试试 sybase, 一 般 sybase 没 有 密 码。 进 去 后,就 看 老 兄 的 啦!

二.S1240简介

进 入 系 统 以 后, 别 忘 了 先 w 一 下 哦,否 则 给 人 kill 了, 以 后 加 了 密 码, 就 没得 玩 喽!

%cd /u/omc/bin

%mpt

就 进 维 护 菜 单 了, 按 (1...n) 选 择 对 哪 个局 进 行 维 护。 进 了 交 换 机 的 维 护 端 口 (mptmon) 后 看 到 的 是 >提 示 符, 有 点 象 dos ? :-) yeah.

现 在 的 s1240 有 两 种 版 本 (E & J) family, 两 种版 本 命 令 有 些 差 别, 我 们 先 来 鉴 别 一下:

>MM

TRAIN OCT-11-96 WED (TRAIN 这 儿 显 示 的 是 局 名, 各地 不 一)

<

这 是 E family.

>MM

TRAIN

<88:dn=k'5757011;

在 报 告 中 系 统 会 告 诉 你 这 个 电 话 的 物理 地 址 EN=h'XXX&YYY; 记 住! 下 面 有 用。

>MM

TRAIN

<378:1=“R_OLCOS”,2=“D_TN”&0&“YYY”,3=“D_CHRGINF”&0&“40”,NA=H'XXX;

从 此 以 后, 该 电 话 市 话 FREE!

注 解: 那 要 看 你 那 里 是 不 是 拨 号 上 网的, 不 过 好 多 地 方 都 是 走 分 组 交 换 网, 是专 线。

另 外, 那 个 改 市 话 的 方 法 有 几 点 注 意事 项:

1. 只适用于老版本交换机;

2. IF 1 IS TRUE

IF 该交换局是长市合一局

THEN 长途也FREE了,哈哈

示例二:

我 是 ??????, 前 段 日 子, 我 们 曾 邀 请 ISS 公 司 创 始 人 Christopher Klaus 先 生 (就 是 您 说的 那 位 少 年 黑 客, 曾 进 入 美 国 国 防 部和 NASA, 现 年 22 岁) 来 北 京 昆 仑 饭 店 和 上海 新 锦 江 讲 座, 由 于 公 安 部 的 干 预, 没有 进 行 市 场 宣 传 和 安 排 新 闻 报 道, 只是 邀 请 了 国 家 有 关 部 委 和 金 融 界 有 关人 士 参 加。

至 于 网 络 安 全 漏 洞, 经 对 方 允 许, 我曾 经 对 邮 电 部 和 清 华 BBS (未 移 植 到 曙 光天 演 之 前) 和 某 银 行 青 岛 分 行 进 行 扫描, 最近一 次 的 结 果 是 邮 电 部 没 有 高风 险 漏 洞 (当 然, 中 低 风 险 的 漏 洞 还 是不 少), 清 华 BBS 服 务 器 有 三 个 高 风 险 漏洞, 而 某 银 行 已 被 我 拿 到 超 级 用 户 口令。 ISS 的 看 法 是 很 多 网 络 安 全 漏 洞 都是 由 于 配 置 不 当 造 成 的, 在 动 态 的 网络 环 境 中 管 理 人 员 难 免 不 出 差 错, 因此, ISS 于 97 年 提 出 可 适 应 性 安 全 管 理 模型。

当 然, 77% 的 攻 击 行 为 是 内 部 人 员 配 合黑 客 造 成 的。 然 而, 在 内 部 人 员 的 配 合下, 在 中 国 拿 到 一 些 口 令 是 相 当 的 容易 (前 几 年 我 开 发 数 据 库 系 统, 问 用 户口 令 几 乎 是 有 问 必 答), 这 也 说 明 这 样 一个 问 题 就 是 我 们 国 家 的 网 络 安 全 意 识薄 弱。

ISS 有 一 套 很 好 的 网 络 安 全 产 品 和 解决 思 路, 已 经 加 入 了 Internet 网 络 安 全 系统 联 合 领 导 委 员 会, 同 CRET, NCSA 共 同 研 究网 络 攻 击 手 段。 我 真 诚 希 望 能 够 同 您共 同 研 究 这 套 产 品 的 网 络 攻 防 手 段,并 且 针 对 黑 客 攻 击 的 技 巧, 特 点 及 思路 向 您 请 教, 希 望 您 帮 忙 并 多 联 系。

示例三:

这 个 好 象 有 点 搞 笑, 哈 哈!

我 解 开 的 网 页 是 STUPID.HK.????, 具 体 步 骤 如下:

我 的 目 标 是: PUBLIC.HK.????, 可 以 GET PASSWD, CANT GOT SHADOW, 于 是 我 GET 了 它 的 HOSTS 文 件, 试 图 找出 它 的 关 联, 发 现 STUPID.HK.???? STUPID, TELNET TOTHERE:

USER:STUPID

PASSWD:STUPID CANT JION.

USER:ROOT

PASSWD:STUPID GOOD!I GOT IT.THE FOOL ROOT!

CD /ETC

GET PASSWD & GET SHADOW

USE UNSHADOW PASS2DIS BURTE,N:WEBMASTER P:WEBMASTER ...

以 上 是 全 过 程, 希 望 有 参 考 价 值

示例四:口令攻击术

黑 客 攻 击 目 标 时, 常 常 把 破 译 普 通 用户 的 口 令 作 为 攻 击 的 开 始。 先 用 finger 远端 主 机 名 找 出 主 机 上 的 用 户 帐 号, 然 后就 采 用 字 典 穷 举 法 进 行 攻 击。 它 的 原理 是 这 样 的: 网 络 上 的 用 户 常 采 用 一 个英 语 单 词 或 自 己 的 姓 氏 作 为 口 令。 通过 一 些 程 序, 自 动 地 从 电 脑 字 典 中 取 出一 个 单 词, 作 为 用 户 的 口 令 输 入 给 远 端的 主 机, 申 请 进 入 系 统。 若 口 令 错 误, 就按 序 取 出 下 一 个 单 词, 进 行 下 一 个 尝试。 并 一 直 循 环 下 去, 直 到 找 到 正 确 的口 令 或 字 典 的 单 词 试 完 为 止。 由 于 这个 破 译 过 程 由 计 算 机 程 序 来 自 动 完 成, 几 个 小 时 就 可 以 把 字 典 的 所 有 单 词 都试 一 遍。 这 类 程 序 的 典 型 是 LetMeIn version 2.0。 若 这 种方 法 不 能 奏 效, 黑 客 就 会 仔 细 寻 找 目 标的 薄 弱 环 节 和 漏 洞, 伺 机 夺 取 目 标 中 存放 口 令 的 文 件 shadow 或 passwd。 因 为 在 现 代的 Unix 操 作 系 统 中, 用 户 的 基 本 信 息 存 放在 passwd 文 件 中, 而 所 有 的 口 令 则 经 过 DES 加 密 方 法 加 密 后 专 门 存 放 在 一 个 叫 shadow (影 子) 的 文 件 中, 并 处 于 严 密 的 保 护之 下。 老 版 本 的 Unix 没 有 shadow 文 件, 它 所有 的 口 令 都 存 放 在 passwd 文 件 中。 一 旦 夺取 口 令 文 件, 黑 客 们 就 会 用 专 解 DES 加 密法 的 程 序 来 解 口 令。

好, 首 先 先 让 我 们 把 Unix 口 令 的 可 能 值统 计 一 下:

Unix 一 共 是 [0x00~0xff] 共 128 个 字 符, 小 于 0x20 的 都 算 是 控 制 符, 不 能 输 入 为 口 令, 0x7f 为 转 义 符, 不 能 输 入,

那 么 总 共 有 128 - 32 - 1 = 95 个 字 符 可 作 为 口 令 的 字 符。

也 就 是 10(数 字) + 33(标 点 符 号) + 26*2(大 小写 字 母) = 95 个

如 果 passwd 取 任 意 5 个 字 母 + 1 位 数 字 或符 号 (按 顺 序), 可 能 性 是 52*52*52*52*52*43=16,348,773,000 (163 亿 种 可 能 性)

但 如 果 5 个 字 母 是 一 个 常 用 词, 估 算 一下 设 常 用 词 5000 条, 从 5000 个 常 用 词 中 取一 个 词 与 任 意 一 个 字 符 组 合 成 口 令, 即 5000*(2*2*2*2*2)(大小写)*43=6,880,000 (688 万 种 可 能 性)。

注: 实际 情 况 下 绝 大 多 数 人 都 只 用 小 写 字 符, 可 能 性 还 要 小。

但 这 已 经 可 以 用 微 机 进 行 穷 举 了, 在 Pentium 200 上 每 秒 可 算 3、4 万 次, 象 这 样 简单 的 口 令 要 不 了 3 分 钟。 如 果 有 人 用 P200 算 上 一 周, 将 可 进 行 200 亿 次 攻, 所 以 6 位口 令 是 很 不 可 靠 的, 至 少 要 用 7 位。

可 惜 很 多 用 户 确 实 是 这 么 设 passwd 的。以 上 只 是 粗 略 估 算 常 见 的 一 种 情 况, 实际 情 况 还 要 复 杂, 主 要 是 根 据 用 户 取 口令 格 式 的 变 化 而 变 化。 那 些 hacker 并 不 需要 所 有 人 的 口 令, 他 们 得 到 几 个 用 户 口令 就 能 获 取 系 统 的 控 制 权, 所 以 取 口 令过 于 简 单 是 对 系 统 安 全 的 不 负 责。

以 下 举 个 解 密 码 程 序 的 例 子:

John The Ripper 1.4

这 个 软 件 由 著 名 的 黑 客 组 织 -- UCF 出 的, 它 支 持 Unix, Dos, Windows, 速 度 超 快, 可 以 说 是目 前 同 类 中 最 杰 出 的 作 品。 对 于 老 式的 passwd 档 (就 是 没 shadow 的 那 种, 任 何 人 能看 的 都 可 以 把 passwd 密 文 存 下 来), John 可 以直 接 读 取 并 用 字 典 穷 举 击 破。 对 于 现代 的 passwd + shadow 的 方 式, John 提 供 了 UNSHADOW 程 序 直 接 把 两 者 合 成 出 老 式 passwd 文 件。

John 的 用 法 简 介:

JOHN -P:PASSWD -W:WORDLIST

WORDLIST 是 字 典 文 件。

PASSWD 是 你 拿 到 的 密 码 文 件。

没 有 字 典 档 时, 在 John 的 配 置 文 件 -->john.ini 里, 有 密 码 长 度 和 字 母、数 字、符 号 的 设 置, 设 好 后 就 自 动 在 内 存 里 生 成 密 码 去 找。 这 样 你 用 软 盘 也 可 以, 但 机 器 的 速 度 一 定 要 快。

用 暴 力 法 破 密 码 时 使 用 参 数 -i:all

格 式 为 JOHN -I:ALL -P:PASSWD

就 可 破 象 5e5t56e6 这 样 的 密 码 了。

这 样 可 以 产 生 A----ZZZZZZZZ 的 密 码, 不 过 时 间 ... 嘿 嘿 ....

当 破 解 到 一 半 因 种 种 原 因 需 要 暂 时 停 止 破 解, 按 ctrl+c, 下 次 破 解 不 必 从 新 来 过, 只 要 john -restore:restore 即 可 接 着 破。

john 在 纯 dos 下 要 比 在 win95 下 快, 用 unix 更 快。

对 于 象 a2e4u7 的 密 码 是 很 难 破 出 的, 但 JOHN 的 INCREMENTAL (渐 进) 方 式 的 密 码 组 合 引 入 了 一 些 字 母 的 频 率 统 计 信 息, 即 “高 频 先 试” 的 原 则, 倒 是 有 些 启 发 意 义。

在 JOHN.INI 中 INCREMENTAL 中 的 B, M, E 各 行 意 思 如 下:

B...Begin M...Middle E...End

如 想 要 加 一 种 方 式, 比 如 字 母 加 数 字, 可 以 设 成

[Incremental:a1]

CharCount = 36 (字 符 的 个 数, 这 儿 是 26 个 字 母 + 10 个 数 字)

MinLen = 8 (passwd 的 最 小 长 度)

MaxLen = 8 (passwd 的 最 大 长 度)

CharsetB = 1203984567smcbtdpajrhflgkwneiovyzuqx

CharsetM = 1203984567eaiornltsuchmdgpkbyvwfzxjq

CharsetE = 1203984567erynsatldoghikmcwpfubzjxvq

加 在 john.ini 里, 执 行 是 incremental 参 数 选 a1 就 行 了。

按 Ctrl-C 中 止 运 行 时, 输 出 是 这 样:

v: 18 c: 1295458688 t: 1:14:28:08 9% c/s: 11036 w: oentl - obftl

v: 0 c: 5424000 s: 862 c/s: 6292 w: fbymgf

V: 是 Victory, 是 破 解 成 功 的 个 数, 因 为 俺 运 行 一 段 后, 破 解 了 2 个 密 码, 显 示 了 V:2, 后 来 又 破 了 几 个, V 后 面 的 数 字 也 相 应 变 化。

C: Compare, 是 比 较 的 次 数。

T: time, 程 序 已 运 行 了 多 长 时 间。

9%: 当 前 完 成 度. 至 100% 即 全 部 完 成。

c/s: 是 每 秒 比 较 的 次 数, 随 机 器 性 能 的 高 低 而 变 化。

W: 是 当 前 正 在 试 的 一 个 word, 这 个 word 可 能 位 于 你 的 字 典 中 (如 果 你 用 字 典 的 话) 或 是 john 产 生 的。 根 据 W 所 报 告 的 数 字 可 以 估 计 破 解 到 什 么 地 方 了。

运 行 需 要 的 字 典 可 以 在 internet 上 下 载 别 人 已 做 好 的, 如:

ftp.cads.com.tw 在 /pub/security 下 的 DICT.ZIP

ftp.uni-koeln.de /pub/dictionaries/

ftp.ox.ac.uk /pub/wordlists

也 可 以 自 己 做, 用 txt2dict 或 pass2dic 等 专 用 工 具 可 自 动 把 英 语 文 件 转 换 成 字 典。

防范 的 办 法

防 范 的 办 法 很 简 单, 只 要 使 自 己 的 口令 不 在 英 语 字 典 中, 且 不 可 能 被 别 人 猜测 出 就 可 以 了。 一 个 好 的 口 令 应 当 至少 有 7 个 字 符 长, 不 要 用 个 人 信 息 (如 生日, 名 字 等), 口 令 中 要 有 一 些 非 字 母 (如数 字, 标 点 符 号, 控 制 字 符 等), 还 要 好 记一 些, 不 能 写 在 纸 上 或 计 算 机 中 的 文 件中, 选 择 口 令 的 一 个 好 方 法 是 将 两 个 不相 关 的 词 用 一 个 数 字 或 控 制 字 符 相 连, 并 截 断 为 8 个 字 符。 例 如 我 以 前 的 口 令是 me2.hk97 。

保 持 口 令 安 全 的 要 点 如 下:

* 不 要 将 口 令 写 下 来。

* 不 要 将 口 令 存 于 电 脑 文 件 中。

* 不 要 选 取 显 而 易 见 的 信 息 作 口 令。

* 不 要 让 别 人 知 道。

* 不 要 在 不 同 系 统 上 使 用 同 一 口 令。

* 为 防 止 眼 明 手 快 的 人 窃 取 口 令, 在 输 入 口 令 时 应 确 认 无 人 在 身 边。

* 定 期 改 变 口 令, 至 少 6 个 月 要 改 变 一 次。

最 后 这 点 是 十 分 重 要 的, 永 远 不 要 对自 己 的 口 令 过 于 自 信, 也 许 就 在 无 意 当中 泄 露 了 口 令。 定 期 地 改 变 口 令, 会 使自 己 遭 受 黑 客 攻 击 的 风 险 降 到 了 一 定限 度 之 内。 一 旦 发 现 自 己 的 口 令 不 能进 入 计 算 机 系 统, 应 立 即 向 系 统 管 理 员报 告, 由 管 理 员 来 检 查 原 因。

系 统 管 理 员 也 应 定 期 运 行 这 些 破 译口 令 的 工 具, 来 尝 试 破 译 shadow 文 件, 若 有用 户 的 口 令 密 码 被 破 译 出, 说 明 这 些 用户 的 密 码 取 得 过 于 简 单 或 有 规 律 可 循, 应 尽 快 地 通 知 他 们, 及 时 更 正 密 码, 以 防止 黑 客 的 入 侵。

IIS攻击与安全加固实例分析

保育员工作实例心得

细节决定成败读书心得

细节决定成败读书心得700字

关于成败名人名言

项目管理系统使用心得

解析网络过载攻击

攻击四年级叙事作文

阅读了《细节决定成败》后的读书心得

结构化面试实例及评析

Win2K系统几个攻击实例成败心得(共3篇)

欢迎下载DOC格式的Win2K系统几个攻击实例成败心得,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档