欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么檢測Linux上的庫注入

這篇文章主要為大家展示了“怎么檢測Linux上的庫注入”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“怎么檢測Linux上的庫注入”這篇文章吧。

成都創(chuàng)新互聯(lián)公司是專業(yè)的和平網(wǎng)站建設(shè)公司,和平接單;提供網(wǎng)站建設(shè)、成都網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行和平網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

共享庫漏洞

DLL 和 .so 文件都是允許代碼(有時候是數(shù)據(jù))被不同的進程共享的共享庫文件。公用的代碼可以放進一個文件中使得每個需要它的進程可以重新使用而不是多次被重寫。這也促進了對公用代碼的管理。

Linux 進程經(jīng)常使用這些共享庫。(顯示共享對象依賴的)ldd 命令可以對任何程序文件顯示其共享庫。這里有一些例子:

$ ldd /bin/date        linux-vdso.so.1 (0x00007ffc5f179000)        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f02bea15000)        /lib64/ld-linux-x86-64.so.2 (0x00007f02bec3a000)$ ldd /bin/netstat        linux-vdso.so.1 (0x00007ffcb67cd000)        libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f45e5d7b000)        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f45e5b90000)        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f45e5b1c000)        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f45e5b16000)        /lib64/ld-linux-x86-64.so.2 (0x00007f45e5dec000)        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f45e5af5000)

linux-vdso.so.1 (在一些系統(tǒng)上也許會有不同的名字)是內(nèi)核自動映射到每個進程地址空間的文件。它的工作是找到并定位進程所需的其他共享庫。

對庫加載機制加以利用的一種方法是通過使用 LD_PRELOAD 環(huán)境變量。正如 Jaime Blasco 在他的研究中所解釋的那樣,“LD_PRELOAD 是在進程啟動時加載共享庫的很簡單且非常受歡迎的方法??梢詫⒋谁h(huán)境變量配置到共享庫的路徑,以便在加載其他共享對象之前加載該共享庫?!?/p>

為了展示有多簡單,我創(chuàng)建了一個極其簡單的共享庫并且賦值給我的(之前不存在) LD_PRELOAD 環(huán)境變量。之后我使用 ldd 命令查看它對于常用 Linux 命令的影響。

$ export LD_PRELOAD=/home/shs/shownum.so$ ldd /bin/date        linux-vdso.so.1 (0x00007ffe005ce000)        /home/shs/shownum.so (0x00007f1e6b65f000)     <== 它在這里        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1e6b458000)        /lib64/ld-linux-x86-64.so.2 (0x00007f1e6b682000)

注意,僅僅將新的庫賦給 LD_PRELOAD 就影響到了運行的任何程序。

通過設(shè)置 LD_PRELOAD 指定的共享庫首先被加載(緊隨 linux-vdso.so.1),這些庫可以極大程度上改變一個進程。例如,它們可以重定向系統(tǒng)調(diào)用到它們自己的資源,或?qū)Τ绦蜻\行的行為方式進行意想不到的更改。

osquery 工具可以檢測庫注入

osquery 工具(可以在 osquery.io下載)提供了一個非常獨特的查看 Linux 系統(tǒng)的方式。它基本上將操作系統(tǒng)視作一個高性能的關(guān)系數(shù)據(jù)庫。然后,也許你會猜到,這就意味著它可以用來查詢并且生成 SQL 表,該表提供了諸如以下的詳細信息:

  • 運行中的進程

  • 加載的內(nèi)核模塊

  • 打開的網(wǎng)絡(luò)鏈接

一個提供了進程信息的內(nèi)核表叫做 process_envs。它提供了各種進程使用環(huán)境變量的詳細信息。Jaime Blasco 提供了一個相當復(fù)雜的查詢,可以使用 osquery 識別出使用 LD_PRELOAD 的進程。

注意,這個查詢是從 process_envs 表中獲取數(shù)據(jù)。攻擊 ID(T1055)參考 Mitre 對攻擊方法的解釋。

SELECT process_envs.pid as source_process_id, process_envs.key as environment_variable_key, process_envs.value as environment_variable_value, processes.name as source_process, processes.path as file_path, processes.cmdline as source_process_commandline, processes.cwd as current_working_directory, 'T1055' as event_attack_id, 'Process Injection' as event_attack_technique, 'Defense Evasion, Privilege Escalation' as event_attack_tactic FROM process_envs join processes USING (pid) WHERE key = 'LD_PRELOAD';

注意 LD_PRELOAD 環(huán)境變量有時是合法使用的。例如,各種安全監(jiān)控工具可能會使用到它,因為開發(fā)人員需要進行故障排除、調(diào)試或性能分析。然而,它的使用仍然很少見,應(yīng)當加以防范。

同樣值得注意的是 osquery 可以交互使用或是作為定期查詢的守護進程去運行。了解更多請查閱文章末尾給出的參考。

你也能夠通過查看用戶的環(huán)境設(shè)置來定位 LD_PRELOAD 的使用。如果在用戶賬戶中使用了 LD_PRELOAD,你可以使用這樣的命令來查看(假定以個人身份登錄后):

$ env | grep PRELOADLD_PRELOAD=/home/username/userlib.so

以上是“怎么檢測Linux上的庫注入”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站名稱:怎么檢測Linux上的庫注入
鏈接分享:http://chinadenli.net/article6/gigeog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、網(wǎng)頁設(shè)計公司、品牌網(wǎng)站設(shè)計、營銷型網(wǎng)站建設(shè)、用戶體驗、移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)