用户密码获取方法技术

技术编号:39749270 阅读:11 留言:0更新日期:2023-12-17 23:47
本实施例公开了一种用户密码获取方法

【技术实现步骤摘要】
用户密码获取方法、装置、设备及存储介质


[0001]本公开涉及数据安全
,尤其涉及一种用户密码获取方法

装置

设备及存储介质


技术介绍

[0002]Linux
操作系统主要应用于云服务器和嵌入式设备,
OpenSSH
服务是应用十分广泛的
SSH
服务软件,
Linux
操作系统通常使用它进行远程管理服务

用户在使用
OpenSSH
服务时通常需要输入目标
Linux
操作系统中的用户名和密码验证自己的身份
。OpenSSH
服务在接收到客户端的请求时,会启动一个子进程
(
会话进程
)
处理其请求并与之通信

[0003]相关技术中,
SSH
后门广泛应用在安全行业合法渗透测试过程中,
SSH
后门运行的前提是重新编译
SSH
服务程序,使
SSH
服务程序带有记录密码的后门代码,并将原程序文件进行替换

该方法在渗透测试过程中通过
OpenSSH
服务读取密码需要替换原程序文件,从而导致破坏系统完整性,不具备隐蔽性;另外,为了使带后门的
SSH
程序生效,
OpenSSH
服务必须重启,影响
OpenSSH
服务的正常运行

>
技术实现思路

[0004]有鉴于此,本公开实施例提供了一种用户密码获取方法

装置

设备及存储介质,能够使渗透测试人员可以随时从
OpenSSH
服务进程获取用户密码,不需要重启
OpenSSH
服务进程,从而不影响
OpenSSH
服务进程的正常运行,并且,不需要替换任何系统文件,保证系统完整性

[0005]第一方面,本公开实施例提供了一种用户密码获取方法,采用如下技术方案:
[0006]通过初始程序将
Shellcode
注入
OpenSSH
服务进程;
[0007]通过执行所述
Shellcode
将主程序加载进所述
OpenSSH
服务进程;
[0008]运行所述主程序,以所述
OpenSSH
服务进程的身份对所述
OpenSSH
服务进程的子进程进行控制并获取用户密码

[0009]在一些实施例中,在通过初始程序将
Shellcode
注入
OpenSSH
服务进程之前,所述方法还包括:
[0010]读取所述
OpenSSH
服务进程的内存映射,以计算
Glibc
库中用于加载第三方
ELF
文件的函数地址;
[0011]利用所述函数地址填充所述
shellcode
中相应的地址值,并设置相应的调用参数;
[0012]利用
ptrace
系统调用接管所述
OpenSSH
服务进程,并保存所述
OpenSSH
服务进程的状态;
[0013]将所述
shellcode
注入所述
OpenSSH
服务进程,并执行所述
shellcode。
[0014]在一些实施例中,通过执行所述
Shellcode
将主程序加载进所述
OpenSSH
服务进程,包括:
[0015]通过执行所述
Shellcode
将主程序以动态链接库的形式加载进所述
OpenSSH
服务
进程

[0016]在一些实施例中,运行所述主程序,以所述
OpenSSH
服务进程的身份对所述
OpenSSH
服务进程的子进程进行控制并获取用户密码,包括:
[0017]检测所述子进程的状态信息;
[0018]当检测到
SSH
会话进程时,创建用于监控所述
SSH
会话进程的单独线程;
[0019]执行所述单独线程,以获取所述用户密码

[0020]在一些实施例中,执行所述单独线程,以获取所述用户密码,包括:
[0021]通过
ptrace
系统调用接管所述
SSH
会话进程,并自动暂停所述
SSH
会话进程;
[0022]搜索所述
SSH
会话进程的内存空间,以定位所述
SSH
会话进程中的特征代码段;
[0023]当定位到所述特征代码段时,按照预设规则在所述特征代码段中设置一个字节的第一中断代码;
[0024]运行所述
SSH
会话进程,并且所述
SSH
会话进程在执行到所述第一中断代码时中断操作,通过所述
ptrace
系统调用继续接管所述
SSH
会话进程;
[0025]读取栈内存空间,并获取所述
SSH
会话进程的密码验证结果和用户密码

[0026]在一些实施例中,在获取所述
SSH
会话进程的密码验证结果和用户密码之后,所述方法还包括:
[0027]将所述第一中断代码恢复为所述特征代码段的原代码;
[0028]将程序指针调回原位,以便所述
SSH
会话进程执行所述原代码;
[0029]按照预设规则在所述特征代码段中继续设置第二中断代码

[0030]在一些实施例中,按照预设规则在所述特征代码段中继续设置第二中断代码之后,所述方法还包括:
[0031]在设置完所述第二中断代码后,继续执行所述
SSH
会话进程;
[0032]当所述密码验证结果为密码错误时,发送用户密码验证错误的提示信息;
[0033]所述
SSH
会话进程继续运行,并在执行到所述第二中断代码时中断操作,重新执行用户密码验证操作;
[0034]当所述密码验证结果为密码正确时,用户正常登录所述
OpenSSH
服务进程,并保存正确的用户密码

[0035]第二方面,本公开实施例还提供了一种用户密码获取装置,采用如下技术方案:
[0036]注入单元,被配置为通过初始程序将
Shellcode
注入
OpenSSH
服务进程;
[0037]加载单元,被配置为通过执行所述
Shellcode
本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.
一种用户密码获取方法,其特征在于,包括:通过初始程序将
Shellcode
注入
OpenSSH
服务进程;通过执行所述
Shellcode
将主程序加载进所述
OpenSSH
服务进程;运行所述主程序,以所述
OpenSSH
服务进程的身份对所述
OpenSSH
服务进程的子进程进行控制并获取用户密码
。2.
根据权利要求1所述的用户密码获取方法,其特征在于,在通过初始程序将
Shellcode
注入
OpenSSH
服务进程之前,所述方法还包括:读取所述
OpenSSH
服务进程的内存映射,以计算
Glibc
库中用于加载第三方
ELF
文件的函数地址;利用所述函数地址填充所述
shellcode
中相应的地址值,并设置相应的调用参数;利用
ptrace
系统调用接管所述
OpenSSH
服务进程,并保存所述
OpenSSH
服务进程的状态;将所述
shellcode
注入所述
OpenSSH
服务进程,并执行所述
shellcode。3.
根据权利要求1所述的用户密码获取方法,其特征在于,通过执行所述
Shellcode
将主程序加载进所述
OpenSSH
服务进程,包括:通过执行所述
Shellcode
将主程序以动态链接库的形式加载进所述
OpenSSH
服务进程
。4.
根据权利要求1所述的用户密码获取方法,其特征在于,运行所述主程序,以所述
OpenSSH
服务进程的身份对所述
OpenSSH
服务进程的子进程进行控制并获取用户密码,包括:检测所述子进程的状态信息;当检测到
SSH
会话进程时,创建用于监控所述
SSH
会话进程的单独线程;执行所述单独线程,以获取所述用户密码
。5.
根据权利要求4所述的用户密码获取方法,其特征在于,执行所述单独线程,以获取所述用户密码,包括:通过
ptrace
系统调用接管所述
SSH
会话进程,并自动暂停所述
SSH
会话进程;搜索所述
SSH
会话进程的内存空间,以...

【专利技术属性】
技术研发人员:米竞王栋郭勇生张黎元
申请(专利权)人:北京天融信科技有限公司北京天融信软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1