关闭

嵌入式 隐藏或者伪装uname显示信息

443人阅读 评论(0) 收藏 举报
分类:

make menuconfig -> General Setup -> Localversion(增加自己的内核版本标识)

本文主要讨论linux服务器的伪装,对于Sunhp等可以查找相关资料,本文只提供思路。

    
前言:为什么要伪装?

    
动物伪装,为了逃避天敌,或为了更好的获取猎物。

    
人伪装,使你不知他的底细。

    
服务器伪装,目的是要使攻击者很难搜集到服务器真正的信息,使他的进一步攻击造成难度,进而起到一定的保护作用,当然还有更深的用法,等着你去发现。



    
声明:

    
本文只是本人研究的总结,是为了大家的学习研讨,请不要用到非法用途。

    
本人才疏学浅,不足及错误的地方请指出,mail地址:yuky@freemail.sx.cn



    
正文:

    1
Telnet信息伪装

    
首先看一次telnet过程:

    [yxg@localhost yxg]$ telnetxx.xx.xx.xx

     Tryingxx.xx.xx.xx...

     Connected toxxxx.

     Escapecharacter is ^].



     Red HatLinux release 7.1 (Seawolf)

     Kernel2.4.2-2 on an i686

    login:

    
从中可以看到操作系统为Red Hat Linux release 7.1,内核版本2.4.2-2,计算机为:intel686。攻击者得到这些信息就可以用相应的攻击程序。所以我们不能告诉他们真正的情况。

    telnet
信息存放于/etc/issue.net

    [root@database /etc]# cat issue.net



     Red HatLinux release 7.1 (Seawolf)

     Kernel2.4.2-2 on an i686

    
修改它成为你想要的任何字符,甚至什么也不要。

    
我的改为Sun的提示:

    [yxg@localhost yxg]$ cat/etc/issue.net





     SunOS8.0

    
要注意必要的空行,改完和伪装的对象比较,直到一模一样才行。

    
对于本机的用户,提示信息在/etc/issue,改不改随你。

    
注意:如果你想重启后issue.net内容不变,修改/etc/rc.local,在这些行前加#

     # This willoverwrite /etc/issue at every boot. So, make any changesyou

     # want tomake to /etc/issue here or you will lose them when youreboot.

     # echo ""> /etc/issue

     # echo "$R">> /etc/issue

     # echo"Kernel $(uname -r) on $a $SMP$(uname -m)" >>/etc/issue



     # cp -f/etc/issue /etc/issue.net

     # echo>> /etc/issue





    2
ftp信息伪装

    
现在有很多对于wu-ftp的攻击程序,所以我就拿wu-ftp作例子。

    
先看一下ftp的过程:

    [yxg@localhost yxg]$ ftp xx.xx.xx.xx

     Connected toxxxx.

     220 databaseFTP server (Version wu-2.6.1-16) ready.

    
如果想要不显示出wu-ftp,可以有多种方法。

    
其一:

    
察看in.ftpd就能发现版本号写在了程序中

    [root@database /root]# strings/usr/sbin/in.ftpd

    ………………….

    /var/log/lastlog

     Could notwrite %.100s: %.100s

     Versionwu-2.6.1-16

    
你可以用16进制编辑器修改版本的字符串,改为proftp什么的,保准有人会上当。

    
其二:

    /etc/ftpaccess
里有两个参数

    
指示参数:greeting full | brief | terse

     greetingtext

    
允许控制远程用户登陆进来以后,给用户多少信息及信息内容。



    banner

    banner
消息是在用户名和密码以前显示给用户的。



    3
修改telnetftp的默认端口号

    
有很多扫描器并不是逐个端口扫描的,所以来个乾坤大挪移来使扫描失效。

    
具体是修改/etc/services 或者是/etc/inetd.conf



    4
操作系统指纹伪装

    nmap
等扫描器能通过操作系统指纹判断操作系统类型,所以我们要采取一些策略保护自己。现在有一些工具可以修改操作系统指纹,像fpf等,fpf可以在 www.xfocus.org下载,它是一个lkm,加载到内核中,可以模拟很多操作系统。当然你可能要对源程序进行修改,也可以加入一些新的功能,如自动隐藏等。



    5
改装uname

    
如果不幸被一个攻击者闯入,它可以用uname来获取真正的操作系统信息,然后来个本地溢出,你就哭吧。

    
所以我们要修改uname的源程序,使它显示我们想要它显示的内容。

    
打开uname.c,找到如下行:

    print_element (PRINT_SYSNAME,name.sysname);//
操作系统名如linux

    print_element (PRINT_NODENAME,name.nodename);//
主机名

    print_element (PRINT_RELEASE,name.release);//
发行版本,如:2.2.16-22

    print_element (PRINT_VERSION,name.version);//

    print_element (PRINT_MACHINE,name.machine);//
机器类型,如i686

    print_element (PRINT_PROCESSOR,processor);//
处理器类型

    
知道怎么改吧,不知道?提示一下,如果要显示操作系统为SunOS,替换第一行为:

    print_element(PRINT_SYSNAME,"SunOS");

    
编译后,运行./uname –s,就会显示SunOS

    
当然你应该把每一项都进行修改,使人看不出破绽。

    
最后把改好的uname拷到/bin目录。

    
我在修改时还加了一个-Y的参数,目的是显示真正的信息,给自己看的。默认显示修改过的信息。



    6
其他一些杂项

    
建议你尽量关掉不必要的服务,对于开放的其他服务要仔细检查,使它不至于有泄密的信息。

    
不同操作系统的shell提示符也不太一样,尽量修改的和伪装目标一致。



    
结束语:

    
当然,要想保证服务器安全,这一点是远远不够的,它只能减小被攻击成功的概率。

    
如果更深一些,伪装成一个蜜罐子,来诱捕黑客,则不在本文的讨论范围之内。改下面这些文件
/etc/issue
/etc/issue.net
/etc/redhat-release
/etc/rc.d/rc.sysinit
原码:
uname.c

 

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:973434次
    • 积分:17574
    • 等级:
    • 排名:第541名
    • 原创:741篇
    • 转载:522篇
    • 译文:0篇
    • 评论:105条
    最新评论