A. 黑客基本術語
1,肉雞:所謂「肉雞」是一種很形象的比喻,比喻那些可以隨意被我們控制的電腦,對方可以是WINDOWS系統,也可以是UNIX/LINUX系統,可以是普通的個人電腦,也可以是大型的伺服器,我們可以象操作自己的電腦那樣來操作它們,而不被對方所發覺。
2,木馬:就是那些表面上偽裝成了正常的程序,但是當這些被程序運行時,就會獲取系統的整個控制許可權。有很多黑客就是 熱中與使用木馬程序來控制別人的電腦,比如灰鴿子,黑洞,PcShare等等。
3,網頁木馬:表面上偽裝成普通的網頁文件或是將而已的代碼直接插入到正常的網頁文件中,當有人訪問時,網頁木馬就會利用對方系統或者瀏覽器的漏洞自動將配置好的木馬的服務端下載到訪問者的電腦上來自動執行。
4,掛馬:就是在別人的網站文件裡面放入網頁木馬或者是將代碼潛入到對方正常的網頁文件里,以使瀏覽者中馬。
5,後門:這是一種形象的比喻,入侵者在利用某些方法成功的控制了目標主機後,可以在對方的系統中植入特定的程序,或者是修改某些設置。這些改動表面上是很難被察覺的,但是入侵者卻可以使用相應的程序或者方法來輕易的與這台電腦建立連接,重新控制這台電腦,就好象是入侵者偷偷的配了一把主人房間的要是,可以隨時進出而不被主人發現一樣。
通常大多數的特洛伊木馬(Trojan Horse)程序都可以被入侵者用語製作後門(BackDoor)
6,rootkit:rootkit是攻擊者用來隱藏自己的行蹤和保留root(根許可權,可以理解成WINDOWS下的system或者管理員許可權)訪問許可權的工具。通常,攻擊者通過遠程攻擊的方式獲得root訪問許可權,或者是先使用密碼猜解(破解)的方式獲得對系統的普通訪問許可權,進入系統後,再通過,對方系統內存在的安全漏洞獲得系統的root許可權。然後,攻擊者就會在對方的系統中安裝rootkit,以達到自己長久控制對方的目的,rootkit與我們前邊提到的木馬和後門很類似,但遠比它們要隱蔽,黑客守衛者就是很典型的rootkit,還有國內的ntroorkit等都是不錯的rootkit工具。
9,IPC$:是共享「命名管道」的資源,它是為了讓進程間通信而開放的餓命名管道,可以通過驗證用戶名和密碼獲得相應的許可權,在遠程管理計算機和查看計算機的共享資源時使用。
10.弱口令:指那些強度不夠,容易被猜解的,類似123,abc這樣的口令(密碼)
11.默認共享:默認共享是WINDOWS2000/XP/2003系統開啟共享服務時自動開啟所有硬碟的共享,因為加了"$"符號,所以看不到共享的托手圖表,也成為隱藏共享。
12.shell:指的是一種命令指行環境,比如我們按下鍵盤上的「開始鍵+R」時出現「運行」對話框,在裡面輸入「cmd」會出現一個用於執行命令的黑窗口,這個就是WINDOWS的Shell執行環境。通常我們使用遠程溢出程序成功溢出遠程電腦後得到的那個用於執行系統命令的環境就是對方的shell
13.webshell:webshell就是以asp、php、jsp或者cgi等網頁文件形式存在的一種命令執行環境,也可以將其稱做是一種網頁後門。黑客在入侵了一個網站後,通常會將這些asp或php後門文件與網站伺服器WEB目錄下正常的網頁文件混在一起,好後就可以使用瀏覽器來訪問這些asp 或者php後門,得到一個命令執行環境,以達到控制網站伺服器的目的。可以上傳下載文件,查看資料庫,執行任意程序命令等。國內常用的webshell有海陽ASP木馬,Phpspy,c99shell等
14.溢出:確切的講,應該是「緩沖區溢出」。簡單的解釋就是程序對接受的輸入數據沒有執行有效的檢測而導致錯誤,後果可能是造成程序崩潰或者是執行攻擊者的命令。大致可以分為兩類:(1)堆溢出(2)棧溢出。
15.注入:隨著B/S模式應用開發的發展,使用這種模式編寫程序的程序員越來越來越多,但是由於程序員的水平參差不齊相當大一部分應用程序存在安全隱患。用戶可以提交一段資料庫查詢代碼,根據程序返回的結果,獲得某些他想要知的數據,這個就是所謂的SQLinjection,即:SQL注意入。
16.注入點:是是可以實行注入的地方,通常是一個訪問資料庫的連接。根據注入點資料庫的運行帳號的許可權的不同,你所得到的許可權也不同。
17.內網:通俗的講就是區域網,比如網吧,校園網,公司內部網等都屬於此類。查看IP地址如果是在以下三個范圍之內的話,就說明我們是處於內網之中的:10.0.0.0—10.255.255.255,172.16.0.0—172.31.255.255,192.168.0.0—192.168.255.255
18.外網:直接連入INTERNET(互連網),可以與互連網上的任意一台電腦互相訪問,IP地址不是保留IP(內網)IP地址。
19.埠:(Port)相當於一種數據的傳輸通道。用於接受某些數據,然後傳輸給相應的服務,而電腦將這些數據處理後,再將相應的恢復通過開啟的埠傳給對方。一般每一個埠的開放的偶對應了相應的服務,要關閉這些埠只需要將對應的服務關閉就可以了。
20.3389、4899肉雞:3389是WINDWS終端服務(Terminal Services)所默認使用的埠號,該服務是微軟為了方便網路管理員遠程管理及維護伺服器而推出的,網路管理員可以使用遠程桌面連接到網路上任意一台開啟了終端服務的計算機上,成功登陸後就會象操作自己的電腦一樣來操作主機了。這和遠程式控制制軟體甚至是木馬程序實現的功能很相似,終端服務的連接非常穩定,而且任何殺毒軟體都不會查殺,所以也深受黑客喜愛。黑客在入侵了一台主機後,通常都會想辦法先添加一個屬於自己的後門帳號,然後再開啟對方的終端服務,這樣,自己就隨時可以使用終端服務來控制對方了,這樣的主機,通常就會被叫做3389肉雞。Radmin是一款非常優秀的遠程式控制制軟體,4899就是Radmin默認使以也經常被黑客當作木馬來使用(正是這個原因,目前的殺毒軟體也對Radmin查殺了)。有的人在使用的服務埠號。因為Radmin的控制功能非常強大,傳輸速度也比大多數木馬快,而且又不被殺毒軟體所查殺,所用Radmin管理遠程電腦時使用的是空口令或者是弱口令,黑客就可以使用一些軟體掃描網路上存在Radmin空口令或者弱口令的主機,然後就可以登陸上去遠程式控制制對惡劣,這樣被控制的主機通常就被成做4899肉雞。
21.免殺:就是通過加殼、加密、修改特徵碼、加花指令等等技術來修改程序,使其逃過殺毒軟體的查殺。
22.加殼:就是利用特殊的酸法,將EXE可執行程序或者DLL動態連接庫文件的編碼進行改變(比如實現壓縮、加密),以達到縮小文件體積或者加密程序編碼,甚至是躲過殺毒軟體查殺的目的。目前較常用的殼有UPX,ASPack、PePack、PECompact、UPack、免疫007、木馬綵衣等等。
23.花指令:就是幾句匯編指令,讓匯編語句進行一些跳轉,使得殺毒軟體不能正常的判斷病毒文件的構造。說通俗點就是」殺毒軟體是從頭到腳按順序來查找病毒。如果我們把病毒的頭和腳顛倒位置,殺毒軟體就找不到病毒了「。
先寫這么多吧,希望對哥們們有幫助了哈
「反彈埠」原理:
服務端(被控制端)主動連接客戶端(控制端),為了隱蔽起見,監聽埠一般開在80(提供HTTP服務的埠),這樣,即使用戶使用埠掃描軟體檢查自己的埠,也難以發現。而控制端發給服務端的數據是一個第三方的空間來實現的,一般用一個主頁空間,控制端通過FTP寫主頁空間上的一個文件,而服務端定期?*** TTP協議讀取這個文件的內容,當發現客戶端讓自己開始連接時,就主動連接。這樣,控制端就可以穿過防火牆,甚至還能訪問區域網內部的電腦。
軟體加殼:
「殼」是一段專門負責保護軟體不被非法修改或反編譯的程序。它們一般都是先於程序運行,拿到控制權,然後完成它們保護軟體的任務。經過加殼的軟體在跟蹤時已看到其真實的十六進制代碼,因此可以起到保護軟體的目的。
軟體脫殼:
顧名思義,就是利用相應的工具,把在軟體「外面」起保護作用的「殼」程序去除,還文件本來面目,這樣再修改文件內容就容易多了。
蠕蟲病毒:
它利用了WINDOWS系統的開放性特點,特別是COM到COM+的組件編程思路,一個腳本程序能調用功能更大的組件來完成自己的功能。以VB腳本病毒為例,它們都是把VBS腳本文件加在附件中,使用*.HTM,VBS等欺騙性的文件名。蠕蟲病毒的主要特性有:自我復制能力、很強的傳播性、潛伏性、特定的觸發性、很大的破壞性。
緩沖區溢出:
功擊者向一個地址區輸入這個區間存儲不下的大量字元。在某些性況下,這些多餘的字元可以作為「執行代碼」來運行,因此足以使功擊者不受安全措施限制地獲得計算機的控制權。
CMD:
是一個所謂命令行控制台。有兩條進入該程序的通道:第一、滑鼠點擊「開始—運行」,在出現的編輯框中鍵入「CMD」,然後點擊「確定」;第二、在啟動Windows2000的時候,按F8進入啟動選擇菜單,移動光條或鍵入數字至安全模式的命令行狀態。出現的窗口是一個在win9x系統常見的那種MSDOS方式的界面。盡管微軟把這個工具當做命令解釋器一個新的實例,但使用方法去和原來的DOS沒有區別。
嗅控器:
(Snifffer)就是能夠捕獲網路報文的設備。嗅控器的正當用處在於分析網路的流量,以便找出所關心的網路中潛在的問題。
密罐:(Honeypot)
是一個包含漏洞的系統,它摸擬一個或多個易受功擊的主機,給黑客提供一個容易功擊的目標。由於密罐沒有其它任務需要完成,因此所有連接的嘗試都應被視為是可疑的。密罐的另一個用途是拖延功擊者對其真正目標的功擊,讓功擊者在密罐上浪費時間。與此同時,最初的功擊目標受到了保護,真正有價值的內容光煥發不將受侵犯。
路由器(Routers):
是用來連接不同子網的中樞,它們工作於osi 7層模型的傳輸層和網路層。路由器的基本功能就是將網路信息包傳輸到它們的目的地。一些路由器還有訪問控制列表(ACLs),允許將不想要的信息包過濾出去。許多路由器都可以將它們的日誌信息注入到IDS系統中,提供有關被阻擋的訪問網路企圖的寶貴信息。
Unicode漏洞:
Unicode是一個16位的字元集,他可以移植到所有主要的計算機平台並且覆蓋幾乎整個世界。微軟IIS4和5都存在利用擴展Unicode字元取代「/」「\」而能利用「../」目錄便利的漏洞。未經授權的用戶可能利用IUSR_machinename帳號的上下文空間訪問任何已知的文件。該帳號在默認情況下屬於Everyone和Users組的成員,因此任何與Web根目錄在同一個邏輯驅動器上的能被這些用戶組訪問的文件都能被刪除、修改或執行,如同一個用戶成功的登陸所能完成的功能一樣!
CGI漏洞:
CGI是Common Gateway Inerface(公用網關介面)的簡稱,並不特指一種語言。Web伺服器的安全問題主要包括:1)Web伺服器軟體編制中的BUG;2)伺服器配置的錯誤。可能導致CGI源代碼泄漏,物理路徑信息泄漏,系統敏感信息泄漏或遠程執行任意命令。CGI語言漏洞分為以下幾類:配置錯誤、邊界條件錯誤、訪問驗證錯誤、來源驗證錯誤、輸入驗證錯誤、策略錯誤、使用錯誤等等。CGI漏洞大多分為一下幾種類型:暴露不該暴露的信息、執行不該執行的命令、溢出。
SSL漏洞:
SSL是Secure Socket Layer的縮寫。是網上傳輸信用卡和帳戶密碼等信息時廣泛採用的行業加密標准。SSL常見的安全漏洞有三種:1、攻擊證書,由於IIS伺服器提供「客戶端證書映射」功能,用於將客戶端提交證書中的名字映射到NT系統的用戶帳號,再這種情況下我們能夠獲得該主機的系統管理員許可權!如果黑客不能利用非法的證書突破伺服器,還可嘗試暴力攻擊。2、竊取證書,黑客還可能竊取有效的證書及相關的思友密匙。3、安全盲點。沒有網路檢測系統再加上沒有安全漏洞審查,使得最重要的伺服器反而成為受到最少防護的伺服器。
IPC$漏洞:
IPC$是共享「命名管道」的資源,它對於程序間的通訊十分重要。再遠程管理計算機和查看計算機的共享資源時使用。利用IPC我們可以與目標主機建立一個空的連接,而利用這個空連接,我們還可以得到目標主機上的用戶列表。但是,一些別有用心的人會利用IPC$,查找我們的用戶列表,並使用一些字典工具,對我們的主機進行入侵攻擊。
IIS漏洞:
IIS是Internet Information Service的縮寫。是微軟公司的Web伺服器。IIS支持多種需要伺服器端處理的文件類型,當一個WEB用戶從客戶端請求此類文件時,相應的DLL文件將自動對其進行處理。然而再ISM.DLL這個負責處理HTR文件的文件中被發現存在嚴重的安全漏洞。該漏洞包含了一個再ISM.DLL重未經驗證的緩沖,他可能對WEB伺服器的安全運作造成兩方面的威脅。首先,是來自服務拒絕攻擊的威脅,另一個威脅通過使用一個精心構建過的文件請求將可以利用標准緩存溢出手段導致2進制代碼再伺服器端運行,再這種情況下,什麼都可能發生!
NTLM驗證:
NTLM(NT LAN Mangager)是微軟公司開發的一種身份驗證機制,從NT4開始就以之使用,主要用於本地的帳號管理。
IPC管道:
為了更好的控制和處理不同進程之間的通信和數據交換,系統會通過一個特殊的連接管道來調度整個進程。
3389漏洞:
由於微軟的原因,使得安裝了微軟服務終端和全拼的Win2K伺服器存在著遠程登陸並能獲得超級用戶全縣的嚴重漏洞。
139漏洞:
通過139埠入侵是網路攻擊中常見的一種攻擊手段,一般情況下139埠開啟是由於NetBIOS網路協議的使用。NetBIOS就是網路基本輸入輸出系統,系統可以利用WINS服務、廣播及Lmhost文件等多種模式將NetBIOS名解析為相應的IP地址,從而實現信息通訊。再區域網內部使用NetBIOS協議可以非常方便的實現消息通信,但是如果再Internet上,NetBIOS就相當於一個後門程序,很多攻擊這都是通過NetBIOS漏洞發起攻擊的!
shell:
shell是系統與用戶的交換方式界面。簡單來說,就是系統與用戶「溝通」的環境。我們平時常用到的DOS,就是一個shell。(Windows2000是cmd.exe)
root:
Unix裡面最高許可權的用戶~即超級管理員
admin:
Windows NT裡面最高許可權的用戶~
rootshell:
通過溢出程序,再主機溢出一個具有root許可權的shell。(順便說一句,國內一知名黑客也叫這個名字)
IDS:
入侵檢測系統,用於在黑客發起進攻或是發起進攻之前檢測到攻擊,並加以攔截。IDS是不同於防火牆的,防火牆只能屏蔽入侵,而IDS卻可以在入侵發生以前,通過一些信息來檢測到即將發生的攻擊或是入侵以作出反應。
UDP:
一種傳輸層協議,在網路上不可靠的傳輸數據包,被DNS用於查詢和應答,許多流音頻和視頻應用也使用它。
API:
一套定義的一致性方法,軟體開發人員能用他來編寫與其他程序捷克歐的程序。API用於擴展程序的功能和使用預編寫的組創建新的程序。
FTP:
文件傳輸協議。一類應用以及該應用使用的協議的名字,用於將文件從一台計算機移動到另一台。
HTTP:
超文本傳輸協議。用於在萬維網上傳輸數據,包括超文本標識語言文檔、圖像、可執行內容等等。TCP承載HTTP,一般伺服器監聽埠80。
HTTPS:
安全超文本傳輸協議。通過在安全套接字層(SSL)協議上運行超文本傳輸協議來將安全添加到萬維網中。HTTPS能用於將WEB伺服器認證到客戶,將客戶認證到WEB伺服器和加密在兩個系統之間傳輸的所有數據,HTTPS伺服器一般監聽TCP埠443。
IRC:
Internet中繼交談,一系列程序和一種協議,用於實現在Internet上的交談會話。IRC特別受計算機地下組織的歡迎,北移些攻擊者用來討論他們的工具、技術和戰利品。
MAC Address:
網路介面的數據鏈路層(第二層)地址。對於乙太網卡,MAC地址維48bit長。
LAN:
區域網!一種網路,連接近距離的計算機,一般位於單個房間、建築物或小的地理區域里。LAN上的所有系統位於一個網路跳之間。
ping:
一類基於Internet控制消息協議的數據包,用於判斷網路上的某台計算機是否可以到達。
Proxy:
代理。一類程序或系統,接收來自客戶機算計的流量,並代表客戶與伺服器交互。代理能用於過濾應用級別的制定類型的流量或緩存信息以提高性能。許多防火牆依賴代理進行過濾。
telnet:
用於系統的遠程命令行訪問的程序和協議。telnet在TCP上傳輸,伺服器一般在TCP埠23監聽。
TCP:
傳輸控制協議。一種傳輸層協議,被許多要求數據的可靠傳輸的應用所使用。HTTP、SMTP、FTP和telnet都使用TCP進行傳輸。
TCP/IP:
整個網際協議族的集合名,包括TCP、UDP、IP和ICMP。
B. Kotlin 中的 Lambda 與 Inline
在 Kotlin 中,Lambda 和高階函數為開發者提供了強大的特性,加速開發,提升效率。
實現捕獲 Throwable,安全執行代碼的高階函數為例,Lambda 實際上被翻譯為匿名內部類。反編譯代碼後,Lambda 表達式被轉化為類的實現形式。
復雜情況下的 Lambda 表達式捕獲外部變數,多次調用,反編譯後,我們發現存在性能問題。為解決此問題,Kotlin 提供了 inline 關鍵字,它將 Lambda 體提取至調用處,避免了類實例生成,優化性能。
然而,使用 inline 時需注意,Lambda 中的 return 可能導致方法提前返回,影響預期結果。解決方法是使用指定 label 的 return 方式,或引入控制流的概念。
控制流分為本地控制流與非本地控制流。本地控制流限於方法內部,本地控制流的違背常見於 Lambda 中的 return。為避免此問題,可使用 noinline 或 crossinline 解決。
inline 在 Kotlin 中的用法與 JIT inline 類似,但有細微差別。inline 帶來的另一個問題是無法訪問私有變數。解決此問題有多種方法,但反編譯結果可能受工具影響,理解總體概念為關鍵。