红队-linux基础(1)
声明
通过学习 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频,做出的文章如涉及侵权马上删除文章
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负
一.openssl
1、openssl passwd -1 123
openssl是一个开源的加密工具包,提供了各种加密、解密、签名、验证等功能。
passwd表示这个命令用于处理密码相关的操作。
-1参数指定使用MD5加密算法对密码“123”进行加密处理。MD5是一种常用的哈希算法,它将任意长度的输入数据转换为固定长度的输出(通常是128位的哈希值)。使用这个命令可以将“123”生成为MD5加密后的密文。
2、openssl passwd -5 123
同样,openssl是加密工具包。
passwd用于密码处理。
-5参数表示使用SHA-256哈希算法对密码“123”进行哈希加密处理。
SHA-256是一种更安全的哈希算法,它生成的哈希值长度为256位。
每次对相同的密码进行SHA-256加密时,由于加密过程中通常会引入随机因素(如盐值等),所以每次生成的密文都是不一样的,这增加了密码的安全性,即使攻击者获得了密文,也很难通过逆向计算得到原始密码。如图:
二.文件管理
1.创建空文件
touch newfile
2.删除文件
rm newfile
3.新建目录
mkdir newdir
4.删除空目录
rmdir newdir
5.重命名文件
mv file.txt new.txt
6.移动文件
mv newfile newdir2
7.拷贝文件
cp file.txt newwdir.txt
8.软链接
与源文件有关联
ln -s original.txt symlink.txt
9.硬链接
直接对应磁盘里的数据(哪怕删除源文件也不会影响链接)
ln ~/offsec123.txt hardlink.txt
10.软链接,硬链接本质区别
硬链接:同一个文件,多个名称,共享同一个inode信息。
软链接:不同的文件,指向另一个文件的路径。
可用性
硬链接:只能在同一文件系统中使用,不支持跨文件系统。
软链接:可以跨文件系统和操作系统使用。
支持的对象
硬链接:不支持对目录创建,只能对文件创建。
软链接:可以对文件和目录创建。
删除的影响
硬链接:删除其中一个硬链接不会影响其他硬链接,只有当所有硬链接都被删除时,原始文件才会被删除。
软链接:删除软链接不会影响原始文件,但如果原始文件被删除,软链接将失效。
创建方式
硬链接:使用ln命令创建。
软链接:使用ln -s命令创建,需要指定原始文件的路径。
具体例子和用途
软链接常用于方便管理,例如将复杂路径的文件链接到简单路径下,或者解决文件系统空间不足的问题。硬链接则主要用于防止误删除文件。
三.搜索文件
1.which
作用是查找命令的可执行文件路径。
例如,如果你想知道“ls”命令在系统中的具体位置,可以使用“which ls”。
echo $PATH
(1)"echo" 是用于输出内容的命令。
(2)PATH” 所列出的目录中依次查找该命令的可执行文件。
2.locate (local.db)
(1)“locate” 命令用于快速查找文件,它通过查询一个预先构建的文件数据库来实现。
(2)不太清楚 “(local.db)” 在这里的具体作用,可能是在特定情境下与 “local.db” 相关的查找操作,但一般来说,单独使用 “locate” 后面跟文件名或部分文件名可以查找相应的文件。
sudo updatedb
(1)“sudo” 是用于以管理员权限执行命令的前缀。
(2)“updatedb” 用于更新 “locate” 命令所使用的文件数据库。这个操作可能需要一些时间,因为它会扫描整个文件系统并将文件信息添加到数据库中。
locate whoami.exe
使用 “locate” 命令查找名为 “whoami.exe” 的文件在系统中的位置。如果系统中有这个文件,该命令会输出其路径。
3.find
find ~ -mtime 2 -ls | sort -k9 -k10 | more
(1)“find ~” 表示在用户的主目录(“~” 代表主目录)下进行查找。
(2)“-mtime 2” 表示查找在两天内被修改过的文件。
(3)“-ls” 用于以长列表形式显示找到的文件信息。
(4)“|” 是管道符号,将前一个命令的输出作为后一个命令的输入。
(5)“sort -k9 -k10” 是按照第九列和第十列的内容对文件信息进行排序。
(6)“more” 用于分页显示结果,方便查看。
find. -type f -iname '*.sh' -mmin -30 -ls
(1)“find.” 在当前目录下进行查找。
(2)“-type f” 表示查找类型为普通文件。
(3)“-iname '*.sh'” 查找文件名以 “.sh” 结尾的文件,注意这里的空格可能会导致不准确匹配,一般用通配符应该紧贴在前面的字符后面,比如 “*sh”。
(4)“-mmin -30” 表示查找在 30 分钟内被修改过的文件。
(5)“-ls” 以长列表形式显示找到的文件信息。
find. -name '.svn' -exec rm -rf {} ;
(1)“find.” 在当前目录下查找。
(2)“-name '.svn'” 查找名为 “.svn” 的文件或目录。
(3)“-exec rm -rf {} ;” 表示对找到的每个结果执行 “rm -rf” 命令,即删除找到的文件或目录。
find / -user root -type f -perm -o+w -name '*.sh' 2>/dev/null
(1)"find /" 在整个文件系统(根目录 "/" 下)进行查找。
(2)"user root" 表示查找所有者为 "root" 用户的文件。
(3)"type f" 表示查找类型为普通文件。
(4)"-perm -o+w" 表示查找其他用户有写权限的文件。
(5)"name '*.sh'" 查找文件名以 ".sh" 结尾的文件。
(6)"2>/dev/null" 将错误输出重定向到 "/dev/null",即不显示错误信息。
四.linux指令-数据库
1.用户账号数据库
/etc/passwd
/etc/shadow
2.组账号
cat /etc/group
3.禁用账号
sudo passwd -l username
chage -E 1990-01-01 kali
passwd -S username
4.对上述命令的解释
4-1.用户账号数据库相关文件
/etc/passwd: 这是一个重要的系统文件,存储了系统中用户账号的基本信息。 每行代表一个用户,包含了用户名、密码占位符、用户ID、用户组ID、用户描述信息、用户主目录、用户默认shell等字段。
/etc/shadow: 这个文件也与用户账号相关,主要存储用户密码的加密信息以及密码的一些属性,如密码最后一次修改时间、密码最短使用期限、密码最长使用期限等。 只有具有足够权限的用户(通常是root)才能读取这个文件,以提高密码的安全性。
4-2.组账号相关命令
cat /etc/group:查看用户账号信息的同时,也可以间接了解用户所属的组信息,因为其中包含了用户组ID。但这并不是专门用于查看组账号的最佳方式,通常使用cat /etc/group来查看组账号信息。
4-3.禁用账号相关命令
sudo passwd -l username:
(1)“sudo”表示以管理员权限执行命令。
(2)“passwd”是用于管理用户密码的命令。
(3)“-l”选项用于锁定用户账号。当执行这个命令后,指定的“username”用户账号将被锁定,无法登录系统。
chage -E 1990-01-01 kali
(1) “chage”命令用于修改用户密码的过期信息。
(2)“-E”选项后面跟着一个日期,表示设置用户账号的过期时间。在这个例子中,将“kali”用户账号的过期时间设置为“1990-01-01”,通常意味着在这个日期之后该账号将无法使用,除非重新设置过期时间或进行其他管理操作。
passwd -S username
(1) “passwd”命令的另一个用法。
(2)“-S”选项用于显示指定用户账号的密码状态信息,包括账号是否被锁定、密码是否已设置、密码最后一次修改时间等。
五.文件系统权限
1.Linux 系统中一切都是文件
在 Linux 系统中,几乎所有的资源都被抽象为文件,包括硬件设备(如硬盘、网卡等)、进程间通信、网络连接等。这种设计理念使得对各种资源的管理可以通过统一的文件操作方式来进行,大大简化了系统的架构和管理。
2.查看权限
ls -la /etc/passwd
(1)ls 是列出目录内容的命令。
(2)-l 选项以长格式显示文件信息,包括文件的权限、所有者、所属组、文件大小、修改时间等详细信息。
(3)-a 选项显示包括隐藏文件在内的所有文件。
(4)/etc/passwd 是要查看的文件路径,这个文件存储了系统用户账号的基本信息。通过这个命令可以看到 /etc/passwd 文件的权限设置、所有者、所属组等信息。
3.更改文件所有者
chown root file
(1)chown 是改变文件所有者的命令。
(2)root 是新的所有者用户名,这里表示将文件的所有者改为 “root” 用户。
(3)file 是要更改所有者的文件名称。执行这个命令后,文件的所有者将变为 “root” 用户。
4.修改文件权限
sudo chmod u=rwx,g+rw,o-r file
(1)sudo表示以管理员权限执行命令。
(2)chmod是改变文件权限的命令。
(3)u=rwx表示文件所有者(user)具有读(r)、写(w)、执行(x)权限。
(4)g+rw表示文件所属组(group)增加读(r)和写(w)权限。
(5)o-r表示其他用户(other)去除读(r)权限。
(6)file是要修改权限的文件名称。
sudo chmod u+x,g+w,o-r file
同样以管理员权限执行修改文件权限的操作。
(1)u+x表示给文件所有者增加执行权限。
(2)g+w表示给文件所属组增加写权限。
(3)o-r表示去除其他用户的读权限。
(4)file是目标文件。
chmod 400 <file>:
(1)chmod命令直接以数字方式设置文件权限。
(2)400是权限的数字表示,其中第一位数字“4”表示文件所有者的权限,这里代表读权限(r),因为读权限对应的数字是4;后两位数字“00”分别表示文件所属组和其他用户没有任何权限。
(3)<file>是要设置权限的文件。
六.日志
1.系统日志相关命令
ls -l /var/log
(1) ls 是列出目录内容的命令。
(2) -l 选项以长格式显示文件和目录的详细信息,包括权限、所有者、所属组、文件大小、修改时间等。
(3) /var/log 是系统日志文件所在的目录。执行这个命令可以查看该目录下的日志文件列表及相关信息。
2.认证信息日志相关命令
sudo tail -3 /var/log/auth.log
(1) sudo 表示以管理员权限执行命令。
(2) tail 命令用于查看文件的末尾部分。
(3) -3 表示显示文件的最后 3 行内容。
(4) /var/log/auth.log 是存储系统认证信息的日志文件,包括用户登录、认证失败等信息。执行这个命令可以查看最近的三条认证相关的日志记录。
3.二进制日志相关命令
who /var/log/wtmp | tail -5
(1) who 命令用于显示当前登录的用户信息。
(2) /var/log/wtmp 是一个二进制日志文件,记录了系统的登录和注销信息。
(3) | 是管道符号,将前一个命令的输出作为后一个命令的输入。
(4) tail -5 表示显示最后 5 行内容。执行这个命令可以查看最近的五次登录或注销记录。
4.dmesg
dmesg
这个命令用于显示内核环形缓冲区(kernel ring buffer)中的信息,包括系统启动时的硬件检测信息、内核模块加载信息、设备驱动的初始化信息等。
它可以帮助用户了解系统的硬件状态和内核的运行情况。
5.systemd 日志相关命令
journalctl
这是一个用于查看和管理 systemd 日志的命令。
systemd 是 Linux 系统的初始化系统和服务管理器,它会记录系统和服务的启动、运行和错误信息等日志。
journalctl 可以根据不同的参数来筛选、查看特定时间段、特定服务或特定优先级的日志记录。
七.存储管理
1.内存使用量
free -m
free命令用于显示系统内存的使用情况。
(1) -m选项表示以兆字节(MB)为单位显示内存信息。执行这个命令后,会显示系统的总内存、已使用内存、可用内存、缓冲内存和缓存内存等信息,帮助用户了解系统当前的内存使用状态。
2.磁盘使用量
df -hT
df命令用于显示磁盘空间使用情况。
(1) -h选项表示以人类可读的格式(如 KB、MB、GB 等)显示磁盘空间大小。
(2) -T选项显示文件系统类型。执行这个命令可以查看各个磁盘分区的总大小、已使用空间、可用空间以及文件系统类型等信息。
3.文件或目录大小
sudo du ./* -hsc
sudo 表示以管理员权限执行命令。
(1) du 命令用于统计文件或目录的磁盘使用空间。
(2) ./* 表示当前目录下的所有文件和目录。
(3) -h 选项以人类可读的格式显示大小。
(4) -s 选项表示汇总显示每个参数的总大小。
(5) -c 选项表示在最后显示总计。执行这个命令可以查看当前目录下每个文件和目录的大小,并在最后显示总计大小。
4.查看硬盘分区
sudo fdisk -l
sudo 以管理员权限执行。
(1) fdisk 是一个磁盘分区工具。
(2) -l 选项表示列出系统中的所有磁盘分区信息,包括磁盘的大小、分区类型、分区编号、起始和结束扇区等。这个命令可以帮助用户了解系统的硬盘分区情况。
5.挂载分区
sudo mount /dev/sdb1 /mnt/usb
sudo以管理员权限限执行。
(1) mount命令用于将一个文件系统挂载到指定的目录。
(2) /dev/sdb1是要挂载的磁盘分区设备路径。
(3) /mnt/usb是挂载点,即要将分区挂载到的目录。执行这个命令后,系统可以访问该分区中的文件和目录,就像访问本地文件系统中其他目录一样。
八.基本网络校举
1.基本网络工具
ifconfig: 是一个用于配置和显示网络接口信息的命令行工具。 它可以显示网络接口的 IP 地址、子网掩码、MAC 地址等信息,还可以用于启动、停止或配置网络接口。
ip addr: 也是用于查看和管理网络接口的命令。 它提供了比 ifconfig 更详细和灵活的网络接口信息显示,包括接口的状态、IP 地址、子网掩码、广播地址等。
sudo ifdown eth0
sudo 表示以管理员权限执行命令。
(1) ifdown 用于关闭指定的网络接口。
(2) eth0 是网络接口名称,这里表示关闭名为 “eth0” 的网络接口。
sudo ifup eth0
同样以管理员权限执行。
(1) ifup 用于启动指定的网络接口。
(2) eth0 表示启动名为 “eth0” 的网络接口。
2.网络配置
/etc/network/interfaces
这是一个系统文件,用于配置网络接口的静态 IP 地址、子网掩码、网关等信息。
在一些 Linux 发行版中,通过编辑这个文件可以实现网络接口的手动配置。
NetworkManager
是一个动态网络控制和配置守护进程。
它可以自动管理网络连接,包括有线网络、无线网络和 VPN 连接等。
NetworkManager 提供了图形界面和命令行工具来配置和管理网络,使得网络配置更加方便和灵活。它可以自动检测网络变化,并根据配置自动连接到可用的网络。
九.指令-查看工具
1.网络连接状态查看工具
netstat -natup
(1) netstat是一个用于显示网络连接、路由表、接口统计等信息的命令。
(2) -n选项表示以数字形式显示地址和端口号,避免进行域名解析。
(3) -a选项显示所有的连接和监听端口。
(4) -t选项显示 TCP 连接。
(5) -u选项显示 UDP 连接。
(6) -p选项显示与连接相关的进程 ID 和程序名称。执行这个命令可以查看系统当前的网络连接状态,包括连接的协议、本地地址和端口、远程地址和端口等信息。
ss -natup
(1)ss是另一个用于显示网络套接字状态的工具,它比 netstat 更快速和高效。 选项的含义与 netstat 中的类似,用于显示 TCP 和 UDP 连接的状态、地址和端口信息,以及相关的进程信息。
2.二层地址查看工具
arp -en
arp 是地址解析协议(Address Resolution Protocol)的工具。
(1)-e选项以详细格式显示 ARP 缓存表。
(2)-n选项以数字形式显示 IP 地址,避免进行域名解析。执行这个命令可以查看系统的 ARP 缓存表,其中包含了 IP 地址和对应的 MAC 地址映射关系,用于在局域网中进行二层地址解析。
3.路由信息相关工具
route
用于显示和管理系统的路由表。 可以查看系统当前的路由信息,包括目标网络、网关、子网掩码等。还可以用于添加、删除或修改路由条目。
ip route
是 ip 命令的一部分,用于管理系统的路由表。 它提供了更强大和灵活的路由管理功能,可以进行更复杂的路由配置操作。
sudo ip route add 10.13.37.0/24 dev eth1
sudo 表示以管理员权限执行命令。
(1) ip route add 用于添加一条路由条目。
(2) 10.13.37.0/24 是目标网络地址和子网掩码。
(3) dev eth1 表示通过名为 “eth1” 的网络接口到达目标网络。执行这个命令可以向系统的路由表中添加一条路由,指定如何到达特定的网络。
4.路由跟踪工具
traceroute offensive-security.com:
traceroute 是一个用于跟踪数据包从本地主机到目标主机所经过的路由路径的工具。
offensive-security.com 是目标主机的域名或 IP 地址。执行这个命令会逐跳显示数据包经过的路由器的 IP 地址和响应时间,帮助用户了解网络连接的路径和可能存在的网络问题。
十.ssh服务
1.启动服务
sudo systemctl start ssh
sudo表示以管理员权限执行命令。
(1) systemctl是用于管理系统服务的工具。
(2) start ssh是启动名为“ssh”的服务,也就是启动SSH服务器,使得其他设备可以通过SSH协议连接到这台主机。
2.连接本地主机
ssh root@localhost
(1) ssh是Secure Shell的客户端命令。
(2) root表示要以“root”用户身份进行登录。
(3) @localhost表示连接到本地主机。执行这个命令可以使用SSH协议以“root”用户身份登录到本地主机,如果SSH服务已启动且配置正确,并且用户有相应的权限,就可以成功登录并获得一个远程命令行会话。
3.配置文件
/etc/ssh/sshd_config
这是SSH服务器的主要配置文件。
其中包含了各种参数,可以用来配置SSH服务器的行为,比如端口号、允许的登录用户、认证方式、访问控制等。通过编辑这个文件,可以根据具体需求对SSH服务器进行定制化配置。
4.客户端配置
hash knownHosts yes
通常情况下,~/.ssh/known_hosts文件用于存储已知的远程主机的公钥信息,以确保连接的安全性。这个配置选项可能是指示对已知主机文件中的主机名进行哈希处理,这样可以提高一定的安全性,但具体效果可能因不同的SSH实现而有所差异。
~/.ssh:
这是用户主目录下的一个目录,用于存储SSH客户端的配置和相关文件。
通常包含私钥文件(如id_rsa)、公钥文
十一.远程拷贝
1.history
scp root@1.1.1.1:/home/kali/.bashrc Copiedbashrc
(1) scp是 Secure Copy 的缩写,用于在不同主机之间安全地复制文件。
(2) root@1.1.1.1表示从 IP 地址为 1.1.1.1 的主机上以 “root” 用户身份进行操作。
(3) /home/kali/.bashrc 是源文件路径,即要从远程主机上复制的文件。
(4) Copiedbashrc 是目标文件名称或目标路径,即将远程文件复制到本地后的名称或存放位置。这个命令会从指定的远程主机复制 .bashrc 文件到本地,并命名为 Copiedbashrc。
scp passwd -p kali ssh root@127.0.0.1
这个命令看起来有点不太准确或不太清晰。一般来说,scp 的语法是 scp [源文件路径] [目标路径]。这里的“passwd -p kali ssh”不太明确具体含义,可能存在错误表述。如果是想复制名为“passwd”的文件到 IP 为 127.0.0.1 的本地主机,可以写成 scp [远程用户名]@[远程主机 IP]:[远程文件路径] [本地目标路径]。
2.查看历史命令
history:这个命令用于显示命令历史记录,即之前在当前终端会话中执行过的命令列表。可以通过查看历史记录来快速重复执行之前的命令,或者查找之前执行过的特定命令。