1.后门病毒密码破解后门
2.freebsd下jail命令说明
后门病毒密码破解后门
入侵者常使用后门病毒以获得对Unix机器的源码访问,并通过破解密码制造后门。安装破解口令薄弱的源码帐号是他们最常用的方法,即使管理员封了入侵者的安装当前帐号,新的源码帐号仍可能成为重新入侵的后门。入侵者通常寻找口令薄弱的安装恶意爬虫 源码未使用帐号,并将口令改得更复杂,源码使管理员难以发现这些已被修改的安装帐号。 在连网的源码Unix机器中,如Rsh和Rlogin等服务基于rhosts文件使用简单的安装认证方法。入侵者只需向某用户的源码rhosts文件中输入"+ +",即可允许任何人从任何地方无须口令进入该帐号,安装尤其当home目录通过NFS向外共享时,源码入侵者会更热衷于此。安装这些帐号也成为了入侵者再次侵入的源码后门。许多人更喜欢使用Rsh,因为它通常缺少日志能力。许多管理员经常检查"+ +",但入侵者通常会设置来自网上的另一个帐号的主机名和用户名,以避免被发现。 校验和及时间戳后门早期,入侵者会用自己的trojan程序替代二进制文件。系统管理员会依据时间戳和系统校验和辨别文件是否已被改变。入侵者发展了使trojan文件和原文件时间戳同步的新技术。他们首先将系统时钟拨回到原文件时间,然后调整trojan文件的时间为系统时间。一旦二进制trojan文件与原文件精确同步,就可以将系统时间设回当前时间。sum程序基于CRC校验很容易被骗过。入侵者设计出可以将trojan的校验和调整到原文件校验和的程序。MD5是被大多数人推荐的,MD5使用的算法目前没人能骗过。 Login后门在Unix里,login程序通常用于对telnet来的用户进行口令验证。入侵者获取login.c的原代码并修改,使其在比较输入口令与存储口令时先检查后门口令。如果用户输入后门口令,它将忽视管理员设置的口令,让用户长驱直入。这将允许入侵者进入任何帐号,甚至root。写真自动采集源码由于后门口令在用户真实登录并被日志记录到utmp和wtmp前产生访问,入侵者可以登录获取shell,而不暴露该帐号。管理员注意到这种后门后,会用strings命令搜索login程序以寻找文本信息。许多情况下,后门口令会原形毕露。入侵者开始加密或更好地隐藏口令,使strings命令失效。因此,管理员更多地使用MD5校验和检测这种后门。 Telnetd后门当用户telnet到系统,监听端口的inetd服务接受连接,随后传递给in.telnetd运行login。一些入侵者知道管理员会检查login是否被修改,就着手修改in.telnetd。in.telnetd内部有一些对用户信息的检验,如用户使用的终端类型。入侵者可以设置后门,当终端设置为"letmein"时,产生一个无需任何验证的shell。入侵者已在某些服务中设下后门,对来自特定源端口的连接产生后门。 服务后门几乎所有网络服务都曾被入侵者设为后门。finger、rsh、rexec、rlogin、ftp、inetd等服务的被修改版本随处可见。这些程序有时使用非标准的服务,或者被加入到inetd.conf作为新服务运行。管理员应非常注意这些服务是否正在运行,并使用MD5对原服务程序进行校验。 Cronjob后门Unix上的Cronjob可以按时间表调度特定程序的运行。入侵者可以加入后门shell程序,使它在1AM到2AM之间运行,那么每晚有一个小时可以获得访问。也可以查看Cronjob中经常运行的合法程序,同时置入后门。kmp 算法 c源码 库后门几乎所有UNIX系统使用共享库。入侵者在如crypt.c和_crypt.c这些函数中设下后门。login.c等程序调用crypt(),当使用后门口令时,产生一个shell。因此,即使管理员使用MD5检查login程序,仍能产生后门函数。许多管理员并不会检查库是否被做为后门。对于许多入侵者来说,有一个问题:一些管理员对所有东西都做了MD5校验。有一种办法是入侵者对open()和文件访问函数设下后门。后门函数读原文件,但执行trojan后门程序。因此,当MD5读这些文件时,校验和一切正常。但当系统运行时,将执行trojan版本的。即使trojan库本身也可躲过MD5校验。对于管理员来说,有一种方法可以找到后门,就是静态编连MD5校验程序然后运行。静态连接程序不会使用trojan共享库。 内核后门内核是Unix工作的核心。用于库躲过MD5校验的方法同样适用于内核级别,甚至连静态连接多不能识别。一个后门作得很好的内核是最难被管理员查找的,所幸的是内核的后门程序还不是随手可得,不是每个人都知道它事实上传播有多广。 文件系统后门入侵者需要在服务器上存储他们的掠夺品或数据,而不能被管理员发现。入侵者的文章常包含exploit脚本工具、后门集、嗅探日志、邮件备份、源代码等。有时为了防止管理员发现这些大文件,入侵者会修补"ls"、"du"、免费直播app源码"fsck"以隐匿特定的目录和文件。在低级级别,入侵者会做漏洞,以专有的格式在硬盘上割出一部分,且表示为坏的扇区。因此入侵者只能用特别的工具访问这些隐藏的文件。对于普通管理员来说,很难发现这些"坏扇区"里的文件系统,但它们确实存在。 Boot块后门在PC世界里,许多病毒藏匿于根区,而杀病毒软件就是检查根区是否被改变。Unix下,多数管理员没有检查根区的软件,所以一些入侵者将一些后门留在根区。 隐匿进程后门入侵者通常想隐匿他们运行的程序。这些程序一般是口令破解程序和监听程序(sniffer)。有许多方法可以实现,这里是最通用的:编写程序时修改自己的argv[]使它看起来象其他进程名。可以将sniffer程序改名类似in.syslog再执行。因此,当管理员用"ps"检查运行进程时,出现的是标准服务名。可以修改库函数致使"ps"不能显示所有进程。可以将一个后门或程序嵌入中断驱动程序,使它不会在进程表显现。Rootkit 最流行的后门安装包之一是Rootkit。它很容易用web搜索器找到。从Rootkit的README文件中,可以找到一些典型的文件:z2 - removes entries from utmp,wtmp,and lastlog。Es - rokstar's ethernet sniffer for sun4 based kernels。Fix - try to fake checksums,install with same dates/perms/u/g。Sl - become root via a magic password sent to login。Ic - modified ifconfig to remove PROMISC flag from output。ps: hides the processes。Ns - modified netstat to hide connections to certain machines。Ls - hides certain directories and files from being listed。日内突破指标源码du5 - hides how much space is being used on your hard drive。ls5 - hides certain files and directories from being listed。 网络通行后门入侵者不仅想隐匿在系统里的痕迹,而且也要隐匿他们的网络通行。这些网络通行后门有时允许入侵者通过防火墙进行访问。有许多网络后门程序允许入侵者建立某个端口号,并通过非标准网络端口实现访问。因为这是通过非标准网络端口的通行,管理员可能忽视入侵者的足迹。这种后门通常使用TCP、UDP和ICMP,但也可能是其他类型报文。 TCP Shell后门入侵者可能在防火墙没有阻塞的高位TCP端口建立这些TCP Shell后门。许多情况下,他们用口令进行保护,以免管理员连接上后立即看到是shell访问。管理员可以用netstat命令查看当前的连接状态,那些端口在侦听,目前连接的来龙去脉。通常这些后门可以让入侵者躲过TCP Wrapper技术。这些后门可以放在SMTP端口,许多防火墙允许email通行。 UDP Shell后门管理员经常注意TCP连接并观察其怪异情况,而UDP Shell后门没有这样的连接,所以netstat不能显示入侵者的访问痕迹。许多防火墙设置成允许类似DNS的UDP报文的通行。通常入侵者将UDP Shell放置在这个端口,允许穿越防火墙。 ICMP Shell后门Ping是通过发送和接受ICMP包检测机器活动状态的通用办法之一。许多防火墙允许外界ping它内部的机器。入侵者可以放数据入Ping的ICMP包,在ping的机器间形成一个shell通道。管理员也许会注意到Ping包暴风,但除了他查看包内数据,否者入侵者不会暴露。 加密连接管理员可能建立一个sniffer试图某个访问的数据,但当入侵者给网络通行后门加密后,就不可能被判定两台机器间的传输内容了。 Windows NT由于Windows NT不能轻易地允许多个用户象Unix下访问一台机器,对入侵者来说就很难闯入Windows NT,安装后门,并从那里发起攻击。因此,你将更频繁地看到广泛的来自Unix的网络攻击。当Windows NT提高多用户技术后,入侵者将更频繁地利用Windows NT。如果这一天真的到来,许多Unix的后门技术将移植到Windows NT上,管理员可以等待入侵者的到来。Windows NT已经有了telnet守护程序。通过网络通行后门,入侵者发现安装它们是可行的。 解决当后门技术越先进,管理员越难判断入侵者是否入侵或他们是否被成功封杀。扩展资料
后门病毒的前缀是:Backdoor。该类病毒的特性是通过网络传播,给系统开后门,给用户电脑带来安全隐患。年年初,IRC后门病毒开始在全球网络大规模出现。一方面有潜在的泄漏本地信息的危险,另一方面病毒出现在局域网中使网络阻塞,影响正常工作,从而造成损失。由于病毒的源代码是公开的,任何人拿到源码后稍加修改就可编译生成一个全新的病毒,再加上不同的壳,造成IRC后门病毒变种大量涌现。还有一些病毒每次运行后都会进行变形,给病毒查杀带来很大困难。freebsd下jail命令说明
Jail 命令在FreeBSD 4.0中首次出现。用于“监禁”进程以及其衍生的子进程。而且jail和FreeBSD本身的secure_level合并使用可以显著限制(jail中的)root的能力。
假设某一个应用程序在系统内中运行,一段时间之后该应用程序被发现包含有致命的安全漏洞,如果在通常的系统中,这个应用程序可能已经在这个上面构成了漏洞,甚至cracker们已经成功地攻破这一应用并且成为root,控制了系统;但假如该应用程序放在jail内运行,即使cracker们已经攻破系统,也无法访问到jail之外系统的其他部分。因为尽管应用程序可以在jail之中自由活动,但是无法获得更多权限以及访问在jail之外的任何资源。通过这一特性,在系统管理上面可以做到防范未知漏洞,避免这些潜在的漏洞对整个系统的安全构成威胁。
jail通常有两类应用方向:
一、对应用程序的活动能力进行限制。
比如ftp服务器,DNS服务器,这样一些东西,比如wu-ftpd,bind这样一些隔三岔五就会爆出漏洞的“著名”软件放到jail里面会让人更加放心。
二、受控制的主机。
某些时候,需要对外提供有shell的管理性访问,比如作为某公司A,其合作单位B有某项目需要在A的机器上获得shell乃至root权限,这就需要提供受控制的主机,用户可以在jail里面控制几乎所有他需要的资源(除了jail不允许他访问的部分)。
第一类应用并不是非常复杂,实际上这类应用实现方法相对简单,只要在Linux下面玩过chroot就没有什么大问题;第二类应用则有很多有趣的特性,而jail最吸引人的部分也是这些很有趣的特性。
下面从最简单的部分开始:
第一类:限制应用程序活动能力
首先按照通常习惯的方式安装好你想要jail的应用程序,下面我们将会使用pure-ftpd(我不是很熟悉它,只不过顺手拿过来而已,据说还算好用)作为例子。
这个ftpd的安装位置,默认为:/usr/local/sbin;/usr/local/bin;在/etc下面还有一些相关的文件,整个结构感觉不是特别干净,不过它运行需要的东西并不很多,包括 /usr/local/sbin/pure-ftpd , /etc/xxx /etc/xxxx 这样一些文件。
接下来先用ldd看看/usr/local/sbin/pure-ftpd需要的那些运行库:
tester# cd /usr/local/sbin
tester# ldd pure-ftpd
pure-ftpd:
libcrypt.so.2 = /usr/lib/libcrypt.so.2 (0xb)
libpam.so.1 = /usr/lib/libpam.so.1 (0x)
libc.so.4 = /usr/lib/libc.so.4 (0xd)
这样我们的工作任务清单上面就多出来这样一些东西了: /usr/lib/......
使用ldd我们还可以获得其他一些需要放入jail的程序的运行库位置,信息搜集完成之后,我们开始建立jail目录树(这里我们假定jail环境构造在/jail内,当然你也可以选择你喜欢的位置):
tester# mkdir -p /jail/usr/{ lib,libexec,local/sbin,local/bin,local/etc,etc,var/run,var/log}
然后将上面列出的,libcrypt.so.2 等这些文件都复制到对应位置。当然还有我们FreeBSD下非常重要的一个文件ld-elf.so.1,尽管ldd没有给出提示,也还需要复制过去,否则应用程序也跑不起来。这样我们就获得了一个很干净(最小化)的应用程序运行环境jail命令的格式是:
jail path hostname ip-number command
下面开始在jail里面运行它:
tester# jail /jail jailed.host.name $JAILED_IP_ADDR /usr/local/sbin/pure-ftpd [options]
这里,/jail是你的jail环境的位置,也就是被jail之后,应用程序“以为”自己所在的“/”的位置;jailed.host.name是你打算提供给这个jail环境的主机名,某些情况下,应用程序需要知道这个变量;$JAILED_IP_ADDR是你打算提供ftp服务(如果是其他应用软件,那就是其他服务咯,比如web服务)的那个IP地址,至于/usr/local/sbin/pure-ftpd [options] 则是你打算运行的那个应用程序在jail里面的所在位置以及运行所需的参数。
然后用ps 查看一下进程状态:
tester# ps -axf |grep pureftpd
? IsJ 0:. pure-ftpd (SERVER) (pure-ftpd)
可以看到所有这些pure-ftpd的进程都有一个J,标志这这一程序正在jail下面运行。
这时候可能会有一些管理用的程序无法正常工作,因为这些管理用程序无法找到他们需要访问的那些文件,只要找到这些应用程序需要调用的文件(比如日志文件)的位置,然后制造一个soft link就可以了,通常这些管理程序都可以继续正常运行。
到此为止,一个针对应用程序的jail构造完成。
第二类,构造受控制的主机
在这种情况下面,我们首先需要构造一个当前版本操作系统的完整镜像(下面这个脚本是从FreeBSD 4.6r的man page里面来的,实际上4.5以及之前的man page在构造jail目录树脚本上面都有一定的问题,4.6才纠正过来):
tester# cat /root/mkjail.sh
jailhome=/data/jail
cd /usr/src
mkdir -p $jailhome
make world DESTDIR=$jailhome
cd etc
make distribution DESTDIR=$jailhome -DNO_MAKEDEV_RUN
cd $jailhome/dev
sh MAKEDEV jail
cd $jailhome
ln -sf dev/null kernel
^D
tester# sh /root/mkjail.sh
最后在/data/jail下面获得一个完整的根据当前源码树编译得来的jail目录树。
接下来:
/
*tester# mkdir $jailhome/stand
tester# cp /stand/sysinstall $jailhome/stand
tester# jail $jailhome jailed.system.box ..0. /bin/csh
(这时候就获得了一个jail下面的shell)
jailed# /stand/sysinstall
*/
通过sysinstall这个程序可以对jail系统的常用变量进行设置,比如时区,DNS,Mail。还有jail系统在“启动”的时候需要执行的程序。
如果你足够熟悉这个系统,可以考虑自己手工一个个的做过来。
复制/etc/localtime 到 $jailhome/etc,使jail环境下的应用程序可以得到正确的时间;
复制/etc/resolv.conf 到 $jailhome/etc/resolv.conf 使jail下面可以正确解释域名;
在jail里面运行newaliases 避免sendmail的不断抱怨;
如果打算运行inetd,需要修改inetd的启动参数,加上 -a $LISTEN_ADDR 选项(因为jail无法自己获得当前系统的ip地址,所以必须提供一个ip地址给它)在rc.conf里面看起来应该是这样:
inetd_flags="-wW -a ..0."
将系统本身的syslogd 运行加上 -ss 选项,避免这个syslog启动****端口;修改/etc/rc.conf 加上 syslogd_flags="-ss" (对$jailhome/etc/rc.conf也如法炮制)
在jail内创建一个空的/etc/fstab,在rc.conf里面去掉网卡地址的绑定,这样在jail系统在启动的时候不会抱怨。
为了实际运行这个jail系统,还需要为jail提供一个可以连接的IP地址,这个地址可以与实际环境同一个子网,也可以处于另外一个子网中。
tester# ifconfig fxp0 ..0. netmask 0xffffffff alias
(这里为网卡fxp0绑定了一个别名,准备提供服务。)
所有这些东西都执行完了以后,可以有几个方法把jail系统启动起来,一个是在jail外面运行
tester# jail $jailhome jailed.system.box $jail_IP_ADDR /bin/sh $jailhome/etc/rc
一个是单纯把ssh/telnetd这样一些提供远程访问的服务在jail内启动起来:
tester# jail $jailhome jailed.system.box $jail_IP_ADDR /bin/sh $jailhome/bin/inetd -wW -a $jail_IP_ADDR
然后从外面登录系统,运行、配置jail系统环境,或者手工启动需要的应用服务。
如果打算运行一个用于生产环境的jail系统的话,推荐使用第一种方法,并且把启动jail的命令放到(实际环境的)/etc/rc.local脚本里面去,这样jail系统可以有比较完备,与实际机器相类似的环境。
这样一个jail系统就算构造完成并且可以正常运作,加上在实际环境里面定期的严格的备份,安全检查与审计,就可以得到一个很不错的安全系统。一般的scriptkids已经无法对你的系统构成实际威胁,即使是某些与黑帽子走得很近的人在漏洞公开之前得到实际的攻击脚本,并且进入你的系统,他也只能在jail里面活动,而且你可以知道他什么时候进入和离开系统,做了什么。这样你可以很轻松的恢复系统和防范下一次未知的攻击。
在jail系统的管理上面有几个问题需要注意:
1. jail里面的帐号、密码是跟实际系统不同的,但是在jail之外ps或者查看jail目录树内的文件时,那些jail内部的uid会被看成外部的uid,因此最好把jail里面的/etc/adduser.conf进行修改,把他们的uid起始号码放大,比如:uid_start="",这样当你在jail外部进行文件、进程管理的时候不至于误会文件或者进程的宿主。
2. jail内的任何活动,其能力都受到了限制。比如top/vmstat这样的东西都不能使用,mknod,dd等等这样需要访问直接硬件的东西也无法工作。所以在jail内监控系统运行状态也比较难。
3. 当想要远程关闭jail系统的时候,可以有两种方法,一是进入jail之后kill -TERM -1 或者 kill -KILL -1 ,这样向所有该jail内的进程发送SIGTERM或者SIGKILL信号,也可以在jail里面运行/etc/rc.shutdown来关闭jail。如果是本地想要关闭jail倒是简单,只要把所有带有J标记的进程干掉就可以了。
4. 一个系统可以运行多个jail,各个jail之间无法互相干涉,如果在jail外面使用
tester# jail $jailhome jailed.system.box $jail_IP_ADDR /path/to/application
这种方式运行某个应用程序,下一次试图通过运行
tester# jail $jailhome jailed.system.box $jail_IP_ADDR /bin/csh
这种方式获得的jail过的shell来管理该应用程序将会失败。因为这时是两个各自独立的jail,互相不能干涉。为了能对jail系统内进程灵活地进行管理,推荐在jail里面除开应用软件之外,再启动telnetd或者sshd之类的服务,这些服务此时与应用程序运行在同一个jail里面,就可以通过远程登入系统后获得与那些应用程序在同一个jail内的shell。
5. jail系统内的所有应用软件版本号应该与外部实际系统保持一致。当外部系统的源码同步到某个版本并且重新做过make world之后,推荐也重新生成一次jail,以避免某些可能的莫名其妙的错误。
6. 另外有一个做法不知道是否正确,在jail里面每次使用ps的时候,系统都会报告没有/var/run/dev.db文件,让人感觉很不舒服,复制实际系统的/var/run/dev.db 到 $jailhome/var/run/ ,就不会再碰到这个问题。