Kill Process
Page 9
Obviously I can’t reveal what I spend my money on, so I lack a good excuse for why I have so little savings.
“Let’s assume I can survive financially. You’re saying I should quit Tomo, and then what?”
“Quit, but don’t say what you’re doing,” Thomas says. “Keep quiet about it for a while. You don’t want it to look like you’re jumping right into something else based on your current work. Eventually you’ll probably want to raise money from a venture capitalist.”
“Why live off my savings then? Why not ask for money from a venture capitalist in the first place?”
“They need to believe you can pull off what you’re describing. You can’t go to them with a vague idea—”
“There’s nothing vague about it!” I’ve never been accused of vagueness in my life.
Thomas holds up a hand. “I don’t mean technically. I’m sure you’ve got the technology worked out. What you need though, is concrete ideas about how you’re going to do business, make deals with partners, get money from customers. How will you even build the thing? How many employees does Tomo have?”
“Fifteen thousand.”
“You’re one person. A venture capitalist won’t believe one person can create a competitive product by herself. Who will build this with you? How are you going to hire them? What will you pay them with?”
My face heats up and Thomas’s voice gets high and thin, like he’s speaking through a long pipe. I’m overwhelmed by the questions. I want to write code.
“Thomas,” Emily says, “go powder your nose in the little boys’ room for a while.”
Thomas looks back and forth between us. “Of course.”
Emily waits until he gets up, and watches him cross the restaurant toward the bathrooms.
“Nice ass,” she says, and turns back to me.
“I know,” I say, managing a weak smile.
“What’s going on?” she asks.
“This is too much. I don’t know how to hire people. I’m not endowed with money. I don’t know or want to know anything about pitching venture capitalists. I don’t even like talking to people.”
Emily leans back and sips her drink. “You care about this idea.”
“Yes.” My voice is firm even as I’m falling to pieces inside.
“Lots of people think of ideas. Turning those ideas into something real, that’s a lot of work.”
I nod, afraid I might cry. I grab my wine, suck the rest of it down.
“You used to be the Chief Data Whozig. Didn’t you work with people then?”
“Chief Database Architect. It was different, then. The company was little, and we were all tech people. I never made slides. Occasionally I’d go into a meeting with an architecture diagram. Mostly we wrote and talked code.”
Emily leans back and stares at me. “I know you like to look down on managers, but they possess a whole mess of useful skills. How to create a good presentation. How to interpret a profit and loss spreadsheet. The ability to stand up in from a room of investors, employees, or customers, and make them believe. They aren’t born knowing how, they learn it. If this is what you want to do, then you’ve got to embrace learning all that.”
“I don’t know, Em. I’m a coder, not a . . . manager.”
“Yeah, today you are. You didn’t start out a coder. You learned that. What’s harder, learning to code or making slides?”
I smile. She knows what I think of most managers.
“You’re smarter than those guys. You can do what they do.” She leans in close. “Only if you care about this federated . . . thingy. If you don’t care, then don’t bother.”
“Okay, I understand. I care. I do. I will learn how to do all that crap.”
“Not crap,” she says. “All the necessary hard work to get you what you need.”
“Fine, all the necessary hard work.”
Emily grabs my hand, and pulls it close to her. “And something else. You need to talk to someone. A professional.”
“What are you saying?” I try to pull my hand away. Emily holds tight.
“How many men’s hands will you need to shake to do this? How many times will you walk into a room of venture capitalists, and find a table full of hairy people? Are you going to suffer a panic attack each time? Going to look for an escape route?”
I want to shrink into the furniture. “Fuck you!” The words stumble out of my mouth, surprising even me.
The diners at the next table stare. Please, God, let me disappear.
“What happens when you want to hire someone, and the best candidate is a man? Are you going to pass him over because he might be a threat?”
“Screw you.”
“You never got help. You’ve never seen a therapist.”
“I did. In San Jose.”
“I’m not talking about physical therapy to live without an arm,” Emily says in a harsh whisper. “I’m talking about your phobia of men. I’m not saying this to be cruel, Angie. I’m telling you because I care. You can’t live your life in fear. You’ll kill your odds of succeeding if you don’t deal with it before you create this company.”
She lets go of my hand, and I pull it back into my lap. I shake with anger and embarrassment.
Emily extracts a tissue from her purse with shaking hands.
“Why are you crying?” I ask.
“I love you, girl. I want you to be happy.” Emily blows her nose with a loud honk. “I believe in you. You can do this.”
“It’s hard. So hard.”
“Yes. Everything worthwhile is hard.”
PART TWO
CHAPTER 12
* * *
MONDAY MORNING, I go into the office at my usual time.
I need access to Human Resources’ employee records database. Unlike all the ones we use for customer-facing operations, or even some of the less sensitive finance systems, I don’t have access to the employee records. Tomo has a reasonably good security department, and we run twice-annual audits with the same firm that hired me out of school.
Administrative assistants have access, delegated from the managers they work for, but changes made through the official path leave a digital trail, by design, that can be traced back to the time, location, alteration, and user. I need something more permanent with less evidence.
The company is big enough that the overwhelming majority of people don’t know each other. Every few months, I make a local copy of the corporate directory so I can do employee searches without being tracked. I check my cached copy now. There’s an engineer, Andy Trask, three floors down who works for IT in records management. He’ll have the access I need and he’s in the office now, according to his chat availability status.
Ten minutes later I’ve doxxed the guy. I know where Andy lives, who he’s married to, where she works, and their kids’ names and ages. I know they moved here from San Diego, and they contracted out a kitchen remodel when they bought their home. The kids go to “A Bowl of Cherries” preschool. The school has a private Tomo group, where they post pictures of the kids. Andy hasn’t visited the group in six months.
I download pictures from a recent garden planting, and copy them to a USB hard drive. I stick that drive and a spare into my pants pocket.
I glance around. The workspaces near me are empty. One guy across the floor is making coffee.
I retrieve my prosthetic arm from my bag. I slip it on, press down hard with my stump, and twist the air valve closed with my hand. It’s suctioned onto my upper arm now. I slip on a wind breaker, and slip the prosthetic gripper into the pocket, which takes a half dozen tries. I normally use it to balance my weight when biking so I don’t wipe out when I hit the brakes. I can’t actually control the arm, only position it, and lock into place.
When it’s finally set, I visit the restroom and examine myself in the mirror. I’ll pass for a two-armed being today.
Downstairs, I wind my way toward Trask’s desk.
“Andy, how are you? You’re looking so good
!” I do my best impression of Emily as I imagine her at her kids’ school auction, but it comes off more Valley Girl. Impersonating moms isn’t really my thing.
He looks up from his screen, a blank gaze as his eyes settle on me.
“Oh God, you don’t recognize me!” I do my best giggle. I’m not really a giggler either. “From A Bowl of Cherries.”
He shakes his head.
“My son, Jerry. Goes to school with your Thomas. They did the planting together, the cherry trees.”
Andy smiles. “Of course, I’m sorry.” He points toward his screen. “You know how it is.”
“Yeah, of course. I didn’t even realize you worked here, but your wife mentioned it at the potluck. I looked you up in the directory, because I had some photos of the kids, from the planting.” I nod.
He nods along with me.
“Anyhow, I probably should have emailed them, but I wanted to say hi in person. You don’t drop off the kids very often do you?”
“Only on Fridays.”
“Well, of course. That’s when my husband takes them. I’m Monday, Tuesday, Wednesday. Anyhow, you’re waiting for the photos. I’m sorry, you’re being so patient with me.”
I dig into my pocket and grab both USB sticks.
He reaches out a hand, and I clumsily fumble the drives, dropping them both on his side of the desk.
“I’m such a klutz. I’m so sorry.”
He digs down and picks them up. They’re identical.
“Which one?” he asks.
“Uh . . . I don’t know. One is the photos, and the other is my presentation. Could you check which one is which?” I try to look worried. This is why I brought and “dropped” two drives, so he’d be forced to plug one in on the spot.
He glances at his computer and then back at me. Corporate security has sent out at least three memos this year about the danger of plugging unknown USB devices into your computer.
To refuse now would be an act of wimpiness, demonstrating he was afraid of a tiny USB drive, in a woman’s presence, no less.
I smile warmly at him. “Maybe it’s the one on the left? Try that one.”
He opens the secure drawer where his laptop is protected during the day from theft or random drive-by USB insertions and plugs the USB drive in. He clicks the icon and photos of his kids pop up on the display.
“That’s the one!” I say. “The other one must be my presentation.”
He dutifully hands it back.
I wait. “Uh, my USB drive. I was only bringing the photos. I kind of wanted the drive back.”
“Oh, yeah.” He copies the photos to his desktop, ejects the drive, and hands it to me.
“Thanks. I hope you enjoy them. Say hi to your wife for me.”
I leave and board the elevator. When the doors close I take a deep breath and let a wide smile spread across my face.
Andy’s computer is totally fucked. And I own it.
* * *
The USB virus I’ve installed in Andy’s computer lets me control it remotely, which I do, examining the drive to see what projects he’s been working on. In the ideal case, I’d find a snippet of code that includes a hardcoded password for an account with write access to the database. If I found that, I could simply log in, delete a row, and be done. Unfortunately for me, I don’t find any passwords.
I read through dozens of scripts, looking for anything that executes database deletions against the employee records database. There isn’t a single delete anywhere, which puzzles me at first. As I keep digging, I discover employee records can be marked as archived but never out-and-out deleted. Makes sense. It enforces the audit trail and protects the company.
By the middle of the afternoon, I’m an expert on HR’s technology stack, and I have new levels of respect for whoever is working computer security on their team. They’re good. I try a couple of zero day exploits I can be reasonably sure won’t be detected by any active countermeasures, but all the holes are buttoned up. I manage to log into one of the machines with ssh, and, as I expect, the account lacks sufficient permissions to do anything useful.
Almost ready to give up, I force myself to make one more pass through their source code repositories. I’m staring at a deployment script that sets up load balancing when an idea comes to me. It might work.
At some point I head down to a food truck to grab dinner and come back to my desk with a Cuban plate. Everyone’s gone now. It’s after seven. In the early days of Tomo, when the employees were young college graduates (or dropouts), people worked until all hours of the night. Now the average employee age is thirty-six, half have kids, and everyone I can see from my desk is gone.
When my modified scripts are finished and I’ve run all the local tests I can on my machine, I remotely connect back to Andy’s computer. I copy the new code over, commit it, and push to their git server.
The build computer sees the change, runs tests, and deploys code.
When it’s done, there’s a new server added to the database cluster, a collection of computers working together to share the database load. The new server has a duplicate of the existing database, with two changes: the row delete permission is turned on for all users, and I’ve given myself a login to this machine.
In fifteen minutes, Tripwire will check that this server’s policies are in compliance with expectations, which they aren’t. When Tripwire discovers this, it’ll notify router management safeguards, which will isolate this machine at the network level. So I’ve got that long to do what I need.
Database coherence is a tricky thing, and it takes several long minutes before my wolf in sheep’s clothing is ready to accept database requests. The database engine finally responds to my pings. I enter one simple command.
DELETE FROM EmployeeContracts
WHERE employee_id = “000048” AND
body LIKE “%noncompete%”
I run a few more SQL commands, querying for and deleting all agreements I think might affect me from my employee records. I say a silent prayer to Ted Codd in thanks that Tomo only has digital records and manages our own backups. I can’t imagine what I’d need to do if there was actual paper sequestered in archival storage.
I connect to another server in the cluster to see if my change has propagated. There’s a constant stream of traffic between the servers in this cluster as they share data to keep the database synchronized. Fortunately, the new server only has a small set of deletes it needs to propagate out to the others.
It takes two minutes before the records are updated everywhere.
I run a new set of deployment scripts to remove my temporary server from the cluster cleanly. If I were to simply kill it, failover scripts would alert on-duty engineers.
I copy files to Andy’s machine, git commit and push, and wait for the build machine.
The clock is ticking. Six minutes before the next Tripwire scan.
With three minutes to go, the machine vanishes, reclaimed by the cloud as though it never existed.
For now, I’ve done what I came here to do. I’ve wiped out any record of the noncompete clause I signed when I started, and destroyed the NDA that might have restricted my future work. There’s no way I’m waiting three years to build a new social network.
Now for cleanup. A bit of surgery on the git repo and a final deploy from Andy’s machine, and all history of my deployment script changes disappear. I don’t bother deleting the SQL logs on the rest of the database cluster because they roll over after 24 hours, and I don’t expect anyone to look at this for a while.
The provisioning service is something I’ve had my hand in for a while, and I’ve left a few backdoors. I log in, remove the record of the provisioned machine being attached to the database cluster. Then I remove the log of my removing the record. Always layers, so many layers.
I find the actual hardware I provisioned by virtue of the non-changing MAC address and do a secure wipe of the hard drive.
I’m done cleaning up. It’s 2:15 A.M., and I�
�ve been at work since 7 A.M. yesterday. A twenty-hour hacking session. My forearm is cramped and my shoulder so tight it might as well be frozen in place. Script kiddies give the impression penetration is easy, and maybe it is when your only approach is to try every known exploit against a soft target in the hopes of bringing it down. True hacks, where the target is security-conscious and can’t know the intrusion ever happened, and the goal is a specific, controlled change: that’s a whole other ballgame.
I sling my backpack over my shoulder and walk back to the elevator. I wince at a cramp in my lower back, and roll my neck to work out the kinks. For all that, there’s still a little saunter to my step. Nothing compares to pulling off an attack like this.
* * *
By Wednesday it’s been more than twenty-four hours since my alteration of the HR records database, and any last records of my exploit were removed by the scripts automatically deleting day-old logs.
I try to add a meeting to Daniel’s calendar. Like most managers, his calendar shows he is busy all day and tomorrow’s availability is the same. I message him instead, saying I need fifteen minutes of his time. He tells me to come at 1 P.M.
Butterflies in my stomach annoy me all through lunch. It’s only a job, I remind myself. I can work anywhere if my new venture doesn’t work out.
At 1 P.M. I walk in, and Daniel, without saying anything, points me toward the guest chair with one hand as he gestures to the headset he’s wearing with the other.
I leave the door open. My escape path.
He’s on the phone for another five minutes, and hangs up, ripping the headset off.
“I’ve got another meeting, but I can be a few minutes late.” He gets up to close the door.