{"$schema":"https://ejfox.com/schema/page-twin@1.json","kind":"blog_post","url":"https://ejfox.com/blog/2019/unsecured-ice-cameras","json_url":"https://ejfox.com/blog/2019/unsecured-ice-cameras.json","generator":"ejfox.com/json-twin@1","data":{"cacheVersion":"2026-05-13-gear-cards","html":"<h2 class=\"\" id=\"attempting-to-find-unsecured-ice-cameras\">Attempting to find unsecured ICE cameras</h2>\n<p class=\"\">A friend DMs me on Twitter:</p>\n<blockquote class=\"md-blockquote\">\n<p class=\"text-zinc-600 dark:text-zinc-400\">yo, you know how security cameras are sometimes open feeds on the internet?\nis there any chance ICE fucked up in this very specific way at a facility?</p>\n</blockquote>\n<p class=\"\">That sounds very plausible. Let’s give it a try. <a href=\"https://www.vice.com/en_us/article/59vm4x/tool-exposed-cameras-map-shodan-python-github\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://www.vice.com/en_us/article/59vm4x/tool-exposed-cameras-map-shodan-python-github\">Webcam scanning with Shodan</a> is a pretty well-known technique at this point. I’m not very familiar with it, so it’s time to learn.</p>\n<h3 class=\"\" id=\"first-idea-ip-ranges\">First idea: IP ranges</h3>\n<p class=\"\">With cursory knowledge, it seemed like the best approach would be to feed Shodan an IP range for the state of Texas (or other Mexico-border states) and then look through the resulting webcams by hand for anything that looks like a prison, holding facility, or government institution.</p>\n<p class=\"\">To do this, first you would need to find <a href=\"https://www.xmyip.com/ip-addresses/united--states/texas\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://www.xmyip.com/ip-addresses/united--states/texas\">IP ranges for the state of Texas</a></p>\n<p class=\"\">The first thing that jumps out to me is El Paso, home to the <a href=\"https://www.ice.gov/detention-facility/el-paso-processing-center\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://www.ice.gov/detention-facility/el-paso-processing-center\">ICE El Paso Processing Center</a> where a <a href=\"https://www.nbcnews.com/news/latino/honduran-man-dies-ice-custody-texas-facility-n1025526\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://www.nbcnews.com/news/latino/honduran-man-dies-ice-custody-texas-facility-n1025526\">Honduran migrant died in late May<svg class=\"inline-block w-4 h-4 ml-1 opacity-50 dark:opacity-75 group-hover:opacity-100 transition-opacity align-text-bottom\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M14.828 4.606c-1.406.006-2.567 1.208-2.416 2.785h1.08s.503-.007.649.338c0 0-1.594.612-1.467 1.609l.992 7.328l3.473-8.432c.53-1.279-.062-3.166-1.698-3.556a2.6 2.6 0 0 0-.613-.072m-5.642.002a2.6 2.6 0 0 0-.628.072c-1.635.387-2.226 2.275-1.697 3.556l3.473 8.432l1.242-9.158c.22-1.63-.956-2.888-2.39-2.903zM4.292 8.31a2.38 2.38 0 0 0-1.559.659c-.803.773-1.427 2.879.371 4.156l6.954 4.926l-3.334-8.076c-.488-1.17-1.479-1.7-2.432-1.665m15.272 0c-.908.02-1.825.553-2.29 1.664l-3.332 8.077l6.953-4.926c1.8-1.275 1.172-3.383.37-4.156a2.38 2.38 0 0 0-1.702-.659m1.939 5.788c-.452.007-.935.157-1.42.502l-6.77 4.794h8.026c1.873 0 3.065-1.582 2.533-3.484c-.26-.926-1.213-1.832-2.369-1.812M2.496 14.1c-1.155-.019-2.108.885-2.369 1.81c-.532 1.902.66 3.484 2.533 3.484h8.025L3.916 14.6c-.485-.344-.968-.493-1.42-.5\" class=\"\"></path></svg></a>.</p>\n<blockquote class=\"md-blockquote\">\n<p class=\"text-zinc-600 dark:text-zinc-400\">El Paso: 12.162.129.0 - 12.162.129.255</p>\n</blockquote>\n<h3 class=\"\" id=\"better-idea-query-by-latitude-and-longitude\">Better idea: query by latitude and longitude</h3>\n<p class=\"\">But then I started doing more research on how to use shodan, and found a great guide:</p>\n<p class=\"\"><a href=\"https://null-byte.wonderhowto.com/how-to/hack-like-pro-find-vulnerable-webcams-across-globe-using-shodan-0154830/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://null-byte.wonderhowto.com/how-to/hack-like-pro-find-vulnerable-webcams-across-globe-using-shodan-0154830/\">How to Find Vulnerable Webcams Across the Globe Using Shodan</a></p>\n<blockquote class=\"md-blockquote\">\n<p class=\"text-zinc-600 dark:text-zinc-400\">Shodan even enables us to be very specific in searching for web-enabled devices. In some cases, we can specify the longitude and latitude of the devices we want to find.\nIn this case, we will be looking for WebcamXP cameras at the longitude and latitude (-37.81, 144.96) of the city of Melbourne, Australia. When we search, we get a list of every WebcamXP at those coordinates on the globe. We must use the keyword geo followed by the longitude and latitude.\n<code class=\"md-inline-code\">webcamxp geo: -37.81,144.96</code></p>\n</blockquote>\n<p class=\"\">Oh! I don’t need to use IP ranges at all. I can just feed <a href=\"https://en.wikipedia.org/wiki/Geo-fence\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://en.wikipedia.org/wiki/Geo-fence\">latitudes and longitudes<svg class=\"inline-block w-4 h-4 ml-1 opacity-50 dark:opacity-75 group-hover:opacity-100 transition-opacity align-text-bottom\" xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M12.09 13.119c-.936 1.932-2.217 4.548-2.853 5.728c-.616 1.074-1.127.931-1.532.029c-1.406-3.321-4.293-9.144-5.651-12.409c-.251-.601-.441-.987-.619-1.139q-.27-.225-1.122-.271q-.314-.034-.313-.159v-.455l.052-.045c.924-.005 5.401 0 5.401 0l.051.045v.434q0 .177-.225.176l-.564.031c-.485.029-.727.164-.727.436c0 .135.053.33.166.601c1.082 2.646 4.818 10.521 4.818 10.521l.136.046l2.411-4.81l-.482-1.067l-1.658-3.264s-.318-.654-.428-.872c-.728-1.443-.712-1.518-1.447-1.617c-.207-.023-.313-.05-.313-.149v-.468l.06-.045h4.292l.113.037v.451c0 .105-.076.15-.227.15l-.308.047c-.792.061-.661.381-.136 1.422l1.582 3.252l1.758-3.504c.293-.64.233-.801.111-.947c-.07-.084-.305-.22-.812-.24l-.201-.021a.23.23 0 0 1-.145-.051a.15.15 0 0 1-.067-.129v-.427l.061-.045c1.247-.008 4.043 0 4.043 0l.059.045v.436c0 .121-.059.178-.193.178c-.646.03-.782.095-1.023.439c-.12.186-.375.589-.646 1.039l-2.301 4.273l-.065.135l2.792 5.712l.17.048l4.396-10.438c.154-.422.129-.722-.064-.895c-.197-.172-.346-.273-.857-.295l-.42-.016a.26.26 0 0 1-.152-.045c-.043-.029-.072-.075-.072-.119v-.436l.059-.045h4.961l.041.045v.437c0 .119-.074.18-.209.18c-.648.03-1.127.18-1.443.421c-.314.255-.557.616-.736 1.067c0 0-4.043 9.258-5.426 12.339c-.525 1.007-1.053.917-1.503-.031c-.571-1.171-1.773-3.786-2.646-5.71z\" class=\"\"></path></svg></a> directly into my searches.</p>\n<p class=\"\">Now, we need a geocoded list of every ICE facility. Luckily, I’ve already done that based on data released in response to a FOIA from Immigrant Justice. This data is hosted on a <a href=\"https://trackingice.com\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://trackingice.com\">wikipedia-style site</a> I created for open source information related to ICE.</p>\n<p class=\"\">This <a href=\"https://bconnelly.net/posts/working_with_csvs_on_the_command_line/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://bconnelly.net/posts/working_with_csvs_on_the_command_line/\">excellent resource on manipulating CSVs with the command line</a> teaches us:</p>\n<blockquote class=\"md-blockquote\">\n<p class=\"text-zinc-600 dark:text-zinc-400\">Specific columns can also be easily extracted from CSVs. For example, if we wanted to extract columns 2, 4, 5, and 6 from input.csv:\n<code class=\"md-inline-code\">cut -d , -f 2,4-6 input.csv</code></p>\n</blockquote>\n<p class=\"\"><a href=\"https://unix.stackexchange.com/questions/41598/using-csv-line-as-command-parameters\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://unix.stackexchange.com/questions/41598/using-csv-line-as-command-parameters\">How do you use CSV lines as command parameters?</a></p>\n<h2 class=\"\" id=\"shodan-cli\">Shodan CLI</h2>\n<p class=\"\">The first <a href=\"https://cli.shodan.io/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://cli.shodan.io/\">example in the Shodan CLI</a> documentation is <code class=\"md-inline-code\">shodan count microsoft iis 6.0</code> which returns <code class=\"md-inline-code\">5310594</code></p>\n<p class=\"\">What we want to do is go through our list of ICE facilities and do shodan scans of their longitude/latitude.</p>\n<p class=\"\">Using the shodan CLI, it should be possible to automate this a bit.</p>\n<p class=\"\">Basically we want to parse our CSV of every facility, pull out the latitude and longitude of that facility, feed that to shodan, run our search, and save the results to a file where we can go back and look for any results (anything besides a 0).</p>\n<p class=\"\">We want our results to look something like this:</p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<table class=\"md-table\"><thead class=\"\"><tr class=\"\"><th align=\"left\" class=\"md-th\">lat</th><th align=\"left\" class=\"md-th\">lng</th><th align=\"left\" class=\"md-th\">results</th></tr></thead><tbody class=\"\"><tr class=\"\"><td align=\"left\" class=\"border-b border-zinc-200 dark:border-zinc-700 px-4 py-2\">0.0</td><td align=\"left\" class=\"border-b border-zinc-200 dark:border-zinc-700 px-4 py-2\">0.0</td><td align=\"left\" class=\"border-b border-zinc-200 dark:border-zinc-700 px-4 py-2\">0</td></tr><tr class=\"\"><td align=\"left\" class=\"border-b border-zinc-200 dark:border-zinc-700 px-4 py-2\">0.0</td><td align=\"left\" class=\"border-b border-zinc-200 dark:border-zinc-700 px-4 py-2\">0.0</td><td align=\"left\" class=\"border-b border-zinc-200 dark:border-zinc-700 px-4 py-2\">0</td></tr><tr class=\"\"><td align=\"left\" class=\"border-b border-zinc-200 dark:border-zinc-700 px-4 py-2\">0.0</td><td align=\"left\" class=\"border-b border-zinc-200 dark:border-zinc-700 px-4 py-2\">0.0</td><td align=\"left\" class=\"border-b border-zinc-200 dark:border-zinc-700 px-4 py-2\">0</td></tr><tr class=\"\"><td align=\"left\" class=\"border-b border-zinc-200 dark:border-zinc-700 px-4 py-2\">0.0</td><td align=\"left\" class=\"border-b border-zinc-200 dark:border-zinc-700 px-4 py-2\">0.0</td><td align=\"left\" class=\"border-b border-zinc-200 dark:border-zinc-700 px-4 py-2\"><strong class=\"\">1</strong></td></tr><tr class=\"\"><td align=\"left\" class=\"border-b border-zinc-200 dark:border-zinc-700 px-4 py-2\">0.0</td><td align=\"left\" class=\"border-b border-zinc-200 dark:border-zinc-700 px-4 py-2\">0.0</td><td align=\"left\" class=\"border-b border-zinc-200 dark:border-zinc-700 px-4 py-2\">0</td></tr></tbody></table>\n<p class=\"\"><a href=\"https://null-byte.wonderhowto.com/how-to/hack-like-pro-find-vulnerable-webcams-across-globe-using-shodan-0154830/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://null-byte.wonderhowto.com/how-to/hack-like-pro-find-vulnerable-webcams-across-globe-using-shodan-0154830/\">This article</a>, helpfully, gives us a list of webcam brands to search for:</p>\n<ul class=\"list-disc\">\n<li class=\"\">ACTi</li>\n<li class=\"\">Axis</li>\n<li class=\"\">Cisco</li>\n<li class=\"\">Grandstream</li>\n<li class=\"\">IQinVision</li>\n<li class=\"\">Mobotix</li>\n<li class=\"\">Panasonic</li>\n<li class=\"\">Samsung Electronics</li>\n<li class=\"\">Samsung Techwin</li>\n<li class=\"\">Sony</li>\n<li class=\"\">TRENDnet</li>\n<li class=\"\">Toshiba</li>\n<li class=\"\">Vivotek</li>\n<li class=\"\">WebcamXP</li>\n</ul>\n<p class=\"\">—</p>\n<p class=\"\">Unfortunately I did not find anything. After running through all of these manufacturers and a number of locations, then combing through the results by hand, I did not locate any unsecured webcams of interest to this particular search.</p>\n<h2 class=\"\" id=\"additional-resources\">Additional Resources</h2>\n<p class=\"\"><a href=\"https://www.a1securitycameras.com/technical-support/default-username-passwords-ip-addresses-for-surveillance-cameras/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"external-link group inline-flex items-center text-blue-600 dark:text-blue-400\" data-preview-url=\"https://www.a1securitycameras.com/technical-support/default-username-passwords-ip-addresses-for-surveillance-cameras/\">List of webcam default usernames / passwords</a></p>","title":"Attempting to find unsecured ICE cameras","metadata":{"dek":"In which the author attempts and fails to find interesting unsecured webcams near known ICE facilities","type":"words","hidden":false,"inprogress":false,"date":"2019-03-24T08:00:39.000Z","modified":"2024-09-23T16:13:18.000Z","tags":["security","hacking","osint"],"words":660,"images":0,"imageDetails":{"total":0,"cloudinary":0,"withDimensions":0},"links":12,"codeBlocks":0,"headers":{"h2":3},"toc":[{"text":"Attempting to find unsecured ICE cameras","slug":"attempting-to-find-unsecured-ice-cameras","level":"h2","children":[{"text":"First idea: IP ranges","slug":"first-idea-ip-ranges","level":"h3","children":[]},{"text":"Better idea: query by latitude and longitude","slug":"better-idea-query-by-latitude-and-longitude","level":"h3","children":[]}]},{"text":"Shodan CLI","slug":"shodan-cli","level":"h2","children":[]},{"text":"Additional Resources","slug":"additional-resources","level":"h2","children":[]}]}},"_links":{"self":"https://ejfox.com/blog/2019/unsecured-ice-cameras.json","html":"https://ejfox.com/blog/2019/unsecured-ice-cameras","index":"/blog.json"}}