一、重灌knoppix
knoppix是一个基于debian的在光盘运行的linux,关于knoppix重新定制网上有很多文章了,我其实只是自己做的记录而已。
1、解包ISO
没有空余的机器或空余的分区,只能用虚拟机来折腾。在VPC上添加一个新的linux系统,选好内存大小,硬盘映像文件,然后启动这个系统,在菜单CD -> Capture Image...选择KNOPPIX_V3.2-2003-05-03-EN.iso就可以了。
启动选项输入knoppix 2进入字符模式,用fdisk给/dev/hda分一个区,5个G应该足够,然后用mkfs.ext2给/dev/hda1创建文件系统。再把这个分区mount上:
# mount -o rw /dev/hda1 /mnt/hda1
建立工作目录:
# mkdir /mnt/hda1/knx # mkdir -p /mnt/hda1/knx/master/KNOPPIX # mkdir -p /mnt/hda1/knx/source/KNOPPIX
如果机器没有足够内存应该建立一个swap文件,因为最后压缩文件系统的时候会暂时把压缩文件写入内存:
# cd /mnt/hda1/knx ; dd if=/dev/zero of=swapfile bs=1M count=750 ; mkswap swapfile ; swapon swapfile
拷贝knoppix文件,cp的p参数是保持文件的所有属性,这里的拷贝会持续比较长时间。
# cp -Rp /KNOPPIX/* /mnt/hda1/knx/source/KNOPPIX
以下的拷贝是为了重新编译内核以后,重做iso以新内核启动。否则只需拷贝boot.img就可以了。
# cd /cdrom/KNOPPIX # cp boot.img boot.cat KNOPPIX /mnt/hda1/knx/master/KNOPPIX
进入chroot环境对knoppix进行大刀阔斧的裁剪了:
# chroot /mnt/hda1/knx/source/KNOPPIX
2、裁剪和替换
进入chroot环境后,mount上proc:
# mount -t proc /proc proc
配置好网络准备就绪。由于是基于debian操作系统的,所有的软件包都通过apt系统来维护,所以可能需要修改/etc/apt/sources.list文件,使用速度较快的镜像站点。
然后用apt-get --purge remove program的命令方式删除不需要的东东,减少空间可以装其他自己想要的东东。/usr/share/doc这个目录的东西也比较大,100多M,也剁了。
通过执行deborphan可以找到一些不再关联的包,这些也可以安全的删除。
由于希望knoppix适合honeynet GenII的网桥,必须给内核打补丁:
# apt-get install kernel-source-2.4.20 # apt-get install kernel-patch-xfs # wget http://users.pandora.be/bart.de.schuymer/ebtables/v2.0/v2.0./ebtables-v2.0.003_vs_2.4.20.diff # wget http://users.pandora.be/bart.de.schuymer/ebtables/br-nf/bridge-nf-0.0.10-against-2.4.20.diff # tar jxf kernel-source-2.4.20.tar.bz2 # cp linux/.config kernel-source-2.4.20/ # rm linux # ln -s kernel-source-2.4.20 linux # cd linux # ../kernel-patches/all/apply/xfs # patch -p1 < ../ebtables-v2.0.003_vs_2.4.20.diff # patch -p1 < ../bridge-nf-0.0.10-against-2.4.20.diff
我们使用了knoppix的内核配置文件.config,这里要注意的是ebtables的补丁一定要在bridge-nf打,否则会出错误。
# make menuconfig
在内核选项里要把802.1d Ethernet Bridging及相关选项选上,其他的可以根据自己的需求更改定制,执行完这一步打上knoppix的内核补丁:
# patch -p1 < ../knoppix-kernel.patch
然后编译内核:
# make dep # make bzImage # make modules # make moduels_install
编译模块需要不少时间。安装完以后可以把konippix原来内核相关的东西删除:
# rm -rf /usr/src/linux-2.4.20-xfs # rm -rf /lib/modules/2.4.20-xfs # rm -rf /boot/* # rm /vmlinuz
把新的内核拷过去:
# cp System.map /boot/System.map-2.4.20 # cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.20 # cd /boot # ln -s System.map-2.4.20 System.map # ln -s vmlinuz-2.4.20 vmlinuz # cd / # ln -s boot/vmlinuz-2.4.20 vmlinuz
必须用新内核重新编译cloop.o模块:
# cd /tmp # wget http://www.knopper.net/download/knoppix/cloop_0.68-2.tar.gz # tar xzf cloop_0.68-2.tar.gz # cd cloop-0.68 # make KERNEL_DIR=/usr/src/linux
由于knoppix通过boot.img来启动系统,必须修改之,按ALT+F2进入另外一个非chroot的shell,把boot.img拷过来:
# cp /mnt/hda1/knx/master/KNOPPIX/boot.img /mnt/hda1/knx/source/KNOPPIX/var/tmp
在chroot的shell环境下进行修改。
# cd /tmp # mkdir boot mroot # mount boot.img boot -t msdos -o loop=/dev/loop0 # cp boot/miniroot.gz . # gzip -d miniroot.gz # mount miniroot mroot -t ext2 -o loop=/dev/loop1 # cp /tmp/cloop-0.68/cloop.o /tmp/mroot/modules/
由于我的内核较大,索性把scsi光驱支持去掉,这样启动的时候速度也会快不少:
# rm -rf /tmp/mroot/modules/scsi
修改/tmp/mroot/linuxrc,设置SCSI_MODULES=""。
其实可以用winimage把boot.img扩大,那么这些东西就可以轻易的放入,用多个启动映像文件,多一种选择更好。注意映像文件名要使用8.3格式,后面提到的diskemu只能使用这个格式。
把miniroot打包回去:
# umount /tmp/mroot # gzip -9 miniroot # cp miniroot.gz boot/
把新的内核映像也拷回去:
# cp /boot/vmlinuz-2.4.20 /tmp/boot/vmlinuz
修改/tmp/boot目录下syslinux.cfg文件的DEFAULT vmlinuz设置,把lang=us改为lang=cn 2,把下面所有的lang=us改为lang=cn。这样knoppix重新启动的时候默认把语言属性改为中文,而且默认使用字符模式,没有必要一启动就进入xwindow。
还可以修改/tmp/boot下的boot.msg、f2、logo.16这几个标记。这个新的boot.img就可以把knoppix引导到新的内核,先重新灌装,然后在新的内核下安装与内核相关的驱动。退出chroot环境,用新的boot.img重新制作iso:
# cp /mnt/hda1/knx/source/KNOPPIX/var/tmp/boot.img /mnt/hda1/knx/master/KNOPPIX/boot.img # cd /mnt/hda1/knx/ # mkisofs -pad -l -r -J -v -V "KNOPPIX" -b KNOPPIX/boot.img -c KNOPPIX/boot.cat -hide-rr-moved -o /mnt/hda1/knx/knoppix.iso /mnt/hda1/knx/master
制作iso速度比较快,把/mnt/hda1/knx/knoppix.iso传到自己的系统里面,然后用这个iso启动虚拟机。
3、更新和安装新的驱动
重新启动后可以用uname -a看看是否已经是新内核。
增强对无线网卡的支持。默认linux是不支持atmel芯片的无线网卡,需要另外安装,这里使用是非官方发布版本:
# chroot /mnt/hda1/knx/source/KNOPPIX # cd /tmp # wget http://atmelwlandriver.sourceforge.net/snapshots/atmelwlandriver-ss-20030507.tar.gz # tar xzf atmelwlandriver-ss-20030507.tar.gz # cd atmelwlandriver # make config Build all [y/N] <-- 这里选y把所有的驱动都编译了。 # make all # make install
对于orinoco的驱动linux自带内核模块,但默认的驱动不支持无线网卡的monitor模式,airsnort主站提供了相应补丁,可以通过给pcmcia-cs打补丁,也可以通过给orinoco驱动打补丁,这样更简单一些:
# cd /tmp # wget http://ozlabs.org/people/dgibson/dldwd/orinoco-0.13b.tar.gz # wget http://airsnort.shmoo.com/orinoco-0.13b-patched.diff # tar xzf orinoco-0.13b.tar.gz # cd orinoco-0.13b # patch -p1 < ../orinoco-0.13b-patched.diff # make # make install
linux-wlan-ng的驱动也更新一下:
# cd /tmp # wget ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-0.2.1-pre5.tar.gz # tar xzf linux-wlan-ng-0.2.1-pre5.tar.gz # cd linux-wlan-ng-0.2.1 # make config <-- 这里可以基本上把所有的驱动都加上 # make all # make install
prism的芯片也能使用orinoco的驱动,如果确认一些网卡使用的是prism芯片可以修改/etc/pcmcia/config文件,使用的驱动改一下,比如Compaq WL100的网卡原来使用orinoco的驱动,可以把它改成:
bind "prism2_cs"
这样插入Compaq WL100的网卡就会使用linux-wlan-ng的驱动,其它的网卡也可做类似修改,但你得知道网卡使用的芯片。
4、xwindow桌面环境的修改和汉化
KNOPPIX默认使用KDE作为桌面环境,这实在太大了。除了fluxbox、wmake、twm,删除了其它所有桌面环境,fvwm也是非常不错的,直接用apt安装。使用fluxbox作为默认的桌面。输入法使用fcitx,非常不错,而且已经进了debian的sid,以后更新就方便了。修改/etc/init.d/knoppix-autoconfig的1026行附近关于DESKTOP变量的赋值改为如下:
# Also read desired desktop, if any DESKTOP="$(getbootparam desktop 2>/dev/null)" # Allow only supported windowmanagers case "$DESKTOP" in fvwm|windowmaker|wmaker|fluxbox|twm) ;; *) DESKTOP="fluxbox"; ;; esac
knoppix关于xwindow的脚本实际执行的是/etc/X11/Xsession.d/45xsession,里面有启动各种桌面的函数,比如startkde()。需要给fvwm添加一个类似的函数,完全拷贝startfluxbox()。startkde()完全可以删除以节省篇幅。
修改45xsession文件最后部分:
if [ "$LANGUAGE" = "cn" ]; then export XMODIFIERS=@im=fcitx /usr/bin/fcitx & fi
case "$DESKTOP" in fvwm|FVWM) startfvwm ;; fluxbox|FLUXBOX) startfluxbox ;; windowmaker|wmaker|WINDOWMAKER|WMAKER) [ "$FREEMEM" -ge "35000" ] && startwindowmaker || starttwm lowmem 64; ;; twm|TWM) starttwm; ;; *) starttwm invalidwm; ;; esac
这个脚本还有许多地方可以修改,也许你还需要修改/etc/init.d/xsession脚本等等。
字体使用simsun,并且使用firefly的补丁,可以到这里下载: http://debian.ustc.edu.cn/dev/
修改/etc/gtk/gtkrc.zh_CN: style "gtk-default-zh-cn" { fontset = "-misc-simsun-medium-r-normal--14-*-*-*-*-*-iso10646-1, -misc-simsun-medium-r-normal--14-*-*-*-*-*-iso10646-1" } class "GtkWidget" style "gtk-default-zh-cn"
修改/etc/init.d/xsession,默认使用root用户启动X。
5、honeynet功能
# mkdir /honeynet # wget http://honeynet.xfocus.net/papers/honeynet/tools/snort_inline.tgz # wget http://honeynet.xfocus.net/papers/honeynet/tools/sebeksniff-2.0.1.tar.gz # wget http://honeynet.xfocus.net/papers/honeynet/tools/sebek-linux-2.0.1.tar.gz
# apt-get install swatch # apt-get install honeyd
以后再调整。
6、生成压缩文件系统
重灌前建议对系统做一遍升级和清理垃圾的工作。
# apt-get -u upgrade <- 这里要注意,有些服务型的软件会加上开机启动脚本,可以用update-rc.d删除。 # apt-get clean
更新关联:
# updatedb # umount /proc
退出chroot环境后压缩文件系统:
# mkisofs -R -U -V "KNOPPIX.net filesystem" -P "KNOPPIX www.knoppix.net" -hide-rr-moved -cache-inodes -no-bak -pad /mnt/hda1/knx/source/KNOPPIX | nice -5 /usr/bin/create_compressed_fs - 65536 > /mnt/hda1/knx/master/KNOPPIX/KNOPPIX
二、制作winpe
作为一个工具盘如果有windows环境那就更好了,winpe解决了这个问题。 定制一个winpe非常容易,下面介绍的英文版的定制:
1、首先拷贝winpe光盘的winpe目录到硬盘,假设拷贝的硬盘目录是:e:winpe。
这个用资源管理器拷贝就可以了。
2、然后从微软网站下载MSA EDC Deployment Kit。
e: emp>wget http://download.microsoft.com/download/win2000srv/MSAEDC/EDC1.5/NT5/EN-US/05-EDCv1.5DeploymentKit.exe 解开这个包到e: empEDCAPFDeployment,然后:
e: emp>copy EDCAPFDeploymentWinPESupportWINPESYS.INF e:winpe
这里的WINPESYS.INF其实是添加了ramdisk的支持,默认盘符是r,大小是4M。可以通过修改HKLM,"SYSTEMControlSet001Services
amdrvParameters","DriveLetter",0000000000,"R:"来改变盘符,修改HKLM,"SYSTEMControlSet001Services
amdrvParameters","DiskSize",0x00010001,0x400000来改版大小。
3、准备winxp的光盘,比如在f盘。很奇怪那个pebuilder为什么要用sp1的光盘,我发现就xp的安装也是可以制作的。
4、运行mkimg.cmd脚本,生成winpe的文件。
如果你想让winpe启动的时候在内存执行程序,可以修改e:winpe目录下的config.inf文件,把osloadoptions项改成如下:
osloadoptions=txtsetup.sif,setupdata,"/fastdetect /minint /noguiboot /inram"
但是确定你的系统有256M内存。
如果想修改启动提示信息,修改loaderprompt项。当然这两项都可以不做,直接用以下命令生成winpe文件:
e:winpe>mkimg.cmd f: e: empwinpe.tmp
如果删除i386下的WinSxS目录及其文件,最后做成的iso会不能使用notepad。但是如果直接改微软发布的winpe iso,都会造成notepad不能执行,不知道为什么。
5、拷贝ramdisk的驱动文件
e:winpe>copy e: empEDCAPFDeploymentWinPESupport
amdrv.INF e: empwinpe.tmpI386inf e:winpe>copy e: empEDCAPFDeploymentWinPESupport
amdrv.sys e: empwinpe.tmpI386system32drivers
6、加上erd command 2002
只需拷贝commandshell.exe, common.dll, compmgmt.exe, cs.cfg, dt.cfg, erdcmdr2002.cnt, erdhelp.exe, explorer.exe, fauxshell.dll, fe.cfg, filesearch.exe, locksmith.exe, logoff.exe, logon.exe, ntfsver.exe, pwdserv.exe, tcpcfg.exe, windowsshell.exe这几个文件到e: empwinpe.tmpI386system32下面就可以了。做成iso启动后在system32目录下执行logon就能进入erd,即使不想用erd,还可以使用它的一些工具,比如用tcpcfg就可以方便的配置网络。
7、调整winpe
现在就可以制作iso了,但是这样winpe启动的时候会提示Press any key to boot from CD.,如果没有按键就想从硬盘引导,只需删除e: empwinpe.tmpi386目录下的BOOTFIX.BIN文件就不会有这个提示了。
winpe启动的时候首先会使用e: empwinpe.tmpI386system32startnet.cmd文件,可以编辑这个脚本,使得启动时更加方便。
三、制作iso文件。
DISKEMU是一个多启动光盘常用的软件,而且它使用也非常简单。建立工作目录e:cd,拷贝DISKEM1X.BIN、DISKEMU.CMD到cd目录。在cd目录下建立IMG、KNOPPIX目录。 拷贝KNOPPIX的压缩文件KNOPPIX到e:cdKNOPPIX下,拷贝boot.img到e:cdimgknoppix.img,再拷贝一份到e:cdKNOPPIX下面,否则在使用knx-hdinstsall脚本把knoppix安装到硬盘的时候会不正确。 把e: empwinpe.tmp下所有文件拷贝到e:cd下,拷贝e:winpeETFSBOOT.COM到e:cdimgwinpe.bin。
修改DISKEMU.CMD文件,以下是个参考:
cd img :start cls print print print print print print print print print print 1. KNOPPIX print 2. WindowsPE print r. Reboot print q. Quit to command prompt print Esc. Boot first harddisk print print print print print print print print :mainkey ; timeout is 60 seconds, default key is escape getkey 60 esc onkey 1 goto knoppix onkey 2 goto winpe
onkey f1 goto help onkey q quit onkey r reboot onkey f boot 0 onkey esc boot 80 ; When no key found... goto mainkey ; :help cls print HELP print ---- print + Have ISO9660 filesystem support, you can do "dir" and "cd" print + A "advanced" command prompt to load anything you want print + A simple bootmenu for "less" advanced users print + Autodetection of floppy image types (by filesize) print + Using a bootable Diskemu 1.x CD-Rom, you can even boot images from "non- print bootable" CD-Roms, just swap the CD, type "cd " and you can use that CD. print (Cool!) print + You can create a multiboot bootable CD-Rom using (almost) any recording print software you want print + Supported floppy types: 160KB, 180KB, 320KB, 360KB, 1.2MB, 720KB, 820KB, print 1.44MB, 1.68MB, 1.72MB, 2.88MB print print All supported command are listed below. print print batch boot bootinfotable cd cls dir print echo emusegm getkey goto help keyval print loadsegm onkey print quit readtest reboot print run test type ver print print help <command> (or ?) Displays help about <command> print print Press any key to return to main menu getkey goto start ;
:knoppix print Use KNOPPIX run knoppix.img getkey goto start ;
:winpe print WindowsPE run winpe.bin getkey goto start ;
; EOF
然后就可以制作iso文件了,但是必须要注意iso的格式,不能用iso9660,要使用兼容iso9660文件的Joliet格式,cdimage的-j1参数满足这个条件:
cdimage -ltoolcd -j1 -bloader.bin cd toolcd.iso
OK,用toolcd.iso引导试试。
四、简单使用说明
linux部分:
1、启动菜单选择1是启动没有SCSI的KNOPPIX,但速度比较快,选择2是有SCSI的KNOPPIX,启动检测SCSI设备。 2、vmware里从xwindow退出会造成屏幕变小还没有找到问题所在。 3、如果机器有多个光驱,要放在/dev/cdrom这个光驱里,否则不能启动。 4、可以用knx-hdinstall脚本把系统方便快速的安装到硬盘。
winpe部分:
1、启动后会使用startcmd.net的脚本,首先提示系统分辨率,默认是800x600。 2、提示启动网络还是启动erd command(硬盘需要有win系统,license在光盘根目录)。 3、输入explorer启动erd的资源管理器,硬盘有fat、ntfs分区也可以直接读写。 4、tools目录会加到PATH环境变量里面,里面有很多好玩的东东,你还可以自己再添加。
声明:
由于该光盘包含了很多商业软件,所以没法提供下载的,也不要问我这些东东从那里来。我只是给大家介绍一个工具光盘的制作方法,方便大家做渗透测试、调查取证、入侵检测、网络陷阱等等。
参考: http://www.knoppix.net/docs/index.php/KnoppixRemasteringHowto http://www.knoppix.net/docs/index.php/KnoppixCustomKernelHowto http://www.microsoft.com/technet/itsolutions/edc/pak/build/EDCBLD05.ASP http://honeynet.xfocus.net/papers/gen2/
|