前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hacking with Golang

Hacking with Golang

原创
作者头像
王磊-字节跳动
修改2021-08-07 21:09:39
1.7K0
修改2021-08-07 21:09:39
举报
文章被收录于专栏:01ZOO01ZOO

背景

根据一篇报道 显示,golang 成为继 python 之后最受黑客欢迎的工具语言。而且和 python 的差距正在缩小。golang 具有一些 python 的优势:开发块,跨平台;同时又有 python 不具有的优势:运行效率高,在暴力破解,端口扫描,爬虫等等场景,编程语言的运行效率还是很重要的。

这篇文章从几个知名 golang 安全项目的角度,看看 golang 在安全领域的使用场景和特定。

内网穿透

这里面比较知名的工具是 frpngrokgost。这两个工具的使用场景其实不能归类为安全范围【尽管内网穿透也有安全问题,容易被黑客利用】,使用这两个工具的用户都是为了这样的目的:在一个复杂的内网环境中,我想把内网的一个服务器 ip 暴露到公网上。这种 tunnel 类型的服务,原理比较简单,类似 nginx 之类的反向代理,只不过是被代理方主要发起,要求被代理。具体流程如下:

代码语言:txt
复制
sequenceDiagram
内网ClientA->>tunnel服务: 请给我代理我本地的服务A
tunnel服务->>内网ClientA: OK
外网用户->>tunnel服务: 我想访问 A 服务
tunnel服务->>内网ClientA: 有人要访问,转发给你
内网ClientA->>tunnel服务: 服务A Response
tunnel服务->>外网用户: 服务A Response
  • ngrok 是一个比较老的工具了,目前已经5年未更新了。原理和上面的流程图说的类似,远程的 tunnel 服务为 ngrokd,本地使用 ngrok client;目前还有一些免费的 tunnel 服务,用户只需要本地使用 ngrok 注册到免费公开的 tunnel 服务上,就可以通过一个分配的域名访问自己的内部服务了,当然这种方式有极大的安全风险,很容易收到下面一节讲的中间人攻击。
  • frp 现在更为流行,支持的功能更多,一直也在维护更新中。frp 不仅支持 http 的转发,还支持 tcp/udp/dns 等请求转发。为了保证安全性,支持管理界面,token/OIDC 鉴权

代理/中间人攻击

  • gost 是个代理工具,设计得比较简单,但是提供得核心能力 http/https/sock5/quic 等代理能力却一个不少,还支持基于 iptables 的透明代理。
    • gost 中一个重要的概念是 Node, 一个 ProxyNode 代表了一个转发链路中的一环,Node 可以是不同的 Protocol 和 Transport。Node 分为 LocalNode 和 ChainNode,chain node 是远程的,需要一个 Transporter 和 一个 Connector; 而 本地Node 而用于接受本地请求,需要一个 Listener 和 一个 Handler, 这几个东西都是针对不同协议,实现不同。
    • 实际的运行流程如:LocalNode.Listener.Accept => LocalNode.Handle => 找到 Chain 里面的一个 Node,用 里面的 Client【即 Transporter/Connector 】连接到 proxy
代码语言:txt
复制
// Transporter is responsible for handshaking with the proxy server.
type Transporter interface {
	Dial(addr string, options ...DialOption) (net.Conn, error)
	Handshake(conn net.Conn, options ...HandshakeOption) (net.Conn, error)
	// Indicate that the Transporter supports multiplex
	Multiplex() bool
}

// Connector is responsible for connecting to the destination address.
type Connector interface {
	// Deprecated: use ConnectContext instead.
	Connect(conn net.Conn, address string, options ...ConnectOption) (net.Conn, error)
	ConnectContext(ctx context.Context, conn net.Conn, network, address string, options ...ConnectOption) (net.Conn, error)
}

// Listener is a proxy server listener, just like a net.Listener.
type Listener interface {
	net.Listener
}

// Handler is a proxy server handler
type Handler interface {
	Init(options ...HandlerOption)
	Handle(net.Conn)
}
  • dnscrypt-proxy 是一个支持 encrypted DNS 协议的 dns 代理
  • chisel 也是一个代理工具,功能比 gost 简单一些,主要用于通过 http 转发内网 tcp/udp 流量以穿透防火墙。

由于不同的需求,代理的种类很多,但是也有一部分危机是隐藏在代理中的,其中最重要的是中间人攻击。事实上,很多代理设计出来,就是为了做中间人攻击/钓鱼。这类代理一般是 TLS-terminating forward proxies, 即他本身是要解析 tls 协议的,这样才能获取 https 传输中的信息。他会解析用户请求,在访问远程服务器,协议出 https 返回,再做 tls 机密。代理在传输过程中可以任意修改/窃取用户或者服务端数据,比如修改 cookie/ cros 相关选项等等。两个示例的项目为 muraenaModlishka

  • muraena: 用作中间人攻击的代理
  • Modlishka:和 muraena 类似,但是成熟度更高,可以用于伪造钓鱼网站,比如某些知名网站

Reverse Shell

Reverse shell 不同于 ssh 之类多命令工具,通常由攻击者运行在被攻击者的主机上,主动连接一个服务器,从服务器上接受指令并执行。这种方式很类似内网穿透中使用的方式,好处是可以穿透防火墙.

代码语言:txt
复制
sequenceDiagram
被攻击者主机->>攻击者主机: 有什么命令要执行的吗
攻击者主机->>被攻击者主机: 执行这些命令

hershell 是一个 go 语言编写的简单 reverse shell 工具。在服务端运行 socat/ncat/openssl server module 等工具都可以创建 server 用来等待 hershell 的连接;除了简单的 reverse shell,hershell 还支持注入 shellcode,对接 meterpreter 进行攻击的功能。

代码语言:txt
复制
# 服务端
$ ncat --ssl --ssl-cert server.pem --ssl-key server.key -lvp 1234
Ncat: Version 7.60 ( https://nmap.org/ncat )
Ncat: Listening on :::1234
Ncat: Listening on 0.0.0.0:1234
Ncat: Connection from 172.16.122.105.
Ncat: Connection from 172.16.122.105:47814.
[hershell]> whoami
desktop-3pvv31a\lab

# 客户端【即被攻击端】
➜ ./hershell

chashell 是一个类似的 reverse shell,不同的是 chashell client/server 端都由自己实现,他使用 dns 进行通信【dns 隧道,这种通信更不易被防火墙识别】,dns 中带了自定义的 protobuf 协议信息。

网络扫描

  • goscan 是一个内网扫描的工具,他会扫描内网的 ip 空间,发送 arp 包,获取主机的 ip, mac 地址,主机名,厂商等信息
  • xray 是一个对某个域名进行 OSINT【公开来源情报】信息收集的工具。具体的原理是:
    • 对于一个给定的域名,先进行子域名的扫描,扫描方式是结合一个 wordlist 和 dns 请求
    • 对于找到多子域名/ip 使用 Shodan 的 api进行信息收集(比如端口)
    • 对找到的 ip 端口,进行信息收集,比如收集 http header/https 证书/html title/dns version.hostname/ mysql/ssh 等端口的测试
  • bettercap: 支持对 wifi, 蓝牙,无线设备等进行扫描

更多

  • pspy: 一个不需要 root 权限就可以监控 linux 进程的工具
  • cameradar: RTSP(实时流传输协议,很多摄像头设备如安防监控支持这个协议) 攻击工具
  • hetty: 可以看成一个用于安全审计的反向代理
  • gocrack: 密码破解任务管理工具
  • x-crack: 弱密码破解工具
  • GoAT: 使用 Twitter 作为 C&C server 的 Trojan 木马

参考

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 内网穿透
  • 代理/中间人攻击
  • Reverse Shell
  • 网络扫描
  • 更多
  • 参考
相关产品与服务
应用安全开发
应用安全开发(Application Security Development,下文中也叫 Xcheck)为您提供优质的代码分析服务。Xcheck 凭借优秀的算法和工程实现,能在极低的误报率和漏报率前提下,以极快的速度发现代码中存在的安全漏洞。Xcheck 采用私有化部署的模式,所以产品使用的整个生命周期,源码都不会流出公司网络,杜绝源码泄露风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档