Disruptive Technology Theory

Disruptive Technology Theory has come up frequently in my coursework and it is largely misunderstood or errantly attributed to firms or ideas that are successful. There’s a collection of articles I will post soon (I’m finishing up a summer class at the University of Arizona this week!) but thought this podcast episode warranted a share on it’s own. Here is a link and description:

The Disruptive Voice, episode 15: Is Uber Disruptive?

Is Uber disruptive? We asked five experts on the theory of disruptive innovation this question and received varying responses, yet their prescriptions for what lies ahead for Uber and the incumbent taxi companies vary less than you might think. In this episode, we revisit Professor Clay Christensen’s December 2014 article in Harvard Business Review, “What Is Disruptive Innovation,” with co-author Rory McDonald, Innosight Managing Partner Scott D. Anthony, Christensen Institute co-founder Michael B. Horn, and Forum Senior Researchers Tom Bartman and Efosa Ojomo. Also discussed: the platform business model through the lens of disruptive innovation and what’s next for Uber.

Disruptive Technology Theory

Using ScanSnap Manager to OCR non-ScanSnap PDFs

I had some PDFs that I wanted to perform optical character recognition (OCR) processing on. I have a Fujitsu ScanSnap and wanted to use the ScanSnap Manager software to do this. The management software checks supplied PDFs and will only perform procession on those which originated using ScanSnap hardware. I wanted to circumvent this and it ended up being easy.

PDFs created with a ScanSnap have the Exif tag “creator” with the model string value. You can use ExifTool by Phil Harvey to print and modify Exif data. For example:

$ exiftool -creator ~/example.pdf
Creator                         : ScanSnap Manager #iX500

The file example.pdf has the correct tag/value pair and will be processed. The next file, covfefe.pdf, does not. You can add/modify the tag to the PDF which did not originate from a ScanSnap.

$ exiftool -creator="ScanSnap Manager #iX500" ~/covfefe.pdf 
    1 image files updated
$ exiftool -creator ~/covfefe.pdf
Creator                         : ScanSnap Manager #iX500

Voila! The ScanSnap Manager software will now process the PDF. You can certainly use free OCR software but I didn’t find any of them to be quite a slick. Plus this was more fun. 🙂

Using ScanSnap Manager to OCR non-ScanSnap PDFs

Welcome to the World of Tomorrow! (Again)

I wanted to follow-up on my previous post about scraping Futurama episode ratings from IMDb. I used tools I was familiar with to get the job done but I was told by someone that I really should check out BeautifulSoup to do it all in Python. It ended up working great and I’ll continue to use BeautifulSoup for web scraping in the future. This is what I did in the IPython interpreter:

import re, requests
import numpy as np
import pandas as pd
import scipy.stats as stats
from bs4 import BeautifulSoup

# create soup object

r = requests.get("http://www.imdb.com/title/tt0149460/eprate?ref_=ttep_sa_2")
soup = BeautifulSoup(r.content)

# scrape scores

scores = []
for score in soup.find_all("td", {"align": "right", "bgcolor": "#eeeeee"}):
    scores.append(float(score.get_text().strip()))

# scrape episodes

titles = []
for title in soup.find_all("a", {"href": re.compile("\/title\/tt")}):
    if len(title["href"]) == 17:
        titles.append(title.get_text().strip())

cols = ["IMDb Rating"]

# build dataframe

frame = pd.DataFrame(scores, titles, cols)

# maths with numpy

np.std(scores)
np.mean(scores)

# maths with pandas

s = pd.Series(scores)
s.std()
s.mean()
s.describe()

pd.Series.describe(frame)

# test for normal distribution

stats.normaltest(scores)

The ISTA 350: Programming for Informatics Applications course at the University of Arizona helped me a lot after my initial post. Additionally, the book Web Scraping with Python by Ryan Mitchell is one I’d recommend keeping handy.

Welcome to the World of Tomorrow! (Again)

Amazon Echo Dot System Image

My friend sent me a second generation Amazon Echo Dot as a holiday gift. It sounded like a good little opportunity to get the ball rolling on some modeling for RiotPSA. Plus I really wanted one!

I began by capturing Dot network traffic just to see what’s going on. I set up a port mirror on a little 5 port switch to capture all of the Dot traffic. I ended up using tshark for ring buffers. The goal was to capture the initial setup of the Dot and then about an hour of no activity. I would keep the Dot connected but I would not say the Dot trigger word. (The default is Alexa.) After only a few minutes I had captured over 250MB! Something fun was going on.

My suspicion was that the Dot downloaded and applied a system update. This turned out to be true.

Using Wireshark

After the hour of capturing I used Wireshark to do a quick analysis of the data. I gravitate to sorting and filtering. I sorted conversations by bytes in Statistics > Conversations. The majority of IPv4 data (about 270MB) was between the Dot and 72.195.165.64.

wireshark_topconI filtered by right-clicking the conversation and selecting Apply as Filter > Selected > A <-> B. In the Wireshark packet list pane I checked out the traffic and decided to filter on the Stream Index of 29.

tcpstream29A nice, clean conversation. 🙂 There was a successful three-way handshake between the Dot and the remote host (72.195.165.64) followed by an HTTP GET request for a file named update-kindle-full_biscuit-272.5.6.4_user_564196920.bin. (I found out that 564196920 is the software version number from https://www.amazon.com/gp/help/customer/display.html?nodeId=201602210.) I copied the full request URI from frame 3546 (http://amzdigitaldownloads.edgesuite.net/obfuscated-otav3-9/1b9718ec2da663bb299676df977055c9/update-kindle-full_biscuit-272.5.6.4_user_564196920.bin) and used wget to download the file.

wgetIt worked! I didn’t have to specify a user agent, spoof any information, etc. (And now you have a way to download the system image for analysis as well!)

I wanted pull the same file out of the pcapng file. I exported the stream using right-click > Follow > TCP stream > Show data as RAW (drop-down list) > Save as… and saved it as ~/tcpstream29.raw. This export should include the HTTP GET request. xxd confirms it’s presence.

xxd_tcpstream29_1At this point we just want the file. The offset we’re looking for is easy to pick out due to a pretty recognizable file signature shortly after the ASCII keep-alive. (0x504b0304) A carver would be handy but the PK allows me to eyeball it.

xxd_tcpstream29_2I used a hex editor (Bless) to dump everything before offset 0x243.

bless_tcpstream29It’s dead simple. Highlight what we want to remove and hit delete. I saved it as ~/tcpstream29_edited.raw. This file should be identical to the one I downloaded earlier with wget, which I verified by hashing each and comparing them. In case it helps the hashes are below:

  • SHA1(update-kindle-full_biscuit-272.5.6.4_user_564196920.bin)= e897fef9384220cb60bd6f385c328f57408cd5f5
  • SHA512(update-kindle-full_biscuit-272.5.6.4_user_564196920.bin)= cc92c85e08ce412dfbe14562e8df76cdd600da60d3f9245decabb9d65e92b473d07db11559a8b2ffe56e525d0050245dfd0d2c1d0dd23e47d14dee9dd911b01a

Inside

I loaded the file into X-Ways so I could explore, filter, comment, etc. This quickly led to enough information that warrants its own post. Because of that I won’t go over everything here but will instead save it for a separate post. It is worth noting some things that stuck out from the get-go:

  • The Dot runs Android or at least a modified version of it.
  • There’s a bash script for iptables firewall configuration. There is an initial flushing of the tables and a default deny is put in place after. I will look at the rules and scan against them to verify that the script is ran once I enter a more active phase of information gathering.
  • The Dot also implements bluetooth blacklisting to specifically prevent automobiles from automatically pairing with it.
  • The system update comes with two firmware packages for integrated components. I’ll run these through strings, binwalk, and bulk_extractor to see if anything fun comes up.

Again – I’ll go over these items (and more) in follow-up posts.

Thoughts of an Echo Dot compromise

The idea of fully compromised an Amazon Echo Dot crossed my mind. Here are a few thoughts I have.

Alter the system update to suit your goal

Altering the firewall bash script and including binaries in a repacked copy of the update is possible. If the Echo Dot does not require that system images be digitally signed then the system update has a chance at being loaded/ran on an Echo Dot if presented correctly. I don’t know if the system packages are digitally signed of if signing is required. Absence of evidence is not evidence. Right now I just do not know because I haven’t looked.

Trick the Echo Dot into downloading and running a bad update

I believe I traced down the TCP conversation in my capture file that alerted the Echo Dot that an update was available and where to find it. I started at the tcp.stream of the system update download itself and worked backwards using the IP addresses, DNS queries/answers, etc. Unfortunately (or fortunately really) the TCP stream of interest contains an encrypted conversation. I can not see inside it to verify.

Effort and insight would be required to discover how the Echo Dot is specifically told an update exists. More would be needed still to manufacture a way to trick an Echo Dot into downloading and running a system image not created and made available by Amazon. Later on I’ll be using The OWASP Zed Attack Proxy (ZAP) and the Burp Suite to work on this.

A vulnerability in a listening process

The Echo Dot has a firewall with a deliberate set of rules. Bugs are organic to the development process and it’s possible that a permitted, listening process has a vulnerability. Keep in mind that the thoughts above are anything but unique to the Amazon Echo Dot. This is basic stuff.

Why so much has not been done

I’d love to explore the system update more but the spring semester of college just started and my hands are full. Being an older, non-traditional student means that I’m taking classes a little more seriously and likely putting unnecessary pressure on myself. I’m taking 19 credits and need to focus on starting the semester on the right foot!

Hopefully in the coming weeks I’ll have more time and resources to look more into this system and network traffic. Until then I realized that there wasn’t any reason to not share the system update, specifically the download link. I couldn’t find it on Google so I figure it just hasn’t been posted yet.

I’ll be sure to update the blog when I explore the system update and network traffic some more. Thanks!

Amazon Echo Dot System Image

Hello, RiotPSA!

The second half of 2016 gave us the Mirai botnet. I didn’t blog about it much, but why would I? I ran a honeypot, made a list of common login credentials, and analyzed some data. This isn’t uncharted territory by any measure. You were much better off reading about Mirai at Krebs on Security (assuming his hosting isn’t fighting off a Mirai botnet attack at the time), Schneier on Security, and the SANS Internet Storm Center.

I presented on Internet of Things (IoT) privacy and security a few times last year and continued to consider what I could do to make a positive difference for society. I recognized that people generally feel helpless and confused when it comes to IoT once they choose to not ignore it entirely. We face these problems together – individuals, customers, manufacturers, political parties, governments – none are alone in this fight, yet we all act like it. (And certainly have different positions and perspectives.) In an effort to have dialogue and share knowledge I determined that the best course of action for myself would be to start an IoT privacy and security non-profit. So I did that.

There’s a problem and it’s…

The Internet of Things. Seriously.

At present, IoT products are generally recognizable and purposefully integrated into our lives. As time progresses and market penetration for those products increases they will go back to being called things – Internet of will provide needless specificity and be dropped. Before a cultural acceptance and transition occurs surrounding IoT is it important that consumers and manufacturers participate in conversations surrounding their privacy and security goals, obligations, and actions.

You shouldn’t have to be an expert in any field to judge if a product is harmful.

I believe that by establishing RiotPSA and creating data-driven awareness campaigns, the frequency of these conversations will increase and will contribute to better technologies, products, and societies.

Being responsible and realistic

The crux of this issue is that I love technology. I love my Apple iPhone, my Amazon Echo Dot, my Anova Sous Vide… the list goes on. RiotPSA’s goals do not include scaring the public or avoiding the benefits of technology. RiotPSA embraces the future to help it have the best possible outcome.

The future and what we can do

A focused case-study of a device

Having a focused case study of a device this year would allow us to build a model for future IoT research. RiotPSA exists for everyone and not just technology enthusiasts. Ideally the model created would produce a result that can be communicated through a thoughtful infographic. We will present in a way that attracts public interest. Publishing results in an overbearingly authoritative, condescending, and unapproachable way is counter to the goal of RiotPSA and ultimately destructive to society.

Report carding and reputation metrics

The Electronic Frontier Foundation (EFF) has report cards. I believe a similar system would be useful to most people, although I believe a company/manufacturer reputation system is more beneficial (and practical in terms of resource management) in the long run than having a database of each individual device. Having both would be ideal.

Creating opportunities for manufacturers and service providers

Manufacturers and service providers have a great opportunity to communicate with their customers and they’re blowing it. If we highlight ways they can both inform the customer and improve product experience I believe they will act on it. Their conversation with the customer should not end after purchase. Product and service updates should not only come with an end user license agreement (EULA) but also with a simple document written in an understandable way to broadly highlight product or service changes to consumers. More importantly this document shouldn’t be geared towards elderly people or children – it should be geared towards everyone.

Exiting thoughts

Adventure. ExcitementA Jedi craves not these things. I am no Jedi.

RiotPSA has goals with good people driving them. I am excited about this and the future is an adventure. I often found running my first company to be like jumping off a cliff and building the hang glider on the way down. I expect parts of RiotPSA to be this way. My personal goal is to make a difference – not to just force my beliefs or understanding of the world over and over despite there being no impact. If an opportunity appears I don’t want to miss it. I am entering this with an open mind and an understanding that the world changes.

Hello, RiotPSA!