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

Hacking with Golang

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

背景

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

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

内网穿透

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

代码语言:txt
AI代码解释
复制
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
AI代码解释
复制
// 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
AI代码解释
复制
sequenceDiagram
被攻击者主机->>攻击者主机: 有什么命令要执行的吗
攻击者主机->>被攻击者主机: 执行这些命令

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

代码语言:txt
AI代码解释
复制
# 服务端
$ 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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
流量转发的应用与实现
在安全领域,流量转发有许多应用,本文简单举例一些使用场景,以及自己用代码实现高效转发流量
安恒网络空间安全讲武堂
2019/09/29
5.6K0
内网渗透测试:隐藏通讯隧道技术
上一节中,我们讲解了网络层的隧道技术(IPv6 隧道、ICMP 隧道)和传输层的隧道技术(TCP 隧道、UDP 隧道、常规端口转发)。现如今,TCP、UDP 通信大量被防御系统拦截,传统的Socket隧道也已经濒临淘汰,DNS、ICMP、HTTP/HTTPS 等难以被禁用的协议已经成为了攻击者控制隧道的主要渠道。在这一节中,我们将对应用层的隧道 SOCKS 代理技术进行实验性的讲解,由于小编能力太菜,很多东东也是现学现卖,应用层的DNS隧道我会在未来专门写一个专题进行讲解。
FB客服
2020/07/13
2.4K0
内网渗透|Chisel内网穿透工具
Chisel可用来搭建内网隧道,类似于常用的frp和nps之类的工具。由于目前使用的人比较少,因此对于有些杀软还不能准确的识别出该工具。chisel可以进行端口转发、反向端口转发以及Socks流量代理,使用go语言编写,支持多个平台使用,是进行内网穿透的一个鲜为人知的好工具。
HACK学习
2021/03/03
10.9K0
内网渗透|Chisel内网穿透工具
带着网关去旅行--smarGate使用手记
或许你用过花生壳、frp、ngrok、teamviewer等穿透工具,今天要给大家介绍的是smarGate(https://github.com/lazy-luo/smarGate)
用户2103032
2019/06/21
5K0
带着网关去旅行--smarGate使用手记
内网渗透常用端口转发与代理工具枚举
lcx.exe是一个端口转发工具,有Windows版和Linux版两个版本,Windows版是lcx.exe,Linux版为portmap,
字节脉搏实验室
2020/04/24
3.2K0
Linux内网渗透
能够成功地通过web漏洞获取到webshell,对于一次完整的渗透测试来说,仅仅相当于万里长征的第一步。并不是所有渗透测试都会遇到几百台机器的大内网。
HACK学习
2019/08/07
7K0
云服务器搭建自己的ngrok服务-实现内网穿透
优点:限制少,可玩性高,安全性高,完全可以删除花生壳、向日葵、TeamViewer等软件了。
星哥玩云
2022/05/27
8.3K0
云服务器搭建自己的ngrok服务-实现内网穿透
最好用的内网穿透工具合集
在渗透过程中,我们需要快速实现内网穿透,从而绕过网络访问限制,直接从外网来访问内网。今天,我们来推荐几款非常好用的内网穿透工具,如有其它推荐,欢迎补充和指正。
Bypass
2020/09/08
8.1K1
最好用的内网穿透工具合集
ngrok+nginx 实现内网穿透 共用80端口
穿透后,你的机器指定端口就直接暴露在外网上,3389,vnc,web服务等等任何服务都可以支持。微信开发需要回调web服务器接口,如果开发机器在内网,就无法调试。
凯哥Java
2019/06/28
2.8K0
内网穿透你真的了解吗?
内网穿透你真的了解吗? http://zoo.zhengcaiyun.cn/blog/article/intranet-penetration
政采云前端团队
2023/02/27
7660
内网穿透你真的了解吗?
ngrok+nginx实现内网穿透
写在前面: 前天在qq群里看到有人在讨论替代花生壳的工具,说到了ngrok,说是可以实现花生壳一样的内网穿透,个人认为主要有以下几个用处: 可以在公司测试服务器上搭建一个服务,实现测试站点的本地访问
lestat
2018/04/17
4.8K0
ngrok+nginx实现内网穿透
第46篇:伊朗APT组织入侵美国政府内网全过程揭秘(上篇)
大家好,我是ABC_123,公众号更名为"ABC123安全研究实验室"。本期分享一个真实的APT实战案例,我查看了公布在网上的英文分析报告,并对部分汉化文章的翻译错误进行了改正,力图还原真实过程分享给大家。有些技术细节,英文报告中并没有提到,还望大家谅解。欢迎关注我的公众号"ABC123安全研究实验室"。
ABC_123
2023/02/24
1.7K0
第46篇:伊朗APT组织入侵美国政府内网全过程揭秘(上篇)
中间人攻击之Bettercap工具使用
0x03 Bettercap嗅探模块net.sniff 这个嗅探模块跟wireshark工具差不多 wireshark也可以实现
黑白天安全
2020/04/14
3.8K0
中间人攻击之Bettercap工具使用
史上最强内网渗透知识点总结
文章内容没谈 snmp 利用,可以去乌云等社区获取,没有后续内网持久化,日志处理等内容。
信安之路
2018/08/08
9.3K0
【内网安全】 隧道搭建&穿透上线&FRP&NPS&SPP&Ngrok&EW项目
需要实名人脸验证 收费 官网注册按照使用手册就可以实现内网穿透,认证需要手续费,提供免费隧道但是速度慢 https://www.ngrok.cc/ 支持的协议:tcp、http、https 支持的类型:正向代理、反向代理
没事就要多学习
2024/07/18
2000
【内网安全】 隧道搭建&穿透上线&FRP&NPS&SPP&Ngrok&EW项目
推荐几款实用的内网穿透工具
本文以渗透的视角,总结几种个人常用的内网穿透,内网代理工具,介绍其简单原理和使用方法。
Java团长
2022/02/10
9.1K1
推荐几款实用的内网穿透工具
4 款最常见的内网穿透工具,收好了!
本文以渗透的视角,总结几种个人常用的内网穿透,内网代理工具,介绍其简单原理和使用方法。
Leetcode名企之路
2023/08/19
9.4K2
4 款最常见的内网穿透工具,收好了!
内网中间人的玩法
在内网渗透测试中,我们可以欺骗攻击网络配置和服务。这种攻击方式主要针对ARP(地址解析协议)、DHCP(动态主机配置协议)和DNS服务器配置不当造成的安全隐患。还有一种比较常见的攻击方式就是中间人攻击,他能够使我们通过监控网络流量获取敏感信息。我们可以对网络设备采取安全措施来预防攻击。但是,由于一些协议固有的弱点来进行攻击,本文就是利用LLMNR NetBIOS和WPAD机制来进行中间人攻击。
信安之路
2018/08/08
2.2K0
内网中间人的玩法
【Hvv】攻防演练中蓝队的主要工具
实战攻防演练一般具有时间短、任务紧的特点,前期各项准备工作是否充分是决定蓝队能否顺利完成攻击任务的关键因素。在蓝队攻击任务中,各类工具的运用会贯穿始终,高质量的工具往往能起到事半功倍的效果,极大提升蓝队的攻击效率。工欲善其事,必先利其器,那么我们就来盘点下蓝队主要使用的工具。
用户5878089
2022/12/01
2.7K0
工具的使用 | CobaltStrike的使用
CobaltStrike是一款渗透测试神器,被业界人称为CS神器。CobaltStrike分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队进行分布式协团操作。
谢公子
2022/01/13
3.3K0
工具的使用 | CobaltStrike的使用
相关推荐
流量转发的应用与实现
更多 >
LV.3
字节跳动高级工程师
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档