一個黑客的自白書

我攤牌了,其實我是一名黑客,這是個人自白書。前端

我將坦白當我準備入侵一個目標時,我是如何收集信息併入侵的。最重要的是,我會給大家一些有用的忠告。程序員


我是如何收集信息的

當我有了一個目標,我就須要開始對目標進行信息收集。web

信息收集階段很重要,由於目標通常對我來講都是黑盒子,我須要進行大量的信息收集才能知道這個系統的運行原理,以及哪裏有漏洞能夠利用。shell

收集信息通常分爲如下幾種類別,咳咳,劃重點了,必考的,注意記筆記。數據庫

一、基本初始信息後端

  • 好比網站的基本信息,以及背景,經營內容等。

二、技術信息安全

  • 網站的技術棧,以及版本
  • IP地址,端口,DNS,域名,子域名等
  • 網站掃描,包括子目錄、敏感信息等
  • 關聯繫統,關聯APP等,好比子公司的網站,或者內部使用的APP
  • 常見的工具備:nmap, dirsearch, subbrute

三、社工服務器

  • 關鍵重要人物信息,員工信息
  • 內部運營方式,公司文化
  • 社交媒體信息
  • 利用人得到的信息,由於人才是最大的漏洞。

四、漏洞掃描微信

  • 有不少漏洞掃描工具,能夠幫助提早發現一些比較嚴重或者能夠利用的漏洞。
  • 常見的工具備:Nikto

五、抓包app

  • 經過抓包能夠獲取一些重要API或者敏感信息,也可能僞造中間人攻擊
  • 常見的工具備:Fiddler,Wireshark

六、Google hacking

  • 能夠幫助你收集關於這個網址的一切,好比可能找到一些敏感信息或後臺入口等

信息收集的方法有不少種,但大多都是靠工具自動化,程序員都很懶,能自動化的事情毫不手動作。

收集到的任何一個小細節均可能成爲你入侵這個系統的突破口。

經過信息蒐集階段,咱們通常能獲得如下這些成果:

  1. 網站後臺登錄地址。
  2. 網站內部管理系統網址。
  3. 有漏洞的老版本軟件。
  4. 社工信息主要用於構建爆破密碼字典和獲取敏感信息。好比ThoughtWorks的某個系統的密碼必定包含TW或者thoughtworks。或者經過人得到的關鍵信息,好比密碼。
  5. 已知漏洞。並非全部網站都會關注已知漏洞並修復,能夠利用一些已知漏洞進行入侵。
  6. 網站的一些內部運行原理。好比ThoughtWorks強制要求員工按期更新密碼,好比某個關鍵系統是使用的某開源庫。

我是如何入侵的(WEB端)

終於來到彰顯我實力的部分了。

入侵成功通常有三種程度,其中第三種最危險:

  1. 拿到或修改未受權的數據。
  2. 拿到web shell,能夠進行當前帳號能操做的全部權限,也能夠嘗試提權。
  3. 拿到root權限,能夠進行全部羞羞的事情。

常見的網站入侵手段主要有如下幾種。大部分手段的目的都是爲了直接獲取想要的信息或者獲取shell/root權限。

一、SQL注入

  1. 簡單來講,就是利用惡意SQL語句讓系統能執行你想執行的SQL語句。有些SQL語句是能夠執行系統命令的,是否是以爲很可怕。因此SQL注入在某些狀況下是能夠拿到root權限的。
  2. 這個漏洞在過去比較常見,不少人都知道它,但如今大型正規網站基本上都沒有這個漏洞了。一般須要在收集階段去慢慢查找有沒有SQL注入漏洞,也有一些工具能夠直接掃描。最好用的SQL注入工具就是SQLMAP
  3. 大部分SQL注入能夠直接致使黑客拿到shell,嚴重的能夠直接拿到root權限,即便拿不到shell也能夠dump你的數據庫。因此危險係數很是高。

二、XSS和CSRF攻擊

  1. XSS全稱是Cross-site scripting,即跨站腳本,CSRF全稱是Cross-site request forgery,即跨站請求僞造。他們的原理和SQL注入差很少,簡單來講就是利用前端代碼來獲取一些重要信息或者僞造一些信息。
  2. 一般你並不知道一個網站有沒有這兩個漏洞,須要在收集階段就不停的測試查找有沒有XSS和CSRF漏洞,也有一些工具能夠自動掃描。好比XssPy
  3. 這兩個漏洞可能致使黑客拿到管理員用戶名密碼,登錄後臺;或者進行非法的操做,好比當你在本身電腦訪問某帳戶時,黑客經過你正在瀏覽的別的網站轉走了你的錢。因此危險係數也很是高。

三、緩衝區溢出攻擊

  1. 這個比較難懂,簡單解釋就是讓代碼溢出緩衝區從而能執行你想執行的代碼。
  2. 這個漏洞依然普遍存在,只是要實現它的難度稍大,因此通常的低端黑客都不會這門功夫。這個幾乎沒有比較簡單的工具能直接掃描,大部分須要你去看源碼手動查找漏洞。
  3. 緩衝區溢出攻擊可讓黑客在拿到web shell後提權以得到系統的最高等級權限,因此危險係數很是高。最出名的當屬20年前的蠕蟲病毒了,只是當時的目的不是爲了入侵。

四、API

  1. 這個多是你們最能理解和接受的入侵方式了。由於如今大部分應用都使用了Restful API,然而並非全部API都完美的作好了認證和鑑權。這就讓咱們這種黑客有了可乘之機,能夠經過API的非法調用來獲取網站的數據或者入侵。
  2. API利用能夠分爲橫向和縱向越權。橫向就是一個用戶訪問別的用戶的數據,好比最簡單的例子就是,若是客戶的ID是自增的,就能夠經過API遍歷的方式獲取這個網站數據庫裏面的全部客戶數據。縱向就是越權訪問更高級別的,好比我經過API的漏洞,把本身的帳號升級成爲管理員帳號。因此這種漏洞是能作到拿到root權限的。

五、邏輯/業務漏洞

  1. 這一般須要對網站的業務和使用邏輯比較熟悉。黑客經常會先重度使用網站,以便能發現一些業務或者邏輯漏洞。
  2. 好比驗證碼能繞過,或者某個重要API未鑑權,再或者我能修改別人的收款帳號,讓錢所有轉進個人口袋。別問我是如何知道的。
  3. 最典型的例子就是前段時間火遍大江南北一晚上之間讓拼多多損失一千萬的薅羊毛事件。因此千萬別小看這種漏洞。輕則讓你損失一千萬,重則,嘿嘿,你本身想。

六、上傳漏洞

  1. 上傳漏洞是指利用網站的上傳接口上傳一些惡意的文件,以達到獲取信息或者控制系統的目的。好比上傳一個後臺管理網頁,我就能夠經過我本身上傳的後臺管理界面登錄並查看網站的全部信息。
  2. 這種漏洞常出如今能夠上傳文件的地方,好比頭像上傳,附件上傳。因爲系統未對上傳文件進行合法校驗,致使了漏洞的存在。因爲入侵程度是能夠達到root權限的,因此危險係數很是高。

七、已知漏洞

  1. 即指的是現有框架/軟件/系統已經公佈存在的漏洞。
  2. 最出名的當屬前段時間震驚全世界的勒索病毒,病毒利用了某些版本的Windows的SMB協議中的漏洞,從而惡意加密用戶文件以勒索比特幣。最新新聞是該組織宣佈他們準備收手了,由於他們已經掙了30億美圓了。爲何我不是他們中的一員😭。
  3. 再好比,早期的openSSH版本有一個大漏洞是能夠遍歷用戶名,這樣你就能夠用獲取到任意有openSSH服務器的用戶名,再利用一個較好的密碼字典就能夠爆破服務器,而後登上服務器作全部羞羞的事情了,想一想就好激動呢。目前不少人都還在用有這個漏洞的openSSH版本,別問我如何知道的。
  4. 已知漏洞之因此還能成功入侵,是由於並非全部人全部公司都會關注漏洞的公佈,以及及時作更新。因此依然有大量的人或公司在使用有已知漏洞的框架或系統。嘿嘿,趕快看看你有沒有什麼老版本的軟件有重大漏洞呀。

八、0day

  1. 那什麼是0day呢,0day剛好是已知漏洞的反義詞,就是未知漏洞。就是指那些你第一個發現的漏洞,你是惟一知道這個漏洞的人,你又能夠利用你發現的0day漏洞作羞羞的事情了呢。若是你發現一個能夠拿到root權限的0day漏洞,那就不得了了。至於你要不要公佈出來,就取決於你是白帽子仍是黑帽子咯。
  2. 那怎麼發現0day漏洞呢,這個就須要結合上面的全部方法去慢慢挖掘了,固然最重要的是少不了要專研源碼。哎,看源碼最頭疼了,不說了,寫完我還要繼續看源碼呢。


我是如何入侵的(APP端)

和網站相比,在這個移動互聯時代,愈來愈多的人在使用移動APP,愈來愈多的公司推出了移動APP,但注重移動APP安全的人卻少之又少。

那麼針對APP的入侵手段有哪些呢?

一、抓包

  1. 經過抓包能夠獲取APP的全部請求,而後僞造請求來獲取本身想要的數據。好比app領取無門檻優惠券是在客戶端驗證每人只能領一次,那我就能夠經過抓包,而後直接發送請求的方式領取無數次。
  2. 抓包有時候也能獲取不少敏感信息,好比用戶名密碼。市面上大部分app都是明文發送用戶名密碼的。不要覺得用了HTTPS就是加密的,隨便找個證書作一箇中間代理就能夠看到全部解密後的數據。這個時候你就能夠偷偷連入鄰居家的Wi-Fi,而後抓取鄰居的用戶名密碼了。別問我如何知道的。
  3. 抓包等同於利用API入侵,因此有時候是能夠作到拿到root權限的。危險係數很是高。

二、反編譯源碼

  1. APP移動端最大的漏洞就是全部源碼都在你的手機上躺着的。雖然他們都是加了密或者混淆過的。但這些手段可貴倒單身的程序員嗎?加密或者混淆的代碼就好像把一張拼圖打亂了放進你手機,但只要你有足夠耐心和方法,是必定能把代碼拼還原的。
  2. 固然,目前已經有不少自動化工具能幫你反編譯源碼了,無論是Android仍是iOS都能得到其源碼。
  3. 既然都有源碼了,不只能夠查找裏面的敏感信息和漏洞,還能研究該APP的業務內容,以及技術棧。好比,你能夠找邏輯或業務漏洞。也能夠找到一些隱藏的API,作越權調用。並且,你極可能在裏面發現一個0day漏洞。

三、和網站同樣的手段

  1. 固然,剛纔上面講到的全部對付網站的手段,全都適用於APP客戶端。
  2. 好比,APP端也能作SQL注入,由於這個漏洞實際上是在服務端的,因此和客戶端是什麼形式沒有關係。同時,APP端也能夠利用XSS或者CSRF攻擊,雖然XSS和CSRF都是前端代碼,但由於管理員老是在網頁端訪問後臺管理系統的。另外,大部分APP都有上傳頭像功能,說不定就有上傳漏洞哦。

來自一個可愛的黑客的忠告(防範方法&安全實踐)

若是你不聽個人這些忠告,我就再也不是你的小可愛了。

那咱們就來看看如何防範上面的入侵手段,以及哪些安全實踐是咱們應該牢記於心的。

一、關於端口,目錄,子域名等

  1. 毫不開放多餘的端口。按期作好端口所用軟件的更新工做。能不開放22端口就不開放。由於天天都有黑客實時在全球掃描開放的22端口。有Linux服務器的小夥伴能夠去檢查一下你的服務器,若是22端口開着,看看是否是天天都有不少ssh登錄失敗的日誌。
  2. 嚴格管理網站目錄的訪問權限,不只要認證,也要鑑權。某個不起眼的目錄可能就成爲了黑客進入的鑰匙。
  3. 哪怕是僅內部使用的域名或子域名,都要嚴格尊從安全實踐。你絕對想不到黑客能在最邊緣的網站裏面找到什麼最核心的內容。

二、密碼與敏感信息

  1. 必定要按期更換密碼,這一點ThoughtWorks作得很是好。你永遠不知道誰在背後悄悄的用你的生日和電話爆破你的帳戶。(不是我)
  2. 敏感信息必定不要輕易寫在某個公開的地方,包括寫在源代碼裏。可執行的二進制文件都是能夠反編譯的,全部敏感信息都將暴露在外。另外,全球天天都有黑客在按期掃描GitHub,就是爲了獲取某個粗心鬼提交的服務器帳號或者數據庫鏈接字符串。ThoughtWorks也在按期掃描GitHub,不同的是,ThoughtWorks是爲了防範員工提交了敏感信息。
  3. 撞庫。撞庫指的是用從別的地方獲取的用戶名密碼來嘗試登錄某個指定系統。好比我獲取了你的手機號和微信密碼,我就能夠用來嘗試登錄支付寶,由於極可能你使用了同一個密碼。撞庫常常發生,此前不少大型互聯網公司都遭遇過撞庫。可見,按期更改密碼多重要,更重要的是不要全部地方都使用同一個密碼。

三、社會工程學

  1. 社會工程學是一門藝術,掌握好了就像007同樣無孔不入。由於人才是最大的漏洞。若是社工作得好,是能夠直接獲取登錄用戶名和密碼的。
  2. 好比釣魚就是一種經常使用的社工手段。其中釣魚網站和釣魚郵件是最多見的。而釣魚郵件對於客服人員或者經常使用郵件的公司員工是最好用的。別問我如何知道的。
  3. 再好比,回憶一下有沒有某個和你搭訕的小哥哥問過你關於密碼的問題。(我不是那個小哥哥)
  4. 終極好比,若是我有ThoughtWorks員工的用戶名密碼,我是否是能夠得到超級多的ThoughtWorks內部數據信息。那如何得到ThoughtWorks員工的用戶名密碼呢?本身想去吧。

四、API

  1. 不要覺得訪問API須要用戶名密碼你的API就是安全的。有太多手段能夠獲取或繞過用戶名密碼。也不要覺得用了HTTPS就是安全的,它只是一層防普通人的殼。
  2. 因此,對於API不只要作認證,也必定要作鑑權。認證指的是訪問API須要提供的訪問憑證,而鑑權則指的是某個已認證的用戶是否有權限訪問某個資源。記住,less is more。
  3. 同時參數的傳遞也會暴露不少信息,必要時也要對參數進行加密。這一點谷歌就作得很好,它大部分網頁的參數都是加密傳遞的。
  4. 不要覺得你又是API Gateway,又是ELB的,又是反向代理的,就沒法進入你的服務器了。API就是黑客進入服務器的一條直路。因此API的安全至關重要。

五、SQL注入

  1. 其實目前使用的Spring等框架開發的網站後端,幾乎都沒有SQL注入漏洞了,由於從框架層面就杜絕了這個漏洞。這個漏洞主要出如今早期的PHP框架和ASP.net。
  2. 杜絕這個漏洞出現的方法就是必定要對SQL的傳入參數作驗證,也必定不要拼接SQL語句。

六、XSS和CSRF

  1. 杜絕這個漏洞的方法也是對傳入參數必定要作驗證。
  2. 同時必定不要把前端傳來的數據直接存入數據庫,你永遠不知道前端會傳來一段什麼樣的惡意代碼。

七、上傳漏洞

  1. 同上面兩個漏洞同樣的,它告訴咱們無論輸入是什麼,必定要作驗證,特別是文件。由於它有多是帶有惡意代碼的文件。
  2. 不只要驗證文件類型,還要驗證文件大小,以及要驗證文件內容。

八、緩衝區溢出漏洞

  1. 這個漏洞是普遍存在的,也是比較難攻擊和難防的。
  2. 能夠經過使操做系統的緩衝區不可執行,從而阻止攻擊者植入攻擊代碼。也能夠利用編譯器的邊界檢查來實現緩衝區的保護。

九、已知漏洞

  1. 已知漏洞多是某個框架的漏洞,好比Spring框架的漏洞。也多是一個軟件的漏洞,好比OpenSSH的漏洞。同時它也多是操做系統的漏洞,好比前段時間比較火的Linux內核漏洞。
  2. 防範已知漏洞的方法就是按期關注重大漏洞的發佈,並及時更新修復。好比Windows的勒索病毒,若是你及時更新了操做系統就不用怕這個病毒了。

十、反編譯

  1. 防範反編譯最基本的一步就是混淆代碼,混淆以後的代碼會變得很是難讀。但讀懂這個代碼也只是時間問題。
  2. 所以,必定不要把任何敏感信息放到會編譯進客戶端的代碼。包括一些敏感的API或者測試數據。

十一、邏輯&業務漏洞

  1. 這個漏洞告訴咱們有完善的測試流程是多麼的重要。
  2. 咱們天天實踐的TDD、自動化測試等都是能夠防範這種漏洞的最佳實踐。
  3. 這個漏洞發生的緣由經常是由於某個程序員爲了趕進度匆匆上線了一個沒有測試的功能形成的。
  4. 同時,毫不能依賴sonarQube/veracode等工具來幫咱們檢查漏洞,它只是必須有的底線,但不是所有。還須要你們把安全牢記於心,就像人劍合一。

十二、0day

  1. 其實咱們天天code review中就能發現不少0day漏洞。因此堅持正確的敏捷實踐還能在安全上給咱們帶來不少好處。
  2. 完善的測試系統也是杜絕0day漏洞的好方法。
  3. 一樣,不要依賴sonarQube/veracode等工具來幫咱們檢查漏洞,更多的要靠人的安全意識。道路千萬條,安全第一條,代碼不規範,親人兩行淚。

最後

看完了這份自白書,是否是有點蠢蠢欲動。無論你是想去嘗試入侵也好,仍是學習安全實踐也好,記得要作一個安全守法的小可愛哦。

黑客經常爲了金錢,虛榮心或者私利而不擇手段的入侵其餘系統。有的黑客是白帽子,會公佈找到的漏洞,好比谷歌就會獎勵找到漏洞的黑客。但有的黑客會在暗網等地下市場買賣數據以謀取暴利,或者入侵系統進行引流或者植入惡意廣告來掙錢,也或者會把入侵的機器做爲肉雞作其餘壞事,好比挖礦。

技術只是一種工具,就看掌握它的人如何去使用它。攻和防是安全領域永恆的話題。內建安全也一直都是ThoughtWorks在努力的方向。只有當咱們知道了如何入侵,才能知道如何防範。

最後,這只是一份入門版的介紹,由於內容不少,不少知識都只是基礎的提到了,將來會展開細講更多的黑客手法和安全實踐。

也歡迎任何小可愛找我一塊兒探討最佳安(ru)全(qin)實(fang)踐(fa)。

相關文章
相關標籤/搜索