Hacker技术

baidu DNS被诈骗的攻击原理

原理:如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。

就是恶意程序修改你电脑上DNS缓存中的内容,一是让你不能正常上网,比如把www.sina.com.cn的IP地址修改为127.0.0.1,这样无论如何也不能找到新浪网了,二是将某些恶意IP地址放进DNS缓存,比如把www.sina.com.cn对应的IP地址修改为恶意网站地址,当你在地址栏输入www.sina.com.cn的时候,访问的却是恶意网站。由于操作系统在进行DNS解析的时候首先查询DNS缓存,如果在缓存中能查到,就不会再找DNS服务器了。这样一旦dns缓存被修改,你去修改DNS服务器之类的网络参数也是无效的。
1.用IPCONFIG/displaydns命令栏查看当前dns缓存里的内容。 (可以查看)
2.用ipconfig /flushdns命令刷新dns缓存中的内容。 (可以使用)
3.若要防止dns缓存攻击,应禁用dns缓存,方法:
禁用客户端 DNS 缓存
1. 启动注册表编辑器 (Regedit.exe)。
2. 在以下注册表项中找到 MaxCacheEntryTtlLimit 值: (经试验:我的电脑中无此值)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
3. 在编辑菜单上,单击修改。键入 1,然后单击确定。
4. 退出注册表编辑器。

以下为百度百科的解释:
定义: DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。

现在的Internet上存在的DNS服务器有绝大多数都是用bind来架设的,使用的bind版本主要为bind 4.9.5+P1以前版本和bind 8.2.2-P5以前版本.这些bind有个共同的特点,就是BIND会缓存(Cache)所有已经查询过的结果,这个问题就引起了下面的几个问题的存在.
1>.DNS欺骗
在DNS的缓存还没有过期之前,如果在DNS的缓存中已经存在的记录,一旦有客户查询,DNS服务器将会直接返回缓存中的记录.
下面我们来看一个例子:
一台运行着unix的Internet主机,并且提供rlogin服务,它的IP地址为123.45.67.89,它使用的DNS服务器(即/etc/resolv.conf中指向的DNS服务器)的IP地址为98.76.54.32,某个客户端(IP地址为38.222.74.2)试图连接到unix主机的rlogin端口,假设unix主机的/etc/hosts.equiv文件中使用的是dns名称来允许目标主机的访问,那么unix主机会向IP为98.76.54.32的DNS服务器发出一个PTR记录的查询:
123.45.67.89 -> 98.76.54.32 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0
QY: 2.74.222.38.in-addr.arpa PTR
IP为98.76.54.32的DNS服务器中没有这个反向查询域的信息,经过一番查询,这个DNS服务器找到38.222.74.2和38.222.74.10为74.222.38.in-addr.arpa.的权威DNS服务器,所以它会向38.222.74.2发出PTR查询:

98.76.54.32 -> 38.222.74.2 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0
QY: 2.74.222.38.in-addr.arpa PTR
请注意,38.222.74.2是我们的客户端IP,也就是说这台机子是完全掌握在我们手中的.我们可以更改它的DNS记录,让它返回我们所需要的结果:

38.222.74.2 -> 98.76.54.32 [Answer]
NQY: 1 NAN: 2 NNS: 2 NAD: 2
QY: 2.74.222.38.in-addr.arpa PTR
AN: 2.74.222.38.in-addr.arpa PTR trusted.host.com
AN: trusted.host.com A 38.222.74.2
NS: 74.222.38.in-addr.arpa NS ns.sventech.com
NS: 74.222.38.in-addr.arpa NS ns1.sventech.com
AD: ns.sventech.com A 38.222.74.2
AD: ns1.sventech.com A 38.222.74.10
当98.76.54.32的DNS服务器收到这个应答后,会把结果转发给123.45.67.98,就是那台有rlogin服务的unix主机(也是我们的目标 🙂 ),并且98.76.54.32这台DNS服务器会把这次的查询结果缓存起来.

这时unix主机就认为IP地址为38.222.74.2的主机名为trusted.host.com,然后unix主机查询本地的/etc/hosts.equiv文件,看这台主机是否被允许使用rlogin服务,很显然,我们的欺骗达到了.
在unix的环境中,有另外一种技术来防止这种欺骗的发生,就是查询PTR记录后,也查询PTR返回的主机名的A记录,然后比较两个IP地址是否相同:
123.45.67.89 -> 98.76.54.32 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0
QY: trusted.host.com A
很不幸,在98.76.54.32的DNS服务器不会去查询这个记录,而会直接返回在查询2.74.222.38.in-addr.arpa时得到的并且存在缓存中的信息:
98.76.54.32 -> 123.45.67.89 [Query]
NQY: 1 NAN: 1 NNS: 2 NAD: 2
QY: trusted.host.com A
AN: trusted.host.com A 38.222.74.2
NS: 74.222.38.in-addr.arpa NS ns.sventech.com
NS: 74.222.38.in-addr.arpa NS ns1.sventech.com
AD: ns.sventech.com A 38.222.74.2
AD: ns1.sventech.com A 38.222.74.10
那么现在unix主机就认为38.222.74.2就是真正的trusted.host.com了,我们的目的达到了!
这种IP欺骗的条件是:你必须有一台Internet上的授权的DNS服务器,并且你能控制这台服务器,至少要能修改这台服务器的DNS记录,我们的欺骗才能进行.

2>.拒绝服务攻击 Denial of service
还是上面的例子,如果我们更改位于38.222.74.2的记录,然后对位于98.76.54.32的DNS服务器发出2.74.222.38.in-addr.arpa的查询,并使得查询结果如下:
因为74.222.38.in-addr.arpa完全由我们控制,所以我们能很方便的修改这些信息来实现我们的目的.
38.222.74.2 -> 98.76.54.32 [Answer]
NQY: 1 NAN: 2 NNS: 2 NAD: 2
QY: 2.74.222.38.in-addr.arpa PTR
AN: 2.74.222.38.in-addr.arpa PTR trusted.host.com
AN: www.company.com A 0.0.0.1
NS: 74.222.38.in-addr.arpa NS ns.sventech.com
NS: 74.222.38.in-addr.arpa NS ns1.sventech.com
AD: ns.sventech.com A 38.222.74.2
AD: ns1.sventech.com A 38.222.74.10
这样一来,使用98.76.54.32这台DNS服务器的用户就不能访问www.company.com了,因为这个IP根本就不存在!
3>.偷取服务 Theft of services
还是上面的例子,只是更改的查询结果如下:
38.222.74.2 -> 98.76.54.32 [Answer]
NQY: 1 NAN: 3 NNS: 2 NAD: 2
QY: 2.74.222.38.in-addr.arpa PTR
AN: 2.74.222.38.in-addr.arpa PTR trusted.host.com
AN: www.company.com CNAME www.competitor.com
AN: company.com MX 0 mail.competitor.com
NS: 74.222.38.in-addr.arpa NS ns.sventech.com
NS: 74.222.38.in-addr.arpa NS ns1.sventech.com
AD: ns.sventech.com A 38.222.74.2
AD: ns1.sventech.com A 38.222.74.10

这样一来,一个本想访问http://www.competitor.com的用户会被带到另外一个地方,甚至是敌对的公司的竹叶(想想把华为和北电联起来是什么样的感觉. 🙂 ).并且发给company.com的邮件会被发送给mail.compertitor.com.(越来越觉得在网络上的日子不踏实! xxbin这样想).
4>.限制
对这些攻击,也有一定的限制.
首先,攻击者不能替换缓存中已经存在的记录.比如说,如果在98.76.54.32这个DNS服务器上已经有一条www.company.com的CNAME记录,那么攻击者试图替换为www.competitor.com将不会成功.然而,一些记录可以累加,比如A记录,如果在DNS的缓存中已经存在一条www.company.com的A记录为1.2.3.4,而攻击者却欺骗DNS服务器说www.company.com的A记录为4.3.2.1,那么www.company.com将会有两个A记录,客户端查询时会随机返回其中一个.(呵呵,这不是loading balance么?)
其次,DNS服务器有个缓存刷新时间问题,如果www.netbuddy.org的TTL为7200,那么DNS服务器仅仅会把www.netbuddy.org的信息缓存7200秒或者说两个小时.如果攻击者放入一条TLL为604800的A记录,那么这条记录将会在缓存中保存一周时间,过了默认的两天后,这个DNS服务器就会到处"分发"攻击者假造的记录.
下面是常用的几种可以累加和不能累加的记录:
A can add
NS can add
MX can add
PTR cannot add

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

dig +trace baidu.com

; <<>> DiG 9.6.1-P1 <<>> +trace baidu.com
;; global options: +cmd
. 513704 IN NS M.ROOT-SERVERS.NET.
. 513704 IN NS J.ROOT-SERVERS.NET.
. 513704 IN NS L.ROOT-SERVERS.NET.
. 513704 IN NS C.ROOT-SERVERS.NET.
. 513704 IN NS D.ROOT-SERVERS.NET.
. 513704 IN NS F.ROOT-SERVERS.NET.
. 513704 IN NS A.ROOT-SERVERS.NET.
. 513704 IN NS K.ROOT-SERVERS.NET.
. 513704 IN NS H.ROOT-SERVERS.NET.
. 513704 IN NS E.ROOT-SERVERS.NET.
. 513704 IN NS G.ROOT-SERVERS.NET.
. 513704 IN NS I.ROOT-SERVERS.NET.
. 513704 IN NS B.ROOT-SERVERS.NET.
;; Received 260 bytes from 127.0.0.1#53(127.0.0.1) in 15 ms

com. 172800 IN NS F.GTLD-SERVERS.NET.
com. 172800 IN NS G.GTLD-SERVERS.NET.
com. 172800 IN NS I.GTLD-SERVERS.NET.
com. 172800 IN NS L.GTLD-SERVERS.NET.
com. 172800 IN NS J.GTLD-SERVERS.NET.
com. 172800 IN NS D.GTLD-SERVERS.NET.
com. 172800 IN NS C.GTLD-SERVERS.NET.
com. 172800 IN NS M.GTLD-SERVERS.NET.
com. 172800 IN NS K.GTLD-SERVERS.NET.
com. 172800 IN NS A.GTLD-SERVERS.NET.
com. 172800 IN NS B.GTLD-SERVERS.NET.
com. 172800 IN NS E.GTLD-SERVERS.NET.
com. 172800 IN NS H.GTLD-SERVERS.NET.
;; Received 487 bytes from 192.228.79.201#53(B.ROOT-SERVERS.NET) in 185 ms

baidu.com. 172800 IN NS dns010.d.register.com.
baidu.com. 172800 IN NS dns050.c.register.com.
baidu.com. 172800 IN NS dns190.b.register.com.
baidu.com. 172800 IN NS dns204.a.register.com.
;; Received 192 bytes from 192.43.172.30#53(I.GTLD-SERVERS.NET) in 93 ms

baidu.com. 14400 IN SOA dns204.a.register.com. root.register.com. 2010011107 28800 7200 604800 14400
;; Received 89 bytes from 216.21.231.204#53(dns204.a.register.com) in 283 ms

PhpSpy

http://www.liangliang.org.cn/at_tools/phpspy_2008.rar

PhpSpy

项目信息

发布时间:2008-01-07
项目作者:angel
项目类别:WEB后门
工作环境:PHP
项目版本:2008
2008地址:http://www.4ngel.net/project/phpspy_2008.rar
2006地址:http://www.4ngel.net/project/phpspy_2006.rar
2005地址:http://www.4ngel.net/project/phpspy_2005.rar
1.5 下载:http://www.4ngel.net/project/phpspy_v1.5.rar

项目介绍

PhpSpy是一个用PHP语言编写的在线管理程序,同时集成很多和海阳顶端网所类似的功能,也可以说是一个WEB方式的后门,结合现有的攻击手法,本着实用、简洁、小巧的原则,开发了这个程序。由于程序性质问题,公开提供下载的版本不会提供更多的操作。例如MSSQL连接、WIN主机反弹等。

2008功能列表(基于2006)
加强cookie功能。
改成全英文版并根据数据库的编码设置声明相应的页面编码,以确保各编码服务器能正常输出。
加强文件管理功能,增加批量删除文件。增加新的文件属性显示方式和宿主。增加目录改名。增加查看网站根目录和当前目录下的所有可写子目录。在WIN主机下自动探测所有分区以及分区类型。
增加通过MYSQL方式上传下载文件,其中下载文件不需要数据库用户具有FILE权限。即可完整下载。程序自动判断两种方式下载。上传需要具有FILE权限。
加强MYSQL数据库管理功能,增加查询回显并带分页显示,增加插入、修改、删除记录。增加查看表结构和常用信息、删除表功能。并支持多句同时运行。
增加执行PHP代码功能,并附加一些有用的PHP代码。例如Serv-U本地提权利用代码,适用于6.4以及一下版本,以及MYSQL反弹SHELL等。
增强执行命令功能。
简化一些PHP环境变量显示。
大大提高各个操作的效率,尤其是文件管理。加快多文件目录的输出速度。
基本全部改为POST方式提交数据和跳转。大大的增加了隐蔽性。防止管理员查看日志找出端倪。
增加linux主机端口反弹功能。使用PERL和C 双重实现。
……

2006功能列表(基于2005)
用函数生成页面中的表格,体积比不用函数生成的时候减少了7kb,比全功能海阳2006小39kb
去掉了SESSION认证,提高兼容性
增加在WIN服务器上执行命令/程序的操作
增加在WIN服务器上对注册表的操作
增加在线HTTP代理功能
增加直接下载MYSQL备份文件
增加文件名改名
增加了克隆时间和自定义文件时间
2005版登陆要点按钮,这个版本直接回车
删除了几个地方的垃圾多余代码,换更加简练的方式写
修改了他妈的多处细节,更加流氓化

2005功能列表(基于1.5)

完整版(39.1K)
增加选定文件打包下载
增加备份指定数据库
增加显示主机名和IP
增建文件创建时间和最后修改时间的比较
修正几个小BUG
优化部分代码

精简版(20.7K)
删除新建目录功能
删除文件属性修改功能
删除PHP环境变量功能
删除Session的验证方式
增加显示主机名和IP
修正几个小BUG
优化部分代码

1.5功能列表(基于1.0)
支持MySQL语句执行
修正登陆验证的BUG
增加三个执行系统命令的函数
正确识别各个文件的URL
修正下载文件下了多余的HTML代码的BUG
用户可查看自定义PHP配置参数
大幅度优化、修正程序代码,修正若干细节

1.0功能列表
在线新建文件、文件夹,在权限允许的情况下可完全控制文件,具备一般文件管理所具备的功能。
在权限允许的情况下,可下载任何硬盘上存在的文件。
可以很好的修改目录以及文件的权限(不是win那种,是*nix的0XXX那种,win系统下也可以操作)。
比其他的同类程序更好的识别URL,完美解决浏览器某些特殊字符的编码问题(现有的程序,没有一个可以很好识别某些特殊字符的)。
会自动探测被禁用函数而决定某些操作。
会自动探测安全模式的状态而决定某些操作。
安全模式关闭的情况下,可选择用system、passthru两种函数执行系统命令。
没有开发某些多余的操作,精简,实用,体积仅22.3K,仅仅是海阳顶端网ASP木马2004的1/2。
在phpinfo函数被禁用的情况下,可以进入“PHP环境变量”获得很多有用的信息。
可选择是否需要登陆验证,同时可以通过配置选择session和cookie两种方式进行验证。
更多功能请自己挖掘……

Linux各版本的本地root密码破解方法

(一)RedHat/CentOS/Fedora 系统密码破解

1.在grub选项菜单按E进入编辑模式
2.编辑kernel 那行最后加上S (或者Single)
3.按B,启动到single-user mode
4.进入后执行下列命令
# mount -t proc proc /proc
# mount -o remount,rw /
#passwd
#sync
#reboot

(二)Debian linux 系统密码破解

1.在grub选项菜单’Debian GNU/Linux,...(recovery mode)’,按e进入编辑模式
2.编辑kernel那行最后面的 ro single 改成 rw single init=/bin/bash,按b执行重启
3.进入后执行下列命令
root@(none)#mount -a
root@(none)#passwd root
root@(none)#reboot

(三)Freebsd 系统密码破解

1.开机进入引导菜单
2.选择每项(按4)进入单用户模式
3.进入之后输入一列命令
root@#mount -a
root@#fsck -y
root@#passwd(修改密码命令)
root@#root(要破解密码的用户名)
Enter new unix password:
root@#init 6 (重启)

(四)Solaris 系统密码破解

1.在grub选项菜中选择solaris failasfe 项
2.系统提示Do you wish to have it mounted read-write on /a ?[y,n,?] 选择y
3.就进入单用户模式
4.输入下列命令:passwd
root@#init 6 (重启)

(五)NetBsd 系统密码破解

1.开机:当出现提示符号并开始倒数五秒时, 键入以下指令:
> boot -s (进入单用户模式命令)
2.在以下的提示符号中
Enter pathname of shell or RETURN for sh:
按下 Enter。
3.键入以下指令:
# mount -a
# fsck -y
4.使用 passwd 更改 root 的密码。
5.使用 exit 指令进入多人模式。

(六)SUSE 系统密码破解

1.重新启动机器,在出现grub引导界面后,在启动linux的选项里加上init=/bin/bash,通过给内核传递init=/bin/bash参数使得OS在运行login程序之前运行bash,出现命令行。
2.稍等片刻出现(none)#:命令行。
3.这时输入mount -n / -o remount,rw 表示将根文件系统重新mount为可读写,有了读写权限后就可以通过passwd命令修改密码了。
4.这时输入passwd命令就可以重置密码了
5.修改完成后记得用mount -n / -o remount,ro将根文件系统置为原来的状态。