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 p>
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" p>
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.