跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

渗透基本——SSH Log的旁路


轩辕三官

推荐的帖子

0x00 前言

SSH是一种网络协议,用于计算机之间的加密登录,通常用于远程登录Linux系统。

在渗透测试中,通常需要考虑SSH的密码爆炸和日志删除。

本文将介绍渗透测试的一些基本内容,并结合使用方法给出检测建议。

0x01 简介

本文将介绍以下内容:

程序SSH密码验证

删除SSH日志

绕过SSH日志

防御探测

0x02 程序实现SSH口令验证

1.Python实现

Paramiko库,第三方库,很好用。

我的代码已经上传到github,地址如下:

https://github . com/3g student/Homework-of-Python/blob/master/ssh check . py

支持代码密码登录和证书文件登录

2.C#实现

在以下地址使用第三方库SSH.NET:

https://github.com/sshnet/SSH.网

编译的dll下载地址:

https://github.com/sshnet/SSH.NET/releases/download/2016 . 1 . 0/SSH。NET-2016.1.0-bin.zip

参考文件:

https://github.com/sshnet/SSH.NET/releases/download/2016 . 1 . 0/SSH。NET-2016.1.0-help.chm

将Renci.SshNet.dll引入程序后,用法也很简单。

编程时应注意以下问题:

(1)使用证书登录

SSH.NET证书的格式有要求。SSH上的提示符。NET-2016.1.0-help.chm必须是BEGIN RSA私钥,如下图所示

2-1.png

在使用ssh-keygen -t rsa命令时,默认是生成一个新格式的密钥文件,其格式是BEGIN OPENSSH PRIVATE KEY,需要在这里进行转换。

解决方法:

使用puttygen转换下载地址:

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

选择加载导入密钥。

导出方法:

转换-导出OpenSSH密钥

因此,需要读取证书的文件内容,以确定格式是否正确。

我的代码已经上传到github,地址如下:

https://github . com/3g student/home-of-C-Sharp/blob/master/sharpshcheck _ SSH。NET.cs

代码需要对应于。NET版的Renci.SshNet.dll,可以用csc.exe编译。命令示例:

C:\Windows\Microsoft。NET \ framework 64 \ v 4 . 0 . 30319 \ CSC . exe sharpsh check _ SSH。NET.cs /r:Renci。SshNet.dll

支持代码密码登录和证书文件登录

0x03 SSH日志的删除

与SSH登录操作相关的日志位于以下位置:

/var/log/btmp,记录错误的登录尝试,查询命令:lastb

/var/log/auth.log,记录成功通过身份验证的用户。

/var/log/secure,记录与安全相关的日志信息。

/var/log/lastlog,记录用户最后一次登录的信息。

/var/log/wtmp,它记录了当前和以前登录过系统的用户的信息。查询命令在最后。

/var/run/utmp,记录当前登录系统的用户信息。查询命令是:w。

~/.bash_history,它记录了从开始到最后一次登录所执行的命令。查询命令:历史记录

1.查看日志的内容

那些不能直接查看的需要使用字符串命令。

命令示例:

字符串/var/log/wtmp

2.替换日志中的IP

使用sed命令替换指定的IP

命令示例:

utmpdump/var/log/wtmp | sed ' s/192 . 168 . 112 . 151/1 . 1 . 1 . 1/g ' | utmpdump-r/tmp/wtmp 11 \ mv/tmp/wtmp 11/var/log/wtmp

192.168.112.151修改为1.1.1.1。

3.删除日志中的指定行

使用sed命令删除指定的行。

sed-I '/May 1 23:17:39/d '/var/log/auth . log

删除/var /var/log/auth.log中以“May 1 23:17:39”开头的行

4.躲避管理员w查看

Logtamper是必需的。

命令示例:

python log tamper . py-m 1-u re4 lity-I 192 . 168 . 0 . 188

通过修改文件/var/run/utmp来实现。

5.清除指定ip的登录日志

Logtamper是必需的。

命令示例:

python log tamper . py-m 2-u re4 lity-I 192 . 168 . 0 . 188

通过修改文件/var/log/wtmp来实现。

6.修改上次登录时间地点

Logtamper是必需的。

命令示例:

python log tamper . py-m 3-u re4 lity-I 192 . 168 . 0 . 188-t tty 1-d 2014:05:28:10:11:12

通过修改文件/var/log/lastlog实现。

7.清除当前会话使用的命令记录

退出会话前执行:

历史-r

0x04 SSH日志的绕过

如果我们使用SSH客户端(比如putty)登录,就需要考虑日志清理,很麻烦。

这里有一种绕过各种日志记录的方法:使用sftp、rsyn、scp和其他协议(notty)登录

这里有两种实现方法:

0x02中引入的两个SSH密码验证器(python和c#)就是用notty。

我在执行命令的功能中加入了密码验证程序,对应的代码地址如下:

Python实现:3359 github . com/3g student/homework-of-python/blob/master/sshruncmd . py

# C实现:3359 github . com/3g student/homework-of-C-sharp/blob/master/sharpshruncmd _ ssh . net . cs

两种代码都支持执行单个命令和交互式shell。

分别选择交互shell,执行以下命令获取连接类型:

ps -aux|grep sshd

此时连接类型为notty,如下图所示

3-1.png

注:

如果putty用于远程连接,则类型为pts/2,如下图所示。

3-2.png

测试后,notty可以绕过以下日志:

/var/log/lastlog,记录用户最后一次登录的信息。

/var/log/wtmp,它记录了当前和以前登录过系统的用户的信息。查询命令在最后。

/var/run/utmp,记录当前登录系统的用户信息。查询命令是:w。

~/.bash_history,它记录了从开始到最后一次登录所执行的命令。查询命令:历史记录

0x05 防御检测

增强SSH守护进程,资源:

https://www.putorius.net/how-to-secure-ssh-daemon.html

Notty连接检测:

检查错误的登录尝试,查询命令:lastb,文件位置/var/log/btmp。

检查成功通过身份验证的用户,文件位置/var /var/log/auth.log

检查tcp连接,检查命令:netstat -vatn

0x06 小结

介绍了SSH在渗透测试中的基础知识(日志删除和日志绕过),并开放了四个实现代码(密码验证和命令执行),结合使用方法给出了检测建议。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...