Linux应急响应——知攻善防应急靶场-Linux(1)
文章目录
- 查看history历史指令
- 查看开机自启动项
- 异常连接和端口
- 异常进程
- 定时任务
- 异常服务
- 日志分析
- 账户排查
- 总结
靶场出处是知攻善防
Linux应急响应靶机 1
前景需要:
小王急匆匆地找到小张,小王说"李哥,我dev服务器被黑了",快救救我!!
挑战内容:
黑客的IP地址
遗留下的三个flag
开机后桌面找到题解脚本,终端运行起来即可。
靶机中相关账户密码:
defend/defend
root/defend
题目如下:
按照自己的思路看能找到多少个flag
查看history历史指令
当前用户是defend
备份一下.bash_history文件
然后查看,没发现异常
切换root用户查看
然后.bash_history同理也是先备份一份
发现一个flag:flag{thisismybaby}
然后看历史指令发现他动了rc.local开机自启动,所以断定这里肯定是不对劲的。
那就先顺着思路看开机自启动项
查看开机自启动项
cat /etc/rc.d/rc.lcal
一眼v我50,拿到flag:flag{kfcvme50}
异常连接和端口
netstat -alntup # 这里肯定没问题,因为我虚拟机是仅主机模式
异常进程
ps -ef 和 top 都可以查看是否有异常进程占用
也是没啥问题
ps -ef
↓
top
↓
定时任务
这里本来是到开机自启然后到定时任务的,因为我们history查看历史指令的时候已经发现动过开机自启了所以先去查看开机自启。
这里的 定时任务查看指令如下:
crontab -l #查看定时任务
还可以进入/var/spool/目录中对应查看定时任务。
这里的定时任务没有问题。
异常服务
查看所有自启动的服务,这里可以跟运维进行沟通是否有异常的,因为自己也看不出哪些是需要和哪些是不需要的,当然排除大佬一眼看出。
下面服务自启中都没有问题。
systemctl list-unit-files --type=service | grep enabled
日志分析
日志分析就要看他有哪些服务应用。
日志一般都放在/var/log中,直接进去看有哪些相关应用服务日志即可。
当然这一步是可以和运维沟通的哈。
我这里进入/var/log目录后看到有redis,那就直接看redis的日志
查看redis.log后,发现日志记录的是什么时候开启了redis和端口号是啥,还有连接情况,那么这里连接情况就是可以判断是否是黑客的入侵ip地址了。
看完后,发现redis连接成功了的日志信息包含“ Accepted”,那就筛选一下即可。
cat redis.log | grep ’ Accepted’
可以发现,外部地址连接进来的ip就可能是黑客的ip了。
所以这里记录一下疑似黑客ip为:192.168.75.129
账户排查
排查是否有黑客进来或者创建了用户,同事在这里也可以排查一下是否有黑客暴力破解ssh。
-
w #查看当前登录进来的用户操作
-
/etc/passwd #查看是否有可疑账号
-
/etc/shadow #查看影子文件是否有问题
-
过滤特权用户
查看是否有其他可疑的特权用户
awk -F: ‘$3==0{print $1}’ /etc/passwd -
过滤远程登录用户
查看是否有其他可疑远程登录用户
awk ‘/$1|$6/{print $1}’ /etc/shadow
若发现可疑用户,跟运维沟通确认后直接删掉
usermod -L user 禁用帐号,帐号无法登录,/etc/shadow 第二栏为 ! 开头
userdel user 删除 user 用户
userdel -r user 将删除 user 用户,并且将 /home 目录下的 user 目录一并删除
到这里基本没有发现了。
整理一下成果:
flag{thisismybaby}flag{kfcvme50}192.168.75.129
还差一个flag,到这里基本没思路了,
由于是找flag,那就使出我的终极大招
find / -type f '*.*' | xargs -i grep 'flag{' {}
直接出来flag了,就问你牛不牛批,三个都出来了,我们前面一顿操作猛如虎,难道还不如一个指令??
其实不是的,这是个耍赖行为,做题目无非是提升自己的实力,所以还是按照正常思维做好,现实中的黑客不会给你写个flag就走了。
没思路就去看writeup,原来redis.conf文件中还存在一个flag
过滤一下就出来了:cat /etc/redis.conf | grep ‘flag’
flag{P@ssW0rd_redis}
总结
题解:
192.168.75.129
flag{thisismybaby}
flag{kfcvme50}
flag{P@ssW0rd_redis}
反思一下为什么没有想到配置文件,给他忽略了,flag藏在里面。
其实仔细想想确实有道理,因为黑客入侵后,基本的应急角度来看,他做的东西也有可能是掩耳盗铃,比如自启动和log日志中记录的一些攻击行为,让人觉得已经没有其他手脚被动过了。
但其实不然,配置文件中留下手脚这种被忽略后,照样能够通过这个后门进来。
一开始还想吐槽一下怎么flag还在配置文件中的,仔细一想,我确实被被摆了一道,配置文件后门没找出来,确实太菜了。。。。
相关文章:

Linux应急响应——知攻善防应急靶场-Linux(1)
文章目录 查看history历史指令查看开机自启动项异常连接和端口异常进程定时任务异常服务日志分析账户排查总结 靶场出处是知攻善防 Linux应急响应靶机 1 前景需要: 小王急匆匆地找到小张,小王说"李哥,我dev服务器被黑了",快救救我&…...

基于CDMA的多用户水下无线光通信(1)——背景介绍
研究生期间做多用户水下无线光通信(Underwater Optical Wireless Communication,UOWC),写几篇博客分享一下学的内容。导师给了大方向,让我用直接序列码分多址(Direct Sequence Code Division Multiple Acce…...

基于springboot websocket和okhttp实现消息中转
1、业务介绍 消息源服务的消息不能直接推给用户侧,用户与中间服务建立websocket连接,中间服务再与源服务建立websocket连接,源服务的消息推给中间服务,中间服务再将消息推送给用户。流程如下图: 此例中我们定义中间服…...

@PostConstruct 注解的方法用于资源的初始化
PostConstruct 是 Java EE 5 引入的一个注解,主要用于依赖注入完成之后,需要执行的方法上。这个注解的方法会在依赖注入完成后自动被容器(如 EJB 容器或 Spring 容器)调用,并且只会被调用一次。 PostConstruct 注解的…...

(一)SvelteKit教程:hello world
(一)SvelteKit教程:hello world sveltekit 的官方教程,在这里:Creating a project • Docs • SvelteKitCreating a project • Docs • SvelteKit 我们可以按照如下的步骤来创建一个项目: npm create s…...

华为Atlas NPU ffmpeg 编译安装
处理器:鲲鹏920 NPU:昇腾 310P3 操作系统:Kylin Linux Advanced Server V10 CANN:Ascend-cann-toolkit_8.0.RC1_linux-aarch64.run FFmpeg:AscendFFmpegPlugin(不要用AscendFFmpeg) AscendFFmpegPlugin下载地址&…...

Python 虚拟环境 requirements.txt 文件生成 ;pipenv导出pip安装文件
搜索关键词: Python 虚拟环境Pipenv requirements.txt 文件生成;Pipenv 导出 pip requirements.txt安装文件 本文基于python版本 >3.9 文章内容有效日期2023年01月开始(因为此方法从这个时间开始是完全ok的) 上述为pipenv的演示版本 使用以下命令可精准生成requirement…...

Less与Sass的区别
1. 功能和工具: Sass:提供了更多的功能和内置方法,如条件语句、循环、数学函数等。Sass 也支持更复杂的操作和逻辑构建。 Less:功能也很强大,但相比之下,Sass 在功能上更为丰富和成熟。 2、编译环境&…...

力扣-2663
题目 如果一个字符串满足以下条件,则称其为 美丽字符串 : 它由英语小写字母表的前 k 个字母组成。它不包含任何长度为 2 或更长的回文子字符串。 给你一个长度为 n 的美丽字符串 s 和一个正整数 k 。 请你找出并返回一个长度为 n 的美丽字符串&#…...

CausalMMM:基于因果结构学习的营销组合建模
1. 摘要 在线广告中,营销组合建模(Marketing Mix Modeling,MMM) 被用于预测广告商家的总商品交易量(GMV),并帮助决策者调整各种广告渠道的预算分配。传统的基于回归技术的MMM方法在复杂营销场景…...

编译 CUDA 程序的基本知识和步骤
基本工具 NVCC(NVIDIA CUDA Compiler): nvcc 是 NVIDIA 提供的 CUDA 编译器,用于将 CUDA 源代码(.cu 文件)编译成可执行文件或库。它可以处理 CUDA 和主机代码(例如 C)的混合编译。nvcc 调用底层…...

[SAP ABAP] 排序内表数据
语法格式 整表排序 SORT <itab> [ASCENDING|DESCENDING]. 按指定字段排序 SORT <itab> BY f1 [ASCENDING|DESCENDING] f2 [ASCENDING|DESCENDING] ... fn [ASCENDING|DESCENDING].<itab>:代表内表 不指定排序方式则默认升序排序 示例1 结果显…...

【UML用户指南】-21-对基本行为建模-活动图
目录 1、概念 2、组成结构 2.1、动作 2.2、活动节点 2.3、控制流 2.4、分支 2.5、分岔和汇合 2.6、泳道 2.7、对象流 2.8、扩展区域 3、一般用法 3.1、对工作流建模 3.2、对操作建模 一个活动图从本质上说是一个流程图,展现从活动到活动的控制流 活动图…...

【web2】jquary,bootstrap,vue
文章目录 1.jquary:选择器1.1 jquery框架引入:$("mydiv") 当成id选择器1.2 jquery版本/对象:$(js对象) -> jquery对象1.3 jquery的页面加载事件:$ 想象成 window.onload 1.4 jquery的基本选择器:$()里内容…...

独角兽品牌獭崎酱酒:高性价比的酱香之选
在酱香型白酒领域中,獭崎酱酒以其独特的品牌定位和高性价比迅速崛起,成为市场上备受关注的独角兽品牌。作为贵州茅台镇的一款新秀酱香酒,獭崎酱酒不仅传承了百年酿造工艺,还以创新的商业模式和亲民的价格赢得了广大消费者的青睐。…...

java打印菱形和空心菱形
java打印菱形 菱形分上下两个部分。其中上部分同打印金字塔;下部分循环部分i是递减 (ps:菱形层数只能为奇数) import java.util.Scanner;public class Lingxing{public static void main(String[] args) {Scanner myScanner new Scanner(S…...

Day10 —— 大数据技术之Scala
Scala编程入门 Scala的概述什么是Scala?Scala的重要特点Scala的使用场景 Scala的安装Scala基础Scala总结 Scala的概述 什么是Scala? Scala是一种将面向对象和函数式编程结合在一起的高级语言,旨在以简洁、优雅和类型安全的方式表达通用编程…...

Linux应用系统快速部署:docker快速部署linux应用程序
目录 一、背景 (一)引入docker的起因 (二)docker介绍 (三)Docker部署的优势 1、轻量级和可移植性 2、快速部署和扩展 3、一致性 4、版本控制 5、安全性 6、资源隔离 7、简化团队协作 8、多容器…...

三目运算符中间的表达式可以省略吗(a?:c)?
熟悉C语言的童靴对三目运算符都非常熟悉,a? b : c; 如果a为true,则整个运算符的值为b,否则为c;那么问题来了,三目运算符中间的表达式可以省略吗?即a? : c; 1、linux内核中出现的省略情况 本人在阅读内核代码是发现了下面的代码: preferr…...

android 彩虹进度条自定义view实现
实现一个彩虹色进度条功能,不说明具体用途大家应该能猜到。想找别人造的轮子,但是没有合适的,所以决定自己实现一个。 相关知识 android 自定义view LinearGradient 线性渐变 实现步骤 自定义view 自定义一个TmcView类继承View 重写两…...

免费一年SSL证书申请——建议收藏
免费一年SSL证书申请——建议收藏 获取免费一年期SSL证书其实挺简单的 准备你的网站: 确保你的网站已经有了域名,而且这个域名已经指向你的服务器。还要检查你的服务器支持HTTPS,也就是443端口要打开,这是HTTPS默认用的。 验证域…...

【docker1】指令,docker-compose,Dockerfile
文章目录 1.pull/image,run/ps(进程),exec/commit2.save/load:docker save 镜像id,不是容器id3.docker-compose:多容器:宿主机(eth0网卡)安装docker会生成一…...

Flutter中的异步和多进程
Flutter 是一个用于创建高性能、高保真度移动应用的框架,它使用 Dart 编程语言。 在 Flutter 中,异步和多进程是两种不同的概念,用于解决不同的问题。 异步 (Asynchronous) 异步编程是一种编程范式,允许代码在等待操作完成(如网络请求、文件 I/O)时继续执行其他任务,而不…...

学习C++第二天
1.缺省参数 缺省参数的概念: 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。 void show(int a 10) {cout << a << endl; }int main() {sho…...

解析Java中1000个常用类:AbstractSet类,你学会了吗?
推荐一个我自己写的小报童专栏导航网站: http://xbt100.top 收录了生财有术项目精选、AI海外赚钱、纯银的产品分析等专栏,陆续会收录更多的专栏,欢迎体验~复制URL可直达。 以下是正文。 在 Java 集合框架中,AbstractSet 是一个重要的抽象类,为实现自定义的集合(Set)提…...

Nginx基础概念和常用操作
文章目录 1. 安装、启动、连接2. 快速尝试部署网站3. 配置文件1. nginx.conf全局配置事件模块HTTP 模块性能优化建议 2. default.confserver 块基本设置日志设置根路径设置 4. 反向代理1. 模拟3个Web2. 链接 5. 负载均衡1. 加权轮询,Weighted Round Robin2. 最少连接…...

圈复杂度是什么?go语言调整圈复杂度举例
圈复杂度(也称为循环复杂度或McCabe复杂度)是衡量程序复杂性的一个指标,它通常与代码中的控制流结构(如条件语句、循环和函数调用)的数量相关。在Go语言中,你可以通过重构代码来降低圈复杂度,从…...

设计模式4-模版方法
设计模式 重构获得模式重构的关键技法1. 静态转动态2. 早绑定转晚绑定3. 继承转组合4. 编译时依赖转运行时依赖5. 紧耦合转松耦合 组件协助动机模式定义结构 要点总结。 例子示例解释: 重构获得模式 设计模式的目的是应对变化,提高复用 设计模式的要点…...

yii2 ActiveForm使用技巧
持续更新: 1、搜索输入框:form-inline <?php $form ActiveForm::begin([action > [index],method > get,options > [class > form-inline] (增加此行代码) ]); ?>...