月度归档:2011年05月

允许back track 5远程ssh

在bt5打开ssh后,用netstat可以看到已经在监听22端口,telnet 22端口可以看到SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu6这样的信息,就是ssh不上去!

启动的时候出现:

Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_dsa_key

修改一下/etc/ssh/sshd_config 把这两行注释掉也不行:

# HostKey /etc/ssh/ssh_host_rsa_key
# HostKey /etc/ssh/ssh_host_dsa_key

解决方法是:
#sshd-generate
密码设置空
或者
#ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
密码那里直接敲回车设置为空
#ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
密码那里直接敲回车设置为空
root@bt:~# /etc/init.d/ssh restart
* Restarting OpenBSD Secure Shell server sshd                           [ OK ]

 

 

部署BackTrack5全过程

5月11日,BT5如期和大家见面。

image

 

扫盲:什么是BT5

BackTrack5是一个linux发行版本,集成了一系列的网络安全分析工具和注入工具,可以很方便的对网络进行各种渗透。实在是居家必备杀人灭口之良药。

 

BT5最大的更新可以算是支持了ARM处理器,这意味着BT5将走进掌上设备的市场,以后很有可能拿着掌上设备也可以完成一系列的网络安全分析工作,包括但不限于注入测试,VOIP监听,DNS劫持,VPN监听,wifi破解,蓝牙破解,等等。

更新中,作者分别针对GNOME和KDE,32位和64位处理器,VM和光引导,发布了多个版本,用户可以方便的自由选择,然后对应相应的种子下载。

BT5下载地址:http://www.backtrack-linux.org/downloads/

 

BT5较BT4也更注重桌面化,从桌面来看,多出了Install Backtrack这一程序,使BT可以常驻硬盘。

 

但是,从无线网络的角度来看,BT5较BT4又没有实质性进展,对于WPA的爆破依旧无解,802.1x更是天方夜谭。

 

下面将示范利用从U盘引导安装BT5系统到硬盘到完全破解一个WPA密码。(不安装到硬盘亦可破解wifi)

环境:linux gnome 32bits x86

下载ISO映像:

image

下载完ISO映像,用UltraISO打开,插入U盘,覆写:

image

 

一切默认,随后继续即可,请注意,U盘内容将全部抹除,请注意做好备份。

完成后,插入U盘,进行引导,进入BT5系统。

随后会进行一系列初始化,停留在Shell,随后输入startx,进入gnome。

 

点击桌面的install backtrack,进行安装

值得一提的是,BT可以直接从你的安装系统盘的分区刮出你所规定的空间作为BT5的空间而不必要自行先刮出一部分,我事先已经刮出10G作为BT5空间,其中7G挂载/,2G挂载/home,1G作为SWAP。

选择语言:

image

设置时间后进入磁盘分区页面:

image

客官请慎重,一个错误将导致你硬盘数据全盘丢失。这里可以选第一项,然后在第二条进度条处可以调整,BT分区可以适当大,但不必要非常大(除非你长期呆在那或者想再安装点什么进去),确定后下一步即可。

这里以手动分区为例:

image

对现有磁盘分配现状不满意,遂回windows重新分区。

割出10G如下:

image

随后会确定清单,如果有错误或任何不确定,请务必返回。

image

漫长的写入过程,可能是因为我用class4的卡安装的缘故,持续了10分钟左右:

image

一切完成后会提示重启,万事俱备了。

image

完成后重启,可以发现引导菜单已经被BT5所取代,在其中可以自由选择到win的MBR和到BT5系统。

进入BT5前连接网卡,这里以自带的gerix和feedingbottle(安装)分别演示:

打开菜单,找到gerix:

 

Screenshot

进入监控模式后,扫描,选择AP,

Screenshot-1

有客户端的话,之后就可以用-0中断了。抓到握手包的页面:

Screenshot-3

随后导入字典进行穷举就不列举了,这套自动化工具在国内可能并没有spoonwep和feedingbottle普及,所以下面用feedingbottle进行示范:

首先打开命令行:

wget http://www.ibeini.com/beini_system/others/feedingbottle/feedingbottle3.2-backtrack5-gnome.zip

unzip -x feedingbottle3.2-backtrack5-gnome.zip

dpkg -i feedingbottle3.2-backtrack5-gnome.deb

之后在上面的目录(gerix)就能看见奶瓶了。

挂载驱动:

image

扫描wifi:

image

高级模式下抓包,-0,等等,获得握手包:

image

挂载字典,破解出密码:

image

 

也可以用自动模式破解:

image

 

据此,BT5中无线渗透部分的最基本功能示范完毕,如有机会,将另启教程,对BT中其他模块稍加分析。

 

最后值得一提的是,BT5很可能是在UBUNTU的基础上修改的:

{%LQLLR{)_%4HW)AU@KNYQ1

ubuntu10.10和windows双系统启动顺序的修改

我想大部分童鞋装ubuntu的时候,硬盘上的windows肯定还是保留着的,启动电脑时可以选择,想进windows就进windows,想进 ubuntu就进ubuntu。但装完ubuntu后,它默认启动的是ubuntu,这对于使用ubuntu作为系统的童鞋来说没什么,但对那些经常要进 windows的童鞋,每次开机都得按几次向下的箭头,再敲回车,非常不方便,有没有方法,让电脑开机时默认启动windows呢?这个是可以有的,而且 这个也真的有。^_^

说到启动就不得不说GRUB,Linux下大名鼎鼎的启动管理工具(曾经的LILO已经风光不再),当然现在已经是GRUB2了,GRUB2和 GRUB最重要的区别就是,GRUB存放系统启动信息的文件为/boot/grub/menu.lst,而GRUB2则为/boot/grub /grub.cfg。由于ubuntu10.10采用的是GRUB2,所以这里主要讲GRUB2。

终端输入gedit /boot/grub/grub.cfg,打开这个文件,开头几行注释如下:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

这里说得很清楚:不要编辑这个文件,这个文件是根据/etc/grub.d的模板和/etc/default/grub的设置自动生成的,所以网上 流行的编辑这个文件来达到修改启动顺序的方法是不正确的,至少是不合理的,因为一旦更新内核什么的话,这个文件又会自动生成,之前的更新就会失效。

那既然不能修改这个文件,那就看看/etc/grub.d和/etc/default/grub好了,前者是个文件夹,暂时不管,后者是个文件,其内容如下(删去了一些没太大帮助的注释):

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

GRUB_DEFAULT代表的就是启动项的顺序,从数字0开始,依次代表如下启动项(这是在我的电脑上,不同的ubuntu版本和windows系统可能会有一些不同):

Ubuntu, with Linux 2.6.35-28-generic
Ubuntu, with Linux 2.6.35-28-generic (recovery mode)
Memory test (memtest86+)
Memory test (memtest86+, serial console 115200)
Windows 7 (loader) (on /dev/sda1)

windows排第四位(注意,顺序是从0开始计的),所以,把GRUB_DEFAULT的值修改为4,然后别忘了运行命令:

sudo update-grub

好了,重启电脑,默认启动的系统就换到windows了。

另外,还有一种比较高级的方法也可以修改windows为默认启动系统,运行:

sudo mv /etc/grub.d/30_os-prober /etc/grub.d/06_os-prober
sudo update-grub

执行完成后,重启电脑,也能默认启动windows了。

神奇的fastcgi_finish_request

当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法。按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行,就可以使用这个方法。

 

听起来可能有些茫然,我们通过几个例子来说明一下:

 

PHP代码
  1. <?php   
  2.   
  3. echo ‘例子:’;   
  4.   
  5. fastcgi_finish_request();   
  6.   
  7. echo ‘To be, or not to be, that is the question.’;  
  8.   
  9. file_put_contents(‘log.txt’‘生存还是毁灭,这是个问题。’);   
  10.   
  11. ?>  

通过浏览器(不是命令行!)运行此脚本,结果发现并没有输出相应的字符串,但却生成了相应的文件。由此说明在调用fastcgi_finish_request后,客户端响应就已经结束,但与此同时服务端脚本却继续运行!

合理利用这个特性可以大大提升用户体验,趁热打铁再来一个例子:

 

PHP代码
  1. <?php  echo ‘例子:’;  file_put_contents(‘log.txt’date(‘Y-m-d H:i:s’) . " 上传视频\n", FILE_APPEND);  fastcgi_finish_request();  sleep(1); file_put_contents(‘log.txt’date(‘Y-m-d H:i:s’) . " 转换格式\n", FILE_APPEND);  sleep(1); file_put_contents(‘log.txt’date(‘Y-m-d H:i:s’) . " 提取图片\n", FILE_APPEND);  ?>  

代码里用sleep模拟一些耗时的操作,浏览时没有被堵塞,程序却都执行了,具体看日志。

末了给您提个醒,Yahoo在Best Practices for Speeding Up Your Web Site中提到了Flush the Buffer Early,也就是利用PHP中的flush方法把内容尽快发到客户端去,虽然表面上它和本文介绍的fastcgi_finish_request有些许的类似,但本质上完全不同,别混淆了。

 

为VMware Linux添加虚拟硬盘

场景:VMware安装linux的时候默认分配的空间是4GB,可能会不够,这个时候可以通过增加一块虚拟硬盘,将/usr或其他内容拷贝过去解决这个问题:

创建虚拟硬盘
1、关闭VM中正在运行的虚拟系统;
2、在虚拟系统名称上点右键->Virtual Machine Settings;
3、在Hardware页点“Add”->Add a hard disk->Create a new virtual disk->SCSI(recommended)->分配空间大小->OK;
4、可以看见Hardware中出现了一块新的硬盘Hard Disk 2。

对虚拟硬盘进行分区和格式化
——————————————————————————-
## 查看目前系统上有几块硬盘
[root@zhou-desktop ~]# fdisk -l

Disk /dev/hda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *         132        1305     9430155   83  Linux
/dev/hda2               1         131     1052226   82  Linux swap / Solaris

Partition table entries are not in disk order

Disk /dev/hdb: 10.7 GB, 10737418240 bytes
15 heads, 63 sectors/track, 22192 cylinders
Units = cylinders of 945 * 512 = 483840 bytes

Disk /dev/hdb doesn’t contain a valid partition table
——————————————————————————-
对/dev/hdb分区进行分区
[root@zhou-desktop ~]# fdisk /dev/hdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won’t be recoverable.

The number of cylinders for this disk is set to 22192.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition’s system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): p        ## 打印出目前该硬盘下的分区列表

Disk /dev/hdb: 10.7 GB, 10737418240 bytes
15 heads, 63 sectors/track, 22192 cylinders
Units = cylinders of 945 * 512 = 483840 bytes

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n        ## 增加一个分区
Command action
   e   extended
   p   primary partition (1-4)
p                            ## 通常选择主分区,所以这里选p
Partition number (1-4): 1    ## 第一个分区,选1;第二个分区,选2,依次类推
First cylinder (1-22192, default 1): ## 默认值,回车
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-22192, default 22192):
## 如果要分区10G,这里可以直接输入:+10240M,因为这里要全部使用硬盘空间,则用默认
Using default value 22192

Command (m for help): p

Disk /dev/hdb: 10.7 GB, 10737418240 bytes
15 heads, 63 sectors/track, 22192 cylinders
Units = cylinders of 945 * 512 = 483840 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1       22192    10485688+  83  Linux

## 第一个分区已经分好了,接下来把这个分区写入硬盘,用w
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

## 下面的工作就是对该硬盘进行格式,格式化成ext3
[root@zhou-desktop ~]# mkfs.ext3 /dev/hdb1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1310720 inodes, 2621422 blocks
131071 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
## 检查一下,是否已经格式好
[root@zhou-desktop ~]# fdisk -l

Disk /dev/hda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *         132        1305     9430155   83  Linux
/dev/hda2               1         131     1052226   82  Linux swap / Solaris

Partition table entries are not in disk order

Disk /dev/hdb: 10.7 GB, 10737418240 bytes
15 heads, 63 sectors/track, 22192 cylinders
Units = cylinders of 945 * 512 = 483840 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1       22192    10485688+  83  Linux
[root@zhou-desktop ~]#

## 挂载虚拟硬盘
把/dev/hdb1挂载到/mnt/ext下
[root@zhou-desktop ~]#  mount /dev/hdb1 /mnt/ext  

## 重启系统之后,再挂载看是否成功
[root@zhou-desktop mnt]# df -lh
文件系统              容量  已用 可用 已用% 挂载点
/dev/hda1             8.8G  2.7G  5.6G  33% /
tmpfs                 252M     0  252M   0% /dev/shm
/dev/hdb1             9.9G  151M  9.2G   2% /mnt/ext

## 转移数据
1、/usr中的全部数据
2、清空usr目录:
    # rm -r /usr
    # mkdir /usr
3、卸载刚才挂上的虚拟硬盘,重新将它挂载到usr目录:
    # umount /mnt/ext
    # mount /dev/hdb1 /usr
4、 ## 用vi修改/etc/fstab,使系统启动就可以自动挂载
    # vim /etc/fstab
    在内容中加上一行:
    /dev/sdb1                /usr                     ext3     defaults         1 2

5、Ok,重新启动之后,可以查看现在的硬盘使用情况了:
[root@zhou-desktop mnt]# df -lh
文件系统              容量  已用 可用 已用% 挂载点
/dev/hda1             8.8G  2.7G  5.6G  33% /
tmpfs                 252M     0  252M   0% /dev/shm
/dev/hdb1             9.9G  151M  9.2G   2% /usr

Sh脚本异常提示: /bin/sh^M: bad interpreter: No such file or directory

在Linux中执行.sh脚本,异常提示/bin/sh^M: bad interpreter: No such file or directory。

分析:
这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。

解决:

1)在windows下转换: 
利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UltraEdit):File–>Conversions–>DOS->UNIX即可。 
或者按Ctrl+H,将文本内容转换为十六进制,然后其中的0D 0A(Dos下的回车)替换为0A(Unix下的回车),但是这种方式还是要注意修改后保存时文本的类型,比较推荐的是下面第二种方式。

2)也可在Linux中转换: 
首先要确保文件有可执行权限 
#sh>chmod a+x filename

然后修改文件格式 
#sh>vi filename

利用如下命令查看文件格式 
:set ff 或 :set fileformat

可以看到如下信息 
fileformat=dos 或 fileformat=unix

利用如下命令修改文件格式 
:set ff=unix 或 :set fileformat=unix

:wq (存盘退出)

最后再执行文件 
#sh>./filename