Puerto de escaneo VB6.0

El creciente desarrollo y popularización de la tecnología de redes informáticas proporciona un canal global de alta velocidad para compartir información. Sin embargo, la familia de protocolos TCP/IP utilizada actualmente tiene posibles lagunas de seguridad y su mecanismo de seguridad no es sólido. cómo proteger los recursos y la información en la red interna de la empresa contra la destrucción o el robo sin sentido por parte de atacantes externos es un tema importante que debe resolverse para la seguridad de la red empresarial. Cuando nos preocupamos por ser atacados por piratas informáticos o sospechamos que se ha implantado un caballo de Troya en nuestro ordenador, solemos recurrir a un firewall. Este sistema previene los ataques de los piratas informáticos monitorizando en tiempo real todas las conexiones TCP. Al mismo tiempo, si los administradores de red pueden monitorear el estado de ejecución y las operaciones de las computadoras en red en tiempo real durante toda la operación de la red es extremadamente importante para la seguridad de la red. A continuación se utiliza Visual Basic 6.0 como herramienta de desarrollo para describir el diseño y la implementación de. los dos módulos principales.

Descripción general del sistema

El sistema consta de dos subsistemas: el sistema del lado del servidor y el sistema del lado del cliente (estación de trabajo). El sistema del lado del servidor se instala en la computadora del administrador de la red y se utiliza para implementar varias operaciones de monitoreo en las computadoras en la red; el sistema cliente se instala en cada computadora en la red. Después de ejecutarse, aparece como un ícono en la barra de tareas del sistema. En el área, no afecta otras operaciones de la estación de trabajo. Solo se utiliza para responder a los comandos de monitoreo del lado del servidor y, de acuerdo con las necesidades del servicio, muestrear oportunamente los datos correspondientes de la estación de trabajo y devolverlos a la. lado del servidor. El entorno operativo de este sistema puede ejecutarse en Win98, Win95 o WinNT, Win2000. En el desarrollo del sistema, se introdujo el control de comunicación WINSOCK. Además, para realizar mejor diversas operaciones de monitoreo, también se utilizaron varias funciones API.

Funciones del sistema

1. Supervise todas las conexiones TCP: supervise el estado de conexión de todos los puertos del servidor en tiempo real, emita advertencias sobre conexiones anormales de manera oportuna y solicite a los usuarios que eliminen las anormales. conexiones;

2. Monitoreo de pantalla: Esta función permite al servidor capturar la pantalla de la estación de trabajo monitoreada al servidor en cualquier momento. El administrador de la red puede ver las operaciones realizadas por la estación de trabajo correspondiente de un vistazo. Si se encuentran operaciones ilegales, se pueden tomar advertencias o medidas obligatorias, obligándolo a detener las operaciones correspondientes;

3. Bloquear, apagar y restringir las actividades del mouse en la estación de trabajo;

4. Intercambiar información entre el servidor y la estación de trabajo.

Implementación de funciones

1. Monitorear todas las conexiones TCP

TCP/IP (Protocolo de control de transmisión/Protocolo de Internet: Protocolo de control de transmisión/Protocolo de Internet) es un Conjunto de protocolos de red que incluye TCP, IP, UDP, ARP, RARP, ICMP, etc. TCP/IP a menudo se denomina "el pegamento que une a Internet", lo que permite conectar múltiples redes de información espacialmente separadas para formar una enorme red virtual. TCP y UDP (Protocolo de datagramas de usuario) son los dos protocolos de transmisión de datos más utilizados. Ambos utilizan el método de configurar puertos de escucha para completar la transmisión de datos.

En este artículo analizamos las conexiones TCP. Al utilizar TCP, un cliente de Internet puede abrir una conexión virtual con otro cliente de Internet y transmitir un flujo de datos. A diferencia de UDP, el protocolo TCP garantiza la confiabilidad de la transmisión al retransmitir datagramas perdidos. También garantiza que la aplicación en el extremo receptor vuelva a ensamblar los bits y bytes recibidos en el orden en que fueron enviados para obtener los datos completos.

Para obtener todas las conexiones TCP válidas en el sistema servidor, utilice la función API GetTcpTable, que se define de la siguiente manera:

Función de declaración privada GetTcpTable Lib "iphlpapi.

dll" (ByRef pTcpTable As MIB_TCPTABLE, ByRef

pdwSize As Long, ByVal border As Long) As Long

El parámetro pPcpTable es el puntero al búfer de la tabla de conexiones TCP generada. el parámetro pdwsize es el tamaño del búfer (cuando el búfer no es lo suficientemente grande, este parámetro devuelve el tamaño real requerido), el parámetro bOrder indica si es necesario presionar la tabla de conexión mediante "IP local", "Puerto local", "IP remota ", "Puerto remoto" Ordenar en orden, 1 significa en este orden.

Al comparar las dos tablas de conexiones TCP antes y después del evento TIMER de un control TIMEER, podemos detectar anomalías inmediatamente y emitir advertencias. Este sistema utiliza sonidos y señales de alarma para alertar a los usuarios de posibles intrusiones externas. Después de recibir la señal de advertencia, primero debemos eliminar la conexión sospechosa. La función SetTcpEntry puede ayudarnos a eliminar la conexión sospechosa.

Se define como:

Función de declaración privada SetTcpEntry Lib "iphlpapi.

dll" (ByRef pTcpTable As MIB_TCPROW) Siempre

El parámetro pTcptable apunta al Puntero de fila de la tabla TCP. Luego establezca el estado de la conexión que se eliminará en MIB_TCP_STATE_DELETE_TCB (el valor es 12) para eliminar la conexión.

Código fuente del evento TIMER:

Private Sub Timer1_Timer()

Dim Return1 As Long, i As Long

Dim Tmp1 As Long , Tmp2 siempre

Dim Ip_Buf(1 a 4) como byte

Dim Win_Path como cadena, Tmp3 como cadena

Return1 = GetTcpTable(TCP1, Len( TCP1), 1)

Si Last_Num_Of_Entries <>0 y _

Last_Num_Of_Entries <>TCP1.dwNum_Of_Entries Entonces

'Emitir una advertencia en caso de excepción

Picture1.Visible = True 'Señal de advertencia

En caso de error Reanudar siguiente

Win_Path = String(145, 0)

'Utilice la función API GetWindowsDirectory para obtener el directorio del sistema actual

i = GetWindowsDirectory(Win_Path, 145)

Win_Path = Left(Win_Path, i)

'Utilice la función API sndPlaySound para hacer sonar una alarma

i = sndPlaySound(Win_Path + "\Media\Ding.wav", &H1)

En caso de error Ir a 0

De lo contrario

Si Imagen1. Visible = Verdadero Entonces

Imagen1.Visible = Falso

Fin Si

Fin Si

Last_Num_Of_Entries = TCP1.dwNum_Of_Entries

Seleccionar Caso Devolución1

Caso 0&:

Texto1 = "": Combo1.Clear

Para i = 0 A TCP1.dwNum_Of_Entries - 1

Tmp3 = Str(i + 1) + " "

Seleccionar caso TCP1.TCP_Table(i).dwState

' Mostrar conexión status

Caso 1: Tmp3 = Tmp3 + "CERRADO"

Caso 2: Tmp3 = Tmp3 + "ESCUCHANDO"

Caso 3: Tmp3 = Tmp3 + " SYN_SENT"

Caso 4: Tmp3 = Tmp3 + "SYN_RCVD"

Caso 5: Tmp3 = Tmp3 + "ESTABLECIDO"

Caso 6: Tmp3 = Tmp3 + "FIN_WAIT1"

Caso 7: Tmp3 = Tmp3 + "FIN_WAIT2"

Caso 8: Tmp3 = Tmp3 + "CLOSE_WAIT"

Caso 9: Tmp3 = Tmp3 + "CIERRE"

Caso 10: Tmp3 = Tmp3 + "LAST_ACK"

Caso 11: Tmp3 = Tmp3 + "TIME_WAIT"

Caso 12: Tmp3 = Tmp3 + "DELETE_TCB"

p>

Finalizar selección

Combo1.AddItem Tmp3 ' Completar la lista para que el usuario la elimine

' IP local

Tmp3 = Tmp3 + ":" + vbCrLf + vbTab + "Local: "

'CopyMemory es una función API

CopyMemory Ip_Buf(1), TCP1.TCP_Table(i). dwLocalAddr, 4

Tmp3 = Tmp3 + CStr(Ip_Buf(1)) + "." + _

CStr(Ip_Buf(2)) + "."+ CStr(Ip_Buf( 3)) _

+"." + CStr(Ip_Buf(4))

Tmp1 = TCP1.TCP_Table(i).dwLocalPort

' Puerto local

Tmp2 = Tmp1 / 256 + (Tmp1 Mod 256) * 256

' IP remota

Tmp3 = Tmp3 + ":" + Str(Tmp2) + vbTab + "Remoto: "

CopyMemory Ip_Buf(1), TCP1.TCP_Table(i).dwRemoteAddr, 4

Tmp3 = Tmp3 + CStr(Ip_Buf(1)) + ". " + CStr(Ip_Buf(2)) _

+ "."+ CStr(Ip_Buf(3)) + "." + CStr(Ip_Buf(4))

' Remoto puerto

Tmp1 = TCP1.TCP_Table(i).dwRemotePort

Tmp2 = Tmp1 / 256 + (Tmp1 Mod 256) * 256

Tmp3 = Tmp3 + " :" + Str(Tmp2) + vbCrLf

Texto1 = Texto1 + Tmp3

Siguiente i

Caso 50&:

MsgBox "El el sistema no admite esta función API": Fin

Caso 87:

MsgBox "Parámetro no válido": Fin

Caso 111&:

MsgBox "Desbordamiento de búfer": Fin

p>

Caso 232&:

MsgBox "Sin datos": Fin

Finalizar selección

End Sub

para eliminar Código fuente del evento CLICK conectado:

Private Sub delete_Click()

Dim Return1 As Long

If Combo1. ListIndex <0 Luego salir de Sub

' Establece el estado de la conexión que se eliminará en 12

TCP1.TCP_Table(Combo1.ListIndex).dwState = 12

' Ejecutar eliminación

Return1 = SetTcpEntry(TCP1.TCP_Table(Combo1.ListIndex))

Si Return1 = 0 Entonces

MsgBox "Eliminar correctamente"

Else

MsgBox "Falló la eliminación"

Finalizar si

Timer1_Timer

Finalizar sub

2. Monitoreo de pantalla

Cuando el sistema del servidor detecta una conexión TCP anormal, puede usar la función de monitoreo de pantalla para capturar la pantalla de la estación de trabajo monitoreada en la LAN al servidor e implementar las medidas correspondientes, como bloquear o apagar la estación de trabajo. Aquí se utiliza el control WINSOCK. Consulte la información relevante para conocer su principio de comunicación. La función de monitoreo de pantalla utiliza el protocolo TCP. Para lograr mejores resultados, puede agregar el control TIMER al formulario y configurar el evento TIMER.

(1) Lado de la estación de trabajo

Escucha y responde a las solicitudes de conexión y capturas de pantalla emitidas por el lado del servidor. La función de captura de pantalla se puede implementar mediante funciones API:

Dim a As String

Winsock1.GetData a, vbString

Select Case a

Caso "zp"

Imagen1.AutoRedraw = True

Imagen1.ScaleMode = 1

lDesktop = GetDesktopWindow()

lDC = GetDC(lDesktop)

BitBlt Picture1.hdc, 0, 0, Screen.Width, _

Screen.Height, lDC,0, 0, vbSrcCopy

'Obtener matriz de imágenes

SavePicture Picture1.Image, nombre de archivo

Winsock1.SendData "okm"

Dim myfile() As Byte

Caso "fir" 'Transferir la primera imagen

Abrir nombre de archivo para binario como #1

filelen = LOF(1)

ReDim myfile(1 To blocksize ) Como Byte

'(const blockize=3072)

Obtener #1, , miarchivo

Winsock1.SendData miarchivo

curpos = blockize

Caso "next" 'Transferir otros bloques

Si curpos = filelen Entonces

Winsock1.SendData "end"

Cerrar # 1

Salir Sub

Fin Si

j = curpos + tamaño de bloque

Si j >filelen Entonces

j = filelen - curpos

Else

j = blockize

End If

ReDim myfile(1 To j) As Byte

p>

Obtener #1, , miarchivo

Winsock1.SendData miarchivo

curpos = curpos + j

Finalizar selección

Nota: Las funciones anteriores se implementan en el evento DataArrival de WINSOCK. La cantidad de datos de imágenes capturadas es grande, por lo que es necesario transmitirlos en fragmentos.

(2) Lado del servidor

Código de evento DataArrival:

Atenuar el archivo de recepción() como byte

ReDim el archivo de recepción(bytesTotal) como byte

Winsock1.GetData recibir archivo, vbArray + vbByte

'Dígale al control Winsock que reciba datos de tipo matriz de bytes

If Chr(receivefile(0) ) = " o" Y _

Chr(receivefile(1)) = "k" Y _

Chr(receivefile(2)) = "m" Entonces

Si Dir$(nombre de archivo) <>"" Entonces elimine el nombre de archivo

'Abra el archivo y prepárese para almacenar la imagen

Abra el nombre de archivo para binario como #1

filelen = 0

Winsock1.SendData "fir"

Salir Sub

Fin Si

Si Chr(receivefile(0)) = "e" Y _

Chr(receivefile(1)) = "n" Y _

Chr(receivefile(2)) = "d" Entonces

Label1.Caption = "end"

Cerrar #1

Imagen1.Picture = LoadPicture(nombre de archivo) 'Mostrar imagen

Salir Sub

Finalizar si

Ponga #1, recibir archivo

Winsock1.SendData "siguiente"

3. Otras funciones

Algunas Las funciones API se utilizan principalmente, por ejemplo, Enable Window se puede utilizar para implementar operaciones de bloqueo y desbloqueo de pantalla. ExitWindowsEx se puede utilizar para implementar la función de apagado. El protocolo UDP del control WINSOCK se utiliza para intercambiar información entre el servidor y la estación de trabajo. Consulte la información relevante para un uso específico.

Conclusión

Al agregar la detección de intrusiones al sistema básico de monitoreo de red, se puede mejorar enormemente la seguridad general de la red, haciéndola más sensible e inteligente, y reduciendo en gran medida el éxito de intrusiones.