close

Ataque cryptolocker En Un SMB Preparado - Parte 2

Descripción General El archivo es una secuencia de comandos PowerShell que los registros de las conexiones TCP activas e incluye el identificador de proceso (PID) y el nombre del proceso para cada conexión en un equipo de Microsoft Windows. El nombre del archivo de registro es un parámetro que se pasa a la secuencia de comandos en tiempo de ejecución. Una entrada de registro se crea cada vez que la lista de procesos con conexiones abiertas o puertos de escucha cambios. Si aún no se han establecido los puertos o direcciones remotas, que se muestran como un asterisco (*). La secuencia de comandos de Log-Conexiones se basa en el comando netstat, "-nao netstat", que se puede ejecutar en el símbolo del sistema de Windows para mostrar una instantánea de todas las conexiones y puertos de escucha. La opción -o dice netstat para mostrar el ID de proceso propietario que está asociado con cada proceso. Una limitación del comando netstat es que no puede informar el nombre del proceso asociado, sólo el PID. Para lograr esto, el guión Log-Conexiones PowerShell llama a la función Get-NetworkStatistics. Esta función fue escrito y esdisponible en . La secuencia de comandos de Log-Conexiones llama a la función Get-NetworkStatistics repetidamente en un bucle infinito, la comparación de la instantánea actual con el anterior. Si hay un cambio, la instantánea actual es una marca de tiempo, registrados en el archivo, y, opcionalmente, pasa a través de la tubería PowerShell. Pasando el objeto de conexiones instantáneas a través de la tubería PowerShell permite que los datos sean manipulados o mostrar en tiempo real por otros cmdlets de PowerShell. Esto se ilustra en los ejemplos que siguen. Introducción rápida a PowerShell Windows PowerShell es un shell de línea de comandos y un lenguaje de programación que se basa en .NET Framework. PowerShell ha existido desde 2006, pero se ha incluido en la base del sistema operativo con Windows 7 y Windows Server 2008 R2. PowerShell puede ser invocada escribiendo "PowerShell" en el cuadro de búsqueda arriba el botón de Inicio de Windows, o escribiendo "PowerShell" en el símbolo del sistema de Windows. Un gran sitio web para aprender más acerca de PowerShell se encuentra en. Potencia ShellLas características de seguridad PowerShell tiene una política de ejecución del script que por defecto impedirá que las secuencias de comandos se ejecute involuntariamente. Para obtener más información sobre políticas de ejecución, escriba el siguiente comando en PowerShell: Get-Help about_Execution_Policies Para poder ejecutar los siguientes ejemplos, se recomienda que se cambie la política de ejecución de "RemoteSigned" para que los scripts locales pueden ejecutar scripts sin firmar y remotas sólo puede funcionar si está firmado por una entidad de confianza. Para ello, ejecute el siguiente comando de PowerShell: Set-ExecutionPolicy RemoteSigned -scope CurrentUser Para volver a la configuración predeterminada, escriba: Set-ExecutionPolicy restringido Otra característica de PowerShell es que los guiones no se pueden ejecutar en el directorio actual escribiendo simplemente el nombre del script . En su lugar, deben ir precedidos de un punto y una barra invertida, ( ". \"). Esto se ilustra en los ejemplos siguientes. Ejemplo 1 PowerShell \ log-Connections.ps1 c:. \ Espacio de trabajo \ mylog.csv Ejemplo 1 muestra siendo el guión Log-Connections.ps1invocado desde el símbolo del sistema de Windows. El guión PS1 y la ruta completa al archivo de registro se pasan como argumentos del comando "PowerShell." También tenga en cuenta el uso de la extensión de archivo "CSV". Esto es conveniente porque en muchos sistemas cuando un archivo CSV es doble clic se iniciar Microsoft Excel. Cualquier otra extensión, incluyendo "TXT" también es aceptable. Ejemplo 2 PowerShell c: \ Temp \ log-Connections.ps1 mylog.csv svchost Ejemplo 2 es muy similar a la primera, excepto un nombre de proceso que se ha pasado como un argumento y sólo el nombre de archivo (sin la ruta), un dictamen , por lo que el archivo de registro se guarda en el directorio actual, c: \ espacio de trabajo. La ruta completa de la secuencia de comandos se proporciona porque se encuentra en c: \ temp. Nota:. Si el archivo de registro ya existe, las nuevas observaciones serán añadidos a la parte inferior de PowerShell Ejemplo 3 \ log-Connections.ps1 mylog.csv svchost -PassThru Utilizando el interruptor "-PassThru" hará que el guión mostrar los resultados a la pantalla en un formato rAW, ademássi se registran en el archivo de registro. Ejemplo 4. \ Log-Connections.ps1 -ProcName svchost -FilePath mylog.csv En el ejemplo 4 que el usuario escribió "PowerShell" en el símbolo del sistema para invocar PowerShell. A continuación, el nombre de la secuencia de comandos y sus argumentos han sido escritos en el indicador de PowerShell. Este ejemplo también demuestra el uso de la convención de parámetros con nombre. Al pasar por el valor del parámetro (por ejemplo, "mylog.csv") después del nombre del parámetro ( "-FilePath") permite que los parámetros que se deben pasar en fuera de orden. Ejemplo 5. \ Log-Connections.ps1 Ejemplo 6 muestra que PowerShell con gracia solicitará los parámetros que faltan que son obligatorios. En este caso, es el valor de ruta de archivo. Ejemplo 6 \ log-Connections.ps1 mylog.csv svchost -PassThru. | Ejemplo formato de la Tabla 6 ilustra una tubería de la salida del script Log-Conexiones al cmdlet Format-Table. El cmdlet Format-Table produce una bonita mesa de los resultados que van a crecer en tiempo real. . Ejemplo 7 \ log-Connections.ps1 mylog.csv iexplore -PassThru | Out-GridViewUsando el cmdlet Out-Gridview, como se muestra en el Ejemplo 7, se producen una cuadrícula de los resultados. La rejilla crece en tiempo real y se puede filtrar y ordenar. Las columnas también se pueden volver a arreglar. La rejilla también se puede filtrar utilizando el botón "Añadir Criterios", como se muestra a continuación: Log-Connections.ps1 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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205# * ================================================ ============================= # * # * HISTORIAL DE REVISIONES =============== ================================================== ============ # * Fecha: [16/12/2012] # * Descripción: Versión inicial # * # * ================= ================================================== ========== [CmdletBinding ()] Param ([Parámetro (Obligatorio = $ True, Posición = 0)] [cadena] $ rutaDeAccesoDeArchivo, [Parámetro (Obligatorio = $ False, Posición = 1)] [ cadena] $ NombreProc = '*', [interruptor] $ PassThru) # ********************************** ********* # * Función Get-NetworkStatistics * # ********************************* ********** función Get-NetworkStatistics {[OutputType ( 'System.Management.Automation.PSObject')] [CmdletBinding (DefaultParameterSetName = 'nombre')] param ([Parámetro (Posición = 0, = ValueFromPipeline $ true, ParameterSetName = "puerto")] [System.Int32] $ puerto = '*', [Parámetro (Posición = 0, ValueFromPipeline = $ true, ParameterSetName = 'nombre')]un asterisco (*). .PARAMETER ProcessName Obtiene conexiones con el nombre del proceso. El valor por defecto es '*'. .PARAMETER De puerto El número de puerto del equipo local o equipo remoto. El valor por defecto es '*'. .PARAMETER Dirección Obtiene las conexiones de la dirección IP de la conexión, local o remoto. Comodín es compatible. El valor por defecto es '*'. Protocolo .PARAMETER El nombre del protocolo (TCP o UDP). El valor por defecto es '*' (todos) .PARAMETER Estado Indica el estado de una conexión TCP. Los estados posibles son los siguientes: Cerrado - La conexión TCP se cierra. CloseWait - El extremo local de la conexión TCP está esperando una petición de terminación de conexión desde el usuario local. Cierre - El extremo local de la conexión TCP está esperando un acuse de recibo de la solicitud de finalización enviado previamente. DeleteTCB - El tampón de control de transmisión (TCB) para laestá siendo borrado conexión TCP. Establecido - La conexión TCP se ha completado. La conexión se ha establecido y los datos pueden ser enviados. FinWait1 - El extremo local de la conexión TCP está esperando una petición de terminación de conexión desde el extremo remoto o un acuse de recibo de la solicitud de finalización enviado previamente. FinWait2 - El extremo local de la conexión TCP está esperando una petición de terminación de conexión desde el extremo remoto. LastAck - El extremo local de la conexión TCP está esperando la confirmación definitiva de la solicitud de finalización enviado previamente. Escuchar - El extremo local de la conexión TCP está a la escucha de una solicitud de conexión desde cualquier punto final remoto. SynReceived - El extremo local de la conexión TCP ha enviado y recibido una solicitud de conexión y esa la espera de un acuse de recibo. SynSent - El extremo local de la conexión TCP ha enviado al extremo remoto de una cabecera de segmento con el bit de control de sincronización (SYN) establece y está a la espera de una solicitud de conexión a juego. TIMEWAIT - El extremo local de la conexión TCP está esperando el tiempo suficiente para pasar a asegurar que el punto final remoto ha recibido el acuse de recibo de su solicitud de finalización. Desconocido - El estado de la conexión TCP es desconocido. Los valores se basan en el recuento TcpState: .EJEMPLO Get-NetworkStatistics .EJEMPLO Get-NetworkStatistics iexplore .EJEMPLO Get-NetworkStatistics -ProcessName md * -Protocolo tcp .EJEMPLO Get-NetworkStatistics -Dirección 192 * ESCUCHAR -Estado .ejemplo Get-NetworkStatistics -Estado -Protocolo de Escucha tcp .OUTPUTS System.Management.Automation.PSObject .Notas Autor: Shay Levy Blog: #>} #******************************************* #* PROGRAMA PRINCIPAL * # ******************************************* Cabecera #ADD a la CSV File [cadena] $ Anterior = "marca de hora, Protocolo, LocalAddress, LocalPort, RemoteAddress," $ Anterior = "RemotePort, Estado, ProcessName, PID" Añadir contenido-$ $ rutaDeAccesoDeArchivo Anterior #Initiate un bucle infinito que llama al Get-NetworkStatistics función repetidamente # y formatea la salida según el caso, mientras que ($ true) {$ Observación = Get-NetworkStatistics $ NombreProc [cadena] $ = $ Observación actual | Out-String if ($ Anterior -ne $ actual) {[cadena] $ timestamp = Get-Date -Formato o $ = $ Anterior actual ParaCada ($ socket en $ Observación) {$ $ registro = marca de hora "," $ Socket.Protocol "," $ Socket.LocalAddress "," `+ $ Socket.LocalPort ", "+ $ Socket.RemoteAddress ", "+ $ Socket.RemotePort ", "` $ Socket.State "," $ Socket.ProcessName "," $ Socket.PIDnúmero se muestra como un asterisco (*). .PARAMETER RutaDeAccesoDeArchivo La ruta y el nombre del archivo de registro. Obligatorio. .PARAMETER NombreProc Iniciar únicas conexiones con el nombre del proceso previsto. El valor por defecto es '*'. .Conecte PassThru devolver un objeto de proceso a la pantalla o la tubería. .EJEMPLO Log-Log Conexiones mylog.csv .EJEMPLO-Conexiones mylog.csv svchost .EJEMPLO Log-Conexiones mylog.csv svchost -PassThru .ejemplo Log-Conexiones -FilePath mylog.csv -ProcName svchost .EJEMPLO Log-Conexiones mylog.csv svchost -PassThru | Format-Table .EJEMPLO Log-Conexiones mylog.csv svchost -PassThru | Out-GridView .OUTPUTS System.Management.Automation.PSObject .Notas Autor: Kenneth G. Hartman Blog: Créditos: Autor de la Función Get-NetworkStatistics es Shay Levy #>

Previous Post     Next Post


TAGS


CATEGORIES

.