Changeset 1226

Show
Ignore:
Timestamp:
04/21/07 00:46:03 (1 year ago)
Author:
till
Message:

samples are stored in postgres db

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • honeytrap/trunk/src/attack.c

    r1221 r1226  
    4848        a->a_conn.protocol      = proto; 
    4949        a->dl_count             = 0; 
    50 //      memset(a->download, 0, sizeof(struct s_download)); 
    5150        a->download             = NULL; 
    5251        if (time(&(a->start_time)) == ((time_t)-1))  
     
    7978        memcpy(a->a_conn.payload.sha512sum, mem_sha512sum(a->a_conn.payload.data, a->a_conn.payload.size), 129); 
    8079        memcpy(a->a_conn.payload.md5sum, mem_md5sum(a->a_conn.payload.data, a->a_conn.payload.size), 33); 
     80 
    8181        /* mirror string */ 
    8282        a->p_conn.payload.size = p_size; 
     
    101101        /* call plugins */ 
    102102        /* do calls even if no data received, i.e. to update connection statistics */ 
    103         plughook_process_attack(funclist_attack_preproc, *a); 
    104         plughook_process_attack(funclist_attack_analyze, *a); 
    105         plughook_process_attack(funclist_attack_savedata, *a); 
    106         plughook_process_attack(funclist_attack_postproc, *a); 
     103        plughook_process_attack(funclist_attack_preproc, a); 
     104        plughook_process_attack(funclist_attack_analyze, a); 
     105        plughook_process_attack(funclist_attack_savedata, a); 
     106        plughook_process_attack(funclist_attack_postproc, a); 
    107107 
    108108        return(1); 
     
    110110 
    111111/* add a downloaded file to the attack instance */ 
    112 int 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) { 
     112int add_download(const char *dl_type, u_int16_t proto, 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) { 
    113113        if ((data == NULL) || (!size))  return(0); 
    114114 
     
    118118        } 
    119119 
    120         if ((a->download = realloc(a->download, a->dl_count + 1)) == NULL) { 
     120        if ((a->download = realloc(a->download, sizeof(struct s_download) * (a->dl_count + 1))) == NULL) { 
    121121                logmsg(LOG_ERR, 1, "Error - Unable to allocate memory: %s.\n", strerror(errno)); 
    122122                return(-1); 
     
    140140        memcpy(a->download[a->dl_count].dl_payload.sha512sum, mem_sha512sum(a->download->dl_payload.data, size), 129); 
    141141 
     142        a->download[a->dl_count].protocol               = proto; 
    142143        a->download[a->dl_count].dl_payload.size        = size; 
    143144        a->download[a->dl_count].r_addr                 = r_addr; 
  • honeytrap/trunk/src/attack.h

    r1201 r1226  
    5757Attack *new_attack(struct in_addr l_addr, struct in_addr r_addr, uint16_t l_port, uint16_t r_port, uint16_t proto); 
    5858int process_data(u_char *a_data, uint32_t a_size, u_char *p_data, uint32_t p_size, uint16_t port, Attack *a); 
    59 int 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); 
     59int add_download(const char *dl_type, u_int16_t proto, 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); 
    6060 
    6161#endif 
  • honeytrap/trunk/src/modules/Makefile.am

    r1142 r1226  
    22 
    33AM_YFLAGS = -d 
     4 
     5AM_CFLAGS=-Wall -Werror 
    46 
    57INCLUDES = -I../ 
     
    79libdir=$(DESTDIR)/$(sysconfdir)/honeytrap/plugins 
    810 
    9 lib_LTLIBRARIES = htm_aSaveFile.la htm_ftpDownload.la htm_tftpDownload.la htm_vncDownload.la htm_b64Decode.la htm_SpamSum.la 
     11lib_LTLIBRARIES = htm_aSaveFile.la htm_ftpDownload.la htm_tftpDownload.la htm_vncDownload.la htm_b64Decode.la htm_SpamSum.la htm_aSavePostgres.la 
    1012 
    1113htm_aSaveFile_la_SOURCES = htm_aSaveFile.c htm_aSaveFile.h 
     
    2729htm_SpamSum_la_LDFLAGS = -module -no-undefined -avoid-version 
    2830 
     31htm_aSavePostgres_la_SOURCES = htm_aSavePostgres.c htm_aSavePostgres.h 
     32htm_aSavePostgres_la_LDFLAGS = -module -no-undefined -avoid-version -lpq 
     33 
    2934install-exec-am: 
    3035        $(mkinstalldirs) $(DESTDIR)/$(sysconfdir)/honeytrap/plugins 
  • honeytrap/trunk/src/modules/htm_aSavePostgres.c

    r1221 r1226  
    3434#include <plughook.h> 
    3535#include <md5.h> 
     36#include <sha512.h> 
    3637 
    3738#include "htm_aSavePostgres.h" 
     
    100101        } 
    101102        logmsg(LOG_DEBUG, 1, "(Build URL): Typ: %s.\n",download->dl_type); 
    102         snprintf(url + strlen(url), strlen(download->dl_type) + 3, "%s://", download->dl_type); 
     103        snprintf(url + strlen(url), strlen(download->dl_type) + 4, "%s://", download->dl_type); 
    103104 
    104105        if(strlen(download->user)) { 
    105106                logmsg(LOG_NOISY,1,"(Build URL): User: %s Pass: %s.\n", download->user, download->pass); 
    106                 snprintf(url + strlen(url), strlen(download->user) + strlen(download->pass) + 2, "%s:%s@", download->user, download->pass); 
     107                snprintf(url + strlen(url), strlen(download->user) + strlen(download->pass) + 3, "%s:%s@", download->user, download->pass); 
    107108        } 
    108109 
     
    112113        if (download->r_port) { 
    113114                logmsg(LOG_NOISY, 1, "(Build URL): Port: %d.\n", download->r_port); 
    114                 snprintf(url + strlen(url), 6, ":%d/", download->r_port); 
     115                snprintf(url + strlen(url), 7, ":%d/", download->r_port); 
    115116                strcat(url + strlen(url), PROTO(download->protocol)); 
    116117        } 
     
    118119        if (download->filename) { 
    119120                logmsg(LOG_NOISY, 1, "(Build URL): Filename: %s.\n", download->filename); 
    120                 snprintf(url + strlen(url), strlen(download->filename) + 1, "/%s", download->filename); 
     121                snprintf(url + strlen(url), strlen(download->filename) + 2, "/%s", download->filename); 
    121122        } 
    122123 
     
    178179                        return(-1); 
    179180                } 
    180                 if (snprintf(query, MAX_SQL_BUFFER, "SELECT malware.sensor_honeytrap_add_sample('%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s')", 
    181                         mem_md5sum(attack->download->dl_payload.data, attack->download->dl_payload.size), 
    182                         "mysensor", "malware", url, inet_ntoa(*(struct in_addr*)&(attack->a_conn.l_addr)), 
    183                         inet_ntoa(*(struct in_addr*)&(attack->a_conn.r_addr)), attack->a_conn.l_port, 
    184                         attack->download->r_port, esc_bytea) >= MAX_SQL_BUFFER) { 
     181                if (snprintf(query, MAX_SQL_BUFFER, "SELECT attacks.sensor_honeytrap_add_sample('%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s')", 
     182                        mem_sha512sum(attack->download->dl_payload.data, attack->download->dl_payload.size), 
     183                        "honeytrap-default", 
     184                        "dynamic-generic", 
     185                        url, 
     186                        inet_ntoa(*(struct in_addr*)&(attack->a_conn.l_addr)), 
     187                        inet_ntoa(*(struct in_addr*)&(attack->a_conn.r_addr)), 
     188                        attack->a_conn.l_port, 
     189                        attack->download->r_port, 
     190                        esc_bytea) >= MAX_SQL_BUFFER) { 
    185191                        logmsg(LOG_ERR, 1, "Error - Could not save attack: SQL query exceeds maximum size (increase MAX_SQL_BUFFER and recompile).\n"); 
    186192                                free(url); 
     
    229235                strftime(endtime, 40, "%Y-%m-%d %T %Z", localtime(&attack->end_time)); 
    230236 
     237 
     238/* FIXME: link samples to attacks */ 
     239/* 
    231240                if(attack->dl_count) { 
    232241                        if (snprintf(query, MAX_SQL_BUFFER, 
     
    252261                                } 
    253262                } else { 
     263*/ 
    254264                        if (snprintf(query, MAX_SQL_BUFFER, 
    255265                                "SELECT attacks.honeytrap_add_attack_string('%s'::varchar, %d::integer, '%s'::timestamptz, '%s'::timestamptz, " \ 
     
    273283                                        return(-1); 
    274284                                } 
    275               } 
     285//            } 
    276286 
    277287                if (PQresultStatus(res = PQexec(db_connection, query)) != PGRES_TUPLES_OK) { 
  • honeytrap/trunk/src/modules/htm_ftpDownload.c

    r1222 r1226  
    7171                        addr = (struct in_addr *) &(attack->a_conn.l_addr); 
    7272                        get_ftpcmd(string_for_processing, attack->a_conn.payload.size, *addr,attack); 
     73                        return(0); 
    7374                } 
    7475        } 
     
    587588                        } 
    588589                        close(dumpfile_fd); 
     590 
     591                        /* add download struct to attack struct*/ 
     592                        logmsg(LOG_DEBUG, 1, "(htm_ftp) Adding download to attack struct.\n"); 
     593                        add_download("ftp", 6, rhost->s_addr, port, user, pass, (const char *) save_file, binary_stream, total_bytes, attack); 
     594 
    589595                        logmsg(LOG_NOTICE, 1, "FTP download - %s saved.\n", save_file); 
    590596                } else logmsg(LOG_NOISY, 1, "FTP download - No data received.\n"); 
    591597 
    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); 
    596598                close(data_sock_fd); 
     599printf("---> returning.\n"); 
     600                return(0); 
    597601        } else logmsg(LOG_DEBUG, 1, "FTP download - Select on FTP data channel returned but socket is not set: %s\n", strerror(errno)); 
    598602         
  • honeytrap/trunk/src/plughook.c

    r1221 r1226  
    9393 
    9494 
    95 void plughook_process_attack(PlugFuncList *func_list, Attack attack) { 
     95void plughook_process_attack(PlugFuncList *func_list, Attack *attack) { 
    9696        PlugFuncList *func_tmp = NULL; 
    9797 
     
    107107                if (func_tmp->func) { 
    108108                        logmsg(LOG_DEBUG, 1, "Calling %s::%s().\n", func_tmp->plugnam, func_tmp->funcnam); 
    109                         func_tmp->func((void *)&attack); 
     109                        func_tmp->func((void *)attack); 
    110110                } else logmsg(LOG_ERR, 1, "Error - Function %s::%s is not registered.\n", 
    111111                        func_tmp->plugnam, func_tmp->funcnam); 
     
    146146 
    147147        logmsg(LOG_DEBUG, 1, "Calling plugins for hook 'unload_plugins'.\n"); 
    148  
    149 /* 
    150         if (funclist_process_attack == NULL) { 
    151                 logmsg(LOG_DEBUG, 1, "No plugins registered for hook 'unload_plugins'.\n"); 
    152                 return; 
    153         } 
    154 */ 
    155148 
    156149        func_tmp = funclist_unload_plugins; 
  • honeytrap/trunk/src/plughook.h

    r1221 r1226  
    4141 
    4242PlugFuncList *add_attack_func_to_list(const func_prio priority, const char *plugname, const char *funcname, int (*func)(struct s_attack)); 
    43 void plughook_process_attack(PlugFuncList *func_list, Attack attack); 
     43void plughook_process_attack(PlugFuncList *func_list, Attack *attack); 
    4444 
    4545PlugFuncList *add_unload_func_to_list(const char *plugname, const char *funcname, void (*func)(void));