Without additional information about the NIC itself it is not possible to identitfy "internal" ones - but : if you build a CLR (C++) - library which calls native functions to retrieve necessary information like "on which bus is the NIC located" you may be able to assemble grouping information about the NICs.
Hint : it is easily possible to use CLR-libraries within your VB.NET - application ... simply add the project, import its namespace
and you're good to go : https://msdn.microsoft.com/en-us/library/ms235638%28v=vs.90%29.aspx
At first, you will need to query all NICs via SetupDiGetClassDevs with the parameter GUID_DEVCLASS_NET
, then enumerate that list with SetupDiEnumDeviceInfo, the property DEVPKEY_Device_BusTypeGuid is what you're interested in, you can retrieve it via SetupDiGetDeviceProperty - after all your devices are enumerated you are now able to group them into bus-types, at least one of them is the USB bustype.
Additional filtering may be done via all of the other properties listed here, here and here.
Well, thats quite the expensive solution but it will actually enable you to filter out the "internal" NICs, good luck - feel free to ask any questions.
edit : Apparently there is also a GUID for USB devices, so if you simply retrieve the property DEVPKEY_DeviceInterface_ClassGuid and compare it to GUID_DEVINTERFACE_USB_DEVICE you might be able to filter out USB-NICs on the fly, without the need for additional grouping ... this looks very promising