Changeset 1201

Show
Ignore:
Timestamp:
04/04/07 18:47:08 (1 year ago)
Author:
till
Message:

postgres plugin, lots of improvements

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • honeytrap/trunk/ChangeLog

    r1131 r1201  
     1Version 0.7.0 
     2- PostgreSQL module for commits into mwcollect database 
     3- SHA512 hash support 
     4- Performance improvements 
     5- Improved connection request handling in the nfq stream monitor 
     6- FTP download plugin is now source-based routing safe 
    17Version 0.6.5 
    28- Introduced an nfnetlink_queue-based connection monitor 
  • honeytrap/trunk/Makefile.am

    r1088 r1201  
    1212 
    1313        $(INSTALL_DATA) etc/honeytrap.conf.dist $(DESTDIR)/$(sysconfdir)/honeytrap/honeytrap.conf.dist 
    14         $(INSTALL_DATA) etc/honeytrap.conf.dist $(DESTDIR)/$(sysconfdir)/honeytrap/honeytrap.conf 
     14        test -f $(DESTDIR)/$(sysconfdir)/honeytrap/honeytrap.conf || $(INSTALL_DATA) etc/honeytrap.conf.dist $(DESTDIR)/$(sysconfdir)/honeytrap/honeytrap.conf 
    1515        $(INSTALL_DATA) etc/ports.conf.dist $(DESTDIR)/$(sysconfdir)/honeytrap/ports.conf.dist 
    1616        $(INSTALL_DATA) etc/responses/* $(DESTDIR)/$(sysconfdir)/honeytrap/responses 
  • honeytrap/trunk/TODO

    r1101 r1201  
    99 
    1010-- Future plans ------------------------------------------------------- 
    11 o  optional syslog support 
    1211o  dump attack data into MySQL and Postgres databases 
    13 o  support approximate string matching (i.e. via edit distance) for 
    14    new records (command line tool is included, port it into a module?) 
    15 o  add nfqueue and ipfw connection monitors 
     12o  add ipfw connection monitors 
  • honeytrap/trunk/configure.in

    r1131 r1201  
    1818AC_PROG_LIBTOOL 
    1919 if test -n "$GCC"; then 
    20       CFLAGS="$CFLAGS -Wall
     20      CFLAGS="$CFLAGS -Wall
    2121 fi 
    2222 
  • honeytrap/trunk/src/Makefile.am

    r1131 r1201  
    11AUTOMAKE_OPTIONS=foreign no-dependencies 
    22 
    3 AM_CFLAGS=-export-dynamic 
     3AM_CFLAGS=-export-dynamic -Wall -Werror  
    44 
    55sbin_PROGRAMS = honeytrap 
     
    2323                        udp.c udp.h \ 
    2424                        proxy.c proxy.h \ 
     25                        sha512.c sha512.h \ 
    2526                        md5.c md5.h 
    2627 
  • honeytrap/trunk/src/attack.c

    r1126 r1201  
    3030#include "response.h" 
    3131#include "md5.h" 
     32#include "sha512.h" 
    3233#include "proxy.h" 
    3334#include "plughook.h" 
     
    4647        a->a_conn.r_port        = r_port; 
    4748        a->a_conn.protocol      = proto; 
     49        a->dl_count             = 0; 
     50//      memset(a->download, 0, sizeof(struct s_download)); 
     51        a->download             = NULL; 
    4852        if (time(&(a->start_time)) == ((time_t)-1))  
    4953                logmsg(LOG_WARN, 1, "Warning - Could not set attack start time: %s.\n", strerror(errno)); 
     
    7377        } 
    7478 
    75         memcpy(a->a_conn.payload.chksum, (char*)mem_md5sum(a->a_conn.payload.data, a->a_conn.payload.size), 33); 
     79        memcpy(a->a_conn.payload.sha512sum, mem_sha512sum(a->a_conn.payload.data, a->a_conn.payload.size), 129); 
     80        memcpy(a->a_conn.payload.md5sum, mem_md5sum(a->a_conn.payload.data, a->a_conn.payload.size), 33); 
    7681        /* mirror string */ 
    7782        a->p_conn.payload.size = p_size; 
     
    8085                memcpy(a->p_conn.payload.data, p_data, p_size); 
    8186        } 
    82         memcpy((char *) &(a->p_conn.payload.chksum), 
     87        memcpy((char *) &(a->p_conn.payload.md5sum), 
    8388                (char *) mem_md5sum(a->p_conn.payload.data, a->p_conn.payload.size), 32); 
    8489 
     
    100105        return(1); 
    101106} 
     107 
     108/* add a downloaded file to the attack instance */ 
     109int add_download(const char *dl_type, const uint32_t r_addr, const uint16_t r_port, const char *user, const char *pass, const char *filename, const u_char *data, const u_int32_t size, Attack *a) { 
     110        if ((data == NULL) || (!size))  return(0); 
     111 
     112        if (a == NULL) { 
     113                logmsg(LOG_ERR, 1, "Error - Could not add download: No attack record given.\n"); 
     114                return(-1); 
     115        } 
     116 
     117        if ((a->download = realloc(a->download, a->dl_count + 1)) == NULL) { 
     118                logmsg(LOG_ERR, 1, "Error - Unable to allocate memory: %s.\n", strerror(errno)); 
     119                return(-1); 
     120        } 
     121 
     122        if (((a->download[a->dl_count].dl_type = strdup(dl_type)) == NULL) || 
     123            ((a->download[a->dl_count].user = strdup(user)) == NULL) || 
     124            ((a->download[a->dl_count].pass = strdup(pass)) == NULL) || 
     125            ((a->download[a->dl_count].filename = strdup(filename)) == NULL) || 
     126            ((a->download[a->dl_count].dl_payload.data = (u_char *) malloc(size)) == NULL)) {  
     127                logmsg(LOG_ERR, 1, "Error - Unable to allocate memory: %s.\n", strerror(errno)); 
     128                free(a->download[a->dl_count].dl_type); 
     129                free(a->download[a->dl_count].user); 
     130                free(a->download[a->dl_count].pass); 
     131                free(a->download[a->dl_count].filename); 
     132                free(a->download[a->dl_count].dl_payload.data); 
     133                return(-1); 
     134        } 
     135        memcpy(a->download[a->dl_count].dl_payload.data, data, size); 
     136        memcpy(a->download[a->dl_count].dl_payload.md5sum, mem_md5sum(a->download->dl_payload.data, size), 33); 
     137        memcpy(a->download[a->dl_count].dl_payload.sha512sum, mem_sha512sum(a->download->dl_payload.data, size), 129); 
     138 
     139        a->download[a->dl_count].dl_payload.size        = size; 
     140        a->download[a->dl_count].r_addr                 = r_addr; 
     141        a->download[a->dl_count].r_port                 = r_port; 
     142        a->dl_count++; 
     143 
     144        logmsg(LOG_DEBUG, 1, "%d. malware download added to attack record.\n", a->dl_count); 
     145 
     146        return(0); 
     147} 
  • honeytrap/trunk/src/attack.h

    r1119 r1201  
    1717 
    1818struct s_payload { 
    19         uint32_t        size; 
    20         char            chksum[33];     /* md5 checksum */ 
    21         u_char          *data; 
     19        uint32_t                size;           /* length of attack string */ 
     20        char                    md5sum[33];     /* md5 checksum */ 
     21        char                    sha512sum[129]; /* sha512 checksum */ 
     22        u_char                  *data;          /* attack string */ 
    2223}; 
    2324 
     
    3132}; 
    3233 
     34struct s_download { 
     35        char                    *dl_type;       /* (FTP, TFTP, VNC, ...) */ 
     36        uint32_t                r_addr;         /* remote IP address */ 
     37        uint16_t                r_port;         /* remote port */ 
     38        uint16_t                protocol;       /* protocol as in IP header */ 
     39        char                    *user;          /* username for download connection */ 
     40        char                    *pass;          /* user's password */ 
     41        char                    *filename;      /* filename of download */ 
     42        struct s_payload        dl_payload;     /* downloaded data */ 
     43}; 
     44 
    3345typedef struct s_attack { 
    34         time_t          start_time;     /* time of attack start */ 
    35         time_t          end_time;       /* time of attack end */ 
    36         struct s_conn   a_conn;         /* attack connection */ 
    37         struct s_conn   p_conn;         /* proxy/mirror connection */ 
    38         u_char          op_mode;        /* mode of operation (none, ignore, normal, proxy, mirror) */ 
     46        time_t                  start_time;     /* time of attack start */ 
     47        time_t                  end_time;       /* time of attack end */ 
     48        struct s_conn           a_conn;         /* attack connection */ 
     49        struct s_conn           p_conn;         /* proxy/mirror connection */ 
     50        u_char                  op_mode;        /* mode of operation (none, ignore, normal, proxy, mirror) */ 
     51        uint16_t                dl_count;       /* number of downloads */ 
     52//      struct s_download       download[];     /* array of download structs */ 
     53        struct s_download       *download;      /* array of download structs */ 
    3954} Attack; 
    4055 
     
    4257Attack *new_attack(struct in_addr l_addr, struct in_addr r_addr, uint16_t l_port, uint16_t r_port, uint16_t proto); 
    4358int process_data(u_char *a_data, uint32_t a_size, u_char *p_data, uint32_t p_size, uint16_t port, Attack *a); 
    44  
     59int add_download(const char *dl_type, const uint32_t r_addr, const uint16_t r_port, const char *user, const char *pass, const char *filename, const u_char *data, const u_int32_t size, Attack *a); 
    4560 
    4661#endif 
  • honeytrap/trunk/src/dynsrv.c

    r1131 r1201  
    8787    proxy_sock_fd       = -1; 
    8888    proxy_this          = 0; 
    89     mirror_this         = 1
     89    mirror_this         = 0
    9090    established         = 0; 
    9191    port_mode           = PORTCONF_IGNORE; 
     
    118118 
    119119#ifndef USE_IPQ_MON 
     120#ifndef USE_NFQ_MON 
    120121        /* don't need root privs any more */ 
    121122        drop_privileges();  
    122123        logmsg(LOG_DEBUG, 1, "Server is now running with user id %d and group id %d.\n", getuid(), getgid()); 
     124#endif 
    123125#endif 
    124126 
     
    151153         * Just do it in the stream monitor 
    152154         */ 
    153         // nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL);  
     155        nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL);  
    154156 
    155157        /* don't need root privs any more */ 
  • honeytrap/trunk/src/logging.c

    r1097 r1201  
    2222 
    2323 
    24 char *log_time(char ltime[20]) { 
    25         time_t timeval; 
    26  
    27         time(&timeval); 
    28         strftime(ltime, 50, "%F %T", localtime(&timeval)); 
    29         return(ltime); 
    30 } 
    31  
    32  
    3324void logmsg(int level, int add_time, const char *format, ...) { 
    3425        char logline[LOGLINE_SIZE]; 
    3526        va_list ap; 
    3627        int bytes_written, logline_size; 
     28        time_t timeval; 
    3729         
    3830        if(level <= log_level) {  
     
    4032                va_start(ap, format); 
    4133                if (add_time) { 
    42                         snprintf(logline, 24, "[%s]  ", log_time(ltime)); 
     34                        time(&timeval); 
     35                        strftime(logline, 23, "[%F %T] ", localtime(&timeval)); 
    4336                        if (log_level == LOG_DEBUG) 
    4437                                snprintf(logline + strlen(logline), LOGLINE_SIZE - strlen(logline), "%5d  ", getpid()); 
  • honeytrap/trunk/src/logging.h

    r1081 r1201  
    2828#define LOGLINE_SIZE    256     /* truncates longer lines */ 
    2929 
    30 char ltime[20]; 
    3130u_char log_level; 
    3231 
    3332int logfile_fd; 
    3433 
    35 char *log_time(char ltime[20]); 
    3634void logmsg(int level, int add_time, const char * format, ...) __attribute__ ((format (printf, 3, 4))); 
    3735 
  • honeytrap/trunk/src/md5.c

    r1099 r1201  
    278278} 
    279279 
    280 char *mem_md5sum(u_char *mempos, u_int32_t size) 
     280char *mem_md5sum(u_char *msg, u_int32_t size) 
    281281{ 
    282282        unsigned char digest[16]; 
     
    290290        while (size > 0) { 
    291291                bytes = (size < 8192) ? size : 8192; 
    292                 MD5_Update(&ctx, mempos, bytes); 
    293                 mempos += bytes; 
     292                MD5_Update(&ctx, msg, bytes); 
     293                msg += bytes; 
    294294                size -= bytes; 
    295295        } 
  • honeytrap/trunk/src/md5.h

    r1081 r1201  
    3232extern void MD5_Update(MD5_CTX *ctx, void *data, unsigned long size); 
    3333extern void MD5_Final(unsigned char *result, MD5_CTX *ctx); 
    34 char *mem_md5sum(u_char *mempos, u_int32_t size); 
     34char *mem_md5sum(u_char *msg, u_int32_t size); 
    3535 
    3636#endif 
  • honeytrap/trunk/src/modules/Makefile.in

    r1142 r1201  
    6161am_htm_aSaveFile_la_OBJECTS = htm_aSaveFile.lo 
    6262htm_aSaveFile_la_OBJECTS = $(am_htm_aSaveFile_la_OBJECTS) 
     63htm_aSavePostgres_la_LIBADD = 
     64htm_aSavePostgres_la_SOURCES = htm_aSavePostgres.c 
     65htm_aSavePostgres_la_OBJECTS = htm_aSavePostgres.lo 
    6366htm_b64Decode_la_LIBADD = 
    6467am_htm_b64Decode_la_OBJECTS = htm_b64Decode.lo 
     
    8588        $(AM_LDFLAGS) $(LDFLAGS) -o $@ 
    8689SOURCES = $(htm_SpamSum_la_SOURCES) $(htm_aSaveFile_la_SOURCES) \ 
    87         $(htm_b64Decode_la_SOURCES) $(htm_ftpDownload_la_SOURCES) \ 
    88         $(htm_tftpDownload_la_SOURCES) $(htm_vncDownload_la_SOURCES) 
     90        htm_aSavePostgres.c $(htm_b64Decode_la_SOURCES) \ 
     91        $(htm_ftpDownload_la_SOURCES) $(htm_tftpDownload_la_SOURCES) \ 
     92        $(htm_vncDownload_la_SOURCES) 
    8993DIST_SOURCES = $(htm_SpamSum_la_SOURCES) $(htm_aSaveFile_la_SOURCES) \ 
    90         $(htm_b64Decode_la_SOURCES) $(htm_ftpDownload_la_SOURCES) \ 
    91         $(htm_tftpDownload_la_SOURCES) $(htm_vncDownload_la_SOURCES) 
     94        htm_aSavePostgres.c $(htm_b64Decode_la_SOURCES) \ 
     95        $(htm_ftpDownload_la_SOURCES) $(htm_tftpDownload_la_SOURCES) \ 
     96        $(htm_vncDownload_la_SOURCES) 
    9297ETAGS = etags 
    9398CTAGS = ctags 
     
    200205target_alias = @target_alias@ 
    201206AUTOMAKE_OPTIONS = foreign no-dependencies 
     207AM_CFLAGS = -Wall -Werror  
    202208AM_YFLAGS = -d 
    203 lib_LTLIBRARIES = htm_aSaveFile.la htm_ftpDownload.la htm_tftpDownload.la htm_vncDownload.la htm_b64Decode.la htm_SpamSum.la 
     209lib_LTLIBRARIES = htm_aSaveFile.la htm_ftpDownload.la htm_tftpDownload.la htm_vncDownload.la htm_b64Decode.la htm_SpamSum.la htm_aSavePostgres.la 
    204210htm_aSaveFile_la_SOURCES = htm_aSaveFile.c htm_aSaveFile.h 
    205211htm_aSaveFile_la_LDFLAGS = -module -no-undefined -avoid-version 
     
    214220htm_SpamSum_la_SOURCES = htm_SpamSum.c htm_SpamSum.h 
    215221htm_SpamSum_la_LDFLAGS = -module -no-undefined -avoid-version 
     222htm_aSavePostgres = htm_aSavePostgres.c htm_aSavePostgres.h 
     223htm_aSavePostgres_la_LDFLAGS = -module -no-undefined -avoid-version -lpq 
    216224all: all-am 
    217225 
     
    278286htm_aSaveFile.la: $(htm_aSaveFile_la_OBJECTS) $(htm_aSaveFile_la_DEPENDENCIES)  
    279287        $(LINK) -rpath $(libdir) $(htm_aSaveFile_la_LDFLAGS) $(htm_aSaveFile_la_OBJECTS) $(htm_aSaveFile_la_LIBADD) $(LIBS) 
     288htm_aSavePostgres.la: $(htm_aSavePostgres_la_OBJECTS) $(htm_aSavePostgres_la_DEPENDENCIES)  
     289        $(LINK) -rpath $(libdir) $(htm_aSavePostgres_la_LDFLAGS) $(htm_aSavePostgres_la_OBJECTS) $(htm_aSavePostgres_la_LIBADD) $(LIBS) 
    280290htm_b64Decode.la: $(htm_b64Decode_la_OBJECTS) $(htm_b64Decode_la_DEPENDENCIES)  
    281291        $(LINK) -rpath $(libdir) $(htm_b64Decode_la_LDFLAGS) $(htm_b64Decode_la_OBJECTS) $(htm_b64Decode_la_LIBADD) $(LIBS) 
     
    481491install-exec-am: 
    482492        $(mkinstalldirs) $(DESTDIR)/$(sysconfdir)/honeytrap/plugins 
    483         for module in `find .libs -name htm_*.so | grep -v SpamSum`; do \ 
     493        for module in `find .libs -name 'htm_*.so' | egrep -v 'SpamSum|aSavePostgres'`; do \ 
    484494                [ -h $$module ] || $(INSTALL_DATA) "$$module" $(DESTDIR)/$(sysconfdir)/honeytrap/plugins/ ; \ 
    485495        done 
    486         for module in `find . -name htm_*.*a | grep -v SpamSum`; do \ 
     496        for module in `find . -name 'htm_*.*a' | egrep -v 'SpamSum|aSavePostgres'`; do \ 
    487497                rm -f $(DESTDIR)/$(sysconfdir)/honeytrap/plugins/`basename "$$module"` ; \ 
    488498        done 
  • honeytrap/trunk/src/modules/htm_SpamSum.c

    r1126 r1201  
    109109                        if (sig[32] == '\n') sig[32] = 0; 
    110110                        logmsg(LOG_DEBUG, 1, "Comparing with %s.\n", sig); 
    111                         if (strcmp(attack->a_conn.payload.chksum, sig) == 0) sig_match = 1; 
     111                        if (strcmp(attack->a_conn.payload.md5sum, sig) == 0) sig_match = 1; 
    112112                } 
    113113        } 
     
    121121                        return(0); 
    122122                } 
    123                 if (fprintf(hashfile, "%s\n", attack->a_conn.payload.chksum) != 33) { 
     123                if (fprintf(hashfile, "%s\n", attack->a_conn.payload.md5sum) != 33) { 
    124124                        logmsg(LOG_ERR, 1, "Error - Could not append MD5 hash to signature file: %s.\n", strerror(errno)); 
    125125                        fclose(hashfile); 
  • honeytrap/trunk/src/modules/htm_SpamSum.h

    r1126 r1201  
    1919 
    2020const char module_name[]="htm_SpamSum"; 
    21 const char module_version[]="0.2.1"; 
     21const char module_version[]="0.3.0"; 
    2222 
    2323void plugin_init(void); 
  • honeytrap/trunk/src/modules/htm_ftpDownload.c

    r1125 r1201  
    2626#include <sys/socket.h> 
    2727#include <ctype.h> 
    28 #include <stdio.h> 
    2928 
    3029#include <honeytrap.h> 
     
    7170                        /* do ftp download */ 
    7271                        addr = (struct in_addr *) &(attack->a_conn.l_addr); 
    73                         return(get_ftpcmd(string_for_processing, attack->a_conn.payload.size, *addr)); 
     72                        get_ftpcmd(string_for_processing, attack->a_conn.payload.size, *addr,attack); 
    7473                } 
    7574        } 
     
    7877} 
    7978 
    80 int get_ftpcmd(char *attack_string, uint32_t string_size, struct in_addr lhost) { 
     79int get_ftpcmd(char *attack_string, uint32_t string_size, struct in_addr lhost, Attack *attack) { 
    8180        char *parse_string=NULL, port[6], *user=NULL, *pass=NULL, *file=NULL; 
    8281        struct hostent *host=NULL; 
     
    200199 
    201200                        /* Do FTP transaction */ 
    202                         return(get_ftp_ressource(user, pass, (struct in_addr *) &lhost, 
    203                                                 (struct in_addr *) host->h_addr_list[0], atoi(port), file)); 
     201                        return(get_ftp_resource(user, pass, (struct in_addr *) &lhost, 
     202                                                (struct in_addr *) host->h_addr_list[0], atoi(port), file, attack)); 
    204203                } 
    205204        } 
     
    250249 
    251250 
    252 int get_ftp_ressource(const char *user, const char* pass, struct in_addr *lhost, struct in_addr *rhost, const int port, const char *save_file) { 
     251int get_ftp_resource(const char *user, const char* pass, struct in_addr *lhost, struct in_addr *rhost, const int port, const char *save_file, Attack *attack) { 
    253252        struct sockaddr_in control_socket, local_data_socket, remote_data_socket; 
    254253        int control_sock_fd, data_sock_listen_fd, data_sock_fd, dumpfile_fd, 
     
    393392        } 
    394393 
     394        /* set local IP address for data connection */ 
     395        if (ftp_host) { 
     396                /* use this ip address (host) for data connection */ 
     397                logmsg(LOG_DEBUG, 1, "FTP download - Accept data connections on %s.\n", ftp_host); 
     398                if ((data_host = gethostbyname(ftp_host)) == NULL) { 
     399                        logmsg(LOG_ERR, 1, "FTP download error - Unable to resolve %s.\n", ftp_host); 
     400                        return(-1); 
     401                } 
     402                logmsg(LOG_DEBUG, 1, "FTP download - %s resolves to %s.\n", ftp_host, 
     403                        inet_ntoa(*(struct in_addr*)data_host->h_addr_list[0])); 
     404 
     405                if (!valid_ipaddr((uint32_t) *(data_host->h_addr_list[0]))) { 
     406                        logmsg(LOG_INFO, 1, "FTP download error - %s is not a valid ip address.\n", 
     407                                inet_ntoa(*(struct in_addr*)data_host->h_addr_list[0])); 
     408                        return(-1); 
     409                } 
     410                lhost = (struct in_addr*)data_host->h_addr_list[0]; 
     411                memcpy(ip_octet, lhost, 4); 
     412        } else { 
     413                /* determine local IP address of control connection socket */ 
     414                addr_len = sizeof(struct sockaddr_in); 
     415                if (getsockname(control_sock_fd, (struct sockaddr *) &control_socket, (socklen_t *) &addr_len) != 0) { 
     416                        logmsg(LOG_ERR, 1, "FTP download error - Unable to get local address from FTP control connection socket: %s\n", strerror(errno)); 
     417                        return(-1); 
     418                } 
     419                memcpy(ip_octet, &control_socket.sin_addr.s_addr, 4); 
     420        } 
     421        memcpy(&ftp_port, &local_data_socket.sin_port, sizeof(local_data_socket.sin_port)); 
     422 
    395423        /* listen on data channel socket */ 
    396424        memset(&local_data_socket, 0, sizeof(local_data_socket)); 
    397425        local_data_socket.sin_family = AF_INET; 
    398         local_data_socket.sin_addr.s_addr = htonl(INADDR_ANY)
     426        local_data_socket.sin_addr.s_addr = control_socket.sin_addr.s_addr
    399427        local_data_socket.sin_port = htons(local_data_port); 
     428 
    400429        /* TODO: Check if errno == EINVAL (socket in use) */ 
    401430        while(((bind(data_sock_listen_fd, (struct sockaddr *) &local_data_socket, 
     
    427456 
    428457        /* send PORT */ 
    429         if (ftp_host) { 
    430                 /* use this ip address (host) for data connection */ 
    431                 logmsg(LOG_DEBUG, 1, "FTP download - Accept data connections on %s.\n", ftp_host); 
    432                 if ((data_host = gethostbyname(ftp_host)) == NULL) { 
    433                         logmsg(LOG_ERR, 1, "FTP download error - Unable to resolve %s.\n", ftp_host); 
    434                         return(-1); 
    435                 } 
    436                 logmsg(LOG_DEBUG, 1, "FTP download - %s resolves to %s.\n", ftp_host, 
    437                         inet_ntoa(*(struct in_addr*)data_host->h_addr_list[0])); 
    438  
    439                 if (!valid_ipaddr((uint32_t) *(data_host->h_addr_list[0]))) { 
    440                         logmsg(LOG_INFO, 1, "FTP download error - %s is not a valid ip address.\n", 
    441                                 inet_ntoa(*(struct in_addr*)data_host->h_addr_list[0])); 
    442                         return(-1); 
    443                 } 
    444                 lhost = (struct in_addr*)data_host->h_addr_list[0]; 
    445         } 
    446         memcpy(ip_octet, lhost, 4); 
    447         memcpy(&ftp_port, &local_data_socket.sin_port, sizeof(local_data_socket.sin_port)); 
    448458        logmsg(LOG_NOISY, 1, "FTP download - Sending 'PORT %u,%u,%u,%u,%u,%u.\n", 
    449459                ip_octet[0], ip_octet[1], ip_octet[2], ip_octet[3], 
     
    519529                return(-1); 
    520530        } else if (FD_ISSET(data_sock_listen_fd, &rfds)) {  
    521                 if ((data_sock_fd = accept(data_sock_listen_fd, (struct sockaddr *) &remote_data_socket, &addr_len)) < 0) { 
     531                if ((data_sock_fd = accept(data_sock_listen_fd, (struct sockaddr *) &remote_data_socket, (u_int *) &addr_len)) < 0) { 
    522532                        logmsg(LOG_ERR, 1, "FTP download error - Unable to accept FTP data connection: %s\n", 
    523533                                strerror(errno)); 
     
    579589                        logmsg(LOG_NOTICE, 1, "FTP download - %s saved.\n", save_file); 
    580590                } else logmsg(LOG_NOISY, 1, "FTP download - No data received.\n"); 
     591 
     592                /* add download struct to attack struct*/ 
     593                logmsg(LOG_DEBUG, 1, "(htm_ftp) Adding download to attack struct.\n"); 
     594                add_download("ftp", rhost->s_addr, port, user, pass, (const char *) save_file, binary_stream, total_bytes, attack); 
     595//              return(0); 
    581596                close(data_sock_fd); 
    582         } else logmsg(LOG_DEBUG, 1, "FTP download - Select on FTP data channel returned but socket is not set: %s\n", 
    583                 strerror(errno)); 
     597        } else logmsg(LOG_DEBUG, 1, "FTP download - Select on FTP data channel returned but socket is not set: %s\n", strerror(errno)); 
    584598         
    585599        /* close open descriptors and return */ 
  • honeytrap/trunk/src/modules/htm_ftpDownload.h

    r1120 r1201  
    2727int read_ftp_line(int control_sock_fd, char *rline, int timeout); 
    2828int ftp_quit(int control_sock_fd, int data_sock_fd, int dumpfile_fd); 
    29 int get_ftp_ressource(const char *user, const char* pass, struct in_addr *lhost, struct in_addr *rhost, const int port, const char *save_file); 
    30 int get_ftpcmd(char *attack_string, uint32_t string_size, struct in_addr lhost); 
     29int get_ftp_resource(const char *user, const char* pass, struct in_addr *lhost, struct in_addr *rhost, const int port, const char *save_file, Attack *attack); 
     30int get_ftpcmd(char *attack_string, uint32_t string_size, struct in_addr lhost, Attack *attack); 
    3131 
    3232#endif 
  • honeytrap/trunk/src/modules/htm_tftpDownload.c

    r1127 r1201  
    130130 
    131131        /* Do TFTP download */ 
    132         return(get_tftp_ressource((struct in_addr *) host->h_addr_list[0], file)); 
     132        return(get_tftp_resource((struct in_addr *) host->h_addr_list[0], file)); 
    133133} 
    134134 
     
    141141 
    142142 
    143 int get_tftp_ressource(struct in_addr* host, const char *save_file) { 
     143int get_tftp_resource(struct in_addr* host, const char *save_file) { 
    144144        struct sockaddr_in data_socket, from; 
    145145        int data_sock_fd, dumpfile_fd, 
  • honeytrap/trunk/src/modules/htm_tftpDownload.h

    r1102 r1201  
    2929int get_tftpcmd(char *attack_string, int string_size); 
    3030int tftp_quit(int data_sock_fd, int dumpfile_fd); 
    31 int get_tftp_ressource(struct in_addr* host, const char *save_file); 
     31int get_tftp_resource(struct in_addr* host, const char *save_file); 
    3232 
    3333#endif 
  • honeytrap/trunk/src/nfqmon.c

    r1132 r1201  
    9999         
    100100        /* nfq_set_verdict()'s return value is really confusing and documented nowhere */ 
    101       nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL);  
     101//    nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL);  
    102102 
    103103        return(1); 
  • honeytrap/trunk/src/readconf.c

    r1127 r1201  
    315315        /* open logfile */ 
    316316        if((logfile_fd = open(logfile_name, EXCL_FILE_RW, 0644)) == -1) { 
    317                 fprintf(stderr, "  Error - Unable to open logfile.\n"); 
     317                fprintf(stderr, "  Error - Unable to open logfile %s: %s.\n", logfile_name, strerror(errno)); 
    318318                exit(1); 
    319319        } 
  • honeytrap/trunk/src/signals.c

    r1117 r1201  
    4646                        break; 
    4747                case SIGSEGV: 
    48                         logmsg(LOG_DEBUG, 1, "SIGSEGV received.\n"); 
     48                        logmsg(LOG_ERR, 1, "Error - Segmentation fault (SIGSEGV received).\n"); 
    4949                        _exit(0); 
    5050                case SIGINT: 
  • honeytrap/trunk/src/tcp.c

    r1125 r1201  
    2929#include "logging.h" 
    3030#include "ipqmon.h" 
     31#include "nfqmon.h" 
    3132#include "tcp.h" 
    3233 
     
    6768            return(-1); 
    6869#else 
     70#ifdef USE_NFQ_MON 
     71            /* hand packet processing back to the kernel */ 
     72            nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL);  
     73            return(-1); 
     74#else 
    6975            if (errno != 98) 
    7076                    logmsg(LOG_NOISY, 1, "Warning - Could not bind to port %u/tcp: %s.\n", ntohs(port), strerror(errno)); 
     
    7379            close(fd); 
    7480            return(-1); 
     81#endif 
    7582#endif 
    7683        } 
  • honeytrap/trunk/src/udp.c

    r1119 r1201  
    2828#include "logging.h" 
    2929#include "ipqmon.h" 
     30#include "nfqmon.h" 
    3031#include "udp.h" 
    3132 
     
    6566            return(-1); 
    6667#else 
     68#ifdef USE_NFQ_MON 
     69            /* hand packet processing back to the kernel */ 
     70            nfq_set_verdict(qh, id, NF_ACCEPT, 0, NULL);  
     71            return(-1); 
     72#else 
    6773            if (errno != 98) 
    6874                    logmsg(LOG_NOISY, 1, "Warning - Could not bind to port %u/udp: %s.\n", ntohs(port), strerror(errno)); 
     
    7278            return(-1); 
    7379#endif 
     80#endif 
    7481        } 
    7582        return(fd); 
  • honeytrap/trunk/src/util.c

    r1129 r1201  
    117117                retval.string++; 
    118118                retval.offset++; 
    119                 *parse_string++; 
     119                parse_string++; 
    120120        } 
    121121 
     
    126126                (*parse_string != '\n')) { 
    127127                retval.offset++; 
    128                 *parse_string++; 
     128                parse_string++; 
    129129        } 
    130130        *parse_string = 0;