某次教育行业红队的信息收集和钓鱼思路
序
本文是Lambda小队经历某次教育行业红队后,通过多种钓鱼姿势,引发的一些思考,分享给大家,同时本文章仅供学习交流使用,请勿将文中所描述内容用于违法犯罪行为。
Google Hack信息收集
案例一:
举个例子,输入 edu.cn "学号",用双引号把学号包含起来,就是要结果必须包含学号。
还有其他的google hack语法,比如以下:
继续举个例子site:edu.cn "学号"
案例二:
这里就不展示其他用法了,自行探索。
比如某次大型活动中就通过google hack发现该校某个老师的登陆cookie未过期,直接复用cookie登陆oa系统。
在oa系统中保存了该教师的工号、身份证等信息,由此就拿到了关键凭据,通过该凭据突破进内网。
后续一路无阻通过堡垒机弱口令拿下学校大部分服务器就是另外一个故事了
案例三:
在星球中我提到了edu中某教务系统普遍存在使用默认账号密码学号/学号
通过登陆账号后,在个人学籍中可以找到个人信息,其中最重要的就是身份证
有了身份证后,我们就可以做很多事,比如拨入我们最想要的VPN
首先使用google hack语法了解一下VPN密码策略(一般情况下账号都是学号)
举个例子:
整理之后发现VPN的初始密码策略大致分为三种:
- ·身份证后六位
- ·学校字母缩写+身份证后六位
- ·预设的统一密码或其他
大多数高校使用的密码策略均与身份证相关,而找到一个可以获取身份证的途径就自然就尤为重要。
那么在教务系统中找到身份证之后的操作这里就不多赘述了,不过就是一个看运气的环节。
爱你哦,学长 (社会工程学)
案例一:
通过海鲜市场、交友等软件,通过某些伪装获得在校生的信任
然后请他把账号密码发给你(读书人的事情怎么能叫骗),通过其vpn进入学校内网,直接省去了找信息的过程。
案例二:
通过弱口令登陆某企业OA后台管理员账号
在泛微后台有一个通讯录导出的功能,可以将所有用户的邮箱和组织架构导出。
发邮件之前需要先做好准备,首先是需要给什么人发邮件,然后是要发什么样的邮件。
以这次钓鱼为例,首先通过OA中发公告的人定位到运维部门,然后再从每个小部门中挑选一到两个幸运儿,组成一个需要发钓鱼邮件的幸运儿列表(后续还真钓到了运维,拿到了密码本,不过这又是另外一个故事);然后是仔细研究了OA中的公告,发现了其有一个大概的格式,最后通过泛微后台内置的内部邮件功能,发送了钓鱼邮件,使用内置的内部邮件功能是为了规避带附件的钓鱼邮件直接进入垃圾箱。
案例三:
通过前期的信息搜集,首先是通过用户名枚举+密码123456,成功登陆进sso系统。
一个好的用户名字典,我觉得应该有以下几种类型:
- ·英文(admin、test等)
- ·数字(1、1000等)
- ·中文
- 全缩写(zs、cc等)
- 名缩写(zhangs、caoc等)
- 全拼(zhangsan、caocao等)
通过sso发现了每个用户用户都可以看组织架构,但是发现这个sso是业务使用,并不是内部工作sso。
通过接口把sso中该企业的用户名、邮箱以及手机号导出,然后看了一下,找到了真正的内部工作sso。
但是工作sso发现使用了手机号当作用户名,而且无法爆破,那没办法,只能一个个试。
运气不错,密码123456还真撞到了一个工作sso的管理员,后续发现这个系统存在若干个管理员。
还是一样的思路,通过工作sso中的通讯录定位运维部门和若干个幸运儿,但是翻邮件发现这个企业并没有严格的邮件格式,但是有一个邮件签名需要设置,直接抄了一个然后再改一下就行,首先通过自己的邮箱测试一下发现直接投递到垃圾箱里去了,没办法只能用拿的邮箱改一下发件人最后发送。
成功上线终端,内网漫游。
回归正题,那么学校该如何钓鱼呢?
一个是通过学校的qq群进行广撒网式钓鱼,比如宣传自己写的游戏、程序或其他东西,但这种一般钓的学生,而且也有一定的局限性,需要在校且在校园网内,现在高校的网络安全发展迅速,进了校园网也不一定能突破隔离,但也不能说不是个好尝试。
那么第二种就是直接钓鱼学校的教师,举个例子:
通过招生、参加大赛之类的邮箱,投递简历等内容的钓鱼载荷。
最后给大家提供一个用go写的捆绑gui demo,避免受害者点了exe之后没任何反应产生察觉,效果如下:
代码如下
package
main
import
(
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/widget"
"time"
"sync"
"fmt"
)
func
main
()
{
myApp := app.New()
myWindow := createProgressBarWindow(myApp)
myWindow.Show()
var
wg sync.WaitGroup
wg.Add(
2
)
go
func
()
{
ticker := time.NewTicker(
5000
* time.Millisecond)
defer
ticker.Stop()
// shellcode加载
for
i:=
0
; i <
10
; i++ {
<-ticker.C
fmt.Println(i)
}
wg.Done()
}()
go
func
()
{
ticker := time.NewTicker(
50
* time.Millisecond)
defer
ticker.Stop()
for
i :=
0
; i <=
100
; i++ {
<-ticker.C
vbox := myWindow.Content().(*fyne.Container)
progressBox := vbox.Objects[
0
].(*fyne.Container)
progress := progressBox.Objects[
0
].(*widget.ProgressBar)
progress.SetValue(
float64
(i) /
100
)
}
newWindow := createOKLabelWindow(myApp)
newWindow.Show()
myWindow.Close()
wg.Done()
}()
myApp.Run()
wg.Wait()
}
func
createProgressBarWindow
(myApp fyne.App)
fyne
.
Window
{
myWindow := myApp.NewWindow(
"自检程序"
)
myWindow.Resize(fyne.Size{Width:
600
, Height:
50
})
progress := widget.NewProgressBar()
progress.Resize(fyne.NewSize(myWindow.Content().Size().Width, progress.MinSize().Height))
progressBox := fyne.NewContainerWithLayout(layout.NewMaxLayout(), progress)
vbox := fyne.NewContainerWithLayout(layout.NewVBoxLayout(), progressBox)
myWindow.SetContent(vbox)
return
myWindow
}
func
createOKLabelWindow
(myApp fyne.App)
fyne
.
Window
{
newWindow := myApp.NewWindow(
"自检程序"
)
newWindow.Resize(fyne.Size{Width:
400
, Height:
100
})
label := widget.NewLabelWithStyle(
"Please close this window"
, fyne.TextAlignCenter, fyne.TextStyle{Bold:
true
, Monospace:
false
})
card := widget.NewCard(
""
,
""
, label)
card.SetContent(label)
labelContainer := fyne.NewContainerWithLayout(layout.NewCenterLayout(), card)
newWindow.SetContent(labelContainer)
return
newWindow
}
但是fyne存在一个缺陷就是中文会出现乱码,这里只是给大家提供一个思路,可以使用其他的库实现这种效果。
思考
本文中所举案例均来自真实的红队案例,从中不难发现,目前高校对于敏感信息防泄漏方面做得还不尽如人意,而且由于高校人员体量较大,新生迭代速度快,对于老师和学生的网络安全教育任重而道远,所以在大量安全从业者在研究各种系统的0day时,殊不知人才是最薄弱的环节,所以在有大量人员参与的一个体系中,即使做到所有系统无0day也无法做到真正的安全。最后,仍然要强调,本文的所有案例和思路仅供学习和交流,同时也给广大教育行业从业者以安全警示作用,切勿利用本文中的工具或思路从事违法犯罪活动。
END
原文始发于微信公众号(哈拉少安全小队):某次教育行业红队的信息收集和钓鱼思路-《爱你哦,学长》
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论