鄭重聲明:本文僅供技術(shù)交流,切勿拿去做違法事情
很多剛剛?cè)腴T安全的同學(xué)可能比較好奇:黑客到底是如何攻破一個目標的呢?
這個目標可能是一個網(wǎng)站,也可能是一臺個人電腦,還可能是一部智能手機。
這篇文章就來跟大家簡單聊聊這個問題。
網(wǎng)絡(luò)攻擊其實是一種電子信息戰(zhàn)爭,看不見摸不著,卻實實在在發(fā)生了。

打一場戰(zhàn)爭之前最重要的就是情報收集,所謂知己知彼才能百戰(zhàn)百勝,沒有情報就是瞎搞。
網(wǎng)絡(luò)攻擊也一樣,第一步也是情報收集。
端口掃描
發(fā)起網(wǎng)絡(luò)攻擊之前,黑客通常會進行端口掃描,檢測目標上開啟了哪些服務(wù)。
端口,在計算機網(wǎng)絡(luò)協(xié)議中,是位于傳輸層的一個概念,當計算機上多個不同的進程都在通信的時候,用端口號來區(qū)分它們。
端口是一個16位的整數(shù),總共是65535個端口。
端口掃描的原理,就是依次嘗試向服務(wù)器的六萬多個端口發(fā)送探測數(shù)據(jù)包,觀察目標的反應(yīng)。以TCP為例,如果發(fā)送一個TCP的握手包過去,目標返回了第二次握手信息SYN+ACK,則說明在這個端口上,有一個TCP服務(wù)存在。


不過,現(xiàn)在的防火墻對于基本的端口掃描行為都能檢測到,如果發(fā)現(xiàn)同一個IP地址短時間內(nèi)嘗試連接大量端口,則很快會被拉入黑名單,導(dǎo)致端口掃描行為無法再進行下去。
所以端口掃描還會更換IP,更換掃描頻率,變的更難識別。
程序識別
掃描到這些端口后有什么用呢?是用來進行下一步:程序識別。
如果發(fā)現(xiàn)了80端口,背后可能是一個web服務(wù)器。
如果發(fā)現(xiàn)了53端口,背后可能是一個DNS服務(wù)器。
如果發(fā)現(xiàn)了3389端口,背后可能是一個開放了遠程桌面連接的windows機器。
如果發(fā)現(xiàn)了3306端口,背后可能是一個MySQL服務(wù)器。
如果發(fā)現(xiàn)了6379端口,背后可能是一個redis服務(wù)器。
如果發(fā)現(xiàn)了9200服務(wù)器,背后可能是一個ElasticSearch服務(wù)器。
···
再進一步,還能識別程序的種類、版本等。
以80端口為例,通過繼續(xù)發(fā)送HTTP數(shù)據(jù)包,從服務(wù)器的響應(yīng)中,根據(jù)Server字段,還能知道這個web服務(wù)器是一個Nginx,還是一個Apache或者其他。
甚至通過有些服務(wù),我們還能知道背后是一個Windows還是一個linux還是一個Android,如果是Linux,內(nèi)核版本信息也能知道。
端口掃描+程序識別的過程,這些操作已經(jīng)非常成熟,甚至都不用再自己編程或用工具去探測了。直接用Shodan或者ZoomEye,輸入IP地址,就能幫我們列出這個IP背后的信息,省去了不少功夫。

漏洞攻擊
識別了程序,接下來關(guān)鍵的來了:漏洞攻擊。
像nginx、Tomcat、redis、mysql等等這些著名的開源軟件,基本上每年都有不少的漏洞被曝光出來,而許多網(wǎng)站的運營管理人員安全意識并沒有那么強,不會經(jīng)常去打補丁升級,就會導(dǎo)致這些對外提供服務(wù)的機器上留存有不少的漏洞。

黑客通常都會有一個漏洞武器庫,每個軟件有哪些漏洞他們都清清楚楚,針對每個漏洞還開發(fā)了對應(yīng)的攻擊武器。
此時,黑客可以針對發(fā)現(xiàn)的服務(wù)器,編寫一個漏洞利用程序,進行遠程攻擊,從而讓遠程服務(wù)器執(zhí)行自己的代碼。
這其中最為人熟知的應(yīng)該就是web安全了,因為web服務(wù)占據(jù)了互聯(lián)網(wǎng)流量的比重實在太大,有太多的業(yè)務(wù)都是通過web來提供服務(wù),這就導(dǎo)致黑客把目標聚焦在這一塊。
web服務(wù)器后端,一般是C++、JAVA、php、Python這些語言開發(fā)的程序,這些語言所攜帶的庫和框架都或多或少的存在這樣那樣的問題,通過向這些后端程序發(fā)送一系列精心構(gòu)造的請求,就可能讓后端服務(wù)淪陷。
權(quán)限提升
當通過后端服務(wù)的漏洞成功入侵,攻擊者可以讓目標服務(wù)器執(zhí)行自己的代碼。但通常來說,操作系統(tǒng)都有一些安全機制,常見的web、mysql、redis、nginx這些,它們也是在一些低權(quán)限的進程中運行,就算攻擊者攻破后端服務(wù),也是在這些低權(quán)限的進程中執(zhí)行代碼,很多事情都做不了。所以這個時候,攻擊者一般都需要做一件事:權(quán)限提升。

接著,他們再通過利用操作系統(tǒng)的一些漏洞,攻擊者可以讓自己的攻擊代碼逃脫低權(quán)限的進程,獲得高級權(quán)限,比如root權(quán)限執(zhí)行。
開始工作
到這個時候,你的服務(wù)器就真的危險了!為了能夠經(jīng)常登錄你的服務(wù)器,攻擊者還會留一些后門,還會添加一些新用戶,以便常回來看看。
如果是一個竊密軟件,它會偷偷把你的重要文件給傳輸出去。
如果是一個搞破壞的,它還會篡改數(shù)據(jù),黑掉網(wǎng)站。
如果是一個勒索病毒,它還會加密你的文件。
如果是一個挖礦病毒,那你的CPU和GPU就要辛苦了。
還有些高級攻擊的木馬,并不會立刻對你的計算機做什么破壞,而是潛伏起來,躲在某個角落等待被喚醒。
安全防御
以上,就是黑客從信息搜集到最后拿下服務(wù)器的全過程。清楚了敵人的路數(shù),咱們才好對癥下藥,做到下面幾件事,防患于未然:
防火墻記得開啟,并關(guān)閉不需要的端口
web服務(wù)server字段不要泄露任何關(guān)于軟件的信息
軟件即時打補丁
重要數(shù)據(jù)定時備份
使用監(jiān)控軟件監(jiān)控服務(wù)器CPU、內(nèi)存的變化,有異常及時告警
作者:小白哥
來源:小白學(xué)黑客(ID:xiaobaihacker)