linux隐身登录

ssh隐身登录

前言

之前在打靶机的时候遇见的知识点。今天刚好优化学习一下,如果哪里有错误还请指正,欢迎留言,让更多的师傅们交流学习,还请不要使用文章内容进行非法渗透。本次教程主要用到wlast两个命令

w命令介绍

w 是什么?我用的Ubuntu系统,在ubuntu系统中的w命令,主要用于显示当前当前登录用户的所有信息,包括正在执行的命令。

比如我新建两个ssh连接(也就是两个终端,连同一个服务器)。

image-20241111215444787

终端1:执行 ping www.baidu.com

image-20241111214132393

在ping的过程中,打开终端2,那么就能看到当前用户正在使用 ping 命令

image-20241111214256345

但是我们使用 w 命令的时候,此时能看到当前登录的信息,这个TTY下的pts/0pts/2意思就是伪终端的区分,也就是两个不同的ssh连接。两个ssh的连接,连接的同一个服务器

image-20241111214905924

last命令

last命令主要用于显示用户的登录历史记录。这个命令会读取/var/log/wtmp文件(在某些系统中可能是/var/log/btmp

同样的我们登录两个ssh连接,使用这个命令也能看到有两台机器登录

image-20241111222724875

隐藏登录

真实渗透过程中是相当致命的。那么如何隐藏自己呢?那么就要用到如下命令

ssh -T root@xxx.xxx.xxx.xxx /bin/bash -i 

命令拆解

-T :告诉ssh客户端,不要分配一个TTY(伪终端)

root :连接用户

xxx.xxx.xxx.xxx :连接的服务器ip地址

/bin/bash :在远程服务器上启动一个交互式的Bash shell。

效果如下,默认登录一个终端的时候,会有一个pts/0,但是这里已经成功隐藏了登录

image-20241111220820214

配置一台正常连接的ssh终端,也可以看到,我同时登录了两台服务器,但是只显示了一台服务器登录。

ssh  root@xxx.xxx.xxx.xxx

image-20241111223225381

出于安全考虑,通常禁用root通过ssh登录,或者禁止root用户执行某些操作,使用普通用户登录系统。

排查

使用 $PPID,可以看到当前用户的父进程信息。

image-20241111223618231

清楚当前的history记录

如果我们不希望命令被记录,在退出会话前直接执行:

# 清楚当前会话的命令历史记录
history -r

# 或者 不给当前的shell留时间去处理,内存的命令也没时间写入到文件
kill -9 $$

history -r将历史命令文件中的命令(/.bash_history) 读入当前历史命令缓冲区.

history -r 把历史文件(/.bash_history)附加到内存数据中了

举例,ping www.baidu.com后,kill,连接断开

image-2024111123394

重新登录,history,并没有ping 这条命令,隐藏成功

image-20241111234033779

正常退出

image-20241111234146377

重连,history

image-20241111234207250

隐藏Vim的操作记录

当我们使用 vim时候,会在 ~/.viminfo留下操作记录,建议使用vi 。 或者在vim中使用命令关闭记录。

:set history=0 :!command 

image-20241112000534854

image-20241112000552244

隐藏文件修改时间

一般管理员会查看一个文件的修改时间,我们可以把我们的后门文件时间修改成几天之前创建的效果。使用如下命令。

# touch -r A B ,将 B 文件的日期改为 A 文件的日期
touch -r appsetting.json longyusec.txt

image-20241112000955812

虽然如此,但还是能用stat命令看到修改时间

image-20241112001933598

stat中的三个属性意思是

最近访问(access time):表示我们最后一次访问(仅仅是访问,没有改动)文件的时间
最近更改(modify time):表示我们最后一次修改文件的时间
最近改动(change time):表示我们最后一次对文件属性改变的时间,包括权限,大小,属性等等

或者使用find命令,查找24小时内被修改过的文件

find ./ -ctime 0 -name 'longyusec.txt'

image-20241112002241043

image-20241112003024826

那么如果再绕过 stat的检测呢? 修改系统时间后再 touch -r A B 就可以了。最后记得把系统时间改回来啊

锁定文件

有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了。此权限用ls -l是查看不出来的,从而达到隐藏权限的目的。chattr命令不能保护/、/dev、/tmp、/var目录。lsattr命令是显示chattr命令设置的文件属性。

chattr +i shell.php  #锁定文件
rm -rf shell.php     #提示禁止删除

lsattr  shell.php    #属性查看
chattr -i shell.php  #解除锁定
rm -rf shell.php     #删除文件

image-20241112010454650

让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件

# chattr +a /var/log/messages

清除系统日志痕迹

Linux 系统存在多种日志文件,来记录系统运行过程中产生的日志

清除系统日志痕迹

/var/log/btmp   记录所有登录失败信息,使用lastb命令查看
/var/log/lastlog 记录所有用户最后一次登录时间的日志,使用lastlog命令查看
/var/log/wtmp    记录所有用户的登录、注销信息,使用last命令查看
/var/log/utmp    记录当前已经登录的用户信息,使用w,who,users等命令查看
/var/log/secure   记录与安全相关的日志信息
/var/log/message  记录系统启动后的信息和错误日志

# 直接覆盖日志文件
echo > /var/log/btmp 
cat /dev/null >  /var/log/secure

# 删除所有匹配到字符串的行,比如以当天日期或者自己的登录ip
sed  -i '/自己的ip/'d  /var/log/messages

# 全局替换登录IP地址:
sed -i 's/192.168.166.85/192.168.1.1/g' secure

清除web日志入侵痕迹

# 直接替换日志ip地址
sed -i 's/192.168.166.85/192.168.1.1/g' access.log

# 清除部分相关日志
cat /var/log/nginx/access.log | grep -v evil.php > tmp.log

# 把修改过的日志覆盖到原日志文件
cat tmp.log > /var/log/nginx/access.log/

文件安全删除工具

# shred 命令 安全的从硬盘上擦除数据,默认覆盖3次,通过 -n指定数据覆盖次数
[root@centos]# shred -f -u -z -v -n 8 1.txt 

# wipe 使用特殊的模式来重复地写文件,从磁性介质中安全擦除文件
[root@centos]# wipe filename

学习于(有删改):

https://www.cnblogs.com/awake1t/p/14504139.html

往期推荐

【重要通知】关于举办第二届CN-fnst::CTF的通知

【kali笔记】这样炫酷的终端签名,是如何打印出来的?

渗透测试高频面试题分享

upload-labs通关全教程(建议萌新收藏)Web安全-文件上传漏洞超详细解析

开箱即用!265种windows渗透工具合集–灵兔宝盒

本站内容部分转载于互联网,并不代表本站立场!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理! 拒绝任何人以任何形式在本站发表与中华人民共和国法律相抵触的言论!
THE END
喜欢就支持一下吧
点赞17 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容